ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDM1YzJmODQuLjg1ZjY3MTUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtODMsMyArODMsOSBAQAogCiAjIHBrZy1jb25maWcgZmlsZQogbGlibmRuLWNwcC1kZXYucGMKKworIyB3YWYgYnVpbGQgc3lzdGVtCisud2FmLTEqCisubG9jayoKK2J1aWxkLworLndhZi10b29scy8qLnB5YwpkaWZmIC0tZ2l0IGEvLnRyYXZpcy55bWwgYi8udHJhdmlzLnltbAppbmRleCBlOWZkNjZlLi5iMTg3ZWM0IDEwMDY0NAotLS0gYS8udHJhdmlzLnltbAorKysgYi8udHJhdmlzLnltbApAQCAtOCwxNiArOCwxNCBAQAogYmVmb3JlX2luc3RhbGw6CiAgIC0gdHJhdmlzX3JldHJ5IHN1ZG8gYWRkLWFwdC1yZXBvc2l0b3J5IC15IHBwYTpuYW1lZC1kYXRhL3BwYQogICAtIHRyYXZpc19yZXRyeSBzdWRvIGFwdC1nZXQgdXBkYXRlIC1xcQotICAtIHRyYXZpc19yZXRyeSBzdWRvIGFwdC1nZXQgaW5zdGFsbCAtcXEgYXV0b3Rvb2xzLWRldgogICAtIHRyYXZpc19yZXRyeSBzdWRvIGFwdC1nZXQgaW5zdGFsbCAtcXEgbmRueC1kZXYKICAgLSB0cmF2aXNfcmV0cnkgc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXFxIGxpYmJvb3N0LWFsbC1kZXYKICAgLSB0cmF2aXNfcmV0cnkgc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXFxIGxpYmNyeXB0bysrLWRldgogICAtIHRyYXZpc19yZXRyeSBzdWRvIGFwdC1nZXQgaW5zdGFsbCAtcXEgbGlic3FsaXRlMy1kZXYKIHNjcmlwdDoKLSAgLSBhdXRvcmVjb25mIC1mIC0taW5zdGFsbAotICAtIC4vY29uZmlndXJlIC0td2l0aC10ZXN0cwotICAtIG1ha2UKLSAgLSBzdWRvIG1ha2UgaW5zdGFsbAorICAtIC4vd2FmIGNvbmZpZ3VyZSAtLXdpdGgtdGVzdHMKKyAgLSAuL3dhZiAtajEKKyAgLSBzdWRvIC4vd2FmIGluc3RhbGwKICAgLSBzdWRvIGxkY29uZmlnCiAgIC0gIwogICAtICMgU29tZSB0ZXN0cyBub3cgcmVxdWlyZSBkYWVtb24gdG8gcnVuIChhbmQgZGFlbW9uIG5lZWRzIHRoZSBsaWJyYXJ5IHRvIGJlIGNvbXBpbGVkKQpAQCAtMzIsNCArMzAsNCBAQAogICAtIG5kbmQtdGx2LXN0YXJ0CiAgIC0gc2xlZXAgMQogICAtICMKLSAgLSAuL3Rlc3RzX2Jvb3N0L3VuaXQtdGVzdHMgLWwgYWxsCisgIC0gLi9idWlsZC90ZXN0cy91bml0LXRlc3RzIC1sIGFsbApkaWZmIC0tZ2l0IGEvLndhZi10b29scy9ib29zdC5weSBiLy53YWYtdG9vbHMvYm9vc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxNGI1YgotLS0gL2Rldi9udWxsCisrKyBiLy53YWYtdG9vbHMvYm9vc3QucHkKQEAgLTAsMCArMSwzNzMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBlbmNvZGluZzogdXRmLTgKKyMKKyMgcGFydGlhbGx5IGJhc2VkIG9uIGJvb3N0LnB5IHdyaXR0ZW4gYnkgR2Vybm90IFZvcm1heXIKKyMgd3JpdHRlbiBieSBSdWVkaWdlciBTb25kZXJmZWxkIDxydWVkaWdlckBjLXBsdXNwbHVzLmRlPiwgMjAwOAorIyBtb2RpZmllZCBieSBCam9lcm4gTWljaGFlbHNlbiwgMjAwOAorIyBtb2RpZmllZCBieSBMdWNhIEZvc3NhdGksIDIwMDgKKyMgcmV3cml0dGVuIGZvciB3YWYgMS41LjEsIFRob21hcyBOYWd5LCAyMDA4CisjIHJld3JpdHRlbiBmb3Igd2FmIDEuNi4yLCBTeWx2YWluIFJvdXF1ZXR0ZSwgMjAxMQorCisnJycKKworVGhpcyBpcyBhbiBleHRyYSB0b29sLCBub3QgYnVuZGxlZCB3aXRoIHRoZSBkZWZhdWx0IHdhZiBiaW5hcnkuCitUbyBhZGQgdGhlIGJvb3N0IHRvb2wgdG8gdGhlIHdhZiBmaWxlOgorJCAuL3dhZi1saWdodCAtLXRvb2xzPWNvbXBhdDE1LGJvb3N0CisJb3IsIGlmIHlvdSBoYXZlIHdhZiA+PSAxLjYuMgorJCAuL3dhZiB1cGRhdGUgLS1maWxlcz1ib29zdAorCitXaGVuIHVzaW5nIHRoaXMgdG9vbCwgdGhlIHdzY3JpcHQgd2lsbCBsb29rIGxpa2U6CisKKwlkZWYgb3B0aW9ucyhvcHQpOgorCQlvcHQubG9hZCgnY29tcGlsZXJfY3h4IGJvb3N0JykKKworCWRlZiBjb25maWd1cmUoY29uZik6CisJCWNvbmYubG9hZCgnY29tcGlsZXJfY3h4IGJvb3N0JykKKwkJY29uZi5jaGVja19ib29zdChsaWI9J3N5c3RlbSBmaWxlc3lzdGVtJykKKworCWRlZiBidWlsZChibGQpOgorCQlibGQoc291cmNlPSdtYWluLmNwcCcsIHRhcmdldD0nYXBwJywgdXNlPSdCT09TVCcpCisKK09wdGlvbnMgYXJlIGdlbmVyYXRlZCwgaW4gb3JkZXIgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgYm9vc3QgaW5jbHVkZXMvbGlicmFyaWVzLgorVGhlIGBjaGVja19ib29zdGAgY29uZmlndXJhdGlvbiBmdW5jdGlvbiBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgdXNlZCBib29zdCBsaWJyYXJpZXMuCitJdCBjYW4gYWxzbyBwcm92aWRlIGRlZmF1bHQgYXJndW1lbnRzIHRvIHRoZSAtLWJvb3N0LXN0YXRpYyBhbmQgLS1ib29zdC1tdCBjb21tYW5kLWxpbmUgYXJndW1lbnRzLgorRXZlcnl0aGluZyB3aWxsIGJlIHBhY2thZ2VkIHRvZ2V0aGVyIGluIGEgQk9PU1QgY29tcG9uZW50IHRoYXQgeW91IGNhbiB1c2UuCisKK1doZW4gdXNpbmcgTVNWQywgYSBsb3Qgb2YgY29tcGlsYXRpb24gZmxhZ3MgbmVlZCB0byBtYXRjaCB5b3VyIEJPT1NUIGJ1aWxkIGNvbmZpZ3VyYXRpb246CisgLSB5b3UgbWF5IGhhdmUgdG8gYWRkIC9FSHNjIHRvIHlvdXIgQ1hYRkxBR1Mgb3IgZGVmaW5lIGJvb3N0Ojp0aHJvd19leGNlcHRpb24gaWYgQk9PU1RfTk9fRVhDRVBUSU9OUyBpcyBkZWZpbmVkLgorICAgRXJyb3JzOiBDNDUzMAorIC0gYm9vc3QgbGlicmFyaWVzIHdpbGwgdHJ5IHRvIGJlIHNtYXJ0IGFuZCB1c2UgdGhlIChwcmV0dHkgYnV0IG9mdGVuIG5vdCB1c2VmdWwpIGF1dG8tbGlua2luZyBmZWF0dXJlIG9mIE1TVkMKKyAgIFNvIGJlZm9yZSBjYWxsaW5nIGBjb25mLmNoZWNrX2Jvb3N0YCB5b3UgbWlnaHQgd2FudCB0byBkaXNhYmxpbmcgYnkgYWRkaW5nOgorICAgCWNvbmYuZW52LkRFRklORVNfQk9PU1QgKz0gWydCT09TVF9BTExfTk9fTElCJ10KKyAgIEVycm9yczogCisgLSBib29zdCBtaWdodCBhbHNvIGJlIGNvbXBpbGVkIHdpdGggL01ULCB3aGljaCBsaW5rcyB0aGUgcnVudGltZSBzdGF0aWNhbGx5LgorICAgSWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCByZWRlZmluZWQgc3ltYm9scywgCisJCXNlbGYuZW52WydERUZJTkVTXyVzJyAlIHZhcl0gKz0gWydCT09TVF9BTExfTk9fTElCJ10KKwkJc2VsZi5lbnZbJ0NYWEZMQUdTXyVzJyAlIHZhcl0gKz0gWycvTUQnLCAnL0VIc2MnXQorUGFzc2luZyBgLS1ib29zdC1saW5rYWdlX2F1dG9kZXRlY3RgIG1pZ2h0IGhlbHAgZW5zdXJpbmcgaGF2aW5nIGEgY29ycmVjdCBsaW5rYWdlIGluIHNvbWUgYmFzaWMgY2FzZXMuCisKKycnJworCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKK2Zyb20gd2FmbGliIGltcG9ydCBVdGlscywgTG9ncywgRXJyb3JzCitmcm9tIHdhZmxpYi5Db25maWd1cmUgaW1wb3J0IGNvbmYKKworQk9PU1RfTElCUyA9IFsnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInLCAnL29wdC9sb2NhbC9saWInLCAnL3N3L2xpYicsICcvbGliJywgJy91c3IvbGliL3g4Nl82NC1saW51eC1nbnUnLCAnL3Vzci9saWIvaTM4Ni1saW51eC1nbnUnLCAnL3Vzci9sb2NhbC9uZG4vbGliJ10KK0JPT1NUX0lOQ0xVREVTID0gWycvdXNyL2luY2x1ZGUnLCAnL3Vzci9sb2NhbC9pbmNsdWRlJywgJy9vcHQvbG9jYWwvaW5jbHVkZScsICcvc3cvaW5jbHVkZScsICcvdXNyL2xvY2FsL25kbi9pbmNsdWRlJ10KK0JPT1NUX1ZFUlNJT05fRklMRSA9ICdib29zdC92ZXJzaW9uLmhwcCcKK0JPT1NUX1ZFUlNJT05fQ09ERSA9ICcnJworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPGJvb3N0L3ZlcnNpb24uaHBwPgoraW50IG1haW4oKSB7IHN0ZDo6Y291dCA8PCBCT09TVF9MSUJfVkVSU0lPTiA8PCBzdGQ6OmVuZGw7IH0KKycnJworCisjIHRvb2xzZXRzIGZyb20ge2Jvb3N0X2Rpcn0vdG9vbHMvYnVpbGQvdjIvdG9vbHMvY29tbW9uLmphbQorUExBVEZPUk0gPSBVdGlscy51bnZlcnNpb25lZF9zeXNfcGxhdGZvcm0oKQorZGV0ZWN0X2ludGVsID0gbGFtYmRhIGVudjogKFBMQVRGT1JNID09ICd3aW4zMicpIGFuZCAnaXcnIG9yICdpbCcKK2RldGVjdF9jbGFuZyA9IGxhbWJkYSBlbnY6IChQTEFURk9STSA9PSAnZGFyd2luJykgYW5kICdjbGFuZy1kYXJ3aW4nIG9yICdjbGFuZycKK2RldGVjdF9taW5ndyA9IGxhbWJkYSBlbnY6IChyZS5zZWFyY2goJ01pbkdXJywgZW52LkNYWFswXSkpIGFuZCAnbWd3JyBvciAnZ2NjJworQk9PU1RfVE9PTFNFVFMgPSB7CisJJ2JvcmxhbmQnOiAgJ2JjYicsCisJJ2NsYW5nJzoJZGV0ZWN0X2NsYW5nLAorCSdjb21vJzoJICdjb21vJywKKwknY3cnOgkgICAnY3cnLAorCSdkYXJ3aW4nOiAgICd4Z2NjJywKKwknZWRnJzoJICAnZWRnJywKKwknZysrJzoJICBkZXRlY3RfbWluZ3csCisJJ2djYyc6CSAgZGV0ZWN0X21pbmd3LAorCSdpY3BjJzoJIGRldGVjdF9pbnRlbCwKKwknaW50ZWwnOglkZXRlY3RfaW50ZWwsCisJJ2tjYyc6CSAgJ2tjYycsCisJJ2t5bGl4JzoJJ2JjaycsCisJJ21pcHNwcm8nOiAgJ21wJywKKwknbWluZ3cnOgknbWd3JywKKwknbXN2Yyc6CSAndmMnLAorCSdxY2MnOgkgICdxY2MnLAorCSdzdW4nOgkgICdzdycsCisJJ3N1bmMrKyc6ICAgJ3N3JywKKwkndHJ1NjRjeHgnOiAndHJ1JywKKwkndmFjcHAnOgkneGxjJworfQorCisKK2RlZiBvcHRpb25zKG9wdCk6CisgICAgICAgIG9wdCA9IG9wdC5hZGRfb3B0aW9uX2dyb3VwKCdCb29zdCBPcHRpb25zJykKKyAgICAKKwlvcHQuYWRkX29wdGlvbignLS1ib29zdC1pbmNsdWRlcycsIHR5cGU9J3N0cmluZycsCisJCQkJICAgZGVmYXVsdD0nJywgZGVzdD0nYm9vc3RfaW5jbHVkZXMnLAorCQkJCSAgIGhlbHA9JycncGF0aCB0byB0aGUgYm9vc3QgaW5jbHVkZXMgcm9vdCAofmJvb3N0IHJvb3QpCisJCQkJICAgZS5nLiAvcGF0aC90by9ib29zdF8xXzQ3XzAnJycpCisJb3B0LmFkZF9vcHRpb24oJy0tYm9vc3QtbGlicycsIHR5cGU9J3N0cmluZycsCisJCQkJICAgZGVmYXVsdD0nJywgZGVzdD0nYm9vc3RfbGlicycsCisJCQkJICAgaGVscD0nJydwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGJvb3N0IGxpYnMgYXJlCisJCQkJICAgZS5nLiAvcGF0aC90by9ib29zdF8xXzQ3XzAvc3RhZ2UvbGliJycnKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LXN0YXRpYycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisJCQkJICAgZGVmYXVsdD1GYWxzZSwgZGVzdD0nYm9vc3Rfc3RhdGljJywKKwkJCQkgICBoZWxwPSdsaW5rIHdpdGggc3RhdGljIGJvb3N0IGxpYnJhcmllcyAoLmxpYi8uYSknKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LW10JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKwkJCQkgICBkZWZhdWx0PUZhbHNlLCBkZXN0PSdib29zdF9tdCcsCisJCQkJICAgaGVscD0nc2VsZWN0IG11bHRpLXRocmVhZGVkIGxpYnJhcmllcycpCisJb3B0LmFkZF9vcHRpb24oJy0tYm9vc3QtYWJpJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nJywgZGVzdD0nYm9vc3RfYWJpJywKKwkJCQkgICBoZWxwPScnJ3NlbGVjdCBsaWJyYXJpZXMgd2l0aCB0YWdzIChkZ3N5cCwgZCBmb3IgZGVidWcpLAorCQkJCSAgIHNlZSBkb2MgQm9vc3QsIEdldHRpbmcgU3RhcnRlZCwgY2hhcHRlciA2LjEnJycpCisJb3B0LmFkZF9vcHRpb24oJy0tYm9vc3QtbGlua2FnZV9hdXRvZGV0ZWN0JywgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nYm9vc3RfbGlua2FnZV9hdXRvZGV0ZWN0JywKKwkJCQkgICBoZWxwPSJhdXRvLWRldGVjdCBib29zdCBsaW5rYWdlIG9wdGlvbnMgKGRvbid0IGdldCB1c2VkIHRvIGl0IC8gbWlnaHQgYnJlYWsgb3RoZXIgc3R1ZmYpIikKKwlvcHQuYWRkX29wdGlvbignLS1ib29zdC10b29sc2V0JywgdHlwZT0nc3RyaW5nJywKKwkJCQkgICBkZWZhdWx0PScnLCBkZXN0PSdib29zdF90b29sc2V0JywKKwkJCQkgICBoZWxwPSdmb3JjZSBhIHRvb2xzZXQgZS5nLiBtc3ZjLCB2YzkwLCBcCisJCQkJCQlnY2MsIG1pbmd3LCBtZ3c0NSAoZGVmYXVsdDogYXV0byknKQorCXB5X3ZlcnNpb24gPSAnJWQlZCcgJSAoc3lzLnZlcnNpb25faW5mb1swXSwgc3lzLnZlcnNpb25faW5mb1sxXSkKKwlvcHQuYWRkX29wdGlvbignLS1ib29zdC1weXRob24nLCB0eXBlPSdzdHJpbmcnLAorCQkJCSAgIGRlZmF1bHQ9cHlfdmVyc2lvbiwgZGVzdD0nYm9vc3RfcHl0aG9uJywKKwkJCQkgICBoZWxwPSdzZWxlY3QgdGhlIGxpYiBweXRob24gd2l0aCB0aGlzIHZlcnNpb24gXAorCQkJCQkJKGRlZmF1bHQ6ICVzKScgJSBweV92ZXJzaW9uKQorCisKK0Bjb25mCitkZWYgX19ib29zdF9nZXRfdmVyc2lvbl9maWxlKHNlbGYsIGQpOgorCWRub2RlID0gc2VsZi5yb290LmZpbmRfZGlyKGQpCisJaWYgZG5vZGU6CisJCXJldHVybiBkbm9kZS5maW5kX25vZGUoQk9PU1RfVkVSU0lPTl9GSUxFKQorCXJldHVybiBOb25lCisKK0Bjb25mCitkZWYgYm9vc3RfZ2V0X3ZlcnNpb24oc2VsZiwgZCk6CisJIiIic2lsZW50bHkgcmV0cmlldmUgdGhlIGJvb3N0IHZlcnNpb24gbnVtYmVyIiIiCisJbm9kZSA9IHNlbGYuX19ib29zdF9nZXRfdmVyc2lvbl9maWxlKGQpCisJaWYgbm9kZToKKwkJdHJ5OgorCQkJdHh0ID0gbm9kZS5yZWFkKCkKKwkJZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKToKKwkJCUxvZ3MuZXJyb3IoIkNvdWxkIG5vdCByZWFkIHRoZSBmaWxlICVyIiAlIG5vZGUuYWJzcGF0aCgpKQorCQllbHNlOgorCQkJcmVfYnV0ID0gcmUuY29tcGlsZSgnXiNkZWZpbmVcXHMrQk9PU1RfTElCX1ZFUlNJT05cXHMrIiguKikiJywgcmUuTSkKKwkJCW0gPSByZV9idXQuc2VhcmNoKHR4dCkKKwkJCWlmIG06CisJCQkJcmV0dXJuIG0uZ3JvdXAoMSkKKwlyZXR1cm4gc2VsZi5jaGVja19jeHgoZnJhZ21lbnQ9Qk9PU1RfVkVSU0lPTl9DT0RFLCBpbmNsdWRlcz1bZF0sIGV4ZWN1dGU9VHJ1ZSwgZGVmaW5lX3JldD1UcnVlKQorCitAY29uZgorZGVmIGJvb3N0X2dldF9pbmNsdWRlcyhzZWxmLCAqaywgKiprdyk6CisJaW5jbHVkZXMgPSBrIGFuZCBrWzBdIG9yIGt3LmdldCgnaW5jbHVkZXMnLCBOb25lKQorCWlmIGluY2x1ZGVzIGFuZCBzZWxmLl9fYm9vc3RfZ2V0X3ZlcnNpb25fZmlsZShpbmNsdWRlcyk6CisJCXJldHVybiBpbmNsdWRlcworCWZvciBkIGluIFV0aWxzLnRvX2xpc3Qoc2VsZi5lbnZpcm9uLmdldCgnSU5DTFVERScsICcnKSkgKyBCT09TVF9JTkNMVURFUzoKKwkJaWYgc2VsZi5fX2Jvb3N0X2dldF92ZXJzaW9uX2ZpbGUoZCk6CisJCQlyZXR1cm4gZAorCWlmIGluY2x1ZGVzOgorCQlzZWxmLmVuZF9tc2coJ2hlYWRlcnMgbm90IGZvdW5kIGluICVzJyAlIGluY2x1ZGVzKQorCQlzZWxmLmZhdGFsKCdUaGUgY29uZmlndXJhdGlvbiBmYWlsZWQnKQorCWVsc2U6CisJCXNlbGYuZW5kX21zZygnaGVhZGVycyBub3QgZm91bmQsIHBsZWFzZSBwcm92aWRlIGEgLS1ib29zdC1pbmNsdWRlcyBhcmd1bWVudCAoc2VlIGhlbHApJykKKwkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKworCitAY29uZgorZGVmIGJvb3N0X2dldF90b29sc2V0KHNlbGYsIGNjKToKKwl0b29sc2V0ID0gY2MKKwlpZiBub3QgY2M6CisJCWJ1aWxkX3BsYXRmb3JtID0gVXRpbHMudW52ZXJzaW9uZWRfc3lzX3BsYXRmb3JtKCkKKwkJaWYgYnVpbGRfcGxhdGZvcm0gaW4gQk9PU1RfVE9PTFNFVFM6CisJCQljYyA9IGJ1aWxkX3BsYXRmb3JtCisJCWVsc2U6CisJCQljYyA9IHNlbGYuZW52LkNYWF9OQU1FCisJaWYgY2MgaW4gQk9PU1RfVE9PTFNFVFM6CisJCXRvb2xzZXQgPSBCT09TVF9UT09MU0VUU1tjY10KKwlyZXR1cm4gaXNpbnN0YW5jZSh0b29sc2V0LCBzdHIpIGFuZCB0b29sc2V0IG9yIHRvb2xzZXQoc2VsZi5lbnYpCisKKworQGNvbmYKK2RlZiBfX2Jvb3N0X2dldF9saWJzX3BhdGgoc2VsZiwgKmssICoqa3cpOgorCScnJyByZXR1cm4gdGhlIGxpYiBwYXRoIGFuZCBhbGwgdGhlIGZpbGVzIGluIGl0ICcnJworCWlmICdmaWxlcycgaW4ga3c6CisJCXJldHVybiBzZWxmLnJvb3QuZmluZF9kaXIoJy4nKSwgVXRpbHMudG9fbGlzdChrd1snZmlsZXMnXSkKKwlsaWJzID0gayBhbmQga1swXSBvciBrdy5nZXQoJ2xpYnMnLCBOb25lKQorCWlmIGxpYnM6CisJCXBhdGggPSBzZWxmLnJvb3QuZmluZF9kaXIobGlicykKKwkJZmlsZXMgPSBwYXRoLmFudF9nbG9iKCcqYm9vc3RfKicpCisJaWYgbm90IGxpYnMgb3Igbm90IGZpbGVzOgorCQlmb3IgZCBpbiBVdGlscy50b19saXN0KHNlbGYuZW52aXJvbi5nZXQoJ0xJQicsIFtdKSkgKyBCT09TVF9MSUJTOgorCQkJcGF0aCA9IHNlbGYucm9vdC5maW5kX2RpcihkKQorCQkJaWYgcGF0aDoKKwkJCQlmaWxlcyA9IHBhdGguYW50X2dsb2IoJypib29zdF8qJykKKwkJCQlpZiBmaWxlczoKKwkJCQkJYnJlYWsKKwkJCXBhdGggPSBzZWxmLnJvb3QuZmluZF9kaXIoZCArICc2NCcpCisJCQlpZiBwYXRoOgorCQkJCWZpbGVzID0gcGF0aC5hbnRfZ2xvYignKmJvb3N0XyonKQorCQkJCWlmIGZpbGVzOgorCQkJCQlicmVhaworCWlmIG5vdCBwYXRoOgorCQlpZiBsaWJzOgorCQkJc2VsZi5lbmRfbXNnKCdsaWJzIG5vdCBmb3VuZCBpbiAlcycgJSBsaWJzKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwkJZWxzZToKKwkJCXNlbGYuZW5kX21zZygnbGlicyBub3QgZm91bmQsIHBsZWFzZSBwcm92aWRlIGEgLS1ib29zdC1saWJzIGFyZ3VtZW50IChzZWUgaGVscCknKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKworCXNlbGYudG9fbG9nKCdGb3VuZCB0aGUgYm9vc3QgcGF0aCBpbiAlciB3aXRoIHRoZSBsaWJyYXJpZXM6JyAlIHBhdGgpCisJZm9yIHggaW4gZmlsZXM6CisJCXNlbGYudG9fbG9nKCcgICAgJXInICUgeCkKKwlyZXR1cm4gcGF0aCwgZmlsZXMKKworQGNvbmYKK2RlZiBib29zdF9nZXRfbGlicyhzZWxmLCAqaywgKiprdyk6CisJJycnCisJcmV0dXJuIHRoZSBsaWIgcGF0aCBhbmQgdGhlIHJlcXVpcmVkIGxpYnMKKwlhY2NvcmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMKKwknJycKKwlwYXRoLCBmaWxlcyA9IHNlbGYuX19ib29zdF9nZXRfbGlic19wYXRoKCoqa3cpCisJdCA9IFtdCisJaWYga3cuZ2V0KCdtdCcsIEZhbHNlKToKKwkJdC5hcHBlbmQoJ210JykKKwlpZiBrdy5nZXQoJ2FiaScsIE5vbmUpOgorCQl0LmFwcGVuZChrd1snYWJpJ10pCisJdGFncyA9IHQgYW5kICcoLSVzKSsnICUgJy0nLmpvaW4odCkgb3IgJycKKwl0b29sc2V0ID0gc2VsZi5ib29zdF9nZXRfdG9vbHNldChrdy5nZXQoJ3Rvb2xzZXQnLCAnJykpCisJdG9vbHNldF9wYXQgPSAnKC0lc1swLTldezAsM30pKycgJSB0b29sc2V0CisJdmVyc2lvbiA9ICcoLSVzKSsnICUgc2VsZi5lbnYuQk9PU1RfVkVSU0lPTgorCisJZGVmIGZpbmRfbGliKHJlX2xpYiwgZmlsZXMpOgorCQlmb3IgZmlsZSBpbiBmaWxlczoKKwkJCWlmIHJlX2xpYi5zZWFyY2goZmlsZS5uYW1lKToKKwkJCQlzZWxmLnRvX2xvZygnRm91bmQgYm9vc3QgbGliICVzJyAlIGZpbGUpCisJCQkJcmV0dXJuIGZpbGUKKwkJcmV0dXJuIE5vbmUKKworCWRlZiBmb3JtYXRfbGliX25hbWUobmFtZSk6CisJCWlmIG5hbWUuc3RhcnRzd2l0aCgnbGliJykgYW5kIHNlbGYuZW52LkNDX05BTUUgIT0gJ21zdmMnOgorCQkJbmFtZSA9IG5hbWVbMzpdCisJCXJldHVybiBuYW1lWzpuYW1lLnJmaW5kKCcuJyldCisKKwlsaWJzID0gW10KKwlmb3IgbGliIGluIFV0aWxzLnRvX2xpc3QoayBhbmQga1swXSBvciBrdy5nZXQoJ2xpYicsIE5vbmUpKToKKwkJcHkgPSAobGliID09ICdweXRob24nKSBhbmQgJygtcHklcykrJyAlIGt3WydweXRob24nXSBvciAnJworCQkjIFRyeWluZyBsaWJyYXJpZXMsIGZyb20gbW9zdCBzdHJpY3QgbWF0Y2ggdG8gbGVhc3Qgb25lCisJCWZvciBwYXR0ZXJuIGluIFsnYm9vc3RfJXMlcyVzJXMlcycgJSAobGliLCB0b29sc2V0X3BhdCwgdGFncywgcHksIHZlcnNpb24pLAorCQkJCQkJJ2Jvb3N0XyVzJXMlcyVzJyAlIChsaWIsIHRhZ3MsIHB5LCB2ZXJzaW9uKSwKKwkJCQkJCSdib29zdF8lcyVzJXMnICUgKGxpYiwgdGFncywgdmVyc2lvbiksCisJCQkJCQkjIEdpdmUgdXAgdHJ5aW5nIHRvIGZpbmQgdGhlIHJpZ2h0IHZlcnNpb24KKwkJCQkJCSdib29zdF8lcyVzJXMlcycgJSAobGliLCB0b29sc2V0X3BhdCwgdGFncywgcHkpLAorCQkJCQkJJ2Jvb3N0XyVzJXMlcycgJSAobGliLCB0YWdzLCBweSksCisJCQkJCQknYm9vc3RfJXMlcycgJSAobGliLCB0YWdzKV06CisJCQlzZWxmLnRvX2xvZygnVHJ5aW5nIHBhdHRlcm4gJXMnICUgcGF0dGVybikKKwkJCWZpbGUgPSBmaW5kX2xpYihyZS5jb21waWxlKHBhdHRlcm4pLCBmaWxlcykKKwkJCWlmIGZpbGU6CisJCQkJbGlicy5hcHBlbmQoZm9ybWF0X2xpYl9uYW1lKGZpbGUubmFtZSkpCisJCQkJYnJlYWsKKwkJZWxzZToKKwkJCXNlbGYuZW5kX21zZygnbGliICVzIG5vdCBmb3VuZCBpbiAlcycgJSAobGliLCBwYXRoLmFic3BhdGgoKSkpCisJCQlzZWxmLmZhdGFsKCdUaGUgY29uZmlndXJhdGlvbiBmYWlsZWQnKQorCisJcmV0dXJuIHBhdGguYWJzcGF0aCgpLCBsaWJzCisKKworQGNvbmYKK2RlZiBjaGVja19ib29zdChzZWxmLCAqaywgKiprdyk6CisJIiIiCisJSW5pdGlhbGl6ZSBib29zdCBsaWJyYXJpZXMgdG8gYmUgdXNlZC4KKworCUtleXdvcmRzOiB5b3UgY2FuIHBhc3MgdGhlIHNhbWUgcGFyYW1ldGVycyBhcyB3aXRoIHRoZSBjb21tYW5kIGxpbmUgKHdpdGhvdXQgIi0tYm9vc3QtIikuCisJTm90ZSB0aGF0IHRoZSBjb21tYW5kIGxpbmUgaGFzIHRoZSBwcmlvcml0eSwgYW5kIHNob3VsZCBwcmVmZXJhYmx5IGJlIHVzZWQuCisJIiIiCisJaWYgbm90IHNlbGYuZW52WydDWFgnXToKKwkJc2VsZi5mYXRhbCgnbG9hZCBhIGMrKyBjb21waWxlciBmaXJzdCwgY29uZi5sb2FkKCJjb21waWxlcl9jeHgiKScpCisKKwlwYXJhbXMgPSB7J2xpYic6IGsgYW5kIGtbMF0gb3Iga3cuZ2V0KCdsaWInLCBOb25lKX0KKwlmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLm9wdGlvbnMuX19kaWN0X18uaXRlbXMoKToKKwkJaWYgbm90IGtleS5zdGFydHN3aXRoKCdib29zdF8nKToKKwkJCWNvbnRpbnVlCisJCWtleSA9IGtleVtsZW4oJ2Jvb3N0XycpOl0KKwkJcGFyYW1zW2tleV0gPSB2YWx1ZSBhbmQgdmFsdWUgb3Iga3cuZ2V0KGtleSwgJycpCisKKwl2YXIgPSBrdy5nZXQoJ3VzZWxpYl9zdG9yZScsICdCT09TVCcpCisKKwlzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgYm9vc3QgaW5jbHVkZXMnKQorCXNlbGYuZW52WydJTkNMVURFU18lcycgJSB2YXJdID0gaW5jID0gc2VsZi5ib29zdF9nZXRfaW5jbHVkZXMoKipwYXJhbXMpCisJc2VsZi5lbnYuQk9PU1RfVkVSU0lPTiA9IHNlbGYuYm9vc3RfZ2V0X3ZlcnNpb24oaW5jKQorCXNlbGYuZW5kX21zZyhzZWxmLmVudi5CT09TVF9WRVJTSU9OKQorCWlmIExvZ3MudmVyYm9zZToKKwkJTG9ncy5wcHJpbnQoJ0NZQU4nLCAnCXBhdGggOiAlcycgJSBzZWxmLmVudlsnSU5DTFVERVNfJXMnICUgdmFyXSkKKworCWlmIG5vdCBwYXJhbXNbJ2xpYiddOgorCQlyZXR1cm4KKwlzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgYm9vc3QgbGlicycpCisJc3VmZml4ID0gcGFyYW1zLmdldCgnc3RhdGljJywgTm9uZSkgYW5kICdTVCcgb3IgJycKKwlwYXRoLCBsaWJzID0gc2VsZi5ib29zdF9nZXRfbGlicygqKnBhcmFtcykKKwlzZWxmLmVudlsnJXNMSUJQQVRIXyVzJyAlIChzdWZmaXgsIHZhcildID0gW3BhdGhdCisJc2VsZi5lbnZbJyVzTElCXyVzJyAlIChzdWZmaXgsIHZhcildID0gbGlicworCXNlbGYuZW5kX21zZygnb2snKQorCWlmIExvZ3MudmVyYm9zZToKKwkJTG9ncy5wcHJpbnQoJ0NZQU4nLCAnCXBhdGggOiAlcycgJSBwYXRoKQorCQlMb2dzLnBwcmludCgnQ1lBTicsICcJbGlicyA6ICVzJyAlIGxpYnMpCisKKworCWRlZiB0cnlfbGluaygpOgorCQlpZiAnc3lzdGVtJyBpbiBwYXJhbXNbJ2xpYiddOgorCQkJc2VsZi5jaGVja19jeHgoCisJCQkgZnJhZ21lbnQ9IlxuIi5qb2luKFsKKwkJCSAgJyNpbmNsdWRlIDxib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHA+JywKKwkJCSAgJ2ludCBtYWluKCkgeyBib29zdDo6c3lzdGVtOjplcnJvcl9jb2RlIGM7IH0nLAorCQkJIF0pLAorCQkJIHVzZT12YXIsCisJCQkgZXhlY3V0ZT1GYWxzZSwKKwkJCSkKKwkJaWYgJ3RocmVhZCcgaW4gcGFyYW1zWydsaWInXToKKwkJCXNlbGYuY2hlY2tfY3h4KAorCQkJIGZyYWdtZW50PSJcbiIuam9pbihbCisJCQkgICcjaW5jbHVkZSA8Ym9vc3QvdGhyZWFkLmhwcD4nLAorCQkJICAnaW50IG1haW4oKSB7IGJvb3N0Ojp0aHJlYWQgdDsgfScsCisJCQkgXSksCisJCQkgdXNlPXZhciwKKwkJCSBleGVjdXRlPUZhbHNlLAorCQkJKQorCisJaWYgcGFyYW1zLmdldCgnbGlua2FnZV9hdXRvZGV0ZWN0JywgRmFsc2UpOgorCQlzZWxmLnN0YXJ0X21zZygiQXR0ZW1wdGluZyB0byBkZXRlY3QgYm9vc3QgbGlua2FnZSBmbGFncyIpCisJCXRvb2xzZXQgPSBzZWxmLmJvb3N0X2dldF90b29sc2V0KGt3LmdldCgndG9vbHNldCcsICcnKSkKKwkJaWYgdG9vbHNldCBpbiBbJ3ZjJ106CisJCQkjIGRpc2FibGUgYXV0by1saW5raW5nIGZlYXR1cmUsIGNhdXNpbmcgZXJyb3IgTE5LMTE4MQorCQkJIyBiZWNhdXNlIHRoZSBjb2RlIHdhbnRzIHRvIGJlIGxpbmtlZCBhZ2FpbnN0CisJCQlzZWxmLmVudlsnREVGSU5FU18lcycgJSB2YXJdICs9IFsnQk9PU1RfQUxMX05PX0xJQiddCisKKwkJCSMgaWYgbm8gZGxscyBhcmUgcHJlc2VudCwgd2UgZ3Vlc3MgdGhlIC5saWIgZmlsZXMgYXJlIG5vdCBzdHVicworCQkJaGFzX2RsbHMgPSBGYWxzZQorCQkJZm9yIHggaW4gVXRpbHMubGlzdGRpcihwYXRoKToKKwkJCQlpZiB4LmVuZHN3aXRoKHNlbGYuZW52LmN4eHNobGliX1BBVFRFUk4gJSAnJyk6CisJCQkJCWhhc19kbGxzID0gVHJ1ZQorCQkJCQlicmVhaworCQkJaWYgbm90IGhhc19kbGxzOgorCQkJCXNlbGYuZW52WydTVExJQlBBVEhfJXMnICUgdmFyXSA9IFtwYXRoXQorCQkJCXNlbGYuZW52WydTVExJQl8lcycgJSB2YXJdID0gbGlicworCQkJCWRlbCBzZWxmLmVudlsnTElCXyVzJyAlIHZhcl0KKwkJCQlkZWwgc2VsZi5lbnZbJ0xJQlBBVEhfJXMnICUgdmFyXQorCisJCQkjIHdlIGF0dGVtcHQgdG8gcGxheSB3aXRoIHNvbWUga25vd24tdG8td29yayBDWFhGTEFHUyBjb21iaW5hdGlvbnMKKwkJCWZvciBjeHhmbGFncyBpbiAoWycvTUQnLCAnL0VIc2MnXSwgW10pOgorCQkJCXNlbGYuZW52LnN0YXNoKCkKKwkJCQlzZWxmLmVudlsiQ1hYRkxBR1NfJXMiICUgdmFyXSArPSBjeHhmbGFncworCQkJCXRyeToKKwkJCQkJdHJ5X2xpbmsoKQorCQkJCQlzZWxmLmVuZF9tc2coIm9rOiB3aW5uaW5nIGN4eGZsYWdzIGNvbWJpbmF0aW9uOiAlcyIgJSAoc2VsZi5lbnZbIkNYWEZMQUdTXyVzIiAlIHZhcl0pKQorCQkJCQllID0gTm9uZQorCQkJCQlicmVhaworCQkJCWV4Y2VwdCBFcnJvcnMuQ29uZmlndXJhdGlvbkVycm9yIGFzIGV4YzoKKwkJCQkJc2VsZi5lbnYucmV2ZXJ0KCkKKwkJCQkJZSA9IGV4YworCisJCQlpZiBlIGlzIG5vdCBOb25lOgorCQkJCXNlbGYuZW5kX21zZygiQ291bGQgbm90IGF1dG8tZGV0ZWN0IGJvb3N0IGxpbmtpbmcgZmxhZ3MgY29tYmluYXRpb24sIHlvdSBtYXkgcmVwb3J0IGl0IHRvIGJvb3N0LnB5IGF1dGhvciIsIGV4PWUpCisJCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwkJZWxzZToKKwkJCXNlbGYuZW5kX21zZygiQm9vc3QgbGlua2FnZSBmbGFncyBhdXRvLWRldGVjdGlvbiBub3QgaW1wbGVtZW50ZWQgKG5lZWRlZCA/KSBmb3IgdGhpcyB0b29sY2hhaW4iKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwllbHNlOgorCQlzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgZm9yIGJvb3N0IGxpbmthZ2UnKQorCQl0cnk6CisJCQl0cnlfbGluaygpCisJCWV4Y2VwdCBFcnJvcnMuQ29uZmlndXJhdGlvbkVycm9yIGFzIGU6CisJCQlzZWxmLmVuZF9tc2coIkNvdWxkIG5vdCBsaW5rIGFnYWluc3QgYm9vc3QgbGlicmFyaWVzIHVzaW5nIHN1cHBsaWVkIG9wdGlvbnMiKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwkJc2VsZi5lbmRfbXNnKCdvaycpCisKZGlmZiAtLWdpdCBhLy53YWYtdG9vbHMvY3J5cHRvcHAucHkgYi8ud2FmLXRvb2xzL2NyeXB0b3BwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNTMyNmIKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL2NyeXB0b3BwLnB5CkBAIC0wLDAgKzEsNzcgQEAKKyMhIC91c3IvYmluL2VudiBweXRob24KKyMgZW5jb2Rpbmc6IHV0Zi04CisKKycnJworCitXaGVuIHVzaW5nIHRoaXMgdG9vbCwgdGhlIHdzY3JpcHQgd2lsbCBsb29rIGxpa2U6CisKKwlkZWYgb3B0aW9ucyhvcHQpOgorCSAgICAgICAgb3B0LnRvb2xfb3B0aW9ucygnY3J5cHRvcHAnLCB0b29sZGlyPVsid2FmLXRvb2xzIl0pCisKKwlkZWYgY29uZmlndXJlKGNvbmYpOgorCQljb25mLmxvYWQoJ2NvbXBpbGVyX2N4eCBjcnlwdG9wcCcpCisKKwlkZWYgYnVpbGQoYmxkKToKKwkJYmxkKHNvdXJjZT0nbWFpbi5jcHAnLCB0YXJnZXQ9J2FwcCcsIHVzZT0nQ1JZUFRPUFAnKQorCitPcHRpb25zIGFyZSBnZW5lcmF0ZWQsIGluIG9yZGVyIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIGNyeXB0b3BwIGluY2x1ZGVzL2xpYnJhcmllcy4KKworCisnJycKK2ltcG9ydCBzeXMKK2ltcG9ydCByZQorZnJvbSB3YWZsaWIgaW1wb3J0IFV0aWxzLExvZ3MsRXJyb3JzCitmcm9tIHdhZmxpYi5Db25maWd1cmUgaW1wb3J0IGNvbmYKK0NSWVBUT1BQX0RJUj1bJy91c3InLCcvdXNyL2xvY2FsJywnL29wdC9sb2NhbCcsJy9zdyddCitDUllQVE9QUF9WRVJTSU9OX0ZJTEU9J2NvbmZpZy5oJworQ1JZUFRPUFBfVkVSU0lPTl9DT0RFPScnJworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPGNyeXB0b3BwL2NvbmZpZy5oPgoraW50IG1haW4oKSB7IHN0ZDo6Y291dCA8PCBDUllQVE9QUF9WRVJTSU9OOyB9CisnJycKKworZGVmIG9wdGlvbnMob3B0KToKKwlvcHQuYWRkX29wdGlvbignLS1jcnlwdG9wcCcsdHlwZT0nc3RyaW5nJyxkZWZhdWx0PScnLGRlc3Q9J2NyeXB0b3BwX2RpcicsaGVscD0nJydwYXRoIHRvIHdoZXJlIGNyeXB0b3BwIGlzIGluc3RhbGxlZCwgZS5nLiAvb3B0L2xvY2FsJycnKQorQGNvbmYKK2RlZiBfX2NyeXB0b3BwX2dldF92ZXJzaW9uX2ZpbGUoc2VsZixkaXIpOgorCXRyeToKKwkJcmV0dXJuIHNlbGYucm9vdC5maW5kX2RpcihkaXIpLmZpbmRfbm9kZSgnJXMvJXMnICUgKCdpbmNsdWRlL2NyeXB0b3BwJywgQ1JZUFRPUFBfVkVSU0lPTl9GSUxFKSkKKwlleGNlcHQ6CisJCXJldHVybiBOb25lCitAY29uZgorZGVmIGNyeXB0b3BwX2dldF92ZXJzaW9uKHNlbGYsZGlyKToKKwl2YWw9c2VsZi5jaGVja19jeHgoZnJhZ21lbnQ9Q1JZUFRPUFBfVkVSU0lPTl9DT0RFLGluY2x1ZGVzPVsnJXMvJXMnICUgKGRpciwgJ2luY2x1ZGUnKV0sIGV4ZWN1dGU9VHJ1ZSwgZGVmaW5lX3JldCA9IFRydWUsIG1hbmRhdG9yeT1UcnVlKQorCXJldHVybiB2YWwKK0Bjb25mCitkZWYgY3J5cHRvcHBfZ2V0X3Jvb3Qoc2VsZiwqaywqKmt3KToKKwlyb290PWsgYW5kIGtbMF1vciBrdy5nZXQoJ3BhdGgnLE5vbmUpCisJIyBMb2dzLnBwcmludCAoJ1JFRCcsICcgICAlcycgJXJvb3QpCisJaWYgcm9vdCBhbmQgc2VsZi5fX2NyeXB0b3BwX2dldF92ZXJzaW9uX2ZpbGUocm9vdCk6CisJCXJldHVybiByb290CisJZm9yIGRpciBpbiBDUllQVE9QUF9ESVI6CisJCWlmIHNlbGYuX19jcnlwdG9wcF9nZXRfdmVyc2lvbl9maWxlKGRpcik6CisJCQlyZXR1cm4gZGlyCisJaWYgcm9vdDoKKwkJc2VsZi5mYXRhbCgnQ3J5cHRvUFAgbm90IGZvdW5kIGluICVzJyVyb290KQorCWVsc2U6CisJCXNlbGYuZmF0YWwoJ0NyeXB0b1BQIG5vdCBmb3VuZCwgcGxlYXNlIHByb3ZpZGUgYSAtLWNyeXB0b3BwIGFyZ3VtZW50IChzZWUgaGVscCknKQorQGNvbmYKK2RlZiBjaGVja19jcnlwdG9wcChzZWxmLCprLCoqa3cpOgorCWlmIG5vdCBzZWxmLmVudlsnQ1hYJ106CisJCXNlbGYuZmF0YWwoJ2xvYWQgYSBjKysgY29tcGlsZXIgZmlyc3QsIGNvbmYubG9hZCgiY29tcGlsZXJfY3h4IiknKQorCisJdmFyPWt3LmdldCgndXNlbGliX3N0b3JlJywnQ1JZUFRPUFAnKQorCXNlbGYuc3RhcnRfbXNnKCdDaGVja2luZyBDcnlwdG8rKyBsaWInKQorCXJvb3QgPSBzZWxmLmNyeXB0b3BwX2dldF9yb290KCprLCoqa3cpCisJc2VsZi5lbnYuQ1JZUFRPUFBfVkVSU0lPTj1zZWxmLmNyeXB0b3BwX2dldF92ZXJzaW9uKHJvb3QpCisKKwlzZWxmLmVudlsnSU5DTFVERVNfJXMnJXZhcl09ICclcy8lcycgJSAocm9vdCwgImluY2x1ZGUiKQorCXNlbGYuZW52WydMSUJfJXMnJXZhcl0gPSAiY3J5cHRvcHAiCisJc2VsZi5lbnZbJ0xJQlBBVEhfJXMnJXZhcl0gPSAnJXMvJXMnICUgKHJvb3QsICJsaWIiKQorCisJc2VsZi5lbmRfbXNnKHNlbGYuZW52LkNSWVBUT1BQX1ZFUlNJT04pCisJaWYgTG9ncy52ZXJib3NlOgorCQlMb2dzLnBwcmludCgnQ1lBTicsJwlDUllQVE9QUCBpbmNsdWRlIDogJXMnJXNlbGYuZW52WydJTkNMVURFU18lcycldmFyXSkKKwkJTG9ncy5wcHJpbnQoJ0NZQU4nLCcJQ1JZUFRPUFAgbGliICAgICA6ICVzJyVzZWxmLmVudlsnTElCXyVzJyV2YXJdKQorCQlMb2dzLnBwcmludCgnQ1lBTicsJwlDUllQVE9QUCBsaWJwYXRoIDogJXMnJXNlbGYuZW52WydMSUJQQVRIXyVzJyV2YXJdKQorCmRpZmYgLS1naXQgYS8ud2FmLXRvb2xzL2RveHlnZW4ucHkgYi8ud2FmLXRvb2xzL2RveHlnZW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcwMTRlZQotLS0gL2Rldi9udWxsCisrKyBiLy53YWYtdG9vbHMvZG94eWdlbi5weQpAQCAtMCwwICsxLDE4NCBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorIyBlbmNvZGluZzogVVRGLTgKKyMgVGhvbWFzIE5hZ3kgMjAwOC0yMDEwIChpdGEpCisKKyIiIgorCitEb3h5Z2VuIHN1cHBvcnQKKworVmFyaWFibGVzIHBhc3NlZCB0byBibGQoKToKKyogZG94eWZpbGUgLS0gdGhlIERveHlmaWxlIHRvIHVzZQorCitwb3J0ZWQgZnJvbSB3YWYgMS41IChpbmNvbXBsZXRlKQorIiIiCisKK2Zyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaGNhc2UKK2ltcG9ydCBvcywgb3MucGF0aCwgcmUsIHN0YXQKK2Zyb20gd2FmbGliIGltcG9ydCBUYXNrLCBVdGlscywgTm9kZSwgTG9ncworZnJvbSB3YWZsaWIuVGFza0dlbiBpbXBvcnQgZmVhdHVyZQorCitET1hZX1NUUiA9ICcke0RPWFlHRU59IC0gJworRE9YWV9GTVRTID0gJ2h0bWwgbGF0ZXggbWFuIHJmdCB4bWwnLnNwbGl0KCkKK0RPWFlfRklMRV9QQVRURVJOUyA9ICcqLicgKyAnICouJy5qb2luKCcnJworYyBjYyBjeHggY3BwIGMrKyBqYXZhIGlpIGl4eCBpcHAgaSsrIGlubCBoIGhoIGh4eCBocHAgaCsrIGlkbCBvZGwgY3MgcGhwIHBocDMKK2luYyBtIG1tIHB5IGY5MGMgY2MgY3h4IGNwcCBjKysgamF2YSBpaSBpeHggaXBwIGkrKyBpbmwgaCBoaCBoeHgKKycnJy5zcGxpdCgpKQorCityZV9ybCA9IHJlLmNvbXBpbGUoJ1xcXFxccipcbicsIHJlLk1VTFRJTElORSkKK3JlX25sID0gcmUuY29tcGlsZSgnXHIqXG4nLCByZS5NKQorZGVmIHBhcnNlX2RveHkodHh0KToKKwl0YmwgPSB7fQorCXR4dCAgID0gcmVfcmwuc3ViKCcnLCB0eHQpCisJbGluZXMgPSByZV9ubC5zcGxpdCh0eHQpCisJZm9yIHggaW4gbGluZXM6CisJCXggPSB4LnN0cmlwKCkKKwkJaWYgbm90IHggb3IgeC5zdGFydHN3aXRoKCcjJykgb3IgeC5maW5kKCc9JykgPCAwOgorCQkJY29udGludWUKKwkJaWYgeC5maW5kKCcrPScpID49IDA6CisJCQl0bXAgPSB4LnNwbGl0KCcrPScpCisJCQlrZXkgPSB0bXBbMF0uc3RyaXAoKQorCQkJaWYga2V5IGluIHRibDoKKwkJCQl0Ymxba2V5XSArPSAnICcgKyAnKz0nLmpvaW4odG1wWzE6XSkuc3RyaXAoKQorCQkJZWxzZToKKwkJCQl0Ymxba2V5XSA9ICcrPScuam9pbih0bXBbMTpdKS5zdHJpcCgpCisJCWVsc2U6CisJCQl0bXAgPSB4LnNwbGl0KCc9JykKKwkJCXRibFt0bXBbMF0uc3RyaXAoKV0gPSAnPScuam9pbih0bXBbMTpdKS5zdHJpcCgpCisJcmV0dXJuIHRibAorCitjbGFzcyBkb3h5Z2VuKFRhc2suVGFzayk6CisJdmFycyAgPSBbJ0RPWFlHRU4nLCAnRE9YWUZMQUdTJ10KKwljb2xvciA9ICdCTFVFJworCisJZGVmIHJ1bm5hYmxlX3N0YXR1cyhzZWxmKToKKwkJJycnCisJCXNlbGYucGFycyBhcmUgcG9wdWxhdGVkIGluIHJ1bm5hYmxlX3N0YXR1cyAtIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBiZWluZworCQlydW4gKmJlZm9yZSogYm90aCBzZWxmLnBhcnMgImNvbnN1bWVycyIgLSBzY2FuKCkgYW5kIHJ1bigpCisKKwkJc2V0IG91dHB1dF9kaXIgKG5vZGUpIGZvciB0aGUgb3V0cHV0CisJCScnJworCisJCWZvciB4IGluIHNlbGYucnVuX2FmdGVyOgorCQkJaWYgbm90IHguaGFzcnVuOgorCQkJCXJldHVybiBUYXNrLkFTS19MQVRFUgorCisJCWlmIG5vdCBnZXRhdHRyKHNlbGYsICdwYXJzJywgTm9uZSk6CisJCQl0eHQgPSBzZWxmLmlucHV0c1swXS5yZWFkKCkKKwkJCXNlbGYucGFycyA9IHBhcnNlX2RveHkodHh0KQorCQkJaWYgbm90IHNlbGYucGFycy5nZXQoJ09VVFBVVF9ESVJFQ1RPUlknKToKKwkJCQlzZWxmLnBhcnNbJ09VVFBVVF9ESVJFQ1RPUlknXSA9IHNlbGYuaW5wdXRzWzBdLnBhcmVudC5nZXRfYmxkKCkuYWJzcGF0aCgpCisKKwkJCXNlbGYuZG94eV9pbnB1dHMgPSBnZXRhdHRyKHNlbGYsICdkb3h5X2lucHV0cycsIFtdKQorCQkJaWYgbm90IHNlbGYucGFycy5nZXQoJ0lOUFVUJyk6CisJCQkJc2VsZi5kb3h5X2lucHV0cy5hcHBlbmQoc2VsZi5pbnB1dHNbMF0ucGFyZW50KQorCQkJZWxzZToKKwkJCQlmb3IgaSBpbiBzZWxmLnBhcnMuZ2V0KCdJTlBVVCcpLnNwbGl0KCk6CisJCQkJCWlmIG9zLnBhdGguaXNhYnMoaSk6CisJCQkJCQlub2RlID0gc2VsZi5nZW5lcmF0b3IuYmxkLnJvb3QuZmluZF9ub2RlKGkpCisJCQkJCWVsc2U6CisJCQkJCQlub2RlID0gc2VsZi5nZW5lcmF0b3IucGF0aC5maW5kX25vZGUoaSkKKwkJCQkJaWYgbm90IG5vZGU6CisJCQkJCQlzZWxmLmdlbmVyYXRvci5ibGQuZmF0YWwoJ0NvdWxkIG5vdCBmaW5kIHRoZSBkb3h5Z2VuIGlucHV0ICVyJyAlIGkpCisJCQkJCXNlbGYuZG94eV9pbnB1dHMuYXBwZW5kKG5vZGUpCisKKwkJaWYgbm90IGdldGF0dHIoc2VsZiwgJ291dHB1dF9kaXInLCBOb25lKToKKwkJCWJsZCA9IHNlbGYuZ2VuZXJhdG9yLmJsZAorCQkJIyBGaXJzdCB0cnkgdG8gZmluZCBhbiBhYnNvbHV0ZSBwYXRoLCB0aGVuIGZpbmQgb3IgZGVjbGFyZSBhIHJlbGF0aXZlIHBhdGgKKwkJCXNlbGYub3V0cHV0X2RpciA9IGJsZC5yb290LmZpbmRfZGlyKHNlbGYucGFyc1snT1VUUFVUX0RJUkVDVE9SWSddKQorCQkJaWYgbm90IHNlbGYub3V0cHV0X2RpcjoKKwkJCQlzZWxmLm91dHB1dF9kaXIgPSBibGQucGF0aC5maW5kX29yX2RlY2xhcmUoc2VsZi5wYXJzWydPVVRQVVRfRElSRUNUT1JZJ10pCisKKwkJc2VsZi5zaWduYXR1cmUoKQorCQlyZXR1cm4gVGFzay5UYXNrLnJ1bm5hYmxlX3N0YXR1cyhzZWxmKQorCisJZGVmIHNjYW4oc2VsZik6CisJCWlmIHNlbGYucGFycy5nZXQoJ1JFQ1VSU0lWRScpID09ICdZRVMnOgorCQkJTG9ncy53YXJuKCJEb3h5Z2VuIFJFQ1VSU0lWRSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKQorCisJCWV4Y2x1ZGVfcGF0dGVybnMgPSBzZWxmLnBhcnMuZ2V0KCdFWENMVURFX1BBVFRFUk5TJywgJycpLnNwbGl0KCkKKwkJZmlsZV9wYXR0ZXJucyA9IHNlbGYucGFycy5nZXQoJ0ZJTEVfUEFUVEVSTlMnLCAnJykuc3BsaXQoKQorCQlpZiBub3QgZmlsZV9wYXR0ZXJuczoKKwkJCWZpbGVfcGF0dGVybnMgPSBET1hZX0ZJTEVfUEFUVEVSTlMKKworCQlub2RlcyA9IFtdCisJCW5hbWVzID0gW10KKwkJZm9yIG5vZGUgaW4gc2VsZi5kb3h5X2lucHV0czoKKwkJCWlmIG9zLnBhdGguaXNkaXIobm9kZS5hYnNwYXRoKCkpOgorCQkJCWZvciBtIGluIG5vZGUuYW50X2dsb2IoZmlsZV9wYXR0ZXJucyk6CisJCQkJCW5vZGVzLmFwcGVuZChtKQorCQkJZWxzZToKKwkJCQlub2Rlcy5hcHBlbmQobm9kZSkKKwkJcmV0dXJuIChub2RlcywgbmFtZXMpCisKKwlkZWYgcnVuKHNlbGYpOgorCQlkY3QgPSBzZWxmLnBhcnMuY29weSgpCisJCSMgVE9ETyB3aWxsIGJyZWFrIGlmIHBhdGhzIGhhdmUgc3BhY2VzCisJCWRjdFsnSU5QVVQnXSA9ICcgJy5qb2luKFt4LmFic3BhdGgoKSBmb3IgeCBpbiBzZWxmLmRveHlfaW5wdXRzXSkKKwkJY29kZSA9ICdcbicuam9pbihbJyVzID0gJXMnICUgKHgsIGRjdFt4XSkgZm9yIHggaW4gc2VsZi5wYXJzXSkKKwkJY29kZSA9IGNvZGUuZW5jb2RlKCkgIyBmb3IgcHl0aG9uIDMKKwkJI2ZtdCA9IERPWFlfU1RSICUgKHNlbGYuaW5wdXRzWzBdLnBhcmVudC5hYnNwYXRoKCkpCisJCWNtZCA9IFV0aWxzLnN1YnN0X3ZhcnMoRE9YWV9TVFIsIHNlbGYuZW52KQorCQllbnYgPSBzZWxmLmVudi5lbnYgb3IgTm9uZQorCQlwcm9jID0gVXRpbHMuc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZGluPVV0aWxzLnN1YnByb2Nlc3MuUElQRSwgZW52PWVudiwgY3dkPXNlbGYuZ2VuZXJhdG9yLmJsZC5wYXRoLmdldF9ibGQoKS5hYnNwYXRoKCkpCisJCXByb2MuY29tbXVuaWNhdGUoY29kZSkKKwkJcmV0dXJuIHByb2MucmV0dXJuY29kZQorCisJZGVmIHBvc3RfcnVuKHNlbGYpOgorCQlub2RlcyA9IHNlbGYub3V0cHV0X2Rpci5hbnRfZ2xvYignKiovKicsIHF1aWV0PVRydWUpCisJCWZvciB4IGluIG5vZGVzOgorCQkJeC5zaWcgPSBVdGlscy5oX2ZpbGUoeC5hYnNwYXRoKCkpCisJCXNlbGYub3V0cHV0cyArPSBub2RlcworCQlyZXR1cm4gVGFzay5UYXNrLnBvc3RfcnVuKHNlbGYpCisKK2NsYXNzIHRhcihUYXNrLlRhc2spOgorCSJxdWljayB0YXIgY3JlYXRpb24iCisJcnVuX3N0ciA9ICcke1RBUn0gJHtUQVJPUFRTfSAke1RHVH0gJHtTUkN9JworCWNvbG9yICAgPSAnUkVEJworCWFmdGVyICAgPSBbJ2RveHlnZW4nXQorCWRlZiBydW5uYWJsZV9zdGF0dXMoc2VsZik6CisJCWZvciB4IGluIGdldGF0dHIoc2VsZiwgJ2lucHV0X3Rhc2tzJywgW10pOgorCQkJaWYgbm90IHguaGFzcnVuOgorCQkJCXJldHVybiBUYXNrLkFTS19MQVRFUgorCisJCWlmIG5vdCBnZXRhdHRyKHNlbGYsICd0YXJfZG9uZV9hZGRpbmcnLCBOb25lKToKKwkJCSMgZXhlY3V0ZSB0aGlzIG9ubHkgb25jZQorCQkJc2VsZi50YXJfZG9uZV9hZGRpbmcgPSBUcnVlCisJCQlmb3IgeCBpbiBnZXRhdHRyKHNlbGYsICdpbnB1dF90YXNrcycsIFtdKToKKwkJCQlzZWxmLnNldF9pbnB1dHMoeC5vdXRwdXRzKQorCQkJaWYgbm90IHNlbGYuaW5wdXRzOgorCQkJCXJldHVybiBUYXNrLlNLSVBfTUUKKwkJcmV0dXJuIFRhc2suVGFzay5ydW5uYWJsZV9zdGF0dXMoc2VsZikKKworCWRlZiBfX3N0cl9fKHNlbGYpOgorCQl0Z3Rfc3RyID0gJyAnLmpvaW4oW2EubmljZV9wYXRoKHNlbGYuZW52KSBmb3IgYSBpbiBzZWxmLm91dHB1dHNdKQorCQlyZXR1cm4gJyVzOiAlc1xuJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgdGd0X3N0cikKKworQGZlYXR1cmUoJ2RveHlnZW4nKQorZGVmIHByb2Nlc3NfZG94eShzZWxmKToKKwlpZiBub3QgZ2V0YXR0cihzZWxmLCAnZG94eWZpbGUnLCBOb25lKToKKwkJc2VsZi5nZW5lcmF0b3IuYmxkLmZhdGFsKCdubyBkb3h5ZmlsZT8/JykKKworCW5vZGUgPSBzZWxmLmRveHlmaWxlCisJaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgTm9kZS5Ob2RlKToKKwkJbm9kZSA9IHNlbGYucGF0aC5maW5kX3Jlc291cmNlKG5vZGUpCisJaWYgbm90IG5vZGU6CisJCXJhaXNlIFZhbHVlRXJyb3IoJ2RveHlnZW4gZmlsZSBub3QgZm91bmQnKQorCisJIyB0aGUgdGFzayBpbnN0YW5jZQorCWRzayA9IHNlbGYuY3JlYXRlX3Rhc2soJ2RveHlnZW4nLCBub2RlKQorCisJaWYgZ2V0YXR0cihzZWxmLCAnZG94eV90YXInLCBOb25lKToKKwkJdHNrID0gc2VsZi5jcmVhdGVfdGFzaygndGFyJykKKwkJdHNrLmlucHV0X3Rhc2tzID0gW2Rza10KKwkJdHNrLnNldF9vdXRwdXRzKHNlbGYucGF0aC5maW5kX29yX2RlY2xhcmUoc2VsZi5kb3h5X3RhcikpCisJCWlmIHNlbGYuZG94eV90YXIuZW5kc3dpdGgoJ2J6MicpOgorCQkJdHNrLmVudlsnVEFST1BUUyddID0gWydjamYnXQorCQllbGlmIHNlbGYuZG94eV90YXIuZW5kc3dpdGgoJ2d6Jyk6CisJCQl0c2suZW52WydUQVJPUFRTJ10gPSBbJ2N6ZiddCisJCWVsc2U6CisJCQl0c2suZW52WydUQVJPUFRTJ10gPSBbJ2NmJ10KKworZGVmIGNvbmZpZ3VyZShjb25mKToKKwljb25mLmZpbmRfcHJvZ3JhbSgnZG94eWdlbicsIHZhcj0nRE9YWUdFTicpCisJY29uZi5maW5kX3Byb2dyYW0oJ3RhcicsIHZhcj0nVEFSJykKKwpkaWZmIC0tZ2l0IGEvLndhZi10b29scy9vcGVuc3NsLnB5IGIvLndhZi10b29scy9vcGVuc3NsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNTk5YTkKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL29wZW5zc2wucHkKQEAgLTAsMCArMSw1OSBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorIyBlbmNvZGluZzogdXRmLTgKKworJycnCisKK1doZW4gdXNpbmcgdGhpcyB0b29sLCB0aGUgd3NjcmlwdCB3aWxsIGxvb2sgbGlrZToKKworCWRlZiBvcHRpb25zKG9wdCk6CisJICAgICAgICBvcHQudG9vbF9vcHRpb25zKCdvcGVuc3NsJykKKworCWRlZiBjb25maWd1cmUoY29uZik6CisJCWNvbmYubG9hZCgnY29tcGlsZXJfYyBvcGVuc3NsJykKKworICAgICAgICAgICAgICAgIGNvbmYuY2hlY2tfb3BlbnNzbCgpCisKKwlkZWYgYnVpbGQoYmxkKToKKwkJYmxkKHNvdXJjZT0nbWFpbi5jcHAnLCB0YXJnZXQ9J2FwcCcsIHVzZT0nT1BFTlNTTCcpCisKKycnJworCitmcm9tIHdhZmxpYiBpbXBvcnQgT3B0aW9ucworZnJvbSB3YWZsaWIuQ29uZmlndXJlIGltcG9ydCBjb25mCisKK0Bjb25mCitkZWYgY2hlY2tfb3BlbnNzbChzZWxmLCprLCoqa3cpOgorICAgICAgICByb290ID0gayBhbmQga1swXSBvciBrdy5nZXQoJ3BhdGgnLE5vbmUpIG9yIE9wdGlvbnMub3B0aW9ucy53aXRoX29wZW5zc2wKKyAgICAgICAgbWFuZGF0b3J5ID0ga3cuZ2V0KCdtYW5kYXRvcnknLCBUcnVlKQorICAgICAgICB2YXIgPSBrdy5nZXQoJ3ZhcicsICdPUEVOU1NMJykKKworICAgICAgICBDT0RFID0gIiIiCisjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKwkodm9pZClhcmdjOworICAgICAgICBwcmludGYgKCIlcyIsIGFyZ3ZbMF0pOworCisJcmV0dXJuIDA7Cit9CisiIiIKKyAgICAgICAgaWYgcm9vdDoKKyAgICAgICAgICAgICAgICBsaWJjcnlwdG8gPSBzZWxmLmNoZWNrX2NjIChsaWI9Wydzc2wnLCAnY3J5cHRvJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9J29wZW5zc2wvY3J5cHRvLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9uYW1lPSdIQVZFXyVzJyAlIHZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VsaWJfc3RvcmU9dmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeSA9IG1hbmRhdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZmxhZ3M9Ii1JJXMvaW5jbHVkZSIgJSByb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtmbGFncz0iLUwlcy9saWIiICUgcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlID0gVHJ1ZSwgZnJhZ21lbnQgPSBDT0RFLCBkZWZpbmVfcmV0ID0gVHJ1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsaWJjcnlwdG8gPSBzZWxmLmNoZWNrX2NjIChsaWI9Wydzc2wnLCAnY3J5cHRvJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9J29wZW5zc2wvY3J5cHRvLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9uYW1lPSdIQVZFXyVzJyAlIHZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VsaWJfc3RvcmU9dmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeSA9IG1hbmRhdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlID0gVHJ1ZSwgZnJhZ21lbnQgPSBDT0RFLCBkZWZpbmVfcmV0ID0gVHJ1ZSkKKworZGVmIG9wdGlvbnMob3B0KToKKyAgICAgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1vcGVuc3NsJyx0eXBlPSdzdHJpbmcnLGRlZmF1bHQ9JycsZGVzdD0nd2l0aF9vcGVuc3NsJyxoZWxwPScnJ1BhdGggdG8gT3BlblNTTCcnJykKZGlmZiAtLWdpdCBhLy53YWYtdG9vbHMvc3BoaW54X2J1aWxkLnB5IGIvLndhZi10b29scy9zcGhpbnhfYnVpbGQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTExNTVkMQotLS0gL2Rldi9udWxsCisrKyBiLy53YWYtdG9vbHMvc3BoaW54X2J1aWxkLnB5CkBAIC0wLDAgKzEsMTA4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgZW5jb2Rpbmc6IHV0Zi04CisjIEhhbnMtTWFydGluIHZvbiBHYXVkZWNrZXIsIDIwMTIKKworIiIiCitDcmVhdGUgU3BoaW54IGRvY3VtZW50YXRpb24uIEN1cnJlbnRseSBvbmx5IExhVGVYIGFuZCBIVE1MIGFyZSBzdXBwb3J0ZWQuCisKK1RoZSBzb3VyY2UgZmlsZSAqKm11c3QqKiBiZSB0aGUgY29uZi5weSBmaWxlIHVzZWQgYnkgU3BoaW54LiBFdmVyeXRoaW5nCitlbHNlIGhhcyBkZWZhdWx0cywgcGFzc2luZyBpbiB0aGUgcGFyYW1ldGVycyBpcyBvcHRpb25hbC4KKworVXNhZ2UgZm9yIGdldHRpbmcgYm90aCBodG1sIGFuZCBwZGYgZG9jczoKKworICAgIGN0eChmZWF0dXJlcz0nc3BoaW54Jywgc291cmNlPSdkb2NzL2NvbmYucHknKQorICAgIGN0eChmZWF0dXJlcz0nc3BoaW54Jywgc291cmNlPSdkb2NzL2NvbmYucHknLCBidWlsZGVybmFtZT0nbGF0ZXgnKQorCitPcHRpb25hbCBwYXJhbWV0ZXJzIGFuZCB0aGVpciBkZWZhdWx0czoKKworICAgICogYnVpbGRlcm5hbWU6IGh0bWwKKyAgICAqIHNyY2RpcjogY29uZmRpciAodGhlIGRpcmVjdG9yeSB3aGVyZSBjb25mLnB5IGxpdmVzKQorICAgICogb3V0ZGlyOiBjb25mZGlyL2J1aWxkZXJuYW1lIChpbiB0aGUgYnVpbGQgZGlyZWN0b3J5IHRyZWUpCisgICAgKiBkb2N0cmVlZGlyOiBvdXRkaXIvLmRvY3RyZWVzCisgICAgKiB0eXBlOiBwZGZsYXRleCAob25seSBhcHBsaWVzIHRvICdsYXRleCcgYnVpbGRlcikKKworIiIiCisKKworaW1wb3J0IG9zCitmcm9tIHdhZmxpYiBpbXBvcnQgVGFzaywgVGFza0dlbiwgRXJyb3JzLCBMb2dzCisKK2NsYXNzIFJ1blNwaGlueEJ1aWxkKFRhc2suVGFzayk6CisJZGVmIHNjYW4oc2VsZik6CisJCSIiIlVzZSBTcGhpbngnIGludGVybmFsIGVudmlyb25tZW50IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcy4iIiIKKwkJcyA9IHNlbGYuc3BoaW54X2luc3RhbmNlCisJCW1zZywgZHVtbXksIGl0ZXJhdG9yID0gcy5lbnYudXBkYXRlKHMuY29uZmlnLCBzLnNyY2Rpciwgcy5kb2N0cmVlZGlyLCBzKQorCQlzLmluZm8obXNnKQorCQlkZXBfbm9kZXMgPSBbXQorCQlmb3IgZG9jbmFtZSBpbiBzLmJ1aWxkZXIuc3RhdHVzX2l0ZXJhdG9yKGl0ZXJhdG9yLCAicmVhZGluZyBzb3VyY2VzLi4uICIpOgorCQkJZmlsZW5hbWUgPSBkb2NuYW1lICsgcy5jb25maWcuc291cmNlX3N1ZmZpeAorCQkJZGVwX25vZGVzLmFwcGVuZChzZWxmLnNyY2Rpci5maW5kX25vZGUoZmlsZW5hbWUpKQorCQlmb3IgZGVwIGluIHMuZW52LmRlcGVuZGVuY2llcy52YWx1ZXMoKToKKwkJCSMgTmVlZCB0aGUgJ3N0cicgY2FsbCBiZWNhdXNlIFNwaGlueCBtaWdodCByZXR1cm4gVW5pY29kZSBzdHJpbmdzLgorCQkJW2RlcF9ub2Rlcy5hcHBlbmQoc2VsZi5zcmNkaXIuZmluZF9ub2RlKHN0cihkKSkpIGZvciBkIGluIGRlcF0KKwkJcmV0dXJuIChkZXBfbm9kZXMsIFtdKQorCisJZGVmIHJ1bihzZWxmKToKKwkJIiIiUnVuIHRoZSBTcGhpbnggYnVpbGQuIiIiCisJCXNlbGYuc3BoaW54X2luc3RhbmNlLmJ1aWxkKGZvcmNlX2FsbD1GYWxzZSwgZmlsZW5hbWVzPU5vbmUpCisJCXJldHVybiBOb25lCisKKwlkZWYgcG9zdF9ydW4oc2VsZik6CisJCSIiIkFkZCBldmVyeXRoaW5nIGZvdW5kIGluIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRyZWUgYXMgYW4gb3V0cHV0LgorCQlOb3QgZWxlZ2FudCwgYnV0IHByYWdtYXRpYy4iIiIKKwkJZm9yIG4gaW4gc2VsZi5vdXRkaXIuYW50X2dsb2IoIioqIiwgcXVpZXQ9VHJ1ZSwgcmVtb3ZlPUZhbHNlKToKKwkJCWlmIG4gbm90IGluIHNlbGYub3V0cHV0czogc2VsZi5zZXRfb3V0cHV0cyhuKQorCQlzdXBlcihSdW5TcGhpbnhCdWlsZCwgc2VsZikucG9zdF9ydW4oKQorCisKK2RlZiBfZ2V0X21haW5fdGFyZ2V0cyh0Zywgcyk6CisJIiIiUmV0dXJuIHNvbWUgZWFzeSB0YXJnZXRzIGtub3duIGZyb20gdGhlIFNwaGlueCBidWlsZCBlbnZpcm9ubWVudCAqKnMuZW52KiouIiIiCisJb3V0X2RpciA9IHRnLmJsZC5yb290LmZpbmRfbm9kZShzLm91dGRpcikKKwl0Z3Rfbm9kZXMgPSBbXQorCWlmIHMuYnVpbGRlci5uYW1lID09ICJsYXRleCI6CisJCWZvciB0Z3RfaW5mbyBpbiBzLmVudi5jb25maWcubGF0ZXhfZG9jdW1lbnRzOgorCQkJdGd0X25vZGVzLmFwcGVuZChvdXRfZGlyLmZpbmRfb3JfZGVjbGFyZSh0Z3RfaW5mb1sxXSkpCisJZWxpZiBzLmJ1aWxkZXIubmFtZSA9PSAiaHRtbCI6CisJCXN1ZmZpeCA9IGdldGF0dHIocy5lbnYuY29uZmlnLCAiaHRtbF9maWxlX3N1ZmZpeCIsICIuaHRtbCIpCisJCXRndF9uYW1lID0gcy5lbnYuY29uZmlnLm1hc3Rlcl9kb2MgKyBzdWZmaXgKKwkJdGd0X25vZGVzLmFwcGVuZChvdXRfZGlyLmZpbmRfb3JfZGVjbGFyZSh0Z3RfbmFtZSkpCisJZWxzZToKKwkJcmFpc2UgRXJyb3JzLldhZkVycm9yKCJTcGhpbnggYnVpbGRlciBub3QgaW1wbGVtZW50ZWQ6ICVzIiAlIHMuYnVpbGRlci5uYW1lKQorCXJldHVybiB0Z3Rfbm9kZXMKKworCitAVGFza0dlbi5mZWF0dXJlKCJzcGhpbngiKQorQFRhc2tHZW4uYmVmb3JlX21ldGhvZCgicHJvY2Vzc19zb3VyY2UiKQorZGVmIGFwcGx5X3NwaGlueCh0Zyk6CisJIiIiU2V0IHVwIHRoZSB0YXNrIGdlbmVyYXRvciB3aXRoIGEgU3BoaW54IGluc3RhbmNlIGFuZCBjcmVhdGUgYSB0YXNrLiIiIgorCisgICAgICAgIGZyb20gc3BoaW54LmFwcGxpY2F0aW9uIGltcG9ydCBTcGhpbngKKworCSMgUHV0IHRvZ2V0aGVyIHRoZSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIGRlZmF1bHRzIGFuZCB0ZyBhdHRyaWJ1dGVzLgorCWNvbmYgPSB0Zy5wYXRoLmZpbmRfbm9kZSh0Zy5zb3VyY2UpCisJY29uZmRpciA9IGNvbmYucGFyZW50LmFic3BhdGgoKQorCWJ1aWxkZXJuYW1lID0gZ2V0YXR0cih0ZywgImJ1aWxkZXJuYW1lIiwgImh0bWwiKQorCXNyY2RpciA9IGdldGF0dHIodGcsICJzcmNkaXIiLCBjb25mZGlyKQorCW91dGRpciA9IHRnLnBhdGguZmluZF9vcl9kZWNsYXJlIChnZXRhdHRyKHRnLCAib3V0ZGlyIiwgb3MucGF0aC5qb2luKGNvbmYucGFyZW50LmdldF9ibGQoKS5hYnNwYXRoKCksIGJ1aWxkZXJuYW1lKSkpLmFic3BhdGggKCkKKyAgICAgICAgCisJZG9jdHJlZWRpciA9IGdldGF0dHIodGcsICJkb2N0cmVlZGlyIiwgb3MucGF0aC5qb2luKG91dGRpciwgIi5kb2N0cmVlcyIpKQorCisJIyBTZXQgdXAgdGhlIFNwaGlueCBpbnN0YW5jZS4KKwlzID0gU3BoaW54IChzcmNkaXIsIGNvbmZkaXIsIG91dGRpciwgZG9jdHJlZWRpciwgYnVpbGRlcm5hbWUsIHN0YXR1cz1Ob25lKQorCisJIyBHZXQgdGhlIG1haW4gdGFyZ2V0cyBvZiB0aGUgU3BoaW54IGJ1aWxkLgorCXRndF9ub2RlcyA9IF9nZXRfbWFpbl90YXJnZXRzKHRnLCBzKQorCisJIyBDcmVhdGUgdGhlIHRhc2sgYW5kIHNldCB0aGUgcmVxdWlyZWQgYXR0cmlidXRlcy4gIAorCXRhc2sgPSB0Zy5jcmVhdGVfdGFzaygiUnVuU3BoaW54QnVpbGQiLCBzcmM9Y29uZiwgdGd0PXRndF9ub2RlcykKKwl0YXNrLnNyY2RpciA9IHRnLmJsZC5yb290LmZpbmRfbm9kZShzLnNyY2RpcikKKwl0YXNrLm91dGRpciA9IHRnLmJsZC5yb290LmZpbmRfbm9kZShzLm91dGRpcikKKwl0YXNrLnNwaGlueF9pbnN0YW5jZSA9IHMKKworCSMgQnVpbGQgcGRmIGlmIHdlIGhhdmUgdGhlIExhVGVYIGJ1aWxkZXIsIGFsbG93IGZvciBidWlsZGluZyB3aXRoIHhlbGF0ZXguCisJaWYgcy5idWlsZGVyLm5hbWUgPT0gImxhdGV4IjoKKwkJY29tcGlsZV90eXBlID0gZ2V0YXR0cih0ZywgInR5cGUiLCAicGRmbGF0ZXgiKQorCQl0Zy5ibGQoZmVhdHVyZXM9InRleCIsIHR5cGU9Y29tcGlsZV90eXBlLCBzb3VyY2U9dGd0X25vZGVzLCBuYW1lPSJzcGhpbnhfcGRmIiwgcHJvbXB0PTApCisKKwkjIEJ5cGFzcyB0aGUgZXhlY3V0aW9uIG9mIHByb2Nlc3Nfc291cmNlIGJ5IHNldHRpbmcgdGhlIHNvdXJjZSB0byBhbiBlbXB0eSBsaXN0CisJdGcuc291cmNlID0gW10KZGlmZiAtLWdpdCBhL0lOU1RBTEwgYi9JTlNUQUxMCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2FmNjViLi4wMDAwMDAwCi0tLSBhL0lOU1RBTEwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotTkROLUNQUDogIEEgTmFtZWQgRGF0YSBOZXR3b3JraW5nIGNsaWVudCBsaWJyYXJ5IGZvciBDKysgYW5kIEMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUHJlcmVxdWlzaXRlcwotLS0tLS0tLS0tLS0tLQotKFRoZXNlIGFyZSBwcmVyZXF1aXNpdGVzIHRvIGJ1aWxkIE5ETi1DUFAuICBUbyBkbyBkZXZlbG9wbWVudCBvZiBORE4tQ1BQIGNvZGUgYW5kIHVwZGF0ZSB0aGUgYnVpbGQgc3lzdGVtLCAKLSBzZWUgRGV2ZWxvcG1lbnQgUHJlcmVxdWlzaXRlcy4pCi0KLVJlcXVpcmVkOiAKLQotKiBsaWJjcnlwdG8KLSogbGlic3FsaXRlMyAKLSogbGliY3J5cHRvKysKLQotT3B0aW9uYWw6IAotCi0qIGJvb3N0IGxpYnJhcmllcyAoaGlnaGx5IHJlY29tbWVuZGVkKQotKiBPU1ggU2VjdXJpdHkgZnJhbWV3b3JrIChmb3Iga2V5IHN0b3JhZ2UpCi0KLUZvbGxvd2luZyBhcmUgdGhlIGRldGFpbGVkIHN0ZXBzIGZvciBlYWNoIHBsYXRmb3JtIHRvIGluc3RhbGwgdGhlIHByZXJlcXVpc2l0ZXMuCi0KLSogTWFjIE9TIFggMTAuNy4zLCBNYWMgT1MgWCAxMC44LjQKLUluc3RhbGwgWGNvZGUuCi1JbiBYY29kZSBQcmVmZXJlbmNlcyA+IERvd25sb2FkcywgaW5zdGFsbCAiQ29tbWFuZCBMaW5lIFRvb2xzIi4KLQotKiBNYWMgT1MgWCAxMC45Ci1JbnN0YWxsIFhjb2RlLiAgKFhjb2RlIG9uIE9TIFggMTAuOSBzZWVtcyB0byBhbHJlYWR5IGhhdmUgdGhlIENvbW1hbmQgTGluZSBUb29scy4pCi0KLUlmIHVzaW5nIG1hY3BvcnRzLCBkZXBlbmRlbmNpZXMgY2FuIGJlIGluc3RhbGxlZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgotCi0gICAgc3VkbyBwb3J0IGluc3RhbGwgYm9vc3Qgc3FsaXRlMyBsaWJjcnlwdG9wcAotCi0qIFVidW50dSAxMi4wNCAoNjQgYml0IGFuZCAzMiBiaXQpLCBVYnVudHUgMTMuMDQgKDY0IGJpdCkKLUluIGEgdGVybWluYWwsIGVudGVyOgotCi0gICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgYnVpbGQtZXNzZW50aWFsCi0gICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgbGliYm9vc3QtYWxsLWRldiBsaWJzc2wtZGV2IGxpYnNxbGl0ZTMtZGV2IGxpYmNyeXB0bysrLWRldgotCi0qIFdpbmRvd3MgQ3lnd2luCi1DeWd3aW4gaXMgdGVzdGVkIG9uIFdpbmRvd3MgNyA2NC1iaXQgd2l0aCB0aGUgIkRldmVsIiBwYWNrYWdlcyBzZWxlY3RlZCB0byBpbnN0YWxsIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlCi1jeWd3aW4gaW5zdGFsbGVyLiAgVGhpcyBpbmNsdWRlcyBsaWJjcnlwdG8gYW5kIGxpYnNxbGl0ZTMuCi0KLUJ1aWxkCi0tLS0tLQotKFRoZXNlIGFyZSBpbnN0cnVjdGlvbnMgdG8gYnVpbGQgTkROLUNQUC4gVG8gZG8gZGV2ZWxvcG1lbnQgb2YgTkROLUNQUCBjb2RlIGFuZCB1cGRhdGUgdGhlIGJ1aWxkIHN5c3RlbSwgc2VlIERldmVsb3BtZW50LikKLQotVG8gYnVpbGQgaW4gYSB0ZXJtaW5hbCwgY2hhbmdlIGRpcmVjdG9yeSB0byB0aGUgTkROLUNQUCByb290LiAgRW50ZXI6Ci0KLSAgICAuL2NvbmZpZ3VyZQotICAgIG1ha2UKLSAgICBtYWtlIGluc3RhbGwKLQotVG8gbWFrZSBkb2N1bWVudGF0aW9uLCBlbnRlcjoKLQotICAgIG1ha2UgZG94eWdlbi1kb2MKLQotRmlsZXMKLS0tLS0tCi0KLVRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZyBsaWJyYXJpZXM6Ci0KLS5saWJzL2xpYm5kbi1jLmE6IFRoZSBjb3JlIEMgY29kZSBmb3IgZW5jb2RpbmcgYW5kIGNvbW11bmljYXRpb24uCi0ubGlicy9saWJuZG4tY3BwLmE6IFRoZSBDKysgbGlicmFyeSBBUEkuICAoSWYgbGlua2luZyB0byBsaWJuZG4tY3BwLCBkb24ndCBsaW5rIHRvIGxpYm5kbi1jIHNpbmNlIGl0IGlzIGluY2x1ZGVkLikKLQotVGhpcyBtYWtlcyB0aGUgZm9sbG93aW5nIHRlc3QgZmlsZXM6Ci0KLWJpbi90ZXN0LWdldC1hc3luYzogQ29ubmVjdCB0byBvbmUgb2YgdGhlIE5ETiB0ZXN0YmVkIGh1YnMsIGV4cHJlc3MgYW4gaW50ZXJlc3QgYW5kIGRpc3BsYXkgdGhlIHJlY2VpdmVkIGRhdGEuCi1iaW4vdGVzdC1wdWJsaXNoLWFzeW5jOiBDb25uZWN0IHRvIHRoZSBsb2NhbCBORE4gaHViLCBhY2NlcHQgaW50ZXJlc3RzIHdpdGggcHJlZml4IC90ZXN0ZWNobyBhbmQgZWNobyBiYWNrIGEgZGF0YSBwYWNrZXQuCi1iaW4vdGVzdC1lbmNvZGUtZGVjb2RlLWludGVyZXN0OiBFbmNvZGUgYW5kIGRlY29kZSBhbiBpbnRlcmVzdCwgdGVzdGluZyBpbnRlcmVzdCBzZWxlY3RvcnMgYW5kIHRoZSBuYW1lIFVSSS4KLWJpbi90ZXN0LWVuY29kZS1kZWNvZGUtZGF0YTogRW5jb2RlIGFuZCBkZWNvZGUgYSBkYXRhIHBhY2tldCwgaW5jbHVkaW5nIHNpZ25pbmcgdGhlIGRhdGEgcGFja2V0LgotYmluL3Rlc3QtZW5jb2RlLWRlY29kZS1mb3J3YXJkaW5nLWVudHJ5OiBFbmNvZGUgYW5kIGRlY29kZSBhIGRhdGEgcGFja2V0LCBpbmNsdWRpbmcgc2lnbmluZyB0aGUgZGF0YSBwYWNrZXQuCi0KLVJ1bm5pbmcgbWFrZSBkb3h5Z2VuLWRvYyBwdXRzIGNvZGUgZG9jdW1lbnRhdGlvbiBpbjoKLWRvYy9odG1sCi0KLVN1cHBvcnRlZCBwbGF0Zm9ybXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTkROLUNQUCBpcyB0ZXN0ZWQgb24gdGhlIGZvbGxvd2luZyBwbGF0Zm9ybXM6Ci1VYnVudHUgMTIuMDQgKDY0IGJpdCBhbmQgMzIgYml0KSAoZ2NjIDQuNi4zKQotVWJ1bnR1IDEzLjA0ICg2NCBiaXQpIChnY2MgNC43LjMpCi1NYWMgT1MgWCAxMC44LjQgKGNsYW5nIDQuMikKLU1hYyBPUyBYIDEwLjguNCAoZ2NjIDQuMikKLQotRGV2ZWxvcG1lbnQgUHJlcmVxdWlzaXRlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGhlc2Ugc3RlcHMgYXJlIG9ubHkgbmVlZGVkIHRvIGRvIGRldmVsb3BtZW50IG9mIE5ETi1DUFAgY29kZSBhbmQgdXBkYXRlIHRoZSBidWlsZCBzeXN0ZW0uCi1GaXJzdCBmb2xsb3cgdGhlIFByZXJlcXVpc2l0ZXMgYWJvdmUgZm9yIHlvdXIgcGxhdGZvcm1zLgotCi0qIE1hYyBPUyBYIDEwLjcuMywgTWFjIE9TIFggMTAuOC40LCBNYWMgT1MgWCAxMC45Ci1JbnN0YWxsIE1hY1BvcnRzIGZyb20gaHR0cDovL3d3dy5tYWNwb3J0cy5vcmcvaW5zdGFsbC5waHAKLUluIGEgdGVybWluYWwsIGVudGVyOgotc3VkbyBwb3J0IGluc3RhbGwgYXV0b21ha2UKLXN1ZG8gcG9ydCBpbnN0YWxsIGF1dG9jb25mCi1zdWRvIHBvcnQgaW5zdGFsbCBsaWJ0b29sCi1zdWRvIHBvcnQgaW5zdGFsbCBkb3h5Z2VuCi0KLSogVWJ1bnR1IDEyLjA0ICg2NCBiaXQgYW5kIDMyIGJpdCksIFVidW50dSAxMy4wNCAoNjQgYml0KQotSW4gYSB0ZXJtaW5hbCwgZW50ZXI6Ci1zdWRvIGFwdC1nZXQgaW5zdGFsbCBhdXRvbWFrZQotc3VkbyBhcHQtZ2V0IGluc3RhbGwgbGlidG9vbAotc3VkbyBhcHQtZ2V0IGluc3RhbGwgZG94eWdlbgotCi1EZXZlbG9wbWVudAotLS0tLS0tLS0tLS0KLUZvbGxvdyBEZXZlbG9wbWVudCBQcmVyZXF1aXNpdGVzIGFib3ZlIGZvciB5b3VyIHBsYXRmb3JtLgotTm93IHlvdSBjYW4gYWRkIHNvdXJjZSBjb2RlIGZpbGVzIGFuZCB1cGRhdGUgTWFrZWZpbGUuYW0uICAKLUFmdGVyIHVwZGF0aW5nLCBjaGFuZ2UgZGlyZWN0b3J5IHRvIHRoZSBORE4tQ1BQIHJvb3QgYW5kIGVudGVyIHRoZSBmb2xsb3dpbmcgdG8gYnVpbGQgdGhlIE1ha2VmaWxlOgotLi9hdXRvZ2VuLnNoCmRpZmYgLS1naXQgYS9JTlNUQUxMLm1kIGIvSU5TVEFMTC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTY5MGE2Ci0tLSAvZGV2L251bGwKKysrIGIvSU5TVEFMTC5tZApAQCAtMCwwICsxLDExNyBAQAorTkROLUNQUC1kZXY6ICBBIGRldiB2ZXJzaW9uIG9mIE5hbWVkIERhdGEgTmV0d29ya2luZyBjbGllbnQgbGlicmFyeSBmb3IgQysrCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUHJlcmVxdWlzaXRlcworLS0tLS0tLS0tLS0tLQorCisoVGhlc2UgYXJlIHByZXJlcXVpc2l0ZXMgdG8gYnVpbGQgTkROLUNQUC4gIFRvIGRvIGRldmVsb3BtZW50IG9mIE5ETi1DUFAgY29kZSBhbmQgdXBkYXRlIHRoZSBidWlsZCBzeXN0ZW0sIAorIHNlZSBEZXZlbG9wbWVudCBQcmVyZXF1aXNpdGVzLikKKworUmVxdWlyZWQ6IAorCisqIGxpYmNyeXB0bworKiBsaWJzcWxpdGUzIAorKiBsaWJjcnlwdG8rKworKiBib29zdCBsaWJyYXJpZXMKKyogT1NYIFNlY3VyaXR5IGZyYW1ld29yayAob24gT1NYIHBsYXRmb3JtIG9ubHkpCisKK0ZvbGxvd2luZyBhcmUgdGhlIGRldGFpbGVkIHN0ZXBzIGZvciBlYWNoIHBsYXRmb3JtIHRvIGluc3RhbGwgdGhlIHByZXJlcXVpc2l0ZXMuCisKKyogTWFjIE9TIFggMTAuNy4zLCBNYWMgT1MgWCAxMC44LjQKKworICAgIEluc3RhbGwgWGNvZGUuCisgICAgSW4gWGNvZGUgUHJlZmVyZW5jZXMgPiBEb3dubG9hZHMsIGluc3RhbGwgIkNvbW1hbmQgTGluZSBUb29scyIuCisKKyogTWFjIE9TIFggMTAuOQorCisgICAgSW5zdGFsbCBYY29kZS4gIChYY29kZSBvbiBPUyBYIDEwLjkgc2VlbXMgdG8gYWxyZWFkeSBoYXZlIHRoZSBDb21tYW5kIExpbmUgVG9vbHMuKQorCisgICAgSWYgdXNpbmcgbWFjcG9ydHMsIGRlcGVuZGVuY2llcyBjYW4gYmUgaW5zdGFsbGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisKKyAgICAgICAgc3VkbyBwb3J0IGluc3RhbGwgYm9vc3Qgc3FsaXRlMyBsaWJjcnlwdG9wcAorCisqIFVidW50dSAxMi4wNCAoNjQgYml0IGFuZCAzMiBiaXQpLCBVYnVudHUgMTMuMDQgKDY0IGJpdCkKKworICAgIEluIGEgdGVybWluYWwsIGVudGVyOgorCisgICAgICAgIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGJ1aWxkLWVzc2VudGlhbAorICAgICAgICBzdWRvIGFwdC1nZXQgaW5zdGFsbCBsaWJib29zdC1hbGwtZGV2IGxpYnNzbC1kZXYgbGlic3FsaXRlMy1kZXYgbGliY3J5cHRvKystZGV2CisKKyogV2luZG93cyBDeWd3aW4KKworICAgIEN5Z3dpbiBpcyB0ZXN0ZWQgb24gV2luZG93cyA3IDY0LWJpdCB3aXRoIHRoZSAiRGV2ZWwiIHBhY2thZ2VzIHNlbGVjdGVkIHRvIGluc3RhbGwgYXQgdGhlIHRvcCBsZXZlbCBvZiB0aGUKKyAgICBjeWd3aW4gaW5zdGFsbGVyLiAgVGhpcyBpbmNsdWRlcyBsaWJjcnlwdG8gYW5kIGxpYnNxbGl0ZTMuCisKK0J1aWxkCistLS0tLQorCisoVGhlc2UgYXJlIGluc3RydWN0aW9ucyB0byBidWlsZCBORE4tQ1BQLiBUbyBkbyBkZXZlbG9wbWVudCBvZiBORE4tQ1BQIGNvZGUgYW5kIHVwZGF0ZSB0aGUgYnVpbGQgc3lzdGVtLCBzZWUgRGV2ZWxvcG1lbnQuKQorCitUbyBidWlsZCBpbiBhIHRlcm1pbmFsLCBjaGFuZ2UgZGlyZWN0b3J5IHRvIHRoZSBORE4tQ1BQIHJvb3QuICBFbnRlcjoKKworICAgIC4vd2FmIGNvbmZpZ3VyZQorICAgIC4vd2FmCisgICAgc3VkbyAuL3dhZiBpbnN0YWxsCisKK1RoaXMgbWFrZXMgYW5kIGluc3RhbGxzIHRoZSBmb2xsb3dpbmcgaXRlbXM6CisKKyogYGA8TElCUEFUSD4vbGlibmRuLWNwcC1kZXYuKmBgOiBzdGF0aWMgYW5kIGR5bmFtaWMgTkROIEMrKyBsaWJyYXJpZXMKKyogYGA8TElCUEFUSD4vcGtnY29uZmlnL2xpYm5kbi1jcHAtZGV2LnBjYGA6IHBrZ2NvbmZpZyBmaWxlIHN0b3JpbmcgYWxsIG5lY2Nlc3NhcnkgZmxhZ3MKKyAgdG8gYnVpbGQgYWdhaW5zdCB0aGUgbGlicmFyeS4gIEZvciBleGFtcGxlLCBpZiBwa2djb25maWcgb3IgcGtnY29uZiBwYWNrYWdlIGlzCisgIGluc3RhbGxlZCBhbmQgUEtHX0NPTkZJR19QQVRIIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHkgKG9yIGBgPExJQlBBVEg+L3BrZ2NvbmZpZ2BgIGlzIGEKKyAgZGVmYXVsdCBwYXRoKSwgYGBwa2djb25maWcgLS1saWJzIC0tY2xmbGFncyBsaWJuZG4tY3BwLWRldmBgIHdpbGwgcmV0dXJuIGFsbCBuZWNlc3NhcnkKKyAgY29tcGlsZSBhbmQgbGluayBmbGFncyBmb3IgdGhlIGxpYnJhcnkuCisqIGBgPEJJTlBBVEg+L3RsdmR1bXBgYDogYSBzaW1wbGUgdG9vbCB0byBkdW1wIGNvbnRlbnRzIG9mIFRMVi1mb3JtYXR0ZWQgZGF0YQorKiBgYDxCSU5QQVRIPi9uZG5jYXRjaHVua3MzYGA6IGEgc2ltcGxpZmllZCBlcXVpdmFsZW50IHRvIG5kbmNhdGNodW5rczIgaW4gTkROeCBwYWNrYWdlCisqIGBgPEJJTlBBVEg+L25kbnB1dGNodW5rczNgYDogYSBzaW1wbGlmaWVkIGVxdWl2YWxlbnQgdG8gbmRucHV0Y2h1bmtzMiBpbiBORE54IHBhY2thZ2UKKworSWYgY29uZmlndXJlZCB3aXRoIHRlc3RzOiBgYC4vd2FmIGNvbmZpZ3VyZSAtLXdpdGgtdGVzdHNgYCksIHRoZSBhYm92ZSBjb21tYW5kcyB3aWxsCithbHNvIHByb2R1Y2U6CisKKyogYGBidWlsZC90ZXN0cy91bml0LXRlc3RzYGA6IEEgdG9vbCB0byBydW4gdW5pdCB0ZXN0cyBmb3IgdGhlIGxpYnJhcnkKKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCitUbyBtYWtlIGRvY3VtZW50YXRpb24sIGVudGVyOgorCisgICAgLi93YWYgZG94eWdlbgorCitUaGlzIHdpbGwgcHJvZHVjZSBkb3h5Z2VuIEFQSSBjb2RlIGRvY3VtZW50YXRpb24gaW46CisKKyogYnVpbGQvZG9jL2h0bWwKKworU3VwcG9ydGVkIHBsYXRmb3JtcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisodG8gYmUgY29uZmlybWVkKQorCitORE4tQ1BQIGlzIHRlc3RlZCBvbiB0aGUgZm9sbG93aW5nIHBsYXRmb3JtczoKK1VidW50dSAxMi4wNCAoNjQgYml0IGFuZCAzMiBiaXQpIChnY2MgNC42LjMpCitVYnVudHUgMTMuMDQgKDY0IGJpdCkgKGdjYyA0LjcuMykKK01hYyBPUyBYIDEwLjguNCAoY2xhbmcgNC4yKQorTWFjIE9TIFggMTAuOC40IChnY2MgNC4yKQorCitEZXZlbG9wbWVudCBQcmVyZXF1aXNpdGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIHN0ZXBzIGFyZSBvbmx5IG5lZWRlZCB0byBkbyBkZXZlbG9wbWVudCBvZiBORE4tQ1BQIGNvZGUgYW5kIHVwZGF0ZSB0aGUgYnVpbGQgc3lzdGVtLgorRmlyc3QgZm9sbG93IHRoZSBQcmVyZXF1aXNpdGVzIGFib3ZlIGZvciB5b3VyIHBsYXRmb3Jtcy4KKworKiBNYWMgT1MgWCAxMC43LjMsIE1hYyBPUyBYIDEwLjguNCwgTWFjIE9TIFggMTAuOQorCisgICAgSW5zdGFsbCBNYWNQb3J0cyBmcm9tIGh0dHA6Ly93d3cubWFjcG9ydHMub3JnL2luc3RhbGwucGhwCisgICAgSW4gYSB0ZXJtaW5hbCwgZW50ZXI6CisKKyAgICAgICAgc3VkbyBwb3J0IGluc3RhbGwgZG94eWdlbgorCisqIFVidW50dSAxMi4wNCAoNjQgYml0IGFuZCAzMiBiaXQpLCBVYnVudHUgMTMuMDQgKDY0IGJpdCkKKworICAgIEluIGEgdGVybWluYWwsIGVudGVyOgorCisgICAgICAgIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGRveHlnZW4KKworRGV2ZWxvcG1lbnQKKy0tLS0tLS0tLS0tCisKK0ZvbGxvdyBEZXZlbG9wbWVudCBQcmVyZXF1aXNpdGVzIGFib3ZlIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNkMmE5Yi4uMDAwMDAwMAotLS0gYS9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi1pbmNsdWRlIGFtaW5jbHVkZS5hbQotCi0jIyBQbGFjZSBnZW5lcmF0ZWQgb2JqZWN0IGZpbGVzICgubykgaW50byB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlaXIgc291cmNlCi0jIyBmaWxlcywgaW4gb3JkZXIgdG8gYXZvaWQgY29sbGlzaW9ucyB3aGVuIG5vbi1yZWN1cnNpdmUgbWFrZSBpcyB1c2VkLgotQVVUT01BS0VfT1BUSU9OUyA9IHN1YmRpci1vYmplY3RzCi0KLSMjIEFkZGl0aW9uYWwgZmxhZ3MgdG8gcGFzcyB0byBhY2xvY2FsIHdoZW4gaXQgaXMgaW52b2tlZCBhdXRvbWF0aWNhbGx5IGF0Ci0jIyBtYWtlIHRpbWUuIFRoZSAke0FDTE9DQUxfRkxBR1N9IHZhcmlhYmxlIGlzIHBpY2tlZCB1cCBmcm9tIHRoZSBlbnZpcm9ubWVudAotIyMgdG8gcHJvdmlkZSBhIHdheSBmb3IgdGhlIHVzZXIgdG8gc3VwcGx5IGFkZGl0aW9uYWwgYXJndW1lbnRzLgotQUNMT0NBTF9BTUZMQUdTID0gJHtBQ0xPQ0FMX0ZMQUdTfSAtSSBtNAotCi1saWJfTFRMSUJSQVJJRVMgPSBsaWJuZG4tY3BwLWRldi5sYQotCi0jICJtYWtlIGluc3RhbGwiIHdpbGwgYWxzbyBpbnN0YWxsIHRoZSBpbmNsdWRlIGhlYWRlcnMuCi1TVUJESVJTID0gaW5jbHVkZSAuIHRvb2xzIGV4YW1wbGVzCi0KLWlmIENPTVBJTEVfVEVTVFMKLSAgU1VCRElSUyArPSB0ZXN0cwotaWYgSEFWRV9CT09TVF9VTklUX1RFU1RfRlJBTUVXT1JLCi0gIFNVQkRJUlMgKz0gdGVzdHNfYm9vc3QKLWVuZGlmCi1lbmRpZgotCi0jIEp1c3QgdGhlIEMgY29kZS4KLSMjIFRvIHJlZ2VuZXJhdGU6Ci0jIyBmb3IgaSBpbiBgZmluZCBzcmMvYyAtbmFtZSAnKi5jJyAtb3IgLW5hbWUgJyouaCdgOyBkbyBlY2hvICIgICRpIFxcIjsgZG9uZQotIyMKLSMjIE5vdGUgdGhhdCBwdWJsaWMgaGVhZGVyIGZpbGVzIGRvIG5vdCBuZWVkIHRvIGJlIGluY2x1ZGVkIGhlcmUgKGhhbmRsZWQgYnkgaW5jbHVkZS9NYWtlZmlsZS5hbSkKLWxpYm5kbl9jX2xhX1NPVVJDRVMgPSBcCi0gIHNyYy9jL2RhdGEuaCBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZGF0YS5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kYXRhLmggXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRlY29kZXIuYyBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZGVjb2Rlci5oIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbGVtZW50LXJlYWRlci5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbGVtZW50LXJlYWRlci5oIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbmNvZGVyLmMgXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuaCBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZm9yd2FyZGluZy1lbnRyeS5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1mb3J3YXJkaW5nLWVudHJ5LmggXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWludGVyZXN0LmMgXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWludGVyZXN0LmggXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWtleS5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1rZXkuaCBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtbmFtZS5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1uYW1lLmggXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLXB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuYyBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaCBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwuaCBcCi0gIHNyYy9jL2Vycm9ycy5jIFwKLSAgc3JjL2MvZXJyb3JzLmggXAotICBzcmMvYy9mb3J3YXJkaW5nLWVudHJ5LmggXAotICBzcmMvYy9mb3J3YXJkaW5nLWZsYWdzLmMgXAotICBzcmMvYy9pbnRlcmVzdC5jIFwKLSAgc3JjL2MvaW50ZXJlc3QuaCBcCi0gIHNyYy9jL2tleS1sb2NhdG9yLmggXAotICBzcmMvYy9uYW1lLmMgXAotICBzcmMvYy9uYW1lLmggXAotICBzcmMvYy9wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCBcCi0gIHNyYy9jL3RyYW5zcG9ydC9zb2NrZXQtdHJhbnNwb3J0LmMgXAotICBzcmMvYy90cmFuc3BvcnQvc29ja2V0LXRyYW5zcG9ydC5oIFwKLSAgc3JjL2MvdHJhbnNwb3J0L3RjcC10cmFuc3BvcnQuaCBcCi0gIHNyYy9jL3RyYW5zcG9ydC91ZHAtdHJhbnNwb3J0LmggXAotICBzcmMvYy91dGlsL2Jsb2IuaCBcCi0gIHNyYy9jL3V0aWwvY3J5cHRvLmMgXAotICBzcmMvYy91dGlsL2R5bmFtaWMtdWludDgtYXJyYXkuYyBcCi0gIHNyYy9jL3V0aWwvZHluYW1pYy11aW50OC1hcnJheS5oIFwKLSAgc3JjL2MvdXRpbC9uZG5fbWVtb3J5LmMgXAotICBzcmMvYy91dGlsL25kbl9tZW1vcnkuaCBcCi0gIHNyYy9jL3V0aWwvbmRuX3JlYWxsb2MuYyBcCi0gIHNyYy9jL3V0aWwvbmRuX3JlYWxsb2MuaCBcCi0gIHNyYy9jL3V0aWwvdGltZS5jIFwKLSAgc3JjL2MvdXRpbC90aW1lLmgKLQotbGlibmRuX2NfbGFfTElCQUREICA9IEBPUEVOU1NMX0xJQlNACi1saWJuZG5fY19sYV9MREZMQUdTID0gQE9QRU5TU0xfTERGTEFHU0AKLWxpYm5kbl9jX2xhX0NGTEFHUyAgPSBAT1BFTlNTTF9JTkNMVURFU0AKLQotIyBDKysgY29kZSBhbmQgYWxzbyB0aGUgQyBjb2RlLgotIyMgVG8gcmVnZW5lcmF0ZToKLSMjIGZvciBpIGluIGBmaW5kIHNyYyAtbmFtZSAnKi5jcHAnIC1vciAtbmFtZSAnKi5ocHAnIC1vciAtbmFtZSAnKi5oJyAtYW5kIC1ub3QgLXBhdGggJ3NyYy9jLyonYDsgZG8gZWNobyAiICAkaSBcXCI7IGRvbmUKLWxpYm5kbl9jcHBfZGV2X2xhX1NPVVJDRVMgPSAkKGxpYm5kbl9jX2xhX1NPVVJDRVMpIFwKLSAgc3JjL2NvbW1vbi5jcHAgXAotICBzcmMvZGF0YS5jcHAgXAotICBzcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmhwcCBcCi0gIHNyYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuaHBwIFwKLSAgc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaHBwIFwKLSAgc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtd2lyZS1mb3JtYXQuY3BwIFwKLSAgc3JjL2VuY29kaW5nL2Jsb2NrLmNwcCBcCi0gIHNyYy9lbmNvZGluZy9jcnlwdG9wcC9hc25fZXh0LmNwcCBcCi0gIHNyYy9lbmNvZGluZy9jcnlwdG9wcC9hc25fZXh0LmhwcCBcCi0gIHNyYy9lbmNvZGluZy9lbGVtZW50LWxpc3RlbmVyLmNwcCBcCi0gIHNyYy9lbmNvZGluZy9vaWQuY3BwIFwKLSAgc3JjL2VuY29kaW5nL3dpcmUtZm9ybWF0LmNwcCBcCi0gIHNyYy9leGNsdWRlLmNwcCBcCi0gIHNyYy9mYWNlLmNwcCBcCi0gIHNyYy9pbnRlcmVzdC5jcHAgXAotICBzcmMvbmFtZS5jcHAgXAotICBzcmMvbm9kZS5jcHAgXAotICBzcmMvc2VjdXJpdHkvY2VydGlmaWNhdGUtZXh0ZW5zaW9uLmNwcCBcCi0gIHNyYy9zZWN1cml0eS9jZXJ0aWZpY2F0ZS1zdWJqZWN0LWRlc2NyaXB0aW9uLmNwcCBcCi0gIHNyYy9zZWN1cml0eS9jZXJ0aWZpY2F0ZS5jcHAgXAotICBzcmMvc2VjdXJpdHkvaWRlbnRpdHktY2VydGlmaWNhdGUuY3BwIFwKLSAgc3JjL3NlY3VyaXR5L3B1YmxpYy1rZXkuY3BwIFwKLSAgc3JjL3NlY3VyaXR5L3NlYy1wdWJsaWMtaW5mby1zcWxpdGUzLmNwcCBcCi0gIHNyYy9zZWN1cml0eS9zZWMtdHBtLWZpbGUuY3BwIFwKLSAgc3JjL3NlY3VyaXR5L3NlYy1wdWJsaWMtaW5mby1tZW1vcnkuY3BwIFwKLSAgc3JjL3NlY3VyaXR5L3NlYy10cG0tbWVtb3J5LmNwcCBcCi0gIHNyYy9zZWN1cml0eS92ZXJpZmllci5jcHAgXAotICBzcmMvc2VjdXJpdHkvc2VjLXBvbGljeS1uby12ZXJpZnkuY3BwIFwKLSAgc3JjL3NlY3VyaXR5L3NlYy1wb2xpY3ktc2VsZi12ZXJpZnkuY3BwIFwKLSAgc3JjL3RyYW5zcG9ydC90Y3AtdHJhbnNwb3J0LmNwcCBcCi0gIHNyYy90cmFuc3BvcnQvdW5peC10cmFuc3BvcnQuY3BwIFwKLSAgc3JjL3V0aWwvYmxvYi1zdHJlYW0uaHBwIFwKLSAgc3JjL3V0aWwvYmxvYi5jcHAgXAotICBzcmMvdXRpbC9jaGFuZ2VkLWV2ZW50LmNwcCBcCi0gIHNyYy91dGlsL2NoYW5nZWQtZXZlbnQuaHBwIFwKLSAgc3JjL3V0aWwvZHluYW1pYy11aW50OC12ZWN0b3IuY3BwIFwKLSAgc3JjL3V0aWwvZHluYW1pYy11aW50OC12ZWN0b3IuaHBwIFwKLSAgc3JjL3V0aWwvbG9nZ2luZy5jcHAgXAotICBzcmMvdXRpbC9sb2dnaW5nLmhwcCBcCi0gIHNyYy91dGlsL25kbmQtaWQtZmV0Y2hlci5ocHAgXAotICBzcmMvdXRpbC9zdHJpbmctaGVscGVyLmhwcCBcCi0gIHNyYy91dGlsL3RpbWUuaHBwCi0KLWlmIEhBVkVfT1NYX1NFQ1VSSVRZCi0gIGxpYm5kbl9jcHBfZGV2X2xhX1NPVVJDRVMgKz0gc3JjL3NlY3VyaXR5L3NlYy10cG0tb3N4LmNwcAotZWxzZQotICBFWFRSQV9ESVNUID0gc3JjL3NlY3VyaXR5L3NlYy10cG0tb3N4LmNwcAotZW5kaWYKLQotbGlibmRuX2NwcF9kZXZfbGFfTElCQUREICA9IEBPUEVOU1NMX0xJQlNAICAgICBAQ1JZUFRPUFBfTElCU0AgICAgIEBPU1hfU0VDVVJJVFlfTElCU0AgIEBCT09TVF9TWVNURU1fTElCQCBAQk9PU1RfRklMRVNZU1RFTV9MSUJACi1saWJuZG5fY3BwX2Rldl9sYV9MREZMQUdTID0gQE9QRU5TU0xfTERGTEFHU0AgIEBDUllQVE9QUF9MREZMQUdTQCAgQFNRTElURTNfTERGTEFHU0AgICAgQEJPT1NUX0xERkxBR1NACi1saWJuZG5fY3BwX2Rldl9sYV9DRkxBR1MgID0gQE9QRU5TU0xfSU5DTFVERVNAIEBDUllQVE9QUF9JTkNMVURFU0AgQFNRTElURTNfQ0ZMQUdTQCAgICAgQEJPT1NUX0NQUEZMQUdTQAotCi1kaXN0X25vaW5zdF9TQ1JJUFRTID0gYXV0b2dlbi5zaAotCi1wa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCi1wa2djb25maWdfREFUQSA9IGxpYm5kbi1jcHAtZGV2LnBjCmRpZmYgLS1naXQgYS9hbWluY2x1ZGUuYW0gYi9hbWluY2x1ZGUuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZjY1MTUuLjAwMDAwMDAKLS0tIGEvYW1pbmNsdWRlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X3Byb2dfZG94eWdlbi5odG1sCi0KLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgRm9ybWF0LWluZGVwZW5kZW50IERveHlnZW4gcnVsZXMuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLQotaWYgRFhfQ09ORF9kb2MKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgUnVsZXMgc3BlY2lmaWMgZm9yIEhUTUwgb3V0cHV0LiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX2h0bWwKLQotRFhfQ0xFQU5fSFRNTCA9IEBEWF9ET0NESVJAL2h0bWwKLQotZW5kaWYgRFhfQ09ORF9odG1sCi0KLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgUnVsZXMgc3BlY2lmaWMgZm9yIENITSBvdXRwdXQuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLQotaWYgRFhfQ09ORF9jaG0KLQotRFhfQ0xFQU5fQ0hNID0gQERYX0RPQ0RJUkAvY2htCi0KLWlmIERYX0NPTkRfY2hpCi0KLURYX0NMRUFOX0NISSA9IEBEWF9ET0NESVJAL0BQQUNLQUdFQC5jaGkKLQotZW5kaWYgRFhfQ09ORF9jaGkKLQotZW5kaWYgRFhfQ09ORF9jaG0KLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSdWxlcyBzcGVjaWZpYyBmb3IgTUFOIG91dHB1dC4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX21hbgotCi1EWF9DTEVBTl9NQU4gPSBARFhfRE9DRElSQC9tYW4KLQotZW5kaWYgRFhfQ09ORF9tYW4KLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSdWxlcyBzcGVjaWZpYyBmb3IgUlRGIG91dHB1dC4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX3J0ZgotCi1EWF9DTEVBTl9SVEYgPSBARFhfRE9DRElSQC9ydGYKLQotZW5kaWYgRFhfQ09ORF9ydGYKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSdWxlcyBzcGVjaWZpYyBmb3IgWE1MIG91dHB1dC4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX3htbAotCi1EWF9DTEVBTl9YTUwgPSBARFhfRE9DRElSQC94bWwKLQotZW5kaWYgRFhfQ09ORF94bWwKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIFJ1bGVzIHNwZWNpZmljIGZvciBQUyBvdXRwdXQuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX3BzCi0KLURYX0NMRUFOX1BTID0gQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnBzCi0KLURYX1BTX0dPQUwgPSBkb3h5Z2VuLXBzCi0KLWRveHlnZW4tcHM6IEBEWF9ET0NESVJAL0BQQUNLQUdFQC5wcwotCi1ARFhfRE9DRElSQC9AUEFDS0FHRUAucHM6IEBEWF9ET0NESVJAL0BQQUNLQUdFQC50YWcKLQljZCBARFhfRE9DRElSQC9sYXRleDsgXAotCXJtIC1mICouYXV4ICoudG9jICouaWR4ICouaW5kICouaWxnICoubG9nICoub3V0OyBcCi0JJChEWF9MQVRFWCkgcmVmbWFuLnRleDsgXAotCSQoTUFLRUlOREVYX1BBVEgpIHJlZm1hbi5pZHg7IFwKLQkkKERYX0xBVEVYKSByZWZtYW4udGV4OyBcCi0JY291bnRkb3duPTU7IFwKLQl3aGlsZSAkKERYX0VHUkVQKSAnUmVydW4gKExhVGVYfHRvIGdldCBjcm9zcy1yZWZlcmVuY2VzIHJpZ2h0KScgXAotCSAgICAgICAgICAgICAgICAgIHJlZm1hbi5sb2cgPiAvZGV2L251bGwgMj4mMSBcCi0JICAgJiYgdGVzdCAkJGNvdW50ZG93biAtZ3QgMDsgZG8gXAotCSAgICAkKERYX0xBVEVYKSByZWZtYW4udGV4OyBcCi0JICAgIGNvdW50ZG93bj1gZXhwciAkJGNvdW50ZG93biAtIDFgOyBcCi0JZG9uZTsgXAotCSQoRFhfRFZJUFMpIC1vIC4uL0BQQUNLQUdFQC5wcyByZWZtYW4uZHZpCi0KLWVuZGlmIERYX0NPTkRfcHMKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSdWxlcyBzcGVjaWZpYyBmb3IgUERGIG91dHB1dC4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX3BkZgotCi1EWF9DTEVBTl9QREYgPSBARFhfRE9DRElSQC9AUEFDS0FHRUAucGRmCi0KLURYX1BERl9HT0FMID0gZG94eWdlbi1wZGYKLQotZG94eWdlbi1wZGY6IEBEWF9ET0NESVJAL0BQQUNLQUdFQC5wZGYKLQotQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnBkZjogQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnRhZwotCWNkIEBEWF9ET0NESVJAL2xhdGV4OyBcCi0Jcm0gLWYgKi5hdXggKi50b2MgKi5pZHggKi5pbmQgKi5pbGcgKi5sb2cgKi5vdXQ7IFwKLQkkKERYX1BERkxBVEVYKSByZWZtYW4udGV4OyBcCi0JJChEWF9NQUtFSU5ERVgpIHJlZm1hbi5pZHg7IFwKLQkkKERYX1BERkxBVEVYKSByZWZtYW4udGV4OyBcCi0JY291bnRkb3duPTU7IFwKLQl3aGlsZSAkKERYX0VHUkVQKSAnUmVydW4gKExhVGVYfHRvIGdldCBjcm9zcy1yZWZlcmVuY2VzIHJpZ2h0KScgXAotCSAgICAgICAgICAgICAgICAgIHJlZm1hbi5sb2cgPiAvZGV2L251bGwgMj4mMSBcCi0JICAgJiYgdGVzdCAkJGNvdW50ZG93biAtZ3QgMDsgZG8gXAotCSAgICAkKERYX1BERkxBVEVYKSByZWZtYW4udGV4OyBcCi0JICAgIGNvdW50ZG93bj1gZXhwciAkJGNvdW50ZG93biAtIDFgOyBcCi0JZG9uZTsgXAotCW12IHJlZm1hbi5wZGYgLi4vQFBBQ0tBR0VALnBkZgotCi1lbmRpZiBEWF9DT05EX3BkZgotCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSdWxlcyBzcGVjaWZpYyBmb3IgTGFUZVggKHNoYXJlZCBmb3IgUFMgYW5kIFBERikuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0KLWlmIERYX0NPTkRfbGF0ZXgKLQotRFhfQ0xFQU5fTEFURVggPSBARFhfRE9DRElSQC9sYXRleAotCi1lbmRpZiBEWF9DT05EX2xhdGV4Ci0KLS5QSE9OWTogZG94eWdlbi1ydW4gZG94eWdlbi1kb2MgJChEWF9QU19HT0FMKSAkKERYX1BERl9HT0FMKQotCi0uSU5URVJNRURJQVRFOiBkb3h5Z2VuLXJ1biAkKERYX1BTX0dPQUwpICQoRFhfUERGX0dPQUwpCi0KLWRveHlnZW4tcnVuOiBARFhfRE9DRElSQC9AUEFDS0FHRUAudGFnCi0KLWRveHlnZW4tZG9jOiBkb3h5Z2VuLXJ1biAkKERYX1BTX0dPQUwpICQoRFhfUERGX0dPQUwpCi0KLUBEWF9ET0NESVJAL0BQQUNLQUdFQC50YWc6ICQoRFhfQ09ORklHKSAkKHBrZ2luY2x1ZGVfSEVBREVSUykKLQlybSAtcmYgQERYX0RPQ0RJUkAKLQkkKERYX0VOVikgJChEWF9ET1hZR0VOKSAkKHNyY2RpcikvJChEWF9DT05GSUcpCi0KLURYX0NMRUFORklMRVMgPSBcCi0gICAgQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnRhZyBcCi0gICAgLXIgXAotICAgICQoRFhfQ0xFQU5fSFRNTCkgXAotICAgICQoRFhfQ0xFQU5fQ0hNKSBcCi0gICAgJChEWF9DTEVBTl9DSEkpIFwKLSAgICAkKERYX0NMRUFOX01BTikgXAotICAgICQoRFhfQ0xFQU5fUlRGKSBcCi0gICAgJChEWF9DTEVBTl9YTUwpIFwKLSAgICAkKERYX0NMRUFOX1BTKSBcCi0gICAgJChEWF9DTEVBTl9QREYpIFwKLSAgICAkKERYX0NMRUFOX0xBVEVYKQotCi1lbmRpZiBEWF9DT05EX2RvYwpkaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDJlOTk1NGIuLjAwMDAwMDAKLS0tIGEvYXV0b2dlbi5zaAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIyEvYmluL3NoIC1lCi0KLXRlc3QgLW4gIiRzcmNkaXIiIHx8IHNyY2Rpcj1gZGlybmFtZSAiJDAiYAotdGVzdCAtbiAiJHNyY2RpciIgfHwgc3JjZGlyPS4KLWF1dG9yZWNvbmYgLS1mb3JjZSAtLWluc3RhbGwgLS12ZXJib3NlICIkc3JjZGlyIgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTM4MDM5Li4wMDAwMDAwCi0tLSBhL2NvbmZpZ3VyZS5hYworKysgL2Rldi9udWxsCkBAIC0xLDE3NiArMCwwIEBACi0jIFRvIGJ1aWxkIHVzaW5nIGF1dG90b29scywgc2VlIHRoZSBEZXZlbG9wbWVudCBzZWN0aW9uIG9mIHRoZSBmaWxlIElOU1RBTEwuCi0KLUFDX1BSRVJFUShbMi41OV0pCi1BQ19JTklUKFtuZG4tY3BwLWRldl0sIFswLjIuMV0sIFtuZG4tbGliQGxpc3RzLmNzLnVjbGEuZWR1XSwgW25kbi1jcHAtZGV2XSwgW2h0dHBzOi8vZ2l0aHViLmNvbS9uYW1lZC1kYXRhL25kbi1jcHBdKQotQU1fSU5JVF9BVVRPTUFLRShbMS4xMCAtV2FsbCBuby1kZWZpbmUgZm9yZWlnbl0pCi0KLUFDX0NPTkZJR19NQUNST19ESVIoW200XSkKLUFDX0NPTkZJR19TUkNESVIoW2NvbmZpZ3VyZS5hY10pCi0jIENyZWF0ZSBjb25maWcuaCB3aXRob3V0IHByZWZpeGVzLiAgUHV0IGl0IGluIHRoZSBpbmNsdWRlIGRpcmVjdG9yeSBzbyBDRkxBR1Mgd2lsbCBoYXZlIC1JLi9pbmNsdWRlIC4KLUFDX0NPTkZJR19IRUFERVJTKGluY2x1ZGUvY29uZmlnLmgpCi0jIEFkZCBwcmVmaXhlcyBhbmQgb3V0cHV0IHRvIGEgdW5pcXVlIGZpbGUgbmFtZSB3aGljaCB3aWxsIGdvIGludG8gdGhlIG5kbi1jcHAgaW5jbHVkZSBpbnN0YWxsIGRpcmVjdG9yeS4KLUFYX1BSRUZJWF9DT05GSUdfSChpbmNsdWRlL25kbi1jcHAtZGV2L25kbi1jcHAtY29uZmlnLmgsIG5kbi1jcHApCi1BTV9NQUlOVEFJTkVSX01PREUKLUFNX1BST0dfQVIKLUFDX1BST0dfTElCVE9PTAotTFRfUFJFUkVRKFsyLjJdKQotTFRfSU5JVCgpCi1BQ19QUk9HX0NYWAotQU1fUFJPR19DQ19DX08KLUFDX1BST0dfT0JKQ1hYCi1BQ19MQU5HKFtDKytdKQotCi0jIFNwZWNpYWwgY2FzZS4KLWNhc2UgIiRob3N0IiBpbgotICAqLWRhcndpbiogfCAqLW1hY29zMTAqKQotICAgICBpZiB0ZXN0IC1kIC9vcHQvbG9jYWwgOyB0aGVuCi0gICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1JL29wdC9sb2NhbC9pbmNsdWRlIgotICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLUkvb3B0L2xvY2FsL2luY2x1ZGUiCi0gICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS9vcHQvbG9jYWwvaW5jbHVkZSIKLSAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtTC9vcHQvbG9jYWwvbGliIgotICAgICBlbGlmIHRlc3QgLWQgL3N3IDsgdGhlbgotICAgICAgIENGTEFHUz0iJENGTEFHUyAtSS9zdy9pbmNsdWRlIgotICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLUkvc3cvaW5jbHVkZSIKLSAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3N3L2luY2x1ZGUiCi0gICAgICAgTERGTEFHUz0iJExERkxBR1MgLUwvc3cvbGliIgotICAgICBmaQotICA7OwotZXNhYwotCi1BQ19UWVBFX1NJWkVfVAotQUNfVFlQRV9JTlQ4X1QKLUFDX1RZUEVfSU5UMTZfVAotQUNfVFlQRV9JTlQzMl9UCi1BQ19UWVBFX0lOVDY0X1QKLUFDX1RZUEVfVUlOVDhfVAotQUNfVFlQRV9VSU5UMTZfVAotQUNfVFlQRV9VSU5UMzJfVAotQUNfVFlQRV9VSU5UNjRfVAotQUNfQ0hFQ0tfRlVOQ1MoW21lbWNtcF0gW21lbWNweV0gW21lbXNldF0pCi1BQ19DSEVDS19GVU5DUyhbc3RyY2hyXSwgOiwgQUNfTVNHX0VSUk9SKFsqKiogc3RyY2hyIG5vdCBmb3VuZC4gQ2hlY2sgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuXSkpCi1BQ19DSEVDS19GVU5DUyhbc3NjYW5mXSwgOiwgQUNfTVNHX0VSUk9SKFsqKiogc3NjYW5mIG5vdCBmb3VuZC4gQ2hlY2sgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuXSkpCi1BQ19DSEVDS19IRUFERVJTKFt0aW1lLmhdLCA6LCBBQ19NU0dfRVJST1IoWyoqKiB0aW1lLmggbm90IGZvdW5kLiBDaGVjayAnY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy5dKSkKLUFDX0NIRUNLX0hFQURFUlMoW3N5cy90aW1lLmhdLCA6LCBBQ19NU0dfRVJST1IoWyoqKiBzeXMvdGltZS5oIG5vdCBmb3VuZC4gQ2hlY2sgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuXSkpCi1BQ19DSEVDS19GVU5DUyhbZ2V0dGltZW9mZGF5XSwgOiwgQUNfTVNHX0VSUk9SKFsqKiogZ2V0dGltZW9mZGF5IG5vdCBmb3VuZC4gcHJvY2Vzc0V2ZW50cyByZXF1aXJlcyBpdC4gQ2hlY2sgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuXSkpCi1BQ19DX0lOTElORQotCi0jIFVubGVzcyAtLXdpdGgtYysrMTEgc3BlY2lmaWVkLCBkbyBub3QgZW5hYmxlIEMrKzExIGZlYXR1cmVzCi1BWF9DWFhfQ09NUElMRV9TVERDWFhfMTEoLCBvcHRpb25hbCkKLQotQUNfQVJHX1dJVEgoW3N5c3RlbS1ib29zdF0sCi0gIEFTX0hFTFBfU1RSSU5HKAotICAgICAgWy0td2l0aG91dC1zeXN0ZW0tYm9vc3RdLAotICAgICAgW2RvIG5vdCBhdHRlbXB0IHRvIHVzZSBzeXN0ZW0taW5zdGFsbGVkIGJvb3N0IGxpYnJhcmllcyBhbmQgdXNlIHRoZSBidW5kbGVkIHZlcnNpb24gKG5kbmJvb3N0KSB3aGVuIG5lY2Vzc2FyeS5dCi0gICksCi0gIFsKLSAgd2FudF9zeXN0ZW1fYm9vc3Q9InllcyIKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgotICAgICAgd2FudF9zeXN0ZW1fYm9vc3Q9Im5vIgotICBmaQotICBdLAotICBbd2FudF9zeXN0ZW1fYm9vc3Q9InllcyJdCi0pCi0KLUFYX0JPT1NUX0JBU0UoWzEuNDIuMF0sCi0gIFsKLSAgICBpZiB0ZXN0ICIkd2FudF9zeXN0ZW1fYm9vc3QiID09ICJ5ZXMiIDsgdGhlbgotICAgICAgQUNfREVGSU5FKFVTRV9TWVNURU1fQk9PU1QsWzFdLFt1c2Ugc3lzdGVtLWluc3RhbGxlZCBib29zdCBsaWJyYXJpZXNdKQotICAgICAgQU1fQ09ORElUSU9OQUwoVVNFX1NZU1RFTV9CT09TVCwgdHJ1ZSkKLSAgICBlbHNlCi0gICAgICBBTV9DT05ESVRJT05BTChVU0VfU1lTVEVNX0JPT1NULCBmYWxzZSkKLSAgICBmaQotICBdLAotICBbQU1fQ09ORElUSU9OQUwoVVNFX1NZU1RFTV9CT09TVCwgZmFsc2UpXQotKQotQVhfQk9PU1RfQVNJTwotCi1BQ19BUkdfV0lUSChbdGVzdHNdLAotICBBU19IRUxQX1NUUklORygKLSAgICAgIFstLXdpdGgtdGVzdHNdLAotICAgICAgW0VuYWJsZSBjb21waWxhdGlvbiBvZiBsaWJyYXJ5IHRlc3RzIChkaXNhYmxlZCBieSBkZWZhdWx0KS5dCi0gICksCi0gIFsKLSAgICB3YW50X3Rlc3RzPSJ5ZXMiCi0gICAgQU1fQ09ORElUSU9OQUwoQ09NUElMRV9URVNUUywgdHJ1ZSkKLSAgXSwKLSAgWwotICAgIHdhbnRfdGVzdHM9Im5vIgotICAgIEFNX0NPTkRJVElPTkFMKENPTVBJTEVfVEVTVFMsIGZhbHNlKQotICBdCi0pCi0KLSMgQHRvZG86IFRoZXNlIGNoZWNrcyBhcmUgbm90IHJlYWxseSBvcHRpb25hbAotQVhfQk9PU1RfU1lTVEVNCi1BWF9CT09TVF9GSUxFU1lTVEVNCi1BWF9CT09TVF9VTklUX1RFU1RfRlJBTUVXT1JLCi1BTV9DT05ESVRJT05BTChIQVZFX0JPT1NUX1VOSVRfVEVTVF9GUkFNRVdPUkssIFt0ZXN0ICJ4JGF4X2N2X2Jvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsiID0gInh5ZXMiXSkKLQotQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ210aW1lIHN1cHBvcnRdKQotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgKLSAgICBbWyNpbmNsdWRlIDx0aW1lLmg+XV0KLSAgICBbWyNpbmNsdWRlIDxzeXMvdGltZS5oPl1dCi0gICAgW1tzdHJ1Y3QgdGltZXZhbCB0djtdXQotICAgIFtbaW50IHJlc3VsdDEgPSBnZXR0aW1lb2ZkYXkoJnR2LCAwKTtdXQotICAgIFtbdGltZV90IHRpbWUxID0gdGltZSgwKTtdXQotICAgIFtbc3RydWN0IHRtKiB0bTEgPSBnbXRpbWUoJnRpbWUxKTtdXQotICAgIFtbdGltZV90IHRpbWUyID0gdGltZWdtKHRtMSk7XV0pCi1dLCBbCi0gICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfR01USU1FX1NVUFBPUlRdLCAxLCBbMSBpZiBoYXZlIHN5cy90aW1lIGdtdGltZSBzdXBwb3J0IGluY2x1ZGluZyB0aW1lZ20uXSkKLV0sIFsKLSAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgQUNfREVGSU5FX1VOUVVPVEVEKFtIQVZFX0dNVElNRV9TVVBQT1JUXSwgMCwgWzEgaWYgaGF2ZSBzeXMvdGltZSBnbXRpbWUgc3VwcG9ydCBpbmNsdWRpbmcgdGltZWdtLl0pCi1dKQotCi0jIFJlcXVpcmUgb3BlbnNzbCAobGliY3J5cHRvKS4KLUFYX0NIRUNLX09QRU5TU0woW10sIFtBQ19NU0dfRkFJTFVSRShbY2FuJ3QgZmluZCBvcGVuc3NsIGNyeXB0byBsaWJdKV0pCi0KLUFYX0xJQl9DUllQVE9QUChbXSwgW0FDX01TR19GQUlMVVJFKFtjYW4ndCBmaW5kIGNyeXB0bysrIGxpYnJhcnldKV0pCi0KLSMgQ29uZGl0aW9uYWxseSB1c2UgbGlic3FsaXRlMy4gIEFYX0xJQl9TUUxJVEUzIGRlZmluZXMgSEFWRV9TUUxJVEUzIGluIGNvbmZkZWZzLmggLgotQVhfTElCX1NRTElURTMoKQotaWYgZ3JlcCAtcSAiI2RlZmluZSBIQVZFX1NRTElURTMiIGNvbmZkZWZzLmggOyB0aGVuCi0gIEFDX0NIRUNLX0xJQihbc3FsaXRlM10sIFtzcWxpdGUzX29wZW5dLCBbIF0sICMgc3BhY2UgbmVjZXNzYXIgdG8gcHJldmVudCB1cGRhdGluZyBMSUJTCi0gICAgICAgICAgICAgICBbQUNfTVNHX0ZBSUxVUkUoW2hhdmUgc3FsaXRlMiBoZWFkZXJzIGJ1dCBubyBsaWJzcWxpdGUzXSldKQotZWxzZQotICBBQ19NU0dfRVJST1IoTWlzc2luZyByZXF1aXJlZCBsaWJzcWxpdGUzIGxpYnJhcnkpCi1maQotCi0KLSMgQ29uZGl0aW9uYWxseSB1c2UgdGhlIE9TWCBTZWN1cml0eSBmcmFtZXdvcmsgLgotQUNfTVNHX0NIRUNLSU5HKFtmb3IgT1NYIFNlY3VyaXR5IGZyYW1ld29ya10pCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKAotICAgIFtbI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+XV0KLSAgICBbWyNpbmNsdWRlIDxTZWN1cml0eS9TZWN1cml0eS5oPl1dCi0gICAgW1sjaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPl1dCi0gICAgW1t2b2lkIHRlc3QoKSB7IFNlY0tleWNoYWluUmVmIHg7IH1dXSkKLV0sIFsKLSAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotICAgIEFDX0RFRklORV9VTlFVT1RFRChbSEFWRV9PU1hfU0VDVVJJVFldLCAxLCBbMSBpZiBoYXZlIHRoZSBPU1ggZnJhbWV3b3JrLl0pCi0gICAgQU1fQ09ORElUSU9OQUwoSEFWRV9PU1hfU0VDVVJJVFksIHRydWUpCi0KLSAgICBPU1hfU0VDVVJJVFlfTElCUz0iLWZyYW1ld29yayBTZWN1cml0eSIKLSAgICBBQ19TVUJTVChbT1NYX1NFQ1VSSVRZX0xJQlNdKQotXSwgWwotICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBBTV9DT05ESVRJT05BTChIQVZFX09TWF9TRUNVUklUWSwgZmFsc2UpCi1dKQotCi1EWF9IVE1MX0ZFQVRVUkUoT04pCi1EWF9DSE1fRkVBVFVSRShPRkYpCi1EWF9DSElfRkVBVFVSRShPRkYpCi1EWF9NQU5fRkVBVFVSRShPRkYpCi1EWF9SVEZfRkVBVFVSRShPRkYpCi1EWF9YTUxfRkVBVFVSRShPRkYpCi1EWF9QREZfRkVBVFVSRShPRkYpCi1EWF9QU19GRUFUVVJFKE9GRikKLURYX0lOSVRfRE9YWUdFTihbJFBBQ0tBR0VfTkFNRV0sW0RveHlmaWxlXSkKLQotQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZQotICAgICAgICAgICAgICAgICBpbmNsdWRlL01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIGV4YW1wbGVzL01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIHRvb2xzL01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIHRlc3RzL01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIHRlc3RzX2Jvb3N0L01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIGxpYm5kbi1jcHAtZGV2LnBjXSkKLUFDX09VVFBVVApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvTWFrZWZpbGUuYW0gYi9leGFtcGxlcy9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIxYTg2Ny4uMDAwMDAwMAotLS0gYS9leGFtcGxlcy9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi1MREFERCA9IC4uL2xpYm5kbi1jcHAtZGV2LmxhIEBCT09TVF9TWVNURU1fTElCQAotCi1ub2luc3RfUFJPR1JBTVM9Y29uc3VtZXIgcHJvZHVjZXIKLQotY29uc3VtZXJfU09VUkNFUyA9IGNvbnN1bWVyLmNwcAotcHJvZHVjZXJfU09VUkNFUyA9IHByb2R1Y2VyLmNwcApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvd3NjcmlwdCBiL2V4YW1wbGVzL3dzY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNmODU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2V4YW1wbGVzL3dzY3JpcHQKQEAgLTAsMCArMSwxMiBAQAorIyAtKi0gTW9kZTogcHl0aG9uOyBweS1pbmRlbnQtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGNvZGluZzogdXRmLTg7IC0qLQorCit0b3AgPSAnLi4nCisKK2RlZiBidWlsZChibGQpOgorICAgIGZvciBhcHAgaW4gYmxkLnBhdGguYW50X2dsb2IoJyouY3BwJyk6CisgICAgICAgIGJsZChmZWF0dXJlcz1bJ2N4eCcsICdjeHhwcm9ncmFtJ10sCisgICAgICAgICAgICB0YXJnZXQgPSAnJXMnICUgKHN0cihhcHAuY2hhbmdlX2V4dCgnJywnLmNwcCcpKSksCisgICAgICAgICAgICBzb3VyY2UgPSBhcHAsCisgICAgICAgICAgICB1c2UgPSAnbmRuLWNwcC1kZXYnLAorICAgICAgICAgICAgaW5zdGFsbF9wcmVmaXggPSBOb25lLAorICAgICAgICAgICAgKSAgICAgICAgCmRpZmYgLS1naXQgYS9pbmNsdWRlL01ha2VmaWxlLmFtIGIvaW5jbHVkZS9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YwOWVhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL01ha2VmaWxlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsMTk3ICswLDAgQEAKLSMgIm1ha2UgaW5zdGFsbCIgd2lsbCBpbnN0YWxsIHRoZXNlIGluIHRoZSBpbnN0YWxsIGluY2x1ZGUgZGlyZWN0b3J5LCBmb3IgZXhhbXBsZQotIyAvdXNyL2xvY2FsL25kbi1jcHAtZGV2L25hbWUuaHBwLgotIyBUaGVzZSBmaWxlcyBhcmUgaW5jbHVkZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHdpdGgsIGZvciBleGFtcGxlCi0jICNpbmNsdWRlIDxuZG4tY3BwLWRldi9uYW1wLmhwcD4KLSMgSW50ZXJuYWwgaW5jbHVkZSBoZWFkZXJzIGFyZSBub3QgcHV0IGluIHRoaXMgcHVibGljIGluc3RhbGwgZGlyZWN0b3J5LgotCi0jIFB1YmxpYyBDIGhlYWRlcnMuCi1uZG5fY3BwX2NfaGVhZGVycyA9IFwKLSAgJCh3aWxkY2FyZCBuZG4tY3BwLWRldi8qLmgpIFwKLSAgJCh3aWxkY2FyZCBuZG4tY3BwLWRldi9jLyouKikgXAotICAkKHdpbGRjYXJkIG5kbi1jcHAtZGV2L2MvZW5jb2RpbmcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuLWNwcC1kZXYvYy91dGlsLyouKikKLQotIyBQdWJsaWMgQysrIGhlYWRlcnMuCi0jIFVzZSBuZG4tY3BwLWRldi8qLmhwcCBpbnN0ZWFkIG9mICouKiB0byBub3Qgb3ZlcndyaXRlICouaCBmcm9tIGFib3ZlLgotbmRuX2NwcF9jcHBfaGVhZGVycyA9IFwKLSAgJCh3aWxkY2FyZCBuZG4tY3BwLWRldi8qLmhwcCkgXAotICAkKHdpbGRjYXJkIG5kbi1jcHAtZGV2L2VuY29kaW5nLyouKikgXAotICAkKHdpbGRjYXJkIG5kbi1jcHAtZGV2L3NlY3VyaXR5LyouKikgXAotICAkKHdpbGRjYXJkIG5kbi1jcHAtZGV2L3RyYW5zcG9ydC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG4tY3BwLWRldi91dGlsLyouKikKLQotbmRuYm9vc3RfaGVhZGVycyA9IFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC91dGlsaXR5LyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3V0aWxpdHkvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3VuaXRzLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3VuaXRzL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC91bm9yZGVyZWQvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9yYW5nZS8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9yYW5nZS9hbGdvcml0aG0vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcmFuZ2UvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3JhbmdlL2RldGFpbC92YzYvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3Qvc21hcnRfcHRyLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvaW50cnVzaXZlLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHlwZW9mLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3R5cGVvZi9kbWMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHlwZW9mL21zdmMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvY29uZmlnLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2NvbmZpZy9ub190cjEvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvY29uZmlnL2FiaS8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdGVzdC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90ZXN0L3V0aWxzLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90ZXN0L291dHB1dC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90ZXN0L2ltcGwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdGVzdC9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbWF0aC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21hdGgvdG9vbHMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbWF0aC9wb2xpY2llcy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9iaW5kLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2l0ZXJhdG9yLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL3ZlY3Rvci8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvYXV4Xy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvbGltaXRzLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9saXN0LyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9saXN0L2F1eF8vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcmVnZXgvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcmVnZXgvY29uZmlnLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3JlZ2V4L3Y0LyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvZmlsZXN5c3RlbS8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9maWxlc3lzdGVtL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9pb3N0cmVhbXMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2LyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvaW50ZWdlci8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9vcHRpb25hbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9udW1lcmljLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9yYW5kb20vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcmFuZG9tL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9zeXN0ZW0vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvY29udGFpbmVyLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uYWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcGVuZGluZy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9pby8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9pby9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvZXhjZXB0aW9uLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZG1jLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9lZGcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL21zdmMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9kbWMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2VkZy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvbXN2Yy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5LyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbXBhcmlzb24vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2RtYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2RtYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21vdmUvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbW92ZS9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvYWxnb3JpdGhtLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHlwZV90cmFpdHMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHVwbGUvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHVwbGUvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9yZXRhZ19kZWZhdWx0X2NjLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9jY19sb29wLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2NvbmNlcHQvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbGFtYmRhLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvKi4qKQotCi1ub2Jhc2VfaW5jbHVkZV9IRUFERVJTID0gJChuZG5fY3BwX2NfaGVhZGVycykgJChuZG5fY3BwX2NwcF9oZWFkZXJzKQotCi1pZiAhIFVTRV9TWVNURU1fQk9PU1QKLSAgbm9iYXNlX2luY2x1ZGVfSEVBREVSUyArPSAkKG5kbmJvb3N0X2hlYWRlcnMpCi1lbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG4tY3BwLWRldi9jL2NvbW1vbi5oIGIvaW5jbHVkZS9uZG4tY3BwLWRldi9jL2NvbW1vbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmVkY2VmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy9jb21tb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9DT01NT05fSAotI2RlZmluZSBORE5fQ09NTU9OX0gKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L25kbi1jcHAtY29uZmlnLmg+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0vLyBUT0RPOiBJcyBzdGRkZWYuaCBwb3J0YWJsZT8KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIEEgdGltZSBpbnRlcnZhbCByZXByZXNlbnRlZCBhcyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4KLSAqLwotdHlwZWRlZiBpbnQ2NF90IG5kbl9NaWxsaXNlY29uZHM7Ci0gICAKLS8qKgotICogVGhlIGNhbGVuZGFyIHRpbWUgcmVwcmVzZW50ZWQgYXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMS8xLzE5NzAuCi0gKi8KLXR5cGVkZWYgaW50NjRfdCBuZG5fTWlsbGlzZWNvbmRzU2luY2UxOTcwOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy9kYXRhLXR5cGVzLmggYi9pbmNsdWRlL25kbi1jcHAtZGV2L2MvZGF0YS10eXBlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Njg3ODZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy9kYXRhLXR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fREFUQV9UWVBFU19ICi0jZGVmaW5lIE5ETl9EQVRBX1RZUEVTX0gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIGVudW0gewotICBuZG5fQ29udGVudFR5cGVfREFUQSA9IDAsCi0gIG5kbl9Db250ZW50VHlwZV9FTkNSID0gMSwKLSAgbmRuX0NvbnRlbnRUeXBlX0dPTkUgPSAyLAotICBuZG5fQ29udGVudFR5cGVfS0VZID0gIDMsCi0gIG5kbl9Db250ZW50VHlwZV9MSU5LID0gNCwKLSAgbmRuX0NvbnRlbnRUeXBlX05BQ0sgPSA1Ci19IG5kbl9Db250ZW50VHlwZTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5oIGIvaW5jbHVkZS9uZG4tY3BwLWRldi9jL2VuY29kaW5nL2VsZW1lbnQtbGlzdGVuZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY4OGE4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0VMRU1FTlRfTElTVEVORVJfSAotI2RlZmluZSBORE5fRUxFTUVOVF9MSVNURU5FUl9ICi0KLSNpbmNsdWRlICIuLi9jb21tb24uaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKiogQW4gbmRuX0VsZW1lbnRMaXN0ZW5lciBzdHJ1Y3QgaG9sZHMgYSBmdW5jdGlvbiBwb2ludGVyIG9uUmVjZWl2ZWRFbGVtZW50LiAgWW91IGNhbiBleHRlbmQgdGhpcyBzdHJ1Y3Qgd2l0aCBkYXRhIHRoYXQKLSAqIHdpbGwgYmUgcGFzc2VkIHRvIG9uUmVjZWl2ZWRFbGVtZW50LgotICovCi1zdHJ1Y3QgbmRuX0VsZW1lbnRMaXN0ZW5lciB7Ci0gIHZvaWQgKCpvblJlY2VpdmVkRWxlbWVudCkoc3RydWN0IG5kbl9FbGVtZW50TGlzdGVuZXIgKnNlbGYsIHVpbnQ4X3QgKmVsZW1lbnQsIHNpemVfdCBlbGVtZW50TGVuZ3RoKTsgLyoqPCBzZWUgbmRuX0VsZW1lbnRMaXN0ZW5lcl9pbml0aWFsaXplICovCi19OwotCi0vKioKLSAqIEluaXRpYWxpemUgYW4gbmRuX0VsZW1lbnRMaXN0ZW5lciBzdHJ1Y3QgdG8gdXNlIHRoZSBvblJlY2VpdmVkRWxlbWVudCBmdW5jdGlvbiBwb2ludGVyLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0VsZW1lbnRMaXN0ZW5lciBzdHJ1Y3QKLSAqIEBwYXJhbSBvblJlY2VpdmVkRWxlbWVudCBwb2ludGVyIHRvIGEgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIHdoZW4gYW4gZW50aXJlIGJpbmFyeSBYTUwgZWxlbWVudCBpcyByZWNlaXZlZC4KLSAqIHNlbGYgaXMgdGhlIHBvaW50ZXIgdG8gdGhpcyBuZG5fRWxlbWVudExpc3RlbmVyIHN0cnVjdC4gIFNlZSBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlcl9vblJlY2VpdmVkRGF0YS4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9FbGVtZW50TGlzdGVuZXJfaW5pdGlhbGl6ZQotICAoc3RydWN0IG5kbl9FbGVtZW50TGlzdGVuZXIgKnNlbGYsIHZvaWQgKCpvblJlY2VpdmVkRWxlbWVudCkoc3RydWN0IG5kbl9FbGVtZW50TGlzdGVuZXIgKnNlbGYsIHVpbnQ4X3QgKmVsZW1lbnQsIHNpemVfdCBlbGVtZW50TGVuZ3RoKSkKLXsKLSAgc2VsZi0+b25SZWNlaXZlZEVsZW1lbnQgPSBvblJlY2VpdmVkRWxlbWVudDsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvZm9yd2FyZGluZy1mbGFncy5oIGIvaW5jbHVkZS9uZG4tY3BwLWRldi9jL2ZvcndhcmRpbmctZmxhZ3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYzYmYwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvZm9yd2FyZGluZy1mbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0ZPUldBUkRJTkdfRkxBR1NfSAotI2RlZmluZSBORE5fRk9SV0FSRElOR19GTEFHU19ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBBbiBuZG5fRm9yd2FyZGluZ0ZsYWdzIG9iamVjdCBob2xkcyB0aGUgZmxhZ3Mgd2hpY2ggc3BlY2lmeSBob3cgdGhlIGZvcndhcmRpbmcgZGFlbW9uIHNob3VsZCBmb3J3YXJkIGFuIGludGVyZXN0IGZvcgotICogYSByZWdpc3RlcmVkIHByZWZpeC4gIFdlIHVzZSBhIHNlcGFyYXRlIEZvcndhcmRpbmdGbGFncyBvYmplY3QgdG8gcmV0YWluIGZ1dHVyZSBjb21wYXRpYmlsaXR5IGlmIHRoZSBkYWVtb24gZm9yd2FyZGluZwotICogYml0cyBhcmUgY2hhbmdlZCwgYW1lbmRlZCBvciBkZXByZWNhdGVkLgotICovCi1zdHJ1Y3QgbmRuX0ZvcndhcmRpbmdGbGFncyB7Ci0gIGludCBhY3RpdmU7IC8qKjwgMSBpZiB0aGUgZmxhZyBpcyBzZXQsIDAgaWYgY2xlYXJlZC4gKi8KLSAgaW50IGNoaWxkSW5oZXJpdDsKLSAgaW50IGFkdmVydGlzZTsKLSAgaW50IGxhc3Q7Ci0gIGludCBjYXB0dXJlOwotICBpbnQgbG9jYWw7Ci0gIGludCB0YXA7Ci0gIGludCBjYXB0dXJlT2s7ICAKLX07Ci0KLS8qKgotICogSW5pdGlhbGl6ZSBhbiBuZG5fRm9yd2FyZGluZ0ZsYWdzIHN0cnVjdCB3aXRoIHRoZSBkZWZhdWx0IHdpdGggImFjdGl2ZSIgYW5kICJjaGlsZEluaGVyaXQiIHNldCBhbmQgYWxsIG90aGVyIGZsYWdzIGNsZWFyZWQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9Gb3J3YXJkaW5nRmxhZ3Mgc3RydWN0LgotICovCi12b2lkIG5kbl9Gb3J3YXJkaW5nRmxhZ3NfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX0ZvcndhcmRpbmdGbGFncyAqc2VsZik7Ci0KLS8qKgotICogR2V0IGFuIGludGVnZXIgd2l0aCB0aGUgYml0cyBzZXQgYWNjb3JkaW5nIHRvIHRoZSBmbGFncyBhcyB1c2VkIGJ5IHRoZSBGb3J3YXJkaW5nRW50cnkgbWVzc2FnZS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX0ZvcndhcmRpbmdGbGFncyBzdHJ1Y3QuCi0gKiBAcmV0dXJuIEFuIGludGVnZXIgd2l0aCB0aGUgYml0cyBzZXQuCi0gKi8KLWludCBuZG5fRm9yd2FyZGluZ0ZsYWdzX2dldEZvcndhcmRpbmdFbnRyeUZsYWdzKHN0cnVjdCBuZG5fRm9yd2FyZGluZ0ZsYWdzICpzZWxmKTsKLQotLyoqCi0gKiBTZXQgdGhlIGZsYWdzIGFjY29yZGluZyB0byB0aGUgYml0cyBpbiBmb3J3YXJkaW5nRW50cnlGbGFncyBhcyB1c2VkIGJ5IHRoZSBGb3J3YXJkaW5nRW50cnkgbWVzc2FnZS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX0ZvcndhcmRpbmdGbGFncyBzdHJ1Y3QuCi0gKiBAcGFyYW0gZmxhZ3MgQW4gaW50ZWdlciB3aXRoIHRoZSBiaXRzIHNldC4KLSAqLwotdm9pZCBuZG5fRm9yd2FyZGluZ0ZsYWdzX3NldEZvcndhcmRpbmdFbnRyeUZsYWdzKHN0cnVjdCBuZG5fRm9yd2FyZGluZ0ZsYWdzICpzZWxmLCBpbnQgZm9yd2FyZGluZ0VudHJ5RmxhZ3MpOwotCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG4tY3BwLWRldi9jL2ludGVyZXN0LXR5cGVzLmggYi9pbmNsdWRlL25kbi1jcHAtZGV2L2MvaW50ZXJlc3QtdHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ2NGUxNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvaW50ZXJlc3QtdHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9JTlRFUkVTVF9UWVBFU19ICi0jZGVmaW5lIE5ETl9JTlRFUkVTVF9UWVBFU19ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiBlbnVtIHsKLSAgbmRuX0V4Y2x1ZGVfQ09NUE9ORU5UID0gMCwKLSAgbmRuX0V4Y2x1ZGVfQU5ZID0gMSAgCi19IG5kbl9FeGNsdWRlVHlwZTsKLQotZW51bSB7Ci0gIG5kbl9JbnRlcmVzdF9DSElMRF9TRUxFQ1RPUl9MRUZUID0gMCwKLSAgbmRuX0ludGVyZXN0X0NISUxEX1NFTEVDVE9SX1JJR0hUID0gMSwKLQotICBuZG5fSW50ZXJlc3RfQU5TV0VSX05PX0NPTlRFTlRfU1RPUkUgPSAwLAotICBuZG5fSW50ZXJlc3RfQU5TV0VSX0NPTlRFTlRfU1RPUkUgPSAxLAotICBuZG5fSW50ZXJlc3RfQU5TV0VSX0dFTkVSQVRFRCA9IDIsCi0gIG5kbl9JbnRlcmVzdF9BTlNXRVJfU1RBTEUgPSA0LCAgICAvLyBTdGFsZSBhbnN3ZXIgT0sKLSAgbmRuX0ludGVyZXN0X01BUktfU1RBTEUgPSAxNiwgICAgICAvLyBNdXN0IGhhdmUgc2NvcGUgMC4gIE1pY2hhZWwgY2FsbHMgdGhpcyBhICJoYWNrIgotCi0gIG5kbl9JbnRlcmVzdF9ERUZBVUxUX0FOU1dFUl9PUklHSU5fS0lORCA9IG5kbl9JbnRlcmVzdF9BTlNXRVJfQ09OVEVOVF9TVE9SRSB8IG5kbl9JbnRlcmVzdF9BTlNXRVJfR0VORVJBVEVECi19OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy9rZXktdHlwZXMuaCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy9rZXktdHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEyYWVlOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L2Mva2V5LXR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fS0VZX1RZUEVTX0gKLSNkZWZpbmUgTkROX0tFWV9UWVBFU19ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiBlbnVtIHsKLSAgbmRuX0tleUxvY2F0b3JUeXBlX0tFWSA9IDEsCi0gIG5kbl9LZXlMb2NhdG9yVHlwZV9DRVJUSUZJQ0FURSA9IDIsCi0gIG5kbl9LZXlMb2NhdG9yVHlwZV9LRVlOQU1FID0gMwotfSBuZG5fS2V5TG9jYXRvclR5cGU7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gIG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfUFVCTElDX0tFWV9ESUdFU1QgPSAxLAotICBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0NFUlRJRklDQVRFX0RJR0VTVCA9IDIsCi0gIG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfSVNTVUVSX0tFWV9ESUdFU1QgPSAzLAotICBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0lTU1VFUl9DRVJUSUZJQ0FURV9ESUdFU1QgPSA0Ci19IG5kbl9LZXlOYW1lVHlwZTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvdXRpbC9jcnlwdG8uaCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy91dGlsL2NyeXB0by5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2Q0N2ViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy91dGlsL2NyeXB0by5oCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0NSWVBUT19ICi0jZGVmaW5lIE5ETl9DUllQVE9fSAotCi0jaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvY29tbW9uLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBDb21wdXRlIHRoZSBzaGEtMjU2IGRpZ2VzdCBvZiBkYXRhLgotICogQHBhcmFtIGRhdGEgUG9pbnRlciB0byB0aGUgaW5wdXQgYnl0ZSBhcnJheS4KLSAqIEBwYXJhbSBkYXRhTGVuZ3RoIFRoZSBsZW5ndGggb2YgZGF0YS4KLSAqIEBwYXJhbSBkaWdlc3QgQSBwb2ludGVyIHRvIGEgYnVmZmVyIG9mIHNpemUgU0hBMjU2X0RJR0VTVF9MRU5HVEggdG8gcmVjZWl2ZSB0aGUgZGF0YS4KLSAqLwotdm9pZCBuZG5fZGlnZXN0U2hhMjU2KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB1aW50OF90ICpkaWdlc3QpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvY29tbW9uLmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvY29tbW9uLmhwcAppbmRleCA1ZWZkM2EwLi45NTc3MmI2IDEwMDY0NAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L2NvbW1vbi5ocHAKKysrIGIvaW5jbHVkZS9uZG4tY3BwLWRldi9jb21tb24uaHBwCkBAIC04LDkgKzgsMTIgQEAKICNpZm5kZWYgTkROX0NPTU1PTl9IUFAKICNkZWZpbmUgTkROX0NPTU1PTl9IUFAKIAorI2luY2x1ZGUgPG5kbi1jcHAtZGV2L25kbi1jcHAtY29uZmlnLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisvLyBUT0RPOiBJcyBzdGRkZWYuaCBwb3J0YWJsZT8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgPHZlY3Rvcj4KLS8vIGNvbW1vbi5oIGluY2x1ZGUgbmRuLWNwcC1jb25maWcuaC4KLSNpbmNsdWRlICJjL2NvbW1vbi5oIgogCiAjaWYgTkROX0NQUF9IQVZFX0NYWDExCiAKQEAgLTE4LDkgKzIxLDYgQEAKICNlcnJvciAiTkROLUNQUC1ERVYgbGlicmFyeSBpcyBjb25maWd1cmVkIGFuZCBjb21waWxlZCBpbiBDKysxMSBtb2RlLCBidXQgdGhlIGN1cnJlbnQgY29tcGlsZXIgaXMgbm90IEMrKzExIGVuYWJsZWQiCiAjZW5kaWYKIAotLy8gRGVwZW5kaW5nIG9uIHdoZXJlIC4vY29uZmlndXJlIGZvdW5kIHNoYXJlZF9wdHIsIGRlZmluZSB0aGUgcHRyX2xpYiBuYW1lc3BhY2UuCi0vLyBXZSBhbHdheXMgdXNlIG5kbjo6cHRyX2xpYi4KLS8vICNpZiBORE5fQ1BQX0hBVkVfU1REX1NIQVJFRF9QVFIKICNpbmNsdWRlIDxtZW1vcnk+CiBuYW1lc3BhY2UgbmRuIHsgbmFtZXNwYWNlIHB0cl9saWIgPSBzdGQ7IH0KIApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiBuYW1lc3BhY2UgbmRuIHsgbmFtZXNwYWNlIGZ1bmNfbGliID0gc3RkOyB9CiAKLSNlbGlmIE5ETl9DUFBfVVNFX1NZU1RFTV9CT09TVAorI2Vsc2UKIAogLy8gI2lmIE5ETl9DUFBfSEFWRV9CT09TVF9TSEFSRURfUFRSCiAjaW5jbHVkZSA8Ym9vc3Qvc2hhcmVkX3B0ci5ocHA+CkBAIC00MSwzNyArNDEsNiBAQAogI2luY2x1ZGUgPGJvb3N0L2JpbmQuaHBwPgogbmFtZXNwYWNlIG5kbiB7IG5hbWVzcGFjZSBmdW5jX2xpYiA9IGJvb3N0OyB9CiAKLSNlbHNlIC8vIHVzZSBlbWJlZGRlZCBib29zdCBoZWFkZXJzCi0vKiBVc2UgdGhlIGJvb3N0IGhlYWRlciBmaWxlcyBpbiB0aGlzIGRpc3RyaWJ1dGlvbiB0aGF0IHdlcmUgZXh0cmFjdGVkIHdpdGg6Ci1jZCA8Qk9PU1QgREVWRUxPUE1FTlQgRElSRUNUT1JZIFdJVEggYm9vc3QgU1VCRElSRUNUT1JZPgotZGlzdC9iaW4vYmNwIC0tbmFtZXNwYWNlPW5kbmJvb3N0IHNoYXJlZF9wdHIgbWFrZV9zaGFyZWQgd2Vha19wdHIgZnVuY3Rpb24gYmluZCBhbnkgaW9zdHJlYW1zIDxORE4tQ1BQLURFViBST09UPi9pbmNsdWRlCi1jZCA8TkROLUNQUC1ERVYgUk9PVD4vaW5jbHVkZQotcm0gLXJmIGJvb3N0LmNzcyBib29zdC5wbmcgSmFtcm9vdCBsaWJzCi1tdiBib29zdCBuZG5ib29zdAotY2QgbmRuYm9vc3QKLSMgUmVwbGFjZSB3aGVuIGluY2x1ZGluZyBmaWxlcy4KLSh1bnNldCBMQU5HOyBmaW5kIC4gLXR5cGUgZiAtZXhlYyBzZWQgLWkgJycgJ3MvXDxib29zdFwvL1w8bmRuYm9vc3RcLy9nJyB7fSArKQotKHVuc2V0IExBTkc7IGZpbmQgLiAtdHlwZSBmIC1leGVjIHNlZCAtaSAnJyAncy9cImJvb3N0XC8vXCJuZG5ib29zdFwvL2cnIHt9ICspCi0odW5zZXQgTEFORzsgZmluZCAuIC10eXBlIGYgLWV4ZWMgc2VkIC1pICcnICdzLyBib29zdFwvLyBuZG5ib29zdFwvL2cnIHt9ICspCi0odW5zZXQgTEFORzsgZmluZCAuIC10eXBlIGYgLWV4ZWMgc2VkIC1pICcnICdzLyhib29zdFwvLyhuZG5ib29zdFwvL2cnIHt9ICspCi0jIFJlcGxhY2UgbWFjcm8gZGVmaW5pdGlvbnMuCi0odW5zZXQgTEFORzsgZmluZCAuIC10eXBlIGYgLWV4ZWMgc2VkIC1pICcnICdzL0JPT1NUXy9ORE5CT09TVF8vZycge30gKykKLSMgUmVwbGFjZSBoZWFkZXIgaW5jbHVkZSBndWFyZHMgd2hpY2ggZG9uJ3Qgc3RhcnQgd2l0aCBCT09TVF8gLiAgVGhpcyBtYXkgcmVzdWx0IGluIHNvbWUgd2l0aCBORE5CT09TVCB0d2ljZSwgYnV0IHRoYXQgaXMgT0suCi0odW5zZXQgTEFORzsgZmluZCAuIC10eXBlIGYgLWV4ZWMgc2VkIC1pICcnICdzL19EV0EvX05ETkJPT1NUX0RXQS9nJyB7fSArKQotKHVuc2V0IExBTkc7IGZpbmQgLiAtdHlwZSBmIC1leGVjIHNlZCAtaSAnJyAncy8gVVVJRF8vIE5ETkJPT1NUX1VVSURfL2cnIHt9ICspCi0odW5zZXQgTEFORzsgZmluZCAuIC10eXBlIGYgLWV4ZWMgc2VkIC1pICcnICdzLyBGSUxFX2Jvb3N0LyBGSUxFX25kbmJvb3N0L2cnIHt9ICspCi0jIFJlcGxhY2UgdGhlIG1wbF8gYmFycmllciBuYW1lc3BhY2UuICBUaGlzIHNob3VsZCBvbmx5IGNoYW5nZSBmaWxlIGFkbF9iYXJyaWVyLmhwcC4KLSh1bnNldCBMQU5HOyBmaW5kIC4gLXR5cGUgZiAtZXhlYyBzZWQgLWkgJycgJ3MvIG1wbF8vIG5kbmJvb3N0X21wbF8vZycge30gKykKLSAqLwotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21ha2Vfc2hhcmVkLmhwcD4KLW5hbWVzcGFjZSBuZG4geyBuYW1lc3BhY2UgcHRyX2xpYiA9IG5kbmJvb3N0OyB9Ci0KLS8vIFVzZSB0aGUgYm9vc3QgaGVhZGVyIGZpbGVzIGluIHRoaXMgZGlzdHJpYnV0aW9uIHRoYXQgd2VyZSBleHRyYWN0ZWQgYXMgYWJvdmU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQuaHBwPgotbmFtZXNwYWNlIG5kbiB7IG5hbWVzcGFjZSBmdW5jX2xpYiA9IG5kbmJvb3N0OyB9Ci0KICNlbmRpZgogCiBuYW1lc3BhY2UgbmRuIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvYmluYXJ5LXhtbC13aXJlLWZvcm1hdC5ocHAgYi9pbmNsdWRlL25kbi1jcHAtZGV2L2VuY29kaW5nL2JpbmFyeS14bWwtd2lyZS1mb3JtYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjRmMGFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvYmluYXJ5LXhtbC13aXJlLWZvcm1hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZWE1MV0lSRUZPUk1BVF9IUFAKLSNkZWZpbmUgTkROX0JJTkFSWVhNTFdJUkVGT1JNQVRfSFBQCi0KLSNpbmNsdWRlICJ3aXJlLWZvcm1hdC5ocHAiCi0KLW5hbWVzcGFjZSBuZG4gewotCi0vKioKLSAqIEEgQmluYXJ5WG1sV2lyZUZvcm1hdCBleHRlbmRzIFdpcmVGb3JtYXQgdG8gb3ZlcnJpZGUgaXRzIHZpcnR1YWwgbWV0aG9kcyB0byBpbXBsZW1lbnQgZW5jb2RpbmcgYW5kIGRlY29kaW5nCi0gKiB1c2luZyBiaW5hcnkgWE1MLgotICovCi1jbGFzcyBCaW5hcnlYbWxXaXJlRm9ybWF0IDogcHVibGljIFdpcmVGb3JtYXQgewotcHVibGljOgotICAvKioKLSAgICogRW5jb2RlIGludGVyZXN0IGluIGJpbmFyeSBYTUwgYW5kIHJldHVybiB0aGUgZW5jb2RpbmcuCi0gICAqIEBwYXJhbSBpbnRlcmVzdCBUaGUgSW50ZXJlc3Qgb2JqZWN0IHRvIGVuY29kZS4KLSAgICogQHJldHVybiBBIEJsb2IgY29udGFpbmluZyB0aGUgZW5jb2RpbmcuCi0gICAqLyAgCi0gIHZpcnR1YWwgQmxvYiAKLSAgZW5jb2RlSW50ZXJlc3QoY29uc3QgSW50ZXJlc3QmIGludGVyZXN0KTsKLSAgICAKLSAgLyoqCi0gICAqIERlY29kZSBpbnB1dCBhcyBhbiBpbnRlcmVzdCBpbiBiaW5hcnkgWE1MIGFuZCBzZXQgdGhlIGZpZWxkcyBvZiB0aGUgaW50ZXJlc3Qgb2JqZWN0LgotICAgKiBAcGFyYW0gaW50ZXJlc3QgVGhlIEludGVyZXN0IG9iamVjdCB3aG9zZSBmaWVsZHMgYXJlIHVwZGF0ZWQuCi0gICAqIEBwYXJhbSBpbnB1dCBBIHBvaW50ZXIgdG8gdGhlIGlucHV0IGJ1ZmZlciB0byBkZWNvZGUuCi0gICAqIEBwYXJhbSBpbnB1dExlbmd0aCBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGlucHV0LgotICAgKi8KLSAgdmlydHVhbCB2b2lkIAotICBkZWNvZGVJbnRlcmVzdChJbnRlcmVzdCYgaW50ZXJlc3QsIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgpOwotCi0gIC8qKgotICAgKiBFbmNvZGUgZGF0YSB3aXRoIGJpbmFyeSBYTUwgYW5kIHJldHVybiB0aGUgZW5jb2RpbmcuCi0gICAqIEBwYXJhbSBkYXRhIFRoZSBEYXRhIG9iamVjdCB0byBlbmNvZGUuCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgUmV0dXJuIHRoZSBvZmZzZXQgaW4gdGhlIGVuY29kaW5nIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKiBJZiB5b3UgYXJlIG5vdCBlbmNvZGluZyBpbiBvcmRlciB0byBzaWduLCB5b3UgY2FuIGNhbGwgZW5jb2RlRGF0YShjb25zdCBEYXRhJiBkYXRhKSB0byBpZ25vcmUgdGhpcyByZXR1cm5lZCB2YWx1ZS4KLSAgICogQHBhcmFtIHNpZ25lZFBvcnRpb25FbmRPZmZzZXQgUmV0dXJuIHRoZSBvZmZzZXQgaW4gdGhlIGVuY29kaW5nIG9mIHRoZSBlbmQgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKiBJZiB5b3UgYXJlIG5vdCBlbmNvZGluZyBpbiBvcmRlciB0byBzaWduLCB5b3UgY2FuIGNhbGwgZW5jb2RlRGF0YShjb25zdCBEYXRhJiBkYXRhKSB0byBpZ25vcmUgdGhpcyByZXR1cm5lZCB2YWx1ZS4KLSAgICogQHJldHVybiBBIEJsb2IgY29udGFpbmluZyB0aGUgZW5jb2RpbmcuCi0gICAqLwotICB2aXJ0dWFsIEJsb2IgCi0gIGVuY29kZURhdGEKLSAgICAoY29uc3QgRGF0YSYgZGF0YSwgc2l6ZV90ICpzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkVuZE9mZnNldCk7Ci0gIAotICAvKioKLSAgICogRGVjb2RlIGlucHV0IGFzIGEgZGF0YSBwYWNrZXQgaW4gYmluYXJ5IFhNTCBhbmQgc2V0IHRoZSBmaWVsZHMgaW4gdGhlIGRhdGEgb2JqZWN0LgotICAgKiBAcGFyYW0gZGF0YSBUaGUgRGF0YSBvYmplY3Qgd2hvc2UgZmllbGRzIGFyZSB1cGRhdGVkLgotICAgKiBAcGFyYW0gaW5wdXQgQSBwb2ludGVyIHRvIHRoZSBpbnB1dCBidWZmZXIgdG8gZGVjb2RlLgotICAgKiBAcGFyYW0gaW5wdXRMZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyBpbiBpbnB1dC4KLSAgICogQHBhcmFtIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCBSZXR1cm4gdGhlIG9mZnNldCBpbiB0aGUgaW5wdXQgYnVmZmVyIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKiBJZiB5b3UgYXJlIG5vdCBkZWNvZGluZyBpbiBvcmRlciB0byB2ZXJpZnksIHlvdSBjYW4gY2FsbCAKLSAgICogZGVjb2RlRGF0YShEYXRhJiBkYXRhLCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKSB0byBpZ25vcmUgdGhpcyByZXR1cm5lZCB2YWx1ZS4KLSAgICogQHBhcmFtIHNpZ25lZFBvcnRpb25FbmRPZmZzZXQgUmV0dXJuIHRoZSBvZmZzZXQgaW4gdGhlIGlucHV0IGJ1ZmZlciBvZiB0aGUgZW5kIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAgICogSWYgeW91IGFyZSBub3QgZGVjb2RpbmcgaW4gb3JkZXIgdG8gdmVyaWZ5LCB5b3UgY2FuIGNhbGwgCi0gICAqIGRlY29kZURhdGEoRGF0YSYgZGF0YSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkgdG8gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gICAqLyAgCi0gIHZpcnR1YWwgdm9pZCAKLSAgZGVjb2RlRGF0YQotICAgIChEYXRhJiBkYXRhLCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoLCBzaXplX3QgKnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2l6ZV90ICpzaWduZWRQb3J0aW9uRW5kT2Zmc2V0KTsKLQotICAvKioKLSAgICogRW5jb2RlIGZvcndhcmRpbmdFbnRyeSBpbiBiaW5hcnkgWE1MIGFuZCByZXR1cm4gdGhlIGVuY29kaW5nLiAKLSAgICogQHBhcmFtIGZvcndhcmRpbmdFbnRyeSBUaGUgRm9yd2FyZGluZ0VudHJ5IG9iamVjdCB0byBlbmNvZGUuCi0gICAqIEByZXR1cm4gQSBCbG9iIGNvbnRhaW5pbmcgdGhlIGVuY29kaW5nLgotICAgKi8KLSAgdmlydHVhbCBCbG9iIAotICBlbmNvZGVGb3J3YXJkaW5nRW50cnkoY29uc3QgRm9yd2FyZGluZ0VudHJ5JiBmb3J3YXJkaW5nRW50cnkpOwotICAKLSAgLyoqCi0gICAqIERlY29kZSBpbnB1dCBhcyBhIGZvcndhcmRpbmcgZW50cnkgaW4gYmluYXJ5IFhNTCBhbmQgc2V0IHRoZSBmaWVsZHMgb2YgdGhlIGZvcndhcmRpbmdFbnRyeSBvYmplY3QuIAotICAgKiBAcGFyYW0gZm9yd2FyZGluZ0VudHJ5IFRoZSBGb3J3YXJkaW5nRW50cnkgb2JqZWN0IHdob3NlIGZpZWxkcyBhcmUgdXBkYXRlZC4KLSAgICogQHBhcmFtIGlucHV0IEEgcG9pbnRlciB0byB0aGUgaW5wdXQgYnVmZmVyIHRvIGRlY29kZS4KLSAgICogQHBhcmFtIGlucHV0TGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gaW5wdXQuCi0gICAqLwotICB2aXJ0dWFsIHZvaWQgCi0gIGRlY29kZUZvcndhcmRpbmdFbnRyeShGb3J3YXJkaW5nRW50cnkmIGZvcndhcmRpbmdFbnRyeSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCk7Ci19OwotICAKLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5ocHAgYi9pbmNsdWRlL25kbi1jcHAtZGV2L2VuY29kaW5nL2VsZW1lbnQtbGlzdGVuZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDEzMzEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fRUxFTUVOVF9MSVNURU5FUl9IUFAKLSNkZWZpbmUgTkROX0VMRU1FTlRfTElTVEVORVJfSFBQCi0KLSNpbmNsdWRlICIuLi9jL2VuY29kaW5nL2VsZW1lbnQtbGlzdGVuZXIuaCIKLQotbmFtZXNwYWNlIG5kbiB7Ci0KLS8qKgotICogQW4gRWxlbWVudExpc3RlbmVyIGV4dGVuZHMgYW4gbmRuX0VsZW1lbnRMaXN0ZW5lciBzdHJ1Y3QgdG8gcHJvdmVkIGFuIGFic3RyYWN0IHZpcnR1YWwgb25SZWNlaXZlZEVsZW1lbnQgZnVuY3Rpb24gd2hpY2ggd3JhcHMKLSAqIHRoZSBvblJlY2VpdmVkRWxlbWVudCB1c2VkIGJ5IHRoZSBuZG5fRWxlbWVudExpc3RlbmVyIHN0cnVjdC4gIFlvdSBtdXN0IGV4dGVuZCB0aGlzIGNsYXNzIHRvIG92ZXJyaWRlIG9uUmVjZWl2ZWRFbGVtZW50LgotICovCi1jbGFzcyBFbGVtZW50TGlzdGVuZXIgOiBwdWJsaWMgbmRuX0VsZW1lbnRMaXN0ZW5lciB7Ci1wdWJsaWM6Ci0gIEVsZW1lbnRMaXN0ZW5lcigpIAotICB7Ci0gICAgbmRuX0VsZW1lbnRMaXN0ZW5lcl9pbml0aWFsaXplKHRoaXMsIHN0YXRpY09uUmVjZWl2ZWRFbGVtZW50KTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gZW50aXJlIGJpbmFyeSBYTUwgZWxlbWVudCBpcyByZWNlaXZlZC4gIFlvdSBtdXN0IGV4dGVuZCB0aGlzIGNsYXNzIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLgotICAgKiBAcGFyYW0gZWxlbWVudCBwb2ludGVyIHRvIHRoZSBiaW5hcnkgWE1MIGVsZW1lbnQuICBUaGlzIGJ1ZmZlciBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIGNhbGwuICBJZiB5b3UgbmVlZCB0aGUgZGF0YQotICAgKiBsYXRlciwgeW91IG11c3QgY29weS4KLSAgICogQHBhcmFtIGVsZW1lbnRMZW5ndGggbGVuZ3RoIG9mIGVsZW1lbnQKLSAgICovCi0gIHZpcnR1YWwgdm9pZCAKLSAgb25SZWNlaXZlZEVsZW1lbnQoY29uc3QgdWludDhfdCAqZWxlbWVudCwgc2l6ZV90IGVsZW1lbnRMZW5ndGgpID0gMDsKLSAgCi1wcml2YXRlOgotICAvKioKLSAgICogQ2FsbCB0aGUgdmlydHVhbCBtZXRob2Qgb25SZWNlaXZlZEVsZW1lbnQuIFRoaXMgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBiYXNlIG5kbl9FbGVtZW50TGlzdGVuZXIgc3RydWN0LgotICAgKiBAcGFyYW0gc2VsZgotICAgKiBAcGFyYW0gZWxlbWVudAotICAgKiBAcGFyYW0gZWxlbWVudExlbmd0aAotICAgKi8KLSAgc3RhdGljIHZvaWQgCi0gIHN0YXRpY09uUmVjZWl2ZWRFbGVtZW50KHN0cnVjdCBuZG5fRWxlbWVudExpc3RlbmVyICpzZWxmLCB1aW50OF90ICplbGVtZW50LCBzaXplX3QgZWxlbWVudExlbmd0aCk7Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG4tY3BwLWRldi9lbmNvZGluZy9lbmRpYW4uaCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvZW5kaWFuLmhwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW5jbHVkZS9uZG4tY3BwLWRldi9lbmNvZGluZy9lbmRpYW4uaApyZW5hbWUgdG8gaW5jbHVkZS9uZG4tY3BwLWRldi9lbmNvZGluZy9lbmRpYW4uaHBwCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L2VuY29kaW5nL3Rsdi5ocHAgYi9pbmNsdWRlL25kbi1jcHAtZGV2L2VuY29kaW5nL3Rsdi5ocHAKaW5kZXggM2Q0MjQwMi4uNTExZDBmNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZG4tY3BwLWRldi9lbmNvZGluZy90bHYuaHBwCisrKyBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvdGx2LmhwcApAQCAtMTMsNyArMTMsNyBAQAogI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KICNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlICJidWZmZXIuaHBwIgotI2luY2x1ZGUgImVuZGlhbi5oIgorI2luY2x1ZGUgImVuZGlhbi5ocHAiCiAKIG5hbWVzcGFjZSBuZG4gewogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L2VuY29kaW5nL3dpcmUtZm9ybWF0LmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2Rpbmcvd2lyZS1mb3JtYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTQwY2QxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2Rpbmcvd2lyZS1mb3JtYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLS8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbCAtKi0gKi8KLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9XSVJFRk9STUFUX0hQUAotI2RlZmluZSBORE5fV0lSRUZPUk1BVF9IUFAKLQotI2luY2x1ZGUgIi4uL2NvbW1vbi5ocHAiCi0jaW5jbHVkZSAiLi4vdXRpbC9ibG9iLmhwcCIKLQotbmFtZXNwYWNlIG5kbiB7Ci0gIAotY2xhc3MgSW50ZXJlc3Q7Ci1jbGFzcyBEYXRhOwotY2xhc3MgRm9yd2FyZGluZ0VudHJ5OwotICAKLWNsYXNzIFdpcmVGb3JtYXQgewotcHVibGljOgotICAvKioKLSAgICogRW5jb2RlIGludGVyZXN0IGFuZCByZXR1cm4gdGhlIGVuY29kaW5nLiAgWW91ciBkZXJpdmVkIGNsYXNzIHNob3VsZCBvdmVycmlkZS4KLSAgICogQHBhcmFtIGludGVyZXN0IFRoZSBJbnRlcmVzdCBvYmplY3QgdG8gZW5jb2RlLgotICAgKiBAcmV0dXJuIEEgQmxvYiBjb250YWluaW5nIHRoZSBlbmNvZGluZy4KLSAgICogQHRocm93IGxvZ2ljX2Vycm9yIGZvciB1bmltcGxlbWVudGVkIGlmIHRoZSBkZXJpdmVkIGNsYXNzIGRvZXMgbm90IG92ZXJyaWRlLgotICAgKi8KLSAgdmlydHVhbCBCbG9iIAotICBlbmNvZGVJbnRlcmVzdChjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QpOwotICAKLSAgLyoqCi0gICAqIERlY29kZSBpbnB1dCBhcyBhbiBpbnRlcmVzdCBhbmQgc2V0IHRoZSBmaWVsZHMgb2YgdGhlIGludGVyZXN0IG9iamVjdC4gIFlvdXIgZGVyaXZlZCBjbGFzcyBzaG91bGQgb3ZlcnJpZGUuCi0gICAqIEBwYXJhbSBpbnRlcmVzdCBUaGUgSW50ZXJlc3Qgb2JqZWN0IHdob3NlIGZpZWxkcyBhcmUgdXBkYXRlZC4KLSAgICogQHBhcmFtIGlucHV0IEEgcG9pbnRlciB0byB0aGUgaW5wdXQgYnVmZmVyIHRvIGRlY29kZS4KLSAgICogQHBhcmFtIGlucHV0TGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gaW5wdXQuCi0gICAqIEB0aHJvdyBsb2dpY19lcnJvciBmb3IgdW5pbXBsZW1lbnRlZCBpZiB0aGUgZGVyaXZlZCBjbGFzcyBkb2VzIG5vdCBvdmVycmlkZS4KLSAgICovCi0gIHZpcnR1YWwgdm9pZCAKLSAgZGVjb2RlSW50ZXJlc3QoSW50ZXJlc3QmIGludGVyZXN0LCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKTsKLQotICAvKioKLSAgICogRW5jb2RlIGRhdGEgYW5kIHJldHVybiB0aGUgZW5jb2RpbmcuICBZb3VyIGRlcml2ZWQgY2xhc3Mgc2hvdWxkIG92ZXJyaWRlLgotICAgKiBAcGFyYW0gZGF0YSBUaGUgRGF0YSBvYmplY3QgdG8gZW5jb2RlLgotICAgKiBAcGFyYW0gc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0IFJldHVybiB0aGUgb2Zmc2V0IGluIHRoZSBlbmNvZGluZyBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAgICogSWYgeW91IGFyZSBub3QgZW5jb2RpbmcgaW4gb3JkZXIgdG8gc2lnbiwgeW91IGNhbiBjYWxsIGVuY29kZURhdGEoY29uc3QgRGF0YSYgZGF0YSkgdG8gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0IFJldHVybiB0aGUgb2Zmc2V0IGluIHRoZSBlbmNvZGluZyBvZiB0aGUgZW5kIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAgICogSWYgeW91IGFyZSBub3QgZW5jb2RpbmcgaW4gb3JkZXIgdG8gc2lnbiwgeW91IGNhbiBjYWxsIGVuY29kZURhdGEoY29uc3QgRGF0YSYgZGF0YSkgdG8gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gICAqIEByZXR1cm4gQSBCbG9iIGNvbnRhaW5pbmcgdGhlIGVuY29kaW5nLgotICAgKiBAdGhyb3cgbG9naWNfZXJyb3IgZm9yIHVuaW1wbGVtZW50ZWQgaWYgdGhlIGRlcml2ZWQgY2xhc3MgZG9lcyBub3Qgb3ZlcnJpZGUuCi0gICAqLwotICB2aXJ0dWFsIEJsb2IgCi0gIGVuY29kZURhdGEKLSAgICAoY29uc3QgRGF0YSYgZGF0YSwgc2l6ZV90ICpzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkVuZE9mZnNldCk7Ci0KLSAgLyoqCi0gICAqIEVuY29kZSBkYXRhIGFuZCByZXR1cm4gdGhlIGVuY29kaW5nLgotICAgKiBAcGFyYW0gZGF0YSBUaGUgRGF0YSBvYmplY3QgdG8gZW5jb2RlLgotICAgKiBAcmV0dXJuIEEgQmxvYiBjb250YWluaW5nIHRoZSBlbmNvZGluZy4KLSAgICogQHRocm93IGxvZ2ljX2Vycm9yIGZvciB1bmltcGxlbWVudGVkIGlmIHRoZSBkZXJpdmVkIGNsYXNzIGRvZXMgbm90IG92ZXJyaWRlLgotICAgKi8KLSAgQmxvYiAKLSAgZW5jb2RlRGF0YShjb25zdCBEYXRhJiBkYXRhKQotICB7Ci0gICAgc2l6ZV90IGR1bW15QmVnaW5PZmZzZXQsIGR1bW15RW5kT2Zmc2V0OwotICAgIHJldHVybiBlbmNvZGVEYXRhKGRhdGEsICZkdW1teUJlZ2luT2Zmc2V0LCAmZHVtbXlFbmRPZmZzZXQpOwotICB9Ci0KLSAgLyoqCi0gICAqIERlY29kZSBpbnB1dCBhcyBhIGRhdGEgcGFja2V0IGFuZCBzZXQgdGhlIGZpZWxkcyBpbiB0aGUgZGF0YSBvYmplY3QuICBZb3VyIGRlcml2ZWQgY2xhc3Mgc2hvdWxkIG92ZXJyaWRlLgotICAgKiBAcGFyYW0gZGF0YSBUaGUgRGF0YSBvYmplY3Qgd2hvc2UgZmllbGRzIGFyZSB1cGRhdGVkLgotICAgKiBAcGFyYW0gaW5wdXQgQSBwb2ludGVyIHRvIHRoZSBpbnB1dCBidWZmZXIgdG8gZGVjb2RlLgotICAgKiBAcGFyYW0gaW5wdXRMZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyBpbiBpbnB1dC4KLSAgICogQHBhcmFtIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCBSZXR1cm4gdGhlIG9mZnNldCBpbiB0aGUgaW5wdXQgYnVmZmVyIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKiBJZiB5b3UgYXJlIG5vdCBkZWNvZGluZyBpbiBvcmRlciB0byB2ZXJpZnksIHlvdSBjYW4gY2FsbCAKLSAgICogZGVjb2RlRGF0YShEYXRhJiBkYXRhLCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKSB0byBpZ25vcmUgdGhpcyByZXR1cm5lZCB2YWx1ZS4KLSAgICogQHBhcmFtIHNpZ25lZFBvcnRpb25FbmRPZmZzZXQgUmV0dXJuIHRoZSBvZmZzZXQgaW4gdGhlIGlucHV0IGJ1ZmZlciBvZiB0aGUgZW5kIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAgICogSWYgeW91IGFyZSBub3QgZGVjb2RpbmcgaW4gb3JkZXIgdG8gdmVyaWZ5LCB5b3UgY2FuIGNhbGwgCi0gICAqIGRlY29kZURhdGEoRGF0YSYgZGF0YSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkgdG8gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gICAqIEB0aHJvdyBsb2dpY19lcnJvciBmb3IgdW5pbXBsZW1lbnRlZCBpZiB0aGUgZGVyaXZlZCBjbGFzcyBkb2VzIG5vdCBvdmVycmlkZS4KLSAgICovICAKLSAgdmlydHVhbCB2b2lkIAotICBkZWNvZGVEYXRhCi0gICAgKERhdGEmIGRhdGEsIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaXplX3QgKnNpZ25lZFBvcnRpb25FbmRPZmZzZXQpOwotCi0gIHZvaWQgCi0gIGRlY29kZURhdGEoRGF0YSYgZGF0YSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkKLSAgewotICAgIHNpemVfdCBkdW1teUJlZ2luT2Zmc2V0LCBkdW1teUVuZE9mZnNldDsKLSAgICBkZWNvZGVEYXRhKGRhdGEsIGlucHV0LCBpbnB1dExlbmd0aCwgJmR1bW15QmVnaW5PZmZzZXQsICZkdW1teUVuZE9mZnNldCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBFbmNvZGUgZm9yd2FyZGluZ0VudHJ5IGFuZCByZXR1cm4gdGhlIGVuY29kaW5nLiAgWW91ciBkZXJpdmVkIGNsYXNzIHNob3VsZCBvdmVycmlkZS4KLSAgICogQHBhcmFtIGZvcndhcmRpbmdFbnRyeSBUaGUgRm9yd2FyZGluZ0VudHJ5IG9iamVjdCB0byBlbmNvZGUuCi0gICAqIEByZXR1cm4gQSBCbG9iIGNvbnRhaW5pbmcgdGhlIGVuY29kaW5nLgotICAgKiBAdGhyb3cgbG9naWNfZXJyb3IgZm9yIHVuaW1wbGVtZW50ZWQgaWYgdGhlIGRlcml2ZWQgY2xhc3MgZG9lcyBub3Qgb3ZlcnJpZGUuCi0gICAqLwotICB2aXJ0dWFsIEJsb2IgCi0gIGVuY29kZUZvcndhcmRpbmdFbnRyeShjb25zdCBGb3J3YXJkaW5nRW50cnkmIGZvcndhcmRpbmdFbnRyeSk7Ci0gIAotICAvKioKLSAgICogRGVjb2RlIGlucHV0IGFzIGEgZm9yd2FyZGluZyBlbnRyeSBhbmQgc2V0IHRoZSBmaWVsZHMgb2YgdGhlIGZvcndhcmRpbmdFbnRyeSBvYmplY3QuICBZb3VyIGRlcml2ZWQgY2xhc3Mgc2hvdWxkIG92ZXJyaWRlLgotICAgKiBAcGFyYW0gZm9yd2FyZGluZ0VudHJ5IFRoZSBGb3J3YXJkaW5nRW50cnkgb2JqZWN0IHdob3NlIGZpZWxkcyBhcmUgdXBkYXRlZC4KLSAgICogQHBhcmFtIGlucHV0IEEgcG9pbnRlciB0byB0aGUgaW5wdXQgYnVmZmVyIHRvIGRlY29kZS4KLSAgICogQHBhcmFtIGlucHV0TGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gaW5wdXQuCi0gICAqIEB0aHJvdyBsb2dpY19lcnJvciBmb3IgdW5pbXBsZW1lbnRlZCBpZiB0aGUgZGVyaXZlZCBjbGFzcyBkb2VzIG5vdCBvdmVycmlkZS4KLSAgICovCi0gIHZpcnR1YWwgdm9pZCAKLSAgZGVjb2RlRm9yd2FyZGluZ0VudHJ5KEZvcndhcmRpbmdFbnRyeSYgZm9yd2FyZGluZ0VudHJ5LCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKTsKLQotICAvKioKLSAgICogU2V0IHRoZSBzdGF0aWMgZGVmYXVsdCBXaXJlRm9ybWF0IHVzZWQgYnkgZGVmYXVsdCBlbmNvZGluZyBhbmQgZGVjb2RpbmcgbWV0aG9kcy4KLSAgICogQHBhcmFtIHdpcmVGb3JtYXQgQSBQb2ludGVyIHRvIGFuIG9iamVjdCBvZiBhIHN1YmNsYXNzIG9mIFdpcmVGb3JtYXQuICBUaGlzIGRvZXMgbm90IG1ha2UgYSBjb3B5IGFuZAotICAgKiB0aGUgY2FsbGVyIG11c3QgZW5zdXJlIHRoYXQgdGhlIG9iamVjdCByZW1haW5zIGFsbG9jYXRlZC4KLSAgICovCi0gIHN0YXRpYyB2b2lkIAotICBzZXREZWZhdWx0V2lyZUZvcm1hdChXaXJlRm9ybWF0ICp3aXJlRm9ybWF0KSAKLSAgewotICAgIGRlZmF1bHRXaXJlRm9ybWF0XyA9IHdpcmVGb3JtYXQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIGRlZmF1bHQgV2lyZUZvcm1hdCB1c2VkIGJ5IGRlZmF1bHQgZW5jb2RpbmcgYW5kIGRlY29kaW5nIG1ldGhvZHMgd2hpY2ggd2FzIHNldCB3aXRoCi0gICAqIHNldERlZmF1bHRXaXJlRm9ybWF0LgotICAgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgV2lyZUZvcm1hdCBvYmplY3QuCi0gICAqLwotICBzdGF0aWMgV2lyZUZvcm1hdCoKLSAgZ2V0RGVmYXVsdFdpcmVGb3JtYXQoKTsKLSAgCi1wcml2YXRlOgotICAvKioKLSAgICogVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBvbmx5IG9uZSBvZiB0aGUgc3ViY2xhc3NlcyBvZiBXaXJlRm9ybWF0IHRvIHJldHVybiBhIG5ldyBvYmplY3QgdXNlZAotICAgKiBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGRlZmF1bHQgV2lyZUZvcm1hdC4gIElmIHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IGluY2x1ZGUgdGhhdCBjbGFzcywgdGhlbiB0aGUgYXBwbGljYXRpb24KLSAgICogbmVlZHMgdG8gaW5jbHVkZSBhbm90aGVyIHN1YmNsYXNzIHdoaWNoIGRlZmluZXMgV2lyZUZvcm1hdDo6bmV3SW5pdGlhbERlZmF1bHRXaXJlRm9ybWF0LgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCwgd2hpY2ggaXMgaGVsZCBieSBhIHNoYXJlZF9wdHIgYW5kIGZyZWVkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGV4aXRzLgotICAgKi8KLSAgc3RhdGljIFdpcmVGb3JtYXQqCi0gIG5ld0luaXRpYWxEZWZhdWx0V2lyZUZvcm1hdCgpOwotICAKLSAgc3RhdGljIFdpcmVGb3JtYXQgKmRlZmF1bHRXaXJlRm9ybWF0XzsKLX07Ci0KLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvc2VjdXJpdHkvc2VjdXJpdHktZXhjZXB0aW9uLmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvc2VjdXJpdHkvc2VjdXJpdHktZXhjZXB0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmMWQ2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L3NlY3VyaXR5L3NlY3VyaXR5LWV4Y2VwdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBZaW5nZGkgWXUgPHlpbmdkaUBjcy51Y2xhLmVkdT4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9TRUNVUklUWV9FWENFUFRJT05fSFBQCi0jZGVmaW5lIE5ETl9TRUNVUklUWV9FWENFUFRJT05fSFBQCi0KLSNpbmNsdWRlIDxleGNlcHRpb24+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi1uYW1lc3BhY2UgbmRuIHsKLQotY2xhc3MgU2VjdXJpdHlFeGNlcHRpb24gOiBwdWJsaWMgc3RkOjpleGNlcHRpb24gewotcHVibGljOgotICBTZWN1cml0eUV4Y2VwdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgZXJyb3JNZXNzYWdlKSB0aHJvdygpOwotICAgIAotICB2aXJ0dWFsIH5TZWN1cml0eUV4Y2VwdGlvbigpIHRocm93KCk7Ci0gICAgCi0gIHN0ZDo6c3RyaW5nIE1zZygpIHsgcmV0dXJuIGVycm9yTWVzc2FnZV87IH0KLQotICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGVycm9yTWVzc2FnZV8uY19zdHIoKTsgfQotICAgIAotcHJpdmF0ZToKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXJyb3JNZXNzYWdlXzsKLX07Ci0KLWNsYXNzIFVucmVjb2duaXplZEtleUZvcm1hdEV4Y2VwdGlvbiA6IHB1YmxpYyBTZWN1cml0eUV4Y2VwdGlvbiB7Ci1wdWJsaWM6Ci0gIFVucmVjb2duaXplZEtleUZvcm1hdEV4Y2VwdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgZXJyb3JNZXNzYWdlKQotICA6IFNlY3VyaXR5RXhjZXB0aW9uKGVycm9yTWVzc2FnZSkKLSAgewotICB9Ci19OwotCi1jbGFzcyBVbnJlY29nbml6ZWREaWdlc3RBbGdvcml0aG1FeGNlcHRpb24gOiBwdWJsaWMgU2VjdXJpdHlFeGNlcHRpb24gewotcHVibGljOgotICBVbnJlY29nbml6ZWREaWdlc3RBbGdvcml0aG1FeGNlcHRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yTWVzc2FnZSkKLSAgOiBTZWN1cml0eUV4Y2VwdGlvbihlcnJvck1lc3NhZ2UpCi0gIHsKLSAgfQotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvc2VjdXJpdHkvc2hhMjU2LXdpdGgtcnNhLWhhbmRsZXIuaHBwIGIvaW5jbHVkZS9uZG4tY3BwLWRldi9zZWN1cml0eS9zaGEyNTYtd2l0aC1yc2EtaGFuZGxlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MjdmMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG4tY3BwLWRldi9zZWN1cml0eS9zaGEyNTYtd2l0aC1yc2EtaGFuZGxlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBZaW5nZGkgWXUgPHlpbmdkaUBjcy51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9TSEEyNTZfUlNBX0hBTkRMRVJfSFBQCi0jZGVmaW5lIE5ETl9TSEEyNTZfUlNBX0hBTkRMRVJfSFBQCi0KLSNpbmNsdWRlICIuLi8uLi9kYXRhLmhwcCIKLSNpbmNsdWRlICIuLi9jZXJ0aWZpY2F0ZS9wdWJsaWMta2V5LmhwcCIKLQotbmFtZXNwYWNlIG5kbnsKLQotY2xhc3MgU2hhMjU2V2l0aFJzYUhhbmRsZXIgewotcHVibGljOgotICBTaGEyNTZXaXRoUnNhSGFuZGxlcigpIHt9Ci0KLSAgdmlydHVhbAotICB+U2hhMjU2V2l0aFJzYUhhbmRsZXIoKSB7fQotCi0gLyoqCi0gICogVmVyaWZ5IHRoZSBzaWduYXR1cmUgb24gdGhlIGRhdGEgcGFja2V0IHVzaW5nIHRoZSBnaXZlbiBwdWJsaWMga2V5LiBJZiB0aGVyZSBpcyBubyBkYXRhLmdldERlZmF1bHRXaXJlRW5jb2RpbmcoKSwKLSAgKiB0aGlzIGNhbGxzIGRhdGEud2lyZUVuY29kZSgpIHRvIHNldCBpdC4KLSAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBwYWNrZXQgd2l0aCB0aGUgc2lnbmVkIHBvcnRpb24gYW5kIHRoZSBzaWduYXR1cmUgdG8gdmVyaWZ5LiBUaGUgZGF0YSBwYWNrZXQgbXVzdCBoYXZlIGEKLSAgKiBTaGEyNTZXaXRoUnNhU2lnbmF0dXJlLgotICAqIEBwYXJhbSBwdWJsaWNLZXkgVGhlIHB1YmxpYyBrZXkgdXNlZCB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZS4KLSAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNpZ25hdHVyZSB2ZXJpZmllcywgZmFsc2UgaWYgbm90LgotICAqIEB0aHJvdyBTZWN1cml0eUV4Y2VwdGlvbiBpZiBkYXRhIGRvZXMgbm90IGhhdmUgYSBTaGEyNTZXaXRoUnNhU2lnbmF0dXJlLgotICAqLwotICBzdGF0aWMgYm9vbAotICB2ZXJpZnlTaWduYXR1cmUoY29uc3QgRGF0YSYgZGF0YSwgY29uc3QgUHVibGljS2V5JiBwdWJsaWNLZXkpOwotCi19OwotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvdXRpbC9ibG9iLmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvdXRpbC9ibG9iLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRlN2EwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L3V0aWwvYmxvYi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JMT0JfSFBQCi0jZGVmaW5lIE5ETl9CTE9CX0hQUAotCi0jaW5jbHVkZSAiLi4vY29tbW9uLmhwcCIKLQotc3RydWN0IG5kbl9CbG9iOwotCi1uYW1lc3BhY2UgbmRuIHsKLQotLyoqCi0gKiBBIEJsb2IgaG9sZHMgYSBwb2ludGVyIHRvIGFuIGltbXV0YWJsZSBieXRlIGFycmF5IGltcGxlbWVudGVkIGFzIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+LiAgCi0gKiBUaGlzIGlzIGxpa2UgYSBKYXZhU2NyaXB0IHN0cmluZyB3aGljaCBpcyBhIHBvaW50ZXIgdG8gYW4gaW1tdXRhYmxlIHN0cmluZy4gIAotICogSXQgaXMgT0sgdG8gcGFzcyBhIHBvaW50ZXIgdG8gdGhlIHN0cmluZyBiZWNhdXNlIHRoZSBuZXcgb3duZXIgY2FuJ3QgY2hhbmdlIHRoZSBieXRlcwotICogb2YgdGhlIHN0cmluZy4gIEhvd2V2ZXIsIGxpa2UgYSBKYXZhU2NyaXB0IHN0cmluZywgaXQgaXMgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBwb2ludGVyLCBhbmQgc28gdGhpcyBkb2VzIGFsbG93Ci0gKiB0aGUgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCB0byBjaGFuZ2UgdGhlIHBvaW50ZXIuICBBbHNvIHJlbWVtYmVyIHRoYXQgdGhlIHBvaW50ZXIgY2FuIGJlIG51bGwuCi0gKiAoTm90ZSB0aGF0IHdlIGNvdWxkIGhhdmUgbWFkZSBCbG9iIGRlcml2ZSBkaXJlY3RseSBmcm9tIHZlY3Rvcjx1aW50OF90PiBhbmQgdGhlbiBleHBsaWNpdGx5IHVzZQotICogYSBwb2ludGVyIHRvIGl0IGxpa2UgQmxvYiwgYnV0IHRoaXMgZG9lcyBub3QgZW5mb3JjZSBpbW11dGFiaWxpdHkgYmVjYXVzZSB3ZSBjYW4ndCBkZWNsYXJlCi0gKiBCbG9iIGFzIGRlcml2ZWQgZnJvbSBjb25zdCB2ZWN0b3I8dWludDhfdD4uKQotICovCi1jbGFzcyBCbG9iIDogcHVibGljIHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4gPiB7Ci1wdWJsaWM6Ci0gIC8qKgotICAgKiBDcmVhdGUgYSBuZXcgQmxvYiB3aXRoIGEgbnVsbCBwb2ludGVyLgotICAgKi8KLSAgQmxvYigpCi0gIHsgIAotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IEJsb2Igd2l0aCBhbiBpbW11dGFibGUgY29weSBvZiB0aGUgZ2l2ZW4gYXJyYXkuCi0gICAqIEBwYXJhbSB2YWx1ZSBBIHBvaW50ZXIgdG8gdGhlIGJ5dGUgYXJyYXkgd2hpY2ggaXMgY29waWVkLgotICAgKiBAcGFyYW0gdmFsdWVMZW5ndGggVGhlIGxlbmd0aCBvZiB2YWx1ZS4KLSAgICovCi0gIEJsb2IoY29uc3QgdWludDhfdCogdmFsdWUsIHNpemVfdCB2YWx1ZUxlbmd0aCkKLSAgOiBwdHJfbGliOjpzaGFyZWRfcHRyPGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4obmV3IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHZhbHVlLCB2YWx1ZSArIHZhbHVlTGVuZ3RoKSkKLSAgewotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IEJsb2Igd2l0aCBhbiBpbW11dGFibGUgY29weSBvZiB0aGUgYXJyYXkgaW4gdGhlIGdpdmVuIHZlY3Rvci4KLSAgICogSWYgeW91IHdhbnQgdG8gdHJhbnNmZXIgdGhlIGFycmF5IHdpdGhvdXQgY29weWluZywgdGhlIHRoZSB2ZWN0b3IgaGFzIHRvIHN0YXJ0IGFzIGEgCi0gICAqIHB0cl9saWI6OnNoYXJlZF9wdHI8c3RkOjp2ZWN0b3I8dWludDhfdD4gPiBhbmQgeW91IGNhbiB1c2UgdGhlIEJsb2IgY29uc3RydWN0b3Igd2l0aCB0aGlzIHR5cGUuCi0gICAqIEBwYXJhbSB2YWx1ZSBBIHJlZmVyZW5jZSB0byBhIHZlY3RvciB3aGljaCBpcyBjb3BpZWQuCi0gICAqLwotICBCbG9iKGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ICZ2YWx1ZSkKLSAgOiBwdHJfbGliOjpzaGFyZWRfcHRyPGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4obmV3IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHZhbHVlKSkKLSAgewotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IEJsb2Igd2l0aCBhbiBpbW11dGFibGUgY29weSBvZiB0aGUgYXJyYXkgaW4gdGhlIGdpdmVuIEJsb2Igc3RydWN0LgotICAgKiBAcGFyYW0gYmxvYlN0cnVjdCBUaGUgQyBuZG5fQmxvYiBzdHJ1Y3QgdG8gcmVjZWl2ZSB0aGUgcG9pbnRlci4KLSAgICovCi0gIEJsb2IoY29uc3Qgc3RydWN0IG5kbl9CbG9iJiBibG9iU3RydWN0KTsKLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgYSBuZXcgQmxvYiB0byBwb2ludCB0byBhbiBleGlzdGluZyBieXRlIGFycmF5LiAgSU1QT1JUQU5UOiBBZnRlciBjYWxsaW5nIHRoaXMgY29uc3RydWN0b3IsCi0gICAqIGlmIHlvdSBrZWVwIGEgcG9pbnRlciB0byB0aGUgYXJyYXkgdGhlbiB5b3UgbXVzdCB0cmVhdCB0aGUgYXJyYXkgYXMgaW1tdXRhYmxlIGFuZCBwcm9taXNlIG5vdCB0byBjaGFuZ2UgaXQuCi0gICAqIEBwYXJhbSB2YWx1ZSBBIHBvaW50ZXIgdG8gYSB2ZWN0b3Igd2l0aCB0aGUgYnl0ZSBhcnJheS4gIFRoaXMgdGFrZXMgYW5vdGhlciByZWZlcmVuY2UgYW5kIGRvZXMgbm90IGNvcHkgdGhlIGJ5dGVzLgotICAgKi8KLSAgQmxvYihjb25zdCBwdHJfbGliOjpzaGFyZWRfcHRyPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4gJnZhbHVlKQotICA6IHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4gPigoY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiA+ICYpdmFsdWUpCi0gIHsKLSAgfQotICBCbG9iKGNvbnN0IHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4gPiAmdmFsdWUpCi0gIDogcHRyX2xpYjo6c2hhcmVkX3B0cjxjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiA+KHZhbHVlKQotICB7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW1tdXRhYmxlIGJ5dGUgYXJyYXkuCi0gICAqLwotICBzaXplX3QgCi0gIHNpemUoKSBjb25zdAotICB7Ci0gICAgaWYgKCp0aGlzKQotICAgICAgcmV0dXJuICgqdGhpcyktPnNpemUoKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gMDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gYSBjb25zdCBwb2ludGVyIHRvIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBpbW11dGFibGUgYnl0ZSBhcnJheSwgb3IgMCBpZiB0aGUgcG9pbnRlciBpcyBudWxsLgotICAgKi8KLSAgY29uc3QgdWludDhfdCogCi0gIGJ1ZigpIGNvbnN0Ci0gIHsKLSAgICBpZiAoKnRoaXMpCi0gICAgICByZXR1cm4gJigqdGhpcyktPmZyb250KCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXQgdGhlIGJsb2JTdHJ1Y3QgdG8gcG9pbnQgdG8gdGhpcyBCbG9iJ3MgYnl0ZSBhcnJheSwgd2l0aG91dCBjb3B5aW5nIGFueSBtZW1vcnkuCi0gICAqIFdBUk5JTkc6IFRoZSByZXN1bHRpbmcgcG9pbnRlciBpbiBibG9iU3RydWN0IGlzIGludmFsaWQgYWZ0ZXIgYSBmdXJ0aGVyIHVzZSBvZiB0aGlzIG9iamVjdCB3aGljaCBjb3VsZCByZWFsbG9jYXRlIG1lbW9yeS4KLSAgICogQHBhcmFtIGJsb2JTdHJ1Y3QgVGhlIEMgbmRuX0Jsb2Igc3RydWN0IHRvIHJlY2VpdmUgdGhlIHBvaW50ZXIuCi0gICAqLwotICB2b2lkIAotICBnZXQoc3RydWN0IG5kbl9CbG9iJiBibG9iU3RydWN0KSBjb25zdDsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L3V0aWwvY3J5cHRvLmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvdXRpbC9jcnlwdG8uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDhhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25kbi1jcHAtZGV2L3V0aWwvY3J5cHRvLmhwcApAQCAtMCwwICsxLDI3IEBACisvKioKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+CisgKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCisgKi8KKworI2lmbmRlZiBORE5fVVRJTF9DUllQVE9fSFBQCisjZGVmaW5lIE5ETl9VVElMX0NSWVBUT19IUFAKKworI2luY2x1ZGUgIm5kbi1jcHAtZGV2L2NvbW1vbi5ocHAiCisKKyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgorI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisKK25hbWVzcGFjZSBuZG4geworCisvKioKKyAqIENvbXB1dGUgdGhlIHNoYS0yNTYgZGlnZXN0IG9mIGRhdGEuCisgKiBAcGFyYW0gZGF0YSBQb2ludGVyIHRvIHRoZSBpbnB1dCBieXRlIGFycmF5LgorICogQHBhcmFtIGRhdGFMZW5ndGggVGhlIGxlbmd0aCBvZiBkYXRhLgorICogQHBhcmFtIGRpZ2VzdCBBIHBvaW50ZXIgdG8gYSBidWZmZXIgb2Ygc2l6ZSBTSEEyNTZfRElHRVNUX0xFTkdUSCB0byByZWNlaXZlIHRoZSBkYXRhLgorICovCit2b2lkIG5kbl9kaWdlc3RTaGEyNTYoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHVpbnQ4X3QgKmRpZ2VzdCk7CisKK30gLy8gbmFtZXNwYWNlIG5kbgorCisjZW5kaWYgLy8gTkROX1VUSUxfQ1JZUFRPX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG4tY3BwLWRldi91dGlsL3NpZ25lZC1ibG9iLmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvdXRpbC9zaWduZWQtYmxvYi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhZDJkMjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG4tY3BwLWRldi91dGlsL3NpZ25lZC1ibG9iLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBaaGVua2FpIFpodSA8emhlbmthaUBjcy51Y2xhLmVkdT4KLSAqIEBhdXRob3I6IEFsZXhhbmRlciBBZmFuYXN5ZXYgPGFsZXhhbmRlci5hZmFuYXN5ZXZAdWNsYS5lZHU+Ci0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fU0lHTkVEX0JMT0JfSFBQCi0jZGVmaW5lIE5ETl9TSUdORURfQkxPQl9IUFAKLQotI2luY2x1ZGUgImJsb2IuaHBwIgotCi1uYW1lc3BhY2UgbmRuIHsKLQotLyoqCi0gKiBBIFNpZ25lZEJsb2IgZXh0ZW5kcyBCbG9iIHRvIGtlZXAgdGhlIG9mZnNldHMgb2YgYSBzaWduZWQgcG9ydGlvbiAoZS5nLiwgdGhlIGJ5dGVzIG9mIERhdGEgcGFja2V0KS4KLSAqLwotY2xhc3MgU2lnbmVkQmxvYiA6IHB1YmxpYyBCbG9iIHsKLXB1YmxpYzoKLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyBTaWduZWRCbG9iIHdpdGggYSBudWxsIHBvaW50ZXIuCi0gICAqLwotICBTaWduZWRCbG9iKCkKLSAgOiBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXRfKDApLCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0XygwKQotICB7ICAKLSAgfQotICAKLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyBTaWduZWRCbG9iIHdpdGggYW4gaW1tdXRhYmxlIGNvcHkgb2YgdGhlIGdpdmVuIGFycmF5LgotICAgKiBAcGFyYW0gdmFsdWUgQSBwb2ludGVyIHRvIHRoZSBieXRlIGFycmF5IHdoaWNoIGlzIGNvcGllZC4KLSAgICogQHBhcmFtIHZhbHVlTGVuZ3RoIFRoZSBsZW5ndGggb2YgdmFsdWUuCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgVGhlIG9mZnNldCBpbiB0aGUgZW5jb2Rpbmcgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0IFRoZSBvZmZzZXQgaW4gdGhlIGVuY29kaW5nIG9mIHRoZSBlbmQgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKi8KLSAgU2lnbmVkQmxvYgotICAgIChjb25zdCB1aW50OF90KiB2YWx1ZSwgc2l6ZV90IHZhbHVlTGVuZ3RoLCBzaXplX3Qgc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaXplX3Qgc2lnbmVkUG9ydGlvbkVuZE9mZnNldCkKLSAgOiBCbG9iKHZhbHVlLCB2YWx1ZUxlbmd0aCksIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldF8oc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0KSwgc2lnbmVkUG9ydGlvbkVuZE9mZnNldF8oc2lnbmVkUG9ydGlvbkVuZE9mZnNldCkKLSAgewotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IFNpZ25lZEJsb2Igd2l0aCBhbiBpbW11dGFibGUgY29weSBvZiB0aGUgYXJyYXkgaW4gdGhlIGdpdmVuIHZlY3Rvci4KLSAgICogSWYgeW91IHdhbnQgdG8gdHJhbnNmZXIgdGhlIGFycmF5IHdpdGhvdXQgY29weWluZywgdGhlIHRoZSB2ZWN0b3IgaGFzIHRvIHN0YXJ0IGFzIGEgCi0gICAqIHB0cl9saWI6OnNoYXJlZF9wdHI8c3RkOjp2ZWN0b3I8dWludDhfdD4gPiBhbmQgeW91IGNhbiB1c2UgdGhlIFNpZ25lZEJsb2IgY29uc3RydWN0b3Igd2l0aCB0aGlzIHR5cGUuCi0gICAqIEBwYXJhbSB2YWx1ZSBBIHJlZmVyZW5jZSB0byBhIHZlY3RvciB3aGljaCBpcyBjb3BpZWQuCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgVGhlIG9mZnNldCBpbiB0aGUgZW5jb2Rpbmcgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0IFRoZSBvZmZzZXQgaW4gdGhlIGVuY29kaW5nIG9mIHRoZSBlbmQgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKi8KLSAgU2lnbmVkQmxvYgotICAgIChjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiAmdmFsdWUsIHNpemVfdCBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0KQotICA6IEJsb2IodmFsdWUpLCBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXRfKHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCksIHNpZ25lZFBvcnRpb25FbmRPZmZzZXRfKHNpZ25lZFBvcnRpb25FbmRPZmZzZXQpCi0gIHsKLSAgfQotICAKLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyBTaWduZWRCbG9iIHRvIHBvaW50IHRvIGFuIGV4aXN0aW5nIGJ5dGUgYXJyYXkuICBJTVBPUlRBTlQ6IEFmdGVyIGNhbGxpbmcgdGhpcyBjb25zdHJ1Y3RvciwKLSAgICogaWYgeW91IGtlZXAgYSBwb2ludGVyIHRvIHRoZSBhcnJheSB0aGVuIHlvdSBtdXN0IHRyZWF0IHRoZSBhcnJheSBhcyBpbW11dGFibGUgYW5kIHByb21pc2Ugbm90IHRvIGNoYW5nZSBpdC4KLSAgICogQHBhcmFtIHZhbHVlIEEgcG9pbnRlciB0byBhIHZlY3RvciB3aXRoIHRoZSBieXRlIGFycmF5LiAgVGhpcyB0YWtlcyBhbm90aGVyIHJlZmVyZW5jZSBhbmQgZG9lcyBub3QgY29weSB0aGUgYnl0ZXMuCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgVGhlIG9mZnNldCBpbiB0aGUgYXJyYXkgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0IFRoZSBvZmZzZXQgaW4gdGhlIGFycmF5IG9mIHRoZSBlbmQgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKi8KLSAgU2lnbmVkQmxvYgotICAgIChjb25zdCBwdHJfbGliOjpzaGFyZWRfcHRyPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4gJnZhbHVlLCAKLSAgICAgc2l6ZV90IHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2l6ZV90IHNpZ25lZFBvcnRpb25FbmRPZmZzZXQpCi0gIDogQmxvYih2YWx1ZSksIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldF8oc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0KSwgc2lnbmVkUG9ydGlvbkVuZE9mZnNldF8oc2lnbmVkUG9ydGlvbkVuZE9mZnNldCkKLSAgewotICB9Ci0gIFNpZ25lZEJsb2IKLSAgICAoY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiA+ICZ2YWx1ZSwgCi0gICAgIHNpemVfdCBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0KQotICA6IEJsb2IodmFsdWUpLCBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXRfKHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCksIHNpZ25lZFBvcnRpb25FbmRPZmZzZXRfKHNpZ25lZFBvcnRpb25FbmRPZmZzZXQpCi0gIHsKLSAgfQotICAgIAotICAvKioKLSAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHNpZ25lZCBwb3J0aW9uIG9mIHRoZSBpbW11dGFibGUgYnl0ZSBhcnJheSwgb3IgMCBvZiB0aGUgcG9pbnRlciB0byB0aGUgYXJyYXkgaXMgbnVsbC4KLSAgICovCi0gIHNpemVfdCAKLSAgc2lnbmVkU2l6ZSgpIGNvbnN0Ci0gIHsKLSAgICBpZiAoKnRoaXMpCi0gICAgICByZXR1cm4gc2lnbmVkUG9ydGlvbkVuZE9mZnNldF8gLSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXRfOwotICAgIGVsc2UKLSAgICAgIHJldHVybiAwOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybiBhIGNvbnN0IHBvaW50ZXIgdG8gdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHNpZ25lZCBwb3J0aW9uIG9mIHRoZSBpbW11dGFibGUgYnl0ZSBhcnJheSwgb3IgMCBpZiB0aGUgCi0gICAqIHBvaW50ZXIgdG8gdGhlIGFycmF5IGlzIG51bGwuCi0gICAqLwotICBjb25zdCB1aW50OF90KgotICBzaWduZWRCdWYoKSBjb25zdAotICB7Ci0gICAgaWYgKCp0aGlzKQotICAgICAgcmV0dXJuICYoKnRoaXMpLT5mcm9udCgpICsgc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0XzsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gMDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIG9mZnNldCBpbiB0aGUgYXJyYXkgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAqLyAgCi0gIHNpemVfdCAKLSAgZ2V0U2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0XzsgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIG9mZnNldCBpbiB0aGUgYXJyYXkgb2YgdGhlIGVuZCBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAqLyAgCi0gIHNpemVfdCAKLSAgZ2V0U2lnbmVkUG9ydGlvbkVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHNpZ25lZFBvcnRpb25FbmRPZmZzZXRfOyB9Ci0gIAotcHJpdmF0ZToKLSAgc2l6ZV90IHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldF87Ci0gIHNpemVfdCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0XzsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29tcGFyZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29tcGFyZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZWJjMjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbXBhcmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGNvbXBhcmUuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDYuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0NPTVBBUkVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19DT01QQVJFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPGxvY2FsZT4KLQotLyohIFxmaWxlCi0gICAgRGVmaW5lcyBlbGVtZW50IGNvbXBhcmlzb24gcHJlZGljYXRlcy4gTWFueSBhbGdvcml0aG1zIGluIHRoaXMgbGlicmFyeSBjYW4KLSAgICB0YWtlIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgd2l0aCBhIHByZWRpY2F0ZSB1c2VkIHRvIGNvbXBhcmUgZWxlbWVudHMuCi0gICAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSwgZm9yIGluc3RhbmNlLCB0byBoYXZlIGNhc2UgaW5zZW5zaXRpdmUgdmVyc2lvbnMKLSAgICBvZiB0aGUgYWxnb3JpdGhtcy4KLSovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0KLSAgICAgICAgLy8gIGlzX2VxdWFsIGZ1bmN0b3IgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgaXNfZXF1YWwgZnVuY3RvcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIFN0YW5kYXJkIFNUTCBlcXVhbF90byBvbmx5IGhhbmRsZSBjb21wYXJpc29uIGJldHdlZW4gYXJndW1lbnRzCi0gICAgICAgICAgICBvZiB0aGUgc2FtZSB0eXBlLiBUaGlzIGlzIGEgbGVzcyByZXN0cmljdGl2ZSB2ZXJzaW9uIHdoaWNoIHdyYXBzIG9wZXJhdG9yID09LgotICAgICAgICAqLwotICAgICAgICBzdHJ1Y3QgaXNfZXF1YWwKLSAgICAgICAgewotICAgICAgICAgICAgLy8hIEZ1bmN0aW9uIG9wZXJhdG9yCi0gICAgICAgICAgICAvKiEKLSAgICAgICAgICAgICAgICBDb21wYXJlIHR3byBvcGVyYW5kcyBmb3IgZXF1YWxpdHkKLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4KLSAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yKCkoIGNvbnN0IFQxJiBBcmcxLCBjb25zdCBUMiYgQXJnMiApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFyZzE9PUFyZzI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8hIGNhc2UgaW5zZW5zaXRpdmUgdmVyc2lvbiBvZiBpc19lcXVhbAotICAgICAgICAvKiEKLSAgICAgICAgICAgIENhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBwcmVkaWNhdGUuIENvbXBhcmlzb24gaXMgZG9uZSB1c2luZwotICAgICAgICAgICAgc3BlY2lmaWVkIGxvY2FsZXMuCi0gICAgICAgICovCi0gICAgICAgIHN0cnVjdCBpc19pZXF1YWwKLSAgICAgICAgewotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yCi0gICAgICAgICAgICAvKiEKLSAgICAgICAgICAgICAgICBccGFyYW0gTG9jIGxvY2FsZXMgdXNlZCBmb3IgY29tcGFyaXNvbgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlzX2llcXVhbCggY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkgOgotICAgICAgICAgICAgICAgIG1fTG9jKCBMb2MgKSB7fQotCi0gICAgICAgICAgICAvLyEgRnVuY3Rpb24gb3BlcmF0b3IKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzLiBDYXNlIGlzIGlnbm9yZWQuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBjb25zdCBUMSYgQXJnMSwgY29uc3QgVDImIEFyZzIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA+PSAweDU2MCkgJiYgKF9fQk9STEFORENfXyA8PSAweDU2NCkgJiYgIWRlZmluZWQoX1VTRV9PTERfUldfU1RMKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0b3VwcGVyKEFyZzEpPT1zdGQ6OnRvdXBwZXIoQXJnMik7Ci0gICAgICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dG91cHBlcjxUMT4oQXJnMSxtX0xvYyk9PXN0ZDo6dG91cHBlcjxUMj4oQXJnMixtX0xvYyk7Ci0gICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHN0ZDo6bG9jYWxlIG1fTG9jOwotICAgICAgICB9OwotCi0gICAgICAgIC8vICBpc19sZXNzIGZ1bmN0b3IgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgaXNfbGVzcyBmdW5jdG9yCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29udmVuaWVudCB2ZXJzaW9uIG9mIHN0YW5kYXJkIHN0ZDo6bGVzcy4gT3BlcmF0aW9uIGlzIHRlbXBsYXRlZCwgdGhlcmVmb3JlIGl0IGlzIAotICAgICAgICAgICAgbm90IHJlcXVpcmVkIHRvIHNwZWNpZnkgdGhlIGV4YWN0IHR5cGVzIHVwb24gdGhlIGNvbnN0cnVjdGlvbgotICAgICAgICAgKi8KLSAgICAgICAgc3RydWN0IGlzX2xlc3MKLSAgICAgICAgewotICAgICAgICAgICAgLy8hIEZ1bmN0b3Igb3BlcmF0aW9uCi0gICAgICAgICAgICAvKiEKLSAgICAgICAgICAgICAgICBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyA+IG9wZXJhdG9yCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPgotICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IoKSggY29uc3QgVDEmIEFyZzEsIGNvbnN0IFQyJiBBcmcyICkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnMTxBcmcyOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8hIGNhc2UgaW5zZW5zaXRpdmUgdmVyc2lvbiBvZiBpc19sZXNzCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIHByZWRpY2F0ZS4gQ29tcGFyaXNvbiBpcyBkb25lIHVzaW5nCi0gICAgICAgICAgICBzcGVjaWZpZWQgbG9jYWxlcy4KLSAgICAgICAgKi8KLSAgICAgICAgc3RydWN0IGlzX2lsZXNzCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vISBDb25zdHJ1Y3RvcgotICAgICAgICAgICAgLyohCi0gICAgICAgICAgICAgICAgXHBhcmFtIExvYyBsb2NhbGVzIHVzZWQgZm9yIGNvbXBhcmlzb24KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBpc19pbGVzcyggY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkgOgotICAgICAgICAgICAgICAgIG1fTG9jKCBMb2MgKSB7fQotCi0gICAgICAgICAgICAvLyEgRnVuY3Rpb24gb3BlcmF0b3IKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzLiBDYXNlIGlzIGlnbm9yZWQuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBjb25zdCBUMSYgQXJnMSwgY29uc3QgVDImIEFyZzIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA+PSAweDU2MCkgJiYgKF9fQk9STEFORENfXyA8PSAweDU2NCkgJiYgIWRlZmluZWQoX1VTRV9PTERfUldfU1RMKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0b3VwcGVyKEFyZzEpPHN0ZDo6dG91cHBlcihBcmcyKTsKLSAgICAgICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0b3VwcGVyPFQxPihBcmcxLG1fTG9jKTxzdGQ6OnRvdXBwZXI8VDI+KEFyZzIsbV9Mb2MpOwotICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgfQotCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGQ6OmxvY2FsZSBtX0xvYzsKLSAgICAgICAgfTsKLQotICAgICAgICAvLyAgaXNfbm90X2dyZWF0ZXIgZnVuY3RvciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBpc19ub3RfZ3JlYXRlciBmdW5jdG9yCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29udmVuaWVudCB2ZXJzaW9uIG9mIHN0YW5kYXJkIHN0ZDo6bm90X2dyZWF0ZXJfdG8uIE9wZXJhdGlvbiBpcyB0ZW1wbGF0ZWQsIHRoZXJlZm9yZSBpdCBpcyAKLSAgICAgICAgICAgIG5vdCByZXF1aXJlZCB0byBzcGVjaWZ5IHRoZSBleGFjdCB0eXBlcyB1cG9uIHRoZSBjb25zdHJ1Y3Rpb24KLSAgICAgICAgICovCi0gICAgICAgIHN0cnVjdCBpc19ub3RfZ3JlYXRlcgotICAgICAgICB7Ci0gICAgICAgICAgICAvLyEgRnVuY3RvciBvcGVyYXRpb24KLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzIHVzaW5nID4gb3BlcmF0b3IKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBjb25zdCBUMSYgQXJnMSwgY29uc3QgVDImIEFyZzIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBBcmcxPD1BcmcyOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8hIGNhc2UgaW5zZW5zaXRpdmUgdmVyc2lvbiBvZiBpc19ub3RfZ3JlYXRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBwcmVkaWNhdGUuIENvbXBhcmlzb24gaXMgZG9uZSB1c2luZwotICAgICAgICAgICAgc3BlY2lmaWVkIGxvY2FsZXMuCi0gICAgICAgICovCi0gICAgICAgIHN0cnVjdCBpc19ub3RfaWdyZWF0ZXIKLSAgICAgICAgewotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yCi0gICAgICAgICAgICAvKiEKLSAgICAgICAgICAgICAgICBccGFyYW0gTG9jIGxvY2FsZXMgdXNlZCBmb3IgY29tcGFyaXNvbgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlzX25vdF9pZ3JlYXRlciggY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkgOgotICAgICAgICAgICAgICAgIG1fTG9jKCBMb2MgKSB7fQotCi0gICAgICAgICAgICAvLyEgRnVuY3Rpb24gb3BlcmF0b3IKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzLiBDYXNlIGlzIGlnbm9yZWQuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBjb25zdCBUMSYgQXJnMSwgY29uc3QgVDImIEFyZzIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA+PSAweDU2MCkgJiYgKF9fQk9STEFORENfXyA8PSAweDU2NCkgJiYgIWRlZmluZWQoX1VTRV9PTERfUldfU1RMKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0b3VwcGVyKEFyZzEpPD1zdGQ6OnRvdXBwZXIoQXJnMik7Ci0gICAgICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dG91cHBlcjxUMT4oQXJnMSxtX0xvYyk8PXN0ZDo6dG91cHBlcjxUMj4oQXJnMixtX0xvYyk7Ci0gICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHN0ZDo6bG9jYWxlIG1fTG9jOwotICAgICAgICB9OwotCi0KLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLQotICAgIC8vIHB1bGwgbmFtZXMgdG8gdGhlIGJvb3N0IG5hbWVzcGFjZQotICAgIHVzaW5nIGFsZ29yaXRobTo6aXNfZXF1YWw7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppc19pZXF1YWw7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppc19sZXNzOwotICAgIHVzaW5nIGFsZ29yaXRobTo6aXNfaWxlc3M7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppc19ub3RfZ3JlYXRlcjsKLSAgICB1c2luZyBhbGdvcml0aG06OmlzX25vdF9pZ3JlYXRlcjsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19DT01QQVJFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmNlcHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmNlcHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjY5OGQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25jZXB0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGNvbmNlcHQuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfQ09OQ0VQVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0NPTkNFUFRfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0X2NoZWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0KLS8qISBcZmlsZSAKLSAgICBEZWZpbmVzIGNvbmNlcHRzIHVzZWQgaW4gc3RyaW5nX2FsZ28gbGlicmFyeQotKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotICAgICAgICAvLyEgRmluZGVyIGNvbmNlcHQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBEZWZpbmVzIHRoZSBGaW5kZXIgY29uY2VwdC4gRmluZGVyIGlzIGEgZnVuY3RvciB3aGljaCBzZWxlY3RzCi0gICAgICAgICAgICBhbiBhcmJpdHJhcnkgcGFydCBvZiBhIHN0cmluZy4gU2VhcmNoIGlzIHBlcmZvcm1lZCBvbgotICAgICAgICAgICAgdGhlIHJhbmdlIHNwZWNpZmllZCBieSBzdGFydGluZyBhbmQgZW5kaW5nIGl0ZXJhdG9ycy4KLQotICAgICAgICAgICAgUmVzdWx0IG9mIHRoZSBmaW5kIG9wZXJhdGlvbiBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGl0ZXJhdG9yX3JhbmdlLgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaW5kZXJULCB0eXBlbmFtZSBJdGVyYXRvclQ+Ci0gICAgICAgIHN0cnVjdCBGaW5kZXJDb25jZXB0Ci0gICAgICAgIHsKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiByYW5nZTsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdm9pZCBjb25zdHJhaW50cygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgcj0oKnBGKShpLGkpOwotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgcmFuZ2UgcjsKLSAgICAgICAgICAgIEl0ZXJhdG9yVCBpOwotICAgICAgICAgICAgRmluZGVyVCogcEY7ICAgIAotICAgICAgICB9OyAvLyBGaW5kZXJfY29uY2VwdAotCi0gICAgICAgIAotICAgICAgICAvLyEgRm9ybWF0dGVyIGNvbmNlcHQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBEZWZpbmVzIHRoZSBGb3JtYXR0ZXIgY29uY2VwdC4gRm9ybWF0dGVyIGlzIGEgZnVuY3Rvciwgd2hpY2gKLSAgICAgICAgICAgIHRha2VzIGEgcmVzdWx0IGZyb20gYSBmaW5kZXIgb3BlcmF0aW9uIGFuZCB0cmFuc2Zvcm1zIGl0Ci0gICAgICAgICAgICBpbiBhIHNwZWNpZmljIHdheS4KLQotICAgICAgICAgICAgUmVzdWx0IG11c3QgYmUgYSBjb250YWluZXIgc3VwcG9ydGVkIGJ5IGNvbnRhaW5lcl90cmFpdHMsIAotICAgICAgICAgICAgb3IgYSByZWZlcmVuY2UgdG8gaXQuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZvcm1hdHRlclQsIHR5cGVuYW1lIEZpbmRlclQsIHR5cGVuYW1lIEl0ZXJhdG9yVD4KLSAgICAgICAgc3RydWN0IEZvcm1hdHRlckNvbmNlcHQKLSAgICAgICAgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB2b2lkIGNvbnN0cmFpbnRzKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpiZWdpbigoKnBGbykoICgqcEYpKGksaSkgKSk7Ci0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZW5kKCgqcEZvKSggKCpwRikoaSxpKSApKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIEl0ZXJhdG9yVCBpOwotICAgICAgICAgICAgRmluZGVyVCogcEY7Ci0gICAgICAgICAgICBGb3JtYXR0ZXJUICpwRm87Ci0gICAgICAgIH07IC8vIEZvcm1hdHRlckNvbmNlcHQ7Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0NPTkNFUFRfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjU5YzFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgY29uZmlnLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0NPTkZJR19IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0NPTkZJR19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfU1RSSU5HX0RFRFVDRURfVFlQRU5BTUUKLSMgICBlcnJvciAibWFjcm8gYWxyZWFkeSBkZWZpbmVkISIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0KLS8vIE1ldHJvd2Vya3Mgd29ya2Fyb3VuZAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKSAvLyA4LngKLSNwcmFnbWEgcGFyc2VfZnVuY190ZW1wbCBvZmYKLSNlbmRpZgotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19DT05GSUdfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uc3RhbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25zdGFudHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWZlMTU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25zdGFudHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgY29uc3RhbnRzLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0NPTlNUQU5UU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0NPTlNUQU5UU19IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotICAgIC8vISBUb2tlbiBjb21wcmVzc2lvbiBtb2RlIAotICAgIC8qIQotICAgICAgICBTcGVjaWZpZXMgdG9rZW4gY29tcHJlc3Npb24gbW9kZSBmb3IgdGhlIHRva2VuX2ZpbmRlci4KLSAgICAqLwotICAgIGVudW0gdG9rZW5fY29tcHJlc3NfbW9kZV90eXBlCi0gICAgewotICAgICAgICB0b2tlbl9jb21wcmVzc19vbiwgICAgLy8hPCBDb21wcmVzcyBhZGphY2VudCB0b2tlbnMKLSAgICAgICAgdG9rZW5fY29tcHJlc3Nfb2ZmICAvLyE8IERvIG5vdCBjb21wcmVzcyBhZGphY2VudCB0b2tlbnMKLSAgICB9OwotICAgIAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotCi0gICAgLy8gcHVsbCB0aGUgbmFtZXMgdG8gdGhlIGJvb3N0IG5hbWVzcGFjZQotICAgIHVzaW5nIGFsZ29yaXRobTo6dG9rZW5fY29tcHJlc3Nfb247Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjp0b2tlbl9jb21wcmVzc19vZmY7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0NPTlNUQU5UU19IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kX2Zvcm1hdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU5ZTQwZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBmaW5kX2Zvcm1hdC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDAzLgotLy8gCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfREVUQUlMX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfREVUQUlMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X3N0b3JlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9yZXBsYWNlX3N0b3JhZ2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotICAgICAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gZmluZF9mb3JtYXRfY29weSAoaXRlcmF0b3IgdmFyaWFudCkgaW1wbGVtZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgZmluZF9mb3JtYXRfY29weV9pbXBsMigKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgICAgIGNvbnN0IElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRmluZFJlc3VsdFQmIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgY29uc3QgRm9ybWF0UmVzdWx0VCYgRm9ybWF0UmVzdWx0ICkKLSAgICAgICAgICAgIHsgICAgICAgCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaW5kX2Zvcm1hdF9zdG9yZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8SW5wdXRUPjo6dHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0UmVzdWx0VCA+IHN0b3JlX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUgc3RvcmUgZm9yIHRoZSBmaW5kIHJlc3VsdAotICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgTSggRmluZFJlc3VsdCwgRm9ybWF0UmVzdWx0LCBGb3JtYXR0ZXIgKTsKLQotICAgICAgICAgICAgICAgIGlmICggIU0gKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTWF0Y2ggbm90IGZvdW5kIC0gcmV0dXJuIG9yaWdpbmFsIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgICAgIE91dHB1dCA9IHN0ZDo6Y29weSggOjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE91dHB1dDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgT3V0cHV0ID0gc3RkOjpjb3B5KCA6Om5kbmJvb3N0OjpiZWdpbihJbnB1dCksIDo6bmRuYm9vc3Q6OmJlZ2luKE0pLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICAvLyBGb3JtYXQgZmluZCByZXN1bHQKLSAgICAgICAgICAgICAgICAvLyBDb3B5IGZvcm1hdHRlZCByZXN1bHQKLSAgICAgICAgICAgICAgICBPdXRwdXQgPSBzdGQ6OmNvcHkoIDo6bmRuYm9vc3Q6OmJlZ2luKE0uZm9ybWF0X3Jlc3VsdCgpKSwgOjpuZG5ib29zdDo6ZW5kKE0uZm9ybWF0X3Jlc3VsdCgpKSwgT3V0cHV0ICk7Ci0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICBPdXRwdXQgPSBzdGQ6OmNvcHkoIE0uZW5kKCksIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCksIE91dHB1dCApOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIE91dHB1dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGZpbmRfZm9ybWF0X2NvcHlfaW1wbCgKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgICAgIGNvbnN0IElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRmluZFJlc3VsdFQmIEZpbmRSZXN1bHQgKQotICAgICAgICAgICAgeyAgIAotICAgICAgICAgICAgICAgIGlmKCA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6Y2hlY2tfZmluZF9yZXN1bHQoSW5wdXQsIEZpbmRSZXN1bHQpICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfZm9ybWF0X2NvcHlfaW1wbDIoIAotICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyKEZpbmRSZXN1bHQpICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y29weSggOjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAKLS8vIGZpbmRfZm9ybWF0X2NvcHkgaW1wbGVtZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsIAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0UmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgSW5wdXRUIGZpbmRfZm9ybWF0X2NvcHlfaW1wbDIoCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICBjb25zdCBGb3JtYXRSZXN1bHRUJiBGb3JtYXRSZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaW5kX2Zvcm1hdF9zdG9yZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8SW5wdXRUPjo6dHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0UmVzdWx0VCA+IHN0b3JlX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUgc3RvcmUgZm9yIHRoZSBmaW5kIHJlc3VsdAotICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgTSggRmluZFJlc3VsdCwgRm9ybWF0UmVzdWx0LCBGb3JtYXR0ZXIgKTsKLQotICAgICAgICAgICAgICAgIGlmICggIU0gKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTWF0Y2ggbm90IGZvdW5kIC0gcmV0dXJuIG9yaWdpbmFsIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnB1dFQoIElucHV0ICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgSW5wdXRUIE91dHB1dDsKLSAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjppbnNlcnQoIE91dHB1dCwgOjpuZG5ib29zdDo6ZW5kKE91dHB1dCksIDo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KSwgTS5iZWdpbigpICk7Ci0gICAgICAgICAgICAgICAgLy8gQ29weSBmb3JtYXR0ZWQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjppbnNlcnQoIE91dHB1dCwgOjpuZG5ib29zdDo6ZW5kKE91dHB1dCksIE0uZm9ybWF0X3Jlc3VsdCgpICk7Ci0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6Omluc2VydCggT3V0cHV0LCA6Om5kbmJvb3N0OjplbmQoT3V0cHV0KSwgTS5lbmQoKSwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSApOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIE91dHB1dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgSW5wdXRUIGZpbmRfZm9ybWF0X2NvcHlfaW1wbCgKLSAgICAgICAgICAgICAgICBjb25zdCBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIGNvbnN0IEZpbmRSZXN1bHRUJiBGaW5kUmVzdWx0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmKCA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6Y2hlY2tfZmluZF9yZXN1bHQoSW5wdXQsIEZpbmRSZXN1bHQpICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfZm9ybWF0X2NvcHlfaW1wbDIoCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIoRmluZFJlc3VsdCkgKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5wdXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gLy8gcmVwbGFjZSBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICAgICAgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIGZpbmRfZm9ybWF0X2ltcGwyKCAKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIGNvbnN0IEZpbmRSZXN1bHRUJiBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgIGNvbnN0IEZvcm1hdFJlc3VsdFQmIEZvcm1hdFJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGZpbmRfZm9ybWF0X3N0b3JlPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9pdGVyYXRvcjxJbnB1dFQ+Ojp0eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRSZXN1bHRUID4gc3RvcmVfdHlwZTsKLQotICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBzdG9yZSBmb3IgdGhlIGZpbmQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgc3RvcmVfdHlwZSBNKCBGaW5kUmVzdWx0LCBGb3JtYXRSZXN1bHQsIEZvcm1hdHRlciApOwotCi0gICAgICAgICAgICAgICAgaWYgKCAhTSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBTZWFyY2ggbm90IGZvdW5kIC0gcmV0dXJuIG9yaWdpbmFsIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIG1hdGNoCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OnJlcGxhY2UoIElucHV0LCBNLmJlZ2luKCksIE0uZW5kKCksIE0uZm9ybWF0X3Jlc3VsdCgpICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIGZpbmRfZm9ybWF0X2ltcGwoIAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRmluZFJlc3VsdFQmIEZpbmRSZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpjaGVja19maW5kX3Jlc3VsdChJbnB1dCwgRmluZFJlc3VsdCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2Zvcm1hdF9pbXBsMigKLSAgICAgICAgICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlcihGaW5kUmVzdWx0KSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX0RFVEFJTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfYWxsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfYWxsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJkMDc2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X2FsbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzMgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgZmluZF9mb3JtYXRfYWxsLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX0FMTF9ERVRBSUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19GSU5EX0ZPUk1BVF9BTExfREVUQUlMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfc3RvcmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3JlcGxhY2Vfc3RvcmFnZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0gICAgICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBmaW5kX2Zvcm1hdF9hbGxfY29weSAoaXRlcmF0b3IgdmFyaWFudCkgaW1wbGVtZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0UmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwyKAotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICBjb25zdCBGb3JtYXRSZXN1bHRUJiBGb3JtYXRSZXN1bHQgKQotICAgICAgICAgICAgeyAgICAgICAKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8SW5wdXRUPjo6dHlwZSBpbnB1dF9pdGVyYXRvcl90eXBlOyAKLQotICAgICAgICAgICAgICAgIHR5cGVkZWYgZmluZF9mb3JtYXRfc3RvcmU8Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRSZXN1bHRUID4gc3RvcmVfdHlwZTsKLQotICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBzdG9yZSBmb3IgdGhlIGZpbmQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgc3RvcmVfdHlwZSBNKCBGaW5kUmVzdWx0LCBGb3JtYXRSZXN1bHQsIEZvcm1hdHRlciApOwotCi0gICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBsYXN0IG1hdGNoCi0gICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBMYXN0TWF0Y2g9OjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpOwotCi0gICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBtYXRjaGVzCi0gICAgICAgICAgICAgICAgd2hpbGUoIE0gKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZQotICAgICAgICAgICAgICAgICAgICBPdXRwdXQgPSBzdGQ6OmNvcHkoIExhc3RNYXRjaCwgTS5iZWdpbigpLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29weSBmb3JtYXR0ZWQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgICAgIE91dHB1dCA9IHN0ZDo6Y29weSggOjpuZG5ib29zdDo6YmVnaW4oTS5mb3JtYXRfcmVzdWx0KCkpLCA6Om5kbmJvb3N0OjplbmQoTS5mb3JtYXRfcmVzdWx0KCkpLCBPdXRwdXQgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZWVkIHRvIHRoZSBuZXh0IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgIExhc3RNYXRjaD1NLmVuZCgpOwotICAgICAgICAgICAgICAgICAgICBNPUZpbmRlciggTGFzdE1hdGNoLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICBPdXRwdXQgPSBzdGQ6OmNvcHkoIExhc3RNYXRjaCwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSwgT3V0cHV0ICk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gT3V0cHV0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQgPgotICAgICAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBmaW5kX2Zvcm1hdF9hbGxfY29weV9pbXBsKAotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCApCi0gICAgICAgICAgICB7ICAgCi0gICAgICAgICAgICAgICAgaWYoIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpjaGVja19maW5kX3Jlc3VsdChJbnB1dCwgRmluZFJlc3VsdCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6ZmluZF9mb3JtYXRfYWxsX2NvcHlfaW1wbDIoIAotICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGaW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyKEZpbmRSZXN1bHQpICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y29weSggOjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAvLyBmaW5kX2Zvcm1hdF9hbGxfY29weSBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgSW5wdXRULCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0UmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgSW5wdXRUIGZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwyKAotICAgICAgICAgICAgICAgIGNvbnN0IElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRmluZGVyVCBGaW5kZXIsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRmluZFJlc3VsdFQmIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgY29uc3QgRm9ybWF0UmVzdWx0VCYgRm9ybWF0UmVzdWx0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxJbnB1dFQ+Ojp0eXBlIGlucHV0X2l0ZXJhdG9yX3R5cGU7IAotCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaW5kX2Zvcm1hdF9zdG9yZTwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFJlc3VsdFQgPiBzdG9yZV90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHN0b3JlIGZvciB0aGUgZmluZCByZXN1bHQKLSAgICAgICAgICAgICAgICBzdG9yZV90eXBlIE0oIEZpbmRSZXN1bHQsIEZvcm1hdFJlc3VsdCwgRm9ybWF0dGVyICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGxhc3QgbWF0Y2gKLSAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIExhc3RNYXRjaD06Om5kbmJvb3N0OjpiZWdpbihJbnB1dCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBPdXRwdXQgdGVtcG9yYXJ5Ci0gICAgICAgICAgICAgICAgSW5wdXRUIE91dHB1dDsKLQotICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBhbGwgbWF0Y2hlcwotICAgICAgICAgICAgICAgIHdoaWxlKCBNICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjppbnNlcnQoIE91dHB1dCwgOjpuZG5ib29zdDo6ZW5kKE91dHB1dCksIExhc3RNYXRjaCwgTS5iZWdpbigpICk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgZm9ybWF0dGVkIHJlc3VsdAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6Omluc2VydCggT3V0cHV0LCA6Om5kbmJvb3N0OjplbmQoT3V0cHV0KSwgTS5mb3JtYXRfcmVzdWx0KCkgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZWVkIHRvIHRoZSBuZXh0IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgIExhc3RNYXRjaD1NLmVuZCgpOwotICAgICAgICAgICAgICAgICAgICBNPUZpbmRlciggTGFzdE1hdGNoLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6aW5zZXJ0KCBPdXRwdXQsIDo6bmRuYm9vc3Q6OmVuZChPdXRwdXQpLCBMYXN0TWF0Y2gsIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkgKTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBPdXRwdXQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsIAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgSW5wdXRUIGZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwoCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiggOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmNoZWNrX2ZpbmRfcmVzdWx0KElucHV0LCBGaW5kUmVzdWx0KSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2Zvcm1hdF9hbGxfY29weV9pbXBsMigKLSAgICAgICAgICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgRmluZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlcihGaW5kUmVzdWx0KSApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnB1dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAvLyBmaW5kX2Zvcm1hdF9hbGwgaW1wbGVtZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICAgICAgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdFJlc3VsdFQgPgotICAgICAgICAgICAgaW5saW5lIHZvaWQgZmluZF9mb3JtYXRfYWxsX2ltcGwyKCAKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIEZpbmRSZXN1bHRUIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgRm9ybWF0UmVzdWx0VCBGb3JtYXRSZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgIHJhbmdlX2l0ZXJhdG9yPElucHV0VD46OnR5cGUgaW5wdXRfaXRlcmF0b3JfdHlwZTsgCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaW5kX2Zvcm1hdF9zdG9yZTwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFJlc3VsdFQgPiBzdG9yZV90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHN0b3JlIGZvciB0aGUgZmluZCByZXN1bHQKLSAgICAgICAgICAgICAgICBzdG9yZV90eXBlIE0oIEZpbmRSZXN1bHQsIEZvcm1hdFJlc3VsdCwgRm9ybWF0dGVyICk7Ci0gICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSW5zdGFudGlhdGUgcmVwbGFjZW1lbnQgc3RvcmFnZQotICAgICAgICAgICAgICAgIHN0ZDo6ZGVxdWU8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV92YWx1ZTxJbnB1dFQ+Ojp0eXBlPiBTdG9yYWdlOwotCi0gICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSByZXBsYWNlbWVudCBpdGVyYXRvcnMKLSAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIEluc2VydEl0PTo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KTsKLSAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIFNlYXJjaEl0PTo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB3aGlsZSggTSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzIHRoZSBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAgIEluc2VydEl0PXByb2Nlc3Nfc2VnbWVudCggCi0gICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRJdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaEl0LAotICAgICAgICAgICAgICAgICAgICAgICAgTS5iZWdpbigpICk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAvLyBBZGp1c3Qgc2VhcmNoIGl0ZXJhdG9yCi0gICAgICAgICAgICAgICAgICAgIFNlYXJjaEl0PU0uZW5kKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQ29weSBmb3JtYXR0ZWQgcmVwbGFjZSB0byB0aGUgc3RvcmFnZQotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6Y29weV90b19zdG9yYWdlKCBTdG9yYWdlLCBNLmZvcm1hdF9yZXN1bHQoKSApOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgcmFuZ2UgZm9yIGEgbmV4dCBtYXRjaAotICAgICAgICAgICAgICAgICAgICBNPUZpbmRlciggU2VhcmNoSXQsIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBwcm9jZXNzIHRoZSBsYXN0IHNlZ21lbnQKLSAgICAgICAgICAgICAgICBJbnNlcnRJdD06Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6cHJvY2Vzc19zZWdtZW50KCAKLSAgICAgICAgICAgICAgICAgICAgU3RvcmFnZSwKLSAgICAgICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgIEluc2VydEl0LAotICAgICAgICAgICAgICAgICAgICBTZWFyY2hJdCwKLSAgICAgICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZW5kKElucHV0KSApOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICggU3RvcmFnZS5lbXB0eSgpICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRydW5jYXRlIGlucHV0Ci0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjplcmFzZSggSW5wdXQsIEluc2VydEl0LCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgcmVtYWluaW5nIGRhdGEgdG8gdGhlIGVuZCBvZiBpbnB1dAotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6aW5zZXJ0KCBJbnB1dCwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSwgU3RvcmFnZS5iZWdpbigpLCBTdG9yYWdlLmVuZCgpICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIGZpbmRfZm9ybWF0X2FsbF9pbXBsKCAKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIEZpbmRSZXN1bHRUIEZpbmRSZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpjaGVja19maW5kX3Jlc3VsdChJbnB1dCwgRmluZFJlc3VsdCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2Zvcm1hdF9hbGxfaW1wbDIoCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIoRmluZFJlc3VsdCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19GSU5EX0ZPUk1BVF9BTExfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kX2Zvcm1hdF9zdG9yZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X3N0b3JlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODljMTM3Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X3N0b3JlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGZpbmRfZm9ybWF0X3N0b3JlLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX1NUT1JFX0RFVEFJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX1NUT1JFX0RFVEFJTF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0gICAgICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAgdGVtcG9yYXJ5IGZvcm1hdCBhbmQgZmluZCByZXN1bHQgc3RvcmFnZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE0MDApCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ1MTIpIC8vYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jZW5kaWYKLSAgICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0UmVzdWx0VCA+Ci0gICAgICAgICAgICBjbGFzcyBmaW5kX2Zvcm1hdF9zdG9yZSA6IAotICAgICAgICAgICAgICAgIHB1YmxpYyBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgewotICAgICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgICAgIC8vIHR5cGVkZWZzCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiBiYXNlX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3JtYXR0ZXJUICBmb3JtYXR0ZXJfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcm1hdFJlc3VsdFQgZm9ybWF0X3Jlc3VsdF90eXBlOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIGZpbmRfZm9ybWF0X3N0b3JlKCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VfdHlwZSYgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdF9yZXN1bHRfdHlwZSYgRm9ybWF0UmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyX3R5cGUmIEZvcm1hdHRlciApIDoKLSAgICAgICAgICAgICAgICAgICAgYmFzZV90eXBlKEZpbmRSZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICBtX0Zvcm1hdFJlc3VsdChGb3JtYXRSZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICBtX0Zvcm1hdHRlcihGb3JtYXR0ZXIpIHt9Ci0KLSAgICAgICAgICAgICAgICAvLyBBc3NpZ25tZW50Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZpbmRSZXN1bHRUID4KLSAgICAgICAgICAgICAgICBmaW5kX2Zvcm1hdF9zdG9yZSYgb3BlcmF0b3I9KCBGaW5kUmVzdWx0VCBGaW5kUmVzdWx0ICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+OjpvcGVyYXRvcj0oRmluZFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmKCAhdGhpcy0+ZW1wdHkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fRm9ybWF0UmVzdWx0PW1fRm9ybWF0dGVyKEZpbmRSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gUmV0cmlldmUgZm9ybWF0IHJlc3VsdAotICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdF9yZXN1bHRfdHlwZSYgZm9ybWF0X3Jlc3VsdCgpCi0gICAgICAgICAgICAgICAgeyAgIAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9Gb3JtYXRSZXN1bHQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIGZvcm1hdF9yZXN1bHRfdHlwZSBtX0Zvcm1hdFJlc3VsdDsKLSAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXJfdHlwZSYgbV9Gb3JtYXR0ZXI7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFQsIHR5cGVuYW1lIEZpbmRSZXN1bHRUPgotICAgICAgICAgICAgYm9vbCBjaGVja19maW5kX3Jlc3VsdChJbnB1dFQmLCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8SW5wdXRUPjo6dHlwZSBpbnB1dF9pdGVyYXRvcl90eXBlOyAKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxpbnB1dF9pdGVyYXRvcl90eXBlPiBSZXN1bHRSYW5nZShGaW5kUmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gIVJlc3VsdFJhbmdlLmVtcHR5KCk7Ci0gICAgICAgICAgICB9Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE0MDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0gICAgICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfU1RPUkVfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDQ2ZTkyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0NiArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBmaW5kZXIuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwNi4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfRklOREVSX0RFVEFJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0ZJTkRFUl9ERVRBSUxfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25zdGFudHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2FzX2xpdGVyYWwuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotICAgICAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotCi0vLyAgZmluZCBmaXJzdCBmdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gZmluZCBhIHN1YnNlcXVlbmNlIGluIHRoZSBzZXF1ZW5jZSAoIGZ1bmN0b3IgKQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBSZXR1cm5zIGEgcGFpciA8YmVnaW4sZW5kPiBtYXJraW5nIHRoZSBzdWJzZXF1ZW5jZSBpbiB0aGUgc2VxdWVuY2UuCi0gICAgICAgICAgICAgICAgSWYgdGhlIGZpbmQgZmFpbHMsIGZ1bmN0b3IgcmV0dXJucyA8RW5kLEVuZD4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWFyY2hJdGVyYXRvclQsdHlwZW5hbWUgUHJlZGljYXRlVD4KLSAgICAgICAgICAgIHN0cnVjdCBmaXJzdF9maW5kZXJGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBTZWFyY2hJdGVyYXRvclQgc2VhcmNoX2l0ZXJhdG9yX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpb24KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VhcmNoVCA+Ci0gICAgICAgICAgICAgICAgZmlyc3RfZmluZGVyRiggY29uc3QgU2VhcmNoVCYgU2VhcmNoLCBQcmVkaWNhdGVUIENvbXAgKSA6Ci0gICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoKDo6bmRuYm9vc3Q6OmJlZ2luKFNlYXJjaCksIDo6bmRuYm9vc3Q6OmVuZChTZWFyY2gpKSwgbV9Db21wKENvbXApIHt9Ci0gICAgICAgICAgICAgICAgZmlyc3RfZmluZGVyRigKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pdGVyYXRvcl90eXBlIFNlYXJjaEJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUgU2VhcmNoRW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVCBDb21wICkgOgotICAgICAgICAgICAgICAgICAgICBtX1NlYXJjaChTZWFyY2hCZWdpbiwgU2VhcmNoRW5kKSwgbV9Db21wKENvbXApIHt9Ci0KLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcndhcmRJdGVyYXRvclQgaW5wdXRfaXRlcmF0b3JfdHlwZTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBPdXRlciBsb29wCi0gICAgICAgICAgICAgICAgICAgIGZvcihpbnB1dF9pdGVyYXRvcl90eXBlIE91dGVySXQ9QmVnaW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBPdXRlckl0IT1FbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICArK091dGVySXQpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjawotICAgICAgICAgICAgICAgICAgICAgICAgaWYoIG5kbmJvb3N0OjplbXB0eShtX1NlYXJjaCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggRW5kLCBFbmQgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBJbm5lckl0PU91dGVySXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSBTdWJzdHJJdD1tX1NlYXJjaC5iZWdpbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yKDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbm5lckl0IT1FbmQgJiYgU3Vic3RySXQhPW1fU2VhcmNoLmVuZCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrSW5uZXJJdCwrK1N1YnN0ckl0KQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhKCBtX0NvbXAoKklubmVySXQsKlN1YnN0ckl0KSApICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YnN0cmluZyBtYXRjaGluZyBzdWNjZWVkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggU3Vic3RySXQ9PW1fU2VhcmNoLmVuZCgpICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIE91dGVySXQsIElubmVySXQgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggRW5kLCBFbmQgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8c2VhcmNoX2l0ZXJhdG9yX3R5cGU+IG1fU2VhcmNoOwotICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgbV9Db21wOwotICAgICAgICAgICAgfTsKLQotLy8gIGZpbmQgbGFzdCBmdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gZmluZCB0aGUgbGFzdCBtYXRjaCBhIHN1YnNlcXVlbmNlIGluIHRoZSBzZXF1ZW5jZSAoIGZ1bmN0b3IgKQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBSZXR1cm5zIGEgcGFpciA8YmVnaW4sZW5kPiBtYXJraW5nIHRoZSBzdWJzZXF1ZW5jZSBpbiB0aGUgc2VxdWVuY2UuCi0gICAgICAgICAgICAgICAgSWYgdGhlIGZpbmQgZmFpbHMsIHJldHVybnMgPEVuZCxFbmQ+Ci0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VhcmNoSXRlcmF0b3JULCB0eXBlbmFtZSBQcmVkaWNhdGVUPgotICAgICAgICAgICAgc3RydWN0IGxhc3RfZmluZGVyRgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgU2VhcmNoSXRlcmF0b3JUIHNlYXJjaF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgZmlyc3RfZmluZGVyRjwKLSAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQ+IGZpcnN0X2ZpbmRlcl90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlYXJjaFQgPgotICAgICAgICAgICAgICAgIGxhc3RfZmluZGVyRiggY29uc3QgU2VhcmNoVCYgU2VhcmNoLCBQcmVkaWNhdGVUIENvbXAgKSA6Ci0gICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoKDo6bmRuYm9vc3Q6OmJlZ2luKFNlYXJjaCksIDo6bmRuYm9vc3Q6OmVuZChTZWFyY2gpKSwgbV9Db21wKENvbXApIHt9Ci0gICAgICAgICAgICAgICAgbGFzdF9maW5kZXJGKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUgU2VhcmNoQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSBTZWFyY2hFbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVUIENvbXAgKSA6Ci0gICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoKFNlYXJjaEJlZ2luLCBTZWFyY2hFbmQpLCBtX0NvbXAoQ29tcCkge30KLQotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYoIG5kbmJvb3N0OjplbXB0eShtX1NlYXJjaCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBFbmQsIEVuZCApOwotCi0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6OgotICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvclQ+OjppdGVyYXRvcl9jYXRlZ29yeSBjYXRlZ29yeTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmluZGl0KCBCZWdpbiwgRW5kLCBjYXRlZ29yeSgpICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIC8vIGZvcndhcmQgaXRlcmF0b3IKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBmaW5kaXQoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kLAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9yd2FyZEl0ZXJhdG9yVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICAgICAgICAgIGZpcnN0X2ZpbmRlcl90eXBlIGZpcnN0X2ZpbmRlcigKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoLmJlZ2luKCksIG1fU2VhcmNoLmVuZCgpLCBtX0NvbXAgKTsKLQotICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSBNPWZpcnN0X2ZpbmRlciggQmVnaW4sIEVuZCApOwotICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSBMYXN0PU07Ci0KLSAgICAgICAgICAgICAgICAgICAgd2hpbGUoIE0gKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMYXN0PU07Ci0gICAgICAgICAgICAgICAgICAgICAgICBNPWZpcnN0X2ZpbmRlciggOjpuZG5ib29zdDo6ZW5kKE0pLCBFbmQgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBMYXN0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIGJpZGlyZWN0aW9uYWwgaXRlcmF0b3IKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBmaW5kaXQoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kLAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9yd2FyZEl0ZXJhdG9yVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIE91dGVyIGxvb3AKLSAgICAgICAgICAgICAgICAgICAgZm9yKGlucHV0X2l0ZXJhdG9yX3R5cGUgT3V0ZXJJdD1FbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBPdXRlckl0IT1CZWdpbjsgKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIE91dGVySXQyPS0tT3V0ZXJJdDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBJbm5lckl0PU91dGVySXQyOwotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUgU3Vic3RySXQ9bV9TZWFyY2guYmVnaW4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcig7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5uZXJJdCE9RW5kICYmIFN1YnN0ckl0IT1tX1NlYXJjaC5lbmQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArK0lubmVySXQsKytTdWJzdHJJdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggISggbV9Db21wKCpJbm5lckl0LCpTdWJzdHJJdCkgKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTdWJzdHJpbmcgbWF0Y2hpbmcgc3VjY2VlZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiggU3Vic3RySXQ9PW1fU2VhcmNoLmVuZCgpICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIE91dGVySXQyLCBJbm5lckl0ICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEVuZCwgRW5kICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPHNlYXJjaF9pdGVyYXRvcl90eXBlPiBtX1NlYXJjaDsKLSAgICAgICAgICAgICAgICBQcmVkaWNhdGVUIG1fQ29tcDsKLSAgICAgICAgICAgIH07Ci0KLS8vICBmaW5kIG4tdGggZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIGZpbmQgdGhlIG4tdGggbWF0Y2ggb2YgYSBzdWJzZXF1ZW5jZSBpbiB0aGUgc2VxdWVuY2UgKCBmdW5jdG9yICkKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgUmV0dXJucyBhIHBhaXIgPGJlZ2luLGVuZD4gbWFya2luZyB0aGUgc3Vic2VxdWVuY2UgaW4gdGhlIHNlcXVlbmNlLgotICAgICAgICAgICAgICAgIElmIHRoZSBmaW5kIGZhaWxzLCByZXR1cm5zIDxFbmQsRW5kPgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlYXJjaEl0ZXJhdG9yVCwgdHlwZW5hbWUgUHJlZGljYXRlVD4KLSAgICAgICAgICAgIHN0cnVjdCBudGhfZmluZGVyRgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgU2VhcmNoSXRlcmF0b3JUIHNlYXJjaF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgZmlyc3RfZmluZGVyRjwKLSAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQ+IGZpcnN0X2ZpbmRlcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgbGFzdF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVD4gbGFzdF9maW5kZXJfdHlwZTsKLQotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZWFyY2hUID4KLSAgICAgICAgICAgICAgICBudGhfZmluZGVyRigKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlYXJjaFQmIFNlYXJjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBOdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVUIENvbXApIDoKLSAgICAgICAgICAgICAgICAgICAgbV9TZWFyY2goOjpuZG5ib29zdDo6YmVnaW4oU2VhcmNoKSwgOjpuZG5ib29zdDo6ZW5kKFNlYXJjaCkpLAotICAgICAgICAgICAgICAgICAgICBtX050aChOdGgpLAotICAgICAgICAgICAgICAgICAgICBtX0NvbXAoQ29tcCkge30KLSAgICAgICAgICAgICAgICBudGhfZmluZGVyRigKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pdGVyYXRvcl90eXBlIFNlYXJjaEJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUgU2VhcmNoRW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IE50aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgQ29tcCkgOgotICAgICAgICAgICAgICAgICAgICBtX1NlYXJjaChTZWFyY2hCZWdpbiwgU2VhcmNoRW5kKSwKLSAgICAgICAgICAgICAgICAgICAgbV9OdGgoTnRoKSwKLSAgICAgICAgICAgICAgICAgICAgbV9Db21wKENvbXApIHt9Ci0KLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZihtX050aD49MCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRfZm9yd2FyZChCZWdpbiwgRW5kLCBtX050aCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmluZF9iYWNrd2FyZChCZWdpbiwgRW5kLCAtbV9OdGgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50YXRpb24gaGVscGVycwotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIGZpbmRfZm9yd2FyZCgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBOKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU2FuaXR5IGNoZWNrCi0gICAgICAgICAgICAgICAgICAgIGlmKCBuZG5ib29zdDo6ZW1wdHkobV9TZWFyY2gpICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggRW5kLCBFbmQgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBJbnN0YW50aWF0ZSBmaW5kIGZ1bmN0b3IKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RfZmluZGVyX3R5cGUgZmlyc3RfZmluZGVyKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9TZWFyY2guYmVnaW4oKSwgbV9TZWFyY2guZW5kKCksIG1fQ29tcCApOwotCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlIE0oIEJlZ2luLCBCZWdpbiApOwotCi0gICAgICAgICAgICAgICAgICAgIGZvciggdW5zaWduZWQgaW50IG49MDsgbjw9TjsgKytuICkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmluZCBuZXh0IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICBNPWZpcnN0X2ZpbmRlciggOjpuZG5ib29zdDo6ZW5kKE0pLCBFbmQgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhTSApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3Vic2VxdWVuY2Ugbm90IGZvdW5kLCByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBNOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIGZpbmRfYmFja3dhcmQoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kLAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgTikgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9yd2FyZEl0ZXJhdG9yVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjawotICAgICAgICAgICAgICAgICAgICBpZiggbmRuYm9vc3Q6OmVtcHR5KG1fU2VhcmNoKSApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEVuZCwgRW5kICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gSW5zdGFudGlhdGUgZmluZCBmdW5jdG9yCi0gICAgICAgICAgICAgICAgICAgIGxhc3RfZmluZGVyX3R5cGUgbGFzdF9maW5kZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBtX1NlYXJjaC5iZWdpbigpLCBtX1NlYXJjaC5lbmQoKSwgbV9Db21wICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUgTSggRW5kLCBFbmQgKTsKLQotICAgICAgICAgICAgICAgICAgICBmb3IoIHVuc2lnbmVkIGludCBuPTE7IG48PU47ICsrbiApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpbmQgbmV4dCBtYXRjaAotICAgICAgICAgICAgICAgICAgICAgICAgTT1sYXN0X2ZpbmRlciggQmVnaW4sIDo6bmRuYm9vc3Q6OmJlZ2luKE0pICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIU0gKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YnNlcXVlbmNlIG5vdCBmb3VuZCwgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTTsKLSAgICAgICAgICAgICAgICB9Ci0KLQotICAgICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxzZWFyY2hfaXRlcmF0b3JfdHlwZT4gbV9TZWFyY2g7Ci0gICAgICAgICAgICAgICAgaW50IG1fTnRoOwotICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgbV9Db21wOwotICAgICAgICAgICAgfTsKLQotLy8gIGZpbmQgaGVhZC90YWlsIGltcGxlbWVudGF0aW9uIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgZmluZF9oZWFkX2ltcGwoCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCwKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgTiwKLSAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcndhcmRJdGVyYXRvclQgaW5wdXRfaXRlcmF0b3JfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBJdD1CZWdpbjsKLSAgICAgICAgICAgICAgICBmb3IoCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBJbmRleD0wOwotICAgICAgICAgICAgICAgICAgICBJbmRleDxOICYmIEl0IT1FbmQ7ICsrSW5kZXgsKytJdCApIHt9OwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBCZWdpbiwgSXQgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICBmaW5kX2hlYWRfaW1wbCgKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kLAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBOLAotICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9yd2FyZEl0ZXJhdG9yVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIChFbmQ8PUJlZ2luKSB8fCAoIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oRW5kLUJlZ2luKSA8IE4gKSApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggQmVnaW4sIEVuZCApOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKEJlZ2luLEJlZ2luK04pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBGaW5kIGhlYWQgaW1wbGVtZW50YXRpb24KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgIGZpbmRfaGVhZF9pbXBsKAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IE4gKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6OgotICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yVD46Oml0ZXJhdG9yX2NhdGVnb3J5IGNhdGVnb3J5OwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2hlYWRfaW1wbCggQmVnaW4sIEVuZCwgTiwgY2F0ZWdvcnkoKSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgIGZpbmRfdGFpbF9pbXBsKAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IE4sCi0gICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBJbmRleD0wOwotICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUgSXQ9QmVnaW47Ci0gICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBJdDI9QmVnaW47Ci0KLSAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIEl0MiBieSBOIGluY3JlbWVudHMKLSAgICAgICAgICAgICAgICBmb3IoIEluZGV4PTA7IEluZGV4PE4gJiYgSXQyIT1FbmQ7ICsrSW5kZXgsKytJdDIgKSB7fTsKLQotICAgICAgICAgICAgICAgIC8vIEFkdmFuY2UgSXQsIEl0MiB0byB0aGUgZW5kCi0gICAgICAgICAgICAgICAgZm9yKDsgSXQyIT1FbmQ7ICsrSXQsKytJdDIgKSB7fTsKLQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggSXQsIEl0MiApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgIGZpbmRfdGFpbF9pbXBsKAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IE4sCi0gICAgICAgICAgICAgICAgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUgSXQ9RW5kOwotICAgICAgICAgICAgICAgIGZvcigKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IEluZGV4PTA7Ci0gICAgICAgICAgICAgICAgICAgIEluZGV4PE4gJiYgSXQhPUJlZ2luOyArK0luZGV4LC0tSXQgKSB7fTsKLQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggSXQsIEVuZCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgIGZpbmRfdGFpbF9pbXBsKAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IE4sCi0gICAgICAgICAgICAgICAgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgIGlmICggKEVuZDw9QmVnaW4pIHx8ICggc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihFbmQtQmVnaW4pIDwgTiApICkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBCZWdpbiwgRW5kICk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEVuZC1OLCBFbmQgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgZmluZF90YWlsX2ltcGwoCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCwKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgTiApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6Ci0gICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3JUPjo6aXRlcmF0b3JfY2F0ZWdvcnkgY2F0ZWdvcnk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfdGFpbF9pbXBsKCBCZWdpbiwgRW5kLCBOLCBjYXRlZ29yeSgpICk7Ci0gICAgICAgICAgICB9Ci0KLQotCi0vLyAgZmluZCBoZWFkIGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0KLSAgICAgICAgICAgIC8vIGZpbmQgYSBoZWFkIGluIHRoZSBzZXF1ZW5jZSAoIGZ1bmN0b3IgKQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBUaGlzIGZ1bmN0b3IgZmluZCBhIGhlYWQgb2YgdGhlIHNwZWNpZmllZCByYW5nZS4gRm9yCi0gICAgICAgICAgICAgICAgYSBzcGVjaWZpZWQgTiwgdGhlIGhlYWQgaXMgYSBzdWJzZXF1ZW5jZSBvZiBOIHN0YXJ0aW5nCi0gICAgICAgICAgICAgICAgZWxlbWVudHMgb2YgdGhlIHJhbmdlLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHN0cnVjdCBoZWFkX2ZpbmRlckYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpb24KLSAgICAgICAgICAgICAgICBoZWFkX2ZpbmRlckYoIGludCBOICkgOiBtX04oTikge30KLQotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmKG1fTj49MCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2hlYWRfaW1wbCggQmVnaW4sIEVuZCwgbV9OICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiBSZXM9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfdGFpbF9pbXBsKCBCZWdpbiwgRW5kLCAtbV9OICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjptYWtlX2l0ZXJhdG9yX3JhbmdlKEJlZ2luLCBSZXMuYmVnaW4oKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgaW50IG1fTjsKLSAgICAgICAgICAgIH07Ci0KLS8vICBmaW5kIHRhaWwgZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLQotICAgICAgICAgICAgLy8gZmluZCBhIHRhaWwgaW4gdGhlIHNlcXVlbmNlICggZnVuY3RvciApCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIFRoaXMgZnVuY3RvciBmaW5kIGEgdGFpbCBvZiB0aGUgc3BlY2lmaWVkIHJhbmdlLiBGb3IKLSAgICAgICAgICAgICAgICBhIHNwZWNpZmllZCBOLCB0aGUgaGVhZCBpcyBhIHN1YnNlcXVlbmNlIG9mIE4gc3RhcnRpbmcKLSAgICAgICAgICAgICAgICBlbGVtZW50cyBvZiB0aGUgcmFuZ2UuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgc3RydWN0IHRhaWxfZmluZGVyRgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIHRhaWxfZmluZGVyRiggaW50IE4gKSA6IG1fTihOKSB7fQotCi0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICAgICAgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYobV9OPj0wKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfdGFpbF9pbXBsKCBCZWdpbiwgRW5kLCBtX04gKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IFJlcz0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6ZmluZF9oZWFkX2ltcGwoIEJlZ2luLCBFbmQsIC1tX04gKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6Om1ha2VfaXRlcmF0b3JfcmFuZ2UoUmVzLmVuZCgpLCBFbmQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIGludCBtX047Ci0gICAgICAgICAgICB9OwotCi0vLyAgZmluZCB0b2tlbiBmdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gZmluZCBhIHRva2VuIGluIGEgc2VxdWVuY2UgKCBmdW5jdG9yICkKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgVGhpcyBmaW5kIGZ1bmN0b3IgZmluZHMgYSB0b2tlbiBzcGVjaWZpZWQgYmUgYSBwcmVkaWNhdGUKLSAgICAgICAgICAgICAgICBpbiBhIHNlcXVlbmNlLiBJdCBpcyBlcXVpdmFsZW50IG9mIHN0ZDo6ZmluZCBhbGdvcml0aG0sCi0gICAgICAgICAgICAgICAgd2l0aCBhbiBleGNlcHRpb24gdGhhdCBpdCByZXR1cm4gcmFuZ2UgaW5zdGVhZCBvZiBhIHNpbmdsZQotICAgICAgICAgICAgICAgIGl0ZXJhdG9yLgotCi0gICAgICAgICAgICAgICAgSWYgYkNvbXByZXNzIGlzIHNldCB0byB0cnVlLCBhZGphY2VudCBtYXRjaGluZyB0b2tlbnMgYXJlCi0gICAgICAgICAgICAgICAgY29uY2F0ZW5hdGVkIGludG8gb25lIG1hdGNoLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkaWNhdGVUID4KLSAgICAgICAgICAgIHN0cnVjdCB0b2tlbl9maW5kZXJGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW9uCi0gICAgICAgICAgICAgICAgdG9rZW5fZmluZGVyRigKLSAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVCBQcmVkLAotICAgICAgICAgICAgICAgICAgICB0b2tlbl9jb21wcmVzc19tb2RlX3R5cGUgZUNvbXByZXNzPXRva2VuX2NvbXByZXNzX29mZiApIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fUHJlZChQcmVkKSwgbV9lQ29tcHJlc3MoZUNvbXByZXNzKSB7fQotCi0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICAgICAgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEl0PXN0ZDo6ZmluZF9pZiggQmVnaW4sIEVuZCwgbV9QcmVkICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYoIEl0PT1FbmQgKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEVuZCwgRW5kICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEl0Mj1JdDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYoIG1fZUNvbXByZXNzPT10b2tlbl9jb21wcmVzc19vbiApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmluZCBmaXJzdCBub24tbWF0Y2hpbmcgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUoIEl0MiE9RW5kICYmIG1fUHJlZCgqSXQyKSApICsrSXQyOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkdmFuY2UgYnkgb25lIHBvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytJdDI7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggSXQsIEl0MiApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgbV9QcmVkOwotICAgICAgICAgICAgICAgIHRva2VuX2NvbXByZXNzX21vZGVfdHlwZSBtX2VDb21wcmVzczsKLSAgICAgICAgICAgIH07Ci0KLS8vICBmaW5kIHJhbmdlIGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBmaW5kIGEgcmFuZ2UgaW4gdGhlIHNlcXVlbmNlICggZnVuY3RvciApCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIFRoaXMgZnVuY3RvciBhY3R1YWxseSBkb2VzIG5vdCBwZXJmb3JtIGFueSBmaW5kIG9wZXJhdGlvbi4KLSAgICAgICAgICAgICAgICBJdCBhbHdheXMgcmV0dXJucyBnaXZlbiBpdGVyYXRvciByYW5nZSBhcyBhIHJlc3VsdC4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IxVD4KLSAgICAgICAgICAgIHN0cnVjdCByYW5nZV9maW5kZXJGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3IxVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8aW5wdXRfaXRlcmF0b3JfdHlwZT4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpb24KLSAgICAgICAgICAgICAgICByYW5nZV9maW5kZXJGKAotICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIEVuZCApIDogbV9SYW5nZShCZWdpbiwgRW5kKSB7fQotCi0gICAgICAgICAgICAgICAgcmFuZ2VfZmluZGVyRihjb25zdCBpdGVyYXRvcl9yYW5nZTxpbnB1dF9pdGVyYXRvcl90eXBlPiYgUmFuZ2UpIDoKLSAgICAgICAgICAgICAgICAgICAgbV9SYW5nZShSYW5nZSkge30KLQotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IyVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yMlQ+Ci0gICAgICAgICAgICAgICAgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yMlQsCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjJUICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORCggX19NV0VSS1NfXywgPD0gMHgzMDAzICkgCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTxjb25zdCBGb3J3YXJkSXRlcmF0b3IyVD4odGhpcy0+bV9SYW5nZSk7Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3IyVD4obV9SYW5nZS5iZWdpbigpLCBtX1JhbmdlLmVuZCgpKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtX1JhbmdlOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPGlucHV0X2l0ZXJhdG9yX3R5cGU+IG1fUmFuZ2U7Ci0gICAgICAgICAgICB9OwotCi0KLSAgICAgICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19GSU5ERVJfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9mb3JtYXR0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGU1ZGVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZm9ybWF0dGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBmb3JtYXR0ZXIuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19GT1JNQVRURVJfREVUQUlMX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfRk9STUFUVEVSX0RFVEFJTF9IUFAKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3V0aWwuaHBwPgotCi0vLyAgZ2VuZXJpYyByZXBsYWNlIGZ1bmN0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLSAgICAgICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICBjb25zdCBmb3JtYXQgZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gY29uc3RhbnQgZm9ybWF0IGZ1bmN0b3IKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgICAgIHN0cnVjdCBjb25zdF9mb3JtYXRGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FCi0gICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUgZm9ybWF0X2l0ZXJhdG9yOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Zm9ybWF0X2l0ZXJhdG9yPiByZXN1bHRfdHlwZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIGNvbnN0X2Zvcm1hdEYoY29uc3QgUmFuZ2VUJiBGb3JtYXQpIDoKLSAgICAgICAgICAgICAgICAgICAgbV9Gb3JtYXQoOjpuZG5ib29zdDo6YmVnaW4oRm9ybWF0KSwgOjpuZG5ib29zdDo6ZW5kKEZvcm1hdCkpIHt9Ci0KLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlJiBvcGVyYXRvcigpKGNvbnN0IFJhbmdlMlQmKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fRm9ybWF0OwotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRfdHlwZSYgb3BlcmF0b3IoKShjb25zdCBSYW5nZTJUJikgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtX0Zvcm1hdDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUgbV9Gb3JtYXQ7Ci0gICAgICAgICAgICB9OwotCi0vLyAgaWRlbnRpdHkgZm9ybWF0IGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIGlkZW50aXR5IGZvcm1hdCBmdW5jdG9yCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWRlbnRpdHlfZm9ybWF0RgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBSYW5nZTJUID4KLSAgICAgICAgICAgICAgICBjb25zdCBSYW5nZVQmIG9wZXJhdG9yKCkoY29uc3QgUmFuZ2UyVCYgUmVwbGFjZSkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBSYW5nZVQoOjpuZG5ib29zdDo6YmVnaW4oUmVwbGFjZSksIDo6bmRuYm9vc3Q6OmVuZChSZXBsYWNlKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotLy8gIGVtcHR5IGZvcm1hdCBmdW5jdG9yICggdXNlZCBieSBlcmFzZSApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgICAgIAotICAgICAgICAgICAgLy8gZW1wdHkgZm9ybWF0IGZ1bmN0b3IKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDaGFyVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgZW1wdHlfZm9ybWF0RgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBSZXBsYWNlVCA+Ci0gICAgICAgICAgICAgICAgZW1wdHlfY29udGFpbmVyPENoYXJUPiBvcGVyYXRvcigpKGNvbnN0IFJlcGxhY2VUJikgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eV9jb250YWluZXI8Q2hhclQ+KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotLy8gIGRpc3NlY3QgZm9ybWF0IGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIGRpc3NlY3QgZm9ybWF0IGZ1bmN0b3IKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbmRlclQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgZGlzc2VjdF9mb3JtYXRGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW9uCi0gICAgICAgICAgICAgICAgZGlzc2VjdF9mb3JtYXRGKEZpbmRlclQgRmluZGVyKSA6Ci0gICAgICAgICAgICAgICAgICBtX0ZpbmRlcihGaW5kZXIpIHt9Ci0KLSAgICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICAgICAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCAKLSAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICAgIG9wZXJhdG9yKCkoY29uc3QgUmFuZ2VUJiBSZXBsYWNlKSBjb25zdAotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX0ZpbmRlcig6Om5kbmJvb3N0OjpiZWdpbihSZXBsYWNlKSwgOjpuZG5ib29zdDo6ZW5kKFJlcGxhY2UpKTsKLSAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICAgICBGaW5kZXJUIG1fRmluZGVyOwotICAgICAgICAgICAgfTsKLQotCi0gICAgICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfRk9STUFUVEVSX0RFVEFJTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvcmVwbGFjZV9zdG9yYWdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvcmVwbGFjZV9zdG9yYWdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc0ZDg1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3JlcGxhY2Vfc3RvcmFnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgcmVwbGFjZV9zdG9yYWdlLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX1JFUExBQ0VfU1RPUkFHRV9ERVRBSUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19SRVBMQUNFX1NUT1JBR0VfREVUQUlMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9zZXF1ZW5jZV90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3NlcXVlbmNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLSAgICAgICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICBzdG9yYWdlIGhhbmRsaW5nIHJvdXRpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFN0b3JhZ2VULCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQgPgotICAgICAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBtb3ZlX2Zyb21fc3RvcmFnZSgKLSAgICAgICAgICAgICAgICBTdG9yYWdlVCYgU3RvcmFnZSwKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgRGVzdEJlZ2luLAotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBEZXN0RW5kICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0SXQ9RGVzdEJlZ2luOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHdoaWxlKCAhU3RvcmFnZS5lbXB0eSgpICYmIE91dHB1dEl0IT1EZXN0RW5kICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICpPdXRwdXRJdD1TdG9yYWdlLmZyb250KCk7Ci0gICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UucG9wX2Zyb250KCk7Ci0gICAgICAgICAgICAgICAgICAgICsrT3V0cHV0SXQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIE91dHB1dEl0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU3RvcmFnZVQsIHR5cGVuYW1lIFdoYXRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIGNvcHlfdG9fc3RvcmFnZSgKLSAgICAgICAgICAgICAgICBTdG9yYWdlVCYgU3RvcmFnZSwKLSAgICAgICAgICAgICAgICBjb25zdCBXaGF0VCYgV2hhdCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU3RvcmFnZS5pbnNlcnQoIFN0b3JhZ2UuZW5kKCksIDo6bmRuYm9vc3Q6OmJlZ2luKFdoYXQpLCA6Om5kbmJvb3N0OjplbmQoV2hhdCkgKTsKLSAgICAgICAgICAgIH0KLQotCi0vLyAgcHJvY2VzcyBzZWdtZW50IHJvdXRpbmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgYm9vbCBIYXNTdGFibGVJdGVyYXRvcnMgPgotICAgICAgICAgICAgc3RydWN0IHByb2Nlc3Nfc2VnbWVudF9oZWxwZXIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBPcHRpbWl6ZWQgdmVyc2lvbiBvZiBwcm9jZXNzX3NlZ21lbnQgZm9yIGdlbmVyaWMgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFN0b3JhZ2VULAotICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgU3RvcmFnZVQmIFN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgIElucHV0VCYgLypJbnB1dCovLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEluc2VydEl0LAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIFNlZ21lbnRCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBTZWdtZW50RW5kICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgZGF0YSBmcm9tIHRoZSBzdG9yYWdlIHVudGlsIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlZ21lbnQKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBJdD06Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6bW92ZV9mcm9tX3N0b3JhZ2UoIFN0b3JhZ2UsIEluc2VydEl0LCBTZWdtZW50QmVnaW4gKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyAzIGNhc2VzIGFyZSBwb3NzaWJsZSA6Ci0gICAgICAgICAgICAgICAgICAgIC8vICAgYSkgU3RvcmFnZSBpcyBlbXB0eSwgSXQ9PVNlZ21lbnRCZWdpbgotICAgICAgICAgICAgICAgICAgICAvLyAgIGIpIFN0b3JhZ2UgaXMgZW1wdHksIEl0IT1TZWdtZW50QmVnaW4KLSAgICAgICAgICAgICAgICAgICAgLy8gICBjKSBTdG9yYWdlIGlzIG5vdCBlbXB0eQotCi0gICAgICAgICAgICAgICAgICAgIGlmKCBTdG9yYWdlLmVtcHR5KCkgKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiggSXQ9PVNlZ21lbnRCZWdpbiApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSBhKSBldmVyeXRoaW5nIGlzIGdyYW5kLCBqdXN0IHJldHVybiBlbmQgb2Ygc2VnbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZWdtZW50RW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhc2UgYikgbW92ZSB0aGUgc2VnbWVudCBiYWNrd2FyZHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpjb3B5KCBTZWdtZW50QmVnaW4sIFNlZ21lbnRFbmQsIEl0ICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXNlIGMpIC0+IHNoaWZ0IHRoZSBzZWdtZW50IHRvIHRoZSBsZWZ0IGFuZCBrZWVwIHRoZSBvdmVybGFwIGluIHRoZSBzdG9yYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSggSXQhPVNlZ21lbnRFbmQgKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHZhbHVlIGludG8gc3RvcmFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UucHVzaF9iYWNrKCAqSXQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHRvcCBmcm9tIHRoZSBzdG9yYWdlIGFuZCBwdXQgaXQgaGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpJdD1TdG9yYWdlLmZyb250KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZS5wb3BfZnJvbnQoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkdmFuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArK0l0OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSXQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHJvY2Vzc19zZWdtZW50X2hlbHBlcjwgdHJ1ZSA+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gT3B0aW1pemVkIHZlcnNpb24gb2YgcHJvY2Vzc19zZWdtZW50IGZvciBsaXN0LWxpa2Ugc2VxdWVuY2UKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFN0b3JhZ2VULAotICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgU3RvcmFnZVQmIFN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgSW5zZXJ0SXQsCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgU2VnbWVudEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIFNlZ21lbnRFbmQgKQotCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIHJlcGxhY2UgdG8gZG8gdGhlIGpvYgotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6cmVwbGFjZSggSW5wdXQsIEluc2VydEl0LCBTZWdtZW50QmVnaW4sIFN0b3JhZ2UgKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gRW1wdHkgdGhlIHN0b3JhZ2UKLSAgICAgICAgICAgICAgICAgICAgU3RvcmFnZS5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgICAvLyBJdGVyYXRvcnMgd2VyZSBub3QgY2hhbmdlZCwgc2ltcGx5IHJldHVybiB0aGUgZW5kIG9mIHNlZ21lbnQKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlZ21lbnRFbmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgLy8gUHJvY2VzcyBvbmUgc2VnbWVudCBpbiB0aGUgcmVwbGFjZV9hbGwgYWxnb3JpdGhtCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgU3RvcmFnZVQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgSW5wdXRULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgaW5saW5lIEZvcndhcmRJdGVyYXRvclQgcHJvY2Vzc19zZWdtZW50KAotICAgICAgICAgICAgICAgIFN0b3JhZ2VUJiBTdG9yYWdlLAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBJbnNlcnRJdCwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIFNlZ21lbnRCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIFNlZ21lbnRFbmQgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAKLSAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19zZWdtZW50X2hlbHBlcjwgCi0gICAgICAgICAgICAgICAgICAgICAgICBoYXNfc3RhYmxlX2l0ZXJhdG9yczxJbnB1dFQ+Ojp2YWx1ZT4oKSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZSwgSW5wdXQsIEluc2VydEl0LCBTZWdtZW50QmVnaW4sIFNlZ21lbnRFbmQgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotCi0gICAgICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfUkVQTEFDRV9TVE9SQUdFX0RFVEFJTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvc2VxdWVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9zZXF1ZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNjdmMjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9zZXF1ZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgc2VxdWVuY2UuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfREVUQUlMX1NFUVVFTkNFX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfREVUQUlMX1NFUVVFTkNFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9naWNhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3NlcXVlbmNlX3RyYWl0cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0gICAgICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAgaW5zZXJ0IGhlbHBlcnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgICAgICAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJbnB1dFQsIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgaW5saW5lIHZvaWQgaW5zZXJ0KAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgQXQsCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5wdXQuaW5zZXJ0KCBBdCwgQmVnaW4sIEVuZCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBJbnNlcnRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIGluc2VydCgKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEF0LAotICAgICAgICAgICAgICAgIGNvbnN0IEluc2VydFQmIEluc2VydCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6Omluc2VydCggSW5wdXQsIEF0LCA6Om5kbmJvb3N0OjpiZWdpbihJbnNlcnQpLCA6Om5kbmJvb3N0OjplbmQoSW5zZXJ0KSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAKLS8vICBlcmFzZSBoZWxwZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIEVyYXNlIGEgcmFuZ2UgaW4gdGhlIHNlcXVlbmNlCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIFJldHVybnMgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGVyYXNlIHN1YnJhbmdlCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIElucHV0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgdHlwZW5hbWUgSW5wdXRUOjppdGVyYXRvciBlcmFzZSgKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEZyb20sCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgVG8gKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBJbnB1dC5lcmFzZSggRnJvbSwgVG8gKTsKLSAgICAgICAgICAgIH0KLQotLy8gIHJlcGxhY2UgaGVscGVyIGltcGxlbWVudGF0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gT3B0aW1pemVkIHZlcnNpb24gb2YgcmVwbGFjZSBmb3IgZ2VuZXJpYyBzZXF1ZW5jZSBjb250YWluZXJzCi0gICAgICAgICAgICAvLyBBc3N1bXB0aW9uOiBpbnNlcnQgYW5kIGVyYXNlIGFyZSBleHBlbnNpdmUKLSAgICAgICAgICAgIHRlbXBsYXRlPCBib29sIEhhc0NvbnN0VGltZU9wZXJhdGlvbnMgPgotICAgICAgICAgICAgc3RydWN0IHJlcGxhY2VfY29uc3RfdGltZV9oZWxwZXIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEZyb20sCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIFRvLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBDb3B5IGRhdGEgdG8gdGhlIGNvbnRhaW5lciAoIGFzIG11Y2ggYXMgcG9zc2libGUgKQotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEluc2VydEl0PUJlZ2luOwotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBJbnB1dEl0PUZyb207Ci0gICAgICAgICAgICAgICAgICAgIGZvcig7IEluc2VydEl0IT1FbmQgJiYgSW5wdXRJdCE9VG87IEluc2VydEl0KyssIElucHV0SXQrKyApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICpJbnB1dEl0PSpJbnNlcnRJdDsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmICggSW5zZXJ0SXQhPUVuZCApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2Ugc2VxdWVuY2UgaXMgbG9uZ2VyLCBpbnNlcnQgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIElucHV0Lmluc2VydCggSW5wdXRJdCwgSW5zZXJ0SXQsIEVuZCApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBJbnB1dEl0IT1UbyApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBzZXF1ZW5jZSBpcyBzaG9ydGVyLCBlcmFzZSB0aGUgcmVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0LmVyYXNlKCBJbnB1dEl0LCBUbyApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICAgICAgc3RydWN0IHJlcGxhY2VfY29uc3RfdGltZV9oZWxwZXI8IHRydWUgPgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIENvbnN0LXRpbWUgZXJhc2UgYW5kIGluc2VydCBtZXRob2RzIC0+IHVzZSB0aGVtCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIElucHV0VCwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgdm9pZCBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBGcm9tLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBUbywKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKSAKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEF0PUlucHV0LmVyYXNlKCBGcm9tLCBUbyApOwotICAgICAgICAgICAgICAgICAgICBpZiAoIEJlZ2luIT1FbmQgKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZighSW5wdXQuZW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dC5pbnNlcnQoIEF0LCBCZWdpbiwgRW5kICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQuaW5zZXJ0KCBJbnB1dC5iZWdpbigpLCBCZWdpbiwgRW5kICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAvLyBObyBuYXRpdmUgcmVwbGFjZSBtZXRob2QKLSAgICAgICAgICAgIHRlbXBsYXRlPCBib29sIEhhc05hdGl2ZSA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmVwbGFjZV9uYXRpdmVfaGVscGVyCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIElucHV0VCwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgdm9pZCBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBGcm9tLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBUbywKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKSAKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VfY29uc3RfdGltZV9oZWxwZXI8IAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YW5kXzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfY29uc3RfdGltZV9pbnNlcnQ8SW5wdXRUPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfY29uc3RfdGltZV9lcmFzZTxJbnB1dFQ+ID46OnZhbHVlID4oKSgKLSAgICAgICAgICAgICAgICAgICAgICAgIElucHV0LCBGcm9tLCBUbywgQmVnaW4sIEVuZCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIC8vIENvbnRhaW5lciBoYXMgbmF0aXZlIHJlcGxhY2UgbWV0aG9kCi0gICAgICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmVwbGFjZV9uYXRpdmVfaGVscGVyPCB0cnVlID4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEZyb20sCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIFRvLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBJbnB1dC5yZXBsYWNlKCBGcm9tLCBUbywgQmVnaW4sIEVuZCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLS8vICByZXBsYWNlIGhlbHBlciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgICAgIAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIElucHV0VCwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICBpbmxpbmUgdm9pZCByZXBsYWNlKAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgRnJvbSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBUbywKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXBsYWNlX25hdGl2ZV9oZWxwZXI8IGhhc19uYXRpdmVfcmVwbGFjZTxJbnB1dFQ+Ojp2YWx1ZSA+KCkoCi0gICAgICAgICAgICAgICAgICAgIElucHV0LCBGcm9tLCBUbywgQmVnaW4sIEVuZCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBJbnNlcnRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2UoCi0gICAgICAgICAgICAgICAgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBGcm9tLAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIFRvLAotICAgICAgICAgICAgICAgIGNvbnN0IEluc2VydFQmIEluc2VydCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoRnJvbSE9VG8pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6cmVwbGFjZSggSW5wdXQsIEZyb20sIFRvLCA6Om5kbmJvb3N0OjpiZWdpbihJbnNlcnQpLCA6Om5kbmJvb3N0OjplbmQoSW5zZXJ0KSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6aW5zZXJ0KCBJbnB1dCwgRnJvbSwgOjpuZG5ib29zdDo6YmVnaW4oSW5zZXJ0KSwgOjpuZG5ib29zdDo6ZW5kKEluc2VydCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0RFVEFJTF9TRVFVRU5DRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvdXRpbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3V0aWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODM4OTNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvdXRpbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgdXRpbC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDAzLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19VVElMX0RFVEFJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX1VUSUxfREVUQUlMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotICAgICAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gIGVtcHR5IGNvbnRhaW5lciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyAgZW1wdHlfY29udGFpbmVyIAotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYWx3YXlzIGVtcHR5IGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICBjb250YWluaW5nIGVsZW1lbnRzIG9mIHR5cGUgQ2hhclQuCi0KLSAgICAgICAgICAgICAgICBJdCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGEgY29uc3QgdmVyc2lvbiBvbmx5Ci0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIENoYXJUID4KLSAgICAgICAgICAgIHN0cnVjdCBlbXB0eV9jb250YWluZXIgCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBlbXB0eV9jb250YWluZXI8Q2hhclQ+IHR5cGU7ICAgICAgICAKLSAgICAgICAgICAgICAgICB0eXBlZGVmIENoYXJUIHZhbHVlX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlJiByZWZlcmVuY2U7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlJiBjb25zdF9yZWZlcmVuY2U7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlKiBpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqIGNvbnN0X2l0ZXJhdG9yOwotCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9ucwotICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0X2l0ZXJhdG9yPigwKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KDApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGJvb2wgZW1wdHkoKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgCi0vLyAgYm91bmRlZCBjb3B5IGFsZ29yaXRobSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBCb3VuZGVkIHZlcnNpb24gb2YgdGhlIHN0ZDo6Y29weSBhbGdvcml0aG0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRlcmF0b3JULCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQ+Ci0gICAgICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGJvdW5kZWRfY29weSgKLSAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yVCBGaXJzdCwgCi0gICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvclQgTGFzdCwgCi0gICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIERlc3RGaXJzdCwKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgRGVzdExhc3QgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3JUIElucHV0SXQ9Rmlyc3Q7Ci0gICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dEl0PURlc3RGaXJzdDsKLSAgICAgICAgICAgICAgICBmb3IoOyBJbnB1dEl0IT1MYXN0ICYmIE91dHB1dEl0IT1EZXN0TGFzdDsgSW5wdXRJdCsrLCBPdXRwdXRJdCsrICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICpPdXRwdXRJdD0qSW5wdXRJdDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gT3V0cHV0SXQ7Ci0gICAgICAgICAgICB9Ci0KLS8vICBpdGVyYXRvciByYW5nZSB1dGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBjb3B5IHJhbmdlIGZ1bmN0b3IKLSAgICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBTZXFULCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvclQ9TkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIFNlcVQ6OmNvbnN0X2l0ZXJhdG9yID4KLSAgICAgICAgICAgIHN0cnVjdCBjb3B5X2l0ZXJhdG9yX3JhbmdlRiA6IAotICAgICAgICAgICAgICAgIHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+LCBTZXFUID4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTZXFUIG9wZXJhdG9yKCkoIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIFJhbmdlICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb3B5X3JhbmdlPFNlcVQ+KFJhbmdlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19VVElMX0RFVEFJTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9maW5kX2Zvcm1hdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZF9mb3JtYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjdkZDNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9maW5kX2Zvcm1hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgZmluZF9mb3JtYXQuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19GSU5EX0ZPUk1BVF9IUFAKLQotI2luY2x1ZGUgPGRlcXVlPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9hc19saXRlcmFsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uY2VwdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X2FsbC5ocHA+Ci0KLS8qISBcZmlsZQotICAgIERlZmluZXMgZ2VuZXJpYyByZXBsYWNlIGFsZ29yaXRobXMuIEVhY2ggYWxnb3JpdGhtIHJlcGxhY2VzCi0gICAgcGFydChzKSBvZiB0aGUgaW5wdXQuIFRoZSBwYXJ0IHRvIGJlIHJlcGxhY2VkIGlzIGxvb2tlZCB1cCB1c2luZyBhIEZpbmRlciBvYmplY3QuCi0gICAgUmVzdWx0IG9mIGZpbmRpbmcgaXMgdGhlbiB1c2VkIGJ5IGEgRm9ybWF0dGVyIG9iamVjdCB0byBnZW5lcmF0ZSB0aGUgcmVwbGFjZW1lbnQuCi0qLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotCi0vLyBnZW5lcmljIHJlcGxhY2UgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgR2VuZXJpYyByZXBsYWNlIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFVzZSB0aGUgRmluZGVyIHRvIHNlYXJjaCBmb3IgYSBzdWJzdHJpbmcuIFVzZSB0aGUgRm9ybWF0dGVyIHRvIGZvcm1hdAotICAgICAgICAgICAgdGhpcyBzdWJzdHJpbmcgYW5kIHJlcGxhY2UgaXQgaW4gdGhlIGlucHV0LgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0gICAgCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc2VxdWVuY2UKLSAgICAgICAgICAgIFxwYXJhbSBGaW5kZXIgQSBGaW5kZXIgb2JqZWN0IHVzZWQgdG8gc2VhcmNoIGZvciBhIG1hdGNoIHRvIGJlIHJlcGxhY2VkCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0dGVyIEEgRm9ybWF0dGVyIG9iamVjdCB1c2VkIHRvIGZvcm1hdCBhIG1hdGNoCi0gICAgICAgICAgICBccmV0dXJuIEFuIG91dHB1dCBpdGVyYXRvciBwb2ludGluZyBqdXN0IGFmdGVyIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBvcgotICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQKLQotICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZVQsCi0gICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgSW5wdXQsCi0gICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyICkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ29uY2VwdCBjaGVjawotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIEZpbmRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICkpOwotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIEZvcm1hdHRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlPiBsaXRfaW5wdXQoOjpuZG5ib29zdDo6YXNfbGl0ZXJhbChJbnB1dCkpOwotCi0gICAgICAgICAgICByZXR1cm4gZGV0YWlsOjpmaW5kX2Zvcm1hdF9jb3B5X2ltcGwoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIGxpdF9pbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZGVyKCA6Om5kbmJvb3N0OjpiZWdpbihsaXRfaW5wdXQpLCA6Om5kbmJvb3N0OjplbmQobGl0X2lucHV0KSApICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgR2VuZXJpYyByZXBsYWNlIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICB0eXBlbmFtZSBTZXF1ZW5jZVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyICkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ29uY2VwdCBjaGVjawotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIEZpbmRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxTZXF1ZW5jZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICkpOwotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIEZvcm1hdHRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmZpbmRfZm9ybWF0X2NvcHlfaW1wbCgKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZGVyKDo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KSwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIEdlbmVyaWMgcmVwbGFjZSBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBVc2UgdGhlIEZpbmRlciB0byBzZWFyY2ggZm9yIGEgc3Vic3RyaW5nLiBVc2UgdGhlIEZvcm1hdHRlciB0byBmb3JtYXQKLSAgICAgICAgICAgIHRoaXMgc3Vic3RyaW5nIGFuZCByZXBsYWNlIGl0IGluIHRoZSBpbnB1dC4gVGhlIGlucHV0IGlzIG1vZGlmaWVkIGluLXBsYWNlLgotCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc2VxdWVuY2UKLSAgICAgICAgICAgIFxwYXJhbSBGaW5kZXIgQSBGaW5kZXIgb2JqZWN0IHVzZWQgdG8gc2VhcmNoIGZvciBhIG1hdGNoIHRvIGJlIHJlcGxhY2VkCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0dGVyIEEgRm9ybWF0dGVyIG9iamVjdCB1c2VkIHRvIGZvcm1hdCBhIG1hdGNoCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2VULAotICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGZpbmRfZm9ybWF0KCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb25jZXB0IGNoZWNrCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgRmluZGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoIAotICAgICAgICAgICAgICAgIEZvcm1hdHRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0KLSAgICAgICAgICAgIGRldGFpbDo6ZmluZF9mb3JtYXRfaW1wbCgKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZGVyKDo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KSwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSkpOwotICAgICAgICB9Ci0KLQotLy8gIGZpbmRfZm9ybWF0X2FsbCBnZW5lcmljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBHZW5lcmljIHJlcGxhY2UgYWxsIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFVzZSB0aGUgRmluZGVyIHRvIHNlYXJjaCBmb3IgYSBzdWJzdHJpbmcuIFVzZSB0aGUgRm9ybWF0dGVyIHRvIGZvcm1hdAotICAgICAgICAgICAgdGhpcyBzdWJzdHJpbmcgYW5kIHJlcGxhY2UgaXQgaW4gdGhlIGlucHV0LiBSZXBlYXQgdGhpcyBmb3IgYWxsIG1hdGNoaW5nCi0gICAgICAgICAgICBzdWJzdHJpbmdzLgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0KLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzZXF1ZW5jZQotICAgICAgICAgICAgXHBhcmFtIEZpbmRlciBBIEZpbmRlciBvYmplY3QgdXNlZCB0byBzZWFyY2ggZm9yIGEgbWF0Y2ggdG8gYmUgcmVwbGFjZWQKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXR0ZXIgQSBGb3JtYXR0ZXIgb2JqZWN0IHVzZWQgdG8gZm9ybWF0IGEgbWF0Y2gKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dAotCi0gICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZVQsCi0gICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBmaW5kX2Zvcm1hdF9hbGxfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIElucHV0LAotICAgICAgICAgICAgRmluZGVyVCBGaW5kZXIsCi0gICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlcikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ29uY2VwdCBjaGVjawotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKCAKLSAgICAgICAgICAgICAgICBGaW5kZXJDb25jZXB0PAotICAgICAgICAgICAgICAgICAgICBGaW5kZXJULAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCggCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCxORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLQotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8TkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+IGxpdF9pbnB1dCg6Om5kbmJvb3N0Ojphc19saXRlcmFsKElucHV0KSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIGxpdF9pbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXIsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIEZpbmRlcig6Om5kbmJvb3N0OjpiZWdpbihsaXRfaW5wdXQpLCA6Om5kbmJvb3N0OjplbmQobGl0X2lucHV0KSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIEdlbmVyaWMgcmVwbGFjZSBhbGwgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFNlcXVlbmNlVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCA+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgZmluZF9mb3JtYXRfYWxsX2NvcHkoCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgRmluZGVyVCBGaW5kZXIsCi0gICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIENvbmNlcHQgY2hlY2sKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICBGaW5kZXJDb25jZXB0PAotICAgICAgICAgICAgICAgICAgICBGaW5kZXJULAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8U2VxdWVuY2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJDb25jZXB0PAotICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgICAgICBGaW5kZXJULE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxTZXF1ZW5jZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICkpOwotCi0gICAgICAgICAgICByZXR1cm4gZGV0YWlsOjpmaW5kX2Zvcm1hdF9hbGxfY29weV9pbXBsKAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZGVyKCA6Om5kbmJvb3N0OjpiZWdpbihJbnB1dCksIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkgKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIEdlbmVyaWMgcmVwbGFjZSBhbGwgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgVXNlIHRoZSBGaW5kZXIgdG8gc2VhcmNoIGZvciBhIHN1YnN0cmluZy4gVXNlIHRoZSBGb3JtYXR0ZXIgdG8gZm9ybWF0Ci0gICAgICAgICAgICB0aGlzIHN1YnN0cmluZyBhbmQgcmVwbGFjZSBpdCBpbiB0aGUgaW5wdXQuIFJlcGVhdCB0aGlzIGZvciBhbGwgbWF0Y2hpbmcKLSAgICAgICAgICAgIHN1YnN0cmluZ3MuVGhlIGlucHV0IGlzIG1vZGlmaWVkIGluLXBsYWNlLgotCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc2VxdWVuY2UKLSAgICAgICAgICAgIFxwYXJhbSBGaW5kZXIgQSBGaW5kZXIgb2JqZWN0IHVzZWQgdG8gc2VhcmNoIGZvciBhIG1hdGNoIHRvIGJlIHJlcGxhY2VkCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0dGVyIEEgRm9ybWF0dGVyIG9iamVjdCB1c2VkIHRvIGZvcm1hdCBhIG1hdGNoCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2VULAotICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQgPgotICAgICAgICBpbmxpbmUgdm9pZCBmaW5kX2Zvcm1hdF9hbGwoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb25jZXB0IGNoZWNrCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgRmluZGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCxORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8U2VxdWVuY2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLQotICAgICAgICAgICAgZGV0YWlsOjpmaW5kX2Zvcm1hdF9hbGxfaW1wbCgKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXIsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIEZpbmRlcig6Om5kbmJvb3N0OjpiZWdpbihJbnB1dCksIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkpKTsKLQotICAgICAgICB9Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLQotICAgIC8vIHB1bGwgdGhlIG5hbWVzIHRvIHRoZSBib29zdCBuYW1lc3BhY2UKLSAgICB1c2luZyBhbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpmaW5kX2Zvcm1hdDsKLSAgICB1c2luZyBhbGdvcml0aG06OmZpbmRfZm9ybWF0X2FsbF9jb3B5OwotICAgIHVzaW5nIGFsZ29yaXRobTo6ZmluZF9mb3JtYXRfYWxsOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2ZpbmRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJjNjRkMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBmaW5kZXIuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwNi4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfRklOREVSX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfRklOREVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbnN0YW50cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbXBhcmUuaHBwPgotCi0vKiEgXGZpbGUKLSAgICBEZWZpbmVzIEZpbmRlciBnZW5lcmF0b3JzLiBGaW5kZXIgb2JqZWN0IGlzIGEgZnVuY3RvciB3aGljaCBpcyBhYmxlIHRvIAotICAgIGZpbmQgYSBzdWJzdHJpbmcgbWF0Y2hpbmcgYSBzcGVjaWZpYyBjcml0ZXJpYSBpbiB0aGUgaW5wdXQuCi0gICAgRmluZGVycyBhcmUgdXNlZCBhcyBhIHBsdWdnYWJsZSBjb21wb25lbnRzIGZvciByZXBsYWNlLCBmaW5kIAotICAgIGFuZCBzcGxpdCBmYWNpbGl0aWVzLiBUaGlzIGhlYWRlciBjb250YWlucyBnZW5lcmF0b3IgZnVuY3Rpb25zIAotICAgIGZvciBmaW5kZXJzIHByb3ZpZGVkIGluIHRoaXMgbGlicmFyeS4KLSovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0KLS8vICBGaW5kZXIgZ2VuZXJhdG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgICAgICAKLSAgICAgICAgLy8hICJGaXJzdCIgZmluZGVyIAotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCB0aGUgXGMgZmlyc3RfZmluZGVyLiBUaGUgZmluZGVyIHNlYXJjaGVzIGZvciB0aGUgZmlyc3QKLSAgICAgICAgICAgIG9jY3VycmVuY2Ugb2YgdGhlIHN0cmluZyBpbiBhIGdpdmVuIGlucHV0LgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBnaXZlbiBhcyBhbiBcYyBpdGVyYXRvcl9yYW5nZSBkZWxpbWl0aW5nIHRoZSBtYXRjaC4KLQotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IuCi0gICAgICAgICAgICBccGFyYW0gQ29tcCBBbiBlbGVtZW50IGNvbXBhcmlzb24gcHJlZGljYXRlCi0gICAgICAgICAgICBccmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoZSBcYyBmaXJzdF9maW5kZXIgb2JqZWN0Ci0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6Zmlyc3RfZmluZGVyRjwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgaXNfZXF1YWw+Ci0gICAgICAgIGZpcnN0X2ZpbmRlciggY29uc3QgUmFuZ2VUJiBTZWFyY2ggKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpmaXJzdF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXF1YWw+KCA6Om5kbmJvb3N0Ojphc19saXRlcmFsKFNlYXJjaCksIGlzX2VxdWFsKCkgKSA7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgIkZpcnN0IiBmaW5kZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VULHR5cGVuYW1lIFByZWRpY2F0ZVQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OmZpcnN0X2ZpbmRlckY8Ci0gICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZSwKLSAgICAgICAgICAgIFByZWRpY2F0ZVQ+Ci0gICAgICAgIGZpcnN0X2ZpbmRlciggCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIFNlYXJjaCwgUHJlZGljYXRlVCBDb21wICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIAotICAgICAgICAgICAgICAgIGRldGFpbDo6Zmlyc3RfZmluZGVyRjwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVD4oIDo6bmRuYm9vc3Q6OmFzX2xpdGVyYWwoU2VhcmNoKSwgQ29tcCApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hICJMYXN0IiBmaW5kZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3QgdGhlIFxjIGxhc3RfZmluZGVyLiBUaGUgZmluZGVyIHNlYXJjaGVzIGZvciB0aGUgbGFzdAotICAgICAgICAgICAgb2NjdXJyZW5jZSBvZiB0aGUgc3RyaW5nIGluIGEgZ2l2ZW4gaW5wdXQuCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGdpdmVuIGFzIGFuIFxjIGl0ZXJhdG9yX3JhbmdlIGRlbGltaXRpbmcgdGhlIG1hdGNoLgotCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvci4KLSAgICAgICAgICAgIFxwYXJhbSBDb21wIEFuIGVsZW1lbnQgY29tcGFyaXNvbiBwcmVkaWNhdGUKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIGxhc3RfZmluZGVyIG9iamVjdAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6Omxhc3RfZmluZGVyRjwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgaXNfZXF1YWw+Ci0gICAgICAgIGxhc3RfZmluZGVyKCBjb25zdCBSYW5nZVQmIFNlYXJjaCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAKLSAgICAgICAgICAgICAgICBkZXRhaWw6Omxhc3RfZmluZGVyRjwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfZXF1YWw+KCA6Om5kbmJvb3N0Ojphc19saXRlcmFsKFNlYXJjaCksIGlzX2VxdWFsKCkgKTsKLSAgICAgICAgfQotICAgICAgICAvLyEgIkxhc3QiIGZpbmRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQsIHR5cGVuYW1lIFByZWRpY2F0ZVQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6Omxhc3RfZmluZGVyRjwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgUHJlZGljYXRlVD4KLSAgICAgICAgbGFzdF9maW5kZXIoIGNvbnN0IFJhbmdlVCYgU2VhcmNoLCBQcmVkaWNhdGVUIENvbXAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpsYXN0X2ZpbmRlckY8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQ+KCA6Om5kbmJvb3N0Ojphc19saXRlcmFsKFNlYXJjaCksIENvbXAgKSA7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgIk50aCIgZmluZGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IHRoZSBcYyBudGhfZmluZGVyLiBUaGUgZmluZGVyIHNlYXJjaGVzIGZvciB0aGUgbi10aCAoemVyby1pbmRleGVkKQotICAgICAgICAgICAgb2NjdXJyZW5jZSBvZiB0aGUgc3RyaW5nIGluIGEgZ2l2ZW4gaW5wdXQuCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGdpdmVuIGFzIGFuIFxjIGl0ZXJhdG9yX3JhbmdlIGRlbGltaXRpbmcgdGhlIG1hdGNoLgotCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvci4KLSAgICAgICAgICAgIFxwYXJhbSBOdGggQW4gaW5kZXggb2YgdGhlIG1hdGNoIHRvIGJlIGZpbmQKLSAgICAgICAgICAgIFxwYXJhbSBDb21wIEFuIGVsZW1lbnQgY29tcGFyaXNvbiBwcmVkaWNhdGUKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIG50aF9maW5kZXIgb2JqZWN0Ci0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6bnRoX2ZpbmRlckY8Ci0gICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZSwKLSAgICAgICAgICAgIGlzX2VxdWFsPgotICAgICAgICBudGhfZmluZGVyKCAKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgU2VhcmNoLCAKLSAgICAgICAgICAgIGludCBOdGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAKLSAgICAgICAgICAgICAgICBkZXRhaWw6Om50aF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICBpc19lcXVhbD4oIDo6bmRuYm9vc3Q6OmFzX2xpdGVyYWwoU2VhcmNoKSwgTnRoLCBpc19lcXVhbCgpICkgOwotICAgICAgICB9Ci0gICAgICAgIC8vISAiTnRoIiBmaW5kZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VULCB0eXBlbmFtZSBQcmVkaWNhdGVUPgotICAgICAgICBpbmxpbmUgZGV0YWlsOjpudGhfZmluZGVyRjwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgUHJlZGljYXRlVD4KLSAgICAgICAgbnRoX2ZpbmRlciggCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIFNlYXJjaCwgCi0gICAgICAgICAgICBpbnQgTnRoLCAKLSAgICAgICAgICAgIFByZWRpY2F0ZVQgQ29tcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAKLSAgICAgICAgICAgICAgICBkZXRhaWw6Om50aF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVUPiggOjpuZG5ib29zdDo6YXNfbGl0ZXJhbChTZWFyY2gpLCBOdGgsIENvbXAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISAiSGVhZCIgZmluZGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IHRoZSBcYyBoZWFkX2ZpbmRlci4gVGhlIGZpbmRlciByZXR1cm5zIGEgaGVhZCBvZiBhIGdpdmVuCi0gICAgICAgICAgICBpbnB1dC4gVGhlIGhlYWQgaXMgYSBwcmVmaXggb2YgYSBzdHJpbmcgdXAgdG8gbiBlbGVtZW50cyBpbgotICAgICAgICAgICAgc2l6ZS4gSWYgYW4gaW5wdXQgaGFzIGxlc3MgdGhlbiBuIGVsZW1lbnRzLCB3aG9sZSBpbnB1dCBpcyAKLSAgICAgICAgICAgIGNvbnNpZGVyZWQgYSBoZWFkLgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBnaXZlbiBhcyBhbiBcYyBpdGVyYXRvcl9yYW5nZSBkZWxpbWl0aW5nIHRoZSBtYXRjaC4KLQotICAgICAgICAgICAgXHBhcmFtIE4gVGhlIHNpemUgb2YgdGhlIGhlYWQKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIGhlYWRfZmluZGVyIG9iamVjdAotICAgICAgICAqLwotICAgICAgICBpbmxpbmUgZGV0YWlsOjpoZWFkX2ZpbmRlckYKLSAgICAgICAgaGVhZF9maW5kZXIoIGludCBOICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6aGVhZF9maW5kZXJGKE4pOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyEgIlRhaWwiIGZpbmRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCB0aGUgXGMgdGFpbF9maW5kZXIuIFRoZSBmaW5kZXIgcmV0dXJucyBhIHRhaWwgb2YgYSBnaXZlbgotICAgICAgICAgICAgaW5wdXQuIFRoZSB0YWlsIGlzIGEgc3VmZml4IG9mIGEgc3RyaW5nIHVwIHRvIG4gZWxlbWVudHMgaW4KLSAgICAgICAgICAgIHNpemUuIElmIGFuIGlucHV0IGhhcyBsZXNzIHRoZW4gbiBlbGVtZW50cywgd2hvbGUgaW5wdXQgaXMgCi0gICAgICAgICAgICBjb25zaWRlcmVkIGEgaGVhZC4KLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgZ2l2ZW4gYXMgYW4gXGMgaXRlcmF0b3JfcmFuZ2UgZGVsaW1pdGluZyB0aGUgbWF0Y2guCi0KLSAgICAgICAgICAgIFxwYXJhbSBOIFRoZSBzaXplIG9mIHRoZSBoZWFkCi0gICAgICAgICAgICBccmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoZSBcYyB0YWlsX2ZpbmRlciBvYmplY3QKLSAgICAgICAgKi8KLSAgICAgICAgaW5saW5lIGRldGFpbDo6dGFpbF9maW5kZXJGCi0gICAgICAgIHRhaWxfZmluZGVyKCBpbnQgTiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OnRhaWxfZmluZGVyRihOKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISAiVG9rZW4iIGZpbmRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCB0aGUgXGMgdG9rZW5fZmluZGVyLiBUaGUgZmluZGVyIHNlYXJjaGVzIGZvciBhIHRva2VuIAotICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IGEgcHJlZGljYXRlLiBJdCBpcyBzaW1pbGFyIHRvIHN0ZDo6ZmluZF9pZiAKLSAgICAgICAgICAgIGFsZ29yaXRobSwgd2l0aCBhbiBleGNlcHRpb24gdGhhdCBpdCByZXR1cm4gYSByYW5nZSBvZgotICAgICAgICAgICAgaW5zdGVhZCBvZiBhIHNpbmdsZSBpdGVyYXRvci4KLQotICAgICAgICAgICAgSWYgImNvbXByZXNzIHRva2VuIG1vZGUiIGlzIGVuYWJsZWQsIGFkamFjZW50IG1hdGNoaW5nIHRva2VucyBhcmUgCi0gICAgICAgICAgICBjb25jYXRlbmF0ZWQgaW50byBvbmUgbWF0Y2guIFRodXMgdGhlIGZpbmRlciBjYW4gYmUgdXNlZCB0byAKLSAgICAgICAgICAgIHNlYXJjaCBmb3IgY29udGludW91cyBzZWdtZW50cyBvZiBjaGFyYWN0ZXJzIHNhdGlzZnlpbmcgdGhlIAotICAgICAgICAgICAgZ2l2ZW4gcHJlZGljYXRlLgotCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGdpdmVuIGFzIGFuIFxjIGl0ZXJhdG9yX3JhbmdlIGRlbGltaXRpbmcgdGhlIG1hdGNoLgotCi0gICAgICAgICAgICBccGFyYW0gUHJlZCBBbiBlbGVtZW50IHNlbGVjdGlvbiBwcmVkaWNhdGUKLSAgICAgICAgICAgIFxwYXJhbSBlQ29tcHJlc3MgQ29tcHJlc3MgZmxhZwotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgdG9rZW5fZmluZGVyIG9iamVjdAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZGljYXRlVCA+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OnRva2VuX2ZpbmRlckY8UHJlZGljYXRlVD4KLSAgICAgICAgdG9rZW5fZmluZGVyKCAKLSAgICAgICAgICAgIFByZWRpY2F0ZVQgUHJlZCwgCi0gICAgICAgICAgICB0b2tlbl9jb21wcmVzc19tb2RlX3R5cGUgZUNvbXByZXNzPXRva2VuX2NvbXByZXNzX29mZiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OnRva2VuX2ZpbmRlckY8UHJlZGljYXRlVD4oIFByZWQsIGVDb21wcmVzcyApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hICJSYW5nZSIgZmluZGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IHRoZSBcYyByYW5nZV9maW5kZXIuIFRoZSBmaW5kZXIgZG9lcyBub3QgcGVyZm9ybSAKLSAgICAgICAgICAgIGFueSBvcGVyYXRpb24uIEl0IHNpbXBseSByZXR1cm5zIHRoZSBnaXZlbiByYW5nZSBmb3IgCi0gICAgICAgICAgICBhbnkgaW5wdXQuIAotCi0gICAgICAgICAgICBccGFyYW0gQmVnaW4gQmVnaW5uaW5nIG9mIHRoZSByYW5nZQotICAgICAgICAgICAgXHBhcmFtIEVuZCBFbmQgb2YgdGhlIHJhbmdlCi0gICAgICAgICAgICBccGFyYW0gUmFuZ2UgVGhlIHJhbmdlLgotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgcmFuZ2VfZmluZ2VyIG9iamVjdAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OnJhbmdlX2ZpbmRlckY8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgcmFuZ2VfZmluZGVyKAotICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6cmFuZ2VfZmluZGVyRjxGb3J3YXJkSXRlcmF0b3JUPiggQmVnaW4sIEVuZCApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hICJSYW5nZSIgZmluZGVyCi0gICAgICAgIC8qISAgICAgICAKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OnJhbmdlX2ZpbmRlckY8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgcmFuZ2VfZmluZGVyKCBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiBSYW5nZSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OnJhbmdlX2ZpbmRlckY8Rm9yd2FyZEl0ZXJhdG9yVD4oIFJhbmdlICk7Ci0gICAgICAgIH0KLQotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotCi0gICAgLy8gcHVsbCB0aGUgbmFtZXMgdG8gdGhlIGJvb3N0IG5hbWVzcGFjZQotICAgIHVzaW5nIGFsZ29yaXRobTo6Zmlyc3RfZmluZGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6bGFzdF9maW5kZXI7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpudGhfZmluZGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6aGVhZF9maW5kZXI7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjp0YWlsX2ZpbmRlcjsKLSAgICB1c2luZyBhbGdvcml0aG06OnRva2VuX2ZpbmRlcjsKLSAgICB1c2luZyBhbGdvcml0aG06OnJhbmdlX2ZpbmRlcjsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19GSU5ERVJfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZm9ybWF0dGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDZkMjY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9mb3JtYXR0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGZvcm1hdHRlci5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDAzLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19GT1JNQVRURVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19GT1JNQVRURVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3ZhbHVlX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9hc19saXRlcmFsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2Zvcm1hdHRlci5ocHA+Ci0KLS8qISBcZmlsZQotICAgIERlZmluZXMgRm9ybWF0dGVyIGdlbmVyYXRvcnMuIEZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igd2hpY2ggZm9ybWF0cwotICAgIGEgc3RyaW5nIGFjY29yZGluZyB0byBnaXZlbiBwYXJhbWV0ZXJzLiBBIEZvcm1hdHRlciB3b3JrcwotICAgIGluIGNvbmp1bmN0aW9uIHdpdGggYSBGaW5kZXIuIEEgRmluZGVyIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAgICBmb3IgYSBzcGVjaWZpYyBGb3JtYXR0ZXIuIEFuIGV4YW1wbGUgb2Ygc3VjaCBhIGNvb3BlcmF0aW9uIGlzIHJlZ2V4X2ZpbmRlcgotICAgIGFuZCByZWdleF9mb3JtYXR0ZXIuCi0KLSAgICBGb3JtYXR0ZXJzIGFyZSB1c2VkIGFzIHBsdWdnYWJsZSBjb21wb25lbnRzIGZvciByZXBsYWNlIGZhY2lsaXRpZXMuIAotICAgIFRoaXMgaGVhZGVyIGNvbnRhaW5zIGdlbmVyYXRvciBmdW5jdGlvbnMgZm9yIHRoZSBGb3JtYXR0ZXJzIHByb3ZpZGVkIGluIHRoaXMgbGlicmFyeS4KLSovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0KLS8vIGdlbmVyaWMgZm9ybWF0dGVycyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgQ29uc3RhbnQgZm9ybWF0dGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0cyBhIFxjIGNvbnN0X2Zvcm1hdHRlci4gQ29uc3QgZm9ybWF0dGVyIGFsd2F5cyByZXR1cm5zCi0gICAgICAgICAgICB0aGUgc2FtZSB2YWx1ZSwgcmVnYXJkbGVzcyBvZiB0aGUgcGFyYW1ldGVyLgotCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgcHJlZGVmaW5lZCB2YWx1ZSB1c2VkIGFzIGEgcmVzdWx0IGZvciBmb3JtYXR0aW5nCi0gICAgICAgICAgICBccmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoZSBcYyBjb25zdF9mb3JtYXR0ZXIgb2JqZWN0LgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OmNvbnN0X2Zvcm1hdEY8Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4gPgotICAgICAgICBjb25zdF9mb3JtYXR0ZXIoY29uc3QgUmFuZ2VUJiBGb3JtYXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmNvbnN0X2Zvcm1hdEY8Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlPiA+KDo6bmRuYm9vc3Q6OmFzX2xpdGVyYWwoRm9ybWF0KSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgSWRlbnRpdHkgZm9ybWF0dGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0cyBhbiBcYyBpZGVudGl0eV9mb3JtYXR0ZXIuIElkZW50aXR5IGZvcm1hdHRlciBhbHdheXMgcmV0dXJucwotICAgICAgICAgICAgdGhlIHBhcmFtZXRlci4KLQotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgaWRlbnRpdHlfZm9ybWF0dGVyIG9iamVjdC4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICBpbmxpbmUgZGV0YWlsOjppZGVudGl0eV9mb3JtYXRGPAotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+ID4KLSAgICAgICAgaWRlbnRpdHlfZm9ybWF0dGVyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6aWRlbnRpdHlfZm9ybWF0RjwKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+ID4oKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBFbXB0eSBmb3JtYXR0ZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3RzIGFuIFxjIGVtcHR5X2Zvcm1hdHRlci4gRW1wdHkgZm9ybWF0dGVyIGFsd2F5cyByZXR1cm5zIGFuIGVtcHR5Ci0gICAgICAgICAgICBzZXF1ZW5jZS4gCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBjb250YWluZXIgdXNlZCB0byBzZWxlY3QgYSBjb3JyZWN0IHZhbHVlX3R5cGUgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdGluZyBlbXB0eV9jb250YWluZXI8Pi4KLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIGVtcHR5X2Zvcm1hdHRlciBvYmplY3QuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6ZW1wdHlfZm9ybWF0RjwgCi0gICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfdmFsdWU8UmFuZ2VUPjo6dHlwZT4KLSAgICAgICAgZW1wdHlfZm9ybWF0dGVyKGNvbnN0IFJhbmdlVCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmVtcHR5X2Zvcm1hdEY8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX3ZhbHVlPFJhbmdlVD46OnR5cGU+KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgRW1wdHkgZm9ybWF0dGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0cyBhIFxjIGRpc3NlY3RfZm9ybWF0dGVyLiBEaXNzZWN0IGZvcm1hdHRlciB1c2VzIGEgc3BlY2lmaWVkIGZpbmRlcgotICAgICAgICAgICAgdG8gZXh0cmFjdCBhIHBvcnRpb24gb2YgdGhlIGZvcm1hdHRlZCBzZXF1ZW5jZS4gVGhlIGZpcnN0IGZpbmRlcidzIG1hdGNoIGlzIHJldHVybmVkIAotICAgICAgICAgICAgYXMgYSByZXN1bHQKLQotICAgICAgICAgICAgXHBhcmFtIEZpbmRlciBhIGZpbmRlciB1c2VkIHRvIHNlbGVjdCBhIHBvcnRpb24gb2YgdGhlIGZvcm1hdHRlZCBzZXF1ZW5jZQotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgZGlzc2VjdF9mb3JtYXR0ZXIgb2JqZWN0LgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaW5kZXJUPgotICAgICAgICBpbmxpbmUgZGV0YWlsOjpkaXNzZWN0X2Zvcm1hdEY8IEZpbmRlclQgPgotICAgICAgICBkaXNzZWN0X2Zvcm1hdHRlcihjb25zdCBGaW5kZXJUJiBGaW5kZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmRpc3NlY3RfZm9ybWF0RjxGaW5kZXJUPihGaW5kZXIpOwotICAgICAgICB9Ci0KLQotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotCi0gICAgLy8gcHVsbCB0aGUgbmFtZXMgdG8gdGhlIGJvb3N0IG5hbWVzcGFjZQotICAgIHVzaW5nIGFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6aWRlbnRpdHlfZm9ybWF0dGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6ZW1wdHlfZm9ybWF0dGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6ZGlzc2VjdF9mb3JtYXR0ZXI7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9GT1JNQVRURVJfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvcmVwbGFjZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvcmVwbGFjZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMTVlNjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3JlcGxhY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTI4ICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IHJlcGxhY2UuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwNi4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfUkVQTEFDRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX1JFUExBQ0VfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZF9mb3JtYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb21wYXJlLmhwcD4KLQotLyohIFxmaWxlCi0gICAgRGVmaW5lcyB2YXJpb3VzIHJlcGxhY2UgYWxnb3JpdGhtcy4gRWFjaCBhbGdvcml0aG0gcmVwbGFjZXMKLSAgICBwYXJ0KHMpIG9mIHRoZSBpbnB1dCBhY2NvcmRpbmcgdG8gc2V0IG9mIHNlYXJjaGluZyBhbmQgcmVwbGFjZSBjcml0ZXJpYS4KLSovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0KLS8vICByZXBsYWNlX3JhbmdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSByYW5nZSBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBnaXZlbiByYW5nZSBpbiB0aGUgaW5wdXQgc3RyaW5nLgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2hSYW5nZSBBIHJhbmdlIGluIHRoZSBpbnB1dCB0byBiZSBzdWJzdGl0dXRlZAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccmV0dXJuIEFuIG91dHB1dCBpdGVyYXRvciBwb2ludGluZyBqdXN0IGFmdGVyIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBvcgotICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQKLQotICAgICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIHJlcGxhY2VfcmFuZ2VfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2UxVD46OnR5cGU+JiBTZWFyY2hSYW5nZSwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpyYW5nZV9maW5kZXIoU2VhcmNoUmFuZ2UpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgcmFuZ2UgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIHJlcGxhY2VfcmFuZ2VfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxTZXF1ZW5jZVQ+Ojp0eXBlPiYgU2VhcmNoUmFuZ2UsCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIEZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OnJhbmdlX2ZpbmRlcihTZWFyY2hSYW5nZSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSByYW5nZSBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBnaXZlbiByYW5nZSBpbiB0aGUgaW5wdXQgc3RyaW5nLiAKLSAgICAgICAgICAgIFRoZSBpbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaFJhbmdlIEEgcmFuZ2UgaW4gdGhlIGlucHV0IHRvIGJlIHN1YnN0aXR1dGVkCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2VfcmFuZ2UoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VfaXRlcmF0b3I8U2VxdWVuY2VUPjo6dHlwZT4mIFNlYXJjaFJhbmdlLAotICAgICAgICAgICAgY29uc3QgUmFuZ2VUJiBGb3JtYXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpyYW5nZV9maW5kZXIoU2VhcmNoUmFuZ2UpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkpOwotICAgICAgICB9Ci0KLS8vICByZXBsYWNlX2ZpcnN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBmaXJzdCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBmaXJzdCBtYXRjaCBvZiB0aGUgc2VhcmNoIHN1YnN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiAKLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dC4gSXQgaXMgcmV0dXJuZWQgYXMgYSBzZXF1ZW5jZSAKLSAgICAgICAgICAgIG9yIGNvcGllZCB0byB0aGUgb3V0cHV0IGl0ZXJhdG9yLgotICAgICAgICAgICAgCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dAotCi0gICAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTNUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIHJlcGxhY2VfZmlyc3RfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlM1QmIEZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBmaXJzdCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIHJlcGxhY2VfZmlyc3RfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBmaXJzdCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICByZXBsYWNlIHRoZSBmaXJzdCBtYXRjaCBvZiB0aGUgc2VhcmNoIHN1YnN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiBUaGUgaW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIHZvaWQgcmVwbGFjZV9maXJzdCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdCggCi0gICAgICAgICAgICAgICAgSW5wdXQsIAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLS8vICByZXBsYWNlX2ZpcnN0ICggY2FzZSBpbnNlbnNpdGl2ZSApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIFJlcGxhY2UgZmlyc3QgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSB0aGUgZmlyc3QgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdWJzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLSAgICAgICAgICAgIFNlYXJjaGluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgotCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dAotCi0gICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlM1Q+Ci0gICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgaXJlcGxhY2VfZmlyc3RfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlM1QmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCwgaXNfaWVxdWFsKExvYykpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGZpcnN0IGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMlQsIHR5cGVuYW1lIFJhbmdlMVQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgaXJlcGxhY2VfZmlyc3RfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgRm9ybWF0LAotICAgICAgICAgICAgY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgZmlyc3QgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSB0aGUgZmlyc3QgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdWJzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gSW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0gICAgICAgICAgICBTZWFyY2hpbmcgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBMb2MgQSBsb2NhbGUgdXNlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIHZvaWQgaXJlcGxhY2VfZmlyc3QoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotLy8gIHJlcGxhY2VfbGFzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIFJlcGxhY2UgbGFzdCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBsYXN0IG1hdGNoIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0KLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQgICAgICAgICAgICAKLQotICAgICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UzVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCByZXBsYWNlX2xhc3RfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlM1QmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6bGFzdF9maW5kZXIoU2VhcmNoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBsYXN0IGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgcmVwbGFjZV9sYXN0X2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoIAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6bGFzdF9maW5kZXIoU2VhcmNoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBsYXN0IGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGxhc3QgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gSW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIHZvaWQgcmVwbGFjZV9sYXN0KCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwgCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpsYXN0X2ZpbmRlcihTZWFyY2gpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0vLyAgcmVwbGFjZV9sYXN0ICggY2FzZSBpbnNlbnNpdGl2ZSApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBsYXN0IGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGxhc3QgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLSAgICAgICAgICAgIFNlYXJjaGluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgotCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQgIAotCi0gICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UzVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBpcmVwbGFjZV9sYXN0X2NvcHkoCi0gICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTNUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgICAgIE91dHB1dCwKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Omxhc3RfZmluZGVyKFNlYXJjaCwgaXNfaWVxdWFsKExvYykpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGxhc3QgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCBpcmVwbGFjZV9sYXN0X2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoIAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6bGFzdF9maW5kZXIoU2VhcmNoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgbGFzdCBhbGdvcml0aG0gKCBjYXNlIGluc2Vuc2l0aXZlICkKLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBsYXN0IG1hdGNoIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuVGhlIGlucHV0IHNlcXVlbmNlIGlzIG1vZGlmaWVkIGluLXBsYWNlLgotICAgICAgICAgICAgU2VhcmNoaW5nIGlzIGNhc2UgaW5zZW5zaXRpdmUuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTG9jIEEgbG9jYWxlIHVzZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbgotICAgICAgICAgICAgXHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGUgbW9kaWZpZWQgaW5wdXQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgdm9pZCBpcmVwbGFjZV9sYXN0KCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwgCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpsYXN0X2ZpbmRlcihTZWFyY2gsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotLy8gIHJlcGxhY2VfbnRoIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBudGggYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbiBOdGggKHplcm8taW5kZXhlZCkgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLQotICAgICAgICAgICAgXHBhcmFtIE91dHB1dCBBbiBvdXRwdXQgaXRlcmF0b3IgdG8gd2hpY2ggdGhlIHJlc3VsdCB3aWxsIGJlIGNvcGllZAotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gTnRoIEFuIGluZGV4IG9mIHRoZSBtYXRjaCB0byBiZSByZXBsYWNlZC4gVGhlIGluZGV4IGlzIDAtYmFzZWQuCi0gICAgICAgICAgICAgICAgRm9yIG5lZ2F0aXZlIE4sIG1hdGNoZXMgYXJlIGNvdW50ZWQgZnJvbSB0aGUgZW5kIG9mIHN0cmluZy4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0Ci0KLSAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTNUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIHJlcGxhY2VfbnRoX2NvcHkoCi0gICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBTZWFyY2gsCi0gICAgICAgICAgICBpbnQgTnRoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UzVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpudGhfZmluZGVyKFNlYXJjaCwgTnRoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBudGggYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCByZXBsYWNlX250aF9jb3B5KCAKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBpbnQgTnRoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpudGhfZmluZGVyKFNlYXJjaCwgTnRoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBudGggYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbiBOdGggKHplcm8taW5kZXhlZCkgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gSW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIE50aCBBbiBpbmRleCBvZiB0aGUgbWF0Y2ggdG8gYmUgcmVwbGFjZWQuIFRoZSBpbmRleCBpcyAwLWJhc2VkLgotICAgICAgICAgICAgICAgIEZvciBuZWdhdGl2ZSBOLCBtYXRjaGVzIGFyZSBjb3VudGVkIGZyb20gdGhlIGVuZCBvZiBzdHJpbmcuCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgdm9pZCByZXBsYWNlX250aCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgaW50IE50aCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Om50aF9maW5kZXIoU2VhcmNoLCBOdGgpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0vLyAgcmVwbGFjZV9udGggKCBjYXNlIGluc2Vuc2l0aXZlICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgICAgICAKLSAgICAgICAgLy8hIFJlcGxhY2UgbnRoIGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgYW4gTnRoICh6ZXJvLWluZGV4ZWQpIG1hdGNoIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0gICAgICAgICAgICBTZWFyY2hpbmcgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KLQotICAgICAgICAgICAgXHBhcmFtIE91dHB1dCBBbiBvdXRwdXQgaXRlcmF0b3IgdG8gd2hpY2ggdGhlIHJlc3VsdCB3aWxsIGJlIGNvcGllZAotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gTnRoIEFuIGluZGV4IG9mIHRoZSBtYXRjaCB0byBiZSByZXBsYWNlZC4gVGhlIGluZGV4IGlzIDAtYmFzZWQuCi0gICAgICAgICAgICAgICAgRm9yIG5lZ2F0aXZlIE4sIG1hdGNoZXMgYXJlIGNvdW50ZWQgZnJvbSB0aGUgZW5kIG9mIHN0cmluZy4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQgICAgICAgICAgICAKLQotICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UzVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBpcmVwbGFjZV9udGhfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGludCBOdGgsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTNUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgICAgIE91dHB1dCwKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Om50aF9maW5kZXIoU2VhcmNoLCBOdGgsIGlzX2llcXVhbChMb2MpICksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgbnRoIGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgaXJlcGxhY2VfbnRoX2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGludCBOdGgsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Om50aF9maW5kZXIoU2VhcmNoLCBOdGgsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBudGggYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbiBOdGggKHplcm8taW5kZXhlZCkgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gSW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0gICAgICAgICAgICBTZWFyY2hpbmcgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gTnRoIEFuIGluZGV4IG9mIHRoZSBtYXRjaCB0byBiZSByZXBsYWNlZC4gVGhlIGluZGV4IGlzIDAtYmFzZWQuCi0gICAgICAgICAgICAgICAgRm9yIG5lZ2F0aXZlIE4sIG1hdGNoZXMgYXJlIGNvdW50ZWQgZnJvbSB0aGUgZW5kIG9mIHN0cmluZy4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgdm9pZCBpcmVwbGFjZV9udGgoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGludCBOdGgsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwgCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpudGhfZmluZGVyKFNlYXJjaCwgTnRoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLS8vICByZXBsYWNlX2FsbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIFJlcGxhY2UgYWxsIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0KLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccmV0dXJuIEFuIG91dHB1dCBpdGVyYXRvciBwb2ludGluZyBqdXN0IGFmdGVyIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBvcgotICAgICAgICAgICAgICAgICAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0IAotCi0gICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlM1Q+Ci0gICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgcmVwbGFjZV9hbGxfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlM1QmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2FsbF9jb3B5KAotICAgICAgICAgICAgICAgIE91dHB1dCwKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGFsbCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIHJlcGxhY2VfYWxsX2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2FsbF9jb3B5KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGFsbCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGUgc2VhcmNoIHN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiBUaGUgaW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccmV0dXJuIEEgcmVmZXJlbmNlIHRvIHRoZSBtb2RpZmllZCBpbnB1dAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2VfYWxsKCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2FsbCggCi0gICAgICAgICAgICAgICAgSW5wdXQsIAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0gICAgICAgIAotLy8gIHJlcGxhY2VfYWxsICggY2FzZSBpbnNlbnNpdGl2ZSApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBhbGwgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLSAgICAgICAgICAgIFNlYXJjaGluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgotCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQgCi0KLSAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTNUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGlyZXBsYWNlX2FsbF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UzVCYgRm9ybWF0LAotICAgICAgICAgICAgY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfYWxsX2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCwgaXNfaWVxdWFsKExvYykpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGFsbCBhbGdvcml0aG0gKCBjYXNlIGluc2Vuc2l0aXZlICkKLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIGlyZXBsYWNlX2FsbF9jb3B5KCAKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9hbGxfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgYWxsIGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuVGhlIGlucHV0IHNlcXVlbmNlIGlzIG1vZGlmaWVkIGluLXBsYWNlLgotICAgICAgICAgICAgU2VhcmNoaW5nIGlzIGNhc2UgaW5zZW5zaXRpdmUuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTG9jIEEgbG9jYWxlIHVzZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGlyZXBsYWNlX2FsbCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0LAotICAgICAgICAgICAgY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9hbGwoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0vLyAgcmVwbGFjZV9oZWFkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBoZWFkIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGhlYWQgb2YgdGhlIGlucHV0IHdpdGggdGhlIGdpdmVuIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIGhlYWQgaXMgYSBwcmVmaXggb2YgYSBzdHJpbmcgb2YgZ2l2ZW4gc2l6ZS4gCi0gICAgICAgICAgICBJZiB0aGUgc2VxdWVuY2UgaXMgc2hvcnRlciB0aGVuIHJlcXVpcmVkLCB3aG9sZSBzdHJpbmcgaWYgCi0gICAgICAgICAgICBjb25zaWRlcmVkIHRvIGJlIHRoZSBoZWFkLiAKLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dC4gSXQgaXMgcmV0dXJuZWQgYXMgYSBzZXF1ZW5jZSAKLSAgICAgICAgICAgIG9yIGNvcGllZCB0byB0aGUgb3V0cHV0IGl0ZXJhdG9yLgotICAgICAgICAgICAgCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTiBMZW5ndGggb2YgdGhlIGhlYWQuCi0gICAgICAgICAgICAgICAgRm9yIE4+PTAsIGF0IG1vc3QgTiBjaGFyYWN0ZXJzIGFyZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICAgICAgRm9yIE48MCwgc2l6ZShJbnB1dCktfE58IGNoYXJhY3RlcnMgYXJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0ICAKLQotICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCByZXBsYWNlX2hlYWRfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGludCBOLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpoZWFkX2ZpbmRlcihOKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBoZWFkIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCByZXBsYWNlX2hlYWRfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgaW50IE4sCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoIAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6aGVhZF9maW5kZXIoTiksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgaGVhZCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBoZWFkIG9mIHRoZSBpbnB1dCB3aXRoIHRoZSBnaXZlbiBmb3JtYXQgc3RyaW5nLiAKLSAgICAgICAgICAgIFRoZSBoZWFkIGlzIGEgcHJlZml4IG9mIGEgc3RyaW5nIG9mIGdpdmVuIHNpemUuIAotICAgICAgICAgICAgSWYgdGhlIHNlcXVlbmNlIGlzIHNob3J0ZXIgdGhlbiByZXF1aXJlZCwgdGhlIHdob2xlIHN0cmluZyBpcyAKLSAgICAgICAgICAgIGNvbnNpZGVyZWQgdG8gYmUgdGhlIGhlYWQuIFRoZSBpbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIE4gTGVuZ3RoIG9mIHRoZSBoZWFkLgotICAgICAgICAgICAgICAgIEZvciBOPj0wLCBhdCBtb3N0IE4gY2hhcmFjdGVycyBhcmUgZXh0cmFjdGVkLgotICAgICAgICAgICAgICAgIEZvciBOPDAsIHNpemUoSW5wdXQpLXxOfCBjaGFyYWN0ZXJzIGFyZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2VfaGVhZCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgaW50IE4sCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmhlYWRfZmluZGVyKE4pLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0vLyAgcmVwbGFjZV90YWlsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSB0YWlsIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIHRhaWwgb2YgdGhlIGlucHV0IHdpdGggdGhlIGdpdmVuIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIHRhaWwgaXMgYSBzdWZmaXggb2YgYSBzdHJpbmcgb2YgZ2l2ZW4gc2l6ZS4gCi0gICAgICAgICAgICBJZiB0aGUgc2VxdWVuY2UgaXMgc2hvcnRlciB0aGVuIHJlcXVpcmVkLCB3aG9sZSBzdHJpbmcgaXMgCi0gICAgICAgICAgICBjb25zaWRlcmVkIHRvIGJlIHRoZSB0YWlsLiAKLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dC4gSXQgaXMgcmV0dXJuZWQgYXMgYSBzZXF1ZW5jZSAKLSAgICAgICAgICAgIG9yIGNvcGllZCB0byB0aGUgb3V0cHV0IGl0ZXJhdG9yLgotCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTiBMZW5ndGggb2YgdGhlIHRhaWwuCi0gICAgICAgICAgICAgICAgRm9yIE4+PTAsIGF0IG1vc3QgTiBjaGFyYWN0ZXJzIGFyZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICAgICAgRm9yIE48MCwgc2l6ZShJbnB1dCktfE58IGNoYXJhY3RlcnMgYXJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dCAgIAotCi0gICAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgcmVwbGFjZV90YWlsX2NvcHkoCi0gICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgSW5wdXQsCi0gICAgICAgICAgICBpbnQgTiwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6dGFpbF9maW5kZXIoTiksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgdGFpbCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgcmVwbGFjZV90YWlsX2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGludCBOLAotICAgICAgICAgICAgY29uc3QgUmFuZ2VUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OnRhaWxfZmluZGVyKE4pLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIHRhaWwgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSB0aGUgdGFpbCBvZiB0aGUgaW5wdXQgd2l0aCB0aGUgZ2l2ZW4gZm9ybWF0IHNlcXVlbmNlLiAKLSAgICAgICAgICAgIFRoZSB0YWlsIGlzIGEgc3VmZml4IG9mIGEgc3RyaW5nIG9mIGdpdmVuIHNpemUuIAotICAgICAgICAgICAgSWYgdGhlIHNlcXVlbmNlIGlzIHNob3J0ZXIgdGhlbiByZXF1aXJlZCwgdGhlIHdob2xlIHN0cmluZyBpcyAKLSAgICAgICAgICAgIGNvbnNpZGVyZWQgdG8gYmUgdGhlIHRhaWwuIFRoZSBpbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIE4gTGVuZ3RoIG9mIHRoZSB0YWlsLgotICAgICAgICAgICAgICAgIEZvciBOPj0wLCBhdCBtb3N0IE4gY2hhcmFjdGVycyBhcmUgZXh0cmFjdGVkLgotICAgICAgICAgICAgICAgIEZvciBOPDAsIHNpemUoSW5wdXQpLXxOfCBjaGFyYWN0ZXJzIGFyZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2VfdGFpbCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgaW50IE4sCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OnRhaWxfZmluZGVyKE4pLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi0KLSAgICAvLyBwdWxsIG5hbWVzIHRvIHRoZSBib29zdCBuYW1lc3BhY2UKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfcmFuZ2VfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfcmFuZ2U7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2ZpcnN0X2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2ZpcnN0OwotICAgIHVzaW5nIGFsZ29yaXRobTo6aXJlcGxhY2VfZmlyc3RfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OmlyZXBsYWNlX2ZpcnN0OwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9sYXN0X2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2xhc3Q7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppcmVwbGFjZV9sYXN0X2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppcmVwbGFjZV9sYXN0OwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9udGhfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfbnRoOwotICAgIHVzaW5nIGFsZ29yaXRobTo6aXJlcGxhY2VfbnRoX2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppcmVwbGFjZV9udGg7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2FsbF9jb3B5OwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9hbGw7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppcmVwbGFjZV9hbGxfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OmlyZXBsYWNlX2FsbDsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfaGVhZF9jb3B5OwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9oZWFkOwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV90YWlsX2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX3RhaWw7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfUkVQTEFDRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9zZXF1ZW5jZV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3NlcXVlbmNlX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMzdmYTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3NlcXVlbmNlX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgc2VxdWVuY2VfdHJhaXRzLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX1NFUVVFTkNFX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX1NFUVVFTkNFX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcveWVzX25vX3R5cGUuaHBwPgotCi0vKiEgXGZpbGUKLSAgICBUcmFpdHMgZGVmaW5lZCBpbiB0aGlzIGhlYWRlciBhcmUgdXNlZCBieSB2YXJpb3VzIGFsZ29yaXRobXMgdG8gYWNoaWV2ZQotICAgIGJldHRlciBwZXJmb3JtYW5jZSBmb3Igc3BlY2lmaWMgY29udGFpbmVycy4KLSAgICBUcmFpdHMgcHJvdmlkZSBmYWlsLXNhZmUgZGVmYXVsdHMuIElmIGEgY29udGFpbmVyIHN1cHBvcnRzIHNvbWUgb2YgdGhlc2UKLSAgICBmZWF0dXJlcywgaXQgaXMgcG9zc2libGUgdG8gc3BlY2lhbGl6ZSB0aGUgc3BlY2lmaWMgdHJhaXQgZm9yIHRoaXMgY29udGFpbmVyLgotICAgIEZvciBsYWNraW5nIGNvbXBpbGVycywgaXQgaXMgcG9zc2libGUgb2YgZGVmaW5lIGFuIG92ZXJyaWRlIGZvciBhIHNwZWNpZmljIHRlc3RlcgotICAgIGZ1bmN0aW9uLgotCi0gICAgRHVlIHRvIGEgbGFuZ3VhZ2UgcmVzdHJpY3Rpb24sIGl0IGlzIG5vdCBjdXJyZW50bHkgcG9zc2libGUgdG8gZGVmaW5lIHNwZWNpYWxpemF0aW9ucyBmb3IKLSAgICBzdGwgY29udGFpbmVycyB3aXRob3V0IGluY2x1ZGluZyB0aGUgY29ycmVzcG9uZGluZyBoZWFkZXIuIFRvIGRlY3JlYXNlIHRoZSBvdmVyaGVhZAotICAgIG5lZWRlZCBieSB0aGlzIGluY2x1c2lvbiwgdXNlciBjYW4gc2VsZWN0aXZlbHkgaW5jbHVkZSBhIHNwZWNpYWxpemF0aW9uCi0gICAgaGVhZGVyIGZvciBhIHNwZWNpZmljIGNvbnRhaW5lci4gVGhleSBhcmUgbG9jYXRlZCBpbiBuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3N0bAotICAgIGRpcmVjdG9yeS4gQWx0ZXJuYXRpdmVseSBzaGUgY2FuIGluY2x1ZGUgbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9zdGRfY29sbGVjdGlvbl90cmFpdHMuaHBwCi0gICAgaGVhZGVyIHdoaWNoIGNvbnRhaW5zIHNwZWNpYWxpemF0aW9ucyBmb3IgYWxsIHN0bCBjb250YWluZXJzLgotKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotLy8gIHNlcXVlbmNlIHRyYWl0cyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0gICAgICAgIC8vISBOYXRpdmUgcmVwbGFjZSB0ZXN0ZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBEZWNsYXJlIGFuIG92ZXJyaWRlIG9mIHRoaXMgdGVzdGVyIGZ1bmN0aW9uIHdpdGggcmV0dXJuCi0gICAgICAgICAgICB0eXBlIG5kbmJvb3N0OjpzdHJpbmdfYWxnbzo6eWVzX3R5cGUgZm9yIGEgc2VxdWVuY2Ugd2l0aCB0aGlzIHByb3BlcnR5LgotCi0gICAgICAgICAgICBccmV0dXJuIHllc190eXBlIGlmIHRoZSBjb250YWluZXIgaGFzIGJhc2ljX3N0cmluZyBsaWtlIG5hdGl2ZSByZXBsYWNlCi0gICAgICAgICAgICBtZXRob2QuCi0gICAgICAgICovCi0gICAgICAgIG5vX3R5cGUgaGFzX25hdGl2ZV9yZXBsYWNlX3Rlc3RlciguLi4pOwotCi0gICAgICAgIC8vISBTdGFibGUgaXRlcmF0b3JzIHRlc3RlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIERlY2xhcmUgYW4gb3ZlcnJpZGUgb2YgdGhpcyB0ZXN0ZXIgZnVuY3Rpb24gd2l0aCByZXR1cm4KLSAgICAgICAgICAgIHR5cGUgbmRuYm9vc3Q6OnN0cmluZ19hbGdvOjp5ZXNfdHlwZSBmb3IgYSBzZXF1ZW5jZSB3aXRoIHRoaXMgcHJvcGVydHkuCi0KLSAgICAgICAgICAgIFxyZXR1cm4geWVzX3R5cGUgaWYgdGhlIHNlcXVlbmNlJ3MgaW5zZXJ0L3JlcGxhY2UvZXJhc2UgbWV0aG9kcyBkbyBub3QgaW52YWxpZGF0ZQotICAgICAgICAgICAgZXhpc3RpbmcgaXRlcmF0b3JzLgotICAgICAgICAqLwotICAgICAgICBub190eXBlIGhhc19zdGFibGVfaXRlcmF0b3JzX3Rlc3RlciguLi4pOwotCi0gICAgICAgIC8vISBjb25zdCB0aW1lIGluc2VydCB0ZXN0ZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBEZWNsYXJlIGFuIG92ZXJyaWRlIG9mIHRoaXMgdGVzdGVyIGZ1bmN0aW9uIHdpdGggcmV0dXJuCi0gICAgICAgICAgICB0eXBlIG5kbmJvb3N0OjpzdHJpbmdfYWxnbzo6eWVzX3R5cGUgZm9yIGEgc2VxdWVuY2Ugd2l0aCB0aGlzIHByb3BlcnR5LgotCi0gICAgICAgICAgICBccmV0dXJuIHllc190eXBlIGlmIHRoZSBzZXF1ZW5jZSdzIGluc2VydCBtZXRob2QgaXMgd29ya2luZyBpbiBjb25zdGFudCB0aW1lCi0gICAgICAgICovCi0gICAgICAgIG5vX3R5cGUgaGFzX2NvbnN0X3RpbWVfaW5zZXJ0X3Rlc3RlciguLi4pOwotCi0gICAgICAgIC8vISBjb25zdCB0aW1lIGVyYXNlIHRlc3RlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIERlY2xhcmUgYW4gb3ZlcnJpZGUgb2YgdGhpcyB0ZXN0ZXIgZnVuY3Rpb24gd2l0aCByZXR1cm4KLSAgICAgICAgICAgIHR5cGUgbmRuYm9vc3Q6OnN0cmluZ19hbGdvOjp5ZXNfdHlwZSBmb3IgYSBzZXF1ZW5jZSB3aXRoIHRoaXMgcHJvcGVydHkuCi0KLSAgICAgICAgICAgIFxyZXR1cm4geWVzX3R5cGUgaWYgdGhlIHNlcXVlbmNlJ3MgZXJhc2UgbWV0aG9kIGlzIHdvcmtpbmcgaW4gY29uc3RhbnQgdGltZQotICAgICAgICAqLwotICAgICAgICBub190eXBlIGhhc19jb25zdF90aW1lX2VyYXNlX3Rlc3RlciguLi4pOwotCi0jZW5kaWYgLy9ORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAgICAgLy8hIE5hdGl2ZSByZXBsYWNlIHRyYWl0Ci0gICAgICAgIC8qIQotICAgICAgICAgICAgVGhpcyB0cmFpdCBzcGVjaWZpZXMgdGhhdCB0aGUgc2VxdWVuY2UgaGFzIFxjIHN0ZDo6c3RyaW5nIGxpa2UgcmVwbGFjZSBtZXRob2QKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBjbGFzcyBoYXNfbmF0aXZlX3JlcGxhY2UKLSAgICAgICAgewotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RhdGljIFQqIHQ7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZT0oCi0gICAgICAgICAgICAgICAgc2l6ZW9mKGhhc19uYXRpdmVfcmVwbGFjZV90ZXN0ZXIodCkpPT1zaXplb2YoeWVzX3R5cGUpICkgKTsKLSNlbHNlICAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgICAgIHB1YmxpYzoKLSMgICAgaWYgTkROQk9PU1RfV09SS0FST1VORCggX19JQk1DUFBfXywgPD0gNjAwICkKLSAgICAgICAgICAgIGVudW0geyB2YWx1ZSA9IGZhbHNlIH07Ci0jICAgIGVsc2UKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZT1mYWxzZSk7Ci0jICAgIGVuZGlmIC8vIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fSUJNQ1BQX18sIDw9IDYwMCApCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0KLSAgICAgICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzxoYXNfbmF0aXZlX3JlcGxhY2U8VD46OnZhbHVlPiB0eXBlOwotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8hIFN0YWJsZSBpdGVyYXRvcnMgdHJhaXQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBUaGlzIHRyYWl0IHNwZWNpZmllcyB0aGF0IHRoZSBzZXF1ZW5jZSBoYXMgc3RhYmxlIGl0ZXJhdG9ycy4gSXQgbWVhbnMKLSAgICAgICAgICAgIHRoYXQgb3BlcmF0aW9ucyBsaWtlIGluc2VydC9lcmFzZS9yZXBsYWNlIGRvIG5vdCBpbnZhbGlkYXRlIGl0ZXJhdG9ycy4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBjbGFzcyBoYXNfc3RhYmxlX2l0ZXJhdG9ycwotICAgICAgICB7Ci0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RhdGljIFQqIHQ7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZT0oCi0gICAgICAgICAgICAgICAgc2l6ZW9mKGhhc19zdGFibGVfaXRlcmF0b3JzX3Rlc3Rlcih0KSk9PXNpemVvZih5ZXNfdHlwZSkgKSApOwotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICAgcHVibGljOgotIyAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lCTUNQUF9fLCA8PSA2MDAgKQotICAgICAgICAgICAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKLSMgICAgZWxzZQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPWZhbHNlKTsKLSMgICAgZW5kaWYgLy8gTkROQk9PU1RfV09SS0FST1VORCggX19JQk1DUFBfXywgPD0gNjAwICkKLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAgICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzxoYXNfc3RhYmxlX2l0ZXJhdG9yczxUPjo6dmFsdWU+IHR5cGU7Ci0gICAgICAgIH07Ci0KLQotICAgICAgICAvLyEgQ29uc3QgdGltZSBpbnNlcnQgdHJhaXQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBUaGlzIHRyYWl0IHNwZWNpZmllcyB0aGF0IHRoZSBzZXF1ZW5jZSdzIGluc2VydCBtZXRob2QgaGFzCi0gICAgICAgICAgICBjb25zdGFudCB0aW1lIGNvbXBsZXhpdHkuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgY2xhc3MgaGFzX2NvbnN0X3RpbWVfaW5zZXJ0Ci0gICAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGF0aWMgVCogdDsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPSgKLSAgICAgICAgICAgICAgICBzaXplb2YoaGFzX2NvbnN0X3RpbWVfaW5zZXJ0X3Rlc3Rlcih0KSk9PXNpemVvZih5ZXNfdHlwZSkgKSApOwotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICAgcHVibGljOgotIyAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lCTUNQUF9fLCA8PSA2MDAgKQotICAgICAgICAgICAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKLSMgICAgZWxzZQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPWZhbHNlKTsKLSMgICAgZW5kaWYgLy8gTkROQk9PU1RfV09SS0FST1VORCggX19JQk1DUFBfXywgPD0gNjAwICkKLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAgICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzxoYXNfY29uc3RfdGltZV9pbnNlcnQ8VD46OnZhbHVlPiB0eXBlOwotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8hIENvbnN0IHRpbWUgZXJhc2UgdHJhaXQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBUaGlzIHRyYWl0IHNwZWNpZmllcyB0aGF0IHRoZSBzZXF1ZW5jZSdzIGVyYXNlIG1ldGhvZCBoYXMKLSAgICAgICAgICAgIGNvbnN0YW50IHRpbWUgY29tcGxleGl0eS4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBjbGFzcyBoYXNfY29uc3RfdGltZV9lcmFzZQotICAgICAgICB7Ci0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RhdGljIFQqIHQ7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZT0oCi0gICAgICAgICAgICAgICAgc2l6ZW9mKGhhc19jb25zdF90aW1lX2VyYXNlX3Rlc3Rlcih0KSk9PXNpemVvZih5ZXNfdHlwZSkgKSApOwotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICAgcHVibGljOgotIyAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lCTUNQUF9fLCA8PSA2MDAgKQotICAgICAgICAgICAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKLSMgICAgZWxzZQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPWZhbHNlKTsKLSMgICAgZW5kaWYgLy8gTkROQk9PU1RfV09SS0FST1VORCggX19JQk1DUFBfXywgPD0gNjAwICkKLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAgICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzxoYXNfY29uc3RfdGltZV9lcmFzZTxUPjo6dmFsdWU+IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfU0VRVUVOQ0VfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3llc19ub190eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy95ZXNfbm9fdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZjFkOGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3llc19ub190eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IHllc19ub190eXBlLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX1lFU19OT19UWVBFX0RFVEFJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX1lFU19OT19UWVBFX0RFVEFJTF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotICAgICAgICAvLyB0YWtlbiBmcm9tIGJvb3N0IG1haWxpbmctbGlzdAotICAgICAgICAvLyB3aGVuIHllc19ub190eXBlIHdpbGwgYmVjb21lIG9mZmljaWFsbHkKLSAgICAgICAgLy8gYSBwYXJ0IG9mIGJvb3N0IGRpc3RyaWJ1dGlvbiwgdGhpcyBoZWFkZXIKLSAgICAgICAgLy8gd2lsbCBiZSBkZXByZWNhdGVkCi0gICAgICAgIHRlbXBsYXRlPGludCBJPiBzdHJ1Y3Qgc2l6ZV9kZXNjcmlwdG9yIAotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXIgKCYgdHlwZSlbSV07Ci0gICAgICAgIH07IAotCi0gICAgICAgIHR5cGVkZWYgc2l6ZV9kZXNjcmlwdG9yPDE+Ojp0eXBlIHllc190eXBlOwotICAgICAgICB0eXBlZGVmIHNpemVfZGVzY3JpcHRvcjwyPjo6dHlwZSBub190eXBlOwotCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX1lFU19OT19UWVBFX0RFVEFJTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxpZ25lZF9zdG9yYWdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxpZ25lZF9zdG9yYWdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc2MTMyZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsaWduZWRfc3RvcmFnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gYm9vc3QgYWxpZ25lZF9zdG9yYWdlLmhwcCBoZWFkZXIgZmlsZQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMwotLy8gRXJpYyBGcmllZG1hbiwgSXRheSBNYW1hbgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9BTElHTkVEX1NUT1JBR0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0FMSUdORURfU1RPUkFHRV9IUFAKLQotI2luY2x1ZGUgPGNzdGRkZWY+IC8vIGZvciBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy90eXBlX3dpdGhfYWxpZ25tZW50LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsgbmFtZXNwYWNlIGFsaWduZWRfc3RvcmFnZSB7Ci0KLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgIHN0ZDo6c2l6ZV90Ci0gICAgLCBhbGlnbm1lbnRfb2ZfbWF4X2FsaWduID0gOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPG1heF9hbGlnbj46OnZhbHVlCi0gICAgKTsKLQotLy8KLS8vIFRvIGJlIFRSMSBjb25mb3JtaW5nIHRoaXMgbXVzdCBiZSBhIFBPRCB0eXBlOgotLy8KLXRlbXBsYXRlIDwKLSAgICAgIHN0ZDo6c2l6ZV90IHNpemVfCi0gICAgLCBzdGQ6OnNpemVfdCBhbGlnbm1lbnRfCi0+Ci1zdHJ1Y3QgYWxpZ25lZF9zdG9yYWdlX2ltcAotewotICAgIHVuaW9uIGRhdGFfdAotICAgIHsKLSAgICAgICAgY2hhciBidWZbc2l6ZV9dOwotCi0gICAgICAgIHR5cGVuYW1lIG1wbDo6ZXZhbF9pZl9jPAotICAgICAgICAgICAgICBhbGlnbm1lbnRfID09IHN0ZDo6c2l6ZV90KC0xKQotICAgICAgICAgICAgLCBtcGw6OmlkZW50aXR5PGRldGFpbDo6bWF4X2FsaWduPgotICAgICAgICAgICAgLCB0eXBlX3dpdGhfYWxpZ25tZW50PGFsaWdubWVudF8+Ci0gICAgICAgICAgICA+Ojp0eXBlIGFsaWduXzsKLSAgICB9IGRhdGFfOwotICAgIHZvaWQqIGFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PGFsaWduZWRfc3RvcmFnZV9pbXAqPih0aGlzKTsgfQotfTsKLQotdGVtcGxhdGU8IHN0ZDo6c2l6ZV90IGFsaWdubWVudF8gPgotc3RydWN0IGFsaWduZWRfc3RvcmFnZV9pbXA8MHUsYWxpZ25tZW50Xz4KLXsKLSAgICAvKiBpbnRlbnRpb25hbGx5IGVtcHR5ICovCi0gICAgdm9pZCogYWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBkZXRhaWw6OmFsaWduZWRfc3RvcmFnZQotCi10ZW1wbGF0ZSA8Ci0gICAgICBzdGQ6OnNpemVfdCBzaXplXwotICAgICwgc3RkOjpzaXplX3QgYWxpZ25tZW50XyA9IHN0ZDo6c2l6ZV90KC0xKQotPgotY2xhc3MgYWxpZ25lZF9zdG9yYWdlIDogCi0jaWZuZGVmIF9fQk9STEFORENfXwotICAgcHJpdmF0ZSAKLSNlbHNlCi0gICBwdWJsaWMKLSNlbmRpZgotICAgZGV0YWlsOjphbGlnbmVkX3N0b3JhZ2U6OmFsaWduZWRfc3RvcmFnZV9pbXA8c2l6ZV8sIGFsaWdubWVudF8+IAotewotIAotcHVibGljOiAvLyBjb25zdGFudHMKLQotICAgIHR5cGVkZWYgZGV0YWlsOjphbGlnbmVkX3N0b3JhZ2U6OmFsaWduZWRfc3RvcmFnZV9pbXA8c2l6ZV8sIGFsaWdubWVudF8+IHR5cGU7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgc3RkOjpzaXplX3QKLSAgICAgICAgLCBzaXplID0gc2l6ZV8KLSAgICAgICAgKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgc3RkOjpzaXplX3QKLSAgICAgICAgLCBhbGlnbm1lbnQgPSAoCi0gICAgICAgICAgICAgIGFsaWdubWVudF8gPT0gc3RkOjpzaXplX3QoLTEpCi0gICAgICAgICAgICA/IDo6bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25lZF9zdG9yYWdlOjphbGlnbm1lbnRfb2ZfbWF4X2FsaWduCi0gICAgICAgICAgICA6IGFsaWdubWVudF8KLSAgICAgICAgICAgICkKLSAgICAgICAgKTsKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmXAotICAgIChfX0dOVUNfXyA+ICAzKSB8fFwKLSAgICAoX19HTlVDX18gPT0gMyAmJiAoX19HTlVDX01JTk9SX18gPiAgMiB8fFwKLSAgICAgICAgICAgICAgICAgICAgICAoX19HTlVDX01JTk9SX18gPT0gMiAmJiBfX0dOVUNfUEFUQ0hMRVZFTF9fID49MykpKQotCi1wcml2YXRlOiAvLyBub25jb3B5YWJsZQotCi0gICAgYWxpZ25lZF9zdG9yYWdlKGNvbnN0IGFsaWduZWRfc3RvcmFnZSYpOwotICAgIGFsaWduZWRfc3RvcmFnZSYgb3BlcmF0b3I9KGNvbnN0IGFsaWduZWRfc3RvcmFnZSYpOwotCi0jZWxzZSAvLyBnY2MgbGVzcyB0aGFuIDMuMi4zCi0KLXB1YmxpYzogLy8gX3Nob3VsZF8gYmUgbm9uY29weWFibGUsIGJ1dCBHQ0MgY29tcGlsZXIgZW1pdHMgZXJyb3IKLQotICAgIGFsaWduZWRfc3RvcmFnZShjb25zdCBhbGlnbmVkX3N0b3JhZ2UmKTsKLSAgICBhbGlnbmVkX3N0b3JhZ2UmIG9wZXJhdG9yPShjb25zdCBhbGlnbmVkX3N0b3JhZ2UmKTsKLQotI2VuZGlmIC8vIGdjYyA8IDMuMi4zIHdvcmthcm91bmQKLQotcHVibGljOiAvLyBzdHJ1Y3RvcnMKLQotICAgIGFsaWduZWRfc3RvcmFnZSgpCi0gICAgewotICAgIH0KLQotICAgIH5hbGlnbmVkX3N0b3JhZ2UoKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzogLy8gYWNjZXNzb3JzCi0KLSAgICB2b2lkKiBhZGRyZXNzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlKj4odGhpcyktPmFkZHJlc3MoKTsKLSAgICB9Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0KLSAgICBjb25zdCB2b2lkKiBhZGRyZXNzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB0eXBlKj4odGhpcyktPmFkZHJlc3MoKTsKLSAgICB9Ci0KLSNlbHNlIC8vIE1TVkM2Ci0KLSAgICBjb25zdCB2b2lkKiBhZGRyZXNzKCkgY29uc3Q7Ci0KLSNlbmRpZiAvLyBNU1ZDNiB3b3JrYXJvdW5kCi0KLX07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLQotLy8gTVNWQzYgc2VlbXMgbm90IHRvIGxpa2UgaW5saW5lIGZ1bmN0aW9ucyB3aXRoIGNvbnN0IHZvaWQqIHJldHVybnMsIHNvIHdlCi0vLyBkZWNsYXJlIHRoZSBmb2xsb3dpbmcgaGVyZToKLQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IFMsIHN0ZDo6c2l6ZV90IEE+Ci1jb25zdCB2b2lkKiBhbGlnbmVkX3N0b3JhZ2U8UyxBPjo6YWRkcmVzcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8IGFsaWduZWRfc3RvcmFnZTxTLEE+KiA+KHRoaXMpLT5hZGRyZXNzKCk7Ci19Ci0KLSNlbmRpZiAvLyBNU1ZDNiB3b3JrYXJvdW5kCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotLy8KLS8vIE1ha2Ugc3VyZSB0aGF0IGlzX3BvZCByZWNvZ25pc2VzIGFsaWduZWRfc3RvcmFnZTw+Ojp0eXBlCi0vLyBhcyBhIFBPRCAoTm90ZSB0aGF0IGFsaWduZWRfc3RvcmFnZTw+IGl0c2VsZiBpcyBub3QgYSBQT0QpOgotLy8KLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBzaXplXywgc3RkOjpzaXplX3QgYWxpZ25tZW50Xz4KLXN0cnVjdCBpc19wb2Q8bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25lZF9zdG9yYWdlOjphbGlnbmVkX3N0b3JhZ2VfaW1wPHNpemVfLGFsaWdubWVudF8+ID4KLSAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRSh0cnVlKQoteyAKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKHRydWUpCi19OyAKLSNlbmRpZgotCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHAiCi0KLSNlbmRpZiAvLyBORE5CT09TVF9BTElHTkVEX1NUT1JBR0VfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FueS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FueS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZWZiNjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEyICswLDAgQEAKLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2FueSBmb3IgRG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9BTllfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQU5ZX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyB3aGF0OiAgdmFyaWFudCB0eXBlIG5kbmJvb3N0OjphbnkKLS8vIHdobzogICBjb250cmlidXRlZCBieSBLZXZsaW4gSGVubmV5LAotLy8gICAgICAgIHdpdGggZmVhdHVyZXMgY29udHJpYnV0ZWQgYW5kIGJ1Z3MgZm91bmQgYnkKLS8vICAgICAgICBBbnRvbnkgUG9sdWtoaW4sIEVkIEJyZXksIE1hcmsgUm9kZ2VycywgCi0vLyAgICAgICAgUGV0ZXIgRGltb3YsIGFuZCBKYW1lcyBDdXJyYW4KLS8vIHdoZW46ICBKdWx5IDIwMDEsIEFwbHJpbCAyMDEzCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8dHlwZWluZm8+Ci0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLS8vIFNlZSBuZG5ib29zdC9weXRob24vdHlwZV9pZC5ocHAKLS8vIFRPRE86IGFkZCBORE5CT09TVF9UWVBFSURfQ09NUEFSRV9CWV9OQU1FIHRvIGNvbmZpZy5ocHAKLSMgaWYgKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDMpIFwKLSB8fCBkZWZpbmVkKF9BSVgpIFwKLSB8fCAoICAgZGVmaW5lZChfX3NnaSkgJiYgZGVmaW5lZChfX2hvc3RfbWlwcykpIFwKLSB8fCAoZGVmaW5lZChfX2hwdXgpICYmIGRlZmluZWQoX19IUF9hQ0MpKSBcCi0gfHwgKGRlZmluZWQobGludXgpICYmIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikgJiYgZGVmaW5lZChfX0lDQykpCi0jICBkZWZpbmUgTkROQk9PU1RfQVVYX0FOWV9UWVBFX0lEX05BTUUKLSNpbmNsdWRlIDxjc3RyaW5nPgotIyBlbmRpZiAKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgY2xhc3MgYW55Ci0gICAgewotICAgIHB1YmxpYzogLy8gc3RydWN0b3JzCi0KLSAgICAgICAgYW55KCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICA6IGNvbnRlbnQoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgICAgICBhbnkoY29uc3QgVmFsdWVUeXBlICYgdmFsdWUpCi0gICAgICAgICAgOiBjb250ZW50KG5ldyBob2xkZXI8VmFsdWVUeXBlPih2YWx1ZSkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGFueShjb25zdCBhbnkgJiBvdGhlcikKLSAgICAgICAgICA6IGNvbnRlbnQob3RoZXIuY29udGVudCA/IG90aGVyLmNvbnRlbnQtPmNsb25lKCkgOiAwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgICAgICAvLyBNb3ZlIGNvbnN0cnVjdG9yCi0gICAgICAgIGFueShhbnkmJiBvdGhlcikgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICA6IGNvbnRlbnQob3RoZXIuY29udGVudCkKLSAgICAgICAgewotICAgICAgICAgICAgb3RoZXIuY29udGVudCA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQZXJmZWN0IGZvcndhcmRpbmcgb2YgVmFsdWVUeXBlCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICAgICAgYW55KFZhbHVlVHlwZSYmIHZhbHVlLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZjxuZG5ib29zdDo6aXNfc2FtZTxhbnkmLCBWYWx1ZVR5cGU+ID46OnR5cGUqID0gMCkKLSAgICAgICAgICA6IGNvbnRlbnQobmV3IGhvbGRlcjwgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxWYWx1ZVR5cGU+Ojp0eXBlID4oc3RhdGljX2Nhc3Q8VmFsdWVUeXBlJiY+KHZhbHVlKSkpCi0gICAgICAgIHsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgfmFueSgpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZSBjb250ZW50OwotICAgICAgICB9Ci0KLSAgICBwdWJsaWM6IC8vIG1vZGlmaWVycwotCi0gICAgICAgIGFueSAmIHN3YXAoYW55ICYgcmhzKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAoY29udGVudCwgcmhzLmNvbnRlbnQpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLQotI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICAgICAgYW55ICYgb3BlcmF0b3I9KGNvbnN0IFZhbHVlVHlwZSAmIHJocykKLSAgICAgICAgewotICAgICAgICAgICAgYW55KHJocykuc3dhcCgqdGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBhbnkgJiBvcGVyYXRvcj0oYW55IHJocykKLSAgICAgICAgewotICAgICAgICAgICAgYW55KHJocykuc3dhcCgqdGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotI2Vsc2UgCi0gICAgICAgIGFueSAmIG9wZXJhdG9yPShjb25zdCBhbnkmIHJocykKLSAgICAgICAgewotICAgICAgICAgICAgYW55KHJocykuc3dhcCgqdGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBtb3ZlIGFzc2lnbmVtZW50Ci0gICAgICAgIGFueSAmIG9wZXJhdG9yPShhbnkmJiByaHMpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJocy5zd2FwKCp0aGlzKTsKLSAgICAgICAgICAgIGFueSgpLnN3YXAocmhzKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFBlcmZlY3QgZm9yd2FyZGluZyBvZiBWYWx1ZVR5cGUKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFZhbHVlVHlwZT4KLSAgICAgICAgYW55ICYgb3BlcmF0b3I9KFZhbHVlVHlwZSYmIHJocykKLSAgICAgICAgewotICAgICAgICAgICAgYW55KHN0YXRpY19jYXN0PFZhbHVlVHlwZSYmPihyaHMpKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICBwdWJsaWM6IC8vIHF1ZXJpZXMKLQotICAgICAgICBib29sIGVtcHR5KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFjb250ZW50OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gJiB0eXBlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQgPyBjb250ZW50LT50eXBlKCkgOiB0eXBlaWQodm9pZCk7Ci0gICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotICAgIHByaXZhdGU6IC8vIHR5cGVzCi0jZWxzZQotICAgIHB1YmxpYzogLy8gdHlwZXMgKHB1YmxpYyBzbyBhbnlfY2FzdCBjYW4gYmUgbm9uLWZyaWVuZCkKLSNlbmRpZgotCi0gICAgICAgIGNsYXNzIHBsYWNlaG9sZGVyCi0gICAgICAgIHsKLSAgICAgICAgcHVibGljOiAvLyBzdHJ1Y3RvcnMKLQotICAgICAgICAgICAgdmlydHVhbCB+cGxhY2Vob2xkZXIoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYzogLy8gcXVlcmllcwotCi0gICAgICAgICAgICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICYgdHlwZSgpIGNvbnN0ID0gMDsKLQotICAgICAgICAgICAgdmlydHVhbCBwbGFjZWhvbGRlciAqIGNsb25lKCkgY29uc3QgPSAwOwotCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgICAgICBjbGFzcyBob2xkZXIgOiBwdWJsaWMgcGxhY2Vob2xkZXIKLSAgICAgICAgewotICAgICAgICBwdWJsaWM6IC8vIHN0cnVjdG9ycwotCi0gICAgICAgICAgICBob2xkZXIoY29uc3QgVmFsdWVUeXBlICYgdmFsdWUpCi0gICAgICAgICAgICAgIDogaGVsZCh2YWx1ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgICAgICAgICAgaG9sZGVyKFZhbHVlVHlwZSYmIHZhbHVlKQotICAgICAgICAgICAgICA6IGhlbGQoc3RhdGljX2Nhc3Q8IFZhbHVlVHlwZSYmID4odmFsdWUpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIHB1YmxpYzogLy8gcXVlcmllcwotCi0gICAgICAgICAgICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICYgdHlwZSgpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVpZChWYWx1ZVR5cGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2aXJ0dWFsIHBsYWNlaG9sZGVyICogY2xvbmUoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgaG9sZGVyKGhlbGQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYzogLy8gcmVwcmVzZW50YXRpb24KLQotICAgICAgICAgICAgVmFsdWVUeXBlIGhlbGQ7Ci0KLSAgICAgICAgcHJpdmF0ZTogLy8gaW50ZW50aW9uYWxseSBsZWZ0IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgICAgIGhvbGRlciAmIG9wZXJhdG9yPShjb25zdCBob2xkZXIgJik7Ci0gICAgICAgIH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLQotICAgIHByaXZhdGU6IC8vIHJlcHJlc2VudGF0aW9uCi0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgICAgICBmcmllbmQgVmFsdWVUeXBlICogYW55X2Nhc3QoYW55ICopIE5ETkJPT1NUX05PRVhDRVBUOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICAgICAgZnJpZW5kIFZhbHVlVHlwZSAqIHVuc2FmZV9hbnlfY2FzdChhbnkgKikgTkROQk9PU1RfTk9FWENFUFQ7Ci0KLSNlbHNlCi0KLSAgICBwdWJsaWM6IC8vIHJlcHJlc2VudGF0aW9uIChwdWJsaWMgc28gYW55X2Nhc3QgY2FuIGJlIG5vbi1mcmllbmQpCi0KLSNlbmRpZgotCi0gICAgICAgIHBsYWNlaG9sZGVyICogY29udGVudDsKLQotICAgIH07Ci0gCi0gICAgaW5saW5lIHZvaWQgc3dhcChhbnkgJiBsaHMsIGFueSAmIHJocykgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIGxocy5zd2FwKHJocyk7Ci0gICAgfQotCi0gICAgY2xhc3MgYmFkX2FueV9jYXN0IDogcHVibGljIHN0ZDo6YmFkX2Nhc3QKLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKiB3aGF0KCkgY29uc3QgdGhyb3coKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIm5kbmJvb3N0OjpiYWRfYW55X2Nhc3Q6ICIKLSAgICAgICAgICAgICAgICAgICAiZmFpbGVkIGNvbnZlcnNpb24gdXNpbmcgbmRuYm9vc3Q6OmFueV9jYXN0IjsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgVmFsdWVUeXBlICogYW55X2Nhc3QoYW55ICogb3BlcmFuZCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcGVyYW5kICYmIAotI2lmZGVmIE5ETkJPT1NUX0FVWF9BTllfVFlQRV9JRF9OQU1FCi0gICAgICAgICAgICBzdGQ6OnN0cmNtcChvcGVyYW5kLT50eXBlKCkubmFtZSgpLCB0eXBlaWQoVmFsdWVUeXBlKS5uYW1lKCkpID09IDAKLSNlbHNlCi0gICAgICAgICAgICBvcGVyYW5kLT50eXBlKCkgPT0gdHlwZWlkKFZhbHVlVHlwZSkKLSNlbmRpZgotICAgICAgICAgICAgPyAmc3RhdGljX2Nhc3Q8YW55Ojpob2xkZXI8VmFsdWVUeXBlPiAqPihvcGVyYW5kLT5jb250ZW50KS0+aGVsZAotICAgICAgICAgICAgOiAwOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBpbmxpbmUgY29uc3QgVmFsdWVUeXBlICogYW55X2Nhc3QoY29uc3QgYW55ICogb3BlcmFuZCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBhbnlfY2FzdDxWYWx1ZVR5cGU+KGNvbnN0X2Nhc3Q8YW55ICo+KG9wZXJhbmQpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgVmFsdWVUeXBlIGFueV9jYXN0KGFueSAmIG9wZXJhbmQpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX3JlZmVyZW5jZTxWYWx1ZVR5cGU+Ojp0eXBlIG5vbnJlZjsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICAgLy8gSWYgJ25vbnJlZicgaXMgc3RpbGwgcmVmZXJlbmNlIHR5cGUsIGl0IG1lYW5zIHRoZSB1c2VyIGhhcyBub3QKLSAgICAgICAgLy8gc3BlY2lhbGl6ZWQgJ3JlbW92ZV9yZWZlcmVuY2UnLgotCi0gICAgICAgIC8vIFBsZWFzZSB1c2UgTkROQk9PU1RfQlJPS0VOX0NPTVBJTEVSX1RZUEVfVFJBSVRTX1NQRUNJQUxJWkFUSU9OIG1hY3JvCi0gICAgICAgIC8vIHRvIGdlbmVyYXRlIHNwZWNpYWxpemF0aW9uIG9mIHJlbW92ZV9yZWZlcmVuY2UgZm9yIHlvdXIgY2xhc3MKLSAgICAgICAgLy8gU2VlIHR5cGUgdHJhaXRzIGxpYnJhcnkgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCFpc19yZWZlcmVuY2U8bm9ucmVmPjo6dmFsdWUpOwotI2VuZGlmCi0KLSAgICAgICAgbm9ucmVmICogcmVzdWx0ID0gYW55X2Nhc3Q8bm9ucmVmPigmb3BlcmFuZCk7Ci0gICAgICAgIGlmKCFyZXN1bHQpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9hbnlfY2FzdCgpKTsKLSAgICAgICAgcmV0dXJuICpyZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIGlubGluZSBWYWx1ZVR5cGUgYW55X2Nhc3QoY29uc3QgYW55ICYgb3BlcmFuZCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfcmVmZXJlbmNlPFZhbHVlVHlwZT46OnR5cGUgbm9ucmVmOwotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICAvLyBUaGUgY29tbWVudCBpbiB0aGUgYWJvdmUgdmVyc2lvbiBvZiAnYW55X2Nhc3QnIGV4cGxhaW5zIHdoZW4gdGhpcwotICAgICAgICAvLyBhc3NlcnQgaXMgZmlyZWQgYW5kIHdoYXQgdG8gZG8uCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIWlzX3JlZmVyZW5jZTxub25yZWY+Ojp2YWx1ZSk7Ci0jZW5kaWYKLQotICAgICAgICByZXR1cm4gYW55X2Nhc3Q8Y29uc3Qgbm9ucmVmICY+KGNvbnN0X2Nhc3Q8YW55ICY+KG9wZXJhbmQpKTsKLSAgICB9Ci0KLSAgICAvLyBOb3RlOiBUaGUgInVuc2FmZSIgdmVyc2lvbnMgb2YgYW55X2Nhc3QgYXJlIG5vdCBwYXJ0IG9mIHRoZQotICAgIC8vIHB1YmxpYyBpbnRlcmZhY2UgYW5kIG1heSBiZSByZW1vdmVkIGF0IGFueSB0aW1lLiBUaGV5IGFyZQotICAgIC8vIHJlcXVpcmVkIHdoZXJlIHdlIGtub3cgd2hhdCB0eXBlIGlzIHN0b3JlZCBpbiB0aGUgYW55IGFuZCBjYW4ndAotICAgIC8vIHVzZSB0eXBlaWQoKSBjb21wYXJpc29uLCBlLmcuLCB3aGVuIG91ciB0eXBlcyBtYXkgdHJhdmVsIGFjcm9zcwotICAgIC8vIGRpZmZlcmVudCBzaGFyZWQgbGlicmFyaWVzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBpbmxpbmUgVmFsdWVUeXBlICogdW5zYWZlX2FueV9jYXN0KGFueSAqIG9wZXJhbmQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gJnN0YXRpY19jYXN0PGFueTo6aG9sZGVyPFZhbHVlVHlwZT4gKj4ob3BlcmFuZC0+Y29udGVudCktPmhlbGQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIGlubGluZSBjb25zdCBWYWx1ZVR5cGUgKiB1bnNhZmVfYW55X2Nhc3QoY29uc3QgYW55ICogb3BlcmFuZCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVfYW55X2Nhc3Q8VmFsdWVUeXBlPihjb25zdF9jYXN0PGFueSAqPihvcGVyYW5kKSk7Ci0gICAgfQotfQotCi0vLyBDb3B5cmlnaHQgS2V2bGluIEhlbm5leSwgMjAwMCwgMjAwMSwgMjAwMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE3ZmNiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0NiArMCwwIEBACi0vKiBUaGUgZm9sbG93aW5nIGNvZGUgZGVjbGFyZXMgY2xhc3MgYXJyYXksCi0gKiBhbiBTVEwgY29udGFpbmVyIChhcyB3cmFwcGVyKSBmb3IgYXJyYXlzIG9mIGNvbnN0YW50IHNpemUuCi0gKgotICogU2VlCi0gKiAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYXJyYXkvCi0gKiBmb3IgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiBUaGUgb3JpZ2luYWwgYXV0aG9yIHNpdGUgaXMgYXQ6IGh0dHA6Ly93d3cuam9zdXR0aXMuY29tLwotICoKLSAqIChDKSBDb3B5cmlnaHQgTmljb2xhaSBNLiBKb3N1dHRpcyAyMDAxLgotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiAxNCBBcHIgMjAxMiAtIChtdGMpIEFkZGVkIHN1cHBvcnQgZm9yIG5kbmJvb3N0OjpoYXNoCi0gKiAyOCBEZWMgMjAxMCAtIChtdGMpIEFkZGVkIGNiZWdpbiBhbmQgY2VuZCAoYW5kIGNyYmVnaW4gYW5kIGNyZW5kKSBmb3IgQysrT3ggY29tcGF0aWJpbGl0eS4KLSAqIDEwIE1hciAyMDEwIC0gKG10YykgZmlsbCBtZXRob2QgYWRkZWQsIG1hdGNoaW5nIHJlc29sdXRpb24gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgd29ya2luZyBncm91cC4KLSAqICAgICAgU2VlIDxodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvd2cyMS9kb2NzL2x3Zy1kZWZlY3RzLmh0bWwjNzc2PiBvciBUcmFjIGlzc3VlICMzMTY4Ci0gKiAgICAgIEV2ZW50dWFsbHksIHdlIHNob3VsZCByZW1vdmUgImFzc2lnbiIgd2hpY2ggaXMgbm93IGEgc3lub255bSBmb3IgImZpbGwiIChNYXJzaGFsbCBDbG93KQotICogMTAgTWFyIDIwMTAgLSBhZGRlZCB3b3JrYXJvdW5kIGZvciBTVU5DQyBhbmQgIVNUTFBvcnQgW3RyYWMgIzM4OTNdIChNYXJzaGFsbCBDbG93KQotICogMjkgSmFuIDIwMDQgLSBjX2FycmF5KCkgYWRkZWQsIE5ETkJPT1NUX05PX1BSSVZBVEVfSU5fQUdHUkVHQVRFIHJlbW92ZWQgKE5pY28gSm9zdXR0aXMpCi0gKiAyMyBBdWcgMjAwMiAtIGZpeCBmb3IgTm9uLU1TVkMgY29tcGlsZXJzIGNvbWJpbmVkIHdpdGggTVNWQyBsaWJyYXJpZXMuCi0gKiAwNSBBdWcgMjAwMSAtIG1pbm9yIHVwZGF0ZSAoTmljbyBKb3N1dHRpcykKLSAqIDIwIEphbiAyMDAxIC0gU1RMcG9ydCBmaXggKEJlbWFuIERhd2VzKQotICogMjkgU2VwIDIwMDAgLSBJbml0aWFsIFJldmlzaW9uIChOaWNvIEpvc3V0dGlzKQotICoKLSAqIEphbiAyOSwgMjAwNAotICovCi0jaWZuZGVmIE5ETkJPT1NUX0FSUkFZX0hQUAotI2RlZmluZSBORE5CT09TVF9BUlJBWV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTQwMCkgIAotIyBwcmFnbWEgd2FybmluZyhwdXNoKSAgCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikgLy8gJ3N0ZDo6ZXF1YWwnOiBGdW5jdGlvbiBjYWxsIHdpdGggcGFyYW1ldGVycyB0aGF0IG1heSBiZSB1bnNhZmUKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTEwKSAvLyBuZG5ib29zdDo6YXJyYXk8VCxOPicgOiBkZWZhdWx0IGNvbnN0cnVjdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQgCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDYxMCkgLy8gd2FybmluZyBDNDYxMDogY2xhc3MgJ25kbmJvb3N0OjphcnJheTxULE4+JyBjYW4gbmV2ZXIgYmUgaW5zdGFudGlhdGVkIC0gdXNlciBkZWZpbmVkIGNvbnN0cnVjdG9yIHJlcXVpcmVkIAotI2VuZGlmCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N3YXAuaHBwPgotCi0vLyBIYW5kbGVzIGJyb2tlbiBzdGFuZGFyZCBsaWJyYXJpZXMgYmV0dGVyIHRoYW4gPGl0ZXJhdG9yPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2hfZndkLmhwcD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLS8vIEZJWEVTIGZvciBicm9rZW4gY29tcGlsZXJzCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBjbGFzcyBhcnJheSB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIFQgZWxlbXNbTl07ICAgIC8vIGZpeGVkLXNpemUgYXJyYXkgb2YgZWxlbWVudHMgb2YgdHlwZSBUCi0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgLy8gdHlwZSBkZWZpbml0aW9ucwotICAgICAgICB0eXBlZGVmIFQgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgVCogICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVCogICAgICAgY29uc3RfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgVCYgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQmICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICBzaXplX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgIC8vIGl0ZXJhdG9yIHN1cHBvcnQKLSAgICAgICAgaXRlcmF0b3IgICAgICAgIGJlZ2luKCkgICAgICAgeyByZXR1cm4gZWxlbXM7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gZWxlbXM7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4gZWxlbXM7IH0KLSAgICAgICAgCi0gICAgICAgIGl0ZXJhdG9yICAgICAgICBlbmQoKSAgICAgICB7IHJldHVybiBlbGVtcytOOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yICBlbmQoKSBjb25zdCB7IHJldHVybiBlbGVtcytOOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCB7IHJldHVybiBlbGVtcytOOyB9Ci0KLSAgICAgICAgLy8gcmV2ZXJzZSBpdGVyYXRvciBzdXBwb3J0Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQ19TVERfSVRFUkFUT1IpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpCi0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA9PSAxMzAwKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCKSAmJiAoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIgPT0gMzEwKQotICAgICAgICAvLyB3b3JrYXJvdW5kIGZvciBicm9rZW4gcmV2ZXJzZV9pdGVyYXRvciBpbiBWQzcKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8c3RkOjpfUHRyaXQ8dmFsdWVfdHlwZSwgZGlmZmVyZW5jZV90eXBlLCBpdGVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLCBpdGVyYXRvciwgcmVmZXJlbmNlPiA+IHJldmVyc2VfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPHN0ZDo6X1B0cml0PHZhbHVlX3R5cGUsIGRpZmZlcmVuY2VfdHlwZSwgY29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZSwgaXRlcmF0b3IsIHJlZmVyZW5jZT4gPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotI2VsaWYgZGVmaW5lZChfUldTVERfTk9fQ0xBU1NfUEFSVElBTF9TUEVDKSAKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3IsIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIAotICAgICAgICAgICAgICB2YWx1ZV90eXBlLCByZWZlcmVuY2UsIGl0ZXJhdG9yLCBkaWZmZXJlbmNlX3R5cGU+IHJldmVyc2VfaXRlcmF0b3I7IAotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvciwgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgICAgdmFsdWVfdHlwZSwgY29uc3RfcmVmZXJlbmNlLCBjb25zdF9pdGVyYXRvciwgZGlmZmVyZW5jZV90eXBlPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotI2Vsc2UKLSAgICAgICAgLy8gd29ya2Fyb3VuZCBmb3IgYnJva2VuIHJldmVyc2VfaXRlcmF0b3IgaW1wbGVtZW50YXRpb25zCi0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yLFQ+IHJldmVyc2VfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yLFQ+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0jZW5kaWYKLQotICAgICAgICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9Ci0gICAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JiZWdpbigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KLSAgICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmVuZCgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gb3BlcmF0b3JbXQotICAgICAgICByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgaSkgCi0gICAgICAgIHsgCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlRfTVNHKCBpIDwgTiwgIm91dCBvZiByYW5nZSIgKTsKLSAgICAgICAgICAgIHJldHVybiBlbGVtc1tpXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIGkpIGNvbnN0IAotICAgICAgICB7ICAgICAKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0coIGkgPCBOLCAib3V0IG9mIHJhbmdlIiApOwotICAgICAgICAgICAgcmV0dXJuIGVsZW1zW2ldOyAKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGF0KCkgd2l0aCByYW5nZSBjaGVjawotICAgICAgICByZWZlcmVuY2UgYXQoc2l6ZV90eXBlIGkpIHsgcmFuZ2VjaGVjayhpKTsgcmV0dXJuIGVsZW1zW2ldOyB9Ci0gICAgICAgIGNvbnN0X3JlZmVyZW5jZSBhdChzaXplX3R5cGUgaSkgY29uc3QgeyByYW5nZWNoZWNrKGkpOyByZXR1cm4gZWxlbXNbaV07IH0KLSAgICAKLSAgICAgICAgLy8gZnJvbnQoKSBhbmQgYmFjaygpCi0gICAgICAgIHJlZmVyZW5jZSBmcm9udCgpIAotICAgICAgICB7IAotICAgICAgICAgICAgcmV0dXJuIGVsZW1zWzBdOyAKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3RfcmVmZXJlbmNlIGZyb250KCkgY29uc3QgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbGVtc1swXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmVmZXJlbmNlIGJhY2soKSAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHJldHVybiBlbGVtc1tOLTFdOyAKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3RfcmVmZXJlbmNlIGJhY2soKSBjb25zdCAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHJldHVybiBlbGVtc1tOLTFdOyAKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHNpemUgaXMgY29uc3RhbnQKLSAgICAgICAgc3RhdGljIHNpemVfdHlwZSBzaXplKCkgeyByZXR1cm4gTjsgfQotICAgICAgICBzdGF0aWMgYm9vbCBlbXB0eSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHN0YXRpYyBzaXplX3R5cGUgbWF4X3NpemUoKSB7IHJldHVybiBOOyB9Ci0gICAgICAgIGVudW0geyBzdGF0aWNfc2l6ZSA9IE4gfTsKLQotICAgICAgICAvLyBzd2FwIChub3RlOiBsaW5lYXIgY29tcGxleGl0eSkKLSAgICAgICAgdm9pZCBzd2FwIChhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdHlwZSBpID0gMDsgaSA8IE47ICsraSkKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6c3dhcChlbGVtc1tpXSx5LmVsZW1zW2ldKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGRpcmVjdCBhY2Nlc3MgdG8gZGF0YSAocmVhZC1vbmx5KQotICAgICAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gZWxlbXM7IH0KLSAgICAgICAgVCogZGF0YSgpIHsgcmV0dXJuIGVsZW1zOyB9Ci0KLSAgICAgICAgLy8gdXNlIGFycmF5IGFzIEMgYXJyYXkgKGRpcmVjdCByZWFkL3dyaXRlIGFjY2VzcyB0byBkYXRhKQotICAgICAgICBUKiBjX2FycmF5KCkgeyByZXR1cm4gZWxlbXM7IH0KLQotICAgICAgICAvLyBhc3NpZ25tZW50IHdpdGggdHlwZSBjb252ZXJzaW9uCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMj4KLSAgICAgICAgYXJyYXk8VCxOPiYgb3BlcmF0b3I9IChjb25zdCBhcnJheTxUMixOPiYgcmhzKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvcHkocmhzLmJlZ2luKCkscmhzLmVuZCgpLCBiZWdpbigpKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGFzc2lnbiBvbmUgdmFsdWUgdG8gYWxsIGVsZW1lbnRzCi0gICAgICAgIHZvaWQgYXNzaWduIChjb25zdCBUJiB2YWx1ZSkgeyBmaWxsICggdmFsdWUgKTsgfSAgICAvLyBBIHN5bm9ueW0gZm9yIGZpbGwKLSAgICAgICAgdm9pZCBmaWxsICAgKGNvbnN0IFQmIHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmZpbGxfbihiZWdpbigpLHNpemUoKSx2YWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBjaGVjayByYW5nZSAobWF5IGJlIHByaXZhdGUgYmVjYXVzZSBpdCBpcyBzdGF0aWMpCi0gICAgICAgIHN0YXRpYyB2b2lkIHJhbmdlY2hlY2sgKHNpemVfdHlwZSBpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSBzaXplKCkpIHsKLSAgICAgICAgICAgICAgICBzdGQ6Om91dF9vZl9yYW5nZSBlKCJhcnJheTw+OiBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICB9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgY2xhc3MgYXJyYXk8IFQsIDAgPiB7Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgLy8gdHlwZSBkZWZpbml0aW9ucwotICAgICAgICB0eXBlZGVmIFQgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgVCogICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVCogICAgICAgY29uc3RfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgVCYgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQmICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICBzaXplX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgIC8vIGl0ZXJhdG9yIHN1cHBvcnQKLSAgICAgICAgaXRlcmF0b3IgICAgICAgIGJlZ2luKCkgICAgICAgeyByZXR1cm4gICAgICAgaXRlcmF0b3IoIHJlaW50ZXJwcmV0X2Nhc3Q8ICAgICAgIFQgKiA+KCB0aGlzICkgKTsgfQotICAgICAgICBjb25zdF9pdGVyYXRvciAgYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvciggcmVpbnRlcnByZXRfY2FzdDwgY29uc3QgVCAqID4oIHRoaXMgKSApOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKCByZWludGVycHJldF9jYXN0PCBjb25zdCBUICogPiggdGhpcyApICk7IH0KLQotICAgICAgICBpdGVyYXRvciAgICAgICAgZW5kKCkgICAgICAgeyByZXR1cm4gIGJlZ2luKCk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgIGVuZCgpIGNvbnN0IHsgcmV0dXJuICBiZWdpbigpOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCB7IHJldHVybiBjYmVnaW4oKTsgfQotCi0gICAgICAgIC8vIHJldmVyc2UgaXRlcmF0b3Igc3VwcG9ydAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKQotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPT0gMTMwMCkgJiYgZGVmaW5lZChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQikgJiYgKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCID09IDMxMCkKLSAgICAgICAgLy8gd29ya2Fyb3VuZCBmb3IgYnJva2VuIHJldmVyc2VfaXRlcmF0b3IgaW4gVkM3Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPHN0ZDo6X1B0cml0PHZhbHVlX3R5cGUsIGRpZmZlcmVuY2VfdHlwZSwgaXRlcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgaXRlcmF0b3IsIHJlZmVyZW5jZT4gPiByZXZlcnNlX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxzdGQ6Ol9QdHJpdDx2YWx1ZV90eXBlLCBkaWZmZXJlbmNlX3R5cGUsIGNvbnN0X2l0ZXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2UsIGl0ZXJhdG9yLCByZWZlcmVuY2U+ID4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSNlbGlmIGRlZmluZWQoX1JXU1REX05PX0NMQVNTX1BBUlRJQUxfU1BFQykgCi0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCAKLSAgICAgICAgICAgICAgdmFsdWVfdHlwZSwgcmVmZXJlbmNlLCBpdGVyYXRvciwgZGlmZmVyZW5jZV90eXBlPiByZXZlcnNlX2l0ZXJhdG9yOyAKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3IsIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICAgIHZhbHVlX3R5cGUsIGNvbnN0X3JlZmVyZW5jZSwgY29uc3RfaXRlcmF0b3IsIGRpZmZlcmVuY2VfdHlwZT4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSNlbHNlCi0gICAgICAgIC8vIHdvcmthcm91bmQgZm9yIGJyb2tlbiByZXZlcnNlX2l0ZXJhdG9yIGltcGxlbWVudGF0aW9ucwotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcixUPiByZXZlcnNlX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcixUPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotI2VuZGlmCi0KLSAgICAgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQotICAgICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsKLSAgICAgICAgfQotICAgICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9Ci0gICAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIG9wZXJhdG9yW10KLSAgICAgICAgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIC8qaSovKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFpbGVkX3JhbmdlY2hlY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSAvKmkqLykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBhdCgpIHdpdGggcmFuZ2UgY2hlY2sKLSAgICAgICAgcmVmZXJlbmNlIGF0KHNpemVfdHlwZSAvKmkqLykgICAgICAgICAgICAgICB7ICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7IH0KLSAgICAgICAgY29uc3RfcmVmZXJlbmNlIGF0KHNpemVfdHlwZSAvKmkqLykgY29uc3QgICB7ICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7IH0KLQotICAgICAgICAvLyBmcm9udCgpIGFuZCBiYWNrKCkKLSAgICAgICAgcmVmZXJlbmNlIGZyb250KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9yZWZlcmVuY2UgZnJvbnQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFpbGVkX3JhbmdlY2hlY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJlZmVyZW5jZSBiYWNrKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9yZWZlcmVuY2UgYmFjaygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWlsZWRfcmFuZ2VjaGVjaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc2l6ZSBpcyBjb25zdGFudAotICAgICAgICBzdGF0aWMgc2l6ZV90eXBlIHNpemUoKSB7IHJldHVybiAwOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVtcHR5KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBzdGF0aWMgc2l6ZV90eXBlIG1heF9zaXplKCkgeyByZXR1cm4gMDsgfQotICAgICAgICBlbnVtIHsgc3RhdGljX3NpemUgPSAwIH07Ci0KLSAgICAgICAgdm9pZCBzd2FwIChhcnJheTxULDA+JiAvKnkqLykgewotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZGlyZWN0IGFjY2VzcyB0byBkYXRhIChyZWFkLW9ubHkpCi0gICAgICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgICAgIFQqIGRhdGEoKSB7IHJldHVybiAwOyB9Ci0KLSAgICAgICAgLy8gdXNlIGFycmF5IGFzIEMgYXJyYXkgKGRpcmVjdCByZWFkL3dyaXRlIGFjY2VzcyB0byBkYXRhKQotICAgICAgICBUKiBjX2FycmF5KCkgeyByZXR1cm4gMDsgfQotCi0gICAgICAgIC8vIGFzc2lnbm1lbnQgd2l0aCB0eXBlIGNvbnZlcnNpb24KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQyPgotICAgICAgICBhcnJheTxULDA+JiBvcGVyYXRvcj0gKGNvbnN0IGFycmF5PFQyLDA+JiApIHsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGFzc2lnbiBvbmUgdmFsdWUgdG8gYWxsIGVsZW1lbnRzCi0gICAgICAgIHZvaWQgYXNzaWduIChjb25zdCBUJiB2YWx1ZSkgeyBmaWxsICggdmFsdWUgKTsgfQotICAgICAgICB2b2lkIGZpbGwgICAoY29uc3QgVCYgKSB7fQotICAgICAgICAKLSAgICAgICAgLy8gY2hlY2sgcmFuZ2UgKG1heSBiZSBwcml2YXRlIGJlY2F1c2UgaXQgaXMgc3RhdGljKQotICAgICAgICBzdGF0aWMgcmVmZXJlbmNlIGZhaWxlZF9yYW5nZWNoZWNrICgpIHsKLSAgICAgICAgICAgICAgICBzdGQ6Om91dF9vZl9yYW5nZSBlKCJhdHRlbXB0IHRvIGFjY2VzcyBlbGVtZW50IG9mIGFuIGVtcHR5IGFycmF5Iik7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpIHx8ICghZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAhZGVmaW5lZChfX1BBVEhTQ0FMRV9fKSkKLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmV0dXJuIHNvbWV0aGluZyBoZXJlIHRvIGtlZXAKLSAgICAgICAgICAgICAgICAvLyBzb21lIGNvbXBpbGVycyBoYXBweTogaG93ZXZlciB3ZSB3aWxsIG5ldmVyCi0gICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgZ2V0IGhlcmUuLi4uCi0gICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICBzdGF0aWMgVCBwbGFjZWhvbGRlcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXI7Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICB9OwotI2VuZGlmCi0KLSAgICAvLyBjb21wYXJpc29ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgYm9vbCBvcGVyYXRvcj09IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmVxdWFsKHguYmVnaW4oKSwgeC5lbmQoKSwgeS5iZWdpbigpKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBib29sIG9wZXJhdG9yPCAoY29uc3QgYXJyYXk8VCxOPiYgeCwgY29uc3QgYXJyYXk8VCxOPiYgeSkgewotICAgICAgICByZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZSh4LmJlZ2luKCkseC5lbmQoKSx5LmJlZ2luKCkseS5lbmQoKSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgYm9vbCBvcGVyYXRvciE9IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiAhKHg9PXkpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotICAgIGJvb2wgb3BlcmF0b3I+IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiB5PHg7Ci0gICAgfQotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgYm9vbCBvcGVyYXRvcjw9IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiAhKHk8eCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgYm9vbCBvcGVyYXRvcj49IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiAhKHg8eSk7Ci0gICAgfQotCi0gICAgLy8gZ2xvYmFsIHN3YXAoKQotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgaW5saW5lIHZvaWQgc3dhcCAoYXJyYXk8VCxOPiYgeCwgYXJyYXk8VCxOPiYgeSkgewotICAgICAgICB4LnN3YXAoeSk7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChfX1NVTlBST19DQykKLS8vICBUcmFjIHRpY2tldCAjNDc1NzsgdGhlIFN1biBTb2xhcmlzIGNvbXBpbGVyIGNhbid0IGhhbmRsZQotLy8gIHN5bnRheCBsaWtlICdUKCZnZXRfY19hcnJheShuZG5ib29zdDo6YXJyYXk8VCxOPiYgYXJnKSlbTl0nCi0vLyAgCi0vLyAgV2UgY2FuJ3QganVzdCB1c2UgdGhpcyBmb3IgYWxsIGNvbXBpbGVycywgYmVjYXVzZSB0aGUgCi0vLyAgICAgIGJvcmxhbmQgY29tcGlsZXJzIGNhbid0IGhhbmRsZSB0aGlzIGZvcm0uIAotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPiBzdHJ1Y3QgY19hcnJheQotICAgICAgIHsKLSAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbTl07Ci0gICAgICAgfTsKLSAgICB9Ci0gICAgCi0gICAvLyBTcGVjaWZpYyBmb3IgbmRuYm9vc3Q6OmFycmF5OiBzaW1wbHkgcmV0dXJucyBpdHMgZWxlbXMgZGF0YSBtZW1iZXIuCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgIHR5cGVuYW1lIGRldGFpbDo6Y19hcnJheTxULE4+Ojp0eXBlJiBnZXRfY19hcnJheShuZG5ib29zdDo6YXJyYXk8VCxOPiYgYXJnKQotICAgewotICAgICAgIHJldHVybiBhcmcuZWxlbXM7Ci0gICB9Ci0KLSAgIC8vIFNwZWNpZmljIGZvciBuZG5ib29zdDo6YXJyYXk6IHNpbXBseSByZXR1cm5zIGl0cyBlbGVtcyBkYXRhIG1lbWJlci4KLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgdHlwZW5hbWUgY29uc3QgZGV0YWlsOjpjX2FycmF5PFQsTj46OnR5cGUmIGdldF9jX2FycmF5KGNvbnN0IG5kbmJvb3N0OjphcnJheTxULE4+JiBhcmcpCi0gICB7Ci0gICAgICAgcmV0dXJuIGFyZy5lbGVtczsKLSAgIH0KLSNlbHNlCi0vLyBTcGVjaWZpYyBmb3IgbmRuYm9vc3Q6OmFycmF5OiBzaW1wbHkgcmV0dXJucyBpdHMgZWxlbXMgZGF0YSBtZW1iZXIuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgVCgmZ2V0X2NfYXJyYXkobmRuYm9vc3Q6OmFycmF5PFQsTj4mIGFyZykpW05dCi0gICAgewotICAgICAgICByZXR1cm4gYXJnLmVsZW1zOwotICAgIH0KLSAgICAKLSAgICAvLyBDb25zdCB2ZXJzaW9uLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgIGNvbnN0IFQoJmdldF9jX2FycmF5KGNvbnN0IG5kbmJvb3N0OjphcnJheTxULE4+JiBhcmcpKVtOXQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFyZy5lbGVtczsKLSAgICB9Ci0jZW5kaWYKLSAgICAKLSNpZiAwCi0gICAgLy8gT3ZlcmxvYWQgZm9yIHN0ZDo6YXJyYXksIGFzc3VtaW5nIHRoYXQgc3RkOjphcnJheSB3aWxsIGhhdmUKLSAgICAvLyBleHBsaWNpdCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcyBkaXNjdXNzZWQgYXQgdGhlIFdHMjEgbWVldGluZwotICAgIC8vIGluIFN1bW1pdCwgTWFyY2ggMjAwOS4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBUKCZnZXRfY19hcnJheShzdGQ6OmFycmF5PFQsTj4mIGFyZykpW05dCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCgmKVtOXT4oYXJnKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gQ29uc3QgdmVyc2lvbi4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBjb25zdCBUKCZnZXRfY19hcnJheShjb25zdCBzdGQ6OmFycmF5PFQsTj4mIGFyZykpW05dCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCgmKVtOXT4oYXJnKTsKLSAgICB9Ci0jZW5kaWYKLQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKGNvbnN0IGFycmF5PFQsTj4mIGFycikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZShhcnIuYmVnaW4oKSwgYXJyLmVuZCgpKTsKLSAgICB9Ci0KLX0gLyogbmFtZXNwYWNlIG5kbmJvb3N0ICovCi0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTQwMCkgIAotIyBwcmFnbWEgd2FybmluZyhwb3ApICAKLSNlbmRpZiAKLQotI2VuZGlmIC8qTkROQk9PU1RfQVJSQVlfSFBQKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYXNzZXJ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYXNzZXJ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M3YTY3Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Fzc2VydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotLy8KLS8vICBuZG5ib29zdC9hc3NlcnQuaHBwIC0gTkROQk9PU1RfQVNTRVJUKGV4cHIpCi0vLyAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0coZXhwciwgbXNnKQotLy8gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9WRVJJRlkoZXhwcikKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA3IFBldGVyIERpbW92Ci0vLyAgQ29weXJpZ2h0IChjKSBCZW1hbiBEYXdlcyAyMDExCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBOb3RlOiBUaGVyZSBhcmUgbm8gaW5jbHVkZSBndWFyZHMuIFRoaXMgaXMgaW50ZW50aW9uYWwuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvYXNzZXJ0Lmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0vLwotLy8gU3RvcCBpbnNwZWN0IGNvbXBsYWluaW5nIGFib3V0IHVzZSBvZiAnYXNzZXJ0JzoKLS8vCi0vLyBib29zdGluc3BlY3Q6bmFhc3NlcnRfbWFjcm8KLS8vCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI3VuZGVmIE5ETkJPT1NUX0FTU0VSVAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX0FTU0VSVFMpCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0FTU0VSVChleHByKSAoKHZvaWQpMCkKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9FTkFCTEVfQVNTRVJUX0hBTkRMRVIpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIHZvaWQgYXNzZXJ0aW9uX2ZhaWxlZChjaGFyIGNvbnN0ICogZXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgKiBmdW5jdGlvbiwgY2hhciBjb25zdCAqIGZpbGUsIGxvbmcgbGluZSk7IC8vIHVzZXIgZGVmaW5lZAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9BU1NFUlQoZXhwcikgKChleHByKSBcCi0gID8gKCh2b2lkKTApIFwKLSAgOiA6Om5kbmJvb3N0Ojphc3NlcnRpb25fZmFpbGVkKCNleHByLCBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OLCBfX0ZJTEVfXywgX19MSU5FX18pKQotCi0jZWxzZQotIyBpbmNsdWRlIDxhc3NlcnQuaD4gLy8gLmggdG8gc3VwcG9ydCBvbGQgbGlicmFyaWVzIHcvbyA8Y2Fzc2VydD4gLSBlZmZlY3QgaXMgdGhlIHNhbWUKLSMgZGVmaW5lIE5ETkJPT1NUX0FTU0VSVChleHByKSBhc3NlcnQoZXhwcikKLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlRfTVNHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgdW5kZWYgTkROQk9PU1RfQVNTRVJUX01TRwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX0FTU0VSVFMpIHx8IGRlZmluZWQoTkRFQlVHKQotCi0gICNkZWZpbmUgTkROQk9PU1RfQVNTRVJUX01TRyhleHByLCBtc2cpICgodm9pZCkwKQotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0VOQUJMRV9BU1NFUlRfSEFORExFUikKLQotICAjaW5jbHVkZSA8bmRuYm9vc3QvY3VycmVudF9mdW5jdGlvbi5ocHA+Ci0KLSAgbmFtZXNwYWNlIG5kbmJvb3N0Ci0gIHsKLSAgICB2b2lkIGFzc2VydGlvbl9mYWlsZWRfbXNnKGNoYXIgY29uc3QgKiBleHByLCBjaGFyIGNvbnN0ICogbXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCAqIGZ1bmN0aW9uLCBjaGFyIGNvbnN0ICogZmlsZSwgbG9uZyBsaW5lKTsgLy8gdXNlciBkZWZpbmVkCi0gIH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSAgI2RlZmluZSBORE5CT09TVF9BU1NFUlRfTVNHKGV4cHIsIG1zZykgKChleHByKSBcCi0gICAgPyAoKHZvaWQpMCkgXAotICAgIDogOjpuZG5ib29zdDo6YXNzZXJ0aW9uX2ZhaWxlZF9tc2coI2V4cHIsIG1zZywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiwgX19GSUxFX18sIF9fTElORV9fKSkKLQotI2Vsc2UKLSAgI2lmbmRlZiBORE5CT09TVF9BU1NFUlRfSFBQCi0gICAgI2RlZmluZSBORE5CT09TVF9BU1NFUlRfSFBQCi0gICAgI2luY2x1ZGUgPGNzdGRsaWI+Ci0gICAgI2luY2x1ZGUgPGlvc3RyZWFtPgotICAgICNpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4KLQotICAgIC8vICBJREUncyBsaWtlIFZpc3VhbCBTdHVkaW8gcGVyZm9ybSBiZXR0ZXIgaWYgb3V0cHV0IGdvZXMgdG8gc3RkOjpjb3V0IG9yCi0gICAgLy8gIHNvbWUgb3RoZXIgc3RyZWFtLCBzbyBhbGxvdyB1c2VyIHRvIGNvbmZpZ3VyZSBvdXRwdXQgc3RyZWFtOgotICAgICNpZm5kZWYgTkROQk9PU1RfQVNTRVJUX01TR19PU1RSRUFNCi0gICAgIyBkZWZpbmUgTkROQk9PU1RfQVNTRVJUX01TR19PU1RSRUFNIHN0ZDo6Y2VycgotICAgICNlbmRpZgotCi0gICAgbmFtZXNwYWNlIG5kbmJvb3N0Ci0gICAgeyAKLSAgICAgIG5hbWVzcGFjZSBhc3NlcnRpb24gCi0gICAgICB7IAotICAgICAgICBuYW1lc3BhY2UgZGV0YWlsCi0gICAgICAgIHsKLSAgICAgICAgICBpbmxpbmUgdm9pZCBhc3NlcnRpb25fZmFpbGVkX21zZyhjaGFyIGNvbnN0ICogZXhwciwgY2hhciBjb25zdCAqIG1zZywgY2hhciBjb25zdCAqIGZ1bmN0aW9uLAotICAgICAgICAgICAgY2hhciBjb25zdCAqIGZpbGUsIGxvbmcgbGluZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlRfTVNHX09TVFJFQU0KLSAgICAgICAgICAgICAgPDwgIioqKioqIEludGVybmFsIFByb2dyYW0gRXJyb3IgLSBhc3NlcnRpb24gKCIgPDwgZXhwciA8PCAiKSBmYWlsZWQgaW4gIgotICAgICAgICAgICAgICA8PCBmdW5jdGlvbiA8PCAiOlxuIgotICAgICAgICAgICAgICA8PCBmaWxlIDw8ICcoJyA8PCBsaW5lIDw8ICIpOiAiIDw8IG1zZyA8PCBzdGQ6OmVuZGw7Ci0JCQkjaWZkZWYgVU5ERVJfQ0UKLQkJCQkvLyBUaGUgV2luZG93cyBDRSBDUlQgbGlicmFyeSBkb2VzIG5vdCBoYXZlIGFib3J0KCkgc28gdXNlIGV4aXQoLTEpIGluc3RlYWQuCi0JCQkJc3RkOjpleGl0KC0xKTsKLQkJCSNlbHNlCi0JCQkJc3RkOjphYm9ydCgpOwotCQkJI2VuZGlmCi0gICAgICAgICAgfQotICAgICAgICB9IC8vIGRldGFpbAotICAgICAgfSAvLyBhc3NlcnRpb24KLSAgICB9IC8vIGRldGFpbAotICAjZW5kaWYKLQotICAjZGVmaW5lIE5ETkJPT1NUX0FTU0VSVF9NU0coZXhwciwgbXNnKSAoKGV4cHIpIFwKLSAgICA/ICgodm9pZCkwKSBcCi0gICAgOiA6Om5kbmJvb3N0Ojphc3NlcnRpb246OmRldGFpbDo6YXNzZXJ0aW9uX2ZhaWxlZF9tc2coI2V4cHIsIG1zZywgXAotICAgICAgICAgIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIF9fRklMRV9fLCBfX0xJTkVfXykpCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9WRVJJRlkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jdW5kZWYgTkROQk9PU1RfVkVSSUZZCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfQVNTRVJUUykgfHwgKCAhZGVmaW5lZChORE5CT09TVF9FTkFCTEVfQVNTRVJUX0hBTkRMRVIpICYmIGRlZmluZWQoTkRFQlVHKSApCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1ZFUklGWShleHByKSAoKHZvaWQpKGV4cHIpKQotCi0jZWxzZQotCi0jIGRlZmluZSBORE5CT09TVF9WRVJJRlkoZXhwcikgTkROQk9PU1RfQVNTRVJUKGV4cHIpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NTNjODcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgYmluZC5ocHAgLSBiaW5kcyBmdW5jdGlvbiBvYmplY3RzIHRvIGFyZ3VtZW50cwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDkgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmQuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9CSU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZDk2YmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9BUFBMWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9BUFBMWV9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBhcHBseS5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLXRlbXBsYXRlPGNsYXNzIFI+IHN0cnVjdCBhcHBseQotewotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoRiAmIGYpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCwgQTkgJiBhOSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0JJTkRfQVBQTFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDIwZTdmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9CSU5EX0FSR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9BUkdfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGJpbmQvYXJnLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXNfcGxhY2Vob2xkZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8IGludCBJID4gc3RydWN0IGFyZwotewotICAgIGFyZygpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4gYXJnKCBUIGNvbnN0ICYgLyogdCAqLyApCi0gICAgewotICAgICAgICAvLyBzdGF0aWMgYXNzZXJ0IEkgPT0gaXNfcGxhY2Vob2xkZXI8VD46OnZhbHVlCi0gICAgICAgIHR5cGVkZWYgY2hhciBUX211c3RfYmVfcGxhY2Vob2xkZXJbIEkgPT0gaXNfcGxhY2Vob2xkZXI8VD46OnZhbHVlPyAxOiAtMSBdOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPCBpbnQgSSA+IGJvb2wgb3BlcmF0b3I9PSggYXJnPEk+IGNvbnN0ICYsIGFyZzxJPiBjb25zdCAmICkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGludCBJID4gc3RydWN0IGlzX3BsYWNlaG9sZGVyPCBhcmc8ST4gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBJIH07Ci19OwotCi10ZW1wbGF0ZTwgaW50IEkgPiBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8IGFyZzxJPiAoKikgKCkgPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBJIH07Ci19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQklORF9BUkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMGJiMmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc1MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0JJTkRfQklORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9CSU5EX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBiaW5kLmhwcCAtIGJpbmRzIGZ1bmN0aW9uIG9iamVjdHMgdG8gYXJndW1lbnRzCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMS0yMDA0IFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIERhdmlkIEFicmFoYW1zCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA1IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWVtX2ZuLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pc19wbGFjZWhvbGRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9hcmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC92aXNpdF9lYWNoLmhwcD4KLQotLy8gQm9ybGFuZC1zcGVjaWZpYyBidWcsIHZpc2l0X2VhY2goKSBzaWxlbnRseSBmYWlscyB0byBwcm9kdWNlIGNvZGUKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCBuZG5ib29zdDo6dmlzaXRfZWFjaAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0ggdmlzaXRfZWFjaAotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL3N0b3JhZ2UuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTEyKSAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgd2Vha19wdHI7Ci0KLW5hbWVzcGFjZSBfYmkgLy8gaW1wbGVtZW50YXRpb24gZGV0YWlscwotewotCi0vLyByZXN1bHRfdHJhaXRzCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEY+IHN0cnVjdCByZXN1bHRfdHJhaXRzCi17Ci0gICAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0KLXN0cnVjdCB1bnNwZWNpZmllZCB7fTsKLQotdGVtcGxhdGU8Y2xhc3MgRj4gc3RydWN0IHJlc3VsdF90cmFpdHM8dW5zcGVjaWZpZWQsIEY+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjpyZXN1bHRfdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRj4gc3RydWN0IHJlc3VsdF90cmFpdHM8IHVuc3BlY2lmaWVkLCByZWZlcmVuY2Vfd3JhcHBlcjxGPiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjpyZXN1bHRfdHlwZSB0eXBlOwotfTsKLQotI2VuZGlmCi0KLS8vIHJlZl9jb21wYXJlCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgcmVmX2NvbXBhcmUoIFQgY29uc3QgJiBhLCBUIGNvbnN0ICYgYiwgbG9uZyApCi17Ci0gICAgcmV0dXJuIGEgPT0gYjsKLX0KLQotdGVtcGxhdGU8aW50IEk+IGJvb2wgcmVmX2NvbXBhcmUoIGFyZzxJPiBjb25zdCAmLCBhcmc8ST4gY29uc3QgJiwgaW50ICkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8aW50IEk+IGJvb2wgcmVmX2NvbXBhcmUoIGFyZzxJPiAoKikgKCksIGFyZzxJPiAoKikgKCksIGludCApCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgcmVmX2NvbXBhcmUoIHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgYSwgcmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiBiLCBpbnQgKQotewotICAgIHJldHVybiBhLmdldF9wb2ludGVyKCkgPT0gYi5nZXRfcG9pbnRlcigpOwotfQotCi0vLyBiaW5kX3QgZm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgbGlzdE4KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gY2xhc3MgYmluZF90OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBib29sIHJlZl9jb21wYXJlKCBiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBhLCBiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiLCBpbnQgKQotewotICAgIHJldHVybiBhLmNvbXBhcmUoIGIgKTsKLX0KLQotLy8gdmFsdWUKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgdmFsdWUKLXsKLXB1YmxpYzoKLQotICAgIHZhbHVlKFQgY29uc3QgJiB0KTogdF8odCkge30KLQotICAgIFQgJiBnZXQoKSB7IHJldHVybiB0XzsgfQotICAgIFQgY29uc3QgJiBnZXQoKSBjb25zdCB7IHJldHVybiB0XzsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KHZhbHVlIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRfID09IHJocy50XzsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBUIHRfOwotfTsKLQotLy8gcmVmX2NvbXBhcmUgZm9yIHdlYWtfcHRyCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgcmVmX2NvbXBhcmUoIHZhbHVlPCB3ZWFrX3B0cjxUPiA+IGNvbnN0ICYgYSwgdmFsdWU8IHdlYWtfcHRyPFQ+ID4gY29uc3QgJiBiLCBpbnQgKQotewotICAgIHJldHVybiAhKGEuZ2V0KCkgPCBiLmdldCgpKSAmJiAhKGIuZ2V0KCkgPCBhLmdldCgpKTsKLX0KLQotLy8gdHlwZQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyB0eXBlIHt9OwotCi0vLyB1bndyYXAKLQotdGVtcGxhdGU8Y2xhc3MgRj4gc3RydWN0IHVud3JhcHBlcgotewotICAgIHN0YXRpYyBpbmxpbmUgRiAmIHVud3JhcCggRiAmIGYsIGxvbmcgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGY7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRjI+IHN0YXRpYyBpbmxpbmUgRjIgJiB1bndyYXAoIHJlZmVyZW5jZV93cmFwcGVyPEYyPiByZiwgaW50ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZi5nZXQoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUPiBzdGF0aWMgaW5saW5lIF9tZmk6OmRtPFIsIFQ+IHVud3JhcCggUiBUOjoqIHBtLCBpbnQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIF9tZmk6OmRtPFIsIFQ+KCBwbSApOwotICAgIH0KLX07Ci0KLS8vIGxpc3ROCi0KLWNsYXNzIGxpc3QwCi17Ci1wdWJsaWM6Ci0KLSAgICBsaXN0MCgpIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYsIGxvbmcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiwgaW50KQotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYpIGNvbnN0Ci0gICAgewotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0MCBjb25zdCAmKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLS8vIE1TVkMgaXMgYnJpZ2h0IGVub3VnaCB0byByZWFsaXNlIHRoYXQgdGhlIHBhcmFtZXRlciByaHMgCi0vLyBpbiBvcGVyYXRvcj09bWF5IGJlIHVudXNlZCBmb3Igc29tZSB0ZW1wbGF0ZSBhcmd1bWVudCB0eXBlczoKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMCkKLSNlbmRpZgotCi10ZW1wbGF0ZTwgY2xhc3MgQTEgPiBjbGFzcyBsaXN0MTogcHJpdmF0ZSBzdG9yYWdlMTwgQTEgPgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgc3RvcmFnZTE8IEExID4gYmFzZV90eXBlOwotCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBsaXN0MSggQTEgYTEgKTogYmFzZV90eXBlKCBhMSApIHt9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoIF9iaTo6dmFsdWU8VD4gJiB2ICkgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCBjb25zdCAmIG9wZXJhdG9yW10gKCBfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdiApIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiAmIGYsIEEgJiBhLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBsb25nKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgY29uc3QgJiBmLCBBICYgYSwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3QxIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZl9jb21wYXJlKGJhc2VfdHlwZTo6YTFfLCByaHMuYTFfLCAwKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgbG9naWNhbF9hbmQ7Ci1zdHJ1Y3QgbG9naWNhbF9vcjsKLQotdGVtcGxhdGU8IGNsYXNzIEExLCBjbGFzcyBBMiA+IGNsYXNzIGxpc3QyOiBwcml2YXRlIHN0b3JhZ2UyPCBBMSwgQTIgPgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgc3RvcmFnZTI8IEExLCBBMiA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDIoIEExIGExLCBBMiBhMiApOiBiYXNlX3R5cGUoIGExLCBhMiApIHt9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCBjb25zdCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgJiBmLCBBICYgYSwgbG9uZykKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGxvbmcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGludCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQT4gYm9vbCBvcGVyYXRvcigpKCB0eXBlPGJvb2w+LCBsb2dpY2FsX2FuZCAmIC8qZiovLCBBICYgYSwgaW50ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhWyBiYXNlX3R5cGU6OmExXyBdICYmIGFbIGJhc2VfdHlwZTo6YTJfIF07Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQT4gYm9vbCBvcGVyYXRvcigpKCB0eXBlPGJvb2w+LCBsb2dpY2FsX2FuZCBjb25zdCAmIC8qZiovLCBBICYgYSwgaW50ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhWyBiYXNlX3R5cGU6OmExXyBdICYmIGFbIGJhc2VfdHlwZTo6YTJfIF07Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQT4gYm9vbCBvcGVyYXRvcigpKCB0eXBlPGJvb2w+LCBsb2dpY2FsX29yICYgLypmKi8sIEEgJiBhLCBpbnQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFbIGJhc2VfdHlwZTo6YTFfIF0gfHwgYVsgYmFzZV90eXBlOjphMl8gXTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBPiBib29sIG9wZXJhdG9yKCkoIHR5cGU8Ym9vbD4sIGxvZ2ljYWxfb3IgY29uc3QgJiAvKmYqLywgQSAmIGEsIGludCApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYVsgYmFzZV90eXBlOjphMV8gXSB8fCBhWyBiYXNlX3R5cGU6OmEyXyBdOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3QyIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZl9jb21wYXJlKGJhc2VfdHlwZTo6YTFfLCByaHMuYTFfLCAwKSAmJiByZWZfY29tcGFyZShiYXNlX3R5cGU6OmEyXywgcmhzLmEyXywgMCk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8IGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMgPiBjbGFzcyBsaXN0MzogcHJpdmF0ZSBzdG9yYWdlMzwgQTEsIEEyLCBBMyA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlMzwgQTEsIEEyLCBBMyA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDMoIEExIGExLCBBMiBhMiwgQTMgYTMgKTogYmFzZV90eXBlKCBhMSwgYTIsIGEzICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmIGEsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYgYSwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0MyBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybgotICAgICAgICAgICAgCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTJfLCByaHMuYTJfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEzXywgcmhzLmEzXywgMCApOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCA+IGNsYXNzIGxpc3Q0OiBwcml2YXRlIHN0b3JhZ2U0PCBBMSwgQTIsIEEzLCBBNCA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlNDwgQTEsIEEyLCBBMywgQTQgPiBiYXNlX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIGxpc3Q0KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCApOiBiYXNlX3R5cGUoIGExLCBhMiwgYTMsIGE0ICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphM187IH0KLSAgICBBNCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDQ+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCBjb25zdCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgJiBmLCBBICYgYSwgbG9uZykKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYgYSwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgJiBmLCBBICYgYSwgaW50KQotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGludCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0NCBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybgotCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTJfLCByaHMuYTJfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEzXywgcmhzLmEzXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNF8sIHJocy5hNF8sIDAgKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1ID4gY2xhc3MgbGlzdDU6IHByaXZhdGUgc3RvcmFnZTU8IEExLCBBMiwgQTMsIEE0LCBBNSA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlNTwgQTEsIEEyLCBBMywgQTQsIEE1ID4gYmFzZV90eXBlOwotCi1wdWJsaWM6Ci0KLSAgICBsaXN0NSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1ICk6IGJhc2VfdHlwZSggYTEsIGEyLCBhMywgYTQsIGE1ICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNV87IH0KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotICAgIEE1IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8NT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUIGNvbnN0ICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiAmIGYsIEEgJiBhLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYgYSwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGICYgZiwgQSAmIGEsIGludCkKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgY29uc3QgJiBmLCBBICYgYSwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0NSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybgotCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTJfLCByaHMuYTJfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEzXywgcmhzLmEzXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNF8sIHJocy5hNF8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTVfLCByaHMuYTVfLCAwICk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gY2xhc3MgbGlzdDY6IHByaXZhdGUgc3RvcmFnZTY8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYgPgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgc3RvcmFnZTY8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYgPiBiYXNlX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIGxpc3Q2KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2ICk6IGJhc2VfdHlwZSggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiApIHt9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphM187IH0KLSAgICBBNCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDQ+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotICAgIEE1IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8NT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0gICAgQTYgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw2PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNl87IH0KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotICAgIEE1IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8NT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotICAgIEE2IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE2XzsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUIGNvbnN0ICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiAmIGYsIEEgJiBhLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGxvbmcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgJiBmLCBBICYgYSwgaW50KQotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgY29uc3QgJiBmLCBBICYgYSwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBiYXNlX3R5cGU6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0obGlzdDYgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTFfLCByaHMuYTFfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEyXywgcmhzLmEyXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphM18sIHJocy5hM18sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTRfLCByaHMuYTRfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE1XywgcmhzLmE1XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNl8sIHJocy5hNl8sIDAgKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gY2xhc3MgbGlzdDc6IHByaXZhdGUgc3RvcmFnZTc8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3ID4KLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIHN0b3JhZ2U3PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDcoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3ICk6IGJhc2VfdHlwZSggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcgKSB7fQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLSAgICBBNSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDU+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotICAgIEE2IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0gICAgQTcgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw3PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphN187IH0KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotICAgIEE1IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8NT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotICAgIEE2IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE2XzsgfQotICAgIEE3IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nz4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE3XzsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUIGNvbnN0ICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiAmIGYsIEEgJiBhLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBsb25nKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgY29uc3QgJiBmLCBBICYgYSwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3Q3IGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmExXywgcmhzLmExXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMl8sIHJocy5hMl8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTNfLCByaHMuYTNfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE0XywgcmhzLmE0XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNV8sIHJocy5hNV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTZfLCByaHMuYTZfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE3XywgcmhzLmE3XywgMCApOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTggPiBjbGFzcyBsaXN0ODogcHJpdmF0ZSBzdG9yYWdlODwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4ID4KLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIHN0b3JhZ2U4PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTggPiBiYXNlX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIGxpc3Q4KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTggKTogYmFzZV90eXBlKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTggKSB7fQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLSAgICBBNSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDU+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotICAgIEE2IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0gICAgQTcgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw3PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphN187IH0KLSAgICBBOCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDg+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE4XzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0gICAgQTYgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw2PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0gICAgQTcgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw3PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTdfOyB9Ci0gICAgQTggb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw4PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YThfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmIGEsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10sIGFbYmFzZV90eXBlOjphOF9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBsb25nKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dLCBhW2Jhc2VfdHlwZTo6YThfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgJiBmLCBBICYgYSwgaW50KQotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10sIGFbYmFzZV90eXBlOjphOF9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3Q4IGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmExXywgcmhzLmExXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMl8sIHJocy5hMl8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTNfLCByaHMuYTNfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE0XywgcmhzLmE0XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNV8sIHJocy5hNV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTZfLCByaHMuYTZfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE3XywgcmhzLmE3XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphOF8sIHJocy5hOF8sIDAgKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiBjbGFzcyBsaXN0OTogcHJpdmF0ZSBzdG9yYWdlOTwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlOTwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDkoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkgKTogYmFzZV90eXBlKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5ICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNV87IH0KLSAgICBBNiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDY+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE2XzsgfQotICAgIEE3IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nz4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTdfOyB9Ci0gICAgQTggb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw4PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphOF87IH0KLSAgICBBOSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDk+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE5XzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0gICAgQTYgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw2PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0gICAgQTcgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw3PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTdfOyB9Ci0gICAgQTggb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw4PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YThfOyB9Ci0gICAgQTkgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw5PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTlfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmIGEsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10sIGFbYmFzZV90eXBlOjphOF9dLCBhW2Jhc2VfdHlwZTo6YTlfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYgYSwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10sIGFbYmFzZV90eXBlOjphOV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10sIGFbYmFzZV90eXBlOjphOV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10sIGFbYmFzZV90eXBlOjphOV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0OSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybgotCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTJfLCByaHMuYTJfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEzXywgcmhzLmEzXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNF8sIHJocy5hNF8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTVfLCByaHMuYTVfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE2XywgcmhzLmE2XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphN18sIHJocy5hN18sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YThfLCByaHMuYThfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE5XywgcmhzLmE5XywgMCApOwotICAgIH0KLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8vIGJpbmRfdAotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBjbGFzcyBiaW5kX3QKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgYmluZF90IHRoaXNfdHlwZTsKLQotICAgIGJpbmRfdChGIGYsIEwgY29uc3QgJiBsKTogZl8oZiksIGxfKGwpIHt9Ci0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9SRVRVUk4gcmV0dXJuCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX3RlbXBsYXRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9CSU5EX1JFVFVSTgotCi19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBSPiBzdHJ1Y3QgYmluZF90X2dlbmVyYXRvcgotewotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBMPiBjbGFzcyBpbXBsZW1lbnRhdGlvbgotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBpbXBsZW1lbnRhdGlvbiB0aGlzX3R5cGU7Ci0KLSAgICBpbXBsZW1lbnRhdGlvbihGIGYsIEwgY29uc3QgJiBsKTogZl8oZiksIGxfKGwpIHt9Ci0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9SRVRVUk4gcmV0dXJuCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX3RlbXBsYXRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9CSU5EX1JFVFVSTgotCi19OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaW5kX3RfZ2VuZXJhdG9yPHZvaWQ+Ci17Ci0KLXRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEw+IGNsYXNzIGltcGxlbWVudGF0aW9uCi17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiB2b2lkIFI7Ci0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgaW1wbGVtZW50YXRpb24gdGhpc190eXBlOwotCi0gICAgaW1wbGVtZW50YXRpb24oRiBmLCBMIGNvbnN0ICYgbCk6IGZfKGYpLCBsXyhsKSB7fQotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfUkVUVVJOCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX3RlbXBsYXRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9CSU5EX1JFVFVSTgotCi19OwotCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBSMiwgY2xhc3MgRiwgY2xhc3MgTD4gY2xhc3MgYmluZF90OiBwdWJsaWMgYmluZF90X2dlbmVyYXRvcjxSMj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBpbXBsZW1lbnRhdGlvbjxGLCBMPgotewotcHVibGljOgotCi0gICAgYmluZF90KEYgZiwgTCBjb25zdCAmIGwpOiBiaW5kX3RfZ2VuZXJhdG9yPFIyPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGltcGxlbWVudGF0aW9uPEYsIEw+KGYsIGwpIHt9Ci0KLX07Ci0KLSNlbmRpZgotCi0vLyBmdW5jdGlvbl9lcXVhbAotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAKLQotLy8gcHV0IG92ZXJsb2FkcyBpbiBfYmksIHJlbHkgb24gQURMCi0KLSMgaWZuZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IGJvb2wgZnVuY3Rpb25fZXF1YWwoIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGEsIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIgKQotewotICAgIHJldHVybiBhLmNvbXBhcmUoYik7Ci19Ci0KLSMgZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBib29sIGZ1bmN0aW9uX2VxdWFsX2ltcGwoIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGEsIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIsIGludCApCi17Ci0gICAgcmV0dXJuIGEuY29tcGFyZShiKTsKLX0KLQotIyBlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAKLQotLy8gcHV0IG92ZXJsb2FkcyBpbiBib29zdAotCi19IC8vIG5hbWVzcGFjZSBfYmkKLQotIyBpZm5kZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gYm9vbCBmdW5jdGlvbl9lcXVhbCggX2JpOjpiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBhLCBfYmk6OmJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIgKQotewotICAgIHJldHVybiBhLmNvbXBhcmUoYik7Ci19Ci0KLSMgZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBib29sIGZ1bmN0aW9uX2VxdWFsX2ltcGwoIF9iaTo6YmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYSwgX2JpOjpiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiLCBpbnQgKQotewotICAgIHJldHVybiBhLmNvbXBhcmUoYik7Ci19Ci0KLSMgZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi1uYW1lc3BhY2UgX2JpCi17Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQCi0KLS8vIGFkZF92YWx1ZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgfHwgKF9fU1VOUFJPX0NDID49IDB4NTMwKQotCi0jaWYgZGVmaW5lZCggX19CT1JMQU5EQ19fICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODIpICkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZF92YWx1ZQotewotICAgIHR5cGVkZWYgX2JpOjp2YWx1ZTxUPiB0eXBlOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGludCBJID4gc3RydWN0IGFkZF92YWx1ZV8yCi17Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6YXJnPEk+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBhZGRfdmFsdWVfMjwgVCwgMCA+Ci17Ci0gICAgdHlwZWRlZiBfYmk6OnZhbHVlPCBUID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRfdmFsdWUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZV8yPCBULCBuZG5ib29zdDo6aXNfcGxhY2Vob2xkZXI8IFQgPjo6dmFsdWUgPjo6dHlwZSB0eXBlOwotfTsKLQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRfdmFsdWU8IHZhbHVlPFQ+ID4KLXsKLSAgICB0eXBlZGVmIF9iaTo6dmFsdWU8VD4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRfdmFsdWU8IHJlZmVyZW5jZV93cmFwcGVyPFQ+ID4KLXsKLSAgICB0eXBlZGVmIHJlZmVyZW5jZV93cmFwcGVyPFQ+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgST4gc3RydWN0IGFkZF92YWx1ZTwgYXJnPEk+ID4KLXsKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojphcmc8ST4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGludCBJPiBzdHJ1Y3QgYWRkX3ZhbHVlPCBhcmc8ST4gKCopICgpID4KLXsKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojphcmc8ST4gKCp0eXBlKSAoKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHN0cnVjdCBhZGRfdmFsdWU8IGJpbmRfdDxSLCBGLCBMPiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kX3Q8UiwgRiwgTD4gdHlwZTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPGludCBJPiBzdHJ1Y3QgX2F2dF8wOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBfYXZ0XzA8MT4KLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgaW5uZXIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBfYXZ0XzA8Mj4KLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgaW5uZXIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmFsdWU8VD4gdHlwZTsKLSAgICB9OwotfTsKLQotdHlwZWRlZiBjaGFyICgmX2F2dF9yMSkgWzFdOwotdHlwZWRlZiBjaGFyICgmX2F2dF9yMikgWzJdOwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBfYXZ0X3IxIF9hdnRfZih2YWx1ZTxUPik7Ci10ZW1wbGF0ZTxjbGFzcyBUPiBfYXZ0X3IxIF9hdnRfZihyZWZlcmVuY2Vfd3JhcHBlcjxUPik7Ci10ZW1wbGF0ZTxpbnQgST4gX2F2dF9yMSBfYXZ0X2YoYXJnPEk+KTsKLXRlbXBsYXRlPGludCBJPiBfYXZ0X3IxIF9hdnRfZihhcmc8ST4gKCopICgpKTsKLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IF9hdnRfcjEgX2F2dF9mKGJpbmRfdDxSLCBGLCBMPik7Ci0KLV9hdnRfcjIgX2F2dF9mKC4uLik7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRfdmFsdWUKLXsKLSAgICBzdGF0aWMgVCB0KCk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYXZ0XzA8c2l6ZW9mKF9hdnRfZih0KCkpKT46OnRlbXBsYXRlIGlubmVyPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotLy8gbGlzdF9hdl9OCi0KLXRlbXBsYXRlPGNsYXNzIEExPiBzdHJ1Y3QgbGlzdF9hdl8xCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTE+Ojp0eXBlIEIxOwotICAgIHR5cGVkZWYgbGlzdDE8QjE+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHN0cnVjdCBsaXN0X2F2XzIKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMT46OnR5cGUgQjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTI+Ojp0eXBlIEIyOwotICAgIHR5cGVkZWYgbGlzdDI8QjEsIEIyPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gc3RydWN0IGxpc3RfYXZfMwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEExPjo6dHlwZSBCMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTM+Ojp0eXBlIEIzOwotICAgIHR5cGVkZWYgbGlzdDM8QjEsIEIyLCBCMz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiBzdHJ1Y3QgbGlzdF9hdl80Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTE+Ojp0eXBlIEIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEyPjo6dHlwZSBCMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMz46OnR5cGUgQjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTQ+Ojp0eXBlIEI0OwotICAgIHR5cGVkZWYgbGlzdDQ8QjEsIEIyLCBCMywgQjQ+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHN0cnVjdCBsaXN0X2F2XzUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMT46OnR5cGUgQjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTI+Ojp0eXBlIEIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEzPjo6dHlwZSBCMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBND46OnR5cGUgQjQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTU+Ojp0eXBlIEI1OwotICAgIHR5cGVkZWYgbGlzdDU8QjEsIEIyLCBCMywgQjQsIEI1PiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gc3RydWN0IGxpc3RfYXZfNgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEExPjo6dHlwZSBCMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTM+Ojp0eXBlIEIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE0Pjo6dHlwZSBCNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNT46OnR5cGUgQjU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTY+Ojp0eXBlIEI2OwotICAgIHR5cGVkZWYgbGlzdDY8QjEsIEIyLCBCMywgQjQsIEI1LCBCNj4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiBzdHJ1Y3QgbGlzdF9hdl83Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTE+Ojp0eXBlIEIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEyPjo6dHlwZSBCMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMz46OnR5cGUgQjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTQ+Ojp0eXBlIEI0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE1Pjo6dHlwZSBCNTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNj46OnR5cGUgQjY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTc+Ojp0eXBlIEI3OwotICAgIHR5cGVkZWYgbGlzdDc8QjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjc+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHN0cnVjdCBsaXN0X2F2XzgKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMT46OnR5cGUgQjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTI+Ojp0eXBlIEIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEzPjo6dHlwZSBCMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBND46OnR5cGUgQjQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTU+Ojp0eXBlIEI1OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE2Pjo6dHlwZSBCNjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNz46OnR5cGUgQjc7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTg+Ojp0eXBlIEI4OwotICAgIHR5cGVkZWYgbGlzdDg8QjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4PiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4gc3RydWN0IGxpc3RfYXZfOQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEExPjo6dHlwZSBCMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTM+Ojp0eXBlIEIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE0Pjo6dHlwZSBCNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNT46OnR5cGUgQjU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTY+Ojp0eXBlIEI2OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE3Pjo6dHlwZSBCNzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBOD46OnR5cGUgQjg7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTk+Ojp0eXBlIEI5OwotICAgIHR5cGVkZWYgbGlzdDk8QjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4LCBCOT4gdHlwZTsKLX07Ci0KLS8vIG9wZXJhdG9yIQotCi1zdHJ1Y3QgbG9naWNhbF9ub3QKLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBib29sIG9wZXJhdG9yKCkoViBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuICF2OyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPgotICAgIGJpbmRfdDwgYm9vbCwgbG9naWNhbF9ub3QsIGxpc3QxPCBiaW5kX3Q8UiwgRiwgTD4gPiA+Ci0gICAgb3BlcmF0b3IhIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBmKQotewotICAgIHR5cGVkZWYgbGlzdDE8IGJpbmRfdDxSLCBGLCBMPiA+IGxpc3RfdHlwZTsKLSAgICByZXR1cm4gYmluZF90PGJvb2wsIGxvZ2ljYWxfbm90LCBsaXN0X3R5cGU+ICggbG9naWNhbF9ub3QoKSwgbGlzdF90eXBlKGYpICk7Ci19Ci0KLS8vIHJlbGF0aW9uYWwgb3BlcmF0b3JzCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9PUEVSQVRPUiggb3AsIG5hbWUgKSBcCi1cCi1zdHJ1Y3QgbmFtZSBcCi17IFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBXPiBib29sIG9wZXJhdG9yKCkoViBjb25zdCAmIHYsIFcgY29uc3QgJiB3KSBjb25zdCB7IHJldHVybiB2IG9wIHc7IH0gXAotfTsgXAotIFwKLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEwsIGNsYXNzIEEyPiBcCi0gICAgYmluZF90PCBib29sLCBuYW1lLCBsaXN0MjwgYmluZF90PFIsIEYsIEw+LCB0eXBlbmFtZSBhZGRfdmFsdWU8QTI+Ojp0eXBlID4gPiBcCi0gICAgb3BlcmF0b3Igb3AgKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGYsIEEyIGEyKSBcCi17IFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7IFwKLSAgICB0eXBlZGVmIGxpc3QyPCBiaW5kX3Q8UiwgRiwgTD4sIEIyPiBsaXN0X3R5cGU7IFwKLSAgICByZXR1cm4gYmluZF90PGJvb2wsIG5hbWUsIGxpc3RfdHlwZT4gKCBuYW1lKCksIGxpc3RfdHlwZShmLCBhMikgKTsgXAotfQotCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCA9PSwgZXF1YWwgKQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggIT0sIG5vdF9lcXVhbCApCi0KLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoIDwsIGxlc3MgKQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggPD0sIGxlc3NfZXF1YWwgKQotCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCA+LCBncmVhdGVyICkKLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoID49LCBncmVhdGVyX2VxdWFsICkKLQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggJiYsIGxvZ2ljYWxfYW5kICkKLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoIHx8LCBsb2dpY2FsX29yICkKLQotI3VuZGVmIE5ETkJPT1NUX0JJTkRfT1BFUkFUT1IKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykKLQotLy8gcmVzb2x2ZSBhbWJpZ3VpdHkgd2l0aCByZWxfb3BzCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9PUEVSQVRPUiggb3AsIG5hbWUgKSBcCi1cCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBcCi0gICAgYmluZF90PCBib29sLCBuYW1lLCBsaXN0MjwgYmluZF90PFIsIEYsIEw+LCBiaW5kX3Q8UiwgRiwgTD4gPiA+IFwKLSAgICBvcGVyYXRvciBvcCAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgZiwgYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgZykgXAoteyBcCi0gICAgdHlwZWRlZiBsaXN0MjwgYmluZF90PFIsIEYsIEw+LCBiaW5kX3Q8UiwgRiwgTD4gPiBsaXN0X3R5cGU7IFwKLSAgICByZXR1cm4gYmluZF90PGJvb2wsIG5hbWUsIGxpc3RfdHlwZT4gKCBuYW1lKCksIGxpc3RfdHlwZShmLCBnKSApOyBcCi19Ci0KLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoICE9LCBub3RfZXF1YWwgKQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggPD0sIGxlc3NfZXF1YWwgKQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggPiwgZ3JlYXRlciApCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCA+PSwgZ3JlYXRlcl9lcXVhbCApCi0KLSNlbmRpZgotCi0vLyB2aXNpdF9lYWNoLCBBREwKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQICkgJiYgIWRlZmluZWQoIF9fQk9STEFORENfXyApIFwKLSAgICYmICEoZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA8PSAzKQotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiB2b2lkIHZpc2l0X2VhY2goIFYgJiB2LCB2YWx1ZTxUPiBjb25zdCAmIHQsIGludCApCi17Ci0gICAgdXNpbmcgbmRuYm9vc3Q6OnZpc2l0X2VhY2g7Ci0gICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKCB2LCB0LmdldCgpLCAwICk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHZvaWQgdmlzaXRfZWFjaCggViAmIHYsIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIHQsIGludCApCi17Ci0gICAgdC5hY2NlcHQoIHYgKTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIF9iaQotCi0vLyB2aXNpdF9lYWNoLCBubyBBREwKLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAgKSB8fCBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSBcCi0gIHx8IChkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fIDw9IDMpCi0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHZvaWQgdmlzaXRfZWFjaCggViAmIHYsIF9iaTo6dmFsdWU8VD4gY29uc3QgJiB0LCBpbnQgKQotewotICAgIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCggdiwgdC5nZXQoKSwgMCApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB2b2lkIHZpc2l0X2VhY2goIFYgJiB2LCBfYmk6OmJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIHQsIGludCApCi17Ci0gICAgdC5hY2NlcHQoIHYgKTsKLX0KLQotI2VuZGlmCi0KLS8vIGlzX2JpbmRfZXhwcmVzc2lvbgotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBpc19iaW5kX2V4cHJlc3Npb24KLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gMCB9OwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEwgPiBzdHJ1Y3QgaXNfYmluZF9leHByZXNzaW9uPCBfYmk6OmJpbmRfdDwgUiwgRiwgTCA+ID4KLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gMSB9OwotfTsKLQotI2VuZGlmCi0KLS8vIGJpbmQKLQotI2lmbmRlZiBORE5CT09TVF9CSU5ECi0jZGVmaW5lIE5ETkJPT1NUX0JJTkQgYmluZAotI2VuZGlmCi0KLS8vIGdlbmVyaWMgZnVuY3Rpb24gb2JqZWN0cwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGPgotICAgIF9iaTo6YmluZF90PFIsIEYsIF9iaTo6bGlzdDA+Ci0gICAgTkROQk9PU1RfQklORChGIGYpCi17Ci0gICAgdHlwZWRlZiBfYmk6Omxpc3QwIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKGExKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKGExLCBhMikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgsIEE5IGE5KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19Ci0KLS8vIGdlbmVyaWMgZnVuY3Rpb24gb2JqZWN0cywgYWx0ZXJuYXRpdmUgc3ludGF4Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEY+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgX2JpOjpsaXN0MD4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYpCi17Ci0gICAgdHlwZWRlZiBfYmk6Omxpc3QwIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZShhMSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgsIEE5IGE5KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLQotLy8gYWRhcHRhYmxlIGZ1bmN0aW9uIG9iamVjdHMKLQotdGVtcGxhdGU8Y2xhc3MgRj4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBfYmk6Omxpc3QwPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmKQotewotICAgIHR5cGVkZWYgX2JpOjpsaXN0MCBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZSgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTE+Ci0gICAgX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZShhMSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZShhMSwgYTIpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMykKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICAgIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICAgIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBBOSBhOSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkpOwotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0KLS8vIGZ1bmN0aW9uIHBvaW50ZXJzCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9DQwotI2RlZmluZSBORE5CT09TVF9CSU5EX1NUCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9DQwotI3VuZGVmIE5ETkJPT1NUX0JJTkRfU1QKLQotI2lmZGVmIE5ETkJPT1NUX0JJTkRfRU5BQkxFX1NURENBTEwKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX0NDIF9fc3RkY2FsbAotI2RlZmluZSBORE5CT09TVF9CSU5EX1NUCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9DQwotI3VuZGVmIE5ETkJPT1NUX0JJTkRfU1QKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9CSU5EX0VOQUJMRV9GQVNUQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfQ0MgX19mYXN0Y2FsbAotI2RlZmluZSBORE5CT09TVF9CSU5EX1NUCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9DQwotI3VuZGVmIE5ETkJPT1NUX0JJTkRfU1QKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9CSU5EX0VOQUJMRV9QQVNDQUwKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX1NUIHBhc2NhbAotI2RlZmluZSBORE5CT09TVF9CSU5EX0NDCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9TVAotI3VuZGVmIE5ETkJPT1NUX0JJTkRfQ0MKLQotI2VuZGlmCi0KLS8vIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycwotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfTUZfTkFNRShYKSBYCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfTUZfQ0MKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9tZl9jYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX21mMl9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9CSU5EX01GX05BTUUKLSN1bmRlZiBORE5CT09TVF9CSU5EX01GX0NDCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NERUNMCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9NRl9OQU1FKFgpIFgjI19jZGVjbAotI2RlZmluZSBORE5CT09TVF9CSU5EX01GX0NDIF9fY2RlY2wKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9tZl9jYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX21mMl9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9CSU5EX01GX05BTUUKLSN1bmRlZiBORE5CT09TVF9CSU5EX01GX0NDCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9TVERDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9NRl9OQU1FKFgpIFgjI19zdGRjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfTUZfQ0MgX19zdGRjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfbWZfY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9tZjJfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9NRl9OQU1FCi0jdW5kZWYgTkROQk9PU1RfQklORF9NRl9DQwotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfRkFTVENBTEwKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX01GX05BTUUoWCkgWCMjX2Zhc3RjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfTUZfQ0MgX19mYXN0Y2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX21mX2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfbWYyX2NjLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX0JJTkRfTUZfTkFNRQotI3VuZGVmIE5ETkJPT1NUX0JJTkRfTUZfQ0MKLQotI2VuZGlmCi0KLS8vIGRhdGEgbWVtYmVyIHBvaW50ZXJzCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAgICB8fCAoIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCggMHg2MjAgKSApICkKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTE+Ci1fYmk6OmJpbmRfdDwgUiwgX21maTo6ZG08UiwgVD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSA+Ci0gICAgTkROQk9PU1RfQklORChSIFQ6OipmLCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6OmRtPFIsIFQ+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KCBGKGYpLCBsaXN0X3R5cGUoYTEpICk7Ci19Ci0KLSNlbHNlCi0KLW5hbWVzcGFjZSBfYmkKLXsKLQotdGVtcGxhdGU8IGNsYXNzIFBtLCBpbnQgSSA+IHN0cnVjdCBhZGRfY3JlZjsKLQotdGVtcGxhdGU8IGNsYXNzIE0sIGNsYXNzIFQgPiBzdHJ1Y3QgYWRkX2NyZWY8IE0gVDo6KiwgMCA+Ci17Ci0gICAgdHlwZWRlZiBNIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgTSwgY2xhc3MgVCA+IHN0cnVjdCBhZGRfY3JlZjwgTSBUOjoqLCAxID4KLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxODApCi0jZW5kaWYKLSAgICB0eXBlZGVmIE0gY29uc3QgJiB0eXBlOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBSLCBjbGFzcyBUID4gc3RydWN0IGFkZF9jcmVmPCBSIChUOjoqKSAoKSwgMSA+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoX19JQk1DUFBfXykgfHwgX19JQk1DUFBfRlVOQ19DVl9UTVBMX0FSR19ERURVQ1RJT04KLQotdGVtcGxhdGU8IGNsYXNzIFIsIGNsYXNzIFQgPiBzdHJ1Y3QgYWRkX2NyZWY8IFIgKFQ6OiopICgpIGNvbnN0LCAxID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNlbmRpZiAvLyBfX0lCTUNQUF9fCi0KLXRlbXBsYXRlPGNsYXNzIFI+IHN0cnVjdCBpc3JlZgotewotICAgIGVudW0gdmFsdWVfdHlwZSB7IHZhbHVlID0gMCB9OwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUj4gc3RydWN0IGlzcmVmPCBSJiA+Ci17Ci0gICAgZW51bSB2YWx1ZV90eXBlIHsgdmFsdWUgPSAxIH07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSPiBzdHJ1Y3QgaXNyZWY8IFIqID4KLXsKLSAgICBlbnVtIHZhbHVlX3R5cGUgeyB2YWx1ZSA9IDEgfTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFBtLCBjbGFzcyBBMT4gc3RydWN0IGRtX3Jlc3VsdAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX2NyZWY8IFBtLCAxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFBtLCBjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBzdHJ1Y3QgZG1fcmVzdWx0PCBQbSwgYmluZF90PFIsIEYsIEw+ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJpbmRfdDxSLCBGLCBMPjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfY3JlZjwgUG0sIGlzcmVmPCByZXN1bHRfdHlwZSA+Ojp2YWx1ZSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBfYmkKLQotdGVtcGxhdGU8IGNsYXNzIEExLCBjbGFzcyBNLCBjbGFzcyBUID4KLQotX2JpOjpiaW5kX3Q8Ci0gICAgdHlwZW5hbWUgX2JpOjpkbV9yZXN1bHQ8IE0gVDo6KiwgQTEgPjo6dHlwZSwKLSAgICBfbWZpOjpkbTxNLCBUPiwKLSAgICB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUKLT4KLQotTkROQk9PU1RfQklORCggTSBUOjoqZiwgQTEgYTEgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpkbV9yZXN1bHQ8IE0gVDo6KiwgQTEgPjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIF9tZmk6OmRtPE0sIFQ+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDwgcmVzdWx0X3R5cGUsIEYsIGxpc3RfdHlwZSA+KCBGKCBmICksIGxpc3RfdHlwZSggYTEgKSApOwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9CSU5EX05PX1BMQUNFSE9MREVSUwotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2JpbmQvcGxhY2Vob2xkZXJzLmhwcD4KLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQklORF9CSU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjk1ZTZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9iaW5kX2NjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vLwotLy8gIGJpbmQvYmluZF9jYy5ocHAgLSBzdXBwb3J0IGZvciBkaWZmZXJlbnQgY2FsbGluZyBjb252ZW50aW9ucwotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseS4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFI+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopICgpLCBfYmk6Omxpc3QwPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoKSkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqRikgKCk7Ci0gICAgdHlwZWRlZiBfYmk6Omxpc3QwIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBCMSwgY2xhc3MgQTE+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqZikgKEIxKSwgQTEgYTEpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoYTEpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSwgQjIpLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEsIEIyKSwgQTEgYTEsIEEyIGEyKQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpGKSAoQjEsIEIyKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMyksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEsIEIyLCBCMyksIEExIGExLCBBMiBhMiwgQTMgYTMpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSwgQjIsIEIzKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQpLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKmYpIChCMSwgQjIsIEIzLCBCNCksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpGKSAoQjEsIEIyLCBCMywgQjQpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQsIEI1KSwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqRikgKEIxLCBCMiwgQjMsIEI0LCBCNSk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcpLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNyksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpGKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjgsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4KSwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOCksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqRikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOCk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4LCBjbGFzcyBCOSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4LCBCOSksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4LCBCOSksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjgsIEI5KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkpOwotfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfbWYyX2NjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9iaW5kX21mMl9jYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2M2RlZWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfbWYyX2NjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi0vLwotLy8gIGJpbmQvYmluZF9tZjJfY2MuaHBwIC0gbWVtYmVyIGZ1bmN0aW9ucywgdHlwZTw+IHN5bnRheAotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseS4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9iaW5kLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0vLyAwCi0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjApPFIsIFQ+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoKSwgQTEgYTEpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYwKTxSLCBUPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQTE+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMCk8UiwgVD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpICgpIGNvbnN0LCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYwKTxSLCBUPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSkpOwotfQotCi0vLyAxCi0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYxKTxSLCBULCBCMT4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEpLCBBMSBhMSwgQTIgYTIpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYxKTxSLCBULCBCMT4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyPgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjEpPFIsIFQsIEIxPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSkgY29uc3QsIEExIGExLCBBMiBhMikKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYxKTxSLCBULCBCMT4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMikpOwotfQotCi0vLyAyCi0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjIpPFIsIFQsIEIxLCBCMj4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiksIEExIGExLCBBMiBhMiwgQTMgYTMpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYyKTxSLCBULCBCMSwgQjI+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMik8UiwgVCwgQjEsIEIyPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyKSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMykKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYyKTxSLCBULCBCMSwgQjI+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMykpOwotfQotCi0vLyAzCi0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMyk8UiwgVCwgQjEsIEIyLCBCMz4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzKSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYzKTxSLCBULCBCMSwgQjIsIEIzPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYzKTxSLCBULCBCMSwgQjIsIEIzPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYzKTxSLCBULCBCMSwgQjIsIEIzPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCkpOwotfQotCi0vLyA0Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjQpPFIsIFQsIEIxLCBCMiwgQjMsIEI0PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCkgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSkpOwotfQotCi0vLyA1Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjUpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNT4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY1KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjU+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNSk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1KSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY1KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjU+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikpOwotfQotCi0vLyA2Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNik8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNj4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY2KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY2KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY2KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykpOwotfQotCi0vLyA3Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjcpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNykgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkpOwotfQotCi0vLyA4Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjgsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjgpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOCksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY4KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjg+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mOCk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4KSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBBOSBhOSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY4KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjg+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkpOwotfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfbWZfY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfbWZfY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDEwOGU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9iaW5kX21mX2NjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vLwotLy8gIGJpbmQvYmluZF9tZl9jYy5ocHAgLSBzdXBwb3J0IGZvciBkaWZmZXJlbnQgY2FsbGluZyBjb252ZW50aW9ucwotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseS4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLS8vIDAKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYwKTxSLCBUPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKCksIEExIGExKQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMCk8UiwgVD4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQTE+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjApPFIsIFQ+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoKSBjb25zdCwgQTEgYTEpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMCk8UiwgVD4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExKSk7Ci19Ci0KLS8vIDEKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMSk8UiwgVCwgQjE+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxKSwgQTEgYTEsIEEyIGEyKQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMSk8UiwgVCwgQjE+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyPgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYxKTxSLCBULCBCMT4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEpIGNvbnN0LCBBMSBhMSwgQTIgYTIpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMSk8UiwgVCwgQjE+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLS8vIDIKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYyKTxSLCBULCBCMSwgQjI+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIpLCBBMSBhMSwgQTIgYTIsIEEzIGEzKQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMik8UiwgVCwgQjEsIEIyPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjIpPFIsIFQsIEIxLCBCMj4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMikgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMik8UiwgVCwgQjEsIEIyPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLS8vIDMKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjMpPFIsIFQsIEIxLCBCMiwgQjM+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMyksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMyk8UiwgVCwgQjEsIEIyLCBCMz4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMyk8UiwgVCwgQjEsIEIyLCBCMz4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzKSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMyk8UiwgVCwgQjEsIEIyLCBCMz4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0KSk7Ci19Ci0KLS8vIDQKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNCk8UiwgVCwgQjEsIEIyLCBCMywgQjQ+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNCk8UiwgVCwgQjEsIEIyLCBCMywgQjQ+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNCk8UiwgVCwgQjEsIEIyLCBCMywgQjQ+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLS8vIDUKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY1KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjU+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNSk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjUpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNT4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSkgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNSk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLS8vIDYKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjYpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjY+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNik8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNj4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNik8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNj4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2KSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNik8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNj4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Ci19Ci0KLS8vIDcKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNyk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjc+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNyk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjc+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNyk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjc+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLS8vIDgKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjgsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY4KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjg+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjgpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgsIEE5IGE5KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mOCk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjgpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOCkgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mOCk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF90ZW1wbGF0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF90ZW1wbGF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMDM3ZWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfdGVtcGxhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQ1ICswLDAgQEAKLS8vCi0vLyAgYmluZC9iaW5kX3RlbXBsYXRlLmhwcAotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseS4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDQgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSByZXN1bHRfdHlwZTsKLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgbGlzdDAgYTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDAgYTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEpCi0gICAgewotICAgICAgICBsaXN0MTxBMSAmPiBhKGExKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MTxBMSAmPiBhKGExKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExKQotICAgIHsKLSAgICAgICAgbGlzdDE8QTEgY29uc3QgJj4gYShhMSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDE8QTEgY29uc3QgJj4gYShhMSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIpCi0gICAgewotICAgICAgICBsaXN0MjxBMSAmLCBBMiAmPiBhKGExLCBhMik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3QyPEExICYsIEEyICY+IGEoYTEsIGEyKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgJiBhMikKLSAgICB7Ci0gICAgICAgIGxpc3QyPEExIGNvbnN0ICYsIEEyICY+IGEoYTEsIGEyKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDI8QTEgY29uc3QgJiwgQTIgJj4gYShhMSwgYTIpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgY29uc3QgJiBhMikKLSAgICB7Ci0gICAgICAgIGxpc3QyPEExICYsIEEyIGNvbnN0ICY+IGEoYTEsIGEyKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiBjb25zdCAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDI8QTEgJiwgQTIgY29uc3QgJj4gYShhMSwgYTIpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMikKLSAgICB7Ci0gICAgICAgIGxpc3QyPEExIGNvbnN0ICYsIEEyIGNvbnN0ICY+IGEoYTEsIGEyKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDI8QTEgY29uc3QgJiwgQTIgY29uc3QgJj4gYShhMSwgYTIpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMykKLSAgICB7Ci0gICAgICAgIGxpc3QzPEExICYsIEEyICYsIEEzICY+IGEoYTEsIGEyLCBhMyk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MzxBMSAmLCBBMiAmLCBBMyAmPiBhKGExLCBhMiwgYTMpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMykKLSAgICB7Ci0gICAgICAgIGxpc3QzPEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICY+IGEoYTEsIGEyLCBhMyk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MzxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmPiBhKGExLCBhMiwgYTMpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQpCi0gICAgewotICAgICAgICBsaXN0NDxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmPiBhKGExLCBhMiwgYTMsIGE0KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NDxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmPiBhKGExLCBhMiwgYTMsIGE0KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0KQotICAgIHsKLSAgICAgICAgbGlzdDQ8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDQ8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUpCi0gICAgewotICAgICAgICBsaXN0NTxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3Q1PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSkKLSAgICB7Ci0gICAgICAgIGxpc3Q1PEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICYsIEE0IGNvbnN0ICYsIEE1IGNvbnN0ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDU8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNikKLSAgICB7Ci0gICAgICAgIGxpc3Q2PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NjxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmLCBBNiAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNikKLSAgICB7Ci0gICAgICAgIGxpc3Q2PEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICYsIEE0IGNvbnN0ICYsIEE1IGNvbnN0ICYsIEE2IGNvbnN0ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NjxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmLCBBNCBjb25zdCAmLCBBNSBjb25zdCAmLCBBNiBjb25zdCAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcpCi0gICAgewotICAgICAgICBsaXN0NzxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmLCBBNiAmLCBBNyAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NzxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmLCBBNiAmLCBBNyAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3KQotICAgIHsKLSAgICAgICAgbGlzdDc8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJiwgQTYgY29uc3QgJiwgQTcgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3KSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDc8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJiwgQTYgY29uc3QgJiwgQTcgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcsIEE4ICYgYTgpCi0gICAgewotICAgICAgICBsaXN0ODxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmLCBBNiAmLCBBNyAmLCBBOCAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3Q4PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICYsIEE3ICYsIEE4ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCkKLSAgICB7Ci0gICAgICAgIGxpc3Q4PEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICYsIEE0IGNvbnN0ICYsIEE1IGNvbnN0ICYsIEE2IGNvbnN0ICYsIEE3IGNvbnN0ICYsIEE4IGNvbnN0ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDg8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJiwgQTYgY29uc3QgJiwgQTcgY29uc3QgJiwgQTggY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCwgQTkgJiBhOSkKLSAgICB7Ci0gICAgICAgIGxpc3Q5PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICYsIEE3ICYsIEE4ICYsIEE5ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcsIEE4ICYgYTgsIEE5ICYgYTkpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0OTxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmLCBBNiAmLCBBNyAmLCBBOCAmLCBBOSAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCwgQTkgY29uc3QgJiBhOSkKLSAgICB7Ci0gICAgICAgIGxpc3Q5PEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICYsIEE0IGNvbnN0ICYsIEE1IGNvbnN0ICYsIEE2IGNvbnN0ICYsIEE3IGNvbnN0ICYsIEE4IGNvbnN0ICYsIEE5IGNvbnN0ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgsIEE5IGNvbnN0ICYgYTkpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0OTxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmLCBBNCBjb25zdCAmLCBBNSBjb25zdCAmLCBBNiBjb25zdCAmLCBBNyBjb25zdCAmLCBBOCBjb25zdCAmLCBBOSBjb25zdCAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEE+IHJlc3VsdF90eXBlIGV2YWwoQSAmIGEpCi0gICAgewotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQT4gcmVzdWx0X3R5cGUgZXZhbChBICYgYSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAgKSAmJiAhZGVmaW5lZCggX19CT1JMQU5EQ19fICkKLQotICAgICAgICB1c2luZyBuZG5ib29zdDo6dmlzaXRfZWFjaDsKLQotI2VuZGlmCi0gICAgICAgIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCh2LCBmXywgMCk7Ci0gICAgICAgIGxfLmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBib29sIGNvbXBhcmUodGhpc190eXBlIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZl9jb21wYXJlKGZfLCByaHMuZl8sIDApICYmIGxfID09IHJocy5sXzsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBGIGZfOwotICAgIEwgbF87CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWFrZV9hZGFwdGFibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21ha2VfYWRhcHRhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE5ZWRkZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWFrZV9hZGFwdGFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9NQUtFX0FEQVBUQUJMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9NQUtFX0FEQVBUQUJMRV9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBtYWtlX2FkYXB0YWJsZS5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBfYmkKLXsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRj4gY2xhc3MgYWYwCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBhZjAoRiBmKTogZl8oZikKLSAgICB7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXygpOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIEYgZl87Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgRj4gY2xhc3MgYWYxCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBBMSBhcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgQTEgYXJnMV90eXBlOwotCi0gICAgZXhwbGljaXQgYWYxKEYgZik6IGZfKGYpCi0gICAgewotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEpOwotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEpOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIEYgZl87Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEY+IGNsYXNzIGFmMgotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgQTEgZmlyc3RfYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIEEyIHNlY29uZF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgQTEgYXJnMV90eXBlOwotICAgIHR5cGVkZWYgQTIgYXJnMl90eXBlOwotCi0gICAgZXhwbGljaXQgYWYyKEYgZik6IGZfKGYpCi0gICAgewotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEsIEEyIGEyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMik7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBhMSwgQTIgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBGIGZfOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgRj4gY2xhc3MgYWYzCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBBMSBhcmcxX3R5cGU7Ci0gICAgdHlwZWRlZiBBMiBhcmcyX3R5cGU7Ci0gICAgdHlwZWRlZiBBMyBhcmczX3R5cGU7Ci0KLSAgICBleHBsaWNpdCBhZjMoRiBmKTogZl8oZikKLSAgICB7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBhMSwgQTIgYTIsIEEzIGEzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEsIEEyIGEyLCBBMyBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBGIGZfOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEY+IGNsYXNzIGFmNAotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgQTEgYXJnMV90eXBlOwotICAgIHR5cGVkZWYgQTIgYXJnMl90eXBlOwotICAgIHR5cGVkZWYgQTMgYXJnM190eXBlOwotICAgIHR5cGVkZWYgQTQgYXJnNF90eXBlOwotCi0gICAgZXhwbGljaXQgYWY0KEYgZik6IGZfKGYpCi0gICAgewotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIEYgZl87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBfYmkKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRj4gX2JpOjphZjA8UiwgRj4gbWFrZV9hZGFwdGFibGUoRiBmKQotewotICAgIHJldHVybiBfYmk6OmFmMDxSLCBGPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEY+IF9iaTo6YWYxPFIsIEExLCBGPiBtYWtlX2FkYXB0YWJsZShGIGYpCi17Ci0gICAgcmV0dXJuIF9iaTo6YWYxPFIsIEExLCBGPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBGPiBfYmk6OmFmMjxSLCBBMSwgQTIsIEY+IG1ha2VfYWRhcHRhYmxlKEYgZikKLXsKLSAgICByZXR1cm4gX2JpOjphZjI8UiwgQTEsIEEyLCBGPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgRj4gX2JpOjphZjM8UiwgQTEsIEEyLCBBMywgRj4gbWFrZV9hZGFwdGFibGUoRiBmKQotewotICAgIHJldHVybiBfYmk6OmFmMzxSLCBBMSwgQTIsIEEzLCBGPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEY+IF9iaTo6YWY0PFIsIEExLCBBMiwgQTMsIEE0LCBGPiBtYWtlX2FkYXB0YWJsZShGIGYpCi17Ci0gICAgcmV0dXJuIF9iaTo6YWY0PFIsIEExLCBBMiwgQTMsIEE0LCBGPihmKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQklORF9NQUtFX0FEQVBUQUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyYTkxNWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzODkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9CSU5EX01FTV9GTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9NRU1fRk5fSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG1lbV9mbi5ocHAgLSBhIGdlbmVyYWxpemF0aW9uIG9mIHN0ZDo6bWVtX2Z1bltfcmVmXQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgRGF2aWQgQWJyYWhhbXMKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9tZW1fZm4uaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2dldF9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19WT0lEX1JFVFVSTlMpCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0YgLCBjbGFzcyBGCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFgpCi0KLW5hbWVzcGFjZSBfbWZpIC8vIG1lbV9mdW5faW1wbAotewotCi10ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3QgbWYKLXsKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fUkVUVVJOIHJldHVybgotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIGlubmVyXyMjWAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NERUNMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgaW5uZXJfIyNYIyNfY2RlY2wKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fY2RlY2wKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9TVERDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgaW5uZXJfIyNYIyNfc3RkY2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19zdGRjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfRkFTVENBTEwKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBpbm5lcl8jI1gjI19mYXN0Y2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19mYXN0Y2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fUkVUVVJOCi0KLX07IC8vIHN0cnVjdCBtZjxWPgotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtZjx2b2lkPgotewotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4KLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBpbm5lcl8jI1gKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DREVDTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIGlubmVyXyMjWCMjX2NkZWNsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2NkZWNsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfU1REQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIGlubmVyXyMjWCMjX3N0ZGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fc3RkY2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0ZBU1RDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgaW5uZXJfIyNYIyNfZmFzdGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fZmFzdGNhbGwKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTgotCi19OyAvLyBzdHJ1Y3QgbWY8dm9pZD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUZfRgotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIFgKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKFgpIGlubmVyXyMjWAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3Z3LmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUyCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NERUNMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWCMjX2NkZWNsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FMihYKSBpbm5lcl8jI1gjI19jZGVjbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19jZGVjbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdncuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRTIKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX1NURENBTEwKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYIyNfc3RkY2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRTIoWCkgaW5uZXJfIyNYIyNfc3RkY2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19zdGRjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl92dy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FMgotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfRkFTVENBTEwKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYIyNfZmFzdGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKFgpIGlubmVyXyMjWCMjX2Zhc3RjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2Zhc3RjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl92dy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FMgotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgX21maQotCi0jZWxzZSAvLyAjaWZkZWYgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0YKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoWCkgdHlwZWRlZiBYOwotCi1uYW1lc3BhY2UgX21maQotewotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gcmV0dXJuCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NERUNMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWCMjX2NkZWNsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2NkZWNsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfU1REQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIFgjI19zdGRjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX3N0ZGNhbGwKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9GQVNUQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIFgjI19mYXN0Y2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19mYXN0Y2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fUkVUVVJOCi0KLX0gLy8gbmFtZXNwYWNlIF9tZmkKLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYKLQotI2VuZGlmIC8vICNpZmRlZiBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ0RFQ0wKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYIyNfY2RlY2wKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fY2RlY2wKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX2NjLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9TVERDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWCMjX3N0ZGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fc3RkY2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0ZBU1RDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWCMjX2Zhc3RjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2Zhc3RjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jZW5kaWYKLQotLy8gZGF0YSBtZW1iZXIgc3VwcG9ydAotCi1uYW1lc3BhY2UgX21maQotewotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUPiBjbGFzcyBkbQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIGNvbnN0ICYgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBUIGNvbnN0ICogYXJndW1lbnRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICB0eXBlZGVmIFIgKFQ6OipGKTsKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBjb25zdCAmIGNhbGwoVSAmIHUsIFQgY29uc3QgKikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAodS4qZl8pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgY29uc3QgJiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICopIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKGdldF9wb2ludGVyKHUpLT4qZl8pOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IGRtKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSICYgb3BlcmF0b3IoKShUICogcCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAocC0+KmZfKTsKLSAgICB9Ci0KLSAgICBSIGNvbnN0ICYgb3BlcmF0b3IoKShUIGNvbnN0ICogcCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAocC0+KmZfKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIGNvbnN0ICYgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsKHUsICZ1KTsKLSAgICB9Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8IDB4MzIwMCkKLQotICAgIFIgJiBvcGVyYXRvcigpKFQgJiB0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICh0LipmXyk7Ci0gICAgfQotCi0gICAgUiBjb25zdCAmIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKHQuKmZfKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgYm9vbCBvcGVyYXRvcj09KGRtIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oZG0gY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIF9tZmkKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVD4gX21maTo6ZG08UiwgVD4gbWVtX2ZuKFIgVDo6KmYpCi17Ci0gICAgcmV0dXJuIF9tZmk6OmRtPFIsIFQ+KGYpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9CSU5EX01FTV9GTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbl9jYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOTRkM2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbl9jYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLy8KLS8vICBiaW5kL21lbV9mbl9jYy5ocHAgLSBzdXBwb3J0IGZvciBkaWZmZXJlbnQgY2FsbGluZyBjb252ZW50aW9ucwotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseS4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL21lbV9mbi5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVD4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYwKTxSLCBUPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoKSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYwKTxSLCBUPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVD4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMCk8UiwgVD4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKCkgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjApPFIsIFQ+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMT4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYxKTxSLCBULCBBMT4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExKSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYxKTxSLCBULCBBMT4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExPiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWYxKTxSLCBULCBBMT4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExKSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMSk8UiwgVCwgQTE+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTI+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMik8UiwgVCwgQTEsIEEyPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyKSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYyKTxSLCBULCBBMSwgQTI+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTI+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpPFIsIFQsIEExLCBBMj4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMikgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpPFIsIFQsIEExLCBBMj4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMyk8UiwgVCwgQTEsIEEyLCBBMz4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjMpPFIsIFQsIEExLCBBMiwgQTM+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKTxSLCBULCBBMSwgQTIsIEEzPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMykgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjMpPFIsIFQsIEExLCBBMiwgQTM+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY0KTxSLCBULCBBMSwgQTIsIEEzLCBBND4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0KSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY0KTxSLCBULCBBMSwgQTIsIEEzLCBBND4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWY0KTxSLCBULCBBMSwgQTIsIEEzLCBBND4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0KSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNCk8UiwgVCwgQTEsIEEyLCBBMywgQTQ+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNSk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1KSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY1KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTU+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNT4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0LCBBNSkgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNT4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNik8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNj4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjYpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWY2KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjYpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWY3KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNyk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mOCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY4KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCkgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4oZik7Ci19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWEyNGU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA0NyArMCwwIEBACi0vLwotLy8gIGJpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcAotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvbWVtX2ZuLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0jIGRlZmluZSBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotI2VuZGlmCi0KLS8vIG1mMAotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjApCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBUICogYXJndW1lbnRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpICgpKQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjApKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHApIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChwLT4qZl8pKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgJiB1KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCk7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHApOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBSIG9wZXJhdG9yKCkoVCAmIHQpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYwKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIGNtZjAKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMCkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIFQgY29uc3QgKiBhcmd1bWVudF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKCkgY29uc3QpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICopIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKSgpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjApKEYgZik6IGZfKGYpIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwKTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWYwKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gbWYxCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjEpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBUICogZmlyc3RfYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIEExIHNlY29uZF9hcmd1bWVudF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExKSkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjE+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMT4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYxKShGIGYpOiBmXyhmKSB7fQotCi0gICAgUiBvcGVyYXRvcigpKFQgKiBwLCBBMSBhMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoYTEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVICYgdSwgQTEgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSk7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIFIgb3BlcmF0b3IoKShUICYgdCwgQTEgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjEpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYxKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mMQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMSkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIFQgY29uc3QgKiBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgQTEgc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEpIGNvbnN0KQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMT4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxPiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYxKShGIGYpOiBmXyhmKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExKTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQsIEExIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMSkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWYxKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gbWYyCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYyKQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMikpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMj4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjI+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjIpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHAsIEExIGExLCBBMiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoYTEsIGEyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSAmIHUsIEExIGExLCBBMiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMik7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgUiBvcGVyYXRvcigpKFQgJiB0LCBBMSBhMSwgQTIgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYyKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMikgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIGNtZjIKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYyKQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMikgY29uc3QpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMj4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjI+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYyKShGIGYpOiBmXyhmKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCwgQTEgYTEsIEEyIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMikgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIG1mMwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjMpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMykpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjM+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjM+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMyk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYzKShGIGYpOiBmXyhmKSB7fQotCi0gICAgUiBvcGVyYXRvcigpKFQgKiBwLCBBMSBhMSwgQTIgYTIsIEEzIGEzKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAocC0+KmZfKShhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzKSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMyk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIFIgb3BlcmF0b3IoKShUICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYzKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMykgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIGNtZjMKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMyBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMykKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLQotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMpIGNvbnN0KQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzPiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzPiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMpOwotICAgIH0KLQotcHVibGljOgotCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMykoRiBmKTogZl8oZikge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMykgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gbWY0Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjQpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQpKQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCND4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyLCBiMywgYjQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0KTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjQpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAocC0+KmZfKShhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgUiBvcGVyYXRvcigpKFQgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShtZjQpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBjbWY0Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY0KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0KSBjb25zdCkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQ+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCND4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzLCBiNCk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNCkoRiBmKTogZl8oZikge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFQgY29uc3QgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjQpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIG1mNQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNSkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUpKQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjU+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY1KShGIGYpOiBmXyhmKSB7fQotCi0gICAgUiBvcGVyYXRvcigpKFQgKiBwLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChwLT4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ09OU1RfT1ZFUkxPQURTCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIFIgb3BlcmF0b3IoKShUICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNSkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShtZjUpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBjbWY1Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNSkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUpIGNvbnN0KQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjU+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNSkoRiBmKTogZl8oZikge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShjbWY1KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBtZjYKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY2KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjY+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjY+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMywgYjQsIGI1LCBiNik7Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjYpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChwLT4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ09OU1RfT1ZFUkxPQURTCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgUiBvcGVyYXRvcigpKFQgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjYpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWY2KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mNgotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY2KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYpIGNvbnN0KQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2PiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjYpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjYpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNikgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIG1mNwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNyBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjc+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2LCBCNyAmIGI3KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNz4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUsIEI2ICYgYjYsIEI3ICYgYjcpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNyk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KShGIGYpOiBmXyhmKSB7fQotCi0gICAgUiBvcGVyYXRvcigpKFQgKiBwLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIFIgb3BlcmF0b3IoKShUICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjcpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mNwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNyBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNykKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNykgY29uc3QpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3PiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNiwgQjcgJiBiNykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjc+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2LCBCNyAmIGI3KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjcpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShjbWY3KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjcpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBtZjgKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjgpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4PiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNiwgQjcgJiBiNywgQjggJiBiOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LCBjbGFzcyBCOD4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUsIEI2ICYgYjYsIEI3ICYgYjcsIEI4ICYgYjgpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mOCkoRiBmKTogZl8oZikge30KLQotICAgIFIgb3BlcmF0b3IoKShUICogcCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAocC0+KmZfKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBSIG9wZXJhdG9yKCkoVCAmIHQsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjgpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWY4KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mOAotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTggTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSBjb25zdCkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4PiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNiwgQjcgJiBiNywgQjggJiBiOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LCBjbGFzcyBCOD4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUsIEI2ICYgYjYsIEI3ICYgYjcsIEI4ICYgYjgpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAqIHAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFQgY29uc3QgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mOCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWY4KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ09OU1RfT1ZFUkxPQURTCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWVtX2ZuX3Z3LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fdncuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmZhNjYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fdncuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8vCi0vLyAgYmluZC9tZW1fZm5fdncuaHBwIC0gdm9pZCByZXR1cm4gaGVscGVyIHdyYXBwZXJzCi0vLwotLy8gIERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGRpcmVjdGx5Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9tZW1fZm4uaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQ+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjApOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWYwKTxSLCBULCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKCk+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpICgpOwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMCkoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWYwKTxSLCBULCBGPihmKSB7fQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVD4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjApOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mMCk8UiwgVCwgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopICgpIGNvbnN0PgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoKSBjb25zdDsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYwKShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWYwKTxSLCBULCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMT4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMSk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjEpPFIsIFQsIEExLCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExKT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExKTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjEpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mMSk8UiwgVCwgQTEsIEY+KGYpIHt9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMT4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjEpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mMSk8UiwgVCwgQTEsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEpIGNvbnN0PgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjEpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjEpPFIsIFQsIEExLCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTI+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjIpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWYyKTxSLCBULCBBMSwgQTIsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyKT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMik7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYyKShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjIpPFIsIFQsIEExLCBBMiwgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMj4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mMik8UiwgVCwgQTEsIEEyLCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExLCBBMikgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjIpPFIsIFQsIEExLCBBMiwgRj4oZikge30KLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMyk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjMpPFIsIFQsIEExLCBBMiwgQTMsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMyk+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzKTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjMpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mMyk8UiwgVCwgQTEsIEEyLCBBMywgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKTogcHVibGljIG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjMpPFIsIFQsIEExLCBBMiwgQTMsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMykgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzKSBjb25zdDsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWYzKTxSLCBULCBBMSwgQTIsIEEzLCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNCk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjQpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExLCBBMiwgQTMsIEE0KT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0KTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjQpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mNCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEY+KGYpIHt9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjQpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mNCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQpIGNvbnN0PgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjQpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjQpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjUpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWY1KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1KT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSk7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY1KShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjUpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mNSk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExLCBBMiwgQTMsIEE0LCBBNSkgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjUpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgRj4oZikge30KLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNik6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjYpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjYpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mNik8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY2KTogcHVibGljIG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjYpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSBjb25zdDsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY2KShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWY2KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNyk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjcpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjcpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mNyk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEY+KGYpIHt9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjcpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mNyk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpIGNvbnN0PgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjcpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjcpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjgpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWY4KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCk7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY4KShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjgpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mOCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCkgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjgpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgRj4oZikge30KLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMzgzZjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0JJTkRfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX1BMQUNFSE9MREVSU19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgYmluZC9wbGFjZWhvbGRlcnMuaHBwIC0gX04gZGVmaW5pdGlvbnMKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2FyZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlCi17Ci0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgNCkKLQotc3RhdGljIGlubGluZSBuZG5ib29zdDo6YXJnPDE+IF8xKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzwxPigpOyB9Ci1zdGF0aWMgaW5saW5lIG5kbmJvb3N0Ojphcmc8Mj4gXzIoKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPDI+KCk7IH0KLXN0YXRpYyBpbmxpbmUgbmRuYm9vc3Q6OmFyZzwzPiBfMygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8Mz4oKTsgfQotc3RhdGljIGlubGluZSBuZG5ib29zdDo6YXJnPDQ+IF80KCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzw0PigpOyB9Ci1zdGF0aWMgaW5saW5lIG5kbmJvb3N0Ojphcmc8NT4gXzUoKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPDU+KCk7IH0KLXN0YXRpYyBpbmxpbmUgbmRuYm9vc3Q6OmFyZzw2PiBfNigpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8Nj4oKTsgfQotc3RhdGljIGlubGluZSBuZG5ib29zdDo6YXJnPDc+IF83KCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzw3PigpOyB9Ci1zdGF0aWMgaW5saW5lIG5kbmJvb3N0Ojphcmc8OD4gXzgoKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPDg+KCk7IH0KLXN0YXRpYyBpbmxpbmUgbmRuYm9vc3Q6OmFyZzw5PiBfOSgpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8OT4oKTsgfQotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IChkZWZpbmVkKF9fREVDQ1hYX1ZFUikgJiYgX19ERUNDWFhfVkVSIDw9IDYwNTkwMDMxKSB8fCBkZWZpbmVkKF9fTVdFUktTX18pIHx8IFwKLSAgICBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDIpICAKLQotc3RhdGljIG5kbmJvb3N0Ojphcmc8MT4gXzE7Ci1zdGF0aWMgbmRuYm9vc3Q6OmFyZzwyPiBfMjsKLXN0YXRpYyBuZG5ib29zdDo6YXJnPDM+IF8zOwotc3RhdGljIG5kbmJvb3N0Ojphcmc8ND4gXzQ7Ci1zdGF0aWMgbmRuYm9vc3Q6OmFyZzw1PiBfNTsKLXN0YXRpYyBuZG5ib29zdDo6YXJnPDY+IF82Owotc3RhdGljIG5kbmJvb3N0Ojphcmc8Nz4gXzc7Ci1zdGF0aWMgbmRuYm9vc3Q6OmFyZzw4PiBfODsKLXN0YXRpYyBuZG5ib29zdDo6YXJnPDk+IF85OwotCi0jZWxzZQotCi1uZG5ib29zdDo6YXJnPDE+IF8xOwotbmRuYm9vc3Q6OmFyZzwyPiBfMjsKLW5kbmJvb3N0Ojphcmc8Mz4gXzM7Ci1uZG5ib29zdDo6YXJnPDQ+IF80OwotbmRuYm9vc3Q6OmFyZzw1PiBfNTsKLW5kbmJvb3N0Ojphcmc8Nj4gXzY7Ci1uZG5ib29zdDo6YXJnPDc+IF83OwotbmRuYm9vc3Q6OmFyZzw4PiBfODsKLW5kbmJvb3N0Ojphcmc8OT4gXzk7Ci0KLSNlbmRpZgotCi19IC8vIHVubmFtZWQgbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0JJTkRfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3Byb3RlY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3Byb3RlY3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGZiYjFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9wcm90ZWN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0JJTkRfUFJPVEVDVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9QUk9URUNUX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHByb3RlY3QuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAoYykgMjAwOSBTdGV2ZW4gV2F0YW5hYmUKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgX2JpCi17Ci0KLXRlbXBsYXRlPGNsYXNzIEY+IGNsYXNzIHByb3RlY3RlZF9iaW5kX3QKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBwcm90ZWN0ZWRfYmluZF90KEYgZik6IGZfKGYpCi0gICAgewotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKCk7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExKTsKLSAgICB9Ci0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShjb25zdCBBMSAmIGExKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShjb25zdCBBMSAmIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIpOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgJiBhMikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyIGNvbnN0ICYgYTIpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgY29uc3QgJiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzKTsKLSAgICB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMykKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMyk7Ci0gICAgfQotICAgIAotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3LCBBOCAmIGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCwgQTkgJiBhOSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcsIEE4ICYgYTgsIEE5ICYgYTkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgfQotICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgsIEE5IGNvbnN0ICYgYTkpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4LCBBOSBjb25zdCAmIGE5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICAgIH0KLQotI2VuZGlmCi0KLXByaXZhdGU6Ci0KLSAgICBGIGZfOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgX2JpCi0KLXRlbXBsYXRlPGNsYXNzIEY+IF9iaTo6cHJvdGVjdGVkX2JpbmRfdDxGPiBwcm90ZWN0KEYgZikKLXsKLSAgICByZXR1cm4gX2JpOjpwcm90ZWN0ZWRfYmluZF90PEY+KGYpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9CSU5EX1BST1RFQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvc3RvcmFnZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvc3RvcmFnZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MDkyOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3N0b3JhZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDc1ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9TVE9SQUdFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX1NUT1JBR0VfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGJpbmQvc3RvcmFnZS5ocHAKLS8vCi0vLyAgbmRuYm9vc3QvYmluZC5ocHAgc3VwcG9ydCBoZWFkZXIsIG9wdGltaXplZCBzdG9yYWdlCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9hcmcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTEyKSAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIF9iaQotewotCi0vLyAxCi0KLXRlbXBsYXRlPGNsYXNzIEExPiBzdHJ1Y3Qgc3RvcmFnZTEKLXsKLSAgICBleHBsaWNpdCBzdG9yYWdlMSggQTEgYTEgKTogYTFfKCBhMSApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCh2LCBhMV8sIDApOwotICAgIH0KLQotICAgIEExIGExXzsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApICYmICFkZWZpbmVkKCBfX0JPUkxBTkRDX18gKQotCi10ZW1wbGF0ZTxpbnQgST4gc3RydWN0IHN0b3JhZ2UxPCBuZG5ib29zdDo6YXJnPEk+ID4KLXsKLSAgICBleHBsaWNpdCBzdG9yYWdlMSggbmRuYm9vc3Q6OmFyZzxJPiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYpIGNvbnN0IHsgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTFfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi10ZW1wbGF0ZTxpbnQgST4gc3RydWN0IHN0b3JhZ2UxPCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSA+Ci17Ci0gICAgZXhwbGljaXQgc3RvcmFnZTEoIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJikgY29uc3QgeyB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhMV8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyAyCi0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gc3RydWN0IHN0b3JhZ2UyOiBwdWJsaWMgc3RvcmFnZTE8QTE+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlMTxBMT4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTIoIEExIGExLCBBMiBhMiApOiBzdG9yYWdlMTxBMT4oIGExICksIGEyXyggYTIgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGEyXywgMCk7Ci0gICAgfQotCi0gICAgQTIgYTJfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTI8IEExLCBuZG5ib29zdDo6YXJnPEk+ID46IHB1YmxpYyBzdG9yYWdlMTxBMT4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2UxPEExPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlMiggQTEgYTEsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTE8QTE+KCBhMSApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGEyXygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTI8IEExLCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSA+OiBwdWJsaWMgc3RvcmFnZTE8QTE+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlMTxBMT4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTIoIEExIGExLCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlMTxBMT4oIGExICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTJfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotLy8gMwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiBzdHJ1Y3Qgc3RvcmFnZTM6IHB1YmxpYyBzdG9yYWdlMjwgQTEsIEEyID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2UyPEExLCBBMj4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTMoIEExIGExLCBBMiBhMiwgQTMgYTMgKTogc3RvcmFnZTI8QTEsIEEyPiggYTEsIGEyICksIGEzXyggYTMgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGEzXywgMCk7Ci0gICAgfQotCi0gICAgQTMgYTNfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBpbnQgST4gc3RydWN0IHN0b3JhZ2UzPCBBMSwgQTIsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2UyPCBBMSwgQTIgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTI8QTEsIEEyPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlMyggQTEgYTEsIEEyIGEyLCBuZG5ib29zdDo6YXJnPEk+ICk6IHN0b3JhZ2UyPEExLCBBMj4oIGExLCBhMiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGEzXygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBpbnQgST4gc3RydWN0IHN0b3JhZ2UzPCBBMSwgQTIsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlMjwgQTEsIEEyID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2UyPEExLCBBMj4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTMoIEExIGExLCBBMiBhMiwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKTogc3RvcmFnZTI8QTEsIEEyPiggYTEsIGEyICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTNfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotLy8gNAotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gc3RydWN0IHN0b3JhZ2U0OiBwdWJsaWMgc3RvcmFnZTM8IEExLCBBMiwgQTMgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTM8QTEsIEEyLCBBMz4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTQoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0ICk6IHN0b3JhZ2UzPEExLCBBMiwgQTM+KCBhMSwgYTIsIGEzICksIGE0XyggYTQgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGE0XywgMCk7Ci0gICAgfQotCi0gICAgQTQgYTRfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgaW50IEk+IHN0cnVjdCBzdG9yYWdlNDwgQTEsIEEyLCBBMywgbmRuYm9vc3Q6OmFyZzxJPiA+OiBwdWJsaWMgc3RvcmFnZTM8IEExLCBBMiwgQTMgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTM8QTEsIEEyLCBBMz4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTQoIEExIGExLCBBMiBhMiwgQTMgYTMsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTM8QTEsIEEyLCBBMz4oIGExLCBhMiwgYTMgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhNF8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTQ8IEExLCBBMiwgQTMsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlMzwgQTEsIEEyLCBBMyA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlMzxBMSwgQTIsIEEzPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNCggQTEgYTEsIEEyIGEyLCBBMyBhMywgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKTogc3RvcmFnZTM8QTEsIEEyLCBBMz4oIGExLCBhMiwgYTMgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhNF8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyA1Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gc3RydWN0IHN0b3JhZ2U1OiBwdWJsaWMgc3RvcmFnZTQ8IEExLCBBMiwgQTMsIEE0ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U0PEExLCBBMiwgQTMsIEE0PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1ICk6IHN0b3JhZ2U0PEExLCBBMiwgQTMsIEE0PiggYTEsIGEyLCBhMywgYTQgKSwgYTVfKCBhNSApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0godiwgYTVfLCAwKTsKLSAgICB9Ci0KLSAgICBBNSBhNV87Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgaW50IEk+IHN0cnVjdCBzdG9yYWdlNTwgQTEsIEEyLCBBMywgQTQsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2U0PCBBMSwgQTIsIEEzLCBBNCA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNDxBMSwgQTIsIEEzLCBBND4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTUoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBuZG5ib29zdDo6YXJnPEk+ICk6IHN0b3JhZ2U0PEExLCBBMiwgQTMsIEE0PiggYTEsIGEyLCBhMywgYTQgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhNV8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U1PCBBMSwgQTIsIEEzLCBBNCwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgPjogcHVibGljIHN0b3JhZ2U0PCBBMSwgQTIsIEEzLCBBNCA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNDxBMSwgQTIsIEEzLCBBND4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTUoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlNDxBMSwgQTIsIEEzLCBBND4oIGExLCBhMiwgYTMsIGE0ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTVfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotLy8gNgotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiBzdHJ1Y3Qgc3RvcmFnZTY6IHB1YmxpYyBzdG9yYWdlNTwgQTEsIEEyLCBBMywgQTQsIEE1ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U1PEExLCBBMiwgQTMsIEE0LCBBNT4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTYoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYgKTogc3RvcmFnZTU8QTEsIEEyLCBBMywgQTQsIEE1PiggYTEsIGEyLCBhMywgYTQsIGE1ICksIGE2XyggYTYgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGE2XywgMCk7Ci0gICAgfQotCi0gICAgQTYgYTZfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U2PCBBMSwgQTIsIEEzLCBBNCwgQTUsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2U1PCBBMSwgQTIsIEEzLCBBNCwgQTUgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTU8QTEsIEEyLCBBMywgQTQsIEE1PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNiggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBuZG5ib29zdDo6YXJnPEk+ICk6IHN0b3JhZ2U1PEExLCBBMiwgQTMsIEE0LCBBNT4oIGExLCBhMiwgYTMsIGE0LCBhNSApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGE2XygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U2PCBBMSwgQTIsIEEzLCBBNCwgQTUsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlNTwgQTEsIEEyLCBBMywgQTQsIEE1ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U1PEExLCBBMiwgQTMsIEE0LCBBNT4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTYoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKTogc3RvcmFnZTU8QTEsIEEyLCBBMywgQTQsIEE1PiggYTEsIGEyLCBhMywgYTQsIGE1ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTZfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotLy8gNwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gc3RydWN0IHN0b3JhZ2U3OiBwdWJsaWMgc3RvcmFnZTY8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTcoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3ICk6IHN0b3JhZ2U2PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+KCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2ICksIGE3XyggYTcgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGE3XywgMCk7Ci0gICAgfQotCi0gICAgQTcgYTdfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgaW50IEk+IHN0cnVjdCBzdG9yYWdlNzwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgbmRuYm9vc3Q6OmFyZzxJPiA+OiBwdWJsaWMgc3RvcmFnZTY8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTcoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4oIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhN18oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTc8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlNjwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNyggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKTogc3RvcmFnZTY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4oIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhN18oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyA4Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gc3RydWN0IHN0b3JhZ2U4OiBwdWJsaWMgc3RvcmFnZTc8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U3PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlOCggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4ICk6IHN0b3JhZ2U3PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcgKSwgYThfKCBhOCApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0godiwgYThfLCAwKTsKLSAgICB9Ci0KLSAgICBBOCBhOF87Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgaW50IEk+IHN0cnVjdCBzdG9yYWdlODwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2U3PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTgoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBuZG5ib29zdDo6YXJnPEk+ICk6IHN0b3JhZ2U3PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhOF8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U4PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgPjogcHVibGljIHN0b3JhZ2U3PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTgoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4oIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYThfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotLy8gOQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiBzdHJ1Y3Qgc3RvcmFnZTk6IHB1YmxpYyBzdG9yYWdlODwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U4PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTkoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkgKTogc3RvcmFnZTg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4ICksIGE5XyggYTkgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGE5XywgMCk7Ci0gICAgfQotCi0gICAgQTkgYTlfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U5PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2U4PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTggPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlOSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBuZG5ib29zdDo6YXJnPEk+ICk6IHN0b3JhZ2U4PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4oIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGE5XygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U5PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlODwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U4PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTkoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKTogc3RvcmFnZTg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTlfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgX2JpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQklORF9TVE9SQUdFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9ibGFuay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JsYW5rLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RkNmU0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JsYW5rLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBib29zdCBibGFuay5ocHAgaGVhZGVyIGZpbGUKLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAzCi0vLyBFcmljIEZyaWVkbWFuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX0JMQU5LX0hQUAotI2RlZmluZSBORE5CT09TVF9CTEFOS19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2JsYW5rX2Z3ZC5ocHAiCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JT1NUUkVBTSkKLSNpbmNsdWRlIDxpb3Nmd2Q+IC8vIGZvciBzdGQ6OmJhc2ljX29zdHJlYW0gZm9yd2FyZCBkZWNsYXJlCi0jaW5jbHVkZSAibmRuYm9vc3QvZGV0YWlsL3RlbXBsYXRlZF9zdHJlYW1zLmhwcCIKLSNlbmRpZiAvLyBORE5CT09TVF9OT19JT1NUUkVBTQotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2Jvb2wuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3N0YXRlbGVzcy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXN0cnVjdCBibGFuawotewotfTsKLQotLy8gdHlwZSB0cmFpdHMgc3BlY2lhbGl6YXRpb25zCi0vLwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3BvZDwgYmxhbmsgPgotICAgIDogbXBsOjp0cnVlXwotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19lbXB0eTwgYmxhbmsgPgotICAgIDogbXBsOjp0cnVlXwotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19zdGF0ZWxlc3M8IGJsYW5rID4KLSAgICA6IG1wbDo6dHJ1ZV8KLXsKLX07Ci0KLS8vIHJlbGF0aW9uYWwgb3BlcmF0b3JzCi0vLwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLy8gc3RyZWFtaW5nIHN1cHBvcnQKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU9TVFJFQU0pCi0KLU5ETkJPT1NUX1RFTVBMQVRFRF9TVFJFQU1fVEVNUExBVEUoRSxUKQotaW5saW5lIE5ETkJPT1NUX1RFTVBMQVRFRF9TVFJFQU0ob3N0cmVhbSwgRSxUKSYgb3BlcmF0b3I8PCgKLSAgICAgIE5ETkJPT1NUX1RFTVBMQVRFRF9TVFJFQU0ob3N0cmVhbSwgRSxUKSYgb3V0Ci0gICAgLCBjb25zdCBibGFuayYKLSAgICApCi17Ci0gICAgLy8gKG91dHB1dCBub3RoaW5nKQotICAgIHJldHVybiBvdXQ7Ci19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19JT1NUUkVBTQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfQkxBTktfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JsYW5rX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JsYW5rX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNjY4MjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9ibGFua19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gYm9vc3QgYmxhbmtfZndkLmhwcCBoZWFkZXIgZmlsZQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDMKLS8vIEVyaWMgRnJpZWRtYW4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfQkxBTktfRldEX0hQUAotI2RlZmluZSBORE5CT09TVF9CTEFOS19GV0RfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXN0cnVjdCBibGFuazsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0JMQU5LX0ZXRF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY2FsbF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jYWxsX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhYmJkODQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jYWxsX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5IGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyAgU2VlIG5kbmJvb3N0L2RldGFpbC9jYWxsX3RyYWl0cy5ocHAgYW5kIG5kbmJvb3N0L2RldGFpbC9vYl9jYWxsX3RyYWl0cy5ocHAKLS8vICBmb3IgZnVsbCBjb3B5cmlnaHQgbm90aWNlcy4KLQotI2lmbmRlZiBORE5CT09TVF9DQUxMX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfQ0FMTF9UUkFJVFNfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvb2JfY2FsbF90cmFpdHMuaHBwPgotI2Vsc2UKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9DQUxMX1RSQUlUU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY2Vycm5vLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY2Vycm5vLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRiODM2My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NlcnJuby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzEgKzAsMCBAQAotLy8gIEJvb3N0IGNlcnJuby5ocHAgaGVhZGVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zeXN0ZW0KLQotI2lmbmRlZiBORE5CT09TVF9DRVJSTk9fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0NFUlJOT19IUFAKLQotI2luY2x1ZGUgPGNlcnJubz4KLQotLy8gIHN1cHBseSBlcnJubyB2YWx1ZXMgbGlrZWx5IHRvIGJlIG1pc3NpbmcsIHBhcnRpY3VsYXJseSBvbiBXaW5kb3dzCi0KLSNpZm5kZWYgRUFGTk9TVVBQT1JUCi0jZGVmaW5lIEVBRk5PU1VQUE9SVCA5OTAxCi0jZW5kaWYKLQotI2lmbmRlZiBFQUREUklOVVNFCi0jZGVmaW5lIEVBRERSSU5VU0UgOTkwMgotI2VuZGlmCi0KLSNpZm5kZWYgRUFERFJOT1RBVkFJTAotI2RlZmluZSBFQUREUk5PVEFWQUlMIDk5MDMKLSNlbmRpZgotCi0jaWZuZGVmIEVJU0NPTk4KLSNkZWZpbmUgRUlTQ09OTiA5OTA0Ci0jZW5kaWYKLQotI2lmbmRlZiBFQkFETVNHCi0jZGVmaW5lIEVCQURNU0cgOTkwNQotI2VuZGlmCi0KLSNpZm5kZWYgRUNPTk5BQk9SVEVECi0jZGVmaW5lIEVDT05OQUJPUlRFRCA5OTA2Ci0jZW5kaWYKLQotI2lmbmRlZiBFQUxSRUFEWQotI2RlZmluZSBFQUxSRUFEWSA5OTA3Ci0jZW5kaWYKLQotI2lmbmRlZiBFQ09OTlJFRlVTRUQKLSNkZWZpbmUgRUNPTk5SRUZVU0VEIDk5MDgKLSNlbmRpZgotCi0jaWZuZGVmIEVDT05OUkVTRVQKLSNkZWZpbmUgRUNPTk5SRVNFVCA5OTA5Ci0jZW5kaWYKLQotI2lmbmRlZiBFREVTVEFERFJSRVEKLSNkZWZpbmUgRURFU1RBRERSUkVRIDk5MTAKLSNlbmRpZgotCi0jaWZuZGVmIEVIT1NUVU5SRUFDSAotI2RlZmluZSBFSE9TVFVOUkVBQ0ggOTkxMQotI2VuZGlmCi0KLSNpZm5kZWYgRUlEUk0KLSNkZWZpbmUgRUlEUk0gOTkxMgotI2VuZGlmCi0KLSNpZm5kZWYgRU1TR1NJWkUKLSNkZWZpbmUgRU1TR1NJWkUgOTkxMwotI2VuZGlmCi0KLSNpZm5kZWYgRU5FVERPV04KLSNkZWZpbmUgRU5FVERPV04gOTkxNAotI2VuZGlmCi0KLSNpZm5kZWYgRU5FVFJFU0VUCi0jZGVmaW5lIEVORVRSRVNFVCA5OTE1Ci0jZW5kaWYKLQotI2lmbmRlZiBFTkVUVU5SRUFDSAotI2RlZmluZSBFTkVUVU5SRUFDSCA5OTE2Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9CVUZTCi0jZGVmaW5lIEVOT0JVRlMgOTkxNwotI2VuZGlmCi0KLSNpZm5kZWYgRU5PTElOSwotI2RlZmluZSBFTk9MSU5LIDk5MTgKLSNlbmRpZgotCi0jaWZuZGVmIEVOT0RBVEEKLSNkZWZpbmUgRU5PREFUQSA5OTE5Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9NU0cKLSNkZWZpbmUgRU5PTVNHIDk5MjAKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1BST1RPT1BUCi0jZGVmaW5lIEVOT1BST1RPT1BUIDk5MjEKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1NSCi0jZGVmaW5lIEVOT1NSIDk5MjIKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1RTT0NLCi0jZGVmaW5lIEVOT1RTT0NLIDk5MjMKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1NUUgotI2RlZmluZSBFTk9TVFIgOTkyNAotI2VuZGlmCi0KLSNpZm5kZWYgRU5PVENPTk4KLSNkZWZpbmUgRU5PVENPTk4gOTkyNQotI2VuZGlmCi0KLSNpZm5kZWYgRU5PVFNVUAotI2RlZmluZSBFTk9UU1VQIDk5MjYKLSNlbmRpZgotCi0jaWZuZGVmIEVDQU5DRUxFRAotI2RlZmluZSBFQ0FOQ0VMRUQgOTkyNwotI2VuZGlmCi0KLSNpZm5kZWYgRUlOUFJPR1JFU1MKLSNkZWZpbmUgRUlOUFJPR1JFU1MgOTkyOAotI2VuZGlmCi0KLSNpZm5kZWYgRU9QTk9UU1VQUAotI2RlZmluZSBFT1BOT1RTVVBQIDk5MjkKLSNlbmRpZgotCi0jaWZuZGVmIEVXT1VMREJMT0NLCi0jZGVmaW5lIEVXT1VMREJMT0NLIDk5MzAKLSNlbmRpZgotCi0jaWZuZGVmIEVPV05FUkRFQUQKLSNkZWZpbmUgRU9XTkVSREVBRCAgOTkzMQotI2VuZGlmCi0KLSNpZm5kZWYgRVBST1RPCi0jZGVmaW5lIEVQUk9UTyA5OTMyCi0jZW5kaWYKLQotI2lmbmRlZiBFUFJPVE9OT1NVUFBPUlQKLSNkZWZpbmUgRVBST1RPTk9TVVBQT1JUIDk5MzMKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1RSRUNPVkVSQUJMRQotI2RlZmluZSBFTk9UUkVDT1ZFUkFCTEUgOTkzNAotI2VuZGlmCi0KLSNpZm5kZWYgRVRJTUUKLSNkZWZpbmUgRVRJTUUgOTkzNQotI2VuZGlmCi0KLSNpZm5kZWYgRVRYVEJTWQotI2RlZmluZSBFVFhUQlNZIDk5MzYKLSNlbmRpZgotCi0jaWZuZGVmIEVUSU1FRE9VVAotI2RlZmluZSBFVElNRURPVVQgOTkzOAotI2VuZGlmCi0KLSNpZm5kZWYgRUxPT1AKLSNkZWZpbmUgRUxPT1AgOTkzOQotI2VuZGlmCi0KLSNpZm5kZWYgRU9WRVJGTE9XCi0jZGVmaW5lIEVPVkVSRkxPVyA5OTQwCi0jZW5kaWYKLQotI2lmbmRlZiBFUFJPVE9UWVBFCi0jZGVmaW5lIEVQUk9UT1RZUEUgOTk0MQotI2VuZGlmCi0KLSNpZm5kZWYgRU5PU1lTCi0jZGVmaW5lIEVOT1NZUyA5OTQyCi0jZW5kaWYKLQotI2lmbmRlZiBFSU5WQUwKLSNkZWZpbmUgRUlOVkFMIDk5NDMKLSNlbmRpZgotCi0jaWZuZGVmIEVSQU5HRQotI2RlZmluZSBFUkFOR0UgOTk0NAotI2VuZGlmCi0KLSNpZm5kZWYgRUlMU0VRCi0jZGVmaW5lIEVJTFNFUSA5OTQ1Ci0jZW5kaWYKLQotLy8gIFdpbmRvd3MgTW9iaWxlIGRvZXNuJ3QgYXBwZWFyIHRvIGRlZmluZSB0aGVzZToKLQotI2lmbmRlZiBFMkJJRwotI2RlZmluZSBFMkJJRyA5OTQ2Ci0jZW5kaWYKLQotI2lmbmRlZiBFRE9NCi0jZGVmaW5lIEVET00gOTk0NwotI2VuZGlmCi0KLSNpZm5kZWYgRUZBVUxUCi0jZGVmaW5lIEVGQVVMVCA5OTQ4Ci0jZW5kaWYKLQotI2lmbmRlZiBFQkFERgotI2RlZmluZSBFQkFERiA5OTQ5Ci0jZW5kaWYKLQotI2lmbmRlZiBFUElQRQotI2RlZmluZSBFUElQRSA5OTUwCi0jZW5kaWYKLQotI2lmbmRlZiBFWERFVgotI2RlZmluZSBFWERFViA5OTUxCi0jZW5kaWYKLQotI2lmbmRlZiBFQlVTWQotI2RlZmluZSBFQlVTWSA5OTUyCi0jZW5kaWYKLQotI2lmbmRlZiBFTk9URU1QVFkKLSNkZWZpbmUgRU5PVEVNUFRZIDk5NTMKLSNlbmRpZgotCi0jaWZuZGVmIEVOT0VYRUMKLSNkZWZpbmUgRU5PRVhFQyA5OTU0Ci0jZW5kaWYKLQotI2lmbmRlZiBFRVhJU1QKLSNkZWZpbmUgRUVYSVNUIDk5NTUKLSNlbmRpZgotCi0jaWZuZGVmIEVGQklHCi0jZGVmaW5lIEVGQklHIDk5NTYKLSNlbmRpZgotCi0jaWZuZGVmIEVOQU1FVE9PTE9ORwotI2RlZmluZSBFTkFNRVRPT0xPTkcgOTk1NwotI2VuZGlmCi0KLSNpZm5kZWYgRU5PVFRZCi0jZGVmaW5lIEVOT1RUWSA5OTU4Ci0jZW5kaWYKLQotI2lmbmRlZiBFSU5UUgotI2RlZmluZSBFSU5UUiA5OTU5Ci0jZW5kaWYKLQotI2lmbmRlZiBFU1BJUEUKLSNkZWZpbmUgRVNQSVBFIDk5NjAKLSNlbmRpZgotCi0jaWZuZGVmIEVJTwotI2RlZmluZSBFSU8gOTk2MQotI2VuZGlmCi0KLSNpZm5kZWYgRUlTRElSCi0jZGVmaW5lIEVJU0RJUiA5OTYyCi0jZW5kaWYKLQotI2lmbmRlZiBFQ0hJTEQKLSNkZWZpbmUgRUNISUxEIDk5NjMKLSNlbmRpZgotCi0jaWZuZGVmIEVOT0xDSwotI2RlZmluZSBFTk9MQ0sgOTk2NAotI2VuZGlmCi0KLSNpZm5kZWYgRU5PU1BDCi0jZGVmaW5lIEVOT1NQQyA5OTY1Ci0jZW5kaWYKLQotI2lmbmRlZiBFTlhJTwotI2RlZmluZSBFTlhJTyA5OTY2Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9ERVYKLSNkZWZpbmUgRU5PREVWIDk5NjcKLSNlbmRpZgotCi0jaWZuZGVmIEVOT0VOVAotI2RlZmluZSBFTk9FTlQgOTk2OAotI2VuZGlmCi0KLSNpZm5kZWYgRVNSQ0gKLSNkZWZpbmUgRVNSQ0ggOTk2OQotI2VuZGlmCi0KLSNpZm5kZWYgRU5PVERJUgotI2RlZmluZSBFTk9URElSIDk5NzAKLSNlbmRpZgotCi0jaWZuZGVmIEVOT01FTQotI2RlZmluZSBFTk9NRU0gOTk3MQotI2VuZGlmCi0KLSNpZm5kZWYgRVBFUk0KLSNkZWZpbmUgRVBFUk0gOTk3MgotI2VuZGlmCi0KLSNpZm5kZWYgRUFDQ0VTCi0jZGVmaW5lIEVBQ0NFUyA5OTczCi0jZW5kaWYKLQotI2lmbmRlZiBFUk9GUwotI2RlZmluZSBFUk9GUyA5OTc0Ci0jZW5kaWYKLQotI2lmbmRlZiBFREVBRExLCi0jZGVmaW5lIEVERUFETEsgOTk3NQotI2VuZGlmCi0KLSNpZm5kZWYgRUFHQUlOCi0jZGVmaW5lIEVBR0FJTiA5OTc2Ci0jZW5kaWYKLQotI2lmbmRlZiBFTkZJTEUKLSNkZWZpbmUgRU5GSUxFIDk5NzcKLSNlbmRpZgotCi0jaWZuZGVmIEVNRklMRQotI2RlZmluZSBFTUZJTEUgOTk3OAotI2VuZGlmCi0KLSNpZm5kZWYgRU1MSU5LCi0jZGVmaW5lIEVNTElOSyA5OTc5Ci0jZW5kaWYKLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ODA1MTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0NIRUNLRURfREVMRVRFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9DSEVDS0VEX0RFTEVURV9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMyBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAoYykgMjAwMyBEYW5pZWwgRnJleQotLy8gIENvcHlyaWdodCAoYykgMjAwMyBIb3dhcmQgSGlubmFudAotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS9jaGVja2VkX2RlbGV0ZS5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLS8vIHZlcmlmeSB0aGF0IHR5cGVzIGFyZSBjb21wbGV0ZSBmb3IgaW5jcmVhc2VkIHNhZmV0eQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBjaGVja2VkX2RlbGV0ZShUICogeCkKLXsKLSAgICAvLyBpbnRlbnRpb25hbGx5IGNvbXBsZXggLSBzaW1wbGlmaWNhdGlvbiBjYXVzZXMgcmVncmVzc2lvbnMKLSAgICB0eXBlZGVmIGNoYXIgdHlwZV9tdXN0X2JlX2NvbXBsZXRlWyBzaXplb2YoVCk/IDE6IC0xIF07Ci0gICAgKHZvaWQpIHNpemVvZih0eXBlX211c3RfYmVfY29tcGxldGUpOwotICAgIGRlbGV0ZSB4OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBjaGVja2VkX2FycmF5X2RlbGV0ZShUICogeCkKLXsKLSAgICB0eXBlZGVmIGNoYXIgdHlwZV9tdXN0X2JlX2NvbXBsZXRlWyBzaXplb2YoVCk/IDE6IC0xIF07Ci0gICAgKHZvaWQpIHNpemVvZih0eXBlX211c3RfYmVfY29tcGxldGUpOwotICAgIGRlbGV0ZSBbXSB4OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgY2hlY2tlZF9kZWxldGVyCi17Ci0gICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgVCAqIGFyZ3VtZW50X3R5cGU7Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoVCAqIHgpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBuZG5ib29zdDo6IGRpc2FibGVzIEFETAotICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUoeCk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGNoZWNrZWRfYXJyYXlfZGVsZXRlcgotewotICAgIHR5cGVkZWYgdm9pZCByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIFQgKiBhcmd1bWVudF90eXBlOwotCi0gICAgdm9pZCBvcGVyYXRvcigpKFQgKiB4KSBjb25zdAotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfYXJyYXlfZGVsZXRlKHgpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9DSEVDS0VEX0RFTEVURV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9hc3NlcnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2Fzc2VydC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NDc4MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2Fzc2VydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX0FTU0VSVF9ORE5CT09TVF9EV0EyMDA2NDMwX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlRfTkROQk9PU1RfRFdBMjAwNjQzMF9IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIFRoZSBvbGQgcHJvdG9jb2wgdXNlZCBhIGNvbnN0cmFpbnRzKCkgbWVtYmVyIGZ1bmN0aW9uIGluIGNvbmNlcHQKLS8vIGNoZWNraW5nIGNsYXNzZXMuICBJZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgU0ZJTkFFLCB3ZSBjYW4gZGV0ZWN0Ci0vLyB0aGF0IGZ1bmN0aW9uIGFuZCBzZWFtbGVzc2x5IHN1cHBvcnQgdGhlIG9sZCBjb25jZXB0IGNoZWNraW5nCi0vLyBjbGFzc2VzLiAgSW4gdGhpcyByZWxlYXNlLCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9sZAotLy8gY29uY2VwdCBjaGVja2luZyBjbGFzc2VzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hlcmUgYXZhaWxhYmxlLgotLy8gVGhlIG9sZCBwcm90b2NvbCBpcyBkZXByZWNhdGVkLCB0aG91Z2gsIGFuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci0vLyB3aWxsIG5vIGxvbmdlciBiZSB0aGUgZGVmYXVsdCBpbiB0aGUgbmV4dCByZWxlYXNlLgotCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX09MRF9DT05DRVBUX1NVUFBPUlQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgJiYgIShORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAzKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19NSU5PUl9fLCA8IDQpKSBcCi0gICAgJiYgIShORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAyKSkKLQotLy8gTm90ZTogZ2NjLTIuOTYgdGhyb3VnaCAzLjMueCBoYXZlIHNvbWUgU0ZJTkFFLCBidXQgbm8gYWJpbGl0eSB0bwotLy8gY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBwYXJ0aWN1bGFybWVtYmVyIGZ1bmN0aW9ucy4KLQotIyAgZGVmaW5lIE5ETkJPT1NUX09MRF9DT05DRVBUX1NVUFBPUlQKLQotIyBlbmRpZgotCi0jIGlmZGVmIE5ETkJPT1NUX01TVkMKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL21zdmMuaHBwPgotIyBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYm9ybGFuZC5ocHA+Ci0jIGVsc2UgCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9nZW5lcmFsLmhwcD4KLSMgZW5kaWYKLQotICAvLyBVc2FnZSwgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gY29udGV4dDoKLSAgLy8KLSAgLy8gICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChVbmFyeUZ1bmN0aW9uQ29uY2VwdDxGLGJvb2wsaW50PikpOwotICAvLwotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoTW9kZWxJblBhcmVucykgXAotICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX0ZOKHZvaWQoKilNb2RlbEluUGFyZW5zKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlRfTkROQk9PU1RfRFdBMjAwNjQzMF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYmFja3dhcmRfY29tcGF0aWJpbGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JhY2t3YXJkX2NvbXBhdGliaWxpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTc5Yjk1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYmFja3dhcmRfY29tcGF0aWJpbGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwOS4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX0JBQ0tXQVJEX0NPTVBBVElCSUxJVFlfTkROQk9PU1RfRFdBMjAwOTY4X0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9CQUNLV0FSRF9DT01QQVRJQklMSVRZX05ETkJPT1NUX0RXQTIwMDk2OF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIG5hbWVzcGFjZSBjb25jZXB0cyB7fQotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0NPTkNFUFRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9DT05DRVBUX05PX0JBQ0tXQVJEX0tFWVdPUkQpCi0gIG5hbWVzcGFjZSBjb25jZXB0ID0gY29uY2VwdHM7Ci0jIGVuZGlmIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmNvbmNlcHQKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkNFUFRfQkFDS1dBUkRfQ09NUEFUSUJJTElUWV9ORE5CT09TVF9EV0EyMDA5NjhfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JvcmxhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9ib3JsYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVjMjlkOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JvcmxhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDYuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfQk9STEFORF9ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfQk9STEFORF9ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9iYWNrd2FyZF9jb21wYXRpYmlsaXR5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGNvbmNlcHRzIHsKLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsRm5QdHI+Ci1zdHJ1Y3QgcmVxdWlyZTsKLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IHJlcXVpcmU8dm9pZCgqKShNb2RlbCk+Ci17Ci0gICAgZW51bSB7IGluc3RhbnRpYXRlID0gc2l6ZW9mKCgoKE1vZGVsKikwKS0+fk1vZGVsKCkpLCAzKSB9OwotfTsKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX0ZOKCBNb2RlbEZuUHRyICkgICAgICAgICBcCi0gIGVudW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfUFBfQ0FUKGJvb3N0X2NvbmNlcHRfY2hlY2ssX19MSU5FX18pID0gICAgICBcCi0gICAgICBuZG5ib29zdDo6Y29uY2VwdHM6OnJlcXVpcmU8TW9kZWxGblB0cj46Omluc3RhbnRpYXRlICBcCi0gIH0KLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ojpjb25jZXB0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9CT1JMQU5EX05ETkJPT1NUX0RXQTIwMDY0MjlfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2NvbmNlcHRfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF9kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjgxMDJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDYuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfQ09OQ0VQVF9ERUZfTkROQk9PU1RfRFdBMjAwNjUxX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfQ09OQ0VQVF9ERUZfTkROQk9PU1RfRFdBMjAwNjUxX0hQUAotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoX2kuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9DT05DRVBUX0RFRl9ORE5CT09TVF9EV0EyMDA2NTFfSFBQCi0KLS8vIE5ETkJPT1NUX2NvbmNlcHQoU29tZU5hbWUsIChwMSkocDIpLi4uKHBOKSkKLS8vCi0vLyBFeHBhbmRzIHRvICJ0ZW1wbGF0ZSA8Y2xhc3MgcDEsIGNsYXNzIHAyLCAuLi5jbGFzcyBwTj4gc3RydWN0IFNvbWVOYW1lIgotLy8KLS8vIEFsc28gZGVmaW5lcyBhbiBlcXVpdmFsZW50IFNvbWVOYW1lQ29uY2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLS8vIE1heWJlIGluIHRoZSBuZXh0IHJlbGVhc2Ugd2UgY2FuIGtpbGwgb2ZmIHRoZSAiQ29uY2VwdCIgc3VmZml4IGZvciBnb29kLgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDw9IDMpCi0jIGRlZmluZSBORE5CT09TVF9jb25jZXB0KG5hbWUsIHBhcmFtcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBuYW1lOyAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQobmFtZSxDb25jZXB0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICA6IG5hbWU8IE5ETkJPT1NUX1BQX1NFUV9FTlVNKHBhcmFtcykgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAvKiBhdCBsZWFzdCAyLjk2IGFuZCAzLjQuMyBib3RoIG5lZWQgdGhpcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChuYW1lLENvbmNlcHQpKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSShORE5CT09TVF9DT05DRVBUX3R5cGVuYW1lLH4scGFyYW1zKSA+ICAgICAgIFwKLSAgICBzdHJ1Y3QgbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9jb25jZXB0KG5hbWUsIHBhcmFtcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBuYW1lOyAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQobmFtZSxDb25jZXB0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICA6IG5hbWU8IE5ETkJPT1NUX1BQX1NFUV9FTlVNKHBhcmFtcykgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotI2VuZGlmCi0gICAgCi0vLyBIZWxwZXIgZm9yIE5ETkJPT1NUX2NvbmNlcHQsIGFib3ZlLgotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF90eXBlbmFtZShyLCBpZ25vcmVkLCBpbmRleCwgdCkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGluZGV4KSB0eXBlbmFtZSB0Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF91bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2NvbmNlcHRfdW5kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTYzODc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF91bmRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA2LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jIHVuZGVmIE5ETkJPT1NUX2NvbmNlcHRfdHlwZW5hbWUKLSMgdW5kZWYgTkROQk9PU1RfY29uY2VwdApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9nZW5lcmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvZ2VuZXJhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYTRjNDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9nZW5lcmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA2LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0dFTkVSQUxfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0dFTkVSQUxfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYmFja3dhcmRfY29tcGF0aWJpbGl0eS5ocHA+Ci0KLSMgaWZkZWYgTkROQk9PU1RfT0xEX0NPTkNFUFRfU1VQUE9SVAotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvaGFzX2NvbnN0cmFpbnRzLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jIGVuZGlmCi0KLS8vIFRoaXMgaW1wbGVtZW50YXRpb24gd29ya3Mgb24gQ29tZWF1IGFuZCBHQ0MsIGFsbCB0aGUgd2F5IGJhY2sgdG8KLS8vIDIuOTUKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBjb25jZXB0cyB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBNb2RlbEZuPgotc3RydWN0IHJlcXVpcmVtZW50XzsKLQotbmFtZXNwYWNlIGRldGFpbAotewotICB0ZW1wbGF0ZSA8dm9pZCgqKSgpPiBzdHJ1Y3QgaW5zdGFudGlhdGUge307Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXN0cnVjdCByZXF1aXJlbWVudAotewotICAgIHN0YXRpYyB2b2lkIGZhaWxlZCgpIHsgKChNb2RlbCopMCktPn5Nb2RlbCgpOyB9Ci19OwotCi1zdHJ1Y3QgZmFpbGVkIHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgcmVxdWlyZW1lbnQ8ZmFpbGVkICoqKioqKioqKioqKiBNb2RlbDo6KioqKioqKioqKioqPgotewotICAgIHN0YXRpYyB2b2lkIGZhaWxlZCgpIHsgKChNb2RlbCopMCktPn5Nb2RlbCgpOyB9Ci19OwotCi0jIGlmZGVmIE5ETkJPT1NUX09MRF9DT05DRVBUX1NVUFBPUlQKLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IGNvbnN0cmFpbnQKLXsKLSAgICBzdGF0aWMgdm9pZCBmYWlsZWQoKSB7ICgoTW9kZWwqKTApLT5jb25zdHJhaW50cygpOyB9Ci19OwotICAKLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXN0cnVjdCByZXF1aXJlbWVudF88dm9pZCgqKShNb2RlbCk+Ci0gIDogbXBsOjppZl88Ci0gICAgICAgIGNvbmNlcHRzOjpub3Rfc2F0aXNmaWVkPE1vZGVsPgotICAgICAgLCBjb25zdHJhaW50PE1vZGVsPgotICAgICAgLCByZXF1aXJlbWVudDxmYWlsZWQgKioqKioqKioqKioqIE1vZGVsOjoqKioqKioqKioqKio+Ci0gICAgPjo6dHlwZQote307Ci0gIAotIyBlbHNlCi0KLS8vIEZvciBHQ0MtMi54LCB0aGVzZSBjYW4ndCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgbmFtZQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IHJlcXVpcmVtZW50Xzx2b2lkKCopKE1vZGVsKT4KLSAgICA6IHJlcXVpcmVtZW50PGZhaWxlZCAqKioqKioqKioqKiogTW9kZWw6OioqKioqKioqKioqKj4KLXt9OwotICAKLSMgZW5kaWYKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX0ZOKCBNb2RlbEZuUHRyICkgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6Y29uY2VwdHM6OmRldGFpbDo6aW5zdGFudGlhdGU8ICAgICAgICAgIFwKLSAgICAmOjpuZG5ib29zdDo6Y29uY2VwdHM6OnJlcXVpcmVtZW50XzxNb2RlbEZuUHRyPjo6ZmFpbGVkPiAgICBcCi0gICAgICBORE5CT09TVF9QUF9DQVQoYm9vc3RfY29uY2VwdF9jaGVjayxfX0xJTkVfXykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0dFTkVSQUxfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvaGFzX2NvbnN0cmFpbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvaGFzX2NvbnN0cmFpbnRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZjOTZkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2hhc19jb25zdHJhaW50cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9IQVNfQ09OU1RSQUlOVFNfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0hBU19DT05TVFJBSU5UU19ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9iYWNrd2FyZF9jb21wYXRpYmlsaXR5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGNvbmNlcHRzIHsKLQotbmFtZXNwYWNlIGRldGFpbAoteyAKLQotLy8gSGVyZSB3ZSBpbXBsZW1lbnQgdGhlIG1ldGFmdW5jdGlvbiB0aGF0IGRldGVjdHMgd2hldGhlciBhCi0vLyBjb25zdHJhaW50cyBtZXRhZnVuY3Rpb24gZXhpc3RzCi0gIHR5cGVkZWYgY2hhciB5ZXM7Ci0gIHR5cGVkZWYgY2hhciAoJm5vKVsyXTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgTW9kZWwsIHZvaWQgKE1vZGVsOjoqKSgpPgotICBzdHJ1Y3Qgd3JhcF9jb25zdHJhaW50cyB7fTsKLSAgICAKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8PSAweDU4MCkgfHwgZGVmaW5lZChfX0NVREFDQ19fKQotICAvLyBXb3JrIGFyb3VuZCB0aGUgZm9sbG93aW5nIGJvZ3VzIGVycm9yIGluIFN1biBTdHVkaW8gMTEsIGJ5Ci0gIC8vIHR1cm5pbmcgb2ZmIHRoZSBoYXNfY29uc3RyYWludHMgZnVuY3Rpb24gZW50aXJlbHk6Ci0gIC8vICAgIEVycm9yOiBjb21wbGV4IGV4cHJlc3Npb24gbm90IGFsbG93ZWQgaW4gZGVwZW5kZW50IHRlbXBsYXRlCi0gIC8vICAgIGFyZ3VtZW50IGV4cHJlc3Npb24KLSAgaW5saW5lIG5vIGhhc19jb25zdHJhaW50c18oLi4uKTsKLSNlbHNlCi0gIHRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLSAgaW5saW5lIHllcyBoYXNfY29uc3RyYWludHNfKE1vZGVsKiwgd3JhcF9jb25zdHJhaW50czxNb2RlbCwmTW9kZWw6OmNvbnN0cmFpbnRzPiogPSAwKTsKLSAgaW5saW5lIG5vIGhhc19jb25zdHJhaW50c18oLi4uKTsKLSNlbmRpZgotfQotCi0vLyBUaGlzIHdvdWxkIGJlIGNhbGxlZCAiZGV0YWlsOjpoYXNfY29uc3RyYWludHMsIiBidXQgaXQgaGFzIGEgc3Ryb25nCi0vLyB0ZW5kZW5jeSB0byBzaG93IHVwIGluIGVycm9yIG1lc3NhZ2VzLgotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IG5vdF9zYXRpc2ZpZWQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wKLSAgICAgICwgdmFsdWUgPSBzaXplb2YoIGRldGFpbDo6aGFzX2NvbnN0cmFpbnRzXygoTW9kZWwqKTApICkgPT0gc2l6ZW9mKGRldGFpbDo6eWVzKSApOwotICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6Y29uY2VwdHM6OmRldGFpbAotCi0jZW5kaWYgLy8gTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfSEFTX0NPTlNUUkFJTlRTX05ETkJPT1NUX0RXQTIwMDY0MjlfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL21zdmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9tc3ZjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAwMmZmOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL21zdmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA2LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkNFUFRfQ0hFQ0tfTVNWQ19ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9DSEVDS19NU1ZDX05ETkJPT1NUX0RXQTIwMDY0MjlfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JhY2t3YXJkX2NvbXBhdGliaWxpdHkuaHBwPgotCi0jIGlmZGVmIE5ETkJPT1NUX09MRF9DT05DRVBUX1NVUFBPUlQKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2hhc19jb25zdHJhaW50cy5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyBlbmRpZgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBjb25jZXB0cyB7Ci0KLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IGNoZWNrCi17Ci0gICAgdmlydHVhbCB2b2lkIGZhaWxlZChNb2RlbCogeCkKLSAgICB7Ci0gICAgICAgIHgtPn5Nb2RlbCgpOwotICAgIH0KLX07Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX05PX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXN0cnVjdCBmYWlsZWQge307Ci10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgY2hlY2s8ZmFpbGVkICoqKioqKioqKioqKiBNb2RlbDo6KioqKioqKioqKioqPgotewotICAgIHZpcnR1YWwgdm9pZCBmYWlsZWQoTW9kZWwqIHgpCi0gICAgewotICAgICAgICB4LT5+TW9kZWwoKTsKLSAgICB9Ci19OwotIyBlbmRpZgotCi0jIGlmZGVmIE5ETkJPT1NUX09MRF9DT05DRVBUX1NVUFBPUlQKLSAgCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0gIC8vIE5vIG5lZWQgZm9yIGEgdmlydHVhbCBmdW5jdGlvbiBoZXJlLCBzaW5jZSBldmFsdWF0aW5nCi0gIC8vIG5vdF9zYXRpc2ZpZWQgYmVsb3cgd2lsbCBoYXZlIGFscmVhZHkgaW5zdGFudGlhdGVkIHRoZQotICAvLyBjb25zdHJhaW50cygpIG1lbWJlci4KLSAgc3RydWN0IGNvbnN0cmFpbnQge307Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXN0cnVjdCByZXF1aXJlCi0gIDogbXBsOjppZl9jPAotICAgICAgICBub3Rfc2F0aXNmaWVkPE1vZGVsPjo6dmFsdWUKLSAgICAgICwgZGV0YWlsOjpjb25zdHJhaW50Ci0jIGlmbmRlZiBORE5CT09TVF9OT19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgICAsIGNoZWNrPE1vZGVsPgotIyBlbHNlCi0gICAgICAsIGNoZWNrPGZhaWxlZCAqKioqKioqKioqKiogTW9kZWw6OioqKioqKioqKioqKj4KLSMgZW5kaWYgCi0gICAgICAgID46OnR5cGUKLXt9OwotICAgICAgCi0jIGVsc2UKLSAgCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgcmVxdWlyZQotIyBpZm5kZWYgTkROQk9PU1RfTk9fUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgIDogY2hlY2s8TW9kZWw+Ci0jIGVsc2UKLSAgICA6IGNoZWNrPGZhaWxlZCAqKioqKioqKioqKiogTW9kZWw6OioqKioqKioqKioqKj4KLSMgZW5kaWYgCi17fTsKLSAgCi0jIGVuZGlmCi0gICAgCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMxMCkKLQotLy8KLS8vIFRoZSBpdGVyYXRvciBsaWJyYXJ5IHNlZXMgc29tZSByZWFsbHkgc3RyYW5nZSBlcnJvcnMgdW5sZXNzIHdlCi0vLyBkbyB0aGluZ3MgdGhpcyB3YXkuCi0vLwotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IHJlcXVpcmU8dm9pZCgqKShNb2RlbCk+Ci17Ci0gICAgdmlydHVhbCB2b2lkIGZhaWxlZChNb2RlbCopCi0gICAgewotICAgICAgICByZXF1aXJlPE1vZGVsPigpOwotICAgIH0KLX07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX0ZOKCBNb2RlbEZuUHRyICkgICAgICBcCi1lbnVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9DQVQoYm9vc3RfY29uY2VwdF9jaGVjayxfX0xJTkVfXykgPSAgICBcCi0gICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OmNvbmNlcHRzOjpyZXF1aXJlPE1vZGVsRm5QdHI+KSAgICBcCi19Ci0gIAotIyBlbHNlIC8vIE5vdCB2Yy03LjEKLSAgCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1yZXF1aXJlPE1vZGVsPgotcmVxdWlyZV8odm9pZCgqKShNb2RlbCkpOwotICAKLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX0ZOKCBNb2RlbEZuUHRyICkgICAgICAgICAgXAotZW51bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9DQVQoYm9vc3RfY29uY2VwdF9jaGVjayxfX0xJTkVfXykgPSAgICAgICAgXAotICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OmNvbmNlcHRzOjpyZXF1aXJlXygoTW9kZWxGblB0cikwKSkgXAotfQotICAKLSMgZW5kaWYKLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX0NIRUNLX01TVkNfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC91c2FnZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvdXNhZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmU0OTc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC91c2FnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX1VTQUdFX05ETkJPT1NUX0RXQTIwMDY5MTlfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX1VTQUdFX05ETkJPT1NUX0RXQTIwMDY5MTlfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9hc3NlcnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JhY2t3YXJkX2NvbXBhdGliaWxpdHkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgY29uY2VwdHMgeyAKLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAyKQotCi0jICBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShtb2RlbCkgfm1vZGVsKCkKLQotIyBlbHNlIAotCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgdXNhZ2VfcmVxdWlyZW1lbnRzCi17Ci0gICAgfnVzYWdlX3JlcXVpcmVtZW50cygpIHsgKChNb2RlbCopMCktPn5Nb2RlbCgpOyB9Ci19OwotCi0jICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8PSAzKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UobW9kZWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgbW9kZWwoKTsgLyogYXQgbGVhc3QgMi45NiBhbmQgMy40LjMgYm90aCBuZWVkIHRoaXMgOiggKi8gICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChuZG5ib29zdDo6Y29uY2VwdHM6OnVzYWdlX3JlcXVpcmVtZW50czxtb2RlbD4pKTsgXAotICAgICAgfm1vZGVsKCkKLQotIyAgZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UobW9kZWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKG5kbmJvb3N0Ojpjb25jZXB0czo6dXNhZ2VfcmVxdWlyZW1lbnRzPG1vZGVsPikpOyBcCi0gICAgICB+bW9kZWwoKQotCi0jICBlbmRpZgotCi0jIGVuZGlmIAotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmNvbmNlcHRzCi0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX1VTQUdFX05ETkJPT1NUX0RXQTIwMDY5MTlfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0X2NoZWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E0MzRmMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4MyArMCwwIEBACi0vLwotLy8gKEMpIENvcHlyaWdodCBKZXJlbXkgU2llayAyMDAwLgotLy8gQ29weXJpZ2h0IDIwMDIgVGhlIFRydXN0ZWVzIG9mIEluZGlhbmEgVW5pdmVyc2l0eS4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gUmV2aXNpb24gSGlzdG9yeToKLS8vICAgMDUgTWF5ICAgMjAwMTogV29ya2Fyb3VuZHMgZm9yIEhQIGFDQyBmcm9tIFRob21hcyBNYXRlbGljaC4gKEplcmVteSBTaWVrKQotLy8gICAwMiBBcHJpbCAyMDAxOiBSZW1vdmVkIGxpbWl0cyBoZWFkZXIgYWx0b2dldGhlci4gKEplcmVteSBTaWVrKQotLy8gICAwMSBBcHJpbCAyMDAxOiBNb2RpZmllZCB0byB1c2UgbmV3IDxuZG5ib29zdC9saW1pdHMuaHBwPiBoZWFkZXIuIChKTWFkZG9jaykKLS8vCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbmNlcHRfY2hlY2sgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09OQ0VQVF9DSEVDS1NfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX0NIRUNLU19IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2Fzc2VydC5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb252ZXJzaW9uX3RyYWl0cy5ocHA+Ci0jIGluY2x1ZGUgPHV0aWxpdHk+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fzc2VydC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvdXNhZ2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9jb25jZXB0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0gIC8vCi0gIC8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLSAgLy8KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci0gIGlubGluZSB2b2lkIGZ1bmN0aW9uX3JlcXVpcmVzKE1vZGVsKiA9IDApCi0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChNb2RlbCkpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoVCBjb25zdCYpIHt9Ci0KLSMgIGRlZmluZSBORE5CT09TVF9DTEFTU19SRVFVSVJFKHR5cGVfdmFyLCBucywgY29uY2VwdCkgICAgXAotICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChuczo6Y29uY2VwdDx0eXBlX3Zhcj4pKQotCi0jICBkZWZpbmUgTkROQk9PU1RfQ0xBU1NfUkVRVUlSRTIodHlwZV92YXIxLCB0eXBlX3ZhcjIsIG5zLCBjb25jZXB0KSAgIFwKLSAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgobnM6OmNvbmNlcHQ8dHlwZV92YXIxLHR5cGVfdmFyMj4pKQotCi0jICBkZWZpbmUgTkROQk9PU1RfQ0xBU1NfUkVRVUlSRTModHYxLCB0djIsIHR2MywgbnMsIGNvbmNlcHQpICBcCi0gICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKG5zOjpjb25jZXB0PHR2MSx0djIsdHYzPikpCi0KLSMgIGRlZmluZSBORE5CT09TVF9DTEFTU19SRVFVSVJFNCh0djEsIHR2MiwgdHYzLCB0djQsIG5zLCBjb25jZXB0KSBcCi0gICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKG5zOjpjb25jZXB0PHR2MSx0djIsdHYzLHR2ND4pKQotCi0KLSAgLy8KLSAgLy8gQmVnaW4gY29uY2VwdCBkZWZpbml0aW9ucwotICAvLwotICBORE5CT09TVF9jb25jZXB0KEludGVnZXIsIChUKSkKLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShJbnRlZ2VyKQotICAgICAgICB7Ci0gICAgICAgICAgICB4LmVycm9yX3R5cGVfbXVzdF9iZV9hbl9pbnRlZ2VyX3R5cGUoKTsKLSAgICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIFQgeDsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjxjaGFyPiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IEludGVnZXI8c2lnbmVkIGNoYXI+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjx1bnNpZ25lZCBjaGFyPiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IEludGVnZXI8c2hvcnQ+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjx1bnNpZ25lZCBzaG9ydD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPGludD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPHVuc2lnbmVkIGludD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPGxvbmc+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjx1bnNpZ25lZCBsb25nPiB7fTsKLSMgaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiB7fTsKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgdGVtcGxhdGUgPD4gc3RydWN0IEludGVnZXI8X19pbnQ2ND4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPHVuc2lnbmVkIF9faW50NjQ+IHt9OwotIyBlbmRpZgotCi0gIE5ETkJPT1NUX2NvbmNlcHQoU2lnbmVkSW50ZWdlciwoVCkpIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNpZ25lZEludGVnZXIpIHsKLSAgICAgIHguZXJyb3JfdHlwZV9tdXN0X2JlX2Ffc2lnbmVkX2ludGVnZXJfdHlwZSgpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVCB4OwotICB9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2lnbmVkSW50ZWdlcjxzaWduZWQgY2hhcj4geyB9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2lnbmVkSW50ZWdlcjxzaG9ydD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBTaWduZWRJbnRlZ2VyPGludD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBTaWduZWRJbnRlZ2VyPGxvbmc+IHt9OwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBTaWduZWRJbnRlZ2VyPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4ge307Ci0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBTaWduZWRJbnRlZ2VyPF9faW50NjQ+IHt9OwotIyBlbmRpZgotCi0gIE5ETkJPT1NUX2NvbmNlcHQoVW5zaWduZWRJbnRlZ2VyLChUKSkgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoVW5zaWduZWRJbnRlZ2VyKSB7Ci0gICAgICB4LmVycm9yX3R5cGVfbXVzdF9iZV9hbl91bnNpZ25lZF9pbnRlZ2VyX3R5cGUoKTsKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIFQgeDsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyPHVuc2lnbmVkIGNoYXI+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyPHVuc2lnbmVkIHNob3J0PiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlcjx1bnNpZ25lZCBpbnQ+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyPHVuc2lnbmVkIGxvbmc+IHt9OwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXI8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4ge307Ci0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXI8dW5zaWduZWQgX19pbnQ2ND4ge307Ci0jIGVuZGlmCi0KLSAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgLy8gQmFzaWMgQ29uY2VwdHMKLQotICBORE5CT09TVF9jb25jZXB0KERlZmF1bHRDb25zdHJ1Y3RpYmxlLChUVCkpCi0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKERlZmF1bHRDb25zdHJ1Y3RpYmxlKSB7Ci0gICAgICBUVCBhOyAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgZGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGEpOwotICAgIH0KLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEFzc2lnbmFibGUsKFRUKSkKLSAgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQXNzaWduYWJsZSkgewotI2lmICFkZWZpbmVkKF9JVEVSQVRPUl8pIC8vIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yIGJyb2tlbiBmb3IgVkMrKyBTVEwKLSAgICAgIGEgPSBiOyAgICAgICAgICAgICAvLyByZXF1aXJlIGFzc2lnbm1lbnQgb3BlcmF0b3IKLSNlbmRpZgotICAgICAgY29uc3RfY29uc3RyYWludHMoYik7Ci0gICAgfQotICAgcHJpdmF0ZToKLSAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IFRUJiB4KSB7Ci0jaWYgIWRlZmluZWQoX0lURVJBVE9SXykgLy8gYmFja19pbnNlcnRfaXRlcmF0b3IgYnJva2VuIGZvciBWQysrIFNUTAotICAgICAgYSA9IHg7ICAgICAgICAgICAgICAvLyBjb25zdCByZXF1aXJlZCBmb3IgYXJndW1lbnQgdG8gYXNzaWdubWVudAotI2Vsc2UKLSAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyh4KTsKLSNlbmRpZgotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVFQgYTsKLSAgICBUVCBiOwotICB9OwotCi0KLSAgTkROQk9PU1RfY29uY2VwdChDb3B5Q29uc3RydWN0aWJsZSwoVFQpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb3B5Q29uc3RydWN0aWJsZSkgewotICAgICAgVFQgYShiKTsgICAgICAgICAgICAvLyByZXF1aXJlIGNvcHkgY29uc3RydWN0b3IKLSAgICAgIFRUKiBwdHIgPSAmYTsgICAgICAgLy8gcmVxdWlyZSBhZGRyZXNzIG9mIG9wZXJhdG9yCi0gICAgICBjb25zdF9jb25zdHJhaW50cyhhKTsKLSAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhwdHIpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBUVCYgYSkgewotICAgICAgVFQgYyhhKTsgICAgICAgICAgICAvLyByZXF1aXJlIGNvbnN0IGNvcHkgY29uc3RydWN0b3IKLSAgICAgIGNvbnN0IFRUKiBwdHIgPSAmYTsgLy8gcmVxdWlyZSBjb25zdCBhZGRyZXNzIG9mIG9wZXJhdG9yCi0gICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYyk7Ci0gICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocHRyKTsKLSAgICB9Ci0gICAgVFQgYjsKLSAgfTsKLQotI2lmIChkZWZpbmVkIF9NU0NfVkVSKQotIyBwcmFnbWEgd2FybmluZyggcHVzaCApCi0jIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDUxMCApIC8vIGRlZmF1bHQgY29uc3RydWN0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ2MTAgKSAvLyBvYmplY3QgJ2NsYXNzJyBjYW4gbmV2ZXIgYmUgaW5zdGFudGlhdGVkIC0gdXNlci1kZWZpbmVkIGNvbnN0cnVjdG9yIHJlcXVpcmVkCi0jZW5kaWYKLSAgLy8gVGhlIFNHSSBTVEwgdmVyc2lvbiBvZiBBc3NpZ25hYmxlIHJlcXVpcmVzIGNvcHkgY29uc3RydWN0b3IgYW5kIG9wZXJhdG9yPQotICBORE5CT09TVF9jb25jZXB0KFNHSUFzc2lnbmFibGUsKFRUKSkKLSAgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoU0dJQXNzaWduYWJsZSkgewotICAgICAgVFQgYyhhKTsKLSNpZiAhZGVmaW5lZChfSVRFUkFUT1JfKSAvLyBiYWNrX2luc2VydF9pdGVyYXRvciBicm9rZW4gZm9yIFZDKysgU1RMCi0gICAgICBhID0gYjsgICAgICAgICAgICAgIC8vIHJlcXVpcmUgYXNzaWdubWVudCBvcGVyYXRvcgotI2VuZGlmCi0gICAgICBjb25zdF9jb25zdHJhaW50cyhiKTsKLSAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjKTsKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgVFQmIHgpIHsKLSAgICAgIFRUIGMoeCk7Ci0jaWYgIWRlZmluZWQoX0lURVJBVE9SXykgLy8gYmFja19pbnNlcnRfaXRlcmF0b3IgYnJva2VuIGZvciBWQysrIFNUTAotICAgICAgYSA9IHg7ICAgICAgICAgICAgICAvLyBjb25zdCByZXF1aXJlZCBmb3IgYXJndW1lbnQgdG8gYXNzaWdubWVudAotI2VuZGlmCi0gICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYyk7Ci0gICAgfQotICAgIFRUIGE7Ci0gICAgVFQgYjsKLSAgfTsKLSNpZiAoZGVmaW5lZCBfTVNDX1ZFUikKLSMgcHJhZ21hIHdhcm5pbmcoIHBvcCApCi0jZW5kaWYKLQotICBORE5CT09TVF9jb25jZXB0KENvbnZlcnRpYmxlLChYKShZKSkKLSAgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQ29udmVydGlibGUpIHsKLSAgICAgIFkgeSA9IHg7Ci0gICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoeSk7Ci0gICAgfQotICAgcHJpdmF0ZToKLSAgICBYIHg7Ci0gIH07Ci0KLSAgLy8gVGhlIEMrKyBzdGFuZGFyZCByZXF1aXJlbWVudHMgZm9yIG1hbnkgY29uY2VwdHMgdGFsayBhYm91dCByZXR1cm4KLSAgLy8gdHlwZXMgdGhhdCBtdXN0IGJlICJjb252ZXJ0aWJsZSB0byBib29sIi4gIFRoZSBwcm9ibGVtIHdpdGggdGhpcwotICAvLyByZXF1aXJlbWVudCBpcyB0aGF0IGl0IGxlYXZlcyB0aGUgZG9vciBvcGVuIGZvciBldmlsIHByb3hpZXMgdGhhdAotICAvLyBkZWZpbmUgdGhpbmdzIGxpa2Ugb3BlcmF0b3J8fCB3aXRoIHN0cmFuZ2UgcmV0dXJuIHR5cGVzLiAgVHdvCi0gIC8vIHBvc3NpYmxlIHNvbHV0aW9ucyBhcmU6Ci0gIC8vIDEpIHJlcXVpcmUgdGhlIHJldHVybiB0eXBlIHRvIGJlIGV4YWN0bHkgYm9vbAotICAvLyAyKSBzdGF5IHdpdGggY29udmVydGlibGUgdG8gYm9vbCwgYW5kIGFsc28KLSAgLy8gICAgc3BlY2lmeSBzdHVmZiBhYm91dCBhbGwgdGhlIGxvZ2ljYWwgb3BlcmF0b3JzLgotICAvLyBGb3Igbm93IHdlIGp1c3QgdGVzdCBmb3IgY29udmVydGlibGUgdG8gYm9vbC4KLSAgdGVtcGxhdGUgPGNsYXNzIFRUPgotICB2b2lkIHJlcXVpcmVfYm9vbGVhbl9leHByKGNvbnN0IFRUJiB0KSB7Ci0gICAgYm9vbCB4ID0gdDsKLSAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoeCk7Ci0gIH0KLQotICBORE5CT09TVF9jb25jZXB0KEVxdWFsaXR5Q29tcGFyYWJsZSwoVFQpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShFcXVhbGl0eUNvbXBhcmFibGUpIHsKLSAgICAgIHJlcXVpcmVfYm9vbGVhbl9leHByKGEgPT0gYik7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihhICE9IGIpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVFQgYSwgYjsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KExlc3NUaGFuQ29tcGFyYWJsZSwoVFQpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShMZXNzVGhhbkNvbXBhcmFibGUpIHsKLSAgICAgIHJlcXVpcmVfYm9vbGVhbl9leHByKGEgPCBiKTsKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIFRUIGEsIGI7Ci0gIH07Ci0KLSAgLy8gVGhpcyBpcyBlcXVpdmFsZW50IHRvIFNHSSBTVEwncyBMZXNzVGhhbkNvbXBhcmFibGUuCi0gIE5ETkJPT1NUX2NvbmNlcHQoQ29tcGFyYWJsZSwoVFQpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb21wYXJhYmxlKSB7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihhIDwgYik7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihhID4gYik7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihhIDw9IGIpOwotICAgICAgcmVxdWlyZV9ib29sZWFuX2V4cHIoYSA+PSBiKTsKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIFRUIGEsIGI7Ci0gIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9QUkVESUNBVEVfT1BfQ09OU1RSQUlOVChPUCxOQU1FKSAgICBcCi0gIE5ETkJPT1NUX2NvbmNlcHQoTkFNRSwgKEZpcnN0KShTZWNvbmQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTkFNRSkgeyAodm9pZCljb25zdHJhaW50c18oKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHByaXZhdGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBib29sIGNvbnN0cmFpbnRzXygpIHsgcmV0dXJuIGEgT1AgYjsgfSAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRmlyc3QgYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFNlY29uZCBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9PUEVSQVRPUl9DT05TVFJBSU5UKE9QLE5BTUUpICAgIFwKLSAgTkROQk9PU1RfY29uY2VwdChOQU1FLCAoUmV0KShGaXJzdCkoU2Vjb25kKSkgICAgICAgICAgICAgICAgIFwKLSAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTkFNRSkgeyAodm9pZCljb25zdHJhaW50c18oKTsgfSAgICAgICAgICAgICAgICAgICAgIFwKLSAgcHJpdmF0ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIFJldCBjb25zdHJhaW50c18oKSB7IHJldHVybiBhIE9QIGI7IH0gICAgICAgICAgICAgICAgIFwKLSAgICAgIEZpcnN0IGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIFNlY29uZCBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfQotCi0gIE5ETkJPT1NUX0RFRklORV9CSU5BUllfUFJFRElDQVRFX09QX0NPTlNUUkFJTlQoPT0sIEVxdWFsT3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX1BSRURJQ0FURV9PUF9DT05TVFJBSU5UKCE9LCBOb3RFcXVhbE9wKTsKLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9QUkVESUNBVEVfT1BfQ09OU1RSQUlOVCg8LCBMZXNzVGhhbk9wKTsKLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9QUkVESUNBVEVfT1BfQ09OU1RSQUlOVCg8PSwgTGVzc0VxdWFsT3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX1BSRURJQ0FURV9PUF9DT05TVFJBSU5UKD4sIEdyZWF0ZXJUaGFuT3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX1BSRURJQ0FURV9PUF9DT05TVFJBSU5UKD49LCBHcmVhdGVyRXF1YWxPcCk7Ci0KLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9PUEVSQVRPUl9DT05TVFJBSU5UKCssIFBsdXNPcCk7Ci0gIE5ETkJPT1NUX0RFRklORV9CSU5BUllfT1BFUkFUT1JfQ09OU1RSQUlOVCgqLCBUaW1lc09wKTsKLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9PUEVSQVRPUl9DT05TVFJBSU5UKC8sIERpdmlkZU9wKTsKLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9PUEVSQVRPUl9DT05TVFJBSU5UKC0sIFN1YnRyYWN0T3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX09QRVJBVE9SX0NPTlNUUkFJTlQoJSwgTW9kT3ApOwotCi0gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIC8vIEZ1bmN0aW9uIE9iamVjdCBDb25jZXB0cwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoR2VuZXJhdG9yLChGdW5jKShSZXR1cm4pKQotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEdlbmVyYXRvcikgeyB0ZXN0KGlzX3ZvaWQ8UmV0dXJuPigpKTsgfQotCi0gICBwcml2YXRlOgotICAgICAgdm9pZCB0ZXN0KG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLSAgICAgIHsKLSAgICAgICAgICAvLyBEbyB3ZSByZWFsbHkgd2FudCBhIHJlZmVyZW5jZSBoZXJlPwotICAgICAgICAgIGNvbnN0IFJldHVybiYgciA9IGYoKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgICAgIHZvaWQgdGVzdChuZG5ib29zdDo6bXBsOjp0cnVlXykKLSAgICAgIHsKLSAgICAgICAgICBmKCk7Ci0gICAgICB9Ci0KLSAgICAgIEZ1bmMgZjsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KFVuYXJ5RnVuY3Rpb24sKEZ1bmMpKFJldHVybikoQXJnKSkKLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShVbmFyeUZ1bmN0aW9uKSB7IHRlc3QoaXNfdm9pZDxSZXR1cm4+KCkpOyB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICB2b2lkIHRlc3QobmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotICAgICAgewotICAgICAgICAgIGYoYXJnKTsgICAgICAgICAgICAgICAvLyAicHJpbWluZyB0aGUgcHVtcCIgdGhpcyB3YXkga2VlcHMgbXN2YzYgaGFwcHkgKElDRSkKLSAgICAgICAgICBSZXR1cm4gciA9IGYoYXJnKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgICAgIHZvaWQgdGVzdChuZG5ib29zdDo6bXBsOjp0cnVlXykKLSAgICAgIHsKLSAgICAgICAgICBmKGFyZyk7Ci0gICAgICB9Ci0KLSNpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDQpIFwKLSAgICAgICAgICAgICAgICAgICAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA+IDMpKSkKLSAgICAgIC8vIERlY2xhcmUgYSBkdW1teSBjb25zdHJ1a3RvciB0byBtYWtlIGdjYyBoYXBweS4KLSAgICAgIC8vIEl0IHNlZW1zIHRoZSBjb21waWxlciBjYW4gbm90IGdlbmVyYXRlIGEgc2Vuc2libGUgY29uc3RydWN0b3Igd2hlbiB0aGlzIGlzIGluc3RhbnRpYXRlZCB3aXRoIGEgcmVmZW5jZSB0eXBlLgotICAgICAgLy8gKHdhcm5pbmc6IG5vbi1zdGF0aWMgcmVmZXJlbmNlICJjb25zdCBkb3VibGUmIG5kbmJvb3N0OjpVbmFyeUZ1bmN0aW9uPFlvdXJDbGFzc0hlcmU+OjphcmciCi0gICAgICAvLyBpbiBjbGFzcyB3aXRob3V0IGEgY29uc3RydWN0b3IgWy1XdW5pbml0aWFsaXplZF0pCi0gICAgICBVbmFyeUZ1bmN0aW9uKCk7Ci0jZW5kaWYKLQotICAgICAgRnVuYyBmOwotICAgICAgQXJnIGFyZzsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEJpbmFyeUZ1bmN0aW9uLChGdW5jKShSZXR1cm4pKEZpcnN0KShTZWNvbmQpKQotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEJpbmFyeUZ1bmN0aW9uKSB7IHRlc3QoaXNfdm9pZDxSZXR1cm4+KCkpOyB9Ci0gICBwcml2YXRlOgotICAgICAgdm9pZCB0ZXN0KG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLSAgICAgIHsKLSAgICAgICAgICBmKGZpcnN0LHNlY29uZCk7Ci0gICAgICAgICAgUmV0dXJuIHIgPSBmKGZpcnN0LCBzZWNvbmQpOyAvLyByZXF1aXJlIG9wZXJhdG9yKCkKLSAgICAgICAgICAodm9pZClyOwotICAgICAgfQotCi0gICAgICB2b2lkIHRlc3QobmRuYm9vc3Q6Om1wbDo6dHJ1ZV8pCi0gICAgICB7Ci0gICAgICAgICAgZihmaXJzdCxzZWNvbmQpOwotICAgICAgfQotCi0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg0KSBcCi0gICAgICAgICAgICAgICAgICAgICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPiAzKSkpCi0gICAgICAvLyBEZWNsYXJlIGEgZHVtbXkgY29uc3RydWN0b3IgdG8gbWFrZSBnY2MgaGFwcHkuCi0gICAgICAvLyBJdCBzZWVtcyB0aGUgY29tcGlsZXIgY2FuIG5vdCBnZW5lcmF0ZSBhIHNlbnNpYmxlIGNvbnN0cnVjdG9yIHdoZW4gdGhpcyBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHJlZmVuY2UgdHlwZS4KLSAgICAgIC8vICh3YXJuaW5nOiBub24tc3RhdGljIHJlZmVyZW5jZSAiY29uc3QgZG91YmxlJiBuZG5ib29zdDo6QmluYXJ5RnVuY3Rpb248WW91ckNsYXNzSGVyZT46OmFyZyIKLSAgICAgIC8vIGluIGNsYXNzIHdpdGhvdXQgYSBjb25zdHJ1Y3RvciBbLVd1bmluaXRpYWxpemVkXSkKLSAgICAgIEJpbmFyeUZ1bmN0aW9uKCk7Ci0jZW5kaWYKLQotICAgICAgRnVuYyBmOwotICAgICAgRmlyc3QgZmlyc3Q7Ci0gICAgICBTZWNvbmQgc2Vjb25kOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoVW5hcnlQcmVkaWNhdGUsKEZ1bmMpKEFyZykpCi0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFVuYXJ5UHJlZGljYXRlKSB7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihmKGFyZykpOyAvLyByZXF1aXJlIG9wZXJhdG9yKCkgcmV0dXJuaW5nIGJvb2wKLSAgICB9Ci0gICBwcml2YXRlOgotI2lmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCBORE5CT09TVF9URVNURURfQVQoNCkgXAotICAgICAgICAgICAgICAgICAgICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID4gMykpKQotICAgICAgLy8gRGVjbGFyZSBhIGR1bW15IGNvbnN0cnVjdG9yIHRvIG1ha2UgZ2NjIGhhcHB5LgotICAgICAgLy8gSXQgc2VlbXMgdGhlIGNvbXBpbGVyIGNhbiBub3QgZ2VuZXJhdGUgYSBzZW5zaWJsZSBjb25zdHJ1Y3RvciB3aGVuIHRoaXMgaXMgaW5zdGFudGlhdGVkIHdpdGggYSByZWZlbmNlIHR5cGUuCi0gICAgICAvLyAod2FybmluZzogbm9uLXN0YXRpYyByZWZlcmVuY2UgImNvbnN0IGRvdWJsZSYgbmRuYm9vc3Q6OlVuYXJ5UHJlZGljYXRlPFlvdXJDbGFzc0hlcmU+OjphcmciCi0gICAgICAvLyBpbiBjbGFzcyB3aXRob3V0IGEgY29uc3RydWN0b3IgWy1XdW5pbml0aWFsaXplZF0pCi0gICAgICBVbmFyeVByZWRpY2F0ZSgpOwotI2VuZGlmCi0KLSAgICBGdW5jIGY7Ci0gICAgQXJnIGFyZzsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEJpbmFyeVByZWRpY2F0ZSwoRnVuYykoRmlyc3QpKFNlY29uZCkpCi0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEJpbmFyeVByZWRpY2F0ZSkgewotICAgICAgcmVxdWlyZV9ib29sZWFuX2V4cHIoZihhLCBiKSk7IC8vIHJlcXVpcmUgb3BlcmF0b3IoKSByZXR1cm5pbmcgYm9vbAotICAgIH0KLSAgIHByaXZhdGU6Ci0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg0KSBcCi0gICAgICAgICAgICAgICAgICAgICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPiAzKSkpCi0gICAgICAvLyBEZWNsYXJlIGEgZHVtbXkgY29uc3RydWN0b3IgdG8gbWFrZSBnY2MgaGFwcHkuCi0gICAgICAvLyBJdCBzZWVtcyB0aGUgY29tcGlsZXIgY2FuIG5vdCBnZW5lcmF0ZSBhIHNlbnNpYmxlIGNvbnN0cnVjdG9yIHdoZW4gdGhpcyBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHJlZmVuY2UgdHlwZS4KLSAgICAgIC8vICh3YXJuaW5nOiBub24tc3RhdGljIHJlZmVyZW5jZSAiY29uc3QgZG91YmxlJiBuZG5ib29zdDo6QmluYXJ5UHJlZGljYXRlPFlvdXJDbGFzc0hlcmU+OjphcmciCi0gICAgICAvLyBpbiBjbGFzcyB3aXRob3V0IGEgY29uc3RydWN0b3IgWy1XdW5pbml0aWFsaXplZF0pCi0gICAgICBCaW5hcnlQcmVkaWNhdGUoKTsKLSNlbmRpZgotICAgIEZ1bmMgZjsKLSAgICBGaXJzdCBhOwotICAgIFNlY29uZCBiOwotICB9OwotCi0gIC8vIHVzZSB0aGlzIHdoZW4gZnVuY3RvciBpcyB1c2VkIGluc2lkZSBhIGNvbnRhaW5lciBjbGFzcyBsaWtlIHN0ZDo6c2V0Ci0gIE5ETkJPT1NUX2NvbmNlcHQoQ29uc3RfQmluYXJ5UHJlZGljYXRlLChGdW5jKShGaXJzdCkoU2Vjb25kKSkKLSAgICA6IEJpbmFyeVByZWRpY2F0ZTxGdW5jLCBGaXJzdCwgU2Vjb25kPgotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb25zdF9CaW5hcnlQcmVkaWNhdGUpIHsKLSAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGYpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBGdW5jJiBmdW4pIHsKLSAgICAgIC8vIG9wZXJhdG9yKCkgbXVzdCBiZSBhIGNvbnN0IG1lbWJlciBmdW5jdGlvbgotICAgICAgcmVxdWlyZV9ib29sZWFuX2V4cHIoZnVuKGEsIGIpKTsKLSAgICB9Ci0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg0KSBcCi0gICAgICAgICAgICAgICAgICAgICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPiAzKSkpCi0gICAgICAvLyBEZWNsYXJlIGEgZHVtbXkgY29uc3RydWN0b3IgdG8gbWFrZSBnY2MgaGFwcHkuCi0gICAgICAvLyBJdCBzZWVtcyB0aGUgY29tcGlsZXIgY2FuIG5vdCBnZW5lcmF0ZSBhIHNlbnNpYmxlIGNvbnN0cnVjdG9yIHdoZW4gdGhpcyBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHJlZmVuY2UgdHlwZS4KLSAgICAgIC8vICh3YXJuaW5nOiBub24tc3RhdGljIHJlZmVyZW5jZSAiY29uc3QgZG91YmxlJiBuZG5ib29zdDo6Q29uc3RfQmluYXJ5UHJlZGljYXRlPFlvdXJDbGFzc0hlcmU+OjphcmciCi0gICAgICAvLyBpbiBjbGFzcyB3aXRob3V0IGEgY29uc3RydWN0b3IgWy1XdW5pbml0aWFsaXplZF0pCi0gICAgICBDb25zdF9CaW5hcnlQcmVkaWNhdGUoKTsKLSNlbmRpZgotCi0gICAgRnVuYyBmOwotICAgIEZpcnN0IGE7Ci0gICAgU2Vjb25kIGI7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChBZGFwdGFibGVHZW5lcmF0b3IsKEZ1bmMpKFJldHVybikpCi0gICAgOiBHZW5lcmF0b3I8RnVuYywgdHlwZW5hbWUgRnVuYzo6cmVzdWx0X3R5cGU+Ci0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuYzo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQWRhcHRhYmxlR2VuZXJhdG9yKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChDb252ZXJ0aWJsZTxyZXN1bHRfdHlwZSwgUmV0dXJuPikpOwotICAgICAgfQotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQWRhcHRhYmxlVW5hcnlGdW5jdGlvbiwoRnVuYykoUmV0dXJuKShBcmcpKQotICAgIDogVW5hcnlGdW5jdGlvbjxGdW5jLCB0eXBlbmFtZSBGdW5jOjpyZXN1bHRfdHlwZSwgdHlwZW5hbWUgRnVuYzo6YXJndW1lbnRfdHlwZT4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmM6OnJlc3VsdF90eXBlIHJlc3VsdF90eXBlOwotCi0gICAgICB+QWRhcHRhYmxlVW5hcnlGdW5jdGlvbigpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPHJlc3VsdF90eXBlLCBSZXR1cm4+KSk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPEFyZywgYXJndW1lbnRfdHlwZT4pKTsKLSAgICAgIH0KLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEFkYXB0YWJsZUJpbmFyeUZ1bmN0aW9uLChGdW5jKShSZXR1cm4pKEZpcnN0KShTZWNvbmQpKQotICAgIDogQmluYXJ5RnVuY3Rpb248Ci0gICAgICAgICAgRnVuYwotICAgICAgICAsIHR5cGVuYW1lIEZ1bmM6OnJlc3VsdF90eXBlCi0gICAgICAgICwgdHlwZW5hbWUgRnVuYzo6Zmlyc3RfYXJndW1lbnRfdHlwZQotICAgICAgICAsIHR5cGVuYW1lIEZ1bmM6OnNlY29uZF9hcmd1bWVudF90eXBlCi0gICAgICA+Ci0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuYzo6Zmlyc3RfYXJndW1lbnRfdHlwZSBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jOjpzZWNvbmRfYXJndW1lbnRfdHlwZSBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuYzo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICAgIH5BZGFwdGFibGVCaW5hcnlGdW5jdGlvbigpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPHJlc3VsdF90eXBlLCBSZXR1cm4+KSk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPEZpcnN0LCBmaXJzdF9hcmd1bWVudF90eXBlPikpOwotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChDb252ZXJ0aWJsZTxTZWNvbmQsIHNlY29uZF9hcmd1bWVudF90eXBlPikpOwotICAgICAgfQotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQWRhcHRhYmxlUHJlZGljYXRlLChGdW5jKShBcmcpKQotICAgIDogVW5hcnlQcmVkaWNhdGU8RnVuYywgQXJnPgotICAgICwgQWRhcHRhYmxlVW5hcnlGdW5jdGlvbjxGdW5jLCBib29sLCBBcmc+Ci0gIHsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEFkYXB0YWJsZUJpbmFyeVByZWRpY2F0ZSwoRnVuYykoRmlyc3QpKFNlY29uZCkpCi0gICAgOiBCaW5hcnlQcmVkaWNhdGU8RnVuYywgRmlyc3QsIFNlY29uZD4KLSAgICAsIEFkYXB0YWJsZUJpbmFyeUZ1bmN0aW9uPEZ1bmMsIGJvb2wsIEZpcnN0LCBTZWNvbmQ+Ci0gIHsKLSAgfTsKLQotICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAvLyBJdGVyYXRvciBDb25jZXB0cwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoSW5wdXRJdGVyYXRvciwoVFQpKQotICAgIDogQXNzaWduYWJsZTxUVD4KLSAgICAsIEVxdWFsaXR5Q29tcGFyYWJsZTxUVD4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8VFQ+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxUVD46OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxUVD46OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxUVD46OnBvaW50ZXIgcG9pbnRlcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPFRUPjo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoSW5wdXRJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKFNpZ25lZEludGVnZXI8ZGlmZmVyZW5jZV90eXBlPikpOwotICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoQ29udmVydGlibGU8aXRlcmF0b3JfY2F0ZWdvcnksIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnPikpOwotCi0gICAgICAgIFRUIGooaSk7Ci0gICAgICAgICh2b2lkKSppOyAgICAgICAgICAgLy8gcmVxdWlyZSBkZXJlZmVyZW5jZSBvcGVyYXRvcgotICAgICAgICArK2o7ICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgcHJlaW5jcmVtZW50IG9wZXJhdG9yCi0gICAgICAgIGkrKzsgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBwb3N0aW5jcmVtZW50IG9wZXJhdG9yCi0gICAgICB9Ci0gICBwcml2YXRlOgotICAgIFRUIGk7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChPdXRwdXRJdGVyYXRvciwoVFQpKFZhbHVlVCkpCi0gICAgOiBBc3NpZ25hYmxlPFRUPgotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShPdXRwdXRJdGVyYXRvcikgewotCi0gICAgICArK2k7ICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgcHJlaW5jcmVtZW50IG9wZXJhdG9yCi0gICAgICBpKys7ICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgcG9zdGluY3JlbWVudCBvcGVyYXRvcgotICAgICAgKmkrKyA9IHQ7ICAgICAgICAgICAvLyByZXF1aXJlIHBvc3RpbmNyZW1lbnQgYW5kIGFzc2lnbm1lbnQKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIFRUIGksIGo7Ci0gICAgVmFsdWVUIHQ7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChGb3J3YXJkSXRlcmF0b3IsKFRUKSkKLSAgICA6IElucHV0SXRlcmF0b3I8VFQ+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoRm9yd2FyZEl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBGb3J3YXJkSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5Ci0gICAgICAgICAgICAsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcKLSAgICAgICAgICA+KSk7Ci0KLSAgICAgICAgICB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPFRUPjo6cmVmZXJlbmNlIHIgPSAqaTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICBUVCBpOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTXV0YWJsZV9Gb3J3YXJkSXRlcmF0b3IsKFRUKSkKLSAgICA6IEZvcndhcmRJdGVyYXRvcjxUVD4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShNdXRhYmxlX0ZvcndhcmRJdGVyYXRvcikgewotICAgICAgICAqaSsrID0gKmk7ICAgICAgICAgLy8gcmVxdWlyZSBwb3N0aW5jcmVtZW50IGFuZCBhc3NpZ25tZW50Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgVFQgaTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEJpZGlyZWN0aW9uYWxJdGVyYXRvciwoVFQpKQotICAgIDogRm9yd2FyZEl0ZXJhdG9yPFRUPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEJpZGlyZWN0aW9uYWxJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoQ29udmVydGlibGU8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yOjppdGVyYXRvcl9jYXRlZ29yeQotICAgICAgICAgICAgLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnCi0gICAgICAgICAgPikpOwotCi0gICAgICAgICAgLS1pOyAgICAgICAgICAgICAgICAvLyByZXF1aXJlIHByZWRlY3JlbWVudCBvcGVyYXRvcgotICAgICAgICAgIGktLTsgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBwb3N0ZGVjcmVtZW50IG9wZXJhdG9yCi0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgVFQgaTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11dGFibGVfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLChUVCkpCi0gICAgOiBCaWRpcmVjdGlvbmFsSXRlcmF0b3I8VFQ+Ci0gICAgLCBNdXRhYmxlX0ZvcndhcmRJdGVyYXRvcjxUVD4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShNdXRhYmxlX0JpZGlyZWN0aW9uYWxJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgICAqaS0tID0gKmk7ICAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBwb3N0ZGVjcmVtZW50IGFuZCBhc3NpZ25tZW50Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgVFQgaTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLChUVCkpCi0gICAgOiBCaWRpcmVjdGlvbmFsSXRlcmF0b3I8VFQ+Ci0gICAgLCBDb21wYXJhYmxlPFRUPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBCaWRpcmVjdGlvbmFsSXRlcmF0b3I8VFQ+OjppdGVyYXRvcl9jYXRlZ29yeQotICAgICAgICAgICAgLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnCi0gICAgICAgICAgPikpOwotCi0gICAgICAgICAgaSArPSBuOyAgICAgICAgICAgICAvLyByZXF1aXJlIGFzc2lnbm1lbnQgYWRkaXRpb24gb3BlcmF0b3IKLSAgICAgICAgICBpID0gaSArIG47IGkgPSBuICsgaTsgLy8gcmVxdWlyZSBhZGRpdGlvbiB3aXRoIGRpZmZlcmVuY2UgdHlwZQotICAgICAgICAgIGkgLT0gbjsgICAgICAgICAgICAgLy8gcmVxdWlyZSBhc3NpZ25tZW50IHN1YnRyYWN0aW9uIG9wZXJhdG9yCi0gICAgICAgICAgaSA9IGkgLSBuOyAgICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgc3VidHJhY3Rpb24gd2l0aCBkaWZmZXJlbmNlIHR5cGUKLSAgICAgICAgICBuID0gaSAtIGo7ICAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBkaWZmZXJlbmNlIG9wZXJhdG9yCi0gICAgICAgICAgKHZvaWQpaVtuXTsgICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgZWxlbWVudCBhY2Nlc3Mgb3BlcmF0b3IKLSAgICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBUVCBhLCBiOwotICAgIFRUIGksIGo7Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8VFQ+OjpkaWZmZXJlbmNlX3R5cGUgbjsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11dGFibGVfUmFuZG9tQWNjZXNzSXRlcmF0b3IsKFRUKSkKLSAgICA6IFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPFRUPgotICAgICwgTXV0YWJsZV9CaWRpcmVjdGlvbmFsSXRlcmF0b3I8VFQ+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgICBpW25dID0gKmk7ICAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBlbGVtZW50IGFjY2VzcyBhbmQgYXNzaWdubWVudAotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICBUVCBpOwotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxUVD46OmRpZmZlcmVuY2VfdHlwZSBuOwotICB9OwotCi0gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIC8vIENvbnRhaW5lciBzCi0KLSAgTkROQk9PU1RfY29uY2VwdChDb250YWluZXIsKEMpKQotICAgIDogQXNzaWduYWJsZTxDPgotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpjb25zdF9wb2ludGVyIGNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKElucHV0SXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+KSk7Ci0gICAgICAgICAgY29uc3RfY29uc3RyYWludHMoYyk7Ci0gICAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IEMmIGNjKSB7Ci0gICAgICAgICAgaSA9IGNjLmJlZ2luKCk7Ci0gICAgICAgICAgaSA9IGNjLmVuZCgpOwotICAgICAgICAgIG4gPSBjYy5zaXplKCk7Ci0gICAgICAgICAgbiA9IGNjLm1heF9zaXplKCk7Ci0gICAgICAgICAgYiA9IGNjLmVtcHR5KCk7Ci0gICAgICB9Ci0gICAgICBDIGM7Ci0gICAgICBib29sIGI7Ci0gICAgICBjb25zdF9pdGVyYXRvciBpOwotICAgICAgc2l6ZV90eXBlIG47Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChNdXRhYmxlX0NvbnRhaW5lciwoQykpCi0gICAgOiBDb250YWluZXI8Qz4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6cG9pbnRlciBwb2ludGVyOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKE11dGFibGVfQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgIEFzc2lnbmFibGU8dHlwZW5hbWUgTXV0YWJsZV9Db250YWluZXI6OnZhbHVlX3R5cGU+KSk7Ci0KLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoSW5wdXRJdGVyYXRvcjxpdGVyYXRvcj4pKTsKLQotICAgICAgICAgIGkgPSBjLmJlZ2luKCk7Ci0gICAgICAgICAgaSA9IGMuZW5kKCk7Ci0gICAgICAgICAgYy5zd2FwKGMyKTsKLSAgICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICAgIGl0ZXJhdG9yIGk7Ci0gICAgICBDIGMsIGMyOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoRm9yd2FyZENvbnRhaW5lciwoQykpCi0gICAgOiBDb250YWluZXI8Qz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShGb3J3YXJkQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjwKLSAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9yd2FyZENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgICAgICAgID4pKTsKLSAgICAgIH0KLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11dGFibGVfRm9yd2FyZENvbnRhaW5lciwoQykpCi0gICAgOiBGb3J3YXJkQ29udGFpbmVyPEM+Ci0gICAgLCBNdXRhYmxlX0NvbnRhaW5lcjxDPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKE11dGFibGVfRm9yd2FyZENvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICBNdXRhYmxlX0ZvcndhcmRJdGVyYXRvcjwKLSAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBNdXRhYmxlX0ZvcndhcmRDb250YWluZXI6Oml0ZXJhdG9yCi0gICAgICAgICAgICAgICA+KSk7Ci0gICAgICB9Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChSZXZlcnNpYmxlQ29udGFpbmVyLChDKSkKLSAgICA6IEZvcndhcmRDb250YWluZXI8Qz4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICBDOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCi0gICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFJldmVyc2libGVDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3I8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSZXZlcnNpYmxlQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvcj4pKTsKLQotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChCaWRpcmVjdGlvbmFsSXRlcmF0b3I8Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcj4pKTsKLQotICAgICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGMpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgQyYgY2MpCi0gICAgICB7Ci0gICAgICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBpID0gY2MucmJlZ2luKCk7Ci0gICAgICAgICAgaSA9IGNjLnJlbmQoKTsKLSAgICAgIH0KLSAgICAgIEMgYzsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11dGFibGVfUmV2ZXJzaWJsZUNvbnRhaW5lciwoQykpCi0gICAgOiBNdXRhYmxlX0ZvcndhcmRDb250YWluZXI8Qz4KLSAgICAsIFJldmVyc2libGVDb250YWluZXI8Qz4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpyZXZlcnNlX2l0ZXJhdG9yIHJldmVyc2VfaXRlcmF0b3I7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTXV0YWJsZV9SZXZlcnNpYmxlQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTXV0YWJsZV9Gb3J3YXJkQ29udGFpbmVyPEM+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoTXV0YWJsZV9CaWRpcmVjdGlvbmFsSXRlcmF0b3I8aXRlcmF0b3I+KSk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKE11dGFibGVfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPHJldmVyc2VfaXRlcmF0b3I+KSk7Ci0KLSAgICAgICAgICByZXZlcnNlX2l0ZXJhdG9yIGkgPSBjLnJiZWdpbigpOwotICAgICAgICAgIGkgPSBjLnJlbmQoKTsKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgICBDIGM7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChSYW5kb21BY2Nlc3NDb250YWluZXIsKEMpKQotICAgIDogUmV2ZXJzaWJsZUNvbnRhaW5lcjxDPgotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnNpemVfdHlwZSBzaXplX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9yZWZlcmVuY2U7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoUmFuZG9tQWNjZXNzQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgUmFuZG9tQWNjZXNzSXRlcmF0b3I8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSYW5kb21BY2Nlc3NDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgICAgICAgID4pKTsKLQotICAgICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGMpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgQyYgY2MpCi0gICAgICB7Ci0gICAgICAgICAgY29uc3RfcmVmZXJlbmNlIHIgPSBjY1tuXTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgICAgIEMgYzsKLSAgICAgIHNpemVfdHlwZSBuOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTXV0YWJsZV9SYW5kb21BY2Nlc3NDb250YWluZXIsKEMpKQotICAgIDogTXV0YWJsZV9SZXZlcnNpYmxlQ29udGFpbmVyPEM+Ci0gICAgLCBSYW5kb21BY2Nlc3NDb250YWluZXI8Qz4KLSAgewotICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgTXV0YWJsZV9SYW5kb21BY2Nlc3NDb250YWluZXIgc2VsZjsKLSAgIHB1YmxpYzoKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTXV0YWJsZV9SYW5kb21BY2Nlc3NDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKE11dGFibGVfUmFuZG9tQWNjZXNzSXRlcmF0b3I8dHlwZW5hbWUgc2VsZjo6aXRlcmF0b3I+KSk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKE11dGFibGVfUmFuZG9tQWNjZXNzSXRlcmF0b3I8dHlwZW5hbWUgc2VsZjo6cmV2ZXJzZV9pdGVyYXRvcj4pKTsKLQotICAgICAgICAgIHR5cGVuYW1lIHNlbGY6OnJlZmVyZW5jZSByID0gY1tpXTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICB0eXBlbmFtZSBNdXRhYmxlX1JldmVyc2libGVDb250YWluZXI8Qz46OnNpemVfdHlwZSBpOwotICAgICAgQyBjOwotICB9OwotCi0gIC8vIEEgU2VxdWVuY2UgaXMgaW5oZXJlbnRseSBtdXRhYmxlCi0gIE5ETkJPT1NUX2NvbmNlcHQoU2VxdWVuY2UsKFMpKQotICAgIDogTXV0YWJsZV9Gb3J3YXJkQ29udGFpbmVyPFM+Ci0gICAgICAvLyBNYXR0IEF1c3Rlcm4ncyBib29rIHB1dHMgRGVmYXVsdENvbnN0cnVjdGlibGUgaGVyZSwgdGhlIEMrKwotICAgICAgLy8gc3RhbmRhcmQgcGxhY2VzIGl0IGluIENvbnRhaW5lciAtLUpHUwotICAgICAgLy8gLi4uIHNvIHdoeSBhcmVuJ3Qgd2UgZm9sbG93aW5nIHRoZSBzdGFuZGFyZD8gIC0tRFdBCi0gICAgLCBEZWZhdWx0Q29uc3RydWN0aWJsZTxTPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNlcXVlbmNlKQotICAgICAgewotICAgICAgICAgIFMKLSAgICAgICAgICAgICAgYyhuKSwKLSAgICAgICAgICAgICAgYzIobiwgdCksCi0gICAgICAgICAgICAgIGMzKGZpcnN0LCBsYXN0KTsKLQotICAgICAgICAgIGMuaW5zZXJ0KHAsIHQpOwotICAgICAgICAgIGMuaW5zZXJ0KHAsIG4sIHQpOwotICAgICAgICAgIGMuaW5zZXJ0KHAsIGZpcnN0LCBsYXN0KTsKLQotICAgICAgICAgIGMuZXJhc2UocCk7Ci0gICAgICAgICAgYy5lcmFzZShwLCBxKTsKLQotICAgICAgICAgIHR5cGVuYW1lIFNlcXVlbmNlOjpyZWZlcmVuY2UgciA9IGMuZnJvbnQoKTsKLQotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYzIpOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjMyk7Ci0gICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHIpOwotICAgICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGMpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgUyYgYykgewotICAgICAgICAgIHR5cGVuYW1lIFNlcXVlbmNlOjpjb25zdF9yZWZlcmVuY2UgciA9IGMuZnJvbnQoKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgICAgIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUgdDsKLSAgICAgIHR5cGVuYW1lIFM6OnNpemVfdHlwZSBuOwotICAgICAgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZSogZmlyc3QsICpsYXN0OwotICAgICAgdHlwZW5hbWUgUzo6aXRlcmF0b3IgcCwgcTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEZyb250SW5zZXJ0aW9uU2VxdWVuY2UsKFMpKQotICAgIDogU2VxdWVuY2U8Uz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShGcm9udEluc2VydGlvblNlcXVlbmNlKQotICAgICAgewotICAgICAgICAgIGMucHVzaF9mcm9udCh0KTsKLSAgICAgICAgICBjLnBvcF9mcm9udCgpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIFMgYzsKLSAgICAgIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUgdDsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEJhY2tJbnNlcnRpb25TZXF1ZW5jZSwoUykpCi0gICAgOiBTZXF1ZW5jZTxTPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEJhY2tJbnNlcnRpb25TZXF1ZW5jZSkKLSAgICAgIHsKLSAgICAgICAgICBjLnB1c2hfYmFjayh0KTsKLSAgICAgICAgICBjLnBvcF9iYWNrKCk7Ci0gICAgICAgICAgdHlwZW5hbWUgQmFja0luc2VydGlvblNlcXVlbmNlOjpyZWZlcmVuY2UgciA9IGMuYmFjaygpOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgICAgICBjb25zdF9jb25zdHJhaW50cyhjKTsKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IFMmIGNjKSB7Ci0gICAgICAgICAgdHlwZW5hbWUgQmFja0luc2VydGlvblNlcXVlbmNlOjpjb25zdF9yZWZlcmVuY2UKLSAgICAgICAgICAgICAgciA9IGNjLmJhY2soKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9OwotICAgICAgUyBjOwotICAgICAgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZSB0OwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQXNzb2NpYXRpdmVDb250YWluZXIsKEMpKQotICAgIDogRm9yd2FyZENvbnRhaW5lcjxDPgotICAgICwgRGVmYXVsdENvbnN0cnVjdGlibGU8Qz4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjprZXlfdHlwZSBrZXlfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6a2V5X2NvbXBhcmUga2V5X2NvbXBhcmU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnZhbHVlX2NvbXBhcmUgdmFsdWVfY29tcGFyZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQXNzb2NpYXRpdmVDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgaSA9IGMuZmluZChrKTsKLSAgICAgICAgICByID0gYy5lcXVhbF9yYW5nZShrKTsKLSAgICAgICAgICBjLmVyYXNlKGspOwotICAgICAgICAgIGMuZXJhc2UoaSk7Ci0gICAgICAgICAgYy5lcmFzZShyLmZpcnN0LCByLnNlY29uZCk7Ci0gICAgICAgICAgY29uc3RfY29uc3RyYWludHMoYyk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKEJpbmFyeVByZWRpY2F0ZTxrZXlfY29tcGFyZSxrZXlfdHlwZSxrZXlfdHlwZT4pKTsKLQotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQXNzb2NpYXRpdmVDb250YWluZXI6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZV87Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKEJpbmFyeVByZWRpY2F0ZTx2YWx1ZV9jb21wYXJlLHZhbHVlX3R5cGVfLHZhbHVlX3R5cGVfPikpOwotICAgICAgfQotCi0gICAgICAvLyBSZWR1bmRhbnQgd2l0aCB0aGUgYmFzZSBjb25jZXB0LCBidXQgaXQgaGVscHMgYmVsb3cuCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgQyYgY2MpCi0gICAgICB7Ci0gICAgICAgICAgY2kgPSBjYy5maW5kKGspOwotICAgICAgICAgIG4gPSBjYy5jb3VudChrKTsKLSAgICAgICAgICBjciA9IGNjLmVxdWFsX3JhbmdlKGspOwotICAgICAgfQotCi0gICAgICBDIGM7Ci0gICAgICBpdGVyYXRvciBpOwotICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLGl0ZXJhdG9yPiByOwotICAgICAgY29uc3RfaXRlcmF0b3IgY2k7Ci0gICAgICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsY29uc3RfaXRlcmF0b3I+IGNyOwotICAgICAgdHlwZW5hbWUgQzo6a2V5X3R5cGUgazsKLSAgICAgIHR5cGVuYW1lIEM6OnNpemVfdHlwZSBuOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoVW5pcXVlQXNzb2NpYXRpdmVDb250YWluZXIsKEMpKQotICAgIDogQXNzb2NpYXRpdmVDb250YWluZXI8Qz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShVbmlxdWVBc3NvY2lhdGl2ZUNvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICBDIGMoZmlyc3QsIGxhc3QpOwotCi0gICAgICAgICAgcG9zX2ZsYWcgPSBjLmluc2VydCh0KTsKLSAgICAgICAgICBjLmluc2VydChmaXJzdCwgbGFzdCk7Ci0KLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYyk7Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgc3RkOjpwYWlyPHR5cGVuYW1lIEM6Oml0ZXJhdG9yLCBib29sPiBwb3NfZmxhZzsKLSAgICAgIHR5cGVuYW1lIEM6OnZhbHVlX3R5cGUgdDsKLSAgICAgIHR5cGVuYW1lIEM6OnZhbHVlX3R5cGUqIGZpcnN0LCAqbGFzdDsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11bHRpcGxlQXNzb2NpYXRpdmVDb250YWluZXIsKEMpKQotICAgIDogQXNzb2NpYXRpdmVDb250YWluZXI8Qz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShNdWx0aXBsZUFzc29jaWF0aXZlQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIEMgYyhmaXJzdCwgbGFzdCk7Ci0KLSAgICAgICAgICBwb3MgPSBjLmluc2VydCh0KTsKLSAgICAgICAgICBjLmluc2VydChmaXJzdCwgbGFzdCk7Ci0KLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYyk7Ci0gICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHBvcyk7Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgdHlwZW5hbWUgQzo6aXRlcmF0b3IgcG9zOwotICAgICAgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSB0OwotICAgICAgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSogZmlyc3QsICpsYXN0OwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoU2ltcGxlQXNzb2NpYXRpdmVDb250YWluZXIsKEMpKQotICAgIDogQXNzb2NpYXRpdmVDb250YWluZXI8Qz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShTaW1wbGVBc3NvY2lhdGl2ZUNvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmtleV90eXBlIGtleV90eXBlOwotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKG5kbmJvb3N0Ojppc19zYW1lPGtleV90eXBlLHZhbHVlX3R5cGU+KSk7Ci0gICAgICB9Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChQYWlyQXNzb2NpYXRpdmVDb250YWluZXIsKEMpKQotICAgIDogQXNzb2NpYXRpdmVDb250YWluZXI8Qz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShQYWlyQXNzb2NpYXRpdmVDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjprZXlfdHlwZSBrZXlfdHlwZTsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6Om1hcHBlZF90eXBlIG1hcHBlZF90eXBlOwotICAgICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPGNvbnN0IGtleV90eXBlLCBtYXBwZWRfdHlwZT4gcmVxdWlyZWRfdmFsdWVfdHlwZTsKLSAgICAgICAgICBORE5CT09TVF9NUExfQVNTRVJUKChuZG5ib29zdDo6aXNfc2FtZTx2YWx1ZV90eXBlLHJlcXVpcmVkX3ZhbHVlX3R5cGU+KSk7Ci0gICAgICB9Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChTb3J0ZWRBc3NvY2lhdGl2ZUNvbnRhaW5lciwoQykpCi0gICAgOiBBc3NvY2lhdGl2ZUNvbnRhaW5lcjxDPgotICAgICwgUmV2ZXJzaWJsZUNvbnRhaW5lcjxDPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNvcnRlZEFzc29jaWF0aXZlQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIEMKLSAgICAgICAgICAgICAgYyhrYyksCi0gICAgICAgICAgICAgIGMyKGZpcnN0LCBsYXN0KSwKLSAgICAgICAgICAgICAgYzMoZmlyc3QsIGxhc3QsIGtjKTsKLQotICAgICAgICAgIHAgPSBjLnVwcGVyX2JvdW5kKGspOwotICAgICAgICAgIHAgPSBjLmxvd2VyX2JvdW5kKGspOwotICAgICAgICAgIHIgPSBjLmVxdWFsX3JhbmdlKGspOwotCi0gICAgICAgICAgYy5pbnNlcnQocCwgdCk7Ci0KLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYyk7Ci0gICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGMyKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYzMpOwotICAgICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGMpOwotICAgICAgfQotCi0gICAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IEMmIGMpCi0gICAgICB7Ci0gICAgICAgICAga2MgPSBjLmtleV9jb21wKCk7Ci0gICAgICAgICAgdmMgPSBjLnZhbHVlX2NvbXAoKTsKLQotICAgICAgICAgIGNwID0gYy51cHBlcl9ib3VuZChrKTsKLSAgICAgICAgICBjcCA9IGMubG93ZXJfYm91bmQoayk7Ci0gICAgICAgICAgY3IgPSBjLmVxdWFsX3JhbmdlKGspOwotICAgICAgfQotCi0gICBwcml2YXRlOgotICAgICAgdHlwZW5hbWUgQzo6a2V5X2NvbXBhcmUga2M7Ci0gICAgICB0eXBlbmFtZSBDOjp2YWx1ZV9jb21wYXJlIHZjOwotICAgICAgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSB0OwotICAgICAgdHlwZW5hbWUgQzo6a2V5X3R5cGUgazsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotCi0gICAgICB0eXBlZGVmIFNvcnRlZEFzc29jaWF0aXZlQ29udGFpbmVyIHNlbGY7Ci0gICAgICBpdGVyYXRvciBwOwotICAgICAgY29uc3RfaXRlcmF0b3IgY3A7Ci0gICAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgc2VsZjo6aXRlcmF0b3IsdHlwZW5hbWUgc2VsZjo6aXRlcmF0b3I+IHI7Ci0gICAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgc2VsZjo6Y29uc3RfaXRlcmF0b3IsdHlwZW5hbWUgc2VsZjo6Y29uc3RfaXRlcmF0b3I+IGNyOwotICAgICAgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSogZmlyc3QsICpsYXN0OwotICB9OwotCi0gIC8vIEhhc2hlZEFzc29jaWF0aXZlQ29udGFpbmVyCi0KLSAgTkROQk9PU1RfY29uY2VwdChDb2xsZWN0aW9uLChDKSkKLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb2xsZWN0aW9uKQotICAgICAgewotICAgICAgICBuZG5ib29zdDo6ZnVuY3Rpb25fcmVxdWlyZXM8bmRuYm9vc3Q6OklucHV0SXRlcmF0b3JDb25jZXB0PGl0ZXJhdG9yPiA+KCk7Ci0gICAgICAgIG5kbmJvb3N0OjpmdW5jdGlvbl9yZXF1aXJlczxuZG5ib29zdDo6SW5wdXRJdGVyYXRvckNvbmNlcHQ8Y29uc3RfaXRlcmF0b3I+ID4oKTsKLSAgICAgICAgbmRuYm9vc3Q6OmZ1bmN0aW9uX3JlcXVpcmVzPG5kbmJvb3N0OjpDb3B5Q29uc3RydWN0aWJsZUNvbmNlcHQ8dmFsdWVfdHlwZT4gPigpOwotICAgICAgICBjb25zdF9jb25zdHJhaW50cyhjKTsKLSAgICAgICAgaSA9IGMuYmVnaW4oKTsKLSAgICAgICAgaSA9IGMuZW5kKCk7Ci0gICAgICAgIGMuc3dhcChjKTsKLSAgICAgIH0KLQotICAgICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBDJiBjYykgewotICAgICAgICBjaSA9IGNjLmJlZ2luKCk7Ci0gICAgICAgIGNpID0gY2MuZW5kKCk7Ci0gICAgICAgIG4gPSBjYy5zaXplKCk7Ci0gICAgICAgIGIgPSBjYy5lbXB0eSgpOwotICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9yZWZlcmVuY2U7Ci0gICAgICAvLyB0eXBlZGVmIHR5cGVuYW1lIEM6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLQotICAgICAgQyBjOwotICAgICAgYm9vbCBiOwotICAgICAgaXRlcmF0b3IgaTsKLSAgICAgIGNvbnN0X2l0ZXJhdG9yIGNpOwotICAgICAgc2l6ZV90eXBlIG47Ci0gIH07Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2NvbmNlcHRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfQ09OQ0VQVF9DSEVDS1NfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIzOGQ0Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vLyAgQm9vc3QgY29uZmlnLmhwcCBjb25maWd1cmF0aW9uIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29uZmlnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgQm9vc3QgY29uZmlnLmhwcCBwb2xpY3kgYW5kIHJhdGlvbmFsZSBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIG1vdmVkIHRvCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb25maWcKLS8vCi0vLyAgQ0FVVElPTjogVGhpcyBmaWxlIGlzIGludGVuZGVkIHRvIGJlIGNvbXBsZXRlbHkgc3RhYmxlIC0KLS8vICAgICAgICAgICBETyBOT1QgTU9ESUZZIFRISVMgRklMRSEKLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9DT05GSUdfSFBQCi0KLS8vIGlmIHdlIGRvbid0IGhhdmUgYSB1c2VyIGNvbmZpZywgdGhlbiB1c2UgdGhlIGRlZmF1bHQgbG9jYXRpb246Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfVVNFUl9DT05GSUcpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1VTRVJfQ09ORklHKQotIyAgZGVmaW5lIE5ETkJPT1NUX1VTRVJfQ09ORklHIDxuZG5ib29zdC9jb25maWcvdXNlci5ocHA+Ci0jZW5kaWYKLS8vIGluY2x1ZGUgaXQgZmlyc3Q6Ci0jaWZkZWYgTkROQk9PU1RfVVNFUl9DT05GSUcKLSMgIGluY2x1ZGUgTkROQk9PU1RfVVNFUl9DT05GSUcKLSNlbmRpZgotCi0vLyBpZiB3ZSBkb24ndCBoYXZlIGEgY29tcGlsZXIgY29uZmlnIHNldCwgdHJ5IGFuZCBmaW5kIG9uZToKLSNpZiAhZGVmaW5lZChORE5CT09TVF9DT01QSUxFUl9DT05GSUcpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NPTVBJTEVSX0NPTkZJRykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ09ORklHKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3NlbGVjdF9jb21waWxlcl9jb25maWcuaHBwPgotI2VuZGlmCi0vLyBpZiB3ZSBoYXZlIGEgY29tcGlsZXIgY29uZmlnLCBpbmNsdWRlIGl0IG5vdzoKLSNpZmRlZiBORE5CT09TVF9DT01QSUxFUl9DT05GSUcKLSMgIGluY2x1ZGUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHCi0jZW5kaWYKLQotLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhIHN0ZCBsaWJyYXJ5IGNvbmZpZyBzZXQsIHRyeSBhbmQgZmluZCBvbmU6Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfU1RETElCX0NPTkZJRykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1RETElCX0NPTkZJRykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ09ORklHKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3NlbGVjdF9zdGRsaWJfY29uZmlnLmhwcD4KLSNlbmRpZgotLy8gaWYgd2UgaGF2ZSBhIHN0ZCBsaWJyYXJ5IGNvbmZpZywgaW5jbHVkZSBpdCBub3c6Ci0jaWZkZWYgTkROQk9PU1RfU1RETElCX0NPTkZJRwotIyAgaW5jbHVkZSBORE5CT09TVF9TVERMSUJfQ09ORklHCi0jZW5kaWYKLQotLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhIHBsYXRmb3JtIGNvbmZpZyBzZXQsIHRyeSBhbmQgZmluZCBvbmU6Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfUExBVEZPUk1fQ09ORklHKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19QTEFURk9STV9DT05GSUcpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NPTkZJRykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9zZWxlY3RfcGxhdGZvcm1fY29uZmlnLmhwcD4KLSNlbmRpZgotLy8gaWYgd2UgaGF2ZSBhIHBsYXRmb3JtIGNvbmZpZywgaW5jbHVkZSBpdCBub3c6Ci0jaWZkZWYgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHCi0jICBpbmNsdWRlIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRwotI2VuZGlmCi0KLS8vIGdldCBjb25maWcgc3VmZml4IGNvZGU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3N1ZmZpeC5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfQ09ORklHX0hQUAotCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3ByZWZpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9wcmVmaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTBlNWFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3ByZWZpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgZm9yIEMrKyBCdWlsZGVyIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBlZmZlY3QgdGhlIEFCSToKLS8vCi0vLyAgLWIgKG9uIG9yIG9mZiAtIGVmZmVjdCBlbXVtIHNpemVzKQotLy8gIC1WeCAgKG9uIG9yIG9mZiAtIGVtcHR5IG1lbWJlcnMpCi0vLyAgLVZlIChvbiBvciBvZmYgLSBlbXB0eSBiYXNlIGNsYXNzZXMpCi0vLyAgLWFYIChhbGlnbm1lbnQgLSA1IG9wdGlvbnMpLgotLy8gIC1wWCAoQ2FsbGluZyBjb252ZW50aW9uIC0gNCBvcHRpb25zKQotLy8gIC1WbVggKG1lbWJlciBwb2ludGVyIHNpemUgYW5kIGxheW91dCAtIDUgb3B0aW9ucykKLS8vICAtVkMgKG9uIG9yIG9mZiwgY2hhbmdlcyBuYW1lIG1hbmdsaW5nKQotLy8gIC1WbCAob24gb3Igb2ZmLCBjaGFuZ2VzIHN0cnVjdCBsYXlvdXQpLgotCi0vLyAgSW4gYWRkaXRpb24gdGhlIGZvbGxvd2luZyB3YXJuaW5ncyBhcmUgc3VmZmljaWVudGx5IGFubm95aW5nIChhbmQKLS8vICB1bmZpeGFibGUpIHRvIGhhdmUgdGhlbSB0dXJuZWQgb2ZmIGJ5IGRlZmF1bHQ6Ci0vLwotLy8gIDgwMjcgLSBmdW5jdGlvbnMgY29udGFpbmluZyBbZm9yfHdoaWxlXSBsb29wcyBhcmUgbm90IGV4cGFuZGVkIGlubGluZQotLy8gIDgwMjYgLSBmdW5jdGlvbnMgdGFraW5nIGNsYXNzIGJ5IHZhbHVlIGFyZ3VtZW50cyBhcmUgbm90IGV4cGFuZGVkIGlubGluZQotCi0jcHJhZ21hIG5vcHVzaG9wdHdhcm4KLSMgIHByYWdtYSBvcHRpb24gcHVzaCAtYTggLVZ4LSAtVmUtIC1iLSAtcGMgLVZtdiAtVkMtIC1WbC0gLXctODAyNyAtdy04MDI2Ci0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9zdWZmaXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL2JvcmxhbmRfc3VmZml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQwNTM1Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9zdWZmaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotIyAgcHJhZ21hIG9wdGlvbiBwb3AKLSNwcmFnbWEgbm9wdXNob3B0d2FybgotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9tc3ZjX3ByZWZpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvbXN2Y19wcmVmaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2YwNmNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9tc3ZjX3ByZWZpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLwotLy8gQm9vc3QgYmluYXJpZXMgYXJlIGJ1aWx0IHdpdGggdGhlIGNvbXBpbGVyJ3MgZGVmYXVsdCBBQkkgc2V0dGluZ3MsCi0vLyBpZiB0aGUgdXNlciBjaGFuZ2VzIHRoZWlyIGRlZmF1bHQgYWxpZ25tZW50IGluIHRoZSBWUyBJREUgdGhlbiB0aGVpcgotLy8gY29kZSB3aWxsIG5vIGxvbmdlciBiZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIHRoZSBiamFtIGJ1aWx0IGJpbmFyaWVzCi0vLyB1bmxlc3MgdGhpcyBoZWFkZXIgaXMgaW5jbHVkZWQgdG8gZm9yY2UgQm9vc3QgY29kZSBpbnRvIGEgY29uc2lzdGVudCBBQkkuCi0vLwotLy8gTm90ZSB0aGF0IGluY2x1c2lvbiBvZiB0aGlzIGhlYWRlciBpcyBvbmx5IG5lY2Vzc2FyeSBmb3IgbGlicmFyaWVzIHdpdGggCi0vLyBzZXBhcmF0ZSBzb3VyY2UsIGhlYWRlciBvbmx5IGxpYnJhcmllcyBETyBOT1QgbmVlZCB0aGlzIGFzIGxvbmcgYXMgYWxsCi0vLyB0cmFuc2xhdGlvbiB1bml0cyBhcmUgYnVpbHQgd2l0aCB0aGUgc2FtZSBvcHRpb25zLgotLy8KLSNpZiBkZWZpbmVkKF9NX1g2NCkKLSMgIHByYWdtYSBwYWNrKHB1c2gsMTYpCi0jZWxzZQotIyAgcHJhZ21hIHBhY2socHVzaCw4KQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL21zdmNfc3VmZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9tc3ZjX3N1ZmZpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NGQ3ODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL21zdmNfc3VmZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI3ByYWdtYSBwYWNrKHBvcCkKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTI5OWVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLy8gIGFiaV9wcmVmaXggaGVhZGVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gKGMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMwotICAgCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0FCSV9QUkVGSVhfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05GSUdfQUJJX1BSRUZJWF9IUFAKLSNlbHNlCi0jIGVycm9yIGRvdWJsZSBpbmNsdXNpb24gb2YgaGVhZGVyIG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcCBpcyBhbiBlcnJvcgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyB0aGlzIG11c3Qgb2NjdXIgYWZ0ZXIgYWxsIG90aGVyIGluY2x1ZGVzIGFuZCBiZWZvcmUgYW55IGNvZGUgYXBwZWFyczoKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKQotI3ByYWdtYSBub3B1c2hvcHR3YXJuCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ2NWI4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8vICBhYmlfc3VmZmZpeCBoZWFkZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAoYykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAzCi0gICAKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8gVGhpcyBoZWFkZXIgc2hvdWxkIGJlICNpbmNsdWRlZCBBRlRFUiBjb2RlIHRoYXQgd2FzIHByZWNlZGVkIGJ5IGEgI2luY2x1ZGUKLS8vIDxuZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHA+LgotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19BQklfUFJFRklYX0hQUAotIyBlcnJvciBIZWFkZXIgbmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwIG11c3Qgb25seSBiZSB1c2VkIGFmdGVyIG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcAotI2Vsc2UKLSMgdW5kZWYgTkROQk9PU1RfQ09ORklHX0FCSV9QUkVGSVhfSFBQCi0jZW5kaWYKLQotLy8gdGhlIHN1ZmZpeCBoZWFkZXIgb2NjdXJzIGFmdGVyIGFsbCBvZiBvdXIgY29kZToKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKQotI3ByYWdtYSBub3B1c2hvcHR3YXJuCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVjYjRhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBhdXRvX2xpbmsuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBBdXRvbWF0aWMgbGlicmFyeSBpbmNsdXNpb24gZm9yIEJvcmxhbmQvTWljcm9zb2Z0IGNvbXBpbGVycy4KLSAgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotVVNBR0U6Ci1+fn5+fn4KLQotQmVmb3JlIGluY2x1ZGluZyB0aGlzIGhlYWRlciB5b3UgbXVzdCBkZWZpbmUgb25lIG9yIG1vcmUgb2YgZGVmaW5lIHRoZSBmb2xsb3dpbmcgbWFjcm9zOgotCi1ORE5CT09TVF9MSUJfTkFNRTogICAgICAgICAgIFJlcXVpcmVkOiBBIHN0cmluZyBjb250YWluaW5nIHRoZSBiYXNlbmFtZSBvZiB0aGUgbGlicmFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgYm9vc3RfcmVnZXguCi1ORE5CT09TVF9MSUJfVE9PTFNFVDogICAgICAgIE9wdGlvbmFsOiB0aGUgYmFzZSBuYW1lIG9mIHRoZSB0b29sc2V0LgotTkROQk9PU1RfRFlOX0xJTks6ICAgICAgICAgICBPcHRpb25hbDogd2hlbiBzZXQgbGluayB0byBkbGwgcmF0aGVyIHRoYW4gc3RhdGljIGxpYnJhcnkuCi1ORE5CT09TVF9MSUJfRElBR05PU1RJQzogICAgIE9wdGlvbmFsOiB3aGVuIHNldCB0aGUgaGVhZGVyIHdpbGwgcHJpbnQgb3V0IHRoZSBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsaWJyYXJ5IHNlbGVjdGVkICh1c2VmdWwgZm9yIGRlYnVnZ2luZykuCi1ORE5CT09TVF9BVVRPX0xJTktfTk9NQU5HTEU6IFNwZWNpZmllcyB0aGF0IHdlIHNob3VsZCBsaW5rIHRvIE5ETkJPT1NUX0xJQl9OQU1FLmxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gYSBtYW5nbGVkLW5hbWUgdmVyc2lvbi4KLU5ETkJPT1NUX0FVVE9fTElOS19UQUdHRUQ6ICAgU3BlY2lmaWVzIHRoYXQgd2UgbGluayB0byBsaWJyYXJpZXMgYnVpbHQgd2l0aCB0aGUgLS1sYXlvdXQ9dGFnZ2VkIG9wdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyB0aGUgZGVmYXVsdCBuYW1lLW1hbmdsZWQgdmVyc2lvbiwgYnV0IHdpdGhvdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbXBpbGVyIG5hbWUgYW5kIHZlcnNpb24sIG9yIHRoZSBCb29zdCB2ZXJzaW9uLiAgSnVzdCB0aGUgYnVpbGQgb3B0aW9ucy4KLQotVGhlc2UgbWFjcm9zIHdpbGwgYmUgdW5kZWYnZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyLCBmdXJ0aGVyIHRoaXMgaGVhZGVyCi1oYXMgbm8gaW5jbHVkZSBndWFyZHMgLSBzbyBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgb25seSBvbmNlIGZyb20geW91ciBsaWJyYXJ5IQotCi1BbGdvcml0aG06Ci1+fn5+fn5+fn5+Ci0KLUxpYnJhcmllcyBmb3IgQm9ybGFuZCBhbmQgTWljcm9zb2Z0IGNvbXBpbGVycyBhcmUgYXV0b21hdGljYWxseQotc2VsZWN0ZWQgaGVyZSwgdGhlIG5hbWUgb2YgdGhlIGxpYiBpcyBzZWxlY3RlZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZwotZm9ybXVsYToKLQotTkROQk9PU1RfTElCX1BSRUZJWAotICAgKyBORE5CT09TVF9MSUJfTkFNRQotICAgKyAiXyIKLSAgICsgTkROQk9PU1RfTElCX1RPT0xTRVQKLSAgICsgTkROQk9PU1RfTElCX1RIUkVBRF9PUFQKLSAgICsgTkROQk9PU1RfTElCX1JUX09QVAotICAgIi0iCi0gICArIE5ETkJPT1NUX0xJQl9WRVJTSU9OCi0KLVRoZXNlIGFyZSBkZWZpbmVkIGFzOgotCi1ORE5CT09TVF9MSUJfUFJFRklYOiAgICAgImxpYiIgZm9yIHN0YXRpYyBsaWJyYXJpZXMgb3RoZXJ3aXNlICIiLgotCi1ORE5CT09TVF9MSUJfTkFNRTogICAgICAgVGhlIGJhc2UgbmFtZSBvZiB0aGUgbGliICggZm9yIGV4YW1wbGUgYm9vc3RfcmVnZXgpLgotCi1ORE5CT09TVF9MSUJfVE9PTFNFVDogICAgVGhlIGNvbXBpbGVyIHRvb2xzZXQgbmFtZSAodmM2LCB2YzcsIGJjYjUgZXRjKS4KLQotTkROQk9PU1RfTElCX1RIUkVBRF9PUFQ6ICItbXQiIGZvciBtdWx0aXRocmVhZCBidWlsZHMsIG90aGVyd2lzZSBub3RoaW5nLgotCi1ORE5CT09TVF9MSUJfUlRfT1BUOiAgICAgQSBzdWZmaXggdGhhdCBpbmRpY2F0ZXMgdGhlIHJ1bnRpbWUgbGlicmFyeSB1c2VkLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgbGV0dGVycyBhZnRlcgotICAgICAgICAgICAgICAgICAgICAgIGEgaHlwaGVuOgotCi0gICAgICAgICAgICAgICAgICAgICAgcyAgICAgIHN0YXRpYyBydW50aW1lIChkeW5hbWljIGlmIG5vdCBwcmVzZW50KS4KLSAgICAgICAgICAgICAgICAgICAgICBnICAgICAgZGVidWcvZGlhZ25vc3RpYyBydW50aW1lIChyZWxlYXNlIGlmIG5vdCBwcmVzZW50KS4KLSAgICAgICAgICAgICAgICAgICAgICB5ICAgICAgUHl0aG9uIGRlYnVnL2RpYWdub3N0aWMgcnVudGltZSAocmVsZWFzZSBpZiBub3QgcHJlc2VudCkuCi0gICAgICAgICAgICAgICAgICAgICAgZCAgICAgIGRlYnVnIGJ1aWxkIChyZWxlYXNlIGlmIG5vdCBwcmVzZW50KS4KLSAgICAgICAgICAgICAgICAgICAgICBwICAgICAgU1RMcG9ydCBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgICBuICAgICAgU1RMcG9ydCBidWlsZCB3aXRob3V0IGl0cyBJT1N0cmVhbXMuCi0KLU5ETkJPT1NUX0xJQl9WRVJTSU9OOiAgICBUaGUgQm9vc3QgdmVyc2lvbiwgaW4gdGhlIGZvcm0geF95LCBmb3IgQm9vc3QgdmVyc2lvbiB4LnkuCi0KLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLSMgIGlmbmRlZiBORE5CT09TVF9DT05GSUdfSFBQCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyAgZW5kaWYKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fTVdFUktTX18pICYmICFkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykKLS8vCi0vLyBDIGxhbmd1YWdlIGNvbXBhdGFiaWxpdHkgKG5vLCBob25lc3RseSkKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTVNWQyBfTVNDX1ZFUgotIyAgZGVmaW5lIE5ETkJPT1NUX1NUUklOR0laRShYKSBORE5CT09TVF9ET19TVFJJTkdJWkUoWCkKLSMgIGRlZmluZSBORE5CT09TVF9ET19TVFJJTkdJWkUoWCkgI1gKLSNlbmRpZgotLy8KLS8vIE9ubHkgaW5jbHVkZSB3aGF0IGZvbGxvd3MgZm9yIGtub3duIGFuZCBzdXBwb3J0ZWQgY29tcGlsZXJzOgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIFwKLSAgICB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgXAotICAgIHx8IChkZWZpbmVkKF9fTVdFUktTX18pICYmIGRlZmluZWQoX1dJTjMyKSAmJiAoX19NV0VSS1NfXyA+PSAweDMwMDApKSBcCi0gICAgfHwgKGRlZmluZWQoX19JQ0wpICYmIGRlZmluZWQoX01TQ19FWFRFTlNJT05TKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkpCi0KLSNpZm5kZWYgTkROQk9PU1RfVkVSU0lPTl9IUFAKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTElCX05BTUUKLSMgIGVycm9yICJNYWNybyBORE5CT09TVF9MSUJfTkFNRSBub3Qgc2V0IChpbnRlcm5hbCBlcnJvcikiCi0jZW5kaWYKLQotLy8KLS8vIGVycm9yIGNoZWNrOgotLy8KLSNpZiBkZWZpbmVkKF9fTVNWQ19SVU5USU1FX0NIRUNLUykgJiYgIWRlZmluZWQoX0RFQlVHKQotIyAgcHJhZ21hIG1lc3NhZ2UoIlVzaW5nIHRoZSAvUlRDIG9wdGlvbiB3aXRob3V0IHNwZWNpZnlpbmcgYSBkZWJ1ZyBydW50aW1lIHdpbGwgbGVhZCB0byBsaW5rZXIgZXJyb3JzIikKLSMgIHByYWdtYSBtZXNzYWdlKCJIaW50OiBnbyB0byB0aGUgY29kZSBnZW5lcmF0aW9uIG9wdGlvbnMgYW5kIHN3aXRjaCB0byBvbmUgb2YgdGhlIGRlYnVnZ2luZyBydW50aW1lcyIpCi0jICBlcnJvciAiSW5jb21wYXRpYmxlIGJ1aWxkIG9wdGlvbnMiCi0jZW5kaWYKLS8vCi0vLyBzZWxlY3QgdG9vbHNldCBpZiBub3QgZGVmaW5lZCBhbHJlYWR5OgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTElCX1RPT0xTRVQKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxMjAwKQotICAgIC8vIE5vdGU6IG5vIGNvbXBpbGVycyBiZWZvcmUgMTIwMCBhcmUgc3VwcG9ydGVkCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxMzAwKQotCi0jICAgIGlmZGVmIFVOREVSX0NFCi0gICAgICAgLy8gZVZDNDoKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgImV2YzQiCi0jICAgIGVsc2UKLSAgICAgICAvLyB2YzY6Ci0jICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJ2YzYiCi0jICAgIGVuZGlmCi0KLSMgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEzMTApCi0KLSAgICAgLy8gdmM3OgotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgInZjNyIKLQotIyAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTQwMCkKLQotICAgICAvLyB2YzcxOgotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgInZjNzEiCi0KLSMgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDE1MDApCi0KLSAgICAgLy8gdmM4MDoKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJ2YzgwIgotCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxNjAwKQotCi0gICAgIC8vIHZjOTA6Ci0jICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAidmM5MCIKLQotIyAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTcwMCkKLQotICAgICAvLyB2YzEwOgotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgInZjMTAwIgotCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLQotICAgICAvLyB2YzExOgotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgInZjMTEwIgotCi0jICBlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotCi0gICAgIC8vIENCdWlsZGVyIDY6Ci0jICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAiYmNiIgotCi0jICBlbGlmIGRlZmluZWQoX19JQ0wpCi0KLSAgICAgLy8gSW50ZWwgQysrLCBubyB2ZXJzaW9uIG51bWJlcjoKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJpdyIKLQotIyAgZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pICYmIChfX01XRVJLU19fIDw9IDB4MzFGRiApCi0KLSAgICAgLy8gTWV0cm93ZXJrcyBDb2RlV2FycmlvciA4LngKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJjdzgiCi0KLSMgIGVsaWYgZGVmaW5lZChfX01XRVJLU19fKSAmJiAoX19NV0VSS1NfXyA8PSAweDMyRkYgKQotCi0gICAgIC8vIE1ldHJvd2Vya3MgQ29kZVdhcnJpb3IgOS54Ci0jICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAiY3c5IgotCi0jICBlbmRpZgotI2VuZGlmIC8vIE5ETkJPT1NUX0xJQl9UT09MU0VUCi0KLS8vCi0vLyBzZWxlY3QgdGhyZWFkIG9wdDoKLS8vCi0jaWYgZGVmaW5lZChfTVQpIHx8IGRlZmluZWQoX19NVF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0xJQl9USFJFQURfT1BUICItbXQiCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0xJQl9USFJFQURfT1BUCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19NV0VSS1NfXykKLQotIyAgaWZkZWYgX0RMTAotCi0jICAgICBpZiAoZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSkgJiYgKGRlZmluZWQoX1NUTFBfT1dOX0lPU1RSRUFNUykgfHwgZGVmaW5lZChfX1NUTF9PV05fSU9TVFJFQU1TKSkKLQotIyAgICAgICAgaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSlcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLWd5ZHAiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKSAmJiAoZGVmaW5lZChfX1NUTF9ERUJVRykgfHwgZGVmaW5lZChfU1RMUF9ERUJVRykpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1nZHAiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItZ3lkcCIKLSMgICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgid2FybmluZzogU1RMcG9ydCBkZWJ1ZyB2ZXJzaW9ucyBhcmUgYnVpbHQgd2l0aCAvRF9TVExQX0RFQlVHPTEiKQotIyAgICAgICAgICAgIGVycm9yICJCdWlsZCBvcHRpb25zIGFyZW4ndCBjb21wYXRpYmxlIHdpdGggcHJlLWJ1aWx0IGxpYnJhcmllcyIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1nZHAiCi0jICAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIndhcm5pbmc6IFNUTHBvcnQgZGVidWcgdmVyc2lvbnMgYXJlIGJ1aWx0IHdpdGggL0RfU1RMUF9ERUJVRz0xIikKLSMgICAgICAgICAgICBlcnJvciAiQnVpbGQgb3B0aW9ucyBhcmVuJ3QgY29tcGF0aWJsZSB3aXRoIHByZS1idWlsdCBsaWJyYXJpZXMiCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1wIgotIyAgICAgICAgZW5kaWYKLQotIyAgICAgZWxpZiBkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSB8fCBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0KLSMgICAgICAgIGlmIGRlZmluZWQoX0RFQlVHKSAmJiAoZGVmaW5lZChfX1NUTF9ERUJVRykgfHwgZGVmaW5lZChfU1RMUF9ERUJVRykpXAotICAgICAgICAgICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9ERUJVR19QWVRIT04pICYmIGRlZmluZWQoTkROQk9PU1RfTElOS0lOR19QWVRIT04pCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1neWRwbiIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLWdkcG4iCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItZ3lkcG4iCi0jICAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIndhcm5pbmc6IFNUTHBvcnQgZGVidWcgdmVyc2lvbnMgYXJlIGJ1aWx0IHdpdGggL0RfU1RMUF9ERUJVRz0xIikKLSMgICAgICAgICAgICBlcnJvciAiQnVpbGQgb3B0aW9ucyBhcmVuJ3QgY29tcGF0aWJsZSB3aXRoIHByZS1idWlsdCBsaWJyYXJpZXMiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItZ2RwbiIKLSMgICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgid2FybmluZzogU1RMcG9ydCBkZWJ1ZyB2ZXJzaW9ucyBhcmUgYnVpbHQgd2l0aCAvRF9TVExQX0RFQlVHPTEiKQotIyAgICAgICAgICAgIGVycm9yICJCdWlsZCBvcHRpb25zIGFyZW4ndCBjb21wYXRpYmxlIHdpdGggcHJlLWJ1aWx0IGxpYnJhcmllcyIKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXBuIgotIyAgICAgICAgZW5kaWYKLQotIyAgICAgZWxzZQotCi0jICAgICAgICBpZiBkZWZpbmVkKF9ERUJVRykgJiYgZGVmaW5lZChORE5CT09TVF9ERUJVR19QWVRIT04pICYmIGRlZmluZWQoTkROQk9PU1RfTElOS0lOR19QWVRIT04pCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1neWQiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItZ2QiCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQKLSMgICAgICAgIGVuZGlmCi0KLSMgICAgIGVuZGlmCi0KLSMgIGVsc2UKLQotIyAgICAgaWYgKGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikpICYmIChkZWZpbmVkKF9TVExQX09XTl9JT1NUUkVBTVMpIHx8IGRlZmluZWQoX19TVExfT1dOX0lPU1RSRUFNUykpCi0KLSMgICAgICAgIGlmIGRlZmluZWQoX0RFQlVHKSAmJiAoZGVmaW5lZChfX1NUTF9ERUJVRykgfHwgZGVmaW5lZChfU1RMUF9ERUJVRykpXAotICAgICAgICAgICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9ERUJVR19QWVRIT04pICYmIGRlZmluZWQoTkROQk9PU1RfTElOS0lOR19QWVRIT04pCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZ3lkcCIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNnZHAiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNneWRwIgotIyAgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJ3YXJuaW5nOiBTVExwb3J0IGRlYnVnIHZlcnNpb25zIGFyZSBidWlsdCB3aXRoIC9EX1NUTFBfREVCVUc9MSIpCi0jICAgICAgICAgICAgZXJyb3IgIkJ1aWxkIG9wdGlvbnMgYXJlbid0IGNvbXBhdGlibGUgd2l0aCBwcmUtYnVpbHQgbGlicmFyaWVzIgotIyAgICAgICAgZWxpZiBkZWZpbmVkKF9ERUJVRykKLSMgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZ2RwIgotIyAgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJ3YXJuaW5nOiBTVExwb3J0IGRlYnVnIHZlcnNpb25zIGFyZSBidWlsdCB3aXRoIC9EX1NUTFBfREVCVUc9MSIpCi0jICAgICAgICAgICAgZXJyb3IgIkJ1aWxkIG9wdGlvbnMgYXJlbid0IGNvbXBhdGlibGUgd2l0aCBwcmUtYnVpbHQgbGlicmFyaWVzIgotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc3AiCi0jICAgICAgICBlbmRpZgotCi0jICAgICBlbGlmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLQotIyAgICAgICAgaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSlcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNneWRwbiIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNnZHBuIgotIyAgICAgICAgZWxpZiBkZWZpbmVkKF9ERUJVRylcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZ3lkcG4iCi0jICAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIndhcm5pbmc6IFNUTHBvcnQgZGVidWcgdmVyc2lvbnMgYXJlIGJ1aWx0IHdpdGggL0RfU1RMUF9ERUJVRz0xIikKLSMgICAgICAgICAgICBlcnJvciAiQnVpbGQgb3B0aW9ucyBhcmVuJ3QgY29tcGF0aWJsZSB3aXRoIHByZS1idWlsdCBsaWJyYXJpZXMiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKQotIyAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNnZHBuIgotIyAgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJ3YXJuaW5nOiBTVExwb3J0IGRlYnVnIHZlcnNpb25zIGFyZSBidWlsdCB3aXRoIC9EX1NUTFBfREVCVUc9MSIpCi0jICAgICAgICAgICAgZXJyb3IgIkJ1aWxkIG9wdGlvbnMgYXJlbid0IGNvbXBhdGlibGUgd2l0aCBwcmUtYnVpbHQgbGlicmFyaWVzIgotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc3BuIgotIyAgICAgICAgZW5kaWYKLQotIyAgICAgZWxzZQotCi0jICAgICAgICBpZiBkZWZpbmVkKF9ERUJVRylcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZ3lkIgotIyAgICAgICAgZWxpZiBkZWZpbmVkKF9ERUJVRykKLSMgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZ2QiCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zIgotIyAgICAgICAgZW5kaWYKLQotIyAgICAgZW5kaWYKLQotIyAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0KLS8vCi0vLyBmaWd1cmUgb3V0IHdoZXRoZXIgd2Ugd2FudCB0aGUgZGVidWcgYnVpbGRzIG9yIG5vdDoKLS8vCi0jaWYgX19CT1JMQU5EQ19fID4gMHg1NjEKLSNwcmFnbWEgZGVmaW5lb25vcHRpb24gTkROQk9PU1RfQk9STEFORF9ERUJVRyAtdgotI2VuZGlmCi0vLwotLy8gc2FuaXR5IGNoZWNrOgotLy8KLSNpZiBkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKQotI2Vycm9yICJQcmUtYnVpbHQgdmVyc2lvbnMgb2YgdGhlIEJvb3N0IGxpYnJhcmllcyBhcmUgbm90IHByb3ZpZGVkIGluIFNUTHBvcnQtZGVidWcgZm9ybSIKLSNlbmRpZgotCi0jICBpZmRlZiBfUlRMRExMCi0KLSMgICAgIGlmIGRlZmluZWQoTkROQk9PU1RfQk9STEFORF9ERUJVRylcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXlkIgotIyAgICAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0JPUkxBTkRfREVCVUcpCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1kIgotIyAgICAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAteQotIyAgICAgZWxzZQotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUCi0jICAgICBlbmRpZgotCi0jICBlbHNlCi0KLSMgICAgIGlmIGRlZmluZWQoTkROQk9PU1RfQk9STEFORF9ERUJVRylcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXN5ZCIKLSMgICAgIGVsaWYgZGVmaW5lZChORE5CT09TVF9CT1JMQU5EX0RFQlVHKQotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc2QiCi0jICAgICBlbGlmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc3kiCi0jICAgICBlbHNlCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zIgotIyAgICAgZW5kaWYKLQotIyAgZW5kaWYKLQotI2VuZGlmCi0KLS8vCi0vLyBzZWxlY3QgbGlua2FnZSBvcHQ6Ci0vLwotI2lmIChkZWZpbmVkKF9ETEwpIHx8IGRlZmluZWQoX1JUTERMTCkpICYmIGRlZmluZWQoTkROQk9PU1RfRFlOX0xJTkspCi0jICBkZWZpbmUgTkROQk9PU1RfTElCX1BSRUZJWAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9EWU5fTElOSykKLSMgIGVycm9yICJNaXhpbmcgYSBkbGwgYm9vc3QgbGlicmFyeSB3aXRoIGEgc3RhdGljIHJ1bnRpbWUgaXMgYSByZWFsbHkgYmFkIGlkZWEuLi4iCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0xJQl9QUkVGSVggImxpYiIKLSNlbmRpZgotCi0vLwotLy8gbm93IGluY2x1ZGUgdGhlIGxpYjoKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfTkFNRSkgXAotICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9MSUJfUFJFRklYKSBcCi0gICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9UT09MU0VUKSBcCi0gICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9USFJFQURfT1BUKSBcCi0gICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9SVF9PUFQpIFwKLSAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfTElCX1ZFUlNJT04pCi0KLSNpZmRlZiBORE5CT09TVF9BVVRPX0xJTktfVEFHR0VECi0jICBwcmFnbWEgY29tbWVudChsaWIsIE5ETkJPT1NUX0xJQl9QUkVGSVggTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0xJQl9OQU1FKSBORE5CT09TVF9MSUJfVEhSRUFEX09QVCBORE5CT09TVF9MSUJfUlRfT1BUICIubGliIikKLSMgIGlmZGVmIE5ETkJPT1NUX0xJQl9ESUFHTk9TVElDCi0jICAgICBwcmFnbWEgbWVzc2FnZSAoIkxpbmtpbmcgdG8gbGliIGZpbGU6ICIgTkROQk9PU1RfTElCX1BSRUZJWCBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfTElCX05BTUUpIE5ETkJPT1NUX0xJQl9USFJFQURfT1BUIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi5saWIiKQotIyAgZW5kaWYKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfQVVUT19MSU5LX05PTUFOR0xFKQotIyAgcHJhZ21hIGNvbW1lbnQobGliLCBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfTElCX05BTUUpICIubGliIikKLSMgIGlmZGVmIE5ETkJPT1NUX0xJQl9ESUFHTk9TVElDCi0jICAgICBwcmFnbWEgbWVzc2FnZSAoIkxpbmtpbmcgdG8gbGliIGZpbGU6ICIgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0xJQl9OQU1FKSAiLmxpYiIpCi0jICBlbmRpZgotI2Vsc2UKLSMgIHByYWdtYSBjb21tZW50KGxpYiwgTkROQk9PU1RfTElCX1BSRUZJWCBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfTElCX05BTUUpICItIiBORE5CT09TVF9MSUJfVE9PTFNFVCBORE5CT09TVF9MSUJfVEhSRUFEX09QVCBORE5CT09TVF9MSUJfUlRfT1BUICItIiBORE5CT09TVF9MSUJfVkVSU0lPTiAiLmxpYiIpCi0jICBpZmRlZiBORE5CT09TVF9MSUJfRElBR05PU1RJQwotIyAgICAgcHJhZ21hIG1lc3NhZ2UgKCJMaW5raW5nIHRvIGxpYiBmaWxlOiAiIE5ETkJPT1NUX0xJQl9QUkVGSVggTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0xJQl9OQU1FKSAiLSIgTkROQk9PU1RfTElCX1RPT0xTRVQgTkROQk9PU1RfTElCX1RIUkVBRF9PUFQgTkROQk9PU1RfTElCX1JUX09QVCAiLSIgTkROQk9PU1RfTElCX1ZFUlNJT04gIi5saWIiKQotIyAgZW5kaWYKLSNlbmRpZgotCi0jZWxzZQotIyAgZXJyb3IgInNvbWUgcmVxdWlyZWQgbWFjcm9zIHdoZXJlIG5vdCBkZWZpbmVkIChpbnRlcm5hbCBsb2dpYyBlcnJvcikuIgotI2VuZGlmCi0KLQotI2VuZGlmIC8vIF9NU0NfVkVSIHx8IF9fQk9STEFORENfXwotCi0vLwotLy8gZmluYWxseSB1bmRlZiBhbnkgbWFjcm9zIHdlIG1heSBoYXZlIHNldDoKLS8vCi0jaWZkZWYgTkROQk9PU1RfTElCX1BSRUZJWAotIyAgdW5kZWYgTkROQk9PU1RfTElCX1BSRUZJWAotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfTkFNRSkKLSMgIHVuZGVmIE5ETkJPT1NUX0xJQl9OQU1FCi0jZW5kaWYKLS8vIERvbid0IHVuZGVmIHRoaXMgb25lOiBpdCBjYW4gYmUgc2V0IGJ5IHRoZSB1c2VyIGFuZCBzaG91bGQgYmUgdGhlIAotLy8gc2FtZSBmb3IgYWxsIGxpYnJhcmllczoKLS8vI2lmIGRlZmluZWQoTkROQk9PU1RfTElCX1RPT0xTRVQpCi0vLyMgIHVuZGVmIE5ETkJPT1NUX0xJQl9UT09MU0VUCi0vLyNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfTElCX1RIUkVBRF9PUFQpCi0jICB1bmRlZiBORE5CT09TVF9MSUJfVEhSRUFEX09QVAotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfUlRfT1BUKQotIyAgdW5kZWYgTkROQk9PU1RfTElCX1JUX09QVAotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfTElOS19PUFQpCi0jICB1bmRlZiBORE5CT09TVF9MSUJfTElOS19PUFQKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfTElCX0RFQlVHX09QVCkKLSMgIHVuZGVmIE5ETkJPT1NUX0xJQl9ERUJVR19PUFQKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfRFlOX0xJTkspCi0jICB1bmRlZiBORE5CT09TVF9EWU5fTElOSwotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2JvcmxhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvYm9ybGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MjYyMzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvYm9ybGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMiAtIDIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIEJvcmxhbmQgQysrIGNvbXBpbGVyIHNldHVwOgotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IEJvcmxhbmQgcHJpb3IgdG8gdmVyc2lvbiA1LjQ6Ci0jaWYgX19CT1JMQU5EQ19fIDwgMHg1NDAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLQotLy8gbGFzdCBrbm93biBjb21waWxlciB2ZXJzaW9uOgotI2lmIChfX0JPUkxBTkRDX18gPiAweDYxMykKLS8vIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotLy8jICBlbHNlCi0vLyMgICAgIHByYWdtYSBtZXNzYWdlKCAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiKQotLy8jICBlbmRpZgotI2VsaWYgKF9fQk9STEFORENfXyA9PSAweDYwMCkKLSMgIGVycm9yICJDQnVpbGRlclggcHJldmlldyBjb21waWxlciBpcyBubyBsb25nZXIgc3VwcG9ydGVkIgotI2VuZGlmCi0KLS8vCi0vLyBTdXBwb3J0IG1hY3JvcyB0byBoZWxwIHdpdGggc3RhbmRhcmQgbGlicmFyeSBkZXRlY3Rpb24KLSNpZiAoX19CT1JMQU5EQ19fIDwgMHg1NjApIHx8IGRlZmluZWQoX1VTRV9PTERfUldfU1RMKQotIyAgZGVmaW5lIE5ETkJPT1NUX0JDQl9XSVRIX1JPR1VFX1dBVkUKLSNlbGlmIF9fQk9STEFORENfXyA8IDB4NTcwCi0jICBkZWZpbmUgTkROQk9PU1RfQkNCX1dJVEhfU1RMUE9SVAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9CQ0JfV0lUSF9ESU5LVU1XQVJFCi0jZW5kaWYKLQotLy8KLS8vIFZlcnNpb24gNS4wIGFuZCBiZWxvdzoKLSMgICBpZiBfX0JPUkxBTkRDX18gPD0gMHgwNTUwCi0vLyBCb3JsYW5kIEMrK0J1aWxkZXIgNCBhbmQgNToKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotIyAgICAgaWYgX19CT1JMQU5EQ19fID09IDB4MDU1MAotLy8gQm9ybGFuZCBDKytCdWlsZGVyIDUsIGNvbW1hbmQtbGluZSBjb21waWxlciA1LjU6Ci0jICAgICAgIGRlZmluZSBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFCi0jICAgICBlbmRpZgotLy8gVmFyaWFkaWMgbWFjcm9zIGRvIG5vdCBleGlzdCBmb3IgQysrIEJ1aWxkZXIgdmVyc2lvbnMgNSBhbmQgYmVsb3cKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jICAgZW5kaWYKLQotLy8gVmVyc2lvbiA1LjUxIGFuZCBiZWxvdzoKLSNpZiAoX19CT1JMQU5EQ19fIDw9IDB4NTUxKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fREVEVUNFRF9UWVBFTkFNRQotLy8gd29ya2Fyb3VuZCBmb3IgbWlzc2luZyBXQ0hBUl9NQVgvV0NIQVJfTUlOOgotI2lmZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8Y2xpbWl0cz4KLSNpbmNsdWRlIDxjd2NoYXI+Ci0jZWxzZQotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHdjaGFyLmg+Ci0jZW5kaWYgLy8gX19jcGx1c3BsdXMKLSNpZm5kZWYgV0NIQVJfTUFYCi0jICBkZWZpbmUgV0NIQVJfTUFYIDB4ZmZmZgotI2VuZGlmCi0jaWZuZGVmIFdDSEFSX01JTgotIyAgZGVmaW5lIFdDSEFSX01JTiAwCi0jZW5kaWYKLSNlbmRpZgotCi0vLyBCb3JsYW5kIEMrKyBCdWlsZGVyIDYgYW5kIGJlbG93OgotI2lmIChfX0JPUkxBTkRDX18gPD0gMHg1NjQpCi0KLSMgIGlmIGRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotICAgICAgLy8gZml4IGJyb2tlbiA8Y3N0cmluZz4gc28gdGhhdCBCb29zdC50ZXN0IHdvcmtzOgotIyAgICAgaW5jbHVkZSA8Y3N0cmluZz4KLSMgICAgIHVuZGVmIHN0cmNtcAotIyAgZW5kaWYKLSAgIC8vIGZpeCBicm9rZW4gZXJybm8gZGVjbGFyYXRpb246Ci0jICBpbmNsdWRlIDxlcnJuby5oPgotIyAgaWZuZGVmIGVycm5vCi0jICAgICBkZWZpbmUgZXJybm8gZXJybm8KLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0vLwotLy8gbmV3IGJ1ZyBpbiA1LjYxOgotI2lmIChfX0JPUkxBTkRDX18gPj0gMHg1NjEpICYmIChfX0JPUkxBTkRDX18gPD0gMHg1ODApCi0gICAvLyB0aGlzIHNlZW1zIHRvIGJlIG5lZWRlZCBieSB0aGUgY29tbWFuZCBsaW5lIGNvbXBpbGVyLCBidXQgbm90IHRoZSBJREU6Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX0ZVTkNUSU9OX1NQRUNJQUxJWkFUSU9OUwotI2VuZGlmCi0KLS8vIEJvcmxhbmQgQysrIEJ1aWxkZXIgMjAwNiBVcGRhdGUgMiBhbmQgYmVsb3c6Ci0jaWYgKF9fQk9STEFORENfXyA8PSAweDU4MikKLSMgIGRlZmluZSBORE5CT09TVF9OT19TRklOQUUKLSMgIGRlZmluZSBORE5CT09TVF9CQ0JfUEFSVElBTF9TUEVDSUFMSVpBVElPTl9CVUcKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9URU1QTEFURVMKLQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1BSSVZBVEVfSU5fQUdHUkVHQVRFCi0KLSMgIGlmZGVmIF9XSU4zMgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jICBlbGlmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fbGludXgpCi0gICAgICAvLyB3ZSBzaG91bGQgcmVhbGx5IGJlIGFibGUgdG8gZG8gd2l0aG91dCB0aGlzCi0gICAgICAvLyBidXQgdGhlIHdjcyogZnVuY3Rpb25zIGFyZW4ndCBpbXBvcnRlZCBpbnRvIHN0ZDo6Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSAgICAgIC8vIF9DUFBVTldJTkQgZG9lc24ndCBnZXQgYXV0b21hdGljYWxseSBzZXQgZm9yIHNvbWUgcmVhc29uOgotIyAgICAgcHJhZ21hIGRlZmluZW9ub3B0aW9uIE5ETkJPT1NUX0NQUFVOV0lORCAteAotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWYgKF9fQk9STEFORENfXyA8PSAweDYxMykgIC8vIEJlbWFuIGhhcyBhc2tlZCBBbGlzZGFpciBmb3IgbW9yZSBpbmZvCi0gICAvLyB3ZSBzaG91bGRuJ3QgcmVhbGx5IG5lZWQgdGhpcyAtIGJ1dCB0b28gbWFueSB0aGluZ3MgY2hva2UKLSAgIC8vIHdpdGhvdXQgaXQsIHRoaXMgbmVlZHMgbW9yZSBpbnZlc3RpZ2F0aW9uOgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9UWVBFX1NQRUNJQUxJWkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUKLQotLy8gVGVtcG9yYXJ5IHdvcmthcm91bmQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmCi0KLS8vIEJvcmxhbmQgQysrIEJ1aWxkZXIgMjAwOCBhbmQgYmVsb3c6Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVAotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwKLSMgIGRlZmluZSBORE5CT09TVF9OT19ERVBFTkRFTlRfTkVTVEVEX0RFUklWQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19VU0lOR19ERUNMQVJBVElPTl9PVkVSTE9BRFNfRlJPTV9UWVBFTkFNRV9CQVNFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTkVTVEVEX0ZSSUVORFNISVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19UWVBFTkFNRV9XSVRIX0NUT1IKLSNpZiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi0jICBkZWZpbmUgTkROQk9PU1RfSUxMRUdBTF9DVl9SRUZFUkVOQ0VTCi0jZW5kaWYKLQotLy8KLS8vICBQb3NpdGl2ZSBGZWF0dXJlIGRldGVjdGlvbgotLy8KLS8vIEJvcmxhbmQgQysrIEJ1aWxkZXIgMjAwOCBhbmQgYmVsb3c6Ci0jaWYgKF9fQk9STEFORENfXyA+PSAweDU5OSkKLSMgIHByYWdtYSBkZWZpbmVvbm9wdGlvbiBORE5CT09TVF9DT0RFR0VBUl8wWF9TVVBQT1JUIC1BeAotI2VuZGlmCi0vLwotLy8gQysrMHggTWFjcm9zOgotLy8KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfQ09ERUdFQVJfMFhfU1VQUE9SVCApIHx8IChfX0JPUkxBTkRDX18gPCAweDYxMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTIAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0FMSUdOT0YKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfQ0hBUjE2X1QKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfQ0hBUjMyX1QKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRVhQTElDSVRfQ09OVkVSU0lPTl9PUFMKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUkVGX1FVQUxJRklFUgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19SVkFMVUVfUkVGUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVEFUSUNfQVNTRVJUCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMgICAgLy8gVVRGLTggc3RpbGwgbm90IHN1cHBvcnRlZAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLSNpZiBfX0JPUkxBTkRDX18gPj0gMHg1OTAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVFIxX0hBU0gKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19NQUNST19VU0VfRkFDRVQKLSNlbmRpZgotCi0vLwotLy8gUG9zdCAweDU2MSB3ZSBoYXZlIGxvbmcgbG9uZyBhbmQgc3RkaW50Lmg6Ci0jaWYgX19CT1JMQU5EQ19fID49IDB4NTYxCi0jICBpZm5kZWYgX19OT19MT05HX0xPTkcKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTE9OR19MT05HCi0jICBlbmRpZgotICAgLy8gT24gbm9uLVdpbjMyIHBsYXRmb3JtcyBsZXQgdGhlIHBsYXRmb3JtIGNvbmZpZyBmaWd1cmUgdGhpcyBvdXQ6Ci0jICBpZmRlZiBfV0lOMzIKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICBlbmRpZgotI2VuZGlmCi0KLS8vIEJvcmxhbmQgQysrQnVpbGRlciA2IGRlZmF1bHRzIHRvIHVzaW5nIFNUTFBvcnQuICBJZiBfVVNFX09MRF9SV19TVEwgaXMKLS8vIGRlZmluZWQsIHRoZW4gd2UgaGF2ZSAweDU2MCBvciBncmVhdGVyIHdpdGggdGhlIFJvZ3VlIFdhdmUgaW1wbGVtZW50YXRpb24KLS8vIHdoaWNoIHByZXN1bWFibHkgaGFzIHRoZSBzdGQ6OkRCTF9NQVggYnVnLgotI2lmIGRlZmluZWQoIE5ETkJPT1NUX0JDQl9XSVRIX1JPR1VFX1dBVkUgKQotLy8gPGNsaW1pdHM+IGlzIHBhcnRseSBicm9rZW4sIHNvbWUgbWFjcm9zIGRlZmluZSBzeW1ib2xzIHRoYXQgYXJlIHJlYWxseSBpbgotLy8gbmFtZXNwYWNlIHN0ZCwgc28geW91IGVuZCB1cCBoYXZpbmcgdG8gdXNlIGlsbGVnYWwgY29uc3RydWN0cyBsaWtlCi0vLyBzdGQ6OkRCTF9NQVgsIGFzIGEgZml4IHdlJ2xsIGp1c3QgaW5jbHVkZSBmbG9hdC5oIGFuZCBoYXZlIGRvbmUgd2l0aDoKLSNpbmNsdWRlIDxmbG9hdC5oPgotI2VuZGlmCi0vLwotLy8gX19pbnQ2NDoKLS8vCi0jaWYgKF9fQk9STEFORENfXyA+PSAweDUzMCkgJiYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotI2VuZGlmCi0vLwotLy8gY2hlY2sgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBzdXBwb3J0OgotLy8KLSNpZiAhZGVmaW5lZChfQ1BQVU5XSU5EKSAmJiAhZGVmaW5lZChORE5CT09TVF9DUFBVTldJTkQpICYmICFkZWZpbmVkKF9fRVhDRVBUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWENFUFRJT05TCi0jZW5kaWYKLS8vCi0vLyBhbGwgdmVyc2lvbnMgaGF2ZSBhIDxkaXJlbnQuaD46Ci0vLwotI2lmbmRlZiBfX1NUUklDVF9BTlNJX18KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSNlbmRpZgotLy8KLS8vIGFsbCB2ZXJzaW9ucyBzdXBwb3J0IF9fZGVjbHNwZWM6Ci0vLwotI2lmIGRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotLy8gY29uZmlnL3BsYXRmb3JtL3dpbjMyLmhwcCB3aWxsIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JULCBldGMuLCB1bmxlc3MgYWxyZWFkeSBkZWZpbmVkICAKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jZW5kaWYKLS8vCi0vLyBBQkkgZml4aW5nIGhlYWRlcnM6Ci0vLwotI2lmIF9fQk9STEFORENfXyAhPSAweDYwMCAvLyBub3QgaW1wbGVtZW50ZWQgZm9yIHZlcnNpb24gNiBjb21waWxlciB5ZXQKLSNpZm5kZWYgTkROQk9PU1RfQUJJX1BSRUZJWAotIyAgZGVmaW5lIE5ETkJPT1NUX0FCSV9QUkVGSVggIm5kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9wcmVmaXguaHBwIgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSMgIGRlZmluZSBORE5CT09TVF9BQklfU1VGRklYICJuZG5ib29zdC9jb25maWcvYWJpL2JvcmxhbmRfc3VmZml4LmhwcCIKLSNlbmRpZgotI2VuZGlmCi0vLwotLy8gRGlzYWJsZSBXaW4zMiBzdXBwb3J0IGluIEFOU0kgbW9kZToKLS8vCi0jaWYgX19CT1JMQU5EQ19fIDwgMHg2MDAKLSMgIHByYWdtYSBkZWZpbmVvbm9wdGlvbiBORE5CT09TVF9ESVNBQkxFX1dJTjMyIC1BCi0jZWxpZiBkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykKLSMgIGRlZmluZSBORE5CT09TVF9ESVNBQkxFX1dJTjMyCi0jZW5kaWYKLS8vCi0vLyBNU1ZDIGNvbXBhdGliaWxpdHkgbW9kZSBkb2VzIHNvbWUgbmFzdHkgdGhpbmdzOgotLy8gVE9ETzogbG9vayB1cCBpZiB0aGlzIGRvZXNuJ3QgYXBwbHkgdG8gdGhlIHdob2xlIDEyeHggcmFuZ2UKLS8vCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDw9IDEyMDApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotI2VuZGlmCi0KLS8vIEJvcmxhbmQgZGlkIG5vdCBpbXBsZW1lbnQgdmFsdWUtaW5pdGlhbGl6YXRpb24gY29tcGxldGVseSwgYXMgSSByZXBvcnRlZAotLy8gaW4gMjAwNywgQm9ybGFuZCBSZXBvcnQgNTE4NTQsICJWYWx1ZS1pbml0aWFsaXphdGlvbjogUE9EIHN0cnVjdCBzaG91bGQgYmUKLS8vIHplcm8taW5pdGlhbGl6ZWQiLCBodHRwOi8vcWMuZW1iYXJjYWRlcm8uY29tL3djL3FjbWFpbi5hc3B4P2Q9NTE4NTQKLS8vIFNlZSBhbHNvOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvdmFsdWVfaW5pdC5odG0jY29tcGlsZXJfaXNzdWVzCi0vLyAoTmllbHMgRGVra2VyLCBMS0VCLCBBcHJpbCAyMDEwKQotI2RlZmluZSBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJCb3JsYW5kIEMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fQk9STEFORENfXykKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY2xhbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY2xhbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGFiMzVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NsYW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMTAKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyBDbGFuZyBjb21waWxlciBzZXR1cC4KLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9leGNlcHRpb25zKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X3J0dGkpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1JUVEkpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fUlRUSQotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfcnR0aSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVFlQRUlEKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RZUEVJRAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9faW50NjQpICYmICFkZWZpbmVkKF9fR05VQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX05SVk8KLQotLy8gQ2xhbmcgc3VwcG9ydHMgImxvbmcgbG9uZyIgaW4gYWxsIGNvbXBpbGF0aW9uIG1vZGVzLgotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0KLS8vCi0vLyBEeW5hbWljIHNoYXJlZCBvYmplY3QgKERTTykgYW5kIGR5bmFtaWMtbGluayBsaWJyYXJ5IChETEwpIHN1cHBvcnQKLS8vCi0jaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1dJTjMyX18pICYmICFkZWZpbmVkKFdJTjMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oImRlZmF1bHQiKSkpCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIF9fYXR0cmlidXRlX18oKF9fdmlzaWJpbGl0eV9fKCJkZWZhdWx0IikpKQotI2VuZGlmCi0KLS8vIAotLy8gVGhlIE5ETkJPT1NUX0ZBTExUSFJPVUdIIG1hY3JvIGNhbiBiZSB1c2VkIHRvIGFubm90YXRlIGltcGxpY2l0IGZhbGwtdGhyb3VnaCAKLS8vIGJldHdlZW4gc3dpdGNoIGxhYmVscy4gCi0vLyAKLSNpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMICYmIGRlZmluZWQoX19oYXNfd2FybmluZykgCi0jICBpZiBfX2hhc19mZWF0dXJlKGN4eF9hdHRyaWJ1dGVzKSAmJiBfX2hhc193YXJuaW5nKCItV2ltcGxpY2l0LWZhbGx0aHJvdWdoIikgCi0jICAgIGRlZmluZSBORE5CT09TVF9GQUxMVEhST1VHSCBbW2NsYW5nOjpmYWxsdGhyb3VnaF1dIAotIyAgZW5kaWYgCi0jZW5kaWYgCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfYXV0b190eXBlKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2VuZGlmCi0KLSNpZiAhKGRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pIHx8IF9fY3BsdXNwbHVzID49IDIwMTEwM0wpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfY29uc3RleHByKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfZGVjbHR5cGUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2RlY2x0eXBlX2luY29tcGxldGVfcmV0dXJuX3R5cGVzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9kZWZhdWx0ZWRfZnVuY3Rpb25zKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2RlbGV0ZWRfZnVuY3Rpb25zKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9leHBsaWNpdF9jb252ZXJzaW9ucykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfZGVmYXVsdF9mdW5jdGlvbl90ZW1wbGF0ZV9hcmdzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfZ2VuZXJhbGl6ZWRfaW5pdGlhbGl6ZXJzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9sYW1iZGFzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2xvY2FsX3R5cGVfdGVtcGxhdGVfYXJncykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9ub2V4Y2VwdCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfbnVsbHB0cikKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9yYW5nZV9mb3IpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9yYXdfc3RyaW5nX2xpdGVyYWxzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfZ2VuZXJhbGl6ZWRfaW5pdGlhbGl6ZXJzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9ydmFsdWVfcmVmZXJlbmNlcykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfc3Ryb25nX2VudW1zKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfc3RhdGljX2Fzc2VydCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9hbGlhc190ZW1wbGF0ZXMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfdW5pY29kZV9saXRlcmFscykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF92YXJpYWRpY190ZW1wbGF0ZXMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF91c2VyX2xpdGVyYWxzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VTRVJfREVGSU5FRF9MSVRFUkFMUwotI2VuZGlmCi0KLS8vIENsYW5nIGFsd2F5cyBzdXBwb3J0cyB2YXJpYWRpYyBtYWNyb3MKLS8vIENsYW5nIGFsd2F5cyBzdXBwb3J0cyBleHRlcm4gdGVtcGxhdGVzCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09NUElMRVIKLSMgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUiAiQ2xhbmcgdmVyc2lvbiAiIF9fY2xhbmdfdmVyc2lvbl9fCi0jZW5kaWYKLQotLy8gTWFjcm8gdXNlZCB0byBpZGVudGlmeSB0aGUgQ2xhbmcgY29tcGlsZXIuCi0jZGVmaW5lIE5ETkJPT1NUX0NMQU5HIDEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29kZWdlYXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29kZWdlYXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDZjOWFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvZGVnZWFyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyIC0gMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgQ29kZUdlYXIgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1dJVEhfQ09ERUdFQVJfV0FSTklOR1MgKQotLy8gdGhlc2Ugd2FybmluZ3Mgb2NjdXIgZnJlcXVlbnRseSBpbiBvcHRpbWl6ZWQgdGVtcGxhdGUgY29kZQotIyBwcmFnbWEgd2FybiAtODAwNCAvLyB2YXIgYXNzaWduZWQgdmFsdWUsIGJ1dCBuZXZlciB1c2VkCi0jIHByYWdtYSB3YXJuIC04MDA4IC8vIGNvbmRpdGlvbiBhbHdheXMgdHJ1ZS9mYWxzZQotIyBwcmFnbWEgd2FybiAtODA2NiAvLyBkZWFkIGNvZGUgY2FuIG5ldmVyIGV4ZWN1dGUKLSMgcHJhZ21hIHdhcm4gLTgxMDQgLy8gc3RhdGljIG1lbWJlcnMgd2l0aCBjdG9ycyBub3QgdGhyZWFkc2FmZQotIyBwcmFnbWEgd2FybiAtODEwNSAvLyByZWZlcmVuY2UgbWVtYmVyIGluIGNsYXNzIHdpdGhvdXQgY3RvcnMKLSNlbmRpZgotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIDB4NjIxCi0jaWYgKF9fQ09ERUdFQVJDX18gPiAweDYyMSkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVsc2UKLSMgICAgIHByYWdtYSBtZXNzYWdlKCAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiKQotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyBDb2RlR2VhciBDKysgQnVpbGRlciAyMDA5Ci0jaWYgKF9fQ09ERUdFQVJDX18gPD0gMHg2MTMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9ORVNURURfREVSSVZBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19QUklWQVRFX0lOX0FHR1JFR0FURQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VTSU5HX0RFQ0xBUkFUSU9OX09WRVJMT0FEU19GUk9NX1RZUEVOQU1FX0JBU0UKLSAgIC8vIHdlIHNob3VsZG4ndCByZWFsbHkgbmVlZCB0aGlzIC0gYnV0IHRvbyBtYW55IHRoaW5ncyBjaG9rZQotICAgLy8gd2l0aG91dCBpdCwgdGhpcyBuZWVkcyBtb3JlIGludmVzdGlnYXRpb246Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSMgIGRlZmluZSBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRQotI2VuZGlmCi0KLS8vIENvZGVHZWFyIEMrKyBCdWlsZGVyIDIwMTAKLSNpZiAoX19DT0RFR0VBUkNfXyA8PSAweDYyMSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19UWVBFTkFNRV9XSVRIX0NUT1IgICAgLy8gQ2Fubm90IHVzZSB0eXBlbmFtZSBrZXl3b3JkIHdoZW4gbWFraW5nIHRlbXBvcmFyaWVzIG9mIGEgZGVwZW5kYW50IHR5cGUKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19ORVNURURfRlJJRU5EU0hJUCAgICAgLy8gVEMxIGdpdmVzIG5lc3RlZCBjbGFzc2VzIGFjY2VzcyByaWdodHMgYXMgYW55IG90aGVyIG1lbWJlcgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0vLyBUZW1wb3JhcnkgaGFjaywgdW50aWwgc3BlY2lmaWMgTVBMIHByZXByb2Nlc3NlZCBoZWFkZXJzIGFyZSBnZW5lcmF0ZWQKLSMgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLS8vIENvZGVHZWFyIGhhcyBub3QgeWV0IGNvbXBsZXRlbHkgaW1wbGVtZW50ZWQgdmFsdWUtaW5pdGlhbGl6YXRpb24sIGZvcgotLy8gZXhhbXBsZSBmb3IgYXJyYXkgdHlwZXMsIGFzIEkgcmVwb3J0ZWQgaW4gMjAxMDogRW1iYXJjYWRlcm8gUmVwb3J0IDgzNzUxLAotLy8gIlZhbHVlLWluaXRpYWxpemF0aW9uOiBhcnJheXMgc2hvdWxkIGhhdmUgZWFjaCBlbGVtZW50IHZhbHVlLWluaXRpYWxpemVkIiwKLS8vIGh0dHA6Ly9xYy5lbWJhcmNhZGVyby5jb20vd2MvcWNtYWluLmFzcHg/ZD04Mzc1MQotLy8gTGFzdCBjaGVja2VkIHZlcnNpb246IEVtYmFyY2FkZXJvIEMrKyA2LjIxCi0vLyBTZWUgYWxzbzogaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L3ZhbHVlX2luaXQuaHRtI2NvbXBpbGVyX2lzc3VlcwotLy8gKE5pZWxzIERla2tlciwgTEtFQiwgQXByaWwgMjAxMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotCi0jICBpZiBkZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLSAgICAgIC8vIGZpeCBicm9rZW4gPGNzdHJpbmc+IHNvIHRoYXQgQm9vc3QudGVzdCB3b3JrczoKLSMgICAgIGluY2x1ZGUgPGNzdHJpbmc+Ci0jICAgICB1bmRlZiBzdHJjbXAKLSMgIGVuZGlmCi0gICAvLyBmaXggYnJva2VuIGVycm5vIGRlY2xhcmF0aW9uOgotIyAgaW5jbHVkZSA8ZXJybm8uaD4KLSMgIGlmbmRlZiBlcnJubwotIyAgICAgZGVmaW5lIGVycm5vIGVycm5vCi0jICBlbmRpZgotCi0jZW5kaWYKLS8vCi0vLyBDKysweCBtYWNyb3M6Ci0vLwotI2lmIChfX0NPREVHRUFSQ19fIDw9IDB4NjIwKQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9IQVNfU1RBVElDX0FTU0VSVAotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19DSEFSMTZfVAotI2RlZmluZSBORE5CT09TVF9IQVNfQ0hBUjMyX1QKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotLy8gI2RlZmluZSBORE5CT09TVF9IQVNfQUxJR05PRgotI2RlZmluZSBORE5CT09TVF9IQVNfREVDTFRZUEUKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BTCi0vLyAjZGVmaW5lIE5ETkJPT1NUX0hBU19SVkFMVUVfUkVGUwotI2RlZmluZSBORE5CT09TVF9IQVNfU0NPUEVEX0VOVU0KLS8vICNkZWZpbmUgTkROQk9PU1RfSEFTX1NUQVRJQ19BU1NFUlQKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1NURF9UWVBFX1RSQUlUUwotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLS8vCi0vLyBUUjEgbWFjcm9zOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9IQVNICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVFlQRV9UUkFJVFMKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9VTk9SREVSRURfTUFQCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVU5PUkRFUkVEX1NFVAotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19NQUNST19VU0VfRkFDRVQKLQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotCi0vLyBPbiBub24tV2luMzIgcGxhdGZvcm1zIGxldCB0aGUgcGxhdGZvcm0gY29uZmlnIGZpZ3VyZSB0aGlzIG91dDoKLSNpZmRlZiBfV0lOMzIKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNlbmRpZgotCi0vLwotLy8gX19pbnQ2NDoKLS8vCi0jaWYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotI2VuZGlmCi0vLwotLy8gY2hlY2sgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBzdXBwb3J0OgotLy8KLSNpZiAhZGVmaW5lZChfQ1BQVU5XSU5EKSAmJiAhZGVmaW5lZChORE5CT09TVF9DUFBVTldJTkQpICYmICFkZWZpbmVkKF9fRVhDRVBUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWENFUFRJT05TCi0jZW5kaWYKLS8vCi0vLyBhbGwgdmVyc2lvbnMgaGF2ZSBhIDxkaXJlbnQuaD46Ci0vLwotI2lmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSNlbmRpZgotLy8KLS8vIGFsbCB2ZXJzaW9ucyBzdXBwb3J0IF9fZGVjbHNwZWM6Ci0vLwotI2lmIGRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotLy8gY29uZmlnL3BsYXRmb3JtL3dpbjMyLmhwcCB3aWxsIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JULCBldGMuLCB1bmxlc3MgYWxyZWFkeSBkZWZpbmVkICAKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jZW5kaWYKLS8vCi0vLyBBQkkgZml4aW5nIGhlYWRlcnM6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9BQklfUFJFRklYCi0jICBkZWZpbmUgTkROQk9PU1RfQUJJX1BSRUZJWCAibmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3ByZWZpeC5ocHAiCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfQUJJX1NVRkZJWAotIyAgZGVmaW5lIE5ETkJPT1NUX0FCSV9TVUZGSVggIm5kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9zdWZmaXguaHBwIgotI2VuZGlmCi0vLwotLy8gRGlzYWJsZSBXaW4zMiBzdXBwb3J0IGluIEFOU0kgbW9kZToKLS8vCi0jICBwcmFnbWEgZGVmaW5lb25vcHRpb24gTkROQk9PU1RfRElTQUJMRV9XSU4zMiAtQQotLy8KLS8vIE1TVkMgY29tcGF0aWJpbGl0eSBtb2RlIGRvZXMgc29tZSBuYXN0eSB0aGluZ3M6Ci0vLyBUT0RPOiBsb29rIHVwIGlmIHRoaXMgZG9lc24ndCBhcHBseSB0byB0aGUgd2hvbGUgMTJ4eCByYW5nZQotLy8KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPD0gMTIwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiQ29kZUdlYXIgQysrIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX19DT0RFR0VBUkNfXykKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tZWF1LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbWVhdS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMzhiZTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tZWF1LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBDb21lYXUgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIgotCi0jaWYgKF9fQ09NT19WRVJTSU9OX18gPD0gNDI0NSkKLQotIyAgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPD0gMTMwMAotIyAgICAgaWYgX01TQ19WRVIgPiAxMDAKLSAgICAgICAgIC8vIG9ubHkgc2V0IHRoaXMgaW4gbm9uLXN0cmljdCBtb2RlOgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotCi0vLyBWb2lkIHJldHVybnMgZG9uJ3Qgd29yayB3aGVuIGVtdWxhdGluZyBWQyA2IChQZXRlciBEaW1vdikKLS8vIFRPRE86IGxvb2sgdXAgaWYgdGhpcyBkb2Vzbid0IGFwcGx5IHRvIHRoZSB3aG9sZSAxMnh4IHJhbmdlCi0jICBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxMzAwKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotIyAgZW5kaWYKLQotI2VuZGlmICAvLyB2ZXJzaW9uIDQyNDUKLQotLy8KLS8vIGVuYWJsZSBfX2ludDY0IHN1cHBvcnQgaW4gVkMgZW11bGF0aW9uIG1vZGUKLS8vCi0jICBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTVNfSU5UNjQKLSMgIGVuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkNvbWVhdSBjb21waWxlciB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fQ09NT19WRVJTSU9OX18pCi0KLS8vCi0vLyB2ZXJzaW9ucyBjaGVjazoKLS8vIHdlIGRvbid0IGtub3cgQ29tZWF1IHByaW9yIHRvIHZlcnNpb24gNDI0NToKLSNpZiBfX0NPTU9fVkVSU0lPTl9fIDwgNDI0NQotIyAgZXJyb3IgIkNvbXBpbGVyIG5vdCBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotI2VuZGlmCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIDQyNDU6Ci0jaWYgKF9fQ09NT19WRVJTSU9OX18gPiA0MjQ1KQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21tb25fZWRnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTE4MWFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hcmt1cyBTY2hvZXBmbGluIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLwotLy8gT3B0aW9ucyBjb21tb24gdG8gYWxsIGVkZyBiYXNlZCBjb21waWxlcnMuCi0vLwotLy8gVGhpcyBpcyBpbmNsdWRlZCBmcm9tIHdpdGhpbiB0aGUgaW5kaXZpZHVhbCBjb21waWxlciBtaW5pLWNvbmZpZ3MuCi0KLSNpZm5kZWYgIF9fRURHX1ZFUlNJT05fXwotIyAgZXJyb3IgVGhpcyBmaWxlIHJlcXVpcmVzIHRoYXQgX19FREdfVkVSU0lPTl9fIGJlIGRlZmluZWQuCi0jZW5kaWYKLQotI2lmIChfX0VER19WRVJTSU9OX18gPD0gMjM4KQotIyAgIGRlZmluZSBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotI2VuZGlmCi0KLSNpZiAoX19FREdfVkVSU0lPTl9fIDw9IDI0MCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0jZW5kaWYKLQotI2lmIChfX0VER19WRVJTSU9OX18gPD0gMjQxKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQKQotIyAgIGRlZmluZSBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQCi0jZW5kaWYKLQotI2lmIChfX0VER19WRVJTSU9OX18gPD0gMjQ0KSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9URU1QTEFURVMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1RFTVBMQVRFUwotI2VuZGlmIAotCi0jaWYgKF9fRURHX1ZFUlNJT05fXyA8IDMwMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QpCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jZW5kaWYgCi0KLSNpZiAoX19FREdfVkVSU0lPTl9fIDw9IDMwMykgJiYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETCkKLSMgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETAotI2VuZGlmIAotCi0vLyBTZWUgYWxzbyBrYWkuaHBwIHdoaWNoIGNoZWNrcyBhIEthaS1zcGVjaWZpYyBzeW1ib2wgZm9yIEVICi0jIGlmICFkZWZpbmVkKF9fS0NDKSAmJiAhZGVmaW5lZChfX0VYQ0VQVElPTlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotIyBlbmRpZgotCi0jIGlmICFkZWZpbmVkKF9fTk9fTE9OR19MT05HKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSMgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0xPTkdfTE9ORwotIyBlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBhYm92ZSBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0vLwotI2lmIChfX0VER19WRVJTSU9OX18gPCAzMTApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jZW5kaWYKLSNpZiAoX19FREdfVkVSU0lPTl9fIDw9IDMxMCkKLS8vIE5vIHN1cHBvcnQgZm9yIGluaXRpYWxpemVyIGxpc3RzCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNlbmRpZgotI2lmIChfX0VER19WRVJTSU9OX18gPCA0MDApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLSNpZmRlZiBjX3BsdXNwbHVzCi0vLyBFREcgaGFzICJsb25nIGxvbmciIGluIG5vbi1zdHJpY3QgbW9kZQotLy8gSG93ZXZlciwgc29tZSBsaWJyYXJpZXMgaGF2ZSBpbnN1ZmZpY2llbnQgImxvbmcgbG9uZyIgc3VwcG9ydAotLy8gI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbXBhcV9jeHguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tcGFxX2N4eC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmOGI1ZTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tcGFxX2N4eC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFRydTY0IEMrKyBjb21waWxlciBzZXR1cCAobm93IEhQKToKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiSFAgVHJ1NjQgQysrICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fREVDQ1hYX1ZFUikKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21tb25fZWRnLmhwcCIKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gTm90aGluZyB0byBkbyBoZXJlPwotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY3JheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jcmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E4NjExOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jcmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDExLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBHcmVlbmhpbGxzIEMgY29tcGlsZXIgc2V0dXA6Ci0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkNyYXkgQyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9SRUxFQVNFKQotCi0jaWYgX1JFTEVBU0UgPCA3Ci0jICBlcnJvciAiQm9vc3QgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIENyYXkgY29tcGlsZXJzIHByaW9yIHRvIHZlcnNpb24gNywgcGxlYXNlIHRyeSB0aGUgY29uZmlndXJlIHNjcmlwdC4iCi0jZW5kaWYKLQotLy8KLS8vIENoZWNrIHRoaXMgaXMgYSByZWNlbnQgRURHIGJhc2VkIGNvbXBpbGVyLCBvdGhlcndpc2Ugd2UgZG9uJ3Qgc3VwcG9ydCBpdCBoZXJlOgotLy8KLSNpZm5kZWYgX19FREdfVkVSU0lPTl9fCi0jICBlcnJvciAiVW5zdXBwb3J0ZWQgQ3JheSBjb21waWxlciwgcGxlYXNlIHRyeSBydW5uaW5nIHRoZSBjb25maWd1cmUgc2NyaXB0LiIKLSNlbmRpZgotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIgotCi0vLwotLy8gQ3JheSBwZWN1bGlhcml0aWVzLCBwcm9iYWJseSB2ZXJzaW9uIDcgc3BlY2lmaWM6Ci0vLwotI3VuZGVmIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jdW5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9IQVNfTlJWTwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX05SVk8KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLS8vI2RlZmluZSBORE5CT09TVF9CQ0JfUEFSVElBTF9TUEVDSUFMSVpBVElPTl9CVUcKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9ESVNBQkxFX1NURF9GUENMQVNTSUZZCi0vLyNkZWZpbmUgTkROQk9PU1RfSEFTX0ZQQ0xBU1NJRlkKLQotI2RlZmluZSBORE5CT09TVF9TUF9VU0VfUFRIUkVBRFMgCi0jZGVmaW5lIE5ETkJPT1NUX0FDX1VTRV9QVEhSRUFEUyAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZGlnaXRhbG1hcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZGlnaXRhbG1hcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWNiM2I3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2RpZ2l0YWxtYXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyAgQ29weXJpZ2h0IChDKSBDaHJpc3RvZiBNZWVyd2FsZCAyMDAzCi0vLyAgQ29weXJpZ2h0IChDKSBEYW4gV2F0a2lucyAyMDAzCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIERpZ2l0YWwgTWFycyBDKysgY29tcGlsZXIgc2V0dXA6Ci0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSIF9fRE1DX1ZFUlNJT05fU1RSSU5HX18KLQotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19QUkFHTUFfT05DRQotCi0jaWYgKF9fRE1DX18gPD0gMHg4MzMpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwKLSNkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX05FRURTX1RPS0VOX1BBU1RJTkdfT1BfRk9SX1RPS0VOU19KVVhUQVBPU0lORwotI2RlZmluZSBORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMKLSNlbmRpZgotI2lmIChfX0RNQ19fIDw9IDB4ODQwKSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKQotI2RlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotI2RlZmluZSBORE5CT09TVF9OT19VTlJFQUNIQUJMRV9SRVRVUk5fREVURUNUSU9OCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotI2RlZmluZSBORE5CT09TVF9OT19VU0lOR19URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jZW5kaWYKLQotLy8KLS8vIGhhcyBtYWNyb3M6Ci0jaWYgKF9fRE1DX18gPj0gMHg4NDApCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotI2RlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1dJTlRIUkVBRFMKLSNlbmRpZgotCi0jaWYgKF9fRE1DX18gPj0gMHg4NDcpCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotI2RlZmluZSBORE5CT09TVF9IQVNfTE9HMVAKLSNlbmRpZgotCi0vLwotLy8gSXMgdGhpcyByZWFsbHkgdGhlIGJlc3Qgd2F5IHRvIGRldGVjdCB3aGV0aGVyIHRoZSBzdGQgbGliIGlzIGluIG5hbWVzcGFjZSBzdGQ/Ci0vLwotI2lmZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNlbmRpZgotI2lmICFkZWZpbmVkKF9fU1RMX0lNUE9SVF9WRU5ET1JfQ1NURCkgJiYgIWRlZmluZWQoX1NUTFBfSU1QT1JUX1ZFTkRPUl9DU1REKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jZW5kaWYKLQotCi0vLyBjaGVjayBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIHN1cHBvcnQ6Ci0jaWYgIWRlZmluZWQoX0NQUFVOV0lORCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWENFUFRJT05TCi0jZW5kaWYKLQotLy8KLS8vIEMrKzB4IGZlYXR1cmVzCi0vLwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLSNpZiAoX19ETUNfXyA8IDB4ODEyKQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSNlbmRpZgotCi0jaWYgX19ETUNfXyA8IDB4ODAwCi0jZXJyb3IgIkNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQgb3IgY29uZmlndXJlZCAtIHBsZWFzZSByZWNvbmZpZ3VyZSIKLSNlbmRpZgotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbiBpcyAuLi46Ci0jaWYgKF9fRE1DX18gPiAweDg0OCkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9nY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmQ1MTMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgU3luZ2UgVG9kbyAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBHTlUgQysrIGNvbXBpbGVyIHNldHVwLgotCi0vLwotLy8gRGVmaW5lIE5ETkJPT1NUX0dDQyBzbyB3ZSBrbm93IHRoaXMgaXMgInJlYWwiIEdDQyBhbmQgbm90IHNvbWUgcHJldGVuZGVyOgotLy8KLSNpZiAhZGVmaW5lZChfX0NVREFDQ19fKQotI2RlZmluZSBORE5CT09TVF9HQ0MgKF9fR05VQ19fICogMTAwMDAgKyBfX0dOVUNfTUlOT1JfXyAqIDEwMCArIF9fR05VQ19QQVRDSExFVkVMX18pCi0jZW5kaWYKLQotI2lmIF9fR05VQ19fIDwgMwotIyAgIGlmIF9fR05VQ19NSU5PUl9fID09IDkxCi0gICAgICAgLy8gZWdjcyAxLjEgd29uJ3QgcGFyc2Ugc2hhcmVkX3B0ci5ocHAgd2l0aG91dCB0aGlzOgotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19BVVRPX1BUUgotIyAgIGVuZGlmCi0jICAgaWYgX19HTlVDX01JTk9SX18gPCA5NQotICAgICAgLy8KLSAgICAgIC8vIFByaW9yIHRvIGdjYyAyLjk1IG1lbWJlciB0ZW1wbGF0ZXMgb25seSBwYXJ0bHkKLSAgICAgIC8vIHdvcmsgLSBkZWZpbmUgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotICAgICAgLy8gaW5zdGVhZCBzaW5jZSBpbmxpbmUgbWVtYmVyIHRlbXBsYXRlcyBtb3N0bHkgd29yay4KLSAgICAgIC8vCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUwotIyAgICAgaWYgX19HTlVDX01JTk9SX18gPj0gOQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jICAgaWYgX19HTlVDX01JTk9SX18gPCA5NgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotIyAgIGVuZGlmCi0KLSMgICBpZiBfX0dOVUNfTUlOT1JfXyA8PSA5NwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfREVDTEFSQVRJT05fT1ZFUkxPQURTX0ZST01fVFlQRU5BTUVfQkFTRQotIyAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotLy8gVmFyaWFkaWMgbWFjcm9zIGRvIG5vdCBleGlzdCBmb3IgZ2NjIHZlcnNpb25zIGJlZm9yZSAzLjAKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jZWxpZiBfX0dOVUNfXyA9PSAzCi0jICBpZiBkZWZpbmVkIChfX1BBVEhTQ0FMRV9fKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICBlbmRpZgotICAgLy8KLSAgIC8vIGdjYy0zLnggcHJvYmxlbXM6Ci0gICAvLwotICAgLy8gQnVnIHNwZWNpZmljIHRvIGdjYyAzLjEgYW5kIDMuMjoKLSAgIC8vCi0jICBpZiAoKF9fR05VQ19NSU5PUl9fID09IDEpIHx8IChfX0dOVUNfTUlOT1JfXyA9PSAyKSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMKLSMgIGVuZGlmCi0jICBpZiBfX0dOVUNfTUlOT1JfXyA8IDQKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgZW5kaWYKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUKLSNlbmRpZgotI2lmIF9fR05VQ19fIDwgNAotLy8KLS8vIEFsbCBwcm9ibGVtcyB0byBnY2MtMy54IGFuZCBlYXJsaWVyIGhlcmU6Ci0vLwotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSMgIGlmZGVmIF9fT1BFTjY0X18KLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWYgX19HTlVDX18gPCA0IHx8ICggX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDQgKQotLy8gUHJldmlvdXMgdmVyc2lvbnMgb2YgR0NDIGRpZCBub3QgY29tcGxldGVseSBpbXBsZW1lbnQgdmFsdWUtaW5pdGlhbGl6YXRpb246Ci0vLyBHQ0MgQnVnIDMwMTExLCAiVmFsdWUtaW5pdGlhbGl6YXRpb24gb2YgUE9EIGJhc2UgY2xhc3MgZG9lc24ndCBpbml0aWFsaXplCi0vLyBtZW1iZXJzIiwgcmVwb3J0ZWQgYnkgSm9uYXRoYW4gV2FrZWx5IGluIDIwMDYsCi0vLyBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTMwMTExIChmaXhlZCBmb3IgR0NDIDQuNCkKLS8vIEdDQyBCdWcgMzM5MTYsICJEZWZhdWx0IGNvbnN0cnVjdG9yIGZhaWxzIHRvIGluaXRpYWxpemUgYXJyYXkgbWVtYmVycyIsCi0vLyByZXBvcnRlZCBieSBNaWNoYWVsIEVsaXphYmV0aCBDaGFzdGFpbiBpbiAyMDA3LAotLy8gaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zMzkxNiAoZml4ZWQgZm9yIEdDQyA0LjIuNCkKLS8vIFNlZSBhbHNvOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvdmFsdWVfaW5pdC5odG0jY29tcGlsZXJfaXNzdWVzCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NPTVBMRVRFX1ZBTFVFX0lOSVRJQUxJWkFUSU9OCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKF9fRVhDRVBUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSNlbmRpZgotCi0KLS8vCi0vLyBUaHJlYWRpbmcgc3VwcG9ydDogVHVybiB0aGlzIG9uIHVuY29uZGl0aW9uYWxseSBoZXJlIChleGNlcHQgZm9yCi0vLyB0aG9zZSBwbGF0Zm9ybXMgd2hlcmUgd2UgY2FuIGtub3cgZm9yIHN1cmUpLiBJdCB3aWxsIGdldCB0dXJuZWQgb2ZmIGFnYWluCi0vLyBsYXRlciBpZiBubyB0aHJlYWRpbmcgQVBJIGlzIGRldGVjdGVkLgotLy8KLSNpZiAhZGVmaW5lZChfX01JTkdXMzJfXykgJiYgIWRlZmluZWQobGludXgpICYmICFkZWZpbmVkKF9fbGludXgpICYmICFkZWZpbmVkKF9fbGludXhfXykKLSMgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYgCi0KLS8vCi0vLyBnY2MgaGFzICJsb25nIGxvbmciCi0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0KLS8vCi0vLyBnY2MgaW1wbGVtZW50cyB0aGUgbmFtZWQgcmV0dXJuIHZhbHVlIG9wdGltaXphdGlvbiBzaW5jZSB2ZXJzaW9uIDMuMQotLy8KLSNpZiBfX0dOVUNfXyA+IDMgfHwgKCBfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fID49IDEgKQotI2RlZmluZSBORE5CT09TVF9IQVNfTlJWTwotI2VuZGlmCi0KLS8vCi0vLyBEeW5hbWljIHNoYXJlZCBvYmplY3QgKERTTykgYW5kIGR5bmFtaWMtbGluayBsaWJyYXJ5IChETEwpIHN1cHBvcnQKLS8vCi0jaWYgX19HTlVDX18gPj0gNAotIyAgaWYgKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChXSU4zMikpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCi0gICAgIC8vIEFsbCBXaW4zMiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMsIGluY2x1ZGluZyA2NC1iaXQgV2luZG93cyBhbmQgTWluR1csIGRlZmluZSAKLSAgICAgLy8gX1dJTjMyIG9yIG9uZSBvZiBpdHMgdmFyaWFudCBzcGVsbGluZ3MuIE5vdGUgdGhhdCBDeWd3aW4gaXMgYSBQT1NJWCBlbnZpcm9ubWVudCwKLSAgICAgLy8gc28gZG9lcyBub3QgZGVmaW5lIF9XSU4zMiBvciBpdHMgdmFyaWFudHMuCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfREVDTFNQRUMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgX19hdHRyaWJ1dGVfXygoZGxsZXhwb3J0KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSMgIGVuZGlmCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSNlbHNlCi0vLyBjb25maWcvcGxhdGZvcm0vd2luMzIuaHBwIHdpbGwgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQsIGV0Yy4sIHVubGVzcyBhbHJlYWR5IGRlZmluZWQgIAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSNlbmRpZgotCi0vLwotLy8gUlRUSSBhbmQgdHlwZWluZm8gZGV0ZWN0aW9uIGlzIHBvc3NpYmxlIHBvc3QgZ2NjLTQuMzoKLS8vCi0jaWYgX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA+PSA0MDMKLSMgIGlmbmRlZiBfX0dYWF9SVFRJCi0jICAgICBpZm5kZWYgTkROQk9PU1RfTk9fVFlQRUlECi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVFlQRUlECi0jICAgICBlbmRpZgotIyAgICAgaWZuZGVmIE5ETkJPT1NUX05PX1JUVEkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9OT19SVFRJCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gUmVjZW50IEdDQyB2ZXJzaW9ucyBoYXZlIF9faW50MTI4IHdoZW4gaW4gNjQtYml0IG1vZGUuCi0vLwotLy8gV2UgZGlzYWJsZSB0aGlzIGlmIHRoZSBjb21waWxlciBpcyByZWFsbHkgbnZjYyBhcyBpdAotLy8gZG9lc24ndCBhY3R1YWxseSBzdXBwb3J0IF9faW50MTI4IGFzIG9mIENVREFfVkVSU0lPTj01MDAwCi0vLyBldmVuIHRob3VnaCBpdCBkZWZpbmVzIF9fU0laRU9GX0lOVDEyOF9fLiAgCi0vLyBTZWUgaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0LzgwNDgKLS8vIE9ubHkgcmUtZW5hYmxlIHRoaXMgZm9yIG52Y2MgaWYgeW91J3JlIGFic29sdXRlbHkgc3VyZQotLy8gb2YgdGhlIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggaXQncyBzdXBwb3J0ZWQ6Ci0vLwotI2lmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pICYmICFkZWZpbmVkKF9fQ1VEQUNDX18pCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0lOVDEyOAotI2VuZGlmCi0KLS8vIEMrKzB4IGZlYXR1cmVzIGluIDQuMy5uIGFuZCBsYXRlcgotLy8KLSNpZiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID4gMikpICYmIGRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0vLyBDKysweCBmZWF0dXJlcyBhcmUgb25seSBlbmFibGVkIHdoZW4gLXN0ZD1jKysweCBvciAtc3RkPWdudSsrMHggYXJlCi0vLyBwYXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgd2hpY2ggaW4gdHVybiBkZWZpbmVzCi0vLyBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXy4KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUlZBTFVFX1JFRlMKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU1RBVElDX0FTU0VSVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19WQVJJQURJQ19UTVBMCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0KLS8vIFZhcmlhZGljIHRlbXBsYXRlcyBjb21waWxlcjogCi0vLyAgIGh0dHA6Ly93d3cuZ2VuZXJpYy1wcm9ncmFtbWluZy5vcmcvfmRncmVnb3IvY3BwL3ZhcmlhZGljLXRlbXBsYXRlcy5odG1sCi0jICBpZiBkZWZpbmVkKF9fVkFSSUFESUNfVEVNUExBVEVTKSB8fCAoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA0KSAmJiBkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WQVJJQURJQ19UTVBMCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8gQysrMHggZmVhdHVyZXMgaW4gNC40Lm4gYW5kIGxhdGVyCi0vLwotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDQpIHx8ICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotI2VuZGlmCi0KLSNpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA1KQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZW5kaWYKLQotLy8gQysrMHggZmVhdHVyZXMgaW4gNC41LjAgYW5kIGxhdGVyCi0vLwotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpIHx8ICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZW5kaWYKLQotLy8gQysrMHggZmVhdHVyZXMgaW4gNC41LjEgYW5kIGxhdGVyCi0vLwotI2lmIChfX0dOVUNfXyoxMDAwMCArIF9fR05VQ19NSU5PUl9fKjEwMCArIF9fR05VQ19QQVRDSExFVkVMX18gPCA0MDUwMSkgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0vLyBzY29wZWQgZW51bXMgaGF2ZSBhIHNlcmlvdXMgYnVnIGluIDQuNC4wLCBzbyBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TIGJlZm9yZSA0LjUuMQotLy8gU2VlIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MzgwNjQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNlbmRpZgotCi0vLyBDKysweCBmZWF0dXJlcyBpbiA0LjYubiBhbmQgbGF0ZXIKLS8vCi0jaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNikgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2VuZGlmCi0KLS8vIEMrKzB4IGZlYXR1cmVzIGluIDQuNy5uIGFuZCBsYXRlcgotLy8KLSNpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3KSB8fCAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0jZW5kaWYKLQotLy8gQysrMHggZmVhdHVyZXMgaW4gNC44LjEgYW5kIGxhdGVyCi0vLwotI2lmIChfX0dOVUNfXyoxMDAwMCArIF9fR05VQ19NSU5PUl9fKjEwMCArIF9fR05VQ19QQVRDSExFVkVMX18gPCA0MDgwMSkgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTVBJTEVSCi0jICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkdOVSBDKysgdmVyc2lvbiAiIF9fVkVSU0lPTl9fCi0jZW5kaWYKLQotLy8gQ29uY2VwdEdDQyBjb21waWxlcjoKLS8vICAgaHR0cDovL3d3dy5nZW5lcmljLXByb2dyYW1taW5nLm9yZy9zb2Z0d2FyZS9Db25jZXB0R0NDLwotI2lmZGVmIF9fR1hYX0NPTkNFUFRTX18KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfQ09OQ0VQVFMKLSMgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUiAiQ29uY2VwdEdDQyB2ZXJzaW9uICIgX19WRVJTSU9OX18KLSNlbmRpZgotCi0vLyB2ZXJzaW9ucyBjaGVjazoKLS8vIHdlIGRvbid0IGtub3cgZ2NjIHByaW9yIHRvIHZlcnNpb24gMi45MDoKLSNpZiAoX19HTlVDX18gPT0gMikgJiYgKF9fR05VQ19NSU5PUl9fIDwgOTApCi0jICBlcnJvciAiQ29tcGlsZXIgbm90IGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gaXMgNC42IChQcmUtcmVsZWFzZSk6Ci0jaWYgKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPiA2KSkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVsc2UKLS8vIHdlIGRvbid0IGVtaXQgd2FybmluZ3MgaGVyZSBhbnltb3JlIHNpbmNlIHRoZXJlIGFyZSBubyBkZWZlY3QgbWFjcm9zIGRlZmluZWQgZm9yCi0vLyBnY2MgcG9zdCAzLjQsIHNvIGFueSBmYWlsdXJlcyBhcmUgZ2NjIHJlZ3Jlc3Npb25zLi4uCi0vLyMgICAgIHdhcm5pbmcgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djY194bWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ2NjX3htbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZjlmNzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ2NjX3htbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgR0NDLVhNTCBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSMgIGlmICFkZWZpbmVkKF9fR0NDWE1MX0dOVUNfXykgfHwgKChfX0dDQ1hNTF9HTlVDX18gPD0gMykgJiYgKF9fR0NDWE1MX0dOVUNfTUlOT1JfXyA8PSAzKSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgZW5kaWYKLQotLy8KLS8vIFRocmVhZGluZyBzdXBwb3J0OiBUdXJuIHRoaXMgb24gdW5jb25kaXRpb25hbGx5IGhlcmUgKGV4Y2VwdCBmb3IKLS8vIHRob3NlIHBsYXRmb3JtcyB3aGVyZSB3ZSBjYW4ga25vdyBmb3Igc3VyZSkuIEl0IHdpbGwgZ2V0IHR1cm5lZCBvZmYgYWdhaW4KLS8vIGxhdGVyIGlmIG5vIHRocmVhZGluZyBBUEkgaXMgZGV0ZWN0ZWQuCi0vLwotI2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQobGludXgpICYmICFkZWZpbmVkKF9fbGludXgpICYmICFkZWZpbmVkKF9fbGludXhfXykKLSMgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYgCi0KLS8vCi0vLyBnY2MgaGFzICJsb25nIGxvbmciCi0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0KLS8vIEMrKzB4IGZlYXR1cmVzOgotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMgIAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkdDQy1YTUwgQysrIHZlcnNpb24gIiBfX0dDQ1hNTF9fCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ3JlZW5oaWxscy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ncmVlbmhpbGxzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE2ODk3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ncmVlbmhpbGxzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBHcmVlbmhpbGxzIEMrKyBjb21waWxlciBzZXR1cDoKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiR3JlZW5oaWxscyBDKysgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX2docykKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21tb25fZWRnLmhwcCIKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gd2UgZG9uJ3Qgc3VwcG9ydCBHcmVlbmhpbGxzIHByaW9yIHRvIHZlcnNpb24gMDoKLSNpZiBfX2docyA8IDAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gaXMgMDoKLSNpZiAoX19naHMgPiAwKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2hwX2FjYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ocF9hY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODQzOGU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2hwX2FjYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBUb29uIEtuYXBlbiAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEJvcmlzIEd1YmVua28gMjAwNiAtIDIwMDcuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgSFAgYUNDIEMrKyBjb21waWxlciBzZXR1cDoKLQotI2lmIGRlZmluZWQoX19FREdfXykKLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tbW9uX2VkZy5ocHAiCi0jZW5kaWYKLQotI2lmIChfX0hQX2FDQyA8PSAzMzEwMCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UKLSMgIGlmICFkZWZpbmVkKF9OQU1FU1BBQ0VfU1REKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmIChfX0hQX2FDQyA8PSAzMzMwMCkKLS8vIG1lbWJlciB0ZW1wbGF0ZXMgYXJlIHN1ZmZpY2llbnRseSBicm9rZW4gdGhhdCB3ZSBkaXNhYmxlIHRoZW0gZm9yIG5vdwotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUwotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fREVQRU5ERU5UX05FU1RFRF9ERVJJVkFUSU9OUwotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfREVDTEFSQVRJT05fT1ZFUkxPQURTX0ZST01fVFlQRU5BTUVfQkFTRQotI2VuZGlmCi0KLSNpZiAoX19IUF9hQ0MgPD0gMzgwMDApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0jZW5kaWYKLQotI2lmIChfX0hQX2FDQyA+IDUwMDAwKSAmJiAoX19IUF9hQ0MgPCA2MDAwMCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1VOUkVBQ0hBQkxFX1JFVFVSTl9ERVRFQ1RJT04KLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1RFTVBMQVRFUwotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9UWVBFU19JTl9URU1QTEFURV9WQUxVRV9QQVJBTUVURVJTCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSNlbmRpZiAKLQotLy8gb3B0aW9uYWwgZmVhdHVyZXMgcmF0aGVyIHRoYW4gZGVmZWN0czoKLSNpZiAoX19IUF9hQ0MgPj0gMzM5MDApCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfUEFSVElBTF9TVERfQUxMT0NBVE9SCi0jZW5kaWYKLQotI2lmIChfX0hQX2FDQyA+PSA1MDAwMCApICYmIChfX0hQX2FDQyA8PSA1MzgwMCApIHx8IChfX0hQX2FDQyA8IDMxMzAwICkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9LRVlXT1JECi0jZW5kaWYKLQotLy8gVGhpcyBtYWNybyBzaG91bGQgbm90IGJlIGRlZmluZWQgd2hlbiBjb21waWxpbmcgaW4gc3RyaWN0IGFuc2kKLS8vIG1vZGUsIGJ1dCwgY3VycmVudGx5LCB3ZSBkb24ndCBoYXZlIHRoZSBhYmlsaXR5IHRvIGRldGVybWluZQotLy8gd2hhdCBzdGFuZGFyZCBtb2RlIHdlIGFyZSBjb21waWxpbmcgd2l0aC4gU29tZSBmdXR1cmUgdmVyc2lvbgotLy8gb2YgYUNDNiBjb21waWxlciB3aWxsIHByb3ZpZGUgcHJlZGVmaW5lZCBtYWNyb3MgcmVmbGVjdGluZyB0aGUKLS8vIGNvbXBpbGF0aW9uIG9wdGlvbnMsIGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbW9kZS4KLSNpZiAoX19IUF9hQ0MgPj0gNjAwMDApIHx8ICgoX19IUF9hQ0MgPiAzODAwMCkgJiYgZGVmaW5lZChfX2hweHN0ZDk4KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkhQIGFDQyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fSFBfYUNDKQotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IEhQIGFDQyBwcmlvciB0byB2ZXJzaW9uIDMzMDAwOgotI2lmIF9fSFBfYUNDIDwgMzMwMDAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLQotLy8KLS8vIEV4dGVuZGVkIGNoZWNrcyBmb3Igc3VwcG9ydGluZyBhQ0Mgb24gUEEtUklTQwotI2lmIF9fSFBfYUNDID4gMzAwMDAgJiYgX19IUF9hQ0MgPCA1MDAwMAotIyAgaWYgX19IUF9hQ0MgPCAzODAwMAotICAgICAgLy8gdmVyc2lvbnMgcHJpb3IgdG8gdmVyc2lvbiBBLjAzLjgwIG5vdCBzdXBwb3J0ZWQKLSMgICAgIGVycm9yICJDb21waWxlciB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgLSB2ZXJzaW9uIEEuMDMuODAgb3IgaGlnaGVyIGlzIHJlcXVpcmVkIgotIyAgZWxpZiAhZGVmaW5lZChfX2hweHN0ZDk4KQotICAgICAgLy8gbXVzdCBjb21waWxlIHVzaW5nIHRoZSBvcHRpb24gK2hweHN0ZDk4IHdpdGggdmVyc2lvbiBBLjAzLjgwIGFuZCBhYm92ZQotIyAgICAgZXJyb3IgIkNvbXBpbGVyIG9wdGlvbiAnK2hweHN0ZDk4JyBpcyByZXF1aXJlZCBmb3IgcHJvcGVyIHN1cHBvcnQiCi0jICBlbmRpZiAvL1BBLVJJU0MKLSNlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBib29zdFxjb25maWdcc3VmZml4LmhwcCBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0vLwotI2lmICFkZWZpbmVkKF9fRURHX18pCi0KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotLyogCi0gIFNlZSBodHRwczovL2ZvcnVtczEzLml0cmMuaHAuY29tL3NlcnZpY2UvZm9ydW1zL3F1ZXN0aW9uYW5zd2VyLmRvP3RocmVhZElkPTE0NDMzMzEgYW5kCi0gICAgICBodHRwczovL2ZvcnVtczEzLml0cmMuaHAuY29tL3NlcnZpY2UvZm9ydW1zL3F1ZXN0aW9uYW5zd2VyLmRvP3RocmVhZElkPTE0NDM0MzYKLSovCi0KLSNpZiAoX19IUF9hQ0MgPCA2MjUwMCkgfHwgIWRlZmluZWQoSFBfQ1hYMHhfU09VUkNFKQotICAjZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2VuZGlmCi0KLSNlbmRpZgotCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGZvciBIUC1VWC9pYTY0IGlzIDYxMzAwCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gZm9yIFBBLVJJU0MgaXMgMzgwMDAKLSNpZiAoKF9fSFBfYUNDID4gNjEzMDApIHx8ICgoX19IUF9hQ0MgPiAzODAwMCkgJiYgZGVmaW5lZChfX2hweHN0ZDk4KSkpCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICBlcnJvciAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICBlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9pbnRlbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9pbnRlbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMTY4MzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvaW50ZWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLTguCi0vLyAgKEMpIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLgotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMS4KLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIgLSAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyIC0gMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEd1aWxsYXVtZSBNZWxxdWlvbmQgMjAwMiAtIDIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgTWFydGluIFdpbGxlIDIwMDMuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIEludGVsIGNvbXBpbGVyIHNldHVwOgotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIgotCi0jaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIF9fSU5URUxfQ09NUElMRVIKLSNlbGlmIGRlZmluZWQoX19JQ0wpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gX19JQ0wKLSNlbGlmIGRlZmluZWQoX19JQ0MpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gX19JQ0MKLSNlbGlmIGRlZmluZWQoX19FQ0MpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gX19FQ0MKLSNlbmRpZgotCi0vLyBGbGFncyBkZXRlcm1pbmVkIGJ5IGNvbXBhcmluZyBvdXRwdXQgb2YgJ2ljcGMgLWRNIC1FJyB3aXRoIGFuZCB3aXRob3V0ICctc3RkPWMrKzB4JwotI2lmICghKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkpICYmIGRlZmluZWQoX19TVERDX0hPU1RFRF9fKSAmJiAoX19TVERDX0hPU1RFRF9fICYmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSAxMjAwKSkpIHx8IGRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NQUDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfU1REQ1hYMFgKLSNlbmRpZgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxNjAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVMX1NURENYWDBYCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0lOVEVMX1NURENYWDBYCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJJbnRlbCBDKysgQysrMHggbW9kZSB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkludGVsIEMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKQotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVMIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OCi0KLSNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfV0lOIE5ETkJPT1NUX0lOVEVMCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVMX0xJTlVYIE5ETkJPT1NUX0lOVEVMCi0jZW5kaWYKLQotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA1MDApICYmIGRlZmluZWQoX01TQ19WRVIpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fRVhQTElDSVRfRlVOQ1RJT05fVEVNUExBVEVfQVJHVU1FTlRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfVEVNUExBVEVTCi0jZW5kaWYKLQotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA2MDApCi0KLSMgIGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8PSAxMzAwKSAvLyBhZGRlZCBjaGVjayBmb3IgPD0gVkMgNyAoUGV0ZXIgRGltb3YpCi0KLS8vIEJvb3N0IGxpYnJhcmllcyBhc3N1bWUgc3Ryb25nIHN0YW5kYXJkIGNvbmZvcm1hbmNlIHVubGVzcyBvdGhlcndpc2UKLS8vIGluZGljYXRlZCBieSBhIGNvbmZpZyBtYWNyby4gQXMgY29uZmlndXJlZCBieSBJbnRlbCwgdGhlIEVERyBmcm9udC1lbmQKLS8vIHJlcXVpcmVzIGNlcnRhaW4gY29tcGlsZXIgb3B0aW9ucyBiZSBzZXQgdG8gYWNoaWV2ZSB0aGF0IHN0cm9uZyBjb25mb3JtYW5jZS4KLS8vIFBhcnRpY3VsYXJseSAvUW9wdGlvbixjLC0tYXJnX2RlcF9sb29rdXAgKHJlcG9ydGVkIGJ5IEtpcmsgS2xvYmUgJiBUaG9tYXMgV2l0dCkKLS8vIGFuZCAvWmM6d2NoYXJfdCxmb3JTY29wZS4gU2VlIGJvb3N0LXJvb3QvdG9vbHMvYnVpbGQvaW50ZWwtd2luMzItdG9vbHMuamFtIGZvcgotLy8gZGV0YWlscyBhcyB0aGV5IGFwcGx5IHRvIHBhcnRpY3VsYXIgdmVyc2lvbnMgb2YgdGhlIGNvbXBpbGVyLiBXaGVuIHRoZQotLy8gY29tcGlsZXIgZG9lcyBub3QgcHJlZGVmaW5lIGEgbWFjcm8gaW5kaWNhdGluZyBpZiBhbiBvcHRpb24gaGFzIGJlZW4gc2V0LAotLy8gdGhpcyBjb25maWcgZmlsZSBzaW1wbHkgYXNzdW1lcyB0aGUgb3B0aW9uIGhhcyBiZWVuIHNldC4KLS8vIFRodXMgTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUCB3aWxsIG5vdCBiZSBkZWZpbmVkLCBldmVuIGlmCi0vLyB0aGUgY29tcGlsZXIgb3B0aW9uIGlzIG5vdCBlbmFibGVkLgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgIGVuZGlmCi0KLS8vIFZvaWQgcmV0dXJucywgNjQgYml0IGludGVncmFscyBkb24ndCB3b3JrIHdoZW4gZW11bGF0aW5nIFZDIDYgKFBldGVyIERpbW92KQotCi0jICBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPD0gMTIwMCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0jICBlbmRpZgotCi0jZW5kaWYKLQotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA3MTApICYmIGRlZmluZWQoX1dJTjMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1BPSU5URVJfVE9fTUVNQkVSX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNlbmRpZgotCi0vLyBTZWUgaHR0cDovL2FzcG4uYWN0aXZlc3RhdGUuY29tL0FTUE4vTWFpbC9NZXNzYWdlL2Jvb3N0LzE2MTQ4NjQKLSNpZiBORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8IDYwMAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0jZWxzZQotLy8gV2Ugc2hvdWxkIHRlc3QgdGhlIG1hY3JvIF9XQ0hBUl9UX0RFRklORUQgdG8gY2hlY2sgaWYgdGhlIGNvbXBpbGVyCi0vLyBzdXBwb3J0cyB3Y2hhcl90IG5hdGl2ZWx5LiAqQlVUKiB0aGVyZSBpcyBhIHByb2JsZW0gaGVyZTogdGhlIHN0YW5kYXJkCi0vLyBoZWFkZXJzIGRlZmluZSB0aGlzIG1hY3JvIGlmIHRoZXkgdHlwZWRlZiB3Y2hhcl90LiBBbnl3YXksIHdlJ3JlIGx1Y2t5Ci0vLyBiZWNhdXNlIHRoZXkgZGVmaW5lIGl0IHdpdGhvdXQgYSB2YWx1ZSwgd2hpbGUgSW50ZWwgQysrIGRlZmluZXMgaXQKLS8vIHRvIDEuIFNvIHdlIGNhbiBjaGVjayBpdHMgdmFsdWUgdG8gc2VlIGlmIHRoZSBtYWNybyB3YXMgZGVmaW5lZCBuYXRpdmVseQotLy8gb3Igbm90LgotLy8gVW5kZXIgVU5JWCwgdGhlIHNpdHVhdGlvbiBpcyBleGFjdGx5IHRoZSBzYW1lLCBidXQgdGhlIG1hY3JvIF9XQ0hBUl9UCi0vLyBpcyB1c2VkIGluc3RlYWQuCi0jICBpZiAoKF9XQ0hBUl9UX0RFRklORUQgKyAwKSA9PSAwKSAmJiAoKF9XQ0hBUl9UICsgMCkgPT0gMCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMKQotLy8KLS8vIEZpZ3VyZSBvdXQgd2hlbiBJbnRlbCBpcyBlbXVsYXRpbmcgdGhpcyBnY2MgYnVnCi0vLyAoQWxsIEludGVsIHZlcnNpb25zIHByaW9yIHRvIDkuMC4yNiwgYW5kIHZlcnNpb25zCi0vLyBsYXRlciB0aGFuIHRoYXQgaWYgdGhleSBhcmUgc2V0IHVwIHRvIGVtdWxhdGUgZ2NjIDMuMgotLy8gb3IgZWFybGllcik6Ci0vLwotIyAgaWYgKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPD0gMikpIHx8IChORE5CT09TVF9JTlRFTCA8IDkwMCkgfHwgKF9fSU5URUxfQ09NUElMRVJfQlVJTERfREFURSA8IDIwMDUwOTEyKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwKLSMgIGVuZGlmCi0jZW5kaWYKLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgNCkpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCAoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gPD0gMTIwMCkKLS8vIEdDQyBvciBWQyBlbXVsYXRpb246Ci0jZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2VuZGlmCi0vLwotLy8gVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhY3R1YWxseSBnb3QgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLS8vIHNldCBjb3JyZWN0bHksIGlmIHdlIGRvbid0IGRvIHRoaXMgbm93LCB3ZSB3aWxsIGdldCBlcnJvcnMgbGF0ZXIKLS8vIGluIHR5cGVfdHJhaXRzIGNvZGUgYW1vbmcgb3RoZXIgdGhpbmdzLCBnZXR0aW5nIHRoaXMgY29ycmVjdAotLy8gZm9yIHRoZSBJbnRlbCBjb21waWxlciBpcyBhY3R1YWxseSByZW1hcmthYmx5IGZyYWdpbGUgYW5kIHRyaWNreToKLS8vCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotI2luY2x1ZGUgPGN3Y2hhcj4KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGFzc2VydF9ub19pbnRyaW5zaWNfd2NoYXJfdDsKLXRlbXBsYXRlPD4gc3RydWN0IGFzc2VydF9ub19pbnRyaW5zaWNfd2NoYXJfdDx3Y2hhcl90PiB7IHR5cGVkZWYgdm9pZCB0eXBlOyB9OwotLy8gaWYgeW91IHNlZSBhbiBlcnJvciBoZXJlIHRoZW4geW91IG5lZWQgdG8gdW5zZXQgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLS8vIHdoZXJlIGl0IGlzIGRlZmluZWQgYWJvdmU6Ci10eXBlZGVmIGFzc2VydF9ub19pbnRyaW5zaWNfd2NoYXJfdDx1bnNpZ25lZCBzaG9ydD46OnR5cGUgYXNzZXJ0X25vX2ludHJpbnNpY193Y2hhcl90XzsKLSNlbHNlCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhc3NlcnRfaW50cmluc2ljX3djaGFyX3Q7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBhc3NlcnRfaW50cmluc2ljX3djaGFyX3Q8d2NoYXJfdD4ge307Ci0vLyBpZiB5b3Ugc2VlIGFuIGVycm9yIGhlcmUgdGhlbiBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1Qgb24gdGhlIGNvbW1hbmQgbGluZToKLXRlbXBsYXRlPD4gc3RydWN0IGFzc2VydF9pbnRyaW5zaWNfd2NoYXJfdDx1bnNpZ25lZCBzaG9ydD4ge307Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSKzAgPj0gMTAwMCkKLSMgIGlmIF9NU0NfVkVSID49IDEyMDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTVNfSU5UNjQKLSMgIGVuZGlmCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgIGRlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNlbGlmIGRlZmluZWQoX1dJTjMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIKLSNlbmRpZgotCi0vLyBJIGNoZWNrZWQgdmVyc2lvbiA2LjAgYnVpbGQgMDIwMzEyWiwgaXQgaW1wbGVtZW50cyB0aGUgTlJWTy4KLS8vIENvcnJlY3QgdGhpcyBhcyB5b3UgZmluZCBvdXQgd2hpY2ggdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIKLS8vIGltcGxlbWVudGVkIHRoZSBOUlZPIGZpcnN0LiAgKERhbmllbCBGcmV5KQotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA+PSA2MDApCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX05SVk8KLSNlbmRpZgotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IEludGVsIHByaW9yIHRvIHZlcnNpb24gNS4wOgotI2lmIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDwgNTAwCi0jICBlcnJvciAiQ29tcGlsZXIgbm90IHN1cHBvcnRlZCBvciBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotI2VuZGlmCi0KLS8vIEludGVsIG9uIE1hY09TIHJlcXVpcmVzCi0jaWYgZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKLSMgIGRlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNlbmRpZgotCi0vLyBJbnRlbCBvbiBBbHRpeCBJdGFuaXVtCi0jaWYgZGVmaW5lZChfX2l0YW5pdW1fXykgJiYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2VuZGlmCi0KLS8vCi0vLyBBbiBhdHRlbXB0IHRvIHZhbHVlLWluaXRpYWxpemUgYSBwb2ludGVyLXRvLW1lbWJlciBtYXkgdHJpZ2dlciBhbgotLy8gaW50ZXJuYWwgZXJyb3Igb24gSW50ZWwgPD0gMTEuMSAobGFzdCBjaGVja2VkIHZlcnNpb24pLCBhcyB3YXMgCi0vLyByZXBvcnRlZCBieSBKb2huIE1hZGRvY2ssIEludGVsIHN1cHBvcnQgaXNzdWUgNTg5ODMyLCBNYXkgMjAxMC4KLS8vIE1vcmVvdmVyLCBhY2NvcmRpbmcgdG8gdGVzdCByZXN1bHRzIGZyb20gSHVhbmctVmlzdGEteDg2XzMyX2ludGVsLAotLy8gaW50ZWwtdmM5LXdpbi0xMS4xIG1heSBsZWF2ZSBhIG5vbi1QT0QgYXJyYXkgdW5pbml0aWFsaXplZCwgaW4gc29tZSAKLS8vIGNhc2VzIHdoZW4gaXQgc2hvdWxkIGJlIHZhbHVlLWluaXRpYWxpemVkLgotLy8gKE5pZWxzIERla2tlciwgTEtFQiwgTWF5IDIwMTApCi0vLyBBcHBhcmVudGx5IEludGVsIDEyLjEgKGNvbXBpbGVyIHZlcnNpb24gbnVtYmVyIDk5OTkgISEpIGhhcyB0aGUgc2FtZSBpc3N1ZSAoY29tcGlsZXIgcmVncmVzc2lvbikuCi0jaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotIyAgaWYgKF9fSU5URUxfQ09NUElMRVIgPD0gMTExMCkgfHwgKF9fSU5URUxfQ09NUElMRVIgPT0gOTk5OSkgfHwgKGRlZmluZWQoX1dJTjMyKSAmJiAoX19JTlRFTF9DT01QSUxFUiA8IDE1MDApKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8KLS8vIER5bmFtaWMgc2hhcmVkIG9iamVjdCAoRFNPKSBhbmQgZHluYW1pYy1saW5rIGxpYnJhcnkgKERMTCkgc3VwcG9ydAotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCi0jZW5kaWYKLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8gICAgIC0gSUNDIGFkZGVkIHN0YXRpY19hc3NlcnQgaW4gMTEuMCAoZmlyc3QgdmVyc2lvbiB3aXRoIEMrKzB4IHN1cHBvcnQpCi0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfSU5URUxfU1REQ1hYMFgpCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotLy8KLS8vIFRoZXNlIHBhc3Mgb3VyIHRlc3QgY2FzZXMsIGJ1dCBhcmVuJ3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYWNjb3JkaW5nIHRvOgotLy8gaHR0cDovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9hcnRpY2xlcy9jMHgtZmVhdHVyZXMtc3VwcG9ydGVkLWJ5LWludGVsLWMtY29tcGlsZXIvCi0vLwotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLS8vIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0vLyMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSU5URUxfU1REQ1hYMFgpICYmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA+PSAxMjAwKQotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgLy8gRW5hYmxpbmcgdGhpcyBicmVha3MgRmlsZXN5c3RlbSBhbmQgRXhjZXB0aW9uIGxpYnJhcmllcwotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TICAvLyBkb2Vzbid0IHJlYWxseSB3b3JrISEKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZW5kaWYKLQotLy8gaWNsIFZlcnNpb24gMTIuMS4wLjIzMyBCdWlsZCAyMDExMDgxMSBhbmQgcG9zc2libHkgc29tZSBvdGhlciBidWlsZHMKLS8vIGhhZCBhbiBpbmNvcnJlY3QgX19JTlRFTF9DT01QSUxFUiB2YWx1ZSBvZiA5OTk5LiBJbnRlbCBzYXkgdGhpcyBoYXMgYmVlbiBmaXhlZC4gCi0jaWYgZGVmaW5lZChORE5CT09TVF9JTlRFTF9TVERDWFgwWCkgJiYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OID4gMTIwMCkKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSMgIHVuZGVmICBORE5CT09TVF9OT19TRklOQUVfRVhQUgotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLQotLy8gaHR0cDovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9hcnRpY2xlcy9jMHgtZmVhdHVyZXMtc3VwcG9ydGVkLWJ5LWludGVsLWMtY29tcGlsZXIvCi0vLyBjb250aW51ZXMgdG8gbGlzdCBzY29wZWQgZW51bSBzdXBwb3J0IGFzICJQYXJ0aWFsIiAKLS8vIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUyAKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDw9IDE3MDApCi0vLwotLy8gQWx0aG91Z2ggdGhlIEludGVsIGNvbXBpbGVyIGlzIGNhcGFibGUgb2Ygc3VwcG9ydGluZyB0aGVzZSwgaXQgYXBwZWFycyBub3QgdG8gaW4gTVNWQyBjb21wYXRpYmlsaXR5IG1vZGU6Ci0vLwotIyAgZGVmaW5lICBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lICBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSMgIGRlZmluZSAgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSMgIGRlZmluZSAgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotIyAgZGVmaW5lICBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZW5kaWYKLQotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8IDEyMDApCi0vLwotLy8gZmVudi5oIGFwcGVhcnMgbm90IHRvIHdvcmsgd2l0aCBJbnRlbCBwcmlvciB0byAxMi4wOgotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19GRU5WX0gKLSNlbmRpZgotCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uOgotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA+IDEyMDApCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICBlcnJvciAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICBlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0vLwotLy8gICAgICBXZSBkb24ndCBlbWl0IHRoaXMgd2FybmluZyBhbnkgbW9yZSwgc2luY2Ugd2UgaGF2ZSBzbyBmZXcKLS8vICAgICAgZGVmZWN0IG1hY3JvcyBzZXQgYW55d2F5IChqdXN0IHRoZSBvbmUpLgotLy8KLS8vIyAgICAgcHJhZ21hIG1lc3NhZ2UoIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIikKLSMgIGVuZGlmCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIva2FpLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2thaS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MzIwZjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIva2FpLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBLYWkgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIgotCi0jICAgaWYgKF9fS0NDX1ZFUlNJT04gPD0gNDAwMSkgfHwgIWRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykKLSAgICAgIC8vIGF0IGxlYXN0IG9uIFN1biwgdGhlIGNvbnRlbnRzIG9mIDxjd2NoYXI+IGlzIG5vdCBpbiBuYW1lc3BhY2Ugc3RkCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSMgICBlbmRpZgotCi0vLyBzZWUgYWxzbyBjb21tb25fZWRnLmhwcCB3aGljaCBuZWVkcyBhIHNwZWNpYWwgY2hlY2sgZm9yIF9fS0NDCi0jIGlmICFkZWZpbmVkKF9FWENFUFRJT05TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSMgZW5kaWYKLQotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbiBpcyA0MDAxOgotI2lmIChfX0tDQ19WRVJTSU9OID4gNDAwMSkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVuZGlmCi0jZW5kaWYKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL21ldHJvd2Vya3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbWV0cm93ZXJrcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MTYxY2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbWV0cm93ZXJrcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRGFyaW4gQWRsZXIgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IFN0ZWZhbiBTbGFwZXRhIDIwMDQuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIE1ldHJvd2Vya3MgQysrIGNvbXBpbGVyIHNldHVwOgotCi0vLyBsb2NhbGUgc3VwcG9ydCBpcyBkaXNhYmxlZCB3aGVuIGxpbmtpbmcgd2l0aCB0aGUgZHluYW1pYyBydW50aW1lCi0jICAgaWZkZWYgX01TTF9OT19MT0NBTEUKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jICAgZW5kaWYgCi0KLSMgICBpZiBfX01XRVJLU19fIDw9IDB4MjMwMSAgLy8gNS4zCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19QT0lOVEVSX1RPX01FTUJFUl9DT05TVAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9UWVBFU19JTl9URU1QTEFURV9WQUxVRV9QQVJBTUVURVJTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0tFWVdPUkQKLSMgICBlbmRpZgotCi0jICAgaWYgX19NV0VSS1NfXyA8PSAweDI0MDEgIC8vIDYuMgotLy8jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLSMgICBlbmRpZgotCi0jICAgaWYoX19NV0VSS1NfXyA8PSAweDI0MDcpICAvLyA3LngKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfRlVOQ1RJT05fU1BFQ0lBTElaQVRJT05TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVU5SRUFDSEFCTEVfUkVUVVJOX0RFVEVDVElPTgotIyAgIGVuZGlmCi0KLSMgICBpZihfX01XRVJLU19fIDw9IDB4MzAwMykgIC8vIDgueAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotIyAgICBlbmRpZgotCi0vLyB0aGUgInx8ICFkZWZpbmVkKE5ETkJPT1NUX1NUUklDVF9DT05GSUcpIiBwYXJ0IHNob3VsZCBhcHBseSB0byB0aGUgbGFzdAotLy8gdGVzdGVkIHZlcnNpb24gKm9ubHkqOgotIyAgIGlmKF9fTVdFUktTX18gPD0gMHgzMjA3KSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKSAvLyA5LjYKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICAgIGVuZGlmCi0KLSNpZiAhX19vcHRpb24od2NoYXJfdHlwZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSNlbmRpZgotCi0jaWYgIV9fb3B0aW9uKGV4Y2VwdGlvbnMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSNlbmRpZgotCi0jaWYgKF9fSU5URUxfXyAmJiBfV0lOMzIpIHx8IChfX1BPV0VSUENfXyAmJiBtYWNpbnRvc2gpCi0jICAgaWYgX19NV0VSS1NfXyA9PSAweDMwMDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDguMAotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMwMDEKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDguMQotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMwMDIKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDguMgotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMwMDMKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDguMwotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuMAotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDEKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuMQotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDIKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuMgotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDQKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuMwotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDUKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuNAotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDYKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuNQotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDcKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuNgotIyAgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIF9fTVdFUktTX18KLSMgICBlbmRpZgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIF9fTVdFUktTX18KLSNlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBib29zdFxjb25maWdcc3VmZml4LmhwcCBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0vLwotI2lmIF9fTVdFUktTX18gPiAweDMyMDYgJiYgX19vcHRpb24ocnZhbHVlX3JlZnMpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1JWQUxVRV9SRUZTCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICAgICAgICAgICAgICAKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiTWV0cm93ZXJrcyBDb2RlV2FycmlvciBDKysgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OKQotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IE1ldHJvd2Vya3MgcHJpb3IgdG8gdmVyc2lvbiA1LjM6Ci0jaWYgX19NV0VSS1NfXyA8IDB4MjMwMQotIyAgZXJyb3IgIkNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQgb3IgY29uZmlndXJlZCAtIHBsZWFzZSByZWNvbmZpZ3VyZSIKLSNlbmRpZgotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbjoKLSNpZiAoX19NV0VSS1NfXyA+IDB4MzIwNSkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVuZGlmCi0jZW5kaWYKLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbXB3LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL21wdy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzYWEyNzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbXB3LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIE1QVyBDKysgY29tcGlsZXJzIHNldHVwOgotCi0jICAgaWYgICAgZGVmaW5lZChfX1NDX18pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIk1QVyBTQ3BwIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX19TQ19fKQotIyAgIGVsaWYgZGVmaW5lZChfX01SQ19fKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJNUFcgTXJDcHAgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX01SQ19fKQotIyAgIGVsc2UKLSMgICAgIGVycm9yICJVc2luZyBNUFcgY29tcGlsZXIgY29uZmlndXJhdGlvbiBieSBtaXN0YWtlLiAgUGxlYXNlIHVwZGF0ZS4iCi0jICAgZW5kaWYKLQotLy8KLS8vIE1QVyA4LjkwOgotLy8KLSNpZiAoTVBXX0NQTFVTIDw9IDB4ODkwKSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9ORVNURURfREVSSVZBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19ERVBFTkRFTlRfVFlQRVNfSU5fVEVNUExBVEVfVkFMVUVfUEFSQU1FVEVSUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ0hBUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0KLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SIC8qIGFjdHVhbGx5IGEgYnVnIHdpdGggY29uc3QgcmVmZXJlbmNlIG92ZXJsb2FkaW5nICovCi0KLSNlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBib29zdFxjb25maWdcc3VmZml4LmhwcCBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0vLwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gd2UgZG9uJ3Qgc3VwcG9ydCBNUFcgcHJpb3IgdG8gdmVyc2lvbiA4Ljk6Ci0jaWYgTVBXX0NQTFVTIDwgMHg4OTAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gaXMgMHg4OTA6Ci0jaWYgKE1QV19DUExVUyA+IDB4ODkwKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL252Y2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbnZjYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNTA3Y2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbnZjYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBFcmljIEpvdXJkYW5uZWF1LCBKb2VsIEZhbGNvdSAyMDEwCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgTlZJRElBIENVREEgQysrIGNvbXBpbGVyIHNldHVwCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09NUElMRVIKLSMgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUiAiTlZJRElBIENVREEgQysrIENvbXBpbGVyIgotI2VuZGlmCi0KLS8vIE5WSURJQSBTcGVjaWZpYyBzdXBwb3J0Ci0vLyBORE5CT09TVF9HUFVfRU5BQkxFRCA6IEZsYWcgYSBmdW5jdGlvbiBvciBhIG1ldGhvZCBhcyBiZWluZyBlbmFibGVkIG9uIHRoZSBob3N0IGFuZCBkZXZpY2UKLSNkZWZpbmUgTkROQk9PU1RfR1BVX0VOQUJMRUQgX19ob3N0X18gX19kZXZpY2VfXwotCi0vLyBCb29zdCBzdXBwb3J0IG1hY3JvIGZvciBOVkNDIAotLy8gTlZDQyBCYXNpY2FsbHkgYmVoYXZlcyBsaWtlIHNvbWUgZmxhdm9yIG9mIE1TVkM2ICsgc29tZSBzcGVjaWZpYyBxdWlya3MKLSNpZmRlZiBfX0dOVUNfXwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvY29tcGlsZXIvdmlzdWFsYy5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvcGF0aHNjYWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3BhdGhzY2FsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZGFlYjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvcGF0aHNjYWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEJyeWNlIExlbGJhY2ggMjAxMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyBQYXRoU2NhbGUgRUtPUGF0aCBDKysgQ29tcGlsZXIKLQotI2lmbmRlZiBORE5CT09TVF9DT01QSUxFUgotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJQYXRoU2NhbGUgRUtPUGF0aCBDKysgQ29tcGlsZXIgdmVyc2lvbiAiIF9fUEFUSFNDQUxFX18KLSNlbmRpZgotCi0jaWYgX19QQVRIQ0NfXyA+PSA0Ci0jICBkZWZpbmUgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX1lJRUxECi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUEFSVElBTF9TVERfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX05SVk8KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTkxfVFlQRVNfSAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19DTE9DS19HRVRUSU1FCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVU1FUklDX0xJTUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19NU19JTlQ2NF9OVU1FUklDX0xJTUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NPTVBMRVRFX1ZBTFVFX0lOSVRJQUxJWkFUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFECi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SRUdFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRk9SV0FSRF9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VTRVJfREVGSU5FRF9MSVRFUkFMUwotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3BnaS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9wZ2kuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2E5MmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3BnaS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgTm9lbCBCZWxjb3VydCAyMDA3LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBQR0kgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gX19QR0lDX18jI19fUEdJQ19NSU5PUl9fCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJQR0kgY29tcGlsZXIgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OKQotCi0vLwotLy8gVGhyZWFkaW5nIHN1cHBvcnQ6Ci0vLyBUdXJuIHRoaXMgb24gdW5jb25kaXRpb25hbGx5IGhlcmUsIGl0IHdpbGwgZ2V0IHR1cm5lZCBvZmYgYWdhaW4gbGF0ZXIKLS8vIGlmIG5vIHRocmVhZGluZyBBUEkgaXMgZGV0ZWN0ZWQuCi0vLwotCi0jaWYgX19QR0lDX18gPj0gMTEKLQotLy8gb3B0aW9ucyByZXF1ZXN0ZWQgYnkgY29uZmlndXJlIC0tZW5hYmxlLXRlc3QKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX1lJRUxECi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OUlZPCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLQotLy8gb3B0aW9ucyAtLWVuYWJsZS10ZXN0IHdhbnRzIHVuZGVmaW5lZAotI3VuZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jdW5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OX1NURF9OQU1FU1BBQ0UKLSN1bmRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETAotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotCi0jZWxpZiBfX1BHSUNfXyA+PSAxMAotCi0vLyBvcHRpb25zIHJlcXVlc3RlZCBieSBjb25maWd1cmUgLS1lbmFibGUtdGVzdAotI2RlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUwotI2RlZmluZSBORE5CT09TVF9IQVNfTlJWTwotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0KLS8vIG9wdGlvbnMgLS1lbmFibGUtdGVzdCB3YW50cyB1bmRlZmluZWQKLSN1bmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotI3VuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTl9TVERfTkFNRVNQQUNFCi0jdW5kZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotCi0jZWxpZiBfX1BHSUNfXyA+PSA3Ci0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETAotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotCi0jZWxzZQotCi0jICBlcnJvciAiUGdpIGNvbXBpbGVyIG5vdCBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotCi0jZW5kaWYKLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8KLS8vICAgU2VlIGJvb3N0XGNvbmZpZ1xzdWZmaXguaHBwIGZvciBORE5CT09TVF9OT19MT05HX0xPTkcKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2RlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFECi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9TWVNURU1fRVJST1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ERUNWVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotLy8KLS8vIHZlcnNpb24gY2hlY2s6Ci0vLyBwcm9iYWJseSBub3RoaW5nIHRvIGRvIGhlcmU/Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3NnaV9taXBzcHJvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3NnaV9taXBzcHJvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWViZTI0NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9zZ2lfbWlwc3Byby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFNHSSBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIlNHSSBJcml4IGNvbXBpbGVyIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX0NPTVBJTEVSX1ZFUlNJT04pCi0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tbW9uX2VkZy5ocHAiCi0KLS8vCi0vLyBUaHJlYWRpbmcgc3VwcG9ydDoKLS8vIFR1cm4gdGhpcyBvbiB1bmNvbmRpdGlvbmFsbHkgaGVyZSwgaXQgd2lsbCBnZXQgdHVybmVkIG9mZiBhZ2FpbiBsYXRlcgotLy8gaWYgbm8gdGhyZWFkaW5nIEFQSSBpcyBkZXRlY3RlZC4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotCi0jdW5kZWYgTkROQk9PU1RfTk9fU1dQUklOVEYKLSN1bmRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0KLS8vCi0vLyB2ZXJzaW9uIGNoZWNrOgotLy8gcHJvYmFibHkgbm90aGluZyB0byBkbyBoZXJlPwotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3N1bnByb19jYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9zdW5wcm9fY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjM0NGUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3N1bnByb19jYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFN1biBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSMgICAgaWYgX19TVU5QUk9fQ0MgPD0gMHg1MDAKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUwotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotIyAgICBlbmRpZgotCi0jICAgIGlmIChfX1NVTlBST19DQyA8PSAweDUyMCkKLSAgICAgICAvLwotICAgICAgIC8vIFN1bnBybyA1LjIgYW5kIGVhcmxlcjoKLSAgICAgICAvLwotICAgICAgIC8vIGFsdGhvdWdoIHN1bnBybyA1LjIgc3VwcG9ydHMgdGhlIHN5bnRheCBmb3IKLSAgICAgICAvLyBpbmxpbmUgaW5pdGlhbGl6YXRpb24gaXQgb2Z0ZW4gZ2V0cyB0aGUgdmFsdWUKLSAgICAgICAvLyB3cm9uZywgZXNwZWNpYWxseSB3aGVyZSB0aGUgdmFsdWUgaXMgY29tcHV0ZWQKLSAgICAgICAvLyBmcm9tIG90aGVyIGNvbnN0YW50cyAoSiBNYWRkb2NrIDZ0aCBNYXkgMjAwMSkKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLQotICAgICAgIC8vIEFsdGhvdWdoIHN1bnBybyA1LjIgc3VwcG9ydHMgdGhlIHN5bnRheCBmb3IKLSAgICAgICAvLyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLCBpdCBvZnRlbiBzZWVtcyB0bwotICAgICAgIC8vIGJpbmQgdG8gdGhlIHdyb25nIHNwZWNpYWxpemF0aW9uLiAgQmV0dGVyCi0gICAgICAgLy8gdG8gZGlzYWJsZSBpdCB1bnRpbCBzdXBwcG9ydCBiZWNvbWVzIG1vcmUgc3RhYmxlCi0gICAgICAgLy8gKEogTWFkZG9jayA2dGggTWF5IDIwMDEpLgotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgIGVuZGlmCi0KLSMgICAgaWYgKF9fU1VOUFJPX0NDIDw9IDB4NTMwKSAKLSAgICAgICAvLyBSZXF1ZXN0aW5nIGRlYnVnIGluZm8gKC1nKSB3aXRoIEJvb3N0LlB5dGhvbiByZXN1bHRzCi0gICAgICAgLy8gaW4gYW4gaW50ZXJuYWwgY29tcGlsZXIgZXJyb3IgZm9yICJzdGF0aWMgY29uc3QiCi0gICAgICAgLy8gaW5pdGlhbGl6ZWQgaW4tY2xhc3MuCi0gICAgICAgLy8gICAgPj4gQXNzZXJ0aW9uOiAgICguLi9saW5rcy9kYmdfY3N0YWJzLmNjLCBsaW5lIDYxMSkKLSAgICAgICAvLyAgICAgICAgIHdoaWxlIHByb2Nlc3NpbmcgLi4vdGVzdC5jcHAgYXQgbGluZSAwLgotICAgICAgIC8vIChKZW5zIE1hdXJlciBhY2NvcmRpbmcgdG8gR290dGZyaWVkIEdhbnNzYXVnZSAwNCBNYXIgMjAwMikKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLQotICAgICAgIC8vIFN1blBybyA1LjMgaGFzIGJldHRlciBzdXBwb3J0IGZvciBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLAotICAgICAgIC8vIGJ1dCBicmVha3Mgd2hlbiBjb21waWxpbmcgc3RkOjpsZXNzPHNoYXJlZF9wdHI8VD4gPgotICAgICAgIC8vIChKZW5zIE1hdXJlciA0IE5vdiAyMDAxKS4KLQotICAgICAgIC8vIHN0ZDo6bGVzcyBzcGVjaWFsaXphdGlvbiBmaXhlZCBhcyByZXBvcnRlZCBieSBHZW9yZ2UKLSAgICAgICAvLyBIZWludHplbG1hbjsgcGFydGlhbCBzcGVjaWFsaXphdGlvbiByZS1lbmFibGVkCi0gICAgICAgLy8gKFBldGVyIERpbW92IDE3IEphbiAyMDAyKQotCi0vLyMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0gICAgICAgLy8gaW50ZWdyYWwgY29uc3RhbnQgZXhwcmVzc2lvbnMgd2l0aCA2NCBiaXQgbnVtYmVycyBmYWlsCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSMgICAgZW5kaWYKLQotIyAgICBpZiAoX19TVU5QUk9fQ0MgPCAweDU3MCkgCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1RFTVBMQVRFUwotICAgICAgIC8vIHNlZSBodHRwOi8vbGlzdHMuYm9vc3Qub3JnL01haWxBcmNoaXZlcy9ib29zdC9tc2c0NzE4NC5waHAKLSAgICAgICAvLyBhbmQgaHR0cDovL2xpc3RzLmJvb3N0Lm9yZy9NYWlsQXJjaGl2ZXMvYm9vc3QvbXNnNDcyMjAucGhwCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUwotIyAgICBlbmRpZgotIyAgICBpZiAoX19TVU5QUk9fQ0MgPD0gMHg1ODApIAotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgICBlbmRpZgotCi0jICAgIGlmIChfX1NVTlBST19DQyA8PSAweDUxMDApCi0gICAgICAgLy8gU3VuIDUuMTAgbWF5IG5vdCBjb3JyZWN0bHkgdmFsdWUtaW5pdGlhbGl6ZSBvYmplY3RzIG9mCi0gICAgICAgLy8gc29tZSB1c2VyIGRlZmluZWQgdHlwZXMsIGFzIHdhcyByZXBvcnRlZCBpbiBBcHJpbCAyMDEwCi0gICAgICAgLy8gKENSIDY5NDcwMTYpLCBhbmQgY29uZmlybWVkIGJ5IFN0ZXZlIENsYW1hZ2UuCi0gICAgICAgLy8gKE5pZWxzIERla2tlciwgTEtFQiwgTWF5IDIwMTApLgotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotIyAgICBlbmRpZgotCi0vLwotLy8gRHluYW1pYyBzaGFyZWQgb2JqZWN0IChEU08pIGFuZCBkeW5hbWljLWxpbmsgbGlicmFyeSAoRExMKSBzdXBwb3J0Ci0vLwotI2lmIF9fU1VOUFJPX0NDID4gMHg1MDAKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUIF9fZ2xvYmFsCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVCBfX2dsb2JhbAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIF9fZ2xvYmFsCi0jZW5kaWYKLQotCi0KLS8vCi0vLyBJc3N1ZXMgdGhhdCBlZmZlY3QgYWxsIGtub3duIHZlcnNpb25zOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0jZGVmaW5lIE5ETkJPT1NUX05PX0FETF9CQVJSSUVSCi0KLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLS8vCi0vLyBWZXJzaW9uCi0vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJTdW4gY29tcGlsZXIgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX1NVTlBST19DQykKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gd2UgZG9uJ3Qgc3VwcG9ydCBzdW5wcm8gcHJpb3IgdG8gdmVyc2lvbiA0OgotI2lmIF9fU1VOUFJPX0NDIDwgMHg0MDAKLSNlcnJvciAiQ29tcGlsZXIgbm90IHN1cHBvcnRlZCBvciBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotI2VuZGlmCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIDB4NTkwOgotI2lmIChfX1NVTlBST19DQyA+IDB4NTkwKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvdmFjcHAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvdmFjcHAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjY3NjU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3ZhY3BwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgVG9vbiBLbmFwZW4gMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgTGllLVF1YW4gTGVlIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgTWFya3VzIFNjaG9lcGZsaW4gMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMiAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFZpc3VhbCBBZ2UgKElCTSkgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jaWYgX19JQk1DUFBfXyA8PSA1MDEKLSMgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9GVU5DVElPTl9TUEVDSUFMSVpBVElPTlMKLSNlbmRpZgotCi0jaWYgKF9fSUJNQ1BQX18gPD0gNTAyKSAKLS8vIEFjdHVhbGx5IHRoZSBjb21waWxlciBzdXBwb3J0cyBpbmNsYXNzIG1lbWJlciBpbml0aWFsaXphdGlvbiBidXQgaXQKLS8vIHJlcXVpcmVzIGEgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzIG1lbWJlciBhbmQgaXQgZG9lc24ndCByZWNvZ25pemUKLS8vIGl0IGFzIGFuIGludGVncmFsIGNvbnN0YW50IGV4cHJlc3Npb24gd2hlbiB1c2VkIGFzIGEgdGVtcGxhdGUgYXJndW1lbnQuCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLSMgIGRlZmluZSBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0tFWVdPUkQKLSNlbmRpZgotCi0jaWYgKF9fSUJNQ1BQX18gPD0gNjAwKSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1BPSU5URVJfVE9fTUVNQkVSX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNlbmRpZgotCi0jaWYgKF9fSUJNQ1BQX18gPD0gMTExMCkKLS8vIFhMIEMrKyBWMTEuMSBhbmQgZWFybGllciB2ZXJzaW9ucyBtYXkgbm90IGFsd2F5cyB2YWx1ZS1pbml0aWFsaXplICAKLS8vIGEgdGVtcG9yYXJ5IG9iamVjdCBUKCksIHdoZW4gVCBpcyBhIG5vbi1QT0QgYWdncmVnYXRlIGNsYXNzIHR5cGUuIAotLy8gTWljaGFlbCBXb25nIChJQk0gQ2FuYWRhIEx0ZCkgaGFzIGNvbmZpcm1lZCB0aGlzIGlzc3VlIGFuZCBnYXZlIGl0IAotLy8gaGlnaCBwcmlvcml0eS4gLS0gTmllbHMgRGVra2VyIChMS0VCKSwgTWF5IDIwMTAuCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLSNlbmRpZgotCi0vLwotLy8gT24gQUlYIHRocmVhZCBzdXBwb3J0IHNlZW1zIHRvIGJlIGluZGljYXRlZCBieSBfVEhSRUFEX1NBRkU6Ci0vLwotI2lmZGVmIF9USFJFQURfU0FGRQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiSUJNIFZpc3VhbCBBZ2UgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX0lCTUNQUF9fKQotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IFZpc3VhbCBhZ2UgcHJpb3IgdG8gdmVyc2lvbiA1OgotI2lmIF9fSUJNQ1BQX18gPCA1MDAKLSNlcnJvciAiQ29tcGlsZXIgbm90IHN1cHBvcnRlZCBvciBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotI2VuZGlmCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIDEyMTA6Ci0jaWYgKF9fSUJNQ1BQX18gPiAxMjEwKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyBTb21lIHZlcnNpb25zIG9mIHRoZSBjb21waWxlciBoYXZlIGlzc3VlcyB3aXRoIGRlZmF1bHQgYXJndW1lbnRzIG9uIHBhcnRpYWwgc3BlY2lhbGl6YXRpb25zCi0jaWYgX19JQk1DUFBfXyA8PSAxMDEwCi0jZGVmaW5lIE5ETkJPT1NUX05PX1BBUlRJQUxfU1BFQ0lBTElaQVRJT05fSU1QTElDSVRfREVGQVVMVF9BUkdTCi0jZW5kaWYKLQotLy8KLS8vIEMrKzB4IGZlYXR1cmVzCi0vLwotLy8gICBTZWUgYm9vc3RcY29uZmlnXHN1ZmZpeC5ocHAgZm9yIE5ETkJPT1NUX05PX0xPTkdfTE9ORwotLy8KLSNpZiAhIF9fSUJNQ1BQX0FVVE9fVFlQRURFRFVDVElPTgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2VuZGlmCi0jaWYgISBfX0lCTUNQUF9VVEZfTElURVJBTF9fCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotI2VuZGlmCi0jaWYgISBfX0lCTUNQUF9DT05TVEVYUFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIKLSNlbmRpZgotI2lmICEgX19JQk1DUFBfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfREVDTFRZUEUKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jaWYgISBfX0lCTUNQUF9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZW5kaWYKLSNpZiAhIF9fSUJNQ1BQX0VYVEVSTl9URU1QTEFURQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2VuZGlmCi0jaWYgISBfX0lCTUNQUF9WQVJJQURJQ19URU1QTEFURVMKLS8vIG5vdCBlbmFibGVkIHNlcGFyYXRlbHkgYXQgdGhpcyB0aW1lCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLSNpZiAhIF9fSUJNQ1BQX1JWQUxVRV9SRUZFUkVOQ0VTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNlbmRpZgotI2lmICEgX19JQk1DUFBfU0NPUEVEX0VOVU0KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2lmICEgX19JQk1DUFBfU1RBVElDX0FTU0VSVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNpZiAhIF9fSUJNQ1BQX1ZBUklBRElDX1RFTVBMQVRFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2VuZGlmCi0jaWYgISBfX0M5OV9NQUNST19XSVRIX1ZBX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvdmlzdWFsYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci92aXN1YWxjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJhOWQxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci92aXN1YWxjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgRGFyaW4gQWRsZXIgMjAwMSAtIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMiAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLS8vCi0vLyAgTWljcm9zb2Z0IFZpc3VhbCBDKysgY29tcGlsZXIgc2V0dXA6Ci0vLwotLy8gIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoZSBjaGVja3MgaW4gdGhpcyBmaWxlLCBhcyBjb250cmFyeQotLy8gIHRvIHBvcHVsYXIgYmVsaWVmIHRoZXJlIGFyZSB2ZXJzaW9ucyB3aXRoIF9NU0NfVkVSIHdpdGggdGhlIGZpbmFsCi0vLyAgZGlnaXQgbm9uLXplcm8gKG1haW5seSB0aGUgTUlQUyBjcm9zcyBjb21waWxlcikuCi0vLwotLy8gIFNvIHdlIGVpdGhlciB0ZXN0IF9NU0NfVkVSID49IFhYWFggb3IgZWxzZSBfTVNDX1ZFUiA8IFhYWFguCi0vLyAgTm8gb3RoZXIgY29tcGFyaXNvbnMgKD09LCA+LCBvciA8PSkgYXJlIHNhZmUuCi0vLwotCi0jZGVmaW5lIE5ETkJPT1NUX01TVkMgX01TQ19WRVIKLQotLy8KLS8vIEhlbHBlciBtYWNybyBORE5CT09TVF9NU1ZDX0ZVTExfVkVSIGZvciB1c2UgaW4gQm9vc3QgY29kZToKLS8vCi0jaWYgX01TQ19GVUxMX1ZFUiA+IDEwMDAwMDAwMAotIyAgZGVmaW5lIE5ETkJPT1NUX01TVkNfRlVMTF9WRVIgX01TQ19GVUxMX1ZFUgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9NU1ZDX0ZVTExfVkVSIChfTVNDX0ZVTExfVkVSICogMTApCi0jZW5kaWYKLQotLy8gQXR0ZW1wdCB0byBzdXBwcmVzcyBWQzYgd2FybmluZ3MgYWJvdXQgdGhlIGxlbmd0aCBvZiBkZWNvcmF0ZWQgbmFtZXMgKG9ic29sZXRlKToKLSNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ1MDMgKSAvLyB3YXJuaW5nOiBkZWNvcmF0ZWQgbmFtZSBsZW5ndGggZXhjZWVkZWQKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gd2UgZG9uJ3Qgc3VwcG9ydCBWaXN1YWwgQysrIHByaW9yIHRvIHZlcnNpb24gNjoKLSNpZiBfTVNDX1ZFUiA8IDEyMDAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLQotI2lmIF9NU0NfVkVSIDwgMTMwMCAgLy8gMTIwMCA9PSBWQysrIDYuMCwgMTIwMC0xMjAyID09IGVWQysrNAotIyAgcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0Nzg2ICkgLy8gaWRlbnQgdHJ1bmMgdG8gJzI1NScgY2hhcnMgaW4gZGVidWcgaW5mbwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9UWVBFU19JTl9URU1QTEFURV9WQUxVRV9QQVJBTUVURVJTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OX1NURF9OQU1FU1BBQ0UKLQotIyAgaWYgX01TQ19WRVIgPT0gMTIwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1RZUEVJTkZPCi0jICBlbmRpZgotCi0jZW5kaWYKLQotLy8vIFZpc3VhbCBTdHVkaW8gaGFzIG5vIGZlbnYuaAotI2RlZmluZSBORE5CT09TVF9OT19GRU5WX0gKLQotI2lmIChfTVNDX1ZFUiA8IDEzMTApICAvLyAxMzBYID09IFZDKysgNy4wCi0KLSMgIGlmICFkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fREVQRU5ERU5UX1RZUEVTX0lOX1RFTVBMQVRFX1ZBTFVFX1BBUkFNRVRFUlMpICAgICAgLy8gVkM3IGJ1ZyB3aXRoIC9aYQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fREVQRU5ERU5UX1RZUEVTX0lOX1RFTVBMQVRFX1ZBTFVFX1BBUkFNRVRFUlMKLSMgIGVuZGlmCi0KLSMgIGRlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1BSSVZBVEVfSU5fQUdHUkVHQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19ERURVQ0VEX1RZUEVOQU1FCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfREVDTEFSQVRJT05fT1ZFUkxPQURTX0ZST01fVFlQRU5BTUVfQkFTRQotCi0vLyAgICBWQysrIDYvNyBoYXMgbWVtYmVyIHRlbXBsYXRlcyBidXQgdGhleSBoYXZlIG51bWVyb3VzIHByb2JsZW1zIGluY2x1ZGluZwotLy8gICAgY2FzZXMgb2Ygc2lsZW50IGZhaWx1cmUsIHNvIGZvciBzYWZldHkgd2UgZGVmaW5lOgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMKLS8vICAgIEZvciBWQysrIGV4cGVydHMgd2lzaGluZyB0byBhdHRlbXB0IHdvcmthcm91bmRzLCB3ZSBkZWZpbmU6Ci0jICBkZWZpbmUgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9URU1QTEFURVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19TRklOQUUKLSMgIGRlZmluZSBORE5CT09TVF9OT19QT0lOVEVSX1RPX01FTUJFUl9URU1QTEFURV9QQVJBTUVURVJTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9UWVBFX1NQRUNJQUxJWkFUSU9OUwotLy8gVE9ETzogd2hhdCB2ZXJzaW9uIGlzIG1lYW50IGhlcmU/IEhhdmUgdGhlcmUgcmVhbGx5IGJlZW4gYW55IGZpeGVzIGluIGNsIDEyLjAxIChhcyBlLmcuIHNoaXBwZWQgd2l0aCBlVkM0KT8KLSMgIGlmIChfTVNDX1ZFUiA+PSAxMzAwKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9GVU5DVElPTl9TUEVDSUFMSVpBVElPTlMKLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0jaWYgX01TQ19WRVIgPCAxNDAwIAotLy8gYWx0aG91Z2ggYSBjb25mb3JtaW5nIHNpZ25hdHVyZSBmb3Igc3dwcmludCBleGlzdHMgaW4gVkM3LjEKLS8vIGl0IGFwcGVhcnMgbm90IHRvIGFjdHVhbGx5IHdvcms6Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLS8vIE91ciBleHRlcm4gdGVtcGxhdGUgdGVzdHMgYWxzbyBmYWlsIGZvciB0aGlzIGNvbXBpbGVyOgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotLy8gVmFyaWFkaWMgbWFjcm9zIGRvIG5vdCBleGlzdCBmb3IgVkM3LjEgYW5kIGxvd2VyCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoVU5ERVJfQ0UpCi0vLyBXaW5kb3dzIENFIGRvZXMgbm90IGhhdmUgYSBjb25mb3JtaW5nIHNpZ25hdHVyZSBmb3Igc3dwcmludGYKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2VuZGlmCi0KLSNpZiBfTVNDX1ZFUiA8IDE1MDAgIC8vIDE0MFggPT0gVkMrKyA4LjAKLSMgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotI2VuZGlmCi0KLSNpZiBfTVNDX1ZFUiA8IDE2MDAgIC8vIDE1MFggPT0gVkMrKyA5LjAKLSAgIC8vIEEgYnVnIGluIFZDOToKLSMgIGRlZmluZSBORE5CT09TVF9OT19BRExfQkFSUklFUgotI2VuZGlmCi0KLQotLy8gTVNWQyAoaW5jbHVkaW5nIHRoZSBsYXRlc3QgY2hlY2tlZCB2ZXJzaW9uKSBoYXMgbm90IHlldCBjb21wbGV0ZWx5IAotLy8gaW1wbGVtZW50ZWQgdmFsdWUtaW5pdGlhbGl6YXRpb24sIGFzIGlzIHJlcG9ydGVkOgotLy8gIlZDKysgZG9lcyBub3QgdmFsdWUtaW5pdGlhbGl6ZSBtZW1iZXJzIG9mIGRlcml2ZWQgY2xhc3NlcyB3aXRob3V0IAotLy8gdXNlci1kZWNsYXJlZCBjb25zdHJ1Y3RvciIsIHJlcG9ydGVkIGluIDIwMDkgYnkgU3lsdmVzdGVyIEhlc3A6Ci0vLyBodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9WaXN1YWxTdHVkaW8vZmVlZGJhY2svZGV0YWlscy80ODQyOTUKLS8vICJQcmVzZW5jZSBvZiBjb3B5IGNvbnN0cnVjdG9yIGJyZWFrcyBtZW1iZXIgY2xhc3MgaW5pdGlhbGl6YXRpb24iLAotLy8gcmVwb3J0ZWQgaW4gMjAwOSBieSBBbGV4IFZha3VsZW5rbzoKLS8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL1Zpc3VhbFN0dWRpby9mZWVkYmFjay9kZXRhaWxzLzQ5OTYwNgotLy8gIlZhbHVlLWluaXRpYWxpemF0aW9uIGluIG5ldy1leHByZXNzaW9uIiwgcmVwb3J0ZWQgaW4gMjAwNSBieQotLy8gUGF2ZWwgS3V6bmV0c292IChNZXRhQ29tbXVuaWNhdGlvbnMgRW5naW5lZXJpbmcpOgotLy8gaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vVmlzdWFsU3R1ZGlvL2ZlZWRiYWNrL2RldGFpbHMvMTAwNzQ0Ci0vLyBTZWUgYWxzbzogaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L3ZhbHVlX2luaXQuaHRtI2NvbXBpbGVyX2lzc3VlcwotLy8gKE5pZWxzIERla2tlciwgTEtFQiwgTWF5IDIwMTApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLQotI2lmbmRlZiBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkgfHwgZGVmaW5lZChVTkRFUl9DRSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2VuZGlmCi0KLS8vIHdlIGhhdmUgVGhyZWFkRXggb3IgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUgdW5sZXNzIHdlJ3JlIHJ1bm5pbmcgV2luZG93c0NFCi0jaWYgIWRlZmluZWQoX1dJTjMyX1dDRSkgJiYgIWRlZmluZWQoVU5ERVJfQ0UpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBREVYCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFNZU1RFTVRJTUVBU0ZJTEVUSU1FCi0jZW5kaWYKLQotLy8gICAKLS8vIGNoZWNrIGZvciBleGNlcHRpb24gaGFuZGxpbmcgc3VwcG9ydDogICAKLSNpZiAhZGVmaW5lZChfQ1BQVU5XSU5EKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMgICAKLSNlbmRpZiAKLQotLy8KLS8vIF9faW50NjQgc3VwcG9ydDoKLS8vCi0jaWYgKF9NU0NfVkVSID49IDEyMDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotI2VuZGlmCi0jaWYgKF9NU0NfVkVSID49IDEzMTApICYmIChkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgfHwgKF9NU0NfVkVSID49IDE0MDApKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9OT19MT05HX0xPTkcKLSNlbmRpZgotI2lmIChfTVNDX1ZFUiA+PSAxNDAwKSAmJiAhZGVmaW5lZChfREVCVUcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OUlZPCi0jZW5kaWYKLS8vCi0vLyBkaXNhYmxlIFdpbjMyIEFQSSdzIGlmIGNvbXBpbGVyIGV4dGVudGlvbnMgYXJlCi0vLyB0dXJuZWQgb2ZmOgotLy8KLSNpZiAhZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9XSU4zMgotI2VuZGlmCi0jaWYgIWRlZmluZWQoX0NQUFJUVEkpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1JUVEkpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fUlRUSQotI2VuZGlmCi0KLS8vCi0vLyBUUjEgZmVhdHVyZXM6Ci0vLwotI2lmIF9NU0NfVkVSID49IDE3MDAKLS8vICMgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfSEFTSAkJCS8vIGRvbid0IGtub3cgaWYgdGhpcyBpcyB0cnVlIHlldC4KLS8vICMgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVFlQRV9UUkFJVFMJLy8gZG9uJ3Qga25vdyBpZiB0aGlzIGlzIHRydWUgeWV0LgotIyBkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9VTk9SREVSRURfTUFQCi0jIGRlZmluZSBORE5CT09TVF9IQVNfVFIxX1VOT1JERVJFRF9TRVQKLSNlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBhYm92ZSBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0KLS8vIEMrKyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgVkMrKyAxMCAoYWthIDIwMTApCi0vLwotI2lmIF9NU0NfVkVSIDwgMTYwMAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSNlbmRpZiAvLyBfTVNDX1ZFUiA8IDE2MDAKLQotI2lmIF9NU0NfVkVSID49IDE2MDAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNlbmRpZgotCi0vLyBDKysgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IFZDKysgMTEgKGFrYSAyMDEyKQotLy8KLSNpZiBfTVNDX1ZFUiA8IDE3MDAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNlbmRpZiAvLyBfTVNDX1ZFUiA8IDE3MDAKLQotLy8gQysrMTEgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IFZDKysgMTEgKGFrYSAyMDEyKSBOb3ZlbWJlciAyMDEyIENUUAotLy8gQmVjYXVzZSB0aGUgQ1RQIGlzIHVuc3VwcG9ydGVkLCB1bnJlbGVhc2UsIGFuZCBvbmx5IGFscGhhIHF1YWxpdHksCi0vLyBpdCBpcyBvbmx5IHN1cHBvcnRlZCBpZiBORE5CT09TVF9NU1ZDX0VOQUJMRV8yMDEyX05PVl9DVFAgaXMgZGVmaW5lZC4KLS8vCi0jaWYgX01TQ19GVUxMX1ZFUiA8IDE3MDA1MTAyNSB8fCAhZGVmaW5lZChORE5CT09TVF9NU1ZDX0VOQUJMRV8yMDEyX05PVl9DVFApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2VuZGlmCi0KLS8vIEMrKzExIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgYnkgYW55IHZlcnNpb25zCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLS8vCi0vLyBwcmVmaXggYW5kIHN1ZmZpeCBoZWFkZXJzOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfQUJJX1BSRUZJWAotIyAgZGVmaW5lIE5ETkJPT1NUX0FCSV9QUkVGSVggIm5kbmJvb3N0L2NvbmZpZy9hYmkvbXN2Y19wcmVmaXguaHBwIgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSMgIGRlZmluZSBORE5CT09TVF9BQklfU1VGRklYICJuZG5ib29zdC9jb25maWcvYWJpL21zdmNfc3VmZml4LmhwcCIKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTVBJTEVSCi0vLyBUT0RPOgotLy8gdGhlc2UgdGhpbmdzIGFyZSBtb3N0bHkgYm9ndXMuIDEyMDAgbWVhbnMgdmVyc2lvbiAxMi4wIG9mIHRoZSBjb21waWxlci4gVGhlIAotLy8gYXJ0aWZpY2lhbCB2ZXJzaW9ucyBhc3NpZ25lZCB0byB0aGVtIG9ubHkgcmVmZXIgdG8gdGhlIHZlcnNpb25zIG9mIHNvbWUgSURFCi0vLyB0aGVzZSBjb21waWxlcnMgaGF2ZSBiZWVuIHNoaXBwZWQgd2l0aCwgYW5kIGV2ZW4gdGhhdCBpcyBub3QgYWxsIG9mIGl0LiBTb21lCi0vLyB3ZXJlIHNoaXBwZWQgd2l0aCBmcmVlbHkgZG93bmxvYWRhYmxlIFNES3MsIG90aGVycyBhcyBjcm9zc2NvbXBpbGVycyBpbiBlVkMuCi0vLyBJT1csIHlvdSBjYW4ndCB1c2UgdGhlc2UgJ3ZlcnNpb25zJyBpbiBhbnkgc2Vuc2libGUgd2F5LiBTb3JyeS4KLSMgaWYgZGVmaW5lZChVTkRFUl9DRSkKLSMgICBpZiBfTVNDX1ZFUiA8IDEyMDAKLSAgICAgIC8vIE5vdGU6IHRoZXNlIGFyZSBzbyBmYXIgb2ZmLCB0aGV5IGFyZSBub3QgcmVhbGx5IHN1cHBvcnRlZAotIyAgIGVsaWYgX01TQ19WRVIgPCAxMzAwIC8vIGVWQysrIDQgY29tZXMgd2l0aCAxMjAwLTEyMDIKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIGV2YzQuMAotIyAgIGVsaWYgX01TQ19WRVIgPCAxNDAwCi0gICAgICAvLyBOb3RlOiBJJ20gbm90IGF3YXJlIG9mIGFueSBDRSBjb21waWxlciB3aXRoIHZlcnNpb24gMTN4eAotIyAgICAgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgICAgICBlcnJvciAiVW5rbm93biBFVkMrKyBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICAgICAgZWxzZQotIyAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJVbmtub3duIEVWQysrIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIpCi0jICAgICAgZW5kaWYKLSMgICBlbGlmIF9NU0NfVkVSIDwgMTUwMAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gZXZjOAotIyAgIGVsaWYgX01TQ19WRVIgPCAxNjAwCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiBldmM5Ci0jICAgZWxpZiBfTVNDX1ZFUiA8IDE3MDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIGV2YzEwCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDE4MDAgCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiBldmMxMSAKLSMgICBlbHNlCi0jICAgICAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgICAgIGVycm9yICJVbmtub3duIEVWQysrIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgICAgICBlbHNlCi0jICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIlVua25vd24gRVZDKysgY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIikKLSMgICAgICBlbmRpZgotIyAgIGVuZGlmCi0jIGVsc2UKLSMgICBpZiBfTVNDX1ZFUiA8IDEyMDAKLSAgICAgIC8vIE5vdGU6IHRoZXNlIGFyZSBzbyBmYXIgb2ZmLCB0aGV5IGFyZSBub3QgcmVhbGx5IHN1cHBvcnRlZAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gNS4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDEzMDAKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gNi4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDEzMTAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDcuMAotIyAgIGVsaWYgX01TQ19WRVIgPCAxNDAwCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiA3LjEKLSMgICBlbGlmIF9NU0NfVkVSIDwgMTUwMAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOC4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDE2MDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuMAotIyAgIGVsaWYgX01TQ19WRVIgPCAxNzAwCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiAxMC4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDE4MDAgCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiAxMS4wIAotIyAgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIF9NU0NfVkVSCi0jICAgZW5kaWYKLSMgZW5kaWYKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJNaWNyb3NvZnQgVmlzdWFsIEMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04pCi0jZW5kaWYKLQotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbiBpcyAxNzAwIChWQzExLCBha2EgMjAxMSk6Ci0jaWYgKF9NU0NfVkVSID4gMTcwMCkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVsc2UKLSMgICAgIHByYWdtYSBtZXNzYWdlKCJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIpCi0jICBlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL2NtYXRoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYzYmRiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBUaGUgYWltIG9mIHRoaXMgaGVhZGVyIGlzIGp1c3QgdG8gaW5jbHVkZSA8Y21hdGg+IGJ1dCB0byBkbwotLy8gc28gaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCByZXN1bHQgaW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZgotLy8gdGhlIEJvb3N0IFRSMSBjb21wb25lbnRzIGlmIG5kbmJvb3N0L3RyMS90cjEvY21hdGggaXMgaW4gdGhlCi0vLyBpbmNsdWRlIHNlYXJjaCBwYXRoLiAgV2UgaGF2ZSB0byBkbyB0aGlzIHRvIGF2b2lkIGNpcmN1bGFyCi0vLyBkZXBlbmRlbmNpZXM6Ci0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19DTUFUSAotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19DTUFUSAotCi0jICBpZm5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RSMV9OT19SRUNVUlNJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9DT05GSUdfTk9fQ01BVEhfUkVDVVJTSU9OCi0jICBlbmRpZgotCi0jICBpbmNsdWRlIDxjbWF0aD4KLQotIyAgaWZkZWYgTkROQk9PU1RfQ09ORklHX05PX0NNQVRIX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfQ09ORklHX05PX0NNQVRIX1JFQ1VSU0lPTgotIyAgZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvY29tcGxleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvY29tcGxleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMjI2NjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL2NvbXBsZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBUaGUgYWltIG9mIHRoaXMgaGVhZGVyIGlzIGp1c3QgdG8gaW5jbHVkZSA8Y29tcGxleD4gYnV0IHRvIGRvCi0vLyBzbyBpbiBhIHdheSB0aGF0IGRvZXMgbm90IHJlc3VsdCBpbiByZWN1cnNpdmUgaW5jbHVzaW9uIG9mCi0vLyB0aGUgQm9vc3QgVFIxIGNvbXBvbmVudHMgaWYgbmRuYm9vc3QvdHIxL3RyMS9jb21wbGV4IGlzIGluIHRoZQotLy8gaW5jbHVkZSBzZWFyY2ggcGF0aC4gIFdlIGhhdmUgdG8gZG8gdGhpcyB0byBhdm9pZCBjaXJjdWxhcgotLy8gZGVwZW5kZW5jaWVzOgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfQ09NUExFWAotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19DT01QTEVYCi0KLSMgIGlmbmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19OT19DT01QTEVYX1JFQ1VSU0lPTgotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSA8Y29tcGxleD4KLQotIyAgaWZkZWYgTkROQk9PU1RfQ09ORklHX05PX0NPTVBMRVhfUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9DT05GSUdfTk9fQ09NUExFWF9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL2Z1bmN0aW9uYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL2Z1bmN0aW9uYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTdmYjVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL25vX3RyMS9mdW5jdGlvbmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gVGhlIGFpbSBvZiB0aGlzIGhlYWRlciBpcyBqdXN0IHRvIGluY2x1ZGUgPGZ1bmN0aW9uYWw+IGJ1dCB0byBkbwotLy8gc28gaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCByZXN1bHQgaW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZgotLy8gdGhlIEJvb3N0IFRSMSBjb21wb25lbnRzIGlmIG5kbmJvb3N0L3RyMS90cjEvZnVuY3Rpb25hbCBpcyBpbiB0aGUKLS8vIGluY2x1ZGUgc2VhcmNoIHBhdGguICBXZSBoYXZlIHRvIGRvIHRoaXMgdG8gYXZvaWQgY2lyY3VsYXIKLS8vIGRlcGVuZGVuY2llczoKLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0ZVTkNUSU9OQUwKLSMgIGRlZmluZSBORE5CT09TVF9DT05GSUdfRlVOQ1RJT05BTAotCi0jICBpZm5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RSMV9OT19SRUNVUlNJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9DT05GSUdfTk9fRlVOQ1RJT05BTF9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSMgIGluY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0KLSMgIGlmZGVmIE5ETkJPT1NUX0NPTkZJR19OT19GVU5DVElPTkFMX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfQ09ORklHX05PX0ZVTkNUSU9OQUxfUkVDVVJTSU9OCi0jICBlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL25vX3RyMS9tZW1vcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL21lbW9yeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MzIyNmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL21lbW9yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFRoZSBhaW0gb2YgdGhpcyBoZWFkZXIgaXMganVzdCB0byBpbmNsdWRlIDxtZW1vcnk+IGJ1dCB0byBkbwotLy8gc28gaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCByZXN1bHQgaW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZgotLy8gdGhlIEJvb3N0IFRSMSBjb21wb25lbnRzIGlmIG5kbmJvb3N0L3RyMS90cjEvbWVtb3J5IGlzIGluIHRoZQotLy8gaW5jbHVkZSBzZWFyY2ggcGF0aC4gIFdlIGhhdmUgdG8gZG8gdGhpcyB0byBhdm9pZCBjaXJjdWxhcgotLy8gZGVwZW5kZW5jaWVzOgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfTUVNT1JZCi0jICBkZWZpbmUgTkROQk9PU1RfQ09ORklHX01FTU9SWQotCi0jICBpZm5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RSMV9OT19SRUNVUlNJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9DT05GSUdfTk9fTUVNT1JZX1JFQ1VSU0lPTgotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSA8bWVtb3J5PgotCi0jICBpZmRlZiBORE5CT09TVF9DT05GSUdfTk9fTUVNT1JZX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfQ09ORklHX05PX01FTU9SWV9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTViNjVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gVGhlIGFpbSBvZiB0aGlzIGhlYWRlciBpcyBqdXN0IHRvIGluY2x1ZGUgPHV0aWxpdHk+IGJ1dCB0byBkbwotLy8gc28gaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCByZXN1bHQgaW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZgotLy8gdGhlIEJvb3N0IFRSMSBjb21wb25lbnRzIGlmIG5kbmJvb3N0L3RyMS90cjEvdXRpbGl0eSBpcyBpbiB0aGUKLS8vIGluY2x1ZGUgc2VhcmNoIHBhdGguICBXZSBoYXZlIHRvIGRvIHRoaXMgdG8gYXZvaWQgY2lyY3VsYXIKLS8vIGRlcGVuZGVuY2llczoKLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX1VUSUxJVFkKLSMgIGRlZmluZSBORE5CT09TVF9DT05GSUdfVVRJTElUWQotCi0jICBpZm5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RSMV9OT19SRUNVUlNJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9DT05GSUdfTk9fVVRJTElUWV9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSMgIGluY2x1ZGUgPHV0aWxpdHk+Ci0KLSMgIGlmZGVmIE5ETkJPT1NUX0NPTkZJR19OT19VVElMSVRZX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfQ09ORklHX05PX1VUSUxJVFlfUkVDVVJTSU9OCi0jICBlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2FpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9haXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzhiZDkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2FpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIElCTS9BaXggc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIklCTSBBaXgiCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OTF9UWVBFU19ICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0NMT0NLX0dFVFRJTUUKLQotLy8gVGhpcyBuZWVkcyBzdXBwb3J0IGluICJuZG5ib29zdC9jc3RkaW50LmhwcCIgZXhhY3RseSBsaWtlIEZyZWVCU0QuCi0vLyBUaGlzIHBsYXRmb3JtIGhhcyBoZWFkZXIgbmFtZWQgPGludHR5cGVzLmg+IHdoaWNoIGluY2x1ZGVzIGFsbAotLy8gdGhlIHRoaW5ncyBuZWVkZWQuCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotCi0vLyBUaHJlYWRpbmcgQVBJJ3M6Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotI2RlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9ERUxBWV9OUAotI2RlZmluZSBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLS8vI2RlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9ZSUVMRAotCi0vLyBib2lsZXJwbGF0ZSBjb2RlOgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2FtaWdhb3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYW1pZ2Fvcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZDJkZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYW1pZ2Fvcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJBbWlnYU9TIgotCi0jZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUwotI2RlZmluZSBORE5CT09TVF9OT19DV0NIQVIKLSNkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLSNkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYmVvcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9iZW9zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RhYjBiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9iZW9zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBCZU9TIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJCZU9TIgotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NXQ0hBUgotI2RlZmluZSBORE5CT09TVF9OT19DV0NUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19CRVRIUkVBRFMKLQotI2lmbmRlZiBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUwotI2VuZGlmCi0KLS8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLSAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ic2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYnNkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY1NDUxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ic2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgZ2VuZXJpYyBCU0QgY29uZmlnIG9wdGlvbnM6Ci0KLSNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19OZXRCU0RfXykgJiYgIWRlZmluZWQoX19PcGVuQlNEX18pICYmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZXJyb3IgIlRoaXMgcGxhdGZvcm0gaXMgbm90IEJTRCIKLSNlbmRpZgotCi0jaWZkZWYgX19GcmVlQlNEX18KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIkZyZWVCU0QgIiBORE5CT09TVF9TVFJJTkdJWkUoX19GcmVlQlNEX18pCi0jZWxpZiBkZWZpbmVkKF9fTmV0QlNEX18pCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJOZXRCU0QgIiBORE5CT09TVF9TVFJJTkdJWkUoX19OZXRCU0RfXykKLSNlbGlmIGRlZmluZWQoX19PcGVuQlNEX18pCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJPcGVuQlNEICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fT3BlbkJTRF9fKQotI2VsaWYgZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiRHJhZ29uRmx5ICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fRHJhZ29uRmx5X18pCi0jZW5kaWYKLQotLy8KLS8vIGlzIHRoaXMgdGhlIGNvcnJlY3QgdmVyc2lvbiBjaGVjaz8KLS8vIEZyZWVCU0QgaGFzIDxubF90eXBlcy5oPiBidXQgZG9lcyBub3QKLS8vIGFkdmVydGlzZSB0aGUgZmFjdCBpbiA8dW5pc3RkLmg+OgotLy8KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF9fID49IDMpKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX05MX1RZUEVTX0gKLSNlbmRpZgotCi0vLwotLy8gRnJlZUJTRCAzLnggaGFzIHB0aHJlYWRzIHN1cHBvcnQsIGJ1dCBkZWZpbmVzIF9QT1NJWF9USFJFQURTIGluIDxwdGhyZWFkLmg+Ci0vLyBhbmQgbm90IGluIDx1bmlzdGQuaD4KLS8vCi0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA8PSAzKSlcCi0gICB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotI2VuZGlmCi0KLS8vCi0vLyBObyB3aWRlIGNoYXJhY3RlciBzdXBwb3J0IGluIHRoZSBCU0QgaGVhZGVyIGZpbGVzOgotLy8KLSNpZiBkZWZpbmVkKF9fTmV0QlNEX18pCi0jZGVmaW5lIF9fTmV0QlNEX0dDQ19fIChfX0dOVUNfXyAgICAgICAgICogMTAwMDAwMCBcCi0gICAgICAgICAgICAgICAgICAgICAgICsgX19HTlVDX01JTk9SX18gKiAgICAxMDAwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgKyBfX0dOVUNfUEFUQ0hMRVZFTF9fKQotLy8gWFhYIC0gdGhlIGZvbGxvd2luZyBpcyByZXF1aXJlZCB1bnRpbCBjKytjb25maWcuaAotLy8gICAgICAgZGVmaW5lcyBfR0xJQkNYWF9IQVZFX1NXUFJJTlRGIGFuZCBmcmllbmRzCi0vLyAgICAgICBvciB0aGUgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscyBhcmUgcmVtb3ZlZAotLy8gICAgICAgZnJvbSB0aGUgY3djaGFyIGhlYWRlci4KLSNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TV1BSSU5URiAxCi0jZW5kaWYKLQotI2lmICEoKGRlZmluZWQoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA+PSA1KSkgXAotICAgICAgfHwgKGRlZmluZWQoX19OZXRCU0RfR0NDX18pICYmIChfX05ldEJTRF9HQ0NfXyA+PSAyMDk1MDAzKSkgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DV0NIQVIKLSNlbmRpZgotLy8KLS8vIFRoZSBCU0QgPGN0eXBlLmg+IGhhcyBtYWNyb3Mgb25seSwgbm8gZnVuY3Rpb25zOgotLy8KLSNpZiAhZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NUWVBFX0ZVTkNUSU9OUwotI2VuZGlmCi0KLS8vCi0vLyB0aHJlYWQgQVBJJ3Mgbm90IGF1dG8gZGV0ZWN0ZWQ6Ci0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSNkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotI2RlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2NyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vY3JheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMGNkYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vY3JheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAxMS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBTR0kgSXJpeCBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiQ3JheSIKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2N5Z3dpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9jeWd3aW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDAyMmZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2N5Z3dpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIGN5Z3dpbiBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiQ3lnd2luIgotI2RlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotCi0vLwotLy8gVGhyZWFkaW5nIEFQSToKLS8vIFNlZSBpZiB3ZSBoYXZlIFBPU0lYIHRocmVhZHMsIGlmIHdlIGRvIHVzZSB0aGVtLCBvdGhlcndpc2UKLS8vIHJldmVydCB0byBuYXRpdmUgV2luIHRocmVhZHMuCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2lmIGRlZmluZWQoX1BPU0lYX1RIUkVBRFMpICYmIChfUE9TSVhfVEhSRUFEUyswID49IDApICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSNlbHNlCi0jICBpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfV0lOVEhSRUFEUykKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfV0lOVEhSRUFEUwotIyAgZW5kaWYKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRlRJTUUKLSNlbmRpZgotCi0vLwotLy8gZmluZCBvdXQgaWYgd2UgaGF2ZSBhIHN0ZGludC5oLCB0aGVyZSBzaG91bGQgYmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXM6Ci0vLwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIF9TVERJTlRfSAotI2RlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNlbmRpZgotCi0vLy8gQ3lnd2luIGhhcyBubyBmZW52LmgKLSNkZWZpbmUgTkROQk9PU1RfTk9fRkVOVl9ICi0KLS8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotLy8KLS8vIEN5Z3dpbiBsaWVzIGFib3V0IFhTSSBjb25mb3JtYW5jZSwgdGhlcmUgaXMgbm8gbmxfdHlwZXMuaDoKLS8vCi0jaWZkZWYgTkROQk9PU1RfSEFTX05MX1RZUEVTX0gKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19OTF9UWVBFU19ICi0jZW5kaWYKLSAKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vaHB1eC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ocHV4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU0MGEyZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ocHV4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IFRvb24gS25hcGVuIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQm9yaXMgR3ViZW5rbyAyMDA2IC0gMjAwNy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBocHV4IHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJIUC1VWCIKLQotLy8gSW4gcHJpbmNpcGxlLCBIUC1VWCBoYXMgYSBuaWNlIDxzdGRpbnQuaD4gdW5kZXIgdGhlIG5hbWUgPGludHR5cGVzLmg+Ci0vLyBIb3dldmVyLCBpdCBoYXMgdGhlIGZvbGxvd2luZyBwcm9ibGVtOgotLy8gVXNlIG9mIFVJTlQzMl9DKDApIHJlc3VsdHMgaW4gIjB1IGwiIGZvciB0aGUgcHJlcHJvY2Vzc2VkIHNvdXJjZQotLy8gKHZlcmlmeWFibGUgd2l0aCBnY2MgMi45NS4zKQotI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMykpIHx8IGRlZmluZWQoX19IUF9hQ0MpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jZW5kaWYKLQotI2lmICEoZGVmaW5lZChfX0hQX2FDQykgfHwgIWRlZmluZWQoX0lOQ0xVREVfX1NURENfQTFfU09VUkNFKSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0hQX2FDQykgJiYgIWRlZmluZWQoX0lOQ0xVREVfX1NURENfQTFfU09VUkNFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ1RZUEUKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgIGlmIChfX0dOVUNfXyA8IDMpIHx8ICgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fIDwgMykpCi0gICAgICAvLyBHTlUgQyBvbiBIUC1VWCBkb2VzIG5vdCBzdXBwb3J0IHRocmVhZHMgKGNoZWNrZWQgdXAgdG8gZ2NjIDMuMykKLSMgICAgIGRlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMKLSMgIGVsaWYgIWRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9USFJFQURTKQotICAgICAgLy8gdGhyZWFkcyBzdXBwb3J0ZWQgZnJvbSBnY2MtMy4zIG9ud2FyZHM6Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKF9fSFBfYUNDKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jZW5kaWYKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotLy8gdGhlIGZvbGxvd2luZyBhcmUgYWx3YXlzIGF2YWlsYWJsZToKLSNpZm5kZWYgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19OTF9UWVBFU19ICi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTkxfVFlQRVNfSAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRQotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0NMT0NLX0dFVFRJTUUKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfU0lHQUNUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NJR0FDVElPTgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19OUlZPIAotIyAgaWZuZGVmIF9fcGFyaXNjCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTlJWTwotIyAgZW5kaWYKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfTE9HMVAgCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSEFTX0VYUE0xCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0VYUE0xCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vaXJpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9pcml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUyZDgyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9pcml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFNHSSBJcml4IHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJTR0kgSXJpeCIKLQotI2RlZmluZSBORE5CT09TVF9OT19TV1BSSU5URiAKLS8vCi0vLyB0aGVzZSBhcmUgbm90IGF1dG8gZGV0ZWN0ZWQgYnkgUE9TSVggZmVhdHVyZSB0ZXN0czoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLQotI2lmZGVmIF9fR05VQ19fCi0gICAvLyBHTlUgQyBvbiBJUklYIGRvZXMgbm90IHN1cHBvcnQgdGhyZWFkcyAoY2hlY2tlZCB1cCB0byBnY2MgMy4zKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUwotI2VuZGlmCi0KLS8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9saW51eC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9saW51eC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNzM2MzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vbGludXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgbGludXggc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gImxpbnV4IgotCi0vLyBtYWtlIHN1cmUgd2UgaGF2ZSBfX0dMSUJDX1BSRVJFUSBpZiBhdmFpbGFibGUgYXQgYWxsCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxjc3RkbGliPgotI2Vsc2UKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNlbmRpZgotCi0vLwotLy8gPHN0ZGludC5oPiBhZGRlZCB0byBnbGliYyAyLjEuMQotLy8gV2UgY2FuIG9ubHkgdGVzdCBmb3IgMi4xIHRob3VnaDoKLS8vCi0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICgoX19HTElCQ19fID4gMikgfHwgKChfX0dMSUJDX18gPT0gMikgJiYgKF9fR0xJQkNfTUlOT1JfXyA+PSAxKSkpCi0gICAvLyA8c3RkaW50Lmg+IGRlZmluZXMgaW50NjRfdCB1bmNvbmRpdGlvbmFsbHksIGJ1dCA8c3lzL3R5cGVzLmg+IGRlZmluZXMKLSAgIC8vIGludDY0X3Qgb25seSBpZiBfX0dOVUNfXy4gIFRodXMsIGFzc3VtZSBhIGZ1bGx5IHVzYWJsZSA8c3RkaW50Lmg+Ci0gICAvLyBvbmx5IHdoZW4gdXNpbmcgR0NDLgotIyAgaWYgZGVmaW5lZCBfX0dOVUNfXwotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fTElCQ09NT19fKQotICAgLy8KLSAgIC8vIGNvbW8gb24gbGludXggZG9lc24ndCBoYXZlIHN0ZDo6IGMgZnVuY3Rpb25zOgotICAgLy8gTk9URTogdmVyc2lvbnMgb2YgbGliY29tbyBwcmlvciB0byBiZXRhMjggaGF2ZSBvY3RhbCB2ZXJzaW9uIG51bWJlcmluZywKLSAgIC8vIGUuZy4gdmVyc2lvbiAyNSBpcyAyMSAoZGVjKQotICAgLy8KLSMgIGlmIF9fTElCQ09NT19WRVJTSU9OX18gPD0gMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jICBlbmRpZgotCi0jICBpZiBfX0xJQkNPTU9fVkVSU0lPTl9fIDw9IDIxCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgZW5kaWYKLQotI2VuZGlmCi0KLS8vCi0vLyBJZiBnbGliYyBpcyBwYXN0IHZlcnNpb24gMiB0aGVuIHdlIGRlZmluaXRlbHkgaGF2ZQotLy8gZ2V0dGltZW9mZGF5LCBlYXJsaWVyIHZlcnNpb25zIG1heSBvciBtYXkgbm90IGhhdmUgaXQ6Ci0vLwotI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotI2VuZGlmCi0KLSNpZmRlZiBfX1VTRV9QT1NJWDE5OTMwOQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpCi0vLyBfX0dMSUJDX1BSRVJFUSBpcyBhdmFpbGFibGUgc2luY2UgMi4xLjIKLQotICAgLy8gc3dwcmludGYgaXMgYXZhaWxhYmxlIHNpbmNlIGdsaWJjIDIuMi4wCi0jICBpZiAhX19HTElCQ19QUkVSRVEoMiwyKSB8fCAoIWRlZmluZWQoX19VU0VfSVNPQzk5KSAmJiAhZGVmaW5lZChfX1VTRV9VTklYOTgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgIGVuZGlmCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jZW5kaWYKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfWUlFTEQKLQotI2lmbmRlZiBfX0dOVUNfXwotLy8KLS8vIGlmIHRoZSBjb21waWxlciBpcyBub3QgZ2NjIHdlIHN0aWxsIG5lZWQgdG8gYmUgYWJsZSB0byBwYXJzZQotLy8gdGhlIEdOVSBzeXN0ZW0gaGVhZGVycywgc29tZSBvZiB3aGljaCAobWFpbmx5IDxzdGRpbnQuaD4pCi0vLyB1c2UgR05VIHNwZWNpZmljIGV4dGVuc2lvbnM6Ci0vLwotIyAgaWZuZGVmIF9fZXh0ZW5zaW9uX18KLSMgICAgIGRlZmluZSBfX2V4dGVuc2lvbl9fCi0jICBlbmRpZgotIyAgaWZuZGVmIF9fY29uc3RfXwotIyAgICAgZGVmaW5lIF9fY29uc3RfXyBjb25zdAotIyAgZW5kaWYKLSMgIGlmbmRlZiBfX3ZvbGF0aWxlX18KLSMgICAgIGRlZmluZSBfX3ZvbGF0aWxlX18gdm9sYXRpbGUKLSMgIGVuZGlmCi0jICBpZm5kZWYgX19zaWduZWRfXwotIyAgICAgZGVmaW5lIF9fc2lnbmVkX18gc2lnbmVkCi0jICBlbmRpZgotIyAgaWZuZGVmIF9fdHlwZW9mX18KLSMgICAgIGRlZmluZSBfX3R5cGVvZl9fIHR5cGVvZgotIyAgZW5kaWYKLSMgIGlmbmRlZiBfX2lubGluZV9fCi0jICAgICBkZWZpbmUgX19pbmxpbmVfXyBpbmxpbmUKLSMgIGVuZGlmCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9tYWNvcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9tYWNvcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2OTIyZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vbWFjb3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEJpbGwgS2VtcGYgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgTWFjIE9TIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJNYWMgT1MiCi0KLSNpZiBfX01BQ0hfXyAmJiAhZGVmaW5lZChfTVNMX1VTSU5HX01TTF9DKQotCi0vLyBVc2luZyB0aGUgTWFjIE9TIFggc3lzdGVtIEJTRC1zdHlsZSBDIGxpYnJhcnkuCi0KLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfVU5JU1REX0gKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgZW5kaWYKLS8vCi0vLyBCZWdpbiBieSBpbmNsdWRpbmcgb3VyIGJvaWxlcnBsYXRlIGNvZGUgZm9yIFBPU0lYCi0vLyBmZWF0dXJlIGRldGVjdGlvbiwgdGhpcyBpcyBzYWZlIGV2ZW4gd2hlbiB1c2luZwotLy8gdGhlIE1TTCBhcyBNZXRyb3dlcmtzIHN1cHBseSB0aGVpciBvd24gPHVuaXN0ZC5oPgotLy8gdG8gcmVwbGFjZSB0aGUgcGxhdGZvcm0tbmF0aXZlIEJTRCBvbmUuIEcrKyB1c2VycwotLy8gc2hvdWxkIGFsc28gYWx3YXlzIGJlIGFibGUgdG8gZG8gdGhpcyBvbiBNYXhPUyBYLgotLy8KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0jICBpZm5kZWYgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICBlbmRpZgotCi0vLwotLy8gQlNEIHJ1bnRpbWUgaGFzIHB0aHJlYWRzLCBzaWdhY3Rpb24sIHNjaGVkX3lpZWxkIGFuZCBnZXR0aW1lb2ZkYXksCi0vLyBvZiB0aGVzZSBvbmx5IHB0aHJlYWRzIGFyZSBhZHZlcnRpc2VkIGluIDx1bmlzdGQuaD4sIHNvIHNldCB0aGUgCi0vLyBvdGhlciBvcHRpb25zIGV4cGxpY2l0bHk6Ci0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU0lHQUNUSU9OCi0KLSMgIGlmIChfX0dOVUNfXyA8IDMpICYmICFkZWZpbmVkKCBfX0FQUExFX0NDX18pCi0KLS8vIEdDQyBzdHJhbmdlICJpZ25vcmUgc3RkIiBtb2RlIHdvcmtzIGJldHRlciBpZiB5b3UgcHJldGVuZCBldmVyeXRoaW5nCi0vLyBpcyBpbiB0aGUgc3RkIG5hbWVzcGFjZSwgZm9yIHRoZSBtb3N0IHBhcnQuCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jICBlbmRpZgotCi0jICBpZiAoX19HTlVDX18gPT0gNCkKLQotLy8gQm90aCBnY2MgYW5kIGludGVsIHJlcXVpcmUgdGhlc2UuICAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTkFOT1NMRUVQCi0KLSMgIGVuZGlmCi0KLSNlbHNlCi0KLS8vIFVzaW5nIHRoZSBNU0wgQyBsaWJyYXJ5LgotCi0vLyBXZSB3aWxsIGV2ZW50dWFsbHkgc3VwcG9ydCB0aHJlYWRzIGluIG5vbi1DYXJib24gYnVpbGRzLCBidXQgd2UgZG8KLS8vIG5vdCBzdXBwb3J0IHRoaXMgeWV0LgotIyAgaWYgKCBkZWZpbmVkKFRBUkdFVF9BUElfTUFDX0NBUkJPTikgJiYgVEFSR0VUX0FQSV9NQUNfQ0FSQk9OICkgfHwgKCBkZWZpbmVkKFRBUkdFVF9DQVJCT04pICYmIFRBUkdFVF9DQVJCT04gKQotCi0jICBpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfUFRIUkVBRFMpCi0vLyBNUFRhc2tzIHN1cHBvcnQgaXMgZGVwcmVjYXRlZC9yZW1vdmVkIGZyb20gQm9vc3Q6Ci0vLyMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19NUFRBU0tTCi0jICBlbGlmICggX19kZXN0X29zID09IF9fbWFjX29zX3ggKQotLy8gV2UgYXJlIGRvaW5nIGEgQ2FyYm9uL01hY2gtTy9NU0wgYnVpbGQgd2hpY2ggaGFzIHB0aHJlYWRzLCBidXQgb25seSB0aGUKLS8vIGdldHRpbWVvZmRheSBhbmQgbm8gcG9zaXguCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotIyAgZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotLy8gVGhlIHJlbW90ZSBjYWxsIG1hbmFnZXIgZGVwZW5kcyBvbiB0aGlzLgotIyAgICBkZWZpbmUgTkROQk9PU1RfQklORF9FTkFCTEVfUEFTQ0FMCi0KLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vcW54bnRvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3FueG50by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MmJmNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vcW54bnRvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEppbSBEb3VnbGFzIDIwMDUuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFFOWCBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiUU5YIgotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0KLS8vIFFOWCBjbGFpbXMgWE9wZW4gdmVyc2lvbiA1IGNvbXBhdGliaWxpdHksIGJ1dCBkb2Vzbid0IGhhdmUgYW4gbmxfdHlwZXMuaAotLy8gb3IgbG9nMXAgYW5kIGV4cG0xOgotI3VuZGVmICBORE5CT09TVF9IQVNfTkxfVFlQRVNfSAotI3VuZGVmICBORE5CT09TVF9IQVNfTE9HMVAKLSN1bmRlZiAgTkROQk9PU1RfSEFTX0VYUE0xCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotI2RlZmluZSBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRQotI2RlZmluZSBORE5CT09TVF9IQVNfTkFOT1NMRUVQCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vc29sYXJpcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9zb2xhcmlzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTljZTQxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9zb2xhcmlzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBzdW4gc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIlN1biBTb2xhcmlzIgotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotLy8KLS8vIHB0aHJlYWRzIGRvbid0IGFjdHVhbGx5IHdvcmsgd2l0aCBnY2MgdW5sZXNzIF9QVEhSRUFEUyBpcyBkZWZpbmVkOgotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9QT1NJWF9USFJFQURTKSAmJiAhZGVmaW5lZChfUFRIUkVBRFMpCi0jIHVuZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotI2VuZGlmCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3N5bWJpYW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vc3ltYmlhbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMzIxOTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vc3ltYmlhbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBZdXJpeSBLcmFzbm9zY2hlayAyMDA5LiAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgc3ltYmlhbiBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJTeW1iaWFuIgotI2RlZmluZSBORE5CT09TVF9TWU1CSUFOIDEKLQotCi0jaWYgZGVmaW5lZChfX1M2MF8zWF9fKQotLy8gT3BlbiBDIC8gQysrIHBsdWdpbiB3YXMgaW50cm9kdXNlZCBpbiB0aGlzIFNESywgZWFybGllciB2ZXJzaW9ucyBkb24ndCBoYXZlIENSVCAvIFNUTAotIyAgZGVmaW5lIE5ETkJPT1NUX1M2MF8zcmRfRURJVElPTl9GUDJfT1JfTEFURVJfU0RLCi0vLyBtYWtlIHN1cmUgd2UgaGF2ZSBfX0dMSUJDX1BSRVJFUSBpZiBhdmFpbGFibGUgYXQgYWxsCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxjc3RkbGliPgotI2Vsc2UKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNlbmRpZi8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotLy8gUzYwIFNESyBkZWZpbmVzIF9QT1NJWF9WRVJTSU9OIGFzIFBPU0lYLjEKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfU1RESU5UX0gKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX0xPRzFQCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTE9HMVAKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX0VYUE0xCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfRVhQTTEKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfUE9TSVhfQVBJCi0jICAgIGRlZmluZSBORE5CT09TVF9QT1NJWF9BUEkKLSMgIGVuZGlmCi0vLyBlbmRpYW5lc3Mgc3VwcG9ydAotIyAgaW5jbHVkZSA8c3lzL2VuZGlhbi5oPgotLy8gU3ltYmlhbiBTREsgcHJvdmlkZXMgX0JZVEVfT1JERVIgaW5zdGVhZCBvZiBfX0JZVEVfT1JERVIKLSMgIGlmbmRlZiBfX0xJVFRMRV9FTkRJQU4KLSMgICAgaWZkZWYgX0xJVFRMRV9FTkRJQU4KLSMgICAgICBkZWZpbmUgX19MSVRUTEVfRU5ESUFOIF9MSVRUTEVfRU5ESUFOCi0jICAgIGVsc2UKLSMgICAgICBkZWZpbmUgX19MSVRUTEVfRU5ESUFOIDEyMzQKLSMgICAgZW5kaWYKLSMgIGVuZGlmCi0jICBpZm5kZWYgX19CSUdfRU5ESUFOCi0jICAgIGlmZGVmIF9CSUdfRU5ESUFOCi0jICAgICAgZGVmaW5lIF9fQklHX0VORElBTiBfQklHX0VORElBTgotIyAgICBlbHNlCi0jICAgICAgZGVmaW5lIF9fQklHX0VORElBTiA0MzIxCi0jICAgIGVuZGlmCi0jICBlbmRpZgotIyAgaWZuZGVmIF9fQllURV9PUkRFUgotIyAgICBkZWZpbmUgX19CWVRFX09SREVSIF9fTElUVExFX0VORElBTiAvLyBTeW1iaWFuIGlzIExFCi0jICBlbmRpZgotLy8gS25vd24gbGltaXRhdGlvbnMKLSMgIGRlZmluZSBORE5CT09TVF9BU0lPX0RJU0FCTEVfU0VSSUFMX1BPUlQKLSMgIGRlZmluZSBORE5CT09TVF9EQVRFX1RJTUVfTk9fTE9DQUxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLSMgIGRlZmluZSBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotI2Vsc2UgLy8gVE9ETzogTW9yZSBwbGF0Zm9ybSBzdXBwb3J0IGUuZy4gVUlRCi0jICBlcnJvciAiVW5zdXBwb3RlZCBTeW1iaWFuIFNESyIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX1dJTlNDV19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIgLy8gd2luc2N3IGRlZmluZXMgV0lOMzIgbWFjcm8KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Ztcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS92bXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWY3NDU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Ztcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBBcnR5b20gQmVpbGlzIDIwMTAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX1BMQVRGT1JNX1ZNU19IUFAgCi0jZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19QTEFURk9STV9WTVNfSFBQIAotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJPcGVuVk1TIiAKLQotI3VuZGVmICBORE5CT09TVF9IQVNfU1RESU5UX0ggCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSCAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX05MX1RZUEVTX0ggCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkgCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSCAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTIAotI2RlZmluZSBORE5CT09TVF9IQVNfTkFOT1NMRUVQIAotI2RlZmluZSBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRSAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUgCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19MT0cxUCAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0VYUE0xIAotI2RlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUyAKLSN1bmRlZiAgTkROQk9PU1RfSEFTX1NDSEVEX1lJRUxEIAotCi0jZW5kaWYgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS92eHdvcmtzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Z4d29ya3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjUwNDRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Z4d29ya3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzY5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IER1c3RpbiBTcGljdXp6YSAyMDA5LgotLy8gICAgICBBZGFwdGVkIHRvIHZ4V29ya3MgNi45IGJ5IFBldGVyIEJyb2NrYW1wIDIwMTIuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFNpbmNlIFdSUyBkb2VzIG5vdCB5ZXQgcHJvcGVybHkgc3VwcG9ydCBib29zdCB1bmRlciB2eFdvcmtzCi0vLyAgYW5kIHRoaXMgZmlsZSB3YXMgYmFkbHkgb3V0ZGF0ZWQsIGJ1dCBJIHdhcyBrZWVuIG9uIHVzaW5nIGl0LAotLy8gIEkgcGF0Y2hlZCBib29zdCBteXNlbGYgdG8gbWFrZSB0aGluZ3Mgd29yay4gVGhpcyBoYXMgYmVlbiB0ZXN0ZWQKLS8vICBhbmQgYWRhcHRlZCBieSBtZSBmb3IgdnhXb3JrcyA2LjkgKm9ubHkqLCBhcyBJJ20gbGFja2luZyBhY2Nlc3MKLS8vICB0byBlYXJsaWVyIDYuWCB2ZXJzaW9ucyEgVGhlIG9ubHkgdGhpbmcgSSBrbm93IGZvciBzdXJlIGlzIHRoYXQKLS8vICB2ZXJ5IG9sZCB2ZXJzaW9ucyBvZiB2eFdvcmtzIChuYW1lbHkgZXZlcnl0aGluZyBiZWxvdyA2LngpIGFyZQotLy8gIGFic29sdXRlbHkgdW5hYmxlIHRvIHVzZSBib29zdC4gVGhpcyBpcyBtYWlubHkgZHVlIHRvIHRoZSBjb21wbGV0ZWx5Ci0vLyAgb3V0ZGF0ZWQgbGlicmFyaWVzIGFuZCBhbmNpZW50IGNvbXBpbGVyIChHQ0MgMi45NiBvciB3b3JzZSkuIERvCi0vLyAgbm90IGV2ZW4gdGhpbmsgb2YgZ2V0dGluZyB0aGlzIHRvIHdvcmssIGEgbWlzZXJhYmxlIGZhaWx1cmUgd2lsbAotLy8gIGJlIGd1YXJhbnRlZWQhCi0vLyAgRXF1YWxseSwgdGhpcyBmaWxlIGhhcyBiZWVuIHRlc3RlZCBmb3IgUlRQcyAoUmVhbCBUaW1lIFByb2Nlc3NlcykKLS8vICBvbmx5LCBub3QgZm9yIERLTXMgKERvd25sb2FkYWJsZSBLZXJuZWwgTW9kdWxlcykuIFRoZXNlIHR3byB0eXBlcwotLy8gIG9mIGV4ZWN1dGFibGVzIGRpZmZlciBsYXJnZWx5IGluIHRoZSBhdmFpbGFibGUgZnVuY3Rpb25hbGl0eSBvZgotLy8gIHRoZSBDLWxpYnJhcnksIFNUTCwgYW5kIHNvIG9uLiBBIERLTSB1c2VzIGEgbGlicmFyeSBzaW1pbGFyIHRvIHRob3NlCi0vLyAgb2YgdnhXb3JrcyA1LlggLSB3aXRoIGFsbCBpdHMgbGltaXRhdGlvbnMgYW5kIGluY29tcGF0aWJpbGl0aWVzCi0vLyAgd2l0aCByZXNwZWN0IHRvIEFOU0kgQysrIGFuZCBTVEwuIFNvIHByb2JhYmx5IHRoZXJlIG1pZ2h0IGJlIHByb2JsZW1zCi0vLyAgd2l0aCB0aGUgdXNhZ2Ugb2YgYm9vc3QgZnJvbSBES01zLiBXUlMgb3IgYW55IHZvbHV0ZWVycyBhcmUgZnJlZSB0bwotLy8gIHByb3ZlIHRoZSBvcHBvc2l0ZSEKLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBTb21lIGltcG9ydGFudCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHVzYWdlIG9mIFBPU0lYIHNlbWFwaG9yZXM6Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gVnhXb3JrcyBhcyBhIHJlYWwgdGltZSBvcGVyYXRpbmcgc3lzdGVtIGhhbmRsZXMgdGhyZWFkcyBzb21ld2hhdAotLy8gZGlmZmVyZW50IGZyb20gd2hhdCAibm9ybWFsIiBPU2VzIGRvLCByZWdhcmRpbmcgdGhlaXIgc2NoZWR1bGluZyEKLS8vIFRoaXMgY291bGQgbGVhZCB0byBhIHNjZW5hcmlvIGNhbGxlZCAicHJpb3JpdHkgaW52ZXJzaW9uIiB3aGVuIHVzaW5nCi0vLyBzZW1hcGhvcmVzLCBzZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcmlvcml0eV9pbnZlcnNpb24uCi0vLwotLy8gTm93LCBWeFdvcmtzIFBPU0lYLXNlbWFwaG9yZXMgZm9yIERLTSdzIGRlZmF1bHQgdG8gdGhlIHVzYWdlIG9mCi0vLyBwcmlvcml0eSBpbnZlcnRpbmcgc2VtYXBob3Jlcywgd2hpY2ggaXMgZmluZS4gT24gdGhlIG90aGVyIGhhbmQsCi0vLyBmb3IgUlRQJ3MgaXQgZGVmYXVsdHMgdG8gdXNpbmcgbm9uIHByaW9yaXR5IGludmVydGluZyBzZW1hcGhvcmVzLAotLy8gd2hpY2ggY291bGQgZWFzaWx5IHBvc2UgYSBzZXJpb3VzIHByb2JsZW0gZm9yIGEgcmVhbCB0aW1lIHByb2Nlc3MsCi0vLyBpLmUuIGRlYWRsb2NrcyEgVG8gb3ZlcmNvbWUgdGhpcyB0d28gcG9zc2liaWxpdGllcyBkbyBleGlzdDoKLS8vCi0vLyBhKSBQYXRjaCBldmVyeSBwaWVjZSBvZiBib29zdCB0aGF0IHVzZXMgc2VtYXBob3JlcyB0byBpbnN0YW5jaWF0ZQotLy8gICAgdGhlIHByb3BlciB0eXBlIG9mIHNlbWFwaG9yZXMuIFRoaXMgaXMgbm9uLWludHJ1c2l2ZSB3aXRoIHJlc3BlY3QKLS8vICAgIHRvIHRoZSBPUyBhbmQgY291bGQgcmVsYXRpdmVseSBlYXN5IGJlZW4gZG9uZSBieSBnaXZpbmcgYWxsCi0vLyAgICBzZW1hcGhvcmVzIGF0dHJpYnV0ZXMgZGV2aWF0aW5nIGZyb20gdGhlIGRlZmF1bHQgKGZvciBpbi1kZXB0aAotLy8gICAgaW5mb3JtYXRpb24gc2VlIHRoZSBQT1NJWCBmdW5jdGlvbnMgcHRocmVhZF9tdXRleGF0dHJfaW5pdCgpCi0vLyAgICBhbmQgcHRocmVhZF9tdXRleGF0dHJfc2V0cHJvdG9jb2woKSkuIEhvd2V2ZXIgdGhpcyBicmVha3MgYWxsCi0vLyAgICB0b28gZWFzaWx5LCBhcyB3aXRoIGV2ZXJ5IG5ldyB2ZXJzaW9uIHNvbWUgYm9vc3QgbGlicmFyeSBjb3VsZAotLy8gICAgYWxsIGluIGEgc3VkZGVuIHN0YXJ0IHVzaW5nIHNlbWFwaG9yZXMsIHJlc3VycmVjdGluZyB0aGUgdmVyeQotLy8gICAgc2FtZSwgaGFyZCB0byBsb2NhdGUgcHJvYmxlbSBvdmVyIGFuZCBvdmVyIGFnYWluIQotLy8KLS8vIGIpIFdlIGNvdWxkIGNoYW5nZSB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIGZvciBQT1NJWC1zZW1hcGhvcmVzCi0vLyAgICB0aGF0IFZ4V29ya3MgdXNlcyBmb3IgUlRQJ3MgYW5kIHRoaXMgaXMgYmVpbmcgc3VnZ2VzdGVkIGhlcmUsCi0vLyAgICBhcyBpdCB3aWxsIG1vcmUgb3IgbGVzcyBzZWFtbGVzc2x5IGludGVncmF0ZSB3aXRoIGJvb3N0LiBJIGdvdAotLy8gICAgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBmcm9tIFdSUyBob3cgdG8gZG8gdGhpcywgY29tcGFyZQotLy8gICAgV2luZCBSaXZlciBUU1IjIDEyMDk3Njg6Ci0vLwotLy8gSW5zdHJ1Y3Rpb25zIGZvciBjaGFuZ2luZyB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIG9mIFBPU0lYLQotLy8gc2VtYXBob3JlcyBmb3IgUlRQJ3MgaW4gVnhXb3JrcyA2Ljk6Ci0vLyAtIEVkaXQgdGhlIGZpbGUgL3Z4d29ya3MtNi45L3RhcmdldC91c3Ivc3JjL3Bvc2l4L3B0aHJlYWRMaWIuYwotLy8gICBpbiB0aGUgcm9vdCBvZiB5b3VyIFdvcmtiZW5jaC1pbnN0YWxsYXRpb24uCi0vLyAtIEFyb3VuZCBsaW5lIDkxNyB0aGVyZSBzaG91bGQgYmUgdGhlIGRlZmluaXRpb24gb2YgdGhlIGRlZmF1bHQKLS8vICAgbXV0ZXggYXR0cmlidXRlczoKLS8vCi0vLyAgIExPQ0FMIHB0aHJlYWRfbXV0ZXhhdHRyX3QgZGVmYXVsdE11dGV4QXR0ciA9Ci0vLyAgICAgICB7Ci0vLyAgICAgICBQVEhSRUFEX0lOSVRJQUxJWkVEX09CSiwgUFRIUkVBRF9QUklPX05PTkUsIDAsCi0vLyAgICAgICBQVEhSRUFEX01VVEVYX0RFRkFVTFQKLS8vICAgICAgIH07Ci0vLwotLy8gICBIZXJlLCByZXBsYWNlIFBUSFJFQURfUFJJT19OT05FIGJ5IFBUSFJFQURfUFJJT19JTkhFUklULgotLy8gLSBBcm91bmQgbGluZSAxMjM2IHRoZXJlIHNob3VsZCBiZSBhIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvbgotLy8gICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCkuIEEgY291cGxlIG9mIGxpbmVzIGJlbG93IHlvdSBzaG91bGQKLS8vICAgZmluZCBhIGJsb2NrIG9mIGNvZGUgbGlrZSB0aGlzOgotLy8KLS8vICAgcEF0dHItPm11dGV4QXR0clN0YXR1cyAgICAgID0gUFRIUkVBRF9JTklUSUFMSVpFRF9PQko7Ci0vLyAgIHBBdHRyLT5tdXRleEF0dHJQcm90b2NvbCAgICA9IFBUSFJFQURfUFJJT19OT05FOwotLy8gICBwQXR0ci0+bXV0ZXhBdHRyUHJpb2NlaWxpbmcgPSAwOwotLy8gICBwQXR0ci0+bXV0ZXhBdHRyVHlwZSAgICAgICAgPSBQVEhSRUFEX01VVEVYX0RFRkFVTFQ7Ci0vLwotLy8gICBIZXJlIGFnYWluLCByZXBsYWNlIFBUSFJFQURfUFJJT19OT05FIGJ5IFBUSFJFQURfUFJJT19JTkhFUklULgotLy8gLSBGaW5hbGx5LCByZWJ1aWxkIHlvdXIgVlNCLiBUaGlzIHdpbGwgY3JlYXRlIGEgbmV3IFZ4V29ya3Mga2VybmVsCi0vLyAgIHdpdGggdGhlIGNoYW5nZWQgcHJvcGVydGllcy4gVGhhdCdzIGl0ISBOb3csIHVzaW5nIGJvb3N0IHNob3VsZAotLy8gICBubyBsb25nZXIgY2F1c2UgYW55IHByb2JsZW1zIHdpdGggdGFzayBkZWFkbG9ja3MhCi0vLwotLy8gQW5kIGhlcmUncyBhbm90aGVyIHVzZWZ1bCBwaWVjZSBvZiBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIFZ4V29ya3MnCi0vLyBQT1NJWC1mdW5jdGlvbmFsaXR5IGluIGdlbmVyYWw6Ci0vLyBWeFdvcmtzIGlzIG5vdCBhIGdlbnVpbmUgUE9TSVgtT1MgaW4gaXRzZWxmLCByYXRoZXIgaXQgaXMgdXNpbmcgYQotLy8ga2luZCBvZiBjb21wYXRpYmlsaXR5IGxheWVyIChzb3J0IG9mIGEgd3JhcHBlcikgdG8gZW11bGF0ZSB0aGUKLS8vIFBPU0lYLWZ1bmN0aW9uYWxpdHkgYnkgdXNpbmcgaXRzIG93biByZXNvdXJjZXMgYW5kIGZ1bmN0aW9ucy4KLS8vIEF0IHRoZSB0aW1lIGEgdGFzayAodGhyZWFkKSBjYWxscyBpdCdzIGZpcnN0IFBPU0lYLWZ1bmN0aW9uIGR1cmluZwotLy8gcnVudGltZSBpdCBpcyBiZWluZyB0cmFuc2Zvcm1lZCBieSB0aGUgT1MgaW50byBhIFBPU0lYLXRocmVhZC4KLS8vIFRoaXMgdHJhbnNmb3JtYXRpb24gZG9lcyBpbmNsdWRlIGEgY2FsbCB0byBtYWxsb2MoKSB0byBhbGxvY2F0ZSB0aGUKLS8vIG1lbW9yeSByZXF1aXJlZCBmb3IgdGhlIGhvdXNla2VlcGluZyBvZiBQT1NJWC10aHJlYWRzLiBJbiBhIGhpZ2gKLS8vIHByaW9yaXR5IFJUUCB0aGlzIG1hbGxvYygpIGNhbGwgbWF5IGJlIGhpZ2hseSB1bmRlc2lyYWJsZSwgYXMgaXRzCi0vLyB0aW1pbmcgaXMgbW9yZSBvciBsZXNzIHVucHJlZGljdGFibGUgKGRlcGVuZGluZyBvbiB3aGF0IHlvdXIgYWN0dWFsCi0vLyBoZWFwIGxvb2tzIGxpa2UpLiBZb3UgY2FuIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtIGJ5IGNhbGxpbmcgdGhlCi0vLyBmdW5jdGlvbiB0aHJlYWRfc2VsZigpIGF0IGEgd2VsbCBkZWZpbmVkIHBvaW50IGluIHRoZSBjb2RlIG9mIHRoZQotLy8gdGFzaywgZS5nLiBzaG9ydGx5IGFmdGVyIHRoZSB0YXNrIHNwYXducyB1cC4gVGhlcmVieSB5b3UgYXJlIGFibGUKLS8vIHRvIGRlZmluZSB0aGUgdGltZSB3aGVuIHRoZSB0YXNrLXRyYW5zZm9ybWF0aW9uIHdpbGwgdGFrZSBwbGFjZSBhbmQKLS8vIHlvdSBjb3VsZCBzaGlmdCBpdCB0byBhbiB1bmNyaXRpY2FsIHBvaW50IHdoZXJlIGEgbWFsbG9jKCkgY2FsbCBpcwotLy8gdG9sZXJhYmxlLiBTbywgaWYgdGhpcyBjb3VsZCBwb3NlIGEgcHJvYmxlbSBmb3IgeW91ciBjb2RlLCByZW1lbWJlcgotLy8gdG8gY2FsbCB0aHJlYWRfc2VsZigpIGZyb20gdGhlIGFmZmVjdGVkIHRhc2sgYXQgYW4gZWFybHkgc3RhZ2UuCi0vLwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotLy8gQmxvY2sgb3V0IGFsbCB2ZXJzaW9ucyBiZWZvcmUgdnhXb3JrcyA2LngsIGFzIHRoZXNlIGRvbid0IHdvcms6Ci0vLyBJbmNsdWRlIGhlYWRlciB3aXRoIHRoZSB2eFdvcmtzIHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIHF1ZXJ5IHRoZW0KLSNpbmNsdWRlIDx2ZXJzaW9uLmg+Ci0jaWYgIWRlZmluZWQoX1dSU19WWFdPUktTX01BSk9SKSB8fCAoX1dSU19WWFdPUktTX01BSk9SIDwgNikKLSMgIGVycm9yICJUaGUgdnhXb3JrcyB2ZXJzaW9uIHlvdSdyZSB1c2luZyBpcyBzbyBiYWRseSBvdXRkYXRlZCxcCi0gICAgICAgICAgaXQgZG9lc24ndCB3b3JrIGF0IGFsbCB3aXRoIGJvb3N0LCBzb3JyeSwgbm8gY2hhbmNlISIKLSNlbmRpZgotCi0vLyBIYW5kbGUgdmVyc2lvbnMgYWJvdmUgNS5YIGJ1dCBiZWxvdyA2LjkKLSNpZiAoX1dSU19WWFdPUktTX01BSk9SID09IDYpICYmIChfV1JTX1ZYV09SS1NfTUlOT1IgPCA5KQotLy8gVE9ETzogU3RhcnRpbmcgZnJvbSB3aGF0IHZlcnNpb24gZG9lcyB2eFdvcmtzIHdvcmsgd2l0aCBib29zdD8KLS8vIFdlIGNhbid0IHJlYXNvbmFibHkgaW5zZXJ0IGEgI3dhcm5pbmcgIiIgYXMgYSB1c2VyIGhpbnQgaGVyZSwKLS8vIGFzIHRoaXMgd2lsbCBzaG93IHVwIHdpdGggZXZlcnkgZmlsZSBpbmNsdWRpbmcgc29tZSBib29zdCBoZWFkZXIsCi0vLyBiYWRseSBidWdnaW5nIHRoZSB1c2VyLi4uIFNvIGZvciB0aGUgdGltZSBiZWluZyB3ZSBqdXN0IGxlYXZlIGl0LgotI2VuZGlmCi0KLS8vIHZ4V29ya3Mgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAidnhXb3JrcyIKLQotLy8gU3BlY2lhbCBiZWhhdmlvdXIgZm9yIERLTXM6Ci0jaWZkZWYgX1dSU19LRVJORUwKLSAgLy8gREtNcyBkbyBub3QgaGF2ZSB0aGUgPGN3Y2hhcj4taGVhZGVyLAotICAvLyBidXQgYXBwYXJlbnRseSB0aGV5IGRvIGhhdmUgYW4gaW50cmluc2ljIHdjaGFyX3QgbWVhbndoaWxlIQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ0hBUgotCi0gIC8vIExvdHMgb2Ygd2lkZS1mdW5jdGlvbnMgYW5kIC1oZWFkZXJzIGFyZSB1bmF2YWlsYWJsZSBmb3IgREtNcyBhcyB3ZWxsOgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ1RZUEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJFQU1CVUYKLSNlbmRpZgotCi0vLyBHZW5lcmFsbHkgYXZhaWxhYmxlIGhlYWRlcnM6Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotI2RlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TTElTVAotCi0vLyB2eFdvcmtzIGRvZXMgbm90IGhhdmUgaW5zdGFsbGVkIGFuIGljb252LWxpYnJhcnkgYnkgZGVmYXVsdCwKLS8vIHNvIHVuZm9ydHVuYXRlbHkgbm8gVW5pY29kZSBzdXBwb3J0IGZyb20gc2NyYXRjaCBpcyBhdmFpbGFibGUhCi0vLyBUaHVzLCBpbnN0ZWFkIGl0IGlzIHN1Z2dlc3RlZCB0byBzd2l0Y2ggdG8gSUNVLCBhcyB0aGlzIHNlZW1zCi0vLyB0byBiZSB0aGUgbW9zdCBjb21wbGV0ZSBhbmQgcG9ydGFibGUgb3B0aW9uLi4uCi0jZGVmaW5lIE5ETkJPT1NUX0xPQ0FMRV9XSVRIX0lDVQotCi0vLyBHZW5lcmFsbHkgYXZhaWxhYmxlIGZ1bmN0aW9uYWxpdHk6Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotI2RlZmluZSBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRQotI2RlZmluZSBORE5CT09TVF9IQVNfTUFDUk9fVVNFX0ZBQ0VUCi0KLS8vIEdlbmVyYWxseSB1bmF2YWlsYWJsZSBmdW5jdGlvbmFsaXR5LCBkZWxpdmVyZWQgYnkgYm9vc3QncyB0ZXN0IGZ1bmN0aW9uOgotLy8jZGVmaW5lIE5ETkJPT1NUX05PX0RFRFVDRURfVFlQRU5BTUUgLy8gQ29tbWVudGVkIHRoaXMgb3V0LCBib29zdCdzIHRlc3QgZ2l2ZXMgYW4gZXJyb3JuZW91cyByZXN1bHQhCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLQotLy8gR2VuZXJhbGx5IGF2YWlsYWJsZSB0aHJlYWRpbmcgQVBJJ3M6Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotI2RlZmluZSBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1NJR0FDVElPTgotCi0vLyBGdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBmb3IgUlRQcyBvbmx5OgotI2lmZGVmIF9fUlRQX18KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT0cxUAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotI2VuZGlmCi0KLS8vIEZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGZvciBES01zIG9ubHk6Ci0jaWZkZWYgX1dSU19LRVJORUwKLSAgLy8gTHVja2lseSwgYXQgdGhlIG1vbWVudCB0aGVyZSBzZWVtcyB0byBiZSBub25lIQotI2VuZGlmCi0KLS8vIFRoZXNlICNkZWZpbmVzIGFsbG93IHBvc2l4X2ZlYXR1cmVzIHRvIHdvcmssIHNpbmNlIHZ4V29ya3MgZG9lc24ndAotLy8gI2RlZmluZSB0aGVtIGl0c2VsZiBmb3IgREtNcyAoZm9yIFJUUHMgb24gdGhlIGNvbnRyYXJ5IGl0IGRvZXMpOgotI2lmZGVmIF9XUlNfS0VSTkVMCi0jICBpZm5kZWYgX1BPU0lYX1RJTUVSUwotIyAgICBkZWZpbmUgX1BPU0lYX1RJTUVSUyAgMQotIyAgZW5kaWYKLSMgIGlmbmRlZiBfUE9TSVhfVEhSRUFEUwotIyAgICBkZWZpbmUgX1BPU0lYX1RIUkVBRFMgMQotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyB2eFdvcmtzIGRvZXNuJ3Qgd29yayB3aXRoIGFzaW8gc2VyaWFsIHBvcnRzOgotI2RlZmluZSBORE5CT09TVF9BU0lPX0RJU0FCTEVfU0VSSUFMX1BPUlQKLS8vIFRPRE86IFRoZSBwcm9ibGVtIGhlcmUgc2VlbXMgdG8gYmVlIHRoYXQgdnhXb3JrcyB1c2VzIGl0cyBvd24sIHZlcnkgc3BlY2lmaWMKLS8vICAgICAgIHdheXMgdG8gaGFuZGxlIHNlcmlhbCBwb3J0cywgaW5jb21wYXRpYmxlIHdpdGggUE9TSVggb3IgYW55dGhpbmcuLi4KLS8vICAgICAgIE1heWJlIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gd291bGQgYmUgcG9zc2libGUsIGJ1dCB1bnRpbCB0aGUKLS8vICAgICAgIHN0cmFpZ2h0IG5lZWQgYXJpc2VzLi4uIFRoaXMgaW1wbGVtZW50YXRpb24gd291bGQgcHJlc3VtYWJseSBjb25zaXN0Ci0vLyAgICAgICBvZiBzb21lIHZ4V29ya3Mgc3BlY2lmaWMgaW9jdGwtY2FsbHMsIGV0Yy4gQW55IHZvbHV0ZWVycz8KLQotLy8gdnhXb3Jrcy1hcm91bmQ6IDx0aW1lLmg+ICNkZWZpbmVzIENMT0NLU19QRVJfU0VDIGFzIHN5c0Nsa1JhdGVHZXQoKSBidXQKLS8vICAgICAgICAgICAgICAgICBtaXNlcmFibHkgZmFpbHMgdG8gI2luY2x1ZGUgdGhlIHJlcXVpcmVkIDxzeXNMaWIuaD4gdG8gbWFrZQotLy8gICAgICAgICAgICAgICAgIHN5c0Nsa1JhdGVHZXQoKSBhdmFpbGFibGUhIFNvIHdlIG1hbnVhbGx5IGluY2x1ZGUgaXQgaGVyZS4KLSNpZmRlZiBfX1JUUF9fCi0jICBpbmNsdWRlIDx0aW1lLmg+Ci0jICBpbmNsdWRlIDxzeXNMaWIuaD4KLSNlbmRpZgotCi0vLyB2eFdvcmtzLWFyb3VuZDogSW4gPHN0ZGludC5oPiB0aGUgbWFjcm9zIElOVDMyX0MoKSwgVUlOVDMyX0MoKSwgSU5UNjRfQygpIGFuZAotLy8gICAgICAgICAgICAgICAgIFVJTlQ2NF9DKCkgYXJlIGRlZmluZWQgZXJyb3JuZW91c2x5LCB5aWVsZGluZyBub3QgYSBzaWduZWQvCi0vLyAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZy9sb25nIGxvbmcgdHlwZSwgYnV0IGEgc2lnbmVkL3Vuc2lnbmVkIGludC9sb25nCi0vLyAgICAgICAgICAgICAgICAgdHlwZS4gRXZlbnR1YWxseSB0aGlzIGxlYWRzIHRvIGNvbXBpbGUgZXJyb3JzIGluIHJhdGlvX2Z3ZC5ocHAsCi0vLyAgICAgICAgICAgICAgICAgd2hlbiB0cnlpbmcgdG8gZGVmaW5lIHNldmVyYWwgY29uc3RhbnRzIHdoaWNoIGRvIG5vdCBmaXQgaW50byBhCi0vLyAgICAgICAgICAgICAgICAgbG9uZyB0eXBlISBXZSBjb3JyZWN0IHRoZW0gaGVyZSBieSByZWRlZmluaW5nLgotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0KLS8vIFNvbWUgbWFjcm8tbWFnaWMgdG8gZG8gdGhlIGpvYgotI2RlZmluZSBWWF9KT0lOKFgsIFkpICAgICBWWF9ET19KT0lOKFgsIFkpCi0jZGVmaW5lIFZYX0RPX0pPSU4oWCwgWSkgIFZYX0RPX0pPSU4yKFgsIFkpCi0jZGVmaW5lIFZYX0RPX0pPSU4yKFgsIFkpIFgjI1kKLQotLy8gQ29ycmVjdGx5IHNldHVwIHRoZSBtYWNyb3MKLSN1bmRlZiAgSU5UMzJfQwotI3VuZGVmICBVSU5UMzJfQwotI3VuZGVmICBJTlQ2NF9DCi0jdW5kZWYgIFVJTlQ2NF9DCi0jZGVmaW5lIElOVDMyX0MoeCkgIFZYX0pPSU4oeCwgTCkKLSNkZWZpbmUgVUlOVDMyX0MoeCkgVlhfSk9JTih4LCBVTCkKLSNkZWZpbmUgSU5UNjRfQyh4KSAgVlhfSk9JTih4LCBMTCkKLSNkZWZpbmUgVUlOVDY0X0MoeCkgVlhfSk9JTih4LCBVTEwpCi0KLS8vICNpbmNsdWRlIExpYnJhcmllcyByZXF1aXJlZCBmb3IgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBhZGFwdGlvbgotI2luY2x1ZGUgPGlvTGliLmg+Ci0jaW5jbHVkZSA8dGlja0xpYi5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0KLS8vIFVzZSBDLWxpbmthZ2UgZm9yIHRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucwotZXh0ZXJuICJDIiB7Ci0KLS8vIHZ4V29ya3MtYXJvdW5kOiBUaGUgcmVxdWlyZWQgZnVuY3Rpb25zIGdldHJsaW1pdCgpIGFuZCBnZXRybGltaXQoKSBhcmUgbWlzc2luZy4KLS8vICAgICAgICAgICAgICAgICBCdXQgd2UgaGF2ZSB0aGUgc2ltaWxhciBmdW5jdGlvbnMgZ2V0cHJsaW1pdCgpIGFuZCBzZXRwcmxpbWl0KCksCi0vLyAgICAgICAgICAgICAgICAgd2hpY2ggbWF5IHNlcnZlIHRoZSBwdXJwb3NlLgotLy8gICAgICAgICAgICAgICAgIFByb2JsZW06IFRoZSB2eFdvcmtzLWRvY3VtZW50YXRpb24gcmVnYXJkaW5nIHRoZXNlIGZ1bmN0aW9ucwotLy8gICAgICAgICAgICAgICAgIGRvZXNuJ3QgZGVzZXJ2ZSBpdHMgbmFtZSEgSXQgaXNuJ3QgZG9jdW1lbnRlZCB3aGF0IHRoZSBmaXJzdCB0d28KLS8vICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIGlkdHlwZSBhbmQgaWQgbWVhbiwgc28gd2UgbXVzdCBmYWxsIGJhY2sgdG8gYW4gZWR1Y2F0ZWQKLS8vICAgICAgICAgICAgICAgICBndWVzcyAtIG51bGwsIGFyZ2guLi4gOi0vCi0KLS8vIFRPRE86IGdldHBybGltaXQoKSBhbmQgc2V0cHJsaW1pdCgpIGRvIGV4aXN0IGZvciBSVFBzIG9ubHksIGZvciB3aGF0ZXZlciByZWFzb24uCi0vLyAgICAgICBUaHVzIGZvciBES01zIHRoZXJlIHdvdWxkIGhhdmUgdG8gYmUgYW5vdGhlciBpbXBsZW1lbnRhdGlvbi4KLSNpZmRlZiBfX1JUUF9fCi0gIGlubGluZSBpbnQgZ2V0cmxpbWl0KGludCByZXNvdXJjZSwgc3RydWN0IHJsaW1pdCAqcmxwKXsKLSAgICByZXR1cm4gZ2V0cHJsaW1pdCgwLCAwLCByZXNvdXJjZSwgcmxwKTsKLSAgfQotCi0gIGlubGluZSBpbnQgc2V0cmxpbWl0KGludCByZXNvdXJjZSwgY29uc3Qgc3RydWN0IHJsaW1pdCAqcmxwKXsKLSAgICByZXR1cm4gc2V0cHJsaW1pdCgwLCAwLCByZXNvdXJjZSwgY29uc3RfY2FzdDxzdHJ1Y3QgcmxpbWl0Kj4ocmxwKSk7Ci0gIH0KLSNlbmRpZgotCi0vLyB2eFdvcmtzIGhhcyBmdHJ1bmNhdGUoKSBvbmx5LCBzbyB3ZSBkbyBzaW11bGF0ZSB0cnVuY2F0ZSgpOgotaW5saW5lIGludCB0cnVuY2F0ZShjb25zdCBjaGFyICpwLCBvZmZfdCBsKXsKLSAgaW50IGZkID0gb3BlbihwLCBPX1dST05MWSk7Ci0gIGlmIChmZCA9PSAtMSl7Ci0gICAgZXJybm8gPSBFQUNDRVM7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIGlmIChmdHJ1bmNhdGUoZmQsIGwpID09IC0xKXsKLSAgICBjbG9zZShmZCk7Ci0gICAgZXJybm8gPSBFQUNDRVM7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIHJldHVybiBjbG9zZShmZCk7Ci19Ci0KLS8vIEZha2Ugc3ltbGluayBoYW5kbGluZyBieSBkdW1teSBmdW5jdGlvbnM6Ci1pbmxpbmUgaW50IHN5bWxpbmsoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKXsKLSAgLy8gdnhXb3JrcyBoYXMgbm8gc3ltbGlua3MgLT4gYWx3YXlzIHJldHVybiBhbiBlcnJvciEKLSAgZXJybm8gPSBFQUNDRVM7Ci0gIHJldHVybiAtMTsKLX0KLQotaW5saW5lIHNzaXplX3QgcmVhZGxpbmsoY29uc3QgY2hhciosIGNoYXIqLCBzaXplX3QpewotICAvLyB2eFdvcmtzIGhhcyBubyBzeW1saW5rcyAtPiBhbHdheXMgcmV0dXJuIGFuIGVycm9yIQotICBlcnJubyA9IEVBQ0NFUzsKLSAgcmV0dXJuIC0xOwotfQotCi0vLyB2eFdvcmtzIGNsYWltcyB0byBpbXBsZW1lbnQgZ2V0dGltZW9mZGF5IGluIHN5cy90aW1lLmgKLS8vIGJ1dCBuZXZlcnRoZWxlc3MgZG9lcyBub3QgcHJvdmlkZSBpdCEgU2VlCi0vLyBodHRwczovL3N1cHBvcnQud2luZHJpdmVyLmNvbS9vbHNQb3J0YWwvZmFjZXMvbWFpbnRlbmFuY2UvdGVjaHRpcERldGFpbF9ub0hlYWRlci5qc3B4P2RvY0lkPTE2NDQyJmNvbnRlbnRJZD1XUl9URUNIVElQXzAwNjI1NgotLy8gV2UgaW1wbGVtZW50IGEgc3Vycm9nYXRlIHZlcnNpb24gaGVyZSB2aWEgY2xvY2tfZ2V0dGltZToKLWlubGluZSBpbnQgZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0diwgdm9pZCAqIC8qdHp2Ki8pIHsKLSAgc3RydWN0IHRpbWVzcGVjIHRzOwotICBjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRzKTsKLSAgdHYtPnR2X3NlYyAgPSB0cy50dl9zZWM7Ci0gIHR2LT50dl91c2VjID0gdHMudHZfbnNlYyAvIDEwMDA7Ci0gIHJldHVybiAwOwotfQotCi0vLyB2eFdvcmtzIGRvZXMgcHJvdmlkZSBuZWl0aGVyIHN0cnVjdCB0bXMgbm9yIGZ1bmN0aW9uIHRpbWVzKCkhCi0vLyBXZSBpbXBsZW1lbnQgYW4gZW1wdHkgZHVtbXktZnVuY3Rpb24sIHNpbXBseSBzZXR0aW5nIHRoZSB1c2VyCi0vLyBhbmQgc3lzdGVtIHRpbWUgdG8gdGhlIGhhbGYgb2YgdGhldyBhY3R1YWwgc3lzdGVtIHRpY2tzLXZhbHVlCi0vLyBhbmQgdGhlIGNoaWxkIHVzZXIgYW5kIHN5c3RlbSB0aW1lIHRvIDAuCi0vLyBSYXRoZXIgdWdseSBidXQgYXQgbGVhc3QgaXQgc3VwcHJlc3NlcyBjb21waWxlciBlcnJvcnMuLi4KLS8vIFVuZm9ydHVuYXRlbHksIHRoaXMgb2YgY291cnNlICpkb2VzKiBoYXZlIGFuIHNldmVyZSBpbXBhY3Qgb24KLS8vIGRlcGVuZGFudCBsaWJyYXJpZXMsIGFjdHVhbGx5IHRoaXMgaXMgY2hyb25vIG9ubHkhIEhlcmUgaXQgd2lsbAotLy8gbm90IGJlIHBvc3NpYmxlIHRvIGNvcnJlY3RseSB1c2UgdXNlciBhbmQgc3lzdGVtIHRpbWVzISBCdXQKLS8vIGFzIHZ4V29ya3MgaXMgbGFja2luZyB0aGUgYWJpbGl0eSB0byBjYWxjdWxhdGUgdXNlciBhbmQgc3lzdGVtCi0vLyBwcm9jZXNzIHRpbWVzIHRoZXJlIHNlZW1zIHRvIGJlIG5vIG90aGVyIHBvc3NpYmxlIHNvbHV0aW9uLgotc3RydWN0IHRtc3sKLSAgY2xvY2tfdCB0bXNfdXRpbWU7ICAvLyBVc2VyIENQVSB0aW1lCi0gIGNsb2NrX3QgdG1zX3N0aW1lOyAgLy8gU3lzdGVtIENQVSB0aW1lCi0gIGNsb2NrX3QgdG1zX2N1dGltZTsgLy8gVXNlciBDUFUgdGltZSBvZiB0ZXJtaW5hdGVkIGNoaWxkIHByb2Nlc3NlcwotICBjbG9ja190IHRtc19jc3RpbWU7IC8vIFN5c3RlbSBDUFUgdGltZSBvZiB0ZXJtaW5hdGVkIGNoaWxkIHByb2Nlc3NlcwotfTsKLQotaW5saW5lIGNsb2NrX3QgdGltZXMoc3RydWN0IHRtcyAqdCl7Ci0gIHN0cnVjdCB0aW1lc3BlYyB0czsKLSAgY2xvY2tfZ2V0dGltZShDTE9DS19USFJFQURfQ1BVVElNRV9JRCwgJnRzKTsKLSAgY2xvY2tfdCB0aWNrcyhzdGF0aWNfY2FzdDxjbG9ja190PihzdGF0aWNfY2FzdDxkb3VibGU+KHRzLnR2X3NlYykgICogQ0xPQ0tTX1BFUl9TRUMgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4odHMudHZfbnNlYykgKiBDTE9DS1NfUEVSX1NFQyAvIDEwMDAwMDAuMCkpOwotICB0LT50bXNfdXRpbWUgID0gdGlja3MvMlU7Ci0gIHQtPnRtc19zdGltZSAgPSB0aWNrcy8yVTsKLSAgdC0+dG1zX2N1dGltZSA9IDA7IC8vIHZ4V29ya3MgaXMgbGFja2luZyB0aGUgY29uY2VwdCBvZiBhIGNoaWxkIHByb2Nlc3MhCi0gIHQtPnRtc19jc3RpbWUgPSAwOyAvLyAtPiBTZXQgdGhlIHdhaXQgdGltZXMgZm9yIGNoaWxkcyB0byAwCi0gIHJldHVybiB0aWNrczsKLX0KLQotfSAvLyBleHRlcm4gIkMiCi0KLS8vIFB1dCB0aGUgc2VsZm1hZGUgZnVuY3Rpb25zIGludG8gdGhlIHN0ZC1uYW1lc3BhY2UsIGp1c3QgaW4gY2FzZQotbmFtZXNwYWNlIHN0ZCB7Ci0jIGlmZGVmIF9fUlRQX18KLSAgICB1c2luZyA6OmdldHJsaW1pdDsKLSAgICB1c2luZyA6OnNldHJsaW1pdDsKLSMgZW5kaWYKLSAgdXNpbmcgOjp0cnVuY2F0ZTsKLSAgdXNpbmcgOjpzeW1saW5rOwotICB1c2luZyA6OnJlYWRsaW5rOwotICB1c2luZyA6OnRpbWVzOwotICB1c2luZyA6OmdldHRpbWVvZmRheTsKLX0KLQotLy8gU29tZSBtb3JlIG1hY3JvLW1hZ2ljOgotLy8gdnhXb3Jrcy1hcm91bmQ6IFNvbWUgZnVuY3Rpb25zIGFyZSBub3QgcHJlc2VudCBvciBicm9rZW4gaW4gdnhXb3JrcwotLy8gICAgICAgICAgICAgICAgIGJ1dCBtYXkgYmUgcGF0Y2hlZCB0byBsaWZlIHZpYSBoZWxwZXIgbWFjcm9zLi4uCi0KLS8vIEluY2x1ZGUgc2lnbmFsLmggd2hpY2ggbWlnaHQgY29udGFpbiBhIHR5cG8gdG8gYmUgY29ycmVjdGVkIGhlcmUKLSNpbmNsdWRlIDxzaWduYWwuaD4KLQotI2RlZmluZSBnZXRwYWdlc2l6ZSgpICAgIHN5c2NvbmYoX1NDX1BBR0VTSVpFKSAgICAgICAgIC8vIGdldHBhZ2VzaXplIGlzIGRlcHJlY2F0ZWQgYW55d2F5IQotI2lmbmRlZiBTX0lTU09DSwotIyAgZGVmaW5lIFNfSVNTT0NLKG1vZGUpICgobW9kZSAmIFNfSUZNVCkgPT0gU19JRlNPQ0spIC8vIElzIGZpbGUgYSBzb2NrZXQ/Ci0jZW5kaWYKLSNkZWZpbmUgbHN0YXQocCwgYikgICAgICBzdGF0KHAsIGIpICAgICAgICAgICAgICAgICAgICAvLyBsc3RhdCgpID09IHN0YXQoKSwgYXMgdnhXb3JrcyBoYXMgbm8gc3ltbGlua3MhCi0jaWZuZGVmIEZQRV9GTFRJTlYKLSMgIGRlZmluZSBGUEVfRkxUSU5WICAgICAoRlBFX0ZMVFNVQisxKSAgICAgICAgICAgICAgICAvLyB2eFdvcmtzIGhhcyBubyBGUEVfRkxUSU5WLCBzbyBkZWZpbmUgb25lIGFzIGEgZHVtbXkKLSNlbmRpZgotI2lmICFkZWZpbmVkKEJVU19BRFJBTE4pICYmIGRlZmluZWQoQlVTX0FEUkFMTlIpCi0jICBkZWZpbmUgQlVTX0FEUkFMTiAgICAgQlVTX0FEUkFMTlIgICAgICAgICAgICAgICAgICAgLy8gQ29ycmVjdCBhIHN1cHBvc2VkIHR5cG8gaW4gdnhXb3JrcycgPHNpZ25hbC5oPgotI2VuZGlmCi0vL3R5cGVkZWYgaW50ICAgICAgICAgICAgICBsb2NhbGVfdDsgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhbGVfdCBpcyBhIFBPU0lYLWV4dGVuc2lvbiwgY3VycmVudGx5IHVucHJlc2VudCBpbiB2eFdvcmtzIQotCi0vLyAjaW5jbHVkZSBib2lsZXJwbGF0ZSBjb2RlOgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0KLS8vIHZ4V29ya3MgbGllcyBhYm91dCBYU0kgY29uZm9ybWFuY2UsIHRoZXJlIGlzIG5vIG5sX3R5cGVzLmg6Ci0jdW5kZWYgTkROQk9PU1RfSEFTX05MX1RZUEVTX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3dpbjMyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3dpbjMyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM0ZTFkYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS93aW4zMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQmlsbCBLZW1wZiAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBSZW5lIFJpdmVyYSAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFdpbjMyIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJXaW4zMiIKLQotLy8gIEdldCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIE1pbkdXIHJ1bnRpbWUsIGkuZS4gX19NSU5HVzMyXypWRVJTSU9OLgotI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCi0jICBpbmNsdWRlIDxfbWluZ3cuaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1dQUklOVEYpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSNlbmRpZgotCi0vLyAgRGVmYXVsdCBkZWZpbmVzIGZvciBORE5CT09TVF9TWU1CT0xfRVhQT1JUIGFuZCBORE5CT09TVF9TWU1CT0xfSU1QT1JUCi0vLyAgSWYgYSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgX19kZWNsc3BlYyhkbGxleHBvcnQpL19fZGVjbHNwZWMoZGxsaW1wb3J0KSwKLS8vICBpdHMgbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyLyBmaWxlIG11c3QgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgYW5kCi0vLyAgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotI2lmbmRlZiBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0RFQ0xTUEVDCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfSU1QT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAoKF9fTUlOR1czMl9NQUpPUl9WRVJTSU9OID4gMikgfHwgKChfX01JTkdXMzJfTUFKT1JfVkVSU0lPTiA9PSAyKSAmJiAoX19NSU5HVzMyX01JTk9SX1ZFUlNJT04gPj0gMCkpKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgaWZuZGVmIF9fU1REQ19MSU1JVF9NQUNST1MKLSMgICAgIGRlZmluZSBfX1NURENfTElNSVRfTUFDUk9TCi0jICBlbmRpZgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAoX19HTlVDX18gPj0gNCkKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRVhQTTEKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTE9HMVAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jZW5kaWYKLS8vCi0vLyBXaW4zMiB3aWxsIG5vcm1hbGx5IGJlIHVzaW5nIG5hdGl2ZSBXaW4zMiB0aHJlYWRzLAotLy8gYnV0IHRoZXJlIGlzIGEgcHRocmVhZCBsaWJyYXJ5IGF2YWxpYWJsZSBhcyBhbiBvcHRpb24sCi0vLyB3ZSB1c2VkIHRvIGRpc2FibGUgdGhpcyB3aGVuIE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIgd2FzIAotLy8gZGVmaW5lZCBidXQgbm8gbG9uZ2VyIC0gdGhpcyBzaG91bGQgYWxsb3cgc29tZQotLy8gZmlsZXMgdG8gYmUgY29tcGlsZWQgaW4gc3RyaWN0IG1vZGUgLSB3aGlsZSBtYWludGFpbmluZwotLy8gYSBjb25zaXN0ZW50IHNldHRpbmcgb2YgTkROQk9PU1RfSEFTX1RIUkVBRFMgYWNyb3NzCi0vLyBhbGwgdHJhbnNsYXRpb24gdW5pdHMgKG5lZWRlZCBmb3Igc2hhcmVkX3B0ciBldGMpLgotLy8KLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSMgIGRlZmluZSBORE5CT09TVF9OT19BTlNJX0FQSVMKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFNZU1RFTVRJTUVBU0ZJTEVUSU1FCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfV0lOVEhSRUFEUwotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfRElTQUJMRV9XSU4zMgotLy8gV0VLOiBBZGRlZAotI2RlZmluZSBORE5CT09TVF9IQVNfRlRJTUUKLSNkZWZpbmUgTkROQk9PU1RfV0lORE9XUyAxCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmNjNzI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vIEFsbCBQT1NJWCBmZWF0dXJlIHRlc3RzIGdvIGluIHRoaXMgZmlsZSwKLS8vIE5vdGUgdGhhdCB3ZSB0ZXN0IF9QT1NJWF9DX1NPVVJDRSBhbmQgX1hPUEVOX1NPVVJDRSBhcyB3ZWxsCi0vLyBfUE9TSVhfVkVSU0lPTiBhbmQgX1hPUEVOX1ZFUlNJT046IG9uIHNvbWUgc3lzdGVtcyBQT1NJWCBBUEkncwotLy8gbWF5IGJlIHByZXNlbnQgYnV0IG5vbmUtZnVuY3Rpb25hbCB1bmxlc3MgX1BPU0lYX0NfU09VUkNFIGFuZAotLy8gX1hPUEVOX1NPVVJDRSBoYXZlIGJlZW4gZGVmaW5lZCB0byB0aGUgcmlnaHQgdmFsdWUgKGl0J3MgdXAKLS8vIHRvIHRoZSB1c2VyIHRvIGRvIHRoaXMgKmJlZm9yZSogaW5jbHVkaW5nIGFueSBoZWFkZXIsIGFsdGhvdWdoCi0vLyBpbiBtb3N0IGNhc2VzIHRoZSBjb21waWxlciB3aWxsIGRvIHRoaXMgZm9yIHlvdSkuCi0KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1VOSVNURF9IKQotIyAgICAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0KLSAgICAgIC8vIFhPcGVuIGhhcyA8bmxfdHlwZXMuaD4sIGJ1dCBpcyB0aGlzIHRoZSBjb3JyZWN0IHZlcnNpb24gY2hlY2s/Ci0jICAgICBpZiBkZWZpbmVkKF9YT1BFTl9WRVJTSU9OKSAmJiAoX1hPUEVOX1ZFUlNJT04gPj0gMykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTkxfVFlQRVNfSAotIyAgICAgZW5kaWYKLQotICAgICAgLy8gUE9TSVggdmVyc2lvbiA2IHJlcXVpcmVzIDxzdGRpbnQuaD4KLSMgICAgIGlmIGRlZmluZWQoX1BPU0lYX1ZFUlNJT04pICYmIChfUE9TSVhfVkVSU0lPTiA+PSAyMDAxMDApCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICAgICBlbmRpZgotCi0gICAgICAvLyBQT1NJWCB2ZXJzaW9uIDIgcmVxdWlyZXMgPGRpcmVudC5oPgotIyAgICAgaWYgZGVmaW5lZChfUE9TSVhfVkVSU0lPTikgJiYgKF9QT1NJWF9WRVJTSU9OID49IDE5OTAwOUwpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jICAgICBlbmRpZgotCi0gICAgICAvLyBQT1NJWCB2ZXJzaW9uIDMgcmVxdWlyZXMgPHNpZ25hbC5oPiB0byBoYXZlIHNpZ2FjdGlvbjoKLSMgICAgIGlmIGRlZmluZWQoX1BPU0lYX1ZFUlNJT04pICYmIChfUE9TSVhfVkVSU0lPTiA+PSAxOTk1MDZMKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSMgICAgIGVuZGlmCi0gICAgICAvLyBQT1NJWCBkZWZpbmVzIF9QT1NJWF9USFJFQURTID4gMCBmb3IgcHRocmVhZCBzdXBwb3J0LAotICAgICAgLy8gaG93ZXZlciBzb21lIHBsYXRmb3JtcyBkZWZpbmUgX1BPU0lYX1RIUkVBRFMgd2l0aG91dAotICAgICAgLy8gYSB2YWx1ZSwgaGVuY2UgdGhlIChfUE9TSVhfVEhSRUFEUyswID49IDApIGNoZWNrLgotICAgICAgLy8gU3RyaWN0bHkgc3BlYWtpbmcgdGhpcyBtYXkgY2F0Y2ggcGxhdGZvcm1zIHdpdGggYQotICAgICAgLy8gbm9uLWZ1bmN0aW9uaW5nIHN0dWIgPHB0aHJlYWRzLmg+LCBidXQgc3VjaCBvY2N1cnJlbmNlcyBzaG91bGQKLSAgICAgIC8vIG9jY3VyIHZlcnkgcmFyZWx5IGlmIGF0IGFsbC4KLSMgICAgIGlmIGRlZmluZWQoX1BPU0lYX1RIUkVBRFMpICYmIChfUE9TSVhfVEhSRUFEUyswID49IDApICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNfTVBUQVNLUykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgICAgIGVuZGlmCi0KLSAgICAgIC8vIE5ETkJPT1NUX0hBU19OQU5PU0xFRVA6Ci0gICAgICAvLyBUaGlzIGlzIHByZWRpY2F0ZWQgb24gX1BPU0lYX1RJTUVSUyBvciBfWE9QRU5fUkVBTFRJTUU6Ci0jICAgICBpZiAoZGVmaW5lZChfUE9TSVhfVElNRVJTKSAmJiAoX1BPU0lYX1RJTUVSUyswID49IDApKSBcCi0gICAgICAgICAgICAgfHwgKGRlZmluZWQoX1hPUEVOX1JFQUxUSU1FKSAmJiAoX1hPUEVOX1JFQUxUSU1FKzAgPj0gMCkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotIyAgICAgZW5kaWYKLQotICAgICAgLy8gTkROQk9PU1RfSEFTX0NMT0NLX0dFVFRJTUU6Ci0gICAgICAvLyBUaGlzIGlzIHByZWRpY2F0ZWQgb24gX1BPU0lYX1RJTUVSUyAoYWxzbyBvbiBfWE9QRU5fUkVBTFRJTUUKLSAgICAgIC8vIGJ1dCBhdCBsZWFzdCBvbmUgcGxhdGZvcm0gLSBsaW51eCAtIGRlZmluZXMgdGhhdCBmbGFnIHdpdGhvdXQKLSAgICAgIC8vIGRlZmluaW5nIGNsb2NrX2dldHRpbWUpOgotIyAgICAgaWYgKGRlZmluZWQoX1BPU0lYX1RJTUVSUykgJiYgKF9QT1NJWF9USU1FUlMrMCA+PSAwKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRQotIyAgICAgZW5kaWYKLQotICAgICAgLy8gTkROQk9PU1RfSEFTX1NDSEVEX1lJRUxEOgotICAgICAgLy8gVGhpcyBpcyBwcmVkaWNhdGVkIG9uIF9QT1NJWF9QUklPUklUWV9TQ0hFRFVMSU5HIG9yCi0gICAgICAvLyBvbiBfUE9TSVhfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcgb3Igb24gX1hPUEVOX1JFQUxUSU1FLgotIyAgICAgaWYgZGVmaW5lZChfUE9TSVhfUFJJT1JJVFlfU0NIRURVTElORykgJiYgKF9QT1NJWF9QUklPUklUWV9TQ0hFRFVMSU5HKzAgPiAwKVwKLSAgICAgICAgICAgIHx8IChkZWZpbmVkKF9QT1NJWF9USFJFQURfUFJJT1JJVFlfU0NIRURVTElORykgJiYgKF9QT1NJWF9USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyswID4gMCkpXAotICAgICAgICAgICAgfHwgKGRlZmluZWQoX1hPUEVOX1JFQUxUSU1FKSAmJiAoX1hPUEVOX1JFQUxUSU1FKzAgPj0gMCkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NDSEVEX1lJRUxECi0jICAgICBlbmRpZgotCi0gICAgICAvLyBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZOgotICAgICAgLy8gTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEU6Ci0gICAgICAvLyBUaGVzZSBhcmUgcHJlZGljYXRlZCBvbiBfWE9QRU5fVkVSU0lPTiwgYW5kIGFwcGVhcnMgdG8gYmUgZmlyc3QgcmVsZWFzZWQKLSAgICAgIC8vIGluIGlzc3VlIDQsIHZlcnNpb24gMiAoX1hPUEVOX1ZFUlNJT04gPiA1MDApLgotICAgICAgLy8gTGlrZXdpc2UgZm9yIHRoZSBmdW5jdGlvbnMgbG9nMXAgYW5kIGV4cG0xLgotIyAgICAgaWYgZGVmaW5lZChfWE9QRU5fVkVSU0lPTikgJiYgKF9YT1BFTl9WRVJTSU9OKzAgPj0gNTAwKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSMgICAgICAgIGlmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UrMCA+PSA1MDApCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLSMgICAgICAgIGVuZGlmCi0jICAgICAgICBpZm5kZWYgTkROQk9PU1RfSEFTX0xPRzFQCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQCi0jICAgICAgICBlbmRpZgotIyAgICAgICAgaWZuZGVmIE5ETkJPT1NUX0hBU19FWFBNMQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotIyAgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0KLSMgIGVuZGlmCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3JlcXVpcmVzX3RocmVhZHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcmVxdWlyZXNfdGhyZWFkcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNzkzYTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcmVxdWlyZXNfdGhyZWFkcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX1JFUVVJUkVTX1RIUkVBRFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19SRVFVSVJFU19USFJFQURTX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19IUFAKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9USFJFQURTKQotCi0vLwotLy8gc3BlY2lhbCBjYXNlIHRvIGhhbmRsZSB2ZXJzaW9ucyBvZiBnY2Mgd2hpY2ggZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgdGhyZWFkczoKLS8vCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA8IDMpIHx8IChfX0dOVUNfTUlOT1JfXyA8PSAzKSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKSkKLS8vCi0vLyB0aGlzIGlzIGNoZWNrZWQgdXAgdG8gZ2NjIDMuMzoKLS8vCi0jaWYgZGVmaW5lZChfX3NnaSkgfHwgZGVmaW5lZChfX2hwdXgpCi0jICBlcnJvciAiTXVsdGktdGhyZWFkZWQgcHJvZ3JhbXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgZ2NjIG9uIEhQVVggb3IgSXJpeCAobGFzdCBjaGVja2VkIHdpdGggZ2NjIDMuMykiCi0jZW5kaWYKLQotI2VuZGlmCi0KLSMgIGVycm9yICJUaHJlYWRpbmcgc3VwcG9ydCB1bmF2YWxpYWJsZTogaXQgaGFzIGJlZW4gZXhwbGljaXRseSBkaXNhYmxlZCB3aXRoIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUyIKLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1RIUkVBRFMpCi0KLSMgaWYgZGVmaW5lZCBfX0NPTU9fXwotLy8gIENvbWVhdSBDKysKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiAtRF9NVCAoV2luZG93cykgb3IgLURfUkVFTlRSQU5UIChVbml4KSIKLQotI2VsaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fSUNMKSB8fCBkZWZpbmVkKF9fSUNDKSB8fCBkZWZpbmVkKF9fRUNDKQotLy8gIEludGVsCi0jaWZkZWYgX1dJTjMyCi0jICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiBlaXRoZXIgL01UIC9NVGQgL01EIG9yIC9NRGQiCi0jZWxzZQotIyAgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2Ugc2V0IHRoZSBjb3JyZWN0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aHJlYWRpbmc6IC1vcGVubXAiCi0jZW5kaWYKLQotIyBlbGlmIGRlZmluZWQgX19HTlVDX18KLS8vICBHTlUgQysrOgotIyAgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2Ugc2V0IHRoZSBjb3JyZWN0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aHJlYWRpbmc6IC1wdGhyZWFkIChMaW51eCksIC1wdGhyZWFkcyAoU29sYXJpcykgb3IgLW10aHJlYWRzIChNaW5ndzMyKSIKLQotI2VsaWYgZGVmaW5lZCBfX3NnaQotLy8gIFNHSSBNSVBTcHJvIEMrKwotIyAgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2Ugc2V0IHRoZSBjb3JyZWN0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aHJlYWRpbmc6IC1EX1NHSV9NUF9TT1VSQ0UiCi0KLSNlbGlmIGRlZmluZWQgX19ERUNDWFgKLS8vICBDb21wYXEgVHJ1NjQgVW5peCBjeHgKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiAtcHRocmVhZCIKLQotI2VsaWYgZGVmaW5lZCBfX0JPUkxBTkRDX18KLS8vICBCb3JsYW5kCi0jICAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogLXRXTSIKLQotI2VsaWYgZGVmaW5lZCAgX19NV0VSS1NfXwotLy8gIE1ldHJvd2Vya3MgQ29kZVdhcnJpb3IKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiBlaXRoZXIgLXJ1bnRpbWUgc20sIC1ydW50aW1lIHNtZCwgLXJ1bnRpbWUgZG0sIG9yIC1ydW50aW1lIGRtZCIKLQotI2VsaWYgZGVmaW5lZCAgX19TVU5QUk9fQ0MKLS8vICBTdW4gV29ya3Nob3AgQ29tcGlsZXIgQysrCi0jICAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogLW10IgotCi0jZWxpZiBkZWZpbmVkIF9fSFBfYUNDCi0vLyAgSFAgYUNDCi0jICAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogLW10IgotCi0jZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pCi0vLyAgSUJNIFZpc3VhbCBBZ2UKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIGNvbXBpbGUgdGhlIGNvZGUgd2l0aCB0aGUgeGxDX3IgY29tcGlsZXIiCi0KLSNlbGlmIGRlZmluZWQgX01TQ19WRVIKLS8vICBNaWNyb3NvZnQgVmlzdWFsIEMrKwotLy8KLS8vICBNdXN0IHJlbWFpbiB0aGUgbGFzdCAjZWxpZiBzaW5jZSBzb21lIG90aGVyIHZlbmRvcnMgKE1ldHJvd2Vya3MsIGZvcgotLy8gIGV4YW1wbGUpIGFsc28gI2RlZmluZSBfTVNDX1ZFUgotIyAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogZWl0aGVyIC9NVCAvTVRkIC9NRCBvciAvTURkIgotCi0jZWxzZQotCi0jICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gIFBsZWFzZSBjb25zdWx0IHlvdXIgY29tcGlsZXIncyBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXBwcm9wcmlhdGUgb3B0aW9ucyB0byB1c2UiCi0KLSNlbmRpZiAvLyBjb21waWxlcnMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0hBU19USFJFQURTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05GSUdfUkVRVUlSRVNfVEhSRUFEU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3NlbGVjdF9jb21waWxlcl9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X2NvbXBpbGVyX2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZGFmMmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X2NvbXBpbGVyX2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLy8gIEJvb3N0IGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc2VsZWN0aW9uIGhlYWRlciBmaWxlCi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXJ0aW4gV2lsbGUgMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEd1aWxsYXVtZSBNZWxxdWlvbmQgMjAwMy4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gbG9jYXRlIHdoaWNoIGNvbXBpbGVyIHdlIGFyZSB1c2luZyBhbmQgZGVmaW5lCi0vLyBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgYXMgbmVlZGVkOiAKLQotI2lmIGRlZmluZWQoX19HQ0NYTUxfXykKLS8vIEdDQy1YTUwgZW11bGF0ZXMgb3RoZXIgY29tcGlsZXJzLCBpdCBoYXMgdG8gYXBwZWFyIGZpcnN0IGhlcmUhCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djY194bWwuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9DUkFZQykKLS8vIEVERyBiYXNlZCBDcmF5IGNvbXBpbGVyOgotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jcmF5LmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfX0NVREFDQ19fCi0vLyAgTlZJRElBIENVREEgQysrIGNvbXBpbGVyIGZvciBHUFUKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvbnZjYy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19DT01PX18KLS8vICBDb21lYXUgQysrCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbWVhdS5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19QQVRIU0NBTEVfXykgJiYgKF9fUEFUSENDX18gPj0gNCkKLS8vIFBhdGhTY2FsZSBFS09QYXRoIGNvbXBpbGVyIChoYXMgdG8gY29tZSBiZWZvcmUgY2xhbmcgYW5kIGdjYykKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvcGF0aHNjYWxlLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fSUNMKSB8fCBkZWZpbmVkKF9fSUNDKSB8fCBkZWZpbmVkKF9fRUNDKQotLy8gIEludGVsCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2ludGVsLmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfX2NsYW5nX18KLS8vICBDbGFuZyBDKysgZW11bGF0ZXMgR0NDLCBzbyBpdCBoYXMgdG8gYXBwZWFyIGVhcmx5LgotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jbGFuZy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19ETUNfXwotLy8gIERpZ2l0YWwgTWFycyBDKysKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvZGlnaXRhbG1hcnMuaHBwIgotCi0jIGVsaWYgZGVmaW5lZCBfX0dOVUNfXwotLy8gIEdOVSBDKys6Ci0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djYy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19LQ0MKLS8vICBLYWkgQysrCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2thaS5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19zZ2kKLS8vICBTR0kgTUlQU3BybyBDKysKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvc2dpX21pcHNwcm8uaHBwIgotCi0jZWxpZiBkZWZpbmVkIF9fREVDQ1hYCi0vLyAgQ29tcGFxIFRydTY0IFVuaXggY3h4Ci0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbXBhcV9jeHguaHBwIgotCi0jZWxpZiBkZWZpbmVkIF9fZ2hzCi0vLyAgR3JlZW5oaWxscyBDKysKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ3JlZW5oaWxscy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19DT0RFR0VBUkNfXwotLy8gIENvZGVHZWFyIC0gbXVzdCBiZSBjaGVja2VkIGZvciBiZWZvcmUgQm9ybGFuZAotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb2RlZ2Vhci5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19CT1JMQU5EQ19fCi0vLyAgQm9ybGFuZAotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ib3JsYW5kLmhwcCIKLQotI2VsaWYgZGVmaW5lZCAgX19NV0VSS1NfXwotLy8gIE1ldHJvd2Vya3MgQ29kZVdhcnJpb3IKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvbWV0cm93ZXJrcy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgIF9fU1VOUFJPX0NDCi0vLyAgU3VuIFdvcmtzaG9wIENvbXBpbGVyIEMrKwotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9zdW5wcm9fY2MuaHBwIgotCi0jZWxpZiBkZWZpbmVkIF9fSFBfYUNDCi0vLyAgSFAgYUNDCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2hwX2FjYy5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19NUkNfXykgfHwgZGVmaW5lZChfX1NDX18pCi0vLyAgTVBXIE1yQ3BwIG9yIFNDcHAKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvbXB3LmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKQotLy8gIElCTSBWaXN1YWwgQWdlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3ZhY3BwLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX1BHSSkKLS8vICBQb3J0bGFuZCBHcm91cCBJbmMuCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3BnaS5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX01TQ19WRVIKLS8vICBNaWNyb3NvZnQgVmlzdWFsIEMrKwotLy8KLS8vICBNdXN0IHJlbWFpbiB0aGUgbGFzdCAjZWxpZiBzaW5jZSBzb21lIG90aGVyIHZlbmRvcnMgKE1ldHJvd2Vya3MsIGZvcgotLy8gIGV4YW1wbGUpIGFsc28gI2RlZmluZSBfTVNDX1ZFUgotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci92aXN1YWxjLmhwcCIKLQotI2VsaWYgZGVmaW5lZCAoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLS8vIHRoaXMgbXVzdCBjb21lIGxhc3QgLSBnZW5lcmF0ZSBhbiBlcnJvciBpZiB3ZSBkb24ndAotLy8gcmVjb2duaXNlIHRoZSBjb21waWxlcjoKLSMgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIC0gcGxlYXNlIGNvbmZpZ3VyZSAoaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb25maWcvY29uZmlnLmh0bSNjb25maWd1cmluZykgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyB0byB0aGUgbWFpbiBib29zdCBtYWlsaW5nIGxpc3QgKGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvbWFpbGluZ19saXN0cy5odG0jbWFpbikiCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X3BsYXRmb3JtX2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zZWxlY3RfcGxhdGZvcm1fY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA0Mzg3MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zZWxlY3RfcGxhdGZvcm1fY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vLyAgQm9vc3QgY29tcGlsZXIgY29uZmlndXJhdGlvbiBzZWxlY3Rpb24gaGVhZGVyIGZpbGUKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gbG9jYXRlIHdoaWNoIHBsYXRmb3JtIHdlIGFyZSBvbiBhbmQgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyBhcyBuZWVkZWQuCi0vLyBOb3RlIHRoYXQgd2UgZGVmaW5lIHRoZSBoZWFkZXJzIHRvIGluY2x1ZGUgdXNpbmcgImhlYWRlcl9uYW1lIiBub3QKLS8vIDxoZWFkZXJfbmFtZT4gaW4gb3JkZXIgdG8gcHJldmVudCBtYWNybyBleHBhbnNpb24gd2l0aGluIHRoZSBoZWFkZXIKLS8vIG5hbWUgKGZvciBleGFtcGxlICJsaW51eCIgaXMgYSBtYWNybyBvbiBsaW51eCBzeXN0ZW1zKS4KLQotI2lmIChkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fbGludXgpIHx8IGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fR05VX18pIHx8IGRlZmluZWQoX19HTElCQ19fKSkgJiYgIWRlZmluZWQoX0NSQVlDKQotLy8gbGludXgsIGFsc28gb3RoZXIgcGxhdGZvcm1zIChIdXJkIGV0YykgdGhhdCB1c2UgR0xJQkMsIHNob3VsZCB0aGVzZSByZWFsbHkgaGF2ZSB0aGVpciBvd24gY29uZmlnIGhlYWRlcnMgdGhvdWdoPwotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2xpbnV4LmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0vLyBCU0Q6Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYnNkLmhwcCIKLQotI2VsaWYgZGVmaW5lZChzdW4pIHx8IGRlZmluZWQoX19zdW4pCi0vLyBzb2xhcmlzOgotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3NvbGFyaXMuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fc2dpKQotLy8gU0dJIElyaXg6Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vaXJpeC5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19ocHV4KQotLy8gaHAgdW5peDoKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ocHV4LmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9fKQotLy8gY3lnd2luIGlzIG5vdCB3aW4zMjoKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9jeWd3aW4uaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoV0lOMzIpCi0vLyB3aW4zMjoKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS93aW4zMi5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19CRU9TX18pCi0vLyBCZU9TCi0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYmVvcy5ocHAiCi0KLSNlbGlmIGRlZmluZWQobWFjaW50b3NoKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FQUExFX0NDX18pCi0vLyBNYWNPUwotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL21hY29zLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZpbmVkKF9BSVgpCi0vLyBJQk0KLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9haXguaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fYW1pZ2Fvc19fKQotLy8gQW1pZ2FPUwotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2FtaWdhb3MuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fUU5YTlRPX18pCi0vLyBRTlg6Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vcW54bnRvLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX1ZYV09SS1NfXykKLS8vIHZ4V29ya3M6Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vdnh3b3Jrcy5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgCi0vLyBTeW1iaWFuOiAKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9zeW1iaWFuLmhwcCIgCi0KLSNlbGlmIGRlZmluZWQoX0NSQVlDKQotLy8gQ3JheToKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9jcmF5LmhwcCIgCi0KLSNlbGlmIGRlZmluZWQoX19WTVMpIAotLy8gVk1TOgotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Ztcy5ocHAiIAotI2Vsc2UKLQotIyAgaWYgZGVmaW5lZCh1bml4KSBcCi0gICAgICB8fCBkZWZpbmVkKF9fdW5peCkgXAotICAgICAgfHwgZGVmaW5lZChfWE9QRU5fU09VUkNFKSBcCi0gICAgICB8fCBkZWZpbmVkKF9QT1NJWF9TT1VSQ0UpCi0KLSAgIC8vIGdlbmVyaWMgdW5peCBwbGF0Zm9ybToKLQotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotIyAgZW5kaWYKLQotIyAgaWYgZGVmaW5lZCAoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSAgICAgIC8vIHRoaXMgbXVzdCBjb21lIGxhc3QgLSBnZW5lcmF0ZSBhbiBlcnJvciBpZiB3ZSBkb24ndAotICAgICAgLy8gcmVjb2duaXNlIHRoZSBwbGF0Zm9ybToKLSMgICAgIGVycm9yICJVbmtub3duIHBsYXRmb3JtIC0gcGxlYXNlIGNvbmZpZ3VyZSBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIHRvIGJvb3N0Lm9yZyIKLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X3N0ZGxpYl9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X3N0ZGxpYl9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2NhZWRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3NlbGVjdF9zdGRsaWJfY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8vICBCb29zdCBjb21waWxlciBjb25maWd1cmF0aW9uIHNlbGVjdGlvbiBoZWFkZXIgZmlsZQotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMSAtIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyBsb2NhdGUgd2hpY2ggc3RkIGxpYiB3ZSBhcmUgdXNpbmcgYW5kIGRlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHIGFzIG5lZWRlZDoKLQotLy8gRmlyc3QgaW5jbHVkZSA8Y3N0ZGRlZj4gdG8gZGV0ZXJtaW5lIGlmIHNvbWUgdmVyc2lvbiBvZiBTVExwb3J0IGlzIGluIHVzZSBhcyB0aGUgc3RkIGxpYgotLy8gKGRvIG5vdCByZWx5IG9uIHRoaXMgaGVhZGVyIGJlaW5nIGluY2x1ZGVkIHNpbmNlIHVzZXJzIGNhbiBzaG9ydC1jaXJjdWl0IHRoaXMgaGVhZGVyIAotLy8gIGlmIHRoZXkga25vdyB3aG9zZSBzdGQgbGliIHRoZXkgYXJlIHVzaW5nLikKLSNpZmRlZiBfX2NwbHVzcGx1cwotIyAgaW5jbHVkZSA8Y3N0ZGRlZj4KLSNlbHNlCi0jICBpbmNsdWRlIDxzdGRkZWYuaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotLy8gU1RMUG9ydCBsaWJyYXJ5OyB0aGlzIF9tdXN0XyBjb21lIGZpcnN0LCBvdGhlcndpc2Ugc2luY2UKLS8vIFNUTHBvcnQgdHlwaWNhbGx5IHNpdHMgb24gdG9wIG9mIHNvbWUgb3RoZXIgbGlicmFyeSwgd2UKLS8vIGNhbiBlbmQgdXAgZGV0ZWN0aW5nIHRoYXQgZmlyc3QgcmF0aGVyIHRoYW4gU1RMcG9ydDoKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHICJuZG5ib29zdC9jb25maWcvc3RkbGliL3N0bHBvcnQuaHBwIgotCi0jZWxzZQotCi0vLyBJZiBvdXIgc3RkIGxpYiB3YXMgbm90IHNvbWUgdmVyc2lvbiBvZiBTVExwb3J0LCB0aGVuIGluY2x1ZGUgPHV0aWxpdHk+IGFzIGl0IGlzIGFib3V0IAotLy8gdGhlIHNtYWxsZXN0IG9mIHRoZSBzdGQgbGliIGhlYWRlcnMgdGhhdCBpbmNsdWRlcyByZWFsIEMrKyBzdHVmZi4gIChTb21lIHN0ZCBsaWJzIGRvIG5vdAotLy8gaW5jbHVkZSB0aGVpciBDKystcmVsYXRlZCBtYWNyb3MgaW4gPGNzdGRkZWY+IHNvIHRoaXMgYWRkaXRpb25hbCBpbmNsdWRlIG1ha2VzIHN1cmUKLS8vIHdlIGdldCB0aG9zZSBkZWZpbml0aW9ucykKLS8vIChhZ2FpbiBkbyBub3QgcmVseSBvbiB0aGlzIGhlYWRlciBiZWluZyBpbmNsdWRlZCBzaW5jZSB1c2VycyBjYW4gc2hvcnQtY2lyY3VpdCB0aGlzIAotLy8gIGhlYWRlciBpZiB0aGV5IGtub3cgd2hvc2Ugc3RkIGxpYiB0aGV5IGFyZSB1c2luZy4pCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLQotI2lmIGRlZmluZWQoX19MSUJDT01PX18pCi0vLyBDb21lYXUgU1RMOgotI2RlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHICJuZG5ib29zdC9jb25maWcvc3RkbGliL2xpYmNvbW8uaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fU1REX1JXQ09NUElMRVJfSF9fKSB8fCBkZWZpbmVkKF9SV1NURF9WRVIpCi0vLyBSb2d1ZSBXYXZlIGxpYnJhcnk6Ci0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9yb2d1ZXdhdmUuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKLS8vIGxpYmMrKwotIyAgZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGliY3BwLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykKLS8vIEdOVSBsaWJzdGRjKysgMwotIyAgZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGlic3RkY3BwMy5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19TVExfQ09ORklHX0gpCi0vLyBnZW5lcmljIFNHSSBTVEwKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHICJuZG5ib29zdC9jb25maWcvc3RkbGliL3NnaS5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19NU0xfQ1BQX18pCi0vLyBNU0wgc3RhbmRhcmQgbGliOgotIyAgZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbXNsLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKQotLy8gdGFrZSB0aGUgZGVmYXVsdCBWQUNQUCBzdGQgbGliCi0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi92YWNwcC5ocHAiCi0KLSNlbGlmIGRlZmluZWQoTVNJUExfQ09NUElMRV9IKQotLy8gTW9kZW5hIEMrKyBzdGFuZGFyZCBsaWJyYXJ5Ci0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9tb2RlbmEuaHBwIgotCi0jZWxpZiAoZGVmaW5lZChfWVZBTFMpICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pKSB8fCBkZWZpbmVkKF9DUFBMSUJfVkVSKQotLy8gRGlua3Vtd2FyZSBMaWJyYXJ5ICh0aGlzIGhhcyB0byBhcHBlYXIgYWZ0ZXIgYW55IHBvc3NpYmxlIHJlcGxhY2VtZW50IGxpYnJhcmllcyk6Ci0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcCIKLQotI2VsaWYgZGVmaW5lZCAoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLS8vIHRoaXMgbXVzdCBjb21lIGxhc3QgLSBnZW5lcmF0ZSBhbiBlcnJvciBpZiB3ZSBkb24ndAotLy8gcmVjb2duaXNlIHRoZSBsaWJyYXJ5OgotIyAgZXJyb3IgIlVua25vd24gc3RhbmRhcmQgbGlicmFyeSAtIHBsZWFzZSBjb25maWd1cmUgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyB0byBib29zdC5vcmciCi0KLSNlbmRpZgotCi0jZW5kaWYKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZjZTUzNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvZGlua3Vtd2FyZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMS4KLS8vICAoQykgQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEuCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLgotLy8gIChDKSBDb3B5cmlnaHQgR3VpbGxhdW1lIE1lbHF1aW9uZCAyMDAzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBEaW5rdW13YXJlIHN0YW5kYXJkIGxpYnJhcnkgY29uZmlnOgotCi0jaWYgIWRlZmluZWQoX1lWQUxTKSAmJiAhZGVmaW5lZChfQ1BQTElCX1ZFUikKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwPgotI2lmICFkZWZpbmVkKF9ZVkFMUykgJiYgIWRlZmluZWQoX0NQUExJQl9WRVIpCi0jZXJyb3IgVGhpcyBpcyBub3QgdGhlIERpbmt1bXdhcmUgbGliIQotI2VuZGlmCi0jZW5kaWYKLQotCi0jaWYgZGVmaW5lZChfQ1BQTElCX1ZFUikgJiYgKF9DUFBMSUJfVkVSID49IDMwNikKLSAgIC8vIGZ1bGwgZGlua3Vtd2FyZSAzLjA2IGFuZCBhYm92ZQotICAgLy8gZnVsbHkgY29uZm9ybWluZyBwcm92aWRlZCB0aGUgY29tcGlsZXIgc3VwcG9ydHMgaXQ6Ci0jICBpZiAhKGRlZmluZWQoX0dMT0JBTF9VU0lORykgJiYgKF9HTE9CQUxfVVNJTkcrMCA+IDApKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKF9TVEQpICYmICEoZGVmaW5lZChfX0lDQykgJiYgKF9fSUNDID49IDcwMCkpICAgLy8gY2FuIGJlIGRlZmluZWQgaW4geXZhbHMuaAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jICBlbmRpZgotIyAgaWYgIShkZWZpbmVkKF9IQVNfTUVNQkVSX1RFTVBMQVRFU19SRUJJTkQpICYmIChfSEFTX01FTUJFUl9URU1QTEFURVNfUkVCSU5EKzAgPiAwKSkgJiYgIShkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPiAxMzAwKSkgJiYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSMgIGVuZGlmCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BBUlRJQUxfU1REX0FMTE9DQVRPUgotIyAgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEzMDApCi0gICAgICAvLyBpZiB0aGlzIGxpYiB2ZXJzaW9uIGlzIHNldCB1cCBmb3IgdmM2IHRoZW4gdGhlcmUgaXMgbm8gc3RkOjp1c2VfZmFjZXQ6Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1VTRV9GQUNFVAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UV09fQVJHX1VTRV9GQUNFVAotICAgICAgLy8gQyBsaWIgZnVuY3Rpb25zIGFyZW4ndCBpbiBuYW1lc3BhY2Ugc3RkIGVpdGhlcjoKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotICAgICAgLy8gYW5kIG5vciBpcyA8ZXhjZXB0aW9uPgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTl9TVERfTkFNRVNQQUNFCi0jICBlbmRpZgotLy8gVGhlcmUncyBubyBudW1lcmljX2xpbWl0czxsb25nIGxvbmc+IHN1cHBvcnQgdW5sZXNzIF9MT05HTE9ORyBpcyBkZWZpbmVkOgotIyAgaWYgIWRlZmluZWQoX0xPTkdMT05HKSAmJiAoX0NQUExJQl9WRVIgPD0gMzEwKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01TX0lOVDY0X05VTUVSSUNfTElNSVRTCi0jICBlbmRpZgotLy8gMy4wNiBhcHBlYXJzIHRvIGhhdmUgKG5vbi1zZ2kgdmVyc2lvbnMgb2YpIDxoYXNoX3NldD4gJiA8aGFzaF9tYXA+LAotLy8gYW5kIG5vIDxzbGlzdD4gYXQgYWxsCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SIDEKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1VTRV9GQUNFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9PVVRQVVRfSVRFUkFUT1JfQVNTSUdOCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX01BQ1JPX1VTRV9GQUNFVAotIyAgaWZuZGVmIF9DUFBMSUJfVkVSCi0gICAgICAvLyBVcGRhdGVkIERpbmt1bSBsaWJyYXJ5IGRlZmluZXMgdGhpcywgYW5kIHByb3ZpZGVzCi0gICAgICAvLyBpdHMgb3duIG1pbiBhbmQgbWF4IGRlZmluaXRpb25zLCBhcyBkb2VzIE1UQSB2ZXJzaW9uLgotIyAgICAgaWZuZGVmIF9fTVRBX18gCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX01JTl9NQVgKLSMgICAgIGVuZGlmCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8KLS8vIHN0ZCBleHRlbnNpb24gbmFtZXNwYWNlIGlzIHN0ZGV4dCBmb3IgdmM3LjEgYW5kIGxhdGVyLCAKLS8vIHRoZSBzYW1lIGFwcGxpZXMgdG8gb3RoZXIgY29tcGlsZXJzIHRoYXQgc2l0IG9uIHRvcAotLy8gb2YgdmM3LjEgKEludGVsIGFuZCBDb21lYXUpOgotLy8KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTMxMCkgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFIHN0ZGV4dAotI2VuZGlmCi0KLQotI2lmIChkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPD0gMTMwMCkgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSkgfHwgIWRlZmluZWQoX0NQUExJQl9WRVIpIHx8IChfQ1BQTElCX1ZFUiA8IDMwNikKLSAgIC8vIGlmIHdlJ3JlIHVzaW5nIGEgZGlua3VtIGxpYiB0aGF0J3MKLSAgIC8vIGJlZW4gY29uZmlndXJlZCBmb3IgVkM2LzcgdGhlbiB0aGVyZSBpcwotICAgLy8gbm8gaXRlcmF0b3IgdHJhaXRzICh0cnVlIGV2ZW4gZm9yIGljbCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19JQ0wpICYmIChfX0lDTCA8IDgwMCkgJiYgZGVmaW5lZChfQ1BQTElCX1ZFUikgJiYgKF9DUFBMSUJfVkVSIDw9IDMxMCkKLS8vIEludGVsIEMrKyBjaG9rZXMgb3ZlciBhbnkgbm9uLXRyaXZpYWwgdXNlIG9mIDxsb2NhbGU+Ci0vLyB0aGlzIG1heSBiZSBhbiBvdmVybHkgcmVzdHJpY3RpdmUgZGVmaW5lLCBidXQgcmVnZXggZmFpbHMgd2l0aG91dCBpdDoKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jZW5kaWYKLQotI2luY2x1ZGUgPHR5cGVpbmZvPgotI2lmICggKCFfSEFTX0VYQ0VQVElPTlMgJiYgIWRlZmluZWQoX19naHNfXykpIHx8ICghX0hBU19OQU1FU1BBQ0UgJiYgZGVmaW5lZChfX2doc19fKSkgKSAmJiAhZGVmaW5lZChfX1RJX0NPTVBJTEVSX1ZFUlNJT05fXykKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfVFlQRUlORk8gICAgCi0jZW5kaWYgIAotCi0vLyAgQysrMHggaGVhZGVycyBpbXBsZW1lbnRlZCBpbiA1MjAgKGFzIHNoaXBwZWQgYnkgTWljcm9zb2Z0KQotLy8KLSNpZiAhZGVmaW5lZChfQ1BQTElCX1ZFUikgfHwgX0NQUExJQl9WRVIgPCA1MjAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ERUNWVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVOQ1RJT05BTAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jZW5kaWYKLQotI2lmICghZGVmaW5lZChfSEFTX1RSMV9JTVBPUlRTKSB8fCAoX0hBU19UUjFfSU1QT1JUUyswID09IDApKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFCi0jZW5kaWYKLQotLy8gIEMrKzB4IGhlYWRlcnMgaW1wbGVtZW50ZWQgaW4gNTQwIChhcyBzaGlwcGVkIGJ5IE1pY3Jvc29mdCkKLS8vCi0jaWYgIWRlZmluZWQoX0NQUExJQl9WRVIpIHx8IF9DUFBMSUJfVkVSIDwgNTQwCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT05ESVRJT05fVkFSSUFCTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FMTE9DQVRPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FUT01JQ19TTUFSVF9QVFIKLSNlbmRpZgotCi0vLwotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCAoZnVsbHkpIGltcGxlbWVudGVkOgotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotCi0jaWZkZWYgX0NQUExJQl9WRVIKLSMgIGRlZmluZSBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiBfQ1BQTElCX1ZFUgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiAxCi0jZW5kaWYKLQotI2lmZGVmIF9DUFBMSUJfVkVSCi0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCICJEaW5rdW13YXJlIHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfQ1BQTElCX1ZFUikKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCICJEaW5rdW13YXJlIHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAxLngiCi0jZW5kaWYKLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjb21vLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjb21vLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYyMGExNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGliY29tby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMiAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIENvbWVhdSBTVEw6Ci0KLSNpZiAhZGVmaW5lZChfX0xJQkNPTU9fXykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvdXRpbGl0eS5ocHA+Ci0jICBpZiAhZGVmaW5lZChfX0xJQkNPTU9fXykKLSMgICAgICBlcnJvciAiVGhpcyBpcyBub3QgdGhlIENvbWVhdSBTVEwhIgotIyAgZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gc3RkOjpzdHJlYW1idWY8d2NoYXJfdD4gaXMgbm9uLXN0YW5kYXJkCi0vLyBOT1RFOiB2ZXJzaW9ucyBvZiBsaWJjb21vIHByaW9yIHRvIGJldGEyOCBoYXZlIG9jdGFsIHZlcnNpb24gbnVtYmVyaW5nLAotLy8gZS5nLiB2ZXJzaW9uIDI1IGlzIDIxIChkZWMpCi0jaWYgX19MSUJDT01PX1ZFUlNJT05fXyA8PSAyMgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSRUFNQlVGCi0jZW5kaWYKLQotI2lmIChfX0xJQkNPTU9fVkVSU0lPTl9fIDw9IDMxKSAmJiBkZWZpbmVkKF9XSU4zMikKLSNkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSNlbmRpZgotCi0jaWYgX19MSUJDT01PX1ZFUlNJT05fXyA+PSAzMQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19IQVNICi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NMSVNUCi0jZW5kaWYKLQotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVTkNUSU9OQUwKLQotLy8KLS8vIEludHJpbnNpYyB0eXBlX3RyYWl0cyBzdXBwb3J0LgotLy8gVGhlIFNHSSBTVEwgaGFzIGl0J3Mgb3duIF9fdHlwZV90cmFpdHMgY2xhc3MsIHdoaWNoCi0vLyBoYXMgaW50cmluc2ljIGNvbXBpbGVyIHN1cHBvcnQgd2l0aCBTR0kncyBjb21waWxlcnMuCi0vLyBXaGF0ZXZlciBtYXAgU0dJIHN0eWxlIHR5cGUgdHJhaXRzIHRvIGJvb3N0IGVxdWl2YWxlbnRzOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1NHSV9UWVBFX1RSQUlUUwotCi0jZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiQ29tZWF1IHN0YW5kYXJkIGxpYnJhcnkgIiBORE5CT09TVF9TVFJJTkdJWkUoX19MSUJDT01PX1ZFUlNJT05fXykKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGliY3BwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjcHAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGVlNjc4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjcHAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgQ2hyaXN0b3BoZXIgSmVmZmVyc29uIDIwMTEuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIGNvbmZpZyBmb3IgbGliYysrCi0vLyAgTWlnaHQgbmVlZCBtb3JlIGluIGhlcmUgbGF0ZXIuCi0KLSNpZiAhZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCi0jICBpbmNsdWRlIDxjaXNvNjQ2PgotIyAgaWYgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKQotIyAgICAgIGVycm9yICJUaGlzIGlzIG5vdCBsaWJjKyshIgotIyAgZW5kaWYKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1NURExJQiAibGliYysrIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX0xJQkNQUF9WRVJTSU9OKQotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0KLSNpZmRlZiBfTElCQ1BQX0hBU19OT19WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotI2VuZGlmCi0KLS8vCi0vLyBUaGVzZSBhcHBlYXIgdG8gYmUgdW51c2FibGUvaW5jb21wbGV0ZSBzbyBmYXI6Ci0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DSFJPTk8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotCi0vLyBsaWJjKysgdXNlcyBhIG5vbi1zdGFuZGFyZCBtZXNzYWdlc19iYXNlCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotCi0vLyAgLS0tIGVuZCAtLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwZDk5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGlic3RkY3BwMy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBjb25maWcgZm9yIGxpYnN0ZGMrKyB2MwotLy8gIG5vdCBtdWNoIHRvIGdvIGluIGhlcmU6Ci0KLSNkZWZpbmUgTkROQk9PU1RfR05VX1NURExJQiAxCi0KLSNpZmRlZiBfX0dMSUJDWFhfXwotI2RlZmluZSBORE5CT09TVF9TVERMSUIgIkdOVSBsaWJzdGRjKysgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX0dMSUJDWFhfXykKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiR05VIGxpYnN0ZGMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fR0xJQkNQUF9fKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChfR0xJQkNQUF9VU0VfV0NIQVJfVCkgJiYgIWRlZmluZWQoX0dMSUJDWFhfVVNFX1dDSEFSX1QpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1dDSEFSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1dDVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJFQU1CVUYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX29zZl9fKSAmJiAhZGVmaW5lZChfUkVFTlRSQU5UKSBcCi0gICYmICggZGVmaW5lZChfR0xJQkNYWF9IQVZFX0dUSFJfREVGQVVMVCkgfHwgZGVmaW5lZChfR0xJQkNQUF9IQVZFX0dUSFJfREVGQVVMVCkgKQotLy8gR0NDIDMgb24gVHJ1NjQgZm9yY2VzIHRoZSBkZWZpbml0aW9uIG9mIF9SRUVOVFJBTlQgd2hlbiBhbnkgc3RkIGxpYiBoZWFkZXIKLS8vIGZpbGUgaXMgaW5jbHVkZWQsIHRoZXJlZm9yZSBmb3IgY29uc2lzdGVuY3kgd2UgZGVmaW5lIGl0IGhlcmUgYXMgd2VsbC4KLSMgIGRlZmluZSBfUkVFTlRSQU5UCi0jZW5kaWYKLQotI2lmZGVmIF9fR0xJQkNYWF9fIC8vIGdjYyAzLjQgYW5kIGdyZWF0ZXI6Ci0jICBpZiBkZWZpbmVkKF9HTElCQ1hYX0hBVkVfR1RIUl9ERUZBVUxUKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX0dMSUJDWFhfX1BUSFJFQURTKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX0dMSUJDWFhfSEFTX0dUSFJFQURTKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX1dJTjMyKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX0FJWCkKLSAgICAgIC8vCi0gICAgICAvLyBJZiB0aGUgc3RkIGxpYiBoYXMgdGhyZWFkIHN1cHBvcnQgdHVybmVkIG9uLCB0aGVuIHR1cm4gaXQgb24gaW4gQm9vc3QKLSAgICAgIC8vIGFzIHdlbGwuICBXZSBkbyB0aGlzIGJlY2F1c2Ugc29tZSBnY2MtMy40IHN0ZCBsaWIgaGVhZGVycyBkZWZpbmUgX1JFRU5UQU5UCi0gICAgICAvLyB3aGlsZSBvdGhlcnMgZG8gbm90Li4uCi0gICAgICAvLwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9USFJFQURTCi0jICBlbmRpZgotI2VsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgXAotICAgICAgICAmJiAhZGVmaW5lZChfR0xJQkNQUF9IQVZFX0dUSFJfREVGQVVMVCkgXAotICAgICAgICAmJiAhZGVmaW5lZChfR0xJQkNQUF9fUFRIUkVBRFMpCi0gICAvLyBkaXNhYmxlIHRocmVhZCBzdXBwb3J0IGlmIHRoZSBzdGQgbGliIHdhcyBidWlsdCBzaW5nbGUgdGhyZWFkZWQ6Ci0jICBkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9USFJFQURTCi0jZW5kaWYKLQotI2lmIChkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fbGludXgpIHx8IGRlZmluZWQoX19saW51eF9fKSkgJiYgZGVmaW5lZChfX2FybV9fKSAmJiBkZWZpbmVkKF9HTElCQ1BQX0hBVkVfR1RIUl9ERUZBVUxUKQotLy8gbGludXggb24gYXJtIGFwcGFyZW50bHkgZG9lc24ndCBkZWZpbmUgX1JFRU5UUkFOVAotLy8gc28ganVzdCB0dXJuIG9uIHRocmVhZGluZyBzdXBwb3J0IHdoZW5ldmVyIHRoZSBzdGQgbGliIGlzIHRocmVhZCBzYWZlOgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKF9HTElCQ1BQX1VTRV9MT05HX0xPTkcpIFwKLSAgICAmJiAhZGVmaW5lZChfR0xJQkNYWF9VU0VfTE9OR19MT05HKVwKLSAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0vLyBNYXkgaGF2ZSBiZWVuIHNldCBieSBjb21waWxlci8qLmhwcCwgYnV0ICJsb25nIGxvbmciIHdpdGhvdXQgbGlicmFyeQotLy8gc3VwcG9ydCBpcyB1c2VsZXNzLgotIyAgdW5kZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotI2VuZGlmCi0KLS8vIEFwcGxlIGRvZXNuJ3Qgc2VlbSB0byByZWxpYWJseSBkZWZpbmVkIGEgKnVuaXgqIG1hY3JvCi0jaWYgIWRlZmluZWQoQ1lHV0lOKSAmJiAoICBkZWZpbmVkKF9fdW5peF9fKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX3VuaXgpICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQodW5peCkgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fQVBQTEVfXykgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX0FQUExFKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoQVBQTEUpKQotIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTElCQ1hYX18pIHx8IChkZWZpbmVkKF9fR0xJQkNQUF9fKSAmJiBfX0dMSUJDUFBfXz49MjAwMjA1MTQpIC8vIEdDQyA+PSAzLjEuMAotIyAgZGVmaW5lIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFIF9fZ251X2N4eAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19IQVNICi0jICBkZWZpbmUgTkROQk9PU1RfU0xJU1RfSEVBREVSIDxleHQvc2xpc3Q+Ci0jIGlmICFkZWZpbmVkKF9fR05VQ19fKSB8fCBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCAzKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX1NFVF9IRUFERVIgPGV4dC9oYXNoX3NldD4KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9NQVBfSEVBREVSIDxleHQvaGFzaF9tYXA+Ci0jIGVsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9TRVRfSEVBREVSIDxiYWNrd2FyZC9oYXNoX3NldD4KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9NQVBfSEVBREVSIDxiYWNrd2FyZC9oYXNoX21hcD4KLSMgZW5kaWYKLSNlbmRpZgotCi0vLyAgc3RkbGliYysrIEMrKzB4IHN1cHBvcnQgaXMgZGV0ZWN0ZWQgdmlhIF9fR05VQ19fLCBfX0dOVUNfTUlOT1JfXywgYW5kIHBvc3NpYmx5Ci0vLyAgX19HTlVDX1BBVENITEVWRUxfXyBhdCB0aGUgc3VnZ2VzdGlvbiBvZiBKb25hdGhhbiBXYWtlbHksIG9uZSBvZiB0aGUgc3RkbGliYysrCi0vLyAgZGV2ZWxvcGVycy4gSGUgYWxzbyBjb21tZW50ZWQ6Ci0vLwotLy8gICAgICAgIkknbSBub3Qgc3VyZSBob3cgdXNlZnVsIF9fR0xJQkNYWF9fIGlzIGZvciB5b3VyIHB1cnBvc2VzLCBmb3IgaW5zdGFuY2UgaW4KLS8vICAgICAgIEdDQyA0LjIuNCBpdCBpcyBzZXQgdG8gMjAwODA1MTkgYnV0IGluIEdDQyA0LjMuMCBpdCBpcyBzZXQgdG8gMjAwODAzMDUuCi0vLyAgICAgICBBbHRob3VnaCA0LjMuMCB3YXMgcmVsZWFzZWQgZWFybGllciB0aGFuIDQuMi40LCBpdCBoYXMgYmV0dGVyIEMrKzB4IHN1cHBvcnQKLS8vICAgICAgIHRoYW4gYW55IHJlbGVhc2UgaW4gdGhlIDQuMiBzZXJpZXMuIgotLy8KLS8vICBBbm90aGVyIHJlc291cmNlIGZvciB1bmRlcnN0YW5kaW5nIHN0ZGxpYmMrKyBmZWF0dXJlcyBpczoKLS8vICBodHRwOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9saWJzdGRjKysvbWFudWFsL3N0YXR1cy5odG1sI21hbnVhbC5pbnRyby5zdGF0dXMuc3RhbmRhcmQuMjAweAotCi0vLyAgQysrMHggaGVhZGVycyBpbiBHQ0MgNC4zLjAgYW5kIGxhdGVyCi0vLwotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDMpIHx8ICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SRUdFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVOQ1RJT05BTAotI2VuZGlmCi0KLS8vICBDKysweCBoZWFkZXJzIGluIEdDQyA0LjQuMCBhbmQgbGF0ZXIKLS8vCi0jaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNCkgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9TWVNURU1fRVJST1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9DT01QTEVYX0lOVkVSU0VfVFJJRyAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVFIxX0NPTVBMRVhfT1ZFUkxPQURTIAotI2VuZGlmCi0KLSNpZiAoIWRlZmluZWQoX0dMSUJDWFhfSEFTX0dUSFJFQURTKSB8fCAhZGVmaW5lZChfR0xJQkNYWF9VU0VfQzk5X1NURElOVF9UUjEpKSAmJiAoIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRSkgfHwgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYKSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYCi0jZW5kaWYKLQotLy8gIEMrKzB4IGZlYXR1cmVzIGluIEdDQyA0LjUuMCBhbmQgbGF0ZXIKLS8vCi0jaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNSkgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBTkRPTQotI2VuZGlmCi0KLS8vICBDKysweCBmZWF0dXJlcyBpbiBHQ0MgNC42LjAgYW5kIGxhdGVyCi0vLwotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYpIHx8ICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSNlbmRpZgotCi0vLyAgQysrMHggZmVhdHVyZXMgaW4gR0NDIDQuNy4wIGFuZCBsYXRlcgotLy8KLSNpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3KSB8fCAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLS8vIE5vdGUgdGhhdCBhbHRob3VnaCA8Y2hyb25vPiBleGlzdGVkIHByaW9yIHRvIDQuNywgInN0ZWFkX2Nsb2NrIiBpcyBzcGVsbGVkICJtb25vdG9uaWNfY2xvY2siCi0vLyBzbyA0LjcuMCBpcyB0aGUgZmlyc3QgdHJ1ZWx5IGNvbmZvcm1pbmcgb25lLgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DSFJPTk8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSNlbmRpZgotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCAoZnVsbHkhKSBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFECi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0KLS8vICAtLS0gZW5kIC0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL21vZGVuYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbW9kZW5hLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZmYjk1Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbW9kZW5hLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIE1vZGVuYSBDKysgc3RhbmRhcmQgbGlicmFyeSAoY29tZXMgd2l0aCBLQUkgQysrKQotCi0jaWYgIWRlZmluZWQoTVNJUExfQ09NUElMRV9IKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLSMgIGlmICFkZWZpbmVkKF9fTVNJUExfQ09NUElMRV9IKQotIyAgICAgIGVycm9yICJUaGlzIGlzIG5vdCB0aGUgTW9kZW5hIEMrKyBsaWJyYXJ5ISIKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBNU0lQTF9OTF9UWVBFUwotI2RlZmluZSBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSNlbmRpZgotCi0jaWZuZGVmIE1TSVBMX1dDSEFSVAotI2RlZmluZSBORE5CT09TVF9OT19TVERfV1NUUklORwotI2VuZGlmCi0KLS8vICBDKysweCBoZWFkZXJzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJNb2RlbmEgQysrIHN0YW5kYXJkIGxpYnJhcnkiCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL21zbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbXNsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5MmUyZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbXNsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIE1ldHJvd2Vya3Mgc3RhbmRhcmQgbGlicmFyeToKLQotI2lmbmRlZiBfX01TTF9DUFBfXwotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLSMgIGlmbmRlZiBfX01TTF9DUFBfXwotIyAgICAgZXJyb3IgVGhpcyBpcyBub3QgdGhlIE1TTCBzdGFuZGFyZCBsaWJyYXJ5IQotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWYgX19NU0xfQ1BQX18gPj0gMHg2MDAwICAvLyBQcm8gNgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19IQVNICi0jICBkZWZpbmUgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0UgTWV0cm93ZXJrcwotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TTElTVAotCi0jaWYgX19NU0xfQ1BQX18gPCAweDYyMDkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSNlbmRpZgotCi0vLyBjaGVjayBDIGxpYiB2ZXJzaW9uIGZvciA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIGRlZmluZWQoX19NU0xfXykgJiYgKF9fTVNMX18gPj0gMHg1MDAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgaWYgIWRlZmluZWQoX19QQUxNT1NfVFJBUFNfXykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgZW5kaWYKLSAgIC8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9NV01UKSB8fCBfTVNMX1RIUkVBRFNBRkUKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUwotI2VuZGlmCi0KLSNpZmRlZiBfTVNMX05PX0VYUExJQ0lUX0ZVTkNfVEVNUExBVEVfQVJHCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1VTRV9GQUNFVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19UV09fQVJHX1VTRV9GQUNFVAotI2VuZGlmCi0KLS8vICBDKysweCBoZWFkZXJzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJNZXRyb3dlcmtzIFN0YW5kYXJkIExpYnJhcnkgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX01TTF9DUFBfXykKLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9yb2d1ZXdhdmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3JvZ3Vld2F2ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NWM0OTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3JvZ3Vld2F2ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBCb3JpcyBHdWJlbmtvIDIwMDcuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFJvZ3VlIFdhdmUgc3RkIGxpYjoKLQotI2RlZmluZSBORE5CT09TVF9SV19TVERMSUIgMSAKLQotI2lmICFkZWZpbmVkKF9fU1REX1JXQ09NUElMRVJfSF9fKSAmJiAhZGVmaW5lZChfUldTVERfVkVSKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLSMgIGlmICFkZWZpbmVkKF9fU1REX1JXQ09NUElMRVJfSF9fKSAmJiAhZGVmaW5lZChfUldTVERfVkVSKQotIyAgICAgZXJyb3IgVGhpcyBpcyBub3QgdGhlIFJvZ3VlIFdhdmUgc3RhbmRhcmQgbGlicmFyeQotIyAgZW5kaWYKLSNlbmRpZgotLy8KLS8vIGZpZ3VyZSBvdXQgYSBjb25zaXN0ZW50IHZlcnNpb24gbnVtYmVyOgotLy8KLSNpZm5kZWYgX1JXU1REX1ZFUgotIyAgZGVmaW5lIE5ETkJPT1NUX1JXU1REX1ZFUiAweDAxMDAwMAotI2VsaWYgX1JXU1REX1ZFUiA8IDB4MDEwMDAwCi0jICBkZWZpbmUgTkROQk9PU1RfUldTVERfVkVSIChfUldTVERfVkVSIDw8IDgpCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1JXU1REX1ZFUiBfUldTVERfVkVSCi0jZW5kaWYKLQotI2lmbmRlZiBfUldTVERfVkVSCi0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCICJSb2d1ZSBXYXZlIHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAoVW5rbm93biB2ZXJzaW9uKSIKLSNlbGlmIF9SV1NURF9WRVIgPCAweDA0MDEwMjAwCi0gIyAgZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiUm9ndWUgV2F2ZSBzdGFuZGFyZCBsaWJyYXJ5IHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX1JXU1REX1ZFUikKLSNlbHNlCi0jICBpZmRlZiBfUldTVERfVkVSX1NUUgotIyAgICBkZWZpbmUgTkROQk9PU1RfU1RETElCICJBcGFjaGUgU1REQ1hYIHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAiIF9SV1NURF9WRVJfU1RSCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9TVERMSUIgIkFwYWNoZSBTVERDWFggc3RhbmRhcmQgbGlicmFyeSB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9SV1NURF9WRVIpCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vCi0vLyBQcmlvciB0byB2ZXJzaW9uIDIuMi4wIHRoZSBwcmltYXJ5IHRlbXBsYXRlIGZvciBzdGQ6Om51bWVyaWNfbGltaXRzCi0vLyBkb2VzIG5vdCBoYXZlIGNvbXBpbGUgdGltZSBjb25zdGFudHMsIGV2ZW4gdGhvdWdoIHNwZWNpYWxpemF0aW9ucyBvZiB0aGF0Ci0vLyB0ZW1wbGF0ZSBkbzoKLS8vCi0jaWYgTkROQk9PU1RfUldTVERfVkVSIDwgMHgwMjAyMDAKLSMgIGRlZmluZSBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotI2VuZGlmCi0KLS8vIFN1biBDQyA1LjUgcGF0Y2ggMTEzODE3LTA3IGFkZHMgbG9uZyBsb25nIHNwZWNpYWxpemF0aW9uLCBidXQgZG9lcyBub3QgY2hhbmdlIHRoZQotLy8gbGlicmFyeSB2ZXJzaW9uIG51bWJlciAoaHR0cDovL3N1bnNvbHZlNi5zdW4uY29tL3NlYXJjaC9kb2N1bWVudC5kbz9hc3NldGtleT0xLTIxLTExMzgxNyk6Ci0jaWYgTkROQk9PU1RfUldTVERfVkVSIDw9IDB4MDIwMTAxICYmICghZGVmaW5lZChfX1NVTlBST19DQykgfHwgKF9fU1VOUFJPX0NDIDwgMHg1NTApKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xPTkdfTE9OR19OVU1FUklDX0xJTUlUUwotIyBlbmRpZgotCi0vLwotLy8gQm9ybGFuZCB2ZXJzaW9uIG9mIG51bWVyaWNfbGltaXRzIGxhY2tzIF9faW50NjQgc3BlY2lhbGlzYXRpb246Ci0vLwotI2lmZGVmIF9fQk9STEFORENfXwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX01TX0lOVDY0X05VTUVSSUNfTElNSVRTCi0jZW5kaWYKLQotLy8KLS8vIE5vIHN0ZDo6aXRlcmF0b3IgaWYgaXQgY2FuJ3QgZmlndXJlIG91dCBkZWZhdWx0IHRlbXBsYXRlIGFyZ3M6Ci0vLwotI2lmIGRlZmluZWQoX1JXU1REX05PX1NJTVBMRV9ERUZBVUxUX1RFTVBMQVRFUykgfHwgZGVmaW5lZChSV1NURF9OT19TSU1QTEVfREVGQVVMVF9URU1QTEFURVMpIHx8IChORE5CT09TVF9SV1NURF9WRVIgPCAweDAyMDAwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSNlbmRpZgotCi0vLwotLy8gTm8gaXRlcmF0b3IgdHJhaXRzIHdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbjoKLS8vCi0jaWYgZGVmaW5lZChfUldTVERfTk9fQ0xBU1NfUEFSVElBTF9TUEVDKSB8fCBkZWZpbmVkKFJXU1REX05PX0NMQVNTX1BBUlRJQUxfU1BFQykKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTCi0jZW5kaWYKLQotLy8KLS8vIFByaW9yIHRvIHZlcnNpb24gMi4wLCBzdGQ6OmF1dG9fcHRyIHdhcyBidWdneSwgYW5kIHRoZXJlIHdlcmUgbm8KLS8vIG5ldy1zdHlsZSBpb3N0cmVhbXMsIGFuZCBubyBjb25mb3JtYW50IHN0ZDo6YWxsb2NhdG9yOgotLy8KLSNpZiAoTkROQk9PU1RfUldTVERfVkVSIDwgMHgwMjAwMDApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQVVUT19QVFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotI2VuZGlmCi0KLS8vCi0vLyBObyB0ZW1wbGF0ZSBpdGVyYXRvciBjb25zdHJ1Y3RvcnMgd2l0aG91dCBtZW1iZXIgdGVtcGxhdGUgc3VwcG9ydDoKLS8vCi0jaWYgZGVmaW5lZChSV1NURF9OT19NRU1CRVJfVEVNUExBVEVTKSB8fCBkZWZpbmVkKF9SV1NURF9OT19NRU1CRVJfVEVNUExBVEVTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMKLSNlbmRpZgotCi0vLwotLy8gUlcgZGVmaW5lcyBfUldTVERfQUxMT0NBVE9SIGlmIHRoZSBhbGxvY2F0b3IgaXMgY29uZm9ybWFudCBhbmQgaW4gdXNlCi0vLyAodGhlIG9yIF9IUEFDQ18gcGFydCBpcyBhIGhhY2sgLSB0aGUgbGlicmFyeSBzZWVtcyB0byBkZWZpbmUgX1JXU1REX0FMTE9DQVRPUgotLy8gb24gSFAgYUNDIHN5c3RlbXMgZXZlbiB0aG91Z2ggdGhlIGFsbG9jYXRvciBpcyBpbiBmYWN0IGJyb2tlbik6Ci0vLwotI2lmICFkZWZpbmVkKF9SV1NURF9BTExPQ0FUT1IpIHx8IChkZWZpbmVkKF9fSFBfYUNDKSAmJiBfX0hQX2FDQyA8PSAzMzEwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jZW5kaWYKLQotLy8KLS8vIElmIHdlIGhhdmUgYSBzdGQ6OmxvY2FsZSwgd2Ugc3RpbGwgbWF5IG5vdCBoYXZlIHN0ZDo6dXNlX2ZhY2V0OgotLy8KLSNpZiBkZWZpbmVkKF9SV1NURF9OT19URU1QTEFURV9PTl9SRVRVUk5fVFlQRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfVVNFX0ZBQ0VUCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RXT19BUkdfVVNFX0ZBQ0VUCi0jZW5kaWYKLQotLy8KLS8vIFRoZXJlJ3Mgbm8gc3RkOjpkaXN0YW5jZSBwcmlvciB0byB2ZXJzaW9uIDIsIG9yIHdpdGhvdXQKLS8vIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gc3VwcG9ydDoKLS8vCi0jaWYgKE5ETkJPT1NUX1JXU1REX1ZFUiA8IDB4MDIwMDAwKSB8fCBkZWZpbmVkKF9SV1NURF9OT19DTEFTU19QQVJUSUFMX1NQRUMpCi0gICAgI2RlZmluZSBORE5CT09TVF9OT19TVERfRElTVEFOQ0UKLSNlbmRpZgotCi0vLwotLy8gU29tZSB2ZXJzaW9ucyBvZiB0aGUgcm9ndWUgd2F2ZSBsaWJyYXJ5IGRvbid0IGhhdmUgYXNzaWduYWJsZQotLy8gT3V0cHV0SXRlcmF0b3JzOgotLy8KLSNpZiBORE5CT09TVF9SV1NURF9WRVIgPCAweDAyMDEwMAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9PVVRQVVRfSVRFUkFUT1JfQVNTSUdOCi0jZW5kaWYKLQotLy8KLS8vIERpc2FibGUgTkROQk9PU1RfSEFTX0xPTkdfTE9ORyB3aGVuIHRoZSBsaWJyYXJ5IGhhcyBubyBzdXBwb3J0IGZvciBpdC4KLS8vCi0jaWYgIWRlZmluZWQoX1JXU1REX0xPTkdfTE9ORykgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotIyAgdW5kZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotI2VuZGlmCi0KLS8vCi0vLyBjaGVjayB0aGF0IG9uIEhQLVVYLCB0aGUgcHJvcGVyIFJXIGxpYnJhcnkgaXMgdXNlZAotLy8KLSNpZiBkZWZpbmVkKF9fSFBfYUNDKSAmJiAhZGVmaW5lZChfSFBfTkFNRVNQQUNFX1NURCkKLSMgIGVycm9yICJCb29zdCByZXF1aXJlcyBTdGFuZGFyZCBSVyBsaWJyYXJ5LiBQbGVhc2UgY29tcGlsZSBhbmQgbGluayB3aXRoIC1BQSIKLSNlbmRpZgotCi0vLwotLy8gRGVmaW5lIG1hY3JvcyBzcGVjaWZpYyB0byBSVyBWMi4yIG9uIEhQLVVYCi0vLwotI2lmIGRlZmluZWQoX19IUF9hQ0MpICYmIChORE5CT09TVF9SV1NURF9WRVIgPT0gMHgwMjAyMDEwMCkKLSMgIGlmbmRlZiBfX0hQX1RDMV9NQUtFX1BBSVIKLSMgICAgZGVmaW5lIF9fSFBfVEMxX01BS0VfUEFJUgotIyAgZW5kaWYKLSMgIGlmbmRlZiBfSFBfSU5TVEFOVElBVEVfU1REMl9WTAotIyAgICBkZWZpbmUgX0hQX0lOU1RBTlRJQVRFX1NURDJfVkwKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmIF9SV1NURF9WRVIgPCAweDA1MDAwMDAwCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jZW5kaWYKLS8vIHR5cGVfdHJhaXRzIGhlYWRlciBpcyBpbmNvbXBsZXRlOgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUwotLy8KLS8vICBDKysweCBoZWFkZXJzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9zZ2kuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3NnaS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMTRmNGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3NnaS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMSAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIGdlbmVyaWMgU0dJIFNUTDoKLQotI2lmICFkZWZpbmVkKF9fU1RMX0NPTkZJR19IKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLSMgIGlmICFkZWZpbmVkKF9fU1RMX0NPTkZJR19IKQotIyAgICAgIGVycm9yICJUaGlzIGlzIG5vdCB0aGUgU0dJIFNUTCEiCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vCi0vLyBObyBzdGQ6Oml0ZXJhdG9yIHRyYWl0cyB3aXRob3V0IHBhcnRpYWwgc3BlY2lhbGlzYXRpb246Ci0vLwotI2lmICFkZWZpbmVkKF9fU1RMX0NMQVNTX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUwotI2VuZGlmCi0KLS8vCi0vLyBObyBzdGQ6OnN0cmluZ3N0cmVhbSB3aXRoIGdjYyA8IDMKLS8vCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgMykgJiYgXAotICAgICAoKF9fR05VQ19NSU5PUl9fIDwgOTUpIHx8IChfX0dOVUNfTUlOT1JfXyA9PSA5NikpICYmIFwKLSAgICAgIWRlZmluZWQoX19TVExfVVNFX05FV19JT1NUUkVBTVMpIHx8IFwKLSAgIGRlZmluZWQoX19BUFBMRV9DQ19fKQotICAgLy8gTm90ZSB0aGF0IHdlIG9ubHkgc2V0IHRoaXMgZm9yIEdOVSBDKysgcHJpb3IgdG8gMi45NSBzaW5jZSB0aGUKLSAgIC8vIGxhdGVzdCBwYXRjaGVzIGZvciB0aGF0IHJlbGVhc2UgZG8gY29udGFpbiBhIG1pbmltYWwgPHNzdHJlYW0+Ci0gICAvLyBJZiB5b3UgYXJlIHJ1bm5pbmcgYSAyLjk1IHJlbGVhc2UgcHJpb3IgdG8gMi45NS4zIHRoZW4gdGhpcyB3aWxsIG5lZWQKLSAgIC8vIHNldHRpbmcsIGJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gZGV0ZWN0IHRoYXQgYXV0b21hdGljYWxseSAob3RoZXIKLSAgIC8vIHRoYW4gYnkgcnVubmluZyB0aGUgY29uZmlndXJlIHNjcmlwdCkuCi0gICAvLyBBbHNvLCB0aGUgdW5vZmZpY2lhbCBHTlUgQysrIDIuOTYgaW5jbHVkZWQgaW4gUmVkSGF0IDcuMSBkb2Vzbid0Ci0gICAvLyBoYXZlIDxzc3RyZWFtPi4KLSMgIGRlZmluZSBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSNlbmRpZgotCi0vLyBBcHBsZSBkb2Vzbid0IHNlZW0gdG8gcmVsaWFibHkgZGVmaW5lZCBhICp1bml4KiBtYWNybwotI2lmICFkZWZpbmVkKENZR1dJTikgJiYgKCAgZGVmaW5lZChfX3VuaXhfXykgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoX191bml4KSAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKHVuaXgpICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX0FQUExFX18pIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoX19BUFBMRSkgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKEFQUExFKSkKLSMgIGluY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLQotLy8KLS8vIEFzc3VtZSBubyBzdGQ6OmxvY2FsZSB3aXRob3V0IG93biBpb3N0cmVhbXMgKHRoaXMgbWF5IGJlIGFuCi0vLyBpbmNvcnJlY3QgYXNzdW1wdGlvbiBpbiBzb21lIGNhc2VzKToKLS8vCi0jaWYgIWRlZmluZWQoX19TR0lfU1RMX09XTl9JT1NUUkVBTVMpICYmICFkZWZpbmVkKF9fU1RMX1VTRV9ORVdfSU9TVFJFQU1TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSNlbmRpZgotCi0vLwotLy8gT3JpZ2luYWwgbmF0aXZlIFNHSSBzdHJlYW1zIGhhdmUgbm9uLXN0YW5kYXJkIHN0ZDo6bWVzc2FnZXMgZmFjZXQ6Ci0vLwotI2lmIGRlZmluZWQoX19zZ2kpICYmIChfQ09NUElMRVJfVkVSU0lPTiA8PSA2NTApICYmICFkZWZpbmVkKF9fU0dJX1NUTF9PV05fSU9TVFJFQU1TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSNlbmRpZgotCi0vLwotLy8gU0dJJ3MgbmV3IGlvc3RyZWFtcyBoYXZlIG1pc3NpbmcgImNvbnN0IiBpbiBtZXNzYWdlczw+OjpvcGVuCi0vLwotI2lmIGRlZmluZWQoX19zZ2kpICYmIChfQ09NUElMRVJfVkVSU0lPTiA8PSA3NDApICYmIGRlZmluZWQoX19TVExfVVNFX05FV19JT1NUUkVBTVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0jZW5kaWYKLQotLy8KLS8vIE5vIHRlbXBsYXRlIGl0ZXJhdG9yIGNvbnN0cnVjdG9ycywgb3Igc3RkOjphbGxvY2F0b3IKLS8vIHdpdGhvdXQgbWVtYmVyIHRlbXBsYXRlczoKLS8vCi0jaWYgIWRlZmluZWQoX19TVExfTUVNQkVSX1RFTVBMQVRFUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotI2VuZGlmCi0KLS8vCi0vLyBXZSBhbHdheXMgaGF2ZSBTR0kgc3R5bGUgaGFzaF9zZXQsIGhhc2hfbWFwLCBhbmQgc2xpc3Q6Ci0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfSEFTSAotI2RlZmluZSBORE5CT09TVF9IQVNfU0xJU1QKLQotLy8KLS8vIElmIHRoaXMgaXMgR05VIGxpYnN0ZGMrKzIsIHRoZW4gbm8gPGxpbWl0cz4gYW5kIG5vIHN0ZDo6d3N0cmluZzoKLS8vCi0jaWYgKGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA8IDMpKQotIyAgaW5jbHVkZSA8c3RyaW5nPgotIyAgaWYgZGVmaW5lZChfX0JBU1RSSU5HX18pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTElNSVRTCi0vLyBOb3RlOiA8bmRuYm9vc3QvbGltaXRzLmhwcD4gd2lsbCBwcm92aWRlIGNvbXBpbGUtdGltZSBjb25zdGFudHMKLSMgICAgIHVuZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8KLS8vIFRoZXJlIGlzIG5vIHN0YW5kYXJkIGl0ZXJhdG9yIHVubGVzcyB3ZSBoYXZlIG5hbWVzcGFjZSBzdXBwb3J0OgotLy8KLSNpZiAhZGVmaW5lZChfX1NUTF9VU0VfTkFNRVNQQUNFUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSNlbmRpZgotCi0vLwotLy8gSW50cmluc2ljIHR5cGVfdHJhaXRzIHN1cHBvcnQuCi0vLyBUaGUgU0dJIFNUTCBoYXMgaXQncyBvd24gX190eXBlX3RyYWl0cyBjbGFzcywgd2hpY2gKLS8vIGhhcyBpbnRyaW5zaWMgY29tcGlsZXIgc3VwcG9ydCB3aXRoIFNHSSdzIGNvbXBpbGVycy4KLS8vIFdoYXRldmVyIG1hcCBTR0kgc3R5bGUgdHlwZSB0cmFpdHMgdG8gYm9vc3QgZXF1aXZhbGVudHM6Ci0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfU0dJX1RZUEVfVFJBSVRTCi0KLS8vICBDKysweCBoZWFkZXJzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJTR0kgc3RhbmRhcmQgbGlicmFyeSIKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9zdGxwb3J0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9zdGxwb3J0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVkZDcxOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvc3RscG9ydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMS4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgU1RMUG9ydCBzdGFuZGFyZCBsaWJyYXJ5IGNvbmZpZzoKLQotI2lmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotIyAgaW5jbHVkZSA8Y3N0ZGRlZj4KLSMgIGlmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotIyAgICAgIGVycm9yICJUaGlzIGlzIG5vdCBTVExQb3J0ISIKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8gQXBwbGUgZG9lc24ndCBzZWVtIHRvIHJlbGlhYmx5IGRlZmluZWQgYSAqdW5peCogbWFjcm8KLSNpZiAhZGVmaW5lZChDWUdXSU4pICYmICggIGRlZmluZWQoX191bml4X18pICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fdW5peCkgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZCh1bml4KSAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoX19BUFBMRV9fKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fQVBQTEUpICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChBUFBMRSkpCi0jICBpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCi0vLwotLy8gX19TVExfU1RBVElDX0NPTlNUX0lOSVRfQlVHIGltcGxpZXMgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLS8vIGZvciB2ZXJzaW9ucyBwcmlvciB0byA0LjEoYmV0YSkKLS8vCi0jaWYgKGRlZmluZWQoX19TVExfU1RBVElDX0NPTlNUX0lOSVRfQlVHKSB8fCBkZWZpbmVkKF9TVExQX1NUQVRJQ19DT05TVF9JTklUX0JVRykpICYmIChfX1NHSV9TVExfUE9SVCA8PSAweDQwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotI2VuZGlmCi0KLS8vCi0vLyBJZiBTVExwb3J0IHRoaW5rcyB0aGF0IHRoZXJlIGlzIG5vIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24sIHRoZW4gdGhlcmUgaXMgbm8KLS8vIHN0ZDo6aXRlcmF0b3IgdHJhaXRzOgotLy8KLSNpZiAhKGRlZmluZWQoX1NUTFBfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgfHwgZGVmaW5lZChfX1NUTF9DTEFTU19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTCi0jZW5kaWYKLQotLy8KLS8vIE5vIG5ldyBzdHlsZSBpb3N0cmVhbXMgb24gR0NDIHdpdGhvdXQgU1RMcG9ydCdzIGlvc3RyZWFtcyBlbmFibGVkOgotLy8KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgMykpICYmICEoZGVmaW5lZChfX1NHSV9TVExfT1dOX0lPU1RSRUFNUykgfHwgZGVmaW5lZChfU1RMUF9PV05fSU9TVFJFQU1TKSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSNlbmRpZgotCi0vLwotLy8gTm8gbmV3IGlvc3RyZWFtcyBpbXBsaWVzIG5vIHN0ZDo6bG9jYWxlLCBhbmQgbm8gc3RkOjpzdHJpbmdzdHJlYW06Ci0vLwotI2lmIGRlZmluZWQoX19TVExfTk9fSU9TVFJFQU1TKSB8fCBkZWZpbmVkKF9fU1RMX05PX05FV19JT1NUUkVBTVMpIHx8IGRlZmluZWQoX1NUTFBfTk9fSU9TVFJFQU1TKSB8fCBkZWZpbmVkKF9TVExQX05PX05FV19JT1NUUkVBTVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotI2VuZGlmCi0KLS8vCi0vLyBJZiB0aGUgc3RyZWFtcyBhcmUgbm90IG5hdGl2ZSwgYW5kIHdlIGhhdmUgYSAidXNpbmcgOjp4IiBjb21waWxlciBidWcKLS8vIHRoZW4gdGhlIGlvIHN0cmVhbSBmYWNldHMgYXJlIG5vdCBhdmFpbGFibGUgaW4gbmFtZXNwYWNlIHN0ZDo6Ci0vLwotI2lmZGVmIF9TVExQT1JUX1ZFUlNJT04KLSMgIGlmICEoX1NUTFBPUlRfVkVSU0lPTiA+PSAweDUwMCkgJiYgIWRlZmluZWQoX1NUTFBfT1dOX0lPU1RSRUFNUykgJiYgZGVmaW5lZChfU1RMUF9VU0VfTkFNRVNQQUNFUykgJiYgZGVmaW5lZChORE5CT09TVF9OT19VU0lOR19URU1QTEFURSkgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgIGVuZGlmCi0jZWxzZQotIyAgaWYgIWRlZmluZWQoX19TR0lfU1RMX09XTl9JT1NUUkVBTVMpICYmIGRlZmluZWQoX19TVExfVVNFX05BTUVTUEFDRVMpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pICYmIChfU1RMUE9SVF9WRVJTSU9OID49IDB4NTIwKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVU5PUkRFUkVEX01BUAotI2VuZGlmCi0vLwotLy8gV2l0aG91dCBtZW1iZXIgdGVtcGxhdGUgc3VwcG9ydCBlbmFibGVkLCB0aGVpciBhcmUgbm8gdGVtcGxhdGUKLS8vIGl0ZXJhdGUgY29uc3RydWN0b3JzLCBhbmQgbm8gc3RkOjphbGxvY2F0b3I6Ci0vLwotI2lmICEoZGVmaW5lZChfX1NUTF9NRU1CRVJfVEVNUExBVEVTKSB8fCBkZWZpbmVkKF9TVExQX01FTUJFUl9URU1QTEFURVMpKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jZW5kaWYKLS8vCi0vLyBob3dldmVyIHdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0IGEgcGFydGlhbCBhbGxvY2F0b3I6Ci0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfUEFSVElBTF9TVERfQUxMT0NBVE9SCi0KLSNpZiAhZGVmaW5lZChfU1RMUF9NRU1CRVJfVEVNUExBVEVfQ0xBU1NFUykgfHwgZGVmaW5lZChfU1RMUF9ET05UX1NVUFBPUlRfUkVCSU5EX01FTUJFUl9URU1QTEFURSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX1NUTFBfTk9fTUVNQkVSX1RFTVBMQVRFX0tFWVdPUkQpICYmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPD0gMTMwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jZW5kaWYKLQotLy8KLS8vIElmIFNUTHBvcnQgdGhpbmtzIHRoZXJlIGlzIG5vIHdjaGFyX3QgYXQgYWxsLCB0aGVuIHdlIGhhdmUgdG8gZGlzYWJsZQotLy8gdGhlIHN1cHBvcnQgZm9yIHRoZSByZWxldmFudCBzcGVjaWxhemF0aW9ucyBvZiBzdGQ6OiB0ZW1wbGF0ZXMuCi0vLwotI2lmICFkZWZpbmVkKF9TVExQX0hBU19XQ0hBUl9UKSAmJiAhZGVmaW5lZChfU1RMUF9XQ0hBUl9UX0lTX1VTSE9SVCkKLSMgIGlmbmRlZiAgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfV1NUUklORwotIyAgZW5kaWYKLSMgIGlmbmRlZiAgTkROQk9PU1RfTk9fU1REX1dTVFJFQU1CVUYKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfV1NUUkVBTUJVRgotIyAgZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gV2UgYWx3YXlzIGhhdmUgU0dJIHN0eWxlIGhhc2hfc2V0LCBoYXNoX21hcCwgYW5kIHNsaXN0OgotLy8KLSNpZm5kZWYgX1NUTFBfTk9fRVhURU5TSU9OUwotI2RlZmluZSBORE5CT09TVF9IQVNfSEFTSAotI2RlZmluZSBORE5CT09TVF9IQVNfU0xJU1QKLSNlbmRpZgotCi0vLwotLy8gU1RMcG9ydCBkb2VzIGEgZ29vZCBqb2Igb2YgaW1wb3J0aW5nIG5hbWVzIGludG8gbmFtZXNwYWNlIHN0ZDo6LAotLy8gYnV0IGRvZXNuJ3QgYWx3YXlzIGdldCB0aGVtIGFsbCwgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFLCBzaW5jZSBvdXIKLS8vIHdvcmthcm91bmQgZG9lcyBub3QgY29uZmxpY3Qgd2l0aCBTVExwb3J0czoKLS8vCi0vLwotLy8gSGFyb2xkIEhvd2Ugc2F5czoKLS8vIEJvcmxhbmQgc3dpdGNoZWQgdG8gU1RMcG9ydCBpbiBCQ0I2LiBEZWZpbmluZyBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSB3aXRoCi0vLyBCQ0I2IGRvZXMgY2F1c2UgcHJvYmxlbXMuIElmIHdlIGRldGVjdCBDKysgQnVpbGRlciwgdGhlbiBkb24ndCBkZWZpbmUgCi0vLyBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotLy8KLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKF9fRE1DX18pCi0vLwotLy8gSWYgU1RMcG9ydCBpcyB1c2luZyBpdCdzIG93biBuYW1lc3BhY2UsIGFuZCB0aGUgcmVhbCBuYW1lcyBhcmUgaW4KLS8vIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCB0aGVuIHdlIGR1cGxpY2F0ZSBTVExwb3J0J3MgdXNpbmcgZGVjbGFyYXRpb25zCi0vLyAoYnkgZGVmaW5pbmcgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpLCB3ZSBkbyB0aGlzIGJlY2F1c2UgU1RMcG9ydCBkb2Vzbid0Ci0vLyBuZWNlc3NhcmlseSBpbXBvcnQgYWxsIHRoZSBuYW1lcyB3ZSBuZWVkIGludG8gbmFtZXNwYWNlIHN0ZDo6Ci0vLyAKLSMgIGlmIChkZWZpbmVkKF9fU1RMX0lNUE9SVF9WRU5ET1JfQ1NURCkgXAotICAgICAgICAgfHwgZGVmaW5lZChfX1NUTF9VU0VfT1dOX05BTUVTUEFDRSkgXAotICAgICAgICAgfHwgZGVmaW5lZChfU1RMUF9JTVBPUlRfVkVORE9SX0NTVEQpIFwKLSAgICAgICAgIHx8IGRlZmluZWQoX1NUTFBfVVNFX09XTl9OQU1FU1BBQ0UpKSBcCi0gICAgICAmJiAoZGVmaW5lZChfX1NUTF9WRU5ET1JfR0xPQkFMX0NTVEQpIHx8IGRlZmluZWQgKF9TVExQX1ZFTkRPUl9HTE9CQUxfQ1NURCkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19FWENFUFRJT05fU1REX05BTUVTUEFDRQotIyAgZW5kaWYKLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBfX0JPUkxBTkRDX18gPCAweDU2MAotLy8gU1RMcG9ydCBkb2Vzbid0IGltcG9ydCBzdGQ6OmFicyBjb3JyZWN0bHk6Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjphYnM7IH0KLS8vIGFuZCBzdHJjbXAvc3RyY3B5IGRvbid0IGdldCBpbXBvcnRlZCBlaXRoZXIgKCdjb3MgdGhleSBhcmUgbWFjcm9zKQotI2luY2x1ZGUgPHN0cmluZy5oPgotI2lmZGVmIHN0cmNweQotIyAgdW5kZWYgc3RyY3B5Ci0jZW5kaWYKLSNpZmRlZiBzdHJjbXAKLSMgIHVuZGVmIHN0cmNtcAotI2VuZGlmCi0jaWZkZWYgX1NUTFBfVkVORE9SX0NTVEQKLW5hbWVzcGFjZSBzdGR7IHVzaW5nIF9TVExQX1ZFTkRPUl9DU1REOjpzdHJjbXA7IHVzaW5nIF9TVExQX1ZFTkRPUl9DU1REOjpzdHJjcHk7IH0KLSNlbmRpZgotI2VuZGlmCi0KLS8vCi0vLyBzdGQ6OnVzZV9mYWNldCBtYXkgYmUgbm9uLXN0YW5kYXJkLCB1c2VzIGEgY2xhc3MgaW5zdGVhZDoKLS8vCi0jaWYgZGVmaW5lZChfX1NUTF9OT19FWFBMSUNJVF9GVU5DVElPTl9UTVBMX0FSR1MpIHx8IGRlZmluZWQoX1NUTFBfTk9fRVhQTElDSVRfRlVOQ1RJT05fVE1QTF9BUkdTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9VU0VfRkFDRVQKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU1RMUF9VU0VfRkFDRVQKLSNlbmRpZgotCi0vLwotLy8gSWYgU1RMcG9ydCB0aGlua3MgdGhlcmUgYXJlIG5vIHdpZGUgZnVuY3Rpb25zLCA8Y3djaGFyPiBldGMuIGlzIG5vdCB3b3JraW5nOyBidXQKLS8vIG9ubHkgaWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UgaXMgbm90IGRlZmluZWQgKGlmIGl0IGlzIHRoZW4gd2UgZG8gdGhlIGltcG9ydCAKLS8vIGludG8gc3RkOjogb3Vyc2VsdmVzKS4KLS8vCi0jaWYgZGVmaW5lZChfU1RMUF9OT19OQVRJVkVfV0lERV9GVU5DVElPTlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ0hBUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ1RZUEUKLSNlbmRpZgotCi0vLwotLy8gSWYgU1RMcG9ydCBmb3Igc29tZSByZWFzb24gd2FzIGNvbmZpZ3VyZWQgc28gdGhhdCBpdCB0aGlua3MgdGhhdCB3Y2hhcl90Ci0vLyBpcyBub3QgYW4gaW50cmluc2ljIHR5cGUsIHRoZW4gd2UgaGF2ZSB0byBkaXNhYmxlIHRoZSBzdXBwb3J0IGZvciBpdCBhcwotLy8gd2VsbCAod2Ugd291bGQgYmUgbWlzc2luZyByZXF1aXJlZCBzcGVjaWFsaXphdGlvbnMgb3RoZXJ3aXNlKS4KLS8vCi0jaWYgIWRlZmluZWQoIF9TVExQX0hBU19XQ0hBUl9UKSB8fCBkZWZpbmVkKF9TVExQX1dDSEFSX1RfSVNfVVNIT1JUKQotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSNlbmRpZgotCi0vLwotLy8gQm9ybGFuZCBzaGlwcyBhIHZlcnNpb24gb2YgU1RMcG9ydCB3aXRoIEMrKyBCdWlsZGVyIDYgdGhhdCBsYWNrcwotLy8gaGFzaHRhYmxlcyBhbmQgdGhlIGxpa2U6Ci0vLwotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID09IDB4NTYwKQotIyAgdW5kZWYgTkROQk9PU1RfSEFTX0hBU0gKLSNlbmRpZgotCi0vLwotLy8gZ2NjLTIuOTUuMy9TVExQb3J0IGRvZXMgbm90IGxpa2UgdGhlIHVzaW5nIGRlY2xhcmF0aW9ucyB3ZSB1c2UgdG8gZ2V0IEFETCB3aXRoIHN0ZDo6bWluL21heAotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPCAzKQotIyAgaW5jbHVkZSA8YWxnb3JpdGhtPiAvLyBmb3Igc3RkOjptaW4gYW5kIHN0ZDo6bWF4Ci0jICBkZWZpbmUgTkROQk9PU1RfVVNJTkdfU1REX01JTigpICgodm9pZCkwKQotIyAgZGVmaW5lIE5ETkJPT1NUX1VTSU5HX1NURF9NQVgoKSAoKHZvaWQpMCkKLW5hbWVzcGFjZSBuZG5ib29zdCB7IHVzaW5nIHN0ZDo6bWluOyB1c2luZyBzdGQ6Om1heDsgfQotI2VuZGlmCi0KLS8vICBDKysweCBoZWFkZXJzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJTVExQb3J0IHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX1NHSV9TVExfUE9SVCkKLQotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvdmFjcHAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3ZhY3BwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ3MTliNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvdmFjcHAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLSNpZiBfX0lCTUNQUF9fIDw9IDUwMQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19NQUNST19VU0VfRkFDRVQKLSNkZWZpbmUgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0KLS8vIEFwcGxlIGRvZXNuJ3Qgc2VlbSB0byByZWxpYWJseSBkZWZpbmVkIGEgKnVuaXgqIG1hY3JvCi0jaWYgIWRlZmluZWQoQ1lHV0lOKSAmJiAoICBkZWZpbmVkKF9fdW5peF9fKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX3VuaXgpICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQodW5peCkgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fQVBQTEVfXykgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX0FQUExFKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoQVBQTEUpKQotIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVTkNUSU9OQUwKLQotI2RlZmluZSBORE5CT09TVF9TVERMSUIgIlZpc3VhbCBBZ2UgZGVmYXVsdCBzdGFuZGFyZCBsaWJyYXJ5IgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3VmZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N1ZmZpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZmQ3ZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3VmZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzMyArMCwwIEBACi0vLyAgQm9vc3QgY29uZmlnLmhwcCBjb25maWd1cmF0aW9uIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8JYm9vc3RpbnNwZWN0Om5kcHJlY2F0ZWRfbWFjcm9zCS0tIHRlbGwgdGhlIGluc3BlY3QgdG9vbCB0byBpZ25vcmUgdGhpcyBmaWxlCi0KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMyBKb2huIE1hZGRvY2sKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgRGFyaW4gQWRsZXIKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgQmlsbCBLZW1wZiAKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgSmVucyBNYXVyZXIKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMyBEYXZpZCBBYnJhaGFtcwotLy8gIENvcHlyaWdodCAoYykgMjAwMyBHZW5uYXJvIFByb3RhCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAzIEVyaWMgRnJpZWRtYW4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMTAgRXJpYyBKb3VyZGFubmVhdSwgSm9lbCBGYWxjb3UKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBCb29zdCBjb25maWcuaHBwIHBvbGljeSBhbmQgcmF0aW9uYWxlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gbW92ZWQgdG8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbmZpZy8KLS8vCi0vLyAgVGhpcyBmaWxlIGlzIGludGVuZGVkIHRvIGJlIHN0YWJsZSwgYW5kIHJlbGF0aXZlbHkgdW5jaGFuZ2luZy4KLS8vICBJdCBzaG91bGQgY29udGFpbiBib2lsZXJwbGF0ZSBjb2RlIG9ubHkgLSBubyBjb21waWxlciBzcGVjaWZpYwotLy8gIGNvZGUgdW5sZXNzIGl0IGlzIHVuYXZvaWRhYmxlIC0gbm8gY2hhbmdlcyB1bmxlc3MgdW5hdm9pZGFibGUuCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX1NVRkZJWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfQ09ORklHX1NVRkZJWF9IUFAKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA0KQotLy8KLS8vIFNvbWUgR0NDLTQueCB2ZXJzaW9ucyBpc3N1ZSB3YXJuaW5ncyBldmVuIHdoZW4gX19leHRlbnNpb25fXyBpcyB1c2VkLAotLy8gc28gdXNlIHRoaXMgYXMgYSB3b3JrYXJvdW5kOgotLy8KLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotCi0vLwotLy8gZW5zdXJlIHRoYXQgdmlzaWJpbGl0eSBtYWNyb3MgYXJlIGFsd2F5cyBkZWZpbmVkLCB0aHVzIHN5bXBsaWZ5aW5nIHVzZQotLy8KLSNpZm5kZWYgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotIyBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSMgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9TWU1CT0xfVklTSUJMRQotIyBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUKLSNlbmRpZgotCi0vLwotLy8gbG9vayBmb3IgbG9uZyBsb25nIGJ5IGxvb2tpbmcgZm9yIHRoZSBhcHByb3ByaWF0ZSBtYWNyb3MgaW4gPGxpbWl0cy5oPi4KLS8vIE5vdGUgdGhhdCB3ZSB1c2UgbGltaXRzLmggcmF0aGVyIHRoYW4gY2xpbWl0cyBmb3IgbWF4aW1hbCBwb3J0YWJpbGl0eSwKLS8vIHJlbWVtYmVyIHRoYXQgc2luY2UgdGhlc2UganVzdCBkZWNsYXJlIGEgYnVuY2ggb2YgbWFjcm9zLCB0aGVyZSBzaG91bGQgYmUKLS8vIG5vIG5hbWVzcGFjZSBpc3N1ZXMgZnJvbSB0aGlzLgotLy8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19MT05HX0xPTkcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0jIGlmIChkZWZpbmVkKFVMTE9OR19NQVgpIHx8IGRlZmluZWQoVUxPTkdfTE9OR19NQVgpIHx8IGRlZmluZWQoVUxPTkdMT05HX01BWCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSMgZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9OT19MT05HX0xPTkcKLSMgZW5kaWYKLSNlbmRpZgotCi0vLyBHQ0MgMy54IHdpbGwgY2xlYW4gdXAgYWxsIG9mIHRob3NlIG5hc3R5IG1hY3JvIGRlZmluaXRpb25zIHRoYXQKLS8vIE5ETkJPT1NUX05PX0NUWVBFX0ZVTkNUSU9OUyBpcyBpbnRlbmRlZCB0byBoZWxwIHdvcmsgYXJvdW5kLCBzbyB1bmRlZmluZQotLy8gaXQgdW5kZXIgR0NDIDMueC4KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMykgJiYgZGVmaW5lZChORE5CT09TVF9OT19DVFlQRV9GVU5DVElPTlMpCi0jICB1bmRlZiBORE5CT09TVF9OT19DVFlQRV9GVU5DVElPTlMKLSNlbmRpZgotCi0vLwotLy8gQXNzdW1lIGFueSBleHRlbnNpb25zIGFyZSBpbiBuYW1lc3BhY2Ugc3RkOjogdW5sZXNzIHN0YXRlZCBvdGhlcndpc2U6Ci0vLwotIyAgaWZuZGVmIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFCi0jICAgIGRlZmluZSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRSBzdGQKLSMgIGVuZGlmCi0KLS8vCi0vLyBJZiBjdi1xdWFsaWZpZWQgc3BlY2lhbGl6YXRpb25zIGFyZSBub3QgYWxsb3dlZCwgdGhlbiBuZWl0aGVyIGFyZSBjdi12b2lkIG9uZXM6Ci0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19DVl9TUEVDSUFMSVpBVElPTlMpIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi0jICBlbmRpZgotCi0vLwotLy8gSWYgdGhlcmUgaXMgbm8gbnVtZXJpY19saW1pdHMgdGVtcGxhdGUsIHRoZW4gaXQgY2FuJ3QgaGF2ZSBhbnkgY29tcGlsZSB0aW1lCi0vLyBjb25zdGFudHMgZWl0aGVyIQotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fTElNSVRTKSBcCi0gICAgICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUykKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01TX0lOVDY0X05VTUVSSUNfTElNSVRTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTE9OR19MT05HX05VTUVSSUNfTElNSVRTCi0jICBlbmRpZgotCi0vLwotLy8gaWYgdGhlcmUgaXMgbm8gbG9uZyBsb25nIHRoZW4gdGhlcmUgaXMgbm8gc3BlY2lhbGlzYXRpb24KLS8vIGZvciBudW1lcmljX2xpbWl0czxsb25nIGxvbmc+IGVpdGhlcjoKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTE9OR19MT05HX05VTUVSSUNfTElNSVRTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xPTkdfTE9OR19OVU1FUklDX0xJTUlUUwotI2VuZGlmCi0KLS8vCi0vLyBpZiB0aGVyZSBpcyBubyBfX2ludDY0IHRoZW4gdGhlcmUgaXMgbm8gc3BlY2lhbGlzYXRpb24KLS8vIGZvciBudW1lcmljX2xpbWl0czxfX2ludDY0PiBlaXRoZXI6Ci0vLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMKLSNlbmRpZgotCi0vLwotLy8gaWYgbWVtYmVyIHRlbXBsYXRlcyBhcmUgc3VwcG9ydGVkIHRoZW4gc28gaXMgdGhlCi0vLyBWQzYgc3Vic2V0IG9mIG1lbWJlciB0ZW1wbGF0ZXM6Ci0vLwotIyAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykgXAotICAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotIyAgZW5kaWYKLQotLy8KLS8vIFdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgY2FuJ3QgdGVzdCBmb3IgcGFydGlhbCBzcGVjaWFsaXNhdGlvbiBidWdzOgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfQkNCX1BBUlRJQUxfU1BFQ0lBTElaQVRJT05fQlVHKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0JDQl9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OX0JVRwotIyAgZW5kaWYKLQotLy8KLS8vIFdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgd2UgY2FuJ3QgaGF2ZSBhcnJheS10eXBlIHBhcnRpYWwgc3BlY2lhbGlzYXRpb25zOgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMKLSMgIGVuZGlmCi0KLS8vCi0vLyBXaXRob3V0IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24sIHN0ZDo6aXRlcmF0b3JfdHJhaXRzIGNhbid0IHdvcms6Ci0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMKLSMgIGVuZGlmCi0KLS8vCi0vLyBXaXRob3V0IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24sIHBhcnRpYWwgCi0vLyBzcGVjaWFsaXphdGlvbiB3aXRoIGRlZmF1bHQgYXJncyB3b24ndCB3b3JrIGVpdGhlcjoKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1BBUlRJQUxfU1BFQ0lBTElaQVRJT05fSU1QTElDSVRfREVGQVVMVF9BUkdTKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1BBUlRJQUxfU1BFQ0lBTElaQVRJT05fSU1QTElDSVRfREVGQVVMVF9BUkdTCi0jICBlbmRpZgotCi0vLwotLy8gV2l0aG91dCBtZW1iZXIgdGVtcGxhdGUgc3VwcG9ydCwgd2UgY2FuJ3QgaGF2ZSB0ZW1wbGF0ZSBjb25zdHJ1Y3RvcnMKLS8vIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGVpdGhlcjoKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUwotIyAgZW5kaWYKLQotLy8KLS8vIFdpdGhvdXQgbWVtYmVyIHRlbXBsYXRlIHN1cHBvcnQsIHdlIGNhbid0IGhhdmUgYSBjb25mb3JtaW5nCi0vLyBzdGQ6OmFsbG9jYXRvciB0ZW1wbGF0ZSBlaXRoZXI6Ci0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKSBcCi0gICAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTKSBcCi0gICAgICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfQUxMT0NBVE9SKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSMgIGVuZGlmCi0KLS8vCi0vLyB3aXRob3V0IEFETCBzdXBwb3J0IHRoZW4gdXNpbmcgZGVjbGFyYXRpb25zIHdpbGwgYnJlYWsgQURMIGFzIHdlbGw6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUCkgJiYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETCkKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jZW5kaWYKLQotLy8KLS8vIFdpdGhvdXQgdHlwZWlkIHN1cHBvcnQgd2UgaGF2ZSBubyBkeW5hbWljIFJUVEkgZWl0aGVyOgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RZUEVJRCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fUlRUSSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19SVFRJCi0jZW5kaWYKLQotLy8KLS8vIElmIHdlIGhhdmUgYSBzdGFuZGFyZCBhbGxvY2F0b3IsIHRoZW4gd2UgaGF2ZSBhIHBhcnRpYWwgb25lIGFzIHdlbGw6Ci0vLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BBUlRJQUxfU1REX0FMTE9DQVRPUgotI2VuZGlmCi0KLS8vCi0vLyBXZSBjYW4ndCBoYXZlIGEgd29ya2luZyBzdGQ6OnVzZV9mYWNldCBpZiB0aGVyZSBpcyBubyBzdGQ6OmxvY2FsZToKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9VU0VfRkFDRVQpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1VTRV9GQUNFVAotIyAgZW5kaWYKLQotLy8KLS8vIFdlIGNhbid0IGhhdmUgYSBzdGQ6Om1lc3NhZ2VzIGZhY2V0IGlmIHRoZXJlIGlzIG5vIHN0ZDo6bG9jYWxlOgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX01FU1NBR0VTKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotIyAgZW5kaWYKLQotLy8KLS8vIFdlIGNhbid0IGhhdmUgYSB3b3JraW5nIHN0ZDo6d3N0cmVhbWJ1ZiBpZiB0aGVyZSBpcyBubyBzdGQ6OmxvY2FsZToKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9XU1RSRUFNQlVGKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSRUFNQlVGCi0jICBlbmRpZgotCi0vLwotLy8gV2UgY2FuJ3QgaGF2ZSBhIDxjd2N0eXBlPiBpZiB0aGVyZSBpcyBubyA8Y3djaGFyPjoKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NXQ0hBUikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1dDVFlQRSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19DV0NUWVBFCi0jICBlbmRpZgotCi0vLwotLy8gV2UgY2FuJ3QgaGF2ZSBhIHN3cHJpbnRmIGlmIHRoZXJlIGlzIG5vIDxjd2NoYXI+OgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1dDSEFSKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TV1BSSU5URikKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgZW5kaWYKLQotLy8KLS8vIElmIFdpbjMyIHN1cHBvcnQgaXMgdHVybmVkIG9mZiwgdGhlbiB3ZSBtdXN0IHR1cm4gb2ZmCi0vLyB0aHJlYWRpbmcgc3VwcG9ydCBhbHNvLCB1bmxlc3MgdGhlcmUgaXMgc29tZSBvdGhlcgotLy8gdGhyZWFkIEFQSSBlbmFibGVkOgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpICYmIGRlZmluZWQoX1dJTjMyKSBcCi0gICAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19QVEhSRUFEUykKLSMgIGRlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMKLSNlbmRpZgotCi0vLwotLy8gVHVybiBvbiB0aHJlYWRpbmcgc3VwcG9ydCBpZiB0aGUgY29tcGlsZXIgdGhpbmtzIHRoYXQgaXQncyBpbgotLy8gbXVsdGl0aHJlYWRlZCBtb2RlLiAgV2UgcHV0IHRoaXMgaGVyZSBiZWNhdXNlIHRoZXJlIGFyZSBvbmx5IGEKLS8vIGxpbWl0ZWQgbnVtYmVyIG9mIG1hY3JvcyB0aGF0IGlkZW50aWZ5IHRoaXMgKGlmIHRoZXJlJ3MgYW55IG1pc3NpbmcKLS8vIGZyb20gaGVyZSB0aGVuIGFkZCB0byB0aGUgYXBwcm9wcmlhdGUgY29tcGlsZXIgc2VjdGlvbik6Ci0vLwotI2lmIChkZWZpbmVkKF9fTVRfXykgfHwgZGVmaW5lZChfTVQpIHx8IGRlZmluZWQoX1JFRU5UUkFOVCkgXAotICAgIHx8IGRlZmluZWQoX1BUSFJFQURTKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSkgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19USFJFQURTKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotLy8KLS8vIFR1cm4gdGhyZWFkaW5nIHN1cHBvcnQgb2ZmIGlmIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUyBpcyBkZWZpbmVkOgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUykgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfVEhSRUFEUykKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotLy8KLS8vIFR1cm4gdGhyZWFkaW5nIHN1cHBvcnQgb2ZmIGlmIHdlIGRvbid0IHJlY29nbmlzZSB0aGUgdGhyZWFkaW5nIEFQSToKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfVEhSRUFEUykgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1BUSFJFQURTKVwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNfQkVUSFJFQURTKVwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19NUFRBU0tTKQotIyAgdW5kZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNlbmRpZgotCi0vLwotLy8gVHVybiB0aHJlYWRpbmcgZGV0YWlsIG1hY3JvcyBvZmYgaWYgd2UgZG9uJ3QgKHdhbnQgdG8pIHVzZSB0aHJlYWRpbmcKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jICB1bmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jICB1bmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRF9ZSUVMRAotIyAgdW5kZWYgTkROQk9PU1RfSEFTX1BUSFJFQURfREVMQVlfTlAKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19XSU5USFJFQURTCi0jICB1bmRlZiBORE5CT09TVF9IQVNfQkVUSFJFQURTCi0jICB1bmRlZiBORE5CT09TVF9IQVNfTVBUQVNLUwotI2VuZGlmCi0KLS8vCi0vLyBJZiB0aGUgY29tcGlsZXIgY2xhaW1zIHRvIGJlIEM5OSBjb25mb3JtYW50LCB0aGVuIGl0IGhhZCBiZXR0ZXIKLS8vIGhhdmUgYSA8c3RkaW50Lmg+OgotLy8KLSMgIGlmIGRlZmluZWQoX19TVERDX1ZFUlNJT05fXykgJiYgKF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgICAgaWZuZGVmIE5ETkJPT1NUX0hBU19MT0cxUAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT0cxUAotIyAgICAgZW5kaWYKLSMgICAgIGlmbmRlZiBORE5CT09TVF9IQVNfRVhQTTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfRVhQTTEKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotCi0vLwotLy8gRGVmaW5lIE5ETkJPT1NUX05PX1NMSVNUIGFuZCBORE5CT09TVF9OT19IQVNIIGlmIHJlcXVpcmVkLgotLy8gTm90ZSB0aGF0IHRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHkuCi0vLwotIyAgaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1NMSVNUKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TTElTVCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TTElTVAotIyAgZW5kaWYKLQotIyAgaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX0hBU0gpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0hBU0gpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSEFTSAotIyAgZW5kaWYKLQotLy8KLS8vIFNldCBORE5CT09TVF9TTElTVF9IRUFERVIgaWYgbm90IHNldCBhbHJlYWR5OgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19TTElTVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfU0xJU1RfSEVBREVSKQotIyAgZGVmaW5lIE5ETkJPT1NUX1NMSVNUX0hFQURFUiA8c2xpc3Q+Ci0jZW5kaWYKLQotLy8KLS8vIFNldCBORE5CT09TVF9IQVNIX1NFVF9IRUFERVIgaWYgbm90IHNldCBhbHJlYWR5OgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19IQVNIKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNIX1NFVF9IRUFERVIpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTSF9TRVRfSEVBREVSIDxoYXNoX3NldD4KLSNlbmRpZgotCi0vLwotLy8gU2V0IE5ETkJPT1NUX0hBU0hfTUFQX0hFQURFUiBpZiBub3Qgc2V0IGFscmVhZHk6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0hBU0gpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU0hfTUFQX0hFQURFUikKLSMgIGRlZmluZSBORE5CT09TVF9IQVNIX01BUF9IRUFERVIgPGhhc2hfbWFwPgotI2VuZGlmCi0KLS8vICBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLS8vICBUaGlzIG1hY3JvIGdldHMgc2V0IGlmIHdlIGhhdmUgaGVhZGVycyB0aGF0IGZpeCB0aGUgQUJJLAotLy8gIGFuZCBwcmV2ZW50IE9EUiB2aW9sYXRpb25zIHdoZW4gbGlua2luZyB0byBleHRlcm5hbCBsaWJyYXJpZXM6Ci0jaWYgZGVmaW5lZChORE5CT09TVF9BQklfUFJFRklYKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0FCSV9TVUZGSVgpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19BQklfSEVBREVSUykKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfQUJJX0hFQURFUlMpICYmIGRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9BQklfSEVBREVSUykKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotI2VuZGlmCi0KLS8vICBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSB3b3JrYXJvdW5kICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgQmVjYXVzZSBzdGQ6OnNpemVfdCB1c2FnZSBpcyBzbyBjb21tb24sIGV2ZW4gaW4gYm9vc3QgaGVhZGVycyB3aGljaCBkbyBub3QKLS8vICBvdGhlcndpc2UgdXNlIHRoZSBDIGxpYnJhcnksIHRoZSA8Y3N0ZGRlZj4gd29ya2Fyb3VuZCBpcyBpbmNsdWRlZCBoZXJlIHNvCi0vLyAgdGhhdCB1Z2x5IHdvcmthcm91bmQgY29kZSBuZWVkIG5vdCBhcHBlYXIgaW4gbWFueSBvdGhlciBib29zdCBoZWFkZXJzLgotLy8gIE5PVEUgV0VMTDogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIG5vbi1jb25mb3JtaW5nIGNvbXBpbGVyczsgPGNzdGRkZWY+Ci0vLyAgbXVzdCBzdGlsbCBiZSAjaW5jbHVkZWQgaW4gdGhlIHVzdWFsIHBsYWNlcyBzbyB0aGF0IDxjc3RkZGVmPiBpbmNsdXNpb24KLS8vICB3b3JrcyBhcyBleHBlY3RlZCB3aXRoIHN0YW5kYXJkIGNvbmZvcm1pbmcgY29tcGlsZXJzLiAgVGhlIHJlc3VsdGluZwotLy8gIGRvdWJsZSBpbmNsdXNpb24gb2YgPGNzdGRkZWY+IGlzIGhhcm1sZXNzLgotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0jICAgaW5jbHVkZSA8Y3N0ZGRlZj4KLSAgICBuYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpwdHJkaWZmX3Q7IHVzaW5nIDo6c2l6ZV90OyB9Ci0jIGVuZGlmCi0KLS8vICBXb3JrYXJvdW5kIGZvciB0aGUgdW5mb3J0dW5hdGUgbWluL21heCBtYWNyb3MgZGVmaW5lZCBieSBzb21lIHBsYXRmb3JtIGhlYWRlcnMKLQotI2RlZmluZSBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTgotCi0jaWZuZGVmIE5ETkJPT1NUX1VTSU5HX1NURF9NSU4KLSMgIGRlZmluZSBORE5CT09TVF9VU0lOR19TVERfTUlOKCkgdXNpbmcgc3RkOjptaW4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1VTSU5HX1NURF9NQVgKLSMgIGRlZmluZSBORE5CT09TVF9VU0lOR19TVERfTUFYKCkgdXNpbmcgc3RkOjptYXgKLSNlbmRpZgotCi0vLyAgTkROQk9PU1RfTk9fU1REX01JTl9NQVggd29ya2Fyb3VuZCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9NSU5fTUFYKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotCi1uYW1lc3BhY2Ugc3RkIHsKLSAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KLSAgaW5saW5lIGNvbnN0IF9UcCYgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OIChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpIHsKLSAgICByZXR1cm4gX19iIDwgX19hID8gX19iIDogX19hOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBfVHA+Ci0gIGlubGluZSBjb25zdCBfVHAmIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iKSB7Ci0gICAgcmV0dXJuICBfX2EgPCBfX2IgPyBfX2IgOiBfX2E7Ci0gIH0KLX0KLQotIyAgZW5kaWYKLQotLy8gTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UIHdvcmthcm91bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCi0vLyBPbiBjb21waWxlcnMgd2hpY2ggZG9uJ3QgYWxsb3cgaW4tY2xhc3MgaW5pdGlhbGl6YXRpb24gb2Ygc3RhdGljIGludGVncmFsCi0vLyBjb25zdGFudCBtZW1iZXJzLCB3ZSBtdXN0IHVzZSBlbnVtcyBhcyBhIHdvcmthcm91bmQgaWYgd2Ugd2FudCB0aGUgY29uc3RhbnRzCi0vLyB0byBiZSBhdmFpbGFibGUgYXQgY29tcGlsZS10aW1lLiBUaGlzIG1hY3JvIGdpdmVzIHVzIGEgY29udmVuaWVudCB3YXkgdG8KLS8vIGRlY2xhcmUgc3VjaCBjb25zdGFudHMuCi0KLSMgIGlmZGVmIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodHlwZSwgYXNzaWdubWVudCkgZW51bSB7IGFzc2lnbm1lbnQgfQotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh0eXBlLCBhc3NpZ25tZW50KSBzdGF0aWMgY29uc3QgdHlwZSBhc3NpZ25tZW50Ci0jICBlbmRpZgotCi0vLyBORE5CT09TVF9VU0VfRkFDRVQgLyBIQVNfRkFDRVQgd29ya2Fyb3VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vIFdoZW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lcyBub3QgaGF2ZSBhIGNvbmZvcm1pbmcgc3RkOjp1c2VfZmFjZXQgdGhlcmUKLS8vIGFyZSB2YXJpb3VzIHdvcmthcm91bmRzIGF2YWlsYWJsZSwgYnV0IHRoZXkgZGlmZmVyIGZyb20gbGlicmFyeSB0byBsaWJyYXJ5LgotLy8gVGhlIHNhbWUgcHJvYmxlbSBvY2N1cnMgd2l0aCBoYXNfZmFjZXQuCi0vLyBUaGVzZSBtYWNyb3MgcHJvdmlkZSBhIGNvbnNpc3RlbnQgd2F5IHRvIGFjY2VzcyBhIGxvY2FsZSdzIGZhY2V0cy4KLS8vIFVzYWdlOgotLy8gICAgcmVwbGFjZQotLy8gICAgICAgc3RkOjp1c2VfZmFjZXQ8VHlwZT4obG9jKTsKLS8vICAgIHdpdGgKLS8vICAgICAgIE5ETkJPT1NUX1VTRV9GQUNFVChUeXBlLCBsb2MpOwotLy8gICAgTm90ZSBkbyBub3QgYWRkIGEgc3RkOjogcHJlZml4IHRvIHRoZSBmcm9udCBvZiBORE5CT09TVF9VU0VfRkFDRVQhCi0vLyAgVXNlIGZvciBORE5CT09TVF9IQVNfRkFDRVQgaXMgYW5hbG9nb3VzLgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfVVNFX0ZBQ0VUKQotIyAgaWZkZWYgTkROQk9PU1RfSEFTX1RXT19BUkdfVVNFX0ZBQ0VUCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVVNFX0ZBQ0VUKFR5cGUsIGxvYykgc3RkOjp1c2VfZmFjZXQobG9jLCBzdGF0aWNfY2FzdDxUeXBlKj4oMCkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0ZBQ0VUKFR5cGUsIGxvYykgc3RkOjpoYXNfZmFjZXQobG9jLCBzdGF0aWNfY2FzdDxUeXBlKj4oMCkpCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01BQ1JPX1VTRV9GQUNFVCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9VU0VfRkFDRVQoVHlwZSwgbG9jKSBzdGQ6Ol9VU0UobG9jLCBUeXBlKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19GQUNFVChUeXBlLCBsb2MpIHN0ZDo6X0hBUyhsb2MsIFR5cGUpCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1NUTFBfVVNFX0ZBQ0VUKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1VTRV9GQUNFVChUeXBlLCBsb2MpICgqc3RkOjpfVXNlX2ZhY2V0PFR5cGUgPihsb2MpKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19GQUNFVChUeXBlLCBsb2MpIHN0ZDo6aGFzX2ZhY2V0PCBUeXBlID4obG9jKQotIyAgZW5kaWYKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfVVNFX0ZBQ0VUKFR5cGUsIGxvYykgc3RkOjp1c2VfZmFjZXQ8IFR5cGUgPihsb2MpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0ZBQ0VUKFR5cGUsIGxvYykgc3RkOjpoYXNfZmFjZXQ8IFR5cGUgPihsb2MpCi0jZW5kaWYKLQotLy8gTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHdvcmthcm91bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vIE1lbWJlciB0ZW1wbGF0ZXMgYXJlIHN1cHBvcnRlZCBieSBzb21lIGNvbXBpbGVycyBldmVuIHRob3VnaCB0aGV5IGNhbid0IHVzZQotLy8gdGhlIEE6OnRlbXBsYXRlIG1lbWJlcjxVPiBzeW50YXgsIGFzIGEgd29ya2Fyb3VuZCByZXBsYWNlOgotLy8KLS8vIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPFU+IGJpbmRlcjsKLS8vCi0vLyB3aXRoOgotLy8KLS8vIHR5cGVkZWYgdHlwZW5hbWUgQTo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHJlYmluZDxVPiBiaW5kZXI7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0tFWVdPUkQKLSMgIGRlZmluZSBORE5CT09TVF9ORVNURURfVEVNUExBVEUgdGVtcGxhdGUKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0jZW5kaWYKLQotLy8gTkROQk9PU1RfVU5SRUFDSEFCTEVfUkVUVVJOKHgpIHdvcmthcm91bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyBOb3JtYWxseSBldmFsdWF0ZXMgdG8gbm90aGluZywgdW5sZXNzIE5ETkJPT1NUX05PX1VOUkVBQ0hBQkxFX1JFVFVSTl9ERVRFQ1RJT04KLS8vIGlzIGRlZmluZWQsIGluIHdoaWNoIGNhc2UgaXQgZXZhbHVhdGVzIHRvIHJldHVybiB4OyBVc2Ugd2hlbiB5b3UgaGF2ZSBhIHJldHVybgotLy8gc3RhdGVtZW50IHRoYXQgY2FuIG5ldmVyIGJlIHJlYWNoZWQuCi0KLSNpZmRlZiBORE5CT09TVF9OT19VTlJFQUNIQUJMRV9SRVRVUk5fREVURUNUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfVU5SRUFDSEFCTEVfUkVUVVJOKHgpIHJldHVybiB4OwotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9VTlJFQUNIQUJMRV9SRVRVUk4oeCkKLSNlbmRpZgotCi0vLyBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHdvcmthcm91bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vCi0vLyBTb21lIGNvbXBpbGVycyBkb24ndCBzdXBwb3J0IHRoZSB1c2Ugb2YgYHR5cGVuYW1lJyBmb3IgZGVwZW5kZW50Ci0vLyB0eXBlcyBpbiBkZWR1Y2VkIGNvbnRleHRzLCBlLmcuCi0vLwotLy8gICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIGYoVCwgdHlwZW5hbWUgVDo6dHlwZSk7Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXgotLy8gUmVwbGFjZSB0aGVzZSBkZWNsYXJhdGlvbnMgd2l0aDoKLS8vCi0vLyAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHZvaWQgZihULCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFQ6OnR5cGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0RFRFVDRURfVFlQRU5BTUUKLSMgIGRlZmluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVuYW1lCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RZUEVOQU1FX1dJVEhfQ1RPUgotIyAgZGVmaW5lIE5ETkJPT1NUX0NUT1JfVFlQRU5BTUUgdHlwZW5hbWUKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfQ1RPUl9UWVBFTkFNRQotI2VuZGlmCi0KLS8vIGxvbmcgbG9uZyB3b3JrYXJvdW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyBPbiBnY2MgKGFuZCBtYXliZSBvdGhlciBjb21waWxlcnM/KSBsb25nIGxvbmcgaXMgYWx3YXkgc3VwcG9ydGVkCi0vLyBidXQgaXQncyB1c2UgbWF5IGdlbmVyYXRlIGVpdGhlciB3YXJuaW5ncyAod2l0aCAtYW5zaSksIG9yIGVycm9ycwotLy8gKHdpdGggLXBlZGFudGljIC1hbnNpKSB1bmxlc3MgaXQncyB1c2UgaXMgcHJlZml4ZWQgYnkgX19leHRlbnNpb25fXwotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0jICBpZmRlZiBfX0dOVUNfXwotICAgX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBsb25nX2xvbmdfdHlwZTsKLSAgIF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxvbmdfbG9uZ190eXBlOwotIyAgZWxzZQotICAgdHlwZWRlZiBsb25nIGxvbmcgbG9uZ19sb25nX3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bG9uZ19sb25nX3R5cGU7Ci0jICBlbmRpZgotfQotI2VuZGlmCi0vLyBzYW1lIGFnYWluIGZvciBfX2ludDEyODoKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19JTlQxMjgpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0jICBpZmRlZiBfX0dOVUNfXwotICAgX19leHRlbnNpb25fXyB0eXBlZGVmIF9faW50MTI4IGludDEyOF90eXBlOwotICAgX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIF9faW50MTI4IHVpbnQxMjhfdHlwZTsKLSMgIGVsc2UKLSAgIHR5cGVkZWYgX19pbnQxMjggaW50MTI4X3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIF9faW50MTI4IHVpbnQxMjhfdHlwZTsKLSMgIGVuZGlmCi19Ci0jZW5kaWYKLQotLy8gTkROQk9PU1RfW0FQUEVORF9dRVhQTElDSVRfVEVNUExBVEVfW05PTl9dVFlQRSBtYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8KLS8vIFNvbWUgY29tcGlsZXJzIGhhdmUgcHJvYmxlbXMgd2l0aCBmdW5jdGlvbiB0ZW1wbGF0ZXMgd2hvc2UgdGVtcGxhdGUKLS8vIHBhcmFtZXRlcnMgZG9uJ3QgYXBwZWFyIGluIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdCAoYmFzaWNhbGx5Ci0vLyB0aGV5IGp1c3QgbGluayBvbmUgaW5zdGFudGlhdGlvbiBvZiB0aGUgdGVtcGxhdGUgaW4gdGhlIGZpbmFsCi0vLyBleGVjdXRhYmxlKS4gVGhlc2UgbWFjcm9zIHByb3ZpZGUgYSB1bmlmb3JtIHdheSB0byBjb3BlIHdpdGggdGhlCi0vLyBwcm9ibGVtIHdpdGggbm8gZWZmZWN0cyBvbiB0aGUgY2FsbGluZyBzeW50YXguCi0KLS8vIEV4YW1wbGU6Ci0vLwotLy8gICNpbmNsdWRlIDxpb3N0cmVhbT4KLS8vICAjaW5jbHVkZSA8b3N0cmVhbT4KLS8vICAjaW5jbHVkZSA8dHlwZWluZm8+Ci0vLwotLy8gIHRlbXBsYXRlIDxpbnQgbj4KLS8vICB2b2lkIGYoKSB7IHN0ZDo6Y291dCA8PCBuIDw8ICcgJzsgfQotLy8KLS8vICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS8vICB2b2lkIGcoKSB7IHN0ZDo6Y291dCA8PCB0eXBlaWQoVCkubmFtZSgpIDw8ICcgJzsgfQotLy8KLS8vICBpbnQgbWFpbigpIHsKLS8vICAgIGY8MT4oKTsKLS8vICAgIGY8Mj4oKTsKLS8vCi0vLyAgICBnPGludD4oKTsKLS8vICAgIGc8ZG91YmxlPigpOwotLy8gIH0KLS8vCi0vLyBXaXRoIFZDKysgNi4wIHRoZSBvdXRwdXQgaXM6Ci0vLwotLy8gICAyIDIgZG91YmxlIGRvdWJsZQotLy8KLS8vIFRvIGZpeCBpdCwgd3JpdGUKLS8vCi0vLyAgIHRlbXBsYXRlIDxpbnQgbj4KLS8vICAgdm9pZCBmKE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKGludCwgbikpIHsgLi4uIH0KLS8vCi0vLyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLy8gICB2b2lkIGcoTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfVFlQRShUKSkgeyAuLi4gfQotLy8KLQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0KLSMgIGluY2x1ZGUgIm5kbmJvb3N0L3R5cGUuaHBwIgotIyAgaW5jbHVkZSAibmRuYm9vc3Qvbm9uX3R5cGUuaHBwIgotCi0jICBkZWZpbmUgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KSAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGU8dD4qID0gMAotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEVfU1BFQyh0KSAgICAgICAgIG5kbmJvb3N0Ojp0eXBlPHQ+KgotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpICAgICAgIG5kbmJvb3N0Ojpub25fdHlwZTx0LCB2PiogPSAwCi0jICBkZWZpbmUgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KSAgbmRuYm9vc3Q6Om5vbl90eXBlPHQsIHY+KgotCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkgICAgICAgIFwKLSAgICAgICAgICAgICAsIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkKLSMgIGRlZmluZSBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRV9TUEVDKHQpICAgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfVFlQRV9TUEVDKHQpCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpIFwKLSAgICAgICAgICAgICAsIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFX1NQRUModCwgdikgICAgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KQotCi0jZWxzZQotCi0vLyBubyB3b3JrYXJvdW5kIG5lZWRlZDogZXhwYW5kIHRvIG5vdGhpbmcKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkKLSMgIGRlZmluZSBORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkKLSMgIGRlZmluZSBORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KQotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFX1NQRUModCwgdikKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKHQpCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEVfU1BFQyh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KQotIyAgZGVmaW5lIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRV9TUEVDKHQsIHYpCi0KLQotI2VuZGlmIC8vIGRlZmluZWQgTkROQk9PU1RfTk9fRVhQTElDSVRfRlVOQ1RJT05fVEVNUExBVEVfQVJHVU1FTlRTCi0KLS8vIFdoZW4gTkROQk9PU1RfTk9fU1REX1RZUEVJTkZPIGlzIGRlZmluZWQsIHdlIGNhbiBqdXN0IGltcG9ydAotLy8gdGhlIGdsb2JhbCBkZWZpbml0aW9uIGludG8gc3RkIG5hbWVzcGFjZToKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9UWVBFSU5GTykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLSNpbmNsdWRlIDx0eXBlaW5mbz4KLW5hbWVzcGFjZSBzdGR7IHVzaW5nIDo6dHlwZV9pbmZvOyB9Ci0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8KLS8vIEhlbHBlciBtYWNybyBORE5CT09TVF9TVFJJTkdJWkU6Ci0vLyBDb252ZXJ0cyB0aGUgcGFyYW1ldGVyIFggdG8gYSBzdHJpbmcgYWZ0ZXIgbWFjcm8gcmVwbGFjZW1lbnQKLS8vIG9uIFggaGFzIGJlZW4gcGVyZm9ybWVkLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HSVpFKFgpIE5ETkJPT1NUX0RPX1NUUklOR0laRShYKQotI2RlZmluZSBORE5CT09TVF9ET19TVFJJTkdJWkUoWCkgI1gKLQotLy8KLS8vIEhlbHBlciBtYWNybyBORE5CT09TVF9KT0lOOgotLy8gVGhlIGZvbGxvd2luZyBwaWVjZSBvZiBtYWNybyBtYWdpYyBqb2lucyB0aGUgdHdvCi0vLyBhcmd1bWVudHMgdG9nZXRoZXIsIGV2ZW4gd2hlbiBvbmUgb2YgdGhlIGFyZ3VtZW50cyBpcwotLy8gaXRzZWxmIGEgbWFjcm8gKHNlZSAxNi4zLjEgaW4gQysrIHN0YW5kYXJkKS4gIFRoZSBrZXkKLS8vIGlzIHRoYXQgbWFjcm8gZXhwYW5zaW9uIG9mIG1hY3JvIGFyZ3VtZW50cyBkb2VzIG5vdAotLy8gb2NjdXIgaW4gTkROQk9PU1RfRE9fSk9JTjIgYnV0IGRvZXMgaW4gTkROQk9PU1RfRE9fSk9JTi4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0pPSU4oIFgsIFkgKSBORE5CT09TVF9ET19KT0lOKCBYLCBZICkKLSNkZWZpbmUgTkROQk9PU1RfRE9fSk9JTiggWCwgWSApIE5ETkJPT1NUX0RPX0pPSU4yKFgsWSkKLSNkZWZpbmUgTkROQk9PU1RfRE9fSk9JTjIoIFgsIFkgKSBYIyNZCi0KLS8vCi0vLyBTZXQgc29tZSBkZWZhdWx0IHZhbHVlcyBmb3IgY29tcGlsZXIvbGlicmFyeS9wbGF0Zm9ybSBuYW1lcy4KLS8vIFRoZXNlIGFyZSBmb3IgZGVidWdnaW5nIGNvbmZpZyBzZXR1cCBvbmx5OgotLy8KLSMgIGlmbmRlZiBORE5CT09TVF9DT01QSUxFUgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJVbmtub3duIElTTyBDKysgQ29tcGlsZXIiCi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX1NURExJQgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiVW5rbm93biBJU08gc3RhbmRhcmQgbGlicmFyeSIKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfUExBVEZPUk0KLSMgICAgIGlmIGRlZmluZWQodW5peCkgfHwgZGVmaW5lZChfX3VuaXgpIHx8IGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgXAotICAgICAgICAgfHwgZGVmaW5lZChfUE9TSVhfU09VUkNFKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJHZW5lcmljIFVuaXgiCi0jICAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIlVua25vd24iCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLQotLy8KLS8vIFNldCBzb21lIGRlZmF1bHQgdmFsdWVzIEdQVSBzdXBwb3J0Ci0vLwotIyAgaWZuZGVmIE5ETkJPT1NUX0dQVV9FTkFCTEVECi0jICBkZWZpbmUgTkROQk9PU1RfR1BVX0VOQUJMRUQgCi0jICBlbmRpZgotCi0vLyBORE5CT09TVF9GT1JDRUlOTElORSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gTWFjcm8gdG8gdXNlIGluIHBsYWNlIG9mICdpbmxpbmUnIHRvIGZvcmNlIGEgZnVuY3Rpb24gdG8gYmUgaW5saW5lCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRk9SQ0VJTkxJTkUpCi0jICBpZiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICBkZWZpbmUgTkROQk9PU1RfRk9SQ0VJTkxJTkUgX19mb3JjZWlubGluZQotIyAgZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+IDMKLSAgICAgLy8gQ2xhbmcgYWxzbyBkZWZpbmVzIF9fR05VQ19fIChhcyA0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfRk9SQ0VJTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9GT1JDRUlOTElORSBpbmxpbmUKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8KLS8vIFNldCBORE5CT09TVF9OT19ERUNMVFlQRV9OMzI3NiB3aGVuIE5ETkJPT1NUX05PX0RFQ0xUWVBFIGlzIGRlZmluZWQKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYpCi0jZGVmaW5lCU5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2IE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jZW5kaWYKLQotLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tIERlcHJlY2F0ZWQgbWFjcm9zIGZvciAxLjUwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gIFRoZXNlIHdpbGwgZ28gYXdheSBpbiBhIGZ1dHVyZSByZWxlYXNlCi0KLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQgb3IgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLS8vICAgICAgICAgICBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PX1NURF9VTk9SREVSRUQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQKSB8fCBkZWZpbmVkIChORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVCkKLSMgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1NURF9VTk9SREVSRUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVERfVU5PUkRFUkVECi0jIGVuZGlmCi0jZW5kaWYKLQotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PX0lOSVRJQUxJWkVSX0xJU1RTCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5JVElBTElaRVJfTElTVFMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5JVElBTElaRVJfTElTVFMKLSNlbmRpZgotCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWSBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9BUlJBWQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfQVJSQVkpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX0FSUkFZCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTyBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9DSFJPTk8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9DSFJPTk8pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9DSFJPTk8pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX0NIUk9OTwotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX0NPREVDVlQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfQ09ERUNWVCkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfQ09ERUNWVAotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT05ESVRJT05fVkFSSUFCTEUgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfQ09ORElUSU9OX1ZBUklBQkxFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9DT05ESVRJT05fVkFSSUFCTEUKLSNlbmRpZgotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRk9SV0FSRF9MSVNUIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX0ZPUldBUkRfTElTVAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX0ZPUldBUkRfTElTVCkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfRk9SV0FSRF9MSVNUCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVVFVSRSBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9GVVRVUkUKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9GVVRVUkUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX0ZVVFVSRQotI2VuZGlmCi0KLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QgCi0vLyAgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfSU5JVElBTElaRVJfTElTVCBvciBORE5CT09TVF9OT19JTklUSUFMSVpFUl9MSVNUUwotI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jIGlmbmRlZiBORE5CT09TVF9OT18wWF9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jIGVuZGlmCi0jIGlmbmRlZiBORE5CT09TVF9OT19JTklUSUFMSVpFUl9MSVNUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOSVRJQUxJWkVSX0xJU1RTCi0jIGVuZGlmCi0jZW5kaWYKLQotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVggaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfTVVURVgKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX01VVEVYKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9NVVRFWAotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00gaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfUkFORE9NCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfUkFORE9NKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9SQU5ET00KLSNlbmRpZgotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8gaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfUkFUSU8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX1JBVElPKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9SQVRJTwotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SRUdFWCBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9SRUdFWAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfUkVHRVgpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1JFR0VYCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUiBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9TWVNURU1fRVJST1IKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9TWVNURU1fRVJST1IpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9TWVNURU1fRVJST1IpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1NZU1RFTV9FUlJPUgotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfVEhSRUFECi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFEKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfVEhSRUFEKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9USFJFQUQKLSNlbmRpZgotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfVFVQTEUKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX1RVUExFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9UVVBMRQotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUyBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9UWVBFX1RSQUlUUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfVFlQRV9UUkFJVFMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1RZUEVfVFJBSVRTCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWCBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9UWVBFSU5ERVgKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9UWVBFSU5ERVgpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1RZUEVJTkRFWAotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX1VOT1JERVJFRF9NQVAKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfVU5PUkRFUkVEX01BUCkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfVU5PUkRFUkVEX01BUAotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX1VOT1JERVJFRF9TRVQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfVU5PUkRFUkVEX1NFVCkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfVU5PUkRFUkVEX1NFVAotI2VuZGlmCi0KLS8vICAtLS0tLS0tLS0tLS0tLS0tLS0gRW5kIG9mIGRlcHJlY2F0ZWQgbWFjcm9zIGZvciAxLjUwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVwcmVjYXRlZCBtYWNyb3MgZm9yIDEuNTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgVGhlc2Ugd2lsbCBnbyBhd2F5IGluIGEgZnV0dXJlIHJlbGVhc2UKLQotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0FVVE9fREVDTEFSQVRJT05TCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVVUT19ERUNMQVJBVElPTlMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQVVUT19ERUNMQVJBVElPTlMKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVVUT19NVUxUSURFQ0xBUkFUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19DSEFSMTZfVAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NIQVIxNl9UKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NIQVIxNl9UCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19DSEFSMzJfVAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NIQVIzMl9UKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NIQVIzMl9UCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX1RFTVBMQVRFX0FMSUFTRVMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX0FMSUFTRVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfQUxJQVNFUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0NPTlNURVhQUgotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DT05TVEVYUFIpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ09OU1RFWFBSCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2IGluc3RlYWQgb2YgICBORE5CT09TVF9OT19ERUNMVFlQRV9OMzI3NgotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0RFQ0xUWVBFX04zMjc2KQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFQ0xUWVBFX04zMjc2Ci0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19ERUNMVFlQRQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0RFQ0xUWVBFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFQ0xUWVBFCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0RFRkFVTFRFRF9GVU5DVElPTlMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fREVGQVVMVEVEX0ZVTkNUSU9OUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fREVMRVRFRF9GVU5DVElPTlMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19ERUxFVEVEX0ZVTkNUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19ERUxFVEVEX0ZVTkNUSU9OUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0VYVEVSTl9URU1QTEFURQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWFRFUk5fVEVNUExBVEUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fRVhURVJOX1RFTVBMQVRFCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fTEFNQkRBUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTEFNQkRBUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19MQU1CREFTCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVCBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fTk9FWENFUFQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19OT0VYQ0VQVCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19OT0VYQ0VQVAotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19OVUxMUFRSCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19OVUxMUFRSKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX05VTExQVFIKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19SQVdfTElURVJBTFMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fUkFXX0xJVEVSQUxTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1JBV19MSVRFUkFMUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fUlZBTFVFX1JFRkVSRU5DRVMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19SVkFMVUVfUkVGRVJFTkNFUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19SVkFMVUVfUkVGRVJFTkNFUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX1NDT1BFRF9FTlVNUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TQ09QRURfRU5VTVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU0NPUEVEX0VOVU1TCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX1NUQVRJQ19BU1NFUlQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NUQVRJQ19BU1NFUlQpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1RBVElDX0FTU0VSVAotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9TVERfVU5PUkRFUkVEIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19TVERfVU5PUkRFUkVECi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9TVERfVU5PUkRFUkVEKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfVU5PUkRFUkVEKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9VTk9SREVSRUQKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fVU5JQ09ERV9MSVRFUkFMUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVU5JQ09ERV9MSVRFUkFMUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19VTklDT0RFX0xJVEVSQUxTCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fVkFSSUFESUNfVEVNUExBVEVTCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1ZBUklBRElDX1RFTVBMQVRFUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19WQVJJQURJQ19URU1QTEFURVMKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19WQVJJQURJQ19NQUNST1MKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVkFSSUFESUNfTUFDUk9TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1ZBUklBRElDX01BQ1JPUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9OVU1FUklDX0xJTUlUUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fTlVNRVJJQ19MSU1JVFNfTE9XRVNUCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9OVU1FUklDX0xJTUlUUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTlVNRVJJQ19MSU1JVFNfTE9XRVNUKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX05VTUVSSUNfTElNSVRTX0xPV0VTVAotI2VuZGlmCi0vLyAgLS0tLS0tLS0tLS0tLS0tLS0tIEVuZCBvZiBkZXByZWNhdGVkIG1hY3JvcyBmb3IgMS41MSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi0KLS8vCi0vLyBIZWxwZXIgbWFjcm9zIE5ETkJPT1NUX05PRVhDRVBULCBORE5CT09TVF9OT0VYQ0VQVF9JRiwgTkROQk9PU1RfTk9FWENFUFRfRVhQUgotLy8gVGhlc2UgYWlkIHRoZSB0cmFuc2l0aW9uIHRvIEMrKzExIHdoaWxlIHN0aWxsIHN1cHBvcnRpbmcgQysrMDMgY29tcGlsZXJzCi0vLwotI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9FWENFUFQKLSMgIGRlZmluZSBORE5CT09TVF9OT0VYQ0VQVF9PUl9OT1RIUk9XIHRocm93KCkKLSMgIGRlZmluZSBORE5CT09TVF9OT0VYQ0VQVF9JRihQcmVkaWNhdGUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9FWENFUFRfRVhQUihFeHByZXNzaW9uKSBmYWxzZQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9OT0VYQ0VQVCBub2V4Y2VwdAotIyAgZGVmaW5lIE5ETkJPT1NUX05PRVhDRVBUX09SX05PVEhST1cgbm9leGNlcHQKLSMgIGRlZmluZSBORE5CT09TVF9OT0VYQ0VQVF9JRihQcmVkaWNhdGUpIG5vZXhjZXB0KChQcmVkaWNhdGUpKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PRVhDRVBUX0VYUFIoRXhwcmVzc2lvbikgbm9leGNlcHQoKEV4cHJlc3Npb24pKQotI2VuZGlmCi0vLwotLy8gSGVscGVyIG1hY3JvIE5ETkJPT1NUX0ZBTExUSFJPVUdIIAotLy8gRmFsbGJhY2sgZGVmaW5pdGlvbiBvZiBORE5CT09TVF9GQUxMVEhST1VHSCBtYWNybyB1c2VkIHRvIG1hcmsgaW50ZW5kZWQgCi0vLyBmYWxsLXRocm91Z2ggYmV0d2VlbiBjYXNlIGxhYmVscyBpbiBhIHN3aXRjaCBzdGF0ZW1lbnQuIFdlIHVzZSBhIGRlZmluaXRpb24gCi0vLyB0aGF0IHJlcXVpcmVzIGEgc2VtaWNvbG9uIGFmdGVyIGl0IHRvIGF2b2lkIGF0IGxlYXN0IG9uZSB0eXBlIG9mIG1pc3VzZSBldmVuIAotLy8gb24gdW5zdXBwb3J0ZWQgY29tcGlsZXJzLiAKLS8vIAotI2lmbmRlZiBORE5CT09TVF9GQUxMVEhST1VHSCAKLSMgIGRlZmluZSBORE5CT09TVF9GQUxMVEhST1VHSCAoKHZvaWQpMCkgCi0jZW5kaWYgCi0KLS8vCi0vLyBjb25zdGV4cHIgd29ya2Fyb3VuZHMKLS8vIAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSKQotI2RlZmluZSBORE5CT09TVF9DT05TVEVYUFIKLSNkZWZpbmUgTkROQk9PU1RfQ09OU1RFWFBSX09SX0NPTlNUIGNvbnN0Ci0jZWxzZQotI2RlZmluZSBORE5CT09TVF9DT05TVEVYUFIgY29uc3RleHByCi0jZGVmaW5lIE5ETkJPT1NUX0NPTlNURVhQUl9PUl9DT05TVCBjb25zdGV4cHIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19DT05TVEVYUFIgIHN0YXRpYyBORE5CT09TVF9DT05TVEVYUFJfT1JfQ09OU1QKLQotLy8KLS8vIFNldCBORE5CT09TVF9IQVNfU1RBVElDX0FTU0VSVCB3aGVuIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQgaXMgbm90IGRlZmluZWQKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1NUQVRJQ19BU1NFUlQpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NUQVRJQ19BU1NFUlQKLSNlbmRpZgotCi0vLwotLy8gU2V0IE5ETkJPT1NUX0hBU19SVkFMVUVfUkVGUyB3aGVuIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTIGlzIG5vdCBkZWZpbmVkCi0vLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNfUlZBTFVFX1JFRlMpCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19SVkFMVUVfUkVGUwotI2VuZGlmCi0KLS8vCi0vLyBTZXQgTkROQk9PU1RfSEFTX1ZBUklBRElDX1RNUEwgd2hlbiBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMgaXMgbm90IGRlZmluZWQKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNfVkFSSUFESUNfVE1QTCkKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1ZBUklBRElDX1RNUEwKLSNlbmRpZgotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvdXNlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy91c2VyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2UwNjA3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy91c2VyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vLyAgbmRuYm9vc3QvY29uZmlnL3VzZXIuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMS4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgRG8gbm90IGNoZWNrIGluIG1vZGlmaWVkIHZlcnNpb25zIG9mIHRoaXMgZmlsZSwKLS8vICBUaGlzIGZpbGUgbWF5IGJlIGN1c3RvbWl6ZWQgYnkgdGhlIGVuZCB1c2VyLCBidXQgbm90IGJ5IGJvb3N0LgotCi0vLwotLy8gIFVzZSB0aGlzIGZpbGUgdG8gZGVmaW5lIGEgc2l0ZSBhbmQgY29tcGlsZXIgc3BlY2lmaWMKLS8vICBjb25maWd1cmF0aW9uIHBvbGljeToKLS8vCi0KLS8vIGRlZmluZSB0aGlzIHRvIGxvY2F0ZSBhIGNvbXBpbGVyIGNvbmZpZyBmaWxlOgotLy8gI2RlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgPG15aGVhZGVyPgotCi0vLyBkZWZpbmUgdGhpcyB0byBsb2NhdGUgYSBzdGRsaWIgY29uZmlnIGZpbGU6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgICA8bXloZWFkZXI+Ci0KLS8vIGRlZmluZSB0aGlzIHRvIGxvY2F0ZSBhIHBsYXRmb3JtIGNvbmZpZyBmaWxlOgotLy8gI2RlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgPG15aGVhZGVyPgotCi0vLyBkZWZpbmUgdGhpcyB0byBkaXNhYmxlIGNvbXBpbGVyIGNvbmZpZywKLS8vIHVzZSBpZiB5b3VyIGNvbXBpbGVyIGNvbmZpZyBoYXMgbm90aGluZyB0byBzZXQ6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX05PX0NPTVBJTEVSX0NPTkZJRwotCi0vLyBkZWZpbmUgdGhpcyB0byBkaXNhYmxlIHN0ZGxpYiBjb25maWcsCi0vLyB1c2UgaWYgeW91ciBzdGRsaWIgY29uZmlnIGhhcyBub3RoaW5nIHRvIHNldDoKLS8vICNkZWZpbmUgTkROQk9PU1RfTk9fU1RETElCX0NPTkZJRwotCi0vLyBkZWZpbmUgdGhpcyB0byBkaXNhYmxlIHBsYXRmb3JtIGNvbmZpZywKLS8vIHVzZSBpZiB5b3VyIHBsYXRmb3JtIGNvbmZpZyBoYXMgbm90aGluZyB0byBzZXQ6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX05PX1BMQVRGT1JNX0NPTkZJRwotCi0vLyBkZWZpbmUgdGhpcyB0byBkaXNhYmxlIGFsbCBjb25maWcgb3B0aW9ucywKLS8vIGV4Y2x1ZGluZyB0aGUgdXNlciBjb25maWcuICBVc2UgaWYgeW91cgotLy8gc2V0dXAgaXMgZnVsbHkgSVNPIGNvbXBsaWFudCwgYW5kIGhhcyBubwotLy8gdXNlZnVsIGV4dGVuc2lvbnMsIG9yIGZvciBhdXRvY29uZiBnZW5lcmF0ZWQKLS8vIHNldHVwczoKLS8vICNkZWZpbmUgTkROQk9PU1RfTk9fQ09ORklHCi0KLS8vIGRlZmluZSB0aGlzIHRvIG1ha2UgdGhlIGNvbmZpZyAib3B0aW1pc3RpYyIKLS8vIGFib3V0IHVua25vd24gY29tcGlsZXIgdmVyc2lvbnMuICBOb3JtYWxseQotLy8gdW5rbm93biBjb21waWxlciB2ZXJzaW9ucyBhcmUgYXNzdW1lZCB0byBoYXZlCi0vLyBhbGwgdGhlIGRlZmVjdHMgb2YgdGhlIGxhc3Qga25vd24gdmVyc2lvbiwgaG93ZXZlcgotLy8gc2V0dGluZyB0aGlzIGZsYWcsIGNhdXNlcyB0aGUgY29uZmlnIHRvIGFzc3VtZQotLy8gdGhhdCB1bmtub3duIGNvbXBpbGVyIHZlcnNpb25zIGFyZSBmdWxseSBjb25mb3JtYW50Ci0vLyB3aXRoIHRoZSBzdGFuZGFyZDoKLS8vICNkZWZpbmUgTkROQk9PU1RfU1RSSUNUX0NPTkZJRwotCi0vLyBkZWZpbmUgdGhpcyB0byBjYXVzZSB0aGUgY29uZmlnIHRvIGhhbHQgY29tcGlsYXRpb24KLS8vIHdpdGggYW4gI2Vycm9yIGlmIGl0IGVuY291bnRlcnMgYW55dGhpbmcgdW5rbm93biAtLQotLy8gZWl0aGVyIGFuIHVua25vd24gY29tcGlsZXIgdmVyc2lvbiBvciBhbiB1bmtub3duCi0vLyBjb21waWxlci9wbGF0Zm9ybS9saWJyYXJ5OgotLy8gI2RlZmluZSBORE5CT09TVF9BU1NFUlRfQ09ORklHCi0KLQotLy8gZGVmaW5lIGlmIHlvdSB3YW50IHRvIGRpc2FibGUgdGhyZWFkaW5nIHN1cHBvcnQsIGV2ZW4KLS8vIHdoZW4gYXZhaWxhYmxlOgotLy8gI2RlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMKLQotLy8gZGVmaW5lIHdoZW4geW91IHdhbnQgdG8gZGlzYWJsZSBXaW4zMiBzcGVjaWZpYyBmZWF0dXJlcwotLy8gZXZlbiB3aGVuIGF2YWlsYWJsZToKLS8vICNkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9XSU4zMgotCi0vLyBORE5CT09TVF9ESVNBQkxFX0FCSV9IRUFERVJTOiBTdG9wcyBib29zdCBoZWFkZXJzIGZyb20gaW5jbHVkaW5nIGFueSAKLS8vIHByZWZpeC9zdWZmaXggaGVhZGVycyB0aGF0IG5vcm1hbGx5IGNvbnRyb2wgdGhpbmdzIGxpa2Ugc3RydWN0IAotLy8gcGFja2luZyBhbmQgYWxpZ25tZW50LiAKLS8vICNkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9BQklfSEVBREVSUwotCi0vLyBORE5CT09TVF9BQklfUFJFRklYOiBBIHByZWZpeCBoZWFkZXIgdG8gaW5jbHVkZSBpbiBwbGFjZSBvZiB3aGF0ZXZlcgotLy8gYm9vc3QuY29uZmlnIHdvdWxkIG5vcm1hbGx5IHNlbGVjdCwgYW55IHJlcGxhY2VtZW50IHNob3VsZCBzZXQgdXAgCi0vLyBzdHJ1Y3QgcGFja2luZyBhbmQgYWxpZ25tZW50IG9wdGlvbnMgYXMgcmVxdWlyZWQuIAotLy8gI2RlZmluZSBORE5CT09TVF9BQklfUFJFRklYIG15LWhlYWRlci1uYW1lCi0KLS8vIE5ETkJPT1NUX0FCSV9TVUZGSVg6IEEgc3VmZml4IGhlYWRlciB0byBpbmNsdWRlIGluIHBsYWNlIG9mIHdoYXRldmVyIAotLy8gYm9vc3QuY29uZmlnIHdvdWxkIG5vcm1hbGx5IHNlbGVjdCwgYW55IHJlcGxhY2VtZW50IHNob3VsZCB1bmRvIAotLy8gdGhlIGVmZmVjdHMgb2YgdGhlIHByZWZpeCBoZWFkZXIuIAotLy8gI2RlZmluZSBORE5CT09TVF9BQklfU1VGRklYIG15LWhlYWRlci1uYW1lCi0KLS8vIE5ETkJPT1NUX0FMTF9EWU5fTElOSzogRm9yY2VzIGFsbCBsaWJyYXJpZXMgdGhhdCBoYXZlIHNlcGFyYXRlIHNvdXJjZSwgCi0vLyB0byBiZSBsaW5rZWQgYXMgZGxsJ3MgcmF0aGVyIHRoYW4gc3RhdGljIGxpYnJhcmllcyBvbiBNaWNyb3NvZnQgV2luZG93cyAKLS8vICh0aGlzIG1hY3JvIGlzIHVzZWQgdG8gdHVybiBvbiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbW9kaWZpZXJzLCBzbyB0aGF0IAotLy8gdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIHN5bWJvbHMgdG8gbG9vayBmb3IgaW4gYSBkbGwgcmF0aGVyIHRoYW4gaW4gYSAKLS8vIHN0YXRpYyBsaWJyYXJ5KS4gIE5vdGUgdGhhdCB0aGVyZSBtYXkgYmUgc29tZSBsaWJyYXJpZXMgdGhhdCBjYW4gb25seSAKLS8vIGJlIHN0YXRpY2FsbHkgbGlua2VkIChCb29zdC5UZXN0IGZvciBleGFtcGxlKSBhbmQgb3RoZXJzIHdoaWNoIG1heSBvbmx5IAotLy8gYmUgZHluYW1pY2FsbHkgbGlua2VkIChCb29zdC5UaHJlYWRzIGZvciBleGFtcGxlKSwgaW4gdGhlc2UgY2FzZXMgdGhpcyAKLS8vIG1hY3JvIGhhcyBubyBlZmZlY3QuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX0FMTF9EWU5fTElOSwotIAotLy8gTkROQk9PU1RfV0hBVEVWRVJfRFlOX0xJTks6IEZvcmNlcyBsaWJyYXJ5ICJ3aGF0ZXZlciIgdG8gYmUgbGlua2VkIGFzIGEgZGxsIAotLy8gcmF0aGVyIHRoYW4gYSBzdGF0aWMgbGlicmFyeSBvbiBNaWNyb3NvZnQgV2luZG93czogcmVwbGFjZSB0aGUgV0hBVEVWRVIgCi0vLyBwYXJ0IG9mIHRoZSBtYWNybyBuYW1lIHdpdGggdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgdGhhdCB5b3Ugd2FudCB0byAKLS8vIGR5bmFtaWNhbGx5IGxpbmsgdG8sIGZvciBleGFtcGxlIHVzZSBORE5CT09TVF9EQVRFX1RJTUVfRFlOX0xJTksgb3IgCi0vLyBORE5CT09TVF9SRUdFWF9EWU5fTElOSyBldGMgKHRoaXMgbWFjcm8gaXMgdXNlZCB0byB0dXJuIG9uIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSAKLS8vIG1vZGlmaWVycywgc28gdGhhdCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggc3ltYm9scyB0byBsb29rIGZvciBpbiBhIGRsbCAKLS8vIHJhdGhlciB0aGFuIGluIGEgc3RhdGljIGxpYnJhcnkpLiAgCi0vLyBOb3RlIHRoYXQgdGhlcmUgbWF5IGJlIHNvbWUgbGlicmFyaWVzIHRoYXQgY2FuIG9ubHkgYmUgc3RhdGljYWxseSBsaW5rZWQgCi0vLyAoQm9vc3QuVGVzdCBmb3IgZXhhbXBsZSkgYW5kIG90aGVycyB3aGljaCBtYXkgb25seSBiZSBkeW5hbWljYWxseSBsaW5rZWQgCi0vLyAoQm9vc3QuVGhyZWFkcyBmb3IgZXhhbXBsZSksIGluIHRoZXNlIGNhc2VzIHRoaXMgbWFjcm8gaXMgdW5zdXBwb3J0ZWQuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1dIQVRFVkVSX0RZTl9MSU5LCi0gCi0vLyBORE5CT09TVF9BTExfTk9fTElCOiBUZWxscyB0aGUgY29uZmlnIHN5c3RlbSBub3QgdG8gYXV0b21hdGljYWxseSBzZWxlY3QgCi0vLyB3aGljaCBsaWJyYXJpZXMgdG8gbGluayBhZ2FpbnN0LiAgCi0vLyBOb3JtYWxseSBpZiBhIGNvbXBpbGVyIHN1cHBvcnRzICNwcmFnbWEgbGliLCB0aGVuIHRoZSBjb3JyZWN0IGxpYnJhcnkgCi0vLyBidWlsZCB2YXJpYW50IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZWxlY3RlZCBhbmQgbGlua2VkIGFnYWluc3QsIAotLy8gc2ltcGx5IGJ5IHRoZSBhY3Qgb2YgaW5jbHVkaW5nIG9uZSBvZiB0aGF0IGxpYnJhcnkncyBoZWFkZXJzLiAgCi0vLyBUaGlzIG1hY3JvIHR1cm5zIHRoYXQgZmVhdHVyZSBvZmYuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX0FMTF9OT19MSUIKLSAKLS8vIE5ETkJPT1NUX1dIQVRFVkVSX05PX0xJQjogVGVsbHMgdGhlIGNvbmZpZyBzeXN0ZW0gbm90IHRvIGF1dG9tYXRpY2FsbHkgCi0vLyBzZWxlY3Qgd2hpY2ggbGlicmFyeSB0byBsaW5rIGFnYWluc3QgZm9yIGxpYnJhcnkgIndoYXRldmVyIiwgCi0vLyByZXBsYWNlIFdIQVRFVkVSIGluIHRoZSBtYWNybyBuYW1lIHdpdGggdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnk7IAotLy8gZm9yIGV4YW1wbGUgTkROQk9PU1RfREFURV9USU1FX05PX0xJQiBvciBORE5CT09TVF9SRUdFWF9OT19MSUIuICAKLS8vIE5vcm1hbGx5IGlmIGEgY29tcGlsZXIgc3VwcG9ydHMgI3ByYWdtYSBsaWIsIHRoZW4gdGhlIGNvcnJlY3QgbGlicmFyeSAKLS8vIGJ1aWxkIHZhcmlhbnQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIGFuZCBsaW5rZWQgYWdhaW5zdCwgc2ltcGx5IAotLy8gYnkgdGhlIGFjdCBvZiBpbmNsdWRpbmcgb25lIG9mIHRoYXQgbGlicmFyeSdzIGhlYWRlcnMuICBUaGlzIG1hY3JvIHR1cm5zIAotLy8gdGhhdCBmZWF0dXJlIG9mZi4KLS8vICNkZWZpbmUgTkROQk9PU1RfV0hBVEVWRVJfTk9fTElCCi0gCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvd2FybmluZ19kaXNhYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3dhcm5pbmdfZGlzYWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMzdhMGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvd2FybmluZ19kaXNhYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8vICBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDgKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBUaGlzIGZpbGUgZXhpc3RzIHRvIHR1cm4gb2ZmIHNvbWUgb3Zlcmx5LXBlZGFudGljIHdhcm5pbmcgZW1pdHRlZAotLy8gIGJ5IGNlcnRhaW4gY29tcGlsZXJzLiAgWW91IHNob3VsZCBpbmNsdWRlIHRoaXMgaGVhZGVyIG9ubHkgaW46Ci0vLwotLy8gICogQSB0ZXN0IGNhc2UsIGJlZm9yZSBhbnkgb3RoZXIgaGVhZGVycywgb3IsCi0vLyAgKiBBIGxpYnJhcnkgc291cmNlIGZpbGUgYmVmb3JlIGFueSBvdGhlciBoZWFkZXJzLgotLy8KLS8vICBJVCBTSE9VTEQgTk9UIEJFIElOQ0xVREVEIEJZIEFOWSBCT09TVCBIRUFERVIuCi0vLwotLy8gIFlPVSBTSE9VTEQgTk9UIElOQ0xVREUgSVQgSUYgWU9VIENBTiBSRUFTT05BQkxZIEZJWCBUSEUgV0FSTklORy4KLS8vCi0vLyAgVGhlIG9ubHkgd2FybmluZ3MgZGlzYWJsZWQgaGVyZSBhcmUgdGhvc2UgdGhhdCBhcmU6Ci0vLwotLy8gICogUXVpdGUgdW5yZWFzb25hYmx5IHBlZGFudGljLgotLy8gICogR2VuZXJhbGx5IG9ubHkgZW1pdHRlZCBieSBhIHNpbmdsZSBjb21waWxlci4KLS8vICAqIENhbid0IGVhc2lseSBiZSBmaXhlZDogZm9yIGV4YW1wbGUgaWYgdGhlIHZlbmRvcnMgb3duIHN0ZCBsaWIgCi0vLyAgICBjb2RlIGVtaXRzIHRoZXNlIHdhcm5pbmdzIQotLy8KLS8vICBOb3RlIHRoYXQgVEhJUyBIRUFERVIgTVVTVCBOT1QgSU5DTFVERSBBTlkgT1RIRVIgSEVBREVSUzoKLS8vICBub3QgZXZlbiBzdGQgbGlicmFyeSBvbmVzISAgRG9pbmcgc28gbWF5IHR1cm4gdGhlIHdhcm5pbmcKLS8vICBvZmYgdG9vIGxhdGUgdG8gYmUgb2YgYW55IHVzZS4gIEZvciBleGFtcGxlIHRoZSBWQysrIEM0OTk2Ci0vLyAgd2FybmluZyBjYW4gYmUgZW1pdHRlZCBmcm9tIDxpb3Nmd2Q+IGlmIHRoYXQgaGVhZGVyIGlzIGluY2x1ZGVkCi0vLyAgYmVmb3JlIG9yIGJ5IHRoaXMgb25lIDotKAotLy8KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfV0FSTklOR19ESVNBQkxFX0hQUAotI2RlZmluZSBORE5CT09TVF9DT05GSUdfV0FSTklOR19ESVNBQkxFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE0MDApIAotICAgLy8gRXJyb3IgJ2Z1bmN0aW9uJzogd2FzIGRlY2xhcmVkIGRlcHJlY2F0ZWQKLSAgIC8vIGh0dHA6Ly9tc2RuMi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvdHRjejBieXMoVlMuODApLmFzcHgKLSAgIC8vIFRoaXMgZXJyb3IgaXMgZW1pdHRlZCB3aGVuIHlvdSB1c2Ugc29tZSBwZXJmZWN0bHkgY29uZm9ybWluZwotICAgLy8gc3RkIGxpYiBmdW5jdGlvbnMgaW4gYSBwZXJmZWN0bHkgY29ycmVjdCB3YXksIGFuZCBhbHNvIGJ5Ci0gICAvLyBzb21lIG9mIE1pY3Jvc29mdCdzIG93biBzdGQgbGliIGNvZGUgIQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KQotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fSUNMKQotICAgLy8gQXMgYWJvdmU6IGdpdmVzIHdhcm5pbmcgd2hlbiBhICJkZXByZWNhdGVkIgotICAgLy8gc3RkIGxpYnJhcnkgZnVuY3Rpb24gaXMgZW5jb3VudGVyZWQuCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjE3ODYpCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkZJR19XQVJOSU5HX0RJU0FCTEVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbnRhaW5lci9jb250YWluZXJfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29udGFpbmVyL2NvbnRhaW5lcl9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjRiNDY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29udGFpbmVyL2NvbnRhaW5lcl9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDA1LTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb250YWluZXIgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09OVEFJTkVSX0NPTlRBSU5FUl9GV0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0NPTlRBSU5FUl9DT05UQUlORVJfRldEX0hQUAotCi0jaWYgKGRlZmluZWQgX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyAgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmQgcHJlZGVjbGFyYXRpb25zCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8vIEBjb25kCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSBpbnRydXNpdmV7Ci0gICAvL0NyZWF0ZSBuYW1lc3BhY2UgdG8gYXZvaWQgY29tcGlsYXRpb24gZXJyb3JzCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSBjb250YWluZXJ7IG5hbWVzcGFjZSBjb250YWluZXJfZGV0YWlsewotCi1uYW1lc3BhY2UgYmkgPSBuZG5ib29zdDo6aW50cnVzaXZlOwotCi19fX0KLQotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPHN0cmluZz4KLQotLy8vIEBlbmRjb25kCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lcnMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGNvbnRhaW5lciB7Ci0KLS8vdmVjdG9yIGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgVAotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPFQ+ID4KLWNsYXNzIHZlY3RvcjsKLQotLy92ZWN0b3IgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBUCi0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8VD4gPgotY2xhc3Mgc3RhYmxlX3ZlY3RvcjsKLQotLy92ZWN0b3IgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBUCi0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8VD4gPgotY2xhc3MgZGVxdWU7Ci0KLS8vbGlzdCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIFQKLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxUPiA+Ci1jbGFzcyBsaXN0OwotCi0vL3NsaXN0IGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgVAotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPFQ+ID4KLWNsYXNzIHNsaXN0OwotCi0vL3NldCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIEtleQotICAgICAgICAgLGNsYXNzIENvbXBhcmUgID0gc3RkOjpsZXNzPEtleT4KLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxLZXk+ID4KLWNsYXNzIHNldDsKLQotLy9tdWx0aXNldCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIEtleQotICAgICAgICAgLGNsYXNzIENvbXBhcmUgID0gc3RkOjpsZXNzPEtleT4KLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxLZXk+ID4KLWNsYXNzIG11bHRpc2V0OwotCi0vL21hcCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIEtleQotICAgICAgICAgLGNsYXNzIFQKLSAgICAgICAgICxjbGFzcyBDb21wYXJlICA9IHN0ZDo6bGVzczxLZXk+Ci0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8c3RkOjpwYWlyPGNvbnN0IEtleSwgVD4gPiA+Ci1jbGFzcyBtYXA7Ci0KLS8vbXVsdGltYXAgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBLZXkKLSAgICAgICAgICxjbGFzcyBUCi0gICAgICAgICAsY2xhc3MgQ29tcGFyZSAgPSBzdGQ6Omxlc3M8S2V5PgotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPHN0ZDo6cGFpcjxjb25zdCBLZXksIFQ+ID4gPgotY2xhc3MgbXVsdGltYXA7Ci0KLS8vZmxhdF9zZXQgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBLZXkKLSAgICAgICAgICxjbGFzcyBDb21wYXJlICA9IHN0ZDo6bGVzczxLZXk+Ci0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8S2V5PiA+Ci1jbGFzcyBmbGF0X3NldDsKLQotLy9mbGF0X211bHRpc2V0IGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5Ci0gICAgICAgICAsY2xhc3MgQ29tcGFyZSAgPSBzdGQ6Omxlc3M8S2V5PgotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPEtleT4gPgotY2xhc3MgZmxhdF9tdWx0aXNldDsKLQotLy9mbGF0X21hcCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIEtleQotICAgICAgICAgLGNsYXNzIFQKLSAgICAgICAgICxjbGFzcyBDb21wYXJlICA9IHN0ZDo6bGVzczxLZXk+Ci0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8c3RkOjpwYWlyPEtleSwgVD4gPiA+Ci1jbGFzcyBmbGF0X21hcDsKLQotLy9mbGF0X211bHRpbWFwIGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5Ci0gICAgICAgICAsY2xhc3MgVAotICAgICAgICAgLGNsYXNzIENvbXBhcmUgID0gc3RkOjpsZXNzPEtleT4KLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnBhaXI8S2V5LCBUPiA+ID4KLWNsYXNzIGZsYXRfbXVsdGltYXA7Ci0KLS8vYmFzaWNfc3RyaW5nIGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQKLSAgICAgICAgICxjbGFzcyBUcmFpdHMgPSBzdGQ6OmNoYXJfdHJhaXRzPENoYXJUPgotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciAgPSBzdGQ6OmFsbG9jYXRvcjxDaGFyVD4gPgotY2xhc3MgYmFzaWNfc3RyaW5nOwotCi0vLyEgVHlwZSB1c2VkIHRvIHRhZyB0aGF0IHRoZSBpbnB1dCByYW5nZSBpcwotLy8hIGd1YXJhbnRlZWQgdG8gYmUgb3JkZXJlZAotc3RydWN0IG9yZGVyZWRfcmFuZ2VfdAote307Ci0KLS8vISBUeXBlIHVzZWQgdG8gdGFnIHRoYXQgdGhlIGlucHV0IHJhbmdlIGlzCi0vLyEgZ3VhcmFudGVlZCB0byBiZSBvcmRlcmVkIGFuZCB1bmlxdWUKLXN0cnVjdCBvcmRlcmVkX3VuaXF1ZV9yYW5nZV90Ci0gICA6IHB1YmxpYyBvcmRlcmVkX3JhbmdlX3QKLXt9OwotCi0vLyEgVmFsdWUgdXNlZCB0byB0YWcgdGhhdCB0aGUgaW5wdXQgcmFuZ2UgaXMKLS8vISBndWFyYW50ZWVkIHRvIGJlIG9yZGVyZWQKLXN0YXRpYyBjb25zdCBvcmRlcmVkX3JhbmdlX3Qgb3JkZXJlZF9yYW5nZSA9IG9yZGVyZWRfcmFuZ2VfdCgpOwotCi0vLyEgVmFsdWUgdXNlZCB0byB0YWcgdGhhdCB0aGUgaW5wdXQgcmFuZ2UgaXMKLS8vISBndWFyYW50ZWVkIHRvIGJlIG9yZGVyZWQgYW5kIHVuaXF1ZQotc3RhdGljIGNvbnN0IG9yZGVyZWRfdW5pcXVlX3JhbmdlX3Qgb3JkZXJlZF91bmlxdWVfcmFuZ2UgPSBvcmRlcmVkX3VuaXF1ZV9yYW5nZV90KCk7Ci0KLS8vLyBAY29uZAotCi1uYW1lc3BhY2UgZGV0YWlsX3JlYWxseV9kZWVwX25hbWVzcGFjZSB7Ci0KLS8vT3RoZXJ3aXNlLCBnY2MgaXNzdWVzIGEgd2FybmluZyBvZiBwcmV2aW91c2x5IGRlZmluZWQKLS8vYW5vbnltb3VzX2luc3RhbmNlIGFuZCB1bmlxdWVfaW5zdGFuY2UKLXN0cnVjdCBkdW1teQotewotICAgZHVtbXkoKQotICAgewotICAgICAgKHZvaWQpb3JkZXJlZF9yYW5nZTsKLSAgICAgICh2b2lkKW9yZGVyZWRfdW5pcXVlX3JhbmdlOwotICAgfQotfTsKLQotfSAgLy9kZXRhaWxfcmVhbGx5X2RlZXBfbmFtZXNwYWNlIHsKLQotLy8vIEBlbmRjb25kCi0KLX19ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBjb250YWluZXIgewotCi0jZW5kaWYgLy8jaWZuZGVmIE5ETkJPT1NUX0NPTlRBSU5FUl9DT05UQUlORVJfRldEX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jcmVnZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jcmVnZXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzg0YTJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY3JlZ2V4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yZWdleCBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjcmVnZXguY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBQT1NJWCBBUEkgZnVuY3Rpb25zCi0gICogICAgICAgICAgICAgICAgKyBuZG5ib29zdDo6UmVnRXggaGlnaCBsZXZlbCB3cmFwcGVyLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX0NSRUdFWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVfQ1JFR0VYX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9jcmVnZXguaHBwPgotCi0jZW5kaWYgLyogaW5jbHVkZSBndWFyZCAqLwotCi0KLQotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NzdGRpbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jc3RkaW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFiYzk0NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NzdGRpbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTA4ICswLDAgQEAKLS8vICBib29zdCBjc3RkaW50LmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMTk5OS4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdWVyIDIwMDEgIAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRlZ2VyIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAgUmV2aXNpb24gSGlzdG9yeQotLy8gICAzMSBPY3QgMDEgIHVzZSBORE5CT09TVF9IQVNfTE9OR19MT05HIHRvIGNoZWNrIGZvciAibG9uZyBsb25nIiAoSmVucyBNLikKLS8vICAgMTYgQXByIDAxICBjaGVjayBMT05HTE9OR19NQVggd2hlbiBsb29raW5nIGZvciAibG9uZyBsb25nIiAoSmVucyBNYXVyZXIpCi0vLyAgIDIzIEphbiAwMSAgcHJlZmVyICJsb25nIiBvdmVyICJpbnQiIGZvciBpbnQzMl90IGFuZCBpbnRtYXhfdCAoSmVucyBNYXVyZXIpCi0vLyAgIDEyIE5vdiAwMCAgTWVyZ2VkIDxuZG5ib29zdC9zdGRpbnQuaD4gKEplbnMgTWF1cmVyKQotLy8gICAyMyBTZXAgMDAgIEFkZGVkIElOVFhYX0MgbWFjcm8gc3VwcG9ydCAoSm9obiBNYWRkb2NrKS4KLS8vICAgMjIgU2VwIDAwICBCZXR0ZXIgNjQtYml0IHN1cHBvcnQgKEpvaG4gTWFkZG9jaykKLS8vICAgMjkgSnVuIDAwICBSZWltcGxlbWVudCB0byBhdm9pZCBpbmNsdWRpbmcgc3RkaW50Lmggd2l0aGluIG5hbWVzcGFjZSBuZG5ib29zdAotLy8gICAgOCBBdWcgOTkgIEluaXRpYWwgdmVyc2lvbiAoQmVtYW4gRGF3ZXMpCi0KLQotI2lmbmRlZiBORE5CT09TVF9DU1RESU5UX0hQUAotI2RlZmluZSBORE5CT09TVF9DU1RESU5UX0hQUAotCi0vLwotLy8gU2luY2Ugd2UgYWx3YXlzIGRlZmluZSB0aGUgSU5UI19DIG1hY3JvcyBhcyBwZXIgQysrMHgsIAotLy8gZGVmaW5lIF9fU1REQ19DT05TVEFOVF9NQUNST1Mgc28gdGhhdCA8c3RkaW50Lmg+IGRvZXMgdGhlIHJpZ2h0Ci0vLyB0aGluZyBpZiBwb3NzaWJsZSwgYW5kIHNvIHRoYXQgdGhlIHVzZXIga25vd3MgdGhhdCB0aGUgbWFjcm9zIAotLy8gYXJlIGFjdHVhbGx5IGRlZmluZWQgYXMgcGVyIEM5OS4KLS8vCi0jaWZuZGVmIF9fU1REQ19DT05TVEFOVF9NQUNST1MKLSMgIGRlZmluZSBfX1NURENfQ09OU1RBTlRfTUFDUk9TCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vCi0vLyBOb3RlIHRoYXQgR0xJQkMgaXMgYSBiaXQgaW5jb25zaXN0ZW50IGFib3V0IHdoZXRoZXIgaW50NjRfdCBpcyBkZWZpbmVkIG9yIG5vdAotLy8gZGVwZW5kaW5nIHVwb24gd2hhdCBoZWFkZXJzIGhhcHBlbiB0byBoYXZlIGJlZW4gaW5jbHVkZWQgZmlyc3QuLi4KLS8vIHNvIHdlIGRpc2FibGUgdXNlIG9mIHN0ZGludC5oIHdoZW4gR0xJQkMgZG9lcyBub3QgZGVmaW5lIF9fR0xJQkNfSEFWRV9MT05HX0xPTkcuCi0vLyBTZWUgaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0LzM1NDggYW5kIGh0dHA6Ly9zb3VyY2VzLnJlZGhhdC5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEwOTkwCi0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX1NURElOVF9IKSAmJiAoIWRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fR0xJQkNfSEFWRV9MT05HX0xPTkcpKQotCi0vLyBUaGUgZm9sbG93aW5nICNpbmNsdWRlIGlzIGFuIGltcGxlbWVudGF0aW9uIGFydGlmYWN0OyBub3QgcGFydCBvZiBpbnRlcmZhY2UuCi0jIGlmZGVmIF9faHB1eAotLy8gSFAtVVggaGFzIGEgdmFndWVseSBuaWNlIDxzdGRpbnQuaD4gaW4gYSBub24tc3RhbmRhcmQgbG9jYXRpb24KLSMgICBpbmNsdWRlIDxpbnR0eXBlcy5oPgotIyAgIGlmZGVmIF9fU1REQ18zMl9NT0RFX18KLSAgICAgIC8vIHRoaXMgaXMgdHJpZ2dlcmVkIHdpdGggR0NDLCBiZWNhdXNlIGl0IGRlZmluZXMgX19jcGx1c3BsdXMgPCAxOTk3MDdMCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UNjRfVAotIyAgIGVuZGlmIAotIyBlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVmaW5lZChfQUlYKQotIyAgIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0jIGVsc2UKLSMgICBpbmNsdWRlIDxzdGRpbnQuaD4KLQotLy8gVGhlcmUgaXMgYSBidWcgaW4gQ3lnd2luIHR3byBfQyBtYWNyb3MKLSMgICBpZiBkZWZpbmVkKF9fU1REQ19DT05TVEFOVF9NQUNST1MpICYmIGRlZmluZWQoX19DWUdXSU5fXykKLSMgICAgIHVuZGVmIElOVE1BWF9DCi0jICAgICB1bmRlZiBVSU5UTUFYX0MKLSMgICAgIGRlZmluZSBJTlRNQVhfQyhjKSBjIyNMTAotIyAgICAgZGVmaW5lIFVJTlRNQVhfQyhjKSBjIyNVTEwKLSMgICBlbmRpZgotCi0jIGVuZGlmCi0KLSNpZmRlZiBfX1FOWF9fCi0KLS8vIFFOWCAoRGlua3Vtd2FyZSBzdGRsaWIpIGRlZmluZXMgdGhlc2UgYXMgbm9uLXN0YW5kYXJkIG5hbWVzLgotLy8gUmVmbGVjdCB0byB0aGUgc3RhbmRhcmQgbmFtZXMuCi0KLXR5cGVkZWYgOjppbnRsZWFzdDhfdCBpbnRfbGVhc3Q4X3Q7Ci10eXBlZGVmIDo6aW50ZmFzdDhfdCBpbnRfZmFzdDhfdDsKLXR5cGVkZWYgOjp1aW50bGVhc3Q4X3QgdWludF9sZWFzdDhfdDsKLXR5cGVkZWYgOjp1aW50ZmFzdDhfdCB1aW50X2Zhc3Q4X3Q7Ci0KLXR5cGVkZWYgOjppbnRsZWFzdDE2X3QgaW50X2xlYXN0MTZfdDsKLXR5cGVkZWYgOjppbnRmYXN0MTZfdCBpbnRfZmFzdDE2X3Q7Ci10eXBlZGVmIDo6dWludGxlYXN0MTZfdCB1aW50X2xlYXN0MTZfdDsKLXR5cGVkZWYgOjp1aW50ZmFzdDE2X3QgdWludF9mYXN0MTZfdDsKLQotdHlwZWRlZiA6OmludGxlYXN0MzJfdCBpbnRfbGVhc3QzMl90OwotdHlwZWRlZiA6OmludGZhc3QzMl90IGludF9mYXN0MzJfdDsKLXR5cGVkZWYgOjp1aW50bGVhc3QzMl90IHVpbnRfbGVhc3QzMl90OwotdHlwZWRlZiA6OnVpbnRmYXN0MzJfdCB1aW50X2Zhc3QzMl90OwotCi0jIGlmbmRlZiBORE5CT09TVF9OT19JTlQ2NF9UCi0KLXR5cGVkZWYgOjppbnRsZWFzdDY0X3QgaW50X2xlYXN0NjRfdDsKLXR5cGVkZWYgOjppbnRmYXN0NjRfdCBpbnRfZmFzdDY0X3Q7Ci10eXBlZGVmIDo6dWludGxlYXN0NjRfdCB1aW50X2xlYXN0NjRfdDsKLXR5cGVkZWYgOjp1aW50ZmFzdDY0X3QgdWludF9mYXN0NjRfdDsKLQotIyBlbmRpZgotCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSAgdXNpbmcgOjppbnQ4X3Q7ICAgICAgICAgICAgIAotICB1c2luZyA6OmludF9sZWFzdDhfdDsgICAgICAgCi0gIHVzaW5nIDo6aW50X2Zhc3Q4X3Q7ICAgICAgICAKLSAgdXNpbmcgOjp1aW50OF90OyAgICAgICAgICAgIAotICB1c2luZyA6OnVpbnRfbGVhc3Q4X3Q7ICAgICAgCi0gIHVzaW5nIDo6dWludF9mYXN0OF90OyAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgIAotICB1c2luZyA6OmludDE2X3Q7ICAgICAgICAgICAgCi0gIHVzaW5nIDo6aW50X2xlYXN0MTZfdDsgICAgICAKLSAgdXNpbmcgOjppbnRfZmFzdDE2X3Q7ICAgICAgIAotICB1c2luZyA6OnVpbnQxNl90OyAgICAgICAgICAgCi0gIHVzaW5nIDo6dWludF9sZWFzdDE2X3Q7ICAgICAKLSAgdXNpbmcgOjp1aW50X2Zhc3QxNl90OyAgICAgIAotICAgICAgICAgICAgICAgICAgICAgCi0gIHVzaW5nIDo6aW50MzJfdDsgICAgICAgICAgICAKLSAgdXNpbmcgOjppbnRfbGVhc3QzMl90OyAgICAgIAotICB1c2luZyA6OmludF9mYXN0MzJfdDsgICAgICAgCi0gIHVzaW5nIDo6dWludDMyX3Q7ICAgICAgICAgICAKLSAgdXNpbmcgOjp1aW50X2xlYXN0MzJfdDsgICAgIAotICB1c2luZyA6OnVpbnRfZmFzdDMyX3Q7ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAKLSMgaWZuZGVmIE5ETkJPT1NUX05PX0lOVDY0X1QKLQotICB1c2luZyA6OmludDY0X3Q7ICAgICAgICAgICAgCi0gIHVzaW5nIDo6aW50X2xlYXN0NjRfdDsgICAgICAKLSAgdXNpbmcgOjppbnRfZmFzdDY0X3Q7ICAgICAgIAotICB1c2luZyA6OnVpbnQ2NF90OyAgICAgICAgICAgCi0gIHVzaW5nIDo6dWludF9sZWFzdDY0X3Q7ICAgICAKLSAgdXNpbmcgOjp1aW50X2Zhc3Q2NF90OyAgICAgIAotICAgICAgICAgICAgICAgICAgICAgCi0jIGVuZGlmCi0KLSAgdXNpbmcgOjppbnRtYXhfdDsgICAgICAKLSAgdXNpbmcgOjp1aW50bWF4X3Q7ICAgICAKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF9fIDw9IDQpIHx8IGRlZmluZWQoX19vc2ZfXykgfHwgZGVmaW5lZChfX1ZNUykKLS8vIEZyZWVCU0QgYW5kIFRydTY0IGhhdmUgYW4gPGludHR5cGVzLmg+IHRoYXQgY29udGFpbnMgbXVjaCBvZiB3aGF0IHdlIG5lZWQuCi0jIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgdXNpbmcgOjppbnQ4X3Q7ICAgICAgICAgICAgIAotICB0eXBlZGVmIGludDhfdCBpbnRfbGVhc3Q4X3Q7ICAgICAgIAotICB0eXBlZGVmIGludDhfdCBpbnRfZmFzdDhfdDsgICAgICAgIAotICB1c2luZyA6OnVpbnQ4X3Q7ICAgICAgICAgICAgCi0gIHR5cGVkZWYgdWludDhfdCB1aW50X2xlYXN0OF90OyAgICAgIAotICB0eXBlZGVmIHVpbnQ4X3QgdWludF9mYXN0OF90OyAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgIAotICB1c2luZyA6OmludDE2X3Q7ICAgICAgICAgICAgCi0gIHR5cGVkZWYgaW50MTZfdCBpbnRfbGVhc3QxNl90OyAgICAgIAotICB0eXBlZGVmIGludDE2X3QgaW50X2Zhc3QxNl90OyAgICAgICAKLSAgdXNpbmcgOjp1aW50MTZfdDsgICAgICAgICAgIAotICB0eXBlZGVmIHVpbnQxNl90IHVpbnRfbGVhc3QxNl90OyAgICAgCi0gIHR5cGVkZWYgdWludDE2X3QgdWludF9mYXN0MTZfdDsgICAgICAKLSAgICAgICAgICAgICAgICAgICAgIAotICB1c2luZyA6OmludDMyX3Q7ICAgICAgICAgICAgCi0gIHR5cGVkZWYgaW50MzJfdCBpbnRfbGVhc3QzMl90OyAgICAgIAotICB0eXBlZGVmIGludDMyX3QgaW50X2Zhc3QzMl90OyAgICAgICAKLSAgdXNpbmcgOjp1aW50MzJfdDsgICAgICAgICAgIAotICB0eXBlZGVmIHVpbnQzMl90IHVpbnRfbGVhc3QzMl90OyAgICAgCi0gIHR5cGVkZWYgdWludDMyX3QgdWludF9mYXN0MzJfdDsgICAgICAKLSAgICAgICAgIAotIyBpZm5kZWYgTkROQk9PU1RfTk9fSU5UNjRfVCAgICAgICAgICAKLQotICB1c2luZyA6OmludDY0X3Q7ICAgICAgICAgICAgCi0gIHR5cGVkZWYgaW50NjRfdCBpbnRfbGVhc3Q2NF90OyAgICAgIAotICB0eXBlZGVmIGludDY0X3QgaW50X2Zhc3Q2NF90OyAgICAgICAKLSAgdXNpbmcgOjp1aW50NjRfdDsgICAgICAgICAgIAotICB0eXBlZGVmIHVpbnQ2NF90IHVpbnRfbGVhc3Q2NF90OyAgICAgCi0gIHR5cGVkZWYgdWludDY0X3QgdWludF9mYXN0NjRfdDsgICAgICAKLQotICB0eXBlZGVmIGludDY0X3QgaW50bWF4X3Q7Ci0gIHR5cGVkZWYgdWludDY0X3QgdWludG1heF90OwotCi0jIGVsc2UKLQotICB0eXBlZGVmIGludDMyX3QgaW50bWF4X3Q7Ci0gIHR5cGVkZWYgdWludDMyX3QgdWludG1heF90OwotCi0jIGVuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbHNlICAvLyBORE5CT09TVF9IQVNfU1RESU5UX0gKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPiAvLyBpbXBsZW1lbnRhdGlvbiBhcnRpZmFjdDsgbm90IHBhcnQgb2YgaW50ZXJmYWNlCi0jIGluY2x1ZGUgPGxpbWl0cy5oPiAgICAgICAgIC8vIG5lZWRlZCBmb3IgbGltaXRzIG1hY3JvcwotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0vLyAgVGhlc2UgYXJlIGZhaXJseSBzYWZlIGd1ZXNzZXMgZm9yIHNvbWUgMTYtYml0LCBhbmQgbW9zdCAzMi1iaXQgYW5kIDY0LWJpdAotLy8gIHBsYXRmb3Jtcy4gIEZvciBvdGhlciBzeXN0ZW1zLCB0aGV5IHdpbGwgaGF2ZSB0byBiZSBoYW5kIHRhaWxvcmVkLgotLy8KLS8vICBCZWNhdXNlIHRoZSBmYXN0IHR5cGVzIGFyZSBhc3N1bWVkIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSB1bmRlY29yYXRlZCB0eXBlcywKLS8vICBpdCBtYXkgYmUgcG9zc2libGUgdG8gaGFuZCB0YWlsb3IgYSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbi4gIFN1Y2gKLS8vICBhbiBvcHRpbWl6YXRpb24gbWF5IGJlIGlsbHVzaW9uYXJ5OyBvbiB0aGUgSW50ZWwgeDg2LWZhbWlseSAzODYgb24sIGZvcgotLy8gIGV4YW1wbGUsIGJ5dGUgYXJpdGhtZXRpYyBhbmQgbG9hZC9zdG9yZXMgYXJlIGFzIGZhc3QgYXMgImludCIgc2l6ZWQgb25lcy4KLQotLy8gIDgtYml0IHR5cGVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jIGlmIFVDSEFSX01BWCA9PSAweGZmCi0gICAgIHR5cGVkZWYgc2lnbmVkIGNoYXIgICAgIGludDhfdDsKLSAgICAgdHlwZWRlZiBzaWduZWQgY2hhciAgICAgaW50X2xlYXN0OF90OwotICAgICB0eXBlZGVmIHNpZ25lZCBjaGFyICAgICBpbnRfZmFzdDhfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgdWludDhfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgdWludF9sZWFzdDhfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgdWludF9mYXN0OF90OwotIyBlbHNlCi0jICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyBlbmRpZgotCi0vLyAgMTYtYml0IHR5cGVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgaWYgVVNIUlRfTUFYID09IDB4ZmZmZgotIyAgaWYgZGVmaW5lZChfX2NyYXl4MSkKLSAgICAgLy8gVGhlIENyYXkgWDEgaGFzIGEgMTYtYml0IHNob3J0LCBob3dldmVyIGl0IGlzIG5vdCByZWNvbW1lbmQKLSAgICAgLy8gZm9yIHVzZSBpbiBwZXJmb3JtYW5jZSBjcml0aWNhbCBjb2RlLgotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICBpbnQxNl90OwotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICBpbnRfbGVhc3QxNl90OwotICAgICB0eXBlZGVmIGludCAgICAgICAgICAgICBpbnRfZmFzdDE2X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIHVpbnQxNl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICB1aW50X2xlYXN0MTZfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgdWludF9mYXN0MTZfdDsKLSMgIGVsc2UKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgaW50MTZfdDsKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgaW50X2xlYXN0MTZfdDsKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgaW50X2Zhc3QxNl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICB1aW50MTZfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgdWludF9sZWFzdDE2X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIHVpbnRfZmFzdDE2X3Q7Ci0jICBlbmRpZgotIyBlbGlmIChVU0hSVF9NQVggPT0gMHhmZmZmZmZmZikgJiYgZGVmaW5lZChfX01UQV9fKSAKLSAgICAgIC8vIE9uIE1UQSAvIFhNVCBzaG9ydCBpcyAzMiBiaXRzIHVubGVzcyB0aGUgLXNob3J0MTYgY29tcGlsZXIgZmxhZyBpcyBzcGVjaWZpZWQgCi0gICAgICAvLyBNVEEgLyBYTVQgZG9lcyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbm9uLXN0YW5kYXJkIGludGVnZXIgdHlwZXMgCi0gICAgICB0eXBlZGVmIF9fc2hvcnQxNiAgICAgICAgICAgaW50MTZfdDsgCi0gICAgICB0eXBlZGVmIF9fc2hvcnQxNiAgICAgICAgICAgaW50X2xlYXN0MTZfdDsgCi0gICAgICB0eXBlZGVmIF9fc2hvcnQxNiAgICAgICAgICAgaW50X2Zhc3QxNl90OyAKLSAgICAgIHR5cGVkZWYgdW5zaWduZWQgX19zaG9ydDE2ICB1aW50MTZfdDsgCi0gICAgICB0eXBlZGVmIHVuc2lnbmVkIF9fc2hvcnQxNiAgdWludF9sZWFzdDE2X3Q7IAotICAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX3Nob3J0MTYgIHVpbnRfZmFzdDE2X3Q7IAotIyBlbGlmIChVU0hSVF9NQVggPT0gMHhmZmZmZmZmZikgJiYgZGVmaW5lZChDUkFZKQotICAgICAvLyBubyAxNi1iaXQgdHlwZXMgb24gQ3JheToKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgaW50X2xlYXN0MTZfdDsKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgaW50X2Zhc3QxNl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICB1aW50X2xlYXN0MTZfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgdWludF9mYXN0MTZfdDsKLSMgZWxzZQotIyAgICBlcnJvciBkZWZhdWx0cyBub3QgY29ycmVjdDsgeW91IG11c3QgaGFuZCBtb2RpZnkgbmRuYm9vc3QvY3N0ZGludC5ocHAKLSMgZW5kaWYKLQotLy8gIDMyLWJpdCB0eXBlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jIGlmIFVJTlRfTUFYID09IDB4ZmZmZmZmZmYKLSAgICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgaW50MzJfdDsKLSAgICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgaW50X2xlYXN0MzJfdDsKLSAgICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgaW50X2Zhc3QzMl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGludCAgICB1aW50MzJfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgdWludF9sZWFzdDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgIHVpbnRfZmFzdDMyX3Q7Ci0jIGVsaWYgKFVTSFJUX01BWCA9PSAweGZmZmZmZmZmKQotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICAgIGludDMyX3Q7Ci0gICAgIHR5cGVkZWYgc2hvcnQgICAgICAgICAgICAgaW50X2xlYXN0MzJfdDsKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgICBpbnRfZmFzdDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgdWludDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgdWludF9sZWFzdDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgdWludF9mYXN0MzJfdDsKLSMgZWxpZiBVTE9OR19NQVggPT0gMHhmZmZmZmZmZgotICAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICBpbnQzMl90OwotICAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICBpbnRfbGVhc3QzMl90OwotICAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICBpbnRfZmFzdDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgIHVpbnQzMl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICB1aW50X2xlYXN0MzJfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgdWludF9mYXN0MzJfdDsKLSMgZWxpZiAoVUlOVF9NQVggPT0gMHhmZmZmZmZmZmZmZmZmZmZmKSAmJiBkZWZpbmVkKF9fTVRBX18pIAotICAgICAgLy8gSW50ZWdlcnMgYXJlIDY0IGJpdHMgb24gdGhlIE1UQSAvIFhNVCAKLSAgICAgIHR5cGVkZWYgX19pbnQzMiAgICAgICAgICAgaW50MzJfdDsgCi0gICAgICB0eXBlZGVmIF9faW50MzIgICAgICAgICAgIGludF9sZWFzdDMyX3Q7IAotICAgICAgdHlwZWRlZiBfX2ludDMyICAgICAgICAgICBpbnRfZmFzdDMyX3Q7IAotICAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyICB1aW50MzJfdDsgCi0gICAgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgIHVpbnRfbGVhc3QzMl90OyAKLSAgICAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiAgdWludF9mYXN0MzJfdDsgCi0jIGVsc2UKLSMgICAgZXJyb3IgZGVmYXVsdHMgbm90IGNvcnJlY3Q7IHlvdSBtdXN0IGhhbmQgbW9kaWZ5IG5kbmJvb3N0L2NzdGRpbnQuaHBwCi0jIGVuZGlmCi0KLS8vICA2NC1iaXQgdHlwZXMgKyBpbnRtYXhfdCBhbmQgdWludG1heF90ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpICYmIFwKLSAgICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykgJiYgXAotICAgKCFkZWZpbmVkKF9fR0xJQkNQUF9fKSB8fCBkZWZpbmVkKF9HTElCQ1BQX1VTRV9MT05HX0xPTkcpKSAmJiBcCi0gICAoZGVmaW5lZChVTExPTkdfTUFYKSB8fCBkZWZpbmVkKFVMT05HX0xPTkdfTUFYKSB8fCBkZWZpbmVkKFVMT05HTE9OR19NQVgpKQotIyAgICBpZiBkZWZpbmVkKF9faHB1eCkKLSAgICAgLy8gSFAtVVgncyB2YWx1ZSBvZiBVTE9OR19MT05HX01BWCBpcyB1bnVzYWJsZSBpbiBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbnMKLSMgICAgZWxpZiAoZGVmaW5lZChVTExPTkdfTUFYKSAmJiBVTExPTkdfTUFYID09IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMKSB8fCAoZGVmaW5lZChVTE9OR19MT05HX01BWCkgJiYgVUxPTkdfTE9OR19NQVggPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpIHx8IChkZWZpbmVkKFVMT05HTE9OR19NQVgpICYmIFVMT05HTE9OR19NQVggPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIqKjY0IC0gMQotIyAgICBlbHNlCi0jICAgICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgICBlbmRpZgotCi0gICAgIHR5cGVkZWYgIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlICAgICAgICAgICAgaW50bWF4X3Q7Ci0gICAgIHR5cGVkZWYgIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSAgIHVpbnRtYXhfdDsKLSAgICAgdHlwZWRlZiAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgICAgICAgICAgICBpbnQ2NF90OwotICAgICB0eXBlZGVmICA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSAgICAgICAgICAgIGludF9sZWFzdDY0X3Q7Ci0gICAgIHR5cGVkZWYgIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlICAgICAgICAgICAgaW50X2Zhc3Q2NF90OwotICAgICB0eXBlZGVmICA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgICB1aW50NjRfdDsKLSAgICAgdHlwZWRlZiAgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlICAgdWludF9sZWFzdDY0X3Q7Ci0gICAgIHR5cGVkZWYgIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSAgIHVpbnRfZmFzdDY0X3Q7Ci0KLSMgZWxpZiBVTE9OR19NQVggIT0gMHhmZmZmZmZmZgotCi0jICAgIGlmIFVMT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNSAvLyAyKio2NCAtIDEKLSAgICAgdHlwZWRlZiBsb25nICAgICAgICAgICAgICAgICBpbnRtYXhfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICB1aW50bWF4X3Q7Ci0gICAgIHR5cGVkZWYgbG9uZyAgICAgICAgICAgICAgICAgaW50NjRfdDsKLSAgICAgdHlwZWRlZiBsb25nICAgICAgICAgICAgICAgICBpbnRfbGVhc3Q2NF90OwotICAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICAgICAgIGludF9mYXN0NjRfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICB1aW50NjRfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICB1aW50X2xlYXN0NjRfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICB1aW50X2Zhc3Q2NF90OwotIyAgICBlbHNlCi0jICAgICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgICBlbmRpZgotIyBlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgICAgX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyAgICAgICAgICAgIGludG1heF90OwotICAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICAgdWludG1heF90OwotICAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nICAgICAgICAgICAgaW50NjRfdDsKLSAgICAgX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyAgICAgICAgICAgIGludF9sZWFzdDY0X3Q7Ci0gICAgIF9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgICAgICAgICAgICBpbnRfZmFzdDY0X3Q7Ci0gICAgIF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgICB1aW50NjRfdDsKLSAgICAgX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgIHVpbnRfbGVhc3Q2NF90OwotICAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICAgdWludF9mYXN0NjRfdDsKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAgLy8KLSAgICAgLy8gd2UgaGF2ZSBCb3JsYW5kL0ludGVsL01pY3Jvc29mdCBfX2ludDY0OgotICAgICAvLwotICAgICB0eXBlZGVmIF9faW50NjQgICAgICAgICAgICAgaW50bWF4X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgICB1aW50bWF4X3Q7Ci0gICAgIHR5cGVkZWYgX19pbnQ2NCAgICAgICAgICAgICBpbnQ2NF90OwotICAgICB0eXBlZGVmIF9faW50NjQgICAgICAgICAgICAgaW50X2xlYXN0NjRfdDsKLSAgICAgdHlwZWRlZiBfX2ludDY0ICAgICAgICAgICAgIGludF9mYXN0NjRfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICAgIHVpbnQ2NF90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgICAgdWludF9sZWFzdDY0X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgICB1aW50X2Zhc3Q2NF90OwotIyBlbHNlIC8vIGFzc3VtZSBubyA2NC1iaXQgaW50ZWdlcnMKLSMgIGRlZmluZSBORE5CT09TVF9OT19JTlQ2NF9UCi0gICAgIHR5cGVkZWYgaW50MzJfdCAgICAgICAgICAgICAgaW50bWF4X3Q7Ci0gICAgIHR5cGVkZWYgdWludDMyX3QgICAgICAgICAgICAgdWludG1heF90OwotIyBlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9IQVNfU1RESU5UX0gKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NTVERJTlRfSFBQCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotTWFjcm8gZGVmaW5pdGlvbiBzZWN0aW9uOgotCi1BZGRlZCAyM3JkIFNlcHRlbWJlciAyMDAwIChKb2huIE1hZGRvY2spLgotTW9kaWZpZWQgMTF0aCBTZXB0ZW1iZXIgMjAwMSB0byBiZSBleGNsdWRlZCB3aGVuCi1ORE5CT09TVF9IQVNfU1RESU5UX0ggaXMgZGVmaW5lZCAoSm9obiBNYWRkb2NrKS4KLU1vZGlmaWVkIDExdGggRGVjIDIwMDkgdG8gYWx3YXlzIGRlZmluZSB0aGUKLUlOVCNfQyBtYWNyb3MgaWYgdGhleSdyZSBub3QgYWxyZWFkeSBkZWZpbmVkIChKb2huIE1hZGRvY2spLgotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9fU1REQ19DT05TVEFOVF9NQUNST1NfREVGSU5FRCkgJiYgXAotICAgKCFkZWZpbmVkKElOVDhfQykgfHwgIWRlZmluZWQoSU5UMTZfQykgfHwgIWRlZmluZWQoSU5UMzJfQykgfHwgIWRlZmluZWQoSU5UNjRfQykpCi0vLwotLy8gRm9yIHRoZSBmb2xsb3dpbmcgY29kZSB3ZSBnZXQgc2V2ZXJhbCB3YXJuaW5ncyBhbG9uZyB0aGUgbGluZXMgb2Y6IAotLy8gCi0vLyBuZG5ib29zdC9jc3RkaW50LmhwcDo0Mjg6MzU6IGVycm9yOiB1c2Ugb2YgQzk5IGxvbmcgbG9uZyBpbnRlZ2VyIGNvbnN0YW50IAotLy8gCi0vLyBTbyB3ZSBkZWNsYXJlIHRoaXMgYSBzeXN0ZW0gaGVhZGVyIHRvIHN1cHByZXNzIHRoZXNlIHdhcm5pbmdzLiAKLS8vCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDQpIAotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlciAKLSNlbmRpZiAKLQotI2luY2x1ZGUgPGxpbWl0cy5oPgotIyBkZWZpbmUgTkROQk9PU1RfX1NURENfQ09OU1RBTlRfTUFDUk9TX0RFRklORUQKLSMgaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0vLwotLy8gQm9ybGFuZC9JbnRlbC9NaWNyb3NvZnQgY29tcGlsZXJzIGhhdmUgd2lkdGggc3BlY2lmaWMgc3VmZml4ZXM6Ci0vLwotI2lmbmRlZiBJTlQ4X0MKLSMgIGRlZmluZSBJTlQ4X0ModmFsdWUpICAgICB2YWx1ZSMjaTgKLSNlbmRpZgotI2lmbmRlZiBJTlQxNl9DCi0jICBkZWZpbmUgSU5UMTZfQyh2YWx1ZSkgICAgdmFsdWUjI2kxNgotI2VuZGlmCi0jaWZuZGVmIElOVDMyX0MKLSMgIGRlZmluZSBJTlQzMl9DKHZhbHVlKSAgICB2YWx1ZSMjaTMyCi0jZW5kaWYKLSNpZm5kZWYgSU5UNjRfQwotIyAgZGVmaW5lIElOVDY0X0ModmFsdWUpICAgIHZhbHVlIyNpNjQKLSNlbmRpZgotIyAgaWZkZWYgX19CT1JMQU5EQ19fCi0gICAgLy8gQm9ybGFuZCBidWc6IGFwcGVuZGluZyB1aTggbWFrZXMgdGhlIHR5cGUgYSBzaWduZWQgY2hhcgotIyAgIGRlZmluZSBVSU5UOF9DKHZhbHVlKSAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZSMjdSkKLSMgIGVsc2UKLSMgICBkZWZpbmUgVUlOVDhfQyh2YWx1ZSkgICAgdmFsdWUjI3VpOAotIyAgZW5kaWYKLSNpZm5kZWYgVUlOVDE2X0MKLSMgIGRlZmluZSBVSU5UMTZfQyh2YWx1ZSkgICB2YWx1ZSMjdWkxNgotI2VuZGlmCi0jaWZuZGVmIFVJTlQzMl9DCi0jICBkZWZpbmUgVUlOVDMyX0ModmFsdWUpICAgdmFsdWUjI3VpMzIKLSNlbmRpZgotI2lmbmRlZiBVSU5UNjRfQwotIyAgZGVmaW5lIFVJTlQ2NF9DKHZhbHVlKSAgIHZhbHVlIyN1aTY0Ci0jZW5kaWYKLSNpZm5kZWYgSU5UTUFYX0MKLSMgIGRlZmluZSBJTlRNQVhfQyh2YWx1ZSkgICB2YWx1ZSMjaTY0Ci0jICBkZWZpbmUgVUlOVE1BWF9DKHZhbHVlKSAgdmFsdWUjI3VpNjQKLSNlbmRpZgotCi0jIGVsc2UKLS8vICBkbyBpdCB0aGUgb2xkIGZhc2hpb25lZCB3YXk6Ci0KLS8vICA4LWJpdCB0eXBlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyAgaWYgKFVDSEFSX01BWCA9PSAweGZmKSAmJiAhZGVmaW5lZChJTlQ4X0MpCi0jICAgZGVmaW5lIElOVDhfQyh2YWx1ZSkgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDhfdD4odmFsdWUpCi0jICAgZGVmaW5lIFVJTlQ4X0ModmFsdWUpIHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50OF90Pih2YWx1ZSMjdSkKLSMgIGVuZGlmCi0KLS8vICAxNi1iaXQgdHlwZXMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyAgaWYgKFVTSFJUX01BWCA9PSAweGZmZmYpICYmICFkZWZpbmVkKElOVDE2X0MpCi0jICAgZGVmaW5lIElOVDE2X0ModmFsdWUpIHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQxNl90Pih2YWx1ZSkKLSMgICBkZWZpbmUgVUlOVDE2X0ModmFsdWUpIHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50MTZfdD4odmFsdWUjI3UpCi0jICBlbmRpZgotCi0vLyAgMzItYml0IHR5cGVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jaWZuZGVmIElOVDMyX0MKLSMgIGlmIChVSU5UX01BWCA9PSAweGZmZmZmZmZmKQotIyAgIGRlZmluZSBJTlQzMl9DKHZhbHVlKSB2YWx1ZQotIyAgIGRlZmluZSBVSU5UMzJfQyh2YWx1ZSkgdmFsdWUjI3UKLSMgIGVsaWYgVUxPTkdfTUFYID09IDB4ZmZmZmZmZmYKLSMgICBkZWZpbmUgSU5UMzJfQyh2YWx1ZSkgdmFsdWUjI0wKLSMgICBkZWZpbmUgVUlOVDMyX0ModmFsdWUpIHZhbHVlIyN1TAotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyAgNjQtYml0IHR5cGVzICsgaW50bWF4X3QgYW5kIHVpbnRtYXhfdCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jaWZuZGVmIElOVDY0X0MKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgJiYgXAotICAgIChkZWZpbmVkKFVMTE9OR19NQVgpIHx8IGRlZmluZWQoVUxPTkdfTE9OR19NQVgpIHx8IGRlZmluZWQoVUxPTkdMT05HX01BWCkgfHwgZGVmaW5lZChfTExPTkdfTUFYKSkKLQotIyAgICBpZiBkZWZpbmVkKF9faHB1eCkKLSAgICAgICAgLy8gSFAtVVgncyB2YWx1ZSBvZiBVTE9OR19MT05HX01BWCBpcyB1bnVzYWJsZSBpbiBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbnMKLSMgICAgICAgZGVmaW5lIElOVDY0X0ModmFsdWUpIHZhbHVlIyNMTAotIyAgICAgICBkZWZpbmUgVUlOVDY0X0ModmFsdWUpIHZhbHVlIyN1TEwKLSMgICAgZWxpZiAoZGVmaW5lZChVTExPTkdfTUFYKSAmJiBVTExPTkdfTUFYID09IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMKSB8fCAgXAotICAgICAgICAoZGVmaW5lZChVTE9OR19MT05HX01BWCkgJiYgVUxPTkdfTE9OR19NQVggPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpIHx8ICBcCi0gICAgICAgIChkZWZpbmVkKFVMT05HTE9OR19NQVgpICYmIFVMT05HTE9OR19NQVggPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpIHx8IFwKLSAgICAgICAgKGRlZmluZWQoX0xMT05HX01BWCkgJiYgX0xMT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTCkKLQotIyAgICAgICBkZWZpbmUgSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI0xMCi0jICAgICAgIGRlZmluZSBVSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI3VMTAotIyAgICBlbHNlCi0jICAgICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgICBlbmRpZgotIyAgZWxpZiBVTE9OR19NQVggIT0gMHhmZmZmZmZmZgotCi0jICAgIGlmIFVMT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNVUgLy8gMioqNjQgLSAxCi0jICAgICAgIGRlZmluZSBJTlQ2NF9DKHZhbHVlKSB2YWx1ZSMjTAotIyAgICAgICBkZWZpbmUgVUlOVDY0X0ModmFsdWUpIHZhbHVlIyN1TAotIyAgICBlbHNlCi0jICAgICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgICBlbmRpZgotIyAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgIC8vIFVzdWFsIG1hY3JvcyBub3QgZGVmaW5lZCwgd29yayB0aGluZ3Mgb3V0IGZvciBvdXJzZWx2ZXM6Ci0jICAgIGlmKH4wdUxMID09IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMKQotIyAgICAgICBkZWZpbmUgSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI0xMCi0jICAgICAgIGRlZmluZSBVSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI3VMTAotIyAgICBlbHNlCi0jICAgICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgICBlbmRpZgotIyAgZWxzZQotIyAgICBlcnJvciBkZWZhdWx0cyBub3QgY29ycmVjdDsgeW91IG11c3QgaGFuZCBtb2RpZnkgbmRuYm9vc3QvY3N0ZGludC5ocHAKLSMgIGVuZGlmCi0KLSMgIGlmZGVmIE5ETkJPT1NUX05PX0lOVDY0X1QKLSMgICBkZWZpbmUgSU5UTUFYX0ModmFsdWUpIElOVDMyX0ModmFsdWUpCi0jICAgZGVmaW5lIFVJTlRNQVhfQyh2YWx1ZSkgVUlOVDMyX0ModmFsdWUpCi0jICBlbHNlCi0jICAgZGVmaW5lIElOVE1BWF9DKHZhbHVlKSBJTlQ2NF9DKHZhbHVlKQotIyAgIGRlZmluZSBVSU5UTUFYX0ModmFsdWUpIFVJTlQ2NF9DKHZhbHVlKQotIyAgZW5kaWYKLSNlbmRpZgotIyBlbmRpZiAvLyBCb3JsYW5kL01pY3Jvc29mdCBzcGVjaWZpYyB3aWR0aCBzdWZmaXhlcwotCi0jZW5kaWYgLy8gSU5UI19DIG1hY3Jvcy4KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jc3RkbGliLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY3N0ZGxpYi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZDEyNGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jc3RkbGliLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8vICBuZG5ib29zdC9jc3RkbGliLmhwcCBoZWFkZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMS4gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS9jc3RkbGliLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgIDI2IEZlYiAwMSAgSW5pdGlhbCB2ZXJzaW9uIChCZW1hbiBEYXdlcykKLQotI2lmbmRlZiBORE5CT09TVF9DU1RETElCX0hQUAotI2RlZmluZSBORE5CT09TVF9DU1RETElCX0hQUAotCi0jaW5jbHVkZSA8Y3N0ZGxpYj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAvLyAgVGhlIGludGVudCBpcyB0byBwcm9wb3NlIHRoZSBmb2xsb3dpbmcgZm9yIGFkZGl0aW9uIHRvIG5hbWVzcGFjZSBzdGQKLSAgIC8vICBpbiB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnksIGFuZCB0byB0aGVuIGRlcHJlY2F0ZSBFWElUX1NVQ0NFU1MgYW5kCi0gICAvLyAgRVhJVF9GQUlMVVJFLiAgQXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB0aGlzIGhlYWRlciBkZWZpbmVzIHRoZQotICAgLy8gIG5ldyBjb25zdGFudHMgaW4gdGVybXMgb2YgRVhJVF9TVUNDRVNTIGFuZCBFWElUX0ZBSUxVUkUuICBJbiBhIG5ldwotICAgLy8gIHN0YW5kYXJkLCB0aGUgY29uc3RhbnRzIHdvdWxkIGJlIGltcGxlbWVudGF0aW9uLWRlZmluZWQsIGFsdGhvdWdoIGl0Ci0gICAvLyAgbWlnaHQgYmUgd29ydGh3aGlsZSB0byAic3VnZ2VzdCIgKHdoaWNoIGEgc3RhbmRhcmQgaXMgYWxsb3dlZCB0byBkbykKLSAgIC8vICB2YWx1ZXMgb2YgMCBhbmQgMSByZXNwZWN0aXZlbHkuCi0KLSAgIC8vICBSYXRpb25hbGUgZm9yIGhhdmluZyBtdWx0aXBsZSBmYWlsdXJlIHZhbHVlczogc29tZSBlbnZpcm9ubWVudHMgbWF5Ci0gICAvLyAgd2lzaCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCBjbGFzc2VzIG9mIGVycm9ycy4KLSAgIC8vICBSYXRpb25hbGUgZm9yIGNob2ljZSBvZiB2YWx1ZXM6IHByb2dyYW1zIG9mdGVuIHVzZSB2YWx1ZXMgPCAxMDAgZm9yCi0gICAvLyAgdGhlaXIgb3duIGVycm9yIHJlcG9ydGluZy4gIFZhbHVlcyA+IDI1NSBhcmUgc29tZXRpbWVzIHJlc2VydmVkIGZvcgotICAgLy8gIHN5c3RlbSBkZXRlY3RlZCBlcnJvcnMuICAyMDAvMjAxIHdlcmUgc3VnZ2VzdGVkIHRvIG1pbmltaXplIGNvbmZsaWN0LgotCi0gICBjb25zdCBpbnQgZXhpdF9zdWNjZXNzID0gRVhJVF9TVUNDRVNTOyAgLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZCB2YWx1ZQotICAgY29uc3QgaW50IGV4aXRfZmFpbHVyZSA9IEVYSVRfRkFJTFVSRTsgIC8vIGltcGxlbWVudGF0aW9uLWRlZmluZWQgdmFsdWUKLSAgIGNvbnN0IGludCBleGl0X2V4Y2VwdGlvbl9mYWlsdXJlID0gMjAwOyAvLyBvdGhlcndpc2UgdW5jYXVnaHQgZXhjZXB0aW9uCi0gICBjb25zdCBpbnQgZXhpdF90ZXN0X2ZhaWx1cmUgPSAyMDE7ICAgICAgLy8gcmVwb3J0X2Vycm9yIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIHJlcG9ydF9jcml0aWNhbF9lcnJvciBjYWxsZWQuCi19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTExZjlmYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcCAtIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvY3VycmVudF9mdW5jdGlvbi5odG1sCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCBjdXJyZW50X2Z1bmN0aW9uX2hlbHBlcigpCi17Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCAoZGVmaW5lZChfX01XRVJLU19fKSAmJiAoX19NV0VSS1NfXyA+PSAweDMwMDApKSB8fCAoZGVmaW5lZChfX0lDQykgJiYgKF9fSUNDID49IDYwMCkpIHx8IGRlZmluZWQoX19naHNfXykKLQotIyBkZWZpbmUgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiBfX1BSRVRUWV9GVU5DVElPTl9fCi0KLSNlbGlmIGRlZmluZWQoX19ETUNfXykgJiYgKF9fRE1DX18gPj0gMHg4MTApCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04gX19QUkVUVFlfRlVOQ1RJT05fXwotCi0jZWxpZiBkZWZpbmVkKF9fRlVOQ1NJR19fKQotCi0jIGRlZmluZSBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OIF9fRlVOQ1NJR19fCi0KLSNlbGlmIChkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmIChfX0lOVEVMX0NPTVBJTEVSID49IDYwMCkpIHx8IChkZWZpbmVkKF9fSUJNQ1BQX18pICYmIChfX0lCTUNQUF9fID49IDUwMCkpCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04gX19GVU5DVElPTl9fCi0KLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID49IDB4NTUwKQotCi0jIGRlZmluZSBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OIF9fRlVOQ19fCi0KLSNlbGlmIGRlZmluZWQoX19TVERDX1ZFUlNJT05fXykgJiYgKF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxKQotCi0jIGRlZmluZSBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OIF9fZnVuY19fCi0KLSNlbHNlCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04gIih1bmtub3duKSIKLQotI2VuZGlmCi0KLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT05fSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2JpbmFyeV9zZWFyY2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvYmluYXJ5X3NlYXJjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NjMyNjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvYmluYXJ5X3NlYXJjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChjKSAgMjAwMCBEYXZpZCBBYnJhaGFtcy4gCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vIAotLy8gQ29weXJpZ2h0IChjKSAxOTk0Ci0vLyBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotLy8gCi0vLyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUKLS8vIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsCi0vLyBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZAotLy8gdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIKLS8vIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4gIEhld2xldHQtUGFja2FyZCBDb21wYW55IG1ha2VzIG5vCi0vLyByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueQotLy8gcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCi0vLyAKLS8vIENvcHlyaWdodCAoYykgMTk5NgotLy8gU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1zLCBJbmMuCi0vLyAKLS8vIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZQotLy8gYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwKLS8vIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kCi0vLyB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhcgotLy8gaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLiAgU2lsaWNvbiBHcmFwaGljcyBtYWtlcyBubwotLy8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLS8vIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgotLy8gCi0jaWZuZGVmIEJJTkFSWV9TRUFSQ0hfTkROQk9PU1RfRFdBXzEyMjYwMF9IXwotIyBkZWZpbmUgQklOQVJZX1NFQVJDSF9ORE5CT09TVF9EV0FfMTIyNjAwX0hfCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2l0ZXJhdG9yLmhwcD4KLSMgaW5jbHVkZSA8dXRpbGl0eT4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlciwgY2xhc3MgVHA+Ci1Gb3J3YXJkSXRlciBsb3dlcl9ib3VuZChGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHAmIHZhbCkgCi17Ci0gICAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotICAgIAotICAgIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgICB0eXBlbmFtZSB0cmFpdHM6OmRpZmZlcmVuY2VfdHlwZSBoYWxmOwotICAgIEZvcndhcmRJdGVyIG1pZGRsZTsKLQotICAgIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgICBoYWxmID0gbGVuID4+IDE7Ci0gICAgICBtaWRkbGUgPSBmaXJzdDsKLSAgICAgIHN0ZDo6YWR2YW5jZShtaWRkbGUsIGhhbGYpOwotICAgICAgaWYgKCptaWRkbGUgPCB2YWwpIHsKLSAgICAgICAgZmlyc3QgPSBtaWRkbGU7Ci0gICAgICAgICsrZmlyc3Q7Ci0gICAgICAgIGxlbiA9IGxlbiAtIGhhbGYgLSAxOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBsZW4gPSBoYWxmOwotICAgIH0KLSAgICByZXR1cm4gZmlyc3Q7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlciwgY2xhc3MgVHAsIGNsYXNzIENvbXBhcmU+Ci1Gb3J3YXJkSXRlciBsb3dlcl9ib3VuZChGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRwJiB2YWwsIENvbXBhcmUgY29tcCkKLXsKLSAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotCi0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgaGFsZjsKLSAgRm9yd2FyZEl0ZXIgbWlkZGxlOwotCi0gIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgaGFsZiA9IGxlbiA+PiAxOwotICAgIG1pZGRsZSA9IGZpcnN0OwotICAgIHN0ZDo6YWR2YW5jZShtaWRkbGUsIGhhbGYpOwotICAgIGlmIChjb21wKCptaWRkbGUsIHZhbCkpIHsKLSAgICAgIGZpcnN0ID0gbWlkZGxlOwotICAgICAgKytmaXJzdDsKLSAgICAgIGxlbiA9IGxlbiAtIGhhbGYgLSAxOwotICAgIH0KLSAgICBlbHNlCi0gICAgICBsZW4gPSBoYWxmOwotICB9Ci0gIHJldHVybiBmaXJzdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcD4KLUZvcndhcmRJdGVyIHVwcGVyX2JvdW5kKEZvcndhcmRJdGVyIGZpcnN0LCBGb3J3YXJkSXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHAmIHZhbCkKLXsKLSAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotCi0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgaGFsZjsKLSAgRm9yd2FyZEl0ZXIgbWlkZGxlOwotCi0gIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgaGFsZiA9IGxlbiA+PiAxOwotICAgIG1pZGRsZSA9IGZpcnN0OwotICAgIHN0ZDo6YWR2YW5jZShtaWRkbGUsIGhhbGYpOwotICAgIGlmICh2YWwgPCAqbWlkZGxlKQotICAgICAgbGVuID0gaGFsZjsKLSAgICBlbHNlIHsKLSAgICAgIGZpcnN0ID0gbWlkZGxlOwotICAgICAgKytmaXJzdDsKLSAgICAgIGxlbiA9IGxlbiAtIGhhbGYgLSAxOwotICAgIH0KLSAgfQotICByZXR1cm4gZmlyc3Q7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlciwgY2xhc3MgVHAsIGNsYXNzIENvbXBhcmU+Ci1Gb3J3YXJkSXRlciB1cHBlcl9ib3VuZChGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRwJiB2YWwsIENvbXBhcmUgY29tcCkKLXsKLSAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotCi0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgaGFsZjsKLSAgRm9yd2FyZEl0ZXIgbWlkZGxlOwotCi0gIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgaGFsZiA9IGxlbiA+PiAxOwotICAgIG1pZGRsZSA9IGZpcnN0OwotICAgIHN0ZDo6YWR2YW5jZShtaWRkbGUsIGhhbGYpOwotICAgIGlmIChjb21wKHZhbCwgKm1pZGRsZSkpCi0gICAgICBsZW4gPSBoYWxmOwotICAgIGVsc2UgewotICAgICAgZmlyc3QgPSBtaWRkbGU7Ci0gICAgICArK2ZpcnN0OwotICAgICAgbGVuID0gbGVuIC0gaGFsZiAtIDE7Ci0gICAgfQotICB9Ci0gIHJldHVybiBmaXJzdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcD4KLXN0ZDo6cGFpcjxGb3J3YXJkSXRlciwgRm9yd2FyZEl0ZXI+Ci1lcXVhbF9yYW5nZShGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwgY29uc3QgVHAmIHZhbCkKLXsKLSAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotCi0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgaGFsZjsKLSAgRm9yd2FyZEl0ZXIgbWlkZGxlLCBsZWZ0LCByaWdodDsKLQotICB3aGlsZSAobGVuID4gMCkgewotICAgIGhhbGYgPSBsZW4gPj4gMTsKLSAgICBtaWRkbGUgPSBmaXJzdDsKLSAgICBzdGQ6OmFkdmFuY2UobWlkZGxlLCBoYWxmKTsKLSAgICBpZiAoKm1pZGRsZSA8IHZhbCkgewotICAgICAgZmlyc3QgPSBtaWRkbGU7Ci0gICAgICArK2ZpcnN0OwotICAgICAgbGVuID0gbGVuIC0gaGFsZiAtIDE7Ci0gICAgfQotICAgIGVsc2UgaWYgKHZhbCA8ICptaWRkbGUpCi0gICAgICBsZW4gPSBoYWxmOwotICAgIGVsc2UgewotICAgICAgbGVmdCA9IG5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2JvdW5kKGZpcnN0LCBtaWRkbGUsIHZhbCk7Ci0gICAgICBzdGQ6OmFkdmFuY2UoZmlyc3QsIGxlbik7Ci0gICAgICByaWdodCA9IG5kbmJvb3N0OjpkZXRhaWw6OnVwcGVyX2JvdW5kKCsrbWlkZGxlLCBmaXJzdCwgdmFsKTsKLSAgICAgIHJldHVybiBzdGQ6OnBhaXI8Rm9yd2FyZEl0ZXIsIEZvcndhcmRJdGVyPihsZWZ0LCByaWdodCk7Ci0gICAgfQotICB9Ci0gIHJldHVybiBzdGQ6OnBhaXI8Rm9yd2FyZEl0ZXIsIEZvcndhcmRJdGVyPihmaXJzdCwgZmlyc3QpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRm9yd2FyZEl0ZXIsIGNsYXNzIFRwLCBjbGFzcyBDb21wYXJlPgotc3RkOjpwYWlyPEZvcndhcmRJdGVyLCBGb3J3YXJkSXRlcj4KLWVxdWFsX3JhbmdlKEZvcndhcmRJdGVyIGZpcnN0LCBGb3J3YXJkSXRlciBsYXN0LCBjb25zdCBUcCYgdmFsLAotICAgICAgICAgICAgICBDb21wYXJlIGNvbXApCi17Ci0gIHR5cGVkZWYgZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXI+IHRyYWl0czsKLQotICB0eXBlbmFtZSB0cmFpdHM6OmRpZmZlcmVuY2VfdHlwZSBsZW4gPSBuZG5ib29zdDo6ZGV0YWlsOjpkaXN0YW5jZShmaXJzdCwgbGFzdCk7Ci0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGhhbGY7Ci0gIEZvcndhcmRJdGVyIG1pZGRsZSwgbGVmdCwgcmlnaHQ7Ci0KLSAgd2hpbGUgKGxlbiA+IDApIHsKLSAgICBoYWxmID0gbGVuID4+IDE7Ci0gICAgbWlkZGxlID0gZmlyc3Q7Ci0gICAgc3RkOjphZHZhbmNlKG1pZGRsZSwgaGFsZik7Ci0gICAgaWYgKGNvbXAoKm1pZGRsZSwgdmFsKSkgewotICAgICAgZmlyc3QgPSBtaWRkbGU7Ci0gICAgICArK2ZpcnN0OwotICAgICAgbGVuID0gbGVuIC0gaGFsZiAtIDE7Ci0gICAgfQotICAgIGVsc2UgaWYgKGNvbXAodmFsLCAqbWlkZGxlKSkKLSAgICAgIGxlbiA9IGhhbGY7Ci0gICAgZWxzZSB7Ci0gICAgICBsZWZ0ID0gbmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYm91bmQoZmlyc3QsIG1pZGRsZSwgdmFsLCBjb21wKTsKLSAgICAgIHN0ZDo6YWR2YW5jZShmaXJzdCwgbGVuKTsKLSAgICAgIHJpZ2h0ID0gbmRuYm9vc3Q6OmRldGFpbDo6dXBwZXJfYm91bmQoKyttaWRkbGUsIGZpcnN0LCB2YWwsIGNvbXApOwotICAgICAgcmV0dXJuIHN0ZDo6cGFpcjxGb3J3YXJkSXRlciwgRm9yd2FyZEl0ZXI+KGxlZnQsIHJpZ2h0KTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHN0ZDo6cGFpcjxGb3J3YXJkSXRlciwgRm9yd2FyZEl0ZXI+KGZpcnN0LCBmaXJzdCk7Ci19ICAgICAgICAgICAKLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcD4KLWJvb2wgYmluYXJ5X3NlYXJjaChGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBUcCYgdmFsKSB7Ci0gIEZvcndhcmRJdGVyIGkgPSBuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9ib3VuZChmaXJzdCwgbGFzdCwgdmFsKTsKLSAgcmV0dXJuIGkgIT0gbGFzdCAmJiAhKHZhbCA8ICppKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcCwgY2xhc3MgQ29tcGFyZT4KLWJvb2wgYmluYXJ5X3NlYXJjaChGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBUcCYgdmFsLAotICAgICAgICAgICAgICAgICAgIENvbXBhcmUgY29tcCkgewotICBGb3J3YXJkSXRlciBpID0gbmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYm91bmQoZmlyc3QsIGxhc3QsIHZhbCwgY29tcCk7Ci0gIHJldHVybiBpICE9IGxhc3QgJiYgIWNvbXAodmFsLCAqaSk7Ci19Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZGV0YWlsCi0KLSNlbmRpZiAvLyBCSU5BUllfU0VBUkNIX05ETkJPT1NUX0RXQV8xMjI2MDBfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2JpdG1hc2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvYml0bWFzay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ZGNlNGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvYml0bWFzay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vLyAgbmRuYm9vc3QvZGV0YWlsL2JpdG1hc2suaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDYKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgVXNhZ2U6ICBlbnVtIGZvbyB7IGE9MSwgYj0yLCBjPTQgfTsKLS8vICAgICAgICAgIE5ETkJPT1NUX0JJVE1BU0soIGZvbyApOwotLy8KLS8vICAgICAgICAgIHZvaWQgZiggZm9vIGFyZyApOwotLy8gICAgICAgICAgLi4uCi0vLyAgICAgICAgICBmKCBhIHwgYyApOwotCi0jaWZuZGVmIE5ETkJPT1NUX0JJVE1BU0tfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0JJVE1BU0tfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9CSVRNQVNLKEJpdG1hc2spICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgb3BlcmF0b3J8IChCaXRtYXNrIHggLCBCaXRtYXNrIHkgKSAgICAgICAgICAgICAgICAgICAgICAgXAotICB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXRtYXNrPiggc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludF9sZWFzdDMyX3Q+KHgpICAgICBcCi0gICAgICB8IHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnRfbGVhc3QzMl90Pih5KSk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbmxpbmUgQml0bWFzayBvcGVyYXRvciYgKEJpdG1hc2sgeCAsIEJpdG1hc2sgeSApICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpdG1hc2s+KCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50X2xlYXN0MzJfdD4oeCkgICAgIFwKLSAgICAgICYgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludF9sZWFzdDMyX3Q+KHkpKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlubGluZSBCaXRtYXNrIG9wZXJhdG9yXiAoQml0bWFzayB4ICwgQml0bWFzayB5ICkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFzaz4oIHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnRfbGVhc3QzMl90Pih4KSAgICAgXAotICAgICAgXiBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50X2xlYXN0MzJfdD4oeSkpOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgb3BlcmF0b3J+IChCaXRtYXNrIHggKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXRtYXNrPih+c3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludF9sZWFzdDMyX3Q+KHgpKTsgfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgJiBvcGVyYXRvciY9KEJpdG1hc2sgJiB4ICwgQml0bWFzayB5KSAgICAgICAgICAgICAgICAgICAgXAotICB7IHggPSB4ICYgeSA7IHJldHVybiB4IDsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgJiBvcGVyYXRvcnw9KEJpdG1hc2sgJiB4ICwgQml0bWFzayB5KSAgICAgICAgICAgICAgICAgICAgXAotICB7IHggPSB4IHwgeSA7IHJldHVybiB4IDsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgJiBvcGVyYXRvcl49KEJpdG1hc2sgJiB4ICwgQml0bWFzayB5KSAgICAgICAgICAgICAgICAgICAgXAotICB7IHggPSB4IF4geSA7IHJldHVybiB4IDsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0JJVE1BU0tfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEwZjRhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9jYWxsX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eSBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gY2FsbF90cmFpdHM6IGRlZmluZXMgdHlwZWRlZnMgZm9yIGZ1bmN0aW9uIHVzYWdlCi0vLyAoc2VlIGxpYnMvdXRpbGl0eS9jYWxsX3RyYWl0cy5odG0pCi0KLS8qIFJlbGVhc2Ugbm90ZXM6Ci0gICAyM3JkIEp1bHkgMjAwMDoKLSAgICAgIEZpeGVkIGFycmF5IHNwZWNpYWxpemF0aW9uLiAoSk0pCi0gICAgICBBZGRlZCBCb3JsYW5kIHNwZWNpZmljIGZpeGVzIGZvciByZWZlcmVuY2UgdHlwZXMKLSAgICAgIChpc3N1ZSByYWlzZWQgYnkgU3RldmUgQ2xlYXJ5KS4KLSovCi0KLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX0NBTExfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ0FMTF9UUkFJVFNfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIHNtYWxsXz4KLXN0cnVjdCBjdF9pbXAyCi17Ci0gICB0eXBlZGVmIGNvbnN0IFQmIHBhcmFtX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjdF9pbXAyPFQsIHRydWU+Ci17Ci0gICB0eXBlZGVmIGNvbnN0IFQgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzcCwgYm9vbCBiMSwgYm9vbCBiMj4KLXN0cnVjdCBjdF9pbXAKLXsKLSAgIHR5cGVkZWYgY29uc3QgVCYgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzcCwgYm9vbCBiMj4KLXN0cnVjdCBjdF9pbXA8VCwgaXNwLCB0cnVlLCBiMj4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgY3RfaW1wMjxULCBzaXplb2YoVCkgPD0gc2l6ZW9mKHZvaWQqKT46OnBhcmFtX3R5cGUgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzcCwgYm9vbCBiMT4KLXN0cnVjdCBjdF9pbXA8VCwgaXNwLCBiMSwgdHJ1ZT4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgY3RfaW1wMjxULCBzaXplb2YoVCkgPD0gc2l6ZW9mKHZvaWQqKT46OnBhcmFtX3R5cGUgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGIxLCBib29sIGIyPgotc3RydWN0IGN0X2ltcDxULCB0cnVlLCBiMSwgYjI+Ci17Ci0gICB0eXBlZGVmIGNvbnN0IFQgcGFyYW1fdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHMKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IFQmIGNvbnN0X3JlZmVyZW5jZTsKLSAgIC8vCi0gICAvLyBDKysgQnVpbGRlciB3b3JrYXJvdW5kOiB3ZSBzaG91bGQgYmUgYWJsZSB0byBkZWZpbmUgYSBjb21waWxlIHRpbWUKLSAgIC8vIGNvbnN0YW50IGFuZCBwYXNzIHRoYXQgYXMgYSBzaW5nbGUgdGVtcGxhdGUgcGFyYW1ldGVyIHRvIGN0X2ltcDxULGJvb2w+LAotICAgLy8gaG93ZXZlciBjb21waWxlciBidWdzIHByZXZlbnQgdGhpcyAtIGluc3RlYWQgcGFzcyB0aHJlZSBib29sJ3MgdG8KLSAgIC8vIGN0X2ltcDxULGJvb2wsYm9vbCxib29sPiBhbmQgYWRkIGFuIGV4dHJhIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24KLSAgIC8vIG9mIGN0X2ltcCB0byBoYW5kbGUgdGhlIGxvZ2ljLiAoSk0pCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmN0X2ltcDwKLSAgICAgIFQsCi0gICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZSwKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLAotICAgICAgOjpuZG5ib29zdDo6aXNfZW51bTxUPjo6dmFsdWUKLSAgID46OnBhcmFtX3R5cGUgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGNhbGxfdHJhaXRzPFQmPgotewotICAgdHlwZWRlZiBUJiB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IFQmIGNvbnN0X3JlZmVyZW5jZTsKLSAgIHR5cGVkZWYgVCYgcGFyYW1fdHlwZTsgIC8vIGhoIHJlbW92ZWQgY29uc3QKLX07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sICA8IDB4NUEwICkKLS8vIHRoZXNlIGFyZSBpbGxlZ2FsIHNwZWNpYWxpc2F0aW9uczsgY3YtcXVhbGlmaWVzIGFwcGxpZWQgdG8KLS8vIHJlZmVyZW5jZXMgaGF2ZSBubyBlZmZlY3QgYWNjb3JkaW5nIHRvIFs4LjMuMnAxXSwKLS8vIEMrKyBCdWlsZGVyIHJlcXVpcmVzIHRoZW0gdGhvdWdoIGFzIGl0IHRyZWF0cyBjdi1xdWFsaWZpZWQKLS8vIHJlZmVyZW5jZXMgYXMgZGlzdGluY3QgdHlwZXMuLi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGNhbGxfdHJhaXRzPFQmY29uc3Q+Ci17Ci0gICB0eXBlZGVmIFQmIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBUJiBwYXJhbV90eXBlOyAgLy8gaGggcmVtb3ZlZCBjb25zdAotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGNhbGxfdHJhaXRzPFQmdm9sYXRpbGU+Ci17Ci0gICB0eXBlZGVmIFQmIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBUJiBwYXJhbV90eXBlOyAgLy8gaGggcmVtb3ZlZCBjb25zdAotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGNhbGxfdHJhaXRzPFQmY29uc3Qgdm9sYXRpbGU+Ci17Ci0gICB0eXBlZGVmIFQmIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBUJiBwYXJhbV90eXBlOyAgLy8gaGggcmVtb3ZlZCBjb25zdAotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHM8IFQgKiA+Ci17Ci0gICB0eXBlZGVmIFQgKiB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBUICogJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIFQgKiBjb25zdCAmIGNvbnN0X3JlZmVyZW5jZTsKLSAgIHR5cGVkZWYgVCAqIGNvbnN0IHBhcmFtX3R5cGU7ICAvLyBoaCByZW1vdmVkIGNvbnN0Ci19OwotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBjYWxsX3RyYWl0czxUIFtOXT4KLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIFQgYXJyYXlfdHlwZVtOXTsKLXB1YmxpYzoKLSAgIC8vIGRlZ3JhZGVzIGFycmF5IHRvIHBvaW50ZXI6Ci0gICB0eXBlZGVmIGNvbnN0IFQqIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIGFycmF5X3R5cGUmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgYXJyYXlfdHlwZSYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUKiBjb25zdCBwYXJhbV90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgY2FsbF90cmFpdHM8Y29uc3QgVCBbTl0+Ci17Ci1wcml2YXRlOgotICAgdHlwZWRlZiBjb25zdCBUIGFycmF5X3R5cGVbTl07Ci1wdWJsaWM6Ci0gICAvLyBkZWdyYWRlcyBhcnJheSB0byBwb2ludGVyOgotICAgdHlwZWRlZiBjb25zdCBUKiB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBhcnJheV90eXBlJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IGFycmF5X3R5cGUmIGNvbnN0X3JlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCogY29uc3QgcGFyYW1fdHlwZTsKLX07Ci0jZW5kaWYKLQotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfREVUQUlMX0NBTExfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvY29udGFpbmVyX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9jb250YWluZXJfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA4MWYwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9jb250YWluZXJfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMTEgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIE5vdGU6IGlmIHlvdSBjaGFuZ2UgdGhpcyBpbmNsdWRlIGd1YXJkLCB5b3UgYWxzbyBuZWVkIHRvIGNoYW5nZQotLy8gY29udGFpbmVyX2Z3ZF9jb21waWxlX2ZhaWwuY3BwCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfREVUQUlMX0NPTlRBSU5FUl9GV0RfSFBQKQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09OVEFJTkVSX0ZXRF9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKSAmJiBcCi0gICAgIWRlZmluZWQoTkROQk9PU1RfREVUQUlMX1RFU1RfQ09ORklHX09OTFkpCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vIERlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fQ09OVEFJTkVSX0ZXRCBpZiB5b3UgZG9uJ3Qgd2FudCB0aGlzIGhlYWRlciB0byAgICAgIC8vCi0vLyBmb3J3YXJkIGRlY2xhcmUgc3RhbmRhcmQgY29udGFpbmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vIE5ETkJPT1NUX0RFVEFJTF9DT05UQUlORVJfRldEIHRvIG1ha2UgaXQgZm93YXJkIGRlY2xhcmUgY29udGFpbmVycyBldmVuIGlmIGl0IC8vCi0vLyBub3JtYWxseSBkb2Vzbid0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vIE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldEIG92ZXJyaWRlcyBORE5CT09TVF9ERVRBSUxfQ09OVEFJTkVSX0ZXRC4gICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldEKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9ERVRBSUxfQ09OVEFJTkVSX0ZXRCkKLSAgICAgLy8gRm9yY2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCi0jICBlbGlmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLSAgICAgLy8gU1RMcG9ydAotIyAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgIGVsaWYgZGVmaW5lZChfX0xJQkNPTU9fXykKLSAgICAgLy8gQ29tZWF1IFNUTDoKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldECi0jICBlbGlmIGRlZmluZWQoX19TVERfUldDT01QSUxFUl9IX18pIHx8IGRlZmluZWQoX1JXU1REX1ZFUikKLSAgICAgLy8gUm9ndWUgV2F2ZSBsaWJyYXJ5OgotIyAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgIGVsaWYgZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCi0gICAgIC8vIGxpYmMrKwotIyAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgIGVsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykKLSAgICAgLy8gR05VIGxpYnN0ZGMrKyAzCi0gICAgIC8vCi0gICAgIC8vIERpc2FibGUgZm9yd2FyZGluZyBmb3IgYWxsIHJlY2VudCB2ZXJzaW9ucywgYXMgdGhlIGxpYnJhcnkgaGFzIGEKLSAgICAgLy8gdmVyc2lvbmVkIG5hbWVzcGFjZSBtb2RlLCBhbmQgSSBkb24ndCBrbm93IGhvdyB0byBkZXRlY3QgaXQuCi0jICAgIGlmIF9fR0xJQkNYWF9fID49IDIwMDcwNTEzIFwKLSAgICAgICAgfHwgZGVmaW5lZChfR0xJQkNYWF9ERUJVRykgXAotICAgICAgICB8fCBkZWZpbmVkKF9HTElCQ1hYX1BBUkFMTEVMKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX0dMSUJDWFhfUFJPRklMRSkKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgICAgZWxzZQotIyAgICAgIGlmIGRlZmluZWQoX19HTElCQ1hYX18pICYmIF9fR0xJQkNYWF9fID49IDIwMDQwNTMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfQ09OVEFJTkVSX0ZXRF9DT01QTEVYX1NUUlVDVAotIyAgICAgIGVuZGlmCi0jICAgIGVuZGlmCi0jICBlbGlmIGRlZmluZWQoX19TVExfQ09ORklHX0gpCi0gICAgIC8vIGdlbmVyaWMgU0dJIFNUTAotICAgICAvLwotICAgICAvLyBGb3J3YXJkIGRlY2xhcmF0aW9uIHNlZW1zIHRvIGJlIG9rYXksIGJ1dCBpdCBoYXMgYSBjb3VwbGUgb2Ygb2RkCi0gICAgIC8vIGltcGxlbWVudGF0aW9ucy4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0NPTlRBSU5FUl9GV0RfQkFEX0JJVFNFVAotIyAgICBpZiAhZGVmaW5lZChfX1NUTF9OT05fVFlQRV9UTVBMX1BBUkFNX0JVRykKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfQ09OVEFJTkVSX0ZXRF9CQURfREVRVUUKLSMgICAgIGVuZGlmCi0jICBlbGlmIGRlZmluZWQoX19NU0xfQ1BQX18pCi0gICAgIC8vIE1TTCBzdGFuZGFyZCBsaWI6Ci0jICAgIGRlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fQ09OVEFJTkVSX0ZXRAotIyAgZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pCi0gICAgIC8vIFRoZSBkZWZhdWx0IFZBQ1BQIHN0ZCBsaWIsIGZvcndhcmQgZGVjbGFyYXRpb24gc2VlbXMgdG8gYmUgZmluZS4KLSMgIGVsaWYgZGVmaW5lZChNU0lQTF9DT01QSUxFX0gpCi0gICAgIC8vIE1vZGVuYSBDKysgc3RhbmRhcmQgbGlicmFyeQotIyAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgIGVsaWYgKGRlZmluZWQoX1lWQUxTKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSkgfHwgZGVmaW5lZChfQ1BQTElCX1ZFUikKLSAgICAgLy8gRGlua3Vtd2FyZSBMaWJyYXJ5ICh0aGlzIGhhcyB0byBhcHBlYXIgYWZ0ZXIgYW55IHBvc3NpYmxlIHJlcGxhY2VtZW50Ci0gICAgIC8vIGxpYnJhcmllcykKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldECi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9ERVRBSUxfVEVTVF9DT05GSUdfT05MWSkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QpICYmIFwKLSAgICAhZGVmaW5lZChORE5CT09TVF9ERVRBSUxfVEVTVF9GT1JDRV9DT05UQUlORVJfRldEKQotCi0jaW5jbHVkZSA8ZGVxdWU+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDxiaXRzZXQ+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGNvbXBsZXg+Ci0KLSNlbHNlCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9DT05UQUlORVJfRldEX0JBRF9ERVFVRSkKLSNpbmNsdWRlIDxkZXF1ZT4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9DT05UQUlORVJfRldEX0JBRF9CSVRTRVQpCi0jaW5jbHVkZSA8Yml0c2V0PgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQwOTkpIC8vIHN0cnVjdC9jbGFzcyBtaXNtYXRjaCBpbiBmd2QgZGVjbGFyYXRpb25zCi0jZW5kaWYKLQotbmFtZXNwYWNlIHN0ZAotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBhbGxvY2F0b3I7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4gY2xhc3MgYmFzaWNfc3RyaW5nOwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSAmJiAhZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgJiYgIWRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4gc3RydWN0IHN0cmluZ19jaGFyX3RyYWl0czsKLSNlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPiBzdHJ1Y3QgY2hhcl90cmFpdHM7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQ09OVEFJTkVSX0ZXRF9DT01QTEVYX1NUUlVDVCkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGNvbXBsZXg7Ci0jZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBjb21wbGV4OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9DT05UQUlORVJfRldEX0JBRF9ERVFVRSkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yPiBjbGFzcyBkZXF1ZTsKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvcj4gY2xhc3MgbGlzdDsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yPiBjbGFzcyB2ZWN0b3I7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgQ29tcGFyZSwgY2xhc3MgQWxsb2NhdG9yPiBjbGFzcyBtYXA7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgQ29tcGFyZSwgY2xhc3MgQWxsb2NhdG9yPgotICAgIGNsYXNzIG11bHRpbWFwOwotICAgIHRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIENvbXBhcmUsIGNsYXNzIEFsbG9jYXRvcj4gY2xhc3Mgc2V0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIENvbXBhcmUsIGNsYXNzIEFsbG9jYXRvcj4gY2xhc3MgbXVsdGlzZXQ7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9DT05UQUlORVJfRldEX0JBRF9CSVRTRVQpCi0gICAgdGVtcGxhdGUgPHNpemVfdCBOPiBjbGFzcyBiaXRzZXQ7Ci0jZW5kaWYKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdHJ1Y3QgcGFpcjsKLX0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldEICYmCi0gICAgICAgLy8gIWRlZmluZWQoTkROQk9PU1RfREVUQUlMX1RFU1RfRk9SQ0VfQ09OVEFJTkVSX0ZXRCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0RFVEFJTF9URVNUX0NPTkZJR19PTkxZCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvZW5kaWFuLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2VuZGlhbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwN2JkMDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvZW5kaWFuLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSBDYWxlYiBFcHN0ZWluCi0vLyBDb3B5cmlnaHQgMjAwNiBKb2huIE1hZGRvY2sKLS8vIENvcHlyaWdodCAyMDEwIFJlbmUgUml2ZXJhCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55LQotLy8gaW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vKgotICogQ29weXJpZ2h0IChjKSAxOTk3Ci0gKiBTaWxpY29uIEdyYXBoaWNzIENvbXB1dGVyIFN5c3RlbXMsIEluYy4KLSAqCi0gKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUKLSAqIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsCi0gKiBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZAotICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIKLSAqIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4gIFNpbGljb24gR3JhcGhpY3MgbWFrZXMgbm8KLSAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0gKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KLSAqLwotCi0vKgotICogQ29weXJpZ2h0IG5vdGljZSByZXByb2R1Y2VkIGZyb20gPG5kbmJvb3N0L2RldGFpbC9saW1pdHMuaHBwPiwgZnJvbQotICogd2hpY2ggdGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IHRha2VuLgotICoKLSAqIE1vZGlmaWVkIGJ5IENhbGViIEVwc3RlaW4gdG8gdXNlIDxlbmRpYW4uaD4gd2l0aCBHTlUgbGliYyBhbmQgdG8KLSAqIGRlZmluZWQgdGhlIE5ETkJPT1NUX0VORElBTiBtYWNyby4KLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9FTkRJQU5fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9FTkRJQU5fSFBQCi0KLS8vCi0vLyBTcGVjaWFsIGNhc2VzIGNvbWUgZmlyc3Q6Ci0vLwotI2lmIGRlZmluZWQgKF9fR0xJQkNfXykKLS8vIEdOVSBsaWJjIG9mZmVycyB0aGUgaGVscGZ1bCBoZWFkZXIgPGVuZGlhbi5oPiB3aGljaCBkZWZpbmVzCi0vLyBfX0JZVEVfT1JERVIKLSMgaW5jbHVkZSA8ZW5kaWFuLmg+Ci0jIGlmIChfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQotIyAgZGVmaW5lIE5ETkJPT1NUX0xJVFRMRV9FTkRJQU4KLSMgZWxpZiAoX19CWVRFX09SREVSID09IF9fQklHX0VORElBTikKLSMgIGRlZmluZSBORE5CT09TVF9CSUdfRU5ESUFOCi0jIGVsaWYgKF9fQllURV9PUkRFUiA9PSBfX1BEUF9FTkRJQU4pCi0jICBkZWZpbmUgTkROQk9PU1RfUERQX0VORElBTgotIyBlbHNlCi0jICBlcnJvciBVbmtub3duIG1hY2hpbmUgZW5kaWFubmVzcyBkZXRlY3RlZC4KLSMgZW5kaWYKLSMgZGVmaW5lIE5ETkJPT1NUX0JZVEVfT1JERVIgX19CWVRFX09SREVSCi0KLSNlbGlmIGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgXAotICAgIGRlZmluZWQoX19PcGVuQlNEX18pIHx8IChfX0RyYWdvbkZseV9fKQotLy8KLS8vIEJTRCBoYXMgZW5kaWFuLmgsIHNlZSBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvNjAxMwotIyAgaWYgZGVmaW5lZChfX09wZW5CU0RfXykKLSMgIGluY2x1ZGUgPG1hY2hpbmUvZW5kaWFuLmg+Ci0jICBlbHNlCi0jICBpbmNsdWRlIDxzeXMvZW5kaWFuLmg+Ci0jICBlbmRpZgotIyBpZiAoX0JZVEVfT1JERVIgPT0gX0xJVFRMRV9FTkRJQU4pCi0jICBkZWZpbmUgTkROQk9PU1RfTElUVExFX0VORElBTgotIyBlbGlmIChfQllURV9PUkRFUiA9PSBfQklHX0VORElBTikKLSMgIGRlZmluZSBORE5CT09TVF9CSUdfRU5ESUFOCi0jIGVsaWYgKF9CWVRFX09SREVSID09IF9QRFBfRU5ESUFOKQotIyAgZGVmaW5lIE5ETkJPT1NUX1BEUF9FTkRJQU4KLSMgZWxzZQotIyAgZXJyb3IgVW5rbm93biBtYWNoaW5lIGVuZGlhbm5lc3MgZGV0ZWN0ZWQuCi0jIGVuZGlmCi0jIGRlZmluZSBORE5CT09TVF9CWVRFX09SREVSIF9CWVRFX09SREVSCi0KLSNlbGlmIGRlZmluZWQoIF9fQU5EUk9JRF9fICkKLS8vIEFkcm9pZCBzcGVjaWZpYyBjb2RlLCBzZWU6IGh0dHBzOi8vc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L3RpY2tldC83NTI4Ci0vLyBIZXJlIHdlIGNhbiB1c2UgbWFjaGluZS9fdHlwZXMuaCwgc2VlOgotLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MjEyOTUxL2VuZGlhbm5lc3Mtb2YtYW5kcm9pZC1uZGsKLSMgaW5jbHVkZSAibWFjaGluZS9fdHlwZXMuaCIKLSMgaWZkZWYgX19BUk1FQl9fCi0jICBkZWZpbmUgTkROQk9PU1RfQklHX0VORElBTgotIyAgZGVmaW5lIE5ETkJPT1NUX0JZVEVfT1JERVIgNDMyMQotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTElUVExFX0VORElBTgotIyAgZGVmaW5lIE5ETkJPT1NUX0JZVEVfT1JERVIgMTIzNAotIyBlbmRpZiAvLyBfX0FSTUVCX18KLQotI2VsaWYgZGVmaW5lZCggX1hCT1ggKQotLy8KLS8vIFhCb3ggaXMgYWx3YXlzIGJpZyBlbmRpYW4/PwotLy8KLSMgZGVmaW5lIE5ETkJPT1NUX0JJR19FTkRJQU4KLSMgZGVmaW5lIE5ETkJPT1NUX0JZVEVfT1JERVIgNDMyMQotCi0jZWxpZiBkZWZpbmVkKF9CSUdfRU5ESUFOKSAmJiAhZGVmaW5lZChfTElUVExFX0VORElBTikgfHwgXAotICAgIGRlZmluZWQoX19CSUdfRU5ESUFOX18pICYmICFkZWZpbmVkKF9fTElUVExFX0VORElBTl9fKSB8fCBcCi0gICAgZGVmaW5lZChfX0JJR0VORElBTl9fKSAmJiAhZGVmaW5lZChfX0xJVFRMRUVORElBTl9fKSB8fCBcCi0gICAgZGVmaW5lZChfU1RMUF9CSUdfRU5ESUFOKSAmJiAhZGVmaW5lZChfU1RMUF9MSVRUTEVfRU5ESUFOKQotIyBkZWZpbmUgTkROQk9PU1RfQklHX0VORElBTgotIyBkZWZpbmUgTkROQk9PU1RfQllURV9PUkRFUiA0MzIxCi0jZWxpZiBkZWZpbmVkKF9MSVRUTEVfRU5ESUFOKSAmJiAhZGVmaW5lZChfQklHX0VORElBTikgfHwgXAotICAgIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pICYmICFkZWZpbmVkKF9fQklHX0VORElBTl9fKSB8fCBcCi0gICAgZGVmaW5lZChfX0xJVFRMRUVORElBTl9fKSAmJiAhZGVmaW5lZChfX0JJR0VORElBTl9fKSB8fCBcCi0gICAgZGVmaW5lZChfU1RMUF9MSVRUTEVfRU5ESUFOKSAmJiAhZGVmaW5lZChfU1RMUF9CSUdfRU5ESUFOKQotIyBkZWZpbmUgTkROQk9PU1RfTElUVExFX0VORElBTgotIyBkZWZpbmUgTkROQk9PU1RfQllURV9PUkRFUiAxMjM0Ci0jZWxpZiBkZWZpbmVkKF9fc3BhcmMpIHx8IGRlZmluZWQoX19zcGFyY19fKSBcCi0gICB8fCBkZWZpbmVkKF9QT1dFUikgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgXAotICAgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9faHB1eCkgfHwgZGVmaW5lZChfX2hwcGEpIFwKLSAgIHx8IGRlZmluZWQoX01JUFNFQikgfHwgZGVmaW5lZChfUE9XRVIpIFwKLSAgIHx8IGRlZmluZWQoX19zMzkwX18pIHx8IGRlZmluZWQoX19BUk1FQl9fKQotIyBkZWZpbmUgTkROQk9PU1RfQklHX0VORElBTgotIyBkZWZpbmUgTkROQk9PU1RfQllURV9PUkRFUiA0MzIxCi0jZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYWxwaGFfXykgXAotICAgfHwgZGVmaW5lZChfX2lhNjQpIHx8IGRlZmluZWQoX19pYTY0X18pIFwKLSAgIHx8IGRlZmluZWQoX01fSVg4NikgfHwgZGVmaW5lZChfTV9JQTY0KSBcCi0gICB8fCBkZWZpbmVkKF9NX0FMUEhBKSB8fCBkZWZpbmVkKF9fYW1kNjQpIFwKLSAgIHx8IGRlZmluZWQoX19hbWQ2NF9fKSB8fCBkZWZpbmVkKF9NX0FNRDY0KSBcCi0gICB8fCBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIFwKLSAgIHx8IGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9fYmZpbl9fKSBcCi0gICB8fCBkZWZpbmVkKF9fQVJNRUxfXykgXAotICAgfHwgKGRlZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9fQVJNX18pICYmIGRlZmluZWQoX01TQ19WRVIpKSAvLyBBUk0gV2luZG93cyBDRSBkb24ndCBkZWZpbmUgYW55dGhpbmcgcmVhc29uYWJseSB1bmlxdWUsIGJ1dCB0aGVyZSBhcmUgbm8gYmlnLWVuZGlhbiBXaW5kb3dzIHZlcnNpb25zIAotCi0jIGRlZmluZSBORE5CT09TVF9MSVRUTEVfRU5ESUFOCi0jIGRlZmluZSBORE5CT09TVF9CWVRFX09SREVSIDEyMzQKLSNlbHNlCi0jIGVycm9yIFRoZSBmaWxlIG5kbmJvb3N0L2RldGFpbC9lbmRpYW4uaHBwIG5lZWRzIHRvIGJlIHNldCB1cCBmb3IgeW91ciBDUFUgdHlwZS4KLSNlbmRpZgotCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9mZW52LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2ZlbnYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGVkY2IwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2ZlbnYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIENvcHlyaWdodCAoYykgMjAxMCAgICAgIEJyeWNlIExlbGJhY2gKLQotICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLSAgICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0ZFTlZfSCkKLSAgI2Vycm9yIFRoaXMgcGxhdGZvcm0gZG9lcyBub3QgaGF2ZSBhIGZsb2F0aW5nIHBvaW50IGVudmlyb25tZW50Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0RFVEFJTF9GRU5WX0hQUCkKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0ZFTlZfSFBQCi0KLS8qIElmIHdlJ3JlIHVzaW5nIGNsYW5nICsgZ2xpYmMsIHdlIGhhdmUgdG8gZ2V0IGhhY2t5LiAKLSAqIFNlZSBodHRwOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNyAqLwotI2lmIGRlZmluZWQoX19jbGFuZ19fKSAgICAgICAmJiAgKF9fY2xhbmdfbWFqb3JfXyA8IDMpICYmICAgIFwKLSAgICBkZWZpbmVkKF9fR05VX0xJQlJBUllfXykgJiYgLyogdXAgdG8gdmVyc2lvbiA1ICovIFwKLSAgICBkZWZpbmVkKF9fR0xJQkNfXykgJiYgICAgICAgICAvKiB2ZXJzaW9uIDYgKyAqLyBcCi0gICAgIWRlZmluZWQoX0ZFTlZfSCkKLSAgI2RlZmluZSBfRkVOVl9ICi0KLSAgI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0gICNpbmNsdWRlIDxiaXRzL2ZlbnYuaD4KLQotICBleHRlcm4gIkMiIHsKLSAgICBleHRlcm4gaW50IGZlZ2V0ZXhjZXB0ZmxhZyAoZmV4Y2VwdF90KiwgaW50KSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmVzZXRleGNlcHRmbGFnIChfX2NvbnN0IGZleGNlcHRfdCosIGludCkgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZlY2xlYXJleGNlcHQgKGludCkgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZlcmFpc2VleGNlcHQgKGludCkgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZldGVzdGV4Y2VwdCAoaW50KSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmVnZXRyb3VuZCAodm9pZCkgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZlc2V0cm91bmQgKGludCkgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZlZ2V0ZW52IChmZW52X3QqKSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmVzZXRlbnYgKF9fY29uc3QgZmVudl90KikgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZldXBkYXRlZW52IChfX2NvbnN0IGZlbnZfdCopIF9fVEhST1c7Ci0gICAgZXh0ZXJuIGludCBmZWhvbGRleGNlcHQgKGZlbnZfdCopIF9fVEhST1c7Ci0KLSAgICAjaWZkZWYgX19VU0VfR05VCi0gICAgICBleHRlcm4gaW50IGZlZW5hYmxlZXhjZXB0IChpbnQpIF9fVEhST1c7Ci0gICAgICBleHRlcm4gaW50IGZlZGlzYWJsZWV4Y2VwdCAoaW50KSBfX1RIUk9XOwotICAgICAgZXh0ZXJuIGludCBmZWdldGV4Y2VwdCAodm9pZCkgX19USFJPVzsKLSAgICAjZW5kaWYKLSAgfQotCi0gIG5hbWVzcGFjZSBzdGQgeyBuYW1lc3BhY2UgdHIxIHsKLSAgICB1c2luZyA6OmZlbnZfdDsKLSAgICB1c2luZyA6OmZleGNlcHRfdDsKLSAgICB1c2luZyA6OmZlZ2V0ZXhjZXB0ZmxhZzsKLSAgICB1c2luZyA6OmZlc2V0ZXhjZXB0ZmxhZzsKLSAgICB1c2luZyA6OmZlY2xlYXJleGNlcHQ7Ci0gICAgdXNpbmcgOjpmZXJhaXNlZXhjZXB0OwotICAgIHVzaW5nIDo6ZmV0ZXN0ZXhjZXB0OwotICAgIHVzaW5nIDo6ZmVnZXRyb3VuZDsKLSAgICB1c2luZyA6OmZlc2V0cm91bmQ7Ci0gICAgdXNpbmcgOjpmZWdldGVudjsKLSAgICB1c2luZyA6OmZlc2V0ZW52OwotICAgIHVzaW5nIDo6ZmV1cGRhdGVlbnY7Ci0gICAgdXNpbmcgOjpmZWhvbGRleGNlcHQ7Ci0gIH0gfQotCi0jZWxzZSAvKiBpZiB3ZSdyZSBub3QgdXNpbmcgR05VJ3MgQyBzdGRsaWIsIGZlbnYuaCBzaG91bGQgd29yayB3aXRoIGNsYW5nICovCi0gICNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKSAvKiBsb2wgc3VuY2MgKi8KLSAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgI2VuZGlmCi0gIAotICAjaW5jbHVkZSA8ZmVudi5oPgotCi0jZW5kaWYKLQotI2VuZGlmIC8qIE5ETkJPT1NUX0RFVEFJTF9GRU5WX0hQUCAqLwotIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaW5kaXJlY3RfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2luZGlyZWN0X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZDkxNTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaW5kaXJlY3RfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgSU5ESVJFQ1RfVFJBSVRTX05ETkJPT1NUX0RXQTIwMDIxMzFfSFBQCi0jIGRlZmluZSBJTkRJUkVDVF9UUkFJVFNfTkROQk9PU1RfRFdBMjAwMjEzMV9IUFAKLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi0jICBpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2lzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIuaHBwPgotIyAgZW5kaWYgCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi1uYW1lc3BhY2UgaW5kaXJlY3RfdHJhaXRzIHsKLQotIyAgaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19jb25zdCA6IG1wbDo6ZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY29uc3Q8VCBjb25zdCY+IDogbXBsOjp0cnVlXwotewotfTsKLQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgX01TQ19GVUxMX1ZFUiA8PSAxMzEwMjE0MCAvLyB2YzcuMDEgYWxwaGEgd29ya2Fyb3VuZAotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY29uc3Q8VCBjb25zdCB2b2xhdGlsZSY+IDogbXBsOjp0cnVlXwotewotfTsKLSMgICBlbmRpZiAKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uIDogbXBsOjpmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19mdW5jdGlvbjxUJj4gOiBpc19mdW5jdGlvbjxUPgotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl90b19mdW5jdGlvbiA6IG1wbDo6ZmFsc2VfCi17Ci19OwotCi0vLyBUaGVyZSdzIG5vIHN1Y2ggdGhpbmcgYXMgYSBwb2ludGVyLXRvLWN2LWZ1bmN0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCi0vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRob3NlCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2ludGVyX3RvX2Z1bmN0aW9uPFQqPiA6IGlzX2Z1bmN0aW9uPFQ+Ci17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbCA6IG1wbDo6ZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbDxUJj4KLSAgICA6IGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyPHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZT4KLXsKLX07Ci0KLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyCi0gICAgOiBpc19yZWZlcmVuY2VfdG9fbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbDxUPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsKFQpKQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uX3BvaW50ZXJfYXV4Ci0gICAgOiBtcGw6OmFuZF88Ci0gICAgICAgICAgaXNfcmVmZXJlbmNlPFQ+Ci0gICAgICAgICwgaXNfcG9pbnRlcl90b19mdW5jdGlvbjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZQotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPgotewotICAgIC8vIFRoZXJlJ3Mgbm8gc3VjaCB0aGluZyBhcyBhIHBvaW50ZXItdG8tY3YtZnVuY3Rpb24sIHNvIHdlIGRvbid0IG5lZWQgc3BlY2lhbGl6YXRpb25zIGZvciB0aG9zZQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uX3BvaW50ZXIKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX3JlZmVyZW5jZV90b19mdW5jdGlvbjxUPgotICAgICAgICAsIG1wbDo6ZmFsc2VfCi0gICAgICAgICwgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uX3BvaW50ZXJfYXV4PFQ+Ci0gICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19ub25fY29uc3QKLSAgICA6IG1wbDo6YW5kXzwKLSAgICAgICAgICBpc19yZWZlcmVuY2U8VD4KLSAgICAgICAgLCBtcGw6Om5vdF88Ci0gICAgICAgICAgICAgaXNfcmVmZXJlbmNlX3RvX2NvbnN0PFQ+Ci0gICAgICAgICAgPgotICAgICAgPgotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX3ZvbGF0aWxlIDogbXBsOjpmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b192b2xhdGlsZTxUIHZvbGF0aWxlJj4gOiBtcGw6OnRydWVfCi17Ci19OwotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBfTVNDX0ZVTExfVkVSIDw9IDEzMTAyMTQwIC8vIHZjNy4wMSBhbHBoYSB3b3JrYXJvdW5kCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fdm9sYXRpbGU8VCBjb25zdCB2b2xhdGlsZSY+IDogbXBsOjp0cnVlXwotewotfTsKLSMgICBlbmRpZiAKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fcG9pbnRlciA6IG1wbDo6ZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fcG9pbnRlcjxUKiY+IDogbXBsOjp0cnVlXwotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX3BvaW50ZXI8VCogY29uc3QmPiA6IG1wbDo6dHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19wb2ludGVyPFQqIHZvbGF0aWxlJj4gOiBtcGw6OnRydWVfCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fcG9pbnRlcjxUKiBjb25zdCB2b2xhdGlsZSY+IDogbXBsOjp0cnVlXwotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2NsYXNzCi0gICAgOiBtcGw6OmFuZF88Ci0gICAgICAgICAgaXNfcmVmZXJlbmNlPFQ+Ci0gICAgICAgICwgaXNfY2xhc3M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfcmVmZXJlbmNlX3RvX2NsYXNzLChUKSkKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvaW50ZXJfdG9fY2xhc3MKLSAgICA6IG1wbDo6YW5kXzwKLSAgICAgICAgICBpc19wb2ludGVyPFQ+Ci0gICAgICAgICwgaXNfY2xhc3M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX3BvaW50ZXJfdG9fY2xhc3MsKFQpKQotfTsKLQotIyAgZWxzZQotCi11c2luZyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmRldGFpbDo6aXNfZnVuY3Rpb25fcmVmX3Rlc3Rlcl87Ci0KLXR5cGVkZWYgY2hhciAoJmlubmVyX3llc190eXBlKVszXTsKLXR5cGVkZWYgY2hhciAoJmlubmVyX25vX3R5cGUpWzJdOwotdHlwZWRlZiBjaGFyICgmb3V0ZXJfbm9fdHlwZSlbMV07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBWPgotc3RydWN0IGlzX2NvbnN0X2hlbHAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgIGlzX2NvbnN0PFY+Ci0gICAgICAgICwgaW5uZXJfeWVzX3R5cGUKLSAgICAgICAgLCBpbm5lcl9ub190eXBlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBWPgotc3RydWN0IGlzX3ZvbGF0aWxlX2hlbHAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgIGlzX3ZvbGF0aWxlPFY+Ci0gICAgICAgICwgaW5uZXJfeWVzX3R5cGUKLSAgICAgICAgLCBpbm5lcl9ub190eXBlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBWPgotc3RydWN0IGlzX3BvaW50ZXJfaGVscAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgaXNfcG9pbnRlcjxWPgotICAgICAgICAsIGlubmVyX3llc190eXBlCi0gICAgICAgICwgaW5uZXJfbm9fdHlwZQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KLXN0cnVjdCBpc19jbGFzc19oZWxwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jbGFzczxWPgotICAgICAgICAsIGlubmVyX3llc190eXBlCi0gICAgICAgICwgaW5uZXJfbm9fdHlwZQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb25fYXV4Ci17Ci0gICAgc3RhdGljIFQgdDsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gc2l6ZW9mKGRldGFpbDo6aXNfZnVuY3Rpb25fcmVmX3Rlc3Rlcih0LDApKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSk7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotIH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19mdW5jdGlvbgotICAgIDogbXBsOjppZl88aXNfcmVmZXJlbmNlPFQ+LCBpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb25fYXV4PFQ+LCBtcGw6OmJvb2xfPGZhbHNlPiA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2ludGVyX3RvX2Z1bmN0aW9uX2F1eAotewotICAgIHN0YXRpYyBUIHQ7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZQotICAgICAgICA9IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aXNfZnVuY3Rpb25fcHRyX3Rlc3Rlcih0KSkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpOwotICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvaW50ZXJfdG9fZnVuY3Rpb24KLSAgICA6IG1wbDo6aWZfPGlzX3BvaW50ZXI8VD4sIGlzX3BvaW50ZXJfdG9fZnVuY3Rpb25fYXV4PFQ+LCBtcGw6OmJvb2xfPGZhbHNlPiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX3BvaW50ZXJfdG9fZnVuY3Rpb24sKFQpKQotfTsKLQotc3RydWN0IGZhbHNlX2hlbHBlcjEKLXsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgYXBwbHkgOiBtcGw6OmZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc19jb25zdF9oZWxwPFY+Ojp0eXBlIHJlZmVyZW5jZV90b19jb25zdF9oZWxwZXIoViYpOyAgICAKLW91dGVyX25vX3R5cGUKLXJlZmVyZW5jZV90b19jb25zdF9oZWxwZXIoLi4uKTsKLQotc3RydWN0IHRydWVfaGVscGVyMQotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgc3RhdGljIFQgdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgICAgID0gc2l6ZW9mKHJlZmVyZW5jZV90b19jb25zdF9oZWxwZXIodCkpID09IHNpemVvZihpbm5lcl95ZXNfdHlwZSkpOwotICAgICAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIHJlZiA9IHRydWU+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2NvbnN0X2hlbHBlcjEgOiB0cnVlX2hlbHBlcjEKLXsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2NvbnN0X2hlbHBlcjE8ZmFsc2U+IDogZmFsc2VfaGVscGVyMQotewotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY29uc3QKLSAgICA6IGlzX3JlZmVyZW5jZV90b19jb25zdF9oZWxwZXIxPGlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp0ZW1wbGF0ZSBhcHBseTxUPgotewotfTsKLQotCi10ZW1wbGF0ZSA8Ym9vbCByZWYgPSB0cnVlPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19ub25fY29uc3RfaGVscGVyMQotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgc3RhdGljIFQgdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgICAgID0gc2l6ZW9mKHJlZmVyZW5jZV90b19jb25zdF9oZWxwZXIodCkpID09IHNpemVvZihpbm5lcl9ub190eXBlKSk7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX25vbl9jb25zdF9oZWxwZXIxPGZhbHNlPiA6IGZhbHNlX2hlbHBlcjEKLXsKLX07Ci0KLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX25vbl9jb25zdAotICAgIDogaXNfcmVmZXJlbmNlX3RvX25vbl9jb25zdF9oZWxwZXIxPGlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp0ZW1wbGF0ZSBhcHBseTxUPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fbm9uX2NvbnN0LChUKSkKLX07Ci0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc192b2xhdGlsZV9oZWxwPFY+Ojp0eXBlIHJlZmVyZW5jZV90b192b2xhdGlsZV9oZWxwZXIoViYpOyAgICAKLW91dGVyX25vX3R5cGUKLXJlZmVyZW5jZV90b192b2xhdGlsZV9oZWxwZXIoLi4uKTsKLQotdGVtcGxhdGUgPGJvb2wgcmVmID0gdHJ1ZT4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fdm9sYXRpbGVfaGVscGVyMQotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgc3RhdGljIFQgdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgICAgID0gc2l6ZW9mKHJlZmVyZW5jZV90b192b2xhdGlsZV9oZWxwZXIodCkpID09IHNpemVvZihpbm5lcl95ZXNfdHlwZSkpOwotICAgICAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX3ZvbGF0aWxlX2hlbHBlcjE8ZmFsc2U+IDogZmFsc2VfaGVscGVyMQotewotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fdm9sYXRpbGUKLSAgICA6IGlzX3JlZmVyZW5jZV90b192b2xhdGlsZV9oZWxwZXIxPGlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp0ZW1wbGF0ZSBhcHBseTxUPgotewotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc19wb2ludGVyX2hlbHA8Vj46OnR5cGUgcmVmZXJlbmNlX3RvX3BvaW50ZXJfaGVscGVyKFYmKTsKLW91dGVyX25vX3R5cGUgcmVmZXJlbmNlX3RvX3BvaW50ZXJfaGVscGVyKC4uLik7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJlZmVyZW5jZV90b19wb2ludGVyX2ltcGwKLXsKLSAgICBzdGF0aWMgVCB0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgPSAoc2l6ZW9mKChyZWZlcmVuY2VfdG9fcG9pbnRlcl9oZWxwZXIpKHQpKSA9PSBzaXplb2YoaW5uZXJfeWVzX3R5cGUpKQotICAgICAgICApOwotICAgIAotICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0gICAgCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fcG9pbnRlcgotICA6IG1wbDo6ZXZhbF9pZjxpc19yZWZlcmVuY2U8VD4sIHJlZmVyZW5jZV90b19wb2ludGVyX2ltcGw8VD4sIG1wbDo6ZmFsc2VfPjo6dHlwZQoteyAgIAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fcG9pbnRlciwoVCkpCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb25fcG9pbnRlcgotICA6IG1wbDo6ZXZhbF9pZjxpc19yZWZlcmVuY2U8VD4sIGlzX3BvaW50ZXJfdG9fZnVuY3Rpb25fYXV4PFQ+LCBtcGw6OmZhbHNlXz46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uX3BvaW50ZXIsKFQpKQotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9oZWxwCi0gICAgOiBtcGw6OmlmXzxpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcjxUPiwgaW5uZXJfeWVzX3R5cGUsIGlubmVyX25vX3R5cGU+Ci17fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9oZWxwPFY+Ojp0eXBlIG1lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2hlbHBlcihWJik7Ci1vdXRlcl9ub190eXBlIG1lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2hlbHBlciguLi4pOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2ludGVyX3RvX21lbWJlcl9mdW5jdGlvbl9hdXgKLXsKLSAgICBzdGF0aWMgVCB0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgPSBzaXplb2YoKG1lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2hlbHBlcikodCkpID09IHNpemVvZihpbm5lcl95ZXNfdHlwZSkpOwotICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotICAgIDogbXBsOjppZl88Ci0gICAgICAgIGlzX3JlZmVyZW5jZTxUPgotICAgICAgICAsIGlzX3BvaW50ZXJfdG9fbWVtYmVyX2Z1bmN0aW9uX2F1eDxUPgotICAgICAgICAsIG1wbDo6Ym9vbF88ZmFsc2U+Ci0gICAgID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfcmVmZXJlbmNlX3RvX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLChUKSkKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBWPgotdHlwZW5hbWUgaXNfY2xhc3NfaGVscDxWPjo6dHlwZSByZWZlcmVuY2VfdG9fY2xhc3NfaGVscGVyKFYgY29uc3Qgdm9sYXRpbGUmKTsKLW91dGVyX25vX3R5cGUgcmVmZXJlbmNlX3RvX2NsYXNzX2hlbHBlciguLi4pOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY2xhc3MKLXsKLSAgICBzdGF0aWMgVCB0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgPSAoaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgICAmIChzaXplb2YocmVmZXJlbmNlX3RvX2NsYXNzX2hlbHBlcih0KSkgPT0gc2l6ZW9mKGlubmVyX3llc190eXBlKSkpCi0gICAgICAgICk7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fY2xhc3MsKFQpKQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc19jbGFzc19oZWxwPFY+Ojp0eXBlIHBvaW50ZXJfdG9fY2xhc3NfaGVscGVyKFYgY29uc3Qgdm9sYXRpbGUqKTsKLW91dGVyX25vX3R5cGUgcG9pbnRlcl90b19jbGFzc19oZWxwZXIoLi4uKTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl90b19jbGFzcwotewotICAgIHN0YXRpYyBUIHQ7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZQotICAgICAgICA9IChpc19wb2ludGVyPFQ+Ojp2YWx1ZQotICAgICAgICAgICAmJiBzaXplb2YocG9pbnRlcl90b19jbGFzc19oZWxwZXIodCkpID09IHNpemVvZihpbm5lcl95ZXNfdHlwZSkpCi0gICAgICAgICk7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotfTsKLSMgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gCi0KLX0KLQotdXNpbmcgbmFtZXNwYWNlIGluZGlyZWN0X3RyYWl0czsKLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpweXRob246OmRldGFpbAotCi0jZW5kaWYgLy8gSU5ESVJFQ1RfVFJBSVRTX05ETkJPT1NUX0RXQTIwMDIxMzFfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjNDgwZDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaW50ZXJsb2NrZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX0lOVEVSTE9DS0VEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfSU5URVJMT0NLRURfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX1VTRV9XSU5ET1dTX0ggKQotCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4KLQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfSU5DUkVNRU5UIEludGVybG9ja2VkSW5jcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9ERUNSRU1FTlQgSW50ZXJsb2NrZWREZWNyZW1lbnQKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0UgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFIEludGVybG9ja2VkRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX0FERCBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFX1BPSU5URVIgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRV9QT0lOVEVSIEludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyCi0KLSNlbGlmIGRlZmluZWQoX1dJTjMyX1dDRSkKLQotI2lmIF9XSU4zMl9XQ0UgPj0gMHg2MDAKLQotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkSW5jcmVtZW50KCBsb25nIHZvbGF0aWxlICogKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIF9JbnRlcmxvY2tlZERlY3JlbWVudCggbG9uZyB2b2xhdGlsZSAqICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZywgbG9uZyApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZyApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZyApOwotCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTkNSRU1FTlQgX0ludGVybG9ja2VkSW5jcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9ERUNSRU1FTlQgX0ludGVybG9ja2VkRGVjcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFIF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UgX0ludGVybG9ja2VkRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX0FERCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZAotCi0jZWxzZQotLy8gdW5kZXIgV2luZG93cyBDRSB3ZSBzdGlsbCBoYXZlIG9sZC1zdHlsZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zCi0KLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIEludGVybG9ja2VkSW5jcmVtZW50KCBsb25nKiApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgSW50ZXJsb2NrZWREZWNyZW1lbnQoIGxvbmcqICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSggbG9uZyosIGxvbmcsIGxvbmcgKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIEludGVybG9ja2VkRXhjaGFuZ2UoIGxvbmcqLCBsb25nICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCBsb25nKiwgbG9uZyApOwotCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTkNSRU1FTlQgSW50ZXJsb2NrZWRJbmNyZW1lbnQKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0RFQ1JFTUVOVCBJbnRlcmxvY2tlZERlY3JlbWVudAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UgSW50ZXJsb2NrZWRFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0VfQUREIEludGVybG9ja2VkRXhjaGFuZ2VBZGQKLQotI2VuZGlmCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0VfUE9JTlRFUihkZXN0LGV4Y2hhbmdlLGNvbXBhcmUpIFwKLSAgICAoKHZvaWQqKU5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0UoKGxvbmcqKShkZXN0KSwobG9uZykoZXhjaGFuZ2UpLChsb25nKShjb21wYXJlKSkpCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRV9QT0lOVEVSKGRlc3QsZXhjaGFuZ2UpIFwKLSAgICAoKHZvaWQqKU5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFKChsb25nKikoZGVzdCksKGxvbmcpKGV4Y2hhbmdlKSkpCi0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX01TVkMgKSB8fCBkZWZpbmVkKCBORE5CT09TVF9JTlRFTF9XSU4gKQotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTVNWQyApICYmIE5ETkJPT1NUX01TVkMgPj0gMTYwMAotCi0jaW5jbHVkZSA8aW50cmluLmg+Ci0KLSNlbGlmIGRlZmluZWQoIF9fQ0xSQ0FMTF9QVVJFX09SX0NERUNMICkKLQotZXh0ZXJuICJDIiBsb25nIF9fQ0xSQ0FMTF9QVVJFX09SX0NERUNMIF9JbnRlcmxvY2tlZEluY3JlbWVudCggbG9uZyB2b2xhdGlsZSAqICk7Ci1leHRlcm4gIkMiIGxvbmcgX19DTFJDQUxMX1BVUkVfT1JfQ0RFQ0wgX0ludGVybG9ja2VkRGVjcmVtZW50KCBsb25nIHZvbGF0aWxlICogKTsKLWV4dGVybiAiQyIgbG9uZyBfX0NMUkNBTExfUFVSRV9PUl9DREVDTCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZywgbG9uZyApOwotZXh0ZXJuICJDIiBsb25nIF9fQ0xSQ0FMTF9QVVJFX09SX0NERUNMIF9JbnRlcmxvY2tlZEV4Y2hhbmdlKCBsb25nIHZvbGF0aWxlICosIGxvbmcgKTsKLWV4dGVybiAiQyIgbG9uZyBfX0NMUkNBTExfUFVSRV9PUl9DREVDTCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCggbG9uZyB2b2xhdGlsZSAqLCBsb25nICk7Ci0KLSNlbHNlCi0KLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIF9JbnRlcmxvY2tlZEluY3JlbWVudCggbG9uZyB2b2xhdGlsZSAqICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBfSW50ZXJsb2NrZWREZWNyZW1lbnQoIGxvbmcgdm9sYXRpbGUgKiApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCBsb25nIHZvbGF0aWxlICosIGxvbmcsIGxvbmcgKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIF9JbnRlcmxvY2tlZEV4Y2hhbmdlKCBsb25nIHZvbGF0aWxlICosIGxvbmcgKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCBsb25nIHZvbGF0aWxlICosIGxvbmcgKTsKLQotI2VuZGlmCi0KLSMgcHJhZ21hIGludHJpbnNpYyggX0ludGVybG9ja2VkSW5jcmVtZW50ICkKLSMgcHJhZ21hIGludHJpbnNpYyggX0ludGVybG9ja2VkRGVjcmVtZW50ICkKLSMgcHJhZ21hIGludHJpbnNpYyggX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlICkKLSMgcHJhZ21hIGludHJpbnNpYyggX0ludGVybG9ja2VkRXhjaGFuZ2UgKQotIyBwcmFnbWEgaW50cmluc2ljKCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCApCi0KLSMgaWYgZGVmaW5lZChfTV9JQTY0KSB8fCBkZWZpbmVkKF9NX0FNRDY0KQotCi1leHRlcm4gIkMiIHZvaWQqIF9fY2RlY2wgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlUG9pbnRlciggdm9pZCogdm9sYXRpbGUgKiwgdm9pZCosIHZvaWQqICk7Ci1leHRlcm4gIkMiIHZvaWQqIF9fY2RlY2wgX0ludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyKCB2b2lkKiB2b2xhdGlsZSAqLCB2b2lkKiApOwotCi0jICBwcmFnbWEgaW50cmluc2ljKCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyICkKLSMgIHByYWdtYSBpbnRyaW5zaWMoIF9JbnRlcmxvY2tlZEV4Y2hhbmdlUG9pbnRlciApCi0KLSMgIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFX1BPSU5URVIgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlUG9pbnRlcgotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX1BPSU5URVIgX0ludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyCi0KLSMgZWxzZQotCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRV9QT0lOVEVSKGRlc3QsZXhjaGFuZ2UsY29tcGFyZSkgXAotICAgICgodm9pZCopTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSgobG9uZyB2b2xhdGlsZSopKGRlc3QpLChsb25nKShleGNoYW5nZSksKGxvbmcpKGNvbXBhcmUpKSkKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRV9QT0lOVEVSKGRlc3QsZXhjaGFuZ2UpIFwKLSAgICAoKHZvaWQqKU5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFKChsb25nIHZvbGF0aWxlKikoZGVzdCksKGxvbmcpKGV4Y2hhbmdlKSkpCi0KLSMgZW5kaWYKLQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfSU5DUkVNRU5UIF9JbnRlcmxvY2tlZEluY3JlbWVudAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfREVDUkVNRU5UIF9JbnRlcmxvY2tlZERlY3JlbWVudAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFIF9JbnRlcmxvY2tlZEV4Y2hhbmdlCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRV9BREQgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQKLQotI2VsaWYgZGVmaW5lZCggV0lOMzIgKSB8fCBkZWZpbmVkKCBfV0lOMzIgKSB8fCBkZWZpbmVkKCBfX1dJTjMyX18gKSB8fCBkZWZpbmVkKCBfX0NZR1dJTl9fICkKLQotI2lmIGRlZmluZWQoX19NSU5HVzY0X18pCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lNUE9SVAotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfSU1QT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2VuZGlmCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotZXh0ZXJuICJDIiBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTVBPUlQgbG9uZyBfX3N0ZGNhbGwgSW50ZXJsb2NrZWRJbmNyZW1lbnQoIGxvbmcgdm9sYXRpbGUgKiApOwotZXh0ZXJuICJDIiBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTVBPUlQgbG9uZyBfX3N0ZGNhbGwgSW50ZXJsb2NrZWREZWNyZW1lbnQoIGxvbmcgdm9sYXRpbGUgKiApOwotZXh0ZXJuICJDIiBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTVBPUlQgbG9uZyBfX3N0ZGNhbGwgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZywgbG9uZyApOwotZXh0ZXJuICJDIiBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTVBPUlQgbG9uZyBfX3N0ZGNhbGwgSW50ZXJsb2NrZWRFeGNoYW5nZSggbG9uZyB2b2xhdGlsZSAqLCBsb25nICk7Ci1leHRlcm4gIkMiIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lNUE9SVCBsb25nIF9fc3RkY2FsbCBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCBsb25nIHZvbGF0aWxlICosIGxvbmcgKTsKLQotIyBpZiBkZWZpbmVkKF9NX0lBNjQpIHx8IGRlZmluZWQoX01fQU1ENjQpCi1leHRlcm4gIkMiIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lNUE9SVCB2b2lkKiBfX3N0ZGNhbGwgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyKCB2b2lkKiB2b2xhdGlsZSAqLCB2b2lkKiwgdm9pZCogKTsKLWV4dGVybiAiQyIgTkROQk9PU1RfSU5URVJMT0NLRURfSU1QT1JUIHZvaWQqIF9fc3RkY2FsbCBJbnRlcmxvY2tlZEV4Y2hhbmdlUG9pbnRlciggdm9pZCogdm9sYXRpbGUgKiwgdm9pZCogKTsKLSMgZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lOQ1JFTUVOVCA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkSW5jcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9ERUNSRU1FTlQgOjpuZG5ib29zdDo6ZGV0YWlsOjpJbnRlcmxvY2tlZERlY3JlbWVudAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRSA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX0FERCA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkRXhjaGFuZ2VBZGQKLQotIyBpZiBkZWZpbmVkKF9NX0lBNjQpIHx8IGRlZmluZWQoX01fQU1ENjQpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRV9QT0lOVEVSIDo6bmRuYm9vc3Q6OmRldGFpbDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0VfUE9JTlRFUiA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFX1BPSU5URVIoZGVzdCxleGNoYW5nZSxjb21wYXJlKSBcCi0gICAgKCh2b2lkKilORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFKChsb25nIHZvbGF0aWxlKikoZGVzdCksKGxvbmcpKGV4Y2hhbmdlKSwobG9uZykoY29tcGFyZSkpKQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX1BPSU5URVIoZGVzdCxleGNoYW5nZSkgXAotICAgICgodm9pZCopTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UoKGxvbmcgdm9sYXRpbGUqKShkZXN0KSwobG9uZykoZXhjaGFuZ2UpKSkKLSMgZW5kaWYKLQotI2Vsc2UKLQotIyBlcnJvciAiSW50ZXJsb2NrZWQgaW50cmluc2ljcyBub3QgYXZhaWxhYmxlIgotCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfREVUQUlMX0lOVEVSTE9DS0VEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaXNfZnVuY3Rpb25fcmVmX3Rlc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pc19mdW5jdGlvbl9yZWZfdGVzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAxZmY1Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pc19mdW5jdGlvbl9yZWZfdGVzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyBBbGVrc2V5IEd1cnRvdm95LCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX0lTX0ZVTkNUSU9OX1JFRl9URVNURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9JU19GVU5DVElPTl9SRUZfVEVTVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwIgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSAibmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwIgotIyAgIGluY2x1ZGUgIm5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHAiCi0jICAgaW5jbHVkZSAibmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci1uYW1lc3BhY2UgaXNfZnVuY3Rpb25fcmVmX3Rlc3Rlcl8gewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoVCYgLi4uKTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLS8vIHByZXByb2Nlc3Nvci1nZW5lcmF0ZWQgcGFydCwgZG9uJ3QgZWRpdCBieSBoYW5kIQotCi10ZW1wbGF0ZSA8Y2xhc3MgUj4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKSgpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDApLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMiA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNiA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMiA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYsY2xhc3MgVDE3LGNsYXNzIFQxOCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYsY2xhc3MgVDE3LGNsYXNzIFQxOCxjbGFzcyBUMTkgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcsY2xhc3MgVDE4LGNsYXNzIFQxOSxjbGFzcyBUMjAgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjApLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYsY2xhc3MgVDE3LGNsYXNzIFQxOCxjbGFzcyBUMTksY2xhc3MgVDIwLGNsYXNzIFQyMSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYsY2xhc3MgVDE3LGNsYXNzIFQxOCxjbGFzcyBUMTksY2xhc3MgVDIwLGNsYXNzIFQyMSxjbGFzcyBUMjIgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMiksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcsY2xhc3MgVDE4LGNsYXNzIFQxOSxjbGFzcyBUMjAsY2xhc3MgVDIxLGNsYXNzIFQyMixjbGFzcyBUMjMgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYsY2xhc3MgVDE3LGNsYXNzIFQxOCxjbGFzcyBUMTksY2xhc3MgVDIwLGNsYXNzIFQyMSxjbGFzcyBUMjIsY2xhc3MgVDIzLGNsYXNzIFQyNCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQpLCBpbnQpOwotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsICgwLCAyNSwgIm5kbmJvb3N0L2RldGFpbC9pc19mdW5jdGlvbl9yZWZfdGVzdGVyLmhwcCIpKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBweXRob24KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9ERVRBSUxfSVNfRlVOQ1RJT05fUkVGX1RFU1RFUl9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIGkgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGkpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksY2xhc3MgVCkgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksVCkpLCBpbnQpOwotCi0jdW5kZWYgaQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pc19pbmNyZW1lbnRhYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2lzX2luY3JlbWVudGFibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWZmOWNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2lzX2luY3JlbWVudGFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzCi0vLyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBJU19JTkNSRU1FTlRBQkxFX05ETkJPT1NUX0RXQTIwMDQxNV9IUFAKLSMgZGVmaW5lIElTX0lOQ1JFTUVOVEFCTEVfTkROQk9PU1RfRFdBMjAwNDE1X0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8gTXVzdCBiZSB0aGUgbGFzdCBpbmNsdWRlCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgeyAKLQotLy8gaXNfaW5jcmVtZW50YWJsZTxUPiBtZXRhZnVuY3Rpb24KLS8vCi0vLyBSZXF1aXJlczogR2l2ZW4geCBvZiB0eXBlIFQmLCBpZiB0aGUgZXhwcmVzc2lvbiArK3ggaXMgd2VsbC1mb3JtZWQKLS8vIGl0IG11c3QgaGF2ZSBjb21wbGV0ZSB0eXBlOyBvdGhlcndpc2UsIGl0IG11c3QgbmVpdGhlciBiZSBhbWJpZ3VvdXMKLS8vIG5vciB2aW9sYXRlIGFjY2Vzcy4KLQotLy8gVGhpcyBuYW1lc3BhY2UgZW5zdXJlcyB0aGF0IEFETCBkb2Vzbid0IG1lc3MgdGhpbmdzIHVwLgotbmFtZXNwYWNlIGlzX2luY3JlbWVudGFibGVfCi17Ci0gIC8vIGEgdHlwZSByZXR1cm5lZCBmcm9tIG9wZXJhdG9yKysgd2hlbiBubyBpbmNyZW1lbnQgaXMgZm91bmQgaW4gdGhlCi0gIC8vIHR5cGUncyBvd24gbmFtZXNwYWNlCi0gIHN0cnVjdCB0YWcge307Ci0gIAotICAvLyBhbnkgc29ha3MgdXAgaW1wbGljaXQgY29udmVyc2lvbnMgYW5kIG1ha2VzIHRoZSBmb2xsb3dpbmcKLSAgLy8gb3BlcmF0b3IrKyBsZXNzLXByZWZlcnJlZCB0aGFuIGFueSBvdGhlciBzdWNoIG9wZXJhdG9yIHRoYXQKLSAgLy8gbWlnaHQgYmUgZm91bmQgdmlhIEFETC4KLSAgc3RydWN0IGFueSB7IHRlbXBsYXRlIDxjbGFzcyBUPiBhbnkoVCBjb25zdCYpOyB9OwotCi0gIC8vIFRoaXMgaXMgYSBsYXN0LXJlc29ydCBvcGVyYXRvcisrIGZvciB3aGVuIG5vbmUgb3RoZXIgaXMgZm91bmQKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPT0gNCkgJiYgX19HTlVDX01JTk9SX18gPT0gMCAmJiBfX0dOVUNfUEFUQ0hMRVZFTF9fID09IDIKLSAgCi19Ci0KLW5hbWVzcGFjZSBpc19pbmNyZW1lbnRhYmxlXzIKLXsKLSAgaXNfaW5jcmVtZW50YWJsZV86OnRhZyBvcGVyYXRvcisrKGlzX2luY3JlbWVudGFibGVfOjphbnkgY29uc3QmKTsKLSAgaXNfaW5jcmVtZW50YWJsZV86OnRhZyBvcGVyYXRvcisrKGlzX2luY3JlbWVudGFibGVfOjphbnkgY29uc3QmLGludCk7Ci19Ci11c2luZyBuYW1lc3BhY2UgaXNfaW5jcmVtZW50YWJsZV8yOwotCi1uYW1lc3BhY2UgaXNfaW5jcmVtZW50YWJsZV8KLXsKLSAgCi0jIGVsc2UKLSAgCi0gIHRhZyBvcGVyYXRvcisrKGFueSBjb25zdCYpOwotICB0YWcgb3BlcmF0b3IrKyhhbnkgY29uc3QmLGludCk7Ci0gIAotIyBlbmRpZiAKLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDIpKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX2NvbW1hKGEsYikgKGEpCi0jIGVsc2UgCi0gIC8vIEluIGNhc2UgYW4gb3BlcmF0b3IrKyBpcyBmb3VuZCB0aGF0IHJldHVybnMgdm9pZCwgd2UnbGwgdXNlICsreCwwCi0gIHRhZyBvcGVyYXRvciwodGFnLGludCk7ICAKLSMgIGRlZmluZSBORE5CT09TVF9jb21tYShhLGIpIChhLGIpCi0jIGVuZGlmIAotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5MTMpIC8vIFdhcm5pbmcgYWJvdXQgb3BlcmF0b3IsCi0jIGVuZGlmIAotCi0gIC8vIHR3byBjaGVjayBvdmVybG9hZHMgaGVscCB1cyBpZGVudGlmeSB3aGljaCBvcGVyYXRvcisrIHdhcyBwaWNrZWQKLSAgY2hhciAoJiBjaGVja18odGFnKSApWzJdOwotICAKLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIGNoYXIgY2hlY2tfKFQgY29uc3QmKTsKLSAgCi0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBpbXBsCi0gIHsKLSAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlJiB4OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgYm9vbAotICAgICAgICAsIHZhbHVlID0gc2l6ZW9mKGlzX2luY3JlbWVudGFibGVfOjpjaGVja18oTkROQk9PU1RfY29tbWEoKyt4LDApKSkgPT0gMQotICAgICAgKTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IHBvc3RmaXhfaW1wbAotICB7Ci0gICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxUPjo6dHlwZSYgeDsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgIGJvb2wKLSAgICAgICAgLCB2YWx1ZSA9IHNpemVvZihpc19pbmNyZW1lbnRhYmxlXzo6Y2hlY2tfKE5ETkJPT1NUX2NvbW1hKHgrKywwKSkpID09IDEKLSAgICAgICk7Ci0gIH07Ci0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotIyBlbmRpZiAKLQotfQotCi0jIHVuZGVmIE5ETkJPT1NUX2NvbW1hCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IGlzX2luY3JlbWVudGFibGUgCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlXzo6aW1wbDxUPjo6dmFsdWUpCi17IAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woOjpuZG5ib29zdDo6ZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlXzo6aW1wbDxUPjo6dmFsdWUpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX2luY3JlbWVudGFibGUsKFQpKQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgaXNfcG9zdGZpeF9pbmNyZW1lbnRhYmxlIAotTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfaW5jcmVtZW50YWJsZV86OmltcGw8VD46OnZhbHVlKQoteyAKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfaW5jcmVtZW50YWJsZV86OnBvc3RmaXhfaW1wbDxUPjo6dmFsdWUpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX3Bvc3RmaXhfaW5jcmVtZW50YWJsZSwoVCkpCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlKQotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19wb3N0Zml4X2luY3JlbWVudGFibGUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gSVNfSU5DUkVNRU5UQUJMRV9ORE5CT09TVF9EV0EyMDA0MTVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4OGE4OWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDk0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gQm9vc3QgdmVyc2lvbnMgb2YKLS8vCi0vLyAgICBzdGQ6Oml0ZXJhdG9yX3RyYWl0czw+OjppdGVyYXRvcl9jYXRlZ29yeQotLy8gICAgc3RkOjppdGVyYXRvcl90cmFpdHM8Pjo6ZGlmZmVyZW5jZV90eXBlCi0vLyAgICBzdGQ6OmRpc3RhbmNlKCkKLS8vCi0vLyAuLi5mb3IgYWxsIGNvbXBpbGVycyBhbmQgaXRlcmF0b3JzCi0vLwotLy8gQWRkaXRpb25hbGx5LCBpZiBYIGlzIGEgcG9pbnRlcgotLy8gICAgc3RkOjppdGVyYXRvcl90cmFpdHM8WD46OnBvaW50ZXIKLQotLy8gT3RoZXJ3aXNlLCBpZiBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGlzIHN1cHBvcnRlZCBvciBYIGlzIG5vdCBhIHBvaW50ZXIKLS8vICAgIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPFg+Ojp2YWx1ZV90eXBlCi0vLyAgICBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxYPjo6cG9pbnRlcgotLy8gICAgc3RkOjppdGVyYXRvcl90cmFpdHM8WD46OnJlZmVyZW5jZQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gUmV2aXNpb24gSGlzdG9yeQotLy8gMDQgTWFyIDIwMDEgLSBNb3JlIGF0dGVtcHRlZCBmaXhlcyBmb3IgSW50ZWwgQysrIChEYXZpZCBBYnJhaGFtcykKLS8vIDAzIE1hciAyMDAxIC0gUHV0IGFsbCBpbXBsZW1lbnRhdGlvbiBpbnRvIG5hbWVzcGFjZQotLy8gICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHNfLiBTb21lIHByb2dyZXNzIG1hZGUgb24gZml4ZXMKLS8vICAgICAgICAgICAgICAgZm9yIEludGVsIGNvbXBpbGVyLiAoRGF2aWQgQWJyYWhhbXMpCi0vLyAwMiBNYXIgMjAwMSAtIENoYW5nZWQgTkROQk9PU1RfTVNWQyB0byBORE5CT09TVF9NU1ZDX1NURF9JVEVSQVRPUiBpbiBhIGZldwotLy8gICAgICAgICAgICAgICBwbGFjZXMuIChKZXJlbXkgU2llaykKLS8vIDE5IEZlYiAyMDAxIC0gSW1wcm92ZWQgd29ya2Fyb3VuZHMgZm9yIHN0b2NrIE1TVkM2OyB1c2UgeWVzX3R5cGUgYW5kCi0vLyAgICAgICAgICAgICAgIG5vX3R5cGUgZnJvbSB0eXBlX3RyYWl0cy5ocHA7IHN0b3BwZWQgdHJ5aW5nIHRvIHJlbW92ZV9jdgotLy8gICAgICAgICAgICAgICBiZWZvcmUgZGV0ZWN0aW5nIGlzX3BvaW50ZXIsIGluIGhvbm9yIG9mIHRoZSBuZXcgdHlwZV90cmFpdHMKLS8vICAgICAgICAgICAgICAgc2VtYW50aWNzLiAoRGF2aWQgQWJyYWhhbXMpCi0vLyAxMyBGZWIgMjAwMSAtIE1ha2UgaXQgd29yayB3aXRoIG5lYXJseSBhbGwgc3RhbmRhcmQtY29uZm9ybWluZyBpdGVyYXRvcnMKLS8vICAgICAgICAgICAgICAgdW5kZXIgcmF3IFZDNi4gVGhlIG9uZSBjYXRlZ29yeSByZW1haW5pbmcgd2hpY2ggd2lsbCBmYWlsIGlzCi0vLyAgICAgICAgICAgICAgIHRoYXQgb2YgaXRlcmF0b3JzIGRlcml2ZWQgZnJvbSBzdGQ6Oml0ZXJhdG9yIGJ1dCBub3QKLS8vICAgICAgICAgICAgICAgbmRuYm9vc3Q6Oml0ZXJhdG9yIGFuZCB3aGljaCByZWRlZmluZSBkaWZmZXJlbmNlX3R5cGUuCi0vLyAxMSBGZWIgMjAwMSAtIENsZWFuIGF3YXkgY29kZSB3aGljaCBjYW4gbmV2ZXIgYmUgdXNlZCAoRGF2aWQgQWJyYWhhbXMpCi0vLyAwOSBGZWIgMjAwMSAtIEFsd2F5cyBoYXZlIGEgZGVmaW5pdGlvbiBmb3IgZWFjaCB0cmFpdHMgbWVtYmVyLCBldmVuIGlmIGl0Ci0vLyAgICAgICAgICAgICAgIGNhbid0IGJlIHByb3Blcmx5IGRlZHVjZWQuIFRoZXNlIHdpbGwgYmUgaW5jb21wbGV0ZSB0eXBlcyBpbgotLy8gICAgICAgICAgICAgICBzb21lIGNhc2VzICh1bmRlZmluZWQ8dm9pZD4pLCBidXQgaXQgaGVscHMgc3VwcHJlc3MgTVNWQyBlcnJvcnMKLS8vICAgICAgICAgICAgICAgZWxzZXdoZXJlIChEYXZpZCBBYnJhaGFtcykKLS8vIDA3IEZlYiAyMDAxIC0gU3VwcG9ydCBmb3IgbW9yZSBvZiB0aGUgdHJhaXRzIG1lbWJlcnMgd2hlcmUgcG9zc2libGUsIG1ha2luZwotLy8gICAgICAgICAgICAgICB0aGlzIHVzZWZ1bCBhcyBhIHJlcGxhY2VtZW50IGZvciBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxUPiB3aGVuCi0vLyAgICAgICAgICAgICAgIHVzZWQgYXMgYSBkZWZhdWx0IHRlbXBsYXRlIHBhcmFtZXRlci4KLS8vIDA2IEZlYiAyMDAxIC0gUmVtb3ZlZCB1c2VsZXNzICNpbmNsdWRlcyBvZiBzdGFuZGFyZCBsaWJyYXJ5IGhlYWRlcnMKLS8vICAgICAgICAgICAgICAgKERhdmlkIEFicmFoYW1zKQotCi0jaWZuZGVmIElURVJBVE9SX05ETkJPT1NUX0RXQTEyMjYwMF9IUFBfCi0jIGRlZmluZSBJVEVSQVRPUl9ORE5CT09TVF9EV0ExMjI2MDBfSFBQXwotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPGl0ZXJhdG9yPgotCi0vLyBTVExQb3J0IDQuMCBhbmQgYmV0YXMgaGF2ZSBhIGJ1ZyB3aGVuIGRlYnVnZ2luZyBpcyBlbmFibGVkIGFuZCB0aGVyZSBpcyBubwotLy8gcGFydGlhbCBzcGVjaWFsaXphdGlvbjogaW5zdGVhZCBvZiBhbiBpdGVyYXRvcl9jYXRlZ29yeSB0eXBlZGVmLCB0aGUgc3RhbmRhcmQKLS8vIGNvbnRhaW5lciBpdGVyYXRvcnMgaGF2ZSBfSXRlcmF0b3JfY2F0ZWdvcnkuCi0vLwotLy8gQWxzbywgd2hldGhlciBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBvciBub3QsIHRoZXJlIGlzIGEgYnJva2VuIHNwZWNpYWxpemF0aW9uCi0vLyBvZiBzdGQ6Oml0ZXJhdG9yPG91dHB1dF9pdGVyYXRvcl90YWcsdm9pZCx2b2lkLHZvaWQsdm9pZD4gd2hpY2ggaGFzIG5vCi0vLyB0eXBlZGVmcyBidXQgaXRlcmF0b3JfY2F0ZWdvcnkuCi0jIGlmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpCi0KLSMgIGlmIChfX1NHSV9TVExfUE9SVCA8PSAweDQxMCkgJiYgIWRlZmluZWQoX19TVExfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgZGVmaW5lZChfX1NUTF9ERUJVRykKLSMgICBkZWZpbmUgTkROQk9PU1RfQkFEX0NPTlRBSU5FUl9JVEVSQVRPUl9DQVRFR09SWV9UWVBFREVGCi0jICBlbmRpZgotCi0jICBkZWZpbmUgTkROQk9PU1RfQkFEX09VVFBVVF9JVEVSQVRPUl9TUEVDSUFMSVpBVElPTgotCi0jIGVuZGlmIC8vIFNUTFBvcnQgPD0gNC4xYjQgJiYgbm8gcGFydGlhbCBzcGVjaWFsaXphdGlvbgotCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpICAgICAgICAgICAgIFwKLSAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDX1NURF9JVEVSQVRPUikKLSAgICAKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBEZWZpbmUgYSBuZXcgdGVtcGxhdGUgc28gaXQgY2FuIGJlIHNwZWNpYWxpemVkCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzCi0gICAgOiBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj4KLXt9OwotdXNpbmcgc3RkOjpkaXN0YW5jZTsKLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpkZXRhaWwKLQotIyBlbHNlCi0KLSMgIGlmICAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SKQotCi0vLyBUaGlzIGlzIHRoZSBjYXNlIHdoZXJlIGV2ZXJ5dGhpbmcgY29uZm9ybXMgZXhjZXB0IE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFJvZ3VlIFdhdmUgU3RhbmRhcmQgTGlicmFyeSBmb29scyBpdHNlbGYgaW50byB0aGlua2luZyBwYXJ0aWFsCi0vLyBzcGVjaWFsaXphdGlvbiBpcyBtaXNzaW5nIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIFN1biksIHNvIGZhaWxzIHRvCi0vLyBzdXBwbHkgaXRlcmF0b3JfdHJhaXRzIQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IGl0ZXJhdG9yX3RyYWl0cwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFQqPgotewotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgVCogcG9pbnRlcjsKLSAgICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpdGVyYXRvcl90cmFpdHM8VCBjb25zdCo+Ci17Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBUIGNvbnN0JiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBUIGNvbnN0KiBwb2ludGVyOwotICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZGV0YWlsCi0KLSMgIGVsc2UKLQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLQotIyBpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSMgZW5kaWYKLSMgaWZkZWYgTkROQk9PU1RfQkFEX09VVFBVVF9JVEVSQVRPUl9TUEVDSUFMSVpBVElPTgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHA+Ci0jIGVuZGlmCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2hhc194eHguaHBwPgotIyBpbmNsdWRlIDxjc3RkZGVmPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSMgaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRih2YWx1ZV90eXBlKQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKHJlZmVyZW5jZSkKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihwb2ludGVyKQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKGRpZmZlcmVuY2VfdHlwZSkKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihpdGVyYXRvcl9jYXRlZ29yeSkKLQotLy8gaXNfbXV0YWJsZV9pdGVyYXRvciAtLQotLy8KLS8vICAgQSBtZXRhZnVuY3Rpb24gcmV0dXJuaW5nIHRydWUgaWZmIFQgaXMgYSBtdXRhYmxlIGl0ZXJhdG9yIHR5cGUKLS8vICAgd2l0aCBhIG5lc3RlZCB2YWx1ZV90eXBlLiBXaWxsIG9ubHkgd29yayBwb3J0YWJseSB3aXRoIGl0ZXJhdG9ycwotLy8gICB3aG9zZSBvcGVyYXRvciogcmV0dXJucyBhIHJlZmVyZW5jZSwgYnV0IHRoYXQgc2VlbXMgdG8gYmUgT0sgZm9yCi0vLyAgIHRoZSBpdGVyYXRvcnMgc3VwcGxpZWQgYnkgRGlua3Vtd2FyZS4gU29tZSBpbnB1dCBpdGVyYXRvcnMgbWF5Ci0vLyAgIGNvbXBpbGUtdGltZSBpZiB0aGV5IGFycml2ZSBoZXJlLCBhbmQgaWYgdGhlIGNvbXBpbGVyIGlzIHN0cmljdAotLy8gICBhYm91dCBub3QgdGFraW5nIHRoZSBhZGRyZXNzIG9mIGFuIHJ2YWx1ZS4KLQotLy8gVGhpcyBvbmUgZGV0ZWN0cyBvcmRpbmFyeSBtdXRhYmxlIGl0ZXJhdG9ycyAtIHRoZSByZXN1bHQgb2YKLS8vIG9wZXJhdG9yKiBpcyBjb252ZXJ0aWJsZSB0byB0aGUgdmFsdWVfdHlwZS4KLXRlbXBsYXRlIDxjbGFzcyBUPgotdHlwZV90cmFpdHM6Onllc190eXBlIGlzX211dGFibGVfaXRlcmF0b3JfaGVscGVyKFQgY29uc3QqLCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFQ6OnZhbHVlX3R5cGUqKTsKLQotLy8gU2luY2UgeW91IGNhbid0IHRha2UgdGhlIGFkZHJlc3Mgb2YgYW4gcnZhbHVlLCB0aGUgZ3V0cyBvZgotLy8gaXNfbXV0YWJsZV9pdGVyYXRvcl9pbXBsIHdpbGwgZmFpbCBpZiB3ZSB1c2UgJip0IGRpcmVjdGx5LiAgVGhpcwotLy8gbWFrZXMgc3VyZSB3ZSBjYW4gc3RpbGwgd29yayB3aXRoIG5vbi1sdmFsdWUgaXRlcmF0b3JzLgotdGVtcGxhdGUgPGNsYXNzIFQ+IFQqIG11dGFibGVfaXRlcmF0b3JfbHZhbHVlX2hlbHBlcihUJiB4KTsKLWludCBtdXRhYmxlX2l0ZXJhdG9yX2x2YWx1ZV9oZWxwZXIoLi4uKTsKLQotCi0vLyBUaGlzIG9uZSBkZXRlY3RzIG91dHB1dCBpdGVyYXRvcnMgc3VjaCBhcyBvc3RyZWFtX2l0ZXJhdG9yIHdoaWNoCi0vLyByZXR1cm4gcmVmZXJlbmNlcyB0byB0aGVtc2VsdmVzLgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci10eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfbXV0YWJsZV9pdGVyYXRvcl9oZWxwZXIoVCBjb25zdCosIFQgY29uc3QqKTsKLQotdHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfbXV0YWJsZV9pdGVyYXRvcl9oZWxwZXIoLi4uKTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfbXV0YWJsZV9pdGVyYXRvcl9pbXBsCi17Ci0gICAgc3RhdGljIFQgdDsKLSAgICAKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gc2l6ZW9mKAotICAgICAgICAgICAgZGV0YWlsOjppc19tdXRhYmxlX2l0ZXJhdG9yX2hlbHBlcigKLSAgICAgICAgICAgICAgICAoVCopMAotICAgICAgICAgICAgICAsIG11dGFibGVfaXRlcmF0b3JfbHZhbHVlX2hlbHBlcigqdCkgLy8gbGlrZSAmKnQKLSAgICAgICAgICAgICkpCi0gICAgICAgID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgKTsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoCi0gICAgaXNfbXV0YWJsZV9pdGVyYXRvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfbXV0YWJsZV9pdGVyYXRvcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotCi0vLyBpc19mdWxsX2l0ZXJhdG9yX3RyYWl0cyAtLQotLy8KLS8vICAgQSBtZXRhZnVuY3Rpb24gcmV0dXJuaW5nIHRydWUgaWZmIFQgaGFzIGFsbCB0aGUgcmVxdWlzaXRlIG5lc3RlZAotLy8gICB0eXBlcyB0byBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMgZm9yIGEgZnVsbHktY29uZm9ybWluZwotLy8gICBpdGVyYXRvcl90cmFpdHMgaW1wbGVtZW50YXRpb24uCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19mdWxsX2l0ZXJhdG9yX3RyYWl0c19pbXBsCi17Ci0gICAgZW51bSB7IHZhbHVlID0gCi0gICAgICAgICAgIGhhc192YWx1ZV90eXBlPFQ+Ojp2YWx1ZSAKLSAgICAgICAgICAgJiBoYXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSAKLSAgICAgICAgICAgJiBoYXNfcG9pbnRlcjxUPjo6dmFsdWUgCi0gICAgICAgICAgICYgaGFzX2RpZmZlcmVuY2VfdHlwZTxUPjo6dmFsdWUKLSAgICAgICAgICAgJiBoYXNfaXRlcmF0b3JfY2F0ZWdvcnk8VD46OnZhbHVlCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoCi0gICAgaXNfZnVsbF9pdGVyYXRvcl90cmFpdHMsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2Z1bGxfaXRlcmF0b3JfdHJhaXRzX2ltcGw8VD46OnZhbHVlKQotCi0KLSMgICBpZmRlZiBORE5CT09TVF9CQURfQ09OVEFJTkVSX0lURVJBVE9SX0NBVEVHT1JZX1RZUEVERUYKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihfSXRlcmF0b3JfY2F0ZWdvcnkpCi0gICAgCi0vLyBpc19zdGxwb3J0XzQwX2RlYnVnX2l0ZXJhdG9yIC0tCi0vLwotLy8gICBBIG1ldGFmdW5jdGlvbiByZXR1cm5pbmcgdHJ1ZSBpZmYgVCBoYXMgYWxsIHRoZSByZXF1aXNpdGUgbmVzdGVkCi0vLyAgIHR5cGVzIHRvIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cyBvZiBhbiBTVExQb3J0IDQuMCBkZWJ1ZyBpdGVyYXRvcgotLy8gICBpdGVyYXRvcl90cmFpdHMgaW1wbGVtZW50YXRpb24uCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19zdGxwb3J0XzQwX2RlYnVnX2l0ZXJhdG9yX2ltcGwKLXsKLSAgICBlbnVtIHsgdmFsdWUgPSAKLSAgICAgICAgICAgaGFzX3ZhbHVlX3R5cGU8VD46OnZhbHVlIAotICAgICAgICAgICAmIGhhc19yZWZlcmVuY2U8VD46OnZhbHVlIAotICAgICAgICAgICAmIGhhc19wb2ludGVyPFQ+Ojp2YWx1ZSAKLSAgICAgICAgICAgJiBoYXNfZGlmZmVyZW5jZV90eXBlPFQ+Ojp2YWx1ZQotICAgICAgICAgICAmIGhhc19fSXRlcmF0b3JfY2F0ZWdvcnk8VD46OnZhbHVlCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoCi0gICAgaXNfc3RscG9ydF80MF9kZWJ1Z19pdGVyYXRvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfc3RscG9ydF80MF9kZWJ1Z19pdGVyYXRvcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3Qgc3RscG9ydF80MF9kZWJ1Z19pdGVyYXRvcl90cmFpdHMKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpwb2ludGVyIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6X0l0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLSMgICBlbmRpZiAvLyBORE5CT09TVF9CQURfQ09OVEFJTkVSX0lURVJBVE9SX0NBVEVHT1JZX1RZUEVERUYgCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM7Ci0KLSMgICBpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8VCo+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY29uc3Q8VD46OnR5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIFQqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotfTsKLSMgICBlbHNlCi0KLS8vIEluIGNhc2Ugb2Ygbm8gdGVtcGxhdGUgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgYW5kIGlmIFQgaXMgYQotLy8gcG9pbnRlciwgaXRlcmF0b3JfdHJhaXRzPFQ+Ojp2YWx1ZV90eXBlIGNhbiBzdGlsbCBiZSBjb21wdXRlZC4gIEZvcgotLy8gc29tZSBiYXNpYyB0eXBlcywgcmVtb3ZlX3BvaW50ZXIgaXMgbWFudWFsbHkgZGVmaW5lZCBpbgotLy8gdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwLiBGb3Igb3RoZXJzLCBkbyBpdCB5b3Vyc2VsZi4KLQotdGVtcGxhdGU8Y2xhc3MgUD4gY2xhc3MgcGxlYXNlX2ludm9rZV9ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQ19vbl9jdl91bnF1YWxpZmllZF9wb2ludGVlOwotCi10ZW1wbGF0ZTxjbGFzcyBQPgotc3RydWN0IHBvaW50ZXJfdmFsdWVfdHlwZQotICA6IG1wbDo6aWZfPAotICAgICAgICBpc19zYW1lPFAsIHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyPFA+Ojp0eXBlPgotICAgICAgLCBwbGVhc2VfaW52b2tlX05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX29uX2N2X3VucXVhbGlmaWVkX3BvaW50ZWU8UD4KLSAgICAgICwgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0PAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXI8UD46OnR5cGUKLSAgICAgICAgPjo6dHlwZQotICAgID4KLXsKLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgUD4KLXN0cnVjdCBwb2ludGVyX3JlZmVyZW5jZQotICA6IG1wbDo6aWZfPAotICAgICAgICBpc19zYW1lPFAsIHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyPFA+Ojp0eXBlPgotICAgICAgLCBwbGVhc2VfaW52b2tlX05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX29uX2N2X3VucXVhbGlmaWVkX3BvaW50ZWU8UD4KLSAgICAgICwgdHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXI8UD46OnR5cGUmCi0gICAgPgotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcG9pbnRlcl9pdGVyYXRvcl90cmFpdHMKLXsKLSAgICB0eXBlZGVmIFQgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHBvaW50ZXJfdmFsdWVfdHlwZTxUPjo6dHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcG9pbnRlcl9yZWZlcmVuY2U8VD46OnR5cGUgcmVmZXJlbmNlOwotfTsKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotLy8gV2UnbGwgc29ydCBpdGVyYXRvciB0eXBlcyBpbnRvIG9uZSBvZiB0aGVzZSBjbGFzc2lmaWNhdGlvbnMsIGZyb20gd2hpY2ggd2UKLS8vIGNhbiBkZXRlcm1pbmUgdGhlIGRpZmZlcmVuY2VfdHlwZSwgcG9pbnRlciwgcmVmZXJlbmNlLCBhbmQgdmFsdWVfdHlwZQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IHN0YW5kYXJkX2l0ZXJhdG9yX3RyYWl0cwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IG1zdmNfc3RkbGliX211dGFibGVfdHJhaXRzCi0gICAgOiBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6ZGlzdGFuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBtc3ZjX3N0ZGxpYl9jb25zdF90cmFpdHMKLSAgICA6IHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaXN0YW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIGNvbnN0IHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSogcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSYgcmVmZXJlbmNlOwotfTsKLQotIyAgIGlmZGVmIE5ETkJPT1NUX0JBRF9PVVRQVVRfSVRFUkFUT1JfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBpc19iYWRfb3V0cHV0X2l0ZXJhdG9yCi0gICAgOiBpc19iYXNlX2FuZF9kZXJpdmVkPAotICAgICAgICBzdGQ6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyx2b2lkLHZvaWQsdm9pZCx2b2lkPgotICAgICAgICAsIEl0ZXJhdG9yPgotewotfTsKLQotc3RydWN0IGJhZF9vdXRwdXRfaXRlcmF0b3JfdHJhaXRzCi17Ci0gICAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB2b2lkIGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIHZvaWQgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHZvaWQgcmVmZXJlbmNlOwotfTsKLSMgICBlbmRpZgotCi0vLyBJZiB3ZSdyZSBsb29raW5nIGF0IGFuIE1TVkM2IChvbGQgRGlua3Vtd2FyZSkgYGBzdGFuZGFyZCcnCi0vLyBpdGVyYXRvciwgdGhpcyB3aWxsIGdlbmVyYXRlIGFuIGFwcHJvcHJpYXRlIHRyYWl0cyBjbGFzcy4gCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgbXN2Y19zdGRsaWJfaXRlcmF0b3JfdHJhaXRzCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICBpc19tdXRhYmxlX2l0ZXJhdG9yPEl0ZXJhdG9yPgotICAgICAgICwgbXN2Y19zdGRsaWJfbXV0YWJsZV90cmFpdHM8SXRlcmF0b3I+Ci0gICAgICAgLCBtc3ZjX3N0ZGxpYl9jb25zdF90cmFpdHM8SXRlcmF0b3I+Ci0gICAgICA+Ojp0eXBlCi17fTsKLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IG5vbl9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0cwotICAgIDogbXBsOjppZl88Ci0gICAgICAgIC8vIGlmIHRoZSBpdGVyYXRvciBjb250YWlucyBhbGwgdGhlIHJpZ2h0IG5lc3RlZCB0eXBlcy4uLgotICAgICAgICBpc19mdWxsX2l0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj4KLSAgICAgICAgLy8gVXNlIGEgc3RhbmRhcmQgaXRlcmF0b3JfdHJhaXRzIGltcGxlbWVudGF0aW9uCi0gICAgICAgICwgc3RhbmRhcmRfaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgotIyAgIGlmZGVmIE5ETkJPT1NUX0JBRF9DT05UQUlORVJfSVRFUkFUT1JfQ0FURUdPUllfVFlQRURFRgotICAgICAgICAvLyBDaGVjayBmb3IgU1RMUG9ydCA0LjAgYnJva2VuIF9JdGVyYXRvcl9jYXRlZ29yeSB0eXBlCi0gICAgICAgICwgbXBsOjppZl88Ci0gICAgICAgICAgICAgaXNfc3RscG9ydF80MF9kZWJ1Z19pdGVyYXRvcjxJdGVyYXRvcj4KLSAgICAgICAgICAgICAsIHN0bHBvcnRfNDBfZGVidWdfaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgotIyAgIGVuZGlmCi0gICAgICAgIC8vIE90aGVyd2lzZSwgYXNzdW1lIGl0J3MgYSBEaW5rdW0gaXRlcmF0b3IKLSAgICAgICAgLCBtc3ZjX3N0ZGxpYl9pdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ci0jICAgaWZkZWYgTkROQk9PU1RfQkFEX0NPTlRBSU5FUl9JVEVSQVRPUl9DQVRFR09SWV9UWVBFREVGCi0gICAgICAgID46OnR5cGUKLSMgICBlbmRpZiAKLSAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzX2F1eAotICAgIDogbXBsOjppZl88Ci0gICAgICAgIGlzX3BvaW50ZXI8SXRlcmF0b3I+Ci0gICAgICAgICwgcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ci0gICAgICAgICwgbm9uX3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgotICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBpdGVyYXRvcl90cmFpdHMKLXsKLSAgICAvLyBFeHBsaWNpdCBmb3J3YXJkaW5nIGZyb20gYmFzZSBjbGFzcyBuZWVkZWQgdG8ga2VlcCBNU1ZDNiBoYXBweQotICAgIC8vIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcy4KLSBwcml2YXRlOgotIyAgIGlmZGVmIE5ETkJPT1NUX0JBRF9PVVRQVVRfSVRFUkFUT1JfU1BFQ0lBTElaQVRJT04KLSAgICB0eXBlZGVmIAotICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICBpc19iYWRfb3V0cHV0X2l0ZXJhdG9yPEl0ZXJhdG9yPgotICAgICAgICAsIGJhZF9vdXRwdXRfaXRlcmF0b3JfdHJhaXRzCi0gICAgICAgICwgaXRlcmF0b3JfdHJhaXRzX2F1eDxJdGVyYXRvcj4KLSAgICA+Ojp0eXBlIGJhc2U7Ci0jICAgZWxzZQotICAgIHR5cGVkZWYgaXRlcmF0b3JfdHJhaXRzX2F1eDxJdGVyYXRvcj4gYmFzZTsKLSMgICBlbmRpZgotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci19OwotCi0vLyBUaGlzIHNwZWNpYWxpemF0aW9uIGN1dHMgb2ZmIEVUSSAoRWFybHkgVGVtcGxhdGUgSW5zdGFudGlhdGlvbikgZm9yIE1TVkMuCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPGludD4KLXsKLSAgICB0eXBlZGVmIGludCB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgaW50IHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBpbnQgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgaW50IGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIGludCBpdGVyYXRvcl9jYXRlZ29yeTsKLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZGV0YWlsCi0KLSMgIGVuZGlmIC8vIHdvcmthcm91bmRzCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi1uYW1lc3BhY2UgaXRlcmF0b3JfdHJhaXRzXwotewotICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIERpZmZlcmVuY2U+Ci0gIHN0cnVjdCBkaXN0YW5jZV9zZWxlY3QKLSAgewotICAgICAgc3RhdGljIERpZmZlcmVuY2UgZXhlY3V0ZShJdGVyYXRvciBpMSwgY29uc3QgSXRlcmF0b3IgaTIsIC4uLikKLSAgICAgIHsKLSAgICAgICAgICBEaWZmZXJlbmNlIHJlc3VsdCA9IDA7Ci0gICAgICAgICAgd2hpbGUgKGkxICE9IGkyKQotICAgICAgICAgIHsKLSAgICAgICAgICAgICAgKytpMTsKLSAgICAgICAgICAgICAgKytyZXN1bHQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0KLSAgICAgIHN0YXRpYyBEaWZmZXJlbmNlIGV4ZWN1dGUoSXRlcmF0b3IgaTEsIGNvbnN0IEl0ZXJhdG9yIGkyLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKikKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gaTIgLSBpMTsKLSAgICAgIH0KLSAgfTsKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0c18KLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQotZGlzdGFuY2UoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgZGlmZl90OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgICAKLSAgICByZXR1cm4gaXRlcmF0b3JfdHJhaXRzXzo6ZGlzdGFuY2Vfc2VsZWN0PEl0ZXJhdG9yLGRpZmZfdD46OmV4ZWN1dGUoCi0gICAgICAgIGZpcnN0LCBsYXN0LCAoaXRlcmF0b3JfY2F0ZWdvcnkqKTApOwotfQotCi19fQotCi0jIGVuZGlmCi0KLQotIyB1bmRlZiBORE5CT09TVF9CQURfQ09OVEFJTkVSX0lURVJBVE9SX0NBVEVHT1JZX1RZUEVERUYKLSMgdW5kZWYgTkROQk9PU1RfQkFEX09VVFBVVF9JVEVSQVRPUl9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gSVRFUkFUT1JfTkROQk9PU1RfRFdBMTIyNjAwX0hQUF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2xjYXN0X3ByZWNpc2lvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9sY2FzdF9wcmVjaXNpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjBiMmFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2xjYXN0X3ByZWNpc2lvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IEFsZXhhbmRlciBOYXNvbm92ICYgUGF1bCBBLiBCcmlzdG93IDIwMDYuCi0KLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0vLyBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfTENBU1RfUFJFQ0lTSU9OX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfTENBU1RfUFJFQ0lTSU9OX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8Y2xpbWl0cz4KLSNpbmNsdWRlIDxpb3M+Ci0jaW5jbHVkZSA8bGltaXRzPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLS8vIEZpeCBmb3IgU0Y6MTM1ODYwMCAtIGxleGljYWxfY2FzdCAmIHB1cmUgdmlydHVhbCBmdW5jdGlvbnMgJiBWQyA4IFNUTAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTKSB8fCBcCi0gIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDPDEzMTApKQotCi0jZGVmaW5lIE5ETkJPT1NUX0xDQVNUX05PX0NPTVBJTEVfVElNRV9QUkVDSVNJT04KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTENBU1RfTk9fQ09NUElMRV9USU1FX1BSRUNJU0lPTgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jZWxzZQotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi1jbGFzcyBsY2FzdF9hYnN0cmFjdF9zdHViIHt9OwotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX0NPTVBJTEVfVElNRV9QUkVDSVNJT04KLS8vIENhbGN1bGF0ZSBhbiBhcmd1bWVudCB0byBwYXNzIHRvIHN0ZDo6aW9zX2Jhc2U6OnByZWNpc2lvbiBmcm9tCi0vLyBsZXhpY2FsX2Nhc3QuIFNlZSBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBmb3IgYnJva2VuIHN0YW5kYXJkCi0vLyBsaWJyYXJpZXMgaW4gbGNhc3RfZ2V0X3ByZWNpc2lvbiBiZWxvdy4gS2VlcCB0aGVtIGluIHN5bmMsIHBsZWFzZS4KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgbGNhc3RfcHJlY2lzaW9uCi17Ci0jaWZkZWYgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSAgICB0eXBlZGVmIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4gbGltaXRzOyAvLyBObyBmaXggZm9yIFNGOjEzNTg2MDAuCi0jZWxzZQotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl88Ci0gICAgICAgIG5kbmJvb3N0Ojppc19hYnN0cmFjdDxUPgotICAgICAgLCBzdGQ6Om51bWVyaWNfbGltaXRzPGxjYXN0X2Fic3RyYWN0X3N0dWI+Ci0gICAgICAsIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4KLSAgICAgID46OnR5cGUgbGltaXRzOwotI2VuZGlmCi0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdXNlX2RlZmF1bHRfcHJlY2lzaW9uID0KLSAgICAgICAgICAgICFsaW1pdHM6OmlzX3NwZWNpYWxpemVkIHx8IGxpbWl0czo6aXNfZXhhY3QKLSAgICAgICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19zcGVjaWFsaXplZF9iaW4gPQotICAgICAgICAgICAgIXVzZV9kZWZhdWx0X3ByZWNpc2lvbiAmJgotICAgICAgICAgICAgbGltaXRzOjpyYWRpeCA9PSAyICYmIGxpbWl0czo6ZGlnaXRzID4gMAotICAgICAgICApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NwZWNpYWxpemVkX2RlYyA9Ci0gICAgICAgICAgICAhdXNlX2RlZmF1bHRfcHJlY2lzaW9uICYmCi0gICAgICAgICAgICBsaW1pdHM6OnJhZGl4ID09IDEwICYmIGxpbWl0czo6ZGlnaXRzMTAgPiAwCi0gICAgICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzdHJlYW1zaXplLCBzdHJlYW1zaXplX21heCA9Ci0gICAgICAgICAgICBuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8c3RkOjpzdHJlYW1zaXplPjo6Y29uc3RfbWF4Ci0gICAgICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQgaW50LCBwcmVjaXNpb25fZGVjID0gbGltaXRzOjpkaWdpdHMxMCArIDFVKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIWlzX3NwZWNpYWxpemVkX2RlYyB8fAotICAgICAgICAgICAgcHJlY2lzaW9uX2RlYyA8PSBzdHJlYW1zaXplX21heCArIDBVTAotICAgICAgICApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkIGxvbmcsIHByZWNpc2lvbl9iaW4gPQotICAgICAgICAgICAgMlVMICsgbGltaXRzOjpkaWdpdHMgKiAzMDEwM1VMIC8gMTAwMDAwVUwKLSAgICAgICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIWlzX3NwZWNpYWxpemVkX2JpbiB8fAotICAgICAgICAgICAgKGxpbWl0czo6ZGlnaXRzICsgMFVMIDwgVUxPTkdfTUFYIC8gMzAxMDNVTCAmJgotICAgICAgICAgICAgcHJlY2lzaW9uX2JpbiA+IGxpbWl0czo6ZGlnaXRzMTAgKyAwVUwgJiYKLSAgICAgICAgICAgIHByZWNpc2lvbl9iaW4gPD0gc3RyZWFtc2l6ZV9tYXggKyAwVUwpCi0gICAgICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzdHJlYW1zaXplLCB2YWx1ZSA9Ci0gICAgICAgICAgICBpc19zcGVjaWFsaXplZF9iaW4gPyBwcmVjaXNpb25fYmluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc19zcGVjaWFsaXplZF9kZWMgPyBwcmVjaXNpb25fZGVjIDogNgotICAgICAgICApOwotfTsKLSNlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBsY2FzdF9nZXRfcHJlY2lzaW9uKFQqID0gMCkKLXsKLSNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fQ09NUElMRV9USU1FX1BSRUNJU0lPTgotICAgIHJldHVybiBsY2FzdF9wcmVjaXNpb248VD46OnZhbHVlOwotI2Vsc2UgLy8gRm9sbG93IGxjYXN0X3ByZWNpc2lvbiBhbGdvcml0aG0gYXQgcnVuLXRpbWU6Ci0KLSNpZmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotICAgIHR5cGVkZWYgc3RkOjpudW1lcmljX2xpbWl0czxUPiBsaW1pdHM7IC8vIE5vIGZpeCBmb3IgU0Y6MTM1ODYwMC4KLSNlbHNlCi0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptcGw6OmlmXzwKLSAgICAgICAgbmRuYm9vc3Q6OmlzX2Fic3RyYWN0PFQ+Ci0gICAgICAsIHN0ZDo6bnVtZXJpY19saW1pdHM8bGNhc3RfYWJzdHJhY3Rfc3R1Yj4KLSAgICAgICwgc3RkOjpudW1lcmljX2xpbWl0czxUPgotICAgICAgPjo6dHlwZSBsaW1pdHM7Ci0jZW5kaWYKLQotICAgIGJvb2wgY29uc3QgdXNlX2RlZmF1bHRfcHJlY2lzaW9uID0KLSAgICAgICAgIWxpbWl0czo6aXNfc3BlY2lhbGl6ZWQgfHwgbGltaXRzOjppc19leGFjdDsKLQotICAgIGlmKCF1c2VfZGVmYXVsdF9wcmVjaXNpb24pCi0gICAgeyAvLyBJbmNsdWRlcyBhbGwgYnVpbHQtaW4gZmxvYXRpbmctcG9pbnQgdHlwZXMsIGZsb2F0LCBkb3VibGUgLi4uCi0gICAgICAvLyBhbmQgVURUIHR5cGVzIGZvciB3aGljaCBkaWdpdHMgKHNpZ25pZmljYW5kIGJpdHMpIGlzIGRlZmluZWQgKG5vdCB6ZXJvKQotCi0gICAgICAgIGJvb2wgY29uc3QgaXNfc3BlY2lhbGl6ZWRfYmluID0KLSAgICAgICAgICAgIGxpbWl0czo6cmFkaXggPT0gMiAmJiBsaW1pdHM6OmRpZ2l0cyA+IDA7Ci0gICAgICAgIGJvb2wgY29uc3QgaXNfc3BlY2lhbGl6ZWRfZGVjID0KLSAgICAgICAgICAgIGxpbWl0czo6cmFkaXggPT0gMTAgJiYgbGltaXRzOjpkaWdpdHMxMCA+IDA7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBjb25zdCBzdHJlYW1zaXplX21heCA9Ci0gICAgICAgICAgICAobmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHN0ZDo6c3RyZWFtc2l6ZT46Om1heCkoKTsKLQotICAgICAgICBpZihpc19zcGVjaWFsaXplZF9iaW4pCi0gICAgICAgIHsgLy8gRmxvYXRpbmctcG9pbnQgdHlwZXMgd2l0aAotICAgICAgICAgIC8vIGxpbWl0czo6ZGlnaXRzIGRlZmluZWQgYnkgdGhlIHNwZWNpYWxpemF0aW9uLgotCi0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNvbnN0IGRpZ2l0cyA9IGxpbWl0czo6ZGlnaXRzOwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb25zdCBwcmVjaXNpb24gPSAyVUwgKyBkaWdpdHMgKiAzMDEwM1VMIC8gMTAwMDAwVUw7Ci0gICAgICAgICAgICAvLyB1bnNpZ25lZCBsb25nIGlzIHNlbGVjdGVkIGJlY2F1c2UgaXQgaXMgYXQgbGVhc3QgMzItYml0cwotICAgICAgICAgICAgLy8gYW5kIHRodXMgVUxPTkdfTUFYIC8gMzAxMDNVTCBpcyBiaWcgZW5vdWdoIGZvciBhbGwgdHlwZXMuCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoCi0gICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA8IFVMT05HX01BWCAvIDMwMTAzVUwgJiYKLSAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uID4gbGltaXRzOjpkaWdpdHMxMCArIDBVTCAmJgotICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24gPD0gc3RyZWFtc2l6ZV9tYXggKyAwVUwKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgcmV0dXJuIHByZWNpc2lvbjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGlzX3NwZWNpYWxpemVkX2RlYykKLSAgICAgICAgeyAgIC8vIERlY2ltYWwgRmxvYXRpbmctcG9pbnQgdHlwZSwgbW9zdCBsaWtlbHkgYSBVc2VyIERlZmluZWQgVHlwZQotICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gYSByZWFsIGZsb2F0aW5nLXBvaW50IGhhcmR3YXJlIHR5cGUuCi0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgY29uc3QgcHJlY2lzaW9uID0gbGltaXRzOjpkaWdpdHMxMCArIDFVOwotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHByZWNpc2lvbiA8PSBzdHJlYW1zaXplX21heCArIDBVTCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJlY2lzaW9uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gSW50ZWdyYWwgdHlwZSAoZm9yIHdoaWNoIHByZWNpc2lvbiBoYXMgbm8gZWZmZWN0KQotICAgIC8vIG9yIHR5cGUgVCBmb3Igd2hpY2ggbGltaXRzIGlzIE5PVCBzcGVjaWFsaXplZCwKLSAgICAvLyBzbyBhc3N1bWUgc3RyZWFtIHByZWNpc2lvbiByZW1haW5zIHRoZSBkZWZhdWx0IDYgZGVjaW1hbCBkaWdpdHMuCi0gICAgLy8gV2FybmluZzogaWYgeW91ciBVc2VyLWRlZmluZWQgRmxvYXRpbmctcG9pbnQgdHlwZSBUIGlzIE5PVCBzcGVjaWFsaXplZCwKLSAgICAvLyB0aGVuIHlvdSBtYXkgbG9zZSBhY2N1cmFjeSBieSBvbmx5IHVzaW5nIDYgZGVjaW1hbCBkaWdpdHMuCi0gICAgLy8gVG8gYXZvaWQgdGhpcywgeW91IG5lZWQgdG8gc3BlY2lhbGl6ZSBUIHdpdGggZWl0aGVyCi0gICAgLy8gcmFkaXggPT0gMiBhbmQgZGlnaXRzID09IHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbmQgYml0cywKLSAgICAvLyBPUgotICAgIC8vIHJhZGl4ID0gMTAgYW5kIGRpZ2l0czEwID09IHRoZSBudW1iZXIgb2YgZGVjaW1hbCBkaWdpdHMuCi0KLSAgICByZXR1cm4gNjsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHZvaWQgbGNhc3Rfc2V0X3ByZWNpc2lvbihzdGQ6Omlvc19iYXNlJiBzdHJlYW0sIFQqKQotewotICAgIHN0cmVhbS5wcmVjaXNpb24obGNhc3RfZ2V0X3ByZWNpc2lvbjxUPigpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgU291cmNlLCBjbGFzcyBUYXJnZXQ+Ci1pbmxpbmUgdm9pZCBsY2FzdF9zZXRfcHJlY2lzaW9uKHN0ZDo6aW9zX2Jhc2UmIHN0cmVhbSwgU291cmNlKiwgVGFyZ2V0KikKLXsKLSAgICBzdGQ6OnN0cmVhbXNpemUgY29uc3QgcyA9IGxjYXN0X2dldF9wcmVjaXNpb24oc3RhdGljX2Nhc3Q8U291cmNlKj4oMCkpOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSBjb25zdCB0ID0gbGNhc3RfZ2V0X3ByZWNpc2lvbihzdGF0aWNfY2FzdDxUYXJnZXQqPigwKSk7Ci0gICAgc3RyZWFtLnByZWNpc2lvbihzID4gdCA/IHMgOiB0KTsKLX0KLQotfX0KLQotI2VuZGlmIC8vICBORE5CT09TVF9ERVRBSUxfTENBU1RfUFJFQ0lTSU9OX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4NjBjMWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfbXV0ZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfTElHSFRXRUlHSFRfTVVURVhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcCAtIGxpZ2h0d2VpZ2h0IG11dGV4Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2xpZ2h0d2VpZ2h0X3Rlc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfdGVzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZTdjZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfdGVzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfTElHSFRXRUlHSFRfVEVTVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0xJR0hUV0VJR0hUX1RFU1RfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9saWdodHdlaWdodF90ZXN0LmhwcCAtIGxpZ2h0d2VpZ2h0IHRlc3QgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgKDIpIEJlbWFuIERhd2VzIDIwMTAsIDIwMTEKLS8vICBDb3B5cmlnaHQgKDMpIElvbiBHYXp0YW5hZ2EgMjAxMwotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gICAgLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gICAgSWYgZXhwcmVzc2lvbiBpcyBmYWxzZSBpbmNyZWFzZXMgdGhlIGVycm9yIGNvdW50IAotLy8gICAgYW5kIG91dHB1dHMgYSBtZXNzYWdlIGNvbnRhaW5pbmcgJ2V4cHJlc3Npb24nCi0vLwotLy8gIE5ETkJPT1NUX1RFU1QoZXhwcmVzc2lvbikKLS8vCi0vLyAgICAtLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyAgICBJbmNyZWFzZXMgZXJyb3IgY291bnQgYW5kIG91dHB1dHMgYSBtZXNzYWdlIGNvbnRhaW5pbmcgJ21lc3NhZ2UnCi0vLwotLy8gIE5ETkJPT1NUX0VSUk9SKG1lc3NhZ2UpCi0vLwotLy8gICAgLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gICAgSWYgJ2V4cHIxJyAhPSAnZXhwcjInIGluY3JlYXNlcyB0aGUgZXJyb3IgY291bnQgCi0vLyAgICBhbmQgb3V0cHV0cyBhIG1lc3NhZ2UgY29udGFpbmluZyBib3RoIGV4cHJlc3Npb25zCi0vLwotLy8gIE5ETkJPT1NUX1RFU1RfRVEoZXhwcjEsIGV4cHIyKQotLy8KLS8vICAgIC0tLS0tLS0tLS0tLS0tLQotLy8KLS8vICAgIElmICdleHByMScgPT0gJ2V4cHIyJyBpbmNyZWFzZXMgdGhlIGVycm9yIGNvdW50IAotLy8gICAgYW5kIG91dHB1dHMgYSBtZXNzYWdlIGNvbnRhaW5pbmcgYm90aCBleHByZXNzaW9ucwotLy8KLS8vICBORE5CT09TVF9URVNUX05FKGV4cHIxLCBleHByMikKLS8vCi0vLyAgICAtLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyAgICBJZiBORE5CT09TVF9OT19FWENFUFRJT05TIGlzIE5PVCBkZWZpbmVkIGFuZCBpZiAnZXhwcicgZG9lcyBub3QKLS8vICAgIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0eXBlICdleGNlcCcsIGluY3JlYXNlcyB0aGUgZXJyb3IgY291bnQKLS8vICAgIGFuZCBvdXRwdXRzIGEgbWVzc2FnZSBjb250YWluaW5nIHRoZSBleHByZXNzaW9uLgotLy8KLS8vICAgIElmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMgaXMgZGVmaW5lZCwgdGhpcyBtYWNybyBleHBhbmRzIHRvIG5vdGhpbmcKLS8vICAgIGFuZCAnZXhwcicgaXMgbm90IGV2YWx1YXRlZC4KLS8vCi0vLyAgTkROQk9PU1RfVEVTVF9USFJPV1MoZXhwciwgZXhjZXApCi0vLwotLy8gICAgLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gICAgUmV0dXJucyB0aGUgZXJyb3IgY291bnQKLS8vCi0vLyAgaW50IG5kbmJvb3N0OjpyZXBvcnRfZXJyb3JzKCkKLS8vCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9ub19leGNlcHRpb25zX3N1cHBvcnQuaHBwPgotCi0vLyAgSURFJ3MgbGlrZSBWaXN1YWwgU3R1ZGlvIHBlcmZvcm0gYmV0dGVyIGlmIG91dHB1dCBnb2VzIHRvIHN0ZDo6Y291dCBvcgotLy8gIHNvbWUgb3RoZXIgc3RyZWFtLCBzbyBhbGxvdyB1c2VyIHRvIGNvbmZpZ3VyZSBvdXRwdXQgc3RyZWFtOgotI2lmbmRlZiBORE5CT09TVF9MSUdIVFdFSUdIVF9URVNUX09TVFJFQU0KLSMgZGVmaW5lIE5ETkJPT1NUX0xJR0hUV0VJR0hUX1RFU1RfT1NUUkVBTSBzdGQ6OmNlcnIKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1zdHJ1Y3QgcmVwb3J0X2Vycm9yc19yZW1pbmRlcgotewotICBib29sIGNhbGxlZF9yZXBvcnRfZXJyb3JzX2Z1bmN0aW9uOwotICByZXBvcnRfZXJyb3JzX3JlbWluZGVyKCkgOiBjYWxsZWRfcmVwb3J0X2Vycm9yc19mdW5jdGlvbihmYWxzZSkge30KLSB+cmVwb3J0X2Vycm9yc19yZW1pbmRlcigpCi0gIHsKLSAgICBORE5CT09TVF9BU1NFUlQoY2FsbGVkX3JlcG9ydF9lcnJvcnNfZnVuY3Rpb24pOyAgLy8gdmVyaWZ5IHJlcG9ydF9lcnJvcnMoKSB3YXMgY2FsbGVkICAKLSAgfQotfTsKLQotaW5saW5lIHJlcG9ydF9lcnJvcnNfcmVtaW5kZXImIHJlcG9ydF9lcnJvcnNfcmVtaW5kKCkKLXsKLSAgc3RhdGljIHJlcG9ydF9lcnJvcnNfcmVtaW5kZXIgcjsKLSAgcmV0dXJuIHI7Ci19Ci0KLWlubGluZSBpbnQgJiB0ZXN0X2Vycm9ycygpCi17Ci0gICAgc3RhdGljIGludCB4ID0gMDsKLSAgICByZXBvcnRfZXJyb3JzX3JlbWluZCgpOwotICAgIHJldHVybiB4OwotfQotCi1pbmxpbmUgdm9pZCB0ZXN0X2ZhaWxlZF9pbXBsKGNoYXIgY29uc3QgKiBleHByLCBjaGFyIGNvbnN0ICogZmlsZSwgaW50IGxpbmUsIGNoYXIgY29uc3QgKiBmdW5jdGlvbikKLXsKLSAgICBORE5CT09TVF9MSUdIVFdFSUdIVF9URVNUX09TVFJFQU0KLSAgICAgIDw8IGZpbGUgPDwgIigiIDw8IGxpbmUgPDwgIik6IHRlc3QgJyIgPDwgZXhwciA8PCAiJyBmYWlsZWQgaW4gZnVuY3Rpb24gJyIKLSAgICAgIDw8IGZ1bmN0aW9uIDw8ICInIiA8PCBzdGQ6OmVuZGw7Ci0gICAgKyt0ZXN0X2Vycm9ycygpOwotfQotCi1pbmxpbmUgdm9pZCBlcnJvcl9pbXBsKGNoYXIgY29uc3QgKiBtc2csIGNoYXIgY29uc3QgKiBmaWxlLCBpbnQgbGluZSwgY2hhciBjb25zdCAqIGZ1bmN0aW9uKQotewotICAgIE5ETkJPT1NUX0xJR0hUV0VJR0hUX1RFU1RfT1NUUkVBTQotICAgICAgPDwgZmlsZSA8PCAiKCIgPDwgbGluZSA8PCAiKTogIiA8PCBtc2cgPDwgIiBpbiBmdW5jdGlvbiAnIgotICAgICAgPDwgZnVuY3Rpb24gPDwgIiciIDw8IHN0ZDo6ZW5kbDsKLSAgICArK3Rlc3RfZXJyb3JzKCk7Ci19Ci0KLWlubGluZSB2b2lkIHRocm93X2ZhaWxlZF9pbXBsKGNoYXIgY29uc3QgKiBleGNlcCwgY2hhciBjb25zdCAqIGZpbGUsIGludCBsaW5lLCBjaGFyIGNvbnN0ICogZnVuY3Rpb24pCi17Ci0gICBORE5CT09TVF9MSUdIVFdFSUdIVF9URVNUX09TVFJFQU0KLSAgICA8PCBmaWxlIDw8ICIoIiA8PCBsaW5lIDw8ICIpOiBFeGNlcHRpb24gJyIgPDwgZXhjZXAgPDwgIicgbm90IHRocm93biBpbiBmdW5jdGlvbiAnIgotICAgIDw8IGZ1bmN0aW9uIDw8ICInIiA8PCBzdGQ6OmVuZGw7Ci0gICArK3Rlc3RfZXJyb3JzKCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSB2b2lkIHRlc3RfZXFfaW1wbCggY2hhciBjb25zdCAqIGV4cHIxLCBjaGFyIGNvbnN0ICogZXhwcjIsCi0gIGNoYXIgY29uc3QgKiBmaWxlLCBpbnQgbGluZSwgY2hhciBjb25zdCAqIGZ1bmN0aW9uLCBUIGNvbnN0ICYgdCwgVSBjb25zdCAmIHUgKQotewotICAgIGlmKCB0ID09IHUgKQotICAgIHsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTElHSFRXRUlHSFRfVEVTVF9PU1RSRUFNCi0gICAgICAgICAgICA8PCBmaWxlIDw8ICIoIiA8PCBsaW5lIDw8ICIpOiB0ZXN0ICciIDw8IGV4cHIxIDw8ICIgPT0gIiA8PCBleHByMgotICAgICAgICAgICAgPDwgIicgZmFpbGVkIGluIGZ1bmN0aW9uICciIDw8IGZ1bmN0aW9uIDw8ICInOiAiCi0gICAgICAgICAgICA8PCAiJyIgPDwgdCA8PCAiJyAhPSAnIiA8PCB1IDw8ICInIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICsrdGVzdF9lcnJvcnMoKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSB2b2lkIHRlc3RfbmVfaW1wbCggY2hhciBjb25zdCAqIGV4cHIxLCBjaGFyIGNvbnN0ICogZXhwcjIsCi0gIGNoYXIgY29uc3QgKiBmaWxlLCBpbnQgbGluZSwgY2hhciBjb25zdCAqIGZ1bmN0aW9uLCBUIGNvbnN0ICYgdCwgVSBjb25zdCAmIHUgKQotewotICAgIGlmKCB0ICE9IHUgKQotICAgIHsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTElHSFRXRUlHSFRfVEVTVF9PU1RSRUFNCi0gICAgICAgICAgICA8PCBmaWxlIDw8ICIoIiA8PCBsaW5lIDw8ICIpOiB0ZXN0ICciIDw8IGV4cHIxIDw8ICIgIT0gIiA8PCBleHByMgotICAgICAgICAgICAgPDwgIicgZmFpbGVkIGluIGZ1bmN0aW9uICciIDw8IGZ1bmN0aW9uIDw8ICInOiAiCi0gICAgICAgICAgICA8PCAiJyIgPDwgdCA8PCAiJyA9PSAnIiA8PCB1IDw8ICInIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICsrdGVzdF9lcnJvcnMoKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1pbmxpbmUgaW50IHJlcG9ydF9lcnJvcnMoKQotewotICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yc19yZW1pbmQoKS5jYWxsZWRfcmVwb3J0X2Vycm9yc19mdW5jdGlvbiA9IHRydWU7Ci0KLSAgICBpbnQgZXJyb3JzID0gZGV0YWlsOjp0ZXN0X2Vycm9ycygpOwotCi0gICAgaWYoIGVycm9ycyA9PSAwICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0xJR0hUV0VJR0hUX1RFU1RfT1NUUkVBTQotICAgICAgICAgIDw8ICJObyBlcnJvcnMgZGV0ZWN0ZWQuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBORE5CT09TVF9MSUdIVFdFSUdIVF9URVNUX09TVFJFQU0KLSAgICAgICAgICA8PCBlcnJvcnMgPDwgIiBlcnJvciIgPDwgKGVycm9ycyA9PSAxPyAiIjogInMiKSA8PCAiIGRldGVjdGVkLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVChleHByKSAoKGV4cHIpPyAodm9pZCkwOiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRlc3RfZmFpbGVkX2ltcGwoI2V4cHIsIF9fRklMRV9fLCBfX0xJTkVfXywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTikpCi0jZGVmaW5lIE5ETkJPT1NUX0VSUk9SKG1zZykgOjpuZG5ib29zdDo6ZGV0YWlsOjplcnJvcl9pbXBsKG1zZywgX19GSUxFX18sIF9fTElORV9fLCBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OKQotI2RlZmluZSBORE5CT09TVF9URVNUX0VRKGV4cHIxLGV4cHIyKSAoIDo6bmRuYm9vc3Q6OmRldGFpbDo6dGVzdF9lcV9pbXBsKCNleHByMSwgI2V4cHIyLCBfX0ZJTEVfXywgX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIGV4cHIxLCBleHByMikgKQotI2RlZmluZSBORE5CT09TVF9URVNUX05FKGV4cHIxLGV4cHIyKSAoIDo6bmRuYm9vc3Q6OmRldGFpbDo6dGVzdF9uZV9pbXBsKCNleHByMSwgI2V4cHIyLCBfX0ZJTEVfXywgX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIGV4cHIxLCBleHByMikgKQotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAjZGVmaW5lIE5ETkJPT1NUX1RFU1RfVEhST1dTKCBFWFBSLCBFWENFUCApICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBFWFBSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OnRocm93X2ZhaWxlZF9pbXBsICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAoI0VYQ0VQLCBfX0ZJTEVfXywgX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04pOyBcCi0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBjYXRjaChFWENFUCBjb25zdCYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBjYXRjaCguLi4pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OnRocm93X2ZhaWxlZF9pbXBsICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAoI0VYQ0VQLCBfX0ZJTEVfXywgX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04pOyBcCi0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAvLwotI2Vsc2UKLSAgICNkZWZpbmUgTkROQk9PU1RfVEVTVF9USFJPV1MoIEVYUFIsIEVYQ0VQICkKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfTElHSFRXRUlHSFRfVEVTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL25vX2V4Y2VwdGlvbnNfc3VwcG9ydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9ub19leGNlcHRpb25zX3N1cHBvcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzdiMThjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL25vX2V4Y2VwdGlvbnNfc3VwcG9ydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9OT19FWENFUFRJT05TX1NVUFBPUlRfSFBQXwotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fRVhDRVBUSU9OU19TVVBQT1JUX0hQUF8KLQotI2lmIChkZWZpbmVkIF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAoQykgQ29weXJpZ2h0IDIwMDQgUGF2ZWwgVm96ZW5pbGVrLgotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0vLyBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGhlbHBlciBtYWNyb3MgdXNlZCB3aGVuIGV4Y2VwdGlvbiBzdXBwb3J0IG1heSBiZQotLy8gZGlzYWJsZWQgKGFzIGluZGljYXRlZCBieSBtYWNybyBORE5CT09TVF9OT19FWENFUFRJT05TKS4KLS8vCi0vLyBCZWZvcmUgcGlja2luZyB1cCB0aGVzZSBtYWNyb3MgeW91IG1heSBjb25zaWRlciB1c2luZyBSQUlJIHRlY2huaXF1ZXMKLS8vIHRvIGRlYWwgd2l0aCBleGNlcHRpb25zIC0gdGhlaXIgc3ludGF4IGNhbiBiZSBhbHdheXMgdGhlIHNhbWUgd2l0aCAKLS8vIG9yIHdpdGhvdXQgZXhjZXB0aW9uIHN1cHBvcnQgZW5hYmxlZC4KLS8vCi0KLS8qIEV4YW1wbGUgb2YgdXNlOgotCi12b2lkIGZvbygpIHsKLSAgTkROQk9PU1RfVFJZIHsKLSAgICAuLi4KLSAgfSBORE5CT09TVF9DQVRDSChjb25zdCBzdGQ6OmJhZF9hbGxvYyYpIHsKLSAgICAgIC4uLgotICAgICAgTkROQk9PU1RfUkVUSFJPVwotICB9IE5ETkJPT1NUX0NBVENIKGNvbnN0IHN0ZDo6ZXhjZXB0aW9uJiBlKSB7Ci0gICAgICAuLi4KLSAgfQotICBORE5CT09TVF9DQVRDSF9FTkQKLX0KLQotV2l0aCBleGNlcHRpb24gc3VwcG9ydCBlbmFibGVkIGl0IHdpbGwgZXhwYW5kIGludG86Ci0KLXZvaWQgZm9vKCkgewotICB7IHRyeSB7Ci0gICAgLi4uCi0gIH0gY2F0Y2ggKGNvbnN0IHN0ZDo6YmFkX2FsbG9jJikgewotICAgICAgLi4uCi0gICAgICB0aHJvdzsKLSAgfSBjYXRjaCAoY29uc3Qgc3RkOjpleGNlcHRpb24mIGUpIHsKLSAgICAgIC4uLgotICB9Ci0gIH0KLX0KLQotV2l0aCBleGNlcHRpb24gc3VwcG9ydCBkaXNhYmxlZCBpdCB3aWxsIGV4cGFuZCBpbnRvOgotCi12b2lkIGZvbygpIHsKLSAgeyBpZih0cnVlKSB7Ci0gICAgLi4uCi0gIH0gZWxzZSBpZiAoZmFsc2UpIHsKLSAgICAgIC4uLgotICB9IGVsc2UgaWYgKGZhbHNlKSAgewotICAgICAgLi4uCi0gIH0KLSAgfQotfQotKi8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhKGRlZmluZWQgTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RSWSB7IHRyeQotIyAgICBkZWZpbmUgTkROQk9PU1RfQ0FUQ0goeCkgY2F0Y2goeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1JFVEhST1cgdGhyb3c7Ci0jICAgIGRlZmluZSBORE5CT09TVF9DQVRDSF9FTkQgfQotI2Vsc2UKLSMgICAgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFJZIHsgaWYgKCIiKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0NBVENIKHgpIGVsc2UgaWYgKCEiIikKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RSWSB7IGlmICh0cnVlKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0NBVENIKHgpIGVsc2UgaWYgKGZhbHNlKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUkVUSFJPVwotIyAgICBkZWZpbmUgTkROQk9PU1RfQ0FUQ0hfRU5EIH0KLSNlbmRpZgotCi0KLSNlbmRpZiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL29iX2NhbGxfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL29iX2NhbGxfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRiYmIwYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9vYl9jYWxsX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eSBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgQ3JpcHBsZWQgdmVyc2lvbiBmb3IgY3JpcHBsZWQgY29tcGlsZXJzOgotLy8gIHNlZSBsaWJzL3V0aWxpdHkvY2FsbF90cmFpdHMuaHRtCi0vLwotCi0vKiBSZWxlYXNlIG5vdGVzOgotICAgMDFzdCBPY3RvYmVyIDIwMDA6Ci0gICAgICBGaXhlZCBjYWxsX3RyYWl0cyBvbiBWQzYsIHVzaW5nICJwb29yIG1hbidzIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24iLAotICAgICAgdXNpbmcgaWRlYXMgdGFrZW4gZnJvbSAiR2VuZXJhdGl2ZSBwcm9ncmFtbWluZyIgYnkgS3J6eXN6dG9mIEN6YXJuZWNraSAKLSAgICAgICYgVWxyaWNoIEVpc2VuZWNrZXIuCi0qLwotCi0jaWZuZGVmIE5ETkJPT1NUX09CX0NBTExfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9PQl9DQUxMX1RSQUlUU19IUFAKLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0FSSVRITUVUSUNfVFlQRV9UUkFJVFNfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYXJpdGhtZXRpY190cmFpdHMuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0NPTVBPU0lURV9UWVBFX1RSQUlUU19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb21wb3NpdGVfdHJhaXRzLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTCi0vLwotLy8gdXNlIG1lbWJlciB0ZW1wbGF0ZXMgdG8gZW11bGF0ZQotLy8gcGFydGlhbCBzcGVjaWFsaXNhdGlvbjoKLS8vCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBzdGFuZGFyZF9jYWxsX3RyYWl0cwotewotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUJiBwYXJhbV90eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHNpbXBsZV9jYWxsX3RyYWl0cwotewotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUIHBhcmFtX3R5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2NhbGxfdHJhaXRzCi17Ci0gICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgVCByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIFQgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBUIHBhcmFtX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBwb2ludGVyLCBib29sIGFyaXRobWV0aWMsIGJvb2wgcmVmZXJlbmNlPgotc3RydWN0IGNhbGxfdHJhaXRzX2Nob29zZXIKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBzdGFuZGFyZF9jYWxsX3RyYWl0czxUPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgY2FsbF90cmFpdHNfY2hvb3Nlcjx0cnVlLCBmYWxzZSwgZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgc2ltcGxlX2NhbGxfdHJhaXRzPFQ+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBjYWxsX3RyYWl0c19jaG9vc2VyPGZhbHNlLCBmYWxzZSwgdHJ1ZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiByZWZlcmVuY2VfY2FsbF90cmFpdHM8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBzaXplX2lzX3NtYWxsPiAKLXN0cnVjdCBjYWxsX3RyYWl0c19zaXplb2ZfY2hvb3NlcjIKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHNtYWxsX3JlYmluZAotICAgewotICAgICAgdHlwZWRlZiBzaW1wbGVfY2FsbF90cmFpdHM8VD4gc21hbGxfdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IAotc3RydWN0IGNhbGxfdHJhaXRzX3NpemVvZl9jaG9vc2VyMjxmYWxzZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHNtYWxsX3JlYmluZAotICAgewotICAgICAgdHlwZWRlZiBzdGFuZGFyZF9jYWxsX3RyYWl0czxUPiBzbWFsbF90eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgY2FsbF90cmFpdHNfY2hvb3NlcjxmYWxzZSwgdHJ1ZSwgZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIGVudW0geyBzaXplb2ZfY2hvaWNlID0gKHNpemVvZihUKSA8PSBzaXplb2Yodm9pZCopKSB9OwotICAgICAgdHlwZWRlZiBjYWxsX3RyYWl0c19zaXplb2ZfY2hvb3NlcjI8KHNpemVvZihUKSA8PSBzaXplb2Yodm9pZCopKT4gY2hvb3NlcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hvb3Nlcjo6dGVtcGxhdGUgc21hbGxfcmViaW5kPFQ+IGJvdW5kX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGJvdW5kX3R5cGU6OnNtYWxsX3R5cGUgdHlwZTsKLSAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGNhbGxfdHJhaXRzCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgZGV0YWlsOjpjYWxsX3RyYWl0c19jaG9vc2VyPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSwgCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICA+IGNob29zZXI7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGNob29zZXI6OnRlbXBsYXRlIHJlYmluZDxUPiBib3VuZF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBib3VuZF90eXBlOjp0eXBlIGNhbGxfdHJhaXRzX3R5cGU7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzX3R5cGU6OnZhbHVlX3R5cGUgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHNfdHlwZTo6cmVmZXJlbmNlICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzX3R5cGU6OmNvbnN0X3JlZmVyZW5jZSAgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBjYWxsX3RyYWl0c190eXBlOjpwYXJhbV90eXBlICAgICAgIHBhcmFtX3R5cGU7Ci19OwotCi0jZWxzZQotLy8KLS8vIHNvcnJ5IGNhbGxfdHJhaXRzIGlzIGNvbXBsZXRlbHkgbm9uLWZ1bmN0aW9uYWwKLS8vIGJsYW1lIHlvdXIgYnJva2VuIGNvbXBpbGVyOgotLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHMKLXsKLSAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IFQmIGNvbnN0X3JlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgcGFyYW1fdHlwZTsKLX07Ci0KLSNlbmRpZiAvLyBtZW1iZXIgdGVtcGxhdGVzCi0KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX09CX0NBTExfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvcmVmZXJlbmNlX2NvbnRlbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvcmVmZXJlbmNlX2NvbnRlbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOThkNGVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3JlZmVyZW5jZV9jb250ZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBib29zdCBkZXRhaWwvcmVmZXJlbmNlX2NvbnRlbnQuaHBwIGhlYWRlciBmaWxlCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMwotLy8gRXJpYyBGcmllZG1hbgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfUkVGRVJFTkNFX0NPTlRFTlRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9SRUZFUkVOQ0VfQ09OVEVOVF9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotIyAgIGluY2x1ZGUgIm5kbmJvb3N0L21wbC9ib29sLmhwcCIKLSMgICBpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb3B5LmhwcCIKLSNlbHNlCi0jICAgaW5jbHVkZSAibmRuYm9vc3QvbXBsL2lmLmhwcCIKLSMgICBpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwIgotI2VuZGlmCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvdm9pZC5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAoZGV0YWlsKSBjbGFzcyB0ZW1wbGF0ZSByZWZlcmVuY2VfY29udGVudAotLy8KLS8vIE5vbi1Bc3NpZ25hYmxlIHdyYXBwZXIgZm9yIHJlZmVyZW5jZXMuCi0vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFJlZlQ+Ci1jbGFzcyByZWZlcmVuY2VfY29udGVudAotewotcHJpdmF0ZTogLy8gcmVwcmVzZW50YXRpb24KLQotICAgIFJlZlQgY29udGVudF87Ci0KLXB1YmxpYzogLy8gc3RydWN0b3JzCi0KLSAgICB+cmVmZXJlbmNlX2NvbnRlbnQoKQotICAgIHsKLSAgICB9Ci0KLSAgICByZWZlcmVuY2VfY29udGVudChSZWZUIHIpCi0gICAgICAgIDogY29udGVudF8oIHIgKQotICAgIHsKLSAgICB9Ci0KLSAgICByZWZlcmVuY2VfY29udGVudChjb25zdCByZWZlcmVuY2VfY29udGVudCYgb3BlcmFuZCkKLSAgICAgICAgOiBjb250ZW50Xyggb3BlcmFuZC5jb250ZW50XyApCi0gICAgewotICAgIH0KLQotcHJpdmF0ZTogLy8gbm9uLUFzc2lnbmFibGUKLQotICAgIHJlZmVyZW5jZV9jb250ZW50JiBvcGVyYXRvcj0oY29uc3QgcmVmZXJlbmNlX2NvbnRlbnQmKTsKLQotcHVibGljOiAvLyBxdWVyaWVzCi0KLSAgICBSZWZUIGdldCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29udGVudF87Ci0gICAgfQotCi19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAoZGV0YWlsKSBtZXRhZnVuY3Rpb24gbWFrZV9yZWZlcmVuY2VfY29udGVudAotLy8KLS8vIFdyYXBzIHdpdGggcmVmZXJlbmNlX2NvbnRlbnQgaWYgc3BlY2lmaWVkIHR5cGUgaXMgcmVmZXJlbmNlLgotLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBtcGw6OnZvaWRfPiBzdHJ1Y3QgbWFrZV9yZWZlcmVuY2VfY29udGVudDsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IG1ha2VfcmVmZXJlbmNlX2NvbnRlbnQKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IG1ha2VfcmVmZXJlbmNlX2NvbnRlbnQ8IFQmID4KLXsKLSAgICB0eXBlZGVmIHJlZmVyZW5jZV9jb250ZW50PFQmPiB0eXBlOwotfTsKLQotI2Vsc2UgLy8gZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBtYWtlX3JlZmVyZW5jZV9jb250ZW50Ci0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19yZWZlcmVuY2U8VD4KLSAgICAgICAgLCByZWZlcmVuY2VfY29udGVudDxUPgotICAgICAgICAsIFQKLSAgICAgICAgPgotewotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gd29ya2Fyb3VuZAotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IG1ha2VfcmVmZXJlbmNlX2NvbnRlbnQ8IG1wbDo6dm9pZF8gPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IG1ha2VfcmVmZXJlbmNlX2NvbnRlbnQ8VD4KLSAgICB7Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgbXBsOjp2b2lkXyB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIHJlZmVyZW5jZV9jb250ZW50PFQmPiB0eXBlIHRyYWl0cyBzcGVjaWFsaXphdGlvbnMKLS8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfbm90aHJvd19jb3B5PAotICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjpyZWZlcmVuY2VfY29udGVudDwgVCYgPgotICAgID4KLSAgICA6IG1wbDo6dHJ1ZV8KLXsKLX07Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfREVUQUlMX1JFRkVSRU5DRV9DT05URU5UX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvc2NvcGVkX2VudW1fZW11bGF0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3Njb3BlZF9lbnVtX2VtdWxhdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMmY1OTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvc2NvcGVkX2VudW1fZW11bGF0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzNyArMCwwIEBACi0vLyAgc2NvcGVkX2VudW1fZW11bGF0aW9uLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcywgMjAwOQotLy8gIENvcHlyaWdodCAoQykgMjAxMS0yMDEyIFZpY2VudGUgSi4gQm90ZXQgRXNjcmliYQotLy8gIENvcHlyaWdodCAoQykgMjAxMiBBbnRob255IFdpbGxpYW1zCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vKgotW3NlY3Rpb246c2NvcGVkX2VudW1zIFNjb3BlZCBFbnVtc10KLQotR2VuZXJhdGVzIEMrKzB4IHNjb3BlZCBlbnVtcyBpZiB0aGUgZmVhdHVyZSBpcyBwcmVzZW50LCBvdGhlcndpc2UgZW11bGF0ZXMgQysrMHgKLXNjb3BlZCBlbnVtcyB3aXRoIEMrKzAzIG5hbWVzcGFjZXMgYW5kIGVudW1zLiBUaGUgQm9vc3QuQ29uZmlnIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotbWFjcm8gaXMgdXNlZCB0byBkZXRlY3QgZmVhdHVyZSBzdXBwb3J0LgotCi1TZWUgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMjEvZG9jcy9wYXBlcnMvMjAwNy9uMjM0Ny5wZGYgZm9yIGEKLWRlc2NyaXB0aW9uIG9mIHRoZSBzY29wZWQgZW51bSBmZWF0dXJlLiBOb3RlIHRoYXQgdGhlIGNvbW1pdHRlZSBjaGFuZ2VkIHRoZSBuYW1lCi1mcm9tIHN0cm9uZ2x5IHR5cGVkIGVudW0gdG8gc2NvcGVkIGVudW0uCi0KLVNvbWUgb2YgdGhlIGVudW1lcmF0aW9ucyBkZWZpbmVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGFyZSBzY29wZWQgZW51bXMuCi0KLSAgZW51bSBjbGFzcyBmdXR1cmVfZXJyYwotICB7Ci0gICAgICBicm9rZW5fcHJvbWlzZSwKLSAgICAgIGZ1dHVyZV9hbHJlYWR5X3JldHJpZXZlZCwKLSAgICAgIHByb21pc2VfYWxyZWFkeV9zYXRpc2ZpZWQsCi0gICAgICBub19zdGF0ZQotICB9OwotCi1PbiBjb21waWxlcnMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZW0sIHRoZSBsaWJyYXJ5IHByb3ZpZGVzIHR3byBlbXVsYXRpb25zOgotCi1baGVhZGluZyBTdHJpY3RdCi0KLSogQWJsZSB0byBzcGVjaWZ5IHRoZSB1bmRlcmx5aW5nIHR5cGUuCi0qIGV4cGxpY2l0IGNvbnZlcnNpb24gdG8vZnJvbSB1bmRlcmx5aW5nIHR5cGUuCi0qIFRoZSB3cmFwcGVyIGlzIG5vdCBhIEMrKzAzIGVudW0gdHlwZS4KLQotVGhlIHVzZXIgY2FuIGRlY2xhcmUgIGRlY2xhcmUgdGhlc2UgdHlwZXMgYXMKLQotICBORE5CT09TVF9TQ09QRURfRU5VTV9ERUNMQVJFX0JFR0lOKGZ1dHVyZV9lcnJjKQotICB7Ci0gICAgICBicm9rZW5fcHJvbWlzZSwKLSAgICAgIGZ1dHVyZV9hbHJlYWR5X3JldHJpZXZlZCwKLSAgICAgIHByb21pc2VfYWxyZWFkeV9zYXRpc2ZpZWQsCi0gICAgICBub19zdGF0ZQotICB9Ci0gIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfRU5EKGZ1dHVyZV9lcnJjKQotCi1UaGVzZSBtYWNyb3MgYWxsb3dzIHRvIHVzZSAnZnV0dXJlX2VycmMnIGluIGFsbW9zdCBhbGwgdGhlIGNhc2VzIGFzIGFuIHNjb3BlZCBlbnVtLgotCi0gIGZ1dHVyZV9lcnJjIGVyciA9IGZ1dHVyZV9lcnJjOjpub19zdGF0ZTsKLQotVGhlcmUgYXJlIGhvd2V2ZXIgc29tZSBsaW1pdGF0aW9uczoKLQotKiBUaGUgdHlwZSBpcyBub3QgYSBDKysgZW51bSwgc28gJ2lzX2VudW08ZnV0dXJlX2VycmM+JyB3aWxsIGJlIGZhbHNlX3R5cGUuCi0qIFRoZSBlbXVsYXRlZCBzY29wZWQgZW51bSBjYW4gbm90IGJlIHVzZWQgaW4gc3dpdGNoIG5vciBpbiB0ZW1wbGF0ZSBhcmd1bWVudHMuIEZvciB0aGVzZSBjYXNlcyB0aGUgdXNlciBuZWVkcyB0byB1c2Ugc29tZSBtYWNyb3MuCi0KLUluc3RlYWQgb2YKLQotICAgICAgICBzd2l0Y2ggKGV2KQotICAgICAgICB7Ci0gICAgICAgIGNhc2UgZnV0dXJlX2VycmM6OmJyb2tlbl9wcm9taXNlOgotICAvLyAuLi4KLQotdXNlCi0KLSAgICAgICAgc3dpdGNoIChuZG5ib29zdDo6bmF0aXZlX3ZhbHVlKGV2KSkKLSAgICAgICAgewotICAgICAgICBjYXNlIGZ1dHVyZV9lcnJjOjpicm9rZW5fcHJvbWlzZToKLQotQW5kIGluc3RlYWQgb2YKLQotICAgICNpZmRlZiBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBORE5CT09TVF9TWU1CT0xfVklTSUJMRSBpc19lcnJvcl9jb2RlX2VudW08ZnV0dXJlX2VycmM+IDogcHVibGljIHRydWVfdHlwZSB7IH07Ci0gICAgI2VuZGlmCi0KLXVzZQotCi0gICAgI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIGlzX2Vycm9yX2NvZGVfZW51bTxmdXR1cmVfZXJyYzo6ZW51bV90eXBlID4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKLSAgICAjZW5kaWYKLQotCi1TYW1wbGUgdXNhZ2U6Ci0KLSAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU1fVVRfREVDTEFSRV9CRUdJTihhbGdhZSwgY2hhcikgeyBncmVlbiwgcmVkLCBjeWFuIH07IE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfRU5EKGFsZ2FlKQotICAgICAuLi4KLSAgICAgYWxnYWUgc2FtcGxlKCBhbGdhZTo6cmVkICk7Ci0gICAgIHZvaWQgZm9vKCBhbGdhZSBjb2xvciApOwotICAgICAuLi4KLSAgICAgc2FtcGxlID0gYWxnYWU6OmdyZWVuOwotICAgICBmb28oIGFsZ2FlOjpjeWFuICk7Ci0KLSBMaWdodAotICBDYXV0aW9uOiBvbmx5IHRoZSBzeW50YXggaXMgZW11bGF0ZWQ7IHRoZSBzZW1hbnRpY3MgYXJlIG5vdCBlbXVsYXRlZCBhbmQKLSAgdGhlIHN5bnRheCBlbXVsYXRpb24gZG9lc24ndCBpbmNsdWRlIGJlaW5nIGFibGUgdG8gc3BlY2lmeSB0aGUgdW5kZXJseWluZwotICByZXByZXNlbnRhdGlvbiB0eXBlLgotCi0gIFRoZSBsaXRlcmFsIHNjb3BlZCBlbXVsYXRpb24gaXMgdmlhIHN0cnVjdCByYXRoZXIgdGhhbiBuYW1lc3BhY2UgdG8gYWxsb3cgdXNlIHdpdGhpbiBjbGFzc2VzLgotICBUaGFua3MgdG8gQW5kcmV5IFNlbWFzaGV2IGZvciBwb2ludGluZyB0aGF0IG91dC4KLSAgSG93ZXZlciB0aGUgdHlwZSBpcyBhbiByZWFsIEMrKzAzIGVudW0gYW5kIHNvIGNvbnZlcnRpYmxlIGltcGxpY2l0bHkgdG8gYW4gaW50LgotCi0gIFNhbXBsZSB1c2FnZToKLQotICAgICBORE5CT09TVF9TQ09QRURfRU5VTV9TVEFSVChhbGdhZSkgeyBncmVlbiwgcmVkLCBjeWFuIH07IE5ETkJPT1NUX1NDT1BFRF9FTlVNX0VORAotICAgICAuLi4KLSAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU0oYWxnYWUpIHNhbXBsZSggYWxnYWU6OnJlZCApOwotICAgICB2b2lkIGZvbyggTkROQk9PU1RfU0NPUEVEX0VOVU0oYWxnYWUpIGNvbG9yICk7Ci0gICAgIC4uLgotICAgICBzYW1wbGUgPSBhbGdhZTo6Z3JlZW47Ci0gICAgIGZvbyggYWxnYWU6OmN5YW4gKTsKLQotICBIZWxwZnVsIGNvbW1lbnRzIGFuZCBzdWdnZXN0aW9ucyB3ZXJlIGFsc28gbWFkZSBieSBLamVsbCBFbHN0ZXIsIFBoaWwgRW5kZWNvdHQsCi0gIEpvZWwgRmFsY291LCBNYXRoaWFzIEdhdW5hcmQsIEZlbGlwZSBNYWdubyBkZSBBbG1laWRhLCBNYXR0IENhbGFicmVzZSwgVmljZW50ZQotICBCb3RldCwgYW5kIERhbmllbCBKYW1lcy4KLQotW2VuZHNlY3RdCi0qLwotCi0KLSNpZm5kZWYgTkROQk9PU1RfU0NPUEVEX0VOVU1fRU1VTEFUSU9OX0hQUAotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9FTVVMQVRJT05fSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZmRlZiBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSAgLyoqCi0gICAqIE1ldGEtZnVuY3Rpb24gdG8gZ2V0IHRoZSB1bmRlcmx5aW5nIHR5cGUgb2YgYSBzY29wZWQgZW51bS4KLSAgICoKLSAgICogUmVxdWlyZXMgRW51bVR5cGUgbXVzdCBiZSBhbiBlbnVtIHR5cGUgb3IgdGhlIGVtdWxhdGlvbiBvZiBhIHNjb3BlZCBlbnVtCi0gICAqLwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRW51bVR5cGU+Ci0gIHN0cnVjdCB1bmRlcmx5aW5nX3R5cGUKLSAgewotICAgIC8qKgotICAgICAqIFRoZSBtZW1iZXIgdHlwZWRlZiB0eXBlIG5hbWVzIHRoZSB1bmRlcmx5aW5nIHR5cGUgb2YgRW51bVR5cGUuIEl0IGlzIEVudW1UeXBlOjp1bmRlcmx5aW5nX3R5cGUgd2hlbiB0aGUgRW51bVR5cGUgaXMgYW4gZW11bGF0ZWQgc2NvcGVkIGVudW0sCi0gICAgICogc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bVR5cGU+Ojp0eXBlIHdoZW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgc3RkOjp1bmRlcmx5aW5nX3R5cGUgaXMgcHJvdmlkZWQuCi0gICAgICoKLSAgICAgKiBUaGUgdXNlciB3aWxsIG5lZWQgdG8gc3BlY2lhbGl6ZSBpdCB3aGVuIHRoZSBjb21waWxlciBzdXBwb3J0cyBzY29wZWQgZW51bXMgYnV0IGRvbid0IHByb3ZpZGVzIHN0ZDo6dW5kZXJseWluZ190eXBlLgotICAgICAqLwotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW51bVR5cGU6OnVuZGVybHlpbmdfdHlwZSB0eXBlOwotICB9OwotCi0gIC8qKgotICAgKiBNZXRhLWZ1bmN0aW9uIHRvIGdldCB0aGUgbmF0aXZlIGVudW0gdHlwZSBhc3NvY2lhdGVkIHRvIGFuIGVudW0gY2xhc3Mgb3IgaXRzIGVtdWxhdGlvbi4KLSAgICovCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbnVtVHlwZT4KLSAgc3RydWN0IG5hdGl2ZV90eXBlCi0gIHsKLSAgICAvKioKLSAgICAgKiBUaGUgbWVtYmVyIHR5cGVkZWYgdHlwZSBuYW1lcyB0aGUgbmF0aXZlIGVudW0gdHlwZSBhc3NvY2lhdGVkIHRvIHRoZSBzY29wZWQgZW51bSwKLSAgICAgKiB3aGljaCBpcyBpdCBzZWxmIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBzY29wZWQgZW51bXMgb3IgRW51bVR5cGU6OmVudW1fdHlwZSBpZiBpdCBpcyBhbiBlbXVsYXRlZCBzY29wZWQgZW51bS4KLSAgICAgKi8KLSAgICB0eXBlZGVmIHR5cGVuYW1lIEVudW1UeXBlOjplbnVtX3R5cGUgdHlwZTsKLSAgfTsKLQotICAvKioKLSAgICogQ2FzdHMgYSBzY29wZWQgZW51bSB0byBpdHMgdW5kZXJseWluZyB0eXBlLgotICAgKgotICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIHdvcmtpbmcgd2l0aCBzY29wZWQgZW51bSBjbGFzc2VzLCB3aGljaCBkb2Vucyd0IGltcGxpY2l0bHkgY29udmVydCB0byB0aGUgdW5kZXJseWluZyB0eXBlLgotICAgKiBAcGFyYW0gdiBBIHNjb3BlZCBlbnVtLgotICAgKiBAcmV0dXJucyBUaGUgdW5kZXJseWluZyB0eXBlLgotICAgKiBAdGhyb3dzIE5vLXRocm93cy4KLSAgICovCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVbmRlcmx5aW5nVHlwZSwgdHlwZW5hbWUgRW51bVR5cGU+Ci0gIFVuZGVybHlpbmdUeXBlIHVuZGVybHlpbmdfY2FzdChFbnVtVHlwZSB2KQotICB7Ci0gICAgcmV0dXJuIHYuZ2V0X3VuZGVybHlpbmdfdmFsdWVfKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ2FzdHMgYSBzY29wZWQgZW51bSB0byBpdHMgbmF0aXZlIGVudW0gdHlwZS4KLSAgICoKLSAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG8gbWFrZSBwcm9ncmFtcyBwb3J0YWJsZSB3aGVuIHRoZSBzY29wZWQgZW51bSBlbXVsYXRpb24gY2FuIG5vdCBiZSB1c2Ugd2hlcmUgbmF0aXZlIGVudW1zIGNhbi4KLSAgICoKLSAgICogRW51bVR5cGUgdGhlIHNjb3BlZCBlbnVtIHR5cGUKLSAgICoKLSAgICogQHBhcmFtIHYgQSBzY29wZWQgZW51bS4KLSAgICogQHJldHVybnMgVGhlIG5hdGl2ZSBlbnVtIHZhbHVlLgotICAgKiBAdGhyb3dzIE5vLXRocm93cy4KLSAgICovCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbnVtVHlwZT4KLSAgaW5saW5lCi0gIHR5cGVuYW1lIEVudW1UeXBlOjplbnVtX3R5cGUgbmF0aXZlX3ZhbHVlKEVudW1UeXBlIGUpCi0gIHsKLSAgICByZXR1cm4gZS5uYXRpdmVfdmFsdWVfKCk7Ci0gIH0KLQotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbnVtVHlwZT4KLSAgc3RydWN0IHVuZGVybHlpbmdfdHlwZQotICB7Ci0gICAgLy90eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEVudW1UeXBlPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbnVtVHlwZT4KLSAgc3RydWN0IG5hdGl2ZV90eXBlCi0gIHsKLSAgICB0eXBlZGVmIEVudW1UeXBlIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFVuZGVybHlpbmdUeXBlLCB0eXBlbmFtZSBFbnVtVHlwZT4KLSAgVW5kZXJseWluZ1R5cGUgdW5kZXJseWluZ19jYXN0KEVudW1UeXBlIHYpCi0gIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VW5kZXJseWluZ1R5cGU+KHYpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEVudW1UeXBlPgotICBpbmxpbmUKLSAgRW51bVR5cGUgbmF0aXZlX3ZhbHVlKEVudW1UeXBlIGUpCi0gIHsKLSAgICByZXR1cm4gZTsKLSB9Ci0KLSNlbmRpZgotfQotCi0KLSNpZmRlZiBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1VUX0RFQ0xBUkVfQ09OVkVSU0lPTl9PUEVSQVRPUiBcCi0gICAgIGV4cGxpY2l0IG9wZXJhdG9yIHVuZGVybHlpbmdfdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGdldF91bmRlcmx5aW5nX3ZhbHVlXygpOyB9Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fVVRfREVDTEFSRV9DT05WRVJTSU9OX09QRVJBVE9SCi0KLSNlbmRpZgotCi0vKioKLSAqIFN0YXJ0IGEgZGVjbGFyYXRpb24gb2YgYSBzY29wZWQgZW51bS4KLSAqCi0gKiBAcGFyYW0gRW51bVR5cGUgVGhlIG5ldyBzY29wZWQgZW51bS4KLSAqIEBwYXJhbSBVbmRlcmx5aW5nVHlwZSBUaGUgdW5kZXJseWluZyB0eXBlLgotICovCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1VUX0RFQ0xBUkVfQkVHSU4oRW51bVR5cGUsIFVuZGVybHlpbmdUeXBlKSAgICBcCi0gICAgc3RydWN0IEVudW1UeXBlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgVW5kZXJseWluZ1R5cGUgdW5kZXJseWluZ190eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIEVudW1UeXBlKCkgTkROQk9PU1RfTk9FWENFUFQge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGV4cGxpY2l0IEVudW1UeXBlKHVuZGVybHlpbmdfdHlwZSB2KSA6IHZfKHYpIHt9ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHVuZGVybHlpbmdfdHlwZSBnZXRfdW5kZXJseWluZ192YWx1ZV8oKSBjb25zdCB7IHJldHVybiB2XzsgfSAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU1fVVRfREVDTEFSRV9DT05WRVJTSU9OX09QRVJBVE9SICAgICAgICAgICAgICAgIFwKLSAgICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdW5kZXJseWluZ190eXBlIHZfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZWRlZiBFbnVtVHlwZSBzZWxmX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW51bSBlbnVtX3R5cGUKLQotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9ERUNMQVJFX0VORDIoKSBcCi0gICAgICAgIGVudW1fdHlwZSBnZXRfbmF0aXZlX3ZhbHVlXygpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZSh2Xyk7IH0gXAotICAgICAgICBvcGVyYXRvciBlbnVtX3R5cGUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBnZXRfbmF0aXZlX3ZhbHVlXygpOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPT0oc2VsZl90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk9PWVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPT0oc2VsZl90eXBlIGxocywgZW51bV90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk9PXJoczsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID09KGVudW1fdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGxocz09ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciAhPShzZWxmX3R5cGUgbGhzLCBzZWxmX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKSE9ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciAhPShzZWxmX3R5cGUgbGhzLCBlbnVtX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKSE9cmhzOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgIT0oZW51bV90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gbGhzIT1lbnVtX3R5cGUocmhzLnZfKTsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDwoc2VsZl90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk8ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8KHNlbGZfdHlwZSBsaHMsIGVudW1fdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pPHJoczsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDwoZW51bV90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gbGhzPGVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPD0oc2VsZl90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk8PWVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPD0oc2VsZl90eXBlIGxocywgZW51bV90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk8PXJoczsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDw9KGVudW1fdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGxoczw9ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+KHNlbGZfdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pPmVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPihzZWxmX3R5cGUgbGhzLCBlbnVtX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKT5yaHM7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+KGVudW1fdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGxocz5lbnVtX3R5cGUocmhzLnZfKTsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID49KHNlbGZfdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pPj1lbnVtX3R5cGUocmhzLnZfKTsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID49KHNlbGZfdHlwZSBsaHMsIGVudW1fdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pPj1yaHM7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+PShlbnVtX3R5cGUgbGhzLCBzZWxmX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBsaHM+PWVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfRU5EKEVudW1UeXBlKSBcCi0gICAgOyBcCi0gICAgRW51bVR5cGUoZW51bV90eXBlIHYpIE5ETkJPT1NUX05PRVhDRVBUIDogdl8odikge30gICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9TQ09QRURfRU5VTV9ERUNMQVJFX0VORDIoKQotCi0vKioKLSAqIFN0YXJ0cyBhIGRlY2xhcmF0aW9uIG9mIGEgc2NvcGVkIGVudW0gd2l0aCB0aGUgZGVmYXVsdCBpbnQgdW5kZXJseWluZyB0eXBlLgotICoKLSAqIEBwYXJhbSBFbnVtVHlwZSBUaGUgbmV3IHNjb3BlZCBlbnVtLgotICovCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfQkVHSU4oRW51bVR5cGUpIFwKLSAgTkROQk9PU1RfU0NPUEVEX0VOVU1fVVRfREVDTEFSRV9CRUdJTihFbnVtVHlwZSxpbnQpCi0KLS8qKgotICogTmFtZSBvZiB0aGUgbmF0aXZlIGVudW0gdHlwZS4KLSAqCi0gKiBAcGFyYW0gTlQgVGhlIG5ldyBzY29wZWQgZW51bS4KLSAqLwotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9OQVRJVkUoRW51bVR5cGUpIEVudW1UeXBlOjplbnVtX3R5cGUKLS8qKgotICogRm9yd2FyZCBkZWNsYXJlcyBhbiBzY29wZWQgZW51bS4KLSAqCi0gKiBAcGFyYW0gTlQgVGhlIHNjb3BlZCBlbnVtLgotICovCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0ZPUldBUkRfREVDTEFSRShFbnVtVHlwZSkgc3RydWN0IEVudW1UeXBlCi0KLSNlbHNlICAvLyBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLQotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9VVF9ERUNMQVJFX0JFR0lOKEVudW1UeXBlLFVuZGVybHlpbmdUeXBlKSBlbnVtIGNsYXNzIEVudW1UeXBlOlVuZGVybHlpbmdUeXBlCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfQkVHSU4oRW51bVR5cGUpIGVudW0gY2xhc3MgRW51bVR5cGUKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9FTkQyKCkKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9FTkQoRW51bVR5cGUpIDsKLQotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9OQVRJVkUoRW51bVR5cGUpIEVudW1UeXBlCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0ZPUldBUkRfREVDTEFSRShFbnVtVHlwZSkgZW51bSBjbGFzcyBFbnVtVHlwZQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1NUQVJUKG5hbWUpIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfQkVHSU4obmFtZSkKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fRU5EIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfRU5EMigpCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNKG5hbWUpIE5ETkJPT1NUX1NDT1BFRF9FTlVNX05BVElWRShuYW1lKQotCi0vLyNpZmRlZiBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLS8vCi0vLyMgZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1NUQVJUKG5hbWUpIHN0cnVjdCBuYW1lIHsgZW51bSBlbnVtX3R5cGUKLS8vIyBkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fRU5EIH07Ci0vLyMgZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNKG5hbWUpIG5hbWU6OmVudW1fdHlwZQotLy8KLS8vI2Vsc2UKLS8vCi0vLyMgZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1NUQVJUKG5hbWUpIGVudW0gY2xhc3MgbmFtZQotLy8jIGRlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9FTkQKLS8vIyBkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU0obmFtZSkgbmFtZQotLy8KLS8vI2VuZGlmCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0VNVUxBVElPTl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VkNjNhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfU1BfVFlQRUlORk9fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUF9UWVBFSU5GT19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBkZXRhaWwvc3BfdHlwZWluZm8uaHBwCi0vLwotLy8gIENvcHlyaWdodCAyMDA3IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fVFlQRUlEICkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwX3R5cGVpbmZvCi17Ci1wcml2YXRlOgotCi0gICAgc3BfdHlwZWluZm8oIHNwX3R5cGVpbmZvIGNvbnN0JiApOwotICAgIHNwX3R5cGVpbmZvJiBvcGVyYXRvcj0oIHNwX3R5cGVpbmZvIGNvbnN0JiApOwotCi0gICAgY2hhciBjb25zdCAqIG5hbWVfOwotCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBzcF90eXBlaW5mbyggY2hhciBjb25zdCAqIG5hbWUgKTogbmFtZV8oIG5hbWUgKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oIHNwX3R5cGVpbmZvIGNvbnN0JiByaHMgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMgPT0gJnJoczsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oIHNwX3R5cGVpbmZvIGNvbnN0JiByaHMgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMgIT0gJnJoczsKLSAgICB9Ci0KLSAgICBib29sIGJlZm9yZSggc3BfdHlwZWluZm8gY29uc3QmIHJocyApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpsZXNzPCBzcF90eXBlaW5mbyBjb25zdCogPigpKCB0aGlzLCAmcmhzICk7Ci0gICAgfQotCi0gICAgY2hhciBjb25zdCogbmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbmFtZV87Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNwX3R5cGVpZF8KLXsKLSAgICBzdGF0aWMgc3BfdHlwZWluZm8gdGlfOwotCi0gICAgc3RhdGljIGNoYXIgY29uc3QgKiBuYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OOwotICAgIH0KLX07Ci0KLSNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQotLy8gc2VlICM0MTk5LCB0aGUgU3VuIFN0dWRpbyBjb21waWxlciBnZXRzIGNvbmZ1c2VkIGFib3V0IHN0YXRpYyBpbml0aWFsaXphdGlvbiAKLS8vIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4gQnV0IGFuIGFzc2lnbm1lbnQgd29ya3MganVzdCBmaW5lLiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHNwX3R5cGVpbmZvIHNwX3R5cGVpZF88IFQgPjo6dGlfID0gc3BfdHlwZWlkXzwgVCA+OjpuYW1lKCk7Ci0jZWxzZQotdGVtcGxhdGU8Y2xhc3MgVD4gc3BfdHlwZWluZm8gc3BfdHlwZWlkXzwgVCA+Ojp0aV8oc3BfdHlwZWlkXzwgVCA+OjpuYW1lKCkpOwotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzcF90eXBlaWRfPCBUICYgPjogc3BfdHlwZWlkXzwgVCA+Ci17Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc3BfdHlwZWlkXzwgVCBjb25zdCA+OiBzcF90eXBlaWRfPCBUID4KLXsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzcF90eXBlaWRfPCBUIHZvbGF0aWxlID46IHNwX3R5cGVpZF88IFQgPgotewotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNwX3R5cGVpZF88IFQgY29uc3Qgdm9sYXRpbGUgPjogc3BfdHlwZWlkXzwgVCA+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9TUF9UWVBFSUQoVCkgKG5kbmJvb3N0OjpkZXRhaWw6OnNwX3R5cGVpZF88VD46OnRpXykKLQotI2Vsc2UKLQotI2luY2x1ZGUgPHR5cGVpbmZvPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fU1REX1RZUEVJTkZPICkKLQotdHlwZWRlZiA6OnR5cGVfaW5mbyBzcF90eXBlaW5mbzsKLQotI2Vsc2UKLQotdHlwZWRlZiBzdGQ6OnR5cGVfaW5mbyBzcF90eXBlaW5mbzsKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX1NQX1RZUEVJRChUKSB0eXBlaWQoVCkKLQotI2VuZGlmCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfU1BfVFlQRUlORk9fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdkOTEzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAwMSBSb25hbGQgR2FyY2lhLCBJbmRpYW5hIFVuaXZlcnNpdHkgKGdhcmNpYUBvc2wuaXUuZWR1KQotLy8gQW5kcmV3IEx1bXNkYWluZSwgSW5kaWFuYSBVbml2ZXJzaXR5IChsdW1zQG9zbC5pdS5lZHUpLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueS0KLS8vIGluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVEY4X0NPREVDVlRfRkFDRVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VURjhfQ09ERUNWVF9GQUNFVF9IUFAKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLy8vLy8vLy8xLy8vLy8vLy8vMi8vLy8vLy8vLzMvLy8vLy8vLy80Ly8vLy8vLy8vNS8vLy8vLy8vLzYvLy8vLy8vLy83Ly8vLy8vLy8vOAotLy8gdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcAotCi0vLyBUaGlzIGhlYWRlciBkZWZpbmVzIGNsYXNzIHV0ZjhfY29kZWN2dF9mYWNldCwgZGVyaXZlZCBmcm8gCi0vLyBzdGQ6OmNvZGVjdnQ8d2NoYXJfdCwgY2hhcj4sIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgdXRmOCBkYXRhIGluCi0vLyBmaWxlcyBpbnRvIHdjaGFyX3Qgc3RyaW5ncyBpbiB0aGUgYXBwbGljYXRpb24uCi0vLwotLy8gVGhlIGhlYWRlciBpcyBOT1QgU1RBTkRBTE9ORSwgYW5kIGlzIG5vdCB0byBiZSBpbmNsdWRlZCBieSB0aGUgVVNFUi4KLS8vIFRoZXJlIGFyZSBhdCBsZWFzdCB0d28gbGlicmFyaWVzIHdoaWNoIHdhbnQgdG8gdXNlIHRoaXMgZnVuY3Rpb25hbGl0eSwgYW5kCi0vLyB3ZSB3YW50IHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uIEl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIGNyZWF0ZSB1dGY4Ci0vLyBsaWJyYXJ5LCBidXQ6Ci0vLyAtIHRoaXMgcmVxdWlyZXMgcmV2aWV3IHByb2Nlc3MgZmlyc3QKLS8vIC0gaW4gdGhlIGNhc2UsIHdoZW4gbGlua2luZyB0aGUgYSBsaWJyYXJ5IHdoaWNoIHVzZXMgdXRmOCAKLS8vICAgKHNheSAncHJvZ3JhbV9vcHRpb25zJyksIHVzZXIgc2hvdWxkIGFsc28gbGluayB0byB0aGUgdXRmOCBsaWJyYXJ5LgotLy8gICBUaGlzIHNlZW1zIGluY29udmVuaWVudCwgYW5kIGFza2luZyBhIHVzZXIgdG8gbGluayB0byBhbiB1bnJldmlldmVkIAotLy8gICBsaWJyYXJ5IGlzIHN0cmFuZ2UuIAotLy8gVW50aWwgdGhlIGFib3ZlIHBvaW50cyBhcmUgZml4ZWQsIGEgbGlicmFyeSB3aGljaCB3YW50cyB0byB1c2UgdXRmOCBtdXN0OgotLy8gLSBpbmNsdWRlIHRoaXMgaGVhZGVyIGZyb20gb25lIG9mIGl0J3MgaGVhZGVycyBvciBzb3VyY2VzCi0vLyAtIGluY2x1ZGUgdGhlIGNvcnJlc3BvbmRpbmcgLmNwcCBmaWxlIGZyb20gb25lIG9mIHRoZSBzb3VyY2VzCi0vLyAtIGJlZm9yZSBpbmNsdWRpbmcgZWl0aGVyIGZpbGUsIHRoZSBsaWJyYXJ5IG11c3QgZGVmaW5lCi0vLyAgIC0gTkROQk9PU1RfVVRGOF9CRUdJTl9OQU1FU1BBQ0UgdG8gdGhlIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiB0aGF0IG11c3QgYmUgdXNlZAotLy8gICAtIE5ETkJPT1NUX1VURjhfRU5EX05BTUVTUEFDRSB0byB0aGUgY29kZSB0byBjbG9zZSB0aGUgcHJldmlvdXMgbmFtZXNwYWNlCi0vLyAgIC0gZGVjbGFyYXRpb24uCi0vLyAgIC0gTkROQk9PU1RfVVRGOF9ERUNMIC0tIHRvIHRoZSBjb2RlIHdoaWNoIG11c3QgYmUgdXNlZCBmb3IgYWxsICdleHBvcnRhYmxlJwotLy8gICAgIHN5bWJvbHMuCi0vLwotLy8gRm9yIGV4YW1wbGUsIHByb2dyYW1fb3B0aW9ucyBsaWJyYXJ5IG1pZ2h0IGNvbnRhaW46Ci0vLyAgICAjZGVmaW5lIE5ETkJPT1NUX1VURjhfQkVHSU5fTkFNRVNQQUNFIDxiYWNrc2xhc2ggY2hhcmFjdGVyPiAKLS8vICAgICAgICAgICAgIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBwcm9ncmFtX29wdGlvbnMgewotLy8gICAgI2RlZmluZSBORE5CT09TVF9VVEY4X0VORF9OQU1FU1BBQ0UgfX0KLS8vICAgICNkZWZpbmUgTkROQk9PU1RfVVRGOF9ERUNMIE5ETkJPT1NUX1BST0dSQU1fT1BUSU9OU19ERUNMCi0vLyAgICAjaW5jbHVkZSAiLi4vLi4vZGV0YWlsL3V0ZjgvdXRmOF9jb2RlY3Z0LmNwcCIKLS8vCi0vLyBFc3NlbnRpYWxseSwgZWFjaCBsaWJyYXJ5IHdpbGwgaGF2ZSBpdHMgb3duIGNvcHkgb2YgdXRmOCBjb2RlLCBpbgotLy8gZGlmZmVyZW50IG5hbWVzcGFjZXMuIAotCi0vLyBOb3RlOihSb2JlcnQgUmFtZXkpLiAgSSBoYXZlIG1hZGUgdGhlIGZvbGxvd2luZyBhbHRlcmF0aW9ucyBpbiB0aGUgb3JpZ2luYWwKLS8vIGNvZGUuCi0vLyBhKSBSZW5kZXJlZCB1dGY4X2NvZGVjdnQ8d2NoYXJfdCwgY2hhcj4gIHdpdGggdXNpbmcgdGVtcGxhdGVzCi0vLyBiKSBNb3ZlIGxvbmdlciBmdW5jdGlvbnMgb3V0c2lkZSBjbGFzcyBkZWZpbml0aW9uIHRvIHByZXZlbnQgaW5saW5pbmcKLS8vIGFuZCBtYWtlIGNvZGUgc21hbGxlcgotLy8gYykgYWRkZWQgb24gYSBkZXJpdmVkIGNsYXNzIHRvIHBlcm1pdCB0cmFuc2xhdGlvbiB0by9mcm9tIGN1cnJlbnQKLS8vIGxvY2FsZSB0byB1dGY4Ci0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0vLyBhcmNoaXZlcyBzdG9yZWQgYXMgdGV4dCAtIG5vdGUgdGhlc2UgYXIgdGVtcGxhdGVkIG9uIHRoZSBiYXNpYwotLy8gc3RyZWFtIHRlbXBsYXRlcyB0byBhY2NvbW1vZGF0ZSB3aWRlIChhbmQgb3RoZXI/KSBraW5kIG9mIGNoYXJhY3RlcnMKLS8vCi0vLyBub3RlIHRoZSBmYWN0IHRoYXQgb24gbGlicmFyaWVzIHdpdGhvdXQgd2lkZSBjaGFyYWN0ZXJzLCBvc3RyZWFtIGlzCi0vLyBpcyBub3QgYSBzcGVjaWFsaXphdGlvbiBvZiBiYXNpY19vc3RyZWFtIHdoaWNoIGluIGZhY3QgaXMgbm90IGRlZmluZWQKLS8vIGluIHN1Y2ggY2FzZXMuICAgU28gd2UgY2FuJ3QgdXNlIGJhc2ljX29zdHJlYW08T1N0cmVhbTo6Y2hhcl90eXBlPiBidXQgcmF0aGVyCi0vLyB1c2UgdHdvIHRlbXBsYXRlIHBhcmFtZXRlcnMKLS8vCi0vLyB1dGY4X2NvZGVjdnRfZmFjZXQKLS8vICAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhIHN0ZDo6Y29kZWN2dCBmYWNldCBmb3IgdHJhbnNsYXRpbmcgCi0vLyAgIGZyb20gVVRGLTggZXh0ZXJuYWxseSB0byBVQ1MtNC4gIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCB0aWVkIHRvCi0vLyAgIGFueSBzcGVjaWZpYyB0eXBlcyBpbiBvcmRlciB0byBhbGxvdyBjdXN0b21pemF0aW9uIG9uIHBsYXRmb3JtcwotLy8gICB3aGVyZSB3Y2hhcl90IGlzIG5vdCBiaWcgZW5vdWdoLgotLy8KLS8vIE5PVEVTOiAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24ganVtcHMgdGhyb3VnaCBzb21lIHVucGxlYXNhbnQgaG9vcHMgaW4KLS8vIG9yZGVyIHRvIGRlYWwgd2l0aCBzaWduZWQgY2hhcmFjdGVyIHR5cGVzLiAgQXMgYSBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0LAotLy8gaXQgaXMgbmVjZXNzYXJ5ICBmb3IgdGhlIEV4dGVyblR5cGUgdG8gYmUgY29udmVydGlibGUgdG8gdW5zaWduZWQgIGNoYXIuCi0vLyBJIGNob3NlIG5vdCB0byB0aWUgdGhlIGV4dGVybl90eXBlIGV4cGxpY2l0bHkgdG8gY2hhci4gQnV0IGlmIGFueSBjb21iaW5hdGlvbgotLy8gb2YgdHlwZXMgb3RoZXIgdGhhbiA8d2NoYXJfdCxjaGFyX3Q+IGlzIHVzZWQsIHRoZW4gc3RkOjpjb2RlY3Z0IG11c3QgYmUKLS8vIHNwZWNpYWxpemVkIG9uIHRob3NlIHR5cGVzIGZvciB0aGlzIHRvIHdvcmsuCi0KLSNpbmNsdWRlIDxsb2NhbGU+Ci0jaW5jbHVkZSA8Y3djaGFyPiAgIC8vIGZvciBtYnN0YXRlX3QKLSNpbmNsdWRlIDxjc3RkZGVmPiAgLy8gZm9yIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi1uYW1lc3BhY2Ugc3RkIHsKLSAgICB1c2luZyA6Om1ic3RhdGVfdDsKLSAgICB1c2luZyA6OnNpemVfdDsKLX0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoX19NU0xfQ1BQX18pICYmICFkZWZpbmVkKF9fTElCQ09NT19fKQotICAgICNkZWZpbmUgTkROQk9PU1RfQ09ERUNWVF9ET19MRU5HVEhfQ09OU1QgY29uc3QKLSNlbHNlCi0gICAgI2RlZmluZSBORE5CT09TVF9DT0RFQ1ZUX0RPX0xFTkdUSF9DT05TVAotI2VuZGlmCi0KLS8vIG1heGltdW0gbGVuZ2h0IG9mIGEgbXVsdGlieXRlIHN0cmluZwotI2RlZmluZSBNQl9MRU5HVEhfTUFYIDgKLQotTkROQk9PU1RfVVRGOF9CRUdJTl9OQU1FU1BBQ0UKLQotc3RydWN0IE5ETkJPT1NUX1VURjhfREVDTCB1dGY4X2NvZGVjdnRfZmFjZXQgOgotICAgIHB1YmxpYyBzdGQ6OmNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgc3RkOjptYnN0YXRlX3Q+ICAKLXsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCB1dGY4X2NvZGVjdnRfZmFjZXQoc3RkOjpzaXplX3Qgbm9fbG9jYWxlX21hbmFnZT0wKQotICAgICAgICA6IHN0ZDo6Y29kZWN2dDx3Y2hhcl90LCBjaGFyLCBzdGQ6Om1ic3RhdGVfdD4obm9fbG9jYWxlX21hbmFnZSkgCi0gICAge30KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgZG9faW4oCi0gICAgICAgIHN0ZDo6bWJzdGF0ZV90JiBzdGF0ZSwgCi0gICAgICAgIGNvbnN0IGNoYXIgKiBmcm9tLAotICAgICAgICBjb25zdCBjaGFyICogZnJvbV9lbmQsIAotICAgICAgICBjb25zdCBjaGFyICogJiBmcm9tX25leHQsCi0gICAgICAgIHdjaGFyX3QgKiB0bywgCi0gICAgICAgIHdjaGFyX3QgKiB0b19lbmQsIAotICAgICAgICB3Y2hhcl90KiYgdG9fbmV4dAotICAgICkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgZG9fb3V0KAotICAgICAgICBzdGQ6Om1ic3RhdGVfdCAmIHN0YXRlLCBjb25zdCB3Y2hhcl90ICogZnJvbSwKLSAgICAgICAgY29uc3Qgd2NoYXJfdCAqIGZyb21fZW5kLCBjb25zdCB3Y2hhcl90KiAgJiBmcm9tX25leHQsCi0gICAgICAgIGNoYXIgKiB0bywgY2hhciAqIHRvX2VuZCwgY2hhciAqICYgdG9fbmV4dAotICAgICkgY29uc3Q7Ci0KLSAgICBib29sIGludmFsaWRfY29udGludWluZ19vY3RldCh1bnNpZ25lZCBjaGFyIG9jdGV0XzEpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIChvY3RldF8xIDwgMHg4MHx8IDB4YmY8IG9jdGV0XzEpOwotICAgIH0KLQotICAgIGJvb2wgaW52YWxpZF9sZWFkaW5nX29jdGV0KHVuc2lnbmVkIGNoYXIgb2N0ZXRfMSkgICBjb25zdCB7Ci0gICAgICAgIHJldHVybiAoMHg3ZiA8IG9jdGV0XzEgJiYgb2N0ZXRfMSA8IDB4YzApIHx8Ci0gICAgICAgICAgICAob2N0ZXRfMSA+IDB4ZmQpOwotICAgIH0KLQotICAgIC8vIGNvbnRpbnVpbmcgb2N0ZXRzID0gb2N0ZXRzIGV4Y2VwdCBmb3IgdGhlIGxlYWRpbmcgb2N0ZXQKLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9jb250X29jdGV0X2NvdW50KHVuc2lnbmVkICAgY2hhciBsZWFkX29jdGV0KSB7Ci0gICAgICAgIHJldHVybiBnZXRfb2N0ZXRfY291bnQobGVhZF9vY3RldCkgLSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X29jdGV0X2NvdW50KHVuc2lnbmVkIGNoYXIgICBsZWFkX29jdGV0KTsKLQotICAgIC8vIEhvdyBtYW55ICJjb250aW51aW5nIG9jdGV0cyIgd2lsbCBiZSBuZWVkZWQgZm9yIHRoaXMgd29yZAotICAgIC8vID09ICAgdG90YWwgb2N0ZXRzIC0gMS4KLSAgICBpbnQgZ2V0X2NvbnRfb2N0ZXRfb3V0X2NvdW50KHdjaGFyX3Qgd29yZCkgY29uc3QgOwotCi0gICAgdmlydHVhbCBib29sIGRvX2Fsd2F5c19ub2NvbnYoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICAvLyBVVEYtOCBpc24ndCByZWFsbHkgc3RhdGVmdWwgc2luY2Ugd2UgcmV3aW5kIG9uIHBhcnRpYWwgY29udmVyc2lvbnMKLSAgICB2aXJ0dWFsIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgZG9fdW5zaGlmdCgKLSAgICAgICAgc3RkOjptYnN0YXRlX3QmLAotICAgICAgICBjaGFyICogZnJvbSwKLSAgICAgICAgY2hhciAqIC8qdG8qLywKLSAgICAgICAgY2hhciAqICYgbmV4dAotICAgICkgY29uc3QgCi0gICAgewotICAgICAgICBuZXh0ID0gZnJvbTsKLSAgICAgICAgcmV0dXJuIG9rOwotICAgIH0KLQotICAgIHZpcnR1YWwgaW50IGRvX2VuY29kaW5nKCkgY29uc3QgdGhyb3coKSB7Ci0gICAgICAgIGNvbnN0IGludCB2YXJpYWJsZV9ieXRlX2V4dGVybmFsX2VuY29kaW5nPTA7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZV9ieXRlX2V4dGVybmFsX2VuY29kaW5nOwotICAgIH0KLQotICAgIC8vIEhvdyBtYW55IGNoYXIgb2JqZWN0cyBjYW4gSSBwcm9jZXNzIHRvIGdldCA8PSBtYXhfbGltaXQKLSAgICAvLyB3Y2hhcl90IG9iamVjdHM/Ci0gICAgdmlydHVhbCBpbnQgZG9fbGVuZ3RoKAotICAgICAgICBORE5CT09TVF9DT0RFQ1ZUX0RPX0xFTkdUSF9DT05TVCBzdGQ6Om1ic3RhdGVfdCAmLAotICAgICAgICBjb25zdCBjaGFyICogZnJvbSwKLSAgICAgICAgY29uc3QgY2hhciAqIGZyb21fZW5kLCAKLSAgICAgICAgc3RkOjpzaXplX3QgbWF4X2xpbWl0Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkKLSAgICAgICAgKSBjb25zdCB0aHJvdygpOwotI2Vsc2UKLSAgICAgICAgKSBjb25zdDsKLSNlbmRpZgotCi0gICAgLy8gTGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSBkb19sZW5ndGgoc3RhdGUsZnJvbSxmcm9tX2VuZCwxKSBjb3VsZCByZXR1cm4uCi0gICAgdmlydHVhbCBpbnQgZG9fbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93ICgpIHsKLSAgICAgICAgcmV0dXJuIDY7IC8vIGxhcmdlc3QgVVRGLTggZW5jb2Rpbmcgb2YgYSBVQ1MtNCBjaGFyYWN0ZXIKLSAgICB9Ci19OwotCi1ORE5CT09TVF9VVEY4X0VORF9OQU1FU1BBQ0UKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1VURjhfQ09ERUNWVF9GQUNFVF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGU4OTNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODUgKzAsMCBAQAotLy8vLy8vLy8vMS8vLy8vLy8vLzIvLy8vLy8vLy8zLy8vLy8vLy8vNC8vLy8vLy8vLzUvLy8vLy8vLy82Ly8vLy8vLy8vNy8vLy8vLy8vLzgKLS8vIHV0ZjhfY29kZWN2dF9mYWNldC5pcHAKLQotLy8gQ29weXJpZ2h0IChjKSAyMDAxIFJvbmFsZCBHYXJjaWEsIEluZGlhbmEgVW5pdmVyc2l0eSAoZ2FyY2lhQG9zbC5pdS5lZHUpCi0vLyBBbmRyZXcgTHVtc2RhaW5lLCBJbmRpYW5hIFVuaXZlcnNpdHkgKGx1bXNAb3NsLml1LmVkdSkuIAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gUGxlYXNlIHNlZSB0aGUgY29tbWVudHMgaW4gPG5kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwPiB0bwotLy8gbGVhcm4gaG93IHRoaXMgZmlsZSBzaG91bGQgYmUgdXNlZC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGxpYj4gLy8gZm9yIG11bHRpLWJ5dGUgY29udmVyc29uIHJvdXRpbmVzCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gSWYgd2UgZG9uJ3QgaGF2ZSB3c3RyaW5nLCB0aGVuIFVuaWNvZGUgc3VwcG9ydCAKLS8vIGlzIG5vdCBhdmFpbGFibGUgYW55d2F5LCBzbyB3ZSBkb24ndCBuZWVkIHRvIGV2ZW4KLS8vIGNvbXBpbGVyIHRoaXMgZmlsZS4gVGhpcyBhbHNvIGZpeGVzIHRoZSBwcm9ibGVtCi0vLyB3aXRoIG1pbmd3LCB3aGljaCBjYW4gY29tcGlsZSB0aGlzIGZpbGUsIGJ1dCB3aWxsCi0vLyBnZW5lcmF0ZSBsaW5rIGVycm9yIHdoZW4gYnVpbGRpbmcgRExMLgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfV1NUUklORwotCi1ORE5CT09TVF9VVEY4X0JFR0lOX05BTUVTUEFDRQotCi0vLy8vLy8vLy8xLy8vLy8vLy8vMi8vLy8vLy8vLzMvLy8vLy8vLy80Ly8vLy8vLy8vNS8vLy8vLy8vLzYvLy8vLy8vLy83Ly8vLy8vLy8vOAotLy8gaW1wbGVtZW50YXRpb24gZm9yIHdjaGFyX3QKLQotLy8gVHJhbnNsYXRlIGluY29taW5nIFVURi04IGludG8gVUNTLTQKLXN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgdXRmOF9jb2RlY3Z0X2ZhY2V0Ojpkb19pbigKLSAgICBzdGQ6Om1ic3RhdGVfdCYgLypzdGF0ZSovLCAKLSAgICBjb25zdCBjaGFyICogZnJvbSwKLSAgICBjb25zdCBjaGFyICogZnJvbV9lbmQsIAotICAgIGNvbnN0IGNoYXIgKiAmIGZyb21fbmV4dCwKLSAgICB3Y2hhcl90ICogdG8sIAotICAgIHdjaGFyX3QgKiB0b19lbmQsIAotICAgIHdjaGFyX3QgKiAmIHRvX25leHQKLSkgY29uc3QgewotICAgIC8vIEJhc2ljIGFsZ29yaXRobTogIFRoZSBmaXJzdCBvY3RldCBkZXRlcm1pbmVzIGhvdyBtYW55Ci0gICAgLy8gb2N0ZXRzIHRvdGFsIG1ha2UgdXAgdGhlIFVDUy00IGNoYXJhY3Rlci4gIFRoZSByZW1haW5pbmcKLSAgICAvLyAiY29udGludWluZyBvY3RldHMiIGFsbCBiZWdpbiB3aXRoICIxMCIuIFRvIGNvbnZlcnQsIHN1YnRyYWN0Ci0gICAgLy8gdGhlIGFtb3VudCB0aGF0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIG9jdGV0cyBmcm9tIHRoZSBmaXJzdAotICAgIC8vIG9jdGV0LiAgU3VidHJhY3QgMHg4MCAoMTAwMCAwMDAwKSBmcm9tIGVhY2ggY29udGludWluZyBvY3RldCwKLSAgICAvLyB0aGVuIG1hc2ggdGhlIHdob2xlIGxvdCB0b2dldGhlci4gIE5vdGUgdGhhdCBlYWNoIGNvbnRpbnVpbmcKLSAgICAvLyBvY3RldCBvbmx5IHVzZXMgNiBiaXRzIGFzIHVuaXF1ZSB2YWx1ZXMsIHNvIG9ubHkgc2hpZnQgYnkKLSAgICAvLyBtdWx0aXBsZXMgb2YgNiB0byBjb21iaW5lLgotICAgIHdoaWxlIChmcm9tICE9IGZyb21fZW5kICYmIHRvICE9IHRvX2VuZCkgewotCi0gICAgICAgIC8vIEVycm9yIGNoZWNraW5nICAgb24gdGhlIGZpcnN0IG9jdGV0Ci0gICAgICAgIGlmIChpbnZhbGlkX2xlYWRpbmdfb2N0ZXQoKmZyb20pKXsKLSAgICAgICAgICAgIGZyb21fbmV4dCA9IGZyb207Ci0gICAgICAgICAgICB0b19uZXh0ID0gdG87Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6OmVycm9yOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlIGZpcnN0IG9jdGV0IGlzICAgYWRqdXN0ZWQgYnkgYSB2YWx1ZSBkZXBlbmRlbnQgdXBvbiAKLSAgICAgICAgLy8gdGhlIG51bWJlciAgIG9mICJjb250aW51aW5nIG9jdGV0cyIgZW5jb2RpbmcgdGhlIGNoYXJhY3RlcgotICAgICAgICBjb25zdCAgIGludCBjb250X29jdGV0X2NvdW50ID0gZ2V0X2NvbnRfb2N0ZXRfY291bnQoKmZyb20pOwotICAgICAgICBjb25zdCAgIHdjaGFyX3Qgb2N0ZXQxX21vZGlmaWVyX3RhYmxlW10gPSAgIHsKLSAgICAgICAgICAgIDB4MDAsIDB4YzAsIDB4ZTAsIDB4ZjAsIDB4ZjgsIDB4ZmMKLSAgICAgICAgfTsKLQotICAgICAgICAvLyBUaGUgdW5zaWduZWQgY2hhciBjb252ZXJzaW9uIGlzIG5lY2Vzc2FyeSBpbiBjYXNlIGNoYXIgaXMKLSAgICAgICAgLy8gc2lnbmVkICAgKEkgbGVhcm5lZCB0aGlzIHRoZSBoYXJkIHdheSkKLSAgICAgICAgd2NoYXJfdCB1Y3NfcmVzdWx0ID0gCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcikoKmZyb20rKykgLSBvY3RldDFfbW9kaWZpZXJfdGFibGVbY29udF9vY3RldF9jb3VudF07Ci0KLSAgICAgICAgLy8gSW52YXJpYW50cyAgIDogCi0gICAgICAgIC8vICAgMSkgQXQgdGhlIHN0YXJ0IG9mIHRoZSBsb29wLCAgICdpJyBjb250aW51aW5nIGNoYXJhY3RlcnMgaGF2ZSBiZWVuCi0gICAgICAgIC8vICAgIHByb2Nlc3NlZCAKLSAgICAgICAgLy8gICAyKSAqZnJvbSAgIHBvaW50cyB0byB0aGUgbmV4dCBjb250aW51aW5nIGNoYXJhY3RlciB0byBiZSBwcm9jZXNzZWQuCi0gICAgICAgIGludCBpICAgPSAwOwotICAgICAgICB3aGlsZShpICE9IGNvbnRfb2N0ZXRfY291bnQgJiYgZnJvbSAhPSBmcm9tX2VuZCkgewotCi0gICAgICAgICAgICAvLyBFcnJvciBjaGVja2luZyBvbiBjb250aW51aW5nIGNoYXJhY3RlcnMKLSAgICAgICAgICAgIGlmIChpbnZhbGlkX2NvbnRpbnVpbmdfb2N0ZXQoKmZyb20pKSB7Ci0gICAgICAgICAgICAgICAgZnJvbV9uZXh0ICAgPSBmcm9tOwotICAgICAgICAgICAgICAgIHRvX25leHQgPSAgIHRvOwotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6ZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHVjc19yZXN1bHQgKj0gKDEgPDwgNik7IAotCi0gICAgICAgICAgICAvLyBlYWNoIGNvbnRpbnVpbmcgY2hhcmFjdGVyIGhhcyBhbiBleHRyYSAoMTB4eHh4eHgpYiBhdHRhY2hlZCB0byAKLSAgICAgICAgICAgIC8vIGl0IHRoYXQgbXVzdCBiZSByZW1vdmVkLgotICAgICAgICAgICAgdWNzX3Jlc3VsdCArPSAodW5zaWduZWQgY2hhcikoKmZyb20rKykgLSAweDgwOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgICB0aGUgYnVmZmVyIGVuZHMgd2l0aCBhbiBpbmNvbXBsZXRlIHVuaWNvZGUgY2hhcmFjdGVyLi4uCi0gICAgICAgIGlmIChmcm9tID09IGZyb21fZW5kICYmIGkgICAhPSBjb250X29jdGV0X2NvdW50KSB7Ci0gICAgICAgICAgICAvLyByZXdpbmQgImZyb20iIHRvIGJlZm9yZSB0aGUgY3VycmVudCBjaGFyYWN0ZXIgdHJhbnNsYXRpb24KLSAgICAgICAgICAgIGZyb21fbmV4dCA9IGZyb20gLSAoaSsxKTsgCi0gICAgICAgICAgICB0b19uZXh0ID0gdG87Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6OnBhcnRpYWw7Ci0gICAgICAgIH0KLSAgICAgICAgKnRvKysgICA9IHVjc19yZXN1bHQ7Ci0gICAgfQotICAgIGZyb21fbmV4dCA9IGZyb207Ci0gICAgdG9fbmV4dCA9IHRvOwotCi0gICAgLy8gV2VyZSB3ZSBkb25lIGNvbnZlcnRpbmcgb3IgZGlkIHdlIHJ1biBvdXQgb2YgZGVzdGluYXRpb24gc3BhY2U/Ci0gICAgaWYoZnJvbSA9PSBmcm9tX2VuZCkgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjpvazsKLSAgICBlbHNlIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6cGFydGlhbDsKLX0KLQotc3RkOjpjb2RlY3Z0X2Jhc2U6OnJlc3VsdCB1dGY4X2NvZGVjdnRfZmFjZXQ6OmRvX291dCgKLSAgICBzdGQ6Om1ic3RhdGVfdCYgLypzdGF0ZSovLCAKLSAgICBjb25zdCB3Y2hhcl90ICogICBmcm9tLAotICAgIGNvbnN0IHdjaGFyX3QgKiBmcm9tX2VuZCwgCi0gICAgY29uc3Qgd2NoYXJfdCAqICYgZnJvbV9uZXh0LAotICAgIGNoYXIgKiB0bywgCi0gICAgY2hhciAqIHRvX2VuZCwgCi0gICAgY2hhciAqICYgdG9fbmV4dAotKSBjb25zdAotewotICAgIC8vIFJHIC0gY29uc2lkZXIgbWVyZ2luZyB0aGlzIHRhYmxlIHdpdGggdGhlIG90aGVyIG9uZQotICAgIGNvbnN0IHdjaGFyX3Qgb2N0ZXQxX21vZGlmaWVyX3RhYmxlW10gPSB7Ci0gICAgICAgIDB4MDAsIDB4YzAsIDB4ZTAsIDB4ZjAsIDB4ZjgsIDB4ZmMKLSAgICB9OwotCi0gICAgd2NoYXJfdCBtYXhfd2NoYXIgPSAoc3RkOjpudW1lcmljX2xpbWl0czx3Y2hhcl90Pjo6bWF4KSgpOwotICAgIHdoaWxlIChmcm9tICE9IGZyb21fZW5kICYmIHRvICE9IHRvX2VuZCkgewotCi0gICAgICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIFVDUy00IGNoYXJhY3RlcgotICAgICAgICBpZiAoKmZyb20gID4gbWF4X3djaGFyKSB7Ci0gICAgICAgICAgICBmcm9tX25leHQgPSBmcm9tOwotICAgICAgICAgICAgdG9fbmV4dCA9IHRvOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjplcnJvcjsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBjb250X29jdGV0X2NvdW50ID0gZ2V0X2NvbnRfb2N0ZXRfb3V0X2NvdW50KCpmcm9tKTsKLQotICAgICAgICAvLyBSRyAgLSBjb21tZW50IHRoaXMgZm9ybXVsYSBiZXR0ZXIKLSAgICAgICAgaW50IHNoaWZ0X2V4cG9uZW50ID0gKGNvbnRfb2N0ZXRfY291bnQpICogICA2OwotCi0gICAgICAgIC8vIFByb2Nlc3MgdGhlIGZpcnN0IGNoYXJhY3RlcgotICAgICAgICAqdG8rKyA9IHN0YXRpY19jYXN0PGNoYXI+KG9jdGV0MV9tb2RpZmllcl90YWJsZVtjb250X29jdGV0X2NvdW50XSArCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcikoKmZyb20gLyAoMSA8PCBzaGlmdF9leHBvbmVudCkpKTsKLQotICAgICAgICAvLyBQcm9jZXNzIHRoZSBjb250aW51YXRpb24gY2hhcmFjdGVycyAKLSAgICAgICAgLy8gSW52YXJpYW50czogQXQgICB0aGUgc3RhcnQgb2YgdGhlIGxvb3A6Ci0gICAgICAgIC8vICAgMSkgJ2knIGNvbnRpbnVpbmcgb2N0ZXRzICAgaGF2ZSBiZWVuIGdlbmVyYXRlZAotICAgICAgICAvLyAgIDIpICcqdG8nICAgcG9pbnRzIHRvIHRoZSBuZXh0IGxvY2F0aW9uIHRvIHBsYWNlIGFuIG9jdGV0Ci0gICAgICAgIC8vICAgMykgc2hpZnRfZXhwb25lbnQgaXMgICA2IG1vcmUgdGhhbiBuZWVkZWQgZm9yIHRoZSBuZXh0IG9jdGV0Ci0gICAgICAgIGludCBpICAgPSAwOwotICAgICAgICB3aGlsZSAgIChpICE9IGNvbnRfb2N0ZXRfY291bnQgJiYgdG8gIT0gdG9fZW5kKSB7Ci0gICAgICAgICAgICBzaGlmdF9leHBvbmVudCAtPSA2OwotICAgICAgICAgICAgKnRvKysgPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwICsgKCgqZnJvbSAvICgxIDw8IHNoaWZ0X2V4cG9uZW50KSkgJSAoMSA8PCA2KSkpOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9Ci0gICAgICAgIC8vIElmICAgd2UgZmlsbGVkIHVwIHRoZSBvdXQgYnVmZmVyIGJlZm9yZSBlbmNvZGluZyB0aGUgY2hhcmFjdGVyCi0gICAgICAgIGlmKHRvICAgPT0gdG9fZW5kICYmIGkgIT0gY29udF9vY3RldF9jb3VudCkgewotICAgICAgICAgICAgZnJvbV9uZXh0ID0gZnJvbTsKLSAgICAgICAgICAgIHRvX25leHQgPSB0byAtIChpKzEpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjpwYXJ0aWFsOwotICAgICAgICB9Ci0gICAgICAgICsrZnJvbTsKLSAgICB9Ci0gICAgZnJvbV9uZXh0ID0gZnJvbTsKLSAgICB0b19uZXh0ID0gdG87Ci0gICAgLy8gV2VyZSB3ZSBkb25lIG9yIGRpZCB3ZSBydW4gb3V0IG9mIGRlc3RpbmF0aW9uIHNwYWNlCi0gICAgaWYoZnJvbSA9PSBmcm9tX2VuZCkgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjpvazsKLSAgICBlbHNlIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6cGFydGlhbDsKLX0KLQotLy8gSG93IG1hbnkgY2hhciBvYmplY3RzIGNhbiBJIHByb2Nlc3MgdG8gZ2V0IDw9IG1heF9saW1pdAotLy8gd2NoYXJfdCBvYmplY3RzPwotaW50IHV0ZjhfY29kZWN2dF9mYWNldDo6ZG9fbGVuZ3RoKAotICAgIE5ETkJPT1NUX0NPREVDVlRfRE9fTEVOR1RIX0NPTlNUIHN0ZDo6bWJzdGF0ZV90ICYsCi0gICAgY29uc3QgY2hhciAqIGZyb20sCi0gICAgY29uc3QgY2hhciAqIGZyb21fZW5kLCAKLSAgICBzdGQ6OnNpemVfdCBtYXhfbGltaXQKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKQotKSBjb25zdCB0aHJvdygpCi0jZWxzZQotKSBjb25zdAotI2VuZGlmCi17IAotICAgIC8vIFJHIC0gdGhpcyBjb2RlIGlzIGNvbmZ1c2luZyEgIEkgbmVlZCBhIGJldHRlciB3YXkgdG8gZXhwcmVzcyBpdC4KLSAgICAvLyBhbmQgdGVzdCBjYXNlcy4KLQotICAgIC8vIEludmFyaWFudHM6Ci0gICAgLy8gMSkgbGFzdF9vY3RldF9jb3VudCBoYXMgdGhlIHNpemUgb2YgdGhlIGxhc3QgbWVhc3VyZWQgY2hhcmFjdGVyCi0gICAgLy8gMikgY2hhcl9jb3VudCBob2xkcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgc2hvd24gdG8gZml0Ci0gICAgLy8gd2l0aGluIHRoZSBib3VuZHMgc28gZmFyIChubyBncmVhdGVyIHRoYW4gbWF4X2xpbWl0KQotICAgIC8vIDMpIGZyb21fbmV4dCBwb2ludHMgdG8gdGhlIG9jdGV0ICdsYXN0X29jdGV0X2NvdW50JyBiZWZvcmUgdGhlCi0gICAgLy8gbGFzdCBtZWFzdXJlZCBjaGFyYWN0ZXIuICAKLSAgICBpbnQgbGFzdF9vY3RldF9jb3VudD0wOwotICAgIHN0ZDo6c2l6ZV90IGNoYXJfY291bnQgPSAwOwotICAgIGNvbnN0IGNoYXIqIGZyb21fbmV4dCA9IGZyb207Ci0gICAgLy8gVXNlICI8IiBiZWNhdXNlIHRoZSBidWZmZXIgbWF5IHJlcHJlc2VudCBpbmNvbXBsZXRlIGNoYXJhY3RlcnMKLSAgICB3aGlsZSAoZnJvbV9uZXh0K2xhc3Rfb2N0ZXRfY291bnQgPD0gZnJvbV9lbmQgJiYgY2hhcl9jb3VudCA8PSBtYXhfbGltaXQpIHsKLSAgICAgICAgZnJvbV9uZXh0ICs9IGxhc3Rfb2N0ZXRfY291bnQ7Ci0gICAgICAgIGxhc3Rfb2N0ZXRfY291bnQgPSAoZ2V0X29jdGV0X2NvdW50KCpmcm9tX25leHQpKTsKLSAgICAgICAgKytjaGFyX2NvdW50OwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihmcm9tX25leHQtZnJvbV9lbmQpOwotfQotCi11bnNpZ25lZCBpbnQgdXRmOF9jb2RlY3Z0X2ZhY2V0OjpnZXRfb2N0ZXRfY291bnQoCi0gICAgdW5zaWduZWQgY2hhciAgIGxlYWRfb2N0ZXQKLSl7Ci0gICAgLy8gaWYgdGhlIDAtYml0IChNU0IpIGlzIDAsIHRoZW4gMSBjaGFyYWN0ZXIKLSAgICBpZiAobGVhZF9vY3RldCA8PSAweDdmKSByZXR1cm4gMTsKLQotICAgIC8vIE90aGVyd2lzZSB0aGUgY291bnQgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIDEgYml0cyBzdGFydGluZyBhdCBNU0IKLS8vICAgIGFzc2VydCgweGMwIDw9IGxlYWRfb2N0ZXQgJiYgbGVhZF9vY3RldCA8PSAweGZkKTsKLQotICAgIGlmICgweGMwIDw9IGxlYWRfb2N0ZXQgJiYgbGVhZF9vY3RldCA8PSAweGRmKSByZXR1cm4gMjsKLSAgICBlbHNlIGlmICgweGUwIDw9IGxlYWRfb2N0ZXQgJiYgbGVhZF9vY3RldCA8PSAweGVmKSByZXR1cm4gMzsKLSAgICBlbHNlIGlmICgweGYwIDw9IGxlYWRfb2N0ZXQgJiYgbGVhZF9vY3RldCA8PSAweGY3KSByZXR1cm4gNDsKLSAgICBlbHNlIGlmICgweGY4IDw9IGxlYWRfb2N0ZXQgJiYgbGVhZF9vY3RldCA8PSAweGZiKSByZXR1cm4gNTsKLSAgICBlbHNlIHJldHVybiA2OwotfQotTkROQk9PU1RfVVRGOF9FTkRfTkFNRVNQQUNFCi0KLW5hbWVzcGFjZSB7Ci10ZW1wbGF0ZTxzdGQ6OnNpemVfdCBzPgotaW50IGdldF9jb250X29jdGV0X291dF9jb3VudF9pbXBsKHdjaGFyX3Qgd29yZCl7Ci0gICAgaWYgKHdvcmQgPCAweDgwKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAod29yZCA8IDB4ODAwKSB7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICByZXR1cm4gMjsKLX0KLQotdGVtcGxhdGU8PgotaW50IGdldF9jb250X29jdGV0X291dF9jb3VudF9pbXBsPDQ+KHdjaGFyX3Qgd29yZCl7Ci0gICAgaWYgKHdvcmQgPCAweDgwKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAod29yZCA8IDB4ODAwKSB7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIC8vIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBnZW5lcmF0ZSB3YXJuaW5ncyBvbiBzb21lIHBsYXRmb3JtcwotICAgIC8vIHdoZXJlIHdjaGFyX3QgaXMgZGVmaW5lZCBhcyBVQ1MyLiAgVGhlIHdhcm5pbmdzIGFyZSBzdXBlcmZsdW91cyBhcyB0aGUKLSAgICAvLyBzcGVjaWFsaXphdGlvbiBpcyBuZXZlciBpbnN0YW50aXRpYXRlZCB3aXRoIHN1Y2ggY29tcGlsZXJzLCBidXQgdGhpcwotICAgIC8vIGNhbiBjYXVzZSBwcm9ibGVtcyBpZiB3YXJuaW5ncyBhcmUgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMsIHNvIHdlIGd1YXJkCi0gICAgLy8gYWdhaW5zdCB0aGF0LiAgSW5jbHVkaW5nIDxuZG5ib29zdC9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcD4gYXMgd2UgZG8KLSAgICAvLyBzaG91bGQgYmUgZW5vdWdoIHRvIGdldCBXQ0hBUl9NQVggZGVmaW5lZC4KLSNpZiAhZGVmaW5lZChXQ0hBUl9NQVgpCi0jICAgZXJyb3IgV0NIQVJfTUFYIG5vdCBkZWZpbmVkIQotI2VuZGlmCi0gICAgLy8gY29wZSB3aXRoIFZDKysgNy4xIG9yIGVhcmxpZXIgaGF2aW5nIGludmFsaWQgV0NIQVJfTUFYCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPD0gMTMxMCAvLyA3LjEgb3IgZWFybGllcgotICAgIHJldHVybiAyOwotI2VsaWYgV0NIQVJfTUFYID4gMHgxMDAwMAotICAgIAotICAgaWYgKHdvcmQgPCAweDEwMDAwKSB7Ci0gICAgICAgIHJldHVybiAyOwotICAgIH0KLSAgICBpZiAod29yZCA8IDB4MjAwMDAwKSB7Ci0gICAgICAgIHJldHVybiAzOwotICAgIH0KLSAgICBpZiAod29yZCA8IDB4NDAwMDAwMCkgewotICAgICAgICByZXR1cm4gNDsKLSAgICB9Ci0gICAgcmV0dXJuIDU7Ci0gICAgCi0jZWxzZQotICAgIHJldHVybiAyOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNlIGFub255bW91cwotCi1ORE5CT09TVF9VVEY4X0JFR0lOX05BTUVTUEFDRQotLy8gSG93IG1hbnkgImNvbnRpbnVpbmcgb2N0ZXRzIiB3aWxsIGJlIG5lZWRlZCBmb3IgdGhpcyB3b3JkCi0vLyA9PSAgIHRvdGFsIG9jdGV0cyAtIDEuCi1pbnQgdXRmOF9jb2RlY3Z0X2ZhY2V0OjpnZXRfY29udF9vY3RldF9vdXRfY291bnQoCi0gICAgd2NoYXJfdCB3b3JkCi0pIGNvbnN0IHsKLSAgICByZXR1cm4gZ2V0X2NvbnRfb2N0ZXRfb3V0X2NvdW50X2ltcGw8c2l6ZW9mKHdjaGFyX3QpPih3b3JkKTsKLX0KLU5ETkJPT1NUX1VURjhfRU5EX05BTUVTUEFDRQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNmE5MTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIFdPUktBUk9VTkRfTkROQk9PU1RfRFdBMjAwMjEyNl9IUFAKLSMgZGVmaW5lIFdPUktBUk9VTkRfTkROQk9PU1RfRFdBMjAwMjEyNl9IUFAKLQotLy8gQ29tcGlsZXIvbGlicmFyeSB2ZXJzaW9uIHdvcmthcm91bmQgbWFjcm8KLS8vCi0vLyBVc2FnZToKLS8vCi0vLyAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotLy8gICAgICAgIC8vIHdvcmthcm91bmQgZm9yIGVWQzQgYW5kIFZDNgotLy8gICAgICAgIC4uLiAvLyB3b3JrYXJvdW5kIGNvZGUgaGVyZQotLy8gICAgICNlbmRpZgotLy8KLS8vIFdoZW4gTkROQk9PU1RfU1RSSUNUX0NPTkZJRyBpcyBkZWZpbmVkLCBleHBhbmRzIHRvIDAuIE90aGVyd2lzZSwgdGhlCi0vLyBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIHVuZGVmaW5lZCBvciBleHBhbmQgdG8gYSBudW1lcmljCi0vLyB2YWx1ZS4gVGhlIGFib3ZlIGV4cGFuZHMgdG86Ci0vLwotLy8gICAgIChORE5CT09TVF9NU1ZDKSAhPSAwICYmIChORE5CT09TVF9NU1ZDKSA8IDEzMDAKLS8vCi0vLyBXaGVuIHVzZWQgZm9yIHdvcmthcm91bmRzIHRoYXQgYXBwbHkgdG8gdGhlIGxhdGVzdCBrbm93biB2ZXJzaW9uIAotLy8gYW5kIGFsbCBlYXJsaWVyIHZlcnNpb25zIG9mIGEgY29tcGlsZXIsIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbiAKLS8vIHNob3VsZCBiZSBvYnNlcnZlZDoKLS8vCi0vLyAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDEzMDEpKQotLy8KLS8vIFRoZSB2ZXJzaW9uIG51bWJlciBpbiB0aGlzIGNhc2UgY29ycmVzcG9uZHMgdG8gdGhlIGxhc3QgdmVyc2lvbiBpbgotLy8gd2hpY2ggdGhlIHdvcmthcm91bmQgd2FzIGtub3duIHRvIGhhdmUgYmVlbiByZXF1aXJlZC4gV2hlbgotLy8gTkROQk9PU1RfREVURUNUX09VVERBVEVEX1dPUktBUk9VTkRTIGlzIG5vdCB0aGUgZGVmaW5lZCwgdGhlIG1hY3JvCi0vLyBORE5CT09TVF9URVNURURfQVQoeCkgZXhwYW5kcyB0byAiIT0gMCIsIHdoaWNoIGVmZmVjdGl2ZWx5IGFjdGl2YXRlcwotLy8gdGhlIHdvcmthcm91bmQgZm9yIGFueSB2ZXJzaW9uIG9mIHRoZSBjb21waWxlci4gV2hlbgotLy8gTkROQk9PU1RfREVURUNUX09VVERBVEVEX1dPUktBUk9VTkRTIGlzIGRlZmluZWQsIGEgY29tcGlsZXIgd2FybmluZyBvcgotLy8gZXJyb3Igd2lsbCBiZSBpc3N1ZWQgaWYgdGhlIGNvbXBpbGVyIHZlcnNpb24gZXhjZWVkcyB0aGUgYXJndW1lbnQKLS8vIHRvIE5ETkJPT1NUX1RFU1RFRF9BVCgpLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBsb2NhdGUgd29ya2Fyb3VuZHMgd2hpY2gKLS8vIG1heSBiZSBvYnNvbGV0ZWQgYnkgbmV3ZXIgdmVyc2lvbnMuCi0KLSMgaWZuZGVmIE5ETkJPT1NUX1NUUklDVF9DT05GSUcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0jZGVmaW5lIF9fQk9STEFORENfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fQk9STEFORENfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0NPREVHRUFSQ19fCi0jZGVmaW5lIF9fQ09ERUdFQVJDX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0NPREVHRUFSQ19fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9NU0NfVkVSCi0jZGVmaW5lIF9NU0NfVkVSX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX01TQ19WRVJfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX01TQ19GVUxMX1ZFUgotI2RlZmluZSBfTVNDX0ZVTExfVkVSX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX01TQ19GVUxMX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NU1ZDCi0jZGVmaW5lIE5ETkJPT1NUX01TVkNfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9NU1ZDX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01TVkNfRlVMTF9WRVIKLSNkZWZpbmUgTkROQk9PU1RfTVNWQ19GVUxMX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX01TVkNfRlVMTF9WRVJfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19HTlVDX18KLSNkZWZpbmUgX19HTlVDX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0dOVUNfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0dOVUNfTUlOT1JfXwotI2RlZmluZSBfX0dOVUNfTUlOT1JfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fR05VQ19NSU5PUl9fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fR05VQ19QQVRDSExFVkVMX18KLSNkZWZpbmUgX19HTlVDX1BBVENITEVWRUxfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fR05VQ19QQVRDSExFVkVMX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19JQk1DUFBfXwotI2RlZmluZSBfX0lCTUNQUF9fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19JQk1DUFBfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX1NVTlBST19DQwotI2RlZmluZSBfX1NVTlBST19DQ19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fU1VOUFJPX0NDX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fREVDQ1hYX1ZFUgotI2RlZmluZSBfX0RFQ0NYWF9WRVJfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0RFQ0NYWF9WRVJfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19NV0VSS1NfXwotI2RlZmluZSBfX01XRVJLU19fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19NV0VSS1NfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0VER19fCi0jZGVmaW5lIF9fRURHX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0VER19fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fRURHX1ZFUlNJT05fXwotI2RlZmluZSBfX0VER19WRVJTSU9OX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0VER19WRVJTSU9OX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19IUF9hQ0MKLSNkZWZpbmUgX19IUF9hQ0NfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0hQX2FDQ19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX2hweHN0ZDk4Ci0jZGVmaW5lIF9faHB4c3RkOThfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX2hweHN0ZDk4X1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9DUkFZQwotI2RlZmluZSBfQ1JBWUNfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfQ1JBWUNfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19ETUNfXwotI2RlZmluZSBfX0RNQ19fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19ETUNfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBNUFdfQ1BMVVMKLSNkZWZpbmUgTVBXX0NQTFVTX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgTVBXX0NQTFVTX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fQ09NT19fCi0jZGVmaW5lIF9fQ09NT19fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19DT01PX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19DT01PX1ZFUlNJT05fXwotI2RlZmluZSBfX0NPTU9fVkVSU0lPTl9fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19DT01PX1ZFUlNJT05fX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0lOVEVMX0NPTVBJTEVSCi0jZGVmaW5lIF9fSU5URUxfQ09NUElMRVJfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0lOVEVMX0NPTVBJTEVSX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fSUNMCi0jZGVmaW5lIF9fSUNMX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19JQ0xfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX0NPTVBJTEVSX1ZFUlNJT04KLSNkZWZpbmUgX0NPTVBJTEVSX1ZFUlNJT05fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfQ09NUElMRVJfVkVSU0lPTl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotCi0jaWZuZGVmIF9SV1NURF9WRVIKLSNkZWZpbmUgX1JXU1REX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9SV1NURF9WRVJfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUldTVERfVkVSCi0jZGVmaW5lIE5ETkJPT1NUX1JXU1REX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1JXU1REX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0dMSUJDUFBfXwotI2RlZmluZSBfX0dMSUJDUFBfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fR0xJQkNQUF9fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9HTElCQ1hYX1VTRV9DOTlfRlBfTUFDUk9TX0RZTkFNSUMKLSNkZWZpbmUgX0dMSUJDWFhfVVNFX0M5OV9GUF9NQUNST1NfRFlOQU1JQ19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfRlBfTUFDUk9TX0RZTkFNSUNfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19TR0lfU1RMX1BPUlQKLSNkZWZpbmUgX19TR0lfU1RMX1BPUlRfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX1NHSV9TVExfUE9SVF9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfU1RMUE9SVF9WRVJTSU9OCi0jZGVmaW5lIF9TVExQT1JUX1ZFUlNJT05fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfU1RMUE9SVF9WRVJTSU9OX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fTElCQ09NT19WRVJTSU9OX18KLSNkZWZpbmUgX19MSUJDT01PX1ZFUlNJT05fX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fTElCQ09NT19WRVJTSU9OX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX0NQUExJQl9WRVIKLSNkZWZpbmUgX0NQUExJQl9WRVJfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfQ1BQTElCX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT05fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSU5URUxfV0lOCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVMX1dJTl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVMX1dJTl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQgotI2RlZmluZSBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVMCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVMX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU5URUxfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLS8vIEFsd2F5cyBkZWZpbmUgdG8gemVybywgaWYgaXQncyB1c2VkIGl0J2xsIGJlIGRlZmluZWQgbXkgTVBMOgotI2RlZmluZSBORE5CT09TVF9NUExfQ0ZHX0dDQ19XT1JLQVJPVU5EX0dVQVJEIDAKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1dPUktBUk9VTkQoc3ltYm9sLCB0ZXN0KSAgICAgICAgICAgICAgICBcCi0gICAgICAgICAoKHN5bWJvbCAjIyBfV09SS0FST1VORF9HVUFSRCArIDAgPT0gMCkgJiYgICAgIFwKLSAgICAgICAgIChzeW1ib2wgIT0gMCkgJiYgKDEgJSAoKCAoc3ltYm9sIHRlc3QpICkgKyAxKSkpCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gXiAgICAgICAgICAgXiBeCi0vLyBUaGUgZXh0cmEgbGV2ZWwgb2YgcGFyZW50aGVzaXMgbmVzdGluZyBhYm92ZSwgYWxvbmcgd2l0aCB0aGUKLS8vIE5ETkJPT1NUX09QRU5fUEFSRU4gaW5kaXJlY3Rpb24gYmVsb3csIGlzIHJlcXVpcmVkIHRvIHNhdGlzZnkgdGhlCi0vLyBicm9rZW4gcHJlcHJvY2Vzc29yIGluIE1XQ1cgOC4zIGFuZCBlYXJsaWVyLgotLy8KLS8vIFRoZSBiYXNpYyBtZWNoYW5pc20gd29ya3MgYXMgZm9sbG93czoKLS8vICAgICAgKHN5bWJvbCB0ZXN0KSArIDEgICAgICAgID0+ICAgaWYgKHN5bWJvbCB0ZXN0KSB0aGVuIDIgZWxzZSAxCi0vLyAgICAgIDEgJSAoKHN5bWJvbCB0ZXN0KSArIDEpICA9PiAgIGlmIChzeW1ib2wgdGVzdCkgdGhlbiAxIGVsc2UgMAotLy8KLS8vIFRoZSBjb21wbGljYXRpb24gd2l0aCAlIGlzIGZvciBjb29wZXJhdGlvbiB3aXRoIE5ETkJPT1NUX1RFU1RFRF9BVCgpLgotLy8gV2hlbiAidGVzdCIgaXMgTkROQk9PU1RfVEVTVEVEX0FUKHgpIGFuZAotLy8gTkROQk9PU1RfREVURUNUX09VVERBVEVEX1dPUktBUk9VTkRTIGlzICNkZWZpbmVkLAotLy8KLS8vICAgICAgc3ltYm9sIHRlc3QgICAgICAgICAgICAgID0+ICAgaWYgKHN5bWJvbCA8PSB4KSB0aGVuIDEgZWxzZSAtMQotLy8gICAgICAoc3ltYm9sIHRlc3QpICsgMSAgICAgICAgPT4gICBpZiAoc3ltYm9sIDw9IHgpIHRoZW4gMiBlbHNlIDAKLS8vICAgICAgMSAlICgoc3ltYm9sIHRlc3QpICsgMSkgID0+ICAgaWYgKHN5bWJvbCA8PSB4KSB0aGVuIDEgZWxzZSBkaXZpZGUtYnktemVybwotLy8KLQotIyAgaWZkZWYgTkROQk9PU1RfREVURUNUX09VVERBVEVEX1dPUktBUk9VTkRTCi0jICAgZGVmaW5lIE5ETkJPT1NUX09QRU5fUEFSRU4gKAotIyAgIGRlZmluZSBORE5CT09TVF9URVNURURfQVQodmFsdWUpICA+IHZhbHVlKSA/KC0xKTogTkROQk9PU1RfT1BFTl9QQVJFTiAxCi0jICBlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RFRF9BVCh2YWx1ZSkgIT0gKCh2YWx1ZSktKHZhbHVlKSkKLSMgIGVuZGlmCi0KLSMgZWxzZQotCi0jICBkZWZpbmUgTkROQk9PU1RfV09SS0FST1VORChzeW1ib2wsIHRlc3QpIDAKLQotIyBlbmRpZiAKLQotI2VuZGlmIC8vIFdPUktBUk9VTkRfTkROQk9PU1RfRFdBMjAwMjEyNl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2N1cnJlbnRfZXhjZXB0aW9uX2Nhc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vY3VycmVudF9leGNlcHRpb25fY2FzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNzI0YzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vY3VycmVudF9leGNlcHRpb25fY2FzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vL0NvcHlyaWdodCAoYykgMjAwNi0yMDA5IEVtaWwgRG90Y2hldnNraSBhbmQgUmV2ZXJnZSBTdHVkaW9zLCBJbmMuCi0KLS8vRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy9maWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVUlEXzdFODNDMTY2MjAwODExREU4ODVFODI2MTU2RDg5NTkzCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfN0U4M0MxNjYyMDA4MTFERTg4NUU4MjYxNTZEODk1OTMKLSNpZiAoX19HTlVDX18qMTAwK19fR05VQ19NSU5PUl9fPjMwMSkgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCwxKQotI2VuZGlmCi0KLW5hbWVzcGFjZQotbmRuYm9vc3QKLSAgICB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgaW5saW5lCi0gICAgRSAqCi0gICAgY3VycmVudF9leGNlcHRpb25fY2FzdCgpCi0gICAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2F0Y2goCi0gICAgICAgIEUgJiBlICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2F0Y2goCi0gICAgICAgIC4uLikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL2F0dHJpYnV0ZV9ub3JldHVybi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvYXR0cmlidXRlX25vcmV0dXJuLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM3YjgxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvYXR0cmlidXRlX25vcmV0dXJuLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS8vQ29weXJpZ2h0IChjKSAyMDA5IEVtaWwgRG90Y2hldnNraSBhbmQgUmV2ZXJnZSBTdHVkaW9zLCBJbmMuCi0KLS8vRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy9maWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVUlEXzYxNTMxQUIwNjgwNjExREVBREQ1ODQ2ODU1RDg5NTkzCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfNjE1MzFBQjA2ODA2MTFERUFERDU4NDY4NTVEODk1OTMKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jZGVmaW5lIE5ETkJPT1NUX0FUVFJJQlVURV9OT1JFVFVSTiBfX2RlY2xzcGVjKG5vcmV0dXJuKQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKLSNkZWZpbmUgTkROQk9PU1RfQVRUUklCVVRFX05PUkVUVVJOIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9BVFRSSUJVVEVfTk9SRVRVUk4KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC9lcnJvcl9pbmZvX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL2Vycm9yX2luZm9faW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NDczODAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL2Vycm9yX2luZm9faW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vL0NvcHlyaWdodCAoYykgMjAwNi0yMDEwIEVtaWwgRG90Y2hldnNraSBhbmQgUmV2ZXJnZSBTdHVkaW9zLCBJbmMuCi0KLS8vRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy9maWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVUlEX0NFNjk4M0FDNzUzNDExRERBNzY0MjQ3OTU2RDg5NTkzCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfQ0U2OTgzQUM3NTM0MTFEREE3NjQyNDc5NTZEODk1OTMKLSNpZiAoX19HTlVDX18qMTAwK19fR05VQ19NSU5PUl9fPjMwMSkgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCwxKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZQotbmRuYm9vc3QKLSAgICB7Ci0gICAgbmFtZXNwYWNlCi0gICAgZXhjZXB0aW9uX2RldGFpbAotICAgICAgICB7Ci0gICAgICAgIGNsYXNzCi0gICAgICAgIGVycm9yX2luZm9fYmFzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgcHVibGljOgotCi0gICAgICAgICAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIG5hbWVfdmFsdWVfc3RyaW5nKCkgY29uc3QgPSAwOwotCi0gICAgICAgICAgICBwcm90ZWN0ZWQ6Ci0KLSAgICAgICAgICAgIHZpcnR1YWwKLSAgICAgICAgICAgIH5lcnJvcl9pbmZvX2Jhc2UoKSB0aHJvdygpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUYWcsY2xhc3MgVD4KLSAgICBjbGFzcwotICAgIGVycm9yX2luZm86Ci0gICAgICAgIHB1YmxpYyBleGNlcHRpb25fZGV0YWlsOjplcnJvcl9pbmZvX2Jhc2UKLSAgICAgICAgewotICAgICAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgZXJyb3JfaW5mbyggdmFsdWVfdHlwZSBjb25zdCAmIHZhbHVlICk7Ci0gICAgICAgIH5lcnJvcl9pbmZvKCkgdGhyb3coKTsKLQotICAgICAgICB2YWx1ZV90eXBlIGNvbnN0ICYKLSAgICAgICAgdmFsdWUoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHZhbHVlXzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlICYKLSAgICAgICAgdmFsdWUoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHZhbHVlXzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotCi0gICAgICAgIHN0ZDo6c3RyaW5nIG5hbWVfdmFsdWVfc3RyaW5nKCkgY29uc3Q7Ci0KLSAgICAgICAgdmFsdWVfdHlwZSB2YWx1ZV87Ci0gICAgICAgIH07Ci0gICAgfQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL3R5cGVfaW5mby5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvdHlwZV9pbmZvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZjYWUyZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvdHlwZV9pbmZvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8vQ29weXJpZ2h0IChjKSAyMDA2LTIwMTAgRW1pbCBEb3RjaGV2c2tpIGFuZCBSZXZlcmdlIFN0dWRpb3MsIEluYy4KLQotLy9EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vL2ZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VVSURfQzNFMTc0MUM3NTQzMTFEREIyODM0Q0NBNTVEODk1OTMKLSNkZWZpbmUgTkROQk9PU1RfVVVJRF9DM0UxNzQxQzc1NDMxMUREQjI4MzRDQ0E1NUQ4OTU5MwotI2lmIChfX0dOVUNfXyoxMDArX19HTlVDX01JTk9SX18+MzAxKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwdXNoLDEpCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3VycmVudF9mdW5jdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfTk9fVFlQRUlECi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5pdHMvZGV0YWlsL3V0aWxpdHkuaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8c3RyaW5nPgotCi1uYW1lc3BhY2UKLW5kbmJvb3N0Ci0gICAgewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIGlubGluZQotICAgIHN0ZDo6c3RyaW5nCi0gICAgdGFnX3R5cGVfbmFtZSgpCi0gICAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19UWVBFSUQKLSAgICAgICAgcmV0dXJuIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT047Ci0jZWxzZQotICAgICAgICByZXR1cm4gdW5pdHM6OmRldGFpbDo6ZGVtYW5nbGUodHlwZWlkKFQqKS5uYW1lKCkpOwotI2VuZGlmCi0gICAgICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIGlubGluZQotICAgIHN0ZDo6c3RyaW5nCi0gICAgdHlwZV9uYW1lKCkKLSAgICAgICAgewotI2lmZGVmIE5ETkJPT1NUX05PX1RZUEVJRAotICAgICAgICByZXR1cm4gTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTjsKLSNlbHNlCi0gICAgICAgIHJldHVybiB1bml0czo6ZGV0YWlsOjpkZW1hbmdsZSh0eXBlaWQoVCkubmFtZSgpKTsKLSNlbmRpZgotICAgICAgICB9Ci0KLSAgICBuYW1lc3BhY2UKLSAgICBleGNlcHRpb25fZGV0YWlsCi0gICAgICAgIHsKLSAgICAgICAgc3RydWN0Ci0gICAgICAgIHR5cGVfaW5mb18KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGRldGFpbDo6c3BfdHlwZWluZm8gY29uc3QgKiB0eXBlXzsKLQotICAgICAgICAgICAgZXhwbGljaXQKLSAgICAgICAgICAgIHR5cGVfaW5mb18oIGRldGFpbDo6c3BfdHlwZWluZm8gY29uc3QgJiB0eXBlICk6Ci0gICAgICAgICAgICAgICAgdHlwZV8oJnR5cGUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnJpZW5kCi0gICAgICAgICAgICBib29sCi0gICAgICAgICAgICBvcGVyYXRvcjwoIHR5cGVfaW5mb18gY29uc3QgJiBhLCB0eXBlX2luZm9fIGNvbnN0ICYgYiApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAwIT0oYS50eXBlXy0+YmVmb3JlKCpiLnR5cGVfKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotICAgIH0KLQotI2RlZmluZSBORE5CT09TVF9FWENFUFRJT05fU1RBVElDX1RZUEVJRChUKSA6Om5kbmJvb3N0OjpleGNlcHRpb25fZGV0YWlsOjp0eXBlX2luZm9fKE5ETkJPT1NUX1NQX1RZUEVJRChUKSkKLQotI2lmbmRlZiBORE5CT09TVF9OT19SVFRJCi0jZGVmaW5lIE5ETkJPT1NUX0VYQ0VQVElPTl9EWU5BTUlDX1RZUEVJRCh4KSA6Om5kbmJvb3N0OjpleGNlcHRpb25fZGV0YWlsOjp0eXBlX2luZm9fKHR5cGVpZCh4KSkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZXhjZXB0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2V4Y2VwdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhOTc0N2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZXhjZXB0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MyArMCwwIEBACi0vL0NvcHlyaWdodCAoYykgMjAwNi0yMDA5IEVtaWwgRG90Y2hldnNraSBhbmQgUmV2ZXJnZSBTdHVkaW9zLCBJbmMuCi0KLS8vRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy9maWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVUlEXzI3NERBMzY2MDA0RTExRENCMURERkUyRTU2RDg5NTkzCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfMjc0REEzNjYwMDRFMTFEQ0IxRERGRTJFNTZEODk1OTMKLSNpZiAoX19HTlVDX18qMTAwK19fR05VQ19NSU5PUl9fPjMwMSkgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCwxKQotI2VuZGlmCi0KLW5hbWVzcGFjZQotbmRuYm9vc3QKLSAgICB7Ci0gICAgbmFtZXNwYWNlCi0gICAgZXhjZXB0aW9uX2RldGFpbAotICAgICAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBjbGFzcwotICAgICAgICByZWZjb3VudF9wdHIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHB1YmxpYzoKLQotICAgICAgICAgICAgcmVmY291bnRfcHRyKCk6Ci0gICAgICAgICAgICAgICAgcHhfKDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgfnJlZmNvdW50X3B0cigpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlZmNvdW50X3B0ciggcmVmY291bnRfcHRyIGNvbnN0ICYgeCApOgotICAgICAgICAgICAgICAgIHB4Xyh4LnB4XykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYWRkX3JlZigpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVmY291bnRfcHRyICYKLSAgICAgICAgICAgIG9wZXJhdG9yPSggcmVmY291bnRfcHRyIGNvbnN0ICYgeCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGFkb3B0KHgucHhfKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkCi0gICAgICAgICAgICBhZG9wdCggVCAqIHB4ICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIHB4Xz1weDsKLSAgICAgICAgICAgICAgICBhZGRfcmVmKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBUICoKLSAgICAgICAgICAgIGdldCgpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBweF87Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotCi0gICAgICAgICAgICBUICogcHhfOwotCi0gICAgICAgICAgICB2b2lkCi0gICAgICAgICAgICBhZGRfcmVmKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoIHB4XyApCi0gICAgICAgICAgICAgICAgICAgIHB4Xy0+YWRkX3JlZigpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdm9pZAotICAgICAgICAgICAgcmVsZWFzZSgpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmKCBweF8gJiYgcHhfLT5yZWxlYXNlKCkgKQotICAgICAgICAgICAgICAgICAgICBweF89MDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUYWcsY2xhc3MgVD4KLSAgICBjbGFzcyBlcnJvcl9pbmZvOwotCi0gICAgdHlwZWRlZiBlcnJvcl9pbmZvPHN0cnVjdCB0aHJvd19mdW5jdGlvbl8sY2hhciBjb25zdCAqPiB0aHJvd19mdW5jdGlvbjsKLSAgICB0eXBlZGVmIGVycm9yX2luZm88c3RydWN0IHRocm93X2ZpbGVfLGNoYXIgY29uc3QgKj4gdGhyb3dfZmlsZTsKLSAgICB0eXBlZGVmIGVycm9yX2luZm88c3RydWN0IHRocm93X2xpbmVfLGludD4gdGhyb3dfbGluZTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgY2xhc3MKLSAgICBlcnJvcl9pbmZvPHRocm93X2Z1bmN0aW9uXyxjaGFyIGNvbnN0ICo+Ci0gICAgICAgIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIGNoYXIgY29uc3QgKiB2YWx1ZV90eXBlOwotICAgICAgICB2YWx1ZV90eXBlIHZfOwotICAgICAgICBleHBsaWNpdAotICAgICAgICBlcnJvcl9pbmZvKCB2YWx1ZV90eXBlIHYgKToKLSAgICAgICAgICAgIHZfKHYpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIGNsYXNzCi0gICAgZXJyb3JfaW5mbzx0aHJvd19maWxlXyxjaGFyIGNvbnN0ICo+Ci0gICAgICAgIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIGNoYXIgY29uc3QgKiB2YWx1ZV90eXBlOwotICAgICAgICB2YWx1ZV90eXBlIHZfOwotICAgICAgICBleHBsaWNpdAotICAgICAgICBlcnJvcl9pbmZvKCB2YWx1ZV90eXBlIHYgKToKLSAgICAgICAgICAgIHZfKHYpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIGNsYXNzCi0gICAgZXJyb3JfaW5mbzx0aHJvd19saW5lXyxpbnQ+Ci0gICAgICAgIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIGludCB2YWx1ZV90eXBlOwotICAgICAgICB2YWx1ZV90eXBlIHZfOwotICAgICAgICBleHBsaWNpdAotICAgICAgICBlcnJvcl9pbmZvKCB2YWx1ZV90eXBlIHYgKToKLSAgICAgICAgICAgIHZfKHYpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotIyBpZiAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSAxKSB8fCAoX19HTlVDX18gPiA0KQotIyAgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2ggKGRlZmF1bHQpCi0jIGVuZGlmCi0jZW5kaWYKLSAgICBjbGFzcyBleGNlcHRpb247Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgaWYgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMSkgfHwgKF9fR05VQ19fID4gNCkKLSMgIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKLSMgZW5kaWYKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgY2xhc3Mgc2hhcmVkX3B0cjsKLQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICAgICAgewotICAgICAgICBjbGFzcyBlcnJvcl9pbmZvX2Jhc2U7Ci0gICAgICAgIHN0cnVjdCB0eXBlX2luZm9fOwotCi0gICAgICAgIHN0cnVjdAotICAgICAgICBlcnJvcl9pbmZvX2NvbnRhaW5lcgotICAgICAgICAgICAgewotICAgICAgICAgICAgdmlydHVhbCBjaGFyIGNvbnN0ICogZGlhZ25vc3RpY19pbmZvcm1hdGlvbiggY2hhciBjb25zdCAqICkgY29uc3QgPSAwOwotICAgICAgICAgICAgdmlydHVhbCBzaGFyZWRfcHRyPGVycm9yX2luZm9fYmFzZT4gZ2V0KCB0eXBlX2luZm9fIGNvbnN0ICYgKSBjb25zdCA9IDA7Ci0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0KCBzaGFyZWRfcHRyPGVycm9yX2luZm9fYmFzZT4gY29uc3QgJiwgdHlwZV9pbmZvXyBjb25zdCAmICkgPSAwOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGFkZF9yZWYoKSBjb25zdCA9IDA7Ci0gICAgICAgICAgICB2aXJ0dWFsIGJvb2wgcmVsZWFzZSgpIGNvbnN0ID0gMDsKLSAgICAgICAgICAgIHZpcnR1YWwgcmVmY291bnRfcHRyPGV4Y2VwdGlvbl9kZXRhaWw6OmVycm9yX2luZm9fY29udGFpbmVyPiBjbG9uZSgpIGNvbnN0ID0gMDsKLQotICAgICAgICAgICAgcHJvdGVjdGVkOgotCi0gICAgICAgICAgICB+ZXJyb3JfaW5mb19jb250YWluZXIoKSB0aHJvdygpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzPgotICAgICAgICBzdHJ1Y3QgZ2V0X2luZm87Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IGdldF9pbmZvPHRocm93X2Z1bmN0aW9uPjsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QgZ2V0X2luZm88dGhyb3dfZmlsZT47Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IGdldF9pbmZvPHRocm93X2xpbmU+OwotCi0gICAgICAgIGNoYXIgY29uc3QgKiBnZXRfZGlhZ25vc3RpY19pbmZvcm1hdGlvbiggZXhjZXB0aW9uIGNvbnN0ICYsIGNoYXIgY29uc3QgKiApOwotCi0gICAgICAgIHZvaWQgY29weV9ib29zdF9leGNlcHRpb24oIGV4Y2VwdGlvbiAqLCBleGNlcHRpb24gY29uc3QgKiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFLGNsYXNzIFRhZyxjbGFzcyBUPgotICAgICAgICBFIGNvbnN0ICYgc2V0X2luZm8oIEUgY29uc3QgJiwgZXJyb3JfaW5mbzxUYWcsVD4gY29uc3QgJiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBFIGNvbnN0ICYgc2V0X2luZm8oIEUgY29uc3QgJiwgdGhyb3dfZnVuY3Rpb24gY29uc3QgJiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBFIGNvbnN0ICYgc2V0X2luZm8oIEUgY29uc3QgJiwgdGhyb3dfZmlsZSBjb25zdCAmICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIEUgY29uc3QgJiBzZXRfaW5mbyggRSBjb25zdCAmLCB0aHJvd19saW5lIGNvbnN0ICYgKTsKLSAgICAgICAgfQotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgaWYgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMSkgfHwgKF9fR05VQ19fID4gNCkKLSMgIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoIChkZWZhdWx0KQotIyBlbmRpZgotI2VuZGlmCi0gICAgY2xhc3MKLSAgICBleGNlcHRpb24KLSAgICAgICAgewotICAgICAgICBwcm90ZWN0ZWQ6Ci0KLSAgICAgICAgZXhjZXB0aW9uKCk6Ci0gICAgICAgICAgICB0aHJvd19mdW5jdGlvbl8oMCksCi0gICAgICAgICAgICB0aHJvd19maWxlXygwKSwKLSAgICAgICAgICAgIHRocm93X2xpbmVfKC0xKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotCi0jaWZkZWYgX19IUF9hQ0MKLSAgICAgICAgLy9PbiBIUCBhQ0MsIHRoaXMgcHJvdGVjdGVkIGNvcHkgY29uc3RydWN0b3IgcHJldmVudHMgdGhyb3dpbmcgbmRuYm9vc3Q6OmV4Y2VwdGlvbi4KLSAgICAgICAgLy9PbiBhbGwgb3RoZXIgcGxhdGZvcm1zLCB0aGUgc2FtZSBlZmZlY3QgaXMgYWNoaWV2ZWQgYnkgdGhlIHB1cmUgdmlydHVhbCBkZXN0cnVjdG9yLgotICAgICAgICBleGNlcHRpb24oIGV4Y2VwdGlvbiBjb25zdCAmIHggKSB0aHJvdygpOgotICAgICAgICAgICAgZGF0YV8oeC5kYXRhXyksCi0gICAgICAgICAgICB0aHJvd19mdW5jdGlvbl8oeC50aHJvd19mdW5jdGlvbl8pLAotICAgICAgICAgICAgdGhyb3dfZmlsZV8oeC50aHJvd19maWxlXyksCi0gICAgICAgICAgICB0aHJvd19saW5lXyh4LnRocm93X2xpbmVfKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgdmlydHVhbCB+ZXhjZXB0aW9uKCkgdGhyb3coKQotI2lmbmRlZiBfX0hQX2FDQwotICAgICAgICAgICAgPSAwIC8vV29ya2Fyb3VuZCBmb3IgSFAgYUNDLCA9MCBpbmNvcnJlY3RseSBsZWFkcyB0byBsaW5rIGVycm9ycy4KLSNlbmRpZgotICAgICAgICAgICAgOwotCi0jaWYgKGRlZmluZWQoX19NV0VSS1NfXykgJiYgX19NV0VSS1NfXzw9MHgzMjA3KSB8fCAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVI8PTEzMTApCi0gICAgICAgIHB1YmxpYzoKLSNlbHNlCi0gICAgICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIGZyaWVuZCBFIGNvbnN0ICYgZXhjZXB0aW9uX2RldGFpbDo6c2V0X2luZm8oIEUgY29uc3QgJiwgdGhyb3dfZnVuY3Rpb24gY29uc3QgJiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBmcmllbmQgRSBjb25zdCAmIGV4Y2VwdGlvbl9kZXRhaWw6OnNldF9pbmZvKCBFIGNvbnN0ICYsIHRocm93X2ZpbGUgY29uc3QgJiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBmcmllbmQgRSBjb25zdCAmIGV4Y2VwdGlvbl9kZXRhaWw6OnNldF9pbmZvKCBFIGNvbnN0ICYsIHRocm93X2xpbmUgY29uc3QgJiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFLGNsYXNzIFRhZyxjbGFzcyBUPgotICAgICAgICBmcmllbmQgRSBjb25zdCAmIGV4Y2VwdGlvbl9kZXRhaWw6OnNldF9pbmZvKCBFIGNvbnN0ICYsIGVycm9yX2luZm88VGFnLFQ+IGNvbnN0ICYgKTsKLQotICAgICAgICBmcmllbmQgY2hhciBjb25zdCAqIGV4Y2VwdGlvbl9kZXRhaWw6OmdldF9kaWFnbm9zdGljX2luZm9ybWF0aW9uKCBleGNlcHRpb24gY29uc3QgJiwgY2hhciBjb25zdCAqICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzPgotICAgICAgICBmcmllbmQgc3RydWN0IGV4Y2VwdGlvbl9kZXRhaWw6OmdldF9pbmZvOwotICAgICAgICBmcmllbmQgc3RydWN0IGV4Y2VwdGlvbl9kZXRhaWw6OmdldF9pbmZvPHRocm93X2Z1bmN0aW9uPjsKLSAgICAgICAgZnJpZW5kIHN0cnVjdCBleGNlcHRpb25fZGV0YWlsOjpnZXRfaW5mbzx0aHJvd19maWxlPjsKLSAgICAgICAgZnJpZW5kIHN0cnVjdCBleGNlcHRpb25fZGV0YWlsOjpnZXRfaW5mbzx0aHJvd19saW5lPjsKLSAgICAgICAgZnJpZW5kIHZvaWQgZXhjZXB0aW9uX2RldGFpbDo6Y29weV9ib29zdF9leGNlcHRpb24oIGV4Y2VwdGlvbiAqLCBleGNlcHRpb24gY29uc3QgKiApOwotI2VuZGlmCi0gICAgICAgIG11dGFibGUgZXhjZXB0aW9uX2RldGFpbDo6cmVmY291bnRfcHRyPGV4Y2VwdGlvbl9kZXRhaWw6OmVycm9yX2luZm9fY29udGFpbmVyPiBkYXRhXzsKLSAgICAgICAgbXV0YWJsZSBjaGFyIGNvbnN0ICogdGhyb3dfZnVuY3Rpb25fOwotICAgICAgICBtdXRhYmxlIGNoYXIgY29uc3QgKiB0aHJvd19maWxlXzsKLSAgICAgICAgbXV0YWJsZSBpbnQgdGhyb3dfbGluZV87Ci0gICAgICAgIH07Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgaWYgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMSkgfHwgKF9fR05VQ19fID4gNCkKLSMgIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKLSMgZW5kaWYKLSNlbmRpZgotCi0gICAgaW5saW5lCi0gICAgZXhjZXB0aW9uOjoKLSAgICB+ZXhjZXB0aW9uKCkgdGhyb3coKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICAgICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KLSAgICAgICAgRSBjb25zdCAmCi0gICAgICAgIHNldF9pbmZvKCBFIGNvbnN0ICYgeCwgdGhyb3dfZnVuY3Rpb24gY29uc3QgJiB5ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHgudGhyb3dfZnVuY3Rpb25fPXkudl87Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KLSAgICAgICAgRSBjb25zdCAmCi0gICAgICAgIHNldF9pbmZvKCBFIGNvbnN0ICYgeCwgdGhyb3dfZmlsZSBjb25zdCAmIHkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgeC50aHJvd19maWxlXz15LnZfOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIEUgY29uc3QgJgotICAgICAgICBzZXRfaW5mbyggRSBjb25zdCAmIHgsIHRocm93X2xpbmUgY29uc3QgJiB5ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHgudGhyb3dfbGluZV89eS52XzsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICAgICAgewotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jIGlmIChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDEpIHx8IChfX0dOVUNfXyA+IDQpCi0jICBwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaCAoZGVmYXVsdCkKLSMgZW5kaWYKLSNlbmRpZgotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGVycm9yX2luZm9faW5qZWN0b3I6Ci0gICAgICAgICAgICBwdWJsaWMgVCwKLSAgICAgICAgICAgIHB1YmxpYyBleGNlcHRpb24KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGV4cGxpY2l0Ci0gICAgICAgICAgICBlcnJvcl9pbmZvX2luamVjdG9yKCBUIGNvbnN0ICYgeCApOgotICAgICAgICAgICAgICAgIFQoeCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB+ZXJyb3JfaW5mb19pbmplY3RvcigpIHRocm93KCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotIyBpZiAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSAxKSB8fCAoX19HTlVDX18gPiA0KQotIyAgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAotIyBlbmRpZgotI2VuZGlmCi0KLSAgICAgICAgc3RydWN0IGxhcmdlX3NpemUgeyBjaGFyIGNbMjU2XTsgfTsKLSAgICAgICAgbGFyZ2Vfc2l6ZSBkaXNwYXRjaF9ib29zdF9leGNlcHRpb24oIGV4Y2VwdGlvbiBjb25zdCAqICk7Ci0KLSAgICAgICAgc3RydWN0IHNtYWxsX3NpemUgeyB9OwotICAgICAgICBzbWFsbF9zaXplIGRpc3BhdGNoX2Jvb3N0X2V4Y2VwdGlvbiggdm9pZCBjb25zdCAqICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzLGludD4KLSAgICAgICAgc3RydWN0IGVuYWJsZV9lcnJvcl9pbmZvX2hlbHBlcjsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGVuYWJsZV9lcnJvcl9pbmZvX2hlbHBlcjxULHNpemVvZihsYXJnZV9zaXplKT4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGVuYWJsZV9lcnJvcl9pbmZvX2hlbHBlcjxULHNpemVvZihzbWFsbF9zaXplKT4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgZXJyb3JfaW5mb19pbmplY3RvcjxUPiB0eXBlOwotICAgICAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGVuYWJsZV9lcnJvcl9pbmZvX3JldHVybl90eXBlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGVuYWJsZV9lcnJvcl9pbmZvX2hlbHBlcjxULHNpemVvZihleGNlcHRpb25fZGV0YWlsOjpkaXNwYXRjaF9ib29zdF9leGNlcHRpb24oc3RhdGljX2Nhc3Q8VCAqPigwKSkpPjo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgaW5saW5lCi0gICAgdHlwZW5hbWUKLSAgICBleGNlcHRpb25fZGV0YWlsOjplbmFibGVfZXJyb3JfaW5mb19yZXR1cm5fdHlwZTxUPjo6dHlwZQotICAgIGVuYWJsZV9lcnJvcl9pbmZvKCBUIGNvbnN0ICYgeCApCi0gICAgICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBleGNlcHRpb25fZGV0YWlsOjplbmFibGVfZXJyb3JfaW5mb19yZXR1cm5fdHlwZTxUPjo6dHlwZSBydDsKLSAgICAgICAgcmV0dXJuIHJ0KHgpOwotICAgICAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICAgICAgewotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jIGlmIChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDEpIHx8IChfX0dOVUNfXyA+IDQpCi0jICBwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaCAoZGVmYXVsdCkKLSMgZW5kaWYKLSNlbmRpZgotICAgICAgICBjbGFzcwotICAgICAgICBjbG9uZV9iYXNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBwdWJsaWM6Ci0KLSAgICAgICAgICAgIHZpcnR1YWwgY2xvbmVfYmFzZSBjb25zdCAqIGNsb25lKCkgY29uc3QgPSAwOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIHJldGhyb3coKSBjb25zdCA9IDA7Ci0KLSAgICAgICAgICAgIHZpcnR1YWwKLSAgICAgICAgICAgIH5jbG9uZV9iYXNlKCkgdGhyb3coKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jIGlmIChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDEpIHx8IChfX0dOVUNfXyA+IDQpCi0jICBwcmFnbWEgR0NDIHZpc2liaWxpdHkgcG9wCi0jIGVuZGlmCi0jZW5kaWYKLQotICAgICAgICBpbmxpbmUKLSAgICAgICAgdm9pZAotICAgICAgICBjb3B5X2Jvb3N0X2V4Y2VwdGlvbiggZXhjZXB0aW9uICogYSwgZXhjZXB0aW9uIGNvbnN0ICogYiApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICByZWZjb3VudF9wdHI8ZXJyb3JfaW5mb19jb250YWluZXI+IGRhdGE7Ci0gICAgICAgICAgICBpZiggZXJyb3JfaW5mb19jb250YWluZXIgKiBkPWItPmRhdGFfLmdldCgpICkKLSAgICAgICAgICAgICAgICBkYXRhID0gZC0+Y2xvbmUoKTsKLSAgICAgICAgICAgIGEtPnRocm93X2ZpbGVfID0gYi0+dGhyb3dfZmlsZV87Ci0gICAgICAgICAgICBhLT50aHJvd19saW5lXyA9IGItPnRocm93X2xpbmVfOwotICAgICAgICAgICAgYS0+dGhyb3dfZnVuY3Rpb25fID0gYi0+dGhyb3dfZnVuY3Rpb25fOwotICAgICAgICAgICAgYS0+ZGF0YV8gPSBkYXRhOwotICAgICAgICAgICAgfQotCi0gICAgICAgIGlubGluZQotICAgICAgICB2b2lkCi0gICAgICAgIGNvcHlfYm9vc3RfZXhjZXB0aW9uKCB2b2lkICosIHZvaWQgY29uc3QgKiApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGNsYXNzCi0gICAgICAgIGNsb25lX2ltcGw6Ci0gICAgICAgICAgICBwdWJsaWMgVCwKLSAgICAgICAgICAgIHB1YmxpYyB2aXJ0dWFsIGNsb25lX2Jhc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCBjbG9uZV90YWcgeyB9OwotICAgICAgICAgICAgY2xvbmVfaW1wbCggY2xvbmVfaW1wbCBjb25zdCAmIHgsIGNsb25lX3RhZyApOgotICAgICAgICAgICAgICAgIFQoeCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29weV9ib29zdF9leGNlcHRpb24odGhpcywmeCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwdWJsaWM6Ci0KLSAgICAgICAgICAgIGV4cGxpY2l0Ci0gICAgICAgICAgICBjbG9uZV9pbXBsKCBUIGNvbnN0ICYgeCApOgotICAgICAgICAgICAgICAgIFQoeCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29weV9ib29zdF9leGNlcHRpb24odGhpcywmeCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB+Y2xvbmVfaW1wbCgpIHRocm93KCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotCi0gICAgICAgICAgICBjbG9uZV9iYXNlIGNvbnN0ICoKLSAgICAgICAgICAgIGNsb25lKCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBjbG9uZV9pbXBsKCp0aGlzLGNsb25lX3RhZygpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZvaWQKLSAgICAgICAgICAgIHJldGhyb3coKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aHJvdyp0aGlzOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIGlubGluZQotICAgIGV4Y2VwdGlvbl9kZXRhaWw6OmNsb25lX2ltcGw8VD4KLSAgICBlbmFibGVfY3VycmVudF9leGNlcHRpb24oIFQgY29uc3QgJiB4ICkKLSAgICAgICAgewotICAgICAgICByZXR1cm4gZXhjZXB0aW9uX2RldGFpbDo6Y2xvbmVfaW1wbDxUPih4KTsKLSAgICAgICAgfQotICAgIH0KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2dldF9lcnJvcl9pbmZvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2dldF9lcnJvcl9pbmZvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IzNDE1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9nZXRfZXJyb3JfaW5mby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLy9Db3B5cmlnaHQgKGMpIDIwMDYtMjAwOSBFbWlsIERvdGNoZXZza2kgYW5kIFJldmVyZ2UgU3R1ZGlvcywgSW5jLgotCi0vL0Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVVVJRF8xQTU5MDIyNjc1MzMxMUREOUU0Q0NGNjE1NkQ4OTU5MwotI2RlZmluZSBORE5CT09TVF9VVUlEXzFBNTkwMjI2NzUzMzExREQ5RTRDQ0Y2MTU2RDg5NTkzCi0jaWYgKF9fR05VQ19fKjEwMCtfX0dOVUNfTUlOT1JfXz4zMDEpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gsMSkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZXhjZXB0aW9uL2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC9lcnJvcl9pbmZvX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvdHlwZV9pbmZvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLQotbmFtZXNwYWNlCi1uZG5ib29zdAotICAgIHsKLSAgICBuYW1lc3BhY2UKLSAgICBleGNlcHRpb25fZGV0YWlsCi0gICAgICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEVycm9ySW5mbz4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGdldF9pbmZvCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMKLSAgICAgICAgICAgIHR5cGVuYW1lIEVycm9ySW5mbzo6dmFsdWVfdHlwZSAqCi0gICAgICAgICAgICBnZXQoIGV4Y2VwdGlvbiBjb25zdCAmIHggKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiggZXhjZXB0aW9uX2RldGFpbDo6ZXJyb3JfaW5mb19jb250YWluZXIgKiBjPXguZGF0YV8uZ2V0KCkgKQotICAgICAgICAgICAgICAgICAgICBpZiggc2hhcmVkX3B0cjxleGNlcHRpb25fZGV0YWlsOjplcnJvcl9pbmZvX2Jhc2U+IGVpYiA9IGMtPmdldChORE5CT09TVF9FWENFUFRJT05fU1RBVElDX1RZUEVJRChFcnJvckluZm8pKSApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1JUVEkKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCggMCE9ZHluYW1pY19jYXN0PEVycm9ySW5mbyAqPihlaWIuZ2V0KCkpICk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIEVycm9ySW5mbyAqIHcgPSBzdGF0aWNfY2FzdDxFcnJvckluZm8gKj4oZWliLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmdy0+dmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdAotICAgICAgICBnZXRfaW5mbzx0aHJvd19mdW5jdGlvbj4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYwotICAgICAgICAgICAgY2hhciBjb25zdCAqICoKLSAgICAgICAgICAgIGdldCggZXhjZXB0aW9uIGNvbnN0ICYgeCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4LnRocm93X2Z1bmN0aW9uXyA/ICZ4LnRocm93X2Z1bmN0aW9uXyA6IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgZ2V0X2luZm88dGhyb3dfZmlsZT4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYwotICAgICAgICAgICAgY2hhciBjb25zdCAqICoKLSAgICAgICAgICAgIGdldCggZXhjZXB0aW9uIGNvbnN0ICYgeCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4LnRocm93X2ZpbGVfID8gJngudGhyb3dfZmlsZV8gOiAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGdldF9pbmZvPHRocm93X2xpbmU+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMKLSAgICAgICAgICAgIGludCAqCi0gICAgICAgICAgICBnZXQoIGV4Y2VwdGlvbiBjb25zdCAmIHggKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4geC50aHJvd19saW5lXyE9LTEgPyAmeC50aHJvd19saW5lXyA6IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCxjbGFzcyBSPgotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgZ2V0X2Vycm9yX2luZm9fcmV0dXJuX3R5cGUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgUiAqIHR5cGU7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULGNsYXNzIFI+Ci0gICAgICAgIHN0cnVjdAotICAgICAgICBnZXRfZXJyb3JfaW5mb19yZXR1cm5fdHlwZTxUIGNvbnN0LFI+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFIgY29uc3QgKiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTk9fUlRUSQotICAgIHRlbXBsYXRlIDxjbGFzcyBFcnJvckluZm8+Ci0gICAgaW5saW5lCi0gICAgdHlwZW5hbWUgRXJyb3JJbmZvOjp2YWx1ZV90eXBlIGNvbnN0ICoKLSAgICBnZXRfZXJyb3JfaW5mbyggbmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdCAmIHggKQotICAgICAgICB7Ci0gICAgICAgIHJldHVybiBleGNlcHRpb25fZGV0YWlsOjpnZXRfaW5mbzxFcnJvckluZm8+OjpnZXQoeCk7Ci0gICAgICAgIH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRXJyb3JJbmZvPgotICAgIGlubGluZQotICAgIHR5cGVuYW1lIEVycm9ySW5mbzo6dmFsdWVfdHlwZSAqCi0gICAgZ2V0X2Vycm9yX2luZm8oIG5kbmJvb3N0OjpleGNlcHRpb24gJiB4ICkKLSAgICAgICAgewotICAgICAgICByZXR1cm4gZXhjZXB0aW9uX2RldGFpbDo6Z2V0X2luZm88RXJyb3JJbmZvPjo6Z2V0KHgpOwotICAgICAgICB9Ci0jZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBFcnJvckluZm8sY2xhc3MgRT4KLSAgICBpbmxpbmUKLSAgICB0eXBlbmFtZSBleGNlcHRpb25fZGV0YWlsOjpnZXRfZXJyb3JfaW5mb19yZXR1cm5fdHlwZTxFLHR5cGVuYW1lIEVycm9ySW5mbzo6dmFsdWVfdHlwZT46OnR5cGUKLSAgICBnZXRfZXJyb3JfaW5mbyggRSAmIHNvbWVfZXhjZXB0aW9uICkKLSAgICAgICAgewotICAgICAgICBpZiggZXhjZXB0aW9uIGNvbnN0ICogeCA9IGR5bmFtaWNfY2FzdDxleGNlcHRpb24gY29uc3QgKj4oJnNvbWVfZXhjZXB0aW9uKSApCi0gICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uX2RldGFpbDo6Z2V0X2luZm88RXJyb3JJbmZvPjo6Z2V0KCp4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgIH0KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGY1NTA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0vLyAgbmRuYm9vc3QvZmlsZXN5c3RlbS5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDEwCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgTGlicmFyeSBob21lIHBhZ2U6IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZmlsZXN5c3RlbQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8gCi0KLSNpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9GSUxFU1lTVEVNX0hQUAotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0ZJTEVTWVNURU1fSFBQCi0KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vY29uZmlnLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9maWxlc3lzdGVtL29wZXJhdGlvbnMuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9jb252ZW5pZW5jZS5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfRklMRVNZU1RFTV9GSUxFU1lTVEVNX0hQUCAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MGJlYzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLy8gIG5kbmJvb3N0L2ZpbGVzeXN0ZW0vdjMvY29uZmlnLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMwotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotLy8gIExpYnJhcnkgaG9tZSBwYWdlOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ZpbGVzeXN0ZW0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vIAotCi0jaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU0zX0NPTkZJR19IUFAKLSNkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTTNfQ09ORklHX0hQUAotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9WRVJTSU9OKSAmJiBORE5CT09TVF9GSUxFU1lTVEVNX1ZFUlNJT04gIT0gMwotIyAgIGVycm9yIENvbXBpbGluZyBGaWxlc3lzdGVtIHZlcnNpb24gMyBmaWxlIHdpdGggTkROQk9PU1RfRklMRVNZU1RFTV9WRVJTSU9OIGRlZmluZWQgIT0gMwotIyBlbmRpZgotCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fVkVSU0lPTikKLSMgICBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9WRVJTSU9OIDMKLSMgZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0kxOE4gIC8vIGFpZCB1c2VycyB3aXNoaW5nIHRvIGNvbXBpbGUgc2V2ZXJhbCB2ZXJzaW9ucwotCi0vLyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIHNlcGFyYXRlIGNvbXBpbGF0aW9uIGZlYXR1cmVzIGFzIGRlc2NyaWJlZCBpbgotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N5c3RlbS9hcGlfY29uZmlnLmhwcD4gIC8vIGZvciBORE5CT09TVF9QT1NJWF9BUEkgb3IgTkROQk9PU1RfV0lORE9XU19BUEkKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+IAotCi0vLyAgTkROQk9PU1RfRklMRVNZU1RFTV9ERVBSRUNBVEVEIG5lZWRlZCBmb3Igc291cmNlIGNvbXBpbGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyBpZmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX1NPVVJDRQotIyAgIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0RFUFJFQ0FURUQKLSMgZW5kaWYKLQotLy8gIHRocm93IGFuIGV4Y2VwdGlvbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLwotLy8gIEV4Y2VwdGlvbnMgd2VyZSBvcmlnaW5hbGx5IHRocm93biB2aWEgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbigpLgotLy8gIEFzIHRocm93X2V4Y2VwdGlvbigpIGJlY2FtZSBtb3JlIGNvbXBsZXgsIGl0IGNhdXNlZCB1c2VyIGVycm9yIHJlcG9ydGluZwotLy8gIHRvIGJlIGhhcmRlciB0byBpbnRlcnByZXQsIHNpbmNlIHRoZSBleGNlcHRpb24gcmVwb3J0ZWQgYmVjYW1lIG11Y2ggbW9yZSBjb21wbGV4LgotLy8gIFRoZSBpbW1lZGlhdGUgZml4IHdhcyB0byB0aHJvdyBkaXJlY3RseSwgd3JhcHBlZCBpbiBhIG1hY3JvIHRvIG1ha2UgYW55IGxhdGVyIGNoYW5nZQotLy8gIGVhc2llci4KLQotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX1RIUk9XKEVYKSB0aHJvdyBFWAotCi0jIGlmIGRlZmluZWQoIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HICkKLSMgICBlcnJvciBDb25maWd1cmF0aW9uIG5vdCBzdXBwb3J0ZWQ6IEJvb3N0LkZpbGVzeXN0ZW0gVjMgYW5kIGxhdGVyIHJlcXVpcmVzIHN0ZDo6d3N0cmluZyBzdXBwb3J0Ci0jIGVuZGlmCi0KLS8vICBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIHNlcGFyYXRlIGNvbXBpbGF0aW9uIGZlYXR1cmVzIGFzIGRlc2NyaWJlZCBpbgotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvc2VwYXJhdGVfY29tcGlsYXRpb24uaHRtbAotCi0vLyAgbm9ybWFsaXplIG1hY3JvcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fU1RBVElDX0xJTkspIFwKLSAgJiYgIWRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9BTExfU1RBVElDX0xJTkspCi0jIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX1NUQVRJQ19MSU5LCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX0RZTl9MSU5LKQotIyBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9EWU5fTElOSyAKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfQUxMX1NUQVRJQ19MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX1NUQVRJQ19MSU5LKQotIyBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9TVEFUSUNfTElOSyAKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX0RZTl9MSU5LKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fU1RBVElDX0xJTkspCi0jIGVycm9yIE11c3Qgbm90IGRlZmluZSBib3RoIE5ETkJPT1NUX0ZJTEVTWVNURU1fRFlOX0xJTksgYW5kIE5ETkJPT1NUX0ZJTEVTWVNURU1fU1RBVElDX0xJTksKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKSAmJiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX05PX0xJQikKLSMgZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fTElCIAotI2VuZGlmCi0KLS8vICBlbmFibGUgZHluYW1pYyBsaW5raW5nICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9EWU5fTElOSykKLSMgaWYgZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX1NPVVJDRSkKLSMgICBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSMgZWxzZSAKLSMgICBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSMgZW5kaWYKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSNlbmRpZgotCi0vLyAgZW5hYmxlIGF1dG9tYXRpYyBsaWJyYXJ5IHZhcmlhbnQgc2VsZWN0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8gCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX1NPVVJDRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfQUxMX05PX0xJQikgXAotICAmJiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX05PX0xJQikKLS8vCi0vLyBTZXQgdGhlIG5hbWUgb2Ygb3VyIGxpYnJhcnksIHRoaXMgd2lsbCBnZXQgdW5kZWYnZWQgYnkgYXV0b19saW5rLmhwcAotLy8gb25jZSBpdCdzIGRvbmUgd2l0aCBpdDoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0xJQl9OQU1FIG5kbmJvb3N0X2ZpbGVzeXN0ZW0KLS8vCi0vLyBJZiB3ZSdyZSBpbXBvcnRpbmcgY29kZSBmcm9tIGEgZGxsLCB0aGVuIHRlbGwgYXV0b19saW5rLmhwcCBhYm91dCBpdDoKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9EWU5fTElOSykKLSMgIGRlZmluZSBORE5CT09TVF9EWU5fTElOSwotI2VuZGlmCi0vLwotLy8gQW5kIGluY2x1ZGUgdGhlIGhlYWRlciB0aGF0IGRvZXMgdGhlIHdvcms6Ci0vLwotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPgotI2VuZGlmICAvLyBhdXRvLWxpbmtpbmcgZGlzYWJsZWQKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0ZJTEVTWVNURU0zX0NPTkZJR19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9jb252ZW5pZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vY29udmVuaWVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTkxNzUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9jb252ZW5pZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vLyAgbmRuYm9vc3QvZmlsZXN5c3RlbS9jb252ZW5pZW5jZS5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzLCAyMDAyLTIwMDUKLS8vICBDb3B5cmlnaHQgVmxhZGltaXIgUHJ1cywgMjAwMgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9maWxlc3lzdGVtCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vIAotCi0jaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU0zX0NPTlZFTklFTkNFX0hQUAotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNM19DT05WRU5JRU5DRV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSMgaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fU1REX1dTVFJJTkcgKQotIyAgIGVycm9yIENvbmZpZ3VyYXRpb24gbm90IHN1cHBvcnRlZDogQm9vc3QuRmlsZXN5c3RlbSBWMyBhbmQgbGF0ZXIgcmVxdWlyZXMgc3RkOjp3c3RyaW5nIHN1cHBvcnQKLSMgZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwPiAvLyBtdXN0IGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICBuYW1lc3BhY2UgZmlsZXN5c3RlbQotICB7Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotCi0gICAgaW5saW5lIHN0ZDo6c3RyaW5nIGV4dGVuc2lvbihjb25zdCBwYXRoICYgcCkKLSAgICB7Ci0gICAgICByZXR1cm4gcC5leHRlbnNpb24oKS5zdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgc3RkOjpzdHJpbmcgYmFzZW5hbWUoY29uc3QgcGF0aCAmIHApCi0gICAgewotICAgICAgcmV0dXJuIHAuc3RlbSgpLnN0cmluZygpOwotICAgIH0KLQotICAgIGlubGluZSBwYXRoIGNoYW5nZV9leHRlbnNpb24oIGNvbnN0IHBhdGggJiBwLCBjb25zdCBwYXRoICYgbmV3X2V4dGVuc2lvbiApCi0gICAgeyAKLSAgICAgIHBhdGggbmV3X3AoIHAgKTsKLSAgICAgIG5ld19wLnJlcGxhY2VfZXh0ZW5zaW9uKCBuZXdfZXh0ZW5zaW9uICk7Ci0gICAgICByZXR1cm4gbmV3X3A7Ci0gICAgfQotCi0jIGVuZGlmCi0KLQotICB9IC8vIG5hbWVzcGFjZSBmaWxlc3lzdGVtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBwb3BzIGFiaV9wcmVmaXguaHBwIHByYWdtYXMKLSNlbmRpZiAvLyBORE5CT09TVF9GSUxFU1lTVEVNM19DT05WRU5JRU5DRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU4MjUxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMDEgUm9uYWxkIEdhcmNpYSwgSW5kaWFuYSBVbml2ZXJzaXR5IChnYXJjaWFAb3NsLml1LmVkdSkKLS8vIEFuZHJldyBMdW1zZGFpbmUsIEluZGlhbmEgVW5pdmVyc2l0eSAobHVtc0Bvc2wuaXUuZWR1KS4KLQotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9VVEY4X0NPREVDVlRfRkFDRVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fVVRGOF9DT0RFQ1ZUX0ZBQ0VUX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9jb25maWcuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1VURjhfQkVHSU5fTkFNRVNQQUNFIFwKLSAgICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZpbGVzeXN0ZW0geyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2RlZmluZSBORE5CT09TVF9VVEY4X0VORF9OQU1FU1BBQ0UgfX19Ci0jZGVmaW5lIE5ETkJPT1NUX1VURjhfREVDTCBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVVRGOF9CRUdJTl9OQU1FU1BBQ0UKLSN1bmRlZiBORE5CT09TVF9VVEY4X0VORF9OQU1FU1BBQ0UKLSN1bmRlZiBORE5CT09TVF9VVEY4X0RFQ0wKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vb3BlcmF0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vb3BlcmF0aW9ucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOTVlNDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL29wZXJhdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5NiArMCwwIEBACi0vLyAgbmRuYm9vc3QvZmlsZXN5c3RlbS9vcGVyYXRpb25zLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAyLTIwMDkKLS8vICBDb3B5cmlnaHQgSmFuIExhbmdlciAyMDAyCi0vLyAgQ29weXJpZ2h0IERpZXRtYXIgS3VlaGwgMjAwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS8vICBDb3B5cmlnaHQgVmxhZGltaXIgUHJ1cyAyMDAyCi0gICAKLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgTGlicmFyeSBob21lIHBhZ2U6IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZmlsZXN5c3RlbQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNM19PUEVSQVRJT05TX0hQUAotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNM19PUEVSQVRJT05TX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotIyBpZiBkZWZpbmVkKCBORE5CT09TVF9OT19TVERfV1NUUklORyApCi0jICAgZXJyb3IgQ29uZmlndXJhdGlvbiBub3Qgc3VwcG9ydGVkOiBCb29zdC5GaWxlc3lzdGVtIFYzIGFuZCBsYXRlciByZXF1aXJlcyBzdGQ6OndzdHJpbmcgc3VwcG9ydAotIyBlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc2NvcGVkX2VudW1fZW11bGF0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvYml0bWFzay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N5c3RlbS9zeXN0ZW1fZXJyb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PiAvLyBmb3IgcGFpcgotI2luY2x1ZGUgPGN0aW1lPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxzdGFjaz4KLQotI2lmZGVmIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0jICBpbmNsdWRlIDxmc3RyZWFtPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHA+IC8vIG11c3QgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICBuYW1lc3BhY2UgZmlsZXN5c3RlbQotICB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBlbnVtIGZpbGVfdHlwZQotICB7IAotICAgIHN0YXR1c19lcnJvciwKLSMgICBpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVECi0gICAgc3RhdHVzX3Vua25vd24gPSBzdGF0dXNfZXJyb3IsCi0jICAgZW5kaWYKLSAgICBmaWxlX25vdF9mb3VuZCwKLSAgICByZWd1bGFyX2ZpbGUsCi0gICAgZGlyZWN0b3J5X2ZpbGUsCi0gICAgLy8gdGhlIGZvbGxvd2luZyBtYXkgbm90IGFwcGx5IHRvIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgb3IgZmlsZSBzeXN0ZW1zCi0gICAgc3ltbGlua19maWxlLAotICAgIGJsb2NrX2ZpbGUsCi0gICAgY2hhcmFjdGVyX2ZpbGUsCi0gICAgZmlmb19maWxlLAotICAgIHNvY2tldF9maWxlLAotICAgIHJlcGFyc2VfZmlsZSwgIC8vIFdpbmRvd3M6IEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgdGhhdCBpcyBub3QgYSBzeW1saW5rCi0gICAgdHlwZV91bmtub3duLCAgLy8gZmlsZSBkb2VzIGV4aXN0LCBidXQgaXNuJ3Qgb25lIG9mIHRoZSBhYm92ZSB0eXBlcyBvcgotICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgc3Ryb25nIGVub3VnaCBwZXJtaXNzaW9uIHRvIGZpbmQgaXRzIHR5cGUKLQotICAgIF9kZXRhaWxfZGlyZWN0b3J5X3N5bWxpbmsgIC8vIGludGVybmFsIHVzZSBvbmx5OyBuZXZlciBleHBvc2VkIHRvIHVzZXJzCi0gIH07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBlbnVtIHBlcm1zCi0gIHsKLSAgICBub19wZXJtcyA9IDAsICAgICAgIC8vIGZpbGVfbm90X2ZvdW5kIGlzIG5vX3Blcm1zIHJhdGhlciB0aGFuIHBlcm1zX25vdF9rbm93bgotCi0gICAgLy8gUE9TSVggZXF1aXZhbGVudCBtYWNyb3MgZ2l2ZW4gaW4gY29tbWVudHMuCi0gICAgLy8gVmFsdWVzIGFyZSBmcm9tIFBPU0lYIGFuZCBhcmUgZ2l2ZW4gaW4gb2N0YWwgcGVyIHRoZSBQT1NJWCBzdGFuZGFyZC4KLQotICAgIC8vIHBlcm1pc3Npb24gYml0cwotICAgIAotICAgIG93bmVyX3JlYWQgPSAwNDAwLCAgLy8gU19JUlVTUiwgUmVhZCBwZXJtaXNzaW9uLCBvd25lcgotICAgIG93bmVyX3dyaXRlID0gMDIwMCwgLy8gU19JV1VTUiwgV3JpdGUgcGVybWlzc2lvbiwgb3duZXIKLSAgICBvd25lcl9leGUgPSAwMTAwLCAgIC8vIFNfSVhVU1IsIEV4ZWN1dGUvc2VhcmNoIHBlcm1pc3Npb24sIG93bmVyCi0gICAgb3duZXJfYWxsID0gMDcwMCwgICAvLyBTX0lSV1hVLCBSZWFkLCB3cml0ZSwgZXhlY3V0ZS9zZWFyY2ggYnkgb3duZXIKLQotICAgIGdyb3VwX3JlYWQgPSAwNDAsICAgLy8gU19JUkdSUCwgUmVhZCBwZXJtaXNzaW9uLCBncm91cAotICAgIGdyb3VwX3dyaXRlID0gMDIwLCAgLy8gU19JV0dSUCwgV3JpdGUgcGVybWlzc2lvbiwgZ3JvdXAKLSAgICBncm91cF9leGUgPSAwMTAsICAgIC8vIFNfSVhHUlAsIEV4ZWN1dGUvc2VhcmNoIHBlcm1pc3Npb24sIGdyb3VwCi0gICAgZ3JvdXBfYWxsID0gMDcwLCAgICAvLyBTX0lSV1hHLCBSZWFkLCB3cml0ZSwgZXhlY3V0ZS9zZWFyY2ggYnkgZ3JvdXAKLQotICAgIG90aGVyc19yZWFkID0gMDQsICAgLy8gU19JUk9USCwgUmVhZCBwZXJtaXNzaW9uLCBvdGhlcnMKLSAgICBvdGhlcnNfd3JpdGUgPSAwMiwgIC8vIFNfSVdPVEgsIFdyaXRlIHBlcm1pc3Npb24sIG90aGVycwotICAgIG90aGVyc19leGUgPSAwMSwgICAgLy8gU19JWE9USCwgRXhlY3V0ZS9zZWFyY2ggcGVybWlzc2lvbiwgb3RoZXJzCi0gICAgb3RoZXJzX2FsbCA9IDA3LCAgICAvLyBTX0lSV1hPLCBSZWFkLCB3cml0ZSwgZXhlY3V0ZS9zZWFyY2ggYnkgb3RoZXJzCi0KLSAgICBhbGxfYWxsID0gb3duZXJfYWxsfGdyb3VwX2FsbHxvdGhlcnNfYWxsLCAgLy8gMDc3NwotCi0gICAgLy8gb3RoZXIgUE9TSVggYml0cwotCi0gICAgc2V0X3VpZF9vbl9leGUgPSAwNDAwMCwgLy8gU19JU1VJRCwgU2V0LXVzZXItSUQgb24gZXhlY3V0aW9uCi0gICAgc2V0X2dpZF9vbl9leGUgPSAwMjAwMCwgLy8gU19JU0dJRCwgU2V0LWdyb3VwLUlEIG9uIGV4ZWN1dGlvbgotICAgIHN0aWNreV9iaXQgICAgID0gMDEwMDAsIC8vIFNfSVNWVFgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFBPU0lYIFhTSSkgT24gZGlyZWN0b3JpZXMsIHJlc3RyaWN0ZWQgZGVsZXRpb24gZmxhZyAKLQkgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChWNykgJ3N0aWNreSBiaXQnOiBzYXZlIHN3YXBwZWQgdGV4dCBldmVuIGFmdGVyIHVzZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoU3VuT1MpIE9uIG5vbi1kaXJlY3RvcmllczogZG9uJ3QgY2FjaGUgdGhpcyBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFNWSUQtdjQuMikgT24gZGlyZWN0b3JpZXM6IHJlc3RyaWN0ZWQgZGVsZXRpb24gZmxhZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsc28gc2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RpY2t5X2JpdAotCi0gICAgcGVybXNfbWFzayA9IGFsbF9hbGx8c2V0X3VpZF9vbl9leGV8c2V0X2dpZF9vbl9leGV8c3RpY2t5X2JpdCwgIC8vIDA3Nzc3Ci0KLSAgICBwZXJtc19ub3Rfa25vd24gPSAweEZGRkYsIC8vIHByZXNlbnQgd2hlbiBkaXJlY3RvcnlfZW50cnkgY2FjaGUgbm90IGxvYWRlZAotCi0gICAgLy8gb3B0aW9ucyBmb3IgcGVybWlzc2lvbnMoKSBmdW5jdGlvbgotCi0gICAgYWRkX3Blcm1zID0gMHgxMDAwLCAgICAgLy8gYWRkcyB0aGUgZ2l2ZW4gcGVybWlzc2lvbiBiaXRzIHRvIHRoZSBjdXJyZW50IGJpdHMKLSAgICByZW1vdmVfcGVybXMgPSAweDIwMDAsICAvLyByZW1vdmVzIHRoZSBnaXZlbiBwZXJtaXNzaW9uIGJpdHMgZnJvbSB0aGUgY3VycmVudCBiaXRzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNob29zZSBhZGRfcGVybXMgb3IgcmVtb3ZlX3Blcm1zLCBub3QgYm90aDsgaWYgbmVpdGhlciBhZGRfcGVybXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3IgcmVtb3ZlX3Blcm1zIGlzIGdpdmVuLCByZXBsYWNlIHRoZSBjdXJyZW50IGJpdHMgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBnaXZlbiBiaXRzLgotCi0gICAgc3ltbGlua19wZXJtcyA9IDB4NDAwMCAgLy8gb24gUE9TSVgsIGRvbid0IHJlc29sdmUgc3ltbGlua3M7IGltcGxpZWQgb24gV2luZG93cwotICB9OwotCi0gIE5ETkJPT1NUX0JJVE1BU0socGVybXMpCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3N0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBjbGFzcyBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgZmlsZV9zdGF0dXMKLSAgewotICBwdWJsaWM6Ci0gICAgICAgICAgICAgZmlsZV9zdGF0dXMoKSAgICAgICAgICAgIDogbV92YWx1ZShzdGF0dXNfZXJyb3IpLCBtX3Blcm1zKHBlcm1zX25vdF9rbm93bikge30KLSAgICBleHBsaWNpdCBmaWxlX3N0YXR1cyhmaWxlX3R5cGUgdiwgcGVybXMgcHJtcyA9IHBlcm1zX25vdF9rbm93bikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtX3ZhbHVlKHYpLCBtX3Blcm1zKHBybXMpIHt9Ci0KLSAgICAvLyBvYnNlcnZlcnMKLSAgICBmaWxlX3R5cGUgIHR5cGUoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gbV92YWx1ZTsgfQotICAgIHBlcm1zICAgICAgcGVybWlzc2lvbnMoKSBjb25zdCAgICAgICAgICAgICAgICB7IHJldHVybiBtX3Blcm1zOyB9IAotCi0gICAgLy8gbW9kaWZpZXJzCi0gICAgdm9pZCAgICAgICB0eXBlKGZpbGVfdHlwZSB2KSAgICAgICAgICAgICAgICAgIHsgbV92YWx1ZSA9IHY7IH0KLSAgICB2b2lkICAgICAgIHBlcm1pc3Npb25zKHBlcm1zIHBybXMpICAgICAgICAgICAgeyBtX3Blcm1zID0gcHJtczsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGZpbGVfc3RhdHVzJiByaHMpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSByaHMudHlwZSgpICYmIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zKCkgPT0gcmhzLnBlcm1pc3Npb25zKCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgZmlsZV9zdGF0dXMmIHJocykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSByaHMpOyB9Ci0KLSAgcHJpdmF0ZToKLSAgICBmaWxlX3R5cGUgICBtX3ZhbHVlOwotICAgIGVudW0gcGVybXMgIG1fcGVybXM7Ci0gIH07Ci0KLSAgaW5saW5lIGJvb2wgdHlwZV9wcmVzZW50KGZpbGVfc3RhdHVzIGYpIHsgcmV0dXJuIGYudHlwZSgpICE9IHN0YXR1c19lcnJvcjsgfQotICBpbmxpbmUgYm9vbCBwZXJtaXNzaW9uc19wcmVzZW50KGZpbGVfc3RhdHVzIGYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGYucGVybWlzc2lvbnMoKSAhPSBwZXJtc19ub3Rfa25vd247fQotICBpbmxpbmUgYm9vbCBzdGF0dXNfa25vd24oZmlsZV9zdGF0dXMgZikgeyByZXR1cm4gdHlwZV9wcmVzZW50KGYpICYmIHBlcm1pc3Npb25zX3ByZXNlbnQoZik7IH0KLSAgaW5saW5lIGJvb2wgZXhpc3RzKGZpbGVfc3RhdHVzIGYpICAgICAgIHsgcmV0dXJuIGYudHlwZSgpICE9IHN0YXR1c19lcnJvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgZi50eXBlKCkgIT0gZmlsZV9ub3RfZm91bmQ7IH0KLSAgaW5saW5lIGJvb2wgaXNfcmVndWxhcl9maWxlKGZpbGVfc3RhdHVzIGYpeyByZXR1cm4gZi50eXBlKCkgPT0gcmVndWxhcl9maWxlOyB9Ci0gIGlubGluZSBib29sIGlzX2RpcmVjdG9yeShmaWxlX3N0YXR1cyBmKSB7IHJldHVybiBmLnR5cGUoKSA9PSBkaXJlY3RvcnlfZmlsZTsgfQotICBpbmxpbmUgYm9vbCBpc19zeW1saW5rKGZpbGVfc3RhdHVzIGYpICAgeyByZXR1cm4gZi50eXBlKCkgPT0gc3ltbGlua19maWxlOyB9Ci0gIGlubGluZSBib29sIGlzX290aGVyKGZpbGVfc3RhdHVzIGYpICAgICB7IHJldHVybiBleGlzdHMoZikgJiYgIWlzX3JlZ3VsYXJfZmlsZShmKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWlzX2RpcmVjdG9yeShmKSAmJiAhaXNfc3ltbGluayhmKTsgfQotCi0jIGlmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgaW5saW5lIGJvb2wgaXNfcmVndWxhcihmaWxlX3N0YXR1cyBmKSAgIHsgcmV0dXJuIGYudHlwZSgpID09IHJlZ3VsYXJfZmlsZTsgfQotIyBlbmRpZgotCi0gIHN0cnVjdCBzcGFjZV9pbmZvCi0gIHsKLSAgICAvLyBhbGwgdmFsdWVzIGFyZSBieXRlIGNvdW50cwotICAgIG5kbmJvb3N0Ojp1aW50bWF4X3QgY2FwYWNpdHk7Ci0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBmcmVlOyAgICAgIC8vIDw9IGNhcGFjaXR5Ci0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBhdmFpbGFibGU7IC8vIDw9IGZyZWUKLSAgfTsKLQotICBORE5CT09TVF9TQ09QRURfRU5VTV9TVEFSVChjb3B5X29wdGlvbikKLSAgICB7bm9uZSwgZmFpbF9pZl9leGlzdHMgPSBub25lLCBvdmVyd3JpdGVfaWZfZXhpc3RzfTsKLSAgTkROQk9PU1RfU0NPUEVEX0VOVU1fRU5ECi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBuYW1lc3BhY2UgZGV0YWlsCi0gIHsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBmaWxlX3N0YXR1cyBzdGF0dXMoY29uc3QgcGF0aCZwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIGZpbGVfc3RhdHVzIHN5bWxpbmtfc3RhdHVzKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgYm9vbCBpc19lbXB0eShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHBhdGggaW5pdGlhbF9wYXRoKHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgcGF0aCBjYW5vbmljYWwoY29uc3QgcGF0aCYgcCwgY29uc3QgcGF0aCYgYmFzZSwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIGNvcHkoY29uc3QgcGF0aCYgZnJvbSwgY29uc3QgcGF0aCYgdG8sIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgdm9pZCBjb3B5X2RpcmVjdG9yeShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIGNvcHlfZmlsZShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU0oY29weV9vcHRpb24pIG9wdGlvbiwgIC8vIFNlZSB0aWNrZXQgIzI5MjUKLSAgICAgICAgICAgICAgICAgICAgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIGNvcHlfc3ltbGluayhjb25zdCBwYXRoJiBleGlzdGluZ19zeW1saW5rLCBjb25zdCBwYXRoJiBuZXdfc3ltbGluaywgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBib29sIGNyZWF0ZV9kaXJlY3Rvcmllcyhjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIGJvb2wgY3JlYXRlX2RpcmVjdG9yeShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgY3JlYXRlX2RpcmVjdG9yeV9zeW1saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBmcm9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgdm9pZCBjcmVhdGVfaGFyZF9saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBmcm9tLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgY3JlYXRlX3N5bWxpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIGZyb20sIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgcGF0aCBjdXJyZW50X3BhdGgoc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIGN1cnJlbnRfcGF0aChjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIGJvb2wgZXF1aXZhbGVudChjb25zdCBwYXRoJiBwMSwgY29uc3QgcGF0aCYgcDIsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBmaWxlX3NpemUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBuZG5ib29zdDo6dWludG1heF90IGhhcmRfbGlua19jb3VudChjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHN0ZDo6dGltZV90IGxhc3Rfd3JpdGVfdGltZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgbGFzdF93cml0ZV90aW1lKGNvbnN0IHBhdGgmIHAsIGNvbnN0IHN0ZDo6dGltZV90IG5ld190aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgdm9pZCBwZXJtaXNzaW9ucyhjb25zdCBwYXRoJiBwLCBwZXJtcyBwcm1zLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHBhdGggcmVhZF9zeW1saW5rKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgICAvLyBGb3Igc3RhbmRhcmRpemF0aW9uLCBpZiB0aGUgY29tbWl0dGVlIGRvZXNuJ3QgbGlrZSAicmVtb3ZlIiwgY29uc2lkZXIgImVsaW1pbmF0ZSIKLSAgICBib29sIHJlbW92ZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIG5kbmJvb3N0Ojp1aW50bWF4X3QgcmVtb3ZlX2FsbChjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgcmVuYW1lKGNvbnN0IHBhdGgmIG9sZF9wLCBjb25zdCBwYXRoJiBuZXdfcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIHJlc2l6ZV9maWxlKGNvbnN0IHBhdGgmIHAsIHVpbnRtYXhfdCBzaXplLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHNwYWNlX2luZm8gc3BhY2UoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsgCi0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgcGF0aCBzeXN0ZW1fY29tcGxldGUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBwYXRoIHRlbXBfZGlyZWN0b3J5X3BhdGgoc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBwYXRoIHVuaXF1ZV9wYXRoKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gIH0gIC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgcXVlcnkgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBpbmxpbmUKLSAgZmlsZV9zdGF0dXMgc3RhdHVzKGNvbnN0IHBhdGgmIHApICAgIHtyZXR1cm4gZGV0YWlsOjpzdGF0dXMocCk7fQotICBpbmxpbmUgCi0gIGZpbGVfc3RhdHVzIHN0YXR1cyhjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OnN0YXR1cyhwLCAmZWMpO30KLSAgaW5saW5lIAotICBmaWxlX3N0YXR1cyBzeW1saW5rX3N0YXR1cyhjb25zdCBwYXRoJiBwKSB7cmV0dXJuIGRldGFpbDo6c3ltbGlua19zdGF0dXMocCk7fQotICBpbmxpbmUKLSAgZmlsZV9zdGF0dXMgc3ltbGlua19zdGF0dXMoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpzeW1saW5rX3N0YXR1cyhwLCAmZWMpO30KLSAgaW5saW5lIAotICBib29sIGV4aXN0cyhjb25zdCBwYXRoJiBwKSAgICAgICAgICAge3JldHVybiBleGlzdHMoZGV0YWlsOjpzdGF0dXMocCkpO30KLSAgaW5saW5lIAotICBib29sIGV4aXN0cyhjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBleGlzdHMoZGV0YWlsOjpzdGF0dXMocCwgJmVjKSk7fQotICBpbmxpbmUgCi0gIGJvb2wgaXNfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIHApICAgICB7cmV0dXJuIGlzX2RpcmVjdG9yeShkZXRhaWw6OnN0YXR1cyhwKSk7fQotICBpbmxpbmUgCi0gIGJvb2wgaXNfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGlzX2RpcmVjdG9yeShkZXRhaWw6OnN0YXR1cyhwLCAmZWMpKTt9Ci0gIGlubGluZSAKLSAgYm9vbCBpc19yZWd1bGFyX2ZpbGUoY29uc3QgcGF0aCYgcCkgIHtyZXR1cm4gaXNfcmVndWxhcl9maWxlKGRldGFpbDo6c3RhdHVzKHApKTt9Ci0gIGlubGluZSAKLSAgYm9vbCBpc19yZWd1bGFyX2ZpbGUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gaXNfcmVndWxhcl9maWxlKGRldGFpbDo6c3RhdHVzKHAsICZlYykpO30KLSAgaW5saW5lIAotICBib29sIGlzX290aGVyKGNvbnN0IHBhdGgmIHApICAgICAgICAge3JldHVybiBpc19vdGhlcihkZXRhaWw6OnN0YXR1cyhwKSk7fQotICBpbmxpbmUgCi0gIGJvb2wgaXNfb3RoZXIoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gaXNfb3RoZXIoZGV0YWlsOjpzdGF0dXMocCwgJmVjKSk7fQotICBpbmxpbmUKLSAgYm9vbCBpc19zeW1saW5rKGNvbnN0IHBhdGgmIHApICAgICAgIHtyZXR1cm4gaXNfc3ltbGluayhkZXRhaWw6OnN5bWxpbmtfc3RhdHVzKHApKTt9Ci0gIGlubGluZSAKLSAgYm9vbCBpc19zeW1saW5rKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGlzX3N5bWxpbmsoZGV0YWlsOjpzeW1saW5rX3N0YXR1cyhwLCAmZWMpKTt9Ci0jIGlmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgaW5saW5lCi0gIGJvb2wgaXNfcmVndWxhcihjb25zdCBwYXRoJiBwKSAgICAgICB7cmV0dXJuIGlzX3JlZ3VsYXIoZGV0YWlsOjpzdGF0dXMocCkpO30KLSAgaW5saW5lCi0gIGJvb2wgaXNfcmVndWxhcihjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBpc19yZWd1bGFyKGRldGFpbDo6c3RhdHVzKHAsICZlYykpO30KLSMgZW5kaWYKLQotICBpbmxpbmUKLSAgYm9vbCBpc19lbXB0eShjb25zdCBwYXRoJiBwKSAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjppc19lbXB0eShwKTt9Ci0gIGlubGluZQotICBib29sIGlzX2VtcHR5KGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6aXNfZW1wdHkocCwgJmVjKTt9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uYWwgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLCB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAKLSAgLy8gIGZvcndhcmQgZGVjbGFyYXRpb25zCi0gIHBhdGggY3VycmVudF9wYXRoKCk7ICAvLyBmd2QgZGVjbGFyYXRpb24KLSAgcGF0aCBpbml0aWFsX3BhdGgoKTsKLQotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgcGF0aCBhYnNvbHV0ZShjb25zdCBwYXRoJiBwLCBjb25zdCBwYXRoJiBiYXNlPWN1cnJlbnRfcGF0aCgpKTsKLSAgLy8gIElmIGJhc2UuaXNfYWJzb2x1dGUoKSwgdGhyb3dzIG5vdGhpbmcuIFRodXMgbm8gbmVlZCBmb3IgZWMgYXJndW1lbnQKLQotICBpbmxpbmUKLSAgcGF0aCBjYW5vbmljYWwoY29uc3QgcGF0aCYgcCwgY29uc3QgcGF0aCYgYmFzZT1jdXJyZW50X3BhdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpjYW5vbmljYWwocCwgYmFzZSk7fQotICBpbmxpbmUKLSAgcGF0aCBjYW5vbmljYWwoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpjYW5vbmljYWwocCwgY3VycmVudF9wYXRoKCksICZlYyk7fQotICBpbmxpbmUKLSAgcGF0aCBjYW5vbmljYWwoY29uc3QgcGF0aCYgcCwgY29uc3QgcGF0aCYgYmFzZSwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpjYW5vbmljYWwocCwgYmFzZSwgJmVjKTt9Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICBpbmxpbmUKLSAgcGF0aCBjb21wbGV0ZShjb25zdCBwYXRoJiBwKQotICB7Ci0gICAgcmV0dXJuIGFic29sdXRlKHAsIGluaXRpYWxfcGF0aCgpKTsKLSAgfQotCi0gIGlubGluZQotICBwYXRoIGNvbXBsZXRlKGNvbnN0IHBhdGgmIHAsIGNvbnN0IHBhdGgmIGJhc2UpCi0gIHsKLSAgICByZXR1cm4gYWJzb2x1dGUocCwgYmFzZSk7Ci0gIH0KLSMgZW5kaWYKLQotICBpbmxpbmUKLSAgdm9pZCBjb3B5KGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvKSB7ZGV0YWlsOjpjb3B5KGZyb20sIHRvKTt9Ci0KLSAgaW5saW5lCi0gIHZvaWQgY29weShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjb3B5KGZyb20sIHRvLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY29weV9kaXJlY3RvcnkoY29uc3QgcGF0aCYgZnJvbSwgY29uc3QgcGF0aCYgdG8pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjb3B5X2RpcmVjdG9yeShmcm9tLCB0byk7fQotICBpbmxpbmUKLSAgdm9pZCBjb3B5X2RpcmVjdG9yeShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfZGlyZWN0b3J5KGZyb20sIHRvLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY29weV9maWxlKGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvLCAgIC8vIFNlZSB0aWNrZXQgIzI5MjUKLSAgICAgICAgICAgICAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU0oY29weV9vcHRpb24pIG9wdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfZmlsZShmcm9tLCB0bywgb3B0aW9uKTt9Ci0gIGlubGluZQotICB2b2lkIGNvcHlfZmlsZShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfZmlsZShmcm9tLCB0bywgY29weV9vcHRpb246OmZhaWxfaWZfZXhpc3RzKTt9Ci0gIGlubGluZQotICB2b2lkIGNvcHlfZmlsZShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgICAvLyBTZWUgdGlja2V0ICMyOTI1Ci0gICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NDT1BFRF9FTlVNKGNvcHlfb3B0aW9uKSBvcHRpb24sIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjb3B5X2ZpbGUoZnJvbSwgdG8sIG9wdGlvbiwgJmVjKTt9Ci0gIGlubGluZQotICB2b2lkIGNvcHlfZmlsZShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfZmlsZShmcm9tLCB0bywgY29weV9vcHRpb246OmZhaWxfaWZfZXhpc3RzLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY29weV9zeW1saW5rKGNvbnN0IHBhdGgmIGV4aXN0aW5nX3N5bWxpbmssIGNvbnN0IHBhdGgmIG5ld19zeW1saW5rKSB7ZGV0YWlsOjpjb3B5X3N5bWxpbmsoZXhpc3Rpbmdfc3ltbGluaywgbmV3X3N5bWxpbmspO30KLQotICBpbmxpbmUKLSAgdm9pZCBjb3B5X3N5bWxpbmsoY29uc3QgcGF0aCYgZXhpc3Rpbmdfc3ltbGluaywgY29uc3QgcGF0aCYgbmV3X3N5bWxpbmssIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjb3B5X3N5bWxpbmsoZXhpc3Rpbmdfc3ltbGluaywgbmV3X3N5bWxpbmssICZlYyk7fQotICBpbmxpbmUKLSAgYm9vbCBjcmVhdGVfZGlyZWN0b3JpZXMoY29uc3QgcGF0aCYgcCkge3JldHVybiBkZXRhaWw6OmNyZWF0ZV9kaXJlY3RvcmllcyhwKTt9Ci0KLSAgaW5saW5lCi0gIGJvb2wgY3JlYXRlX2RpcmVjdG9yaWVzKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6Y3JlYXRlX2RpcmVjdG9yaWVzKHAsICZlYyk7fQotICBpbmxpbmUKLSAgYm9vbCBjcmVhdGVfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIHApIHtyZXR1cm4gZGV0YWlsOjpjcmVhdGVfZGlyZWN0b3J5KHApO30KLQotICBpbmxpbmUKLSAgYm9vbCBjcmVhdGVfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6Y3JlYXRlX2RpcmVjdG9yeShwLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY3JlYXRlX2RpcmVjdG9yeV9zeW1saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBmcm9tKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y3JlYXRlX2RpcmVjdG9yeV9zeW1saW5rKHRvLCBmcm9tKTt9Ci0gIGlubGluZQotICB2b2lkIGNyZWF0ZV9kaXJlY3Rvcnlfc3ltbGluayhjb25zdCBwYXRoJiB0bywgY29uc3QgcGF0aCYgZnJvbSwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNyZWF0ZV9kaXJlY3Rvcnlfc3ltbGluayh0bywgZnJvbSwgJmVjKTt9Ci0gIGlubGluZQotICB2b2lkIGNyZWF0ZV9oYXJkX2xpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIG5ld19oYXJkX2xpbmspIHtkZXRhaWw6OmNyZWF0ZV9oYXJkX2xpbmsodG8sIG5ld19oYXJkX2xpbmspO30KLQotICBpbmxpbmUKLSAgdm9pZCBjcmVhdGVfaGFyZF9saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBuZXdfaGFyZF9saW5rLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y3JlYXRlX2hhcmRfbGluayh0bywgbmV3X2hhcmRfbGluaywgJmVjKTt9Ci0gIGlubGluZQotICB2b2lkIGNyZWF0ZV9zeW1saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBuZXdfc3ltbGluaykge2RldGFpbDo6Y3JlYXRlX3N5bWxpbmsodG8sIG5ld19zeW1saW5rKTt9Ci0KLSAgaW5saW5lCi0gIHZvaWQgY3JlYXRlX3N5bWxpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIG5ld19zeW1saW5rLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y3JlYXRlX3N5bWxpbmsodG8sIG5ld19zeW1saW5rLCAmZWMpO30KLSAgaW5saW5lCi0gIHBhdGggY3VycmVudF9wYXRoKCkgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6Y3VycmVudF9wYXRoKCk7fQotCi0gIGlubGluZQotICBwYXRoIGN1cnJlbnRfcGF0aChzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSB7cmV0dXJuIGRldGFpbDo6Y3VycmVudF9wYXRoKCZlYyk7fQotCi0gIGlubGluZQotICB2b2lkIGN1cnJlbnRfcGF0aChjb25zdCBwYXRoJiBwKSAgICAge2RldGFpbDo6Y3VycmVudF9wYXRoKHApO30KLQotICBpbmxpbmUKLSAgdm9pZCBjdXJyZW50X3BhdGgoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykge2RldGFpbDo6Y3VycmVudF9wYXRoKHAsICZlYyk7fQotCi0gIGlubGluZQotICBib29sIGVxdWl2YWxlbnQoY29uc3QgcGF0aCYgcDEsIGNvbnN0IHBhdGgmIHAyKSB7cmV0dXJuIGRldGFpbDo6ZXF1aXZhbGVudChwMSwgcDIpO30KLQotICBpbmxpbmUKLSAgYm9vbCBlcXVpdmFsZW50KGNvbnN0IHBhdGgmIHAxLCBjb25zdCBwYXRoJiBwMiwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjplcXVpdmFsZW50KHAxLCBwMiwgJmVjKTt9Ci0gIGlubGluZQotICBuZG5ib29zdDo6dWludG1heF90IGZpbGVfc2l6ZShjb25zdCBwYXRoJiBwKSB7cmV0dXJuIGRldGFpbDo6ZmlsZV9zaXplKHApO30KLQotICBpbmxpbmUKLSAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBmaWxlX3NpemUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpmaWxlX3NpemUocCwgJmVjKTt9Ci0gIGlubGluZQotICBuZG5ib29zdDo6dWludG1heF90IGhhcmRfbGlua19jb3VudChjb25zdCBwYXRoJiBwKSB7cmV0dXJuIGRldGFpbDo6aGFyZF9saW5rX2NvdW50KHApO30KLQotICBpbmxpbmUKLSAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBoYXJkX2xpbmtfY291bnQoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpoYXJkX2xpbmtfY291bnQocCwgJmVjKTt9Ci0gIGlubGluZQotICBwYXRoIGluaXRpYWxfcGF0aCgpICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OmluaXRpYWxfcGF0aCgpO30KLQotICBpbmxpbmUKLSAgcGF0aCBpbml0aWFsX3BhdGgoc3lzdGVtOjplcnJvcl9jb2RlJiBlYykge3JldHVybiBkZXRhaWw6OmluaXRpYWxfcGF0aCgmZWMpO30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgUGF0aD4KLSAgcGF0aCBpbml0aWFsX3BhdGgoKSB7cmV0dXJuIGluaXRpYWxfcGF0aCgpO30KLSAgdGVtcGxhdGUgPGNsYXNzIFBhdGg+Ci0gIHBhdGggaW5pdGlhbF9wYXRoKHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpIHtyZXR1cm4gZGV0YWlsOjppbml0aWFsX3BhdGgoJmVjKTt9Ci0KLSAgaW5saW5lCi0gIHN0ZDo6dGltZV90IGxhc3Rfd3JpdGVfdGltZShjb25zdCBwYXRoJiBwKSB7cmV0dXJuIGRldGFpbDo6bGFzdF93cml0ZV90aW1lKHApO30KLQotICBpbmxpbmUKLSAgc3RkOjp0aW1lX3QgbGFzdF93cml0ZV90aW1lKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6bGFzdF93cml0ZV90aW1lKHAsICZlYyk7fQotICBpbmxpbmUKLSAgdm9pZCBsYXN0X3dyaXRlX3RpbWUoY29uc3QgcGF0aCYgcCwgY29uc3Qgc3RkOjp0aW1lX3QgbmV3X3RpbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpsYXN0X3dyaXRlX3RpbWUocCwgbmV3X3RpbWUpO30KLSAgaW5saW5lCi0gIHZvaWQgbGFzdF93cml0ZV90aW1lKGNvbnN0IHBhdGgmIHAsIGNvbnN0IHN0ZDo6dGltZV90IG5ld190aW1lLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6bGFzdF93cml0ZV90aW1lKHAsIG5ld190aW1lLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgcGVybWlzc2lvbnMoY29uc3QgcGF0aCYgcCwgcGVybXMgcHJtcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OnBlcm1pc3Npb25zKHAsIHBybXMpO30KLSAgaW5saW5lCi0gIHZvaWQgcGVybWlzc2lvbnMoY29uc3QgcGF0aCYgcCwgcGVybXMgcHJtcywgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OnBlcm1pc3Npb25zKHAsIHBybXMsICZlYyk7fQotCi0gIGlubGluZQotICBwYXRoIHJlYWRfc3ltbGluayhjb25zdCBwYXRoJiBwKSAgICAge3JldHVybiBkZXRhaWw6OnJlYWRfc3ltbGluayhwKTt9Ci0KLSAgaW5saW5lCi0gIHBhdGggcmVhZF9zeW1saW5rKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6cmVhZF9zeW1saW5rKHAsICZlYyk7fQotICBpbmxpbmUKLSAgICAvLyBGb3Igc3RhbmRhcmRpemF0aW9uLCBpZiB0aGUgY29tbWl0dGVlIGRvZXNuJ3QgbGlrZSAicmVtb3ZlIiwgY29uc2lkZXIgImVsaW1pbmF0ZSIKLSAgYm9vbCByZW1vdmUoY29uc3QgcGF0aCYgcCkgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpyZW1vdmUocCk7fQotCi0gIGlubGluZQotICBib29sIHJlbW92ZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSB7cmV0dXJuIGRldGFpbDo6cmVtb3ZlKHAsICZlYyk7fQotCi0gIGlubGluZQotICBuZG5ib29zdDo6dWludG1heF90IHJlbW92ZV9hbGwoY29uc3QgcGF0aCYgcCkge3JldHVybiBkZXRhaWw6OnJlbW92ZV9hbGwocCk7fQotICAgIAotICBpbmxpbmUKLSAgbmRuYm9vc3Q6OnVpbnRtYXhfdCByZW1vdmVfYWxsKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6cmVtb3ZlX2FsbChwLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgcmVuYW1lKGNvbnN0IHBhdGgmIG9sZF9wLCBjb25zdCBwYXRoJiBuZXdfcCkge2RldGFpbDo6cmVuYW1lKG9sZF9wLCBuZXdfcCk7fQotCi0gIGlubGluZQotICB2b2lkIHJlbmFtZShjb25zdCBwYXRoJiBvbGRfcCwgY29uc3QgcGF0aCYgbmV3X3AsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpyZW5hbWUob2xkX3AsIG5ld19wLCAmZWMpO30KLSAgaW5saW5lICAvLyBuYW1lIHN1Z2dlc3RlZCBieSBTY290dCBNY011cnJheQotICB2b2lkIHJlc2l6ZV9maWxlKGNvbnN0IHBhdGgmIHAsIHVpbnRtYXhfdCBzaXplKSB7ZGV0YWlsOjpyZXNpemVfZmlsZShwLCBzaXplKTt9Ci0KLSAgaW5saW5lCi0gIHZvaWQgcmVzaXplX2ZpbGUoY29uc3QgcGF0aCYgcCwgdWludG1heF90IHNpemUsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpyZXNpemVfZmlsZShwLCBzaXplLCAmZWMpO30KLSAgaW5saW5lCi0gIHNwYWNlX2luZm8gc3BhY2UoY29uc3QgcGF0aCYgcCkgICAgICB7cmV0dXJuIGRldGFpbDo6c3BhY2UocCk7fSAKLQotICBpbmxpbmUKLSAgc3BhY2VfaW5mbyBzcGFjZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSB7cmV0dXJuIGRldGFpbDo6c3BhY2UocCwgJmVjKTt9IAotCi0jIGlmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgaW5saW5lIGJvb2wgc3ltYm9saWNfbGlua19leGlzdHMoY29uc3QgcGF0aCYgcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIGlzX3N5bWxpbmsoc3ltbGlua19zdGF0dXMocCkpOyB9Ci0jIGVuZGlmCi0KLSAgaW5saW5lCi0gIHBhdGggc3lzdGVtX2NvbXBsZXRlKGNvbnN0IHBhdGgmIHApICB7cmV0dXJuIGRldGFpbDo6c3lzdGVtX2NvbXBsZXRlKHApO30KLQotICBpbmxpbmUKLSAgcGF0aCBzeXN0ZW1fY29tcGxldGUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpzeXN0ZW1fY29tcGxldGUocCwgJmVjKTt9Ci0gIGlubGluZQotICBwYXRoIHRlbXBfZGlyZWN0b3J5X3BhdGgoKSAgICAgICAgICAge3JldHVybiBkZXRhaWw6OnRlbXBfZGlyZWN0b3J5X3BhdGgoKTt9Ci0KLSAgaW5saW5lCi0gIHBhdGggdGVtcF9kaXJlY3RvcnlfcGF0aChzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjp0ZW1wX2RpcmVjdG9yeV9wYXRoKCZlYyk7fQotICBpbmxpbmUKLSAgcGF0aCB1bmlxdWVfcGF0aChjb25zdCBwYXRoJiBwPSIlJSUlLSUlJSUtJSUlJS0lJSUlIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIGRldGFpbDo6dW5pcXVlX3BhdGgocCk7IH0KLSAgaW5saW5lCi0gIHBhdGggdW5pcXVlX3BhdGgoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIGRldGFpbDo6dW5pcXVlX3BhdGgocCwgJmVjKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnlfZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgR0NDIGhhcyBhIHByb2JsZW0gd2l0aCBhIG1lbWJlciBmdW5jdGlvbiBuYW1lZCBwYXRoIHdpdGhpbiBhIG5hbWVzcGFjZSBvciAKLS8vICBzdWItbmFtZXNwYWNlIHRoYXQgYWxzbyBoYXMgYSBjbGFzcyBuYW1lZCBwYXRoLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBhbHdheXMKLS8vICBmdWxseSBxdWFsaWZ5IHRoZSBuYW1lIHBhdGggd2hlbiBpdCByZWZlcnMgdG8gdGhlIGNsYXNzIG5hbWUuCi0KLWNsYXNzIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCBkaXJlY3RvcnlfZW50cnkKLXsKLXB1YmxpYzoKLQotICAvLyBjb21waWxlciBnZW5lcmF0ZWQgY29weSBjb25zdHJ1Y3RvciwgY29weSBhc3NpZ25tZW50LCBhbmQgZGVzdHJ1Y3RvciBhcHBseQotCi0gIGRpcmVjdG9yeV9lbnRyeSgpIHt9Ci0gIGV4cGxpY2l0IGRpcmVjdG9yeV9lbnRyeShjb25zdCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCYgcCwKLSAgICBmaWxlX3N0YXR1cyBzdCA9IGZpbGVfc3RhdHVzKCksIGZpbGVfc3RhdHVzIHN5bWxpbmtfc3Q9ZmlsZV9zdGF0dXMoKSkKLSAgICA6IG1fcGF0aChwKSwgbV9zdGF0dXMoc3QpLCBtX3N5bWxpbmtfc3RhdHVzKHN5bWxpbmtfc3QpCi0gICAge30KLQotICB2b2lkIGFzc2lnbihjb25zdCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCYgcCwKLSAgICBmaWxlX3N0YXR1cyBzdCA9IGZpbGVfc3RhdHVzKCksIGZpbGVfc3RhdHVzIHN5bWxpbmtfc3QgPSBmaWxlX3N0YXR1cygpKQotICAgIHsgbV9wYXRoID0gcDsgbV9zdGF0dXMgPSBzdDsgbV9zeW1saW5rX3N0YXR1cyA9IHN5bWxpbmtfc3Q7IH0KLQotICB2b2lkIHJlcGxhY2VfZmlsZW5hbWUoY29uc3QgbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGgmIHAsCi0gICAgZmlsZV9zdGF0dXMgc3QgPSBmaWxlX3N0YXR1cygpLCBmaWxlX3N0YXR1cyBzeW1saW5rX3N0ID0gZmlsZV9zdGF0dXMoKSkKLSAgewotICAgIG1fcGF0aC5yZW1vdmVfZmlsZW5hbWUoKTsKLSAgICBtX3BhdGggLz0gcDsKLSAgICBtX3N0YXR1cyA9IHN0OwotICAgIG1fc3ltbGlua19zdGF0dXMgPSBzeW1saW5rX3N0OwotICB9Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICB2b2lkIHJlcGxhY2VfbGVhZihjb25zdCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCYgcCwKLSAgICBmaWxlX3N0YXR1cyBzdCwgZmlsZV9zdGF0dXMgc3ltbGlua19zdCkKLSAgICAgIHsgcmVwbGFjZV9maWxlbmFtZShwLCBzdCwgc3ltbGlua19zdCk7IH0KLSMgZW5kaWYKLQotICBjb25zdCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCYgIHBhdGgoKSBjb25zdCAgICAgICAgICAgICAgIHtyZXR1cm4gbV9wYXRoO30KLSAgZmlsZV9zdGF0dXMgICBzdGF0dXMoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIG1fZ2V0X3N0YXR1cygpO30KLSAgZmlsZV9zdGF0dXMgICBzdGF0dXMoc3lzdGVtOjplcnJvcl9jb2RlJiBlYykgY29uc3QgICAgICAgICB7cmV0dXJuIG1fZ2V0X3N0YXR1cygmZWMpO30KLSAgZmlsZV9zdGF0dXMgICBzeW1saW5rX3N0YXR1cygpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIG1fZ2V0X3N5bWxpbmtfc3RhdHVzKCk7fQotICBmaWxlX3N0YXR1cyAgIHN5bWxpbmtfc3RhdHVzKHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpIGNvbnN0IHtyZXR1cm4gbV9nZXRfc3ltbGlua19zdGF0dXMoJmVjKTt9Ci0KLSAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGRpcmVjdG9yeV9lbnRyeSYgcmhzKSB7cmV0dXJuIG1fcGF0aCA9PSByaHMubV9wYXRoO30gCi0gIGJvb2wgb3BlcmF0b3IhPShjb25zdCBkaXJlY3RvcnlfZW50cnkmIHJocykge3JldHVybiBtX3BhdGggIT0gcmhzLm1fcGF0aDt9IAotICBib29sIG9wZXJhdG9yPCAoY29uc3QgZGlyZWN0b3J5X2VudHJ5JiByaHMpIHtyZXR1cm4gbV9wYXRoIDwgcmhzLm1fcGF0aDt9IAotICBib29sIG9wZXJhdG9yPD0oY29uc3QgZGlyZWN0b3J5X2VudHJ5JiByaHMpIHtyZXR1cm4gbV9wYXRoIDw9IHJocy5tX3BhdGg7fSAKLSAgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IGRpcmVjdG9yeV9lbnRyeSYgcmhzKSB7cmV0dXJuIG1fcGF0aCA+IHJocy5tX3BhdGg7fSAKLSAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IGRpcmVjdG9yeV9lbnRyeSYgcmhzKSB7cmV0dXJuIG1fcGF0aCA+PSByaHMubV9wYXRoO30gCi0KLXByaXZhdGU6Ci0gIG5kbmJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoICAgbV9wYXRoOwotICBtdXRhYmxlIGZpbGVfc3RhdHVzICAgICAgIG1fc3RhdHVzOyAgICAgICAgICAgLy8gc3RhdCgpLWxpa2UKLSAgbXV0YWJsZSBmaWxlX3N0YXR1cyAgICAgICBtX3N5bWxpbmtfc3RhdHVzOyAgIC8vIGxzdGF0KCktbGlrZQotCi0gIGZpbGVfc3RhdHVzIG1fZ2V0X3N0YXR1cyhzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApIGNvbnN0OwotICBmaWxlX3N0YXR1cyBtX2dldF9zeW1saW5rX3N0YXR1cyhzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApIGNvbnN0OwotfTsgLy8gZGlyZWN0b3J5X2VudHJ5Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnlfaXRlcmF0b3IgaGVscGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWNsYXNzIGRpcmVjdG9yeV9pdGVyYXRvcjsKLQotbmFtZXNwYWNlIGRldGFpbAotewotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBzeXN0ZW06OmVycm9yX2NvZGUgZGlyX2l0cl9jbG9zZSgvLyBuZXZlciB0aHJvd3MoKQotICAgIHZvaWQgKiYgaGFuZGxlCi0jICAgaWYgICAgIGRlZmluZWQoTkROQk9PU1RfUE9TSVhfQVBJKQotICAgICwgdm9pZCAqJiBidWZmZXIKLSMgICBlbmRpZgotICApOyAKLQotICBzdHJ1Y3QgZGlyX2l0cl9pbXAKLSAgewotICAgIGRpcmVjdG9yeV9lbnRyeSAgZGlyX2VudHJ5OwotICAgIHZvaWQqICAgICAgICAgICAgaGFuZGxlOwotCi0jICAgaWZkZWYgTkROQk9PU1RfUE9TSVhfQVBJCi0gICAgdm9pZCogICAgICAgICAgICBidWZmZXI7ICAvLyBzZWUgZGlyX2l0cl9pbmNyZW1lbnQgaW1wbGVtZW50YXRpb24KLSMgICBlbmRpZgotCi0gICAgZGlyX2l0cl9pbXAoKSA6IGhhbmRsZSgwKQotIyAgIGlmZGVmIE5ETkJPT1NUX1BPU0lYX0FQSQotICAgICAgLCBidWZmZXIoMCkKLSMgICBlbmRpZgotICAgIHt9Ci0KLSAgICB+ZGlyX2l0cl9pbXAoKSAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICBkaXJfaXRyX2Nsb3NlKGhhbmRsZQotIyAgICAgICBpZiBkZWZpbmVkKE5ETkJPT1NUX1BPU0lYX0FQSSkKLSAgICAgICAgICwgYnVmZmVyCi0jICAgICAgIGVuZGlmCi0gICAgKTsKLSAgICB9Ci0gIH07Ci0KLSAgLy8gc2VlIHBhdGg6Oml0ZXJhdG9yOiBjb21tZW50IGJlbG93Ci0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCB2b2lkIGRpcmVjdG9yeV9pdGVyYXRvcl9jb25zdHJ1Y3QoZGlyZWN0b3J5X2l0ZXJhdG9yJiBpdCwKLSAgICBjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjKTsKLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIHZvaWQgZGlyZWN0b3J5X2l0ZXJhdG9yX2luY3JlbWVudChkaXJlY3RvcnlfaXRlcmF0b3ImIGl0LAotICAgIHN5c3RlbTo6ZXJyb3JfY29kZSogZWMpOwotCi19ICAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgY2xhc3MgZGlyZWN0b3J5X2l0ZXJhdG9yCi0gICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTwgZGlyZWN0b3J5X2l0ZXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeV9lbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZyA+Ci0gIHsKLSAgcHVibGljOgotCi0gICAgZGlyZWN0b3J5X2l0ZXJhdG9yKCl7fSAgLy8gY3JlYXRlcyB0aGUgImVuZCIgaXRlcmF0b3IKLQotICAgIC8vIGl0ZXJhdG9yX2ZhY2FkZSBkZXJpdmVkIGNsYXNzZXMgZG9uJ3Qgc2VlbSB0byBsaWtlIGltcGxlbWVudGF0aW9ucyBpbgotICAgIC8vIHNlcGFyYXRlIHRyYW5zbGF0aW9uIHVuaXQgZGxsJ3MsIHNvIGZvcndhcmQgdG8gZGV0YWlsIGZ1bmN0aW9ucwotICAgIGV4cGxpY2l0IGRpcmVjdG9yeV9pdGVyYXRvcihjb25zdCBwYXRoJiBwKQotICAgICAgICA6IG1faW1wKG5ldyBkZXRhaWw6OmRpcl9pdHJfaW1wKQotICAgICAgICAgIHsgZGV0YWlsOjpkaXJlY3RvcnlfaXRlcmF0b3JfY29uc3RydWN0KCp0aGlzLCBwLCAwKTsgfQotCi0gICAgZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgIDogbV9pbXAobmV3IGRldGFpbDo6ZGlyX2l0cl9pbXApCi0gICAgICAgICAgeyBkZXRhaWw6OmRpcmVjdG9yeV9pdGVyYXRvcl9jb25zdHJ1Y3QoKnRoaXMsIHAsICZlYyk7IH0KLQotICAgfmRpcmVjdG9yeV9pdGVyYXRvcigpIHt9IC8vIG5ldmVyIHRocm93cwotCi0gICAgZGlyZWN0b3J5X2l0ZXJhdG9yJiBpbmNyZW1lbnQoc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICB7IAotICAgICAgZGV0YWlsOjpkaXJlY3RvcnlfaXRlcmF0b3JfaW5jcmVtZW50KCp0aGlzLCAmZWMpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICBwcml2YXRlOgotICAgIGZyaWVuZCBzdHJ1Y3QgZGV0YWlsOjpkaXJfaXRyX2ltcDsKLSAgICBmcmllbmQgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIHZvaWQgZGV0YWlsOjpkaXJlY3RvcnlfaXRlcmF0b3JfY29uc3RydWN0KGRpcmVjdG9yeV9pdGVyYXRvciYgaXQsCi0gICAgICBjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjKTsKLSAgICBmcmllbmQgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIHZvaWQgZGV0YWlsOjpkaXJlY3RvcnlfaXRlcmF0b3JfaW5jcmVtZW50KGRpcmVjdG9yeV9pdGVyYXRvciYgaXQsCi0gICAgICBzeXN0ZW06OmVycm9yX2NvZGUqIGVjKTsKLQotICAgIC8vIHNoYXJlZF9wdHIgcHJvdmlkZXMgc2hhbGxvdy1jb3B5IHNlbWFudGljcyByZXF1aXJlZCBmb3IgSW5wdXRJdGVyYXRvcnMuCi0gICAgLy8gbV9pbXAuZ2V0KCk9PTAgaW5kaWNhdGVzIHRoZSBlbmQgaXRlcmF0b3IuCi0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IGRldGFpbDo6ZGlyX2l0cl9pbXAgPiAgbV9pbXA7Ci0KLSAgICBmcmllbmQgY2xhc3MgbmRuYm9vc3Q6Oml0ZXJhdG9yX2NvcmVfYWNjZXNzOwotCi0gICAgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTwKLSAgICAgIGRpcmVjdG9yeV9pdGVyYXRvciwKLSAgICAgIGRpcmVjdG9yeV9lbnRyeSwKLSAgICAgIG5kbmJvb3N0OjpzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnID46OnJlZmVyZW5jZSBkZXJlZmVyZW5jZSgpIGNvbnN0IAotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cobV9pbXAuZ2V0KCksICJhdHRlbXB0IHRvIGRlcmVmZXJlbmNlIGVuZCBpdGVyYXRvciIpOwotICAgICAgcmV0dXJuIG1faW1wLT5kaXJfZW50cnk7Ci0gICAgfQotCi0gICAgdm9pZCBpbmNyZW1lbnQoKSB7IGRldGFpbDo6ZGlyZWN0b3J5X2l0ZXJhdG9yX2luY3JlbWVudCgqdGhpcywgMCk7IH0KLQotICAgIGJvb2wgZXF1YWwoY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiByaHMpIGNvbnN0Ci0gICAgICB7IHJldHVybiBtX2ltcCA9PSByaHMubV9pbXA7IH0KLSAgfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IgaGVscGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBORE5CT09TVF9TQ09QRURfRU5VTV9TVEFSVChzeW1saW5rX29wdGlvbikKLSAgewotICAgIG5vbmUsCi0gICAgbm9fcmVjdXJzZSA9IG5vbmUsICAgICAgICAgLy8gZG9uJ3QgZm9sbG93IGRpcmVjdG9yeSBzeW1saW5rcyAoZGVmYXVsdCBiZWhhdmlvcikKLSAgICByZWN1cnNlLCAgICAgICAgICAgICAgICAgICAvLyBmb2xsb3cgZGlyZWN0b3J5IHN5bWxpbmtzCi0gICAgX2RldGFpbF9ub19wdXNoID0gcmVjdXJzZSA8PCAxICAvLyBpbnRlcm5hbCB1c2Ugb25seQotICB9OwotICBORE5CT09TVF9TQ09QRURfRU5VTV9FTkQKLQotICBORE5CT09TVF9CSVRNQVNLKE5ETkJPT1NUX1NDT1BFRF9FTlVNKHN5bWxpbmtfb3B0aW9uKSkKLQotICBuYW1lc3BhY2UgZGV0YWlsCi0gIHsKLSAgICBzdHJ1Y3QgcmVjdXJfZGlyX2l0cl9pbXAKLSAgICB7Ci0gICAgICB0eXBlZGVmIGRpcmVjdG9yeV9pdGVyYXRvciBlbGVtZW50X3R5cGU7Ci0gICAgICBzdGQ6OnN0YWNrPCBlbGVtZW50X3R5cGUsIHN0ZDo6dmVjdG9yPCBlbGVtZW50X3R5cGUgPiA+IG1fc3RhY2s7Ci0gICAgICBpbnQgIG1fbGV2ZWw7Ci0gICAgICBORE5CT09TVF9TQ09QRURfRU5VTShzeW1saW5rX29wdGlvbikgbV9vcHRpb25zOwotCi0gICAgICByZWN1cl9kaXJfaXRyX2ltcCgpIDogbV9sZXZlbCgwKSwgbV9vcHRpb25zKHN5bWxpbmtfb3B0aW9uOjpub25lKSB7fQotCi0gICAgICB2b2lkIGluY3JlbWVudChzeXN0ZW06OmVycm9yX2NvZGUqIGVjKTsgIC8vIGVjID09IDAgbWVhbnMgdGhyb3cgb24gZXJyb3IKLQotICAgICAgdm9pZCBwb3AoKTsKLQotICAgIH07Ci0KLSAgICAvLyAgSW1wbGVtZW50YXRpb24gaXMgaW5saW5lIHRvIGF2b2lkIGR5bmFtaWMgbGlua2luZyBkaWZmaWN1bHRpZXMgd2l0aCBtX3N0YWNrOgotICAgIC8vICBNaWNyb3NvZnQgd2FybmluZyBDNDI1MSwgbV9zdGFjayBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieQotICAgIC8vICBjbGllbnRzIG9mIHN0cnVjdCAnbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OmRldGFpbDo6cmVjdXJfZGlyX2l0cl9pbXAnCi0KLSAgICBpbmxpbmUKLSAgICB2b2lkIHJlY3VyX2Rpcl9pdHJfaW1wOjppbmNyZW1lbnQoc3lzdGVtOjplcnJvcl9jb2RlKiBlYykKLSAgICAvLyBlYyA9PSAwIG1lYW5zIHRocm93IG9uIGVycm9yCi0gICAgewotICAgICAgaWYgKChtX29wdGlvbnMgJiBzeW1saW5rX29wdGlvbjo6X2RldGFpbF9ub19wdXNoKSA9PSBzeW1saW5rX29wdGlvbjo6X2RldGFpbF9ub19wdXNoKQotICAgICAgICBtX29wdGlvbnMgJj0gfnN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2g7Ci0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gTG9naWMgZm9yIGZvbGxvd2luZyBwcmVkaWNhdGUgd2FzIGNvbnRyaWJ1dGVkIGJ5IERhbmllbCBBYXJubyB0byBoYW5kbGUgY3ljbGljCi0gICAgICAgIC8vIHN5bWxpbmtzIGNvcnJlY3RseSBhbmQgZWZmaWNpZW50bHksIGZpeGluZyB0aWNrZXQgIzU2NTIuCi0gICAgICAgIC8vICAgaWYgKCgobV9vcHRpb25zICYgc3ltbGlua19vcHRpb246OnJlY3Vyc2UpID09IHN5bWxpbmtfb3B0aW9uOjpyZWN1cnNlCi0gICAgICAgIC8vICAgICAgICAgfHwgIWlzX3N5bWxpbmsobV9zdGFjay50b3AoKS0+c3ltbGlua19zdGF0dXMoKSkpCi0gICAgICAgIC8vICAgICAgICYmIGlzX2RpcmVjdG9yeShtX3N0YWNrLnRvcCgpLT5zdGF0dXMoKSkpIC4uLgotICAgICAgICAvLyBUaGUgcHJlZGljYXRlIGNvZGUgaGFzIHNpbmNlIGJlZW4gcmV3cml0dGVuIHRvIHBhc3MgZXJyb3JfY29kZSBhcmd1bWVudHMsCi0gICAgICAgIC8vIHBlciB0aWNrZXQgIzU2NTMuCi0gICAgICAgIGJvb2wgb3JfcHJlZCA9IChtX29wdGlvbnMgJiBzeW1saW5rX29wdGlvbjo6cmVjdXJzZSkgPT0gc3ltbGlua19vcHRpb246OnJlY3Vyc2UKLSAgICAgICAgICAgICAgICAgICAgICAgfHwgKGVjID09IDAgPyAhaXNfc3ltbGluayhtX3N0YWNrLnRvcCgpLT5zeW1saW5rX3N0YXR1cygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICFpc19zeW1saW5rKG1fc3RhY2sudG9wKCktPnN5bWxpbmtfc3RhdHVzKCplYykpKTsKLSAgICAgICAgaWYgKGVjICE9IDAgJiYgKmVjKQotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYm9vbCBhbmRfcHJlZCA9IG9yX3ByZWQgJiYgKGVjID09IDAgPyBpc19kaXJlY3RvcnkobV9zdGFjay50b3AoKS0+c3RhdHVzKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNfZGlyZWN0b3J5KG1fc3RhY2sudG9wKCktPnN0YXR1cygqZWMpKSk7Ci0gICAgICAgIGlmIChlYyAhPSAwICYmICplYykKLSAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGFuZF9wcmVkKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGVjID09IDApCi0gICAgICAgICAgICBtX3N0YWNrLnB1c2goZGlyZWN0b3J5X2l0ZXJhdG9yKG1fc3RhY2sudG9wKCktPnBhdGgoKSkpOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBtX3N0YWNrLnB1c2goZGlyZWN0b3J5X2l0ZXJhdG9yKG1fc3RhY2sudG9wKCktPnBhdGgoKSwgKmVjKSk7Ci0gICAgICAgICAgICBpZiAoKmVjKQotICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChtX3N0YWNrLnRvcCgpICE9IGRpcmVjdG9yeV9pdGVyYXRvcigpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgICsrbV9sZXZlbDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgbV9zdGFjay5wb3AoKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICB3aGlsZSAoIW1fc3RhY2suZW1wdHkoKSAmJiArK21fc3RhY2sudG9wKCkgPT0gZGlyZWN0b3J5X2l0ZXJhdG9yKCkpCi0gICAgICB7Ci0gICAgICAgIG1fc3RhY2sucG9wKCk7Ci0gICAgICAgIC0tbV9sZXZlbDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpbmxpbmUKLSAgICB2b2lkIHJlY3VyX2Rpcl9pdHJfaW1wOjpwb3AoKQotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cobV9sZXZlbCA+IDAsCi0gICAgICAgICJwb3AoKSBvbiByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIHdpdGggbGV2ZWwgPCAxIik7Ci0KLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgIG1fc3RhY2sucG9wKCk7Ci0gICAgICAgIC0tbV9sZXZlbDsKLSAgICAgIH0KLSAgICAgIHdoaWxlICghbV9zdGFjay5lbXB0eSgpICYmICsrbV9zdGFjay50b3AoKSA9PSBkaXJlY3RvcnlfaXRlcmF0b3IoKSk7Ci0gICAgfQotICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBjbGFzcyByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yCi0gICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTwKLSAgICAgICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciwKLSAgICAgICAgZGlyZWN0b3J5X2VudHJ5LAotICAgICAgICBuZG5ib29zdDo6c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZyA+Ci0gIHsKLSAgcHVibGljOgotCi0gICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcigpe30gIC8vIGNyZWF0ZXMgdGhlICJlbmQiIGl0ZXJhdG9yCi0KLSAgICBleHBsaWNpdCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IHBhdGgmIGRpcl9wYXRoLAotICAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU0oc3ltbGlua19vcHRpb24pIG9wdCA9IHN5bWxpbmtfb3B0aW9uOjpub25lKQotICAgICAgOiBtX2ltcChuZXcgZGV0YWlsOjpyZWN1cl9kaXJfaXRyX2ltcCkKLSAgICB7Ci0gICAgICBtX2ltcC0+bV9vcHRpb25zID0gb3B0OwotICAgICAgbV9pbXAtPm1fc3RhY2sucHVzaChkaXJlY3RvcnlfaXRlcmF0b3IoZGlyX3BhdGgpKTsKLSAgICAgIGlmIChtX2ltcC0+bV9zdGFjay50b3AoKSA9PSBkaXJlY3RvcnlfaXRlcmF0b3IoKSkKLSAgICAgICAgeyBtX2ltcC5yZXNldCAoKTsgfQotICAgIH0KLQotICAgIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgcGF0aCYgZGlyX3BhdGgsCi0gICAgICBORE5CT09TVF9TQ09QRURfRU5VTShzeW1saW5rX29wdGlvbikgb3B0LAotICAgICAgc3lzdGVtOjplcnJvcl9jb2RlICYgZWMpCi0gICAgOiBtX2ltcChuZXcgZGV0YWlsOjpyZWN1cl9kaXJfaXRyX2ltcCkKLSAgICB7Ci0gICAgICBtX2ltcC0+bV9vcHRpb25zID0gb3B0OwotICAgICAgbV9pbXAtPm1fc3RhY2sucHVzaChkaXJlY3RvcnlfaXRlcmF0b3IoZGlyX3BhdGgsIGVjKSk7Ci0gICAgICBpZiAobV9pbXAtPm1fc3RhY2sudG9wKCkgPT0gZGlyZWN0b3J5X2l0ZXJhdG9yKCkpCi0gICAgICAgIHsgbV9pbXAucmVzZXQgKCk7IH0KLSAgICB9Ci0KLSAgICByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IHBhdGgmIGRpcl9wYXRoLAotICAgICAgc3lzdGVtOjplcnJvcl9jb2RlICYgZWMpCi0gICAgOiBtX2ltcChuZXcgZGV0YWlsOjpyZWN1cl9kaXJfaXRyX2ltcCkKLSAgICB7Ci0gICAgICBtX2ltcC0+bV9vcHRpb25zID0gc3ltbGlua19vcHRpb246Om5vbmU7Ci0gICAgICBtX2ltcC0+bV9zdGFjay5wdXNoKGRpcmVjdG9yeV9pdGVyYXRvcihkaXJfcGF0aCwgZWMpKTsKLSAgICAgIGlmIChtX2ltcC0+bV9zdGFjay50b3AoKSA9PSBkaXJlY3RvcnlfaXRlcmF0b3IoKSkKLSAgICAgICAgeyBtX2ltcC5yZXNldCAoKTsgfQotICAgIH0KLQotICAgIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3ImIGluY3JlbWVudChzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cobV9pbXAuZ2V0KCksCi0gICAgICAgICJpbmNyZW1lbnQoKSBvbiBlbmQgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciIpOwotICAgICAgbV9pbXAtPmluY3JlbWVudCgmZWMpOwotICAgICAgaWYgKG1faW1wLT5tX3N0YWNrLmVtcHR5KCkpCi0gICAgICAgIG1faW1wLnJlc2V0KCk7IC8vIGRvbmUsIHNvIG1ha2UgZW5kIGl0ZXJhdG9yCi0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgaW50IGxldmVsKCkgY29uc3QKLSAgICB7IAotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgImxldmVsKCkgb24gZW5kIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiKTsKLSAgICAgIHJldHVybiBtX2ltcC0+bV9sZXZlbDsKLSAgICB9Ci0KLSAgICBib29sIG5vX3B1c2hfcGVuZGluZygpIGNvbnN0Ci0gICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgImlzX25vX3B1c2hfcmVxdWVzdGVkKCkgb24gZW5kIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiKTsKLSAgICAgIHJldHVybiAobV9pbXAtPm1fb3B0aW9ucyAmIHN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2gpCi0gICAgICAgID09IHN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2g7Ci0gICAgfQotCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICAgIGJvb2wgbm9fcHVzaF9yZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbm9fcHVzaF9wZW5kaW5nKCk7IH0KLSMgICBlbmRpZgotCi0gICAgdm9pZCBwb3AoKQotICAgIHsgCi0gICAgICBORE5CT09TVF9BU1NFUlRfTVNHKG1faW1wLmdldCgpLAotICAgICAgICAicG9wKCkgb24gZW5kIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiKTsKLSAgICAgIG1faW1wLT5wb3AoKTsKLSAgICAgIGlmIChtX2ltcC0+bV9zdGFjay5lbXB0eSgpKSBtX2ltcC5yZXNldCgpOyAvLyBkb25lLCBzbyBtYWtlIGVuZCBpdGVyYXRvcgotICAgIH0KLQotICAgIHZvaWQgbm9fcHVzaChib29sIHZhbHVlPXRydWUpCi0gICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgIm5vX3B1c2goKSBvbiBlbmQgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciIpOwotICAgICAgaWYgKHZhbHVlKQotICAgICAgICBtX2ltcC0+bV9vcHRpb25zIHw9IHN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2g7Ci0gICAgICBlbHNlCi0gICAgICAgIG1faW1wLT5tX29wdGlvbnMgJj0gfnN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2g7Ci0gICAgfQotCi0gICAgZmlsZV9zdGF0dXMgc3RhdHVzKCkgY29uc3QKLSAgICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlRfTVNHKG1faW1wLmdldCgpLAotICAgICAgICAic3RhdHVzKCkgb24gZW5kIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiKTsKLSAgICAgIHJldHVybiBtX2ltcC0+bV9zdGFjay50b3AoKS0+c3RhdHVzKCk7Ci0gICAgfQotCi0gICAgZmlsZV9zdGF0dXMgc3ltbGlua19zdGF0dXMoKSBjb25zdAotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cobV9pbXAuZ2V0KCksCi0gICAgICAgICJzeW1saW5rX3N0YXR1cygpIG9uIGVuZCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIik7Ci0gICAgICByZXR1cm4gbV9pbXAtPm1fc3RhY2sudG9wKCktPnN5bWxpbmtfc3RhdHVzKCk7Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0KLSAgICAvLyBzaGFyZWRfcHRyIHByb3ZpZGVzIHNoYWxsb3ctY29weSBzZW1hbnRpY3MgcmVxdWlyZWQgZm9yIElucHV0SXRlcmF0b3JzLgotICAgIC8vIG1faW1wLmdldCgpPT0wIGluZGljYXRlcyB0aGUgZW5kIGl0ZXJhdG9yLgotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBkZXRhaWw6OnJlY3VyX2Rpcl9pdHJfaW1wID4gIG1faW1wOwotCi0gICAgZnJpZW5kIGNsYXNzIG5kbmJvb3N0OjppdGVyYXRvcl9jb3JlX2FjY2VzczsKLQotICAgIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8IAotICAgICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciwKLSAgICAgIGRpcmVjdG9yeV9lbnRyeSwKLSAgICAgIG5kbmJvb3N0OjpzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnID46OnJlZmVyZW5jZQotICAgIGRlcmVmZXJlbmNlKCkgY29uc3QgCi0gICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgImRlcmVmZXJlbmNlIG9mIGVuZCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIik7Ci0gICAgICByZXR1cm4gKm1faW1wLT5tX3N0YWNrLnRvcCgpOwotICAgIH0KLQotICAgIHZvaWQgaW5jcmVtZW50KCkKLSAgICB7IAotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgImluY3JlbWVudCBvZiBlbmQgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciIpOwotICAgICAgbV9pbXAtPmluY3JlbWVudCgwKTsKLSAgICAgIGlmIChtX2ltcC0+bV9zdGFjay5lbXB0eSgpKQotICAgICAgICBtX2ltcC5yZXNldCgpOyAvLyBkb25lLCBzbyBtYWtlIGVuZCBpdGVyYXRvcgotICAgIH0KLQotICAgIGJvb2wgZXF1YWwoY29uc3QgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciYgcmhzKSBjb25zdAotICAgICAgeyByZXR1cm4gbV9pbXAgPT0gcmhzLm1faW1wOyB9Ci0KLSAgfTsKLQotIyBpZiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQpCi0gIHR5cGVkZWYgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciB3cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjsKLSMgZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGZpbGVzeXN0ZW1fZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgCi0gIGNsYXNzIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIGZpbGVzeXN0ZW1fZXJyb3IgOiBwdWJsaWMgc3lzdGVtOjpzeXN0ZW1fZXJyb3IKLSAgewotICAvLyBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9lcnJvcl9oYW5kbGluZy5odG1sIGZvciBkZXNpZ24gcmF0aW9uYWxlCi0KLSAgLy8gYWxsIGZ1bmN0aW9ucyBhcmUgaW5saW5lIHRvIGF2b2lkIGlzc3VlcyB3aXRoIGNyb3NzaW5nIGRsbCBib3VuZGFyaWVzCi0KLSAgcHVibGljOgotICAgIC8vIGNvbXBpbGVyIGdlbmVyYXRlcyBjb3B5IGNvbnN0cnVjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQKLQotICAgIGZpbGVzeXN0ZW1fZXJyb3IoCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIHdoYXRfYXJnLCBzeXN0ZW06OmVycm9yX2NvZGUgZWMpCi0gICAgICA6IHN5c3RlbTo6c3lzdGVtX2Vycm9yKGVjLCB3aGF0X2FyZykKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgbV9pbXBfcHRyLnJlc2V0KG5ldyBtX2ltcCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoLi4uKSB7IG1faW1wX3B0ci5yZXNldCgpOyB9Ci0gICAgfQotCi0gICAgZmlsZXN5c3RlbV9lcnJvcigKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgd2hhdF9hcmcsIGNvbnN0IHBhdGgmIHBhdGgxX2FyZywKLSAgICAgIHN5c3RlbTo6ZXJyb3JfY29kZSBlYykKLSAgICAgIDogc3lzdGVtOjpzeXN0ZW1fZXJyb3IoZWMsIHdoYXRfYXJnKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBtX2ltcF9wdHIucmVzZXQobmV3IG1faW1wKTsKLSAgICAgICAgbV9pbXBfcHRyLT5tX3BhdGgxID0gcGF0aDFfYXJnOwotICAgICAgfQotICAgICAgY2F0Y2ggKC4uLikgeyBtX2ltcF9wdHIucmVzZXQoKTsgfQotICAgIH0KLSAgICAKLSAgICBmaWxlc3lzdGVtX2Vycm9yKAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiB3aGF0X2FyZywgY29uc3QgcGF0aCYgcGF0aDFfYXJnLAotICAgICAgY29uc3QgcGF0aCYgcGF0aDJfYXJnLCBzeXN0ZW06OmVycm9yX2NvZGUgZWMpCi0gICAgICA6IHN5c3RlbTo6c3lzdGVtX2Vycm9yKGVjLCB3aGF0X2FyZykKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgbV9pbXBfcHRyLnJlc2V0KG5ldyBtX2ltcCk7Ci0gICAgICAgIG1faW1wX3B0ci0+bV9wYXRoMSA9IHBhdGgxX2FyZzsKLSAgICAgICAgbV9pbXBfcHRyLT5tX3BhdGgyID0gcGF0aDJfYXJnOwotICAgICAgfQotICAgICAgY2F0Y2ggKC4uLikgeyBtX2ltcF9wdHIucmVzZXQoKTsgfQotICAgIH0KLQotICAgIH5maWxlc3lzdGVtX2Vycm9yKCkgdGhyb3coKSB7fQotCi0gICAgY29uc3QgcGF0aCYgcGF0aDEoKSBjb25zdAotICAgIHsKLSAgICAgIHN0YXRpYyBjb25zdCBwYXRoIGVtcHR5X3BhdGg7Ci0gICAgICByZXR1cm4gbV9pbXBfcHRyLmdldCgpID8gbV9pbXBfcHRyLT5tX3BhdGgxIDogZW1wdHlfcGF0aCA7Ci0gICAgfQotICAgIGNvbnN0IHBhdGgmIHBhdGgyKCkgY29uc3QKLSAgICB7Ci0gICAgICBzdGF0aWMgY29uc3QgcGF0aCBlbXB0eV9wYXRoOwotICAgICAgcmV0dXJuIG1faW1wX3B0ci5nZXQoKSA/IG1faW1wX3B0ci0+bV9wYXRoMiA6IGVtcHR5X3BhdGggOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpCi0gICAgewotICAgICAgaWYgKCFtX2ltcF9wdHIuZ2V0KCkpCi0gICAgICAgIHJldHVybiBzeXN0ZW06OnN5c3RlbV9lcnJvcjo6d2hhdCgpOwotCi0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgaWYgKG1faW1wX3B0ci0+bV93aGF0LmVtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBtX2ltcF9wdHItPm1fd2hhdCA9IHN5c3RlbTo6c3lzdGVtX2Vycm9yOjp3aGF0KCk7Ci0gICAgICAgICAgaWYgKCFtX2ltcF9wdHItPm1fcGF0aDEuZW1wdHkoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBtX2ltcF9wdHItPm1fd2hhdCArPSAiOiBcIiI7Ci0gICAgICAgICAgICBtX2ltcF9wdHItPm1fd2hhdCArPSBtX2ltcF9wdHItPm1fcGF0aDEuc3RyaW5nKCk7Ci0gICAgICAgICAgICBtX2ltcF9wdHItPm1fd2hhdCArPSAiXCIiOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoIW1faW1wX3B0ci0+bV9wYXRoMi5lbXB0eSgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG1faW1wX3B0ci0+bV93aGF0ICs9ICIsIFwiIjsKLSAgICAgICAgICAgIG1faW1wX3B0ci0+bV93aGF0ICs9IG1faW1wX3B0ci0+bV9wYXRoMi5zdHJpbmcoKTsKLSAgICAgICAgICAgIG1faW1wX3B0ci0+bV93aGF0ICs9ICJcIiI7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2ltcF9wdHItPm1fd2hhdC5jX3N0cigpOwotICAgICAgfQotICAgICAgY2F0Y2ggKC4uLikKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHN5c3RlbTo6c3lzdGVtX2Vycm9yOjp3aGF0KCk7Ci0gICAgICB9Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0gICAgc3RydWN0IG1faW1wCi0gICAgewotICAgICAgcGF0aCAgICAgICAgIG1fcGF0aDE7IC8vIG1heSBiZSBlbXB0eSgpCi0gICAgICBwYXRoICAgICAgICAgbV9wYXRoMjsgLy8gbWF5IGJlIGVtcHR5KCkKLSAgICAgIHN0ZDo6c3RyaW5nICBtX3doYXQ7ICAvLyBub3QgYnVpbHQgdW50aWwgbmVlZGVkCi0gICAgfTsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxtX2ltcD4gbV9pbXBfcHRyOwotICB9OwotCi0vLyAgdGVzdCBoZWxwZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIE5vdCBwYXJ0IG9mIHRoZSBkb2N1bWVudGVkIGludGVyZmFjZSBzaW5jZSBmYWxzZSBwb3NpdGl2ZXMgYXJlIHBvc3NpYmxlOwotLy8gIHRoZXJlIGlzIG5vIGxhdyB0aGF0IHNheXMgdGhhdCBhbiBPUyB0aGF0IGhhcyBsYXJnZSBzdGF0LnN0X3NpemUKLS8vICBhY3R1YWxseSBzdXBwb3J0cyBsYXJnZSBmaWxlIHNpemVzLgotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCBib29sIHBvc3NpYmxlX2xhcmdlX2ZpbGVfc2l6ZV9zdXBwb3J0KCk7Ci0gIH0KLQotICB9IC8vIG5hbWVzcGFjZSBmaWxlc3lzdGVtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBwb3BzIGFiaV9wcmVmaXguaHBwIHByYWdtYXMKLSNlbmRpZiAvLyBORE5CT09TVF9GSUxFU1lTVEVNM19PUEVSQVRJT05TX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL3BhdGguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL3BhdGguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGVlNjZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9wYXRoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1OCArMCwwIEBACi0vLyAgZmlsZXN5c3RlbSBwYXRoLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAyLTIwMDUsIDIwMDkKLS8vICBDb3B5cmlnaHQgVmxhZGltaXIgUHJ1cyAyMDAyCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgTGlicmFyeSBob21lIHBhZ2U6IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZmlsZXN5c3RlbQotCi0vLyAgcGF0aDo6c3RlbSgpLCBleHRlbnNpb24oKSwgYW5kIHJlcGxhY2VfZXh0ZW5zaW9uKCkgYXJlIGJhc2VkIG9uCi0vLyAgYmFzZW5hbWUoKSwgZXh0ZW5zaW9uKCksIGFuZCBjaGFuZ2VfZXh0ZW5zaW9uKCkgZnJvbSB0aGUgb3JpZ2luYWwKLS8vICBmaWxlc3lzdGVtL2NvbnZlbmllbmNlLmhwcCBoZWFkZXIgYnkgVmxhZGltaXIgUHJ1cy4KLQotI2lmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX1BBVEhfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fUEFUSF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSMgaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fU1REX1dTVFJJTkcgKQotIyAgIGVycm9yIENvbmZpZ3VyYXRpb24gbm90IHN1cHBvcnRlZDogQm9vc3QuRmlsZXN5c3RlbSBWMyBhbmQgbGF0ZXIgcmVxdWlyZXMgc3RkOjp3c3RyaW5nIHN1cHBvcnQKLSMgZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9maWxlc3lzdGVtL3BhdGhfdHJhaXRzLmhwcD4gIC8vIGluY2x1ZGVzIDxjd2NoYXI+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N5c3RlbS9zeXN0ZW1fZXJyb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2ZhY2FkZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW8vZGV0YWlsL3F1b3RlZF9tYW5pcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxsb2NhbGU+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwPiAvLyBtdXN0IGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotbmFtZXNwYWNlIGZpbGVzeXN0ZW0KLXsKLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgcGF0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgY2xhc3MgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIHBhdGgKLSAgewotICBwdWJsaWM6Ci0KLSAgICAvLyAgdmFsdWVfdHlwZSBpcyB0aGUgY2hhcmFjdGVyIHR5cGUgdXNlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBBUEkgdG8KLSAgICAvLyAgcmVwcmVzZW50IHBhdGhzLgotCi0jIGlmZGVmIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0gICAgdHlwZWRlZiB3Y2hhcl90ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RFWFBSIHZhbHVlX3R5cGUgICAgICBwcmVmZXJyZWRfc2VwYXJhdG9yID0gTCdcXCc7Ci0jIGVsc2UgCi0gICAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RFWFBSIHZhbHVlX3R5cGUgICAgICBwcmVmZXJyZWRfc2VwYXJhdG9yID0gJy8nOwotIyBlbmRpZgotICAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZT4gIHN0cmluZ190eXBlOyAgCi0gICAgdHlwZWRlZiBzdGQ6OmNvZGVjdnQ8d2NoYXJfdCwgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ic3RhdGVfdD4gICBjb2RlY3Z0X3R5cGU7Ci0KLQotICAgIC8vICAtLS0tLSBjaGFyYWN0ZXIgZW5jb2RpbmcgY29udmVyc2lvbnMgLS0tLS0KLQotICAgIC8vICBGb2xsb3dpbmcgdGhlIHByaW5jaXBsZSBvZiBsZWFzdCBhc3RvbmlzaG1lbnQsIHBhdGggaW5wdXQgYXJndW1lbnRzCi0gICAgLy8gIHBhc3NlZCB0byBvciBvYnRhaW5lZCBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHZpYSBvYmplY3RzIG9mCi0gICAgLy8gIGNsYXNzIHBhdGggYmVoYXZlIGFzIGlmIHRoZXkgd2VyZSBkaXJlY3RseSBwYXNzZWQgdG8gb3IKLSAgICAvLyAgb2J0YWluZWQgZnJvbSB0aGUgTy9TIEFQSSwgdW5sZXNzIGNvbnZlcnNpb24gaXMgZXhwbGljaXRseSByZXF1ZXN0ZWQuCi0gICAgLy8KLSAgICAvLyAgUE9TSVggc3BlY2ZpZXMgdGhhdCBwYXRoIHN0cmluZ3MgYXJlIHBhc3NlZCB1bmNoYW5nZWQgdG8gYW5kIGZyb20gdGhlCi0gICAgLy8gIEFQSS4gTm90ZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIFBPU0lYIGNvbW1hbmQgbGluZSB1dGlsaXRpZXMsCi0gICAgLy8gIHdoaWNoIGNvbnZlcnQgYWNjb3JkaW5nIHRvIGEgbG9jYWxlLgotICAgIC8vCi0gICAgLy8gIFRodXMgZm9yIFBPU0lYLCBjaGFyIHN0cmluZ3MgZG8gbm90IHVuZGVyZ28gY29udmVyc2lvbi4gIHdjaGFyX3Qgc3RyaW5ncwotICAgIC8vICBhcmUgY29udmVydGVkIHRvL2Zyb20gY2hhciB1c2luZyB0aGUgcGF0aCBsb2NhbGUgb3IsIGlmIGEgY29udmVyc2lvbgotICAgIC8vICBhcmd1bWVudCBpcyBnaXZlbiwgdXNpbmcgYSBjb252ZXJzaW9uIG9iamVjdCBtb2RlbGVkIG9uCi0gICAgLy8gIHN0ZDo6d3N0cmluZ19jb252ZXJ0LgotICAgIC8vCi0gICAgLy8gIFRoZSBwYXRoIGxvY2FsZSwgd2hpY2ggaXMgZ2xvYmFsIHRvIHRoZSB0aHJlYWQsIGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZQotICAgIC8vICBpbWJ1ZSgpIGZ1bmN0aW9uLiBJdCBpcyBpbml0aWFsaXplZCB0byBhbiBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGxvY2FsZS4KLSAgICAvLyAgCi0gICAgLy8gIEZvciBXaW5kb3dzLCB3Y2hhcl90IHN0cmluZ3MgZG8gbm90IHVuZGVyZ28gY29udmVyc2lvbi4gY2hhciBzdHJpbmdzCi0gICAgLy8gIGFyZSBjb252ZXJ0ZWQgdXNpbmcgdGhlICJBTlNJIiBvciAiT0VNIiBjb2RlIHBhZ2VzLCBhcyBkZXRlcm1pbmVkIGJ5Ci0gICAgLy8gIHRoZSBBcmVGaWxlQXBpc0FOU0koKSBmdW5jdGlvbiwgb3IsIGlmIGEgY29udmVyc2lvbiBhcmd1bWVudCBpcyBnaXZlbiwKLSAgICAvLyAgdXNpbmcgYSBjb252ZXJzaW9uIG9iamVjdCBtb2RlbGVkIG9uIHN0ZDo6d3N0cmluZ19jb252ZXJ0LgotICAgIC8vCi0gICAgLy8gIFNlZSBtX3BhdGhuYW1lIGNvbW1lbnRzIGZvciBmdXJ0aGVyIGltcG9ydGFudCByYXRpb25hbGUuCi0KLSAgICAvLyAgVE9ETzogcnVsZXMgbmVlZGVkIGZvciBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IHVzZSAvIG9yIC4KLSAgICAvLyAgZGlmZmVyZW50bHksIG9yIGZvcm1hdCBkaXJlY3RvcnkgcGF0aHMgZGlmZmVyZW50bHkgZnJvbSBmaWxlIHBhdGhzLiAKLSAgICAvLwotICAgIC8vICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgLy8KLSAgICAvLyAgTW9yZSB3b3JrIG5lZWRlZDogSG93IHRvIGhhbmRsZSBhbiBvcGVyYXRpbmcgc3lzdGVtIHRoYXQgbWF5IGhhdmUKLSAgICAvLyAgc2xhc2ggY2hhcmFjdGVycyBvciBkb3QgY2hhcmFjdGVycyBpbiB2YWxpZCBmaWxlbmFtZXMsIGVpdGhlciBiZWNhdXNlCi0gICAgLy8gIGl0IGRvZXNuJ3QgZm9sbG93IHRoZSBQT1NJWCBzdGFuZGFyZCwgb3IgYmVjYXVzZSBpdCBhbGxvd3MgTUJDUwotICAgIC8vICBmaWxlbmFtZSBlbmNvZGluZ3MgdGhhdCBtYXkgY29udGFpbiBzbGFzaCBvciBkb3QgY2hhcmFjdGVycy4gRm9yCi0gICAgLy8gIGV4YW1wbGUsIElTTy9JRUMgMjAyMiAoSklTKSBlbmNvZGluZyB3aGljaCBhbGxvd3Mgc3dpdGNoaW5nIHRvCi0gICAgLy8gIEpJUyB4MDIwOC0xOTgzIGVuY29kaW5nLiBBIHZhbGlkIGZpbGVuYW1lIGluIHRoaXMgc2V0IG9mIGVuY29kaW5ncyBpcwotICAgIC8vICAweDFCIDB4MjQgMHg0MiBbc3dpdGNoIHRvIFgwMjA4LTE5ODNdIDB4MjQgMHgyRiBbVSszMDRGIEtpcmFnYW5hIGxldHRlciBLVV0KLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl4KLSAgICAvLyAgTm90ZSB0aGF0IDB4MkYgaXMgdGhlIEFTQ0lJIHNsYXNoIGNoYXJhY3RlcgotICAgIC8vCi0gICAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotICAgIC8vICBTdXBwb3J0ZWQgc291cmNlIGFyZ3VtZW50czogaGFsZi1vcGVuIGl0ZXJhdG9yIHJhbmdlLCBjb250YWluZXIsIGMtYXJyYXksCi0gICAgLy8gIGFuZCBzaW5nbGUgcG9pbnRlciB0byBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLgotCi0gICAgLy8gIEFsbCBzb3VyY2UgYXJndW1lbnRzIGV4Y2VwdCBwb2ludGVycyB0byBudWxsIHRlcm1pbmF0ZWQgYnl0ZSBzdHJpbmdzIHN1cHBvcnQKLSAgICAvLyAgbXVsdGktYnl0ZSBjaGFyYWN0ZXIgc3RyaW5ncyB3aGljaCBtYXkgaGF2ZSBlbWJlZGRlZCBudWxscy4gRW1iZWRkZWQgbnVsbAotICAgIC8vICBzdXBwb3J0IGlzIHJlcXVpcmVkIGZvciBzb21lIEFzaWFuIGxhbmd1YWdlcyBvbiBXaW5kb3dzLgotCi0gICAgLy8gIFtkZWZhdWx0c10gImNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0PWNvZGVjdnQoKSIgZGVmYXVsdCBhcmd1bWVudHMgYXJlIG5vdCB1c2VkCi0gICAgLy8gIGJlY2F1c2Ugc29tZSBjb21waWxlcnMsIHN1Y2ggYXMgTWljcm9zb2Z0IHByaW9yIHRvIFZDKysgMTAsIGRvIG5vdCBoYW5kbGUgZGVmYXVsdHMKLSAgICAvLyAgY29ycmVjdGx5IGluIHRlbXBsYXRlcy4KLQotICAgIC8vICAtLS0tLSAgY29uc3RydWN0b3JzICAtLS0tLQotCi0gICAgcGF0aCgpe30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQotICAgIHBhdGgoY29uc3QgcGF0aCYgcCkgOiBtX3BhdGhuYW1lKHAubV9wYXRobmFtZSkge30KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2U+Ci0gICAgcGF0aChTb3VyY2UgY29uc3QmIHNvdXJjZSwKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8cGF0aF90cmFpdHM6OmlzX3BhdGhhYmxlPAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGVjYXk8U291cmNlPjo6dHlwZT4gPjo6dHlwZSogPTApCi0gICAgewotICAgICAgcGF0aF90cmFpdHM6OmRpc3BhdGNoKHNvdXJjZSwgbV9wYXRobmFtZSwgY29kZWN2dCgpKTsKLSAgICB9Ci0KLSAgICAvLyAgT3ZlcmxvYWRzIGZvciB0aGUgb3BlcmF0aW5nIHN5c3RlbSBBUEkncyBuYXRpdmUgY2hhcmFjdGVyIHR5cGUuIFJhdGlvbmFsZToKLSAgICAvLyAgICAtIEF2b2lkcyB1c2Ugb2YgY29kZWN2dCgpIGZvciBuYXRpdmUgdmFsdWVfdHlwZSBzdHJpbmdzLiBUaGlzIGxpbWl0cyB0aGUKLSAgICAvLyAgICAgIGltcGFjdCBvZiBsb2NhbGUoIiIpIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9uIFBPU0lYIHN5c3RlbXMgdG8gcHJvZ3JhbXMKLSAgICAvLyAgICAgIHRoYXQgYWN0dWFsbHkgZGVwZW5kIG9uIGxvY2FsZSgiIikuIEl0IGZ1cnRoZXIgZW5zdXJlcyB0aGF0IGV4Y2VwdGlvbnMgdGhyb3duCi0gICAgLy8gICAgICBhcyBhIHJlc3VsdCBvZiBzdWNoIGZhaWx1ZXMgb2NjdXIgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLCBzbyBjYW4gYmUgY2F1Z2h0LgotICAgIC8vICAgICAgVGhpcyBpcyBhIHBhcnRpYWwgcmVzb2x1dGlvbiBvZiB0aWNrZXRzIDQ2ODgsIDUxMDAsIGFuZCA1Mjg5LgotICAgIC8vICAgIC0gQSBzbGlnaHQgb3B0aW1pemF0aW9uIGZvciBhIGNvbW1vbiB1c2UgY2FzZSwgcGFydGljdWxhcmx5IG9uIFBPU0lYIHNpbmNlCi0gICAgLy8gICAgICB2YWx1ZV90eXBlIGlzIGNoYXIgYW5kIHRoYXQgaXMgdGhlIG1vc3QgY29tbW9uIHVzZWFnZS4KLSAgICBwYXRoKGNvbnN0IHZhbHVlX3R5cGUqIHMpIDogbV9wYXRobmFtZShzKSB7fQotICAgIHBhdGgoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZT4mIHMpIDogbV9wYXRobmFtZShzKSB7fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFNvdXJjZT4KLSAgICBwYXRoKFNvdXJjZSBjb25zdCYgc291cmNlLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgICAvLyAgc2VlIFtkZWZhdWx0c10gbm90ZSBhYm92ZSBleHBsYWluaW5nIHdoeSBjb2RlY3Z0KCkgZGVmYXVsdCBhcmd1bWVudHMgYXJlIG5vdCB1c2VkCi0gICAgewotICAgICAgcGF0aF90cmFpdHM6OmRpc3BhdGNoKHNvdXJjZSwgbV9wYXRobmFtZSwgY3Z0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgICBwYXRoKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kKQotICAgIHsgCi0gICAgICBpZiAoYmVnaW4gIT0gZW5kKQotICAgICAgewotICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KLSAgICAgICAgICBzKGJlZ2luLCBlbmQpOwotICAgICAgICBwYXRoX3RyYWl0czo6Y29udmVydChzLmNfc3RyKCksIHMuY19zdHIoKStzLnNpemUoKSwgbV9wYXRobmFtZSwgY29kZWN2dCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgICBwYXRoKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgICB7IAotICAgICAgaWYgKGJlZ2luICE9IGVuZCkKLSAgICAgIHsKLSAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcj46OnZhbHVlX3R5cGU+Ci0gICAgICAgICAgcyhiZWdpbiwgZW5kKTsKLSAgICAgICAgcGF0aF90cmFpdHM6OmNvbnZlcnQocy5jX3N0cigpLCBzLmNfc3RyKCkrcy5zaXplKCksIG1fcGF0aG5hbWUsIGN2dCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gIC0tLS0tICBhc3NpZ25tZW50cyAgLS0tLS0KLQotICAgIHBhdGgmIG9wZXJhdG9yPShjb25zdCBwYXRoJiBwKQotICAgIHsKLSAgICAgIG1fcGF0aG5hbWUgPSBwLm1fcGF0aG5hbWU7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHZhbHVlX3R5cGUqIHB0cikgIC8vIHJlcXVpcmVkIGluIGNhc2UgcHRyIG92ZXJsYXBzICp0aGlzCi0gICAgewotICAgICAgbV9wYXRobmFtZSA9IHB0cjsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxwYXRoX3RyYWl0czo6aXNfcGF0aGFibGU8Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZWNheTxTb3VyY2U+Ojp0eXBlPiwgcGF0aCY+Ojp0eXBlCi0gICAgb3BlcmF0b3I9KFNvdXJjZSBjb25zdCYgc291cmNlKQotICAgIHsKLSAgICAgIG1fcGF0aG5hbWUuY2xlYXIoKTsKLSAgICAgIHBhdGhfdHJhaXRzOjpkaXNwYXRjaChzb3VyY2UsIG1fcGF0aG5hbWUsIGNvZGVjdnQoKSk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgcGF0aCYgYXNzaWduKGNvbnN0IHZhbHVlX3R5cGUqIHB0ciwgY29uc3QgY29kZWN2dF90eXBlJikgIC8vIHJlcXVpcmVkIGluIGNhc2UgcHRyIG92ZXJsYXBzICp0aGlzCi0gICAgewotICAgICAgbV9wYXRobmFtZSA9IHB0cjsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICAgIHBhdGgmIGFzc2lnbihTb3VyY2UgY29uc3QmIHNvdXJjZSwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gICAgewotICAgICAgbV9wYXRobmFtZS5jbGVhcigpOwotICAgICAgcGF0aF90cmFpdHM6OmRpc3BhdGNoKHNvdXJjZSwgbV9wYXRobmFtZSwgY3Z0KTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgICBwYXRoJiBhc3NpZ24oSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQpCi0gICAgewotICAgICAgcmV0dXJuIGFzc2lnbihiZWdpbiwgZW5kLCBjb2RlY3Z0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgmIGFzc2lnbihJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gICAgeyAKLSAgICAgIG1fcGF0aG5hbWUuY2xlYXIoKTsKLSAgICAgIGlmIChiZWdpbiAhPSBlbmQpCi0gICAgICB7Ci0gICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgotICAgICAgICAgIHMoYmVnaW4sIGVuZCk7Ci0gICAgICAgIHBhdGhfdHJhaXRzOjpjb252ZXJ0KHMuY19zdHIoKSwgcy5jX3N0cigpK3Muc2l6ZSgpLCBtX3BhdGhuYW1lLCBjdnQpOwotICAgICAgfQotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vICAtLS0tLSAgY29uY2F0ZW5hdGlvbiAgLS0tLS0KLQotICAgIHBhdGgmIG9wZXJhdG9yKz0oY29uc3QgcGF0aCYgcCkgICAgICAgICB7bV9wYXRobmFtZSArPSBwLm1fcGF0aG5hbWU7IHJldHVybiAqdGhpczt9Ci0gICAgcGF0aCYgb3BlcmF0b3IrPShjb25zdCBzdHJpbmdfdHlwZSYgcykgIHttX3BhdGhuYW1lICs9IHM7IHJldHVybiAqdGhpczt9Ci0gICAgcGF0aCYgb3BlcmF0b3IrPShjb25zdCB2YWx1ZV90eXBlKiBwdHIpIHttX3BhdGhuYW1lICs9IHB0cjsgcmV0dXJuICp0aGlzO30KLSAgICBwYXRoJiBvcGVyYXRvcis9KHZhbHVlX3R5cGUgYykgICAgICAgICAge21fcGF0aG5hbWUgKz0gYzsgcmV0dXJuICp0aGlzO30KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2U+Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPHBhdGhfdHJhaXRzOjppc19wYXRoYWJsZTwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRlY2F5PFNvdXJjZT46OnR5cGU+LCBwYXRoJj46OnR5cGUKLSAgICBvcGVyYXRvcis9KFNvdXJjZSBjb25zdCYgc291cmNlKQotICAgIHsKLSAgICAgIHJldHVybiBjb25jYXQoc291cmNlLCBjb2RlY3Z0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyVD4KLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8aXNfaW50ZWdyYWw8Q2hhclQ+LCBwYXRoJj46OnR5cGUKLSAgICBvcGVyYXRvcis9KENoYXJUIGMpCi0gICAgewotICAgICAgQ2hhclQgdG1wWzJdOwotICAgICAgdG1wWzBdID0gYzsKLSAgICAgIHRtcFsxXSA9IDA7Ci0gICAgICByZXR1cm4gY29uY2F0KHRtcCwgY29kZWN2dCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICAgIHBhdGgmIGNvbmNhdChTb3VyY2UgY29uc3QmIHNvdXJjZSwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gICAgewotICAgICAgcGF0aF90cmFpdHM6OmRpc3BhdGNoKHNvdXJjZSwgbV9wYXRobmFtZSwgY3Z0KTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgICBwYXRoJiBjb25jYXQoSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQpCi0gICAgeyAKLSAgICAgIHJldHVybiBjb25jYXQoYmVnaW4sIGVuZCwgY29kZWN2dCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgICBwYXRoJiBjb25jYXQoSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQsIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICAgIHsgCi0gICAgICBpZiAoYmVnaW4gPT0gZW5kKQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KLSAgICAgICAgcyhiZWdpbiwgZW5kKTsKLSAgICAgIHBhdGhfdHJhaXRzOjpjb252ZXJ0KHMuY19zdHIoKSwgcy5jX3N0cigpK3Muc2l6ZSgpLCBtX3BhdGhuYW1lLCBjdnQpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vICAtLS0tLSAgYXBwZW5kcyAgLS0tLS0KLQotICAgIC8vICBpZiBhIHNlcGFyYXRvciBpcyBhZGRlZCwgaXQgaXMgdGhlIHByZWZlcnJlZCBzZXBhcmF0b3IgZm9yIHRoZSBwbGF0Zm9ybTsKLSAgICAvLyAgc2xhc2ggZm9yIFBPU0lYLCBiYWNrc2xhc2ggZm9yIFdpbmRvd3MKLQotICAgIHBhdGgmIG9wZXJhdG9yLz0oY29uc3QgcGF0aCYgcCk7Ci0KLSAgICBwYXRoJiBvcGVyYXRvci89KGNvbnN0IHZhbHVlX3R5cGUqIHB0cik7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxwYXRoX3RyYWl0czo6aXNfcGF0aGFibGU8Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZWNheTxTb3VyY2U+Ojp0eXBlPiwgcGF0aCY+Ojp0eXBlCi0gICAgb3BlcmF0b3IvPShTb3VyY2UgY29uc3QmIHNvdXJjZSkKLSAgICB7Ci0gICAgICByZXR1cm4gYXBwZW5kKHNvdXJjZSwgY29kZWN2dCgpKTsKLSAgICB9Ci0KLSAgICBwYXRoJiBhcHBlbmQoY29uc3QgdmFsdWVfdHlwZSogcHRyLCBjb25zdCBjb2RlY3Z0X3R5cGUmKSAgLy8gcmVxdWlyZWQgaW4gY2FzZSBwdHIgb3ZlcmxhcHMgKnRoaXMKLSAgICB7Ci0gICAgICB0aGlzLT5vcGVyYXRvci89KHB0cik7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFNvdXJjZT4KLSAgICBwYXRoJiBhcHBlbmQoU291cmNlIGNvbnN0JiBzb3VyY2UsIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgmIGFwcGVuZChJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCkKLSAgICB7IAotICAgICAgcmV0dXJuIGFwcGVuZChiZWdpbiwgZW5kLCBjb2RlY3Z0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgmIGFwcGVuZChJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpOwotCi0gICAgLy8gIC0tLS0tICBtb2RpZmllcnMgIC0tLS0tCi0KLSAgICB2b2lkICAgY2xlYXIoKSAgICAgICAgICAgICB7IG1fcGF0aG5hbWUuY2xlYXIoKTsgfQotICAgIHBhdGgmICBtYWtlX3ByZWZlcnJlZCgpCi0jICAgaWZkZWYgTkROQk9PU1RfUE9TSVhfQVBJCi0gICAgICB7IHJldHVybiAqdGhpczsgfSAgLy8gUE9TSVggbm8gZWZmZWN0Ci0jICAgZWxzZSAvLyBORE5CT09TVF9XSU5ET1dTX0FQSQotICAgICAgOyAgLy8gY2hhbmdlIHNsYXNoZXMgdG8gYmFja3NsYXNoZXMKLSMgICBlbmRpZgotICAgIHBhdGgmICByZW1vdmVfZmlsZW5hbWUoKTsKLSAgICBwYXRoJiAgcmVwbGFjZV9leHRlbnNpb24oY29uc3QgcGF0aCYgbmV3X2V4dGVuc2lvbiA9IHBhdGgoKSk7Ci0gICAgdm9pZCAgIHN3YXAocGF0aCYgcmhzKSAgICAgeyBtX3BhdGhuYW1lLnN3YXAocmhzLm1fcGF0aG5hbWUpOyB9Ci0KLSAgICAvLyAgLS0tLS0gIG9ic2VydmVycyAgLS0tLS0KLSAgCi0gICAgLy8gIEZvciBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IGZvcm1hdCBmaWxlIHBhdGhzIGRpZmZlcmVudGx5IHRoYW4gZGlyZWN0b3J5Ci0gICAgLy8gIHBhdGhzLCByZXR1cm4gdmFsdWVzIGZyb20gb2JzZXJ2ZXJzIGFyZSBmb3JtYXR0ZWQgYXMgZmlsZSBuYW1lcyB1bmxlc3MgdGhlcmUKLSAgICAvLyAgaXMgYSB0cmFpbGluZyBzZXBhcmF0b3IsIGluIHdoaWNoIGNhc2UgcmV0dXJucyBhcmUgZm9ybWF0dGVkIGFzIGRpcmVjdG9yeQotICAgIC8vICBwYXRocy4gUE9TSVggYW5kIFdpbmRvd3MgbWFrZSBubyBzdWNoIGRpc3RpbmN0aW9uLgotCi0gICAgLy8gIEltcGxlbWVudGF0aW9ucyBhcmUgcGVybWl0dGVkIHRvIHJldHVybiBjb25zdCB2YWx1ZXMgb3IgY29uc3QgcmVmZXJlbmNlcy4KLQotICAgIC8vICBUaGUgc3RyaW5nIG9yIHBhdGggcmV0dXJuZWQgYnkgYW4gb2JzZXJ2ZXIgYXJlIHNwZWNpZmllZCBhcyBiZWluZyBmb3JtYXR0ZWQKLSAgICAvLyAgYXMgIm5hdGl2ZSIgb3IgImdlbmVyaWMiLgotICAgIC8vCi0gICAgLy8gIEZvciBQT1NJWCwgdGhlc2UgYXJlIGFsbCB0aGUgc2FtZSBmb3JtYXQ7IHNsYXNoZXMgYW5kIGJhY2tzbGFzaGVzIGFyZSBhcyBpbnB1dCBhbmQKLSAgICAvLyAgYXJlIG5vdCBtb2RpZmllZC4KLSAgICAvLwotICAgIC8vICBGb3IgV2luZG93cywgICBuYXRpdmU6ICAgIGFzIGlucHV0OyBzbGFzaGVzIGFuZCBiYWNrc2xhc2hlcyBhcmUgbm90IG1vZGlmaWVkOwotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgdGhlIGZvcm1hdCBvZiB0aGUgaW50ZXJuYWxseSBzdG9yZWQgc3RyaW5nLgotICAgIC8vICAgICAgICAgICAgICAgICBnZW5lcmljOiAgIGJhY2tzbGFzaGVzIGFyZSBjb252ZXJ0ZWQgdG8gc2xhc2hlcwotCi0gICAgLy8gIC0tLS0tICBuYXRpdmUgZm9ybWF0IG9ic2VydmVycyAgLS0tLS0KLQotICAgIGNvbnN0IHN0cmluZ190eXBlJiAgbmF0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9wYXRobmFtZTsgfSAgICAgICAgICAvLyBUaHJvd3M6IG5vdGhpbmcKLSAgICBjb25zdCB2YWx1ZV90eXBlKiAgIGNfc3RyKCkgY29uc3QgIHsgcmV0dXJuIG1fcGF0aG5hbWUuY19zdHIoKTsgfSAgLy8gVGhyb3dzOiBub3RoaW5nCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3RyaW5nPgotICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdDsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdHJpbmc+Ci0gICAgU3RyaW5nIHN0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkgY29uc3Q7Ci0KLSMgICBpZmRlZiBORE5CT09TVF9XSU5ET1dTX0FQSQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHN0cmluZyhjb2RlY3Z0KCkpOyB9IAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHN0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkgY29uc3QKLSAgICB7IAotICAgICAgc3RkOjpzdHJpbmcgdG1wOwotICAgICAgaWYgKCFtX3BhdGhuYW1lLmVtcHR5KCkpCi0gICAgICAgIHBhdGhfdHJhaXRzOjpjb252ZXJ0KCYqbV9wYXRobmFtZS5iZWdpbigpLCAmKm1fcGF0aG5hbWUuYmVnaW4oKSttX3BhdGhuYW1lLnNpemUoKSwKLSAgICAgICAgICB0bXAsIGN2dCk7Ci0gICAgICByZXR1cm4gdG1wOwotICAgIH0KLSAgICAKLSAgICAvLyAgc3RyaW5nX3R5cGUgaXMgc3RkOjp3c3RyaW5nLCBzbyB0aGVyZSBpcyBubyBjb252ZXJzaW9uCi0gICAgY29uc3Qgc3RkOjp3c3RyaW5nJiAgd3N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aG5hbWU7IH0KLSAgICBjb25zdCBzdGQ6OndzdHJpbmcmICB3c3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSYpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aG5hbWU7IH0KLQotIyAgIGVsc2UgICAvLyBORE5CT09TVF9QT1NJWF9BUEkKLSAgICAvLyAgc3RyaW5nX3R5cGUgaXMgc3RkOjpzdHJpbmcsIHNvIHRoZXJlIGlzIG5vIGNvbnZlcnNpb24KLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aG5hbWU7IH0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgIHN0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmKSBjb25zdCB7IHJldHVybiBtX3BhdGhuYW1lOyB9Ci0KLSAgICBjb25zdCBzdGQ6OndzdHJpbmcgIHdzdHJpbmcoKSBjb25zdCB7IHJldHVybiB3c3RyaW5nKGNvZGVjdnQoKSk7IH0KLSAgICBjb25zdCBzdGQ6OndzdHJpbmcgIHdzdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJiBjdnQpIGNvbnN0Ci0gICAgeyAKLSAgICAgIHN0ZDo6d3N0cmluZyB0bXA7Ci0gICAgICBpZiAoIW1fcGF0aG5hbWUuZW1wdHkoKSkKLSAgICAgICAgcGF0aF90cmFpdHM6OmNvbnZlcnQoJiptX3BhdGhuYW1lLmJlZ2luKCksICYqbV9wYXRobmFtZS5iZWdpbigpK21fcGF0aG5hbWUuc2l6ZSgpLAotICAgICAgICAgIHRtcCwgY3Z0KTsKLSAgICAgIHJldHVybiB0bXA7Ci0gICAgfQotCi0jICAgZW5kaWYKLQotICAgIC8vICAtLS0tLSAgZ2VuZXJpYyBmb3JtYXQgb2JzZXJ2ZXJzICAtLS0tLQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN0cmluZz4KLSAgICBTdHJpbmcgZ2VuZXJpY19zdHJpbmcoKSBjb25zdDsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdHJpbmc+Ci0gICAgU3RyaW5nIGdlbmVyaWNfc3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdDsKLQotIyAgIGlmZGVmIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgICBnZW5lcmljX3N0cmluZygpIGNvbnN0IHsgcmV0dXJuIGdlbmVyaWNfc3RyaW5nKGNvZGVjdnQoKSk7IH0gCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgICBnZW5lcmljX3N0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkgY29uc3Q7IAotICAgIGNvbnN0IHN0ZDo6d3N0cmluZyAgZ2VuZXJpY193c3RyaW5nKCkgY29uc3Q7Ci0gICAgY29uc3Qgc3RkOjp3c3RyaW5nICBnZW5lcmljX3dzdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJikgY29uc3QgeyByZXR1cm4gZ2VuZXJpY193c3RyaW5nKCk7IH07Ci0KLSMgICBlbHNlIC8vIE5ETkJPT1NUX1BPU0lYX0FQSQotICAgIC8vICBPbiBQT1NJWC1saWtlIHN5c3RlbXMsIHRoZSBnZW5lcmljIGZvcm1hdCBpcyB0aGUgc2FtZSBhcyB0aGUgbmF0aXZlIGZvcm1hdAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiAgZ2VuZXJpY19zdHJpbmcoKSBjb25zdCAgeyByZXR1cm4gbV9wYXRobmFtZTsgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiAgZ2VuZXJpY19zdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJikgY29uc3QgIHsgcmV0dXJuIG1fcGF0aG5hbWU7IH0KLSAgICBjb25zdCBzdGQ6OndzdHJpbmcgIGdlbmVyaWNfd3N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHdzdHJpbmcoY29kZWN2dCgpKTsgfQotICAgIGNvbnN0IHN0ZDo6d3N0cmluZyAgZ2VuZXJpY193c3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdCB7IHJldHVybiB3c3RyaW5nKGN2dCk7IH0KLQotIyAgIGVuZGlmCi0KLSAgICAvLyAgLS0tLS0gIGNvbXBhcmUgIC0tLS0tCi0KLSAgICBpbnQgY29tcGFyZShjb25zdCBwYXRoJiBwKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVDsgIC8vIGdlbmVyaWMsIGxleGljb2dyYXBoaWNhbAotICAgIGludCBjb21wYXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHBhdGgocykpOyB9Ci0gICAgaW50IGNvbXBhcmUoY29uc3QgdmFsdWVfdHlwZSogcykgY29uc3QgIHsgcmV0dXJuIGNvbXBhcmUocGF0aChzKSk7IH0KLQotICAgIC8vICAtLS0tLSAgZGVjb21wb3NpdGlvbiAgLS0tLS0KLQotICAgIHBhdGggIHJvb3RfcGF0aCgpIGNvbnN0OyAKLSAgICBwYXRoICByb290X25hbWUoKSBjb25zdDsgICAgICAgICAvLyByZXR1cm5zIDAgb3IgMSBlbGVtZW50IHBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVuIG9uIFBPU0lYLCByb290X25hbWUoKSBpcyBub24tZW1wdHkoKSBmb3IgbmV0d29yayBwYXRocwotICAgIHBhdGggIHJvb3RfZGlyZWN0b3J5KCkgY29uc3Q7ICAgIC8vIHJldHVybnMgMCBvciAxIGVsZW1lbnQgcGF0aAotICAgIHBhdGggIHJlbGF0aXZlX3BhdGgoKSBjb25zdDsKLSAgICBwYXRoICBwYXJlbnRfcGF0aCgpIGNvbnN0OwotICAgIHBhdGggIGZpbGVuYW1lKCkgY29uc3Q7ICAgICAgICAgIC8vIHJldHVybnMgMCBvciAxIGVsZW1lbnQgcGF0aAotICAgIHBhdGggIHN0ZW0oKSBjb25zdDsgICAgICAgICAgICAgIC8vIHJldHVybnMgMCBvciAxIGVsZW1lbnQgcGF0aAotICAgIHBhdGggIGV4dGVuc2lvbigpIGNvbnN0OyAgICAgICAgIC8vIHJldHVybnMgMCBvciAxIGVsZW1lbnQgcGF0aAotCi0gICAgLy8gIC0tLS0tICBxdWVyeSAgLS0tLS0KLQotICAgIGJvb2wgZW1wdHkoKSBjb25zdCAgICAgICAgICAgICAgIHsgcmV0dXJuIG1fcGF0aG5hbWUuZW1wdHkoKTsgfSAvLyBuYW1lIGNvbnNpc3RlbnQgd2l0aCBzdGQgY29udGFpbmVycwotICAgIGJvb2wgaGFzX3Jvb3RfcGF0aCgpIGNvbnN0ICAgICAgIHsgcmV0dXJuIGhhc19yb290X2RpcmVjdG9yeSgpIHx8IGhhc19yb290X25hbWUoKTsgfQotICAgIGJvb2wgaGFzX3Jvb3RfbmFtZSgpIGNvbnN0ICAgICAgIHsgcmV0dXJuICFyb290X25hbWUoKS5lbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNfcm9vdF9kaXJlY3RvcnkoKSBjb25zdCAgeyByZXR1cm4gIXJvb3RfZGlyZWN0b3J5KCkuZW1wdHkoKTsgfQotICAgIGJvb2wgaGFzX3JlbGF0aXZlX3BhdGgoKSBjb25zdCAgIHsgcmV0dXJuICFyZWxhdGl2ZV9wYXRoKCkuZW1wdHkoKTsgfQotICAgIGJvb2wgaGFzX3BhcmVudF9wYXRoKCkgY29uc3QgICAgIHsgcmV0dXJuICFwYXJlbnRfcGF0aCgpLmVtcHR5KCk7IH0KLSAgICBib29sIGhhc19maWxlbmFtZSgpIGNvbnN0ICAgICAgICB7IHJldHVybiAhbV9wYXRobmFtZS5lbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNfc3RlbSgpIGNvbnN0ICAgICAgICAgICAgeyByZXR1cm4gIXN0ZW0oKS5lbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNfZXh0ZW5zaW9uKCkgY29uc3QgICAgICAgeyByZXR1cm4gIWV4dGVuc2lvbigpLmVtcHR5KCk7IH0KLSAgICBib29sIGlzX2Fic29sdXRlKCkgY29uc3QKLSAgICB7Ci0jICAgICBpZmRlZiBORE5CT09TVF9XSU5ET1dTX0FQSQotICAgICAgcmV0dXJuIGhhc19yb290X25hbWUoKSAmJiBoYXNfcm9vdF9kaXJlY3RvcnkoKTsKLSMgICAgIGVsc2UKLSAgICAgIHJldHVybiBoYXNfcm9vdF9kaXJlY3RvcnkoKTsKLSMgICAgIGVuZGlmCi0gICAgfQotICAgIGJvb2wgaXNfcmVsYXRpdmUoKSBjb25zdCAgICAgICAgIHsgcmV0dXJuICFpc19hYnNvbHV0ZSgpOyB9IAotCi0gICAgLy8gIC0tLS0tICBpdGVyYXRvcnMgIC0tLS0tCi0KLSAgICBjbGFzcyBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIGl0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotCi0gICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKLSAgICBpdGVyYXRvciBlbmQoKSBjb25zdDsKLQotICAgIC8vICAtLS0tLSAgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMgIC0tLS0tCi0KLSAgICBzdGF0aWMgc3RkOjpsb2NhbGUgIGltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsb2MpOwotICAgIHN0YXRpYyBjb25zdCAgICAgICAgY29kZWN2dF90eXBlJiBjb2RlY3Z0KCk7Ci0KLSAgICAvLyAgLS0tLS0gIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICAtLS0tLQotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9ERVBSRUNBVEVEKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRCkKLSMgICBlcnJvciBib3RoIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVQUkVDQVRFRCBhbmQgTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVEIGFyZSBkZWZpbmVkCi0jIGVuZGlmCi0KLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVEKQotICAgIC8vICByZWNlbnRseSBkZXByZWNhdGVkIGZ1bmN0aW9ucyBzdXBwbGllZCBieSBkZWZhdWx0Ci0gICAgcGF0aCYgIG5vcm1hbGl6ZSgpICAgICAgICAgICAgICB7IHJldHVybiBtX25vcm1hbGl6ZSgpOyB9Ci0gICAgcGF0aCYgIHJlbW92ZV9sZWFmKCkgICAgICAgICAgICB7IHJldHVybiByZW1vdmVfZmlsZW5hbWUoKTsgfQotICAgIHBhdGggICBsZWFmKCkgY29uc3QgICAgICAgICAgICAgeyByZXR1cm4gZmlsZW5hbWUoKTsgfQotICAgIHBhdGggICBicmFuY2hfcGF0aCgpIGNvbnN0ICAgICAgeyByZXR1cm4gcGFyZW50X3BhdGgoKTsgfQotICAgIGJvb2wgICBoYXNfbGVhZigpIGNvbnN0ICAgICAgICAgeyByZXR1cm4gIW1fcGF0aG5hbWUuZW1wdHkoKTsgfQotICAgIGJvb2wgICBoYXNfYnJhbmNoX3BhdGgoKSBjb25zdCAgeyByZXR1cm4gIXBhcmVudF9wYXRoKCkuZW1wdHkoKTsgfQotICAgIGJvb2wgICBpc19jb21wbGV0ZSgpIGNvbnN0ICAgICAgeyByZXR1cm4gaXNfYWJzb2x1dGUoKTsgfQotIyBlbmRpZgotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9ERVBSRUNBVEVEKQotICAgIC8vICBkZXByZWNhdGVkIGZ1bmN0aW9ucyB3aXRoIGVub3VnaCBzaWduYXR1cmUgb3Igc2VtYW50aWMgY2hhbmdlcyB0aGF0IHRoZXkgYXJlCi0gICAgLy8gIG5vdCBzdXBwbGllZCBieSBkZWZhdWx0IAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVfc3RyaW5nKCkgY29uc3QgICAgICAgICAgICAgICB7IHJldHVybiBzdHJpbmcoKTsgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGRpcmVjdG9yeV9zdHJpbmcoKSBjb25zdCAgICAgICAgICB7IHJldHVybiBzdHJpbmcoKTsgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hdGl2ZV9maWxlX3N0cmluZygpIGNvbnN0ICAgICAgICB7IHJldHVybiBzdHJpbmcoKTsgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hdGl2ZV9kaXJlY3Rvcnlfc3RyaW5nKCkgY29uc3QgICB7IHJldHVybiBzdHJpbmcoKTsgfQotICAgIGNvbnN0IHN0cmluZ190eXBlIGV4dGVybmFsX2ZpbGVfc3RyaW5nKCkgY29uc3QgICAgICB7IHJldHVybiBuYXRpdmUoKTsgfQotICAgIGNvbnN0IHN0cmluZ190eXBlIGV4dGVybmFsX2RpcmVjdG9yeV9zdHJpbmcoKSBjb25zdCB7IHJldHVybiBuYXRpdmUoKTsgfQotCi0gICAgLy8gIG9sZGVyIGZ1bmN0aW9ucyBubyBsb25nZXIgc3VwcG9ydGVkCi0gICAgLy90eXBlZGVmIGJvb2wgKCpuYW1lX2NoZWNrKShjb25zdCBzdGQ6OnN0cmluZyAmIG5hbWUpOwotICAgIC8vYmFzaWNfcGF0aChjb25zdCBzdHJpbmdfdHlwZSYgc3RyLCBuYW1lX2NoZWNrKSB7IG9wZXJhdG9yLz0oc3RyKTsgfQotICAgIC8vYmFzaWNfcGF0aChjb25zdCB0eXBlbmFtZSBzdHJpbmdfdHlwZTo6dmFsdWVfdHlwZSogcywgbmFtZV9jaGVjaykKLSAgICAvLyAgeyBvcGVyYXRvci89KHMpO30KLSAgICAvL3N0YXRpYyBib29sIGRlZmF1bHRfbmFtZV9jaGVja193cml0YWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9IAotICAgIC8vc3RhdGljIHZvaWQgZGVmYXVsdF9uYW1lX2NoZWNrKG5hbWVfY2hlY2spIHt9Ci0gICAgLy9zdGF0aWMgbmFtZV9jaGVjayBkZWZhdWx0X25hbWVfY2hlY2soKSB7IHJldHVybiAwOyB9Ci0gICAgLy9iYXNpY19wYXRoJiBjYW5vbml6ZSgpOwotIyBlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIHBhdGggcHJpdmF0ZSBtZW1iZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgcHJpdmF0ZToKLSMgICBpZiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICAgcHJhZ21hIHdhcm5pbmcocHVzaCkgLy8gU2F2ZSB3YXJuaW5nIHNldHRpbmdzCi0jICAgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI1MSkgLy8gZGlzYWJsZSB3YXJuaW5nOiBjbGFzcyAnc3RkOjpiYXNpY19zdHJpbmc8X0VsZW0sX1RyYWl0cyxfQXg+JwotIyAgIGVuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZS4uLgotLyoKLSAgICAgIG1fcGF0aG5hbWUgaGFzIHRoZSB0eXBlLCBlbmNvZGluZywgYW5kIGZvcm1hdCByZXF1aXJlZCBieSB0aGUgbmF0aXZlCi0gICAgICBvcGVyYXRpbmcgc3lzdGVtLiBUaHVzIGZvciBQT1NJWCBhbmQgV2luZG93cyB0aGVyZSBpcyBubyBjb252ZXJzaW9uIGZvcgotICAgICAgcGFzc2luZyBtX3BhdGhuYW1lLmNfc3RyKCkgdG8gdGhlIE8vUyBBUEkgb3Igd2hlbiBvYnRhaW5pbmcgYSBwYXRoIGZyb20gdGhlCi0gICAgICBPL1MgQVBJLiBQT1NJWCBlbmNvZGluZyBpcyB1bnNwZWNpZmllZCBvdGhlciB0aGFuIGZvciBkb3QgYW5kIHNsYXNoCi0gICAgICBjaGFyYWN0ZXJzOyBQT1NJWCBqdXN0IHRyZWF0cyBwYXRocyBhcyBhIHNlcXVlbmNlIG9mIGJ5dGVzLiBXaW5kb3dzCi0gICAgICBlbmNvZGluZyBpcyBVQ1MtMiBvciBVVEYtMTYgZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uLgotKi8KLSAgICBzdHJpbmdfdHlwZSAgbV9wYXRobmFtZTsgIC8vIFdpbmRvd3M6IGFzIGlucHV0OyBiYWNrc2xhc2hlcyBOT1QgY29udmVydGVkIHRvIHNsYXNoZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGFzaGVzIE5PVCBjb252ZXJ0ZWQgdG8gYmFja3NsYXNoZXMKLSMgICBpZiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICAgcHJhZ21hIHdhcm5pbmcocG9wKSAvLyByZXN0b3JlIHdhcm5pbmcgc2V0dGluZ3MuCi0jICAgZW5kaWYgCi0KLSAgICBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIG1fYXBwZW5kX3NlcGFyYXRvcl9pZl9uZWVkZWQoKTsKLSAgICAvLyAgUmV0dXJuczogSWYgc2VwYXJhdG9yIGlzIHRvIGJlIGFwcGVuZGVkLCBtX3BhdGhuYW1lLnNpemUoKSBiZWZvcmUgYXBwZW5kLiBPdGhlcndpc2UgMC4KLSAgICAvLyAgTm90ZTogQW4gYXBwZW5kIGlzIG5ldmVyIHBlcmZvcm1lZCBpZiBzaXplKCk9PTAsIHNvIGEgcmV0dXJuZWQgMCBpcyB1bmFtYmlndW91cy4KLQotICAgIHZvaWQgbV9lcmFzZV9yZWR1bmRhbnRfc2VwYXJhdG9yKHN0cmluZ190eXBlOjpzaXplX3R5cGUgc2VwX3Bvcyk7Ci0gICAgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBtX3BhcmVudF9wYXRoX2VuZCgpIGNvbnN0OwotCi0gICAgcGF0aCYgbV9ub3JtYWxpemUoKTsKLQotICAgIC8vIFdhcyBxdWFsaWZpZWQ7IGNvbW80MzNiZXRhOCByZXBvcnRzOgotICAgIC8vICAgIHdhcm5pbmcgIzQyNy1EOiBxdWFsaWZpZWQgbmFtZSBpcyBub3QgYWxsb3dlZCBpbiBtZW1iZXIgZGVjbGFyYXRpb24gCi0gICAgZnJpZW5kIGNsYXNzIGl0ZXJhdG9yOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPChjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocyk7Ci0KLSAgICAvLyBzZWUgcGF0aDo6aXRlcmF0b3I6OmluY3JlbWVudC9kZWNyZW1lbnQgY29tbWVudCBiZWxvdwotICAgIHN0YXRpYyB2b2lkIG1fcGF0aF9pdGVyYXRvcl9pbmNyZW1lbnQocGF0aDo6aXRlcmF0b3IgJiBpdCk7Ci0gICAgc3RhdGljIHZvaWQgbV9wYXRoX2l0ZXJhdG9yX2RlY3JlbWVudChwYXRoOjppdGVyYXRvciAmIGl0KTsKLQotICB9OyAgLy8gY2xhc3MgcGF0aAotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgICAgaW50IGxleF9jb21wYXJlKHBhdGg6Oml0ZXJhdG9yIGZpcnN0MSwgcGF0aDo6aXRlcmF0b3IgbGFzdDEsCi0gICAgICAgIHBhdGg6Oml0ZXJhdG9yIGZpcnN0MiwgcGF0aDo6aXRlcmF0b3IgbGFzdDIpOwotICB9Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICB0eXBlZGVmIHBhdGggd3BhdGg7Ci0jIGVuZGlmCi0KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgcGF0aDo6aXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAKLSAgY2xhc3MgcGF0aDo6aXRlcmF0b3IKLSAgICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPAotICAgICAgcGF0aDo6aXRlcmF0b3IsCi0gICAgICBwYXRoIGNvbnN0LAotICAgICAgbmRuYm9vc3Q6OmJpZGlyZWN0aW9uYWxfdHJhdmVyc2FsX3RhZyA+Ci0gIHsKLSAgcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgbmRuYm9vc3Q6Oml0ZXJhdG9yX2NvcmVfYWNjZXNzOwotICAgIGZyaWVuZCBjbGFzcyBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aDsKLSAgICBmcmllbmQgdm9pZCBtX3BhdGhfaXRlcmF0b3JfaW5jcmVtZW50KHBhdGg6Oml0ZXJhdG9yICYgaXQpOwotICAgIGZyaWVuZCB2b2lkIG1fcGF0aF9pdGVyYXRvcl9kZWNyZW1lbnQocGF0aDo6aXRlcmF0b3IgJiBpdCk7Ci0KLSAgICBjb25zdCBwYXRoJiBkZXJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQotCi0gICAgYm9vbCBlcXVhbChjb25zdCBpdGVyYXRvciAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICByZXR1cm4gbV9wYXRoX3B0ciA9PSByaHMubV9wYXRoX3B0ciAmJiBtX3BvcyA9PSByaHMubV9wb3M7Ci0gICAgfQotCi0gICAgLy8gaXRlcmF0b3JfZmFjYWRlIGRlcml2ZWQgY2xhc3NlcyBkb24ndCBzZWVtIHRvIGxpa2UgaW1wbGVtZW50YXRpb25zIGluCi0gICAgLy8gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5pdCBkbGwncywgc28gZm9yd2FyZCB0byBjbGFzcyBwYXRoIHN0YXRpYyBtZW1iZXJzCi0gICAgdm9pZCBpbmNyZW1lbnQoKSB7IG1fcGF0aF9pdGVyYXRvcl9pbmNyZW1lbnQoKnRoaXMpOyB9Ci0gICAgdm9pZCBkZWNyZW1lbnQoKSB7IG1fcGF0aF9pdGVyYXRvcl9kZWNyZW1lbnQoKnRoaXMpOyB9Ci0KLSAgICBwYXRoICAgICAgICAgICAgICAgICAgICBtX2VsZW1lbnQ7ICAgLy8gY3VycmVudCBlbGVtZW50Ci0gICAgY29uc3QgcGF0aCogICAgICAgICAgICAgbV9wYXRoX3B0cjsgIC8vIHBhdGggYmVpbmcgaXRlcmF0ZWQgb3ZlcgotICAgIHN0cmluZ190eXBlOjpzaXplX3R5cGUgIG1fcG9zOyAgICAgICAvLyBwb3NpdGlvbiBvZiBtX2VsZW1lbnQgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbV9wYXRoX3B0ci0+bV9wYXRobmFtZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbV9lbGVtZW50IGlzIGltcGxpY2l0IGRvdCwgbV9wb3MgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIG9mIHRoZSBsYXN0IHNlcGFyYXRvciBpbiB0aGUgcGF0aC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5kKCkgaXRlcmF0b3IgaXMgaW5kaWNhdGVkIGJ5IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtX3BvcyA9PSBtX3BhdGhfcHRyLT5tX3BhdGhuYW1lLnNpemUoKQotICB9OyAvLyBwYXRoOjppdGVyYXRvcgotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbi1tZW1iZXIgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIC8vICBzdGQ6OmxleGljb2dyYXBoaWNhbF9jb21wYXJlIHdvdWxkIGluZmluYXRlbHkgcmVjdXJzZSBiZWNhdXNlIHBhdGggaXRlcmF0b3JzCi0gIC8vICB5aWVsZCBwYXRocywgc28gcHJvdmlkZSBhIHBhdGggYXdhcmUgdmVyc2lvbgotICBpbmxpbmUgYm9vbCBsZXhpY29ncmFwaGljYWxfY29tcGFyZShwYXRoOjppdGVyYXRvciBmaXJzdDEsIHBhdGg6Oml0ZXJhdG9yIGxhc3QxLAotICAgIHBhdGg6Oml0ZXJhdG9yIGZpcnN0MiwgcGF0aDo6aXRlcmF0b3IgbGFzdDIpCi0gICAgeyByZXR1cm4gZGV0YWlsOjpsZXhfY29tcGFyZShmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGxhc3QyKSA8IDA7IH0KLSAgCi0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoJiByaHMpICAgICAgICAgICAgICB7cmV0dXJuIGxocy5jb21wYXJlKHJocykgPT0gMDt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoOjpzdHJpbmdfdHlwZSYgcmhzKSB7cmV0dXJuIGxocy5jb21wYXJlKHJocykgPT0gMDt9IAotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhdGg6OnN0cmluZ190eXBlJiBsaHMsIGNvbnN0IHBhdGgmIHJocykge3JldHVybiByaHMuY29tcGFyZShsaHMpID09IDA7fQotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhdGgmIGxocywgY29uc3QgcGF0aDo6dmFsdWVfdHlwZSogcmhzKSAge3JldHVybiBsaHMuY29tcGFyZShyaHMpID09IDA7fQotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhdGg6OnZhbHVlX3R5cGUqIGxocywgY29uc3QgcGF0aCYgcmhzKSAge3JldHVybiByaHMuY29tcGFyZShsaHMpID09IDA7fQotICAKLSAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykgICAgICAgICAgICAgIHtyZXR1cm4gbGhzLmNvbXBhcmUocmhzKSAhPSAwO30KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGg6OnN0cmluZ190eXBlJiByaHMpIHtyZXR1cm4gbGhzLmNvbXBhcmUocmhzKSAhPSAwO30gCi0gIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgcGF0aDo6c3RyaW5nX3R5cGUmIGxocywgY29uc3QgcGF0aCYgcmhzKSB7cmV0dXJuIHJocy5jb21wYXJlKGxocykgIT0gMDt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoOjp2YWx1ZV90eXBlKiByaHMpICB7cmV0dXJuIGxocy5jb21wYXJlKHJocykgIT0gMDt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgcGF0aDo6dmFsdWVfdHlwZSogbGhzLCBjb25zdCBwYXRoJiByaHMpICB7cmV0dXJuIHJocy5jb21wYXJlKGxocykgIT0gMDt9Ci0KLSAgLy8gVE9ETzogd2h5IGRvID09IGFuZCAhPSBoYXZlIGFkZGl0aW9uYWwgb3ZlcmxvYWRzLCBidXQgdGhlIG90aGVycyBkb24ndD8KLQotICBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoJiByaHMpICB7cmV0dXJuIGxocy5jb21wYXJlKHJocykgPCAwO30KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykge3JldHVybiAhKHJocyA8IGxocyk7fQotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IHBhdGgmIGxocywgY29uc3QgcGF0aCYgcmhzKSB7cmV0dXJuIHJocyA8IGxoczt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoJiByaHMpIHtyZXR1cm4gIShsaHMgPCByaHMpO30KLQotICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShjb25zdCBwYXRoJiB4KQotICB7Ci0jIGlmZGVmIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0gICAgc3RkOjpzaXplX3Qgc2VlZCA9IDA7Ci0gICAgZm9yKGNvbnN0IHBhdGg6OnZhbHVlX3R5cGUqIGl0ID0geC5jX3N0cigpOyAqaXQ7ICsraXQpCi0gICAgICBoYXNoX2NvbWJpbmUoc2VlZCwgKml0ID09ICcvJyA/IEwnXFwnIDogKml0KTsKLSAgICByZXR1cm4gc2VlZDsKLSMgZWxzZSAgIC8vIE5ETkJPT1NUX1BPU0lYX0FQSQotICAgIHJldHVybiBoYXNoX3JhbmdlKHgubmF0aXZlKCkuYmVnaW4oKSwgeC5uYXRpdmUoKS5lbmQoKSk7Ci0jIGVuZGlmCi0gIH0KLQotICBpbmxpbmUgdm9pZCBzd2FwKHBhdGgmIGxocywgcGF0aCYgcmhzKSAgICAgICAgICAgICAgICAgICB7IGxocy5zd2FwKHJocyk7IH0KLQotICBpbmxpbmUgcGF0aCBvcGVyYXRvci8oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoJiByaHMpICB7IHJldHVybiBwYXRoKGxocykgLz0gcmhzOyB9Ci0KLSAgLy8gIGluc2VydGVycyBhbmQgZXh0cmFjdG9ycwotICAvLyAgICB1c2UgbmRuYm9vc3Q6OmlvOjpxdW90ZWQoKSB0byBoYW5kbGUgc3BhY2VzIGluIHBhdGhzCi0gIC8vICAgIHVzZSAnJicgYXMgZXNjYXBlIGNoYXJhY3RlciB0byBlYXNlIHVzZSBmb3IgV2luZG93cyBwYXRocwotCi0gIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHM+Ci0gIGlubGluZSBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYKLSAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3MsIGNvbnN0IHBhdGgmIHApCi0gIHsKLSAgICByZXR1cm4gb3MKLSAgICAgIDw8IG5kbmJvb3N0Ojppbzo6cXVvdGVkKHAudGVtcGxhdGUgc3RyaW5nPHN0ZDo6YmFzaWNfc3RyaW5nPENoYXI+ID4oKSwgc3RhdGljX2Nhc3Q8Q2hhcj4oJyYnKSk7Ci0gIH0KLSAgCi0gIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHM+Ci0gIGlubGluZSBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhciwgVHJhaXRzPiYKLSAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhciwgVHJhaXRzPiYgaXMsIHBhdGgmIHApCi0gIHsKLSAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyPiBzdHI7Ci0gICAgaXMgPj4gbmRuYm9vc3Q6OmlvOjpxdW90ZWQoc3RyLCBzdGF0aWNfY2FzdDxDaGFyPignJicpKTsKLSAgICBwID0gc3RyOwotICAgIHJldHVybiBpczsKLSAgfQotICAKLSAgLy8gIG5hbWVfY2hlY2tzCi0KLSAgLy8gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaG9sZG92ZXJzIGZyb20gdmVyc2lvbiAxLiBJdCBpc24ndCBjbGVhciB0aGV5IGhhdmUgbXVjaAotICAvLyAgdXNlZnVsbmVzcywgb3IgaG93IHRvIGdlbmVyYWxpemUgdGhlbSBmb3IgbGF0ZXIgdmVyc2lvbnMuCi0KLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIGJvb2wgcG9ydGFibGVfcG9zaXhfbmFtZShjb25zdCBzdGQ6OnN0cmluZyAmIG5hbWUpOwotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgYm9vbCB3aW5kb3dzX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJiBuYW1lKTsKLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIGJvb2wgcG9ydGFibGVfbmFtZShjb25zdCBzdGQ6OnN0cmluZyAmIG5hbWUpOwotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgYm9vbCBwb3J0YWJsZV9kaXJlY3RvcnlfbmFtZShjb25zdCBzdGQ6OnN0cmluZyAmIG5hbWUpOwotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgYm9vbCBwb3J0YWJsZV9maWxlX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJiBuYW1lKTsKLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIGJvb2wgbmF0aXZlKGNvbnN0IHN0ZDo6c3RyaW5nICYgbmFtZSk7Ci0gCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgY2xhc3MgcGF0aCBtZW1iZXIgdGVtcGxhdGUgaW1wbGVtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci0gIHBhdGgmIHBhdGg6OmFwcGVuZChJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gIHsgCi0gICAgaWYgKGJlZ2luID09IGVuZCkKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIHNlcF9wb3MobV9hcHBlbmRfc2VwYXJhdG9yX2lmX25lZWRlZCgpKTsKLSAgICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KLSAgICAgIHMoYmVnaW4sIGVuZCk7Ci0gICAgcGF0aF90cmFpdHM6OmNvbnZlcnQocy5jX3N0cigpLCBzLmNfc3RyKCkrcy5zaXplKCksIG1fcGF0aG5hbWUsIGN2dCk7Ci0gICAgaWYgKHNlcF9wb3MpCi0gICAgICBtX2VyYXNlX3JlZHVuZGFudF9zZXBhcmF0b3Ioc2VwX3Bvcyk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFNvdXJjZT4KLSAgcGF0aCYgcGF0aDo6YXBwZW5kKFNvdXJjZSBjb25zdCYgc291cmNlLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgewotICAgIGlmIChwYXRoX3RyYWl0czo6ZW1wdHkoc291cmNlKSkKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIHNlcF9wb3MobV9hcHBlbmRfc2VwYXJhdG9yX2lmX25lZWRlZCgpKTsKLSAgICBwYXRoX3RyYWl0czo6ZGlzcGF0Y2goc291cmNlLCBtX3BhdGhuYW1lLCBjdnQpOwotICAgIGlmIChzZXBfcG9zKQotICAgICAgbV9lcmFzZV9yZWR1bmRhbnRfc2VwYXJhdG9yKHNlcF9wb3MpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgY2xhc3MgcGF0aCBtZW1iZXIgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6c3RyaW5nIHBhdGg6OnN0cmluZzxzdGQ6OnN0cmluZz4oKSBjb25zdAotICAgIHsgcmV0dXJuIHN0cmluZygpOyB9Ci0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6d3N0cmluZyBwYXRoOjpzdHJpbmc8c3RkOjp3c3RyaW5nPigpIGNvbnN0Ci0gICAgeyByZXR1cm4gd3N0cmluZygpOyB9Ci0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6c3RyaW5nIHBhdGg6OnN0cmluZzxzdGQ6OnN0cmluZz4oY29uc3QgY29kZWN2dF90eXBlJiBjdnQpIGNvbnN0Ci0gICAgeyByZXR1cm4gc3RyaW5nKGN2dCk7IH0KLQotICB0ZW1wbGF0ZSA8PiBpbmxpbmUKLSAgc3RkOjp3c3RyaW5nIHBhdGg6OnN0cmluZzxzdGQ6OndzdHJpbmc+KGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdAotICAgIHsgcmV0dXJuIHdzdHJpbmcoY3Z0KTsgfQotCi0gIHRlbXBsYXRlIDw+IGlubGluZQotICBzdGQ6OnN0cmluZyBwYXRoOjpnZW5lcmljX3N0cmluZzxzdGQ6OnN0cmluZz4oKSBjb25zdAotICAgIHsgcmV0dXJuIGdlbmVyaWNfc3RyaW5nKCk7IH0KLQotICB0ZW1wbGF0ZSA8PiBpbmxpbmUKLSAgc3RkOjp3c3RyaW5nIHBhdGg6OmdlbmVyaWNfc3RyaW5nPHN0ZDo6d3N0cmluZz4oKSBjb25zdAotICAgIHsgcmV0dXJuIGdlbmVyaWNfd3N0cmluZygpOyB9Ci0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6c3RyaW5nIHBhdGg6OmdlbmVyaWNfc3RyaW5nPHN0ZDo6c3RyaW5nPihjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkgY29uc3QKLSAgICB7IHJldHVybiBnZW5lcmljX3N0cmluZyhjdnQpOyB9Ci0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6d3N0cmluZyBwYXRoOjpnZW5lcmljX3N0cmluZzxzdGQ6OndzdHJpbmc+KGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdAotICAgIHsgcmV0dXJuIGdlbmVyaWNfd3N0cmluZyhjdnQpOyB9Ci0KLQotfSAgLy8gbmFtZXNwYWNlIGZpbGVzeXN0ZW0KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBwb3BzIGFiaV9wcmVmaXguaHBwIHByYWdtYXMKLQotI2VuZGlmICAvLyBORE5CT09TVF9GSUxFU1lTVEVNX1BBVEhfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL3BhdGhfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRlMTNhOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM1ICswLDAgQEAKLS8vICBmaWxlc3lzdGVtIHBhdGhfdHJhaXRzLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDkKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLS8vICBMaWJyYXJ5IGhvbWUgcGFnZTogaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9maWxlc3lzdGVtCi0KLSNpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9QQVRIX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9QQVRIX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSMgaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fU1REX1dTVFJJTkcgKQotIyAgIGVycm9yIENvbmZpZ3VyYXRpb24gbm90IHN1cHBvcnRlZDogQm9vc3QuRmlsZXN5c3RlbSBWMyBhbmQgbGF0ZXIgcmVxdWlyZXMgc3RkOjp3c3RyaW5nIHN1cHBvcnQKLSMgZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RlY2F5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHA+Ci0jaW5jbHVkZSA8Y3djaGFyPiAgLy8gZm9yIG1ic3RhdGVfdAotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxsb2NhbGU+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLS8vICNpbmNsdWRlIDxpb3N0cmVhbT4gICAvLyoqKiogY29tbWVudCBtZSBvdXQgKioqKgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwPiAvLyBtdXN0IGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmaWxlc3lzdGVtIHsKLQotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgY29uc3Qgc3lzdGVtOjplcnJvcl9jYXRlZ29yeSYgY29kZWN2dF9lcnJvcl9jYXRlZ29yeSgpOwotICAvLyAgdXNlcyBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0IHVzZWQgZm9yIGVycm9yIGNvZGVzOgotICAvLwotICAvLyAgICBvazogICAgICAgQ29udmVyc2lvbiBzdWNjZXNzZnVsLgotICAvLyAgICBwYXJ0aWFsOiAgTm90IGFsbCBzb3VyY2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQ7IG9uZSBvciBtb3JlIGFkZGl0aW9uYWwgc291cmNlCi0gIC8vICAgICAgICAgICAgICBjaGFyYWN0ZXJzIGFyZSBuZWVkZWQgdG8gcHJvZHVjZSB0aGUgZmluYWwgdGFyZ2V0IGNoYXJhY3Rlciwgb3IgdGhlCi0gIC8vICAgICAgICAgICAgICBzaXplIG9mIHRoZSB0YXJnZXQgaW50ZXJtZWRpYXRlIGJ1ZmZlciB3YXMgdG9vIHNtYWxsIHRvIGhvbGQgdGhlIHJlc3VsdC4KLSAgLy8gICAgZXJyb3I6ICAgIEEgY2hhcmFjdGVyIGluIHRoZSBzb3VyY2UgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byB0aGUgdGFyZ2V0IGVuY29kaW5nLgotICAvLyAgICBub2NvbnY6ICAgVGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGNoYXJhY3RlcnMgaGF2ZSB0aGUgc2FtZSB0eXBlIGFuZCBlbmNvZGluZywgc28gbm8KLSAgLy8gICAgICAgICAgICAgIGNvbnZlcnNpb24gd2FzIG5lY2Vzc2FyeS4KLQotICBjbGFzcyBkaXJlY3RvcnlfZW50cnk7Ci0gIAotbmFtZXNwYWNlIHBhdGhfdHJhaXRzIHsKLSAKLSAgdHlwZWRlZiBzdGQ6OmNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgc3RkOjptYnN0YXRlX3Q+IGNvZGVjdnRfdHlwZTsKLQotICAvLyAgaXNfcGF0aGFibGUgdHlwZSB0cmFpdDsgYWxsb3dzIGRpc2FibGluZyBvdmVyLWFncmVzc2l2ZSBjbGFzcyBwYXRoIG1lbWJlciB0ZW1wbGF0ZXMKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGlzX3BhdGhhYmxlIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsgfTsKLQotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxjaGFyKj4gICAgICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8Y29uc3QgY2hhcio+ICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGlzX3BhdGhhYmxlPHdjaGFyX3QqPiAgICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxjb25zdCB3Y2hhcl90Kj4gICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8c3RkOjpzdHJpbmc+ICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGlzX3BhdGhhYmxlPHN0ZDo6d3N0cmluZz4gICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxzdGQ6OnZlY3RvcjxjaGFyPiA+ICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8c3RkOjp2ZWN0b3I8d2NoYXJfdD4gPiAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGlzX3BhdGhhYmxlPHN0ZDo6bGlzdDxjaGFyPiA+ICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxzdGQ6Omxpc3Q8d2NoYXJfdD4gPiAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8ZGlyZWN0b3J5X2VudHJ5PiAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0KLSAgLy8gIFBhdGhhYmxlIGVtcHR5Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lcj4gaW5saW5lCi0gICAgLy8gZGlzYWJsZV9pZiBhaWRzIGJyb2tlbiBjb21waWxlcnMgKElCTSwgb2xkIEdDQywgZXRjLikgYW5kIGlzIGhhcm1sZXNzIGZvcgotICAgIC8vIGNvbmZvcm1pbmcgY29tcGlsZXJzLiBSZXBsYWNlIGJ5IHBsYWluICJib29sIiBhdCBzb21lIGZ1dHVyZSBkYXRlICgyMDEyPykgCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWY8bmRuYm9vc3Q6OmlzX2FycmF5PENvbnRhaW5lcj4sIGJvb2w+Ojp0eXBlCi0gICAgICBlbXB0eShjb25zdCBDb250YWluZXIgJiBjKQotICAgICAgICB7IHJldHVybiBjLmJlZ2luKCkgPT0gYy5lbmQoKTsgfQotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUKLSAgICBib29sIGVtcHR5KFQgKiBjb25zdCAmIGNfc3RyKQotICB7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGNfc3RyKTsKLSAgICByZXR1cm4gISpjX3N0cjsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4gaW5saW5lCi0gICAgIGJvb2wgZW1wdHkoVCAoJngpW05dKQotICAgICAgIHsgcmV0dXJuICF4WzBdOyB9Ci0KLSAgLy8gdmFsdWUgdHlwZXMgZGlmZmVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAvLwotICAvLyAgIEEgZnJvbV9lbmQgYXJndW1lbnQgb2YgMCBpcyBsZXNzIGVmZmljaWVudCB0aGFuIGEga25vd24gZW5kLCBzbyB1c2Ugb25seSBpZiBuZWVkZWQKLSAgCi0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICB2b2lkIGNvbnZlcnQoY29uc3QgY2hhciogZnJvbSwKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmcm9tX2VuZCwgICAgLy8gMCBmb3IgbnVsbCB0ZXJtaW5hdGVkIE1CQ1MKLSAgICAgICAgICAgICAgICBzdGQ6OndzdHJpbmcgJiB0bywKLSAgICAgICAgICAgICAgICBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCk7Ci0KLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gIHZvaWQgY29udmVydChjb25zdCB3Y2hhcl90KiBmcm9tLAotICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGZyb21fZW5kLCAgLy8gMCBmb3IgbnVsbCB0ZXJtaW5hdGVkIE1CQ1MKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAmIHRvLAotICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KTsKLQotICBpbmxpbmUgCi0gIHZvaWQgY29udmVydChjb25zdCBjaGFyKiBmcm9tLAotICAgICAgICAgICAgICAgIHN0ZDo6d3N0cmluZyAmIHRvLAotICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGZyb20pOwotICAgIGNvbnZlcnQoZnJvbSwgMCwgdG8sIGN2dCk7Ci0gIH0KLQotICBpbmxpbmUgCi0gIHZvaWQgY29udmVydChjb25zdCB3Y2hhcl90KiBmcm9tLAotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICYgdG8sCi0gICAgICAgICAgICAgICAgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gIHsKLSAgICBORE5CT09TVF9BU1NFUlQoZnJvbSk7Ci0gICAgY29udmVydChmcm9tLCAwLCB0bywgY3Z0KTsKLSAgfQotCi0gIC8vIHZhbHVlIHR5cGVzIHNhbWUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAvLyBjaGFyCi0KLSAgaW5saW5lIAotICB2b2lkIGNvbnZlcnQoY29uc3QgY2hhciogZnJvbSwgY29uc3QgY2hhciogZnJvbV9lbmQsIHN0ZDo6c3RyaW5nICYgdG8sCi0gICAgY29uc3QgY29kZWN2dF90eXBlJikKLSAgewotICAgIE5ETkJPT1NUX0FTU0VSVChmcm9tKTsKLSAgICBORE5CT09TVF9BU1NFUlQoZnJvbV9lbmQpOwotICAgIHRvLmFwcGVuZChmcm9tLCBmcm9tX2VuZCk7Ci0gIH0KLQotICBpbmxpbmUgCi0gIHZvaWQgY29udmVydChjb25zdCBjaGFyKiBmcm9tLAotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICYgdG8sCi0gICAgICAgICAgICAgICAgY29uc3QgY29kZWN2dF90eXBlJikKLSAgewotICAgIE5ETkJPT1NUX0FTU0VSVChmcm9tKTsKLSAgICB0byArPSBmcm9tOwotICB9Ci0KLSAgLy8gd2NoYXJfdAotCi0gIGlubGluZSAKLSAgdm9pZCBjb252ZXJ0KGNvbnN0IHdjaGFyX3QqIGZyb20sIGNvbnN0IHdjaGFyX3QqIGZyb21fZW5kLCBzdGQ6OndzdHJpbmcgJiB0bywKLSAgICBjb25zdCBjb2RlY3Z0X3R5cGUmKQotICB7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGZyb20pOwotICAgIE5ETkJPT1NUX0FTU0VSVChmcm9tX2VuZCk7Ci0gICAgdG8uYXBwZW5kKGZyb20sIGZyb21fZW5kKTsKLSAgfQotCi0gIGlubGluZSAKLSAgdm9pZCBjb252ZXJ0KGNvbnN0IHdjaGFyX3QqIGZyb20sCi0gICAgICAgICAgICAgICAgc3RkOjp3c3RyaW5nICYgdG8sCi0gICAgICAgICAgICAgICAgY29uc3QgY29kZWN2dF90eXBlJikKLSAgewotICAgIE5ETkJPT1NUX0FTU0VSVChmcm9tKTsKLSAgICB0byArPSBmcm9tOwotICB9Ci0KLSAgLy8gIFNvdXJjZSBkaXNwYXRjaCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIC8vICBjb250aWd1b3VzIGNvbnRhaW5lcnMKLSAgdGVtcGxhdGUgPGNsYXNzIFU+IGlubGluZQotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIGMsIFUmIHRvLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgewotICAgIGlmIChjLnNpemUoKSkKLSAgICAgIGNvbnZlcnQoJipjLmJlZ2luKCksICYqYy5iZWdpbigpICsgYy5zaXplKCksIHRvLCBjdnQpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBVPiBpbmxpbmUKLSAgICB2b2lkIGRpc3BhdGNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgYywgVSYgdG8sIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0gICAgaWYgKGMuc2l6ZSgpKQotICAgICAgY29udmVydCgmKmMuYmVnaW4oKSwgJipjLmJlZ2luKCkgKyBjLnNpemUoKSwgdG8sIGN2dCk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFU+IGlubGluZQotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjp2ZWN0b3I8Y2hhcj4mIGMsIFUmIHRvLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgewotICAgIGlmIChjLnNpemUoKSkKLSAgICAgIGNvbnZlcnQoJipjLmJlZ2luKCksICYqYy5iZWdpbigpICsgYy5zaXplKCksIHRvLCBjdnQpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBVPiBpbmxpbmUKLSAgICB2b2lkIGRpc3BhdGNoKGNvbnN0IHN0ZDo6dmVjdG9yPHdjaGFyX3Q+JiBjLCBVJiB0bywgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gIHsKLSAgICBpZiAoYy5zaXplKCkpCi0gICAgICBjb252ZXJ0KCYqYy5iZWdpbigpLCAmKmMuYmVnaW4oKSArIGMuc2l6ZSgpLCB0bywgY3Z0KTsKLSAgfQotCi0gIC8vICBub24tY29udGlndW91cyBjb250YWluZXJzCi0gIHRlbXBsYXRlIDxjbGFzcyBDb250YWluZXIsIGNsYXNzIFU+IGlubGluZQotICAgIC8vIGRpc2FibGVfaWYgYWlkcyBicm9rZW4gY29tcGlsZXJzIChJQk0sIG9sZCBHQ0MsIGV0Yy4pIGFuZCBpcyBoYXJtbGVzcyBmb3IKLSAgICAvLyBjb25mb3JtaW5nIGNvbXBpbGVycy4gUmVwbGFjZSBieSBwbGFpbiAidm9pZCIgYXQgc29tZSBmdXR1cmUgZGF0ZSAoMjAxMj8pIAotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmPG5kbmJvb3N0Ojppc19hcnJheTxDb250YWluZXI+LCB2b2lkPjo6dHlwZQotICAgICAgZGlzcGF0Y2goY29uc3QgQ29udGFpbmVyICYgYywgVSYgdG8sIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0gICAgaWYgKGMuc2l6ZSgpKQotICAgIHsKLSAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4gcyhjLmJlZ2luKCksIGMuZW5kKCkpOwotICAgICAgY29udmVydChzLmNfc3RyKCksIHMuY19zdHIoKStzLnNpemUoKSwgdG8sIGN2dCk7Ci0gICAgfQotICB9Ci0KLSAgLy8gIGNfc3RyCi0gIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUKLSAgdm9pZCBkaXNwYXRjaChUICogY29uc3QgJiBjX3N0ciwgVSYgdG8sIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0vLyAgICBzdGQ6OmNvdXQgPDwgImRpc3BhdGNoKCkgY29uc3QgVCAqXG4iOwotICAgIE5ETkJPT1NUX0FTU0VSVChjX3N0cik7Ci0gICAgY29udmVydChjX3N0ciwgdG8sIGN2dCk7Ci0gIH0KLSAgCi0gIC8vICBOb3RlOiB0aGVyZSBpcyBubyBkaXNwYXRjaCBvbiBDLXN0eWxlIGFycmF5cyBiZWNhdXNlIHRoZSBhcnJheSBtYXkKLSAgLy8gIGNvbnRhaW4gYSBzdHJpbmcgc21hbGxlciB0aGFuIHRoZSBhcnJheSBzaXplLiAKLQotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgdm9pZCBkaXNwYXRjaChjb25zdCBkaXJlY3RvcnlfZW50cnkgJiBkZSwKLSMgICAgICAgICAgICAgICAgaWZkZWYgTkROQk9PU1RfV0lORE9XU19BUEkKLSAgICAgICAgICAgICAgICAgICBzdGQ6OndzdHJpbmcgJiB0bywKLSMgICAgICAgICAgICAgICAgZWxzZSAgIAotICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICYgdG8sCi0jICAgICAgICAgICAgICAgIGVuZGlmCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYpOwotCi0KLX19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGhfdHJhaXRzCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHA+IC8vIHBvcHMgYWJpX3ByZWZpeC5ocHAgcHJhZ21hcwotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX0ZJTEVTWVNURU1fUEFUSF9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmIwOTI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDEtMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9mdW5jdGlvbgotCi0vLyBXaWxsaWFtIEtlbXBmLCBKZXNzZSBKb25lcyBhbmQgS2FybCBOZWxzb24gd2VyZSBhbGwgdmVyeSBoZWxwZnVsIGluIHRoZQotLy8gZGVzaWduIG9mIHRoaXMgbGlicmFyeS4KLQotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+IC8vIHVuYXJ5X2Z1bmN0aW9uLCBiaW5hcnlfZnVuY3Rpb24KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyAxMAotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTCi0KLS8vIEluY2x1ZGUgdGhlIHByb2xvZ3VlIGhlcmUgc28gdGhhdCB0aGUgdXNlIG9mIGZpbGUtbGV2ZWwgaXRlcmF0aW9uCi0vLyBpbiBhbnl0aGluZyB0aGF0IG1heSBiZSBpbmNsdWRlZCBieSBmdW5jdGlvbl90ZW1wbGF0ZS5ocHAgZG9lc24ndCBicmVhawotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9wcm9sb2d1ZS5ocHA+Ci0KLS8vIE9sZGVyIFZpc3VhbCBBZ2UgQysrIHZlcnNpb24gZG8gbm90IGhhbmRsZSB0aGUgZmlsZSBpdGVyYXRpb24gd2VsbAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgPj0gNTAwKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIDwgODAwKQotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gMAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjAuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDEKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24xLmhwcD4KLSMgIGVuZGlmCi0jICBpZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyA+PSAyCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMi5ocHA+Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gMwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjMuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDQKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb240LmhwcD4KLSMgIGVuZGlmCi0jICBpZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyA+PSA1Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNS5ocHA+Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gNgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjYuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDcKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb243LmhwcD4KLSMgIGVuZGlmCi0jICBpZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyA+PSA4Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uOC5ocHA+Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gOQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjkuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDEwCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMTAuaHBwPgotIyAgZW5kaWYKLSNlbHNlCi0vLyBXaGF0IGlzIHRoZSAnMycgZm9yPwotIyAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSAoMywoMCxORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyw8bmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL2Z1bmN0aW9uX2l0ZXJhdGUuaHBwPikpCi0jICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotIyAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL2Z1bmN0aW9uX2l0ZXJhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvZnVuY3Rpb25faXRlcmF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NGYyODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvZnVuY3Rpb25faXRlcmF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0jIGVycm9yIEJvb3N0LkZ1bmN0aW9uIC0gZG8gbm90IGluY2x1ZGUgdGhpcyBmaWxlIQotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvZ2VuX21heWJlX2luY2x1ZGUucGwgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9nZW5fbWF5YmVfaW5jbHVkZS5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNkY2Y4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9nZW5fbWF5YmVfaW5jbHVkZS5wbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybCAtdwotIwotIyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0jCi0jIENvcHlyaWdodCAoQykgMjAwMS0yMDAzIERvdWdsYXMgR3JlZ29yIChncmVnb2RAY3MucnBpLmVkdSkKLSMKLSMgUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBpcyBncmFudGVkCi0jIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCi0jIFBlcm1pc3Npb24gdG8gbW9kaWZ5IHRoZSBjb2RlIGFuZCB0byBkaXN0cmlidXRlIG1vZGlmaWVkIGNvZGUgaXMgZ3JhbnRlZAotIyBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLCBhbmQgYSBub3RpY2UKLSMgdGhhdCB0aGUgY29kZSB3YXMgbW9kaWZpZWQgaXMgaW5jbHVkZWQgd2l0aCB0aGUgY29weXJpZ2h0IG5vdGljZS4KLSMKLSMgVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LAotIyBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgotIwotIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi11c2UgRW5nbGlzaDsKLQotJG1heF9hcmdzID0gJEFSR1ZbMF07Ci0KLW9wZW4gKE9VVCwgIj5tYXliZV9pbmNsdWRlLmhwcCIpIG9yIGRpZSgiQ2Fubm90IHdyaXRlIHRvIG1heWJlX2luY2x1ZGUuaHBwIik7Ci1mb3IoJG9uX2FyZyA9IDA7ICRvbl9hcmcgPD0gJG1heF9hcmdzOyArKyRvbl9hcmcpIHsKLSAgICBpZiAoJG9uX2FyZyA9PSAwKSB7Ci0JcHJpbnQgT1VUICIjaWYiOwotICAgIH0KLSAgICBlbHNlIHsKLQlwcmludCBPVVQgIiNlbGlmIjsKLSAgICB9Ci0gICAgcHJpbnQgT1VUICIgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gJG9uX2FyZ1xuIjsKLSAgICBwcmludCBPVVQgIiMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8kb25fYXJnXG4iOwotICAgIHByaW50IE9VVCAiIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fJG9uX2FyZ1xuIjsKLSAgICBwcmludCBPVVQgIiMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPlxuIjsKLSAgICBwcmludCBPVVQgIiMgIGVuZGlmXG4iOwotfQotcHJpbnQgT1VUICIjZWxzZVxuIjsKLXByaW50IE9VVCAiIyAgZXJyb3IgQ2Fubm90IGhhbmRsZSBCb29zdC5GdW5jdGlvbiBvYmplY3RzIHRoYXQgYWNjZXB0IG1vcmUgdGhhbiAkbWF4X2FyZ3MgYXJndW1lbnRzIVxuIjsKLXByaW50IE9VVCAiI2VuZGlmXG4iOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBiOTk4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDAKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8wCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8wCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzIKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDMKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzUKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDYKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl82Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl82Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA3Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNwotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gOAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzgKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDkKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl85Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl85Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxMAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzEwCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xMAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMTEKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8xMQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMTEKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDEyCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzEyCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxMwotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzEzCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xMwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMTQKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8xNAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMTQKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDE1Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzE1Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxNgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xNgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMTcKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8xNwotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMTcKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDE4Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzE4Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxOQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xOQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjAKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yMAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjAKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDIxCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzIxCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyMgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzIyCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8yMgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjMKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yMwotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjMKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDI0Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzI0Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyNQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8yNQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjYKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yNgotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjYKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDI3Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzI3Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyOAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8yOAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjkKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yOQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDMwCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzMwCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAzMQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzMxCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zMQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMzIKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zMgotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMzIKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDMzCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzMzCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAzNAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zNAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMzUKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zNQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMzUKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDM2Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzM2Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAzNwotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zNwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMzgKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zOAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMzgKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDM5Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzM5Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0MAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQwCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80MAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNDEKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl80MQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNDEKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQyCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzQyCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0MwotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQzCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80MwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNDQKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl80NAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNDQKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQ1Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzQ1Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0NgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80NgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNDcKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl80NwotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNDcKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQ4Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzQ4Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0OQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80OQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNTAKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl81MAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNTAKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbHNlCi0jICBlcnJvciBDYW5ub3QgaGFuZGxlIEJvb3N0LkZ1bmN0aW9uIG9iamVjdHMgdGhhdCBhY2NlcHQgbW9yZSB0aGFuIDUwIGFyZ3VtZW50cyEKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvcHJvbG9ndWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvcHJvbG9ndWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWM2ZThlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL3Byb2xvZ3VlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fUFJPTE9HVUVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1BST0xPR1VFX0hQUAotIyAgaW5jbHVkZSA8Y2Fzc2VydD4KLSMgIGluY2x1ZGUgPGFsZ29yaXRobT4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvZnVuY3Rpb25hbC5ocHA+IC8vIHVuYXJ5X2Z1bmN0aW9uLCBiaW5hcnlfZnVuY3Rpb24KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fYmFzZS5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9tZW1fZm4uaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OX1BST0xPR1VFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTE1ZDYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgMAotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjRhNjA1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgMQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24xMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMGVlMzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgMTAKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAzYzJkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDIKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VjNjJkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDMKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb240LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb240LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNhMmJlNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDQKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb241LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb241LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1M2U1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDUKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb242LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb242LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI3NDZlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDYKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb243LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb243LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5MmVkMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDcKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb244LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb244LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgxN2U1MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uOC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDgKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb245LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb245LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjZDIxYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uOS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDkKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fYmFzZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX2Jhc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTkyZWIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fYmFzZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MTAgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDEtMjAwNgotLy8gIENvcHlyaWdodCBFbWlsIERvdGNoZXZza2kgMjAwNwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0JBU0VfSEVBREVSCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0JBU0VfSEVBREVSCi0KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxuZXc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29tcG9zaXRlX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotIyAgaW5jbHVkZSAibmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwIgotI2Vsc2UKLSMgIGluY2x1ZGUgIm5kbmJvb3N0L21wbC9ib29sLmhwcCIKLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX2VxdWFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9md2QuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nKCBwdXNoICkKLSMgICBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ3OTMgKSAvLyBjb21wbGFpbnQgYWJvdXQgbmF0aXZlIGNvZGUgZ2VuZXJhdGlvbgotIyAgIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDEyNyApIC8vICJjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50IgotI2VuZGlmICAgICAgIAotCi0vLyBEZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU1REX05TIHRvIHRoZSBuYW1lc3BhY2UgdGhhdCBjb250YWlucyB0eXBlX2luZm8uCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REX1RZUEVJTkZPCi0vLyBFbWJlZGRlZCBWQysrIGRvZXMgbm90IGhhdmUgdHlwZV9pbmZvIGluIG5hbWVzcGFjZSBzdGQKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9TVERfTlMKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU1REX05TIHN0ZAotI2VuZGlmCi0KLS8vIEJvcnJvd2VkIGZyb20gQm9vc3QuUHl0aG9uIGxpYnJhcnk6IGRldGVybWluZXMgdGhlIGNhc2VzIHdoZXJlIHdlCi0vLyBuZWVkIHRvIHVzZSBzdGQ6OnR5cGVfaW5mbzo6bmFtZSB0byBjb21wYXJlIGluc3RlYWQgb2Ygb3BlcmF0b3I9PS4KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9OT19UWVBFSUQgKQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTVBBUkVfVFlQRV9JRChYLFkpICgoWCk9PShZKSkKLSNlbGlmIChkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSAzKSBcCi0gfHwgZGVmaW5lZChfQUlYKSBcCi0gfHwgKCAgIGRlZmluZWQoX19zZ2kpICYmIGRlZmluZWQoX19ob3N0X21pcHMpKQotIyAgaW5jbHVkZSA8Y3N0cmluZz4KLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoWCxZKSBcCi0gICAgIChzdGQ6OnN0cmNtcCgoWCkubmFtZSgpLChZKS5uYW1lKCkpID09IDApCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoWCxZKSAoKFgpPT0oWSkpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfTVNWQyA8PSAxMzAwIHx8IGRlZmluZWQoX19JQ0wpICYmIF9fSUNMIDw9IDYwMCB8fCBkZWZpbmVkKF9fTVdFUktTX18pICYmIF9fTVdFUktTX18gPCAweDI0MDYgJiYgIWRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9UQVJHRVRfRklYKHgpIHgKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fVEFSR0VUX0ZJWCh4KQotI2VuZGlmIC8vIG5vdCBNU1ZDCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg1QTApCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLFR5cGUpICAgICAgICAgICAgICBcCi0gICAgICB0eXBlbmFtZSA6Om5kbmJvb3N0OjplbmFibGVfaWZfYzwoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT46OnZhbHVlKSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZT46OnR5cGUKLSNlbHNlCi0vLyBCQ0MgZG9lc24ndCByZWNvZ25pemUgdGhpcyBkZXBlbmRzIG9uIGEgdGVtcGxhdGUgYXJndW1lbnQgYW5kIGNvbXBsYWlucwotLy8gYWJvdXQgdGhlIHVzZSBvZiAndHlwZW5hbWUnCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLFR5cGUpICAgICBcCi0gICAgICA6Om5kbmJvb3N0OjplbmFibGVfaWZfYzwoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAoOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT46OnZhbHVlKSwgXAotICAgICAgICAgICAgICAgICAgICAgICBUeXBlPjo6dHlwZQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gIG5hbWVzcGFjZSBkZXRhaWwgewotICAgIG5hbWVzcGFjZSBmdW5jdGlvbiB7Ci0gICAgICBjbGFzcyBYOwotCi0gICAgICAvKioKLSAgICAgICAqIEEgYnVmZmVyIHVzZWQgdG8gc3RvcmUgc21hbGwgZnVuY3Rpb24gb2JqZWN0cyBpbgotICAgICAgICogbmRuYm9vc3Q6OmZ1bmN0aW9uLiBJdCBpcyBhIHVuaW9uIGNvbnRhaW5pbmcgZnVuY3Rpb24gcG9pbnRlcnMsCi0gICAgICAgKiBvYmplY3QgcG9pbnRlcnMsIGFuZCBhIHN0cnVjdHVyZSB0aGF0IHJlc2VtYmxlcyBhIGJvdW5kCi0gICAgICAgKiBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlci4KLSAgICAgICAqLwotICAgICAgdW5pb24gZnVuY3Rpb25fYnVmZmVyCi0gICAgICB7Ci0gICAgICAgIC8vIEZvciBwb2ludGVycyB0byBmdW5jdGlvbiBvYmplY3RzCi0gICAgICAgIG11dGFibGUgdm9pZCogb2JqX3B0cjsKLQotICAgICAgICAvLyBGb3IgcG9pbnRlcnMgdG8gc3RkOjp0eXBlX2luZm8gb2JqZWN0cwotICAgICAgICBzdHJ1Y3QgdHlwZV90IHsKLSAgICAgICAgICAvLyAoZ2V0X2Z1bmN0b3JfdHlwZV90YWcsIGNoZWNrX2Z1bmN0b3JfdHlwZV90YWcpLgotICAgICAgICAgIGNvbnN0IGRldGFpbDo6c3BfdHlwZWluZm8qIHR5cGU7Ci0KLSAgICAgICAgICAvLyBXaGV0aGVyIHRoZSB0eXBlIGlzIGNvbnN0LXF1YWxpZmllZC4KLSAgICAgICAgICBib29sIGNvbnN0X3F1YWxpZmllZDsKLSAgICAgICAgICAvLyBXaGV0aGVyIHRoZSB0eXBlIGlzIHZvbGF0aWxlLXF1YWxpZmllZC4KLSAgICAgICAgICBib29sIHZvbGF0aWxlX3F1YWxpZmllZDsKLSAgICAgICAgfSB0eXBlOwotCi0gICAgICAgIC8vIEZvciBmdW5jdGlvbiBwb2ludGVycyBvZiBhbGwga2luZHMKLSAgICAgICAgbXV0YWJsZSB2b2lkICgqZnVuY19wdHIpKCk7Ci0KLSAgICAgICAgLy8gRm9yIGJvdW5kIG1lbWJlciBwb2ludGVycwotICAgICAgICBzdHJ1Y3QgYm91bmRfbWVtZnVuY19wdHJfdCB7Ci0gICAgICAgICAgdm9pZCAoWDo6Km1lbWZ1bmNfcHRyKShpbnQpOwotICAgICAgICAgIHZvaWQqIG9ial9wdHI7Ci0gICAgICAgIH0gYm91bmRfbWVtZnVuY19wdHI7Ci0KLSAgICAgICAgLy8gRm9yIHJlZmVyZW5jZXMgdG8gZnVuY3Rpb24gb2JqZWN0cy4gV2UgZXhwbGljaXRseSBrZWVwCi0gICAgICAgIC8vIHRyYWNrIG9mIHRoZSBjdi1xdWFsaWZpZXJzIG9uIHRoZSBvYmplY3QgcmVmZXJlbmNlZC4KLSAgICAgICAgc3RydWN0IG9ial9yZWZfdCB7Ci0gICAgICAgICAgbXV0YWJsZSB2b2lkKiBvYmpfcHRyOwotICAgICAgICAgIGJvb2wgaXNfY29uc3RfcXVhbGlmaWVkOwotICAgICAgICAgIGJvb2wgaXNfdm9sYXRpbGVfcXVhbGlmaWVkOwotICAgICAgICB9IG9ial9yZWY7Ci0KLSAgICAgICAgLy8gVG8gcmVsYXggYWxpYXNpbmcgY29uc3RyYWludHMKLSAgICAgICAgbXV0YWJsZSBjaGFyIGRhdGE7Ci0gICAgICB9OwotCi0gICAgICAvKioKLSAgICAgICAqIFRoZSB1bnVzYWJsZSBjbGFzcyBpcyBhIHBsYWNlaG9sZGVyIGZvciB1bnVzZWQgZnVuY3Rpb24gYXJndW1lbnRzCi0gICAgICAgKiBJdCBpcyBhbHNvIGNvbXBsZXRlbHkgdW51c2FibGUgZXhjZXB0IHRoYXQgaXQgY29uc3RydWN0YWJsZSBmcm9tCi0gICAgICAgKiBhbnl0aGluZy4gVGhpcyBoZWxwcyBjb21waWxlcnMgd2l0aG91dCBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHRvCi0gICAgICAgKiBoYW5kbGUgQm9vc3QuRnVuY3Rpb24gb2JqZWN0cyByZXR1cm5pbmcgdm9pZC4KLSAgICAgICAqLwotICAgICAgc3RydWN0IHVudXNhYmxlCi0gICAgICB7Ci0gICAgICAgIHVudXNhYmxlKCkge30KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdW51c2FibGUoY29uc3QgVCYpIHt9Ci0gICAgICB9OwotCi0gICAgICAvKiBEZXRlcm1pbmUgdGhlIHJldHVybiB0eXBlLiBUaGlzIHN1cHBvcnRzIGNvbXBpbGVycyB0aGF0IGRvIG5vdCBzdXBwb3J0Ci0gICAgICAgKiB2b2lkIHJldHVybnMgb3IgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBieSBzaWxlbnRseSBjaGFuZ2luZyB0aGUgcmV0dXJuCi0gICAgICAgKiB0eXBlIHRvICJ1bnVzYWJsZSIuCi0gICAgICAgKi8KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBmdW5jdGlvbl9yZXR1cm5fdHlwZSB7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi0gICAgICB0ZW1wbGF0ZTw+Ci0gICAgICBzdHJ1Y3QgZnVuY3Rpb25fcmV0dXJuX3R5cGU8dm9pZD4KLSAgICAgIHsKLSAgICAgICAgdHlwZWRlZiB1bnVzYWJsZSB0eXBlOwotICAgICAgfTsKLQotICAgICAgLy8gVGhlIG9wZXJhdGlvbiB0eXBlIHRvIHBlcmZvcm0gb24gdGhlIGdpdmVuIGZ1bmN0b3IvZnVuY3Rpb24gcG9pbnRlcgotICAgICAgZW51bSBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgewotICAgICAgICBjbG9uZV9mdW5jdG9yX3RhZywKLSAgICAgICAgbW92ZV9mdW5jdG9yX3RhZywKLSAgICAgICAgZGVzdHJveV9mdW5jdG9yX3RhZywKLSAgICAgICAgY2hlY2tfZnVuY3Rvcl90eXBlX3RhZywKLSAgICAgICAgZ2V0X2Z1bmN0b3JfdHlwZV90YWcKLSAgICAgIH07Ci0KLSAgICAgIC8vIFRhZ3MgdXNlZCB0byBkZWNpZGUgYmV0d2VlbiBkaWZmZXJlbnQgdHlwZXMgb2YgZnVuY3Rpb25zCi0gICAgICBzdHJ1Y3QgZnVuY3Rpb25fcHRyX3RhZyB7fTsKLSAgICAgIHN0cnVjdCBmdW5jdGlvbl9vYmpfdGFnIHt9OwotICAgICAgc3RydWN0IG1lbWJlcl9wdHJfdGFnIHt9OwotICAgICAgc3RydWN0IGZ1bmN0aW9uX29ial9yZWZfdGFnIHt9OwotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPgotICAgICAgY2xhc3MgZ2V0X2Z1bmN0aW9uX3RhZwotICAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfcG9pbnRlcjxGPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9wdHJfdGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9vYmpfdGFnPjo6dHlwZSBwdHJfb3Jfb2JqX3RhZzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfbWVtYmVyX3BvaW50ZXI8Rj46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyX3B0cl90YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cl9vcl9vYmpfdGFnPjo6dHlwZSBwdHJfb3Jfb2JqX29yX21lbV90YWc7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8KGlzX3JlZmVyZW5jZV93cmFwcGVyPEY+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX29ial9yZWZfdGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJfb3Jfb2JqX29yX21lbV90YWc+Ojp0eXBlIG9yX3JlZl90YWc7Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBvcl9yZWZfdGFnIHR5cGU7Ci0gICAgICB9OwotCi0gICAgICAvLyBUaGUgdHJpdmlhbCBtYW5hZ2VyIGRvZXMgbm90aGluZyBidXQgcmV0dXJuIHRoZSBzYW1lIHBvaW50ZXIgKGlmIHdlCi0gICAgICAvLyBhcmUgY2xvbmluZykgb3IgcmV0dXJuIHRoZSBudWxsIHBvaW50ZXIgKGlmIHdlIGFyZSBkZWxldGluZykuCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPgotICAgICAgc3RydWN0IHJlZmVyZW5jZV9tYW5hZ2VyCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2UoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3ApCi0gICAgICAgIHsKLSAgICAgICAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgICAgICAgY2FzZSBjbG9uZV9mdW5jdG9yX3RhZzogCi0gICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9yZWYgPSBpbl9idWZmZXIub2JqX3JlZjsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgIGNhc2UgbW92ZV9mdW5jdG9yX3RhZzoKLSAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3JlZiA9IGluX2J1ZmZlci5vYmpfcmVmOwotICAgICAgICAgICAgaW5fYnVmZmVyLm9ial9yZWYub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICBjYXNlIGRlc3Ryb3lfZnVuY3Rvcl90YWc6Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9yZWYub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICBjYXNlIGNoZWNrX2Z1bmN0b3JfdHlwZV90YWc6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNvbnN0IGRldGFpbDo6c3BfdHlwZWluZm8mIGNoZWNrX3R5cGUgCi0gICAgICAgICAgICAgICAgPSAqb3V0X2J1ZmZlci50eXBlLnR5cGU7Ci0KLSAgICAgICAgICAgICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBoYXZlIHRoZSBzYW1lIHR5cGUuIFdlIGNhbiBhZGQKLSAgICAgICAgICAgICAgLy8gY3YtcXVhbGlmaWVycywgYnV0IHdlIGNhbid0IHRha2UgdGhlbSBhd2F5LgotICAgICAgICAgICAgICBpZiAoTkROQk9PU1RfRlVOQ1RJT05fQ09NUEFSRV9UWVBFX0lEKGNoZWNrX3R5cGUsIE5ETkJPT1NUX1NQX1RZUEVJRChGKSkKLSAgICAgICAgICAgICAgICAgICYmICghaW5fYnVmZmVyLm9ial9yZWYuaXNfY29uc3RfcXVhbGlmaWVkIAotICAgICAgICAgICAgICAgICAgICAgIHx8IG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQpCi0gICAgICAgICAgICAgICAgICAmJiAoIWluX2J1ZmZlci5vYmpfcmVmLmlzX3ZvbGF0aWxlX3F1YWxpZmllZAotICAgICAgICAgICAgICAgICAgICAgIHx8IG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQpKQotICAgICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IGluX2J1ZmZlci5vYmpfcmVmLm9ial9wdHI7Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgY2FzZSBnZXRfZnVuY3Rvcl90eXBlX3RhZzoKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChGKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBpbl9idWZmZXIub2JqX3JlZi5pc19jb25zdF9xdWFsaWZpZWQ7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gaW5fYnVmZmVyLm9ial9yZWYuaXNfdm9sYXRpbGVfcXVhbGlmaWVkOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgLyoqCi0gICAgICAgKiBEZXRlcm1pbmUgaWYgbmRuYm9vc3Q6OmZ1bmN0aW9uIGNhbiB1c2UgdGhlIHNtYWxsLW9iamVjdAotICAgICAgICogb3B0aW1pemF0aW9uIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdCB0eXBlIEYuCi0gICAgICAgKi8KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgICBzdHJ1Y3QgZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb24KLSAgICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UCi0gICAgICAgICAgKGJvb2wsIAotICAgICAgICAgICB2YWx1ZSA9ICgoc2l6ZW9mKEYpIDw9IHNpemVvZihmdW5jdGlvbl9idWZmZXIpICYmCi0gICAgICAgICAgICAgICAgICAgICAoYWxpZ25tZW50X29mPGZ1bmN0aW9uX2J1ZmZlcj46OnZhbHVlIAotICAgICAgICAgICAgICAgICAgICAgICUgYWxpZ25tZW50X29mPEY+Ojp2YWx1ZSA9PSAwKSkpKTsKLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGLHR5cGVuYW1lIEE+Ci0gICAgICBzdHJ1Y3QgZnVuY3Rvcl93cmFwcGVyOiBwdWJsaWMgRiwgcHVibGljIEEKLSAgICAgIHsKLSAgICAgICAgZnVuY3Rvcl93cmFwcGVyKCBGIGYsIEEgYSApOgotICAgICAgICAgIEYoZiksCi0gICAgICAgICAgQShhKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0b3Jfd3JhcHBlcihjb25zdCBmdW5jdG9yX3dyYXBwZXImIGYpIDoKLSAgICAgICAgICBGKHN0YXRpY19jYXN0PGNvbnN0IEYmPihmKSksCi0gICAgICAgICAgQShzdGF0aWNfY2FzdDxjb25zdCBBJj4oZikpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgLyoqCi0gICAgICAgKiBUaGUgZnVuY3Rvcl9tYW5hZ2VyIGNsYXNzIGNvbnRhaW5zIGEgc3RhdGljIGZ1bmN0aW9uICJtYW5hZ2UiIHdoaWNoCi0gICAgICAgKiBjYW4gY2xvbmUgb3IgZGVzdHJveSB0aGUgZ2l2ZW4gZnVuY3Rpb24vZnVuY3Rpb24gb2JqZWN0IHBvaW50ZXIuCi0gICAgICAgKi8KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICBzdHJ1Y3QgZnVuY3Rvcl9tYW5hZ2VyX2NvbW1vbgotICAgICAgewotICAgICAgICB0eXBlZGVmIEZ1bmN0b3IgZnVuY3Rvcl90eXBlOwotCi0gICAgICAgIC8vIEZ1bmN0aW9uIHBvaW50ZXJzCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VfcHRyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChvcCA9PSBjbG9uZV9mdW5jdG9yX3RhZykKLSAgICAgICAgICAgIG91dF9idWZmZXIuZnVuY19wdHIgPSBpbl9idWZmZXIuZnVuY19wdHI7Ci0gICAgICAgICAgZWxzZSBpZiAob3AgPT0gbW92ZV9mdW5jdG9yX3RhZykgewotICAgICAgICAgICAgb3V0X2J1ZmZlci5mdW5jX3B0ciA9IGluX2J1ZmZlci5mdW5jX3B0cjsKLSAgICAgICAgICAgIGluX2J1ZmZlci5mdW5jX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBkZXN0cm95X2Z1bmN0b3JfdGFnKQotICAgICAgICAgICAgb3V0X2J1ZmZlci5mdW5jX3B0ciA9IDA7Ci0gICAgICAgICAgZWxzZSBpZiAob3AgPT0gY2hlY2tfZnVuY3Rvcl90eXBlX3RhZykgewotICAgICAgICAgICAgY29uc3QgZGV0YWlsOjpzcF90eXBlaW5mbyYgY2hlY2tfdHlwZSAKLSAgICAgICAgICAgICAgPSAqb3V0X2J1ZmZlci50eXBlLnR5cGU7Ci0gICAgICAgICAgICBpZiAoTkROQk9PU1RfRlVOQ1RJT05fQ09NUEFSRV9UWVBFX0lEKGNoZWNrX3R5cGUsIE5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKSkpCi0gICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9ICZpbl9idWZmZXIuZnVuY19wdHI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIC8qIG9wID09IGdldF9mdW5jdG9yX3R5cGVfdGFnICovIHsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGdW5jdGlvbiBvYmplY3RzIHRoYXQgZml0IGluIHRoZSBzbWFsbC1vYmplY3QgYnVmZmVyLgotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlX3NtYWxsKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChvcCA9PSBjbG9uZV9mdW5jdG9yX3RhZyB8fCBvcCA9PSBtb3ZlX2Z1bmN0b3JfdGFnKSB7Ci0gICAgICAgICAgICBjb25zdCBmdW5jdG9yX3R5cGUqIGluX2Z1bmN0b3IgPSAKLSAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmdW5jdG9yX3R5cGUqPigmaW5fYnVmZmVyLmRhdGEpOwotICAgICAgICAgICAgbmV3IChyZWludGVycHJldF9jYXN0PHZvaWQqPigmb3V0X2J1ZmZlci5kYXRhKSkgZnVuY3Rvcl90eXBlKCppbl9mdW5jdG9yKTsKLQotICAgICAgICAgICAgaWYgKG9wID09IG1vdmVfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgICAgZnVuY3Rvcl90eXBlKiBmID0gcmVpbnRlcnByZXRfY2FzdDxmdW5jdG9yX3R5cGUqPigmaW5fYnVmZmVyLmRhdGEpOwotICAgICAgICAgICAgICAodm9pZClmOyAvLyBzdXBwcmVzcyB3YXJuaW5nIGFib3V0IHRoZSB2YWx1ZSBvZiBmIG5vdCBiZWluZyB1c2VkIChNU1ZDKQotICAgICAgICAgICAgICBmLT5+RnVuY3RvcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0gZWxzZSBpZiAob3AgPT0gZGVzdHJveV9mdW5jdG9yX3RhZykgewotICAgICAgICAgICAgLy8gU29tZSBjb21waWxlcnMgKEJvcmxhbmQsIHZjNiwgLi4uKSBhcmUgdW5oYXBweSB3aXRoIH5mdW5jdG9yX3R5cGUuCi0gICAgICAgICAgICAgZnVuY3Rvcl90eXBlKiBmID0gcmVpbnRlcnByZXRfY2FzdDxmdW5jdG9yX3R5cGUqPigmb3V0X2J1ZmZlci5kYXRhKTsKLSAgICAgICAgICAgICAodm9pZClmOyAvLyBzdXBwcmVzcyB3YXJuaW5nIGFib3V0IHRoZSB2YWx1ZSBvZiBmIG5vdCBiZWluZyB1c2VkIChNU1ZDKQotICAgICAgICAgICAgIGYtPn5GdW5jdG9yKCk7Ci0gICAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBjaGVja19mdW5jdG9yX3R5cGVfdGFnKSB7Ci0gICAgICAgICAgICBjb25zdCBkZXRhaWw6OnNwX3R5cGVpbmZvJiBjaGVja190eXBlIAotICAgICAgICAgICAgICA9ICpvdXRfYnVmZmVyLnR5cGUudHlwZTsKLSAgICAgICAgICAgIGlmIChORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoY2hlY2tfdHlwZSwgTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpKSkKLSAgICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gJmluX2J1ZmZlci5kYXRhOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSAwOwotICAgICAgICAgIH0gZWxzZSAvKiBvcCA9PSBnZXRfZnVuY3Rvcl90eXBlX3RhZyAqLyB7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudHlwZSA9ICZORE5CT09TVF9TUF9UWVBFSUQoRnVuY3Rvcik7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUuY29uc3RfcXVhbGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gZmFsc2U7ICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgc3RydWN0IGZ1bmN0b3JfbWFuYWdlcgotICAgICAgewotICAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBGdW5jdG9yIGZ1bmN0b3JfdHlwZTsKLQotICAgICAgICAvLyBGdW5jdGlvbiBwb2ludGVycwotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlcihjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3AsIGZ1bmN0aW9uX3B0cl90YWcpCi0gICAgICAgIHsKLSAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfY29tbW9uPEZ1bmN0b3I+OjptYW5hZ2VfcHRyKGluX2J1ZmZlcixvdXRfYnVmZmVyLG9wKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZ1bmN0aW9uIG9iamVjdHMgdGhhdCBmaXQgaW4gdGhlIHNtYWxsLW9iamVjdCBidWZmZXIuCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgbXBsOjp0cnVlXykKLSAgICAgICAgewotICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9jb21tb248RnVuY3Rvcj46Om1hbmFnZV9zbWFsbChpbl9idWZmZXIsb3V0X2J1ZmZlcixvcCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIEZ1bmN0aW9uIG9iamVjdHMgdGhhdCByZXF1aXJlIGhlYXAgYWxsb2NhdGlvbgotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlcihjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3AsIG1wbDo6ZmFsc2VfKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKG9wID09IGNsb25lX2Z1bmN0b3JfdGFnKSB7Ci0gICAgICAgICAgICAvLyBDbG9uZSB0aGUgZnVuY3RvcgotICAgICAgICAgICAgLy8gR0NDIDIuOTUuMyBnZXRzIHRoZSBDViBxdWFsaWZpZXJzIHdyb25nIGhlcmUsIHNvIHdlCi0gICAgICAgICAgICAvLyBjYW4ndCBkbyB0aGUgc3RhdGljX2Nhc3QgdGhhdCB3ZSBzaG91bGQgZG8uCi0gICAgICAgICAgICAvLyBqZXdpbGxjbzogQ2hhbmdpbmcgdGhpcyB0byBzdGF0aWNfY2FzdCBiZWNhdXNlIEdDQyAyLjk1LjMgaXMKLSAgICAgICAgICAgIC8vIG9ic29sZXRlLgotICAgICAgICAgICAgY29uc3QgZnVuY3Rvcl90eXBlKiBmID0KLSAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgZnVuY3Rvcl90eXBlKj4oaW5fYnVmZmVyLm9ial9wdHIpOwotICAgICAgICAgICAgZnVuY3Rvcl90eXBlKiBuZXdfZiA9IG5ldyBmdW5jdG9yX3R5cGUoKmYpOwotICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gbmV3X2Y7Ci0gICAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBtb3ZlX2Z1bmN0b3JfdGFnKSB7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSBpbl9idWZmZXIub2JqX3B0cjsKLSAgICAgICAgICAgIGluX2J1ZmZlci5vYmpfcHRyID0gMDsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wID09IGRlc3Ryb3lfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgIC8qIENhc3QgZnJvbSB0aGUgdm9pZCBwb2ludGVyIHRvIHRoZSBmdW5jdG9yIHBvaW50ZXIgdHlwZSAqLwotICAgICAgICAgICAgZnVuY3Rvcl90eXBlKiBmID0KLSAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZnVuY3Rvcl90eXBlKj4ob3V0X2J1ZmZlci5vYmpfcHRyKTsKLSAgICAgICAgICAgIGRlbGV0ZSBmOwotICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gMDsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wID09IGNoZWNrX2Z1bmN0b3JfdHlwZV90YWcpIHsKLSAgICAgICAgICAgIGNvbnN0IGRldGFpbDo6c3BfdHlwZWluZm8mIGNoZWNrX3R5cGUKLSAgICAgICAgICAgICAgPSAqb3V0X2J1ZmZlci50eXBlLnR5cGU7Ci0gICAgICAgICAgICBpZiAoTkROQk9PU1RfRlVOQ1RJT05fQ09NUEFSRV9UWVBFX0lEKGNoZWNrX3R5cGUsIE5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKSkpCi0gICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IGluX2J1ZmZlci5vYmpfcHRyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSAwOwotICAgICAgICAgIH0gZWxzZSAvKiBvcCA9PSBnZXRfZnVuY3Rvcl90eXBlX3RhZyAqLyB7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudHlwZSA9ICZORE5CT09TVF9TUF9UWVBFSUQoRnVuY3Rvcik7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUuY29uc3RfcXVhbGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRm9yIGZ1bmN0aW9uIG9iamVjdHMsIHdlIGRldGVybWluZSB3aGV0aGVyIHRoZSBmdW5jdGlvbgotICAgICAgICAvLyBvYmplY3QgY2FuIHVzZSB0aGUgc21hbGwtb2JqZWN0IG9wdGltaXphdGlvbiBidWZmZXIgb3IKLSAgICAgICAgLy8gd2hldGhlciB3ZSBuZWVkIHRvIGFsbG9jYXRlIGl0IG9uIHRoZSBoZWFwLgotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlcihjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3AsIGZ1bmN0aW9uX29ial90YWcpCi0gICAgICAgIHsKLSAgICAgICAgICBtYW5hZ2VyKGluX2J1ZmZlciwgb3V0X2J1ZmZlciwgb3AsCi0gICAgICAgICAgICAgICAgICBtcGw6OmJvb2xfPChmdW5jdGlvbl9hbGxvd3Nfc21hbGxfb2JqZWN0X29wdGltaXphdGlvbjxmdW5jdG9yX3R5cGU+Ojp2YWx1ZSk+KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRm9yIG1lbWJlciBwb2ludGVycywgd2UgdXNlIHRoZSBzbWFsbC1vYmplY3Qgb3B0aW1pemF0aW9uIGJ1ZmZlci4KLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZXIoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wLCBtZW1iZXJfcHRyX3RhZykKLSAgICAgICAgewotICAgICAgICAgIG1hbmFnZXIoaW5fYnVmZmVyLCBvdXRfYnVmZmVyLCBvcCwgbXBsOjp0cnVlXygpKTsKLSAgICAgICAgfQotCi0gICAgICBwdWJsaWM6Ci0gICAgICAgIC8qIERpc3BhdGNoIHRvIGFuIGFwcHJvcHJpYXRlIG1hbmFnZXIgYmFzZWQgb24gd2hldGhlciB3ZSBoYXZlIGEKLSAgICAgICAgICAgZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0aW9uIG9iamVjdCBwb2ludGVyLiAqLwotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wKQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfZnVuY3Rpb25fdGFnPGZ1bmN0b3JfdHlwZT46OnR5cGUgdGFnX3R5cGU7Ci0gICAgICAgICAgc3dpdGNoIChvcCkgewotICAgICAgICAgIGNhc2UgZ2V0X2Z1bmN0b3JfdHlwZV90YWc6Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudHlwZSA9ICZORE5CT09TVF9TUF9UWVBFSUQoZnVuY3Rvcl90eXBlKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBtYW5hZ2VyKGluX2J1ZmZlciwgb3V0X2J1ZmZlciwgb3AsIHRhZ190eXBlKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgc3RydWN0IGZ1bmN0b3JfbWFuYWdlcl9hCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEZ1bmN0b3IgZnVuY3Rvcl90eXBlOwotCi0gICAgICAgIC8vIEZ1bmN0aW9uIHBvaW50ZXJzCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgZnVuY3Rpb25fcHRyX3RhZykKLSAgICAgICAgewotICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9jb21tb248RnVuY3Rvcj46Om1hbmFnZV9wdHIoaW5fYnVmZmVyLG91dF9idWZmZXIsb3ApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRnVuY3Rpb24gb2JqZWN0cyB0aGF0IGZpdCBpbiB0aGUgc21hbGwtb2JqZWN0IGJ1ZmZlci4KLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZXIoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wLCBtcGw6OnRydWVfKQotICAgICAgICB7Ci0gICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX2NvbW1vbjxGdW5jdG9yPjo6bWFuYWdlX3NtYWxsKGluX2J1ZmZlcixvdXRfYnVmZmVyLG9wKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gRnVuY3Rpb24gb2JqZWN0cyB0aGF0IHJlcXVpcmUgaGVhcCBhbGxvY2F0aW9uCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgbXBsOjpmYWxzZV8pCi0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIGZ1bmN0b3Jfd3JhcHBlcjxGdW5jdG9yLEFsbG9jYXRvcj4gZnVuY3Rvcl93cmFwcGVyX3R5cGU7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBbGxvY2F0b3I6OnRlbXBsYXRlIHJlYmluZDxmdW5jdG9yX3dyYXBwZXJfdHlwZT46Om90aGVyCi0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvcl90eXBlOwotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgd3JhcHBlcl9hbGxvY2F0b3JfdHlwZTo6cG9pbnRlciB3cmFwcGVyX2FsbG9jYXRvcl9wb2ludGVyX3R5cGU7Ci0KLSAgICAgICAgICBpZiAob3AgPT0gY2xvbmVfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgIC8vIENsb25lIHRoZSBmdW5jdG9yCi0gICAgICAgICAgICAvLyBHQ0MgMi45NS4zIGdldHMgdGhlIENWIHF1YWxpZmllcnMgd3JvbmcgaGVyZSwgc28gd2UKLSAgICAgICAgICAgIC8vIGNhbid0IGRvIHRoZSBzdGF0aWNfY2FzdCB0aGF0IHdlIHNob3VsZCBkby4KLSAgICAgICAgICAgIGNvbnN0IGZ1bmN0b3Jfd3JhcHBlcl90eXBlKiBmID0KLSAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgZnVuY3Rvcl93cmFwcGVyX3R5cGUqPihpbl9idWZmZXIub2JqX3B0cik7Ci0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvcl90eXBlIHdyYXBwZXJfYWxsb2NhdG9yKHN0YXRpY19jYXN0PEFsbG9jYXRvciBjb25zdCAmPigqZikpOwotICAgICAgICAgICAgd3JhcHBlcl9hbGxvY2F0b3JfcG9pbnRlcl90eXBlIGNvcHkgPSB3cmFwcGVyX2FsbG9jYXRvci5hbGxvY2F0ZSgxKTsKLSAgICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yLmNvbnN0cnVjdChjb3B5LCAqZik7Ci0KLSAgICAgICAgICAgIC8vIEdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBwb2ludGVyIHR5cGUKLSAgICAgICAgICAgIGZ1bmN0b3Jfd3JhcHBlcl90eXBlKiBuZXdfZiA9IHN0YXRpY19jYXN0PGZ1bmN0b3Jfd3JhcHBlcl90eXBlKj4oY29weSk7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSBuZXdfZjsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wID09IG1vdmVfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IGluX2J1ZmZlci5vYmpfcHRyOwotICAgICAgICAgICAgaW5fYnVmZmVyLm9ial9wdHIgPSAwOwotICAgICAgICAgIH0gZWxzZSBpZiAob3AgPT0gZGVzdHJveV9mdW5jdG9yX3RhZykgewotICAgICAgICAgICAgLyogQ2FzdCBmcm9tIHRoZSB2b2lkIHBvaW50ZXIgdG8gdGhlIGZ1bmN0b3Jfd3JhcHBlcl90eXBlICovCi0gICAgICAgICAgICBmdW5jdG9yX3dyYXBwZXJfdHlwZSogdmljdGltID0KLSAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZnVuY3Rvcl93cmFwcGVyX3R5cGUqPihpbl9idWZmZXIub2JqX3B0cik7Ci0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvcl90eXBlIHdyYXBwZXJfYWxsb2NhdG9yKHN0YXRpY19jYXN0PEFsbG9jYXRvciBjb25zdCAmPigqdmljdGltKSk7Ci0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvci5kZXN0cm95KHZpY3RpbSk7Ci0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvci5kZWFsbG9jYXRlKHZpY3RpbSwxKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBjaGVja19mdW5jdG9yX3R5cGVfdGFnKSB7Ci0gICAgICAgICAgICBjb25zdCBkZXRhaWw6OnNwX3R5cGVpbmZvJiBjaGVja190eXBlIAotICAgICAgICAgICAgICA9ICpvdXRfYnVmZmVyLnR5cGUudHlwZTsKLSAgICAgICAgICAgIGlmIChORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoY2hlY2tfdHlwZSwgTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpKSkKLSAgICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gaW5fYnVmZmVyLm9ial9wdHI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIC8qIG9wID09IGdldF9mdW5jdG9yX3R5cGVfdGFnICovIHsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3IgZnVuY3Rpb24gb2JqZWN0cywgd2UgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZ1bmN0aW9uCi0gICAgICAgIC8vIG9iamVjdCBjYW4gdXNlIHRoZSBzbWFsbC1vYmplY3Qgb3B0aW1pemF0aW9uIGJ1ZmZlciBvcgotICAgICAgICAvLyB3aGV0aGVyIHdlIG5lZWQgdG8gYWxsb2NhdGUgaXQgb24gdGhlIGhlYXAuCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgZnVuY3Rpb25fb2JqX3RhZykKLSAgICAgICAgewotICAgICAgICAgIG1hbmFnZXIoaW5fYnVmZmVyLCBvdXRfYnVmZmVyLCBvcCwKLSAgICAgICAgICAgICAgICAgIG1wbDo6Ym9vbF88KGZ1bmN0aW9uX2FsbG93c19zbWFsbF9vYmplY3Rfb3B0aW1pemF0aW9uPGZ1bmN0b3JfdHlwZT46OnZhbHVlKT4oKSk7Ci0gICAgICAgIH0KLQotICAgICAgcHVibGljOgotICAgICAgICAvKiBEaXNwYXRjaCB0byBhbiBhcHByb3ByaWF0ZSBtYW5hZ2VyIGJhc2VkIG9uIHdoZXRoZXIgd2UgaGF2ZSBhCi0gICAgICAgICAgIGZ1bmN0aW9uIHBvaW50ZXIgb3IgYSBmdW5jdGlvbiBvYmplY3QgcG9pbnRlci4gKi8KLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZShjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCkKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2Z1bmN0aW9uX3RhZzxmdW5jdG9yX3R5cGU+Ojp0eXBlIHRhZ190eXBlOwotICAgICAgICAgIHN3aXRjaCAob3ApIHsKLSAgICAgICAgICBjYXNlIGdldF9mdW5jdG9yX3R5cGVfdGFnOgotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLnR5cGUgPSAmTkROQk9PU1RfU1BfVFlQRUlEKGZ1bmN0b3JfdHlwZSk7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUuY29uc3RfcXVhbGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgbWFuYWdlcihpbl9idWZmZXIsIG91dF9idWZmZXIsIG9wLCB0YWdfdHlwZSgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIC8vIEEgdHlwZSB0aGF0IGlzIG9ubHkgdXNlZCBmb3IgY29tcGFyaXNvbnMgYWdhaW5zdCB6ZXJvCi0gICAgICBzdHJ1Y3QgdXNlbGVzc19jbGVhcl90eXBlIHt9OwotCi0jaWZkZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgICAvLyBUaGVzZSByb3V0aW5lcyBwZXJmb3JtIGNvbXBhcmlzb25zIGJldHdlZW4gYSBCb29zdC5GdW5jdGlvbgotICAgICAgLy8gb2JqZWN0IGFuZCBhbiBhcmJpdHJhcnkgZnVuY3Rpb24gb2JqZWN0ICh3aGVuIHRoZSBsYXN0Ci0gICAgICAvLyBwYXJhbWV0ZXIgaXMgbXBsOjpib29sXzxmYWxzZT4pIG9yIGFnYWluc3QgemVybyAod2hlbiB0aGUKLSAgICAgIC8vIGxhc3QgcGFyYW1ldGVyIGlzIG1wbDo6Ym9vbF88dHJ1ZT4pLiBUaGV5IGFyZSBvbmx5IG5lY2Vzc2FyeQotICAgICAgLy8gZm9yIGNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgU0ZJTkFFLgotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICAgIGJvb2wKLSAgICAgICAgY29tcGFyZV9lcXVhbChjb25zdCBGdW5jdGlvbiYgZiwgY29uc3QgRnVuY3RvciYsIGludCwgbXBsOjpib29sXzx0cnVlPikKLSAgICAgICAgeyByZXR1cm4gZi5lbXB0eSgpOyB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgICBib29sCi0gICAgICAgIGNvbXBhcmVfbm90X2VxdWFsKGNvbnN0IEZ1bmN0aW9uJiBmLCBjb25zdCBGdW5jdG9yJiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmJvb2xfPHRydWU+KQotICAgICAgICB7IHJldHVybiAhZi5lbXB0eSgpOyB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgICBib29sCi0gICAgICAgIGNvbXBhcmVfZXF1YWwoY29uc3QgRnVuY3Rpb24mIGYsIGNvbnN0IEZ1bmN0b3ImIGcsIGxvbmcsCi0gICAgICAgICAgICAgICAgICAgICAgbXBsOjpib29sXzxmYWxzZT4pCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSBmLnRlbXBsYXRlIHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uX2VxdWFsKCpmcCwgZyk7Ci0gICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICAgIGJvb2wKLSAgICAgICAgY29tcGFyZV9lcXVhbChjb25zdCBGdW5jdGlvbiYgZiwgY29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rvcj4mIGcsCi0gICAgICAgICAgICAgICAgICAgICAgaW50LCBtcGw6OmJvb2xfPGZhbHNlPikKLSAgICAgICAgewotICAgICAgICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICAgICAgICByZXR1cm4gZnAgPT0gZy5nZXRfcG9pbnRlcigpOwotICAgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgICBib29sCi0gICAgICAgIGNvbXBhcmVfbm90X2VxdWFsKGNvbnN0IEZ1bmN0aW9uJiBmLCBjb25zdCBGdW5jdG9yJiBnLCBsb25nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmJvb2xfPGZhbHNlPikKLSAgICAgICAgewotICAgICAgICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICAgICAgICByZXR1cm4gIWZ1bmN0aW9uX2VxdWFsKCpmcCwgZyk7Ci0gICAgICAgICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KLSAgICAgICAgYm9vbAotICAgICAgICBjb21wYXJlX25vdF9lcXVhbChjb25zdCBGdW5jdGlvbiYgZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rvcj4mIGcsIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpib29sXzxmYWxzZT4pCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSBmLnRlbXBsYXRlIHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgICAgICAgcmV0dXJuIGZwICE9IGcuZ2V0X3BvaW50ZXIoKTsKLSAgICAgICAgICBlbHNlIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU0ZJTkFFCi0KLSAgICAgIC8qKgotICAgICAgICogU3RvcmVzIHRoZSAibWFuYWdlciIgcG9ydGlvbiBvZiB0aGUgdnRhYmxlIGZvciBhCi0gICAgICAgKiBuZG5ib29zdDo6ZnVuY3Rpb24gb2JqZWN0LgotICAgICAgICovCi0gICAgICBzdHJ1Y3QgdnRhYmxlX2Jhc2UKLSAgICAgIHsKLSAgICAgICAgdm9pZCAoKm1hbmFnZXIpKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3ApOwotICAgICAgfTsKLSAgICB9IC8vIGVuZCBuYW1lc3BhY2UgZnVuY3Rpb24KLSAgfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAotCi0vKioKLSAqIFRoZSBmdW5jdGlvbl9iYXNlIGNsYXNzIGNvbnRhaW5zIHRoZSBiYXNpYyBlbGVtZW50cyBuZWVkZWQgZm9yIHRoZQotICogZnVuY3Rpb24xLCBmdW5jdGlvbjIsIGZ1bmN0aW9uMywgZXRjLiBjbGFzc2VzLiBJdCBpcyBjb21tb24gdG8gYWxsCi0gKiBmdW5jdGlvbnMgKGFuZCBhcyBzdWNoIGNhbiBiZSB1c2VkIHRvIHRlbGwgaWYgd2UgaGF2ZSBvbmUgb2YgdGhlCi0gKiBmdW5jdGlvbk4gb2JqZWN0cykuCi0gKi8KLWNsYXNzIGZ1bmN0aW9uX2Jhc2UKLXsKLXB1YmxpYzoKLSAgZnVuY3Rpb25fYmFzZSgpIDogdnRhYmxlKDApIHsgfQotCi0gIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGZ1bmN0aW9uIGlzIGVtcHR5IChpLmUuLCBoYXMgbm8gdGFyZ2V0KS4gKi8KLSAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuICF2dGFibGU7IH0KLQotICAvKiogUmV0cmlldmUgdGhlIHR5cGUgb2YgdGhlIHN0b3JlZCBmdW5jdGlvbiBvYmplY3QsIG9yIE5ETkJPT1NUX1NQX1RZUEVJRCh2b2lkKQotICAgICAgaWYgdGhpcyBpcyBlbXB0eS4gKi8KLSAgY29uc3QgZGV0YWlsOjpzcF90eXBlaW5mbyYgdGFyZ2V0X3R5cGUoKSBjb25zdAotICB7Ci0gICAgaWYgKCF2dGFibGUpIHJldHVybiBORE5CT09TVF9TUF9UWVBFSUQodm9pZCk7Ci0KLSAgICBkZXRhaWw6OmZ1bmN0aW9uOjpmdW5jdGlvbl9idWZmZXIgdHlwZTsKLSAgICBnZXRfdnRhYmxlKCktPm1hbmFnZXIoZnVuY3RvciwgdHlwZSwgZGV0YWlsOjpmdW5jdGlvbjo6Z2V0X2Z1bmN0b3JfdHlwZV90YWcpOwotICAgIHJldHVybiAqdHlwZS50eXBlLnR5cGU7Ci0gIH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIEZ1bmN0b3IqIHRhcmdldCgpCi0gICAgewotICAgICAgaWYgKCF2dGFibGUpIHJldHVybiAwOwotCi0gICAgICBkZXRhaWw6OmZ1bmN0aW9uOjpmdW5jdGlvbl9idWZmZXIgdHlwZV9yZXN1bHQ7Ci0gICAgICB0eXBlX3Jlc3VsdC50eXBlLnR5cGUgPSAmTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpOwotICAgICAgdHlwZV9yZXN1bHQudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBpc19jb25zdDxGdW5jdG9yPjo6dmFsdWU7Ci0gICAgICB0eXBlX3Jlc3VsdC50eXBlLnZvbGF0aWxlX3F1YWxpZmllZCA9IGlzX3ZvbGF0aWxlPEZ1bmN0b3I+Ojp2YWx1ZTsKLSAgICAgIGdldF92dGFibGUoKS0+bWFuYWdlcihmdW5jdG9yLCB0eXBlX3Jlc3VsdCwgCi0gICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjpmdW5jdGlvbjo6Y2hlY2tfZnVuY3Rvcl90eXBlX3RhZyk7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rvcio+KHR5cGVfcmVzdWx0Lm9ial9wdHIpOwotICAgIH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgY29uc3QgRnVuY3RvciogdGFyZ2V0KCBGdW5jdG9yICogPSAwICkgY29uc3QKLSNlbHNlCi0gICAgY29uc3QgRnVuY3RvciogdGFyZ2V0KCkgY29uc3QKLSNlbmRpZgotICAgIHsKLSAgICAgIGlmICghdnRhYmxlKSByZXR1cm4gMDsKLQotICAgICAgZGV0YWlsOjpmdW5jdGlvbjo6ZnVuY3Rpb25fYnVmZmVyIHR5cGVfcmVzdWx0OwotICAgICAgdHlwZV9yZXN1bHQudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKTsKLSAgICAgIHR5cGVfcmVzdWx0LnR5cGUuY29uc3RfcXVhbGlmaWVkID0gdHJ1ZTsKLSAgICAgIHR5cGVfcmVzdWx0LnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gaXNfdm9sYXRpbGU8RnVuY3Rvcj46OnZhbHVlOwotICAgICAgZ2V0X3Z0YWJsZSgpLT5tYW5hZ2VyKGZ1bmN0b3IsIHR5cGVfcmVzdWx0LCAKLSAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmZ1bmN0aW9uOjpjaGVja19mdW5jdG9yX3R5cGVfdGFnKTsKLSAgICAgIC8vIEdDQyAyLjk1LjMgZ2V0cyB0aGUgQ1YgcXVhbGlmaWVycyB3cm9uZyBoZXJlLCBzbyB3ZQotICAgICAgLy8gY2FuJ3QgZG8gdGhlIHN0YXRpY19jYXN0IHRoYXQgd2Ugc2hvdWxkIGRvLgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEZ1bmN0b3IqPih0eXBlX3Jlc3VsdC5vYmpfcHRyKTsKLSAgICB9Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgRj4KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IEYmIGYpIGNvbnN0Ci0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICBpZiAoY29uc3QgRiogZnAgPSB0aGlzLT50YXJnZXQoIChGKikwICkpCi0jZWxzZQotICAgICAgaWYgKGNvbnN0IEYqIGZwID0gdGhpcy0+dGVtcGxhdGUgdGFyZ2V0PEY+KCkpCi0jZW5kaWYKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uX2VxdWFsKCpmcCwgZik7Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA8PSAzCi0gIC8vIEdDQyAzLjMgYW5kIG5ld2VyIGNhbm5vdCBjb3B5IHdpdGggdGhlIGdsb2JhbCBvcGVyYXRvcj09LCBkdWUgdG8KLSAgLy8gcHJvYmxlbXMgd2l0aCBpbnN0YW50aWF0aW9uIG9mIGZ1bmN0aW9uIHJldHVybiB0eXBlcyBiZWZvcmUgaXQKLSAgLy8gaGFzIGJlZW4gdmVyaWZpZWQgdGhhdCB0aGUgYXJndW1lbnQgdHlwZXMgbWF0Y2ggdXAuCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICAgIG9wZXJhdG9yPT0oRnVuY3RvciBnKSBjb25zdAotICAgIHsKLSAgICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgICByZXR1cm4gZnVuY3Rpb25fZXF1YWwoKmZwLCBnKTsKLSAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0VOQUJMRV9JRl9OT1RfSU5URUdSQUwoRnVuY3RvciwgYm9vbCkKLSAgICBvcGVyYXRvciE9KEZ1bmN0b3IgZykgY29uc3QKLSAgICB7Ci0gICAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgICAgcmV0dXJuICFmdW5jdGlvbl9lcXVhbCgqZnAsIGcpOwotICAgICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQotcHVibGljOiAvLyBzaG91bGQgYmUgcHJvdGVjdGVkLCBidXQgR0NDIDIuOTUuMyB3aWxsIGZhaWwgdG8gYWxsb3cgYWNjZXNzCi0gIGRldGFpbDo6ZnVuY3Rpb246OnZ0YWJsZV9iYXNlKiBnZXRfdnRhYmxlKCkgY29uc3QgewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGRldGFpbDo6ZnVuY3Rpb246OnZ0YWJsZV9iYXNlKj4oCi0gICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxzdGQ6OnNpemVfdD4odnRhYmxlKSAmIH5zdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oMHgwMSkpOwotICB9Ci0KLSAgYm9vbCBoYXNfdHJpdmlhbF9jb3B5X2FuZF9kZXN0cm95KCkgY29uc3QgewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHN0ZDo6c2l6ZV90Pih2dGFibGUpICYgMHgwMTsKLSAgfQotCi0gIGRldGFpbDo6ZnVuY3Rpb246OnZ0YWJsZV9iYXNlKiB2dGFibGU7Ci0gIG11dGFibGUgZGV0YWlsOjpmdW5jdGlvbjo6ZnVuY3Rpb25fYnVmZmVyIGZ1bmN0b3I7Ci19OwotCi0vKioKLSAqIFRoZSBiYWRfZnVuY3Rpb25fY2FsbCBleGNlcHRpb24gY2xhc3MgaXMgdGhyb3duIHdoZW4gYSBuZG5ib29zdDo6ZnVuY3Rpb24KLSAqIG9iamVjdCBpcyBpbnZva2VkCi0gKi8KLWNsYXNzIGJhZF9mdW5jdGlvbl9jYWxsIDogcHVibGljIHN0ZDo6cnVudGltZV9lcnJvcgotewotcHVibGljOgotICBiYWRfZnVuY3Rpb25fY2FsbCgpIDogc3RkOjpydW50aW1lX2Vycm9yKCJjYWxsIHRvIGVtcHR5IG5kbmJvb3N0OjpmdW5jdGlvbiIpIHt9Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBmdW5jdGlvbl9iYXNlJiBmLAotICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmZ1bmN0aW9uOjp1c2VsZXNzX2NsZWFyX3R5cGUqKQotewotICByZXR1cm4gZi5lbXB0eSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYsCi0gICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6ZnVuY3Rpb246OnVzZWxlc3NfY2xlYXJfdHlwZSopCi17Ci0gIHJldHVybiAhZi5lbXB0eSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGRldGFpbDo6ZnVuY3Rpb246OnVzZWxlc3NfY2xlYXJfdHlwZSosCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYpCi17Ci0gIHJldHVybiBmLmVtcHR5KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oZGV0YWlsOjpmdW5jdGlvbjo6dXNlbGVzc19jbGVhcl90eXBlKiwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLXsKLSAgcmV0dXJuICFmLmVtcHR5KCk7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotLy8gQ29tcGFyaXNvbnMgYmV0d2VlbiBuZG5ib29zdDo6ZnVuY3Rpb24gb2JqZWN0cyBhbmQgYXJiaXRyYXJ5IGZ1bmN0aW9uIG9iamVjdHMKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgZnVuY3Rpb25fYmFzZSYgZiwgRnVuY3RvciBnKQotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPChpc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPiBpbnRlZ3JhbDsKLSAgICByZXR1cm4gZGV0YWlsOjpmdW5jdGlvbjo6Y29tcGFyZV9lcXVhbChmLCBnLCAwLCBpbnRlZ3JhbCgpKTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEZ1bmN0b3IgZywgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLSAgewotICAgIHR5cGVkZWYgbXBsOjpib29sXzwoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT4gaW50ZWdyYWw7Ci0gICAgcmV0dXJuIGRldGFpbDo6ZnVuY3Rpb246OmNvbXBhcmVfZXF1YWwoZiwgZywgMCwgaW50ZWdyYWwoKSk7Ci0gIH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBmdW5jdGlvbl9iYXNlJiBmLCBGdW5jdG9yIGcpCi0gIHsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88KGlzX2ludGVncmFsPEZ1bmN0b3I+Ojp2YWx1ZSk+IGludGVncmFsOwotICAgIHJldHVybiBkZXRhaWw6OmZ1bmN0aW9uOjpjb21wYXJlX25vdF9lcXVhbChmLCBnLCAwLCBpbnRlZ3JhbCgpKTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEZ1bmN0b3IgZywgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLSAgewotICAgIHR5cGVkZWYgbXBsOjpib29sXzwoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT4gaW50ZWdyYWw7Ci0gICAgcmV0dXJuIGRldGFpbDo6ZnVuY3Rpb246OmNvbXBhcmVfbm90X2VxdWFsKGYsIGcsIDAsIGludGVncmFsKCkpOwotICB9Ci0jZWxzZQotCi0jICBpZiAhKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDMgJiYgX19HTlVDX01JTk9SX18gPD0gMykKLS8vIENvbXBhcmlzb25zIGJldHdlZW4gbmRuYm9vc3Q6OmZ1bmN0aW9uIG9iamVjdHMgYW5kIGFyYml0cmFyeSBmdW5jdGlvbgotLy8gb2JqZWN0cy4gR0NDIDMuMyBhbmQgYmVmb3JlIGhhcyBhbiBvYm5veGlvdXMgYnVnIHRoYXQgcHJldmVudHMgdGhpcwotLy8gZnJvbSB3b3JraW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICBvcGVyYXRvcj09KGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYsIEZ1bmN0b3IgZykKLSAgewotICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICByZXR1cm4gZnVuY3Rpb25fZXF1YWwoKmZwLCBnKTsKLSAgICBlbHNlIHJldHVybiBmYWxzZTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsIGJvb2wpCi0gIG9wZXJhdG9yPT0oRnVuY3RvciBnLCBjb25zdCBmdW5jdGlvbl9iYXNlJiBmKQotICB7Ci0gICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gZi50ZW1wbGF0ZSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgIHJldHVybiBmdW5jdGlvbl9lcXVhbChnLCAqZnApOwotICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIE5ETkJPT1NUX0ZVTkNUSU9OX0VOQUJMRV9JRl9OT1RfSU5URUdSQUwoRnVuY3RvciwgYm9vbCkKLSAgb3BlcmF0b3IhPShjb25zdCBmdW5jdGlvbl9iYXNlJiBmLCBGdW5jdG9yIGcpCi0gIHsKLSAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSBmLnRlbXBsYXRlIHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgcmV0dXJuICFmdW5jdGlvbl9lcXVhbCgqZnAsIGcpOwotICAgIGVsc2UgcmV0dXJuIHRydWU7Ci0gIH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICBvcGVyYXRvciE9KEZ1bmN0b3IgZywgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLSAgewotICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICByZXR1cm4gIWZ1bmN0aW9uX2VxdWFsKGcsICpmcCk7Ci0gICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgfQotIyAgZW5kaWYKLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICBvcGVyYXRvcj09KGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYsIHJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0b3I+IGcpCi0gIHsKLSAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSBmLnRlbXBsYXRlIHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgcmV0dXJuIGZwID09IGcuZ2V0X3BvaW50ZXIoKTsKLSAgICBlbHNlIHJldHVybiBmYWxzZTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsIGJvb2wpCi0gIG9wZXJhdG9yPT0ocmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rvcj4gZywgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLSAgewotICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICByZXR1cm4gZy5nZXRfcG9pbnRlcigpID09IGZwOwotICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIE5ETkJPT1NUX0ZVTkNUSU9OX0VOQUJMRV9JRl9OT1RfSU5URUdSQUwoRnVuY3RvciwgYm9vbCkKLSAgb3BlcmF0b3IhPShjb25zdCBmdW5jdGlvbl9iYXNlJiBmLCByZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdG9yPiBnKQotICB7Ci0gICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gZi50ZW1wbGF0ZSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgIHJldHVybiBmcCAhPSBnLmdldF9wb2ludGVyKCk7Ci0gICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsIGJvb2wpCi0gIG9wZXJhdG9yIT0ocmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rvcj4gZywgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLSAgewotICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICByZXR1cm4gZy5nZXRfcG9pbnRlcigpICE9IGZwOwotICAgIGVsc2UgcmV0dXJuIHRydWU7Ci0gIH0KLQotI2VuZGlmIC8vIENvbXBpbGVyIHN1cHBvcnRpbmcgU0ZJTkFFCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotICBuYW1lc3BhY2UgZnVuY3Rpb24gewotICAgIGlubGluZSBib29sIGhhc19lbXB0eV90YXJnZXQoY29uc3QgZnVuY3Rpb25fYmFzZSogZikKLSAgICB7Ci0gICAgICByZXR1cm4gZi0+ZW1wdHkoKTsKLSAgICB9Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMTApCi0gICAgaW5saW5lIGJvb2wgaGFzX2VtcHR5X3RhcmdldChjb25zdCB2b2lkKikKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotI2Vsc2UKLSAgICBpbmxpbmUgYm9vbCBoYXNfZW1wdHlfdGFyZ2V0KC4uLikKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotI2VuZGlmCi0gIH0gLy8gZW5kIG5hbWVzcGFjZSBmdW5jdGlvbgotfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAotfSAvLyBlbmQgbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fQ09NUEFSRV9UWVBFX0lECi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcoIHBvcCApCi0jZW5kaWYgICAgICAgCi0KLSNlbmRpZiAvLyBORE5CT09TVF9GVU5DVElPTl9CQVNFX0hFQURFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWJjMzNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLS8vICBDb3B5cmlnaHQgKEMpIERvdWdsYXMgR3JlZ29yIDIwMDgKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0jaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0ZXRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fRldEX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9fc2dpKSAmJiBkZWZpbmVkKF9DT01QSUxFUl9WRVJTSU9OKSAmJiBfQ09NUElMRVJfVkVSU0lPTiA8PSA3MzAgJiYgIWRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykKLS8vIFdvcmsgYXJvdW5kIGEgY29tcGlsZXIgYnVnLgotLy8gbmRuYm9vc3Q6OnB5dGhvbjo6b2JqZWN0czo6ZnVuY3Rpb24gaGFzIHRvIGJlIHNlZW4gYnkgdGhlIGNvbXBpbGVyIGJlZm9yZSB0aGUKLS8vIG5kbmJvb3N0OjpmdW5jdGlvbiBjbGFzcyB0ZW1wbGF0ZS4KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBweXRob24geyBuYW1lc3BhY2Ugb2JqZWN0cyB7Ci0gIGNsYXNzIGZ1bmN0aW9uOwotfX19Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQgKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICAgICAgICAgICAgICAgICAgICBcCi0gfHwgZGVmaW5lZChORE5CT09TVF9CQ0JfUEFSVElBTF9TUEVDSUFMSVpBVElPTl9CVUcpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSB8fCAhKGRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykgfHwgIWRlZmluZWQoX19TVU5QUk9fQ0MpIHx8IF9fU1VOUFJPX0NDID4gMHg1NDApCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTk9fRlVOQ1RJT05fVFlQRV9TWU5UQVgKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICBjbGFzcyBiYWRfZnVuY3Rpb25fY2FsbDsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OX05PX0ZVTkNUSU9OX1RZUEVfU1lOVEFYKQotICAvLyBQcmVmZXJyZWQgc3ludGF4Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFNpZ25hdHVyZT4gY2xhc3MgZnVuY3Rpb247Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgU2lnbmF0dXJlPgotICBpbmxpbmUgdm9pZCBzd2FwKGZ1bmN0aW9uPFNpZ25hdHVyZT4mIGYxLCBmdW5jdGlvbjxTaWduYXR1cmU+JiBmMikKLSAgewotICAgIGYxLnN3YXAoZjIpOwotICB9Ci0jZW5kaWYgLy8gaGF2ZSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uCi0KLSAgLy8gUG9ydGFibGUgc3ludGF4Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFI+IGNsYXNzIGZ1bmN0aW9uMDsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDE+IGNsYXNzIGZ1bmN0aW9uMTsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBjbGFzcyBmdW5jdGlvbjI7Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+IGNsYXNzIGZ1bmN0aW9uMzsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+IAotICAgIGNsYXNzIGZ1bmN0aW9uNDsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICAgIHR5cGVuYW1lIFQ1PiAKLSAgICBjbGFzcyBmdW5jdGlvbjU7Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDY+IAotICAgIGNsYXNzIGZ1bmN0aW9uNjsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+IAotICAgIGNsYXNzIGZ1bmN0aW9uNzsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PiAKLSAgICBjbGFzcyBmdW5jdGlvbjg7Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+IAotICAgIGNsYXNzIGZ1bmN0aW9uOTsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwKLSAgICAgICAgICAgdHlwZW5hbWUgVDEwPiAKLSAgICBjbGFzcyBmdW5jdGlvbjEwOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNjQyZTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTg1ICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAxLTIwMDYKLS8vICBDb3B5cmlnaHQgRW1pbCBEb3RjaGV2c2tpIDIwMDcKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotLy8gTm90ZTogdGhpcyBoZWFkZXIgaXMgYSBoZWFkZXIgdGVtcGxhdGUgYW5kIG11c3QgTk9UIGhhdmUgbXVsdGlwbGUtaW5jbHVzaW9uCi0vLyBwcm90ZWN0aW9uLgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9wcm9sb2d1ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL25vX2V4Y2VwdGlvbnNfc3VwcG9ydC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcoIHB1c2ggKQotIyAgIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDEyNyApIC8vICJjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50IgotI2VuZGlmICAgICAgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTLCB0eXBlbmFtZSBUKQotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MsIFQpCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fUEFSTShKLEksRCkgTkROQk9PU1RfUFBfQ0FUKFQsSSkgTkROQk9PU1RfUFBfQ0FUKGEsSSkKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9QQVJNUyBORE5CT09TVF9QUF9FTlVNKE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTLE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk0sTkROQk9PU1RfUFBfRU1QVFkpCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fQVJHUyBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUywgYSkKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9BUkdfVFlQRShKLEksRCkgXAotICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChULEkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoYXJnLCBORE5CT09TVF9QUF9JTkMoSSkpLF90eXBlKTsKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9BUkdfVFlQRVMgTkROQk9PU1RfUFBfUkVQRUFUKE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTLE5ETkJPT1NUX0ZVTkNUSU9OX0FSR19UWVBFLE5ETkJPT1NUX1BQX0VNUFRZKQotCi0vLyBDb21tYSBpZiBub256ZXJvIG51bWJlciBvZiBhcmd1bWVudHMKLSNpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAwCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgLAotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID4gMAotCi0vLyBDbGFzcyBuYW1lcyB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgY29kZQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiBORE5CT09TVF9KT0lOKGZ1bmN0aW9uLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTihmdW5jdGlvbl9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKHZvaWRfZnVuY3Rpb25faW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fT0JKX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKGZ1bmN0aW9uX29ial9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX09CSl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTih2b2lkX2Z1bmN0aW9uX29ial9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTl9SRUZfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZnVuY3Rpb25fcmVmX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fUkVGX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKHZvaWRfZnVuY3Rpb25fcmVmX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX01FTUJFUl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTihmdW5jdGlvbl9tZW1faW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9NRU1CRVJfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZnVuY3Rpb25fdm9pZF9tZW1faW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKGdldF9mdW5jdGlvbl9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fT0JKX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKGdldF9mdW5jdGlvbl9vYmpfaW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX1JFRl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTihnZXRfZnVuY3Rpb25fcmVmX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9NRU1CRVJfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZ2V0X21lbWJlcl9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9HRVRfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZ2V0X2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1ZUQUJMRSBORE5CT09TVF9KT0lOKGJhc2ljX3Z0YWJsZSxORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLQotI2lmbmRlZiBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFIHZvaWQKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9SRVRVUk4oWCkgWAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFIG5kbmJvb3N0OjpkZXRhaWw6OmZ1bmN0aW9uOjp1bnVzYWJsZQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1JFVFVSTihYKSBYOyByZXR1cm4gTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9SRVRVUk5fVFlQRSAoKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gIG5hbWVzcGFjZSBkZXRhaWwgewotICAgIG5hbWVzcGFjZSBmdW5jdGlvbiB7Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgRnVuY3Rpb25QdHIsCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgc3RhdGljIFIgaW52b2tlKGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3Rpb25fcHRyIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9QQVJNUykKLSAgICAgICAgewotICAgICAgICAgIEZ1bmN0aW9uUHRyIGYgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uUHRyPihmdW5jdGlvbl9wdHIuZnVuY19wdHIpOwotICAgICAgICAgIHJldHVybiBmKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgRnVuY3Rpb25QdHIsCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fSU5WT0tFUgotICAgICAgewotICAgICAgICBzdGF0aWMgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9SRVRVUk5fVFlQRQotICAgICAgICBpbnZva2UoZnVuY3Rpb25fYnVmZmVyJiBmdW5jdGlvbl9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotCi0gICAgICAgIHsKLSAgICAgICAgICBGdW5jdGlvblB0ciBmID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblB0cj4oZnVuY3Rpb25fcHRyLmZ1bmNfcHRyKTsKLSAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9SRVRVUk4oZihORE5CT09TVF9GVU5DVElPTl9BUkdTKSk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5jdGlvbk9iaiwKLSAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX09CSl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBSIGludm9rZShmdW5jdGlvbl9idWZmZXImIGZ1bmN0aW9uX29ial9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotCi0gICAgICAgIHsKLSAgICAgICAgICBGdW5jdGlvbk9iaiogZjsKLSAgICAgICAgICBpZiAoZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248RnVuY3Rpb25PYmo+Ojp2YWx1ZSkKLSAgICAgICAgICAgIGYgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uT2JqKj4oJmZ1bmN0aW9uX29ial9wdHIuZGF0YSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25PYmoqPihmdW5jdGlvbl9vYmpfcHRyLm9ial9wdHIpOwotICAgICAgICAgIHJldHVybiAoKmYpKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgRnVuY3Rpb25PYmosCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgID4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX09CSl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFCi0gICAgICAgIGludm9rZShmdW5jdGlvbl9idWZmZXImIGZ1bmN0aW9uX29ial9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotCi0gICAgICAgIHsKLSAgICAgICAgICBGdW5jdGlvbk9iaiogZjsKLSAgICAgICAgICBpZiAoZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248RnVuY3Rpb25PYmo+Ojp2YWx1ZSkKLSAgICAgICAgICAgIGYgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uT2JqKj4oJmZ1bmN0aW9uX29ial9wdHIuZGF0YSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25PYmoqPihmdW5jdGlvbl9vYmpfcHRyLm9ial9wdHIpOwotICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1JFVFVSTigoKmYpKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpKTsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uT2JqLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fUkVGX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgc3RhdGljIFIgaW52b2tlKGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3Rpb25fb2JqX3B0ciBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fUEFSTVMpCi0KLSAgICAgICAgewotICAgICAgICAgIEZ1bmN0aW9uT2JqKiBmID0gCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uT2JqKj4oZnVuY3Rpb25fb2JqX3B0ci5vYmpfcHRyKTsKLSAgICAgICAgICByZXR1cm4gKCpmKShORE5CT09TVF9GVU5DVElPTl9BUkdTKTsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uT2JqLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9GVU5DVElPTl9SRUZfSU5WT0tFUgotICAgICAgewotICAgICAgICBzdGF0aWMgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9SRVRVUk5fVFlQRQotICAgICAgICBpbnZva2UoZnVuY3Rpb25fYnVmZmVyJiBmdW5jdGlvbl9vYmpfcHRyIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9QQVJNUykKLQotICAgICAgICB7Ci0gICAgICAgICAgRnVuY3Rpb25PYmoqIGYgPSAKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25PYmoqPihmdW5jdGlvbl9vYmpfcHRyLm9ial9wdHIpOwotICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1JFVFVSTigoKmYpKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpKTsKLSAgICAgICAgfQotICAgICAgfTsKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID4gMAotICAgICAgLyogSGFuZGxlIGludm9jYXRpb24gb2YgbWVtYmVyIHBvaW50ZXJzLiAqLwotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIE1lbWJlclB0ciwKLSAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX01FTUJFUl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBSIGludm9rZShmdW5jdGlvbl9idWZmZXImIGZ1bmN0aW9uX29ial9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotCi0gICAgICAgIHsKLSAgICAgICAgICBNZW1iZXJQdHIqIGYgPSAKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TWVtYmVyUHRyKj4oJmZ1bmN0aW9uX29ial9wdHIuZGF0YSk7Ci0gICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjptZW1fZm4oKmYpKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgTWVtYmVyUHRyLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9NRU1CRVJfSU5WT0tFUgotICAgICAgewotICAgICAgICBzdGF0aWMgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9SRVRVUk5fVFlQRQotICAgICAgICBpbnZva2UoZnVuY3Rpb25fYnVmZmVyJiBmdW5jdGlvbl9vYmpfcHRyIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9QQVJNUykKLQotICAgICAgICB7Ci0gICAgICAgICAgTWVtYmVyUHRyKiBmID0gCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PE1lbWJlclB0cio+KCZmdW5jdGlvbl9vYmpfcHRyLmRhdGEpOwotICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1JFVFVSTihuZG5ib29zdDo6bWVtX2ZuKCpmKShORE5CT09TVF9GVU5DVElPTl9BUkdTKSk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0jZW5kaWYKLQotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uUHRyLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8KGlzX3ZvaWQ8Uj46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25QdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvblB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5jdGlvbk9iaiwKLSAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICAgICAgID4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fT0JKX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8KGlzX3ZvaWQ8Uj46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX09CSl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uT2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX09CSl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uT2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uT2JqLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9SRUZfSU5WT0tFUgotICAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfdm9pZDxSPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fUkVGX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25PYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fUkVGX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25PYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgICB9OwotCi0jaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPiAwCi0gICAgICAvKiBSZXRyaWV2ZSB0aGUgYXBwcm9wcmlhdGUgaW52b2tlciBmb3IgYSBtZW1iZXIgcG9pbnRlci4gICovCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgTWVtYmVyUHRyLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9NRU1CRVJfSU5WT0tFUgotICAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfdm9pZDxSPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfTUVNQkVSX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtYmVyUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX01FTUJFUl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlclB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICAgIH07Ci0jZW5kaWYKLQotICAgICAgLyogR2l2ZW4gdGhlIHRhZyByZXR1cm5lZCBieSBnZXRfZnVuY3Rpb25fdGFnLCByZXRyaWV2ZSB0aGUKLSAgICAgICAgIGFjdHVhbCBpbnZva2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZ2l2ZW4gZnVuY3Rpb24KLSAgICAgICAgIG9iamVjdC4gCi0KLSAgICAgICAgIEVhY2ggc3BlY2lhbGl6YXRpb24gY29udGFpbnMgYW4gImFwcGx5IiBuZXN0ZWQgY2xhc3MgdGVtcGxhdGUKLSAgICAgICAgIHRoYXQgYWNjZXB0cyB0aGUgZnVuY3Rpb24gb2JqZWN0LCByZXR1cm4gdHlwZSwgZnVuY3Rpb24KLSAgICAgICAgIGFyZ3VtZW50IHR5cGVzLCBhbmQgYWxsb2NhdG9yLiBUaGUgcmVzdWx0aW5nICJhcHBseSIgY2xhc3MKLSAgICAgICAgIGNvbnRhaW5zIHR3byB0eXBlZGVmcywgImludm9rZXJfdHlwZSIgYW5kICJtYW5hZ2VyX3R5cGUiLAotICAgICAgICAgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgaW52b2tlciBhbmQgbWFuYWdlciB0eXBlcy4gKi8KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhZz4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9HRVRfSU5WT0tFUiB7IH07Ci0KLSAgICAgIC8qIFJldHJpZXZlIHRoZSBpbnZva2VyIGZvciBhIGZ1bmN0aW9uIHBvaW50ZXIuICovCi0gICAgICB0ZW1wbGF0ZTw+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0lOVk9LRVI8ZnVuY3Rpb25fcHRyX3RhZz4KLSAgICAgIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25QdHIsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVM+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25QdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX21hbmFnZXI8RnVuY3Rpb25QdHI+IG1hbmFnZXJfdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblB0ciwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUywKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBzdHJ1Y3QgYXBwbHlfYQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25QdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX21hbmFnZXI8RnVuY3Rpb25QdHI+IG1hbmFnZXJfdHlwZTsKLSAgICAgICAgfTsKLSAgICAgIH07Ci0KLSNpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA+IDAKLSAgICAgIC8qIFJldHJpZXZlIHRoZSBpbnZva2VyIGZvciBhIG1lbWJlciBwb2ludGVyLiAqLwotICAgICAgdGVtcGxhdGU8PgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9JTlZPS0VSPG1lbWJlcl9wdHJfdGFnPgotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZW1iZXJQdHIsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVM+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfTUVNQkVSX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlclB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICBpbnZva2VyX3R5cGU7Ci0KLSAgICAgICAgICB0eXBlZGVmIGZ1bmN0b3JfbWFuYWdlcjxNZW1iZXJQdHI+IG1hbmFnZXJfdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZW1iZXJQdHIsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICAgICAgc3RydWN0IGFwcGx5X2EKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX01FTUJFUl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1iZXJQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX21hbmFnZXI8TWVtYmVyUHRyPiBtYW5hZ2VyX3R5cGU7Ci0gICAgICAgIH07Ci0gICAgICB9OwotI2VuZGlmCi0KLSAgICAgIC8qIFJldHJpZXZlIHRoZSBpbnZva2VyIGZvciBhIGZ1bmN0aW9uIG9iamVjdC4gKi8KLSAgICAgIHRlbXBsYXRlPD4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9HRVRfSU5WT0tFUjxmdW5jdGlvbl9vYmpfdGFnPgotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaiwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUz4KLSAgICAgICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9PQkpfSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25PYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX21hbmFnZXI8RnVuY3Rpb25PYmo+IG1hbmFnZXJfdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaiwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUywKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBzdHJ1Y3QgYXBwbHlfYQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fT0JKX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uT2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgIGludm9rZXJfdHlwZTsKLQotICAgICAgICAgIHR5cGVkZWYgZnVuY3Rvcl9tYW5hZ2VyX2E8RnVuY3Rpb25PYmosIEFsbG9jYXRvcj4gbWFuYWdlcl90eXBlOwotICAgICAgICB9OwotICAgICAgfTsKLQotICAgICAgLyogUmV0cmlldmUgdGhlIGludm9rZXIgZm9yIGEgcmVmZXJlbmNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0LiAqLwotICAgICAgdGVtcGxhdGU8PgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9JTlZPS0VSPGZ1bmN0aW9uX29ial9yZWZfdGFnPgotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWZXcmFwcGVyLAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TPgotICAgICAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX1JFRl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSZWZXcmFwcGVyOjp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgIGludm9rZXJfdHlwZTsKLQotICAgICAgICAgIHR5cGVkZWYgcmVmZXJlbmNlX21hbmFnZXI8dHlwZW5hbWUgUmVmV3JhcHBlcjo6dHlwZT4gbWFuYWdlcl90eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZldyYXBwZXIsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICAgICAgc3RydWN0IGFwcGx5X2EKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX1JFRl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSZWZXcmFwcGVyOjp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgIGludm9rZXJfdHlwZTsKLQotICAgICAgICAgIHR5cGVkZWYgcmVmZXJlbmNlX21hbmFnZXI8dHlwZW5hbWUgUmVmV3JhcHBlcjo6dHlwZT4gbWFuYWdlcl90eXBlOwotICAgICAgICB9OwotICAgICAgfTsKLQotCi0gICAgICAvKioKLSAgICAgICAqIHZ0YWJsZSBmb3IgYSBzcGVjaWZpYyBuZG5ib29zdDo6ZnVuY3Rpb24gaW5zdGFuY2UuIFRoaXMKLSAgICAgICAqIHN0cnVjdHVyZSBtdXN0IGJlIGFuIGFnZ3JlZ2F0ZSBzbyB0aGF0IHdlIGNhbiB1c2Ugc3RhdGljCi0gICAgICAgKiBpbml0aWFsaXphdGlvbiBpbiBuZG5ib29zdDo6ZnVuY3Rpb24ncyBhc3NpZ25fdG8gYW5kIGFzc2lnbl90b19hCi0gICAgICAgKiBtZW1iZXJzLiBJdCB0aGVyZWZvcmUgY2Fubm90IGhhdmUgYW55IGNvbnN0cnVjdG9ycywKLSAgICAgICAqIGRlc3RydWN0b3JzLCBiYXNlIGNsYXNzZXMsIGV0Yy4KLSAgICAgICAqLwotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUz4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9WVEFCTEUKLSAgICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0gICAgICAgIHR5cGVkZWYgUiAgICAgICAgIHJlc3VsdF90eXBlOwotI2Vsc2UKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmdW5jdGlvbl9yZXR1cm5fdHlwZTxSPjo6dHlwZSByZXN1bHRfdHlwZTsKLSNlbmRpZiAvLyBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLQotICAgICAgICB0eXBlZGVmIHJlc3VsdF90eXBlICgqaW52b2tlcl90eXBlKShmdW5jdGlvbl9idWZmZXImCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgICAgIGJvb2wgYXNzaWduX3RvKEYgZiwgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfZnVuY3Rpb25fdGFnPEY+Ojp0eXBlIHRhZzsKLSAgICAgICAgICByZXR1cm4gYXNzaWduX3RvKGYsIGZ1bmN0b3IsIHRhZygpKTsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGLHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICAgICAgYm9vbCBhc3NpZ25fdG9fYShGIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgQWxsb2NhdG9yIGEpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9mdW5jdGlvbl90YWc8Rj46OnR5cGUgdGFnOwotICAgICAgICAgIHJldHVybiBhc3NpZ25fdG9fYShmLCBmdW5jdG9yLCBhLCB0YWcoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNsZWFyKGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIGlmIChiYXNlLm1hbmFnZXIpCi0gICAgICAgICAgICBiYXNlLm1hbmFnZXIoZnVuY3RvciwgZnVuY3RvciwgZGVzdHJveV9mdW5jdG9yX3RhZyk7Ci0gICAgICAgIH0KLQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgLy8gRnVuY3Rpb24gcG9pbnRlcnMKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25QdHI+Ci0gICAgICAgIGJvb2wgCi0gICAgICAgIGFzc2lnbl90byhGdW5jdGlvblB0ciBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIGZ1bmN0aW9uX3B0cl90YWcpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICB0aGlzLT5jbGVhcihmdW5jdG9yKTsKLSAgICAgICAgICBpZiAoZikgewotICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGEgcmVpbnRlcnByZXQgY2FzdCwgYnV0IHNvbWUgY29tcGlsZXJzIGluc2lzdAotICAgICAgICAgICAgLy8gb24gZ2l2aW5nIGN2LXF1YWxpZmllcnMgdG8gZnJlZSBmdW5jdGlvbnMKLSAgICAgICAgICAgIGZ1bmN0b3IuZnVuY19wdHIgPSByZWludGVycHJldF9jYXN0PHZvaWQgKCopKCk+KGYpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25QdHIsdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBib29sIAotICAgICAgICBhc3NpZ25fdG9fYShGdW5jdGlvblB0ciBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIEFsbG9jYXRvciwgZnVuY3Rpb25fcHRyX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBhc3NpZ25fdG8oZixmdW5jdG9yLGZ1bmN0aW9uX3B0cl90YWcoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNZW1iZXIgcG9pbnRlcnMKLSNpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA+IDAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVtYmVyUHRyPgotICAgICAgICBib29sIGFzc2lnbl90byhNZW1iZXJQdHIgZiwgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yLCBtZW1iZXJfcHRyX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIC8vIERQRyBUQkQ6IEFkZCBleHBsaWNpdCBzdXBwb3J0IGZvciBtZW1iZXIgZnVuY3Rpb24KLSAgICAgICAgICAvLyBvYmplY3RzLCBzbyB3ZSBpbnZva2UgdGhyb3VnaCBtZW1fZm4oKSBidXQgd2UgcmV0YWluIHRoZQotICAgICAgICAgIC8vIHJpZ2h0IHRhcmdldF90eXBlKCkgdmFsdWVzLgotICAgICAgICAgIGlmIChmKSB7Ci0gICAgICAgICAgICB0aGlzLT5hc3NpZ25fdG8obmRuYm9vc3Q6Om1lbV9mbihmKSwgZnVuY3Rvcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZW1iZXJQdHIsdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBib29sIGFzc2lnbl90b19hKE1lbWJlclB0ciBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIEFsbG9jYXRvciBhLCBtZW1iZXJfcHRyX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIC8vIERQRyBUQkQ6IEFkZCBleHBsaWNpdCBzdXBwb3J0IGZvciBtZW1iZXIgZnVuY3Rpb24KLSAgICAgICAgICAvLyBvYmplY3RzLCBzbyB3ZSBpbnZva2UgdGhyb3VnaCBtZW1fZm4oKSBidXQgd2UgcmV0YWluIHRoZQotICAgICAgICAgIC8vIHJpZ2h0IHRhcmdldF90eXBlKCkgdmFsdWVzLgotICAgICAgICAgIGlmIChmKSB7Ci0gICAgICAgICAgICB0aGlzLT5hc3NpZ25fdG9fYShuZG5ib29zdDo6bWVtX2ZuKGYpLCBmdW5jdG9yLCBhKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYgLy8gTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPiAwCi0KLSAgICAgICAgLy8gRnVuY3Rpb24gb2JqZWN0cwotICAgICAgICAvLyBBc3NpZ24gdG8gYSBmdW5jdGlvbiBvYmplY3QgdXNpbmcgdGhlIHNtYWxsIG9iamVjdCBvcHRpbWl6YXRpb24KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmo+Ci0gICAgICAgIHZvaWQgCi0gICAgICAgIGFzc2lnbl9mdW5jdG9yKEZ1bmN0aW9uT2JqIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgbXBsOjp0cnVlXykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIG5ldyAocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJmZ1bmN0b3IuZGF0YSkpIEZ1bmN0aW9uT2JqKGYpOwotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uT2JqLHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICAgICAgdm9pZCAKLSAgICAgICAgYXNzaWduX2Z1bmN0b3JfYShGdW5jdGlvbk9iaiBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIEFsbG9jYXRvciwgbXBsOjp0cnVlXykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIGFzc2lnbl9mdW5jdG9yKGYsZnVuY3RvcixtcGw6OnRydWVfKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQXNzaWduIHRvIGEgZnVuY3Rpb24gb2JqZWN0IGFsbG9jYXRlZCBvbiB0aGUgaGVhcC4KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmo+Ci0gICAgICAgIHZvaWQgCi0gICAgICAgIGFzc2lnbl9mdW5jdG9yKEZ1bmN0aW9uT2JqIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgbXBsOjpmYWxzZV8pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICBmdW5jdG9yLm9ial9wdHIgPSBuZXcgRnVuY3Rpb25PYmooZik7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmosdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICB2b2lkIAotICAgICAgICBhc3NpZ25fZnVuY3Rvcl9hKEZ1bmN0aW9uT2JqIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgQWxsb2NhdG9yIGEsIG1wbDo6ZmFsc2VfKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX3dyYXBwZXI8RnVuY3Rpb25PYmosQWxsb2NhdG9yPiBmdW5jdG9yX3dyYXBwZXJfdHlwZTsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jYXRvcjo6dGVtcGxhdGUgcmViaW5kPGZ1bmN0b3Jfd3JhcHBlcl90eXBlPjo6b3RoZXIKLSAgICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yX3R5cGU7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB3cmFwcGVyX2FsbG9jYXRvcl90eXBlOjpwb2ludGVyIHdyYXBwZXJfYWxsb2NhdG9yX3BvaW50ZXJfdHlwZTsKLSAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvcl90eXBlIHdyYXBwZXJfYWxsb2NhdG9yKGEpOwotICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yX3BvaW50ZXJfdHlwZSBjb3B5ID0gd3JhcHBlcl9hbGxvY2F0b3IuYWxsb2NhdGUoMSk7Ci0gICAgICAgICAgd3JhcHBlcl9hbGxvY2F0b3IuY29uc3RydWN0KGNvcHksIGZ1bmN0b3Jfd3JhcHBlcl90eXBlKGYsYSkpOwotICAgICAgICAgIGZ1bmN0b3Jfd3JhcHBlcl90eXBlKiBuZXdfZiA9IHN0YXRpY19jYXN0PGZ1bmN0b3Jfd3JhcHBlcl90eXBlKj4oY29weSk7Ci0gICAgICAgICAgZnVuY3Rvci5vYmpfcHRyID0gbmV3X2Y7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaj4KLSAgICAgICAgYm9vbCAKLSAgICAgICAgYXNzaWduX3RvKEZ1bmN0aW9uT2JqIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgZnVuY3Rpb25fb2JqX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIGlmICghbmRuYm9vc3Q6OmRldGFpbDo6ZnVuY3Rpb246Omhhc19lbXB0eV90YXJnZXQobmRuYm9vc3Q6OmFkZHJlc3NvZihmKSkpIHsKLSAgICAgICAgICAgIGFzc2lnbl9mdW5jdG9yKGYsIGZ1bmN0b3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpib29sXzwoZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248RnVuY3Rpb25PYmo+Ojp2YWx1ZSk+KCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmosdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBib29sIAotICAgICAgICBhc3NpZ25fdG9fYShGdW5jdGlvbk9iaiBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIEFsbG9jYXRvciBhLCBmdW5jdGlvbl9vYmpfdGFnKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbjo6aGFzX2VtcHR5X3RhcmdldChuZG5ib29zdDo6YWRkcmVzc29mKGYpKSkgewotICAgICAgICAgICAgYXNzaWduX2Z1bmN0b3JfYShmLCBmdW5jdG9yLCBhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpib29sXzwoZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248RnVuY3Rpb25PYmo+Ojp2YWx1ZSk+KCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZWZlcmVuY2UgdG8gYSBmdW5jdGlvbiBvYmplY3QKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmo+Ci0gICAgICAgIGJvb2wgCi0gICAgICAgIGFzc2lnbl90byhjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbk9iaj4mIGYsIAotICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yLCBmdW5jdGlvbl9vYmpfcmVmX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIGZ1bmN0b3Iub2JqX3JlZi5vYmpfcHRyID0gKHZvaWQgKikoZi5nZXRfcG9pbnRlcigpKTsKLSAgICAgICAgICBmdW5jdG9yLm9ial9yZWYuaXNfY29uc3RfcXVhbGlmaWVkID0gaXNfY29uc3Q8RnVuY3Rpb25PYmo+Ojp2YWx1ZTsKLSAgICAgICAgICBmdW5jdG9yLm9ial9yZWYuaXNfdm9sYXRpbGVfcXVhbGlmaWVkID0gaXNfdm9sYXRpbGU8RnVuY3Rpb25PYmo+Ojp2YWx1ZTsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaix0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgICAgIGJvb2wgCi0gICAgICAgIGFzc2lnbl90b19hKGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uT2JqPiYgZiwgCi0gICAgICAgICAgICAgICAgICBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIEFsbG9jYXRvciwgZnVuY3Rpb25fb2JqX3JlZl90YWcpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gYXNzaWduX3RvKGYsZnVuY3RvcixmdW5jdGlvbl9vYmpfcmVmX3RhZygpKTsKLSAgICAgICAgfQotCi0gICAgICBwdWJsaWM6Ci0gICAgICAgIHZ0YWJsZV9iYXNlIGJhc2U7Ci0gICAgICAgIGludm9rZXJfdHlwZSBpbnZva2VyOwotICAgICAgfTsKLSAgICB9IC8vIGVuZCBuYW1lc3BhY2UgZnVuY3Rpb24KLSAgfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAotCi0gIHRlbXBsYXRlPAotICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICA+Ci0gIGNsYXNzIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OIDogcHVibGljIGZ1bmN0aW9uX2Jhc2UKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDEKLQotICAgICwgcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248VDAsUj4KLQotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMgotCi0gICAgLCBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248VDAsVDEsUj4KLQotI2VuZGlmCi0KLSAgewotICBwdWJsaWM6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotICAgIHR5cGVkZWYgUiAgICAgICAgIHJlc3VsdF90eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbjo6ZnVuY3Rpb25fcmV0dXJuX3R5cGU8Uj46OnR5cGUKLSAgICAgIHJlc3VsdF90eXBlOwotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotCi0gIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbjo6TkROQk9PU1RfRlVOQ1RJT05fVlRBQkxFPAotICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1M+Ci0gICAgICB2dGFibGVfdHlwZTsKLQotICAgIHZ0YWJsZV90eXBlKiBnZXRfdnRhYmxlKCkgY29uc3QgewotICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dnRhYmxlX3R5cGUqPigKLSAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpzaXplX3Q+KHZ0YWJsZSkgJiB+c3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KDB4MDEpKTsKLSAgICB9Ci0KLSAgICBzdHJ1Y3QgY2xlYXJfdHlwZSB7fTsKLQotICBwdWJsaWM6Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgYXJncyA9IE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKTsKLQotICAgIC8vIGFkZCBzaWduYXR1cmUgZm9yIG5kbmJvb3N0OjpsYW1iZGEKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmdzPgotICAgIHN0cnVjdCBzaWcKLSAgICB7Ci0gICAgICB0eXBlZGVmIHJlc3VsdF90eXBlIHR5cGU7Ci0gICAgfTsKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDEKLSAgICB0eXBlZGVmIFQwIGFyZ3VtZW50X3R5cGU7Ci0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyCi0gICAgdHlwZWRlZiBUMCBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgVDEgc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci0jZW5kaWYKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIGFyaXR5ID0gTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpOwotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0FSR19UWVBFUwotCi0gICAgdHlwZWRlZiBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiBzZWxmX3R5cGU7Ci0KLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTigpIDogZnVuY3Rpb25fYmFzZSgpIHsgfQotCi0gICAgLy8gTVNWQyBjaG9rZXMgaWYgdGhlIGZvbGxvd2luZyB0d28gY29uc3RydWN0b3JzIGFyZSBjb2xsYXBzZWQgaW50bwotICAgIC8vIG9uZSB3aXRoIGEgZGVmYXVsdCBwYXJhbWV0ZXIuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTihGdW5jdG9yIE5ETkJPT1NUX0ZVTkNUSU9OX1RBUkdFVF9GSVgoY29uc3QgJikgZgotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAsdHlwZW5hbWUgZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzX2ludGVncmFsPEZ1bmN0b3I+Ojp2YWx1ZSk+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDAKLSNlbmRpZiAvLyBORE5CT09TVF9OT19TRklOQUUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDoKLSAgICAgIGZ1bmN0aW9uX2Jhc2UoKQotICAgIHsKLSAgICAgIHRoaXMtPmFzc2lnbl90byhmKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcix0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04oRnVuY3RvciBORE5CT09TVF9GVU5DVElPTl9UQVJHRVRfRklYKGNvbnN0ICYpIGYsIEFsbG9jYXRvciBhCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICx0eXBlbmFtZSBlbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ+Ojp0eXBlID0gMAotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOgotICAgICAgZnVuY3Rpb25fYmFzZSgpCi0gICAgewotICAgICAgdGhpcy0+YXNzaWduX3RvX2EoZixhKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04oY2xlYXJfdHlwZSopIDogZnVuY3Rpb25fYmFzZSgpIHsgfQotI2Vsc2UKLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTihpbnQgemVybykgOiBmdW5jdGlvbl9iYXNlKCkKLSAgICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoemVybyA9PSAwKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OKGNvbnN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiBmKSA6IGZ1bmN0aW9uX2Jhc2UoKQotICAgIHsKLSAgICAgIHRoaXMtPmFzc2lnbl90b19vd24oZik7Ci0gICAgfQotICAgIAotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OKE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiYgZikgOiBmdW5jdGlvbl9iYXNlKCkKLSAgICB7Ci0gICAgICB0aGlzLT5tb3ZlX2Fzc2lnbihmKTsKLSAgICB9Ci0jZW5kaWYKLSAgICAKLSAgICB+TkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04oKSB7IGNsZWFyKCk7IH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoTkROQk9PU1RfRlVOQ1RJT05fUEFSTVMpIGNvbnN0Ci0gICAgewotICAgICAgaWYgKHRoaXMtPmVtcHR5KCkpCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX2Z1bmN0aW9uX2NhbGwoKSk7Ci0KLSAgICAgIHJldHVybiBnZXRfdnRhYmxlKCktPmludm9rZXIKLSAgICAgICAgICAgICAgICh0aGlzLT5mdW5jdG9yIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpOwotICAgIH0KLQotICAgIC8vIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHdoZW4gdG8gdXNlIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OIGFuZAotICAgIC8vIHdoZW4gdG8gdXNlIHNlbGZfdHlwZSBpcyBvYm5veGlvdXMuIE1TVkMgY2Fubm90IGhhbmRsZSBzZWxmX3R5cGUgYXMKLSAgICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlc2UgYXNzaWdubWVudCBvcGVyYXRvcnMsIGJ1dCBCb3JsYW5kIEMrKyBjYW5ub3QKLSAgICAvLyBoYW5kbGUgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04gYXMgdGhlIHR5cGUgb2YgdGhlIHRlbXBvcmFyeSB0bwotICAgIC8vIGNvbnN0cnVjdC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICB0eXBlbmFtZSBlbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgIChuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgIChpc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mPjo6dHlwZQotI2Vsc2UKLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiYKLSNlbmRpZgotICAgIG9wZXJhdG9yPShGdW5jdG9yIE5ETkJPT1NUX0ZVTkNUSU9OX1RBUkdFVF9GSVgoY29uc3QgJikgZikKLSAgICB7Ci0gICAgICB0aGlzLT5jbGVhcigpOwotICAgICAgTkROQk9PU1RfVFJZICB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbl90byhmKTsKLSAgICAgIH0gTkROQk9PU1RfQ0FUQ0ggKC4uLikgewotICAgICAgICB2dGFibGUgPSAwOwotICAgICAgICBORE5CT09TVF9SRVRIUk9XOwotICAgICAgfQotICAgICAgTkROQk9PU1RfQ0FUQ0hfRU5ECi0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgIHZvaWQgYXNzaWduKEZ1bmN0b3IgTkROQk9PU1RfRlVOQ1RJT05fVEFSR0VUX0ZJWChjb25zdCAmKSBmLCBBbGxvY2F0b3IgYSkKLSAgICB7Ci0gICAgICB0aGlzLT5jbGVhcigpOwotICAgICAgTkROQk9PU1RfVFJZewotICAgICAgICB0aGlzLT5hc3NpZ25fdG9fYShmLGEpOwotICAgICAgfSBORE5CT09TVF9DQVRDSCAoLi4uKSB7Ci0gICAgICAgIHZ0YWJsZSA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX1JFVEhST1c7Ci0gICAgICB9Ci0gICAgICBORE5CT09TVF9DQVRDSF9FTkQKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIG9wZXJhdG9yPShjbGVhcl90eXBlKikKLSAgICB7Ci0gICAgICB0aGlzLT5jbGVhcigpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSNlbHNlCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIG9wZXJhdG9yPShpbnQgemVybykKLSAgICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoemVybyA9PSAwKTsKLSAgICAgIHRoaXMtPmNsZWFyKCk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLyBBc3NpZ25tZW50IGZyb20gYW5vdGhlciBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTgotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiBvcGVyYXRvcj0oY29uc3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIGYpCi0gICAgewotICAgICAgaWYgKCZmID09IHRoaXMpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgICAgdGhpcy0+Y2xlYXIoKTsKLSAgICAgIE5ETkJPT1NUX1RSWSB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbl90b19vd24oZik7Ci0gICAgICB9IE5ETkJPT1NUX0NBVENIICguLi4pIHsKLSAgICAgICAgdnRhYmxlID0gMDsKLSAgICAgICAgTkROQk9PU1RfUkVUSFJPVzsKLSAgICAgIH0KLSAgICAgIE5ETkJPT1NUX0NBVENIX0VORAotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICAKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgICAvLyBNb3ZlIGFzc2lnbm1lbnQgZnJvbSBhbm90aGVyIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIG9wZXJhdG9yPShORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiYmIGYpCi0gICAgewotICAgICAgCi0gICAgICBpZiAoJmYgPT0gdGhpcykKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgICB0aGlzLT5jbGVhcigpOwotICAgICAgTkROQk9PU1RfVFJZIHsKLSAgICAgICAgdGhpcy0+bW92ZV9hc3NpZ24oZik7Ci0gICAgICB9IE5ETkJPT1NUX0NBVENIICguLi4pIHsKLSAgICAgICAgdnRhYmxlID0gMDsKLSAgICAgICAgTkROQk9PU1RfUkVUSFJPVzsKLSAgICAgIH0KLSAgICAgIE5ETkJPT1NUX0NBVENIX0VORAotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSNlbmRpZgotCi0gICAgdm9pZCBzd2FwKE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiBvdGhlcikKLSAgICB7Ci0gICAgICBpZiAoJm90aGVyID09IHRoaXMpCi0gICAgICAgIHJldHVybjsKLQotICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04gdG1wOwotICAgICAgdG1wLm1vdmVfYXNzaWduKCp0aGlzKTsKLSAgICAgIHRoaXMtPm1vdmVfYXNzaWduKG90aGVyKTsKLSAgICAgIG90aGVyLm1vdmVfYXNzaWduKHRtcCk7Ci0gICAgfQotCi0gICAgLy8gQ2xlYXIgb3V0IGEgdGFyZ2V0LCBpZiB0aGVyZSBpcyBvbmUKLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICBpZiAodnRhYmxlKSB7Ci0gICAgICAgIGlmICghdGhpcy0+aGFzX3RyaXZpYWxfY29weV9hbmRfZGVzdHJveSgpKQotICAgICAgICAgIGdldF92dGFibGUoKS0+Y2xlYXIodGhpcy0+ZnVuY3Rvcik7Ci0gICAgICAgIHZ0YWJsZSA9IDA7Ci0gICAgICB9Ci0gICAgfQotCi0jaWYgKGRlZmluZWQgX19TVU5QUk9fQ0MpICYmIChfX1NVTlBST19DQyA8PSAweDUzMCkgJiYgIShkZWZpbmVkIE5ETkJPT1NUX05PX0NPTVBJTEVSX0NPTkZJRykKLSAgICAvLyBTdW4gQysrIDUuMyBjYW4ndCBoYW5kbGUgdGhlIHNhZmVfYm9vbCBpZGlvbSwgc28gZG9uJ3QgdXNlIGl0Ci0gICAgb3BlcmF0b3IgYm9vbCAoKSBjb25zdCB7IHJldHVybiAhdGhpcy0+ZW1wdHkoKTsgfQotI2Vsc2UKLSAgcHJpdmF0ZToKLSAgICBzdHJ1Y3QgZHVtbXkgewotICAgICAgdm9pZCBub25udWxsKCkge30KLSAgICB9OwotCi0gICAgdHlwZWRlZiB2b2lkIChkdW1teTo6KnNhZmVfYm9vbCkoKTsKLQotICBwdWJsaWM6Ci0gICAgb3BlcmF0b3Igc2FmZV9ib29sICgpIGNvbnN0Ci0gICAgICB7IHJldHVybiAodGhpcy0+ZW1wdHkoKSk/IDAgOiAmZHVtbXk6Om5vbm51bGw7IH0KLQotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKLSAgICAgIHsgcmV0dXJuIHRoaXMtPmVtcHR5KCk7IH0KLSNlbmRpZgotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBhc3NpZ25fdG9fb3duKGNvbnN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiBmKQotICAgIHsKLSAgICAgIGlmICghZi5lbXB0eSgpKSB7Ci0gICAgICAgIHRoaXMtPnZ0YWJsZSA9IGYudnRhYmxlOwotICAgICAgICBpZiAodGhpcy0+aGFzX3RyaXZpYWxfY29weV9hbmRfZGVzdHJveSgpKQotICAgICAgICAgIHRoaXMtPmZ1bmN0b3IgPSBmLmZ1bmN0b3I7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBnZXRfdnRhYmxlKCktPmJhc2UubWFuYWdlcihmLmZ1bmN0b3IsIHRoaXMtPmZ1bmN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6ZnVuY3Rpb246OmNsb25lX2Z1bmN0b3JfdGFnKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgYXNzaWduX3RvKEZ1bmN0b3IgZikKLSAgICB7Ci0gICAgICB1c2luZyBkZXRhaWw6OmZ1bmN0aW9uOjp2dGFibGVfYmFzZTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZ1bmN0aW9uOjpnZXRfZnVuY3Rpb25fdGFnPEZ1bmN0b3I+Ojp0eXBlIHRhZzsKLSAgICAgIHR5cGVkZWYgZGV0YWlsOjpmdW5jdGlvbjo6TkROQk9PU1RfRlVOQ1RJT05fR0VUX0lOVk9LRVI8dGFnPiBnZXRfaW52b2tlcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2ludm9rZXI6OgotICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIGFwcGx5PEZ1bmN0b3IsIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTPgotICAgICAgICBoYW5kbGVyX3R5cGU7Ci0gICAgICAKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFuZGxlcl90eXBlOjppbnZva2VyX3R5cGUgaW52b2tlcl90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBoYW5kbGVyX3R5cGU6Om1hbmFnZXJfdHlwZSBtYW5hZ2VyX3R5cGU7Ci0KLSAgICAgIC8vIE5vdGU6IGl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCB0aGlzIGluaXRpYWxpemF0aW9uIHVzZQotICAgICAgLy8gc3RhdGljIGluaXRpYWxpemF0aW9uLiBPdGhlcndpc2UsIHdlIHdpbGwgaGF2ZSBhIHJhY2UKLSAgICAgIC8vIGNvbmRpdGlvbiBoZXJlIGluIG11bHRpLXRocmVhZGVkIGNvZGUuIFNlZQotICAgICAgLy8gaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUuY29tcC5saWIuYm9vc3QuZGV2ZWwvMTY0OTAyLy4KLSAgICAgIHN0YXRpYyBjb25zdCB2dGFibGVfdHlwZSBzdG9yZWRfdnRhYmxlID0gCi0gICAgICAgIHsgeyAmbWFuYWdlcl90eXBlOjptYW5hZ2UgfSwgJmludm9rZXJfdHlwZTo6aW52b2tlIH07Ci0KLSAgICAgIGlmIChzdG9yZWRfdnRhYmxlLmFzc2lnbl90byhmLCBmdW5jdG9yKSkgewotICAgICAgICBzdGQ6OnNpemVfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpzaXplX3Q+KCZzdG9yZWRfdnRhYmxlLmJhc2UpOwotICAgICAgICBpZiAobmRuYm9vc3Q6Omhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I8RnVuY3Rvcj46OnZhbHVlICYmCi0gICAgICAgICAgICBuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxGdW5jdG9yPjo6dmFsdWUgJiYKLSAgICAgICAgICAgIGRldGFpbDo6ZnVuY3Rpb246OmZ1bmN0aW9uX2FsbG93c19zbWFsbF9vYmplY3Rfb3B0aW1pemF0aW9uPEZ1bmN0b3I+Ojp2YWx1ZSkKLSAgICAgICAgICB2YWx1ZSB8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KDB4MDEpOwotICAgICAgICB2dGFibGUgPSByZWludGVycHJldF9jYXN0PGRldGFpbDo6ZnVuY3Rpb246OnZ0YWJsZV9iYXNlICo+KHZhbHVlKTsKLSAgICAgIH0gZWxzZSAKLSAgICAgICAgdnRhYmxlID0gMDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICB2b2lkIGFzc2lnbl90b19hKEZ1bmN0b3IgZixBbGxvY2F0b3IgYSkKLSAgICB7Ci0gICAgICB1c2luZyBkZXRhaWw6OmZ1bmN0aW9uOjp2dGFibGVfYmFzZTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZ1bmN0aW9uOjpnZXRfZnVuY3Rpb25fdGFnPEZ1bmN0b3I+Ojp0eXBlIHRhZzsKLSAgICAgIHR5cGVkZWYgZGV0YWlsOjpmdW5jdGlvbjo6TkROQk9PU1RfRlVOQ1RJT05fR0VUX0lOVk9LRVI8dGFnPiBnZXRfaW52b2tlcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2ludm9rZXI6OgotICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIGFwcGx5X2E8RnVuY3RvciwgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSAKLSAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRvcj4KLSAgICAgICAgaGFuZGxlcl90eXBlOwotICAgICAgCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGhhbmRsZXJfdHlwZTo6aW52b2tlcl90eXBlIGludm9rZXJfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFuZGxlcl90eXBlOjptYW5hZ2VyX3R5cGUgbWFuYWdlcl90eXBlOwotCi0gICAgICAvLyBOb3RlOiBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgdGhpcyBpbml0aWFsaXphdGlvbiB1c2UKLSAgICAgIC8vIHN0YXRpYyBpbml0aWFsaXphdGlvbi4gT3RoZXJ3aXNlLCB3ZSB3aWxsIGhhdmUgYSByYWNlCi0gICAgICAvLyBjb25kaXRpb24gaGVyZSBpbiBtdWx0aS10aHJlYWRlZCBjb2RlLiBTZWUKLSAgICAgIC8vIGh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAubGliLmJvb3N0LmRldmVsLzE2NDkwMi8uCi0gICAgICBzdGF0aWMgY29uc3QgdnRhYmxlX3R5cGUgc3RvcmVkX3Z0YWJsZSA9Ci0gICAgICAgIHsgeyAmbWFuYWdlcl90eXBlOjptYW5hZ2UgfSwgJmludm9rZXJfdHlwZTo6aW52b2tlIH07Ci0KLSAgICAgIGlmIChzdG9yZWRfdnRhYmxlLmFzc2lnbl90b19hKGYsIGZ1bmN0b3IsIGEpKSB7IAotICAgICAgICBzdGQ6OnNpemVfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpzaXplX3Q+KCZzdG9yZWRfdnRhYmxlLmJhc2UpOwotICAgICAgICBpZiAobmRuYm9vc3Q6Omhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I8RnVuY3Rvcj46OnZhbHVlICYmCi0gICAgICAgICAgICBuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxGdW5jdG9yPjo6dmFsdWUgJiYKLSAgICAgICAgICAgIGRldGFpbDo6ZnVuY3Rpb246OmZ1bmN0aW9uX2FsbG93c19zbWFsbF9vYmplY3Rfb3B0aW1pemF0aW9uPEZ1bmN0b3I+Ojp2YWx1ZSkKLSAgICAgICAgICB2YWx1ZSB8PSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oMHgwMSk7Ci0gICAgICAgIHZ0YWJsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZGV0YWlsOjpmdW5jdGlvbjo6dnRhYmxlX2Jhc2UgKj4odmFsdWUpOwotICAgICAgfSBlbHNlIAotICAgICAgICB2dGFibGUgPSAwOwotICAgIH0KLQotICAgIC8vIE1vdmVzIHRoZSB2YWx1ZSBmcm9tIHRoZSBzcGVjaWZpZWQgYXJndW1lbnQgdG8gKnRoaXMuIElmIHRoZSBhcmd1bWVudCAKLSAgICAvLyBoYXMgaXRzIGZ1bmN0aW9uIG9iamVjdCBhbGxvY2F0ZWQgb24gdGhlIGhlYXAsIG1vdmVfYXNzaWduIHdpbGwgcGFzcyAKLSAgICAvLyBpdHMgYnVmZmVyIHRvICp0aGlzLCBhbmQgc2V0IHRoZSBhcmd1bWVudCdzIGJ1ZmZlciBwb2ludGVyIHRvIE5VTEwuIAotICAgIHZvaWQgbW92ZV9hc3NpZ24oTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIGYpIAotICAgIHsgCi0gICAgICBpZiAoJmYgPT0gdGhpcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgICBORE5CT09TVF9UUlkgewotICAgICAgICBpZiAoIWYuZW1wdHkoKSkgewotICAgICAgICAgIHRoaXMtPnZ0YWJsZSA9IGYudnRhYmxlOwotICAgICAgICAgIGlmICh0aGlzLT5oYXNfdHJpdmlhbF9jb3B5X2FuZF9kZXN0cm95KCkpCi0gICAgICAgICAgICB0aGlzLT5mdW5jdG9yID0gZi5mdW5jdG9yOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdldF92dGFibGUoKS0+YmFzZS5tYW5hZ2VyKGYuZnVuY3RvciwgdGhpcy0+ZnVuY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbjo6bW92ZV9mdW5jdG9yX3RhZyk7Ci0gICAgICAgICAgZi52dGFibGUgPSAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgIH0gTkROQk9PU1RfQ0FUQ0ggKC4uLikgewotICAgICAgICB2dGFibGUgPSAwOwotICAgICAgICBORE5CT09TVF9SRVRIUk9XOwotICAgICAgfQotICAgICAgTkROQk9PU1RfQ0FUQ0hfRU5ECi0gICAgfQotICB9OwotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVM+Ci0gIGlubGluZSB2b2lkIHN3YXAoTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048Ci0gICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgPiYgZjEsCi0gICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048Ci0gICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgPiYgZjIpCi0gIHsKLSAgICBmMS5zd2FwKGYyKTsKLSAgfQotCi0vLyBQb2lzb24gY29tcGFyaXNvbnMgYmV0d2VlbiBuZG5ib29zdDo6ZnVuY3Rpb24gb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlLgotdGVtcGxhdGU8dHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUz4KLSAgdm9pZCBvcGVyYXRvcj09KGNvbnN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OPAotICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1M+JiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OPAotICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1M+Jik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TPgotICB2b2lkIG9wZXJhdG9yIT0oY29uc3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUz4mLAotICAgICAgICAgICAgICAgICAgY29uc3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUz4mICk7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTl9OT19GVU5DVElPTl9UWVBFX1NZTlRBWCkKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDAKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fUEFSVElBTF9TUEVDIFIgKHZvaWQpCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9QQVJUSUFMX1NQRUMgUiAoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MsVCkpCi0jZW5kaWYKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVM+Ci1jbGFzcyBmdW5jdGlvbjxORE5CT09TVF9GVU5DVElPTl9QQVJUSUFMX1NQRUM+Ci0gIDogcHVibGljIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OPFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUz4KLXsKLSAgdHlwZWRlZiBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTjxSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1M+IGJhc2VfdHlwZTsKLSAgdHlwZWRlZiBmdW5jdGlvbiBzZWxmX3R5cGU7Ci0KLSAgc3RydWN0IGNsZWFyX3R5cGUge307Ci0KLXB1YmxpYzoKLQotICBmdW5jdGlvbigpIDogYmFzZV90eXBlKCkge30KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBmdW5jdGlvbihGdW5jdG9yIGYKLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgICAgICAgICx0eXBlbmFtZSBlbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDAKLSNlbmRpZgotICAgICAgICAgICApIDoKLSAgICBiYXNlX3R5cGUoZikKLSAgewotICB9Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsdHlwZW5hbWUgQWxsb2NhdG9yPgotICBmdW5jdGlvbihGdW5jdG9yIGYsIEFsbG9jYXRvciBhCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICAgICAgICAgICAsdHlwZW5hbWUgZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzX2ludGVncmFsPEZ1bmN0b3I+Ojp2YWx1ZSk+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgIGludD46OnR5cGUgPSAwCi0jZW5kaWYKLSAgICAgICAgICAgKSA6Ci0gICAgYmFzZV90eXBlKGYsYSkKLSAgewotICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gIGZ1bmN0aW9uKGNsZWFyX3R5cGUqKSA6IGJhc2VfdHlwZSgpIHt9Ci0jZW5kaWYKLQotICBmdW5jdGlvbihjb25zdCBzZWxmX3R5cGUmIGYpIDogYmFzZV90eXBlKHN0YXRpY19jYXN0PGNvbnN0IGJhc2VfdHlwZSY+KGYpKXt9Ci0KLSAgZnVuY3Rpb24oY29uc3QgYmFzZV90eXBlJiBmKSA6IGJhc2VfdHlwZShzdGF0aWNfY2FzdDxjb25zdCBiYXNlX3R5cGUmPihmKSl7fQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gIC8vIE1vdmUgY29uc3RydWN0b3JzCi0gIGZ1bmN0aW9uKHNlbGZfdHlwZSYmIGYpOiBiYXNlX3R5cGUoc3RhdGljX2Nhc3Q8YmFzZV90eXBlJiY+KGYpKXt9Ci0gIGZ1bmN0aW9uKGJhc2VfdHlwZSYmIGYpOiBiYXNlX3R5cGUoc3RhdGljX2Nhc3Q8YmFzZV90eXBlJiY+KGYpKXt9Ci0jZW5kaWYKLSAgCi0gIHNlbGZfdHlwZSYgb3BlcmF0b3I9KGNvbnN0IHNlbGZfdHlwZSYgZikKLSAgewotICAgIHNlbGZfdHlwZShmKS5zd2FwKCp0aGlzKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICBzZWxmX3R5cGUmIG9wZXJhdG9yPShzZWxmX3R5cGUmJiBmKQotICB7Ci0gICAgc2VsZl90eXBlKHN0YXRpY19jYXN0PHNlbGZfdHlwZSYmPihmKSkuc3dhcCgqdGhpcyk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0jZW5kaWYgIAotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICB0eXBlbmFtZSBlbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgIChpc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgIHNlbGZfdHlwZSY+Ojp0eXBlCi0jZWxzZQotICBzZWxmX3R5cGUmCi0jZW5kaWYKLSAgb3BlcmF0b3I9KEZ1bmN0b3IgZikKLSAgewotICAgIHNlbGZfdHlwZShmKS5zd2FwKCp0aGlzKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgc2VsZl90eXBlJiBvcGVyYXRvcj0oY2xlYXJfdHlwZSopCi0gIHsKLSAgICB0aGlzLT5jbGVhcigpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotI2VuZGlmCi0KLSAgc2VsZl90eXBlJiBvcGVyYXRvcj0oY29uc3QgYmFzZV90eXBlJiBmKQotICB7Ci0gICAgc2VsZl90eXBlKGYpLnN3YXAoKnRoaXMpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICAKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgc2VsZl90eXBlJiBvcGVyYXRvcj0oYmFzZV90eXBlJiYgZikKLSAgewotICAgIHNlbGZfdHlwZShzdGF0aWNfY2FzdDxiYXNlX3R5cGUmJj4oZikpLnN3YXAoKnRoaXMpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotI2VuZGlmIAotfTsKLQotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUlRJQUxfU1BFQwotI2VuZGlmIC8vIGhhdmUgcGFydGlhbCBzcGVjaWFsaXphdGlvbgotCi19IC8vIGVuZCBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gQ2xlYW51cCBhZnRlciBvdXJzZWx2ZXMuLi4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9WVEFCTEUKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX09CSl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9GVU5DVElPTl9PQkpfSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX1JFRl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9GVU5DVElPTl9SRUZfSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX01FTUJFUl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9NRU1CRVJfSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX09CSl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX1JFRl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fR0VUX01FTV9GVU5DVElPTl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0lOVk9LRVIKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9QQVJNUwotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk0KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9BUkdTCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fQVJHX1RZUEUKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9BUkdfVFlQRVMKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fUkVUVVJOCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcoIHBvcCApCi0jZW5kaWYgICAgICAgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3R5cGVvZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3R5cGVvZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYzA3NDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90eXBlb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeSAtIFR5cGVvZiBzdXBwb3J0Ci0vLyAgQ29weXJpZ2h0IChDKSBEb3VnbGFzIEdyZWdvciAyMDA4Ci0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotI2lmbmRlZiBORE5CT09TVF9GVU5DVElPTl9UWVBFT0ZfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1RZUEVPRl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi90eXBlb2YuaHBwPgotCi0jaW5jbHVkZSBORE5CT09TVF9UWVBFT0ZfSU5DUkVNRU5UX1JFR0lTVFJBVElPTl9HUk9VUCgpCi0KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKG5kbmJvb3N0OjpiYWRfZnVuY3Rpb25fY2FsbCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OX05PX0ZVTkNUSU9OX1RZUEVfU1lOVEFYKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKG5kbmJvb3N0OjpmdW5jdGlvbiwgKHR5cGVuYW1lKSkKLSNlbmRpZgotCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uMCwgKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb24xLCAodHlwZW5hbWUpKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb24yLCAodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uMywgCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uNCwgCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKG5kbmJvb3N0OjpmdW5jdGlvbjUsIAotICAodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uNiwgCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uNywgCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkKLSAgKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb244LCAKLSAgKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKQotICAodHlwZW5hbWUpKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb245LCAKLSAgKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKQotICAodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uMTAsIAotICAodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZ2VuX2Z1bmN0aW9uX04ucGwgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2dlbl9mdW5jdGlvbl9OLnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Y0NDAxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZ2VuX2Z1bmN0aW9uX04ucGwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0jIS91c3IvYmluL3BlcmwgLXcKLSMKLSMgQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotIwotIyBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMS0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLSMgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLSMgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMKLSMgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotdXNlIEVuZ2xpc2g7Ci0KLWlmICgkI0FSR1YgPCAwKSB7Ci0gIHByaW50ICJVc2FnZTogcGVybCBnZW5fZnVuY3Rpb25fTiA8bnVtYmVyIG9mIGFyZ3VtZW50cz5cbiI7Ci0gIGV4aXQ7Ci19Ci0KLQotJHRvdGFsTnVtQXJncyA9ICRBUkdWWzBdOwotZm9yICgkbnVtQXJncyA9IDA7ICRudW1BcmdzIDw9ICR0b3RhbE51bUFyZ3M7ICsrJG51bUFyZ3MpIHsKLSAgb3BlbiBPVVQsICI+ZnVuY3Rpb24kbnVtQXJncy5ocHAiOwotICBwcmludCBPVVQgIiNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgJG51bUFyZ3NcbiI7Ci0gIHByaW50IE9VVCAiI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD5cbiI7Ci0gIHByaW50IE9VVCAiI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTXG4iOwotICBjbG9zZSBPVVQ7Ci19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2U2MTJjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDA0LgotLy8gIENvcHlyaWdodCAyMDA1IFBldGVyIERpbW92Ci0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8KLS8vICB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotI2lmbmRlZiBORE5CT09TVF9GVU5DVElPTl9FUVVBTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fRVFVQUxfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIEc+Ci0gIGJvb2wgZnVuY3Rpb25fZXF1YWxfaW1wbChjb25zdCBGJiBmLCBjb25zdCBHJiBnLCBsb25nKQotICB7IHJldHVybiBmID09IGc7IH0KLQotLy8gZnVuY3Rpb25fZXF1YWxfaW1wbCBuZWVkcyB0byBiZSB1bnF1YWxpZmllZCB0byBwaWNrCi0vLyB1c2VyIG92ZXJsb2FkcyBvbiB0d28tcGhhc2UgY29tcGlsZXJzCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIEc+Ci0gIGJvb2wgZnVuY3Rpb25fZXF1YWwoY29uc3QgRiYgZiwgY29uc3QgRyYgZykKLSAgeyByZXR1cm4gZnVuY3Rpb25fZXF1YWxfaW1wbChmLCBnLCAwKTsgfQotCi19IC8vIGVuZCBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OX0VRVUFMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb21wb25lbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZWMxMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb21wb25lbnRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzMSArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfQ09NUE9ORU5UU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfQ09NUE9ORU5UU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjAuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTY1KQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9iaXRhbmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9mcm9udC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYWR2YW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvam9pbnRfdmlldy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvY29weS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Zyb250X2luc2VydGVyLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyLmhwcD4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX05PX0NWX0ZVTkNfU1VQUE9SVAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9yZW1vdmUuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY29uZmlnLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaWYgICBORE5CT09TVF9GVF9NQVhfQVJJVFkgPCAxMAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHA+Ci0jICAgZWxpZiBORE5CT09TVF9GVF9NQVhfQVJJVFkgPCAyMAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHA+Ci0jICAgZWxpZiBORE5CT09TVF9GVF9NQVhfQVJJVFkgPCAzMAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHA+Ci0jICAgZWxpZiBORE5CT09TVF9GVF9NQVhfQVJJVFkgPCA0MAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHA+Ci0jICAgZWxpZiBORE5CT09TVF9GVF9NQVhfQVJJVFkgPCA1MAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHA+Ci0jICAgZW5kaWYKLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXIuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NfdHJhbnNmb3JtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wcm9wZXJ0eV90YWdzLmhwcD4KLQotLy8gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAoteyAKLSAgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIAotICB7Ci0KLSAgICB1c2luZyBtcGw6OnBsYWNlaG9sZGVyczo6XzsKLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBDbGFzc1R5cGVUcmFuc2Zvcm0gPSBhZGRfcmVmZXJlbmNlPF8+ID4gCi0gICAgc3RydWN0IGNvbXBvbmVudHM7Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIAotICAgIHsKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+IHN0cnVjdCBjb21wb25lbnRzX2ltcGw7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTY1KQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgT3JpZ1QsIHR5cGVuYW1lIEw+IHN0cnVjdCBjb21wb25lbnRzX2JjYzsKLSNlbmRpZgotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENsYXNzVHlwZVRyYW5zZm9ybT4gCi0gICAgc3RydWN0IGNvbXBvbmVudHMKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTY1KQotICAgICAgOiBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxULCBDbGFzc1R5cGVUcmFuc2Zvcm0+Ci0jZWxzZQotICAgICAgOiBkZXRhaWw6OmNvbXBvbmVudHNfYmNjPHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSxULAotICAgICAgICAgICAgQ2xhc3NUeXBlVHJhbnNmb3JtPgotI2VuZGlmCi0gICAgeyAKLSAgICAgIHR5cGVkZWYgY29tcG9uZW50czxULENsYXNzVHlwZVRyYW5zZm9ybT4gdHlwZTsKLQotICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGNvbXBvbmVudHMsKFQsQ2xhc3NUeXBlVHJhbnNmb3JtKSkKLSAgICB9OwotCi0vLyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQotCi0gIG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgc3RydWN0IGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZzsgCi0KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19ub25fZnVuY19iYXNlCi0gICAgewotICAgICAgdHlwZWRlZiBtcGw6OnZlY3RvcjA8PiB0eXBlczsKLSAgICAgIHR5cGVkZWYgdm9pZCBmdW5jdGlvbl9hcml0eTsKLQotICAgICAgdHlwZWRlZiBkZXRhaWw6OmNvbnN0YW50PDA+IGJpdHM7Ci0gICAgICB0eXBlZGVmIGRldGFpbDo6Y29uc3RhbnQ8MD4gbWFzazsKLQotICAgICAgdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZQotICAgIDwgdHlwZW5hbWUgQ29tcG9uZW50cwotICAgICwgdHlwZW5hbWUgSWZUYWdnZWQKLSAgICAsIHR5cGVuYW1lIFRoZW5UYWcKLSAgICAsIHR5cGVuYW1lIERlZmF1bHRCYXNlID0gY29tcG9uZW50c19ub25fZnVuY19iYXNlCi0gICAgPgotICAgIHN0cnVjdCByZXRhZ2dlZF9pZgotICAgICAgOiBtcGw6OmlmXwotICAgICAgICA8IGRldGFpbDo6cmVwcmVzZW50c19pbXBsPENvbXBvbmVudHMsIElmVGFnZ2VkPgotICAgICAgICAsIGRldGFpbDo6Y2hhbmdlZF90YWc8Q29tcG9uZW50cyxJZlRhZ2dlZCxUaGVuVGFnPgotICAgICAgICAsIERlZmF1bHRCYXNlCi0gICAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLSAgICAvLyBXZSBkZXRlY3QgcGxhaW4gZnVuY3Rpb24gdHlwZXMgYW5kIGZ1bmN0aW9uIHJlZmVyZW5jZXMgYXMgZnVuY3Rpb24gCi0gICAgLy8gcG9pbnRlcnMgYnkgcmVjdXJzaXZlIGluc3RhbnRpYXRpb24gb2YgY29tcG9uZW50c19pbXBsLiAKLSAgICAvLyBUaGUgdGhpcmQgc3BlY2lhbGl6YXRpb24gb2YgY29tcG9uZW50c19pbXBsIG1ha2VzIHN1cmUgdGhlIHJlY3Vyc2lvbiAKLSAgICAvLyB0ZXJtaW5hdGVzICh3aGVuIGFkZGluZyBwb2ludGVycykuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsCi0gICAgICA6IGRldGFpbDo6cmV0YWdnZWRfaWYKLSAgICAgICAgPCBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxUKixMPgotICAgICAgICAsIHBvaW50ZXJfdGFnLCAvKiAtLT4gKi8gZnVuY3Rpb25fdGFnID4KLSAgICB7IH07Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQmLCBMPgotICAgICAgOiBkZXRhaWw6OnJldGFnZ2VkX2lmCi0gICAgICAgIDwgZGV0YWlsOjpjb21wb25lbnRzX2ltcGw8VCosTD4KLSAgICAgICAgLCBwb2ludGVyX3RhZywgLyogLS0+ICovIHJlZmVyZW5jZV90YWcgPgotICAgIHsgfTsKLQotI2lmICFORE5CT09TVF9GVF9OT19DVl9GVU5DX1NVUFBPUlQKLSAgICAvLyBSZXRyeSB0aGUgdHlwZSB3aXRoIGEgbWVtYmVyIHBvaW50ZXIgYXR0YWNoZWQgdG8gZGV0ZWN0IGN2IGZ1bmN0aW9ucwotICAgIGNsYXNzIGFfY2xhc3M7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjdl9mdW5jX2Jhc2UKLSAgICAgIDogZGV0YWlsOjpyZXRhZ2dlZF9pZjxCYXNlLG1lbWJlcl9wb2ludGVyX3RhZyxmdW5jdGlvbl90YWc+Ci0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICBtcGw6OnJlbW92ZQotICAgICAgICAgIDwgdHlwZW5hbWUgQmFzZTo6dHlwZXMKLSAgICAgICAgICAsIHR5cGVuYW1lIGRldGFpbDo6Y2xhc3NfdHJhbnNmb3JtPGFfY2xhc3MsTD46OnR5cGU+Ojp0eXBlCi0gICAgICB0eXBlczsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQqLCBMPgotICAgICAgOiBtcGw6OmlmXwotICAgICAgICA8IGRldGFpbDo6cmVwcmVzZW50c19pbXBsPCBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxUIGFfY2xhc3M6OiosIEw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG1lbWJlcl9wb2ludGVyX3RhZyA+Ci0gICAgICAgICwgZGV0YWlsOjpjdl9mdW5jX2Jhc2U8IGRldGFpbDo6Y29tcG9uZW50c19pbXBsPFQgYV9jbGFzczo6KiwgTD4sIFQsIEw+Ci0gICAgICAgICwgY29tcG9uZW50c19ub25fZnVuY19iYXNlCi0gICAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCBhX2NsYXNzOjoqLCBMPgotICAgICAgOiBjb21wb25lbnRzX25vbl9mdW5jX2Jhc2UKLSAgICB7IH07Ci0jZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IGNvbXBvbmVudHNfaW1wbDxUKiwgTD4KLSAgICAgIDogY29tcG9uZW50c19ub25fZnVuY19iYXNlCi0gICAgeyB9OyAKLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQqIGNvbnN0LCBMPiAKLSAgICAgIDogY29tcG9uZW50c19pbXBsPFQqLEw+Ci0gICAgeyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQqIHZvbGF0aWxlLCBMPiAKLSAgICAgIDogY29tcG9uZW50c19pbXBsPFQqLEw+Ci0gICAgeyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQqIGNvbnN0IHZvbGF0aWxlLCBMPiAKLSAgICAgIDogY29tcG9uZW50c19pbXBsPFQqLEw+Ci0gICAgeyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQgY29uc3QsIEw+IAotICAgICAgOiBjb21wb25lbnRzX2ltcGw8VCxMPgotICAgIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IGNvbXBvbmVudHNfaW1wbDxUIHZvbGF0aWxlLCBMPiAKLSAgICAgIDogY29tcG9uZW50c19pbXBsPFQsTD4KLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCBjb25zdCB2b2xhdGlsZSwgTD4gCi0gICAgICA6IGNvbXBvbmVudHNfaW1wbDxULEw+Ci0gICAgeyB9OwotCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQKLSAgICB7IHR5cGVkZWYgVCAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCwgQyBjb25zdD4KLSAgICB7IHR5cGVkZWYgVCBjb25zdCAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCwgQyB2b2xhdGlsZT4KLSAgICB7IHR5cGVkZWYgVCB2b2xhdGlsZSAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCwgQyBjb25zdCB2b2xhdGlsZT4KLSAgICB7IHR5cGVkZWYgVCBjb25zdCB2b2xhdGlsZSAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCAmLCBDPgotICAgIHsgdHlwZWRlZiBUICYgdHlwZTsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEM+Ci0gICAgc3RydWN0IG1lbWJlcl9vYmpfcHRyX3Jlc3VsdDxUICYsIEMgY29uc3Q+Ci0gICAgeyB0eXBlZGVmIFQgJiB0eXBlOyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MgQz4KLSAgICBzdHJ1Y3QgbWVtYmVyX29ial9wdHJfcmVzdWx0PFQgJiwgQyB2b2xhdGlsZT4KLSAgICB7IHR5cGVkZWYgVCAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCAmLCBDIGNvbnN0IHZvbGF0aWxlPgotICAgIHsgdHlwZWRlZiBUICYgdHlwZTsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEMsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IG1lbWJlcl9vYmpfcHRyX2NvbXBvbmVudHMKLSAgICAgIDogbWVtYmVyX29iamVjdF9wb2ludGVyX2Jhc2UKLSAgICB7Ci0gICAgICB0eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPFQgQzo6KiwgTD4gdHlwZTsKLSAgICAgIHR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLQotICAgICAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMT4gZnVuY3Rpb25fYXJpdHk7Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjp2ZWN0b3IyPCB0eXBlbmFtZSBkZXRhaWw6Om1lbWJlcl9vYmpfcHRyX3Jlc3VsdDxULEM+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y2xhc3NfdHJhbnNmb3JtPEMsTD46OnR5cGUgPiB0eXBlczsKLSAgICB9OwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDU2NSkKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfdmFyaWF0aW9ucyBORE5CT09TVF9GVF9wb2ludGVyfE5ETkJPT1NUX0ZUX21lbWJlcl9wb2ludGVyCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDLCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCBDOjoqLCBMPgotICAgICAgOiBtZW1iZXJfb2JqX3B0cl9jb21wb25lbnRzPFQsQyxMPgotICAgIHsgfTsKLQotI2Vsc2UgIAotIyAgIGRlZmluZSBORE5CT09TVF9GVF92YXJpYXRpb25zIE5ETkJPT1NUX0ZUX3BvaW50ZXIKLQotICAgIC8vIFRoaXMgd29ya2Fyb3VuZCByZW1vdmVzIHRoZSBtZW1iZXIgcG9pbnRlciBmcm9tIHRoZSB0eXBlIHRvIGFsbG93IAotICAgIC8vIGRldGVjdGlvbiBvZiBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aCBCQ0MuIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IGNvbXBvbmVudHNfaW1wbDxUIEM6OiosIEw+Ci0gICAgICA6IGRldGFpbDo6cmV0YWdnZWRfaWYKLSAgICAgICAgPCBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlICosIEw+Ci0gICAgICAgICwgcG9pbnRlcl90YWcsIC8qIC0tPiAqLyBtZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl90YWcKLSAgICAgICAgLCBtZW1iZXJfb2JqX3B0cl9jb21wb25lbnRzPFQsQyxMPiA+Ci0gICAgeyB9OwotCi0gICAgLy8gQkNDIGxldHMgdXMgdGVzdCB0aGUgY3YtcXVhbGlmaWNhdGlvbiBvZiBhIGZ1bmN0aW9uIHR5cGUgYnkgdGVtcGxhdGUgCi0gICAgLy8gcGFydGlhbCBzcGVjaWFsaXphdGlvbiAtIHNvIHdlIHVzZSB0aGlzIGJ1ZyBmZWF0dXJlIHRvIGZpbmQgb3V0IHRoZSAKLSAgICAvLyBtZW1iZXIgZnVuY3Rpb24ncyBjdi1xdWFsaWZpY2F0aW9uICh1bmZvcnR1bmF0ZWx5IHRoZXJlIGFyZSBzb21lIAotICAgIC8vIGludmlzaWJsZSBtb2RpZmllcnMgdGhhdCBpbXBvc2Ugc29tZSBsaW1pdGF0aW9ucyBvbiB0aGVzZSB0eXBlcyBldmVuIGlmCi0gICAgLy8gd2UgcmVtb3ZlIHRoZSBxdWFsaWZpZXJzLCBTbyB3ZSBjYW5ub3QgZXhwbG9pdCB0aGUgc2FtZSBidWcgdG8gbWFrZSB0aGUgCi0gICAgLy8gbGlicmFyeSB3b3JrIGZvciBjdi1xdWFsaWZpZWQgZnVuY3Rpb24gdHlwZXMpLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBlbmNvZGVfY3YKLSAgICB7IHR5cGVkZWYgY2hhciAoJiB0eXBlKVsxXTsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDEpOyB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBlbmNvZGVfY3Y8VCBjb25zdCAqPgotICAgIHsgdHlwZWRlZiBjaGFyICgmIHR5cGUpWzJdOyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMik7IH07Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGVuY29kZV9jdjxUIHZvbGF0aWxlICo+Ci0gICAgeyB0eXBlZGVmIGNoYXIgKCYgdHlwZSlbM107IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAzKTsgfTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgZW5jb2RlX2N2PFQgY29uc3Qgdm9sYXRpbGUgKj4gCi0gICAgeyB0eXBlZGVmIGNoYXIgKCYgdHlwZSlbNF07IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSA0KTsgfTsKLQotICAgIC8vIEZvciBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcnMgd2UgaGF2ZSB0byB1c2UgYSBmdW5jdGlvbiB0ZW1wbGF0ZSAocGFydGlhbAotICAgIC8vIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGZvciBhIG1lbWJlciBwb2ludGVyIGRyb3BzIHRoZSBjdiBxdWFsaWZpY2F0aW9uIAotICAgIC8vIG9mIHRoZSBmdW5jdGlvbiB0eXBlKS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgotICAgIHR5cGVuYW1lIGVuY29kZV9jdjxUICo+Ojp0eXBlIG1mcF9jdl90ZXN0ZXIoVCBDOjoqKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBlbmNvZGVfbWZwX2N2Ci0gICAgeyAKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAKLSAgICAgICAgICBzaXplb2YoZGV0YWlsOjptZnBfY3ZfdGVzdGVyKChUKTBMKSkpOyAKLSAgICB9OwotCi0gICAgLy8gQXNzb2NpYXRlIGJpdHMgd2l0aCB0aGUgQ1YgY29kZXMgYWJvdmUuCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3Q+IHN0cnVjdCBjdl90YWdfbWZwX2ltcGw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdGFnX21mcAotICAgICAgOiBkZXRhaWw6OmN2X3RhZ19tZnBfaW1wbAotICAgICAgICA8IDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmVuY29kZV9tZnBfY3Y8VD46OnZhbHVlID4KLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfbWZwX2ltcGw8MT4gOiBub25fY3YgICAgICAgICAgICAgIHsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfbWZwX2ltcGw8Mj4gOiBjb25zdF9ub25fdm9sYXRpbGUgIHsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfbWZwX2ltcGw8Mz4gOiB2b2xhdGlsZV9ub25fY29uc3QgIHsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfbWZwX2ltcGw8ND4gOiBjdl9xdWFsaWZpZWQgICAgICAgIHsgfTsKLQotICAgIC8vIE1ldGFmdW5jdGlvbiB0byBkZWNvZGUgdGhlIGN2IGNvZGUgYW5kIGFwcGx5IGl0IHRvIGEgdHlwZS4KLSAgICAvLyBXZSBhZGQgYSBwb2ludGVyLCBiZWNhdXNlIG90aGVyd2lzZSBjdi1xdWFsaWZpZXJzIHdvbid0IHN0aWNrIChhbm90aGVyIGJ1ZykuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgQ1Y+IHN0cnVjdCBkZWNvZGVfY3Y7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgZGVjb2RlX2N2PFQsMT4gOiBtcGw6OmlkZW50aXR5PFQgKj4gICAgICAgICAge307Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGRlY29kZV9jdjxULDI+IDogbXBsOjppZGVudGl0eTxUIGNvbnN0ICo+ICAgIHt9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBkZWNvZGVfY3Y8VCwzPiA6IG1wbDo6aWRlbnRpdHk8VCB2b2xhdGlsZSAqPiB7fTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgZGVjb2RlX2N2PFQsND4gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbXBsOjppZGVudGl0eTxUIGNvbnN0IHZvbGF0aWxlICo+IHt9OwotCi0gICAgLy8gVGhlIGNsYXNzIHR5cGUgdHJhbnNmb3JtYXRpb24gY29tZXMgYWZ0ZXIgYWRkaW5nIGN2LXF1YWxpZmllcnMuIFdlIGhhdmUKLSAgICAvLyB3cmFwIGl0IHRvIHJlbW92ZSB0aGUgcG9pbnRlciBhZGRlZCBpbiBkZWNvZGVfY3ZfaW1wbC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPiBzdHJ1Y3QgYmNjX2NsYXNzX3RyYW5zZm9ybV9pbXBsOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+IHN0cnVjdCBiY2NfY2xhc3NfdHJhbnNmb3JtX2ltcGw8VCAqLCBMPgotICAgICAgOiBjbGFzc190cmFuc2Zvcm08VCxMPiAKLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBELCB0eXBlbmFtZSBMPiBzdHJ1Y3QgYmNjX2NsYXNzX3RyYW5zZm9ybSAKLSAgICAgIDogYmNjX2NsYXNzX3RyYW5zZm9ybV9pbXBsCi0gICAgICAgIDwgdHlwZW5hbWUgZGVjb2RlX2N2Ci0gICAgICAgICAgPCBUCi0gICAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjplbmNvZGVfbWZwX2N2PEQ+Ojp2YWx1ZSAKLSAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgTAotICAgICAgICA+IAotICAgIHsgfTsKLQotICAgIC8vIEFmdGVyIGV4dHJhY3RpbmcgdGhlIG1lbWJlciBwb2ludGVlIGZyb20gdGhlIHR5cGUgdGhlIGNsYXNzIHR5cGUgaXMgc3RpbGwKLSAgICAvLyBpbiB0aGUgdHlwZSAoc29tZXdoZXJlIC0tIHlvdSB3b24ndCBzZWUgd2l0aCBSVFRJLCB0aGF0IGlzKSBhbmQgdGhhdCB0eXBlCi0gICAgLy8gaXMgZmxhZ2dlZCB1bnVzYWJsZSBhbmQgKm5vdCogaWRlbnRpY2FsIHRvIHRoZSBub25tZW1iZXIgZnVuY3Rpb24gdHlwZS4KLSAgICAvLyBXZSBjYW4sIGhvd2V2ZXIsIGRlY29tcG9zZSB0aGlzIHR5cGUgdmlhIGNvbXBvbmVudHNfaW1wbCBidXQgc3VycHJpc2luZ2x5Ci0gICAgLy8gYSBwb2ludGVyIHRvIHRoZSBjb25zdCBxdWFsaWZpZWQgY2xhc3MgdHlwZSBwb3BzIHVwIGFnYWluIGFzIHRoZSBmaXJzdCAKLSAgICAvLyBwYXJhbWV0ZXIgdHlwZS4gCi0gICAgLy8gV2UgaGF2ZSB0byByZXBsYWNlIHRoaXMgdHlwZSB3aXRoIHRoZSBwcm9wZXJseSBjdi1xdWFsaWZpZWQgYW5kIAotICAgIC8vIHRyYW5zZm9ybWVkIGNsYXNzIHR5cGUsIGludGVncmF0ZSB0aGUgY3YgcXVhbGlmaWNhdGlvbiBpbnRvIHRoZSBiaXRzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIE1GUCwgdHlwZW5hbWUgT3JpZ1QsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IG1mcF9jb21wb25lbnRzOwotCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBPcmlnVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgbWZwX2NvbXBvbmVudHM8QmFzZSxUIEM6OiosT3JpZ1QsTD4gCi0gICAgewotICAgIHByaXZhdGU6Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZnJvbnQ8dHlwZW5hbWUgQmFzZTo6dHlwZXM+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJjY19jbGFzc190cmFuc2Zvcm08QyxPcmlnVCxMPjo6dHlwZSBjbGFzc190eXBlOwotCi0gICAgICB0eXBlZGVmIG1wbDo6dmVjdG9yMjxyZXN1bHRfdHlwZSwgY2xhc3NfdHlwZT4gcmVzdWx0X2FuZF9jbGFzc190eXBlOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICBtcGw6OmFkdmFuY2UKLSAgICAgICAgPCB0eXBlbmFtZSBtcGw6OmJlZ2luPHR5cGVuYW1lIEJhc2U6OnR5cGVzPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6aWZfCi0gICAgICAgICAgPCBtcGw6OmVxdWFsX3RvPCB0eXBlbmFtZSBkZXRhaWw6OmNsYXNzaWZpZXI8T3JpZ1Q+OjpmdW5jdGlvbl9hcml0eQotICAgICAgICAgICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgQmFzZTo6ZnVuY3Rpb25fYXJpdHkgPgotICAgICAgICAgICwgbXBsOjppbnRlZ3JhbF9jPGludCwyPiAsIG1wbDo6aW50ZWdyYWxfYzxpbnQsMT4gCi0gICAgICAgICAgPjo6dHlwZQotICAgICAgICA+Ojp0eXBlCi0gICAgICBmcm9tOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmVuZDx0eXBlbmFtZSBCYXNlOjp0eXBlcz46OnR5cGUgdG87Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjppdGVyYXRvcl9yYW5nZTxmcm9tLHRvPiBwYXJhbV90eXBlczsKLQotICAgICAgdHlwZWRlZiBtcGw6OmpvaW50X3ZpZXc8IHJlc3VsdF9hbmRfY2xhc3NfdHlwZSwgcGFyYW1fdHlwZXM+IHR5cGVzX3ZpZXc7Ci0gICAgcHVibGljOgotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICBtcGw6OnJldmVyc2VfY29weTx0eXBlc192aWV3LCBtcGw6OmZyb250X2luc2VydGVyPCBtcGw6OnZlY3RvcjA8PiA+ID46OnR5cGUgCi0gICAgICB0eXBlczsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgZnVuY3Rpb25fdHlwZXM6OnRhZzwgQmFzZSwgZGV0YWlsOjpjdl90YWdfbWZwPE9yaWdUPiA+OjpiaXRzIAotICAgICAgYml0czsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlOjptYXNrIG1hc2s7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjbGFzc2lmaWVyPE9yaWdUPjo6ZnVuY3Rpb25fYXJpdHkgZnVuY3Rpb25fYXJpdHk7Ci0KLSAgICAgIHR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLSAgICB9OwotCi0gICAgLy8gTm93IHB1dCBpdCBhbGwgdG9nZXRoZXI6IGRldGVjdCBjdi1xdWFsaWZpY2F0aW9uIG9mIGZ1bmN0aW9uIHR5cGVzIGFuZCBkbwotICAgIC8vIHRoZSB3ZWlyZCB0cmFuc2Zvcm1hdGlvbnMgYWJvdmUgZm9yIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBPcmlnVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19iY2MKLSAgICAgIDogbXBsOjppZl8KLSAgICAgICAgPCBkZXRhaWw6OnJlcHJlc2VudHNfaW1wbDwgZGV0YWlsOjpjb21wb25lbnRzX2ltcGw8VCxMPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBtZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl90YWc+Ci0gICAgICAgICwgZGV0YWlsOjptZnBfY29tcG9uZW50czxkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxULEw+LFQsT3JpZ1QsTD4KLSAgICAgICAgLCBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxULEw+Ci0gICAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLSNlbmRpZiAvLyBlbmQgb2YgQk9STEFORCBXT1JLQVJPVU5ECi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfYWxfcGF0aCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwPgotCi0gIH0gfSAvLyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXM6OmRldGFpbAotCi0gIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHMpCi0KLX0gLy8gbmFtZXNwYWNlIDo6Ym9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2FzX21wbF9zZXF1ZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3JldGFnX2RlZmF1bHRfY2MuaHBwPgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY2NfbmFtZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY2NfbmFtZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjIwYTBhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NjX25hbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9DT05GSUdfQ0NfTkFNRVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0NPTkZJR19DQ19OQU1FU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9GVF9CVUlMVElOX0NDX05BTUVTIFwKLSAgKCggSU1QTElDSVQgICAgICAgICAgICwgaW1wbGljaXRfY2MgLCBORE5CT09TVF9QUF9FTVBUWSAgICAgICAgICAgICAgICApKVwKLSAgKCggQ0RFQ0wgICAgICAgICAgICAgICwgY2RlY2xfY2MgICAgLCBORE5CT09TVF9QUF9JREVOVElUWShfX2NkZWNsICAgKSApKVwKLSAgKCggU1REQ0FMTCAgICAgICAgICAgICwgc3RkY2FsbF9jYyAgLCBORE5CT09TVF9QUF9JREVOVElUWShfX3N0ZGNhbGwgKSApKVwKLSAgKCggUEFTQ0FMICAgICAgICAgICAgICwgcGFzY2FsX2NjICAgLCBORE5CT09TVF9QUF9JREVOVElUWShwYXNjYWwgICAgKSApKVwKLSAgKCggRkFTVENBTEwgICAgICAgICAgICwgZmFzdGNhbGxfY2MgLCBORE5CT09TVF9QUF9JREVOVElUWShfX2Zhc3RjYWxsKSApKVwKLSAgKCggQ0xSQ0FMTCAgICAgICAgICAgICwgY2xyY2FsbF9jYyAgLCBORE5CT09TVF9QUF9JREVOVElUWShfX2NscmNhbGwgKSApKVwKLSAgKCggVEhJU0NBTEwgICAgICAgICAgICwgdGhpc2NhbGxfY2MgLCBORE5CT09TVF9QUF9JREVOVElUWShfX3RoaXNjYWxsKSApKVwKLSAgKCggSU1QTElDSVRfVEhJU0NBTEwgICwgdGhpc2NhbGxfY2MgLCBORE5CT09TVF9QUF9FTVBUWSAgICAgICAgICAgICAgICApKSAKLQotLy8gYXBwZW5kIHVzZXItZGVmaW5lZCBjYyBuYW1lcyB0byBidWlsdGluIG9uZXMKLSNpZmRlZiBORE5CT09TVF9GVF9DQ19OQU1FUyAKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfTkFNRVNfU0VRIE5ETkJPT1NUX0ZUX0JVSUxUSU5fQ0NfTkFNRVMgTkROQk9PU1RfRlRfQ0NfTkFNRVMKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfUFJFUFJPQ0VTU0lORyAxCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19OQU1FU19TRVEgTkROQk9PU1RfRlRfQlVJTFRJTl9DQ19OQU1FUwotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb21waWxlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb21waWxlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MTcwYTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY29tcGlsZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9DT05GSUdfQ09NUElMRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0NPTkZJR19DT01QSUxFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotCi0jICAgaWYgTkROQk9PU1RfTVNWQyA8IDEzMTAKLSMgICAgIGVycm9yICJ1bnN1cHBvcnRlZCBjb21waWxlciB2ZXJzaW9uIgotIyAgIGVuZGlmCi0KLSMgICBpZmRlZiBORE5CT09TVF9GVF9BVVRPREVURUNUX0NBTExJTkdfQ09OVkVOVElPTlMKLQotICAgICAgLy8gZW5hYmxlIGNscmNhbGwgY2FsbGluZyBjb3ZlbnRpb24gKGNhbGwgdG8gLk5FVCBtYW5hZ2VkIGNvZGUpIHdoZW4KLSAgICAgIC8vIGNvbXBpbGluZyB3aXRoIC9jbHIgCi0jICAgICBpZiBORE5CT09TVF9NU1ZDID49IDE0MDAgJiYgZGVmaW5lZChfX2NwbHVzcGx1c19jbGkpCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9GVF9DQ19DTFJDQUxMCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19DTFJDQUxMIGNhbGxhYmxlX2J1aWx0aW4KLSMgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0KLSAgICAgIC8vIEludGVsIHg4NiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgY2FsbGluZyBjb252ZW50aW9ucwotIyAgICAgaWZkZWYgX01fSVg4NgotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3MgY2FsbGFibGVfYnVpbHRpbgotIyAgICAgICBpZiBORE5CT09TVF9NU1ZDIDwgMTQwMAotICAgICAgICAgIC8vIHZlcnNpb24gNy4xIGlzIG1pc3NpbmcgYSBrZXl3b3JkIHRvIHNwZWNpZnkgdGhlIHRoaXNjYWxsIGNjIC4uLgotIyAgICAgICAgIGlmbmRlZiBORE5CT09TVF9GVF9DQ19JTVBMSUNJVF9USElTQ0FMTAotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19JTVBMSUNJVF9USElTQ0FMTCBub25fdmFyaWFkaWN8bWVtYmVyfGNhbGxhYmxlX2J1aWx0aW4KLSMgICAgICAgICBpZm5kZWYgTkROQk9PU1RfRlRfQ09ORklHX09LCi0jICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgiSU5GT3wgL0dkIC9HciAvR3ogd2lsbCBjb21waWxlciBvcHRpb25zIHdpbGwgY2F1c2UiKQotIyAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIklORk98IGEgY29tcGlsZSBlcnJvci4iKQotIyAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIklORk98IFJlY29uZmlndXJlIEJvb3N0LkZ1bmN0aW9uVHlwZXMgaW4gdGhpcyBjYXNlLiIpCi0jICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgiSU5GT3wgVGhpcyBtZXNzYWdlIGNhbiBiZSBzdXBwcmVzc2VkIGJ5IGRlZmluaW5nIikKLSMgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJJTkZPfCBORE5CT09TVF9GVF9DT05GSUdfT0suIikKLSMgICAgICAgICBlbmRpZgotIyAgICAgICAgIGVuZGlmCi0jICAgICAgIGVsc2UgCi0gICAgICAgICAgLy8gLi4uaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDgKLSMgICAgICAgICBpZm5kZWYgTkROQk9PU1RfRlRfQ0NfVEhJU0NBTEwKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfVEhJU0NBTEwgbm9uX3ZhcmlhZGljfG1lbWJlcnxjYWxsYWJsZV9idWlsdGluCi0jICAgICAgICAgZW5kaWYKLSMgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfSU5URUxfTElOVVgpCi0KLSMgICBpZiBfX0dOVUNfXyA8IDMKLSMgICAgIGVycm9yICJ1bnN1cHBvcnRlZCBjb21waWxlciB2ZXJzaW9uIgotIyAgIGVuZGlmCi0KLSMgICBpZmRlZiBORE5CT09TVF9GVF9BVVRPREVURUNUX0NBTExJTkdfQ09OVkVOVElPTlMKLQotIyAgICAgaWYgZGVmaW5lZChfX2kzODZfXykKLSMgICAgICAgLy8gc2VlIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzkKLSMgICAgICAgLy8gc2VlIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjkzMjgKLSMgICAgICAgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXyxORE5CT09TVF9URVNURURfQVQoNCkpCi0jICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUIAotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19JTVBMSUNJVCBtZW1iZXJ8Y2FsbGFibGVfYnVpbHRpbgotIyAgICAgICAgIGVuZGlmCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzIG5vbl9tZW1iZXJ8Y2FsbGFibGVfYnVpbHRpbgotIyAgICAgICBlbHNlCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzIGNhbGxhYmxlX2J1aWx0aW4KLSMgICAgICAgZW5kaWYKLSMgICAgIGVsc2UKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19JTVBMSUNJVCBjYWxsYWJsZV9idWlsdGluCi0jICAgICAgIGVuZGlmCi0jICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLSMgICBpZiAoZGVmaW5lZChORE5CT09TVF9GVF9DQ19DREVDTCkgfHwgZGVmaW5lZChORE5CT09TVF9GVF9DT01NT05fWDg2X0NDcykpIFwKLSAgICAgICAgJiYgIWRlZmluZWQoX19jZGVjbCkKLSMgICAgIGRlZmluZSBfX2NkZWNsIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpCi0jICAgZW5kaWYKLSMgICBpZiAoZGVmaW5lZChORE5CT09TVF9GVF9DQ19TVERDQUxMKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzKSkgXAotICAgICAgICAmJiAhZGVmaW5lZChfX3N0ZGNhbGwpCi0jICAgICBkZWZpbmUgX19zdGRjYWxsIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkKLSMgICBlbmRpZgotIyAgIGlmIChkZWZpbmVkKE5ETkJPT1NUX0ZUX0NDX0ZBU1RDQUxMKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzKSkgXAotICAgICAgICAmJiAhZGVmaW5lZChfX2Zhc3RjYWxsKQotIyAgICAgZGVmaW5lIF9fZmFzdGNhbGwgX19hdHRyaWJ1dGVfXygoX19mYXN0Y2FsbF9fKSkKLSMgICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLQotIyAgIGlmIF9fQk9STEFORENfXyA8IDB4NTUwCi0jICAgICBlcnJvciAidW5zdXBwb3J0ZWQgY29tcGlsZXIgdmVyc2lvbiIKLSMgICBlbGlmIF9fQk9STEFORENfXyA+IDB4NTY1Ci0jICAgICBwcmFnbWEgbWVzc2FnZSgiV0FSTklORzogbGlicmFyeSB1bnRlc3RlZCB3aXRoIHRoaXMgY29tcGlsZXIgdmVyc2lvbiIpCi0jICAgZW5kaWYKLQotIyAgIGlmZGVmIE5ETkJPT1NUX0ZUX0FVVE9ERVRFQ1RfQ0FMTElOR19DT05WRU5USU9OUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzIGNhbGxhYmxlX2J1aWx0aW4KLSMgICBlbmRpZgotCi0gICAgLy8gc3ludGFjdGljIHNwZWNpYWxpdGllcyBvZiBjYyBzcGVjaWZpZXIKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfU1lOVEFYKHJlc3VsdCxscGFyZW4sY2Nfc3BlYyx0eXBlX21vZCxuYW1lLHJwYXJlbikgXAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KCkgY2Nfc3BlYygpIGxwYXJlbigpIHR5cGVfbW9kKCkgbmFtZSgpIHJwYXJlbigpCi0jZWxzZQotICAgIC8vIG9ubHkgZW5hYmxlIGRlZmF1bHQgY2FsbGluZyBjb252ZW50aW9uCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUIGNhbGxhYmxlX2J1aWx0aW4KLSNlbmRpZgotCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU4NTUzMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0NPTkZJR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfQ09ORklHX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NvbXBpbGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY2NfbmFtZXMuaHBwPgotCi0vLyBtYXhpbXVtIGFsbG93ZWQgYXJpdHkKLSNpZm5kZWYgTkROQk9PU1RfRlRfTUFYX0FSSVRZCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX01BWF9BUklUWSAyMAotI2VuZGlmCi0KLS8vIHRoZSBtb3N0IGNvbW1vbiBjYWxsaW5nIGNvbnZlbnRpb25zIGZvciB4ODYgYXJjaGl0ZWN0dXJlIGNhbiBiZSBlbmFibGVkIGF0Ci0vLyBvbmNlIGluIHRoZSBjb21waWxlciBjb25maWcKLSNpZmRlZiBORE5CT09TVF9GVF9DT01NT05fWDg2X0NDcwotIyAgIGlmbmRlZiBORE5CT09TVF9GVF9DQ19DREVDTAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19DREVDTCBORE5CT09TVF9GVF9DT01NT05fWDg2X0NDcwotIyAgIGVuZGlmCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0NDX1NURENBTEwKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfU1REQ0FMTCBub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3MKLSMgICBlbmRpZgotIyAgIGlmbmRlZiBORE5CT09TVF9GVF9DQ19GQVNUQ0FMTAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19GQVNUQ0FMTCBub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3MKLSMgICBlbmRpZgotI2VuZGlmCi0KLS8vIHdoZXJlIHRvIHBsYWNlIHRoZSBjYyBzcGVjaWZpZXIgKHRoZSBjb21tb24gd2F5KQotI2lmbmRlZiBORE5CT09TVF9GVF9TWU5UQVgKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfU1lOVEFYKHJlc3VsdCxscGFyZW4sY2Nfc3BlYyx0eXBlX21vZCxuYW1lLHJwYXJlbikgXAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KCkgbHBhcmVuKCkgY2Nfc3BlYygpIHR5cGVfbW9kKCkgbmFtZSgpIHJwYXJlbigpCi0jZW5kaWYKLQotLy8gcGFyYW0gZm9yIG51bGxhcnkgZnVuY3Rpb25zCi0vLyBzZXQgdG8gInZvaWQiIGZvciBjb21waWxlcnMgdGhhdCByZXF1aXJlIG51bGxhcnkgZnVuY3Rpb25zIHRvIHJlYWQgCi0vLyAiUiAodm9pZCkiIGluIHRlbXBsYXRlIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24KLSNpZm5kZWYgTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotI2RlZmluZSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNIAotI2VuZGlmCi0KLS8vIHRoZXJlIGlzIGEgcGVuZGluZyBkZWZlY3QgcmVwb3J0IG9uIGN2IHF1YWxpZmllZCBmdW5jdGlvbiB0eXBlcywgc28gc3VwcG9ydAotLy8gZm9yIHRoZXNlIHR5cGVzIGlzIGRpc2FibGVkLCB1bmxlc3MgZm9yIGNvbXBpbGVycyB3aGVyZSBpdCdzIGtub3duIHRvIHdvcmsKLSNpZm5kZWYgTkROQk9PU1RfRlRfTk9fQ1ZfRlVOQ19TVVBQT1JUCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX05PX0NWX0ZVTkNfU1VQUE9SVCAxCi0jZW5kaWYKLQotLy8gZnVsbCBwcmVwcm9jZXNzaW5nIGltcGxpZXMgcHJlcHJvY2Vzc2luZyBvZiB0aGUgY2NzCi0jaWYgZGVmaW5lZChORE5CT09TVF9GVF9QUkVQUk9DRVNTSU5HX01PREUpICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZUX0NDX1BSRVBST0NFU1NJTkcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX1BSRVBST0NFU1NJTkcgMQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc190cmFuc2Zvcm0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NfdHJhbnNmb3JtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI5NjRkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc190cmFuc2Zvcm0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9DTEFTU19UUkFOU0ZPUk1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9DTEFTU19UUkFOU0ZPUk1fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbHdheXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXVzaW5nIG1wbDo6cGxhY2Vob2xkZXJzOjpfOwotCi0vLyBUcmFuc2Zvcm1hdGlvbiBtZXRhZnVuY3Rpb24gZm9yIHRoZSBjbGFzcyB0eXBlIG9mIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycy4KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY2xhc3NfdHJhbnNmb3JtCi17IHR5cGVkZWYgdHlwZW5hbWUgbXBsOjphcHBseTE8TCxUPjo6dHlwZSB0eXBlOyB9OwotCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotLy8gV2UgY2FuIHNob3J0LWNpcmN1aXQgdGhlIG1lY2hhbmlzbSBpbXBsZW1lbnRlZCBpbiB0aGUgcHJpbWFyeSB0ZW1wbGF0ZSBmb3IgCi0vLyB0aGUgbW9zdCBjb21tb24gbGFtYmRhIGV4cHJlc3Npb24gYW5kIHNhdmUgYm90aCB0aGUgInVuLWxhbWJkYWluZyIgYW5kIHRoZQotLy8gdHlwZSB0cmFpdHMgaW52b2NhdGlvbiAod2Uga25vdyB0aGF0IFQgY2FuIG9ubHkgYmUgYSBjbGFzcyB0eXBlKS4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzX3RyYW5zZm9ybTwgVCwgbXBsOjppZGVudGl0eTxfPiA+Ci17IHR5cGVkZWYgVCB0eXBlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2xhc3NfdHJhbnNmb3JtPCBULCBhZGRfcmVmZXJlbmNlPF8+ID4gCi17IHR5cGVkZWYgVCAmIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjbGFzc190cmFuc2Zvcm08IFQsIGFkZF9wb2ludGVyPF8+ID4KLXsgdHlwZWRlZiBUICogdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzX3RyYW5zZm9ybTwgVCwgcmVtb3ZlX2N2PF8+ID4KLXsgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjbGFzc190cmFuc2Zvcm08IFQsIGFkZF9yZWZlcmVuY2U8IHJlbW92ZV9jdjxfPiA+ID4KLXsgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlICYgdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzX3RyYW5zZm9ybTwgVCwgYWRkX3BvaW50ZXI8IHJlbW92ZV9jdjxfPiA+ID4KLXsgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlICogdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IGNsYXNzX3RyYW5zZm9ybTwgVCwgbXBsOjphbHdheXM8VT4gPgoteyB0eXBlZGVmIFUgdHlwZTsgfTsKLSNlbmRpZgotCi0KLX0gfSB9IC8vIG5hbWVzcGFjZSA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmViZDI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9DTEFTU0lGSUVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfQ0xBU1NJRklFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvcHJvcGVydHlfdGFncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2xhc3NpZmllcjsKLQotdGVtcGxhdGU8c3RkOjpzaXplX3QgUz4gc3RydWN0IGNoYXJfYXJyYXkgeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVtTXTsgfTsKLQotdGVtcGxhdGU8Yml0c190IEZsYWdzLCBiaXRzX3QgQ0NJRCwgc3RkOjpzaXplX3QgQXJpdHk+IHN0cnVjdCBlbmNvZGVfY2hhcnIKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX2FycmF5PAotICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmVuY29kZV9jaGFycl9pbXBsPEZsYWdzLENDSUQsQXJpdHk+Ojp2YWx1ZSAKLSAgPjo6dHlwZSB0eXBlOwotfTsKLQotY2hhciBORE5CT09TVF9UVF9ERUNMIGNsYXNzaWZpZXJfaW1wbCguLi4pOwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfcG9pbnRlcnxcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIKLQotI2RlZmluZSBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uKGNjLG5hbWUpIE5ETkJPT1NUX0ZUX1NZTlRBWCggXAotICAgIFIgTkROQk9PU1RfUFBfRU1QVFksTkROQk9PU1RfUFBfTFBBUkVOLGNjLCogTkROQk9PU1RfUFBfRU1QVFksbmFtZSxORE5CT09TVF9QUF9SUEFSRU4pCi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9wb2ludGVyKGNjLG5hbWUpIE5ETkJPT1NUX0ZUX1NZTlRBWCggXAotICAgIFIgTkROQk9PU1RfUFBfRU1QVFksTkROQk9PU1RfUFBfTFBBUkVOLGNjLCoqIE5ETkJPT1NUX1BQX0VNUFRZLG5hbWUsTkROQk9PU1RfUFBfUlBBUkVOKQotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIoY2MsbmFtZSkgTkROQk9PU1RfRlRfU1lOVEFYKCBcCi0gICAgUiBORE5CT09TVF9QUF9FTVBUWSxORE5CT09TVF9QUF9MUEFSRU4sY2MsVDA6OioqIE5ETkJPT1NUX1BQX0VNUFRZLG5hbWUsTkROQk9PU1RfUFBfUlBBUkVOKQotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX2FsX3BhdGggbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbAotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9sb29wLmhwcD4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzaWZpZXJfYml0cwotewotICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD46OnR5cGUgdGVzdGVyOwotCi0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsdmFsdWUgPSAoYml0c190KXNpemVvZigKLSAgICBuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y2xhc3NpZmllcl9pbXBsKCYgdGVzdGVyKSAKLSAgKS0xKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjbGFzc2lmaWVyCi17Ci0gIHR5cGVkZWYgZGV0YWlsOjpjb25zdGFudDwKLSAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpkZWNvZGVfYml0czwKLSAgICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmNsYXNzaWZpZXJfYml0czxUPjo6dmFsdWUKLSAgICA+Ojp0YWdfYml0cyA+IAotICBiaXRzOwotCi0gIHR5cGVkZWYgZGV0YWlsOjpmdWxsX21hc2sgbWFzazsKLSAKLSAgdHlwZWRlZiBkZXRhaWw6OmNvbnN0YW50PAotICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmRlY29kZV9iaXRzPAotICAgICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y2xhc3NpZmllcl9iaXRzPFQ+Ojp2YWx1ZQotICAgID46OmFyaXR5ID4gCi0gIGZ1bmN0aW9uX2FyaXR5OwotfTsKLQotCi0KLX0gfSB9IC8vIG5hbWVzcGFjZSA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkxMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDE3N2EyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDY+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDk+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkxMF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjdlYzUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw4PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsOT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MjBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkyMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY0MWVlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkyMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MTBfMC5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEzPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxND4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE2PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE5PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkyMF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTIwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDc5OWU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTIwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkxMF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDExPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkzMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTMwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTlmMmIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTMwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkyMF8wLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIxPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjM+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjY+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjk+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTMwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MzBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwYzc4MzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MzBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTIwXzEuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjE+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIzPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjQ+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI2PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjc+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI5PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzA+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTQwXzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NDBfMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZDk0NmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NDBfMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTMwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzE+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMyPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzQ+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM1PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzc+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM4PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzOT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDA+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NDBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk0MF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI0ZTMzNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk0MF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MzBfMS5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMyPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzM+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzND4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM1PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzY+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM4PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzk+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NTBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk1MF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYzYjhmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk1MF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NDBfMC5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQzPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0ND4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ2PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0Nz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ5PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3ICwgdHlwZW5hbWUgVDQ4ICwgdHlwZW5hbWUgVDQ5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1MD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ICwgVDQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk1MF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTUwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2QzM2RmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTUwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk0MF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQxPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0Mz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0Nj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3ICwgdHlwZW5hbWUgVDQ4ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggLCB0eXBlbmFtZSBUNDkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ICwgVDQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL21hc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvbWFzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBjMmVjNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvbWFzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLSNpZiBORE5CT09TVF9GVF9BUklUWV9MT09QX1BSRUZJWAotCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9DTEFTU0lGSUVSX0lNUExfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfQ0xBU1NJRklFUl9JTVBMX01BU1RFUl9IUFBfSU5DTFVERUQKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcD4KLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfbmFtZQotCi0jZWxpZiBORE5CT09TVF9GVF9BUklUWV9MT09QX0lTX0lURVJBVElORwotCi10ZW1wbGF0ZTwgTkROQk9PU1RfRlRfdHBsYXJncyhORE5CT09TVF9QUF9JREVOVElUWSh0eXBlbmFtZSkpID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCxORE5CT09TVF9GVF9hcml0eT46OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF90eXBlKTsKLQotI2VsaWYgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9TVUZGSVgKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfbmFtZQotCi0jZWxzZQotIyAgIGVycm9yICJhdHRlbXB0IHRvIHVzZSBhcml0eSBsb29wIG1hc3RlciBmaWxlIHdpdGhvdXQgbG9vcCIKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2FzX21wbF9zZXF1ZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2FzX21wbF9zZXF1ZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YzJhZjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19hc19tcGxfc2VxdWVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9ERVRBSUxfQ09NUE9ORU5UU19BU19NUExfU0VRVUVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9DT01QT05FTlRTX0FTX01QTF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2VtcHR5X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcG9wX2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfYmFja19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wb3BfYmFja19md2QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2l6ZV9pbXBsCi08IGZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyA+Ci17Ci0gIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgOiBtcGw6OnNpemUgPHR5cGVuYW1lIFM6OnR5cGVzPgotICB7IH07Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgZW1wdHlfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgIDogbXBsOjplbXB0eSA8dHlwZW5hbWUgUzo6dHlwZXM+Ci0gIHsgfTsKLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBmcm9udF9pbXBsCi08IGZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyA+Ci17Ci0gIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgOiBtcGw6OmZyb250IDx0eXBlbmFtZSBTOjp0eXBlcz4KLSAgeyB9OwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGJhY2tfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgIDogbXBsOjpiYWNrIDx0eXBlbmFtZSBTOjp0eXBlcz4KLSAgeyB9OwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGF0X2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMsIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICA6IG1wbDo6YXQgPHR5cGVuYW1lIFM6OnR5cGVzLCBOID4KLSAgeyB9OwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGJlZ2luX2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICA6IG1wbDo6YmVnaW4gPHR5cGVuYW1lIFM6OnR5cGVzPgotICB7IH07Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgZW5kX2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICA6IG1wbDo6ZW5kIDx0eXBlbmFtZSBTOjp0eXBlcz4KLSAgeyB9OwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGNsZWFyX2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICBzdHJ1Y3QgYXBwbHkKLSAgICA6IFMKLSAgewotICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6Y2xlYXI8IHR5cGVuYW1lIFM6OnR5cGVzID46OnR5cGUgdHlwZXM7Ci0gIH07Ci19OwotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUywgdHlwZW5hbWUgVCA+Ci0gIHN0cnVjdCBhcHBseQotICAgIDogUwotICB7IAotICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6cHVzaF9mcm9udDwgdHlwZW5hbWUgUzo6dHlwZXMsIFQgPjo6dHlwZSB0eXBlczsKLSAgfTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICBzdHJ1Y3QgYXBwbHkKLSAgICA6IFMKLSAgewotICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6cG9wX2Zyb250PCB0eXBlbmFtZSBTOjp0eXBlcyA+Ojp0eXBlIHR5cGVzOyAKLSAgfTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMsIHR5cGVuYW1lIFQgPgotICBzdHJ1Y3QgYXBwbHkKLSAgICA6IFMKLSAgewotICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6cHVzaF9iYWNrPCB0eXBlbmFtZSBTOjp0eXBlcywgVCA+Ojp0eXBlIHR5cGVzOyAKLSAgfTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gIHN0cnVjdCBhcHBseQotICAgIDogUwotICB7Ci0gICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpwb3BfYmFjazwgdHlwZW5hbWUgUzo6dHlwZXMgPjo6dHlwZSB0eXBlczsgCi0gIH07Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIDo6bmRuYm9vc3Q6Om1wbAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MTBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkxMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM3OTkzZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkxMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTwgUiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjwgUiAsIFQwID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzwgUiAsIFQwICwgVDEgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0PCBSICwgVDAgLCBUMSAsIFQyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsND4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNTwgUiAsIFQwICwgVDEgLCBUMiAsIFQzID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNjwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I3PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yODwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yOTwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxMDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDEwPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxMTwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ID4gdHlwZXM7Ci19OwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkxMF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTEwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Yjg5NjhhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTEwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSAsIFQyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I1PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNjwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSAsIFQyICwgVDMgLCBUNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNzwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw3PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I4PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yOTwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsOT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTA8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjExPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MjBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkyMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE1MzBkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkyMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTEwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjEyPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTM8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDEzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxNDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE1PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTY8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDE2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxNzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE4PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTk8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDE5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyMDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIxPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgPiB0eXBlczsKLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTIwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MjBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNjc2M2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MjBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkxMF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjEyPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTI+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjEzPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE0PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE1PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTU+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE2PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE3PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE4PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTg+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE5PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIwPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIxPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MzBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkzMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ0OTc5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkzMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTIwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIyPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjM8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDIzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyNDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI1PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjY8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDI2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyNzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI4PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjk8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDI5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzMDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMxPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgPiB0eXBlczsKLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTMwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MzBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYzM5M2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MzBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkyMF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIyPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjI+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIzPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI0PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI1PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjU+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI2PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI3PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI4PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjg+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI5PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMwPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMxPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NDBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk0MF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ4NTBhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk0MF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTMwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMyPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzM8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDMzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzNDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM1PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzY8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDM2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzNzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM4PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzk8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDM5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0MDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQxPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgPiB0eXBlczsKLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTQwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NDBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmN2Y0OWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NDBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkzMF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMyPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzI+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMzPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM0PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM1PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzU+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM2PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM3PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM4PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzg+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM5PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQwPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQxPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NTBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk1MF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY5ZjZiNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk1MF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTQwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQyPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0Mj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDM8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDQzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0NDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ1PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0NT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDY8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDQ2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0NzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ4PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0OD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDk8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDQ5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I1MDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyAsIHR5cGVuYW1lIFQ0OCAsIHR5cGVuYW1lIFQ0OSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ICwgVDQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNTA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjUxPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggLCBUNDkgPiB0eXBlczsKLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTUwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NTBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzN2E1NmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NTBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk0MF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQyPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDI+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQzPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ0PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ1PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDU+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ2PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ3PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ4PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDg+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ5PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjUwPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggLCB0eXBlbmFtZSBUNDksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggLCBUNDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNTA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjUxPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL21hc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvbWFzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FhZjYzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvbWFzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLSNpZiAgIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfUFJFRklYCi0KLSMgICBpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX0NPTVBPTkVOVFNfSU1QTF9NQVNURVJfSFBQX0lOQ0xVREVECi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9DT01QT05FTlRTX0lNUExfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfbmFtZQotCi0jICAgaWYgIU5ETkJPT1NUX0ZUX21mcAotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfdHlwZXMgXAotICAgICAgICAgIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfRlRfYXJpdHkpIE5ETkJPT1NUX0ZUX3BhcmFtcyhORE5CT09TVF9QUF9FTVBUWSkKLSMgICBlbHNlCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlcyBcCi0gICAgICAgICAgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPjo6dHlwZSBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX0ZUX2FyaXR5KSkgXAotICAgICAgICAgIE5ETkJPT1NUX0ZUX3BhcmFtcyhORE5CT09TVF9QUF9FTVBUWSkKLQotIyAgIGVuZGlmCi0KLSNlbGlmIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfSVNfSVRFUkFUSU5HCi0KLXRlbXBsYXRlPCBORE5CT09TVF9GVF90cGxhcmdzKE5ETkJPT1NUX1BQX0lERU5USVRZKHR5cGVuYW1lKSksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3R5cGUsIEw+Ci17Ci0gIHR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci0gIHR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotCi0gIHR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfdHlwZSwgTD4gdHlwZTsKLSAgdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LE5ETkJPT1NUX0ZUX2FyaXR5PiBmdW5jdGlvbl9hcml0eTsKLQotICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChtcGw6OnZlY3RvcixORE5CT09TVF9GVF9uKTwgTkROQk9PU1RfRlRfdHlwZXMgPiB0eXBlczsKLX07Ci0KLSNlbGlmIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfU1VGRklYCi0KLSMgICB1bmRlZiBORE5CT09TVF9GVF90eXBlcwotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfbmFtZQotCi0jZWxzZQotIyAgIGVycm9yICJhdHRlbXB0IHRvIHVzZSBhcml0eSBsb29wIG1hc3RlciBmaWxlIHdpdGhvdXQgbG9vcCIKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jdl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY3ZfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBlN2JmMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jdl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9ERVRBSUxfQ1ZfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfQ1ZfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1ODIpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3Byb3BlcnR5X3RhZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmICEgKGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDU4MikpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHMgCi17IHR5cGVkZWYgbm9uX2N2IHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgJj4gICAgIAoteyB0eXBlZGVmIG5vbl9jdiB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUICo+ICAgIAoteyB0eXBlZGVmIG5vbl9jdiB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUICogY29uc3Q+IAoteyB0eXBlZGVmIG5vbl9jdiB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUICogdm9sYXRpbGU+IAoteyB0eXBlZGVmIG5vbl9jdiB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUICogY29uc3Qgdm9sYXRpbGU+IAoteyB0eXBlZGVmIG5vbl9jdiB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3Q+IAoteyB0eXBlZGVmIGNvbnN0X25vbl92b2xhdGlsZSB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIGNvbnN0ICY+Ci17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3QgKj4gCi17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3QgKiBjb25zdD4gCi17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3QgKiB2b2xhdGlsZT4gCi17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3QgKiBjb25zdCB2b2xhdGlsZT4gCi17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCB2b2xhdGlsZT4gIAoteyB0eXBlZGVmIHZvbGF0aWxlX25vbl9jb25zdCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIHZvbGF0aWxlICY+ICAKLXsgdHlwZWRlZiB2b2xhdGlsZV9ub25fY29uc3QgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCB2b2xhdGlsZSAqPiAKLXsgdHlwZWRlZiB2b2xhdGlsZV9ub25fY29uc3QgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCB2b2xhdGlsZSAqIGNvbnN0PiAKLXsgdHlwZWRlZiB2b2xhdGlsZV9ub25fY29uc3QgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCB2b2xhdGlsZSAqIHZvbGF0aWxlPiAKLXsgdHlwZWRlZiB2b2xhdGlsZV9ub25fY29uc3QgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCB2b2xhdGlsZSAqIGNvbnN0IHZvbGF0aWxlPiAKLXsgdHlwZWRlZiB2b2xhdGlsZV9ub25fY29uc3QgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIGNvbnN0IHZvbGF0aWxlPiAgIAoteyB0eXBlZGVmIGN2X3F1YWxpZmllZCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIGNvbnN0IHZvbGF0aWxlICY+Ci17IHR5cGVkZWYgY3ZfcXVhbGlmaWVkIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3Qgdm9sYXRpbGUgKj4KLXsgdHlwZWRlZiBjdl9xdWFsaWZpZWQgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCBjb25zdCB2b2xhdGlsZSAqIGNvbnN0PgoteyB0eXBlZGVmIGN2X3F1YWxpZmllZCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIGNvbnN0IHZvbGF0aWxlICogdm9sYXRpbGU+Ci17IHR5cGVkZWYgY3ZfcXVhbGlmaWVkIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3Qgdm9sYXRpbGUgKiBjb25zdCB2b2xhdGlsZT4KLXsgdHlwZWRlZiBjdl9xdWFsaWZpZWQgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotI2Vsc2UKLXRlbXBsYXRlPHN0ZDo6c2l6ZV90PiBzdHJ1Y3QgY3ZfdGFnX2ltcGw7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGN2X3RhZ19pbXBsPDE+IHsgdHlwZWRlZiBub25fY3YgdHlwZTt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgY3ZfdGFnX2ltcGw8Mj4geyB0eXBlZGVmIGNvbnN0X25vbl92b2xhdGlsZSB0eXBlOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgY3ZfdGFnX2ltcGw8Mz4geyB0eXBlZGVmIHZvbGF0aWxlX25vbl9jb25zdCB0eXBlOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgY3ZfdGFnX2ltcGw8ND4geyB0eXBlZGVmIGN2X3F1YWxpZmllZCB0eXBlOyB9OwotCi10eXBlZGVmIGNoYXIgKCYgY2FzZV8xKVsxXTsKLXR5cGVkZWYgY2hhciAoJiBjYXNlXzIpWzJdOwotdHlwZWRlZiBjaGFyICgmIGNhc2VfMylbM107Ci10eXBlZGVmIGNoYXIgKCYgY2FzZV80KVs0XTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2FzZV8xIHN3aXRjaF9jdihUICopOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2FzZV8yIHN3aXRjaF9jdihUIGNvbnN0ICopOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2FzZV8zIHN3aXRjaF9jdihUIHZvbGF0aWxlICopOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2FzZV80IHN3aXRjaF9jdihUIGNvbnN0IHZvbGF0aWxlICopOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUICAgICAgICAgICAgICAgICogcmVmX3RvX3B0cihUICYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb25zdCAgICAgICAgICAqIHJlZl90b19wdHIoVCBjb25zdCAmKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgdm9sYXRpbGUgICAgICAgKiByZWZfdG9fcHRyKFQgdm9sYXRpbGUgJik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnN0IHZvbGF0aWxlICogcmVmX3RvX3B0cihUIGNvbnN0IHZvbGF0aWxlICYpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUICAgICAgICAgICAgICAgICogcmVmX3RvX3B0cihUICogY29uc3Qgdm9sYXRpbGUgJik7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY3ZfY29kZQotewotICBzdGF0aWMgVCBfdDsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IAotICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnN3aXRjaF9jdigKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnJlZl90b19wdHIoX3QpICkgKSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzIAotewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjdl90YWdfaW1wbDwgCi0gICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y3ZfY29kZTxUPjo6dmFsdWUgPjo6dHlwZQotICB0YWc7Ci0KLSAgLy8gbWF5IHJlcXVpcmUgQm9vc3QuVHlwZVRyYWl0cyBicm9rZW4gY29tcGlsZXIgc3BlY2lhbGl6YXRpb25zCi0gIC8vIHRvIHdvcmsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSAKLSAgICAgICAgICAgICAgPjo6dHlwZSAKLSAgICAgICAgICA+Ojp0eXBlIHR5cGU7IAotfTsKLSNlbmRpZgotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWwKLQotI2VuZGlmCi0gCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX2RlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MTY0ZDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvYWxpYXNlc19kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb25zCi0KLSNkZWZpbmUgY2FsbGFibGVfYnVpbHRpbiBORE5CT09TVF9GVF9jYWxsYWJsZV9idWlsdGluCi0jZGVmaW5lIG1lbWJlciAgICAgICAgICAgTkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIKLSNkZWZpbmUgbm9uX21lbWJlciAgICAgICBORE5CT09TVF9GVF9ub25fbWVtYmVyCi0jZGVmaW5lIHZhcmlhZGljICAgICAgICAgTkROQk9PU1RfRlRfdmFyaWFkaWMKLSNkZWZpbmUgbm9uX3ZhcmlhZGljICAgICBORE5CT09TVF9GVF9ub25fdmFyaWFkaWMKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvYWxpYXNlc191bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX3VuZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ0ZTU3Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX3VuZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9ucwotCi0jdW5kZWYgY2FsbGFibGVfYnVpbHRpbgotI3VuZGVmIG1lbWJlcgotI3VuZGVmIG5vbl9tZW1iZXIKLSN1bmRlZiB2YXJpYWRpYwotI3VuZGVmIG5vbl92YXJpYWRpYwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjczMzQ0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb25zCi0KLS8vIFR5cGUgZW5jb2Rpbmc6Ci0vLwotLy8gYml0IDA6IGNhbGxhYmxlIGJ1aWx0aW4KLS8vIGJpdCAxOiBub24gbWVtYmVyCi0vLyBiaXQgMjogbmFrZWQgZnVuY3Rpb24KLS8vIGJpdCAzOiBwb2ludGVyCi0vLyBiaXQgNDogcmVmZXJlbmNlCi0vLyBiaXQgNTogbWVtYmVyIHBvaW50ZXIKLS8vIGJpdCA2OiBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcgotLy8gYml0IDc6IG1lbWJlciBvYmplY3QgcG9pbnRlcgotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfbWFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMGZmIC8vIDExMTEgMTExMSAKLSNkZWZpbmUgTkROQk9PU1RfRlRfY2FsbGFibGVfYnVpbHRpbiAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgLy8gMDAwMCAwMDAxCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX25vbl9tZW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyIC8vIDAwMDAgMDAxMAotI2RlZmluZSBORE5CT09TVF9GVF9mdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAvLyAwMDAwIDAxMTEKLSNkZWZpbmUgTkROQk9PU1RfRlRfcG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMGIgLy8gMDAwMCAxMDExCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3JlZmVyZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEzIC8vIDAwMDEgMDAxMQotI2RlZmluZSBORE5CT09TVF9GVF9ub25fbWVtYmVyX2NhbGxhYmxlX2J1aWx0aW4gICAgICAgICAgMHgwMDAwMDAwMyAvLyAwMDAwIDAwMTEKLSNkZWZpbmUgTkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAgLy8gMDAxMCAwMDAwCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyICAgICAgICAgICAgICAweDAwMDAwMDYxIC8vIDAxMTAgMDAwMQotI2RlZmluZSBORE5CT09TVF9GVF9tZW1iZXJfb2JqZWN0X3BvaW50ZXIgICAgICAgICAgICAgICAgMHgwMDAwMDBhMyAvLyAxMDEwIDAwMDEKLSNkZWZpbmUgTkROQk9PU1RfRlRfbWVtYmVyX29iamVjdF9wb2ludGVyX2ZsYWdzICAgICAgICAgIDB4MDAwMDAyYTMKLQotI2RlZmluZSBORE5CT09TVF9GVF92YXJpYWRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAotI2RlZmluZSBORE5CT09TVF9GVF9ub25fdmFyaWFkaWMgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAotI2RlZmluZSBORE5CT09TVF9GVF92YXJpYWRpY19tYXNrICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDMwMAotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3ZvbGF0aWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfZGVmYXVsdF9jYyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAKLSNkZWZpbmUgTkROQk9PU1RfRlRfY2NfbWFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBmZjgwMDAKLQotI2RlZmluZSBORE5CT09TVF9GVF9raW5kX21hc2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBmYyAKLQotI2RlZmluZSBORE5CT09TVF9GVF9mbGFnc19tYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMGZmZgotI2RlZmluZSBORE5CT09TVF9GVF9mdWxsX21hc2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMGZmMGZmZgotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX2FyaXR5X3NoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAyNAotI2RlZmluZSBORE5CT09TVF9GVF9hcml0eV9tYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZjAwMDAwMAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy91bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy91bmRlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMTIzMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvdW5kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotI3VuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfbWFzawotI3VuZGVmIE5ETkJPT1NUX0ZUX2tpbmRfbWFzawotI3VuZGVmIE5ETkJPT1NUX0ZUX2NhbGxhYmxlX2J1aWx0aW4KLSN1bmRlZiBORE5CT09TVF9GVF9ub25fbWVtYmVyCi0jdW5kZWYgTkROQk9PU1RfRlRfZnVuY3Rpb24KLSN1bmRlZiBORE5CT09TVF9GVF9wb2ludGVyCi0jdW5kZWYgTkROQk9PU1RfRlRfcmVmZXJlbmNlCi0jdW5kZWYgTkROQk9PU1RfRlRfbm9uX21lbWJlcl9jYWxsYWJsZV9idWlsdGluCi0jdW5kZWYgTkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIKLSN1bmRlZiBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotI3VuZGVmIE5ETkJPT1NUX0ZUX21lbWJlcl9vYmplY3RfcG9pbnRlcgotI3VuZGVmIE5ETkJPT1NUX0ZUX21lbWJlcl9vYmplY3RfcG9pbnRlcl9mbGFncwotCi0jdW5kZWYgTkROQk9PU1RfRlRfdmFyaWFkaWMKLSN1bmRlZiBORE5CT09TVF9GVF9ub25fdmFyaWFkaWMKLSN1bmRlZiBORE5CT09TVF9GVF92YXJpYWRpY19tYXNrCi0KLSN1bmRlZiBORE5CT09TVF9GVF9jb25zdAotI3VuZGVmIE5ETkJPT1NUX0ZUX3ZvbGF0aWxlCi0KLSN1bmRlZiBORE5CT09TVF9GVF9kZWZhdWx0X2NjCi0jdW5kZWYgTkROQk9PU1RfRlRfY2NfbWFzawotCi0jdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3NfbWFzawotI3VuZGVmIE5ETkJPT1NUX0ZUX2Z1bGxfbWFzawotCi0jdW5kZWYgTkROQk9PU1RfRlRfYXJpdHlfbWFzawotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9hcml0eV9sb29wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2FyaXR5X2xvb3AuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmI1OTFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2FyaXR5X2xvb3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfUFJFUFJPQ0VTU0lOR19NT0RFCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX21mcCAgICAgICAgMCBvciAxIDw9PiBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcj8KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfdHlwZV9uYW1lICBORE5CT09TVF9GVF90eXBlIC0tPiAiUiAoKiAuLi5fdHlwZV9uYW1lKSgpIiAocGFzczIpCi0jZW5kaWYKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotI2lmZGVmIF9fV0FWRV9fCi0jICAgcHJhZ21hIHdhdmUgb3B0aW9uKHByZXNlcnZlOiAwKQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9JU19JVEVSQVRJTkcKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9BTF9QUkVQUk9DRVNTRUQgXAotICAgICAgICBORE5CT09TVF9GVF9BTF9GSUxFKE5ETkJPT1NUX0ZUX2FsX3BhdGgsTkROQk9PU1RfRlRfRlJPTV9BUklUWSxORE5CT09TVF9GVF9tZnApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQUxfRklMRShiYXNlX3BhdGgsbWF4X2FyaXR5LG1mcCkgXAotICAgICAgICBORE5CT09TVF9GVF9BTF9GSUxFX0koYmFzZV9wYXRoLG1heF9hcml0eSxtZnApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0FMX0ZJTEVfSShiYXNlX3BhdGgsbWF4X2FyaXR5LG1mcCkgXAotICAgICAgICA8YmFzZV9wYXRoL2FyaXR5ICMjIG1heF9hcml0eSAjIyBfICMjIG1mcC5ocHA+Ci0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9GVF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICAgIGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDEwCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9GUk9NX0FSSVRZIDAgCi0jICAgICBlbGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDIwCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9GUk9NX0FSSVRZIDEwCi0jICAgICBlbGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDMwCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9GUk9NX0FSSVRZIDIwCi0jICAgICBlbGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDQwCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9GUk9NX0FSSVRZIDMwCi0jICAgICBlbmRpZgotCi0jICAgICBpZiBORE5CT09TVF9GVF9GUk9NX0FSSVRZCi0jICAgICAgIGluY2x1ZGUgTkROQk9PU1RfRlRfQUxfUFJFUFJPQ0VTU0VECi0jICAgICBlbmRpZgotCi0jICAgZWxpZiAhZGVmaW5lZChORE5CT09TVF9GVF9GUk9NX0FSSVRZKSAvLyBzaW5nbGUgcGFzcyBwcmVwcm9jZXNzaW5nCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfRlJPTV9BUklUWSAwCi0KLSMgICBlbGlmIE5ETkJPT1NUX0ZUX0ZST01fQVJJVFkgPiAwICAgICAgIC8vIGFyaXR5MjAgaW5jbHVkZXMgYXJpdHkxMAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGluY2x1ZGUgTkROQk9PU1RfRlRfQUxfUFJFUFJPQ0VTU0VECi0jICAgZW5kaWYKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX0FMX1BSRVBST0NFU1NFRAotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfQUxfRklMRQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX0FMX0ZJTEVfSQotCi0jICAgaWYgTkROQk9PU1RfRlRfTUFYX0FSSVRZID4gTkROQk9PU1RfRlRfRlJPTV9BUklUWQotCi0jICAgICBpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX0FSSVRZX0xPT1BfSFBQX0lOQ0xVREVECi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfREVUQUlMX0FSSVRZX0xPT1BfSFBQX0lOQ0xVREVECi0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyAgICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIyAgICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2V4cGFuZC5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcD4KLSMgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwPgotIyAgICAgZW5kaWYKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0FMX0lOQ0xVREVfRklMRSA8TkROQk9PU1RfRlRfYWxfcGF0aC9tYXN0ZXIuaHBwPgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9QUkVGSVggMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9GVF9BTF9JTkNMVURFX0ZJTEUKLSMgICAgIHVuZGVmICBORE5CT09TVF9GVF9BUklUWV9MT09QX1BSRUZJWAotCi0jICAgICBpZiAhTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xIE5ETkJPT1NUX0ZUX0FMX0lOQ0xVREVfRklMRQotIyAgICAgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yIE5ETkJPT1NUX0ZUX0FMX0lOQ0xVREVfRklMRQotIyAgICAgZWxzZQotIyAgICAgICBlcnJvciAibG9vcHMgbmVzdGVkIHRvbyBkZWVwbHkiCi0jICAgICBlbmRpZgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfYXJpdHkgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9uICAgICBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfRlRfYXJpdHkpCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlIFwKLSAgICAgICAgICBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsTkROQk9PU1RfRlRfdHlwZV9uYW1lIE5ETkJPT1NUX1BQX0VNUFRZKVwKLSAgICAgICAgICAgICAgIChORE5CT09TVF9GVF9wYXJhbXMoTkROQk9PU1RfUFBfRU1QVFkpIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3RwbGFyZ3MocHJlZngpIFwKLSAgICAgICAgICBwcmVmeCgpIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfRlRfYXJpdHkscHJlZngoKSBUKQotCi0jICAgICBpZiAhTkROQk9PU1RfRlRfbWZwCi0KLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3BhcmFtcyhwcmVmeCkgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfRlRfYXJpdHksTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMsIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX1BQX1RVUExFX0VBVCgyKSkoIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlRfYXJpdHkscHJlZngoKSBUKSAKLSMgICAgIGVsc2UKLQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfRlRfcGFyYW1zKHByZWZ4KSBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKE5ETkJPT1NUX0ZUX2FyaXR5LHByZWZ4KCkgVCkKLQotIyAgICAgZW5kaWYKLQotIyAgICAgaWYgIU5ETkJPT1NUX0ZUX0ZST01fQVJJVFkgCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTIChORE5CT09TVF9GVF9tZnAsIE5ETkJPT1NUX0ZUX01BWF9BUklUWSkKLSMgICAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMgXAotICAgICAgICAgICAgKE5ETkJPT1NUX0ZUX0ZST01fQVJJVFkrMSwgTkROQk9PU1RfRlRfTUFYX0FSSVRZKQotIyAgICAgZW5kaWYKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfSVNfSVRFUkFUSU5HIDEKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0jICAgICB1bmRlZiAgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9JU19JVEVSQVRJTkcKLQotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfYXJpdHkKLSMgICAgIHVuZGVmIE5ETkJPT1NUX0ZUX3BhcmFtcwotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfdHBsYXJncwotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZQotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9TVUZGSVggMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9GVF9BTF9JTkNMVURFX0ZJTEUKLSMgICAgIHVuZGVmICBORE5CT09TVF9GVF9BUklUWV9MT09QX1NVRkZJWAotCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF9BTF9JTkNMVURFX0ZJTEUKLSMgICBlbmRpZgotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfRlJPTV9BUklUWQotCi0jZWxzZQotIyAgIGVycm9yICJhdHRlbXB0IHRvIG5lc3QgYXJpdHkgbG9vcHMiCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9tYXN0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9tYXN0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODAwZTBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2NjX2xvb3AvbWFzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbnMKLQotI2lmZGVmIF9fV0FWRV9fCi0vLyB0aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGZyb20gdGhlIG1hc3Rlci5ocHAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKLSMgICBwcmFnbWEgd2F2ZSBvcHRpb24ocHJlc2VydmU6IDApCi0jZW5kaWYKLQotCi0jaWYgIU5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9DQ19MT09QX01BU1RFUl9IUFBfSU5DTFVERUQKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfREVUQUlMX0NDX0xPT1BfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NjX25hbWVzLmhwcD4KLQotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9leHBhbmQuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgICBlbmRpZgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2RlZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfZGVmLmhwcD4KLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfRklMRU5BTUVfMSBcCi0gICAgICAgIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9tYXN0ZXIuaHBwPgotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUyBcCi0gICAgICAgICgwLE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX0ZUX0NDX05BTUVTX1NFUSktMSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCkgJiYgTkROQk9PU1RfRlRfQ0NfUFJFUFJPQ0VTU0lORwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDEKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGltcGxpY2l0X2NjCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfY2MgTkROQk9PU1RfUFBfRU1QVFkKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9jb25kIGNhbGxhYmxlX2J1aWx0aW4KLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgICAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jICAgZWxpZiAhZGVmaW5lZChORE5CT09TVF9GVF9jb25maWdfdmFsaWQpIC8vIGFuZCBnZW5lcmF0aW5nIHByZXByb2Nlc3NlZCBmaWxlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgaWZuZGVmIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZAotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDEKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGltcGxpY2l0X2NjCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfY2MgTkROQk9PU1RfUFBfRU1QVFkKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9jb25kIGNhbGxhYmxlX2J1aWx0aW4KLSNkZWZpbmUgXygpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBpbmNsdWRlIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSN1bmRlZiBfCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jb25kCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jYwotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBlbHNlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jb25maWdfdmFsaWQKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBlbmRpZgotCi0jICAgZWxzZQotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkCi0jICAgZW5kaWYKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX3VuZGVmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvdW5kZWYuaHBwPgotCi0jZWxpZiBORE5CT09TVF9GVF9DQ19QUkVQUk9DRVNTSU5HCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2luZiBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9FTEVNKE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKSxORE5CT09TVF9GVF9DQ19OQU1FU19TRVEpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfY2NfcHBfbmFtZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsMCxORE5CT09TVF9GVF9jY19pbmYpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgICAgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLDEsTkROQk9PU1RfRlRfY2NfaW5mKQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9jYyAgICAgICAgIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywyLE5ETkJPT1NUX0ZUX2NjX2luZikKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9GVF9DQ18sTkROQk9PU1RfRlRfY2NfcHBfbmFtZSkKLQotIyAgIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9jb25maWdfdmFsaWQgMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jICAgZW5kaWYKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX3BwX25hbWUKLSMgICB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfY2MKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfaW5mCi0KLSNlbHNlIC8vIGlmIGdlbmVyYXRpbmcgcHJlcHJvY2Vzc2VkIGZpbGUKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1BQX0lURVJBVElPTigpKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2luZiBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9FTEVNKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLE5ETkJPT1NUX0ZUX0NDX05BTUVTX1NFUSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9jY19wcF9uYW1lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywwLE5ETkJPT1NUX0ZUX2NjX2luZikKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19ERUYobmFtZSxpbmRleCkgXAotICAgICAgICBuYW1lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMyxpbmRleCxORE5CT09TVF9GVF9jY19pbmYpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0RFRihORE5CT09TVF9GVF9jY19uYW1lLDEpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0RFRihORE5CT09TVF9GVF9jYywyKQotIyAgIHVuZGVmICBORE5CT09TVF9GVF9DQ19ERUYKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9jY19jb25kX3YgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX0ZUX0NDXyxORE5CT09TVF9GVF9jY19wcF9uYW1lKQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX0ZUX2NjX2NvbmRfdgotIyAgIHVuZGVmICBORE5CT09TVF9GVF9jY19jb25kX3YKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX3BwX25hbWUKLSMgICB1bmRlZiBORE5CT09TVF9GVF9jY19pbmYKLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9jb25maWdfdmFsaWQgMQotI2RlZmluZSBfKCkKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotI3VuZGVmIF8KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBlbmRpZgotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmIE5ETkJPT1NUX0ZUX2NjCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTFlYzFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2NjX2xvb3AvcHJlcHJvY2Vzc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbnMKLQotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0jIGRlZmluZSBORE5CT09TVF9GVF9jY19pZCAxCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGltcGxpY2l0X2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9FTVBUWQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCBORE5CT09TVF9GVF9DQ19JTVBMSUNJVAotIyBpZiBORE5CT09TVF9GVF9jb25kCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25maWdfdmFsaWQgMQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSMgZW5kaWYKLSMgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotIyB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19pZCAyCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGNkZWNsX2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9JREVOVElUWShfX2NkZWNsICkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgTkROQk9PU1RfRlRfQ0NfQ0RFQ0wKLSMgaWYgTkROQk9PU1RfRlRfY29uZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkIDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyB1bmRlZiBORE5CT09TVF9GVF9jYwotIyB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgMwotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSBzdGRjYWxsX2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9JREVOVElUWShfX3N0ZGNhbGwgKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCBORE5CT09TVF9GVF9DQ19TVERDQUxMCi0jIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgcGFzY2FsX2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9JREVOVElUWShwYXNjYWwgKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCBORE5CT09TVF9GVF9DQ19QQVNDQUwKLSMgaWYgTkROQk9PU1RfRlRfY29uZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkIDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyB1bmRlZiBORE5CT09TVF9GVF9jYwotIyB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgNQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSBmYXN0Y2FsbF9jYwotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2MgTkROQk9PU1RfUFBfSURFTlRJVFkoX19mYXN0Y2FsbCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgTkROQk9PU1RfRlRfQ0NfRkFTVENBTEwKLSMgaWYgTkROQk9PU1RfRlRfY29uZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkIDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyB1bmRlZiBORE5CT09TVF9GVF9jYwotIyB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgNgotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSBjbHJjYWxsX2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9JREVOVElUWShfX2NscmNhbGwgKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCBORE5CT09TVF9GVF9DQ19DTFJDQUxMCi0jIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDcKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgdGhpc2NhbGxfY2MKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjIE5ETkJPT1NUX1BQX0lERU5USVRZKF9fdGhpc2NhbGwpCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX0ZUX0NDX1RISVNDQUxMCi0jIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDgKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgdGhpc2NhbGxfY2MKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjIE5ETkJPT1NUX1BQX0VNUFRZCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUX1RISVNDQUxMCi0jIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgaWZuZGVmIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgMQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSBpbXBsaWNpdF9jYwotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2MgTkROQk9PU1RfUFBfRU1QVFkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgMHgwMDAwMDAwMQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotIyB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jIGVsc2UKLSMgdW5kZWYgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9sb29wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjZlN2JhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb25zCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX1BQX0xPT1BfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9QUF9MT09QX0hQUF9JTkNMVURFRAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2V4cGFuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9wYXJlbi5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9kZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX2RlZi5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0ZUX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfbG9vcCA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2NjX2xvb3AvbWFzdGVyLmhwcD4KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2xvb3AgXAotICAgICAgICA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2NjX2xvb3AvcHJlcHJvY2Vzc2VkLmhwcD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9GVF9hbF9wYXRoKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2ZpbGUgXAotICAgICAgICA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC9wcmVwcm9jZXNzZWQuaHBwPgotIyAgIGRlZmluZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUgXAotICAgICAgICA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2FyaXR5X2xvb3AuaHBwPgotCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb24KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbihjYyxuYW1lKSBORE5CT09TVF9GVF9TWU5UQVgoIFwKLSAgICAgIFIgTkROQk9PU1RfUFBfRU1QVFksTkROQk9PU1RfUFBfRU1QVFksY2MsTkROQk9PU1RfUFBfRU1QVFksbmFtZSxORE5CT09TVF9QUF9FTVBUWSkKLSMgICBlbmRpZgotIyAgIGlmbmRlZiBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3BvaW50ZXIKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9wb2ludGVyKGNjLG5hbWUpIE5ETkJPT1NUX0ZUX1NZTlRBWCggXAotICAgICAgUiBORE5CT09TVF9QUF9FTVBUWSxORE5CT09TVF9QUF9MUEFSRU4sY2MsKiBORE5CT09TVF9QUF9FTVBUWSxuYW1lLE5ETkJPT1NUX1BQX1JQQVJFTikKLSMgICBlbmRpZgotIyAgIGlmbmRlZiBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3JlZmVyZW5jZQotIyAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3JlZmVyZW5jZShjYyxuYW1lKSBORE5CT09TVF9GVF9TWU5UQVgoIFwKLSAgICAgIFIgTkROQk9PU1RfUFBfRU1QVFksTkROQk9PU1RfUFBfTFBBUkVOLGNjLCYgTkROQk9PU1RfUFBfRU1QVFksbmFtZSxORE5CT09TVF9QUF9SUEFSRU4pCi0jICAgZW5kaWYKLSMgICBpZm5kZWYgTkROQk9PU1RfRlRfdHlwZV9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotIyAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyKGNjLG5hbWUpIE5ETkJPT1NUX0ZUX1NZTlRBWCggXAotICAgICAgUiBORE5CT09TVF9QUF9FTVBUWSxORE5CT09TVF9QUF9MUEFSRU4sY2MsVDA6OiogTkROQk9PU1RfUFBfRU1QVFksbmFtZSxORE5CT09TVF9QUF9SUEFSRU4pCi0jICAgZW5kaWYKLQotIyAgIGluY2x1ZGUgTkROQk9PU1RfRlRfbG9vcAotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbgotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb25fcG9pbnRlcgotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb25fcmVmZXJlbmNlCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdmFyaWF0aW9ucwotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSMgICB1bmRlZiBORE5CT09TVF9GVF9hbF9wYXRoCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfRlRfY2NfZmlsZSkKLQotIyAgIGluY2x1ZGUgTkROQk9PU1RfRlRfbG9vcAotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLQotI2Vsc2UKLQotIyAgIGVycm9yICJhcmd1bWVudCBtaXNzaW5nIgotCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX0ZUX2xvb3AKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX3VuZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvdW5kZWYuaHBwPgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3JldGFnX2RlZmF1bHRfY2MvbWFzdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3JldGFnX2RlZmF1bHRfY2MvbWFzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkyYTViZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9yZXRhZ19kZWZhdWx0X2NjL21hc3Rlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGd1YXJkZWQgZXh0ZXJuYWxseQotCi0jaWZkZWYgX19XQVZFX18KLS8vIHRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbSB0aGUgbWFzdGVyLmhwcCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQotIyAgIHByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMCkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfVkFMVUUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9zZWxmLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9kZWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLSAgdGVtcGxhdGU8Y2xhc3MgVGFnLCBjbGFzcyBSZWZUYWc+IHN0cnVjdCBzZWxlY3Rvcl9iaXRzCi0gIHsKLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIG5vbl9tZW1iZXJ8bWVtYmVyfG5vbl92YXJpYWRpY3x2YXJpYWRpYwotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoMSkKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIHZhbHVlID0gKAotICAgICAgICAoOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxUYWc+Ojp2YWx1ZSAmIE5ETkJPT1NUX0ZUX2RlZmF1bHRfY2MpIAotICAgICAgfCAoOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxSZWZUYWc+Ojp2YWx1ZSAmIE5ETkJPT1NUX1BQX1NMT1QoMSkpCi0gICAgKSk7Ci0gIH07Ci0KLSAgdGVtcGxhdGU8Yml0c190IFNlbGVjdG9yQml0cz4gc3RydWN0IGRlZmF1bHRfY2NfdGFnOyAKLSAgCi0gIHRlbXBsYXRlPGNsYXNzIFRhZywgY2xhc3MgUmVmVGFnPiBzdHJ1Y3QgcmV0YWdfZGVmYXVsdF9jYwotICAgIDogZGV0YWlsOjpjb21wb3VuZF90YWcKLSAgICAgIDwgVGFnLCBkZXRhaWw6OmRlZmF1bHRfY2NfdGFnPCAKLSAgICAgICAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpzZWxlY3Rvcl9iaXRzPFRhZyxSZWZUYWc+Ojp2YWx1ZSA+ID4KLSAgeyB9OwotCi0gIHRlbXBsYXRlPGJpdHNfdCBTZWxlY3RvckJpdHM+IHN0cnVjdCBkZWZhdWx0X2NjX3RhZwotICB7Ci0gICAgdHlwZWRlZiBudWxsX3RhZzo6Yml0cyBiaXRzOwotICAgIHR5cGVkZWYgbnVsbF90YWc6Om1hc2sgbWFzazsKLSAgfTsKLQotICBjbGFzcyB0ZXN0X2NsYXNzOwotICB0eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2NjX21hc2s+IGNjX21hc2tfY29uc3RhbnQ7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfc2VsZiBcCi0gICAgICA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3JldGFnX2RlZmF1bHRfY2MvbWFzdGVyLmhwcD4KLQotIyAgIGRlZmluZSAgZGVmYXVsdF9jY18gTkROQk9PU1RfRlRfZGVmYXVsdF9jYwotCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBkZWZhdWx0X2NjX3xub25fbWVtYmVyfG5vbl92YXJpYWRpYwotIyAgIGRlZmluZSAgTkROQk9PU1RfRlRfdGVzdGVyIHZvaWQgKCp0ZXN0ZXIpKCkKLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYgTkROQk9PU1RfRlRfc2VsZgotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgZGVmYXVsdF9jY198bm9uX21lbWJlcnx2YXJpYWRpYwotIyAgIGRlZmluZSAgTkROQk9PU1RfRlRfdGVzdGVyIHZvaWQgKCp0ZXN0ZXIpKC4uLikKLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYgTkROQk9PU1RfRlRfc2VsZgotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgZGVmYXVsdF9jY198bWVtYmVyfG5vbl92YXJpYWRpYwotIyAgIGRlZmluZSAgTkROQk9PU1RfRlRfdGVzdGVyIHZvaWQgKHRlc3RfY2xhc3M6Oip0ZXN0ZXIpKCkKLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYgTkROQk9PU1RfRlRfc2VsZgotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgZGVmYXVsdF9jY198bWVtYmVyfHZhcmlhZGljCi0jICAgZGVmaW5lICBORE5CT09TVF9GVF90ZXN0ZXIgdm9pZCAodGVzdF9jbGFzczo6KnRlc3RlcikoLi4uKQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfSU5ESVJFQ1RfU0VMRiBORE5CT09TVF9GVF9zZWxmCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotCi0jICAgdW5kZWYgICBkZWZhdWx0X2NjXwotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfc2VsZgotCi19IH0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfdW5kZWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy91bmRlZi5ocHA+Ci0KLSNlbHNlIC8vIGlmIGRlZmluZWQoTkROQk9PU1RfUFBfVkFMVUUpCi0KLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UKDEpCi0KLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc8TkROQk9PU1RfUFBfU0xPVCgxKT4gCi0gIHsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0ZUX3Rlc3RlcjsKLSAgICB0eXBlZGVmIG1wbDo6Yml0YW5kXzxjb21wb25lbnRzPHRlc3Rlcj46OmJpdHMsY2NfbWFza19jb25zdGFudD4gYml0czsKLSAgICB0eXBlZGVmIGNjX21hc2tfY29uc3RhbnQgbWFzazsKLSAgfTsKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3Rlc3RlcgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTJiN2U5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3JldGFnX2RlZmF1bHRfY2MvcHJlcHJvY2Vzc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBndWFyZGVkIGV4dGVybmFsbHkKLQotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgewotbmFtZXNwYWNlIGRldGFpbAotewotdGVtcGxhdGU8Y2xhc3MgVGFnLCBjbGFzcyBSZWZUYWc+IHN0cnVjdCBzZWxlY3Rvcl9iaXRzCi17Ci1ORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYml0c190LCB2YWx1ZSA9ICgKLSg6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPFRhZz4gOjp2YWx1ZSAmIDB4MDAwMDgwMDApIAotfCAoOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxSZWZUYWc+IDo6dmFsdWUgJiA4MDIpCi0pKTsKLX07Ci10ZW1wbGF0ZTxiaXRzX3QgU2VsZWN0b3JCaXRzPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc7IAotdGVtcGxhdGU8Y2xhc3MgVGFnLCBjbGFzcyBSZWZUYWc+IHN0cnVjdCByZXRhZ19kZWZhdWx0X2NjCi06IGRldGFpbDo6Y29tcG91bmRfdGFnCi08IFRhZywgZGV0YWlsOjpkZWZhdWx0X2NjX3RhZzwgCi06Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpzZWxlY3Rvcl9iaXRzPFRhZyxSZWZUYWc+IDo6dmFsdWUgPiA+Ci17IH07Ci10ZW1wbGF0ZTxiaXRzX3QgU2VsZWN0b3JCaXRzPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWcKLXsKLXR5cGVkZWYgbnVsbF90YWc6OmJpdHMgYml0czsKLXR5cGVkZWYgbnVsbF90YWc6Om1hc2sgbWFzazsKLX07Ci1jbGFzcyB0ZXN0X2NsYXNzOwotdHlwZWRlZiBjb25zdGFudDwweDAwZmY4MDAwPiBjY19tYXNrX2NvbnN0YW50OwotdGVtcGxhdGU8ID4gc3RydWN0IGRlZmF1bHRfY2NfdGFnPDMzMjgyPiAKLXsKLXR5cGVkZWYgdm9pZCAoICp0ZXN0ZXIpKCk7Ci10eXBlZGVmIG1wbDo6Yml0YW5kXzxjb21wb25lbnRzPHRlc3Rlcj4gOjpiaXRzLGNjX21hc2tfY29uc3RhbnQ+IGJpdHM7Ci10eXBlZGVmIGNjX21hc2tfY29uc3RhbnQgbWFzazsKLX07Ci10ZW1wbGF0ZTwgPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc8MzMwMjY+IAotewotdHlwZWRlZiB2b2lkICggKnRlc3RlcikoIC4uLiApOwotdHlwZWRlZiBtcGw6OmJpdGFuZF88Y29tcG9uZW50czx0ZXN0ZXI+IDo6Yml0cyxjY19tYXNrX2NvbnN0YW50PiBiaXRzOwotdHlwZWRlZiBjY19tYXNrX2NvbnN0YW50IG1hc2s7Ci19OwotdGVtcGxhdGU8ID4gc3RydWN0IGRlZmF1bHRfY2NfdGFnPDMzMzEyPiAKLXsKLXR5cGVkZWYgdm9pZCAodGVzdF9jbGFzczo6ICp0ZXN0ZXIpKCk7Ci10eXBlZGVmIG1wbDo6Yml0YW5kXzxjb21wb25lbnRzPHRlc3Rlcj4gOjpiaXRzLGNjX21hc2tfY29uc3RhbnQ+IGJpdHM7Ci10eXBlZGVmIGNjX21hc2tfY29uc3RhbnQgbWFzazsKLX07Ci10ZW1wbGF0ZTwgPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc8MzMwNTY+IAotewotdHlwZWRlZiB2b2lkICh0ZXN0X2NsYXNzOjogKnRlc3RlcikoIC4uLiApOwotdHlwZWRlZiBtcGw6OmJpdGFuZF88Y29tcG9uZW50czx0ZXN0ZXI+IDo6Yml0cyxjY19tYXNrX2NvbnN0YW50PiBiaXRzOwotdHlwZWRlZiBjY19tYXNrX2NvbnN0YW50IG1hc2s7Ci19OwotfSB9IH0gCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL2NjX3RhZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL2NjX3RhZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViODBhMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdGFncy9jY190YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb25zCi0KLSAgc3RydWN0IE5ETkJPT1NUX0ZUX2NjX25hbWUKLSAgewotICAgIHR5cGVkZWYgZGV0YWlsOjplbmNvZGVfYml0czwwLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotICAgIHR5cGVkZWYgZGV0YWlsOjpjb25zdGFudDxORE5CT09TVF9GVF9jY19tYXNrPiBtYXNrOwotICB9OwotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvbWFzdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvbWFzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU4NjM0Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL21hc3Rlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGd1YXJkZWQgZXh0ZXJuYWxseQotCi0jaWZkZWYgX19XQVZFX18KLS8vIHRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbSB0aGUgbWFzdGVyLmhwcCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQotIyAgIHByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMCkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlRfUFJFUFJPQ0VTU0lOR19NT0RFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZUX0NPTkZJR19IUFBfSU5DTFVERUQpCi0jICAgZXJyb3IgInRoaXMgZmlsZSB1c2VkIHdpdGggdHdvLXBhc3MgcHJlcHJvY2Vzc2luZywgb25seSIKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7Ci0KLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljLE5ETkJPT1NUX0ZUX3ZhcmlhZGljX21hc2s+IG5vbl92YXJpYWRpYzsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfdmFyaWFkaWMsTkROQk9PU1RfRlRfdmFyaWFkaWNfbWFzaz4gICAgIHZhcmlhZGljOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MCxORE5CT09TVF9GVF9jb25zdD4gICAgICAgICAgICAgICAgICAgICBub25fY29uc3Q7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX2NvbnN0LE5ETkJPT1NUX0ZUX2NvbnN0PiAgICAgICAgY29uc3RfcXVhbGlmaWVkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MCxORE5CT09TVF9GVF92b2xhdGlsZT4gICAgICAgICAgICAgICAgICBub25fdm9sYXRpbGU7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX3ZvbGF0aWxlLE5ETkJPT1NUX0ZUX3ZvbGF0aWxlPiAgdm9sYXRpbGVfcXVhbGlmaWVkOyAKLQotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9kZWZhdWx0X2NjLE5ETkJPT1NUX0ZUX2NjX21hc2s+IGRlZmF1bHRfY2M7Ci0KLSNkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfRlRfY29uc3R8TkROQk9PU1RfRlRfdm9sYXRpbGUgCi0jaW5jbHVkZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVCgxKQotCi10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9QUF9TTE9UKDEpPiBub25fY3Y7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX2NvbnN0ICAgLCBORE5CT09TVF9QUF9TTE9UKDEpPiBjb25zdF9ub25fdm9sYXRpbGU7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX3ZvbGF0aWxlLCBORE5CT09TVF9QUF9TTE9UKDEpPiB2b2xhdGlsZV9ub25fY29uc3Q7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX1BQX1NMT1QoMSkgLCBORE5CT09TVF9QUF9TTE9UKDEpPiBjdl9xdWFsaWZpZWQ7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gIHR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBmdWxsX21hc2s7Ci0KLSAgdGVtcGxhdGUgPGJpdHNfdCBGbGFncywgYml0c190IENDSUQ+IHN0cnVjdCBlbmNvZGVfYml0c19pbXBsCi0gIHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJpdHNfdCwgdmFsdWUgPSAKLSAgICAgIEZsYWdzIHwgKE5ETkJPT1NUX0ZUX2RlZmF1bHRfY2MgKiBDQ0lEKSA8PCAxICk7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGJpdHNfdCBGbGFncywgYml0c190IENDSUQsIHN0ZDo6c2l6ZV90IEFyaXR5PiAKLSAgc3RydWN0IGVuY29kZV9jaGFycl9pbXBsCi0gIHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKHN0ZDo6c2l6ZV90KSgxKwotICAgICAgRmxhZ3MgfCAoTkROQk9PU1RfRlRfZGVmYXVsdF9jYyAqIENDSUQpIDw8IDEgfCBBcml0eSA8PCBORE5CT09TVF9GVF9hcml0eV9zaGlmdAotICAgICkpOwotICB9OwotCi0gIHRlbXBsYXRlIDxiaXRzX3QgQml0cz4gc3RydWN0IGRlY29kZV9iaXRzCi0gIHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYml0c190LCBmbGFncyA9IEJpdHMgJiBORE5CT09TVF9GVF9mbGFnc19tYXNrKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGNjX2lkID0gCi0gICAgICAoIChCaXRzICYgTkROQk9PU1RfRlRfZnVsbF9tYXNrKSAvIE5ETkJPT1NUX0ZUX2RlZmF1bHRfY2MpID4+IDEgCi0gICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIHRhZ19iaXRzID0gKEJpdHMgJiBORE5CT09TVF9GVF9mdWxsX21hc2spKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgYXJpdHkgPSAoc3RkOjpzaXplX3QpCi0gICAgICAoQml0cyA+PiBORE5CT09TVF9GVF9hcml0eV9zaGlmdCkgCi0gICAgKTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Yml0c190IExIU19iaXRzLCBiaXRzX3QgTEhTX21hc2ssIGJpdHNfdCBSSFNfYml0cywgYml0c190IFJIU19tYXNrPgotICBzdHJ1Y3QgdGFnX2ljZQotICB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIG1hdGNoID0KLSAgICAgIFJIU19iaXRzID09IChMSFNfYml0cyAmIFJIU19tYXNrICYgKFJIU19iaXRzIHx+TkROQk9PU1RfRlRfdHlwZV9tYXNrKSkKLSAgICApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgY29tYmluZWRfYml0cyA9IAotICAgICAgKExIU19iaXRzICYgflJIU19tYXNrKSB8IFJIU19iaXRzCi0gICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGNvbWJpbmVkX21hc2sgPQotICAgICAgTEhTX21hc2sgfCBSSFNfbWFzawotICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYml0c190LCBleHRyYWN0ZWRfYml0cyA9Ci0gICAgICBMSFNfYml0cyAmIFJIU19tYXNrCi0gICAgKTsKLQotICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX21hc2sgTkROQk9PU1RfRlRfdHlwZV9tYXNrCi0gIHR5cGVkZWYgcHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX2NhbGxhYmxlX2J1aWx0aW4sTkROQk9PU1RfRlRfbWFzaz4gICAgICAgICAgICBjYWxsYWJsZV9idWlsdGluX3RhZzsKLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfbm9uX21lbWJlcl9jYWxsYWJsZV9idWlsdGluLE5ETkJPT1NUX0ZUX21hc2s+IG5vbm1lbWJlcl9jYWxsYWJsZV9idWlsdGluX3RhZzsKLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfZnVuY3Rpb24sTkROQk9PU1RfRlRfbWFzaz4gICAgICAgZnVuY3Rpb25fdGFnOwotICB0eXBlZGVmIHByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9yZWZlcmVuY2UsTkROQk9PU1RfRlRfbWFzaz4gICAgICByZWZlcmVuY2VfdGFnOwotICB0eXBlZGVmIHByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9wb2ludGVyLE5ETkJPT1NUX0ZUX21hc2s+ICAgICAgICBwb2ludGVyX3RhZzsKLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsTkROQk9PU1RfRlRfbWFzaz4gbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfdGFnOwotICB0eXBlZGVmIHByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9tZW1iZXJfb2JqZWN0X3BvaW50ZXIsTkROQk9PU1RfRlRfbWFzaz4gbWVtYmVyX29iamVjdF9wb2ludGVyX3RhZzsKLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfbWVtYmVyX29iamVjdF9wb2ludGVyX2ZsYWdzLE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWVtYmVyX29iamVjdF9wb2ludGVyX2Jhc2U7Ci0gIHR5cGVkZWYgcHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX21lbWJlcl9wb2ludGVyLE5ETkJPT1NUX0ZUX21hc2s+IG1lbWJlcl9wb2ludGVyX3RhZzsKLSN1bmRlZiAgTkROQk9PU1RfRlRfbWFzayAKLQotI2RlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfZGVmYXVsdF9jYwotI2luY2x1ZGUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoMSkKLSNkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfRlRfdHlwZV9tYXNrfE5ETkJPT1NUX0ZUX3ZhcmlhZGljX21hc2t8TkROQk9PU1RfRlRfY2NfbWFzawotI2luY2x1ZGUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoMikKLQotICB0eXBlZGVmIHByb3BlcnR5X3RhZzwgTkROQk9PU1RfUFBfU0xPVCgxKSAsIE5ETkJPT1NUX1BQX1NMT1QoMikgPiBudl9kY2NfZnVuYzsKLQotI2RlZmluZSBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgTkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJ8TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX2RlZmF1bHRfY2MKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UKDEpCi0KLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8IE5ETkJPT1NUX1BQX1NMT1QoMSkgLCBORE5CT09TVF9QUF9TTE9UKDIpID4gbnZfZGNjX21mcDsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXMKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdGFncy9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdGFncy9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDQ5OTU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvcHJlcHJvY2Vzc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBndWFyZGVkIGV4dGVybmFsbHkKLQotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgewotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwweDAwMDAwMjAwLDB4MDAwMDAzMDA+IG5vbl92YXJpYWRpYzsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MHgwMDAwMDEwMCwweDAwMDAwMzAwPiB2YXJpYWRpYzsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MCwweDAwMDAwNDAwPiBub25fY29uc3Q7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDB4MDAwMDA0MDAsMHgwMDAwMDQwMD4gY29uc3RfcXVhbGlmaWVkOwotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwwLDB4MDAwMDA4MDA+IG5vbl92b2xhdGlsZTsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MHgwMDAwMDgwMCwweDAwMDAwODAwPiB2b2xhdGlsZV9xdWFsaWZpZWQ7IAotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwweDAwMDA4MDAwLDB4MDBmZjgwMDA+IGRlZmF1bHRfY2M7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDAgLCAzMDcyPiBub25fY3Y7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDB4MDAwMDA0MDAgLCAzMDcyPiBjb25zdF9ub25fdm9sYXRpbGU7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDB4MDAwMDA4MDAsIDMwNzI+IHZvbGF0aWxlX25vbl9jb25zdDsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MzA3MiAsIDMwNzI+IGN2X3F1YWxpZmllZDsKLW5hbWVzcGFjZSBkZXRhaWwgewotdHlwZWRlZiBjb25zdGFudDwweDAwZmYwZmZmPiBmdWxsX21hc2s7Ci10ZW1wbGF0ZSA8Yml0c190IEZsYWdzLCBiaXRzX3QgQ0NJRD4gc3RydWN0IGVuY29kZV9iaXRzX2ltcGwKLXsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYml0c190LCB2YWx1ZSA9IAotRmxhZ3MgfCAoMHgwMDAwODAwMCAqIENDSUQpIDw8IDEgKTsKLX07Ci10ZW1wbGF0ZSA8Yml0c190IEZsYWdzLCBiaXRzX3QgQ0NJRCwgc3RkOjpzaXplX3QgQXJpdHk+IAotc3RydWN0IGVuY29kZV9jaGFycl9pbXBsCi17Ci1ORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKHN0ZDo6c2l6ZV90KSgxKwotRmxhZ3MgfCAoMHgwMDAwODAwMCAqIENDSUQpIDw8IDEgfCBBcml0eSA8PCAyNAotKSk7Ci19OwotdGVtcGxhdGUgPGJpdHNfdCBCaXRzPiBzdHJ1Y3QgZGVjb2RlX2JpdHMKLXsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGZsYWdzID0gQml0cyAmIDB4MDAwMDBmZmYpOwotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgY2NfaWQgPSAKLSggKEJpdHMgJiAweDAwZmYwZmZmKSAvIDB4MDAwMDgwMDApID4+IDEgCi0pOwotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgdGFnX2JpdHMgPSAoQml0cyAmIDB4MDBmZjBmZmYpKTsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgYXJpdHkgPSAoc3RkOjpzaXplX3QpCi0oQml0cyA+PiAyNCkgCi0pOwotfTsKLXRlbXBsYXRlIDxiaXRzX3QgTEhTX2JpdHMsIGJpdHNfdCBMSFNfbWFzaywgYml0c190IFJIU19iaXRzLCBiaXRzX3QgUkhTX21hc2s+Ci1zdHJ1Y3QgdGFnX2ljZQotewotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIG1hdGNoID0KLVJIU19iaXRzID09IChMSFNfYml0cyAmIFJIU19tYXNrICYgKFJIU19iaXRzIHwgfjB4MDAwMDAwZmYpKQotKTsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGNvbWJpbmVkX2JpdHMgPSAKLShMSFNfYml0cyAmIH5SSFNfbWFzaykgfCBSSFNfYml0cwotKTsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGNvbWJpbmVkX21hc2sgPQotTEhTX21hc2sgfCBSSFNfbWFzawotKTsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGV4dHJhY3RlZF9iaXRzID0KLUxIU19iaXRzICYgUkhTX21hc2sKLSk7Ci19OwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8MHgwMDAwMDAwMSwweDAwMDAwMGZmPiBjYWxsYWJsZV9idWlsdGluX3RhZzsKLXR5cGVkZWYgcHJvcGVydHlfdGFnPDB4MDAwMDAwMDMsMHgwMDAwMDBmZj4gbm9ubWVtYmVyX2NhbGxhYmxlX2J1aWx0aW5fdGFnOwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8MHgwMDAwMDAwNywweDAwMDAwMGZmPiBmdW5jdGlvbl90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMDEzLDB4MDAwMDAwZmY+IHJlZmVyZW5jZV90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMDBiLDB4MDAwMDAwZmY+IHBvaW50ZXJfdGFnOwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8MHgwMDAwMDA2MSwweDAwMDAwMGZmPiBtZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMGEzLDB4MDAwMDAwZmY+IG1lbWJlcl9vYmplY3RfcG9pbnRlcl90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMmEzLDB4MDBmZjBmZmY+IG1lbWJlcl9vYmplY3RfcG9pbnRlcl9iYXNlOwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8MHgwMDAwMDAyMCwweDAwMDAwMGZmPiBtZW1iZXJfcG9pbnRlcl90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwgMzMyODcgLCAxNjc0NTQ3MSA+IG52X2RjY19mdW5jOwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8IDMzMzc3ICwgMTY3NDU0NzEgPiBudl9kY2NfbWZwOwotfSAKLX0gfSAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC9tYXN0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdmFyaWF0ZV9sb29wL21hc3Rlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MGE1MTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdmFyaWF0ZV9sb29wL21hc3Rlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZkZWYgX19XQVZFX18KLS8vIHRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbSB0aGUgbWFzdGVyLmhwcCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQotIyAgIHByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMCkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlRfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGVycm9yICJ0aGlzIGZpbGUgaXMgb25seSBmb3IgdHdvLXBhc3MgcHJlcHJvY2Vzc2luZyIKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfVkFMVUUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2V4cGFuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2RlZi5ocHA+Ci0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfbWZwIDAKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfc3ludGF4IE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb24KLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfdmFyaWFkaWMKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBpZiAhTkROQk9PU1RfRlRfTk9fQ1ZfRlVOQ19TVVBQT1JUCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfY29uc3QKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF92YXJpYWRpY3xORE5CT09TVF9GVF9jb25zdAotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX2Z1bmN0aW9ufE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpY3xORE5CT09TVF9GVF92b2xhdGlsZQotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX2Z1bmN0aW9ufE5ETkJPT1NUX0ZUX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX3ZvbGF0aWxlCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX2NvbnN0fE5ETkJPT1NUX0ZUX3ZvbGF0aWxlCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfdmFyaWFkaWN8TkROQk9PU1RfRlRfY29uc3R8TkROQk9PU1RfRlRfdm9sYXRpbGUKLSMgICBpbmNsdWRlIF9fRklMRV9fCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZW5kaWYKLQotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgIE5ETkJPT1NUX0ZUX3N5bnRheAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9zeW50YXggTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9wb2ludGVyCi0KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX3BvaW50ZXJ8TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfcG9pbnRlcnxORE5CT09TVF9GVF92YXJpYWRpYwotIyAgIGluY2x1ZGUgX19GSUxFX18KLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmICBORE5CT09TVF9GVF9zeW50YXgKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfc3ludGF4IE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb25fcmVmZXJlbmNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfcmVmZXJlbmNlfE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpYwotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfcmVmZXJlbmNlfE5ETkJPT1NUX0ZUX3ZhcmlhZGljCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgIE5ETkJPT1NUX0ZUX3N5bnRheAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmICBORE5CT09TVF9GVF9tZnAKLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9tZnAgMQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9zeW50YXggTkROQk9PU1RfRlRfdHlwZV9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWMKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF92YXJpYWRpYwotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyfE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpY3xORE5CT09TVF9GVF9jb25zdAotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyfE5ETkJPT1NUX0ZUX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX2NvbnN0Ci0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJ8TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX3ZvbGF0aWxlCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJ8TkROQk9PU1RfRlRfdmFyaWFkaWN8TkROQk9PU1RfRlRfdm9sYXRpbGUKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfY29uc3R8TkROQk9PU1RfRlRfdm9sYXRpbGUKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF92YXJpYWRpY3xORE5CT09TVF9GVF9jb25zdHxORE5CT09TVF9GVF92b2xhdGlsZQotIyAgIGluY2x1ZGUgX19GSUxFX18KLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmICBORE5CT09TVF9GVF9zeW50YXgKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSB1bmRlZiAgTkROQk9PU1RfRlRfbWZwCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvdW5kZWYuaHBwPgotI2Vsc2UgCi0KLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UKDEpCi0KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1NMT1QoMSkgJiBORE5CT09TVF9GVF9raW5kX21hc2sKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UKDIpCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBpZiAhIShORE5CT09TVF9QUF9TTE9UKDIpICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGlmIChORE5CT09TVF9QUF9TTE9UKDEpICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLQotIyAgIGlmICggTkROQk9PU1RfUFBfU0xPVCgxKSAmIChORE5CT09TVF9GVF92YXJpYWRpYykgKQotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbCAuLi4KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jICAgZWxzZQotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyAgIGVuZGlmCi0KLSMgICBpZiAhKCBORE5CT09TVF9QUF9TTE9UKDEpICYgKE5ETkJPT1NUX0ZUX3ZvbGF0aWxlKSApCi0jICAgICBpZiAhKCBORE5CT09TVF9QUF9TTE9UKDEpICYgKE5ETkJPT1NUX0ZUX2NvbnN0KSApCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfY3YgCi0jICAgICBlbHNlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3QKLSMgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgaWYgISggTkROQk9PU1RfUFBfU0xPVCgxKSAmIChORE5CT09TVF9GVF9jb25zdCkgKQotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IHZvbGF0aWxlCi0jICAgICBlbHNlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3Qgdm9sYXRpbGUKLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyBORE5CT09TVF9QUF9TTE9UKDEpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jdgotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGVuZGlmCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZW5kaWYKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF92YXJpYXRlX2xvb3AvcHJlcHJvY2Vzc2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2NjMGM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjgzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0jIGRlZmluZSBORE5CT09TVF9GVF9tZnAgMAotIyBkZWZpbmUgTkROQk9PU1RfRlRfc3ludGF4IE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb24KLSMgaWYgISAhICg0ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoNTE5ICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDUxOQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDQgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgyNjMgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAyNjMKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgIU5ETkJPT1NUX0ZUX05PX0NWX0ZVTkNfU1VQUE9SVAotIyBpZiAhICEgKDQgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgxNTQzICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdAotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMTU0MwotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDQgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgxMjg3ICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbCAuLi4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IGNvbnN0Ci0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAxMjg3Ci0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoNCAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDI1NjcgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX05VTExBUllfUEFSQU0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IHZvbGF0aWxlCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAyNTY3Ci0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoNCAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDIzMTEgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3Ygdm9sYXRpbGUKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDIzMTEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg0ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMzU5MSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3Qgdm9sYXRpbGUKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDM1OTEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg0ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMzMzNSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdCB2b2xhdGlsZQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMzMzNQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9zeW50YXgKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX3N5bnRheCBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3BvaW50ZXIKLSMgaWYgISAhICg4ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoNTIzICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDUyMwotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDggJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgyNjcgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAyNjcKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgdW5kZWYgTkROQk9PU1RfRlRfc3ludGF4Ci0jIGRlZmluZSBORE5CT09TVF9GVF9zeW50YXggTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9yZWZlcmVuY2UKLSMgaWYgISAhICgxNiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDUzMSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyA1MzEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICgxNiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDI3NSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDI3NQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9zeW50YXgKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWZwCi0jIGRlZmluZSBORE5CT09TVF9GVF9tZnAgMQotIyBkZWZpbmUgTkROQk9PU1RfRlRfc3ludGF4IE5ETkJPT1NUX0ZUX3R5cGVfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIKLSMgaWYgISAhICg5NiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDYwOSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyA2MDkKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg5NiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDM1MyAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDM1MwotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDk2ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMTYzMyAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3QKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDE2MzMKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg5NiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDEzNzcgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3QKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDEzNzcKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg5NiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDI2NTcgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX05VTExBUllfUEFSQU0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IHZvbGF0aWxlCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAyNjU3Ci0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoOTYgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgyNDAxICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbCAuLi4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IHZvbGF0aWxlCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAyNDAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoOTYgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgzNjgxICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdCB2b2xhdGlsZQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMzY4MQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDk2ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMzQyNSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdCB2b2xhdGlsZQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMzQyNQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9zeW50YXgKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWZwCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9yZXRhZ19kZWZhdWx0X2NjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3JldGFnX2RlZmF1bHRfY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTU0OWNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3JldGFnX2RlZmF1bHRfY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9SRVRBR19ERUZBVUxUX0NDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfUkVUQUdfREVGQVVMVF9DQ19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iaXRhbmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0ZUX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9tYXN0ZXIuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9wcmVwcm9jZXNzZWQuaHBwPgotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmE2ZmYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9TWU5USEVTSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfU1lOVEhFU0laRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3Byb3BlcnR5X3RhZ3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jdl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9yZXRhZ19kZWZhdWx0X2NjLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGJpdHNfdCBGbGFncywgYml0c190IENDSUQsIHN0ZDo6c2l6ZV90IFNpemU+Ci1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX28KLXsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kgeyB9OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgU2VxLCBiaXRzX3QgQml0cz4KLXN0cnVjdCBzeW50aGVzaXplX2ltcGwKLSAgOiBkZXRhaWw6OnN5bnRoZXNpemVfaW1wbF9vCi0gICAgPCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpkZWNvZGVfYml0czxCaXRzPjo6ZmxhZ3MKLSAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmRlY29kZV9iaXRzPEJpdHM+OjpjY19pZAotICAgICwgOjpuZG5ib29zdDo6bXBsOjpzaXplPFNlcT46OnZhbHVlCi0gICAgPgotICAgIDo6dGVtcGxhdGUgc3ludGhlc2l6ZV9pbXBsX2k8U2VxPgoteyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZXEsIHR5cGVuYW1lIFRhZz4KLXN0cnVjdCBzeW50aGVzaXplX2Z1bmMKLSAgOiBkZXRhaWw6OnN5bnRoZXNpemVfaW1wbAotICAgIDwgU2VxCi0gICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzCi0gICAgICA8IGRldGFpbDo6cmV0YWdfZGVmYXVsdF9jYwotICAgICAgICA8IGZ1bmN0aW9uX3R5cGVzOjp0YWc8bnZfZGNjX2Z1bmMsIFRhZz4gPiAKLSAgICAgID46OnZhbHVlIAotICAgID4KLXsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgU2VxLCB0eXBlbmFtZSBUYWc+Ci1zdHJ1Y3Qgc3ludGhlc2l6ZV9tZnAKLSAgOiBkZXRhaWw6OnN5bnRoZXNpemVfaW1wbAotICAgIDwgU2VxIAotICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0cwotICAgICAgPCBkZXRhaWw6OnJldGFnX2RlZmF1bHRfY2MKLSAgICAgICAgPCBmdW5jdGlvbl90eXBlczo6dGFnCi0gICAgICAgICAgPCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgdHlwZW5hbWUgbXBsOjphdF9jPFNlcSwxPjo6dHlwZSA+Ojp0YWcKLSAgICAgICAgICAsIG52X2RjY19tZnAsIFRhZwotICAgICAgICA+ID4KLSAgICAgID46OnZhbHVlCi0gICAgPgoteyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTLCB0eXBlbmFtZSBSID0gdHlwZW5hbWUgbXBsOjphdF9jPFMsMD46OnR5cGUsCi0gICAgdHlwZW5hbWUgQyA9IHR5cGVuYW1lIG1wbDo6YXRfYzxTLDE+Ojp0eXBlPgotc3RydWN0IHN5bnRoZXNpemVfbW9wCi17Ci0gIHR5cGVkZWYgUiBDOjoqIHR5cGU7Ci19OwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIKLSNkZWZpbmUgTkROQk9PU1RfRlRfYWxfcGF0aCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwPgotCi19IH0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MTBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkxMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkYjNiZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkxMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzNCArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDIgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDUgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDggPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw3KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDgpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw4KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEwID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDkpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTApCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTApIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTEwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MTBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlYmIyYzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MTBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjYgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGUoZmxhZ3MsY2MsYXJpdHkpIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KQotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpIG1ha2VfdHlwZV8gIyMgZmxhZ3MgIyMgXyAjIyBjYyAjIyBfICMjIGFyaXR5Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpICggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA3ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDYpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgOCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDcpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsOCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw4KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxMCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxMSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MjBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkyMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFkMmEwZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkyMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxNyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTEwXzAuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDExKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEyID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTIpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxNCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE1ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTUpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxNyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE4ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTgpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyMCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDIxID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkyMF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTIwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Nzc2YzgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTIwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTI3ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MTBfMS5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGUoZmxhZ3MsY2MsYXJpdHkpIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KQotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpIG1ha2VfdHlwZV8gIyMgZmxhZ3MgIyMgXyAjIyBjYyAjIyBfICMjIGFyaXR5Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTEpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEyID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTIpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTIpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE0ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEzKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTQpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE1ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTUpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTUpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE3ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE2KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTcpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE4ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTgpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTgpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDIwID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjApCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDIxID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkzMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTMwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDgzOGZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTMwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzE3ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MjBfMC5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGUoZmxhZ3MsY2MsYXJpdHkpIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KQotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpIG1ha2VfdHlwZV8gIyMgZmxhZ3MgIyMgXyAjIyBjYyAjIyBfICMjIGFyaXR5Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjEpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjIgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyMyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIzKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDI0ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjQpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjUgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyNiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI2KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDI3ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjcpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjggPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyOSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI5KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDMwID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzApCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTMwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MzBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ODI5ZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MzBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MjcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkyMF8xLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjIgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjIpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIzKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjUgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjUpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI2KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjggPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjgpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTQwXzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NDBfMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZjFjM2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NDBfMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MTcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkzMF8wLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzMiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMyKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDMzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM1KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzOCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM4KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzOCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzOSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NDBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU4NWY1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyNyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTMwXzEuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMxKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzMiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMyKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzMyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzIpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMzKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMzKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM1KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzUpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM2KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM2KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzOCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM4KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzOSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzgpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM5KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NTBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk1MF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI5YjZiNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk1MF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMTcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8wLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDEpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQyKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MCA+IDo6dHlwZSBpdGVyXzQxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDEgPiA6OnR5cGUgaXRlcl80MjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDIpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDMpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0NSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDQpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ1KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQ2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MCA+IDo6dHlwZSBpdGVyXzQxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDEgPiA6OnR5cGUgaXRlcl80MjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQyID4gOjp0eXBlIGl0ZXJfNDM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MyA+IDo6dHlwZSBpdGVyXzQ0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDQgPiA6OnR5cGUgaXRlcl80NTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDUpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDYpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0OCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDYgPiA6OnR5cGUgaXRlcl80NzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDcpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ4KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQ5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MCA+IDo6dHlwZSBpdGVyXzQxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDEgPiA6OnR5cGUgaXRlcl80MjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQyID4gOjp0eXBlIGl0ZXJfNDM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MyA+IDo6dHlwZSBpdGVyXzQ0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDQgPiA6OnR5cGUgaXRlcl80NTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ1ID4gOjp0eXBlIGl0ZXJfNDY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NiA+IDo6dHlwZSBpdGVyXzQ3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDcgPiA6OnR5cGUgaXRlcl80ODsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDgpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ4ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3ICwgdHlwZW5hbWUgVDQ4ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNTAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NyA+IDo6dHlwZSBpdGVyXzQ4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDggPiA6OnR5cGUgaXRlcl80OTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDkpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggLCB0eXBlbmFtZSBUNDkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1MCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA1MSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDYgPiA6OnR5cGUgaXRlcl80NzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ3ID4gOjp0eXBlIGl0ZXJfNDg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80OCA+IDo6dHlwZSBpdGVyXzQ5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDkgPiA6OnR5cGUgaXRlcl81MDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNTApIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81MCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NTBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk1MF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlNzNkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk1MF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMjcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8xLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDIgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQxKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDMpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDUgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ0KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDQgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDYpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDggPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ3KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDcgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NyA+IDo6dHlwZSBpdGVyXzQ4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNTAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NyA+IDo6dHlwZSBpdGVyXzQ4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDggPiA6OnR5cGUgaXRlcl80OTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDkpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggLCB0eXBlbmFtZSBUNDkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1MCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggLCBUNDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNTEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NyA+IDo6dHlwZSBpdGVyXzQ4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDggPiA6OnR5cGUgaXRlcl80OTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ5ID4gOjp0eXBlIGl0ZXJfNTA7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUwKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80OCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNTAgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9tYXN0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL21hc3Rlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOGI5Y2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL21hc3Rlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0jaWYgICBORE5CT09TVF9GVF9BUklUWV9MT09QX1BSRUZJWAotCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9TWU5USEVTSVpFX0lNUExfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfU1lOVEhFU0laRV9JTVBMX01BU1RFUl9IUFBfSU5DTFVERUQKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaWRlbnRpdHkuaHBwPgotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9uYW1lIHR5cGUKLQotIyAgIGlmZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLSMgICBlbHNlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfaXRlcihpKSBORE5CT09TVF9QUF9DQVQoaXRlcl8saSkKLQotI2VsaWYgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9JU19JVEVSQVRJTkcKLQotdGVtcGxhdGU8IE5ETkJPT1NUX0ZUX3RwbGFyZ3MoTkROQk9PU1RfUFBfSURFTlRJVFkodHlwZW5hbWUpKSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLE5ETkJPT1NUX0ZUX2FyaXR5KQotewotICB0eXBlZGVmIE5ETkJPT1NUX0ZUX3R5cGUgOwotfTsKLQotdGVtcGxhdGU8PiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCBORE5CT09TVF9GVF9uID4gCi17IAotICB0ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLSAgewotICBwcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPjo6dHlwZSBORE5CT09TVF9GVF9pdGVyKDApOwotIyAgIGlmIE5ETkJPT1NUX0ZUX24gPiAxCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oaSkgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IFwKLSAgICAgICAgICBORE5CT09TVF9GVF9pdGVyKE5ETkJPT1NUX1BQX0RFQyhpKSkgPjo6dHlwZSBORE5CT09TVF9GVF9pdGVyKGkpOwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyAoMSxORE5CT09TVF9GVF9uLTEpCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotIyAgIGVuZGlmCi0gIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLE5ETkJPT1NUX0ZUX2FyaXR5KSAKLSAgICA8IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IE5ETkJPT1NUX0ZUX2l0ZXIoMCkgPjo6dHlwZSAKLSMgICBpZiBORE5CT09TVF9GVF9tZnAKLSAgICAsIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6OmRlcmVmPCBORE5CT09TVF9GVF9pdGVyKDEpID46OnR5cGUgPjo6dHlwZQotIyAgIGVuZGlmCi0jICAgaWYgTkROQk9PU1RfRlRfbiA+IChORE5CT09TVF9GVF9tZnArMSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKE5ETkJPT1NUX0ZUX21mcCsxLE5ETkJPT1NUX0ZUX24tMSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyhpKSBcCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgTkROQk9PU1RfRlRfaXRlcihpKSA+Ojp0eXBlCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotIyAgIGVuZGlmCi0gICAgPjo6dHlwZSB0eXBlOwotICB9OwotfTsKLQotI2VsaWYgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9TVUZGSVgKLQotIyAgIGlmZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgICAgIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0jICAgZWxzZQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0jICAgZW5kaWYKLSMgICB1bmRlZiBORE5CT09TVF9GVF9pdGVyCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9uYW1lCi0KLSNlbHNlCi0jICAgZXJyb3IgImF0dGVtcHQgdG8gdXNlIGFyaXR5IGxvb3AgbWFzdGVyIGZpbGUgd2l0aG91dCBsb29wIgotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3RvX3NlcXVlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3RvX3NlcXVlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I1N2VkNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC90b19zZXF1ZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX1RPX1NFUVVFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfVE9fU0VRVUVOQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaXNfc2VxdWVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfY2FsbGFibGVfYnVpbHRpbi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyB3cmFwIGZpcnN0IGFyZ3VtZW50cyBpbiBjb21wb25lbnRzLCBpZiBjYWxsYWJsZSBidWlsdGluIHR5cGUKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdG9fc2VxdWVuY2UKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgbXBsOjpldmFsX2lmCi0gICA8IGlzX2NhbGxhYmxlX2J1aWx0aW48VD4KLSAgICwgdG9fc2VxdWVuY2U8IGNvbXBvbmVudHM8VD4gPgotICAgLCBtcGw6OmlkZW50aXR5PCBUID4KLSAgID46OnR5cGUKLSAgdHlwZTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotLy8gcmVkdWNlIHRlbXBsYXRlIGluc3RhbnRpYXRpb25zLCBpZiBwb3NzaWJsZQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXN0cnVjdCB0b19zZXF1ZW5jZTwgY29tcG9uZW50czxULFU+ID4gCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgY29tcG9uZW50czxULFU+Ojp0eXBlcyB0eXBlOwotfTsKLSNlbmRpZgotCi19IH0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9mdW5jdGlvbl90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZnVuY3Rpb25fdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NDYyMTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9mdW5jdGlvbl90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9GVU5DVElPTl9UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9GVU5DVElPTl9UWVBFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC90b19zZXF1ZW5jZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsgCi0gIG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyAKLSAgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGVzLCB0eXBlbmFtZSBUYWcgPSBudWxsX3RhZz4gc3RydWN0IGZ1bmN0aW9uX3R5cGUKLSAgICAgIDogZGV0YWlsOjpzeW50aGVzaXplX2Z1bmM8dHlwZW5hbWUgZGV0YWlsOjp0b19zZXF1ZW5jZTxUeXBlcz46OnR5cGUsIFRhZz4KLSAgICB7Ci0gICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsZnVuY3Rpb25fdHlwZSwoVHlwZXMsVGFnKSkKLSAgICB9OwotICB9Ci0gIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsZnVuY3Rpb25fdHlwZXM6OmZ1bmN0aW9uX3R5cGUpCi19Ci0KLSNlbmRpZgotIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19jYWxsYWJsZV9idWlsdGluLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfY2FsbGFibGVfYnVpbHRpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYjIyNDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19jYWxsYWJsZV9idWlsdGluLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9JU19DQUxMQUJMRV9CVUlMVElOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9JU19DQUxMQUJMRV9CVUlMVElOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbXBvbmVudHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17IAotICBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgCi0gIHsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID0gbnVsbF90YWcgPiAKLSAgICBzdHJ1Y3QgaXNfY2FsbGFibGVfYnVpbHRpbgotICAgICAgOiBmdW5jdGlvbl90eXBlczo6cmVwcmVzZW50cwotICAgICAgICA8IGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPFQ+Ci0gICAgICAgICwgZnVuY3Rpb25fdHlwZXM6OnRhZzxUYWcsIGRldGFpbDo6Y2FsbGFibGVfYnVpbHRpbl90YWc+IAotICAgICAgICA+Ci0gICAgeyAKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixpc19jYWxsYWJsZV9idWlsdGluLChULFRhZykpCi0gICAgfTsKLSAgfQotICBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLGZ1bmN0aW9uX3R5cGVzOjppc19jYWxsYWJsZV9idWlsdGluKQotfQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19mdW5jdGlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU3NjIxNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfSVNfRlVOQ1RJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0lTX0ZVTkNUSU9OX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbXBvbmVudHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17IAotICBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgCi0gIHsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID0gbnVsbF90YWcgPiAKLSAgICBzdHJ1Y3QgaXNfZnVuY3Rpb24KLSAgICAgIDogZnVuY3Rpb25fdHlwZXM6OnJlcHJlc2VudHMKLSAgICAgICAgPCBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxUPgotICAgICAgICAsIGZ1bmN0aW9uX3R5cGVzOjp0YWc8VGFnICxkZXRhaWw6OmZ1bmN0aW9uX3RhZz4gCi0gICAgICAgID4KLSAgICB7IAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGlzX2Z1bmN0aW9uLChULFRhZykpCi0gICAgfTsKLSAgfQotICBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLGZ1bmN0aW9uX3R5cGVzOjppc19mdW5jdGlvbikKLX0gCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uX3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19mdW5jdGlvbl9wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRmZjUwYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uX3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0lTX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0lTX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsgCi0gIG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyAKLSAgewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPSBudWxsX3RhZyA+IAotICAgIHN0cnVjdCBpc19mdW5jdGlvbl9wb2ludGVyCi0gICAgICA6IGZ1bmN0aW9uX3R5cGVzOjpyZXByZXNlbnRzCi0gICAgICAgIDwgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8VD4KLSAgICAgICAgLCBmdW5jdGlvbl90eXBlczo6dGFnPFRhZyAsZGV0YWlsOjpwb2ludGVyX3RhZz4gCi0gICAgICAgID4KLSAgICB7IAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGlzX2Z1bmN0aW9uX3BvaW50ZXIsKFQsVGFnKSkKLSAgICB9OwotICB9Ci0gIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsZnVuY3Rpb25fdHlwZXM6OmlzX2Z1bmN0aW9uX3BvaW50ZXIpCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19mdW5jdGlvbl9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19mdW5jdGlvbl9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzUwMjgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfZnVuY3Rpb25fcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9JU19GVU5DVElPTl9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0lTX0ZVTkNUSU9OX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb21wb25lbnRzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAoteyAKLSAgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIAotICB7Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA9IG51bGxfdGFnID4gCi0gICAgc3RydWN0IGlzX2Z1bmN0aW9uX3JlZmVyZW5jZQotICAgICAgOiBmdW5jdGlvbl90eXBlczo6cmVwcmVzZW50cwotICAgICAgICA8IGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPFQ+Ci0gICAgICAgICwgZnVuY3Rpb25fdHlwZXM6OnRhZzxUYWcgLGRldGFpbDo6cmVmZXJlbmNlX3RhZz4gPgotICAgIHsgCi0gICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsaXNfZnVuY3Rpb25fcmVmZXJlbmNlLChULFRhZykpCi0gICAgfTsKLSAgfQotICBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLGZ1bmN0aW9uX3R5cGVzOjppc19mdW5jdGlvbl9yZWZlcmVuY2UpCi19IAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wYXJhbWV0ZXJfdHlwZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wYXJhbWV0ZXJfdHlwZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjA0Y2U0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvcGFyYW1ldGVyX3R5cGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9QQVJBTUVURVJfVFlQRVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX1BBUkFNRVRFUl9UWVBFU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JsYW5rLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wb3BfZnJvbnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfY2FsbGFibGVfYnVpbHRpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsgCi0gIG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyAKLSAgewotICAgIHVzaW5nIG1wbDo6cGxhY2Vob2xkZXJzOjpfOwotIAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBDbGFzc1R5cGVUcmFuc2Zvcm0gPSBhZGRfcmVmZXJlbmNlPF8+ID4KLSAgICBzdHJ1Y3QgcGFyYW1ldGVyX3R5cGVzOwotCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENsYXNzVHlwZVRyYW5zZm9ybT4gCi0gICAgICBzdHJ1Y3QgcGFyYW1ldGVyX3R5cGVzX2ltcGwKLSAgICAgICAgOiBtcGw6OnBvcF9mcm9udAotICAgICAgICAgIDwgdHlwZW5hbWUgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8VCxDbGFzc1R5cGVUcmFuc2Zvcm0+Ojp0eXBlcyAKLSAgICAgICAgICA+Ojp0eXBlCi0gICAgICB7IH07Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ2xhc3NUeXBlVHJhbnNmb3JtPiBzdHJ1Y3QgcGFyYW1ldGVyX3R5cGVzCi0gICAgICA6IG1wbDo6aWZfCi0gICAgICAgIDwgZnVuY3Rpb25fdHlwZXM6OmlzX2NhbGxhYmxlX2J1aWx0aW48VD4KLSAgICAgICAgLCBkZXRhaWw6OnBhcmFtZXRlcl90eXBlc19pbXBsPFQsQ2xhc3NUeXBlVHJhbnNmb3JtPiwgbmRuYm9vc3Q6OmJsYW5rCi0gICAgICAgID46OnR5cGUKLSAgICB7Ci0gICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIscGFyYW1ldGVyX3R5cGVzLChULENsYXNzVHlwZVRyYW5zZm9ybSkpIAotICAgIH07Ci0gIH0KLSAgTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMixmdW5jdGlvbl90eXBlczo6cGFyYW1ldGVyX3R5cGVzKQotfQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wcm9wZXJ0eV90YWdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvcHJvcGVydHlfdGFncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2NjJmY2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wcm9wZXJ0eV90YWdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX1RBR1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9UQUdTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYml0eG9yLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgeyAKLQotbmFtZXNwYWNlIGRldGFpbCAKLXsKLSAgdHlwZWRlZiBsb25nIGJpdHNfdDsKLQotICB0ZW1wbGF0ZTxiaXRzX3QgVmFsdWU+IHN0cnVjdCBjb25zdGFudCAKLSAgICA6IG5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxiaXRzX3QsVmFsdWU+IAotICB7IH07Ci0KLSAgdGVtcGxhdGU8Yml0c190IEJpdHMsIGJpdHNfdCBNYXNrPiBzdHJ1Y3QgcHJvcGVydHlfdGFnIAotICB7Ci0gICAgdHlwZWRlZiBjb25zdGFudDxCaXRzPiBiaXRzOwotICAgIHR5cGVkZWYgY29uc3RhbnQ8TWFzaz4gbWFzazsKLSAgfTsKLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgYml0cyA6IFQ6OmJpdHMgeyB9OwotICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgbWFzayA6IFQ6Om1hc2sgeyB9OwotCi0gIC8vIGZvcndhcmQgZGVjbGFyYXRpb24sIGRlZmluZWQgaW4gcHBfdGFncwotICB0ZW1wbGF0ZTxiaXRzX3QgQml0cywgYml0c190IENDSUQ+IHN0cnVjdCBlbmNvZGVfYml0c19pbXBsOyAKLQotICAvLyBmb3J3YXJkIGRlY2xhcmF0aW9uLCBkZWZpbmVkIGluIHBwX3RhZ3MKLSAgdGVtcGxhdGU8Yml0c190IExIU19iaXRzLCBiaXRzX3QgTEhTX21hc2ssIAotICAgICAgICAgICBiaXRzX3QgUkhTX2JpdHMsIGJpdHNfdCBSSFNfbWFzaz4gCi0gIHN0cnVjdCB0YWdfaWNlOwotIAotICAvLyBmb3J3YXJkIGRlY2xhcmF0aW9uLCBkZWZpbmVkIGluIHJldGFnX2RlZmF1bHRfY2MgCi0gIHRlbXBsYXRlPGNsYXNzIFRhZywgY2xhc3MgUmVnVGFnID0gVGFnPiBzdHJ1Y3QgcmV0YWdfZGVmYXVsdF9jYzsgCi0gCi0gIHRlbXBsYXRlPGJpdHNfdCBCaXRzLCBiaXRzX3QgQ0NJRD4gc3RydWN0IGVuY29kZV9iaXRzCi0gICAgOiBjb25zdGFudDwgCi0gICAgICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmVuY29kZV9iaXRzX2ltcGw8Qml0cyxDQ0lEPjo6dmFsdWUgCi0gICAgICA+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBMSFMsIGNsYXNzIFJIUz4gc3RydWN0IGNvbXBvdW5kX3RhZwotICB7Ci0gICAgdHlwZWRlZiBjb25zdGFudDwKLSAgICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnRhZ19pY2UKLSAgICAgICAgPCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPExIUz46OnZhbHVlCi0gICAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6bWFzazxMSFM+Ojp2YWx1ZQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmJpdHM8UkhTPjo6dmFsdWUKLSAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFJIUz46OnZhbHVlCi0gICAgICAgID46OmNvbWJpbmVkX2JpdHMgCi0gICAgPiBiaXRzOwotCi0gICAgdHlwZWRlZiBjb25zdGFudDwgCi0gICAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjp0YWdfaWNlCi0gICAgICAgIDwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxMSFM+Ojp2YWx1ZQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6Om1hc2s8TEhTPjo6dmFsdWUKLSAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPFJIUz46OnZhbHVlCi0gICAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6bWFzazxSSFM+Ojp2YWx1ZQotICAgICAgICA+Ojpjb21iaW5lZF9tYXNrIAotICAgID4gbWFzazsgCi0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIEJhc2UsIGNsYXNzIFByb3BPbGQsIGNsYXNzIFByb3BOZXc+Ci0gIHN0cnVjdCBjaGFuZ2VkX3RhZwotICAgIDogQmFzZQotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmJpdHhvcl8KLSAgICAgICAgPHR5cGVuYW1lIEJhc2U6OmJpdHMsIHR5cGVuYW1lIFByb3BPbGQ6OmJpdHMsIHR5cGVuYW1lIFByb3BOZXc6OmJpdHM+Ci0gICAgYml0czsKLSAgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUYWcsIGNsYXNzIFF1ZXJ5VGFnPiBzdHJ1Y3QgcmVwcmVzZW50c19pbXBsCi0gICAgOiBuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwKLSAgICAgICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6dGFnX2ljZQotICAgICAgICAgIDwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxUYWc+Ojp2YWx1ZQotICAgICAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6bWFzazxUYWc+Ojp2YWx1ZQotICAgICAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxRdWVyeVRhZz46OnZhbHVlCi0gICAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFF1ZXJ5VGFnPjo6dmFsdWUKLSAgICAgICAgICA+OjptYXRjaAotICAgICAgPgotICB7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDAsMD4gbnVsbF90YWc7Ci0KLXRlbXBsYXRlPGNsYXNzIFRhZzEsIGNsYXNzIFRhZzIsIGNsYXNzIFRhZzMgPSBudWxsX3RhZywgY2xhc3MgVGFnNCA9IG51bGxfdGFnPgotc3RydWN0IHRhZwotICA6IGRldGFpbDo6Y29tcG91bmRfdGFnPCBkZXRhaWw6OmNvbXBvdW5kX3RhZzxUYWcxLFRhZzI+LCAKLSAgICAgICAgZGV0YWlsOjpjb21wb3VuZF90YWc8VGFnMyxUYWc0PiA+Ci17IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGU8Y2xhc3MgVGFnMSwgY2xhc3MgVGFnMiwgY2xhc3MgVGFnMz4gc3RydWN0IHRhZzxUYWcxLFRhZzIsVGFnMyxudWxsX3RhZz4KLSAgOiBkZXRhaWw6OmNvbXBvdW5kX3RhZzxkZXRhaWw6OmNvbXBvdW5kX3RhZzxUYWcxLFRhZzI+LFRhZzM+Ci17IH07Ci10ZW1wbGF0ZTxjbGFzcyBUYWcxLCBjbGFzcyBUYWcyPiBzdHJ1Y3QgdGFnPFRhZzEsVGFnMixudWxsX3RhZyxudWxsX3RhZz4KLSAgOiBkZXRhaWw6OmNvbXBvdW5kX3RhZzxUYWcxLFRhZzI+Ci17IH07Ci10ZW1wbGF0ZTxjbGFzcyBUYWcxPiBzdHJ1Y3QgdGFnPFRhZzEsbnVsbF90YWcsbnVsbF90YWcsbnVsbF90YWc+Ci0gIDogVGFnMQoteyB9OwotI2VuZGlmCi0KLQotdGVtcGxhdGU8Y2xhc3MgVGFnLCBjbGFzcyBRdWVyeVRhZz4gc3RydWN0IHJlcHJlc2VudHMKLSAgOiBkZXRhaWw6OnJlcHJlc2VudHNfaW1wbDxUYWcsIGRldGFpbDo6cmV0YWdfZGVmYXVsdF9jYzxRdWVyeVRhZyxUYWc+ID4KLXsgfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBUYWcsIGNsYXNzIFF1ZXJ5VGFnPiBzdHJ1Y3QgZXh0cmFjdAoteyAKLSAgdHlwZWRlZiBkZXRhaWw6OmNvbnN0YW50PAotICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnRhZ19pY2UKLSAgICAgIDwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxUYWc+Ojp2YWx1ZQotICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFRhZz46OnZhbHVlCi0gICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmJpdHM8UXVlcnlUYWc+Ojp2YWx1ZQotICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFF1ZXJ5VGFnPjo6dmFsdWUKLSAgICAgID46OmV4dHJhY3RlZF9iaXRzIAotICA+IGJpdHM7Ci0KLSAgdHlwZWRlZiBkZXRhaWw6OmNvbnN0YW50PCAKLSAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFF1ZXJ5VGFnPjo6dmFsdWUKLSAgPiBtYXNrOyAKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXMKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL3ByZXByb2Nlc3NlZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7Ci0jZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2ZpbGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL2NjX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwPgotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXMKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvcmVzdWx0X3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9yZXN1bHRfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZmIxMGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9yZXN1bHRfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfUkVTVUxUX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX1JFU1VMVF9UWVBFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmxhbmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F0LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2NhbGxhYmxlX2J1aWx0aW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbXBvbmVudHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17IAotICBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgCi0gIHsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfdHlwZTsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0X3R5cGVfaW1wbAotICAgICAgICA6IG1wbDo6YXRfYwotICAgICAgICAgIDwgdHlwZW5hbWUgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8VD46OnR5cGVzLCAwID4KLSAgICAgIHsgfTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0X3R5cGUKLSAgICAgIDogbXBsOjppZl8KLSAgICAgICAgPCBmdW5jdGlvbl90eXBlczo6aXNfY2FsbGFibGVfYnVpbHRpbjxUPgotICAgICAgICAsIGRldGFpbDo6cmVzdWx0X3R5cGVfaW1wbDxUPiwgbmRuYm9vc3Q6OmJsYW5rCi0gICAgICAgID46OnR5cGUKLSAgICB7IAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlc3VsdF90eXBlLChUKSkgCi0gICAgfTsKLSAgfQotICBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLGZ1bmN0aW9uX3R5cGVzOjpyZXN1bHRfdHlwZSkKLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTQ0NTdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NDggKzAsMCBAQAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDAgQ2FkZW56YSBOZXcgWmVhbGFuZCBMdGQKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnktCi0vLyBpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEJvb3N0IGZ1bmN0aW9uYWwuaHBwIGhlYWRlciBmaWxlCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9mdW5jdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAkSWQ6IGZ1bmN0aW9uYWwuaHBwIDM2MjQ2IDIwMDYtMTItMDIgMTQ6MTc6MjZaIGFuZHJlYXNfaHViZXI2OSAkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVU5DVElPTkFMX0hQUAotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTkFMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jYWxsX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vIFRoZSBmb2xsb3dpbmcgdHJhaXRzIGNsYXNzZXMgYWxsb3cgdXMgdG8gYXZvaWQgdGhlIG5lZWQgZm9yIHB0cl9mdW4KLSAgICAvLyBiZWNhdXNlIHRoZSB0eXBlcyBvZiBhcmd1bWVudHMgYW5kIHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYW4gYmUgCi0gICAgLy8gZGVkdWNlZC4KLSAgICAvLwotICAgIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCB0eXBlcyBkZWZpbmVkIGluIHVuYXJ5X2Z1bmN0aW9uIGFuZCAKLSAgICAvLyBiaW5hcnlfZnVuY3Rpb24sIHdlIGFkZAotICAgIC8vCi0gICAgLy8gLSBmdW5jdGlvbl90eXBlLCB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4KLSAgICAvLwotICAgIC8vIC0gcGFyYW1fdHlwZSwgdGhlIHR5cGUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgcGFzc2luZyB0aGUgZnVuY3Rpb24gb3IKLSAgICAvLyAgIGZ1bmN0aW9uIG9iamVjdCBhcyBhbiBhcmd1bWVudC4KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgICAgIHN0cnVjdCB1bmFyeV90cmFpdHNfaW1wOwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICAgICAgc3RydWN0IHVuYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgZnVuY3Rpb25fdHlwZSAmICAgICAgICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6cmVzdWx0X3R5cGUgICByZXN1bHRfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIEE+Ci0gICAgICAgIHN0cnVjdCB1bmFyeV90cmFpdHNfaW1wPFIoKikoQSk+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgUiAoKmZ1bmN0aW9uX3R5cGUpKEEpOwotICAgICAgICAgICAgdHlwZWRlZiBSICgqcGFyYW1fdHlwZSkoQSk7Ci0gICAgICAgICAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIEEgYXJndW1lbnRfdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgICAgICBzdHJ1Y3QgYmluYXJ5X3RyYWl0c19pbXA7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICAgICAgc3RydWN0IGJpbmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBmdW5jdGlvbl90eXBlICYgICAgICAgICAgICAgICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6cmVzdWx0X3R5cGUgICAgICAgICAgcmVzdWx0X3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSAgZmlyc3RfYXJndW1lbnRfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgICAgIHN0cnVjdCBiaW5hcnlfdHJhaXRzX2ltcDxSKCopKEExLEEyKT4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBSICgqZnVuY3Rpb25fdHlwZSkoQTEsQTIpOwotICAgICAgICAgICAgdHlwZWRlZiBSICgqcGFyYW1fdHlwZSkoQTEsQTIpOwotICAgICAgICAgICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBBMSBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBBMiBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSAgICAgICAgfTsKLSAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIHN0cnVjdCB1bmFyeV90cmFpdHMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpmdW5jdGlvbl90eXBlIGZ1bmN0aW9uX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpwYXJhbV90eXBlICAgIHBhcmFtX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW5hcnlfdHJhaXRzX2ltcDxPcGVyYXRpb24qPjo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlOwotICAgIH07IAotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIEE+Ci0gICAgc3RydWN0IHVuYXJ5X3RyYWl0czxSKCopKEEpPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBSICgqZnVuY3Rpb25fdHlwZSkoQSk7Ci0gICAgICAgIHR5cGVkZWYgUiAoKnBhcmFtX3R5cGUpKEEpOwotICAgICAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgQSBhcmd1bWVudF90eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIHN0cnVjdCBiaW5hcnlfdHJhaXRzCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YmluYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj46OmZ1bmN0aW9uX3R5cGUgICAgICAgIGZ1bmN0aW9uX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpiaW5hcnlfdHJhaXRzX2ltcDxPcGVyYXRpb24qPjo6cGFyYW1fdHlwZSAgICAgICAgICAgcGFyYW1fdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJpbmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpyZXN1bHRfdHlwZSAgICAgICAgICByZXN1bHRfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJpbmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpmaXJzdF9hcmd1bWVudF90eXBlICBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YmluYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj46OnNlY29uZF9hcmd1bWVudF90eXBlIHNlY29uZF9hcmd1bWVudF90eXBlOwotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgICBzdHJ1Y3QgYmluYXJ5X3RyYWl0czxSKCopKEExLEEyKT4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgUiAoKmZ1bmN0aW9uX3R5cGUpKEExLEEyKTsKLSAgICAgICAgdHlwZWRlZiBSICgqcGFyYW1fdHlwZSkoQTEsQTIpOwotICAgICAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgQTEgZmlyc3RfYXJndW1lbnRfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBBMiBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSAgICB9OwotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gSWYgd2UgaGF2ZSBubyBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uIGF2YWlsYWJsZSwgZGVjYXkgdG8gYSBzaXR1YXRpb24KLSAgICAvLyB0aGF0IGlzIG5vIHdvcnNlIHRoYW4gaW4gdGhlIFN0YW5kYXJkLCBpLmUuLCBwdHJfZnVuIHdpbGwgYmUgcmVxdWlyZWQuCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgc3RydWN0IHVuYXJ5X3RyYWl0cwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fdHlwZTsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBPcGVyYXRpb24mICAgICAgICAgICAgICAgICAgcGFyYW1fdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBPcGVyYXRpb246OnJlc3VsdF90eXBlICAgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGU7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICBzdHJ1Y3QgYmluYXJ5X3RyYWl0cwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgT3BlcmF0aW9uICYgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6cmVzdWx0X3R5cGUgICAgICAgICAgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlICBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci0gICAgfTsgICAgCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgIAotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gdW5hcnlfbmVnYXRlLCBub3QxCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlPgotICAgIGNsYXNzIHVuYXJ5X25lZ2F0ZQotICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIHVuYXJ5X3RyYWl0czxQcmVkaWNhdGU+Ojphcmd1bWVudF90eXBlLGJvb2w+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCB1bmFyeV9uZWdhdGUodHlwZW5hbWUgdW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OnBhcmFtX3R5cGUgeCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHByZWQoeCkKLSAgICAgICAge30KLSAgICAgICAgYm9vbCBvcGVyYXRvcigpKHR5cGVuYW1lIGNhbGxfdHJhaXRzPHR5cGVuYW1lIHVuYXJ5X3RyYWl0czxQcmVkaWNhdGU+Ojphcmd1bWVudF90eXBlPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIXByZWQoeCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIHVuYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpmdW5jdGlvbl90eXBlIHByZWQ7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGU+Ci0gICAgdW5hcnlfbmVnYXRlPFByZWRpY2F0ZT4gbm90MShjb25zdCBQcmVkaWNhdGUgJnByZWQpCi0gICAgewotICAgICAgICAvLyBUaGUgY2FzdCBpcyB0byBwbGFjYXRlIEJvcmxhbmQgQysrQnVpbGRlciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuCi0gICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgaXQgc2hvdWxkIGJlIG5lY2Vzc2FyeS4KLSAgICAgICAgcmV0dXJuIHVuYXJ5X25lZ2F0ZTxQcmVkaWNhdGU+KCh0eXBlbmFtZSB1bmFyeV90cmFpdHM8UHJlZGljYXRlPjo6cGFyYW1fdHlwZSlwcmVkKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlPgotICAgIHVuYXJ5X25lZ2F0ZTxQcmVkaWNhdGU+IG5vdDEoUHJlZGljYXRlICZwcmVkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVuYXJ5X25lZ2F0ZTxQcmVkaWNhdGU+KHByZWQpOwotICAgIH0KLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gYmluYXJ5X25lZ2F0ZSwgbm90MgotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgdGVtcGxhdGUgPGNsYXNzIFByZWRpY2F0ZT4KLSAgICBjbGFzcyBiaW5hcnlfbmVnYXRlCi0gICAgICAgIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8UHJlZGljYXRlPjo6Zmlyc3RfYXJndW1lbnRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpzZWNvbmRfYXJndW1lbnRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbD4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IGJpbmFyeV9uZWdhdGUodHlwZW5hbWUgYmluYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpwYXJhbV90eXBlIHgpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICBwcmVkKHgpCi0gICAgICAgIHt9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IoKSh0eXBlbmFtZSBjYWxsX3RyYWl0czx0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OmZpcnN0X2FyZ3VtZW50X3R5cGU+OjpwYXJhbV90eXBlIHgsCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYWxsX3RyYWl0czx0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OnNlY29uZF9hcmd1bWVudF90eXBlPjo6cGFyYW1fdHlwZSB5KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIXByZWQoeCx5KTsKLSAgICAgICAgfQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpmdW5jdGlvbl90eXBlIHByZWQ7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGU+Ci0gICAgYmluYXJ5X25lZ2F0ZTxQcmVkaWNhdGU+IG5vdDIoY29uc3QgUHJlZGljYXRlICZwcmVkKQotICAgIHsKLSAgICAgICAgLy8gVGhlIGNhc3QgaXMgdG8gcGxhY2F0ZSBCb3JsYW5kIEMrK0J1aWxkZXIgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzLgotICAgICAgICAvLyBJIGRvbid0IHRoaW5rIGl0IHNob3VsZCBiZSBuZWNlc3NhcnkuCi0gICAgICAgIHJldHVybiBiaW5hcnlfbmVnYXRlPFByZWRpY2F0ZT4oKHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8UHJlZGljYXRlPjo6cGFyYW1fdHlwZSlwcmVkKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlPgotICAgIGJpbmFyeV9uZWdhdGU8UHJlZGljYXRlPiBub3QyKFByZWRpY2F0ZSAmcHJlZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaW5hcnlfbmVnYXRlPFByZWRpY2F0ZT4ocHJlZCk7Ci0gICAgfQotICAgICAgICAKLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vIGJpbmRlcjFzdCwgYmluZDFzdAotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICBjbGFzcyBiaW5kZXIxc3QKLSAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnNlY29uZF9hcmd1bWVudF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cmVzdWx0X3R5cGU+Ci0gICAgeyAgICAgICAKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgYmluZGVyMXN0KHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cGFyYW1fdHlwZSB4LAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FsbF90cmFpdHM8dHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpmaXJzdF9hcmd1bWVudF90eXBlPjo6cGFyYW1fdHlwZSB5KQotICAgICAgICAgICAgOgotICAgICAgICAgICAgb3AoeCksIHZhbHVlKHkpCi0gICAgICAgIHt9Ci0gICAgICAgIAotICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnJlc3VsdF90eXBlCi0gICAgICAgIG9wZXJhdG9yKCkodHlwZW5hbWUgY2FsbF90cmFpdHM8dHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpzZWNvbmRfYXJndW1lbnRfdHlwZT46OnBhcmFtX3R5cGUgeCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG9wKHZhbHVlLCB4KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgIHByb3RlY3RlZDoKLSAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpmdW5jdGlvbl90eXBlIG9wOwotICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OmZpcnN0X2FyZ3VtZW50X3R5cGUgdmFsdWU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgaW5saW5lIGJpbmRlcjFzdDxPcGVyYXRpb24+IGJpbmQxc3QoY29uc3QgT3BlcmF0aW9uICZvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYWxsX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OmZpcnN0X2FyZ3VtZW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+OjpwYXJhbV90eXBlIHgpCi0gICAgewotICAgICAgICAvLyBUaGUgY2FzdCBpcyB0byBwbGFjYXRlIEJvcmxhbmQgQysrQnVpbGRlciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuCi0gICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgaXQgc2hvdWxkIGJlIG5lY2Vzc2FyeS4KLSAgICAgICAgcmV0dXJuIGJpbmRlcjFzdDxPcGVyYXRpb24+KCh0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnBhcmFtX3R5cGUpb3AsIHgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgaW5saW5lIGJpbmRlcjFzdDxPcGVyYXRpb24+IGJpbmQxc3QoT3BlcmF0aW9uICZvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYWxsX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OmZpcnN0X2FyZ3VtZW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+OjpwYXJhbV90eXBlIHgpCi0gICAgewotICAgICAgICByZXR1cm4gYmluZGVyMXN0PE9wZXJhdGlvbj4ob3AsIHgpOwotICAgIH0KLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gYmluZGVyMm5kLCBiaW5kMm5kCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIGNsYXNzIGJpbmRlcjJuZAotICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6Zmlyc3RfYXJndW1lbnRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnJlc3VsdF90eXBlPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgYmluZGVyMm5kKHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cGFyYW1fdHlwZSB4LAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FsbF90cmFpdHM8dHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpzZWNvbmRfYXJndW1lbnRfdHlwZT46OnBhcmFtX3R5cGUgeSkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIG9wKHgpLCB2YWx1ZSh5KQotICAgICAgICB7fQotICAgICAgICAKLSAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpyZXN1bHRfdHlwZQotICAgICAgICBvcGVyYXRvcigpKHR5cGVuYW1lIGNhbGxfdHJhaXRzPHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6Zmlyc3RfYXJndW1lbnRfdHlwZT46OnBhcmFtX3R5cGUgeCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG9wKHgsIHZhbHVlKTsKLSAgICAgICAgfSAgICAgICAgICAgICAgIAotICAgICAgICAKLSAgICAgIHByb3RlY3RlZDoKLSAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpmdW5jdGlvbl90eXBlIG9wOwotICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnNlY29uZF9hcmd1bWVudF90eXBlIHZhbHVlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIGlubGluZSBiaW5kZXIybmQ8T3BlcmF0aW9uPiBiaW5kMm5kKGNvbnN0IE9wZXJhdGlvbiAmb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FsbF90cmFpdHM8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpzZWNvbmRfYXJndW1lbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnBhcmFtX3R5cGUgeCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSBjYXN0IGlzIHRvIHBsYWNhdGUgQm9ybGFuZCBDKytCdWlsZGVyIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KLSAgICAgICAgLy8gSSBkb24ndCB0aGluayBpdCBzaG91bGQgYmUgbmVjZXNzYXJ5LgotICAgICAgICByZXR1cm4gYmluZGVyMm5kPE9wZXJhdGlvbj4oKHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cGFyYW1fdHlwZSlvcCwgeCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICBpbmxpbmUgYmluZGVyMm5kPE9wZXJhdGlvbj4gYmluZDJuZChPcGVyYXRpb24gJm9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNhbGxfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+OjpwYXJhbV90eXBlIHgpCi0gICAgewotICAgICAgICByZXR1cm4gYmluZGVyMm5kPE9wZXJhdGlvbj4ob3AsIHgpOwotICAgIH0KLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gbWVtX2Z1biwgZXRjCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgVD4KLSAgICBjbGFzcyBtZW1fZnVuX3QgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxUKiwgUz4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IG1lbV9mdW5fdChTIChUOjoqcCkoKSkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICBTIG9wZXJhdG9yKCkoVCogcCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChwLT4qcHRyKSgpOwotICAgICAgICB9Ci0gICAgICBwcml2YXRlOgotICAgICAgICBTIChUOjoqcHRyKSgpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgVCwgY2xhc3MgQT4KLSAgICBjbGFzcyBtZW1fZnVuMV90IDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPFQqLCBBLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzogICAKLSAgICAgICAgZXhwbGljaXQgbWVtX2Z1bjFfdChTIChUOjoqcCkoQSkpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICBwdHIocCkKLSAgICAgICAge30KLSAgICAgICAgUyBvcGVyYXRvcigpKFQqIHAsIHR5cGVuYW1lIGNhbGxfdHJhaXRzPEE+OjpwYXJhbV90eXBlIHgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAocC0+KnB0cikoeCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKEEpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgVD4KLSAgICBjbGFzcyBjb25zdF9tZW1fZnVuX3QgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxjb25zdCBUKiwgUz4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IGNvbnN0X21lbV9mdW5fdChTIChUOjoqcCkoKSBjb25zdCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICBTIG9wZXJhdG9yKCkoY29uc3QgVCogcCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChwLT4qcHRyKSgpOwotICAgICAgICB9Ci0gICAgICBwcml2YXRlOgotICAgICAgICBTIChUOjoqcHRyKSgpIGNvbnN0OyAgICAgICAgCi0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGNsYXNzIGNvbnN0X21lbV9mdW4xX3QgOiBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248Y29uc3QgVCosIEEsIFM+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBjb25zdF9tZW1fZnVuMV90KFMgKFQ6OipwKShBKSBjb25zdCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICBTIG9wZXJhdG9yKCkoY29uc3QgVCogcCwgdHlwZW5hbWUgY2FsbF90cmFpdHM8QT46OnBhcmFtX3R5cGUgeCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChwLT4qcHRyKSh4KTsKLSAgICAgICAgfQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgUyAoVDo6KnB0cikoQSkgY29uc3Q7Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPgotICAgIGlubGluZSBtZW1fZnVuX3Q8UyxUPiBtZW1fZnVuKFMgKFQ6OipmKSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1lbV9mdW5fdDxTLFQ+KGYpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGlubGluZSBtZW1fZnVuMV90PFMsVCxBPiBtZW1fZnVuKFMgKFQ6OipmKShBKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtZW1fZnVuMV90PFMsVCxBPihmKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fUE9JTlRFUl9UT19NRU1CRVJfQ09OU1QKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPgotICAgIGlubGluZSBjb25zdF9tZW1fZnVuX3Q8UyxUPiBtZW1fZnVuKFMgKFQ6OipmKSgpIGNvbnN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X21lbV9mdW5fdDxTLFQ+KGYpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGlubGluZSBjb25zdF9tZW1fZnVuMV90PFMsVCxBPiBtZW1fZnVuKFMgKFQ6OipmKShBKSBjb25zdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdF9tZW1fZnVuMV90PFMsVCxBPihmKTsKLSAgICB9Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fUE9JTlRFUl9UT19NRU1CRVJfQ09OU1QKLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gbWVtX2Z1bl9yZWYsIGV0YwotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIFQ+Ci0gICAgY2xhc3MgbWVtX2Z1bl9yZWZfdCA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFQmLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgbWVtX2Z1bl9yZWZfdChTIChUOjoqcCkoKSkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICBTIG9wZXJhdG9yKCkoVCYgcCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChwLipwdHIpKCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKCk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGNsYXNzIG1lbV9mdW4xX3JlZl90IDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPFQmLCBBLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgbWVtX2Z1bjFfcmVmX3QoUyAoVDo6KnApKEEpKQotICAgICAgICAgICAgOgotICAgICAgICAgICAgcHRyKHApCi0gICAgICAgIHt9Ci0gICAgICAgIFMgb3BlcmF0b3IoKShUJiBwLCB0eXBlbmFtZSBjYWxsX3RyYWl0czxBPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHAuKnB0cikoeCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKEEpOwotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIFQ+Ci0gICAgY2xhc3MgY29uc3RfbWVtX2Z1bl9yZWZfdCA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPGNvbnN0IFQmLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bl9yZWZfdChTIChUOjoqcCkoKSBjb25zdCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICAKLSAgICAgICAgUyBvcGVyYXRvcigpKGNvbnN0IFQgJnApIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAocC4qcHRyKSgpOwotICAgICAgICB9Ci0gICAgICBwcml2YXRlOgotICAgICAgICBTIChUOjoqcHRyKSgpIGNvbnN0OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgVCwgY2xhc3MgQT4KLSAgICBjbGFzcyBjb25zdF9tZW1fZnVuMV9yZWZfdCA6IHB1YmxpYyBzdGQ6OmJpbmFyeV9mdW5jdGlvbjxjb25zdCBUJiwgQSwgUz4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3JlZl90KFMgKFQ6OipwKShBKSBjb25zdCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotCi0gICAgICAgIFMgb3BlcmF0b3IoKShjb25zdCBUJiBwLCB0eXBlbmFtZSBjYWxsX3RyYWl0czxBPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHAuKnB0cikoeCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKEEpIGNvbnN0OwotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGU8Y2xhc3MgUywgY2xhc3MgVD4KLSAgICBpbmxpbmUgbWVtX2Z1bl9yZWZfdDxTLFQ+IG1lbV9mdW5fcmVmKFMgKFQ6OipmKSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1lbV9mdW5fcmVmX3Q8UyxUPihmKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGlubGluZSBtZW1fZnVuMV9yZWZfdDxTLFQsQT4gbWVtX2Z1bl9yZWYoUyAoVDo6KmYpKEEpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1lbV9mdW4xX3JlZl90PFMsVCxBPihmKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fUE9JTlRFUl9UT19NRU1CRVJfQ09OU1QKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPgotICAgIGlubGluZSBjb25zdF9tZW1fZnVuX3JlZl90PFMsVD4gbWVtX2Z1bl9yZWYoUyAoVDo6KmYpKCkgY29uc3QpCi0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfbWVtX2Z1bl9yZWZfdDxTLFQ+KGYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgaW5saW5lIGNvbnN0X21lbV9mdW4xX3JlZl90PFMsVCxBPiBtZW1fZnVuX3JlZihTIChUOjoqZikoQSkgY29uc3QpCi0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfbWVtX2Z1bjFfcmVmX3Q8UyxULEE+KGYpOwotICAgIH0gICAKLSNlbmRpZiAvLyBORE5CT09TVF9OT19QT0lOVEVSX1RPX01FTUJFUl9DT05TVAotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyBwdHJfZnVuCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnLCBjbGFzcyBSZXN1bHQ+Ci0gICAgY2xhc3MgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbiA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPEFyZyxSZXN1bHQ+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uKFJlc3VsdCAoKmYpKEFyZykpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICBmdW5jKGYpCi0gICAgICAgIHt9Ci0KLSAgICAgICAgUmVzdWx0IG9wZXJhdG9yKCkodHlwZW5hbWUgY2FsbF90cmFpdHM8QXJnPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZnVuYyh4KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFJlc3VsdCAoKmZ1bmMpKEFyZyk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBBcmcsIGNsYXNzIFJlc3VsdD4KLSAgICBpbmxpbmUgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxBcmcsUmVzdWx0PiBwdHJfZnVuKFJlc3VsdCAoKmYpKEFyZykpCi0gICAgewotICAgICAgICByZXR1cm4gcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxBcmcsUmVzdWx0PihmKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgUmVzdWx0PgotICAgIGNsYXNzIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPEFyZzEsQXJnMixSZXN1bHQ+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbihSZXN1bHQgKCpmKShBcmcxLCBBcmcyKSkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIGZ1bmMoZikKLSAgICAgICAge30KLSAgICAgICAgCi0gICAgICAgIFJlc3VsdCBvcGVyYXRvcigpKHR5cGVuYW1lIGNhbGxfdHJhaXRzPEFyZzE+OjpwYXJhbV90eXBlIHgsIHR5cGVuYW1lIGNhbGxfdHJhaXRzPEFyZzI+OjpwYXJhbV90eXBlIHkpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmdW5jKHgseSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICBwcml2YXRlOgotICAgICAgICBSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIFJlc3VsdD4KLSAgICBpbmxpbmUgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb248QXJnMSxBcmcyLFJlc3VsdD4gcHRyX2Z1bihSZXN1bHQgKCpmKShBcmcxLCBBcmcyKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbjxBcmcxLEFyZzIsUmVzdWx0PihmKTsKLSAgICB9Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjNjhiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAwOSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoLmhwcD4KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2Zsb2F0X2Z1bmN0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvZmxvYXRfZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMxYWI2Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvZmxvYXRfZnVuY3Rpb25zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzNiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMDkgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfREVUQUlMX0ZMT0FUX0ZVTkNUSU9OU19IUFApCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9ERVRBSUxfRkxPQVRfRlVOQ1RJT05TX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL2NtYXRoLmhwcD4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vIFNldCBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIHRvIDEgZm9yIGxpYnJhcmllcyBrbm93biB0byBoYXZlCi0vLyBzdWZmaWNpZW50bHkgZ29vZCBmbG9hdGluZyBwb2ludCBzdXBwb3J0IHRvIG5vdCByZXF1aXJlIGFueQotLy8gd29ya2Fyb3VuZHMuCi0vLwotLy8gV2hlbiBzZXQgdG8gMCwgdGhlIGxpYnJhcnkgdHJpZXMgdG8gYXV0b21hdGljYWxseQotLy8gdXNlIHRoZSBiZXN0IGF2YWlsYWJsZSBpbXBsZW1lbnRhdGlvbi4gVGhpcyBub3JtYWxseSB3b3JrcyB3ZWxsLCBidXQKLS8vIGJyZWFrcyB3aGVuIGFtYmlndWl0aWVzIGFyZSBjcmVhdGVkIGJ5IG9kZCBuYW1lc3BhY2luZyBvZiB0aGUgZnVuY3Rpb25zLgotLy8KLS8vIE5vdGUgdGhhdCBpZiB0aGlzIGlzIHNldCB0byAwLCB0aGUgbGlicmFyeSBzaG91bGQgc3RpbGwgdGFrZSBmdWxsCi0vLyBhZHZhbnRhZ2Ugb2YgdGhlIHBsYXRmb3JtJ3MgZmxvYXRpbmcgcG9pbnQgc3VwcG9ydC4KLQotI2lmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUyAwCi0jZWxpZiBkZWZpbmVkKF9fTElCQ09NT19fKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbGlmIGRlZmluZWQoX19TVERfUldDT01QSUxFUl9IX18pIHx8IGRlZmluZWQoX1JXU1REX1ZFUikKLS8vIFJvZ3VlIFdhdmUgbGlicmFyeToKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUyAwCi0jZWxpZiBkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKLS8vIGxpYmMrKwotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDEKLSNlbGlmIGRlZmluZWQoX19HTElCQ1BQX18pIHx8IGRlZmluZWQoX19HTElCQ1hYX18pCi0vLyBHTlUgbGlic3RkYysrIDMKLSMgICBpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA0Ci0jICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDEKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZChfX1NUTF9DT05GSUdfSCkKLS8vIGdlbmVyaWMgU0dJIFNUTAotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbGlmIGRlZmluZWQoX19NU0xfQ1BQX18pCi0vLyBNU0wgc3RhbmRhcmQgbGliOgotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbGlmIGRlZmluZWQoX19JQk1DUFBfXykKLS8vIFZBQ1BQIHN0ZCBsaWIgKHByb2JhYmx5IGNvbmZvcm1hbnQgZm9yIG11Y2ggZWFybGllciB2ZXJzaW9uKS4KLSMgICBpZiBfX0lCTUNQUF9fID49IDEyMTAKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMQotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMAotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKE1TSVBMX0NPTVBJTEVfSCkKLS8vIE1vZGVuYSBDKysgc3RhbmRhcmQgbGlicmFyeQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbGlmIChkZWZpbmVkKF9ZVkFMUykgJiYgIWRlZmluZWQoX19JQk1DUFBfXykpIHx8IGRlZmluZWQoX0NQUExJQl9WRVIpCi0vLyBEaW5rdW13YXJlIExpYnJhcnkgKHRoaXMgaGFzIHRvIGFwcGVhciBhZnRlciBhbnkgcG9zc2libGUgcmVwbGFjZW1lbnQgbGlicmFyaWVzKToKLSMgICBpZiBfQ1BQTElCX1ZFUiA+PSA0MDUKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMQotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMAotIyAgIGVuZGlmCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUwotCi0vLyBUaGUgc3RhbmRhcmQgbGlicmFyeSBpcyBrbm93biB0byBiZSBjb21wbGlhbnQsIHNvIGRvbid0IHVzZSB0aGUKLS8vIGNvbmZpZ3VyYXRpb24gbWVjaGFuaXNtLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgc3RydWN0IGNhbGxfbGRleHAgewotICAgICAgICAgICAgdHlwZWRlZiBGbG9hdCBmbG9hdF90eXBlOwotICAgICAgICAgICAgaW5saW5lIEZsb2F0IG9wZXJhdG9yKCkoRmxvYXQgeCwgaW50IHkpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpsZGV4cCh4LCB5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXQ+Ci0gICAgICAgIHN0cnVjdCBjYWxsX2ZyZXhwIHsKLSAgICAgICAgICAgIHR5cGVkZWYgRmxvYXQgZmxvYXRfdHlwZTsKLSAgICAgICAgICAgIGlubGluZSBGbG9hdCBvcGVyYXRvcigpKEZsb2F0IHgsIGludCogeSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OmZyZXhwKHgsIHkpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgc3RydWN0IHNlbGVjdF9oYXNoX3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBGbG9hdCB0eXBlOwotICAgICAgICB9OwotICAgIH0KLX0KLQotI2Vsc2UgLy8gTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUyA9PSAwCi0KLS8vIFRoZSBDKysgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdCB0aGUgQyBmbG9hdCBmdW5jdGlvbnMgYXJlIG92ZXJsb2FyZGVkCi0vLyBmb3IgZmxvYXQsIGRvdWJsZSBhbmQgbG9uZyBkb3VibGUgaW4gdGhlIHN0ZCBuYW1lc3BhY2UsIGJ1dCBzb21lIG9mIHRoZSBvbGRlcgotLy8gbGlicmFyeSBpbXBsZW1lbnRhdGlvbnMgZG9uJ3Qgc3VwcG9ydCB0aGlzLiBPbiBzb21lIHRoYXQgZG9uJ3QsIHRoZSBDOTkKLS8vIGZsb2F0IGZ1bmN0aW9ucyAoZnJleHBmLCBmcmV4cGwsIGV0Yy4pIGFyZSBhdmFpbGFibGUuCi0vLwotLy8gVGhlIGZvbGxvd2luZyB0cmllcyB0byBhdXRvbWF0aWNhbGx5IGRldGVjdCB3aGljaCBhcmUgYXZhaWxhYmxlLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbCB7Ci0KLSAgICAgICAgLy8gUmV0dXJuZWQgYnkgZHVtbXkgdmVyc2lvbnMgb2YgdGhlIGZsb2F0IGZ1bmN0aW9ucy4KLSAgICAKLSAgICAgICAgc3RydWN0IG5vdF9mb3VuZCB7Ci0gICAgICAgICAgICAvLyBJbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIGZsb2F0IGFuZCBsb25nIGRvdWJsZSBpbiBvcmRlciB0byBhdm9pZAotICAgICAgICAgICAgLy8gYSBjb21waWxlIGVycm9yIHdoZW4gdGhlIGR1bW15IGZsb2F0IGZ1bmN0aW9ucyBhcmUgdXNlZC4KLQotICAgICAgICAgICAgaW5saW5lIG9wZXJhdG9yIGZsb2F0KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgICAgICAgICAgaW5saW5lIG9wZXJhdG9yIGxvbmcgZG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgICAgICB9OwotICAgICAgICAgIAotICAgICAgICAvLyBBIHR5cGUgZm9yIGRldGVjdGluZyB0aGUgcmV0dXJuIHR5cGUgb2YgZnVuY3Rpb25zLgotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXM7Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBpczxmbG9hdD4geyBjaGFyIHhbMTBdOyB9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXM8ZG91YmxlPiB7IGNoYXIgeFsyMF07IH07Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBpczxsb25nIGRvdWJsZT4geyBjaGFyIHhbMzBdOyB9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXM8bmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpub3RfZm91bmQ+IHsgY2hhciB4WzQwXTsgfTsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBVc2VkIHRvIGNvbnZlcnQgdGhlIHJldHVybiB0eXBlIG9mIGEgZnVuY3Rpb24gdG8gYSB0eXBlIGZvciBzaXplb2YuCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlzPFQ+IGZsb2F0X3R5cGUoVCk7Ci0KLSAgICAgICAgLy8gY2FsbF9sZGV4cAotICAgICAgICAvLwotICAgICAgICAvLyBUaGlzIHdpbGwgZ2V0IHNwZWNpYWxpemVkIGZvciBmbG9hdCBhbmQgbG9uZyBkb3VibGUKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4gc3RydWN0IGNhbGxfbGRleHAKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBkb3VibGUgZmxvYXRfdHlwZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW5saW5lIGRvdWJsZSBvcGVyYXRvcigpKGRvdWJsZSBhLCBpbnQgYikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICAgICAgICAgIHJldHVybiBsZGV4cChhLCBiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICAvLyBjYWxsX2ZyZXhwCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoaXMgd2lsbCBnZXQgc3BlY2lhbGl6ZWQgZm9yIGZsb2F0IGFuZCBsb25nIGRvdWJsZQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4gc3RydWN0IGNhbGxfZnJleHAKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBkb3VibGUgZmxvYXRfdHlwZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW5saW5lIGRvdWJsZSBvcGVyYXRvcigpKGRvdWJsZSBhLCBpbnQqIGIpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJleHAoYSwgYik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfQotfQotICAgICAgICAgICAgCi0vLyBBIG5hbWVzcGFjZSBmb3IgZHVtbXkgZnVuY3Rpb25zIHRvIGRldGVjdCB3aGVuIHRoZSBhY3R1YWwgZnVuY3Rpb24gd2Ugd2FudAotLy8gaXNuJ3QgYXZhaWxhYmxlLiBsZGV4cGwsIGxkZXhwZiBldGMuIG1pZ2h0IGJlIGFkZGVkIHRieSB0aGUgbWFjcm9zIGJlbG93LgotLy8KLS8vIEFGQUlDVCB0aGVzZSBoYXZlIHRvIGJlIG91dHNpZGUgb2YgdGhlIGJvb3N0IG5hbWVzcGFjZSwgYXMgaWYgdGhleSdyZSBpbgotLy8gdGhlIGJvb3N0IG5hbWVzcGFjZSB0aGV5J2xsIGFsd2F5cyBiZSBwcmVmZXJhYmxlIHRvIGFueSBvdGhlciBmdW5jdGlvbgotLy8gKHNpbmNlIHRoZSBhcmd1bWVudHMgYXJlIGJ1aWx0IGluIHR5cGVzLCBBREwgY2FuJ3QgYmUgdXNlZCkuCi0KLW5hbWVzcGFjZSBuZG5ib29zdF9oYXNoX2RldGVjdF9mbG9hdF9mdW5jdGlvbnMgewotICAgIHRlbXBsYXRlIDxjbGFzcyBGbG9hdD4gbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpub3RfZm91bmQgbGRleHAoRmxvYXQsIGludCk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEZsb2F0PiBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Om5vdF9mb3VuZCBmcmV4cChGbG9hdCwgaW50Kik7ICAgIAotfQotCi0vLyBNYWNyb3MgZm9yIGdlbmVyYXRpbmcgc3BlY2lhbGl6YXRpb25zIG9mIGNhbGxfbGRleHAgYW5kIGNhbGxfZnJleHAuCi0vLwotLy8gY2hlY2tfY3BwIGFuZCBjaGVja19jOTkgY2hlY2sgaWYgdGhlIEMrKyBvciBDOTkgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUuCi0vLwotLy8gVGhlbiB0aGUgY2FsbF8qIGZ1bmN0aW9ucyBzZWxlY3QgYW4gYXBwcm9wcmlhdGUgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gSSB1c2VkIGM5OV9mdW5jIGluIGEgZmV3IHBsYWNlcyBqdXN0IHRvIGdldCBhIHVuaXF1ZSBuYW1lLgotLy8KLS8vIEltcG9ydGFudDogd2hlbiB1c2luZyAndXNpbmcgbmFtZXNwYWNlJyBhdCBuYW1lc3BhY2UgbGV2ZWwsIGluY2x1ZGUgYXMKLS8vIGxpdHRsZSBhcyBwb3NzaWJsZSBpbiB0aGF0IG5hbWVzcGFjZSwgYXMgVmlzdWFsIEMrKyBoYXMgYW4gb2RkIGJ1ZyB3aGljaAotLy8gY2FuIGNhdXNlIHRoZSBuYW1lc3BhY2UgdG8gYmUgaW1wb3J0ZWQgYXQgdGhlIGdsb2JhbCBsZXZlbC4gVGhpcyBzZWVtcyB0bwotLy8gaGFwcGVuIG1haW5seSB3aGVuIHRoZXJlJ3MgYSB0ZW1wbGF0ZSBpbiB0aGUgc2FtZSBuYW1lc2FwY2UuCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX0ZVTkMoY3BwX2Z1bmMsIGM5OV9mdW5jLCB0eXBlMSwgdHlwZTIpICAgIFwKLW5hbWVzcGFjZSBuZG5ib29zdF9oYXNoX2RldGVjdF9mbG9hdF9mdW5jdGlvbnMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmxvYXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Om5vdF9mb3VuZCBjOTlfZnVuYyhGbG9hdCwgdHlwZTIpOyAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW5hbWVzcGFjZSBuZG5ib29zdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmFtZXNwYWNlIGM5OV9mdW5jIyNfZGV0ZWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBuZG5ib29zdF9oYXNoX2RldGVjdF9mbG9hdF9mdW5jdGlvbnM7ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0cnVjdCBjaGVjayB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBzdGF0aWMgdHlwZTEgeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBzdGF0aWMgdHlwZTIgeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgY3BwID0gICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGZsb2F0X3R5cGUoY3BwX2Z1bmMoeCx5KSkpICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgID09IHNpemVvZihpczx0eXBlMT4pKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgYzk5ID0gICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGZsb2F0X3R5cGUoYzk5X2Z1bmMoeCx5KSkpICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgID09IHNpemVvZihpczx0eXBlMT4pKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPGJvb2wgeD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGNhbGxfYzk5XyMjYzk5X2Z1bmMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6Y2FsbF8jI2NwcF9mdW5jPGRvdWJsZT4ge307ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGNhbGxfYzk5XyMjYzk5X2Z1bmM8dHJ1ZT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZTEgZmxvYXRfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGlubGluZSB0eXBlMSBvcGVyYXRvcigpKHR5cGUxIGEsIFQgYikgIGNvbnN0ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICByZXR1cm4gYzk5X2Z1bmMoYSwgYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPGJvb2wgeD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGNhbGxfY3BwXyMjYzk5X2Z1bmMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGNhbGxfYzk5XyMjYzk5X2Z1bmM8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpoYXNoX2RldGFpbDo6Yzk5X2Z1bmMjI19kZXRlY3Q6OmNoZWNrOjpjOTkgICAgIFwKLSAgICAgICAgICAgID4ge307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGNhbGxfY3BwXyMjYzk5X2Z1bmM8dHJ1ZT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZTEgZmxvYXRfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGlubGluZSB0eXBlMSBvcGVyYXRvcigpKHR5cGUxIGEsIFQgYikgIGNvbnN0ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICByZXR1cm4gY3BwX2Z1bmMoYSwgYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGNhbGxfIyNjcHBfZnVuYzx0eXBlMT4gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGNhbGxfY3BwXyMjYzk5X2Z1bmM8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpoYXNoX2RldGFpbDo6Yzk5X2Z1bmMjI19kZXRlY3Q6OmNoZWNrOjpjcHAgICAgIFwKLSAgICAgICAgICAgID4ge307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0KLQotI2RlZmluZSBORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfTUFDUk8oY3BwX2Z1bmMsIGM5OV9mdW5jLCB0eXBlMSwgdHlwZTIpICAgXAotbmFtZXNwYWNlIG5kbmJvb3N0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdHJ1Y3QgY2FsbF8jI2NwcF9mdW5jPHR5cGUxPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdHlwZWRlZiB0eXBlMSBmbG9hdF90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgaW5saW5lIHR5cGUxIG9wZXJhdG9yKCkodHlwZTEgeCwgdHlwZTIgeSkgY29uc3QgeyAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHJldHVybiBjOTlfZnVuYyh4LCB5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfQotCi0jaWYgZGVmaW5lZChsZGV4cGYpCi1ORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfTUFDUk8obGRleHAsIGxkZXhwZiwgZmxvYXQsIGludCkKLSNlbHNlCi1ORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfRlVOQyhsZGV4cCwgbGRleHBmLCBmbG9hdCwgaW50KQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKGxkZXhwbCkKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9NQUNSTyhsZGV4cCwgbGRleHBsLCBsb25nIGRvdWJsZSwgaW50KQotI2Vsc2UKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9GVU5DKGxkZXhwLCBsZGV4cGwsIGxvbmcgZG91YmxlLCBpbnQpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoZnJleHBmKQotTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX01BQ1JPKGZyZXhwLCBmcmV4cGYsIGZsb2F0LCBpbnQqKQotI2Vsc2UKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9GVU5DKGZyZXhwLCBmcmV4cGYsIGZsb2F0LCBpbnQqKQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKGZyZXhwbCkKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9NQUNSTyhmcmV4cCwgZnJleHBsLCBsb25nIGRvdWJsZSwgaW50KikKLSNlbHNlCi1ORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfRlVOQyhmcmV4cCwgZnJleHBsLCBsb25nIGRvdWJsZSwgaW50KikKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX01BQ1JPCi0jdW5kZWYgTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX0ZVTkMKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdDEsIHR5cGVuYW1lIEZsb2F0Mj4KLSAgICAgICAgc3RydWN0IHNlbGVjdF9oYXNoX3R5cGVfaW1wbCB7Ci0gICAgICAgICAgICB0eXBlZGVmIGRvdWJsZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBzZWxlY3RfaGFzaF90eXBlX2ltcGw8ZmxvYXQsIGZsb2F0PiB7Ci0gICAgICAgICAgICB0eXBlZGVmIGZsb2F0IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IHNlbGVjdF9oYXNoX3R5cGVfaW1wbDxsb25nIGRvdWJsZSwgbG9uZyBkb3VibGU+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgdHlwZTsKLSAgICAgICAgfTsKLQotCi0gICAgICAgIC8vIHNlbGVjdF9oYXNoX3R5cGUKLSAgICAgICAgLy8KLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgc3VwcG9ydCBmb3IgYSBwYXJ0aWN1bGFyIGZsb2F0aW5nIHBvaW50IHR5cGUsIHVzZSB0aGF0Ci0gICAgICAgIC8vIG90aGVyd2lzZSB1c2UgZG91YmxlICh0aGVyZSdzIGFsd2F5cyBzdXBwb3J0IGZvciBkb3VibGUpLgotICAgICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXQ+Ci0gICAgICAgIHN0cnVjdCBzZWxlY3RfaGFzaF90eXBlIDogc2VsZWN0X2hhc2hfdHlwZV9pbXBsPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2FsbF9sZGV4cDxGbG9hdD46OmZsb2F0X3R5cGUsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjYWxsX2ZyZXhwPEZsb2F0Pjo6ZmxvYXRfdHlwZQotICAgICAgICAgICAgPiB7fTsgICAgICAgICAgICAKLSAgICB9Ci19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2hhc2hfZmxvYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2hhc2hfZmxvYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Njg3M2FlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9oYXNoX2Zsb2F0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMTIgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfREVUQUlMX0hBU0hfRkxPQVRfSEVBREVSKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfREVUQUlMX0hBU0hfRkxPQVRfSEVBREVSCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2Zsb2F0X2Z1bmN0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyL3N0YXRpY19sb2cyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI2lmIE5ETkJPT1NUX01TVkMgPj0gMTQwMAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjI5NCkgLy8gSWxsLWRlZmluZWQgZm9yLWxvb3A6IGluaXRpYWwgY29uZGl0aW9uIGRvZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBzYXRpc2Z5IHRlc3QuIExvb3AgYm9keSBub3QgZXhlY3V0ZWQKLSNlbmRpZgotI2VuZGlmCi0KLS8vIENhbiB3ZSB1c2UgZnBjbGFzc2lmeT8KLQotLy8gU1RMcG9ydAotI2lmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLSNkZWZpbmUgTkROQk9PU1RfSEFTSF9VU0VfRlBDTEFTU0lGWSAwCi0KLS8vIEdOVSBsaWJzdGRjKysgMwotI2VsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykKLSMgIGlmIChkZWZpbmVkKF9fVVNFX0lTT0M5OSkgfHwgZGVmaW5lZChfR0xJQkNYWF9VU0VfQzk5X01BVEgpKSAmJiBcCi0gICAgICAhKGRlZmluZWQobWFjaW50b3NoKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FQUExFX0NDX18pKQotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9VU0VfRlBDTEFTU0lGWSAxCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNIX1VTRV9GUENMQVNTSUZZIDAKLSMgIGVuZGlmCi0KLS8vIEV2ZXJ5dGhpbmcgZWxzZQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9IQVNIX1VTRV9GUENMQVNTSUZZIDAKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwKLSAgICB7Ci0gICAgICAgIGlubGluZSB2b2lkIGhhc2hfZmxvYXRfY29tYmluZShzdGQ6OnNpemVfdCYgc2VlZCwgc3RkOjpzaXplX3QgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNlZWQgXj0gdmFsdWUgKyAoc2VlZDw8NikgKyAoc2VlZD4+Mik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gQmluYXJ5IGhhc2ggZnVuY3Rpb24KLSAgICAgICAgLy8KLSAgICAgICAgLy8gT25seSB1c2VkIGZvciBmbG9hdHMgd2l0aCBrbm93biBpZWM1NTkgZmxvYXRzLCBhbmQgY2VydGFpbiB2YWx1ZXMgaW4KLSAgICAgICAgLy8gbnVtZXJpY19saW1pdHMKLQotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF9iaW5hcnkoY2hhciogcHRyLCBzdGQ6OnNpemVfdCBsZW5ndGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSAwOwotCi0gICAgICAgICAgICBpZiAobGVuZ3RoID49IHNpemVvZihzdGQ6OnNpemVfdCkpIHsKLSAgICAgICAgICAgICAgICBzZWVkID0gKihzdGQ6OnNpemVfdCopIHB0cjsKLSAgICAgICAgICAgICAgICBsZW5ndGggLT0gc2l6ZW9mKHN0ZDo6c2l6ZV90KTsKLSAgICAgICAgICAgICAgICBwdHIgKz0gc2l6ZW9mKHN0ZDo6c2l6ZV90KTsKLQotICAgICAgICAgICAgICAgIHdoaWxlKGxlbmd0aCA+PSBzaXplb2Yoc3RkOjpzaXplX3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1ZmZlciA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6bWVtY3B5KCZidWZmZXIsIHB0ciwgc2l6ZW9mKHN0ZDo6c2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgICAgIGhhc2hfZmxvYXRfY29tYmluZShzZWVkLCBidWZmZXIpOwotICAgICAgICAgICAgICAgICAgICBsZW5ndGggLT0gc2l6ZW9mKHN0ZDo6c2l6ZV90KTsKLSAgICAgICAgICAgICAgICAgICAgcHRyICs9IHNpemVvZihzdGQ6OnNpemVfdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobGVuZ3RoID4gMCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1ZmZlciA9IDA7Ci0gICAgICAgICAgICAgICAgc3RkOjptZW1jcHkoJmJ1ZmZlciwgcHRyLCBsZW5ndGgpOwotICAgICAgICAgICAgICAgIGhhc2hfZmxvYXRfY29tYmluZShzZWVkLCBidWZmZXIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gc2VlZDsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfaW1wbChGbG9hdCB2LAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OmlzX2llYzU1OSAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjpkaWdpdHMgPT0gMjQgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6cmFkaXggPT0gMiAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjptYXhfZXhwb25lbnQgPT0gMTI4LAotICAgICAgICAgICAgICAgIGludD46OnR5cGUKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2hfYmluYXJ5KChjaGFyKikgJnYsIDQpOwotICAgICAgICB9Ci0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXQ+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBmbG9hdF9oYXNoX2ltcGwoRmxvYXQgdiwKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+Ojppc19pZWM1NTkgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6ZGlnaXRzID09IDUzICYmCi0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OnJhZGl4ID09IDIgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6bWF4X2V4cG9uZW50ID09IDEwMjQsCi0gICAgICAgICAgICAgICAgaW50Pjo6dHlwZQotICAgICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaF9iaW5hcnkoKGNoYXIqKSAmdiwgOCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXQ+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBmbG9hdF9oYXNoX2ltcGwoRmxvYXQgdiwKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+Ojppc19pZWM1NTkgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6ZGlnaXRzID09IDY0ICYmCi0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OnJhZGl4ID09IDIgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6bWF4X2V4cG9uZW50ID09IDE2Mzg0LAotICAgICAgICAgICAgICAgIGludD46OnR5cGUKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2hfYmluYXJ5KChjaGFyKikgJnYsIDEwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfaW1wbChGbG9hdCB2LAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OmlzX2llYzU1OSAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjpkaWdpdHMgPT0gMTEzICYmCi0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OnJhZGl4ID09IDIgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6bWF4X2V4cG9uZW50ID09IDE2Mzg0LAotICAgICAgICAgICAgICAgIGludD46OnR5cGUKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2hfYmluYXJ5KChjaGFyKikgJnYsIDE2KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBQb3J0YWJsZSBoYXNoIGZ1bmN0aW9uCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFVzZWQgYXMgYSBmYWxsYmFjayB3aGVuIHRoZSBiaW5hcnkgaGFzaCBmdW5jdGlvbiBpc24ndCBzdXBwb3J0ZWQuCi0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBmbG9hdF9oYXNoX2ltcGwyKFQgdikKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpjYWxsX2ZyZXhwPFQ+IGZyZXhwOwotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpjYWxsX2xkZXhwPFQ+IGxkZXhwOwotCi0gICAgICAgICAgICBpbnQgZXhwID0gMDsKLQotICAgICAgICAgICAgdiA9IGZyZXhwKHYsICZleHApOwotCi0gICAgICAgICAgICAvLyBBIHBvc3RpdmUgdmFsdWUgaXMgZWFzaWVyIHRvIGhhc2gsIHNvIGNvbWJpbmUgdGhlCi0gICAgICAgICAgICAvLyBzaWduIHdpdGggdGhlIGV4cG9uZW50IGFuZCB1c2UgdGhlIGFic29sdXRlIHZhbHVlLgotICAgICAgICAgICAgaWYodiA8IDApIHsKLSAgICAgICAgICAgICAgICB2ID0gLXY7Ci0gICAgICAgICAgICAgICAgZXhwICs9IGxpbWl0czxUPjo6bWF4X2V4cG9uZW50IC0KLSAgICAgICAgICAgICAgICAgICAgbGltaXRzPFQ+OjptaW5fZXhwb25lbnQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHYgPSBsZGV4cCh2LCBsaW1pdHM8c3RkOjpzaXplX3Q+OjpkaWdpdHMpOwotICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90Pih2KTsKLSAgICAgICAgICAgIHYgLT0gc3RhdGljX2Nhc3Q8VD4oc2VlZCk7Ci0KLSAgICAgICAgICAgIC8vIGNlaWxpbmcoZGlnaXRzKFQpICogbG9nMihyYWRpeChUKSkvIGRpZ2l0cyhzaXplX3QpKSAtIDE7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBjb25zdCBsZW5ndGgKLSAgICAgICAgICAgICAgICA9IChsaW1pdHM8VD46OmRpZ2l0cyAqCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6c3RhdGljX2xvZzI8bGltaXRzPFQ+OjpyYWRpeD46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICArIGxpbWl0czxzdGQ6OnNpemVfdD46OmRpZ2l0cyAtIDEpCi0gICAgICAgICAgICAgICAgLyBsaW1pdHM8c3RkOjpzaXplX3Q+OjpkaWdpdHM7Ci0KLSAgICAgICAgICAgIGZvcihzdGQ6OnNpemVfdCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2ID0gbGRleHAodiwgbGltaXRzPHN0ZDo6c2l6ZV90Pjo6ZGlnaXRzKTsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBwYXJ0ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHYpOwotICAgICAgICAgICAgICAgIHYgLT0gc3RhdGljX2Nhc3Q8VD4ocGFydCk7Ci0gICAgICAgICAgICAgICAgaGFzaF9mbG9hdF9jb21iaW5lKHNlZWQsIHBhcnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBoYXNoX2Zsb2F0X2NvbWJpbmUoc2VlZCwgZXhwKTsKLQotICAgICAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0hBU0hfREVUQUlMX1RFU1RfV0lUSE9VVF9HRU5FUklDKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfaW1wbChUIHYsIC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHNlbGVjdF9oYXNoX3R5cGU8VD46OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIHJldHVybiBmbG9hdF9oYXNoX2ltcGwyKHN0YXRpY19jYXN0PHR5cGU+KHYpKTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgfQotfQotCi0jaWYgTkROQk9PU1RfSEFTSF9VU0VfRlBDTEFTU0lGWQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9jbWF0aC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBmbG9hdF9oYXNoX3ZhbHVlKFQgdikKLSAgICAgICAgewotI2lmIGRlZmluZWQoZnBjbGFzc2lmeSkKLSAgICAgICAgICAgIHN3aXRjaCAoZnBjbGFzc2lmeSh2KSkKLSNlbGlmIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMKLSAgICAgICAgICAgIHN3aXRjaCAoc3RkOjpmcGNsYXNzaWZ5KHYpKQotI2Vsc2UKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICBzd2l0Y2ggKGZwY2xhc3NpZnkodikpCi0jZW5kaWYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgRlBfWkVSTzoKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGNhc2UgRlBfSU5GSU5JVEU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChzdGQ6OnNpemVfdCkodiA+IDAgPyAtMSA6IC0yKTsKLSAgICAgICAgICAgIGNhc2UgRlBfTkFOOgotICAgICAgICAgICAgICAgIHJldHVybiAoc3RkOjpzaXplX3QpKC0zKTsKLSAgICAgICAgICAgIGNhc2UgRlBfTk9STUFMOgotICAgICAgICAgICAgY2FzZSBGUF9TVUJOT1JNQUw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0X2hhc2hfaW1wbCh2LCAwKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKDApOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi0jZWxzZSAvLyAhTkROQk9PU1RfSEFTSF9VU0VfRlBDTEFTU0lGWQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBpbmxpbmUgYm9vbCBpc196ZXJvKFQgdikKLSAgICAgICAgewotI2lmICFkZWZpbmVkKF9fR05VQ19fKQotICAgICAgICAgICAgcmV0dXJuIHYgPT0gMDsKLSNlbHNlCi0gICAgICAgICAgICAvLyBHQ0MncyAnLVdmbG9hdC1lcXVhbCcgd2lsbCBjb21wbGFpbiBhYm91dCBjb21wYXJpbmcKLSAgICAgICAgICAgIC8vIHYgdG8gMCwgYnV0IGJlY2F1c2UgaXQgZGlzYWJsZXMgd2FybmluZ3MgZm9yIHN5c3RlbQotICAgICAgICAgICAgLy8gaGVhZGVycyBpdCB3b24ndCBjb21wbGFpbiBpZiB5b3UgdXNlIHN0ZDo6ZXF1YWxfdG8gdG8KLSAgICAgICAgICAgIC8vIGNvbXBhcmUgd2l0aCAwLiBSZXN1bHRpbmcgaW4gdGhpcyBzaWxsaW5lc3M6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjplcXVhbF90bzxUPigpKHYsIDApOwotI2VuZGlmCi0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfdmFsdWUoVCB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjppc196ZXJvKHYpID8gMCA6IGZsb2F0X2hhc2hfaW1wbCh2LCAwKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0hBU0hfVVNFX0ZQQ0xBU1NJRlkKLQotI3VuZGVmIE5ETkJPT1NUX0hBU0hfVVNFX0ZQQ0xBU1NJRlkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvbGltaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9saW1pdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjViM2JlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9saW1pdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgMjAwNS0yMDA5IERhbmllbCBKYW1lcy4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIE9uIHNvbWUgcGxhdGZvcm1zIHN0ZDo6bGltaXRzIGdpdmVzIGluY29ycmVjdCB2YWx1ZXMgZm9yIGxvbmcgZG91YmxlLgotLy8gVGhpcyB0cmllcyB0byB3b3JrIGFyb3VuZCB0aGVtLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0RFVEFJTF9MSU1JVFNfSEVBREVSKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfREVUQUlMX0xJTUlUU19IRUFERVIKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotCi0vLyBPbiBPcGVuQlNELCBudW1lcmljX2xpbWl0cyBpcyBub3QgcmVsaWFibGUgZm9yIGxvbmcgZG91YmxlcywgYnV0Ci0vLyB0aGUgbWFjcm9zIGRlZmluZWQgaW4gPGZsb2F0Lmg+IGFyZSBhbmQgc3VwcG9ydCBsb25nIGRvdWJsZSB3aGVuIFNUTHBvcnQKLS8vIGRvZXNuJ3QuCi0KLSNpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9TVExQX05PX0xPTkdfRE9VQkxFKQotI2luY2x1ZGUgPGZsb2F0Lmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0IGxpbWl0cyA6IHN0ZDo6bnVtZXJpY19saW1pdHM8VD4ge307Ci0KLSNpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9TVExQX05PX0xPTkdfRE9VQkxFKQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QgbGltaXRzPGxvbmcgZG91YmxlPgotICAgICAgICAgICAgIDogc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGRvdWJsZT4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGxvbmcgZG91YmxlIGVwc2lsb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIExEQkxfRVBTSUxPTjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RhdGljIGxvbmcgZG91YmxlIChtYXgpKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBMREJMX01BWDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RhdGljIGxvbmcgZG91YmxlIChtaW4pKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBMREJMX01JTjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgZGlnaXRzID0gTERCTF9NQU5UX0RJRyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtYXhfZXhwb25lbnQgPSBMREJMX01BWF9FWFApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWluX2V4cG9uZW50ID0gTERCTF9NSU5fRVhQKTsKLSNpZiBkZWZpbmVkKF9TVExQX05PX0xPTkdfRE9VQkxFKQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgcmFkaXggPSBGTFRfUkFESVgpOwotI2VuZGlmCi0gICAgICAgIH07Ci0jZW5kaWYgLy8gX19PcGVuQlNEX18KLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZXh0ZW5zaW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9leHRlbnNpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA3OTEzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9leHRlbnNpb25zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMDkgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBCYXNlZCBvbiBQZXRlciBEaW1vdidzIHByb3Bvc2FsCi0vLyAgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAwNS9uMTc1Ni5wZGYKLS8vICBpc3N1ZSA2LjE4LiAKLQotLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBleHRlbnNpb25zIHRvIHRoZSBzdGFuZGFyZC4KLS8vIEl0J3MgdW5kb2N1bWVudGVkLCBzbyB5b3Ugc2hvdWxkbid0IHVzZSBpdC4uLi4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9FWFRFTlNJT05TX0hQUCkKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0VYVEVOU0lPTlNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvaGFzaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2NvbnRhaW5lcl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZKQotIyAgIGluY2x1ZGUgPGFycmF5PgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUpCi0jICAgaW5jbHVkZSA8dHVwbGU+Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9NRU1PUlkpCi0jICAgaW5jbHVkZSA8bWVtb3J5PgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQSwgY2xhc3MgQj4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6cGFpcjxBLCBCPiBjb25zdCYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjp2ZWN0b3I8VCwgQT4gY29uc3QmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bGlzdDxULCBBPiBjb25zdCYgdik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OmRlcXVlPFQsIEE+IGNvbnN0JiB2KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgQywgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6c2V0PEssIEMsIEE+IGNvbnN0JiB2KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgQywgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bXVsdGlzZXQ8SywgQywgQT4gY29uc3QmIHYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBULCBjbGFzcyBDLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjptYXA8SywgVCwgQywgQT4gY29uc3QmIHYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBULCBjbGFzcyBDLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjptdWx0aW1hcDxLLCBULCBDLCBBPiBjb25zdCYgdik7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6Y29tcGxleDxUPiBjb25zdCYpOwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnBhaXI8QSwgQj4gY29uc3QmIHYpCi0gICAgewotICAgICAgICBzdGQ6OnNpemVfdCBzZWVkID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6Omhhc2hfY29tYmluZShzZWVkLCB2LmZpcnN0KTsKLSAgICAgICAgbmRuYm9vc3Q6Omhhc2hfY29tYmluZShzZWVkLCB2LnNlY29uZCk7Ci0gICAgICAgIHJldHVybiBzZWVkOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjp2ZWN0b3I8VCwgQT4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfcmFuZ2Uodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bGlzdDxULCBBPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpkZXF1ZTxULCBBPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBDLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpzZXQ8SywgQywgQT4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfcmFuZ2Uodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgQywgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bXVsdGlzZXQ8SywgQywgQT4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfcmFuZ2Uodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVCwgY2xhc3MgQywgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bWFwPEssIFQsIEMsIEE+IGNvbnN0JiB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3JhbmdlKHYuYmVnaW4oKSwgdi5lbmQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFQsIGNsYXNzIEMsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6Om11bHRpbWFwPEssIFQsIEMsIEE+IGNvbnN0JiB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3JhbmdlKHYuYmVnaW4oKSwgdi5lbmQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OmNvbXBsZXg8VD4gY29uc3QmIHYpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6aGFzaDxUPiBoYXNoZXI7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSBoYXNoZXIodi5pbWFnKCkpOwotICAgICAgICBzZWVkIF49IGhhc2hlcih2LnJlYWwoKSkgKyAoc2VlZDw8NikgKyAoc2VlZD4+Mik7Ci0gICAgICAgIHJldHVybiBzZWVkOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWSkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6YXJyYXk8VCwgTj4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfcmFuZ2Uodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRSkKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgSSwgdHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwoSSA9PSBzdGQ6OnR1cGxlX3NpemU8VD46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICB2b2lkPjo6dHlwZQotICAgICAgICAgICAgaGFzaF9jb21iaW5lX3R1cGxlKHN0ZDo6c2l6ZV90JiwgVCBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBJLCB0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPChJIDwgc3RkOjp0dXBsZV9zaXplPFQ+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgdm9pZD46OnR5cGUKLSAgICAgICAgICAgIGhhc2hfY29tYmluZV90dXBsZShzdGQ6OnNpemVfdCYgc2VlZCwgVCBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfY29tYmluZShzZWVkLCBzdGQ6OmdldDxJPih2KSk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Omhhc2hfY29tYmluZV90dXBsZTxJICsgMT4oc2VlZCwgdik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdHVwbGUoVCBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IDA7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Omhhc2hfY29tYmluZV90dXBsZTwwPihzZWVkLCB2KTsKLSAgICAgICAgICAgIHJldHVybiBzZWVkOwotICAgICAgICB9Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6dHVwbGU8VC4uLj4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpoYXNoX3R1cGxlKHYpOwotICAgIH0KLSNlbHNlCi0KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnR1cGxlPD4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpoYXNoX3R1cGxlKHYpOwotICAgIH0KLQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX1RVUExFX0YoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnR1cGxlPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgID4gY29uc3QmIHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Omhhc2hfdHVwbGUodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDEsIDExLCBORE5CT09TVF9IQVNIX1RVUExFX0YsIF8pCi0jICAgdW5kZWYgTkROQk9PU1RfSEFTSF9UVVBMRV9GCi0jZW5kaWYKLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIpCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpzaGFyZWRfcHRyPFQ+IGNvbnN0JiB4KSB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh4LmdldCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVsZXRlcj4KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRlcj4gY29uc3QmIHgpIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3ZhbHVlKHguZ2V0KCkpOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8KLSAgICAvLyBjYWxsX2hhc2hfaW1wbAotICAgIC8vCi0KLSAgICAvLyBPbiBjb21waWxlcnMgd2l0aG91dCBmdW5jdGlvbiB0ZW1wbGF0ZSBvcmRlcmluZywgdGhpcyBkZWFscyB3aXRoIGFycmF5cy4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Ym9vbCBJc0FycmF5PgotICAgICAgICBzdHJ1Y3QgY2FsbF9oYXNoX2ltcGwKLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgc3RkOjpzaXplX3QgY2FsbChUIGNvbnN0JiB2KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIG5kbmJvb3N0OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaF92YWx1ZSh2KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBjYWxsX2hhc2hfaW1wbDx0cnVlPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJyYXk+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgICAgIHsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgICAgICAgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGNhbGwoQXJyYXkgY29uc3QmIHYpCi0jZWxzZQotICAgICAgICAgICAgICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBjYWxsKEFycmF5JiB2KQotI2VuZGlmCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc2l6ZSA9IHNpemVvZih2KSAvIHNpemVvZigqdik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2LCB2ICsgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0IGNhbGxfaGFzaAotICAgICAgICAgICAgOiBwdWJsaWMgY2FsbF9oYXNoX2ltcGw8bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZT4KLSAgICAgICAgICAgICAgICA6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBpbm5lcjxUPgotICAgICAgICB7Ci0gICAgICAgIH07Ci0gICAgfQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSAgICAvLwotICAgIC8vIG5kbmJvb3N0OjpoYXNoCi0gICAgLy8KLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaGFzaAotICAgICAgICA6IHN0ZDo6dW5hcnlfZnVuY3Rpb248VCwgc3RkOjpzaXplX3Q+Ci0gICAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKQotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKFQgY29uc3QmIHZhbCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2hfdmFsdWUodmFsKTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShUIGNvbnN0JiB2YWwpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNoX2RldGFpbDo6Y2FsbF9oYXNoPFQ+OjpjYWxsKHZhbCk7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgIH07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIDw9IDB4ODQ4KQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCB1bnNpZ25lZCBpbnQgbj4gc3RydWN0IGhhc2g8VFtuXT4KLSAgICAgICAgOiBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFRbbl0sIHN0ZDo6c2l6ZV90PgotICAgIHsKLSAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBUKiB2YWwpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2YWwsIHZhbCtuKTsKLSAgICAgICAgfQotICAgIH07Ci0jZW5kaWYKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0gICAgLy8gT24gY29tcGlsZXJzIHdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgbmRuYm9vc3Q6Omhhc2g8VD4KLSAgICAvLyBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkIHRvIGRlYWwgd2l0aCBwb2ludGVycywgc28ganVzdAotICAgIC8vIG5lZWQgdG8gc3VwcGx5IHRoZSBub24tcG9pbnRlciB2ZXJzaW9uIG9mIGhhc2hfaW1wbC4KLQotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGJvb2wgSXNQb2ludGVyPgotICAgICAgICBzdHJ1Y3QgaGFzaF9pbXBsOwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBoYXNoX2ltcGw8ZmFsc2U+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgc3RydWN0IGlubmVyCi0gICAgICAgICAgICAgICAgOiBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFQsIHN0ZDo6c2l6ZV90PgotICAgICAgICAgICAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKQotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoVCBjb25zdCYgdmFsKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hfdmFsdWUodmFsKTsKLSAgICAgICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoVCBjb25zdCYgdmFsKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hfZGV0YWlsOjpjYWxsX2hhc2g8VD46OmNhbGwodmFsKTsKLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSNlbHNlIC8vIFZpc3VhbCBDKysgNi41Ci0KLSAgICAgICAgLy8gVmlzdWFsIEMrKyA2LjUgaGFzIHByb2JsZW1zIHdpdGggbmVzdGVkIG1lbWJlciBmdW5jdGlvbnMgYW5kCi0gICAgICAgIC8vIGFwcGx5aW5nIGNvbnN0IHRvIGNvbnN0IHR5cGVzIGluIHRlbXBsYXRlcy4gU28gd2UgZ2V0IHRoaXM6Ci0KLSAgICAgICAgdGVtcGxhdGUgPGJvb2wgSXNDb25zdD4KLSAgICAgICAgc3RydWN0IGhhc2hfaW1wbF9tc3ZjCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgc3RydWN0IGlubmVyCi0gICAgICAgICAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxULCBzdGQ6OnNpemVfdD4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKFQgY29uc3QmIHZhbCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNoX2RldGFpbDo6Y2FsbF9oYXNoPFQgY29uc3Q+OjpjYWxsKHZhbCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShUJiB2YWwpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaF9kZXRhaWw6OmNhbGxfaGFzaDxUPjo6Y2FsbCh2YWwpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IGhhc2hfaW1wbF9tc3ZjPHRydWU+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgc3RydWN0IGlubmVyCi0gICAgICAgICAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxULCBzdGQ6OnNpemVfdD4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKFQmIHZhbCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNoX2RldGFpbDo6Y2FsbF9oYXNoPFQ+OjpjYWxsKHZhbCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3QgaGFzaF9pbXBsX21zdmMyCi0gICAgICAgICAgICA6IHB1YmxpYyBoYXNoX2ltcGxfbXN2YzxuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlPgotICAgICAgICAgICAgICAgICAgICA6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBpbm5lcjxUPiB7fTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBoYXNoX2ltcGw8ZmFsc2U+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIDogcHVibGljIGhhc2hfaW1wbF9tc3ZjMjxUPiB7fTsKLSAgICAgICAgfTsKLQotI2VuZGlmIC8vIFZpc3VhbCBDKysgNi41Ci0gICAgfQotI2VuZGlmICAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvaGFzaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQyODU2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzMCArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMDkgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBCYXNlZCBvbiBQZXRlciBEaW1vdidzIHByb3Bvc2FsCi0vLyAgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAwNS9uMTc1Ni5wZGYKLS8vICBpc3N1ZSA2LjE4LiAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9IQVNIX0hQUCkKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0hBU0hfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvaGFzaF9md2QuaHBwPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9oYXNoX2Zsb2F0LmhwcD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYKQotI2luY2x1ZGUgPHR5cGVpbmRleD4KLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0jZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ0hBUl9UUkFJVFMgc3RyaW5nX2NoYXJfdHJhaXRzCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9IQVNIX0NIQVJfVFJBSVRTIGNoYXJfdHJhaXRzCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsCi0gICAgewotICAgICAgICBzdHJ1Y3QgZW5hYmxlX2hhc2hfdmFsdWUgeyB0eXBlZGVmIHN0ZDo6c2l6ZV90IHR5cGU7IH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBiYXNpY19udW1iZXJzIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGxvbmdfbnVtYmVyczsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCB1bG9uZ19udW1iZXJzOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGZsb2F0X251bWJlcnMge307Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8Ym9vbD4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8Y2hhcj4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8dW5zaWduZWQgY2hhcj4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8c2lnbmVkIGNoYXI+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBiYXNpY19udW1iZXJzPHNob3J0PiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgYmFzaWNfbnVtYmVyczx1bnNpZ25lZCBzaG9ydD4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8aW50PiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgYmFzaWNfbnVtYmVyczx1bnNpZ25lZCBpbnQ+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBiYXNpY19udW1iZXJzPGxvbmc+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBiYXNpY19udW1iZXJzPHVuc2lnbmVkIGxvbmc+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8d2NoYXJfdD4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSNlbmRpZgotCi0gICAgICAgIC8vIGxvbmdfbnVtYmVycyBpcyBkZWZpbmVkIGxpa2UgdGhpcyB0byBhbGxvdyBmb3Igc2VwYXJhdGUKLSAgICAgICAgLy8gc3BlY2lhbGl6YXRpb24gZm9yIGxvbmdfbG9uZyBhbmQgaW50MTI4X3R5cGUsIGluIGNhc2UKLSAgICAgICAgLy8gdGhleSBjb25mbGljdC4KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBsb25nX251bWJlcnMyIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHVsb25nX251bWJlcnMyIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGxvbmdfbnVtYmVycyA6IGxvbmdfbnVtYmVyczI8VD4ge307Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgdWxvbmdfbnVtYmVycyA6IHVsb25nX251bWJlcnMyPFQ+IHt9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTE9OR19MT05HKQotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgbG9uZ19udW1iZXJzPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHVsb25nX251bWJlcnM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfSU5UMTI4KQotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgbG9uZ19udW1iZXJzMjxuZG5ib29zdDo6aW50MTI4X3R5cGU+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCB1bG9uZ19udW1iZXJzMjxuZG5ib29zdDo6dWludDEyOF90eXBlPiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGZsb2F0X251bWJlcnM8ZmxvYXQ+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBmbG9hdF9udW1iZXJzPGRvdWJsZT4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGZsb2F0X251bWJlcnM8bG9uZyBkb3VibGU+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpiYXNpY19udW1iZXJzPFQ+Ojp0eXBlIGhhc2hfdmFsdWUoVCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpsb25nX251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OnVsb25nX251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUKTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8bmRuYm9vc3Q6OmlzX2VudW08VD4sIHN0ZDo6c2l6ZV90Pjo6dHlwZQotICAgICAgICBoYXNoX3ZhbHVlKFQpOwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgPD0gMHg4NDgpCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoVCogY29uc3QmKTsKLSNlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoVCopOwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgdW5zaWduZWQgTiA+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShjb25zdCBUICgmeClbTl0pOwotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQsIHVuc2lnbmVkIE4gPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoVCAoJngpW05dKTsKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoCi0gICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoLCBzdGQ6Ok5ETkJPT1NUX0hBU0hfQ0hBUl9UUkFJVFM8Q2g+LCBBPiBjb25zdCYpOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpmbG9hdF9udW1iZXJzPFQ+Ojp0eXBlIGhhc2hfdmFsdWUoVCk7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYKQotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjp0eXBlX2luZGV4KTsKLSNlbmRpZgotCi0gICAgLy8gSW1wbGVtZW50YXRpb24KLQotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlX3NpZ25lZChUIHZhbCkKLSAgICAgICAgewotICAgICAgICAgICAgIGNvbnN0IGludCBzaXplX3RfYml0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjpkaWdpdHM7Ci0gICAgICAgICAgICAgLy8gY2VpbGluZyhzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgLyBzaXplX3RfYml0cykgLSAxCi0gICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0aCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgLSAxKQotICAgICAgICAgICAgICAgICAvIHNpemVfdF9iaXRzOwotCi0gICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IDA7Ci0gICAgICAgICAgICAgVCBwb3NpdGl2ZSA9IHZhbCA8IDAgPyAtMSAtIHZhbCA6IHZhbDsKLQotICAgICAgICAgICAgIC8vIEhvcGVmdWxseSwgdGhpcyBsb29wIGNhbiBiZSB1bnJvbGxlZC4KLSAgICAgICAgICAgICBmb3IodW5zaWduZWQgaW50IGkgPSBsZW5ndGggKiBzaXplX3RfYml0czsgaSA+IDA7IGkgLT0gc2l6ZV90X2JpdHMpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBzZWVkIF49IChzdGQ6OnNpemVfdCkgKHBvc2l0aXZlID4+IGkpICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBzZWVkIF49IChzdGQ6OnNpemVfdCkgdmFsICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotCi0gICAgICAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWVfdW5zaWduZWQoVCB2YWwpCi0gICAgICAgIHsKLSAgICAgICAgICAgICBjb25zdCBpbnQgc2l6ZV90X2JpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6ZGlnaXRzOwotICAgICAgICAgICAgIC8vIGNlaWxpbmcoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzIC8gc2l6ZV90X2JpdHMpIC0gMQotICAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGggPSAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzIC0gMSkKLSAgICAgICAgICAgICAgICAgLyBzaXplX3RfYml0czsKLQotICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSAwOwotCi0gICAgICAgICAgICAgLy8gSG9wZWZ1bGx5LCB0aGlzIGxvb3AgY2FuIGJlIHVucm9sbGVkLgotICAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IGxlbmd0aCAqIHNpemVfdF9iaXRzOyBpID4gMDsgaSAtPSBzaXplX3RfYml0cykKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHNlZWQgXj0gKHN0ZDo6c2l6ZV90KSAodmFsID4+IGkpICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBzZWVkIF49IChzdGQ6OnNpemVfdCkgdmFsICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotCi0gICAgICAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmJhc2ljX251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUIHYpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6bG9uZ19udW1iZXJzPFQ+Ojp0eXBlIGhhc2hfdmFsdWUoVCB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc2hfZGV0YWlsOjpoYXNoX3ZhbHVlX3NpZ25lZCh2KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OnVsb25nX251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUIHYpCi0gICAgewotICAgICAgICByZXR1cm4gaGFzaF9kZXRhaWw6Omhhc2hfdmFsdWVfdW5zaWduZWQodik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxuZG5ib29zdDo6aXNfZW51bTxUPiwgc3RkOjpzaXplX3Q+Ojp0eXBlCi0gICAgICAgIGhhc2hfdmFsdWUoVCB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90Pih2KTsKLSAgICB9Ci0KLSAgICAvLyBJbXBsZW1lbnRhdGlvbiBieSBBbGJlcnRvIEJhcmJhdGkgYW5kIERhdmUgSGFycmlzLgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIDw9IDB4ODQ4KQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKFQqIGNvbnN0JiB2KQotI2Vsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RkOjpzaXplX3QgaGFzaF92YWx1ZShUKiB2KQotI2VuZGlmCi0gICAgewotI2lmIGRlZmluZWQoX19WTVMpICYmIF9fSU5JVElBTF9QT0lOVEVSX1NJWkUgPT0gNjQKLSAgICAvLyBmb3Igc29tZSByZWFzb24gcHRyZGlmZl90IG9uIE9wZW5WTVMgY29tcGlsZXIgd2l0aAotICAgIC8vIDY0IGJpdCBpcyBub3QgNjQgYml0ICEhIQotICAgICAgICBzdGQ6OnNpemVfdCB4ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KAotICAgICAgICAgICByZWludGVycHJldF9jYXN0PGxvbmcgbG9uZyBpbnQ+KHYpKTsKLSNlbHNlCi0gICAgICAgIHN0ZDo6c2l6ZV90IHggPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oCi0gICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KHYpKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4geCArICh4ID4+IDMpOwotICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI2lmIE5ETkJPT1NUX01TVkMgPD0gMTQwMAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI2NykgLy8gJ2FyZ3VtZW50JyA6IGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ3Vuc2lnbmVkIGludCcsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBtaXNndWlkZWQgYXR0ZW1wdCB0byBkZXRlY3QgNjQtYml0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmNvbXBhdGFiaWxpdHkuCi0jZW5kaWYKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgaW5saW5lIHZvaWQgaGFzaF9jb21iaW5lKHN0ZDo6c2l6ZV90JiBzZWVkLCBUJiB2KQotI2Vsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBpbmxpbmUgdm9pZCBoYXNoX2NvbWJpbmUoc3RkOjpzaXplX3QmIHNlZWQsIFQgY29uc3QmIHYpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpoYXNoPFQ+IGhhc2hlcjsKLSAgICAgICAgc2VlZCBePSBoYXNoZXIodikgKyAweDllMzc3OWI5ICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJdD4KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF9yYW5nZShJdCBmaXJzdCwgSXQgbGFzdCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSAwOwotCi0gICAgICAgIGZvcig7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGhhc2hfY29tYmluZShzZWVkLCAqZmlyc3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0PgotICAgIGlubGluZSB2b2lkIGhhc2hfcmFuZ2Uoc3RkOjpzaXplX3QmIHNlZWQsIEl0IGZpcnN0LCBJdCBsYXN0KQotICAgIHsKLSAgICAgICAgZm9yKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkKLSAgICAgICAgewotICAgICAgICAgICAgaGFzaF9jb21iaW5lKHNlZWQsICpmaXJzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF9yYW5nZShUKiBmaXJzdCwgVCogbGFzdCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSAwOwotCi0gICAgICAgIGZvcig7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoPFQ+IGhhc2hlcjsKLSAgICAgICAgICAgIHNlZWQgXj0gaGFzaGVyKCpmaXJzdCkgKyAweDllMzc3OWI5ICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgaW5saW5lIHZvaWQgaGFzaF9yYW5nZShzdGQ6OnNpemVfdCYgc2VlZCwgVCogZmlyc3QsIFQqIGxhc3QpCi0gICAgewotICAgICAgICBmb3IoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaDxUPiBoYXNoZXI7Ci0gICAgICAgICAgICBzZWVkIF49IGhhc2hlcigqZmlyc3QpICsgMHg5ZTM3NzliOSArIChzZWVkPDw2KSArIChzZWVkPj4yKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQsIHVuc2lnbmVkIE4gPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKGNvbnN0IFQgKCZ4KVtOXSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBoYXNoX3JhbmdlKHgsIHggKyBOKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgdW5zaWduZWQgTiA+Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoVCAoJngpW05dKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc2hfcmFuZ2UoeCwgeCArIE4pOwotICAgIH0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoLCBjbGFzcyBBPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKAotICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaCwgc3RkOjpORE5CT09TVF9IQVNIX0NIQVJfVFJBSVRTPENoPiwgQT4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gaGFzaF9yYW5nZSh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZmxvYXRfbnVtYmVyczxUPjo6dHlwZSBoYXNoX3ZhbHVlKFQgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmZsb2F0X2hhc2hfdmFsdWUodik7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWCkKLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnR5cGVfaW5kZXggdikKLSAgICB7Ci0gICAgICAgIHJldHVybiB2Lmhhc2hfY29kZSgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8KLSAgICAvLyBuZG5ib29zdDo6aGFzaAotICAgIC8vCi0gICAgCi0gICAgLy8gRGVmaW5lIHRoZSBzcGVjaWFsaXphdGlvbnMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkLiBUaGUgZ2VuZXJhbCBwdXJwb3NlCi0gICAgLy8gbmRuYm9vc3Q6Omhhc2ggaXMgZGVmaW5lZCBsYXRlciBpbiBleHRlbnNpb25zLmhwcCBpZgotICAgIC8vIE5ETkJPT1NUX0hBU0hfTk9fRVhURU5TSU9OUyBpcyBub3QgZGVmaW5lZC4KLSAgICAKLSAgICAvLyBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUgLSBkZWZpbmUgYSBzcGVjaWFsaXphdGlvbiBmb3IgYSB0eXBlIHdoaWNoIGlzCi0gICAgLy8gcGFzc2VkIGJ5IGNvcHkuCi0gICAgLy8KLSAgICAvLyBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkVfUkVGIC0gZGVmaW5lIGEgc3BlY2lhbGl6YXRpb24gZm9yIGEgdHlwZSB3aGljaCBpcwotICAgIC8vIHBhc3NlZCBieSBjb3B5LgotICAgIC8vCi0gICAgLy8gVGhlc2UgYXJlIHVuZGVmaW5lZCBsYXRlci4KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSNkZWZpbmUgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKHR5cGUpIFwKLSAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzaDx0eXBlPiBcCi0gICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGUsIHN0ZDo6c2l6ZV90PiBcCi0gICAgeyBcCi0gICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkodHlwZSB2KSBjb25zdCBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3ZhbHVlKHYpOyBcCi0gICAgICAgIH0gXAotICAgIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFX1JFRih0eXBlKSBcCi0gICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc2g8dHlwZT4gXAotICAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjx0eXBlLCBzdGQ6OnNpemVfdD4gXAotICAgIHsgXAotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKHR5cGUgY29uc3QmIHYpIGNvbnN0IFwKLSAgICAgICAgeyBcCi0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfdmFsdWUodik7IFwKLSAgICAgICAgfSBcCi0gICAgfTsKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRSh0eXBlKSBcCi0gICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc2g8dHlwZT4gXAotICAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjx0eXBlLCBzdGQ6OnNpemVfdD4gXAotICAgIHsgXAotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKHR5cGUgdikgY29uc3QgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh2KTsgXAotICAgICAgICB9IFwKLSAgICB9OyBcCi0gICAgXAotICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNoPGNvbnN0IHR5cGU+IFwKLSAgICAgICAgIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248Y29uc3QgdHlwZSwgc3RkOjpzaXplX3Q+IFwKLSAgICB7IFwKLSAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShjb25zdCB0eXBlIHYpIGNvbnN0IFwKLSAgICAgICAgeyBcCi0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfdmFsdWUodik7IFwKLSAgICAgICAgfSBcCi0gICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkVfUkVGKHR5cGUpIFwKLSAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzaDx0eXBlPiBcCi0gICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGUsIHN0ZDo6c2l6ZV90PiBcCi0gICAgeyBcCi0gICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkodHlwZSBjb25zdCYgdikgY29uc3QgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh2KTsgXAotICAgICAgICB9IFwKLSAgICB9OyBcCi0gICAgXAotICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNoPGNvbnN0IHR5cGU+IFwKLSAgICAgICAgIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248Y29uc3QgdHlwZSwgc3RkOjpzaXplX3Q+IFwKLSAgICB7IFwKLSAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKSh0eXBlIGNvbnN0JiB2KSBjb25zdCBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3ZhbHVlKHYpOyBcCi0gICAgICAgIH0gXAotICAgIH07Ci0jZW5kaWYKLQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShib29sKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShjaGFyKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShzaWduZWQgY2hhcikKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUodW5zaWduZWQgY2hhcikKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUod2NoYXJfdCkKLSNlbmRpZgotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShzaG9ydCkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUodW5zaWduZWQgc2hvcnQpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKGludCkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUodW5zaWduZWQgaW50KQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShsb25nKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRSh1bnNpZ25lZCBsb25nKQotCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKGZsb2F0KQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShkb3VibGUpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKGxvbmcgZG91YmxlKQotCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFX1JFRihzdGQ6OnN0cmluZykKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfV1NUUklORykKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkVfUkVGKHN0ZDo6d3N0cmluZykKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTE9OR19MT05HKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0lOVDEyOCkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUobmRuYm9vc3Q6OmludDEyOF90eXBlKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShuZG5ib29zdDo6dWludDEyOF90eXBlKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShzdGQ6OnR5cGVfaW5kZXgpCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRQotI3VuZGVmIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRV9SRUYKLQotLy8gU3BlY2lhbGl6aW5nIG5kbmJvb3N0OjpoYXNoIGZvciBwb2ludGVycy4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgaGFzaDxUKj4KLSAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxUKiwgc3RkOjpzaXplX3Q+Ci0gICAgewotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKFQqIHYpIGNvbnN0Ci0gICAgICAgIHsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgPD0gMHg1OTApCi0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfdmFsdWUodik7Ci0jZWxzZQotICAgICAgICAgICAgc3RkOjpzaXplX3QgeCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigKLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHN0ZDo6cHRyZGlmZl90Pih2KSk7Ci0KLSAgICAgICAgICAgIHJldHVybiB4ICsgKHggPj4gMyk7Ci0jZW5kaWYKLSAgICAgICAgfQotICAgIH07Ci0KLSNlbHNlCi0KLSAgICAvLyBGb3IgY29tcGlsZXJzIHdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgd2UgZGVmaW5lIGEKLSAgICAvLyBuZG5ib29zdDo6aGFzaCBmb3IgYWxsIHJlbWFpbmluZyB0eXBlcy4gQnV0IGhhc2hfaW1wbCBpcyBvbmx5IGRlZmluZWQKLSAgICAvLyBmb3IgcG9pbnRlcnMgaW4gJ2V4dGVuc2lvbnMuaHBwJyAtIHNvIHdoZW4gTkROQk9PU1RfSEFTSF9OT19FWFRFTlNJT05TCi0gICAgLy8gaXMgZGVmaW5lZCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgY29tcGlsZSBlcnJvciBmb3IgdHlwZXMgbm90IHN1cHBvcnRlZAotICAgIC8vIGluIHRoZSBzdGFuZGFyZC4KLQotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGJvb2wgSXNQb2ludGVyPgotICAgICAgICBzdHJ1Y3QgaGFzaF9pbXBsOwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBoYXNoX2ltcGw8dHJ1ZT4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFQsIHN0ZDo6c2l6ZV90PgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoVCB2YWwpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8PSA1OTApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh2YWwpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgeCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KHZhbCkpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB4ICsgKHggPj4gMyk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaGFzaAotICAgICAgICA6IHB1YmxpYyBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Omhhc2hfaW1wbDxuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ci0gICAgICAgICAgICA6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBpbm5lcjxUPgotICAgIHsKLSAgICB9OwotCi0jZW5kaWYKLX0KLQotI3VuZGVmIE5ETkJPT1NUX0hBU0hfQ0hBUl9UUkFJVFMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9IQVNIX0hQUAotCi0vLyBJbmNsdWRlIHRoaXMgb3V0c2lkZSBvZiB0aGUgaW5jbHVkZSBndWFyZHMgaW4gY2FzZSB0aGUgZmlsZSBpcyBpbmNsdWRlZAotLy8gdHdpY2UgLSBvbmNlIHdpdGggTkROQk9PU1RfSEFTSF9OT19FWFRFTlNJT05TIGRlZmluZWQsIGFuZCB0aGVuIHdpdGggaXQKLS8vIHVuZGVmaW5lZC4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0hBU0hfTk9fRVhURU5TSU9OUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9FWFRFTlNJT05TX0hQUCkKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZXh0ZW5zaW9ucy5ocHA+Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2hhc2hfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2hhc2hfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBkMjcxNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMDkgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBCYXNlZCBvbiBQZXRlciBEaW1vdidzIHByb3Bvc2FsCi0vLyAgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAwNS9uMTc1Ni5wZGYKLS8vICBpc3N1ZSA2LjE4LiAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9GV0RfSFBQKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfRldEX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaGFzaDsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIGhhc2hfY29tYmluZShzdGQ6OnNpemVfdCYgc2VlZCwgVCYgdik7Ci0jZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIGhhc2hfY29tYmluZShzdGQ6OnNpemVfdCYgc2VlZCwgVCBjb25zdCYgdik7Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJdD4gc3RkOjpzaXplX3QgaGFzaF9yYW5nZShJdCwgSXQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBJdD4gdm9pZCBoYXNoX3JhbmdlKHN0ZDo6c2l6ZV90JiwgSXQsIEl0KTsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF9yYW5nZShUKiwgVCopOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBoYXNoX3JhbmdlKHN0ZDo6c2l6ZV90JiwgVCosIFQqKTsKLSNlbmRpZgotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjkzZDBiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAwOSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoX2Z3ZC5ocHA+Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZ2V0X3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9nZXRfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NDQzYzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9nZXRfcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgYW5kIERhdmlkIEFicmFoYW1zIDIwMDIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIEdFVF9QT0lOVEVSX05ETkJPT1NUX0RXQTIwMDIxMjE5X0hQUAotI2RlZmluZSBHRVRfUE9JTlRFUl9ORE5CT09TVF9EV0EyMDAyMTIxOV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIEluIG9yZGVyIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB3aXRoIEJvb3N0LlRSMQotLy8gd2UgbWFrZSBzdXJlIHRoYXQgb3VyIGluY2x1ZGUgb2YgPG1lbW9yeT4gZG9lc24ndCB0cnkgdG8KLS8vIHB1bGwgaW4gdGhlIFRSMSBoZWFkZXJzOiB0aGF0J3Mgd2h5IHdlIHVzZSB0aGlzIGhlYWRlciAKLS8vIHJhdGhlciB0aGFuIGluY2x1ZGluZyA8bWVtb3J5PiBkaXJlY3RseToKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL21lbW9yeS5ocHA+ICAvLyBzdGQ6OmF1dG9fcHRyCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotCi0vLyBnZXRfcG9pbnRlcihwKSBleHRyYWN0cyBhIC0+KiBjYXBhYmxlIHBvaW50ZXIgZnJvbSBwCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IFQgKiBnZXRfcG9pbnRlcihUICogcCkKLXsKLSAgICByZXR1cm4gcDsKLX0KLQotLy8gZ2V0X3BvaW50ZXIoc2hhcmVkX3B0cjxUPiBjb25zdCAmIHApIGhhcyBiZWVuIG1vdmVkIHRvIHNoYXJlZF9wdHIuaHBwCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IFQgKiBnZXRfcG9pbnRlcihzdGQ6OmF1dG9fcHRyPFQ+IGNvbnN0JiBwKQotewotICAgIHJldHVybiBwLmdldCgpOwotfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUiApCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IFQgKiBnZXRfcG9pbnRlciggc3RkOjp1bmlxdWVfcHRyPFQ+IGNvbnN0JiBwICkKLXsKLSAgICByZXR1cm4gcC5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gVCAqIGdldF9wb2ludGVyKCBzdGQ6OnNoYXJlZF9wdHI8VD4gY29uc3QmIHAgKQotewotICAgIHJldHVybiBwLmdldCgpOwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIEdFVF9QT0lOVEVSX05ETkJPT1NUX0RXQTIwMDIxMjE5X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbmRpcmVjdF9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbmRpcmVjdF9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjhiMmY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW5kaXJlY3RfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLSNpZm5kZWYgSU5ESVJFQ1RfUkVGRVJFTkNFX05ETkJPT1NUX0RXQTIwMDQxNV9IUFAKLSMgZGVmaW5lIElORElSRUNUX1JFRkVSRU5DRV9ORE5CT09TVF9EV0EyMDA0MTVfSFBQCi0KLS8vCi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcwotLy8gc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyB0eXBlbmFtZSBpbmRpcmVjdF9yZWZlcmVuY2U8UD46OnR5cGUgcHJvdmlkZXMgdGhlIHR5cGUgb2YgKnAuCi0vLwotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pdGVyYXRvci9kb2MvcG9pbnRlZS5odG1sCi0vLwotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pc19pbmNyZW1lbnRhYmxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wb2ludGVlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLSAgdGVtcGxhdGUgPGNsYXNzIFA+Ci0gIHN0cnVjdCBzbWFydF9wdHJfcmVmZXJlbmNlCi0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnBvaW50ZWU8UD46OnR5cGUmIHR5cGU7Ci0gIH07Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBQPgotc3RydWN0IGluZGlyZWN0X3JlZmVyZW5jZQotICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlPFA+Ci0gICAgICAsIGl0ZXJhdG9yX3JlZmVyZW5jZTxQPgotICAgICAgLCBkZXRhaWw6OnNtYXJ0X3B0cl9yZWZlcmVuY2U8UD4KLSAgICA+Ci17Ci19OwotICAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBJTkRJUkVDVF9SRUZFUkVOQ0VfTkROQk9PU1RfRFdBMjAwNDE1X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0OWM0NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2MSArMCwwIEBACi0vLyAgYm9vc3QgaW50ZWdlci5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIGFuZCBEYXJ5bGUgV2Fsa2VyIDE5OTkuICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludGVnZXIgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgIDIyIFNlcCAwMSAgQWRkZWQgdmFsdWUtYmFzZWQgaW50ZWdlciB0ZW1wbGF0ZXMuIChEYXJ5bGUgV2Fsa2VyKQotLy8gICAwMSBBcHIgMDEgIE1vZGlmaWVkIHRvIHVzZSBuZXcgPG5kbmJvb3N0L2xpbWl0cy5ocHA+IGhlYWRlci4gKEpvaG4gTWFkZG9jaykKLS8vICAgMzAgSnVsIDAwICBBZGQgdHlwZW5hbWUgc3ludGF4IGZpeCAoSmVucyBNYXVyZXIpCi0vLyAgIDI4IEF1ZyA5OSAgSW5pdGlhbCB2ZXJzaW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5URUdFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5URUdFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXJfZndkLmhwcD4gIC8vIHNlbGYgaW5jbHVkZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlcl90cmFpdHMuaHBwPiAgLy8gZm9yIG5kbmJvb3N0Ojo6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0cwotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+ICAgICAgICAgIC8vIGZvciA6OnN0ZDo6bnVtZXJpY19saW1pdHMKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4gICAgICAgICAvLyBmb3IgbmRuYm9vc3Q6OmludDY0X3QgYW5kIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotLy8KLS8vIFdlIHNpbXBseSBjYW5ub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBvbiBnY2Mgd2l0aG91dCBnZXR0aW5nIGNvcGlvdXMgd2FybmluZ3Mgb2YgdGhlIGtpbmQ6Ci0vLwotLy8gbmRuYm9vc3QvaW50ZWdlci5ocHA6Nzc6MzA6IHdhcm5pbmc6IHVzZSBvZiBDOTkgbG9uZyBsb25nIGludGVnZXIgY29uc3RhbnQKLS8vCi0vLyBBbmQgeWV0IHRoZXJlIGlzIG5vIG90aGVyIHJlYXNvbmFibGUgaW1wbGVtZW50YXRpb24sIHNvIHdlIGRlY2xhcmUgdGhpcyBhIHN5c3RlbSBoZWFkZXIKLS8vIHRvIHN1cHByZXNzIHRoZXNlIHdhcm5pbmdzLgotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotICAvLyAgSGVscGVyIHRlbXBsYXRlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAvLyAgZmFzdCBpbnRlZ2VycyBmcm9tIGxlYXN0IGludGVnZXJzCi0gIC8vICBpbnRfZmFzdF90PD4gd29ya3MgY29ycmVjdGx5IGZvciB1bnNpZ25lZCB0b28sIGluIHNwaXRlIG9mIHRoZSBuYW1lLgotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGVhc3RJbnQgPgotICBzdHJ1Y3QgaW50X2Zhc3RfdCAKLSAgeyAKLSAgICAgdHlwZWRlZiBMZWFzdEludCBmYXN0OyAKLSAgICAgdHlwZWRlZiBmYXN0ICAgICB0eXBlOwotICB9OyAvLyBpbXBzIG1heSBzcGVjaWFsaXplCi0KLSAgbmFtZXNwYWNlIGRldGFpbHsKLQotICAvLyAgY29udmVydCBjYXRlZ29yeSB0byB0eXBlIAotICB0ZW1wbGF0ZTwgaW50IENhdGVnb3J5ID4gc3RydWN0IGludF9sZWFzdF9oZWxwZXIge307IC8vIGRlZmF1bHQgaXMgZW1wdHkKLSAgdGVtcGxhdGU8IGludCBDYXRlZ29yeSA+IHN0cnVjdCB1aW50X2xlYXN0X2hlbHBlciB7fTsgLy8gZGVmYXVsdCBpcyBlbXB0eQotCi0gIC8vICBzcGVjaWFsaXphdG9uczogMT1sb25nLCAyPWludCwgMz1zaG9ydCwgND1zaWduZWQgY2hhciwKLSAgLy8gICAgIDY9dW5zaWduZWQgbG9uZywgNz11bnNpZ25lZCBpbnQsIDg9dW5zaWduZWQgc2hvcnQsIDk9dW5zaWduZWQgY2hhcgotICAvLyAgbm8gc3BlY2lhbGl6YXRpb25zIGZvciAwIGFuZCA1OiByZXF1ZXN0cyBmb3IgYSB0eXBlID4gbG9uZyBhcmUgaW4gZXJyb3IKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gIHRlbXBsYXRlPD4gc3RydWN0IGludF9sZWFzdF9oZWxwZXI8MT4geyB0eXBlZGVmIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBsZWFzdDsgfTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpbnRfbGVhc3RfaGVscGVyPDE+IHsgdHlwZWRlZiBfX2ludDY0IGxlYXN0OyB9OwotI2VuZGlmCi0gIHRlbXBsYXRlPD4gc3RydWN0IGludF9sZWFzdF9oZWxwZXI8Mj4geyB0eXBlZGVmIGxvbmcgbGVhc3Q7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGludF9sZWFzdF9oZWxwZXI8Mz4geyB0eXBlZGVmIGludCBsZWFzdDsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaW50X2xlYXN0X2hlbHBlcjw0PiB7IHR5cGVkZWYgc2hvcnQgbGVhc3Q7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGludF9sZWFzdF9oZWxwZXI8NT4geyB0eXBlZGVmIHNpZ25lZCBjaGFyIGxlYXN0OyB9OwotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgdWludF9sZWFzdF9oZWxwZXI8MT4geyB0eXBlZGVmIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgbGVhc3Q7IH07Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgdWludF9sZWFzdF9oZWxwZXI8MT4geyB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgbGVhc3Q7IH07Ci0jZW5kaWYKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgdWludF9sZWFzdF9oZWxwZXI8Mj4geyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbGVhc3Q7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IHVpbnRfbGVhc3RfaGVscGVyPDM+IHsgdHlwZWRlZiB1bnNpZ25lZCBpbnQgbGVhc3Q7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IHVpbnRfbGVhc3RfaGVscGVyPDQ+IHsgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBsZWFzdDsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgdWludF9sZWFzdF9oZWxwZXI8NT4geyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgbGVhc3Q7IH07Ci0KLSAgdGVtcGxhdGUgPGludCBCaXRzPgotICBzdHJ1Y3QgZXhhY3Rfc2lnbmVkX2Jhc2VfaGVscGVye307Ci0gIHRlbXBsYXRlIDxpbnQgQml0cz4KLSAgc3RydWN0IGV4YWN0X3Vuc2lnbmVkX2Jhc2VfaGVscGVye307Ci0KLSAgdGVtcGxhdGUgPD4gc3RydWN0IGV4YWN0X3NpZ25lZF9iYXNlX2hlbHBlcjxzaXplb2Yoc2lnbmVkIGNoYXIpKiBDSEFSX0JJVD4geyB0eXBlZGVmIHNpZ25lZCBjaGFyIGV4YWN0OyB9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZXhhY3RfdW5zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKHVuc2lnbmVkIGNoYXIpKiBDSEFSX0JJVD4geyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgZXhhY3Q7IH07Ci0jaWYgVVNIUlRfTUFYICE9IFVDSEFSX01BWAotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZXhhY3Rfc2lnbmVkX2Jhc2VfaGVscGVyPHNpemVvZihzaG9ydCkqIENIQVJfQklUPiB7IHR5cGVkZWYgc2hvcnQgZXhhY3Q7IH07Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF91bnNpZ25lZF9iYXNlX2hlbHBlcjxzaXplb2YodW5zaWduZWQgc2hvcnQpKiBDSEFSX0JJVD4geyB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGV4YWN0OyB9OwotI2VuZGlmCi0jaWYgVUlOVF9NQVggIT0gVVNIUlRfTUFYCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF9zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKGludCkqIENIQVJfQklUPiB7IHR5cGVkZWYgaW50IGV4YWN0OyB9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZXhhY3RfdW5zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKHVuc2lnbmVkIGludCkqIENIQVJfQklUPiB7IHR5cGVkZWYgdW5zaWduZWQgaW50IGV4YWN0OyB9OwotI2VuZGlmCi0jaWYgVUxPTkdfTUFYICE9IFVJTlRfTUFYCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF9zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKGxvbmcpKiBDSEFSX0JJVD4geyB0eXBlZGVmIGxvbmcgZXhhY3Q7IH07Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF91bnNpZ25lZF9iYXNlX2hlbHBlcjxzaXplb2YodW5zaWduZWQgbG9uZykqIENIQVJfQklUPiB7IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBleGFjdDsgfTsKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgJiZcCi0gICAoKGRlZmluZWQoVUxMT05HX01BWCkgJiYgKFVMTE9OR19NQVggIT0gVUxPTkdfTUFYKSkgfHxcCi0gICAgKGRlZmluZWQoVUxPTkdfTE9OR19NQVgpICYmIChVTE9OR19MT05HX01BWCAhPSBVTE9OR19NQVgpKSB8fFwKLSAgICAoZGVmaW5lZChVTE9OR0xPTkdfTUFYKSAmJiAoVUxPTkdMT05HX01BWCAhPSBVTE9OR19NQVgpKSB8fFwKLSAgICAoZGVmaW5lZChfVUxMT05HX01BWCkgJiYgKF9VTExPTkdfTUFYICE9IFVMT05HX01BWCkpKQotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZXhhY3Rfc2lnbmVkX2Jhc2VfaGVscGVyPHNpemVvZihuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpKiBDSEFSX0JJVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBleGFjdDsgfTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IGV4YWN0X3Vuc2lnbmVkX2Jhc2VfaGVscGVyPHNpemVvZihuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKSogQ0hBUl9CSVQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlIGV4YWN0OyB9OwotI2VuZGlmCi0KLQotICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICAvLyAgaW50ZWdlciB0ZW1wbGF0ZXMgc3BlY2lmeWluZyBudW1iZXIgb2YgYml0cyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAvLyAgc2lnbmVkCi0gIHRlbXBsYXRlPCBpbnQgQml0cyA+ICAgLy8gYml0cyAoaW5jbHVkaW5nIHNpZ24pIHJlcXVpcmVkCi0gIHN0cnVjdCBpbnRfdCA6IHB1YmxpYyBkZXRhaWw6OmV4YWN0X3NpZ25lZF9iYXNlX2hlbHBlcjxCaXRzPgotICB7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRyhCaXRzIDw9IChpbnQpKHNpemVvZihuZG5ib29zdDo6aW50bWF4X3QpICogQ0hBUl9CSVQpLAotICAgICAgICAgIk5vIHN1aXRhYmxlIHNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBiaXRzIGlzIGF2YWlsYWJsZS4iKTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjppbnRfbGVhc3RfaGVscGVyCi0gICAgICAgIDwKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gICAgICAgICAgKEJpdHMgPD0gKGludCkoc2l6ZW9mKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSkgKiBDSEFSX0JJVCkpICsKLSNlbHNlCi0gICAgICAgICAgIDEgKwotI2VuZGlmCi0gICAgICAgICAgKEJpdHMtMSA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZz46OmRpZ2l0cykgKwotICAgICAgICAgIChCaXRzLTEgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPGludD46OmRpZ2l0cykgKwotICAgICAgICAgIChCaXRzLTEgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMtMSA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8c2lnbmVkIGNoYXI+OjpkaWdpdHMpCi0gICAgICAgID46OmxlYXN0ICBsZWFzdDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50X2Zhc3RfdDxsZWFzdD46OnR5cGUgIGZhc3Q7Ci0gIH07Ci0KLSAgLy8gIHVuc2lnbmVkCi0gIHRlbXBsYXRlPCBpbnQgQml0cyA+ICAgLy8gYml0cyByZXF1aXJlZAotICBzdHJ1Y3QgdWludF90IDogcHVibGljIGRldGFpbDo6ZXhhY3RfdW5zaWduZWRfYmFzZV9oZWxwZXI8Qml0cz4KLSAgewotICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRyhCaXRzIDw9IChpbnQpKHNpemVvZihuZG5ib29zdDo6dWludG1heF90KSAqIENIQVJfQklUKSwKLSAgICAgICAgICJObyBzdWl0YWJsZSB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBiaXRzIGlzIGF2YWlsYWJsZS4iKTsKLSNpZiAoZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19DT0RFR0VBUl9fKSkgJiYgZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKQotICAgICAvLyBJdCdzIHJlYWxseSBub3QgY2xlYXIgd2h5IHRoaXMgd29ya2Fyb3VuZCBzaG91bGQgYmUgbmVlZGVkLi4uIHNocnVnIEkgZ3Vlc3MhICBKTQotICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBzID0gCi0gICAgICAgICAgIDYgKwotICAgICAgICAgIChCaXRzIDw9IDo6c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25nPjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46OmRpZ2l0cykgKwotICAgICAgICAgIChCaXRzIDw9IDo6c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBzaG9ydD46OmRpZ2l0cykgKwotICAgICAgICAgIChCaXRzIDw9IDo6c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBjaGFyPjo6ZGlnaXRzKSk7Ci0gICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjppbnRfbGVhc3RfaGVscGVyPCA6Om5kbmJvb3N0Ojp1aW50X3Q8Qml0cz46OnM+OjpsZWFzdCBsZWFzdDsKLSNlbHNlCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dWludF9sZWFzdF9oZWxwZXIKLSAgICAgICAgPCAKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gICAgICAgICAgKEJpdHMgPD0gKGludCkoc2l6ZW9mKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSkgKiBDSEFSX0JJVCkpICsKLSNlbHNlCi0gICAgICAgICAgIDEgKwotI2VuZGlmCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+OjpkaWdpdHMpICsKLSAgICAgICAgICAoQml0cyA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIHNob3J0Pjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+OjpkaWdpdHMpCi0gICAgICAgID46OmxlYXN0ICBsZWFzdDsKLSNlbmRpZgotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRfZmFzdF90PGxlYXN0Pjo6dHlwZSAgZmFzdDsKLSAgICAgIC8vIGludF9mYXN0X3Q8PiB3b3JrcyBjb3JyZWN0bHkgZm9yIHVuc2lnbmVkIHRvbywgaW4gc3BpdGUgb2YgdGhlIG5hbWUuCi0gIH07Ci0KLSAgLy8gIGludGVnZXIgdGVtcGxhdGVzIHNwZWNpZnlpbmcgZXh0cmVtZSB2YWx1ZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgLy8gIHNpZ25lZAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgdGVtcGxhdGU8IG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBNYXhWYWx1ZSA+ICAgLy8gbWF4aW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbHNlCi0gIHRlbXBsYXRlPCBsb25nIE1heFZhbHVlID4gICAvLyBtYXhpbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2VuZGlmCi0gIHN0cnVjdCBpbnRfbWF4X3ZhbHVlX3QgCi0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjppbnRfbGVhc3RfaGVscGVyCi0gICAgICAgIDwKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT46OmNvbnN0X21heCkgKwotI2Vsc2UKLSAgICAgICAgICAgMSArCi0jZW5kaWYKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8bG9uZz46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxpbnQ+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8c2hvcnQ+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8c2lnbmVkIGNoYXI+Ojpjb25zdF9tYXgpCi0gICAgICAgID46OmxlYXN0ICBsZWFzdDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50X2Zhc3RfdDxsZWFzdD46OnR5cGUgIGZhc3Q7Ci0gIH07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gIHRlbXBsYXRlPCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgTWluVmFsdWUgPiAgIC8vIG1pbmltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZWxzZQotICB0ZW1wbGF0ZTwgbG9uZyBNaW5WYWx1ZSA+ICAgLy8gbWluaW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbmRpZgotICBzdHJ1Y3QgaW50X21pbl92YWx1ZV90IAotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6aW50X2xlYXN0X2hlbHBlcgotICAgICAgICA8Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgICAgICAgIChNaW5WYWx1ZSA+PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+Ojpjb25zdF9taW4pICsKLSNlbHNlCi0gICAgICAgICAgIDEgKwotI2VuZGlmCi0gICAgICAgICAgKE1pblZhbHVlID49IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPGxvbmc+Ojpjb25zdF9taW4pICsKLSAgICAgICAgICAoTWluVmFsdWUgPj0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8aW50Pjo6Y29uc3RfbWluKSArCi0gICAgICAgICAgKE1pblZhbHVlID49IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHNob3J0Pjo6Y29uc3RfbWluKSArCi0gICAgICAgICAgKE1pblZhbHVlID49IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHNpZ25lZCBjaGFyPjo6Y29uc3RfbWluKQotICAgICAgICA+OjpsZWFzdCAgbGVhc3Q7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGludF9mYXN0X3Q8bGVhc3Q+Ojp0eXBlICBmYXN0OwotICB9OwotCi0gIC8vICB1bnNpZ25lZAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgdGVtcGxhdGU8IG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgTWF4VmFsdWUgPiAgIC8vIG1pbmltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZWxzZQotICB0ZW1wbGF0ZTwgdW5zaWduZWQgbG9uZyBNYXhWYWx1ZSA+ICAgLy8gbWluaW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbmRpZgotICBzdHJ1Y3QgdWludF92YWx1ZV90IAotICB7Ci0jaWYgKGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fQ09ERUdFQVJfXykpCi0gICAgIC8vIEl0J3MgcmVhbGx5IG5vdCBjbGVhciB3aHkgdGhpcyB3b3JrYXJvdW5kIHNob3VsZCBiZSBuZWVkZWQuLi4gc2hydWcgSSBndWVzcyEgIEpNCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCB3aGljaCA9IAotICAgICAgICAgICAxICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgbG9uZz46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBpbnQ+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgc2hvcnQ+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgY2hhcj46OmNvbnN0X21heCkpOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmludF9sZWFzdF9oZWxwZXI8IDo6bmRuYm9vc3Q6OnVpbnRfdmFsdWVfdDxNYXhWYWx1ZT46OndoaWNoPjo6bGVhc3QgbGVhc3Q7Ci0jZWxzZSAvLyBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHdoaWNoID0gCi0gICAgICAgICAgIDEgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGxvbmc+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgaW50Pjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIHNob3J0Pjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGNoYXI+Ojpjb25zdF9tYXgpKTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1aW50X2xlYXN0X2hlbHBlcjwgOjpuZG5ib29zdDo6dWludF92YWx1ZV90PE1heFZhbHVlPjo6d2hpY2g+OjpsZWFzdCBsZWFzdDsKLSNlbmRpZiAvLyBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0jZWxzZQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVpbnRfbGVhc3RfaGVscGVyCi0gICAgICAgIDwgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPjo6Y29uc3RfbWF4KSArCi0jZWxzZQotICAgICAgICAgICAxICsKLSNlbmRpZgotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBsb25nPjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGludD46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBzaG9ydD46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBjaGFyPjo6Y29uc3RfbWF4KQotICAgICAgICA+OjpsZWFzdCAgbGVhc3Q7Ci0jZW5kaWYKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50X2Zhc3RfdDxsZWFzdD46OnR5cGUgIGZhc3Q7Ci0gIH07Ci0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9JTlRFR0VSX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyL2ludGVnZXJfbWFzay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIvaW50ZWdlcl9tYXNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU4M2VhNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIvaW50ZWdlcl9tYXNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi0vLyAgQm9vc3QgaW50ZWdlci9pbnRlZ2VyX21hc2suaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBEYXJ5bGUgV2Fsa2VyIDIwMDEuCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LiAKLQotI2lmbmRlZiBORE5CT09TVF9JTlRFR0VSX0lOVEVHRVJfTUFTS19IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5URUdFUl9JTlRFR0VSX01BU0tfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyX2Z3ZC5ocHA+ICAvLyBzZWxmIGluY2x1ZGUKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgLy8gZm9yIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVAotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIuaHBwPiAgLy8gZm9yIG5kbmJvb3N0Ojp1aW50X3QKLQotI2luY2x1ZGUgPGNsaW1pdHM+ICAvLyBmb3IgVUNIQVJfTUFYLCBldGMuCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gIC8vIGZvciBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4gIC8vIGZvciBzdGQ6Om51bWVyaWNfbGltaXRzCi0KLS8vCi0vLyBXZSBzaW1wbHkgY2Fubm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgb24gZ2NjIHdpdGhvdXQgZ2V0dGluZyBjb3Bpb3VzIHdhcm5pbmdzIG9mIHRoZSBraW5kOgotLy8KLS8vIG5kbmJvb3N0L2ludGVnZXIvaW50ZWdlcl9tYXNrLmhwcDo5MzozNTogd2FybmluZzogdXNlIG9mIEM5OSBsb25nIGxvbmcgaW50ZWdlciBjb25zdGFudAotLy8KLS8vIEFuZCB5ZXQgdGhlcmUgaXMgbm8gb3RoZXIgcmVhc29uYWJsZSBpbXBsZW1lbnRhdGlvbiwgc28gd2UgZGVjbGFyZSB0aGlzIGEgc3lzdGVtIGhlYWRlcgotLy8gdG8gc3VwcHJlc3MgdGhlc2Ugd2FybmluZ3MuCi0vLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA0KQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0KLS8vICBTcGVjaWZpZWQgc2luZ2xlLWJpdCBtYXNrIGNsYXNzIGRlY2xhcmF0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgKExvd2VzdCBiaXQgc3RhcnRzIGNvdW50aW5nIGF0IDAuKQotCi10ZW1wbGF0ZSA8IHN0ZDo6c2l6ZV90IEJpdCA+Ci1zdHJ1Y3QgaGlnaF9iaXRfbWFza190Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB1aW50X3Q8KEJpdCArIDEpPjo6bGVhc3QgIGxlYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdWludF90PChCaXQgKyAxKT46OmZhc3QgICBmYXN0OwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBsZWFzdCwgaGlnaF9iaXQgPSAobGVhc3QoIDF1ICkgPDwgQml0KSApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggZmFzdCwgaGlnaF9iaXRfZmFzdCA9IChmYXN0KCAxdSApIDw8IEJpdCkgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggc3RkOjpzaXplX3QsIGJpdF9wb3NpdGlvbiA9IEJpdCApOwotCi19OyAgLy8gbmRuYm9vc3Q6OmhpZ2hfYml0X21hc2tfdAotCi0KLS8vICBTcGVjaWZpZWQgYml0LWJsb2NrIG1hc2sgY2xhc3MgZGVjbGFyYXRpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgTWFrZXMgbWFza3MgZm9yIHRoZSBsb3dlc3QgTiBiaXRzCi0vLyAgKFNwZWNpYWxpemF0aW9ucyBhcmUgbmVlZGVkIHdoZW4gTiBmaWxscyB1cCBhIHR5cGUuKQotCi10ZW1wbGF0ZSA8IHN0ZDo6c2l6ZV90IEJpdHMgPgotc3RydWN0IGxvd19iaXRzX21hc2tfdAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdWludF90PEJpdHM+OjpsZWFzdCAgbGVhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB1aW50X3Q8Qml0cz46OmZhc3QgICBmYXN0OwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBsZWFzdCwgc2lnX2JpdHMgPSAofiggfihsZWFzdCggMHUgKSkgPDwgQml0cyApKSApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggZmFzdCwgc2lnX2JpdHNfZmFzdCA9IGZhc3Qoc2lnX2JpdHMpICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIHN0ZDo6c2l6ZV90LCBiaXRfY291bnQgPSBCaXRzICk7Ci0KLX07ICAvLyBuZG5ib29zdDo6bG93X2JpdHNfbWFza190Ci0KLQotI2RlZmluZSBORE5CT09TVF9MT1dfQklUU19NQVNLX1NQRUNJQUxJWkUoIFR5cGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHRlbXBsYXRlIDwgID4gIHN0cnVjdCBsb3dfYml0c19tYXNrX3Q8IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZT46OmRpZ2l0cyA+ICB7IFwKLSAgICAgIHR5cGVkZWYgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlPiAgICAgICAgICAgbGltaXRzX3R5cGU7ICAgICAgICAgICAgICAgICAgXAotICAgICAgdHlwZWRlZiB1aW50X3Q8bGltaXRzX3R5cGU6OmRpZ2l0cz46OmxlYXN0ICBsZWFzdDsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB0eXBlZGVmIHVpbnRfdDxsaW1pdHNfdHlwZTo6ZGlnaXRzPjo6ZmFzdCAgIGZhc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggbGVhc3QsIHNpZ19iaXRzID0gKH4oIGxlYXN0KDB1KSApKSApOyAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBmYXN0LCBzaWdfYml0c19mYXN0ID0gZmFzdChzaWdfYml0cykgKTsgICAgICAgICAgICBcCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIHN0ZDo6c2l6ZV90LCBiaXRfY291bnQgPSBsaW1pdHNfdHlwZTo6ZGlnaXRzICk7ICAgIFwKLSAgfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ1KSAgLy8gJ2luaXRpYWxpemluZycgOiBjb252ZXJzaW9uIGZyb20gJ2ludCcgdG8gJ2NvbnN0IG5kbmJvb3N0Ojpsb3dfYml0c19tYXNrX3Q8OD46OmxlYXN0Jywgc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoCi0jZW5kaWYKLQotTkROQk9PU1RfTE9XX0JJVFNfTUFTS19TUEVDSUFMSVpFKCB1bnNpZ25lZCBjaGFyICk7Ci0KLSNpZiBVU0hSVF9NQVggPiBVQ0hBUl9NQVgKLU5ETkJPT1NUX0xPV19CSVRTX01BU0tfU1BFQ0lBTElaRSggdW5zaWduZWQgc2hvcnQgKTsKLSNlbmRpZgotCi0jaWYgVUlOVF9NQVggPiBVU0hSVF9NQVgKLU5ETkJPT1NUX0xPV19CSVRTX01BU0tfU1BFQ0lBTElaRSggdW5zaWduZWQgaW50ICk7Ci0jZW5kaWYKLQotI2lmIFVMT05HX01BWCA+IFVJTlRfTUFYCi1ORE5CT09TVF9MT1dfQklUU19NQVNLX1NQRUNJQUxJWkUoIHVuc2lnbmVkIGxvbmcgKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgICNpZiAoKGRlZmluZWQoVUxMT05HX01BWCkgJiYgKFVMTE9OR19NQVggPiBVTE9OR19NQVgpKSB8fFwKLSAgICAgICAgKGRlZmluZWQoVUxPTkdfTE9OR19NQVgpICYmIChVTE9OR19MT05HX01BWCA+IFVMT05HX01BWCkpIHx8XAotICAgICAgICAoZGVmaW5lZChVTE9OR0xPTkdfTUFYKSAmJiAoVUxPTkdMT05HX01BWCA+IFVMT05HX01BWCkpIHx8XAotICAgICAgICAoZGVmaW5lZChfVUxMT05HX01BWCkgJiYgKF9VTExPTkdfTUFYID4gVUxPTkdfTUFYKSkpCi0gICAgTkROQk9PU1RfTE9XX0JJVFNfTUFTS19TUEVDSUFMSVpFKCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlICk7Ci0gICAgI2VuZGlmCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAjaWYgMTg0NDY3NDQwNzM3MDk1NTE2MTV1aTY0ID4gVUxPTkdfTUFYCi0gICAgTkROQk9PU1RfTE9XX0JJVFNfTUFTS19TUEVDSUFMSVpFKCB1bnNpZ25lZCBfX2ludDY0ICk7Ci0gICAgI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX0xPV19CSVRTX01BU0tfU1BFQ0lBTElaRQotCi0KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfSU5URUdFUl9JTlRFR0VSX01BU0tfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIvc3RhdGljX2xvZzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyL3N0YXRpY19sb2cyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE0MGYzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIvc3RhdGljX2xvZzIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8vIC0tLS0tLS0tLS0tLS0tIEJvb3N0IHN0YXRpY19sb2cyLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KLS8vCi0vLyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERhcnlsZSBXYWxrZXIuCi0vLyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDAzIFZlc2EgS2Fydm9uZW4uCi0vLyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDAzIEdlbm5hcm8gUHJvdGEuCi0vLwotLy8gICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgICAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgICAgICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRlZ2VyIGZvciBkb2N1bWVudGF0aW9uLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwotCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5URUdFUl9TVEFUSUNfTE9HMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5URUdFUl9TVEFUSUNfTE9HMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2ludGVnZXJfZndkLmhwcCIgLy8gZm9yIG5kbmJvb3N0OjppbnRtYXhfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAgbmFtZXNwYWNlIHN0YXRpY19sb2cyX2ltcGwgewotCi0gICAgIC8vIGNob29zZV9pbml0aWFsX248PgotICAgICAvLwotICAgICAvLyBSZWN1cnNpdmVseSBkb3VibGVzIGl0cyBpbnRlZ2VyIGFyZ3VtZW50LCB1bnRpbCBpdAotICAgICAvLyBiZWNvbWVzID49IG9mIHRoZSAid2lkdGgiIChDOTksIDYuMi42LjJwNCkgb2YKLSAgICAgLy8gc3RhdGljX2xvZzJfYXJndW1lbnRfdHlwZS4KLSAgICAgLy8KLSAgICAgLy8gVXNlZCB0byBnZXQgdGhlIG1heGltdW0gcG93ZXIgb2YgdHdvIGxlc3MgdGhlbiB0aGUgd2lkdGguCi0gICAgIC8vCi0gICAgIC8vIEV4YW1wbGU6IGlmIG9uIHlvdXIgcGxhdGZvcm0gYXJndW1lbnRfdHlwZSBoYXMgNDggdmFsdWUKLSAgICAgLy8gICAgICAgICAgYml0cyBpdCB5aWVsZHMgbj0zMi4KLSAgICAgLy8KLSAgICAgLy8gSXQncyBlYXN5IHRvIHByb3ZlIHRoYXQsIHN0YXJ0aW5nIGZyb20gc3VjaCBhIHZhbHVlCi0gICAgIC8vIG9mIG4sIHRoZSBjb3JlIGFsZ29yaXRobSB3b3JrcyBjb3JyZWN0bHkgZm9yIGFueSB3aWR0aAotICAgICAvLyBvZiBzdGF0aWNfbG9nMl9hcmd1bWVudF90eXBlIGFuZCB0aGF0IHJlY3Vyc2lvbiBhbHdheXMKLSAgICAgLy8gdGVybWluYXRlcyB3aXRoIHggPSAxIGFuZCBuID0gMCAoc2VlIHRoZSBhbGdvcml0aG0ncwotICAgICAvLyBpbnZhcmlhbnQpLgotCi0gICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnN0YXRpY19sb2cyX2FyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZTsKLSAgICAgdHlwZWRlZiBuZG5ib29zdDo6c3RhdGljX2xvZzJfcmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICAgdGVtcGxhdGUgPHJlc3VsdF90eXBlIG4+Ci0gICAgIHN0cnVjdCBjaG9vc2VfaW5pdGlhbF9uIHsKLQotICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGMgPSAoYXJndW1lbnRfdHlwZSgxKSA8PCBuIDw8IG4pICE9IDApOwotICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgIHJlc3VsdF90eXBlLAotICAgICAgICAgICAgIHZhbHVlID0gIWMqbiArIGNob29zZV9pbml0aWFsX248MipjKm4+Ojp2YWx1ZQotICAgICAgICAgKTsKLQotICAgICB9OwotCi0gICAgIHRlbXBsYXRlIDw+Ci0gICAgIHN0cnVjdCBjaG9vc2VfaW5pdGlhbF9uPDA+IHsKLSAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChyZXN1bHRfdHlwZSwgdmFsdWUgPSAwKTsKLSAgICAgfTsKLQotCi0KLSAgICAgLy8gc3RhcnQgY29tcHV0aW5nIGZyb20gbl96ZXJvIC0gbXVzdCBiZSBhIHBvd2VyIG9mIHR3bwotICAgICBjb25zdCByZXN1bHRfdHlwZSBuX3plcm8gPSAxNjsKLSAgICAgY29uc3QgcmVzdWx0X3R5cGUgaW5pdGlhbF9uID0gY2hvb3NlX2luaXRpYWxfbjxuX3plcm8+Ojp2YWx1ZTsKLQotICAgICAvLyBzdGF0aWNfbG9nMl9pbXBsPD4KLSAgICAgLy8KLSAgICAgLy8gKiBJbnZhcmlhbnQ6Ci0gICAgIC8vICAgICAgICAgICAgICAgICAybgotICAgICAvLyAgMSA8PSB4ICYmIHggPCAyICAgIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlY3Vyc2lvbgotICAgICAvLyAgICAgICAgICAgICAgICAgICAgIChzZWUgYWxzbyBjaG9vc2VfaW5pdGlhbF9uPD4pCi0gICAgIC8vCi0gICAgIC8vICogVHlwZSByZXF1aXJlbWVudHM6Ci0gICAgIC8vCi0gICAgIC8vICAgYXJndW1lbnRfdHlwZSBtYXliZSBhbnkgdW5zaWduZWQgdHlwZSB3aXRoIGF0IGxlYXN0IG5femVybyArIDEKLSAgICAgLy8gICB2YWx1ZSBiaXRzLiAoTm90ZTogSWYgbGFyZ2VyIHR5cGVzIHdpbGwgYmUgc3RhbmRhcmRpemVkIC1lLmcuCi0gICAgIC8vICAgdW5zaWduZWQgbG9uZyBsb25nLSB0aGVuIHRoZSBhcmd1bWVudF90eXBlIHR5cGVkZWYgY2FuIGJlCi0gICAgIC8vICAgY2hhbmdlZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgcmVzdCBvZiB0aGUgY29kZS4pCi0gICAgIC8vCi0KLSAgICAgdGVtcGxhdGUgPGFyZ3VtZW50X3R5cGUgeCwgcmVzdWx0X3R5cGUgbiA9IGluaXRpYWxfbj4KLSAgICAgc3RydWN0IHN0YXRpY19sb2cyX2ltcGwgewotCi0gICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgYyA9ICh4ID4+IG4pID4gMCk7IC8vIHggPj0gMioqbiA/Ci0gICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgICAgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAgdmFsdWUgPSBjKm4gKyAoc3RhdGljX2xvZzJfaW1wbDwgKHg+PmMqbiksIG4vMiA+Ojp2YWx1ZSkKLSAgICAgICAgICk7Ci0KLSAgICAgfTsKLQotICAgICB0ZW1wbGF0ZSA8PgotICAgICBzdHJ1Y3Qgc3RhdGljX2xvZzJfaW1wbDwxLCAwPiB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChyZXN1bHRfdHlwZSwgdmFsdWUgPSAwKTsKLSAgICAgfTsKLQotICAgICB9Ci0gfSAvLyBkZXRhaWwKLQotCi0KLSAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIC8vIHN0YXRpY19sb2cyPHg+Ci0gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gdGVtcGxhdGUgPHN0YXRpY19sb2cyX2FyZ3VtZW50X3R5cGUgeD4KLSBzdHJ1Y3Qgc3RhdGljX2xvZzIgewotCi0gICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgIHN0YXRpY19sb2cyX3Jlc3VsdF90eXBlLAotICAgICAgICAgdmFsdWUgPSBkZXRhaWw6OnN0YXRpY19sb2cyX2ltcGw6OnN0YXRpY19sb2cyX2ltcGw8eD46OnZhbHVlCi0gICAgICk7Ci0KLSB9OwotCi0KLSB0ZW1wbGF0ZSA8PgotIHN0cnVjdCBzdGF0aWNfbG9nMjwwPiB7IH07Ci0KLX0KLQotCi0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXJfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlcl9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmM2ZTY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlcl9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS8vICBCb29zdCBpbnRlZ2VyX2Z3ZC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMgYW5kIERhcnlsZSBXYWxrZXIgMjAwMS4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRlZ2VyIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVHRVJfRldEX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRFR0VSX0ZXRF9IUFAKLQotI2luY2x1ZGUgPGNsaW1pdHM+ICAvLyBmb3IgVUNIQVJfTUFYLCBldGMuCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gIC8vIGZvciBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIGZvciBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+ICAvLyBmb3Igc3RkOjpudW1lcmljX2xpbWl0cwotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAgLy8gRm9yIGludG1heF90Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZmRlZiBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0gICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBzdGF0aWNfbG9nMl9hcmd1bWVudF90eXBlOwotICAgICB0eXBlZGVmICAgICAgICAgIGludCAgc3RhdGljX2xvZzJfcmVzdWx0X3R5cGU7Ci0gICAgIHR5cGVkZWYgbG9uZyAgICAgICAgICBzdGF0aWNfbWluX21heF9zaWduZWRfdHlwZTsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHN0YXRpY19taW5fbWF4X3Vuc2lnbmVkX3R5cGU7Ci0jZWxzZQotICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50bWF4X3Qgc3RhdGljX21pbl9tYXhfdW5zaWduZWRfdHlwZTsKLSAgICAgdHlwZWRlZiBuZG5ib29zdDo6aW50bWF4X3QgIHN0YXRpY19taW5fbWF4X3NpZ25lZF90eXBlOwotICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50bWF4X3Qgc3RhdGljX2xvZzJfYXJndW1lbnRfdHlwZTsKLSAgICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgIHN0YXRpY19sb2cyX3Jlc3VsdF90eXBlOwotI2VuZGlmCi0KLS8vICBGcm9tIDxuZG5ib29zdC9jc3RkaW50LmhwcD4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIE9ubHkgaGFzIHR5cGVkZWZzIG9yIHVzaW5nIHN0YXRlbWVudHMsIHdpdGggI2NvbmRpdGlvbmFscwotCi0KLS8vICBGcm9tIDxuZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlIDwgY2xhc3MgVCA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM7Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgYm9vbCA+OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IGNoYXIgPjsKLQotdGVtcGxhdGUgPCAgPgotICAgIGNsYXNzIGludGVnZXJfdHJhaXRzPCBzaWduZWQgY2hhciA+OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IHVuc2lnbmVkIGNoYXIgPjsKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotdGVtcGxhdGUgPCAgPgotICAgIGNsYXNzIGludGVnZXJfdHJhaXRzPCB3Y2hhcl90ID47Ci0jZW5kaWYKLQotdGVtcGxhdGUgPCAgPgotICAgIGNsYXNzIGludGVnZXJfdHJhaXRzPCBzaG9ydCA+OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IHVuc2lnbmVkIHNob3J0ID47Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgaW50ID47Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgdW5zaWduZWQgaW50ID47Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgbG9uZyA+OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IHVuc2lnbmVkIGxvbmcgPjsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVDY0X1QpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLXRlbXBsYXRlIDwgID4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+OwotCi10ZW1wbGF0ZSA8ICA+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSA+OwotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi10ZW1wbGF0ZSA8ICA+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czxfX2ludDY0PjsKLQotdGVtcGxhdGUgPCAgPgotY2xhc3MgaW50ZWdlcl90cmFpdHM8dW5zaWduZWQgX19pbnQ2ND47Ci0jZW5kaWYKLQotCi0vLyAgRnJvbSA8bmRuYm9vc3QvaW50ZWdlci5ocHA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExlYXN0SW50ID4KLSAgICBzdHJ1Y3QgaW50X2Zhc3RfdDsKLQotdGVtcGxhdGU8IGludCBCaXRzID4KLSAgICBzdHJ1Y3QgaW50X3Q7Ci0KLXRlbXBsYXRlPCBpbnQgQml0cyA+Ci0gICAgc3RydWN0IHVpbnRfdDsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgICB0ZW1wbGF0ZTwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIE1heFZhbHVlID4gICAvLyBtYXhpbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2Vsc2UKLSAgdGVtcGxhdGU8IGxvbmcgTWF4VmFsdWUgPiAgIC8vIG1heGltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZW5kaWYKLSAgICBzdHJ1Y3QgaW50X21heF92YWx1ZV90OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICB0ZW1wbGF0ZTwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIE1pblZhbHVlID4gICAvLyBtaW5pbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2Vsc2UKLSAgdGVtcGxhdGU8IGxvbmcgTWluVmFsdWUgPiAgIC8vIG1pbmltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZW5kaWYKLSAgICBzdHJ1Y3QgaW50X21pbl92YWx1ZV90OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICB0ZW1wbGF0ZTwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSBNYXhWYWx1ZSA+ICAgLy8gbWF4aW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbHNlCi0gIHRlbXBsYXRlPCB1bnNpZ25lZCBsb25nIE1heFZhbHVlID4gICAvLyBtYXhpbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2VuZGlmCi0gICAgc3RydWN0IHVpbnRfdmFsdWVfdDsKLQotCi0vLyAgRnJvbSA8bmRuYm9vc3QvaW50ZWdlci9pbnRlZ2VyX21hc2suaHBwPiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZSA8IHN0ZDo6c2l6ZV90IEJpdCA+Ci0gICAgc3RydWN0IGhpZ2hfYml0X21hc2tfdDsKLQotdGVtcGxhdGUgPCBzdGQ6OnNpemVfdCBCaXRzID4KLSAgICBzdHJ1Y3QgbG93X2JpdHNfbWFza190OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgc3RydWN0IGxvd19iaXRzX21hc2tfdDwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+OjpkaWdpdHMgPjsKLQotLy8gIEZyb20gPG5kbmJvb3N0L2ludGVnZXIvc3RhdGljX2xvZzIuaHBwPiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGUgPHN0YXRpY19sb2cyX2FyZ3VtZW50X3R5cGUgVmFsdWUgPgotICAgIHN0cnVjdCBzdGF0aWNfbG9nMjsKLQotdGVtcGxhdGUgPD4gc3RydWN0IHN0YXRpY19sb2cyPDB1PjsKLQotCi0vLyAgRnJvbSA8bmRuYm9vc3QvaW50ZWdlci9zdGF0aWNfbWluX21heC5ocHA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZSA8c3RhdGljX21pbl9tYXhfc2lnbmVkX3R5cGUgVmFsdWUxLCBzdGF0aWNfbWluX21heF9zaWduZWRfdHlwZSBWYWx1ZTI+Ci0gICAgc3RydWN0IHN0YXRpY19zaWduZWRfbWluOwotCi10ZW1wbGF0ZSA8c3RhdGljX21pbl9tYXhfc2lnbmVkX3R5cGUgVmFsdWUxLCBzdGF0aWNfbWluX21heF9zaWduZWRfdHlwZSBWYWx1ZTI+Ci0gICAgc3RydWN0IHN0YXRpY19zaWduZWRfbWF4OwotCi10ZW1wbGF0ZSA8c3RhdGljX21pbl9tYXhfdW5zaWduZWRfdHlwZSBWYWx1ZTEsIHN0YXRpY19taW5fbWF4X3Vuc2lnbmVkX3R5cGUgVmFsdWUyPgotICAgIHN0cnVjdCBzdGF0aWNfdW5zaWduZWRfbWluOwotCi10ZW1wbGF0ZSA8c3RhdGljX21pbl9tYXhfdW5zaWduZWRfdHlwZSBWYWx1ZTEsIHN0YXRpY19taW5fbWF4X3Vuc2lnbmVkX3R5cGUgVmFsdWUyPgotICAgIHN0cnVjdCBzdGF0aWNfdW5zaWduZWRfbWF4OwotCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX0lOVEVHRVJfRldEX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXJfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhhNmFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXJfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2MSArMCwwIEBACi0vKiBib29zdCBpbnRlZ2VyX3RyYWl0cy5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMAotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqICRJZDogaW50ZWdlcl90cmFpdHMuaHBwIDgzMzgxIDIwMTMtMDMtMDkgMjI6NTU6MDVaIGVyaWNfbmllYmxlciAkCi0gKgotICogSWRlYSBieSBCZW1hbiBEYXdlcywgRWQgQnJleSwgU3RldmUgQ2xlYXJ5LCBhbmQgTmF0aGFuIE15ZXJzCi0gKi8KLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludGVnZXIgZm9yIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9JTlRFR0VSX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5URUdFUl9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0KLS8vIFRoZXNlIGFyZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgYW5kIG5vdCBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLS8vIHdlIG5lZWQgd2NoYXIuaCBmb3IgV0NIQVJfTUFYL01JTiBidXQgbm90IGFsbCBwbGF0Zm9ybXMgcHJvdmlkZSBpdCwKLS8vIGFuZCBzb21lIG1heSBoYXZlIDx3Y2hhci5oPiBidXQgbm90IDxjd2NoYXI+IC4uLgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKSAmJiAoIWRlZmluZWQoTkROQk9PU1RfTk9fQ1dDSEFSKSB8fCBkZWZpbmVkKHN1bikgfHwgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX1FOWF9fKSkKLSNpbmNsdWRlIDx3Y2hhci5oPgotI2VuZGlmCi0KLS8vCi0vLyBXZSBzaW1wbHkgY2Fubm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgb24gZ2NjIHdpdGhvdXQgZ2V0dGluZyBjb3Bpb3VzIHdhcm5pbmdzIG9mIHRoZSBraW5kOgotLy8KLS8vIC4uLy4uLy4uL2Jvb3N0L2ludGVnZXJfdHJhaXRzLmhwcDoxNjQ6NjY6IHdhcm5pbmc6IHVzZSBvZiBDOTkgbG9uZyBsb25nIGludGVnZXIgY29uc3RhbnQKLS8vCi0vLyBBbmQgeWV0IHRoZXJlIGlzIG5vIG90aGVyIHJlYXNvbmFibGUgaW1wbGVtZW50YXRpb24sIHNvIHdlIGRlY2xhcmUgdGhpcyBhIHN5c3RlbSBoZWFkZXIKLS8vIHRvIHN1cHByZXNzIHRoZXNlIHdhcm5pbmdzLgotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotdGVtcGxhdGU8Y2xhc3MgVD4KLWNsYXNzIGludGVnZXJfdHJhaXRzIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4KLXsKLXB1YmxpYzoKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2ludGVncmFsID0gZmFsc2UpOwotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci10ZW1wbGF0ZTxjbGFzcyBULCBUIG1pbl92YWwsIFQgbWF4X3ZhbD4KLWNsYXNzIGludGVnZXJfdHJhaXRzX2Jhc2UKLXsKLXB1YmxpYzoKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2ludGVncmFsID0gdHJ1ZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCBjb25zdF9taW4gPSBtaW5fdmFsKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIGNvbnN0X21heCA9IG1heF92YWwpOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotLy8gIEEgZGVmaW5pdGlvbiBpcyByZXF1aXJlZCBldmVuIGZvciBpbnRlZ3JhbCBzdGF0aWMgY29uc3RhbnRzCi10ZW1wbGF0ZTxjbGFzcyBULCBUIG1pbl92YWwsIFQgbWF4X3ZhbD4KLWNvbnN0IGJvb2wgaW50ZWdlcl90cmFpdHNfYmFzZTxULCBtaW5fdmFsLCBtYXhfdmFsPjo6aXNfaW50ZWdyYWw7Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIFQgbWluX3ZhbCwgVCBtYXhfdmFsPgotY29uc3QgVCBpbnRlZ2VyX3RyYWl0c19iYXNlPFQsIG1pbl92YWwsIG1heF92YWw+Ojpjb25zdF9taW47Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIFQgbWluX3ZhbCwgVCBtYXhfdmFsPgotY29uc3QgVCBpbnRlZ2VyX3RyYWl0c19iYXNlPFQsIG1pbl92YWwsIG1heF92YWw+Ojpjb25zdF9tYXg7Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPGJvb2w+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8Ym9vbD4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTxib29sLCBmYWxzZSwgdHJ1ZT4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8Y2hhcj4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czxjaGFyPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPGNoYXIsIENIQVJfTUlOLCBDSEFSX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8c2lnbmVkIGNoYXI+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8c2lnbmVkIGNoYXI+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8c2lnbmVkIGNoYXIsIFNDSEFSX01JTiwgU0NIQVJfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBjaGFyPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8dW5zaWduZWQgY2hhciwgMCwgVUNIQVJfTUFYPgoteyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czx3Y2hhcl90PgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPHdjaGFyX3Q+LAotICAgIC8vIERvbid0IHRydXN0IFdDSEFSX01JTiBhbmQgV0NIQVJfTUFYIHdpdGggTWFjIE9TIFgncyBuYXRpdmUKLSAgICAvLyBsaWJyYXJ5OiB0aGV5IGFyZSB3cm9uZyEKLSNpZiBkZWZpbmVkKFdDSEFSX01JTikgJiYgZGVmaW5lZChXQ0hBUl9NQVgpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPHdjaGFyX3QsIFdDSEFSX01JTiwgV0NIQVJfTUFYPgotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykgfHwgKGRlZmluZWQoX19CRU9TX18pICYmIGRlZmluZWQoX19HTlVDX18pKQotICAgIC8vIE5vIFdDSEFSX01JTiBhbmQgV0NIQVJfTUFYLCB3aGFyX3QgaXMgc2hvcnQgYW5kIHVuc2lnbmVkOgotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8d2NoYXJfdCwgMCwgMHhmZmZmPgotI2VsaWYgKGRlZmluZWQoX19zZ2kpICYmICghZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgX19TR0lfU1RMX1BPUlQgPCAweDQwMCkpXAotICAgIHx8IChkZWZpbmVkIF9fQVBQTEVfXylcCi0gICAgfHwgKGRlZmluZWQoX19PcGVuQlNEX18pICYmIGRlZmluZWQoX19HTlVDX18pKVwKLSAgICB8fCAoZGVmaW5lZChfX05ldEJTRF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSlcCi0gICAgfHwgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoX19HTlVDX18pKVwKLSAgICB8fCAoZGVmaW5lZChfX0RyYWdvbkZseV9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSlcCi0gICAgfHwgKGRlZmluZWQoX19ocHV4KSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gMykgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpKQotICAgIC8vIE5vIFdDSEFSX01JTiBhbmQgV0NIQVJfTUFYLCB3Y2hhcl90IGhhcyB0aGUgc2FtZSByYW5nZSBhcyBpbnQuCi0gICAgLy8gIC0gU0dJIE1JUFNwcm8gd2l0aCBuYXRpdmUgbGlicmFyeQotICAgIC8vICAtIGdjYyAzLnggb24gSFAtVVgKLSAgICAvLyAgLSBNYWMgT1MgWCB3aXRoIG5hdGl2ZSBsaWJyYXJ5Ci0gICAgLy8gIC0gZ2NjIG9uIEZyZWVCU0QsIE9wZW5CU0QgYW5kIE5ldEJTRAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8d2NoYXJfdCwgSU5UX01JTiwgSU5UX01BWD4KLSNlbGlmIGRlZmluZWQoX19ocHV4KSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gMikgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpCi0gICAgLy8gTm8gV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVgsIHdjaGFyX3QgaGFzIHRoZSBzYW1lIHJhbmdlIGFzIHVuc2lnbmVkIGludC4KLSAgICAvLyAgLSBnY2MgMi45NS54IG9uIEhQLVVYCi0gICAgLy8gKGFsc28sIHN0ZDo6bnVtZXJpY19saW1pdHM8d2NoYXJfdD4gYXBwZWFycyB0byByZXR1cm4gdGhlIHdyb25nIHZhbHVlcykuCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTx3Y2hhcl90LCAwLCBVSU5UX01BWD4KLSNlbHNlCi0jZXJyb3IgTm8gV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVggcHJlc2VudCwgcGxlYXNlIGFkanVzdCBpbnRlZ2VyX3RyYWl0czw+IGZvciB5b3VyIGNvbXBpbGVyLgotI2VuZGlmCi17IH07Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8c2hvcnQ+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8c2hvcnQsIFNIUlRfTUlOLCBTSFJUX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8dW5zaWduZWQgc2hvcnQ+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgc2hvcnQ+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8dW5zaWduZWQgc2hvcnQsIDAsIFVTSFJUX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8aW50PgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPGludD4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTxpbnQsIElOVF9NSU4sIElOVF9NQVg+Ci17IH07Ci0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGludD4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8dW5zaWduZWQgaW50LCAwLCBVSU5UX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8bG9uZz4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czxsb25nPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPGxvbmcsIExPTkdfTUlOLCBMT05HX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8dW5zaWduZWQgbG9uZz4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25nPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPHVuc2lnbmVkIGxvbmcsIDAsIFVMT05HX01BWD4KLXsgfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVDY0X1QpCi0jaWYgZGVmaW5lZChVTExPTkdfTUFYKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCBMTE9OR19NSU4sIExMT05HX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUsIDAsIFVMTE9OR19NQVg+Ci17IH07Ci0KLSNlbGlmIGRlZmluZWQoVUxPTkdfTE9OR19NQVgpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+LCAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgTE9OR19MT05HX01JTiwgTE9OR19MT05HX01BWD57IH07Ci10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSwgMCwgVUxPTkdfTE9OR19NQVg+Ci17IH07Ci0KLSNlbGlmIGRlZmluZWQoVUxPTkdMT05HX01BWCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgTE9OR0xPTkdfTUlOLCBMT05HTE9OR19NQVg+Ci17IH07Ci0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLCAwLCBVTE9OR0xPTkdfTUFYPgoteyB9OwotCi0jZWxpZiBkZWZpbmVkKF9MTE9OR19NQVgpICYmIGRlZmluZWQoX0MyKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCAtX0xMT05HX01BWCAtIF9DMiwgX0xMT05HX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUsIDAsIF9VTExPTkdfTUFYPgoteyB9OwotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0vLwotLy8gd2UgaGF2ZSBsb25nIGxvbmcgYnV0IG5vIGNvbnN0YW50cywgdGhpcyBoYXBwZW5zIGZvciBleGFtcGxlIHdpdGggZ2NjIGluIC1hbnNpIG1vZGUsCi0vLyB3ZSdsbCBqdXN0IGhhdmUgdG8gd29yayBvdXQgdGhlIHZhbHVlcyBmb3Igb3Vyc2VsdmVzIChhc3N1bWVzIDIncyBjb21wbGltZW50IHJlcHJlc2VudGF0aW9uKToKLS8vCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgKDFMTCA8PCAoc2l6ZW9mKDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKSAqIENIQVJfQklUIC0gMSkpLCB+KDFMTCA8PCAoc2l6ZW9mKDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKSAqIENIQVJfQklUIC0gMSkpPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSwgMCwgfjB1TEw+Ci17IH07Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgX19pbnQ2ND4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgX19pbnQ2ND4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTwgX19pbnQ2NCwgX0k2NF9NSU4sIF9JNjRfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgdW5zaWduZWQgX19pbnQ2ND4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgdW5zaWduZWQgX19pbnQ2ND4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTwgdW5zaWduZWQgX19pbnQ2NCwgMCwgX1VJNjRfTUFYPgoteyB9OwotCi0jZW5kaWYKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLyogTkROQk9PU1RfSU5URUdFUl9UUkFJVFNfSFBQICovCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTdjZTA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgIDIwMDYtMjAxMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRydXNpdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfQ09ORklHX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9DT05GSUdfSU5DTFVERUQKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0KLSAgICNwcmFnbWEgd2FybmluZyAocHVzaCkKLSAgIC8vCi0gICAvLydmdW5jdGlvbicgOiByZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cAotICAgLy9BIGZ1bmN0aW9uIGZvdW5kIGJ5IGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAgKEtvZW5pZyBsb29rdXApIHdhcyBldmVudHVhbGx5Ci0gICAvL2Nob3NlbiBieSBvdmVybG9hZCByZXNvbHV0aW9uLgotICAgLy8KLSAgIC8vSW4gVmlzdWFsIEMrKyAuTkVUIGFuZCBlYXJsaWVyIGNvbXBpbGVycywgYSBkaWZmZXJlbnQgZnVuY3Rpb24gd291bGQgaGF2ZQotICAgLy9iZWVuIGNhbGxlZC4gVG8gcGljayB0aGUgb3JpZ2luYWwgZnVuY3Rpb24sIHVzZSBhbiBleHBsaWNpdGx5IHF1YWxpZmllZCBuYW1lLgotICAgLy8KLQotICAgLy93YXJuaW5nIEM0Mjc1OiBub24gZGxsLWludGVyZmFjZSBjbGFzcyAneCcgdXNlZCBhcyBiYXNlIGZvcgotICAgLy9kbGwtaW50ZXJmYWNlIGNsYXNzICdZJwotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDI3NSkKLSAgIC8vd2FybmluZyBDNDI1MTogJ3gnIDogY2xhc3MgJ3knIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0bwotICAgLy9iZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgJ3onCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MjUxKQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDY3NSkKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ5OTYpCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0NTAzKQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDI4NCkgLy8gb2RkIHJldHVybiB0eXBlIGZvciBvcGVyYXRvci0+Ci0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MjQ0KSAvLyBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ1MjEpIC8vLy9EaXNhYmxlICJtdWx0aXBsZSBjb3B5IGNvbnN0cnVjdG9ycyBzcGVjaWZpZWQiCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0NTIyKQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDE0NikKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQyNjcpIC8vY29udmVyc2lvbiBmcm9tICdYJyB0byAnWScsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDEyNykgLy9jb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50Ci0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0NzA2KSAvL2Fzc2lnbm1lbnQgd2l0aGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24KLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ1NDEpIC8vJ3R5cGVpZCcgdXNlZCBvbiBwb2x5bW9ycGhpYyB0eXBlICduZG5ib29zdDo6ZXhjZXB0aW9uJyB3aXRoIC9HUi0KLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ1MTIpIC8vJ3R5cGVpZCcgdXNlZCBvbiBwb2x5bW9ycGhpYyB0eXBlICduZG5ib29zdDo6ZXhjZXB0aW9uJyB3aXRoIC9HUi0KLSNlbmRpZgotCi0vLyNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1VTRV9JVEVSQVRPUl9GQUNBREUKLS8vI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfVVNFX0lURVJBVE9SX0VOQUJMRV9JRl9DT05WRVJUSUJMRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWExMjE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhICAyMDA2LTIwMTIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW50cnVzaXZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZiBkZWZpbmVkIE5ETkJPT1NUX01TVkMKLSAgICNwcmFnbWEgd2FybmluZyAocG9wKQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmRhNWI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzU3ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDExLTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRydXNpdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIHNhbXBsZS5oCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLSAgICNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfREVUQUlMU19JTkNMVURFRAotICAgI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9ERVRBSUxTX0lOQ0xVREVECi0KLSAgICAgICNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHA+Ci0gICAgICAjaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSAgICAgICNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3ByZXByb2Nlc3Nvci5ocHA+Ci0gICAgICAjaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9tcGwuaHBwPgotICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvbW92ZS5ocHA+Ci0KLSAgICAgIC8vTWFyayB0aGF0IHdlIGRvbid0IHN1cHBvcnQgMCBhcmcgY2FsbHMgZHVlIHRvIGNvbXBpbGVyIElDRSBpbiBHQ0MgMy40LzQuMC80LjEgYW5kCi0gICAgICAvL3dyb25nIFNGSU5BRSBmb3IgR0NDIDQuMi80LjMKLSAgICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pICYmICgoX19HTlVDX18qMTAwICsgX19HTlVDX01JTk9SX18qMTApID49IDM0MCkgJiYgKChfX0dOVUNfXyoxMDAgKyBfX0dOVUNfTUlOT1JfXyoxMCkgPD0gNDMwKQotICAgICAgI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF8wX0FSR1NfVU5TVVBQT1JURUQKLSAgICAgICNlbGlmIGRlZmluZWQoTkROQk9PU1RfSU5URUwpICYmIChORE5CT09TVF9JTlRFTCA8IDEyMDAgKQotICAgICAgI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF8wX0FSR1NfVU5TVVBQT1JURUQKLSAgICAgICNlbmRpZgotCi0gICAgICBuYW1lc3BhY2UgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aCB7Ci0KLSAgICAgIHN0cnVjdCBkb250X2NhcmUKLSAgICAgIHsKLSAgICAgICAgIGRvbnRfY2FyZSguLi4pOwotICAgICAgfTsKLQotICAgICAgc3RydWN0IHByaXZhdGVfdHlwZQotICAgICAgewotICAgICAgICAgc3RhdGljIHByaXZhdGVfdHlwZSBwOwotICAgICAgICAgcHJpdmF0ZV90eXBlIGNvbnN0ICZvcGVyYXRvciwoaW50KSBjb25zdDsKLSAgICAgIH07Ci0KLSAgICAgIHR5cGVkZWYgY2hhciB5ZXNfdHlwZTsgICAgICAgICAgICAvLyBzaXplb2YoeWVzX3R5cGUpID09IDEKLSAgICAgIHN0cnVjdCBub190eXBleyBjaGFyIGR1bW15WzJdOyB9OyAvLyBzaXplb2Yobm9fdHlwZSkgID09IDIKLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgIG5vX3R5cGUgaXNfcHJpdmF0ZV90eXBlKFQgY29uc3QgJik7Ci0gICAgICB5ZXNfdHlwZSBpc19wcml2YXRlX3R5cGUocHJpdmF0ZV90eXBlIGNvbnN0ICYpOwotCi0gICAgICB9ICAvL2Jvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGgKLQotICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSAgICNlbmRpZiAgIC8vTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfREVUQUlMU19JTkNMVURFRAotCi0jZWxzZSAvLyFORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLQotICAgI2lmbmRlZiAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRQotICAgI2Vycm9yICJORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FIG5vdCBkZWZpbmVkISIKLSAgICNlbmRpZgotCi0gICAjaWZuZGVmICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOCi0gICAjZXJyb3IgIk5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4gbm90IGRlZmluZWQhIgotICAgI2VuZGlmCi0KLSAgICNpZm5kZWYgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfRU5ECi0gICAjZXJyb3IgIk5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfRU5EIG5vdCBkZWZpbmVkISIKLSAgICNlbmRpZgotCi0gICAjaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUKCkgIT0gMAotICAgI2Vycm9yICJORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlQoKSBtdXN0IGJlIHplcm8gKDApIgotICAgI2VuZGlmCi0KLSAgICNpZiBORE5CT09TVF9QUF9JVEVSQVRJT04oKSA9PSAwCi0KLSAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4KLQotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci0gICAgICBjbGFzcyBORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9uYW1lZF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpCi0gICAgICB7Ci0gICAgICAgICBzdHJ1Y3QgQmFzZU1peGluCi0gICAgICAgICB7Ci0gICAgICAgICAgICB2b2lkIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUoKTsKLSAgICAgICAgIH07Ci0KLSAgICAgICAgIHN0cnVjdCBCYXNlIDogcHVibGljIDo6bmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjpyZW1vdmVfY3Y8VHlwZT46OnR5cGUsIHB1YmxpYyBCYXNlTWl4aW4geyBCYXNlKCk7IH07Ci0gICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCB0PiBjbGFzcyBIZWxwZXJ7fTsKLQotICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgICAgICBzdGF0aWMgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6bm9fdHlwZSAgZGVkdWNlCi0gICAgICAgICAgICAoVSosIEhlbHBlcjx2b2lkIChCYXNlTWl4aW46OiopKCksICZVOjpORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FPiogPSAwKTsKLSAgICAgICAgIHN0YXRpYyBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSBkZWR1Y2UoLi4uKTsKLQotICAgICAgICAgcHVibGljOgotICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPQotICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Onllc190eXBlKSA9PSBzaXplb2YoZGVkdWNlKChCYXNlKikoMCkpKTsKLSAgICAgIH07Ci0KLSAgICAgICNpZiAhZGVmaW5lZChORE5CT09TVF9JTlRSVVNJVkVfUEVSRkVDVF9GT1JXQVJESU5HKQotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4sIGJvb2wgSGFzRnVuYwotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCksIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9URU1QTEFURV9QQVJBTV9WT0lEX0RFRkFVTFQsIF8pPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksIF9pbXBsKTsKLSAgICAgICAgIC8vIQotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4gTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpLCBjbGFzcyBQKT4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpLCBfaW1wbCkKLSAgICAgICAgICAgIDxGdW4sIGZhbHNlIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSwgUCk+Ci0gICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOwotICAgICAgICAgfTsKLSAgICAgICAgIC8vIQotCi0gICAgICAgICAjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IChfTVNDX1ZFUiA8IDE2MDApCi0KLSAgICAgICAgICAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIXzBfQVJHU19VTlNVUFBPUlRFRCkKLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuPgotICAgICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksX2ltcGwpCi0gICAgICAgICAgICAgICA8RnVuLCB0cnVlIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcoTkROQk9PU1RfUFBfU1VCKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpLCBORE5CT09TVF9JTlRSVVNJVkVfUFBfSURFTlRJVFksIHZvaWQpPgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy9NYXJrIHRoYXQgd2UgZG9uJ3Qgc3VwcG9ydCAwIGFyZyBjYWxscyBkdWUgdG8gY29tcGlsZXIgSUNFIGluIEdDQyAzLjQvNC4wLzQuMSBhbmQKLSAgICAgICAgICAgICAgIC8vd3JvbmcgU0ZJTkFFIGZvciBHQ0MgNC4yLzQuMwotICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgI2Vsc2UgLy9kZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIXzBfQVJHU19VTlNVUFBPUlRFRCkKLQotICAgICAgICAgICAgLy9TcGVjaWFsIGNhc2UgZm9yIDAgYXJncwotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEYKLSAgICAgICAgICAgICAgICAgICwgc3RkOjpzaXplX3QgTiA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKG5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGVjbHZhbDxGPigpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSAoKSwgMCkpPgotICAgICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6eWVzX3R5cGUgZHVtbXk7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoemVyb2FyZ19jaGVja2VyXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSkoaW50KTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIC8vRm9yIGJ1Z2d5IGNvbXBpbGVycyBsaWtlIE1TVkMgNy4xKyAoKEYqKTApLT5mdW5jKCkgZG9lcyBub3QKLSAgICAgICAgICAgIC8vU0ZJTkFFLW91dCB0aGUgemVyb2FyZ19jaGVja2VyXyBpbnN0YW50aWF0aW9uIGJ1dCBzaXplb2YgeWllbGRzIHRvIDAuCi0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBGPgotICAgICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKTxGLCAwPgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6bm9fdHlwZSBkdW1teTsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKShpbnQpOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuPgotICAgICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksX2ltcGwpCi0gICAgICAgICAgICAgICA8RnVuLCB0cnVlIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcoTkROQk9PU1RfUFBfU1VCKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpLCBORE5CT09TVF9JTlRSVVNJVkVfUFBfSURFTlRJVFksIHZvaWQpPgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9QUF9DQVQoemVyb2FyZ19jaGVja2VyXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSk8VT4KLSAgICAgICAgICAgICAgICAgIFRlc3QoTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpPFU+Kik7Ci0KLSAgICAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgICAgICAgICAgICAgc3RhdGljIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Om5vX3R5cGUgVGVzdCguLi4pOwotCi0gICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihUZXN0PCBGdW4gPigwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IHNpemVvZihuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgI2VuZGlmICAgLy9kZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIXzBfQVJHU19VTlNVUFBPUlRFRCkKLQotICAgICAgICAgI2Vsc2UgLy8jaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IChfTVNDX1ZFUiA8IDE2MDApCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4+Ci0gICAgICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSxfaW1wbCkKLSAgICAgICAgICAgICAgIDxGdW4sIHRydWUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9TVUIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSksIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9JREVOVElUWSwgdm9pZCk+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgICAgc3RhdGljIGRlY2x0eXBlKCBuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRlY2x2YWw8RnVuPigpLk5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSgpKQotICAgICAgICAgICAgICAgICAgVGVzdChGdW4qKTsKLQotICAgICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgICAgICAgIHN0YXRpYyBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpub190eXBlIFRlc3QoLi4uKTsKLQotICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzaXplb2YoVGVzdDxGdW4+KDApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gc2l6ZW9mKG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Onllc190eXBlKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAjZW5kaWYgICAvLyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfVkVSIDwgMTYwMCkKLQotICAgICAgI2Vsc2UgICAvLyNpZiAhZGVmaW5lZChORE5CT09TVF9JTlRSVVNJVkVfUEVSRkVDVF9GT1JXQVJESU5HKQotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4sIGJvb2wgSGFzRnVuYywgY2xhc3MgLi4uQXJncz4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpLF9pbXBsKTsKLQotICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuLCBjbGFzcyAuLi5BcmdzPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksX2ltcGwpCi0gICAgICAgICAgICA8RnVuLCBmYWxzZSwgQXJncy4uLj4KLSAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7Ci0gICAgICAgICB9OwotCi0gICAgICAgICAvL1NwZWNpYWwgY2FzZSBmb3IgMCBhcmdzCi0gICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRgotICAgICAgICAgICAgICAgLCBzdGQ6OnNpemVfdCBOID0KLSAgICAgICAgICAgICAgICAgICAgIHNpemVvZigobmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkZWNsdmFsPEY+KCkuCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICgpLCAwKSk+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSBkdW1teTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKShpbnQpOwotICAgICAgICAgfTsKLQotICAgICAgICAgLy9Gb3IgYnVnZ3kgY29tcGlsZXJzIGxpa2UgTVNWQyA3LjErICgoRiopMCktPmZ1bmMoKSBkb2VzIG5vdAotICAgICAgICAgLy9TRklOQUUtb3V0IHRoZSB6ZXJvYXJnX2NoZWNrZXJfIGluc3RhbnRpYXRpb24gYnV0IHNpemVvZiB5aWVsZHMgdG8gMC4KLSAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEY+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpPEYsIDA+Ci0gICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpub190eXBlIGR1bW15OwotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpKGludCk7Ci0gICAgICAgICB9OwotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSxfaW1wbCkKLSAgICAgICAgICAgIDxGdW4sIHRydWU+Ci0gICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKQotICAgICAgICAgICAgICAgPFU+IFRlc3QoTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpPFU+Kik7Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgICAgICAgICAgc3RhdGljIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Om5vX3R5cGUgVGVzdCguLi4pOwotCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihUZXN0PCBGdW4gPigwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IHNpemVvZihuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSk7Ci0gICAgICAgICB9OwotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4sIGNsYXNzIC4uLkRvbnRDYXJlcz4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoIGZ1bndyYXBfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICkKLSAgICAgICAgICAgIDogRnVuCi0gICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoIGZ1bndyYXBfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICkoKTsKLSAgICAgICAgICAgIHVzaW5nIEZ1bjo6TkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRTsKLQotICAgICAgICAgICAgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6cHJpdmF0ZV90eXBlCi0gICAgICAgICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FCi0gICAgICAgICAgICAgICAgICAoIERvbnRDYXJlcy4uLikgIGNvbnN0OwotICAgICAgICAgfTsKLQotICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuLCBjbGFzcyAuLi5BcmdzPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfUFBfQ0FUKGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpLCBfaW1wbCkKLSAgICAgICAgICAgIDxGdW4sIHRydWUgLCBBcmdzLi4uPgotICAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICAgICAgICAgIHN0cnVjdCBtYWtlX2RvbnRjYXJlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6OmRvbnRfY2FyZSB0eXBlOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoIGZ1bndyYXBfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICkKLSAgICAgICAgICAgICAgIDxGdW4sIHR5cGVuYW1lIG1ha2VfZG9udGNhcmU8QXJncz46OnR5cGUuLi4+IEZ1bldyYXA7Ci0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0gKHNpemVvZihuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpub190eXBlKSA9PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6OmlzX3ByaXZhdGVfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRlY2x2YWw8IEZ1bldyYXAgPigpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGVjbHZhbDxBcmdzPigpLi4uICksIDApICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICB9OwotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4sIGNsYXNzIC4uLkFyZ3M+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKCBoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKQotICAgICAgICAgICAgOiBwdWJsaWMgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSxfaW1wbCkKLSAgICAgICAgICAgICAgIDwgRnVuCi0gICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVCggaGFzX21lbWJlcl9mdW5jdGlvbl9uYW1lZF8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICk8RnVuPjo6dmFsdWUKLSAgICAgICAgICAgICAgICwgQXJncy4uLiA+Ci0gICAgICAgICB7fTsKLQotICAgICAgI2VuZGlmICAgLy8jaWYgIWRlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX1BFUkZFQ1RfRk9SV0FSRElORykKLQotICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQKLQotICAgI2Vsc2UgICAvL05ETkJPT1NUX1BQX0lURVJBVElPTigpID09IDAKLQotICAgICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9QRVJGRUNUX0ZPUldBUkRJTkcpCi0KLSAgICAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4KLQotICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfUFBfQ0FUKGZ1bndyYXAsIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSkpCi0gICAgICAgICAgICA6IEZ1bgotICAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9DQVQoZnVud3JhcCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSkoKTsKLQotICAgICAgICAgICAgdXNpbmcgRnVuOjpORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FOwotICAgICAgICAgICAgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6cHJpdmF0ZV90eXBlCi0gICAgICAgICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FCi0gICAgICAgICAgICAgICAgICAoIE5ETkJPT1NUX1BQX0VOVU0oTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkKLSAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0lERU5USVRZCi0gICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6OmRvbnRfY2FyZSkpICBjb25zdDsKLSAgICAgICAgIH07Ci0KLSAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1biBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgY2xhc3MgUCk+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksX2ltcGwpCi0gICAgICAgICAgICA8RnVuLCB0cnVlCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgUCkKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcoIE5ETkJPT1NUX1BQX1NVQihORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCksIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0lERU5USVRZCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB2b2lkKT4KLSAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9DQVQoZnVud3JhcCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSk8RnVuPgotICAgICAgICAgICAgICAgICAgICAgRnVuV3JhcDsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0KLSAgICAgICAgICAgIChzaXplb2YobmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6bm9fdHlwZSkgPT0KLSAgICAgICAgICAgICAgIHNpemVvZihuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjppc19wcml2YXRlX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICggIChuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRlY2x2YWw8RnVuV3JhcD4oKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTkROQk9PU1RfUFBfRU5VTSggTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9ERUNMVkFMLCBfKSApLCAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICApOwotICAgICAgICAgfTsKLQotICAgICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQKLSAgICAgICNlbmRpZiAgIC8vI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9QRVJGRUNUX0ZPUldBUkRJTkcpCi0KLSAgICNlbmRpZiAgIC8vTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPT0gMAotCi0gICAjaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPT0gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpCi0KLSAgICAgICNpZiAhZGVmaW5lZChORE5CT09TVF9JTlRSVVNJVkVfUEVSRkVDVF9GT1JXQVJESU5HKQotCi0gICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOCi0KLSAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bgotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCksIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9URU1QTEFURV9QQVJBTV9WT0lEX0RFRkFVTFQsIF8pPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKQotICAgICAgICAgICAgOiBwdWJsaWMgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSwgX2ltcGwpCi0gICAgICAgICAgICAgICA8RnVuLCBORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9uYW1lZF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpPEZ1bj46OnZhbHVlCi0gICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCksIFApID4KLSAgICAgICAgIHt9OwotCi0gICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0VORAotCi0gICAgICAjZW5kaWYgLy8jaWYgIWRlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX1BFUkZFQ1RfRk9SV0FSRElORykKLQotICAgICAgI3VuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUKLSAgICAgICN1bmRlZiBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOCi0gICAgICAjdW5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQKLQotICAgI2VuZGlmICAgLy8jaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPT0gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpCi0KLSNlbmRpZiAgIC8vIU5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL21lbW9yeV91dGlsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9tZW1vcnlfdXRpbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkODhlZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL21lbW9yeV91dGlsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IFBhYmxvIEhhbHBlcm4gMjAwOS4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDExLTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRydXNpdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX0FMTE9DQVRPUl9NRU1PUllfVVRJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0FMTE9DQVRPUl9NRU1PUllfVVRJTF9IUFAKLQotI2lmIChkZWZpbmVkIF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgaW50cnVzaXZlIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBUKiBhZGRyZXNzb2YoVCYgb2JqKQotewotICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPgotICAgICAgKHN0YXRpY19jYXN0PHZvaWQqPgotICAgICAgICAgKGNvbnN0X2Nhc3Q8Y2hhcio+Ci0gICAgICAgICAgICAoJnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciY+KG9iaikpCi0gICAgICAgICApCi0gICAgICApOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHVudm9pZCB7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHVudm9pZDx2b2lkPiB7IHN0cnVjdCB0eXBlIHsgfTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCB1bnZvaWQ8Y29uc3Qgdm9pZD4geyBzdHJ1Y3QgdHlwZSB7IH07IH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IExvd1ByaW9yaXR5Q29udmVyc2lvbgotewotICAgIC8vIENvbnZlcnRpYmxlIGZyb20gVCB3aXRoIHVzZXItZGVmaW5lZC1jb252ZXJzaW9uIHJhbmsuCi0gICAgTG93UHJpb3JpdHlDb252ZXJzaW9uKGNvbnN0IFQmKSB7IH0KLX07Ci0KLS8vIEluZnJhc3RydWN0dXJlIGZvciBwcm92aWRpbmcgYSBkZWZhdWx0IHR5cGUgZm9yIFQ6OlROQU1FIGlmIGFic2VudC4KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0lOU1RBTlRJQVRFX0RFRkFVTFRfVFlQRV9UTVBMVChUTkFNRSkgICAgICAgICAgICAgIFwKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWZhdWx0VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHN0cnVjdCBib29zdF9pbnRydXNpdmVfZGVmYXVsdF90eXBlXyAjIyBUTkFNRSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBjaGFyIHRlc3QoaW50LCB0eXBlbmFtZSBYOjpUTkFNRSopOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBpbnQgdGVzdChuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIExvd1ByaW9yaXR5Q29udmVyc2lvbjxpbnQ+LCB2b2lkKik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0cnVjdCBEZWZhdWx0V3JhcCB7IHR5cGVkZWYgRGVmYXVsdFR5cGUgVE5BTUU7IH07ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gKDEgPT0gc2l6ZW9mKHRlc3Q8VD4oMCwgMCkpKTsgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjppZl9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIDx2YWx1ZSwgVCwgRGVmYXVsdFdyYXA+Ojp0eXBlOjpUTkFNRSB0eXBlOyAgICAgICAgICAgICAgICAgICAgIFwKLSAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWZhdWx0VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHN0cnVjdCBib29zdF9pbnRydXNpdmVfZXZhbF9kZWZhdWx0X3R5cGVfICMjIFROQU1FICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBjaGFyIHRlc3QoaW50LCB0eXBlbmFtZSBYOjpUTkFNRSopOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBpbnQgdGVzdChuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIExvd1ByaW9yaXR5Q29udmVyc2lvbjxpbnQ+LCB2b2lkKik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0cnVjdCBEZWZhdWx0V3JhcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHsgdHlwZWRlZiB0eXBlbmFtZSBEZWZhdWx0VHlwZTo6dHlwZSBUTkFNRTsgfTsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gKDEgPT0gc2l6ZW9mKHRlc3Q8VD4oMCwgMCkpKTsgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjpldmFsX2lmX2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIDwgdmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICwgOjpuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmlkZW50aXR5PFQ+ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICwgOjpuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmlkZW50aXR5PERlZmF1bHRXcmFwPiAgICAgICAgICAgIFwKLSAgICAgICAgICAgID46OnR5cGU6OlROQU1FIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX09CVEFJTl9UWVBFX1dJVEhfREVGQVVMVChJTlNUQU5USUFUSU9OX05TX1BSRUZJWCwgVCwgVE5BTUUsIFRJTVBMKSAgIFwKLSAgICAgIHR5cGVuYW1lIElOU1RBTlRJQVRJT05fTlNfUFJFRklYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGJvb3N0X2ludHJ1c2l2ZV9kZWZhdWx0X3R5cGVfICMjIFROQU1FPCBULCBUSU1QTCA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX09CVEFJTl9UWVBFX1dJVEhfRVZBTF9ERUZBVUxUKElOU1RBTlRJQVRJT05fTlNfUFJFRklYLCBULCBUTkFNRSwgVElNUEwpIFwKLSAgICAgIHR5cGVuYW1lIElOU1RBTlRJQVRJT05fTlNfUFJFRklYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGJvb3N0X2ludHJ1c2l2ZV9ldmFsX2RlZmF1bHRfdHlwZV8gIyMgVE5BTUU8IFQsIFRJTVBMID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8vCi0KLX19fSAgIC8vbmFtZXNwYWNlIG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUgcG9pbnRlcl90bwotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpbnRydXNpdmUgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQgICB9fX0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCAoMCwgMSwgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSBzdGF0aWNfY2FzdF9mcm9tCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4gbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGludHJ1c2l2ZSB7IG5hbWVzcGFjZSBkZXRhaWwgewotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0VORCAgIH19fQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsICgwLCAxLCA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FIGNvbnN0X2Nhc3RfZnJvbQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpbnRydXNpdmUgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQgICB9fX0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCAoMCwgMSwgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSBkeW5hbWljX2Nhc3RfZnJvbQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpbnRydXNpdmUgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQgICB9fX0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCAoMCwgMSwgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgaW50cnVzaXZlIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi1ORE5CT09TVF9JTlRSVVNJVkVfSU5TVEFOVElBVEVfREVGQVVMVF9UWVBFX1RNUExUKGVsZW1lbnRfdHlwZSkKLU5ETkJPT1NUX0lOVFJVU0lWRV9JTlNUQU5USUFURV9ERUZBVUxUX1RZUEVfVE1QTFQoZGlmZmVyZW5jZV90eXBlKQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vL3N0cnVjdCBmaXJzdF9wYXJhbQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGZpcnN0X3BhcmFtCi17ICB0eXBlZGVmIHZvaWQgdHlwZTsgICB9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0gICB0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZS4uLj4gY2xhc3MgVGVtcGxhdGVDbGFzcywgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgIHN0cnVjdCBmaXJzdF9wYXJhbTwgVGVtcGxhdGVDbGFzczxULCBBcmdzLi4uPiA+Ci0gICB7Ci0gICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgIH07Ci0KLSNlbHNlIC8vQysrMDMgY29tcGlsZXJzCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8obikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHRlbXBsYXRlIDwgdGVtcGxhdGUgPHR5cGVuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcobiwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0lERU5USVRZLCB0eXBlbmFtZSkgPiAgIFwKLSAgICAgICAgICAgIGNsYXNzIFRlbXBsYXRlQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4gICAgICAgICAgICAgICAgIFwKLSAgIHN0cnVjdCBmaXJzdF9wYXJhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIDwgVGVtcGxhdGVDbGFzczxUIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIFApPiA+ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHR5cGVkZWYgVCB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIC8vCi0gICAjZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyAoMCwgTkROQk9PU1RfSU5UUlVTSVZFX01BWF9DT05TVFJVQ1RPUl9QQVJBTUVURVJTKQotICAgI2luY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0KLSNlbmRpZiAgIC8vIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vc3RydWN0IHR5cGVfcmViaW5kX21vZGUKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUgVD4KLXN0cnVjdCB0eXBlX2hhc19yZWJpbmQKLXsKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPgotICAgI2lmICFkZWZpbmVkIChfX1NVTlBST19DQykKLSAgIHN0YXRpYyBjaGFyIHRlc3QoaW50LCB0eXBlbmFtZSBYOjp0ZW1wbGF0ZSByZWJpbmQ8VD4qKTsKLSAgICNlbHNlCi0gICBzdGF0aWMgY2hhciB0ZXN0KGludCwgdHlwZW5hbWUgWDo6cmViaW5kPFQ+Kik7Ci0gICAjZW5kaWYKLQotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+Ci0gICBzdGF0aWMgaW50IHRlc3QobmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjpMb3dQcmlvcml0eUNvbnZlcnNpb248aW50Piwgdm9pZCopOwotCi0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9ICgxID09IHNpemVvZih0ZXN0PFB0cj4oMCwgMCkpKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBQdHIsIHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdHlwZV9oYXNfcmViaW5kX290aGVyCi17Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4KLSAgICNpZiAhZGVmaW5lZCAoX19TVU5QUk9fQ0MpCi0gICBzdGF0aWMgY2hhciB0ZXN0KGludCwgdHlwZW5hbWUgWDo6dGVtcGxhdGUgcmViaW5kPFQ+OjpvdGhlciopOwotICAgI2Vsc2UKLSAgIHN0YXRpYyBjaGFyIHRlc3QoaW50LCB0eXBlbmFtZSBYOjpyZWJpbmQ8VD46Om90aGVyKik7Ci0gICAjZW5kaWYKLQotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+Ci0gICBzdGF0aWMgaW50IHRlc3QobmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjpMb3dQcmlvcml0eUNvbnZlcnNpb248aW50Piwgdm9pZCopOwotCi0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9ICgxID09IHNpemVvZih0ZXN0PFB0cj4oMCwgMCkpKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBQdHIsIHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdHlwZV9yZWJpbmRfbW9kZQotewotICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZWJpbmQgPSAgICAgICAodW5zaWduZWQgaW50KXR5cGVfaGFzX3JlYmluZDxQdHIsIFQ+Ojp2YWx1ZTsKLSAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcmViaW5kX290aGVyID0gKHVuc2lnbmVkIGludCl0eXBlX2hhc19yZWJpbmRfb3RoZXI8UHRyLCBUPjo6dmFsdWU7Ci0gICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1vZGUgPSAgICAgICAgIHJlYmluZCArIHJlYmluZCpyZWJpbmRfb3RoZXI7Ci19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vc3RydWN0IHR5cGVfcmViaW5kZXIKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUgVSwgdW5zaWduZWQgaW50IFJlYmluZE1vZGUgPSB0eXBlX3JlYmluZF9tb2RlPFB0ciwgVT46Om1vZGU+Ci1zdHJ1Y3QgdHlwZV9yZWJpbmRlcjsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgcG9pbnRlcl90cmFpdHM8UHRyPjo6cmViaW5kIGlmIFB0ciBoYXMKLS8vIGl0cyBvd24gcmViaW5kOjpvdGhlciB0eXBlIChDKyswMykKLXRlbXBsYXRlIDx0eXBlbmFtZSBQdHIsIHR5cGVuYW1lIFU+Ci1zdHJ1Y3QgdHlwZV9yZWJpbmRlcjwgUHRyLCBVLCAydSA+Ci17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIFB0cjo6dGVtcGxhdGUgcmViaW5kPFU+OjpvdGhlciB0eXBlOwotfTsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgcG9pbnRlcl90cmFpdHM8UHRyPjo6cmViaW5kIGlmIFB0ciBoYXMKLS8vIGl0cyBvd24gcmViaW5kIHRlbXBsYXRlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUgVT4KLXN0cnVjdCB0eXBlX3JlYmluZGVyPCBQdHIsIFUsIDF1ID4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUHRyOjp0ZW1wbGF0ZSByZWJpbmQ8VT4gdHlwZTsKLX07Ci0KLS8vIFNwZWNpYWxpemF0aW9uIG9mIHBvaW50ZXJfdHJhaXRzPFB0cj46OnJlYmluZCBpZiBQdHIgZG9lcyBub3QKLS8vIGhhdmUgaXRzIG93biByZWJpbmQgdGVtcGxhdGUgYnV0IGhhcyBhIHRoZSBmb3JtIFB0cjxjbGFzcyBULAotLy8gT3RoZXJBcmdzPiwgd2hlcmUgT3RoZXJBcmdzIGNvbXByaXNlcyB6ZXJvIG9yIG1vcmUgdHlwZSBwYXJhbWV0ZXJzLgotLy8gTWFueSBwb2ludGVycyBmaXQgdGhpcyBmb3JtLCBoZW5jZSBtYW55IHBvaW50ZXJzIHdpbGwgZ2V0IGEKLS8vIHJlYXNvbmFibGUgZGVmYXVsdCBmb3IgcmViaW5kLgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotdGVtcGxhdGUgPHRlbXBsYXRlIDxjbGFzcywgY2xhc3MuLi4+IGNsYXNzIFB0ciwgdHlwZW5hbWUgVCwgY2xhc3MuLi4gVG4sIGNsYXNzIFU+Ci1zdHJ1Y3QgdHlwZV9yZWJpbmRlcjxQdHI8VCwgVG4uLi4+LCBVLCAwdSA+Ci17Ci0gICB0eXBlZGVmIFB0cjxVLCBUbi4uLj4gdHlwZTsKLX07Ci0KLS8vTmVlZGVkIGZvciBub24tY29uZm9ybWluZyBjb21waWxlcnMgbGlrZSBHQ0MgNC4zCi10ZW1wbGF0ZSA8dGVtcGxhdGUgPGNsYXNzPiBjbGFzcyBQdHIsIHR5cGVuYW1lIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgdHlwZV9yZWJpbmRlcjxQdHI8VD4sIFUsIDB1ID4KLXsKLSAgIHR5cGVkZWYgUHRyPFU+IHR5cGU7Ci19OwotCi0jZWxzZSAvL0MrKzAzIGNvbXBpbGVycwotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKG4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8IHRlbXBsYXRlIDx0eXBlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HKG4sIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9JREVOVElUWSwgdHlwZW5hbWUpID4gICBcCi0gICAgICAgICAgIGNsYXNzIFB0ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAsIHR5cGVuYW1lIFQgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgY2xhc3MgUCkgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAsIGNsYXNzIFU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgdHlwZV9yZWJpbmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICA8IFB0cjxUIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIFApPiwgVSwgMHUgPiAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICB0eXBlZGVmIFB0cjxVIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIFApPiB0eXBlOyAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vLwotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDAsIE5ETkJPT1NUX0lOVFJVU0lWRV9NQVhfQ09OU1RSVUNUT1JfUEFSQU1FVEVSUykKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotCi0jZW5kaWYgICAvLyFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotfSAgLy9uYW1lc3BhY2UgZGV0YWlsIHsKLX0gIC8vbmFtZXNwYWNlIGludHJ1c2l2ZSB7Ci19ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8gISBkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9BTExPQ0FUT1JfTUVNT1JZX1VUSUxfSFBQKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL21wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZlMzQwYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4MyArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAgMjAwNi0yMDEyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludHJ1c2l2ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfTVBMX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX01QTF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGludHJ1c2l2ZSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdHlwZWRlZiBjaGFyIG9uZTsKLXN0cnVjdCB0d28ge29uZSBfWzJdO307Ci0KLXRlbXBsYXRlPCBib29sIENfID4KLXN0cnVjdCBib29sXwotewotICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBDXzsKLX07Ci0KLXR5cGVkZWYgYm9vbF88dHJ1ZT4gICAgICAgIHRydWVfOwotdHlwZWRlZiBib29sXzxmYWxzZT4gICAgICAgZmFsc2VfOwotCi10eXBlZGVmIHRydWVfICB0cnVlX3R5cGU7Ci10eXBlZGVmIGZhbHNlXyBmYWxzZV90eXBlOwotCi10eXBlZGVmIGNoYXIgeWVzX3R5cGU7Ci1zdHJ1Y3Qgbm9fdHlwZQotewotICAgY2hhciBwYWRkaW5nWzhdOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVCA9IHZvaWQ+Ci1zdHJ1Y3QgZW5hYmxlX2lmX2MgewotICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGVuYWJsZV9pZl9jPGZhbHNlLCBUPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSB2b2lkPgotc3RydWN0IGVuYWJsZV9pZiA6IHB1YmxpYyBlbmFibGVfaWZfYzxDb25kOjp2YWx1ZSwgVD57fTsKLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgUGFyYW0+Ci1zdHJ1Y3QgYXBwbHkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8UGFyYW0+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLWNsYXNzIGlzX2NvbnZlcnRpYmxlCi17Ci0gICB0eXBlZGVmIGNoYXIgdHJ1ZV90OwotICAgY2xhc3MgZmFsc2VfdCB7IGNoYXIgZHVtbXlbMl07IH07Ci0gICBzdGF0aWMgdHJ1ZV90IGRpc3BhdGNoKFUpOwotICAgc3RhdGljIGZhbHNlX3QgZGlzcGF0Y2goLi4uKTsKLSAgIHN0YXRpYyBjb25zdCBUICZ0cmlnZ2VyKCk7Ci0gICBwdWJsaWM6Ci0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihkaXNwYXRjaCh0cmlnZ2VyKCkpKSA9PSBzaXplb2YodHJ1ZV90KTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgaWZfYwotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGlmX2M8ZmFsc2UsVDEsVDI+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBDCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgaWZfCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGlmX2M8MCAhPSBDOjp2YWx1ZSwgVDEsIFQyPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMKLSAgICAsIHR5cGVuYW1lIEYxCi0gICAgLCB0eXBlbmFtZSBGMgotICAgID4KLXN0cnVjdCBldmFsX2lmX2MKLSAgICA6IGlmX2M8QyxGMSxGMj46OnR5cGUKLXt9OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEMKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBldmFsX2lmCi0gICAgOiBpZl88QyxUMSxUMj46OnR5cGUKLXt9OwotCi0vLyBpZGVudGl0eSBpcyBhbiBleHRlbnNpb246IGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSBzdGFuZGFyZC4KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlkZW50aXR5Ci17Ci0gICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IGRlZmluZWQoX19CT1JMQU5EQ18pCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9UVF9ERUNMIF9fY2RlY2wKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9UVF9ERUNMCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX01TQ19FWFRFTlNJT05TKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRfXykgJiYgIWRlZmluZWQoX1dJTjY0KSAmJiAhZGVmaW5lZChVTkRFUl9DRSkKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1RUX1RFU1RfTVNDX0ZVTkNfU0lHUwotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsCi17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9OwotCi0vLyBzZWUgYm9vc3QgdGlja2V0ICM0MDk0Ci0vLyBhdm9pZCBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgb2YgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGwKLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX1RUX1RFU1RfTVNDX0ZVTkNfU0lHUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSICgqKSgpPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoKikoLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX0lOVFJVU0lWRV9UVF9URVNUX01TQ19GVU5DX1NJR1MKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19zdGRjYWxsKikoKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNpZm5kZWYgX01BTkFHRUQKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19mYXN0Y2FsbCopKCk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19jZGVjbCopKCk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX2NkZWNsKikoLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbmRpZgotCi0vLyBzZWUgYm9vc3QgdGlja2V0ICM0MDk0Ci0vLyBhdm9pZCBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgb2YgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGwKLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX1RUX1RFU1RfTVNDX0ZVTkNfU0lHUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoKikoVDApPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKCopKFQwLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX0lOVFJVU0lWRV9UVF9URVNUX01TQ19GVU5DX1NJR1MKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fc3RkY2FsbCopKFQwKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNpZm5kZWYgX01BTkFHRUQKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fZmFzdGNhbGwqKShUMCk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fY2RlY2wqKShUMCk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19jZGVjbCopKFQwLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbmRpZgotCi0vLyBzZWUgYm9vc3QgdGlja2V0ICM0MDk0Ci0vLyBhdm9pZCBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgb2YgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGwKLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX1RUX1RFU1RfTVNDX0ZVTkNfU0lHUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDAsIGNsYXNzIFQxPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKCopKFQwLCBUMSk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDAsIGNsYXNzIFQxPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKCopKFQwLCBUMS4uLik+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi0jZWxzZSAvLyBORE5CT09TVF9JTlRSVVNJVkVfVFRfVEVTVF9NU0NfRlVOQ19TSUdTCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCBjbGFzcyBUMCwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19zdGRjYWxsKikoVDAsIFQxKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNpZm5kZWYgX01BTkFHRUQKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwLCBjbGFzcyBUMT4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX2Zhc3RjYWxsKikoVDAsIFQxKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDAsIGNsYXNzIFQxPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fY2RlY2wqKShUMCwgVDEpPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwLCBjbGFzcyBUMT4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX2NkZWNsKikoVDAsIFQxLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8VCY+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxUPjo6dmFsdWU7ICAgfTsKLQotLy9uZG5ib29zdDo6YWxpZ25tZW50X29mIHlpZWxkcyB0byAxMEsgbGluZXMgb2YgcHJlcHJvY2Vzc2VkIGNvZGUsIHNvIHdlCi0vL25lZWQgYW4gYWx0ZXJuYXRpdmUKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgYWxpZ25tZW50X29mOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhbGlnbm1lbnRfb2ZfaGFjawotewotICAgIGNoYXIgYzsKLSAgICBUIHQ7Ci0gICAgYWxpZ25tZW50X29mX2hhY2soKTsKLX07Ci0KLXRlbXBsYXRlIDx1bnNpZ25lZCBBLCB1bnNpZ25lZCBTPgotc3RydWN0IGFsaWdubWVudF9sb2dpYwotewotICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IHZhbHVlID0gQSA8IFMgPyBBIDogUzsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBhbGlnbm1lbnRfb2YKLXsKLSAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCB2YWx1ZSA9IGFsaWdubWVudF9sb2dpYwotICAgICAgICAgICAgPCBzaXplb2YoYWxpZ25tZW50X29mX2hhY2s8VD4pIC0gc2l6ZW9mKFQpCi0gICAgICAgICAgICAsIHNpemVvZihUKQotICAgICAgICAgICAgPjo6dmFsdWU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXN0cnVjdCBpc19zYW1lCi17Ci0gICB0eXBlZGVmIGNoYXIgeWVzX3R5cGU7Ci0gICBzdHJ1Y3Qgbm9fdHlwZQotICAgewotICAgICAgY2hhciBwYWRkaW5nWzhdOwotICAgfTsKLQotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci0gICBzdGF0aWMgeWVzX3R5cGUgaXNfc2FtZV90ZXN0ZXIoViosIFYqKTsKLSAgIHN0YXRpYyBub190eXBlIGlzX3NhbWVfdGVzdGVyKC4uLik7Ci0KLSAgIHN0YXRpYyBUICp0OwotICAgc3RhdGljIFUgKnU7Ci0KLSAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKHllc190eXBlKSA9PSBzaXplb2YoaXNfc2FtZV90ZXN0ZXIodCx1KSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9jb25zdAoteyAgdHlwZWRlZiBjb25zdCBUIHR5cGU7ICAgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY29uc3QKLXsgIHR5cGVkZWYgIFQgdHlwZTsgICB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jb25zdDxjb25zdCBUPgoteyAgdHlwZWRlZiBUIHR5cGU7ICAgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY3YKLXsgIHR5cGVkZWYgIFQgdHlwZTsgICB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jdjxjb25zdCBUPgoteyAgdHlwZWRlZiBUIHR5cGU7ICAgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY3Y8Y29uc3Qgdm9sYXRpbGUgVD4KLXsgIHR5cGVkZWYgVCB0eXBlOyAgIH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX2N2PHZvbGF0aWxlIFQ+Ci17ICB0eXBlZGVmIFQgdHlwZTsgICB9OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHJlbW92ZV9yZWZlcmVuY2UKLXsKLSAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCByZW1vdmVfcmVmZXJlbmNlPFQmPgotewotICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBDbGFzcz4KLWNsYXNzIGlzX2VtcHR5X2NsYXNzCi17Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgIHN0cnVjdCBlbXB0eV9oZWxwZXJfdDEgOiBwdWJsaWMgVAotICAgewotICAgICAgZW1wdHlfaGVscGVyX3QxKCk7Ci0gICAgICBpbnQgaVsyNTZdOwotICAgfTsKLQotICAgc3RydWN0IGVtcHR5X2hlbHBlcl90MgotICAgeyBpbnQgaVsyNTZdOyB9OwotCi0gICBwdWJsaWM6Ci0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihlbXB0eV9oZWxwZXJfdDE8Q2xhc3M+KSA9PSBzaXplb2YoZW1wdHlfaGVscGVyX3QyKTsKLX07Ci0KLXRlbXBsYXRlPHN0ZDo6c2l6ZV90IFM+Ci1zdHJ1Y3QgbHNfemVyb3MKLXsKLSAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCB2YWx1ZSA9IChTICYgc3RkOjpzaXplX3QoMSkpID8gMCA6ICgxICsgbHNfemVyb3M8KFM+PjF1KT46OnZhbHVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsc196ZXJvczwwPgotewotICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IHZhbHVlID0gMDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsc196ZXJvczwxPgotewotICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IHZhbHVlID0gMDsKLX07Ci0KLX0gLy9uYW1lc3BhY2UgZGV0YWlsCi19IC8vbmFtZXNwYWNlIGludHJ1c2l2ZQotfSAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9NUExfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvcHJlcHJvY2Vzc29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9wcmVwcm9jZXNzb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGY4YTM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9wcmVwcm9jZXNzb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMDgtMjAxMi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludHJ1c2l2ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX1BSRVBST0NFU1NPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9QUkVQUk9DRVNTT1JfSFBQCi0KLSNpZiAoZGVmaW5lZCBfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jICBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9wYXJlbl9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9NQVhfQ09OU1RSVUNUT1JfUEFSQU1FVEVSUyAxMAotCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9JREVOVElUWSh6LCBuLCBkYXRhKSBkYXRhCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0RFQ0xWQUwoeiwgbiwgZGF0YSkgXAotbmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkZWNsdmFsPCBORE5CT09TVF9QUF9DQVQoUCwgbikgPigpIFwKLS8vIQotCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9URU1QTEFURV9QQVJBTV9WT0lEX0RFRkFVTFQoeiwgbiwgZGF0YSkgICBcCi0gIE5ETkJPT1NUX1BQX0NBVChjbGFzcyBQLCBuKSA9IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8vIQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX1BSRVBST0NFU1NPUl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY3M2IxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvd29ya2Fyb3VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAwNS0yMDEyLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW50ZXJwcm9jZXNzIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfV1JLUk5EX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX1dSS1JORF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAjZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9QRVJGRUNUX0ZPUldBUkRJTkcKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmICAgLy8jaWZuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfV1JLUk5EX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvcG9pbnRlcl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvcG9pbnRlcl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTAxZmY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL3BvaW50ZXJfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IFBhYmxvIEhhbHBlcm4gMjAwOS4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDExLTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRydXNpdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX1BPSU5URVJfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfUE9JTlRFUl9UUkFJVFNfSFBQCi0KLSNpZiAoZGVmaW5lZCBfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jICBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL21lbW9yeV91dGlsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBpbnRydXNpdmUgewotCi0vLyEgcG9pbnRlcl90cmFpdHMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIEMrKzExIHN0ZDo6cG9pbnRlcl90cmFpdHMgY2xhc3Mgd2l0aCBzb21lCi0vLyEgZXh0ZW5zaW9ucyBsaWtlIGNhc3RpbmdzLgotLy8hCi0vLyEgcG9pbnRlcl90cmFpdHMgc3VwcGxpZXMgYSB1bmlmb3JtIGludGVyZmFjZSB0byBjZXJ0YWluIGF0dHJpYnV0ZXMgb2YgcG9pbnRlci1saWtlIHR5cGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFB0cj4KLXN0cnVjdCBwb2ludGVyX3RyYWl0cwotewotICAgI2lmZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ET1hZR0VOX0lOVk9LRUQKLSAgICAgIC8vIVRoZSBwb2ludGVyIHR5cGUKLSAgICAgIC8vIXF1ZXJpZWQgYnkgdGhpcyBwb2ludGVyX3RyYWl0cyBpbnN0YW50aWF0aW9uCi0gICAgICB0eXBlZGVmIFB0ciAgICAgICAgICAgICBwb2ludGVyOwotCi0gICAgICAvLyFQdHI6OmVsZW1lbnRfdHlwZSBpZiBzdWNoIGEgdHlwZSBleGlzdHM7IG90aGVyd2lzZSwgVCBpZiBQdHIgaXMgYSBjbGFzcwotICAgICAgLy8hdGVtcGxhdGUgaW5zdGFudGlhdGlvbiBvZiB0aGUgZm9ybSBTb21lUG9pbnRlcjxULCBBcmdzPiwgd2hlcmUgQXJncyBpcyB6ZXJvIG9yCi0gICAgICAvLyFtb3JlIHR5cGUgYXJndW1lbnRzIDsgb3RoZXJ3aXNlICwgdGhlIHNwZWNpYWxpemF0aW9uIGlzIGlsbC1mb3JtZWQuCi0gICAgICB0eXBlZGVmIHVuc3BlY2lmaWVkX3R5cGUgZWxlbWVudF90eXBlOwotCi0gICAgICAvLyFQdHI6OmRpZmZlcmVuY2VfdHlwZSBpZiBzdWNoIGEgdHlwZSBleGlzdHM7IG90aGVyd2lzZSwKLSAgICAgIC8vIXN0ZDo6cHRyZGlmZl90LgotICAgICAgdHlwZWRlZiB1bnNwZWNpZmllZF90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLQotICAgICAgLy8hUHRyOjpyZWJpbmQ8VT4gaWYgc3VjaCBhIHR5cGUgZXhpc3RzOyBvdGhlcndpc2UsIFNvbWVQb2ludGVyPFUsIEFyZ3M+IGlmIFB0ciBpcwotICAgICAgLy8hYSBjbGFzcyB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIG9mIHRoZSBmb3JtIFNvbWVQb2ludGVyPFQsIEFyZ3M+LCB3aGVyZSBBcmdzIGlzIHplcm8gb3IKLSAgICAgIC8vIW1vcmUgdHlwZSBhcmd1bWVudHMgOyBvdGhlcndpc2UsIHRoZSBpbnN0YW50aWF0aW9uIG9mIHJlYmluZCBpcyBpbGwtZm9ybWVkLgotICAgICAgLy8hCi0gICAgICAvLyFGb3IgcG9ydGFibGUgY29kZSBmb3IgQysrMDMgYW5kIEMrKzExLCA8cHJlPnR5cGVuYW1lIHJlYmluZF9wb2ludGVyPFU+Ojp0eXBlPC9wcmU+Ci0gICAgICAvLyFzaGFsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmViaW5kPFU+IHRvIG9idGFpbiBhIHBvaW50ZXIgdG8gVS4KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiB1c2luZyByZWJpbmQgPSB1bnNwZWNpZmllZDsKLQotICAgICAgLy8hUHRyOjpyZWJpbmQ8VT4gaWYgc3VjaCBhIHR5cGUgZXhpc3RzOyBvdGhlcndpc2UsIFNvbWVQb2ludGVyPFUsIEFyZ3M+IGlmIFB0ciBpcwotICAgICAgLy8hYSBjbGFzcyB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIG9mIHRoZSBmb3JtIFNvbWVQb2ludGVyPFQsIEFyZ3M+LCB3aGVyZSBBcmdzIGlzIHplcm8gb3IKLSAgICAgIC8vIW1vcmUgdHlwZSBhcmd1bWVudHMgOyBvdGhlcndpc2UsIHRoZSBpbnN0YW50aWF0aW9uIG9mIHJlYmluZCBpcyBpbGwtZm9ybWVkLgotICAgICAgLy8hCi0gICAgICB0eXBlZGVmIGVsZW1lbnRfdHlwZSAmcmVmZXJlbmNlOwotICAgI2Vsc2UKLSAgICAgIHR5cGVkZWYgUHRyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICAgICAvLwotICAgICAgdHlwZWRlZiBORE5CT09TVF9JTlRSVVNJVkVfT0JUQUlOX1RZUEVfV0lUSF9FVkFMX0RFRkFVTFQKLSAgICAgICAgICggbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjosIFB0ciwgZWxlbWVudF90eXBlCi0gICAgICAgICAsIG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6Zmlyc3RfcGFyYW08UHRyPikgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3R5cGU7Ci0gICAgICAvLwotICAgICAgdHlwZWRlZiBORE5CT09TVF9JTlRSVVNJVkVfT0JUQUlOX1RZUEVfV0lUSF9ERUZBVUxUCi0gICAgICAgICAobmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjosIFB0ciwgZGlmZmVyZW5jZV90eXBlLCBzdGQ6OnB0cmRpZmZfdCkgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAvLwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnVudm9pZDxlbGVtZW50X3R5cGU+Ojp0eXBlJiAgcmVmZXJlbmNlOwotICAgICAgLy8KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5kX3BvaW50ZXIKLSAgICAgIHsKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjp0eXBlX3JlYmluZGVyPFB0ciwgVT46OnR5cGUgIHR5cGU7Ci0gICAgICB9OwotCi0gICAgICAjaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUykKLSAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiB1c2luZyByZWJpbmQgPSB0eXBlbmFtZSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnR5cGVfcmViaW5kZXI8UHRyLCBVPjo6dHlwZTsKLSAgICAgICNlbmRpZgotICAgI2VuZGlmICAgLy8jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUykKLQotICAgLy8hIDxiPlJlbWFyazwvYj46IElmIGVsZW1lbnRfdHlwZSBpcyAocG9zc2libHkgY3YtcXVhbGlmaWVkKSB2b2lkLCByIHR5cGUgaXMgdW5zcGVjaWZpZWQ7IG90aGVyd2lzZSwKLSAgIC8vISAgIGl0IGlzIGVsZW1lbnRfdHlwZSAmLgotICAgLy8hCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IEEgZGVyZWZlcmVuY2VhYmxlIHBvaW50ZXIgdG8gciBvYnRhaW5lZCBieSBjYWxsaW5nIFB0cjo6cG9pbnRlcl90byhyKS4KLSAgIC8vISAgIE5vbi1zdGFuZGFyZCBleHRlbnNpb246IElmIHN1Y2ggZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QsIHJldHVybnMgcG9pbnRlcihhZGRyZXNzb2YocikpOwotICAgc3RhdGljIHBvaW50ZXIgcG9pbnRlcl90byhyZWZlcmVuY2UgcikKLSAgIHsKLSAgICAgIC8vTm9uLXN0YW5kYXJkIGV4dGVuc2lvbiwgaXQgZG9lcyBub3QgcmVxdWlyZSBQdHI6OnBvaW50ZXJfdG8uIElmIG5vdCBwcmVzZW50Ci0gICAgICAvL3RyaWVzIHRvIGNvbnZlcnRzICZyIHRvIHBvaW50ZXIuCi0gICAgICBjb25zdCBib29sIHZhbHVlID0gbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjoKLSAgICAgICAgIGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF9wb2ludGVyX3RvCi0gICAgICAgICAgICA8UHRyLCB0eXBlbmFtZSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnVudm9pZDxlbGVtZW50X3R5cGUgJj46OnR5cGU+Ojp2YWx1ZTsKLSAgICAgIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHZhbHVlPiBmbGFnOwotICAgICAgcmV0dXJuIHBvaW50ZXJfdHJhaXRzOjpwcml2X3BvaW50ZXJfdG8oZmxhZywgcik7Ci0gICB9Ci0KLSAgIC8vISA8Yj5SZW1hcms8L2I+OiBOb24tc3RhbmRhcmQgZXh0ZW5zaW9uLgotICAgLy8hCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IEEgZGVyZWZlcmVuY2VhYmxlIHBvaW50ZXIgdG8gciBvYnRhaW5lZCBieSBjYWxsaW5nIFB0cjo6c3RhdGljX2Nhc3RfZnJvbShyKS4KLSAgIC8vISAgIElmIHN1Y2ggZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QsIHJldHVybnMgcG9pbnRlcl90byhzdGF0aWNfY2FzdDxlbGVtZW50X3R5cGUmPigqdXB0cikpCi0gICB0ZW1wbGF0ZTxjbGFzcyBVUHRyPgotICAgc3RhdGljIHBvaW50ZXIgc3RhdGljX2Nhc3RfZnJvbShjb25zdCBVUHRyICZ1cHRyKQotICAgewotICAgICAgY29uc3QgYm9vbCB2YWx1ZSA9IG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6Ci0gICAgICAgICBoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfc3RhdGljX2Nhc3RfZnJvbQotICAgICAgICAgICAgPFB0ciwgY29uc3QgVVB0cj46OnZhbHVlOwotICAgICAgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdmFsdWU+IGZsYWc7Ci0gICAgICByZXR1cm4gcG9pbnRlcl90cmFpdHM6OnByaXZfc3RhdGljX2Nhc3RfZnJvbShmbGFnLCB1cHRyKTsKLSAgIH0KLQotICAgLy8hIDxiPlJlbWFyazwvYj46IE5vbi1zdGFuZGFyZCBleHRlbnNpb24uCi0gICAvLyEKLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogQSBkZXJlZmVyZW5jZWFibGUgcG9pbnRlciB0byByIG9idGFpbmVkIGJ5IGNhbGxpbmcgUHRyOjpjb25zdF9jYXN0X2Zyb20ocikuCi0gICAvLyEgICBJZiBzdWNoIGZ1bmN0aW9uIGRvZXMgbm90IGV4aXN0LCByZXR1cm5zIHBvaW50ZXJfdG8oY29uc3RfY2FzdDxlbGVtZW50X3R5cGUmPigqdXB0cikpCi0gICB0ZW1wbGF0ZTxjbGFzcyBVUHRyPgotICAgc3RhdGljIHBvaW50ZXIgY29uc3RfY2FzdF9mcm9tKGNvbnN0IFVQdHIgJnVwdHIpCi0gICB7Ci0gICAgICBjb25zdCBib29sIHZhbHVlID0gbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjoKLSAgICAgICAgIGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF9jb25zdF9jYXN0X2Zyb20KLSAgICAgICAgICAgIDxQdHIsIGNvbnN0IFVQdHI+Ojp2YWx1ZTsKLSAgICAgIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHZhbHVlPiBmbGFnOwotICAgICAgcmV0dXJuIHBvaW50ZXJfdHJhaXRzOjpwcml2X2NvbnN0X2Nhc3RfZnJvbShmbGFnLCB1cHRyKTsKLSAgIH0KLQotICAgLy8hIDxiPlJlbWFyazwvYj46IE5vbi1zdGFuZGFyZCBleHRlbnNpb24uCi0gICAvLyEKLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogQSBkZXJlZmVyZW5jZWFibGUgcG9pbnRlciB0byByIG9idGFpbmVkIGJ5IGNhbGxpbmcgUHRyOjpkeW5hbWljX2Nhc3RfZnJvbShyKS4KLSAgIC8vISAgIElmIHN1Y2ggZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QsIHJldHVybnMgcG9pbnRlcl90bygqZHluYW1pY19jYXN0PGVsZW1lbnRfdHlwZSo+KCYqdXB0cikpCi0gICB0ZW1wbGF0ZTxjbGFzcyBVUHRyPgotICAgc3RhdGljIHBvaW50ZXIgZHluYW1pY19jYXN0X2Zyb20oY29uc3QgVVB0ciAmdXB0cikKLSAgIHsKLSAgICAgIGNvbnN0IGJvb2wgdmFsdWUgPSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OgotICAgICAgICAgaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoX2R5bmFtaWNfY2FzdF9mcm9tCi0gICAgICAgICAgICA8UHRyLCBjb25zdCBVUHRyPjo6dmFsdWU7Ci0gICAgICA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLCB2YWx1ZT4gZmxhZzsKLSAgICAgIHJldHVybiBwb2ludGVyX3RyYWl0czo6cHJpdl9keW5hbWljX2Nhc3RfZnJvbShmbGFnLCB1cHRyKTsKLSAgIH0KLQotICAgLy8vQGNvbmQKLSAgIHByaXZhdGU6Ci0gICAvL3ByaXZfdG9fcmF3X3BvaW50ZXIKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RhdGljIFQqIHRvX3Jhd19wb2ludGVyKFQqIHApCi0gICB7ICByZXR1cm4gcDsgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUG9pbnRlcj4KLSAgIHN0YXRpYyB0eXBlbmFtZSBwb2ludGVyX3RyYWl0czxQb2ludGVyPjo6ZWxlbWVudF90eXBlKgotICAgICAgdG9fcmF3X3BvaW50ZXIoY29uc3QgUG9pbnRlciAmcCkKLSAgIHsgIHJldHVybiBwb2ludGVyX3RyYWl0czo6dG9fcmF3X3BvaW50ZXIocC5vcGVyYXRvci0+KCkpOyAgfQotCi0gICAvL3ByaXZfcG9pbnRlcl90bwotICAgc3RhdGljIHBvaW50ZXIgcHJpdl9wb2ludGVyX3RvKG5kbmJvb3N0Ojp0cnVlX3R5cGUsIHR5cGVuYW1lIG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6dW52b2lkPGVsZW1lbnRfdHlwZT46OnR5cGUmIHIpCi0gICAgICB7IHJldHVybiBQdHI6OnBvaW50ZXJfdG8ocik7IH0KLQotICAgc3RhdGljIHBvaW50ZXIgcHJpdl9wb2ludGVyX3RvKG5kbmJvb3N0OjpmYWxzZV90eXBlLCB0eXBlbmFtZSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnVudm9pZDxlbGVtZW50X3R5cGU+Ojp0eXBlJiByKQotICAgICAgeyByZXR1cm4gcG9pbnRlcihuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmFkZHJlc3NvZihyKSk7IH0KLQotICAgLy9wcml2X3N0YXRpY19jYXN0X2Zyb20KLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBwcml2X3N0YXRpY19jYXN0X2Zyb20obmRuYm9vc3Q6OnRydWVfdHlwZSwgY29uc3QgVVB0ciAmdXB0cikKLSAgIHsgcmV0dXJuIFB0cjo6c3RhdGljX2Nhc3RfZnJvbSh1cHRyKTsgfQotCi0gICB0ZW1wbGF0ZTxjbGFzcyBVUHRyPgotICAgc3RhdGljIHBvaW50ZXIgcHJpdl9zdGF0aWNfY2FzdF9mcm9tKG5kbmJvb3N0OjpmYWxzZV90eXBlLCBjb25zdCBVUHRyICZ1cHRyKQotICAgeyAgcmV0dXJuIHBvaW50ZXJfdG8oKnN0YXRpY19jYXN0PGVsZW1lbnRfdHlwZSo+KHRvX3Jhd19wb2ludGVyKHVwdHIpKSk7ICB9Ci0KLSAgIC8vcHJpdl9jb25zdF9jYXN0X2Zyb20KLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBwcml2X2NvbnN0X2Nhc3RfZnJvbShuZG5ib29zdDo6dHJ1ZV90eXBlLCBjb25zdCBVUHRyICZ1cHRyKQotICAgeyByZXR1cm4gUHRyOjpjb25zdF9jYXN0X2Zyb20odXB0cik7IH0KLQotICAgdGVtcGxhdGU8Y2xhc3MgVVB0cj4KLSAgIHN0YXRpYyBwb2ludGVyIHByaXZfY29uc3RfY2FzdF9mcm9tKG5kbmJvb3N0OjpmYWxzZV90eXBlLCBjb25zdCBVUHRyICZ1cHRyKQotICAgeyAgcmV0dXJuIHBvaW50ZXJfdG8oY29uc3RfY2FzdDxlbGVtZW50X3R5cGUmPigqdXB0cikpOyAgfQotCi0gICAvL3ByaXZfZHluYW1pY19jYXN0X2Zyb20KLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBwcml2X2R5bmFtaWNfY2FzdF9mcm9tKG5kbmJvb3N0Ojp0cnVlX3R5cGUsIGNvbnN0IFVQdHIgJnVwdHIpCi0gICB7IHJldHVybiBQdHI6OmR5bmFtaWNfY2FzdF9mcm9tKHVwdHIpOyB9Ci0KLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBwcml2X2R5bmFtaWNfY2FzdF9mcm9tKG5kbmJvb3N0OjpmYWxzZV90eXBlLCBjb25zdCBVUHRyICZ1cHRyKQotICAgeyAgcmV0dXJuIHBvaW50ZXJfdG8oKmR5bmFtaWNfY2FzdDxlbGVtZW50X3R5cGUqPigmKnVwdHIpKTsgIH0KLSAgIC8vL0BlbmRjb25kCi19OwotCi0vLy9AY29uZAotCi0vLyBSZW1vdmUgY3YgcXVhbGlmaWNhdGlvbiBmcm9tIFB0ciBwYXJhbWV0ZXIgdG8gcG9pbnRlcl90cmFpdHM6Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUHRyPgotc3RydWN0IHBvaW50ZXJfdHJhaXRzPGNvbnN0IFB0cj4gOiBwb2ludGVyX3RyYWl0czxQdHI+IHt9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFB0cj4KLXN0cnVjdCBwb2ludGVyX3RyYWl0czx2b2xhdGlsZSBQdHI+IDogcG9pbnRlcl90cmFpdHM8UHRyPiB7IH07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUHRyPgotc3RydWN0IHBvaW50ZXJfdHJhaXRzPGNvbnN0IHZvbGF0aWxlIFB0cj4gOiBwb2ludGVyX3RyYWl0czxQdHI+IHsgfTsKLS8vIFJlbW92ZSByZWZlcmVuY2UgZnJvbSBQdHIgcGFyYW1ldGVyIHRvIHBvaW50ZXJfdHJhaXRzOgotdGVtcGxhdGUgPHR5cGVuYW1lIFB0cj4KLXN0cnVjdCBwb2ludGVyX3RyYWl0czxQdHImPiA6IHBvaW50ZXJfdHJhaXRzPFB0cj4geyB9OwotCi0vLy9AZW5kY29uZAotCi0vLyEgU3BlY2lhbGl6YXRpb24gb2YgcG9pbnRlcl90cmFpdHMgZm9yIHJhdyBwb2ludGVycwotLy8hCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBwb2ludGVyX3RyYWl0czxUKj4KLXsKLSAgIHR5cGVkZWYgVCAgICAgICAgICAgIGVsZW1lbnRfdHlwZTsKLSAgIHR5cGVkZWYgVCogICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLQotICAgI2lmZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ET1hZR0VOX0lOVk9LRUQKLSAgICAgIHR5cGVkZWYgVCAmICAgICAgICAgIHJlZmVyZW5jZTsKLSAgICAgIC8vIXR5cGVkZWYgZm9yIDxwcmU+VSAqPC9wcmU+Ci0gICAgICAvLyEKLSAgICAgIC8vIUZvciBwb3J0YWJsZSBjb2RlIGZvciBDKyswMyBhbmQgQysrMTEsIDxwcmU+dHlwZW5hbWUgcmViaW5kX3BvaW50ZXI8VT46OnR5cGU8L3ByZT4KLSAgICAgIC8vIXNoYWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWJpbmQ8VT4gdG8gb2J0YWluIGEgcG9pbnRlciB0byBVLgotICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IHVzaW5nIHJlYmluZCA9IFUqOwotICAgI2Vsc2UKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjp1bnZvaWQ8ZWxlbWVudF90eXBlPjo6dHlwZSYgcmVmZXJlbmNlOwotICAgICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMpCi0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gdXNpbmcgcmViaW5kID0gVSo7Ci0gICAgICAjZW5kaWYKLSAgICNlbmRpZgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gc3RydWN0IHJlYmluZF9wb2ludGVyCi0gICB7ICB0eXBlZGVmIFUqIHR5cGU7ICB9OwotCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IGFkZHJlc3NvZihyKQotICAgLy8hCi0gICBzdGF0aWMgcG9pbnRlciBwb2ludGVyX3RvKHJlZmVyZW5jZSByKQotICAgeyByZXR1cm4gbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjphZGRyZXNzb2Yocik7IH0KLQotICAgLy8hIDxiPlJldHVybnM8L2I+OiBzdGF0aWNfY2FzdDxwb2ludGVyPih1cHRyKQotICAgLy8hCi0gICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgc3RhdGljIHBvaW50ZXIgc3RhdGljX2Nhc3RfZnJvbShVICp1cHRyKQotICAgeyAgcmV0dXJuIHN0YXRpY19jYXN0PHBvaW50ZXI+KHVwdHIpOyAgfQotCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IGNvbnN0X2Nhc3Q8cG9pbnRlcj4odXB0cikKLSAgIC8vIQotICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgIHN0YXRpYyBwb2ludGVyIGNvbnN0X2Nhc3RfZnJvbShVICp1cHRyKQotICAgeyAgcmV0dXJuIGNvbnN0X2Nhc3Q8cG9pbnRlcj4odXB0cik7ICB9Ci0KLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogZHluYW1pY19jYXN0PHBvaW50ZXI+KHVwdHIpCi0gICAvLyEKLSAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICBzdGF0aWMgcG9pbnRlciBkeW5hbWljX2Nhc3RfZnJvbShVICp1cHRyKQotICAgeyAgcmV0dXJuIGR5bmFtaWNfY2FzdDxwb2ludGVyPih1cHRyKTsgIH0KLX07Ci0KLX0gIC8vbmFtZXNwYWNlIGNvbnRhaW5lciB7Ci19ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8gISBkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9QT0lOVEVSX1RSQUlUU19IUFApCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvL2RldGFpbC9xdW90ZWRfbWFuaXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pby9kZXRhaWwvcXVvdGVkX21hbmlwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI3OTA5Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvL2RldGFpbC9xdW90ZWRfbWFuaXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLS8vICBuZG5ib29zdC9pby9xdW90ZWRfbWFuaXAuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMTAKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLS8vICBMaWJyYXJ5IGhvbWUgcGFnZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAKLQotI2lmbmRlZiBORE5CT09TVF9JT19RVU9URURfTUFOSVAKLSNkZWZpbmUgTkROQk9PU1RfSU9fUVVPVEVEX01BTklQCi0KLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8aW9zPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxuZG5ib29zdC9pby9pb3Nfc3RhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgbmFtZXNwYWNlIGlvCi0gIHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsgdGVtcGxhdGUgPGNsYXNzIFN0cmluZywgY2xhc3MgQ2hhcj4gc3RydWN0IHF1b3RlZF9wcm94eTsgfQotCi0gICAgLy8gIC0tLS0tLS0tLS0tLSAgcHVibGljIGludGVyZmFjZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vICBtYW5pcHVsYXRvciBmb3IgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmcmCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgICBkZXRhaWw6OnF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiBjb25zdCAmLCBDaGFyPgotICAgICAgICBxdW90ZWQoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4mIHMsCi0gICAgICAgICAgICAgICBDaGFyIGVzY2FwZT0nXFwnLCBDaGFyIGRlbGltPSdcIicpOwotCi0gICAgLy8gIG1hbmlwdWxhdG9yIGZvciBub24tY29uc3Qgc3RkOjpiYXNpY19zdHJpbmcmCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgICBkZXRhaWw6OnF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiAmLCBDaGFyPgotICAgICAgICBxdW90ZWQoc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4mIHMsCi0gICAgICAgICAgICAgICBDaGFyIGVzY2FwZT0nXFwnLCBDaGFyIGRlbGltPSdcIicpOwotCi0gICAgLy8gIG1hbmlwdWxhdG9yIGZvciBjb25zdCBDLXN0cmluZyoKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhcj4KLSAgICAgIGRldGFpbDo6cXVvdGVkX3Byb3h5PGNvbnN0IENoYXIqLCBDaGFyPgotICAgICAgICBxdW90ZWQoY29uc3QgQ2hhciogcywgQ2hhciBlc2NhcGU9J1xcJywgQ2hhciBkZWxpbT0nXCInKTsKLQotICAgIC8vICAtLS0tLS0tLS0tLSAgaW1wbGVtZW50YXRpb24gZGV0YWlscyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBuYW1lc3BhY2UgZGV0YWlsCi0gICAgewotICAgICAgLy8gIHByb3h5IHVzZWQgYXMgYW4gYXJndW1lbnQgcGFjayAKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBTdHJpbmcsIGNsYXNzIENoYXI+Ci0gICAgICBzdHJ1Y3QgcXVvdGVkX3Byb3h5Ci0gICAgICB7Ci0gICAgICAgIFN0cmluZyAgc3RyaW5nOwotICAgICAgICBDaGFyICAgIGVzY2FwZTsKLSAgICAgICAgQ2hhciAgICBkZWxpbTsKLQotICAgICAgICBxdW90ZWRfcHJveHkoU3RyaW5nIHNfLCBDaGFyIGVzY2FwZV8sIENoYXIgZGVsaW1fKQotICAgICAgICAgIDogc3RyaW5nKHNfKSwgZXNjYXBlKGVzY2FwZV8pLCBkZWxpbShkZWxpbV8pIHt9Ci0gICAgICBwcml2YXRlOgotICAgICAgICAvLyBTdHJpbmcgbWF5IGJlIGEgY29uc3QgdHlwZSwgc28gZGlzYWJsZSB0aGUgYXNzaWdubWVudCBvcGVyYXRvcgotICAgICAgICBxdW90ZWRfcHJveHkmIG9wZXJhdG9yPShjb25zdCBxdW90ZWRfcHJveHkmKTsgIC8vID0gZGVsZXRlZAotICAgICAgfTsKLQotICAgICAgLy8gIGFic3RyYWN0IGF3YXkgZGlmZmVyZW5jZSBiZXR3ZWVuIHByb3hpZXMgd2l0aCBjb25zdCBvciBub24tY29uc3QgYmFzaWNfc3RyaW5ncwotICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYKLSAgICAgIGJhc2ljX3N0cmluZ19pbnNlcnRlcl9pbXAoc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIFRyYWl0cz4mIG9zLAotICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiBjb25zdCAmIHN0cmluZywgQ2hhciBlc2NhcGUsIENoYXIgZGVsaW0pCi0gICAgICB7Ci0gICAgICAgIG9zIDw8IGRlbGltOwotICAgICAgICB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgICBlbmRfaXQgPSBzdHJpbmcuZW5kKCk7Ci0gICAgICAgIGZvciAodHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgICAgaXQgPSBzdHJpbmcuYmVnaW4oKTsKLSAgICAgICAgICBpdCAhPSBlbmRfaXQ7Ci0gICAgICAgICAgKytpdCApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoKml0ID09IGRlbGltIHx8ICppdCA9PSBlc2NhcGUpCi0gICAgICAgICAgICBvcyA8PCBlc2NhcGU7Ci0gICAgICAgICAgb3MgPDwgKml0OwotICAgICAgICB9Ci0gICAgICAgIG9zIDw8IGRlbGltOwotICAgICAgICByZXR1cm4gb3M7Ci0gICAgICB9Ci0KLSAgICAgIC8vICBpbnNlcnRlciBmb3IgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmcmIHByb3hpZXMKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jPgotICAgICAgaW5saW5lCi0gICAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3MsIAotICAgICAgICBjb25zdCBxdW90ZWRfcHJveHk8c3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4gY29uc3QgJiwgQ2hhcj4mIHByb3h5KQotICAgICAgewotICAgICAgICByZXR1cm4gYmFzaWNfc3RyaW5nX2luc2VydGVyX2ltcChvcywgcHJveHkuc3RyaW5nLCBwcm94eS5lc2NhcGUsIHByb3h5LmRlbGltKTsKLSAgICAgIH0KLQotICAgICAgLy8gIGluc2VydGVyIGZvciBub24tY29uc3Qgc3RkOjpiYXNpY19zdHJpbmcmIHByb3hpZXMKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jPgotICAgICAgaW5saW5lCi0gICAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3MsIAotICAgICAgICBjb25zdCBxdW90ZWRfcHJveHk8c3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4mLCBDaGFyPiYgcHJveHkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBiYXNpY19zdHJpbmdfaW5zZXJ0ZXJfaW1wKG9zLCBwcm94eS5zdHJpbmcsIHByb3h5LmVzY2FwZSwgcHJveHkuZGVsaW0pOwotICAgICAgfQotIAotICAgICAgLy8gIGluc2VydGVyIGZvciBjb25zdCBDLXN0cmluZyogcHJveGllcwotICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cz4KLSAgICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JiBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JiBvcywgCi0gICAgICAgIGNvbnN0IHF1b3RlZF9wcm94eTxjb25zdCBDaGFyKiwgQ2hhcj4mIHByb3h5KQotICAgICAgewotICAgICAgICBvcyA8PCBwcm94eS5kZWxpbTsKLSAgICAgICAgZm9yIChjb25zdCBDaGFyKiBpdCA9IHByb3h5LnN0cmluZzsKLSAgICAgICAgICAqaXQ7Ci0gICAgICAgICAgKytpdCApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoKml0ID09IHByb3h5LmRlbGltIHx8ICppdCA9PSBwcm94eS5lc2NhcGUpCi0gICAgICAgICAgICBvcyA8PCBwcm94eS5lc2NhcGU7Ci0gICAgICAgICAgb3MgPDwgKml0OwotICAgICAgICB9Ci0gICAgICAgIG9zIDw8IHByb3h5LmRlbGltOwotICAgICAgICByZXR1cm4gb3M7Ci0gICAgICB9Ci0KLSAgICAgIC8vICBleHRyYWN0b3IgZm9yIG5vbi1jb25zdCBzdGQ6OmJhc2ljX3N0cmluZyYgcHJveGllcwotICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhciwgVHJhaXRzPiYgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhciwgVHJhaXRzPiYgaXMsIAotICAgICAgICBjb25zdCBxdW90ZWRfcHJveHk8c3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4mLCBDaGFyPiYgcHJveHkpCi0gICAgICB7Ci0gICAgICAgIHByb3h5LnN0cmluZy5jbGVhcigpOwotICAgICAgICBDaGFyIGM7Ci0gICAgICAgIGlzID4+IGM7Ci0gICAgICAgIGlmIChjICE9IHByb3h5LmRlbGltKQotICAgICAgICB7Ci0gICAgICAgICAgaXMudW5nZXQoKTsKLSAgICAgICAgICBpcyA+PiBwcm94eS5zdHJpbmc7Ci0gICAgICAgICAgcmV0dXJuIGlzOwotICAgICAgICB9Ci0gICAgICAgIHsKLSAgICAgICAgICBuZG5ib29zdDo6aW86Omlvc19mbGFnc19zYXZlciBpZnMoaXMpOwotICAgICAgICAgIGlzID4+IHN0ZDo6bm9za2lwd3M7Ci0gICAgICAgICAgZm9yICg7OykgIAotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlzID4+IGM7Ci0gICAgICAgICAgICBpZiAoIWlzLmdvb2QoKSkgIC8vIGNvcGUgd2l0aCBJL08gZXJyb3JzIG9yIGVuZC1vZi1maWxlCi0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGMgPT0gcHJveHkuZXNjYXBlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpcyA+PiBjOwotICAgICAgICAgICAgICBpZiAoIWlzLmdvb2QoKSkgIC8vIGNvcGUgd2l0aCBJL08gZXJyb3JzIG9yIGVuZC1vZi1maWxlCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09IHByb3h5LmRlbGltKQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHByb3h5LnN0cmluZyArPSBjOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gaXM7Ci0gICAgICB9Ci0KLSAgICB9ICAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgICAvLyAgbWFuaXB1bGF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nJgotICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jPgotICAgIGlubGluZSBkZXRhaWw6OnF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiBjb25zdCAmLCBDaGFyPgotICAgIHF1b3RlZChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiYgcywgQ2hhciBlc2NhcGUsIENoYXIgZGVsaW0pCi0gICAgewotICAgICAgcmV0dXJuIGRldGFpbDo6cXVvdGVkX3Byb3h5PHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2M+IGNvbnN0ICYsIENoYXI+Ci0gICAgICAgIChzLCBlc2NhcGUsIGRlbGltKTsKLSAgICB9Ci0KLSAgICAvLyAgbWFuaXB1bGF0b3IgaW1wbGVtZW50YXRpb24gZm9yIG5vbi1jb25zdCBzdGQ6OmJhc2ljX3N0cmluZyYKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYz4KLSAgICBpbmxpbmUgZGV0YWlsOjpxdW90ZWRfcHJveHk8c3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4gJiwgQ2hhcj4KLSAgICBxdW90ZWQoc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4mIHMsIENoYXIgZXNjYXBlLCBDaGFyIGRlbGltKQotICAgIHsKLSAgICAgIHJldHVybiBkZXRhaWw6OnF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiYsIENoYXI+Ci0gICAgICAgIChzLCBlc2NhcGUsIGRlbGltKTsKLSAgICB9Ci0KLSAgICAvLyAgbWFuaXB1bGF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGNvbnN0IEMtc3RyaW5nKgotICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyPgotICAgIGlubGluZSBkZXRhaWw6OnF1b3RlZF9wcm94eTxjb25zdCBDaGFyKiwgQ2hhcj4KLSAgICBxdW90ZWQoY29uc3QgQ2hhciogcywgQ2hhciBlc2NhcGUsIENoYXIgZGVsaW0pCi0gICAgewotICAgICAgcmV0dXJuIGRldGFpbDo6cXVvdGVkX3Byb3h5PGNvbnN0IENoYXIqLCBDaGFyPiAocywgZXNjYXBlLCBkZWxpbSk7Ci0gICAgfQotCi0gIH0gIC8vIG5hbWVzcGFjZSBpbwotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9JT19RVU9URURfTUFOSVAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW8vaW9zX3N0YXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW8vaW9zX3N0YXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBkODAyYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvL2lvc19zdGF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzkgKzAsMCBAQAotLy8gIEJvb3N0IGlvL2lvc19zdGF0ZS5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCAyMDAyLCAyMDA1IERhcnlsZSBXYWxrZXIuICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbgotLy8gIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gIChTZWUgYWNjb21wYW55aW5nCi0vLyAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgYSBjb3B5IGF0IDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ+LikKLQotLy8gIFNlZSA8aHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pby8+IGZvciB0aGUgbGlicmFyeSdzIGhvbWUgcGFnZS4KLQotI2lmbmRlZiBORE5CT09TVF9JT19JT1NfU1RBVEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0lPX0lPU19TVEFURV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvX2Z3ZC5ocHA+ICAvLyBzZWxmIGluY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxpb3M+ICAgICAgICAvLyBmb3Igc3RkOjppb3NfYmFzZSwgc3RkOjpiYXNpY19pb3MsIGV0Yy4KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotI2luY2x1ZGUgPGxvY2FsZT4gICAgIC8vIGZvciBzdGQ6OmxvY2FsZQotI2VuZGlmCi0jaW5jbHVkZSA8b3N0cmVhbT4gICAgLy8gZm9yIHN0ZDo6YmFzaWNfb3N0cmVhbQotI2luY2x1ZGUgPHN0cmVhbWJ1Zj4gIC8vIGZvciBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZgotI2luY2x1ZGUgPHN0cmluZz4gICAgIC8vIGZvciBzdGQ6OmNoYXJfdHJhaXRzCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci1uYW1lc3BhY2UgaW8KLXsKLQotCi0vLyAgQmFzaWMgc3RyZWFtIHN0YXRlIHNhdmVyIGNsYXNzIGRlY2xhcmF0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1jbGFzcyBpb3NfZmxhZ3Nfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZSAgICAgICAgICAgIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiA6OnN0ZDo6aW9zX2Jhc2U6OmZtdGZsYWdzICBhc3BlY3RfdHlwZTsKLQotICAgIGV4cGxpY2l0ICBpb3NfZmxhZ3Nfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5mbGFncygpICkKLSAgICAgICAge30KLSAgICBpb3NfZmxhZ3Nfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGNvbnN0ICZhICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuZmxhZ3MoYSkgKQotICAgICAgICB7fQotICAgIH5pb3NfZmxhZ3Nfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5mbGFncyggYV9zYXZlXyApOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgIHNfc2F2ZV87Ci0gICAgYXNwZWN0X3R5cGUgY29uc3QgIGFfc2F2ZV87Ci0KLSAgICBpb3NfZmxhZ3Nfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBpb3NfZmxhZ3Nfc2F2ZXImKTsKLX07Ci0KLWNsYXNzIGlvc19wcmVjaXNpb25fc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZSAgICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgOjpzdGQ6OnN0cmVhbXNpemUgIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGlvc19wcmVjaXNpb25fc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5wcmVjaXNpb24oKSApCi0gICAgICAgIHt9Ci0gICAgaW9zX3ByZWNpc2lvbl9zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5wcmVjaXNpb24oYSkgKQotICAgICAgICB7fQotICAgIH5pb3NfcHJlY2lzaW9uX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8ucHJlY2lzaW9uKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLQotICAgIGlvc19wcmVjaXNpb25fc2F2ZXImIG9wZXJhdG9yPShjb25zdCBpb3NfcHJlY2lzaW9uX3NhdmVyJik7Ci19OwotCi1jbGFzcyBpb3Nfd2lkdGhfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZSAgICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgOjpzdGQ6OnN0cmVhbXNpemUgIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGlvc193aWR0aF9zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLndpZHRoKCkgKQotICAgICAgICB7fQotICAgIGlvc193aWR0aF9zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy53aWR0aChhKSApCi0gICAgICAgIHt9Ci0gICAgfmlvc193aWR0aF9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICAgICAgeyBzX3NhdmVfLndpZHRoKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLSAgICBpb3Nfd2lkdGhfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBpb3Nfd2lkdGhfc2F2ZXImKTsKLX07Ci0KLQotLy8gIEFkdmFuY2VkIHN0cmVhbSBzdGF0ZSBzYXZlciBjbGFzcyB0ZW1wbGF0ZSBkZWNsYXJhdGlvbnMgIC0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBDaCwgY2xhc3MgVHIgPgotY2xhc3MgYmFzaWNfaW9zX2lvc3RhdGVfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjpiYXNpY19pb3M8Q2gsIFRyPiAgc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZTo6aW9zdGF0ZSAgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgYmFzaWNfaW9zX2lvc3RhdGVfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5yZHN0YXRlKCkgKQotICAgICAgICB7fQotICAgIGJhc2ljX2lvc19pb3N0YXRlX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBhc3BlY3RfdHlwZSBjb25zdCAmYSApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLnJkc3RhdGUoKSApCi0gICAgICAgIHsgcy5jbGVhcihhKTsgfQotICAgIH5iYXNpY19pb3NfaW9zdGF0ZV9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICAgICAgeyBzX3NhdmVfLmNsZWFyKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLSAgICBiYXNpY19pb3NfaW9zdGF0ZV9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX2lvc19pb3N0YXRlX3NhdmVyJik7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfZXhjZXB0aW9uX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfaW9zPENoLCBUcj4gIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiA6OnN0ZDo6aW9zX2Jhc2U6Omlvc3RhdGUgIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5leGNlcHRpb25zKCkgKQotICAgICAgICB7fQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODIpKQotICAgIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGEgKQotI2Vsc2UKLSAgICBiYXNpY19pb3NfZXhjZXB0aW9uX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBhc3BlY3RfdHlwZSBjb25zdCAmYSApCi0jZW5kaWYKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuZXhjZXB0aW9ucygpICkKLSAgICAgICAgeyBzLmV4Y2VwdGlvbnMoYSk7IH0KLSAgICB+YmFzaWNfaW9zX2V4Y2VwdGlvbl9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICAgICAgeyBzX3NhdmVfLmV4Y2VwdGlvbnMoIGFfc2F2ZV8gKTsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXImIG9wZXJhdG9yPShjb25zdCBiYXNpY19pb3NfZXhjZXB0aW9uX3NhdmVyJik7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfdGllX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfaW9zPENoLCBUcj4gICAgICAgIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfb3N0cmVhbTxDaCwgVHI+ICogIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGJhc2ljX2lvc190aWVfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy50aWUoKSApCi0gICAgICAgIHt9Ci0gICAgYmFzaWNfaW9zX3RpZV9zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy50aWUoYSkgKQotICAgICAgICB7fQotICAgIH5iYXNpY19pb3NfdGllX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8udGllKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLSAgICBiYXNpY19pb3NfdGllX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfaW9zX3RpZV9zYXZlciYpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBDaCwgY2xhc3MgVHIgPgotY2xhc3MgYmFzaWNfaW9zX3JkYnVmX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfaW9zPENoLCBUcj4gICAgICAgICAgc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIDo6c3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiAqICBhc3BlY3RfdHlwZTsKLQotICAgIGV4cGxpY2l0ICBiYXNpY19pb3NfcmRidWZfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5yZGJ1ZigpICkKLSAgICAgICAge30KLSAgICBiYXNpY19pb3NfcmRidWZfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGNvbnN0ICZhICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMucmRidWYoYSkgKQotICAgICAgICB7fQotICAgIH5iYXNpY19pb3NfcmRidWZfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5yZGJ1ZiggYV9zYXZlXyApOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgIHNfc2F2ZV87Ci0gICAgYXNwZWN0X3R5cGUgY29uc3QgIGFfc2F2ZV87Ci0gICAgYmFzaWNfaW9zX3JkYnVmX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfaW9zX3JkYnVmX3NhdmVyJik7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfZmlsbF9zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6OmJhc2ljX2lvczxDaCwgVHI+ICAgICAgICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RhdGVfdHlwZTo6Y2hhcl90eXBlICBhc3BlY3RfdHlwZTsKLQotICAgIGV4cGxpY2l0ICBiYXNpY19pb3NfZmlsbF9zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLmZpbGwoKSApCi0gICAgICAgIHt9Ci0gICAgYmFzaWNfaW9zX2ZpbGxfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGNvbnN0ICZhICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuZmlsbChhKSApCi0gICAgICAgIHt9Ci0gICAgfmJhc2ljX2lvc19maWxsX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8uZmlsbCggYV9zYXZlXyApOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgIHNfc2F2ZV87Ci0gICAgYXNwZWN0X3R5cGUgY29uc3QgIGFfc2F2ZV87Ci0gICAgYmFzaWNfaW9zX2ZpbGxfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBiYXNpY19pb3NfZmlsbF9zYXZlciYpOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfbG9jYWxlX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfaW9zPENoLCBUcj4gc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIDo6c3RkOjpsb2NhbGUgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBiYXNpY19pb3NfbG9jYWxlX3NhdmVyKCBzdGF0ZV90eXBlICZzICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuZ2V0bG9jKCkgKQotICAgICAgICB7fQotICAgIGJhc2ljX2lvc19sb2NhbGVfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGNvbnN0ICZhICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuaW1idWUoYSkgKQotICAgICAgICB7fQotICAgIH5iYXNpY19pb3NfbG9jYWxlX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8uaW1idWUoIGFfc2F2ZV8gKTsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGJhc2ljX2lvc19sb2NhbGVfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBiYXNpY19pb3NfbG9jYWxlX3NhdmVyJik7Ci19OwotI2VuZGlmCi0KLQotLy8gIFVzZXItZGVmaW5lZCBzdHJlYW0gc3RhdGUgc2F2ZXIgY2xhc3MgZGVjbGFyYXRpb25zICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgaW9zX2l3b3JkX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6aW9zX2Jhc2UgIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgIGluZGV4X3R5cGU7Ci0gICAgdHlwZWRlZiBsb25nICAgICAgICAgICAgIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgaW9zX2l3b3JkX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBpbmRleF90eXBlIGkgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5pd29yZChpKSApLCBpX3NhdmVfKCBpICkKLSAgICAgICAge30KLSAgICBpb3NfaXdvcmRfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGluZGV4X3R5cGUgaSwgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5pd29yZChpKSApLCBpX3NhdmVfKCBpICkKLSAgICAgICAgeyBzLml3b3JkKGkpID0gYTsgfQotICAgIH5pb3NfaXdvcmRfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5pd29yZCggaV9zYXZlXyApID0gYV9zYXZlXzsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGluZGV4X3R5cGUgY29uc3QgICBpX3NhdmVfOwotCi0gICAgaW9zX2l3b3JkX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgaW9zX2l3b3JkX3NhdmVyJik7Ci19OwotCi1jbGFzcyBpb3NfcHdvcmRfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZSAgc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIGludCAgICAgICAgICAgICAgaW5kZXhfdHlwZTsKLSAgICB0eXBlZGVmIHZvaWQgKiAgICAgICAgICAgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgaW9zX3B3b3JkX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBpbmRleF90eXBlIGkgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5wd29yZChpKSApLCBpX3NhdmVfKCBpICkKLSAgICAgICAge30KLSAgICBpb3NfcHdvcmRfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGluZGV4X3R5cGUgaSwgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5wd29yZChpKSApLCBpX3NhdmVfKCBpICkKLSAgICAgICAgeyBzLnB3b3JkKGkpID0gYTsgfQotICAgIH5pb3NfcHdvcmRfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5wd29yZCggaV9zYXZlXyApID0gYV9zYXZlXzsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGluZGV4X3R5cGUgY29uc3QgICBpX3NhdmVfOwotCi0gICAgaW9zX3B3b3JkX3NhdmVyIG9wZXJhdG9yPShjb25zdCBpb3NfcHdvcmRfc2F2ZXImKTsKLX07Ci0KLQotLy8gIENvbWJpbmVkIHN0cmVhbSBzdGF0ZSBzYXZlciBjbGFzcyAodGVtcGxhdGUpIGRlY2xhcmF0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgaW9zX2Jhc2VfYWxsX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6aW9zX2Jhc2UgIHN0YXRlX3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgaW9zX2Jhc2VfYWxsX3NhdmVyKCBzdGF0ZV90eXBlICZzICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGExX3NhdmVfKCBzLmZsYWdzKCkgKSwgYTJfc2F2ZV8oIHMucHJlY2lzaW9uKCkgKQotICAgICAgICAsIGEzX3NhdmVfKCBzLndpZHRoKCkgKQotICAgICAgICB7fQotCi0gICAgfmlvc19iYXNlX2FsbF9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICB7Ci0gICAgICAgIHNfc2F2ZV8ud2lkdGgoIGEzX3NhdmVfICk7Ci0gICAgICAgIHNfc2F2ZV8ucHJlY2lzaW9uKCBhMl9zYXZlXyApOwotICAgICAgICBzX3NhdmVfLmZsYWdzKCBhMV9zYXZlXyApOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgICAgICAgICAgc19zYXZlXzsKLSAgICBzdGF0ZV90eXBlOjpmbXRmbGFncyBjb25zdCAgYTFfc2F2ZV87Ci0gICAgOjpzdGQ6OnN0cmVhbXNpemUgY29uc3QgICAgIGEyX3NhdmVfOwotICAgIDo6c3RkOjpzdHJlYW1zaXplIGNvbnN0ICAgICBhM19zYXZlXzsKLQotICAgIGlvc19iYXNlX2FsbF9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGlvc19iYXNlX2FsbF9zYXZlciYpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBDaCwgY2xhc3MgVHIgPgotY2xhc3MgYmFzaWNfaW9zX2FsbF9zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6OmJhc2ljX2lvczxDaCwgVHI+ICBzdGF0ZV90eXBlOwotCi0gICAgZXhwbGljaXQgIGJhc2ljX2lvc19hbGxfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYTFfc2F2ZV8oIHMuZmxhZ3MoKSApLCBhMl9zYXZlXyggcy5wcmVjaXNpb24oKSApCi0gICAgICAgICwgYTNfc2F2ZV8oIHMud2lkdGgoKSApLCBhNF9zYXZlXyggcy5yZHN0YXRlKCkgKQotICAgICAgICAsIGE1X3NhdmVfKCBzLmV4Y2VwdGlvbnMoKSApLCBhNl9zYXZlXyggcy50aWUoKSApCi0gICAgICAgICwgYTdfc2F2ZV8oIHMucmRidWYoKSApLCBhOF9zYXZlXyggcy5maWxsKCkgKQotICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgICAgICAgLCBhOV9zYXZlXyggcy5nZXRsb2MoKSApCi0gICAgICAgICNlbmRpZgotICAgICAgICB7fQotCi0gICAgfmJhc2ljX2lvc19hbGxfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgewotICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgICAgICAgc19zYXZlXy5pbWJ1ZSggYTlfc2F2ZV8gKTsKLSAgICAgICAgI2VuZGlmCi0gICAgICAgIHNfc2F2ZV8uZmlsbCggYThfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy5yZGJ1ZiggYTdfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy50aWUoIGE2X3NhdmVfICk7Ci0gICAgICAgIHNfc2F2ZV8uZXhjZXB0aW9ucyggYTVfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy5jbGVhciggYTRfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy53aWR0aCggYTNfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy5wcmVjaXNpb24oIGEyX3NhdmVfICk7Ci0gICAgICAgIHNfc2F2ZV8uZmxhZ3MoIGExX3NhdmVfICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzX3NhdmVfOwotICAgIHR5cGVuYW1lIHN0YXRlX3R5cGU6OmZtdGZsYWdzIGNvbnN0ICAgICBhMV9zYXZlXzsKLSAgICA6OnN0ZDo6c3RyZWFtc2l6ZSBjb25zdCAgICAgICAgICAgICAgICAgYTJfc2F2ZV87Ci0gICAgOjpzdGQ6OnN0cmVhbXNpemUgY29uc3QgICAgICAgICAgICAgICAgIGEzX3NhdmVfOwotICAgIHR5cGVuYW1lIHN0YXRlX3R5cGU6Omlvc3RhdGUgY29uc3QgICAgICBhNF9zYXZlXzsKLSAgICB0eXBlbmFtZSBzdGF0ZV90eXBlOjppb3N0YXRlIGNvbnN0ICAgICAgYTVfc2F2ZV87Ci0gICAgOjpzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiAqIGNvbnN0ICAgIGE2X3NhdmVfOwotICAgIDo6c3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiAqIGNvbnN0ICBhN19zYXZlXzsKLSAgICB0eXBlbmFtZSBzdGF0ZV90eXBlOjpjaGFyX3R5cGUgY29uc3QgICAgYThfc2F2ZV87Ci0gICAgI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0gICAgOjpzdGQ6OmxvY2FsZSBjb25zdCAgICAgICAgICAgICAgICAgICAgIGE5X3NhdmVfOwotICAgICNlbmRpZgotCi0gICAgYmFzaWNfaW9zX2FsbF9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX2lvc19hbGxfc2F2ZXImKTsKLX07Ci0KLWNsYXNzIGlvc19hbGxfd29yZF9zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6Omlvc19iYXNlICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgaW50ICAgICAgICAgICAgICBpbmRleF90eXBlOwotCi0gICAgaW9zX2FsbF93b3JkX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBpbmRleF90eXBlIGkgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgaV9zYXZlXyggaSApLCBhMV9zYXZlXyggcy5pd29yZChpKSApCi0gICAgICAgICwgYTJfc2F2ZV8oIHMucHdvcmQoaSkgKQotICAgICAgICB7fQotCi0gICAgfmlvc19hbGxfd29yZF9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICB7Ci0gICAgICAgIHNfc2F2ZV8ucHdvcmQoIGlfc2F2ZV8gKSA9IGEyX3NhdmVfOwotICAgICAgICBzX3NhdmVfLml3b3JkKCBpX3NhdmVfICkgPSBhMV9zYXZlXzsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgc19zYXZlXzsKLSAgICBpbmRleF90eXBlIGNvbnN0ICBpX3NhdmVfOwotICAgIGxvbmcgY29uc3QgICAgICAgIGExX3NhdmVfOwotICAgIHZvaWQgKiBjb25zdCAgICAgIGEyX3NhdmVfOwotCi0gICAgaW9zX2FsbF93b3JkX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgaW9zX2FsbF93b3JkX3NhdmVyJik7Ci19OwotCi0KLX0gIC8vIG5hbWVzcGFjZSBpbwotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9JT19JT1NfU1RBVEVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NWE1OGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLy8gIEJvb3N0IGlvX2Z3ZC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCAyMDAyIERhcnlsZSBXYWxrZXIuICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdAotLy8gIHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgYSBjb3B5IGF0IDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ+LikKLQotLy8gIFNlZSA8aHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pby8+IGZvciB0aGUgbGlicmFyeSdzIGhvbWUgcGFnZS4KLQotI2lmbmRlZiBORE5CT09TVF9JT19GV0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0lPX0ZXRF9IUFAKLQotI2luY2x1ZGUgPGlvc2Z3ZD4gIC8vIGZvciBzdGQ6OmNoYXJfdHJhaXRzIChkZWNsYXJhdGlvbikKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLW5hbWVzcGFjZSBpbwotewotCi0KLS8vICBGcm9tIDxuZG5ib29zdC9pby9pb3Nfc3RhdGUuaHBwPiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWNsYXNzIGlvc19mbGFnc19zYXZlcjsKLWNsYXNzIGlvc19wcmVjaXNpb25fc2F2ZXI7Ci1jbGFzcyBpb3Nfd2lkdGhfc2F2ZXI7Ci1jbGFzcyBpb3NfYmFzZV9hbGxfc2F2ZXI7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID0gOjpzdGQ6OmNoYXJfdHJhaXRzPENoPiA+Ci0gICAgY2xhc3MgYmFzaWNfaW9zX2lvc3RhdGVfc2F2ZXI7Ci10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA9IDo6c3RkOjpjaGFyX3RyYWl0czxDaD4gPgotICAgIGNsYXNzIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXI7Ci10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA9IDo6c3RkOjpjaGFyX3RyYWl0czxDaD4gPgotICAgIGNsYXNzIGJhc2ljX2lvc190aWVfc2F2ZXI7Ci10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA9IDo6c3RkOjpjaGFyX3RyYWl0czxDaD4gPgotICAgIGNsYXNzIGJhc2ljX2lvc19yZGJ1Zl9zYXZlcjsKLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID0gOjpzdGQ6OmNoYXJfdHJhaXRzPENoPiA+Ci0gICAgY2xhc3MgYmFzaWNfaW9zX2ZpbGxfc2F2ZXI7Ci10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA9IDo6c3RkOjpjaGFyX3RyYWl0czxDaD4gPgotICAgIGNsYXNzIGJhc2ljX2lvc19sb2NhbGVfc2F2ZXI7Ci10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA9IDo6c3RkOjpjaGFyX3RyYWl0czxDaD4gPgotICAgIGNsYXNzIGJhc2ljX2lvc19hbGxfc2F2ZXI7Ci0KLXR5cGVkZWYgYmFzaWNfaW9zX2lvc3RhdGVfc2F2ZXI8Y2hhcj4gICAgICAgIGlvc19pb3N0YXRlX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfaW9zdGF0ZV9zYXZlcjx3Y2hhcl90PiAgICB3aW9zX2lvc3RhdGVfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXI8Y2hhcj4gICAgICBpb3NfZXhjZXB0aW9uX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfZXhjZXB0aW9uX3NhdmVyPHdjaGFyX3Q+ICB3aW9zX2V4Y2VwdGlvbl9zYXZlcjsKLXR5cGVkZWYgYmFzaWNfaW9zX3RpZV9zYXZlcjxjaGFyPiAgICAgICAgICAgIGlvc190aWVfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc190aWVfc2F2ZXI8d2NoYXJfdD4gICAgICAgIHdpb3NfdGllX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfcmRidWZfc2F2ZXI8Y2hhcj4gICAgICAgICAgaW9zX3JkYnVmX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfcmRidWZfc2F2ZXI8d2NoYXJfdD4gICAgICB3aW9zX3JkYnVmX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfZmlsbF9zYXZlcjxjaGFyPiAgICAgICAgICAgaW9zX2ZpbGxfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19maWxsX3NhdmVyPHdjaGFyX3Q+ICAgICAgIHdpb3NfZmlsbF9zYXZlcjsKLXR5cGVkZWYgYmFzaWNfaW9zX2xvY2FsZV9zYXZlcjxjaGFyPiAgICAgICAgIGlvc19sb2NhbGVfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19sb2NhbGVfc2F2ZXI8d2NoYXJfdD4gICAgIHdpb3NfbG9jYWxlX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfYWxsX3NhdmVyPGNoYXI+ICAgICAgICAgICAgaW9zX2FsbF9zYXZlcjsKLXR5cGVkZWYgYmFzaWNfaW9zX2FsbF9zYXZlcjx3Y2hhcl90PiAgICAgICAgd2lvc19hbGxfc2F2ZXI7Ci0KLWNsYXNzIGlvc19pd29yZF9zYXZlcjsKLWNsYXNzIGlvc19wd29yZF9zYXZlcjsKLWNsYXNzIGlvc19hbGxfd29yZF9zYXZlcjsKLQotCi19ICAvLyBuYW1lc3BhY2UgaW8KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfSU9fRldEX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVhNDI1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQ29udGFpbnMgY2F0ZWdvcnkgYW5kIG1vZGUgdGFncyBmb3IgY2xhc3NpZnlpbmcgZmlsdGVycywgZGV2aWNlcyBhbmQgCi0vLyBzdGFuZGFyZCBzdHJlYW0gYW5kIHN0cmVhbSBidWZmZXJzIHR5cGVzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DQVRFR09SSUVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ0FURUdPUklFU19IUFBfSU5DTFVERUQgCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1UYWdzIGZvciBkaXNwYXRjaCBhY2NvcmRpbmcgdG8gaS9vIG1vZGUtLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotc3RydWN0IGFueV90YWcgeyB9OwotbmFtZXNwYWNlIGRldGFpbCB7IHN0cnVjdCB0d29fc2VxdWVuY2UgOiB2aXJ0dWFsIGFueV90YWcgeyB9OyB9Ci1uYW1lc3BhY2UgZGV0YWlsIHsgc3RydWN0IHJhbmRvbV9hY2Nlc3MgOiB2aXJ0dWFsIGFueV90YWcgeyB9OyB9Ci1uYW1lc3BhY2UgZGV0YWlsIHsgc3RydWN0IG9uZV9oZWFkIDogdmlydHVhbCBhbnlfdGFnIHsgfTsgfQotbmFtZXNwYWNlIGRldGFpbCB7IHN0cnVjdCB0d29faGVhZCA6IHZpcnR1YWwgYW55X3RhZyB7IH07IH0KLXN0cnVjdCBpbnB1dCA6IHZpcnR1YWwgYW55X3RhZyB7IH07Ci1zdHJ1Y3Qgb3V0cHV0IDogdmlydHVhbCBhbnlfdGFnIHsgfTsKLXN0cnVjdCBiaWRpcmVjdGlvbmFsIDogdmlydHVhbCBpbnB1dCwgdmlydHVhbCBvdXRwdXQsIGRldGFpbDo6dHdvX3NlcXVlbmNlIHsgfTsKLXN0cnVjdCBkdWFsX3VzZSA6IHZpcnR1YWwgaW5wdXQsIHZpcnR1YWwgb3V0cHV0IHsgfTsgLy8gUHNldWRvLW1vZGUuCi1zdHJ1Y3QgaW5wdXRfc2Vla2FibGUgOiB2aXJ0dWFsIGlucHV0LCB2aXJ0dWFsIGRldGFpbDo6cmFuZG9tX2FjY2VzcyB7IH07Ci1zdHJ1Y3Qgb3V0cHV0X3NlZWthYmxlIDogdmlydHVhbCBvdXRwdXQsIHZpcnR1YWwgZGV0YWlsOjpyYW5kb21fYWNjZXNzIHsgfTsKLXN0cnVjdCBzZWVrYWJsZQotICAgIDogdmlydHVhbCBpbnB1dF9zZWVrYWJsZSwgCi0gICAgICB2aXJ0dWFsIG91dHB1dF9zZWVrYWJsZSwKLSAgICAgIGRldGFpbDo6b25lX2hlYWQKLSAgICB7IH07Ci1zdHJ1Y3QgZHVhbF9zZWVrYWJsZQotICAgIDogdmlydHVhbCBpbnB1dF9zZWVrYWJsZSwKLSAgICAgIHZpcnR1YWwgb3V0cHV0X3NlZWthYmxlLAotICAgICAgZGV0YWlsOjp0d29faGVhZAotICAgIHsgfTsgIAotc3RydWN0IGJpZGlyZWN0aW9uYWxfc2Vla2FibGUKLSAgICA6IGlucHV0X3NlZWthYmxlLCBvdXRwdXRfc2Vla2FibGUsCi0gICAgICBiaWRpcmVjdGlvbmFsLCBkZXRhaWw6OnR3b19oZWFkCi0gICAgeyB9OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVRhZ3MgZm9yIHVzZSBhcyBpL28gY2F0ZWdvcmllcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1zdHJ1Y3QgZGV2aWNlX3RhZyA6IHZpcnR1YWwgYW55X3RhZyB7IH07Ci1zdHJ1Y3QgZmlsdGVyX3RhZyA6IHZpcnR1YWwgYW55X3RhZyB7IH07Ci0KLSAgICAvLyAKLSAgICAvLyBUYWdzIGZvciBvcHRpb25hbCBiZWhhdmlvci4KLSAgICAvLwotCi1zdHJ1Y3QgcGVla2FibGVfdGFnIDogdmlydHVhbCBhbnlfdGFnIHsgfTsgICAgICAgIC8vIERldmljZXMuCi1zdHJ1Y3QgY2xvc2FibGVfdGFnIDogdmlydHVhbCBhbnlfdGFnIHsgfTsKLXN0cnVjdCBmbHVzaGFibGVfdGFnIDogdmlydHVhbCBhbnlfdGFnIHsgfTsKLXN0cnVjdCBsb2NhbGl6YWJsZV90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9Owotc3RydWN0IG9wdGltYWxseV9idWZmZXJlZF90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9Owotc3RydWN0IGRpcmVjdF90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9OyAgICAgICAgICAvLyBEZXZpY2VzLgotc3RydWN0IG11bHRpY2hhcl90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9OyAgICAgICAvLyBGaWx0ZXJzLgotCi1zdHJ1Y3Qgc291cmNlX3RhZyA6IGRldmljZV90YWcsIGlucHV0IHsgfTsKLXN0cnVjdCBzaW5rX3RhZyA6IGRldmljZV90YWcsIG91dHB1dCB7IH07Ci1zdHJ1Y3QgYmlkaXJlY3Rpb25hbF9kZXZpY2VfdGFnIDogZGV2aWNlX3RhZywgYmlkaXJlY3Rpb25hbCB7IH07Ci1zdHJ1Y3Qgc2Vla2FibGVfZGV2aWNlX3RhZyA6IHZpcnR1YWwgZGV2aWNlX3RhZywgc2Vla2FibGUgeyB9OwotCi1zdHJ1Y3QgaW5wdXRfZmlsdGVyX3RhZyA6IGZpbHRlcl90YWcsIGlucHV0IHsgfTsKLXN0cnVjdCBvdXRwdXRfZmlsdGVyX3RhZyA6IGZpbHRlcl90YWcsIG91dHB1dCB7IH07Ci1zdHJ1Y3QgYmlkaXJlY3Rpb25hbF9maWx0ZXJfdGFnIDogZmlsdGVyX3RhZywgYmlkaXJlY3Rpb25hbCB7IH07Ci1zdHJ1Y3Qgc2Vla2FibGVfZmlsdGVyX3RhZyA6IGZpbHRlcl90YWcsIHNlZWthYmxlIHsgfTsKLXN0cnVjdCBkdWFsX3VzZV9maWx0ZXJfdGFnIDogZmlsdGVyX3RhZywgZHVhbF91c2UgeyB9OwotCi1zdHJ1Y3QgbXVsdGljaGFyX2lucHV0X2ZpbHRlcl90YWcKLSAgICA6IG11bHRpY2hhcl90YWcsCi0gICAgICBpbnB1dF9maWx0ZXJfdGFnCi0gICAgeyB9Owotc3RydWN0IG11bHRpY2hhcl9vdXRwdXRfZmlsdGVyX3RhZwotICAgIDogbXVsdGljaGFyX3RhZywKLSAgICAgIG91dHB1dF9maWx0ZXJfdGFnCi0gICAgeyB9Owotc3RydWN0IG11bHRpY2hhcl9iaWRpcmVjdGlvbmFsX2ZpbHRlcl90YWcKLSAgICA6IG11bHRpY2hhcl90YWcsCi0gICAgICBiaWRpcmVjdGlvbmFsX2ZpbHRlcl90YWcKLSAgICB7IH07Ci1zdHJ1Y3QgbXVsdGljaGFyX3NlZWthYmxlX2ZpbHRlcl90YWcKLSAgICA6IG11bHRpY2hhcl90YWcsCi0gICAgICBzZWVrYWJsZV9maWx0ZXJfdGFnCi0gICAgeyB9Owotc3RydWN0IG11bHRpY2hhcl9kdWFsX3VzZV9maWx0ZXJfdGFnIAotICAgIDogbXVsdGljaGFyX3RhZywgCi0gICAgICBkdWFsX3VzZV9maWx0ZXJfdGFnCi0gICAgeyB9OwotCi0gICAgLy8KLSAgICAvLyBUYWdzIGZvciBzdGFuZGFyZCBzdHJlYW1zIGFuZCBzdHJlYW1idWZzLgotICAgIC8vCi0KLXN0cnVjdCBzdGRfaW9fdGFnIDogdmlydHVhbCBsb2NhbGl6YWJsZV90YWcgeyB9Owotc3RydWN0IGlzdHJlYW1fdGFnCi0gICAgOiB2aXJ0dWFsIGRldmljZV90YWcsCi0gICAgICB2aXJ0dWFsIHBlZWthYmxlX3RhZywKLSAgICAgIHZpcnR1YWwgc3RkX2lvX3RhZwotICAgIHsgfTsKLXN0cnVjdCBvc3RyZWFtX3RhZwotICAgIDogdmlydHVhbCBkZXZpY2VfdGFnLAotICAgICAgdmlydHVhbCBzdGRfaW9fdGFnCi0gICAgeyB9Owotc3RydWN0IGlvc3RyZWFtX3RhZwotICAgIDogaXN0cmVhbV90YWcsCi0gICAgICBvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBzdHJlYW1idWZfdGFnCi0gICAgOiBkZXZpY2VfdGFnLAotICAgICAgcGVla2FibGVfdGFnLAotICAgICAgc3RkX2lvX3RhZwotICAgIHsgfTsKLXN0cnVjdCBpZnN0cmVhbV90YWcKLSAgICA6IGlucHV0X3NlZWthYmxlLAotICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgaXN0cmVhbV90YWcKLSAgICB7IH07Ci1zdHJ1Y3Qgb2ZzdHJlYW1fdGFnCi0gICAgOiBvdXRwdXRfc2Vla2FibGUsCi0gICAgICBjbG9zYWJsZV90YWcsCi0gICAgICBvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBmc3RyZWFtX3RhZwotICAgIDogc2Vla2FibGUsCi0gICAgICBjbG9zYWJsZV90YWcsCi0gICAgICBpb3N0cmVhbV90YWcKLSAgICB7IH07Ci1zdHJ1Y3QgZmlsZWJ1Zl90YWcKLSAgICA6IHNlZWthYmxlLAotICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgc3RyZWFtYnVmX3RhZwotICAgIHsgfTsKLXN0cnVjdCBpc3RyaW5nc3RyZWFtX3RhZwotICAgIDogaW5wdXRfc2Vla2FibGUsCi0gICAgICBpc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBvc3RyaW5nc3RyZWFtX3RhZwotICAgIDogb3V0cHV0X3NlZWthYmxlLAotICAgICAgb3N0cmVhbV90YWcKLSAgICB7IH07Ci1zdHJ1Y3Qgc3RyaW5nc3RyZWFtX3RhZwotICAgIDogZHVhbF9zZWVrYWJsZSwKLSAgICAgIGlvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBzdHJpbmdidWZfdGFnCi0gICAgOiBkdWFsX3NlZWthYmxlLAotICAgICAgc3RyZWFtYnVmX3RhZwotICAgIHsgfTsKLXN0cnVjdCBnZW5lcmljX2lzdHJlYW1fdGFnIAotICAgIDogaW5wdXRfc2Vla2FibGUsCi0gICAgICBpc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBnZW5lcmljX29zdHJlYW1fdGFnIAotICAgIDogb3V0cHV0X3NlZWthYmxlLAotICAgICAgb3N0cmVhbV90YWcKLSAgICB7IH07Ci1zdHJ1Y3QgZ2VuZXJpY19pb3N0cmVhbV90YWcgCi0gICAgOiBzZWVrYWJsZSwKLSAgICAgIGlvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBnZW5lcmljX3N0cmVhbWJ1Zl90YWcgCi0gICAgOiBzZWVrYWJsZSwKLSAgICAgIHN0cmVhbWJ1Zl90YWcKLSAgICB7IH07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0FURUdPUklFU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NoYWluLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NoYWluLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBmYWM0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGFpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OTggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPGV4Y2VwdGlvbj4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuYXJ5X2Z1bmN0aW9uLgotI2luY2x1ZGUgPGl0ZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWR2YW5jZS4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLCBhdXRvX3B0ci4KLSNpbmNsdWRlIDx0eXBlaW5mbz4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljX2Vycm9yLCBvdXRfb2ZfcmFuZ2UuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfTVNWQywgdGVtcGxhdGUgZnJpZW5kcywKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+ICAgICAgICAgIC8vIE5ETkJPT1NUX05FU1RFRF9URU1QTEFURSAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FjY2Vzc19jb250cm9sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcD4gLy8gcHVic3luYy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL251bGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+ICAgICAgICAgICAvLyBpc19maWx0ZXIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3N0cmVhbV9idWZmZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHA+ICAgLy8gVkM2LjUgcmVxdWlyZXMgdGhpcwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKSAgICAgICAgLy8gI2luY2x1ZGUgb3JkZXIKLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jZW5kaWYKLQotLy8gU29tZXRpbWVzIHR5cGVfaW5mbyBvYmplY3RzIG11c3QgYmUgY29tcGFyZWQgYnkgbmFtZS4gQm9ycm93ZWQgZnJvbQotLy8gQm9vc3QuUHl0aG9uIGFuZCBCb29zdC5GdW5jdGlvbi4KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gMykgfHwgXAotICAgICBkZWZpbmVkKF9BSVgpIHx8IFwKLSAgICAoZGVmaW5lZChfX3NnaSkgJiYgZGVmaW5lZChfX2hvc3RfbWlwcykpIHx8IFwKLSAgICAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSAmJiBkZWZpbmVkKF9fSUNDKSkgXAotICAgIC8qKi8KLSMgaW5jbHVkZSA8Y3N0cmluZz4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT01QQVJFX1RZUEVfSUQoWCxZKSBcCi0gICAgIChzdGQ6OnN0cmNtcCgoWCkubmFtZSgpLChZKS5uYW1lKCkpID09IDApCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPTVBBUkVfVFlQRV9JRChYLFkpICgoWCk9PShZKSkKLSNlbmRpZgotCi0vLyBEZXByZWNhdGVkCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT01QT05FTlRfVFlQRShjaGFpbiwgaW5kZXgpIFwKLSAgICBjaGFpbi5jb21wb25lbnRfdHlwZSggaW5kZXggKSBcCi0gICAgLyoqLwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPTVBPTkVOVChjaGFpbiwgaW5kZXgsIHRhcmdldCkgXAotICAgIGNoYWluLmNvbXBvbmVudDwgdGFyZ2V0ID4oIGluZGV4ICkgXAotICAgIC8qKi8KLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09NUE9ORU5UKGNoYWluLCBpbmRleCwgdGFyZ2V0KSBcCi0gICAgY2hhaW4uY29tcG9uZW50KCBpbmRleCwgOjpuZG5ib29zdDo6dHlwZTwgdGFyZ2V0ID4oKSApIFwKLSAgICAvKiovCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNoYWluIGFuZCB3Y2hhaW4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFpbj4gY2xhc3MgY2hhaW5fY2xpZW50OwotCi0vLwotLy8gQ29uY2VwdCBuYW1lOiBDaGFpbi4KLS8vIERlc2NyaXB0aW9uOiBSZXByZXNlbnRzIGEgY2hhaW4gb2Ygc3RyZWFtIGJ1ZmZlcnMgd2hpY2ggcHJvdmlkZXMgYWNjZXNzCi0vLyAgICAgdG8gdGhlIGZpcnN0IGJ1ZmZlciBpbiB0aGUgY2hhaW4gYW5kIHNlbmRzIG5vdGlmaWNhdGlvbnMgd2hlbiB0aGUKLS8vICAgICBzdHJlYW1idWZzIGFyZSBhZGRlZCB0byBvciByZW1vdmVkIGZyb20gY2hhaW4uCi0vLyBSZWZpbmVzOiBDbG9zYWJsZSBkZXZpY2Ugd2l0aCBtb2RlIGVxdWFsIHRvIHR5cGVuYW1lIENoYWluOjptb2RlLgotLy8gTW9kZWxzOiBjaGFpbiwgY29udmVydGluZ19jaGFpbi4KLS8vIEV4YW1wbGU6Ci0vLwotLy8gICAgY2xhc3MgY2hhaW4gewotLy8gICAgcHVibGljOgotLy8gICAgICAgIHR5cGVkZWYgeHh4IGNoYWluX3R5cGU7Ci0vLyAgICAgICAgdHlwZWRlZiB4eHggY2xpZW50X3R5cGU7Ci0vLyAgICAgICAgdHlwZWRlZiB4eHggbW9kZTsKLS8vICAgICAgICBib29sIGlzX2NvbXBsZXRlKCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgLy8gUmVhZHkgZm9yIGkvby4KLS8vICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotLy8gICAgICAgIHZvaWQgcHVzaCggY29uc3QgVCYgdCwgICAgICAgICAgICAgICAgICAgICAvLyBBZGRzIGEgc3RyZWFtIGJ1ZmZlciB0bwotLy8gICAgICAgICAgICAgICAgICAgc3RyZWFtc2l6ZSwgICAgICAgICAgICAgICAgICAgICAvLyBjaGFpbiwgYmFzZWQgb24gdCwgd2l0aAotLy8gICAgICAgICAgICAgICAgICAgc3RyZWFtc2l6ZSApOyAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiBidWZmZXIgYW5kIHB1dGJhY2sKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIHNpemVzLiBQYXNzIC0xIHRvCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QgZGVmYXVsdCBzaXplLgotLy8gICAgcHJvdGVjdGVkOgotLy8gICAgICAgIHZvaWQgcmVnaXN0ZXJfY2xpZW50KGNsaWVudF90eXBlKiBjbGllbnQpOyAvLyBBc3NvY2lhdGUgY2xpZW50LgotLy8gICAgICAgIHZvaWQgbm90aWZ5KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RpZnkgY2xpZW50LgotLy8gICAgfTsKLS8vCi0KLS8vCi0vLyBEZXNjcmlwdGlvbjogUmVwcmVzZW50cyBhIGNoYWluIG9mIGZpbHRlcnMgd2l0aCBhbiBvcHRpb25hbCBkZXZpY2UgYXQgdGhlCi0vLyAgICAgIGVuZC4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIFNlbGYgLSBBIGNsYXNzIGRlcml2aW5nIGZyb20gdGhlIGN1cnJlbnQgaW5zdGFudGlhdGlvbiBvZiB0aGlzIHRlbXBsYXRlLgotLy8gICAgICAgICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIHRoZSBDdXJpb3VzbHkgUmVjdXJyaW5nIFRlbXBsYXRlIFBhdHRlcm4uCi0vLyAgICAgIENoIC0gVGhlIGNoYXJhY3RlciB0eXBlLgotLy8gICAgICBUciAtIFRoZSBjaGFyYWN0ZXIgdHJhaXRzIHR5cGUuCi0vLyAgICAgIEFsbG9jIC0gVGhlIGFsbG9jYXRvciB0eXBlLgotLy8gICAgICBNb2RlIC0gQSBtb2RlIHRhZy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotY2xhc3MgY2hhaW5fYmFzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTUJVRl9UWVBFREVGUyhUcikKLSAgICB0eXBlZGVmIEFsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlOwotICAgIHR5cGVkZWYgTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBNb2RlLAotICAgICAgICAgIGRldmljZV90YWcKLSAgICAgICAgeyB9OwotICAgIHR5cGVkZWYgY2hhaW5fY2xpZW50PFNlbGY+ICAgICAgICAgICAgICAgICAgICAgY2xpZW50X3R5cGU7Ci0gICAgZnJpZW5kIGNsYXNzIGNoYWluX2NsaWVudDxTZWxmPjsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBsaW5rZWRfc3RyZWFtYnVmPENoPiAgICAgICAgICAgICAgICAgICBzdHJlYW1idWZfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6bGlzdDxzdHJlYW1idWZfdHlwZSo+ICAgICAgICAgICAgIGxpc3RfdHlwZTsKLSAgICB0eXBlZGVmIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT4gIG15X3R5cGU7Ci1wcm90ZWN0ZWQ6Ci0gICAgY2hhaW5fYmFzZSgpIDogcGltcGxfKG5ldyBjaGFpbl9pbXBsKSB7IH0KLSAgICBjaGFpbl9iYXNlKGNvbnN0IGNoYWluX2Jhc2UmIHJocyk6IHBpbXBsXyhyaHMucGltcGxfKSB7IH0KLXB1YmxpYzoKLQotICAgIC8vIGR1YWxfdXNlIGlzIGEgcHNldWRvLW1vZGUgdG8gZmFjaWxpdGF0ZSBmaWx0ZXIgd3JpdGluZywgCi0gICAgLy8gbm90IGEgZ2VudWluZSBtb2RlLgotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxtb2RlLCBkdWFsX3VzZT46OnZhbHVlKSk7Ci0KLSAgICAvLy0tLS0tLS0tLS1CdWZmZXIgc2l6aW5nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyBTZXRzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgY3JlYXRlZCBmb3IgdGhlIGRldmljZXMgdG8gYmUgYWRkZWQgdG8gdGhpcwotICAgIC8vIGNoYWluLiBEb2VzIG5vdCBhZmZlY3QgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBmb3IgZGV2aWNlcyBhbHJlYWR5Ci0gICAgLy8gYWRkZWQuCi0gICAgdm9pZCBzZXRfZGV2aWNlX2J1ZmZlcl9zaXplKHN0ZDo6c3RyZWFtc2l6ZSBuKSAKLSAgICAgICAgeyBwaW1wbF8tPmRldmljZV9idWZmZXJfc2l6ZV8gPSBuOyB9Ci0KLSAgICAvLyBTZXRzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgY3JlYXRlZCBmb3IgdGhlIGZpbHRlcnMgdG8gYmUgYWRkZWQKLSAgICAvLyB0byB0aGlzIGNoYWluLiBEb2VzIG5vdCBhZmZlY3QgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBmb3IgZmlsdGVycyBhbHJlYWR5Ci0gICAgLy8gYWRkZWQuCi0gICAgdm9pZCBzZXRfZmlsdGVyX2J1ZmZlcl9zaXplKHN0ZDo6c3RyZWFtc2l6ZSBuKSAKLSAgICAgICAgeyBwaW1wbF8tPmZpbHRlcl9idWZmZXJfc2l6ZV8gPSBuOyB9Ci0KLSAgICAvLyBTZXRzIHRoZSBzaXplIG9mIHRoZSBwdXRiYWNrIGJ1ZmZlciBmb3IgZmlsdGVycyBhbmQgZGV2aWNlcyB0byBiZSBhZGRlZAotICAgIC8vIHRvIHRoaXMgY2hhaW4uIERvZXMgbm90IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGZvciBmaWx0ZXJzIG9yCi0gICAgLy8gZGV2aWNlcyBhbHJlYWR5IGFkZGVkLgotICAgIHZvaWQgc2V0X3BiYWNrX3NpemUoc3RkOjpzdHJlYW1zaXplIG4pIAotICAgICAgICB7IHBpbXBsXy0+cGJhY2tfc2l6ZV8gPSBuOyB9Ci0KLSAgICAvLy0tLS0tLS0tLS1EZXZpY2UgaW50ZXJmYWNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2VlayhzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSk7Ci0KLSAgICAvLy0tLS0tLS0tLS1EaXJlY3QgY29tcG9uZW50IGFjY2Vzcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyYgY29tcG9uZW50X3R5cGUoaW50IG4pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihuKSA+PSBzaXplKCkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6b3V0X29mX3JhbmdlKCJiYWQgY2hhaW4gb2Zmc2V0IikpOwotICAgICAgICByZXR1cm4gKCpuZG5ib29zdDo6bmV4dChsaXN0KCkuYmVnaW4oKSwgbikpLT5jb21wb25lbnRfdHlwZSgpOwotICAgIH0KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkKLSAgICAvLyBEZXByZWNhdGVkLgotICAgIHRlbXBsYXRlPGludCBOPgotICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvJiBjb21wb25lbnRfdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGNvbXBvbmVudF90eXBlKE4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIGNvbXBvbmVudChpbnQgbikgY29uc3QgeyByZXR1cm4gY29tcG9uZW50KG4sIG5kbmJvb3N0Ojp0eXBlPFQ+KCkpOyB9Ci0KLSAgICAvLyBEZXByZWNhdGVkLgotICAgIHRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBUPiAKLSAgICBUKiBjb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBjb21wb25lbnQ8VD4oTik7IH0KLSNlbmRpZgotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotICAgIHByaXZhdGU6Ci0jZW5kaWYKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIGNvbXBvbmVudChpbnQgbiwgbmRuYm9vc3Q6OnR5cGU8VD4pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihuKSA+PSBzaXplKCkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6b3V0X29mX3JhbmdlKCJiYWQgY2hhaW4gb2Zmc2V0IikpOwotICAgICAgICBzdHJlYW1idWZfdHlwZSogbGluayA9ICpuZG5ib29zdDo6bmV4dChsaXN0KCkuYmVnaW4oKSwgbik7Ci0gICAgICAgIGlmIChORE5CT09TVF9JT1NUUkVBTVNfQ09NUEFSRV9UWVBFX0lEKGxpbmstPmNvbXBvbmVudF90eXBlKCksIHR5cGVpZChUKSkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KGxpbmstPmNvbXBvbmVudF9pbXBsKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci1wdWJsaWM6Ci0KLSAgICAvLy0tLS0tLS0tLS1Db250YWluZXItbGlrZSBpbnRlcmZhY2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3RfdHlwZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLSAgICBzdHJlYW1idWZfdHlwZSYgZnJvbnQoKSB7IHJldHVybiAqbGlzdCgpLmZyb250KCk7IH0KLSAgICBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0gocHVzaCwgbW9kZSwgY2hhcl90eXBlLCBwdXNoX2ltcGwpCi0gICAgdm9pZCBwb3AoKTsKLSAgICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gbGlzdCgpLmVtcHR5KCk7IH0KLSAgICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGxpc3QoKS5zaXplKCk7IH0KLSAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICAvLy0tLS0tLS0tLS1BZGRpdGlvbmFsIGkvbyBmdW5jdGlvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBjaGFpbiBpcyBub24tZW1wdHkgYW5kIGl0cyBmaW5hbCBsaW5rCi0gICAgLy8gaXMgYSBzb3VyY2Ugb3Igc2luaywgaS5lLiwgaWYgaXQgaXMgcmVhZHkgdG8gcGVyZm9ybSBpL28uCi0gICAgYm9vbCBpc19jb21wbGV0ZSgpIGNvbnN0OwotICAgIGJvb2wgYXV0b19jbG9zZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0X2F1dG9fY2xvc2UoYm9vbCBjbG9zZSk7Ci0gICAgYm9vbCBzeW5jKCkgeyByZXR1cm4gZnJvbnQoKS5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU1lOQygpICE9IC0xOyB9Ci0gICAgYm9vbCBzdHJpY3Rfc3luYygpOwotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgcHVzaF9pbXBsKGNvbnN0IFQmIHQsIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IC0xLCAKLSAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcGJhY2tfc2l6ZSA9IC0xKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPFQ+Ojp0eXBlICBjYXRlZ29yeTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB1bndyYXBfaW9zPFQ+Ojp0eXBlICAgICAgICAgICAgICBjb21wb25lbnRfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBzdHJlYW1fYnVmZmVyPAotICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSksCi0gICAgICAgICAgICAgICAgICAgIEFsbG9jLCBNb2RlCi0gICAgICAgICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtYnVmX3Q7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdF90eXBlOjppdGVyYXRvciAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBNb2RlPjo6dmFsdWUpKTsKLSAgICAgICAgaWYgKGlzX2NvbXBsZXRlKCkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6bG9naWNfZXJyb3IoImNoYWluIGNvbXBsZXRlIikpOwotICAgICAgICBzdHJlYW1idWZfdHlwZSogcHJldiA9ICFlbXB0eSgpID8gbGlzdCgpLmJhY2soKSA6IDA7Ci0gICAgICAgIGJ1ZmZlcl9zaXplID0KLSAgICAgICAgICAgIGJ1ZmZlcl9zaXplICE9IC0xID8KLSAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZSA6Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKHQpOwotICAgICAgICBwYmFja19zaXplID0KLSAgICAgICAgICAgIHBiYWNrX3NpemUgIT0gLTEgPwotICAgICAgICAgICAgICAgIHBiYWNrX3NpemUgOgotICAgICAgICAgICAgICAgIHBpbXBsXy0+cGJhY2tfc2l6ZV87Ci0gICAgICAgIHN0ZDo6YXV0b19wdHI8c3RyZWFtYnVmX3Q+Ci0gICAgICAgICAgICBidWYobmV3IHN0cmVhbWJ1Zl90KHQsIGJ1ZmZlcl9zaXplLCBwYmFja19zaXplKSk7Ci0gICAgICAgIGxpc3QoKS5wdXNoX2JhY2soYnVmLmdldCgpKTsKLSAgICAgICAgYnVmLnJlbGVhc2UoKTsKLSAgICAgICAgaWYgKGlzX2RldmljZTxjb21wb25lbnRfdHlwZT46OnZhbHVlKSB7Ci0gICAgICAgICAgICBwaW1wbF8tPmZsYWdzXyB8PSBmX2NvbXBsZXRlIHwgZl9vcGVuOwotICAgICAgICAgICAgZm9yICggaXRlcmF0b3IgZmlyc3QgPSBsaXN0KCkuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBsaXN0KCkuZW5kKCk7Ci0gICAgICAgICAgICAgICAgICBmaXJzdCAhPSBsYXN0OwotICAgICAgICAgICAgICAgICAgKytmaXJzdCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKCpmaXJzdCktPnNldF9uZWVkc19jbG9zZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChwcmV2KSBwcmV2LT5zZXRfbmV4dChsaXN0KCkuYmFjaygpKTsKLSAgICAgICAgbm90aWZ5KCk7Ci0gICAgfQotCi0gICAgbGlzdF90eXBlJiBsaXN0KCkgeyByZXR1cm4gcGltcGxfLT5saW5rc187IH0KLSAgICBjb25zdCBsaXN0X3R5cGUmIGxpc3QoKSBjb25zdCB7IHJldHVybiBwaW1wbF8tPmxpbmtzXzsgfQotICAgIHZvaWQgcmVnaXN0ZXJfY2xpZW50KGNsaWVudF90eXBlKiBjbGllbnQpIHsgcGltcGxfLT5jbGllbnRfID0gY2xpZW50OyB9Ci0gICAgdm9pZCBub3RpZnkoKSB7IGlmIChwaW1wbF8tPmNsaWVudF8pIHBpbXBsXy0+Y2xpZW50Xy0+bm90aWZ5KCk7IH0KLQotICAgIC8vLS0tLS0tLS0tLU5lc3RlZCBjbGFzc2VzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHN0YXRpYyB2b2lkIGNsb3NlKHN0cmVhbWJ1Zl90eXBlKiBiLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG0pCi0gICAgewotICAgICAgICBpZiAobSA9PSBORE5CT09TVF9JT1M6Om91dCAmJiBpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkKLSAgICAgICAgICAgIGItPk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCk7Ci0gICAgICAgIGItPmNsb3NlKG0pOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHNldF9uZXh0KHN0cmVhbWJ1Zl90eXBlKiBiLCBzdHJlYW1idWZfdHlwZSogbmV4dCkKLSAgICB7IGItPnNldF9uZXh0KG5leHQpOyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYXV0b19jbG9zZShzdHJlYW1idWZfdHlwZSogYiwgYm9vbCBjbG9zZSkKLSAgICB7IGItPnNldF9hdXRvX2Nsb3NlKGNsb3NlKTsgfQotCi0gICAgc3RydWN0IGNsb3NlciAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxzdHJlYW1idWZfdHlwZSosIHZvaWQ+ICB7Ci0gICAgICAgIGNsb3NlcihORE5CT09TVF9JT1M6Om9wZW5tb2RlIG0pIDogbW9kZV8obSkgeyB9Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKSAoc3RyZWFtYnVmX3R5cGUqIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNsb3NlKGIsIG1vZGVfKTsKLSAgICAgICAgfQotICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGVfOwotICAgIH07Ci0gICAgZnJpZW5kIHN0cnVjdCBjbG9zZXI7Ci0KLSAgICBlbnVtIGZsYWdzIHsKLSAgICAgICAgZl9jb21wbGV0ZSA9IDEsCi0gICAgICAgIGZfb3BlbiA9IDIsCi0gICAgICAgIGZfYXV0b19jbG9zZSA9IDQKLSAgICB9OwotCi0gICAgc3RydWN0IGNoYWluX2ltcGwgewotICAgICAgICBjaGFpbl9pbXBsKCkKLSAgICAgICAgICAgIDogY2xpZW50XygwKSwgZGV2aWNlX2J1ZmZlcl9zaXplXyhkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSksCi0gICAgICAgICAgICAgIGZpbHRlcl9idWZmZXJfc2l6ZV8oZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemUpLAotICAgICAgICAgICAgICBwYmFja19zaXplXyhkZWZhdWx0X3BiYWNrX2J1ZmZlcl9zaXplKSwKLSAgICAgICAgICAgICAgZmxhZ3NfKGZfYXV0b19jbG9zZSkKLSAgICAgICAgICAgIHsgfQotICAgICAgICB+Y2hhaW5faW1wbCgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsgY2xvc2UoKTsgfSBjYXRjaCAoLi4uKSB7IH0KLSAgICAgICAgICAgICAgICB0cnkgeyByZXNldCgpOyB9IGNhdGNoICguLi4pIHsgfQotICAgICAgICAgICAgfQotICAgICAgICB2b2lkIGNsb3NlKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoKGZsYWdzXyAmIGZfb3BlbikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBmbGFnc18gJj0gfmZfb3BlbjsKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2J1ZmZlcjwgYmFzaWNfbnVsbF9kZXZpY2U8Q2gsIE1vZGU+ID4gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChmbGFnc18gJiBmX2NvbXBsZXRlKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBudWxsLm9wZW4oYmFzaWNfbnVsbF9kZXZpY2U8Q2gsIE1vZGU+KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2V0X25leHQobGlua3NfLmJhY2soKSwgJm51bGwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGxpbmtzXy5mcm9udCgpLT5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU1lOQygpOwotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpleGVjdXRlX2ZvcmVhY2goCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3NfLnJiZWdpbigpLCBsaW5rc18ucmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZXIoTkROQk9PU1RfSU9TOjppbikKLSAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmV4ZWN1dGVfZm9yZWFjaCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3NfLmJlZ2luKCksIGxpbmtzXy5lbmQoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlcihORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZXhlY3V0ZV9mb3JlYWNoKAotICAgICAgICAgICAgICAgICAgICAgICAgbGlua3NfLmJlZ2luKCksIGxpbmtzXy5lbmQoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZXIoTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB2b2lkIHJlc2V0KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3RfdHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAgZm9yICggaXRlcmF0b3IgZmlyc3QgPSBsaW5rc18uYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gbGlua3NfLmVuZCgpOwotICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ICE9IGxhc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgKytmaXJzdCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoIChmbGFnc18gJiBmX2NvbXBsZXRlKSA9PSAwIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKGZsYWdzXyAmIGZfYXV0b19jbG9zZSkgPT0gMCApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9hdXRvX2Nsb3NlKCpmaXJzdCwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHN0cmVhbWJ1Zl90eXBlKiBidWYgPSAwOwotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYnVmLCAqZmlyc3QpOwotICAgICAgICAgICAgICAgICAgICBkZWxldGUgYnVmOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsaW5rc18uY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBmbGFnc18gJj0gfmZfY29tcGxldGU7Ci0gICAgICAgICAgICAgICAgZmxhZ3NfICY9IH5mX29wZW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGxpc3RfdHlwZSAgICAgICAgbGlua3NfOwotICAgICAgICBjbGllbnRfdHlwZSogICAgIGNsaWVudF87Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAgZGV2aWNlX2J1ZmZlcl9zaXplXywKLSAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfYnVmZmVyX3NpemVfLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBiYWNrX3NpemVfOwotICAgICAgICBpbnQgICAgICAgICAgICAgIGZsYWdzXzsKLSAgICB9OwotICAgIGZyaWVuZCBzdHJ1Y3QgY2hhaW5faW1wbDsKLQotICAgIC8vLS0tLS0tLS0tLU1lbWJlciBkYXRhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotcHJpdmF0ZToKLSAgICBzaGFyZWRfcHRyPGNoYWluX2ltcGw+IHBpbXBsXzsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vCi0vLyBNYWNybzogTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0xfQ0hBSU4obmFtZSwgY2F0ZWdvcnkpCi0vLyBEZXNjcmlwdGlvbjogRGVmaW5lcyBhIHRlbXBsYXRlIGRlcml2ZWQgZnJvbSBjaGFpbl9iYXNlIGFwcHJvcHJpYXRlIGZvciBhCi0vLyAgICAgIHBhcnRpY3VsYXIgaS9vIGNhdGVnb3J5LiBUaGUgdGVtcGxhdGUgaGFzIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKLS8vICAgICAgQ2ggLSBUaGUgY2hhcmFjdGVyIHR5cGUuCi0vLyAgICAgIFRyIC0gVGhlIGNoYXJhY3RlciB0cmFpdHMgdHlwZS4KLS8vICAgICAgQWxsb2MgLSBUaGUgYWxsb2NhdG9yIHR5cGUuCi0vLyBNYWNybyBwYXJhbWV0ZXJzOgotLy8gICAgICBuYW1lXyAtIFRoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZSB0byBiZSBkZWZpbmVkLgotLy8gICAgICBjYXRlZ29yeV8gLSBUaGUgaS9vIGNhdGVnb3J5IG9mIHRoZSB0ZW1wbGF0ZSB0byBiZSBkZWZpbmVkLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0xfQ0hBSU4obmFtZV8sIGRlZmF1bHRfY2hhcl8pIFwKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2ggPSBkZWZhdWx0X2NoYXJfLCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFRyID0gTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKENoKSwgXAotICAgICAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+IFwKLSAgICBjbGFzcyBuYW1lXyA6IHB1YmxpYyBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNoYWluX2Jhc2U8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lXzxNb2RlLCBDaCwgVHIsIEFsbG9jPiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoLCBUciwgQWxsb2MsIE1vZGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgID4gXAotICAgIHsgXAotICAgIHB1YmxpYzogXAotICAgICAgICBzdHJ1Y3QgY2F0ZWdvcnkgOiBkZXZpY2VfdGFnLCBNb2RlIHsgfTsgXAotICAgICAgICB0eXBlZGVmIE1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU7IFwKLSAgICBwcml2YXRlOiBcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjaGFpbl9iYXNlPCBcCi0gICAgICAgICAgICAgICAgICAgIG5hbWVfPE1vZGUsIENoLCBUciwgQWxsb2M+LCBcCi0gICAgICAgICAgICAgICAgICAgIENoLCBUciwgQWxsb2MsIE1vZGUgXAotICAgICAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTsgXAotICAgIHB1YmxpYzogXAotICAgICAgICB0eXBlZGVmIENoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsgXAotICAgICAgICB0eXBlZGVmIFRyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOyBcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBlICAgICAgICAgaW50X3R5cGU7IFwKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6b2ZmX3R5cGUgICAgICAgICBvZmZfdHlwZTsgXAotICAgICAgICBuYW1lXygpIHsgfSBcCi0gICAgICAgIG5hbWVfKGNvbnN0IG5hbWVfJiByaHMpIDogYmFzZV90eXBlKHJocykgeyB9IFwKLSAgICAgICAgbmFtZV8mIG9wZXJhdG9yPShjb25zdCBuYW1lXyYgcmhzKSBcCi0gICAgICAgIHsgYmFzZV90eXBlOjpvcGVyYXRvcj0ocmhzKTsgcmV0dXJuICp0aGlzOyB9IFwKLSAgICB9OyBcCi0gICAgLyoqLwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0xfQ0hBSU4oY2hhaW4sIGNoYXIpCi1ORE5CT09TVF9JT1NUUkVBTVNfREVDTF9DSEFJTih3Y2hhaW4sIHdjaGFyX3QpCi0jdW5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0xfQ0hBSU4KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY2hhaW5fY2xpZW50LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBjaGFpbl9jbGllbnQKLS8vIERlc2NyaXB0aW9uOiBDbGFzcyB3aG9zZSBpbnN0YW5jZXMgcHJvdmlkZSBhY2Nlc3MgdG8gYW4gdW5kZXJseWluZyBjaGFpbgotLy8gICAgICB1c2luZyBhbiBpbnRlcmZhY2Ugc2ltaWxhciB0byB0aGUgY2hhaW5zLgotLy8gU3ViY2xhc3NlczogdGhlIHZhcmlvdXMgc3RyZWFtIGFuZCBzdHJlYW0gYnVmZmVyIHRlbXBsYXRlcy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFpbj4KLWNsYXNzIGNoYWluX2NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDaGFpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhaW5fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYWluX3R5cGU6OmNoYXJfdHlwZSAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFpbl90eXBlOjp0cmFpdHNfdHlwZSAgdHJhaXRzX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFpbl90eXBlOjpzaXplX3R5cGUgICAgc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhaW5fdHlwZTo6bW9kZSAgICAgICAgIG1vZGU7Ci0KLSAgICBjaGFpbl9jbGllbnQoY2hhaW5fdHlwZSogY2huID0gMCkgOiBjaGFpbl8oY2huICkgeyB9Ci0gICAgY2hhaW5fY2xpZW50KGNoYWluX2NsaWVudCogY2xpZW50KSA6IGNoYWluXyhjbGllbnQtPmNoYWluXykgeyB9Ci0gICAgdmlydHVhbCB+Y2hhaW5fY2xpZW50KCkgeyB9Ci0KLSAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyYgY29tcG9uZW50X3R5cGUoaW50IG4pIGNvbnN0Ci0gICAgeyByZXR1cm4gY2hhaW5fLT5jb21wb25lbnRfdHlwZShuKTsgfQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotICAgIC8vIERlcHJlY2F0ZWQuCi0gICAgdGVtcGxhdGU8aW50IE4+Ci0gICAgY29uc3Qgc3RkOjp0eXBlX2luZm8mIGNvbXBvbmVudF90eXBlKCkgY29uc3QKLSAgICB7IHJldHVybiBjaGFpbl8tPk5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBjb21wb25lbnRfdHlwZTxOPigpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIGNvbXBvbmVudChpbnQgbikgY29uc3QKLSAgICB7IHJldHVybiBjaGFpbl8tPk5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBjb21wb25lbnQ8VD4obik7IH0KLQotICAgIC8vIERlcHJlY2F0ZWQuCi0gICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFQ+Ci0gICAgVCogY29tcG9uZW50KCkgY29uc3QKLSAgICB7IHJldHVybiBjaGFpbl8tPk5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBjb21wb25lbnQ8TiwgVD4oKTsgfQotI2Vsc2UKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIGNvbXBvbmVudChpbnQgbiwgbmRuYm9vc3Q6OnR5cGU8VD4gdCkgY29uc3QKLSAgICB7IHJldHVybiBjaGFpbl8tPmNvbXBvbmVudChuLCB0KTsgfQotI2VuZGlmCi0KLSAgICBib29sIGlzX2NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gY2hhaW5fLT5pc19jb21wbGV0ZSgpOyB9Ci0gICAgYm9vbCBhdXRvX2Nsb3NlKCkgY29uc3QgeyByZXR1cm4gY2hhaW5fLT5hdXRvX2Nsb3NlKCk7IH0KLSAgICB2b2lkIHNldF9hdXRvX2Nsb3NlKGJvb2wgY2xvc2UpIHsgY2hhaW5fLT5zZXRfYXV0b19jbG9zZShjbG9zZSk7IH0KLSAgICBib29sIHN0cmljdF9zeW5jKCkgeyByZXR1cm4gY2hhaW5fLT5zdHJpY3Rfc3luYygpOyB9Ci0gICAgdm9pZCBzZXRfZGV2aWNlX2J1ZmZlcl9zaXplKHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IGNoYWluXy0+c2V0X2RldmljZV9idWZmZXJfc2l6ZShuKTsgfQotICAgIHZvaWQgc2V0X2ZpbHRlcl9idWZmZXJfc2l6ZShzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgeyBjaGFpbl8tPnNldF9maWx0ZXJfYnVmZmVyX3NpemUobik7IH0KLSAgICB2b2lkIHNldF9wYmFja19zaXplKHN0ZDo6c3RyZWFtc2l6ZSBuKSB7IGNoYWluXy0+c2V0X3BiYWNrX3NpemUobik7IH0KLSAgICBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0gocHVzaCwgbW9kZSwgY2hhcl90eXBlLCBwdXNoX2ltcGwpCi0gICAgdm9pZCBwb3AoKSB7IGNoYWluXy0+cG9wKCk7IH0KLSAgICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gY2hhaW5fLT5lbXB0eSgpOyB9Ci0gICAgc2l6ZV90eXBlIHNpemUoKSB7IHJldHVybiBjaGFpbl8tPnNpemUoKTsgfQotICAgIHZvaWQgcmVzZXQoKSB7IGNoYWluXy0+cmVzZXQoKTsgfQotCi0gICAgLy8gUmV0dXJucyBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgY2hhaW4uCi0gICAgY2hhaW5fdHlwZSBmaWx0ZXJzKCkgeyByZXR1cm4gKmNoYWluXzsgfQotICAgIGNoYWluX3R5cGUgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuICpjaGFpbl87IH0KLXByb3RlY3RlZDoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgcHVzaF9pbXBsKGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpCi0gICAgeyBjaGFpbl8tPnB1c2godCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTKCkpOyB9Ci0gICAgY2hhaW5fdHlwZSYgcmVmKCkgeyByZXR1cm4gKmNoYWluXzsgfQotICAgIHZvaWQgc2V0X2NoYWluKGNoYWluX3R5cGUqIGMpCi0gICAgeyBjaGFpbl8gPSBjOyBjaGFpbl8tPnJlZ2lzdGVyX2NsaWVudCh0aGlzKTsgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKSAmJiBcCi0gICAgKCFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUywgdHlwZW5hbWUgQywgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQSwgdHlwZW5hbWUgTT4KLSAgICBmcmllbmQgY2xhc3MgY2hhaW5fYmFzZTsKLSNlbHNlCi0gICAgcHVibGljOgotI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeSgpIHsgfQotcHJpdmF0ZToKLSAgICBjaGFpbl90eXBlKiBjaGFpbl87Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgY2hhaW5fYmFzZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+OjpyZWFkCi0gICAgKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBpb3N0cmVhbXM6OnJlYWQoKmxpc3QoKS5mcm9udCgpLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+Ojp3cml0ZQotICAgIChjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZSgqbGlzdCgpLmZyb250KCksIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbmxpbmUgc3RkOjpzdHJlYW1wb3MgY2hhaW5fYmFzZTxTZWxmLCBDaCwgVHIsIEFsbG9jLCBNb2RlPjo6c2VlawotICAgIChzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSkKLXsgcmV0dXJuIGlvc3RyZWFtczo6c2VlaygqbGlzdCgpLmZyb250KCksIG9mZiwgd2F5KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+OjpyZXNldCgpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBwaW1wbF8tPmNsb3NlKCk7Ci0gICAgcGltcGxfLT5yZXNldCgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotYm9vbCBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+Ojppc19jb21wbGV0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChwaW1wbF8tPmZsYWdzXyAmIGZfY29tcGxldGUpICE9IDA7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1ib29sIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT46OmF1dG9fY2xvc2UoKSBjb25zdAotewotICAgIHJldHVybiAocGltcGxfLT5mbGFnc18gJiBmX2F1dG9fY2xvc2UpICE9IDA7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci12b2lkIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT46OnNldF9hdXRvX2Nsb3NlKGJvb2wgY2xvc2UpCi17Ci0gICAgcGltcGxfLT5mbGFnc18gPQotICAgICAgICAocGltcGxfLT5mbGFnc18gJiB+Zl9hdXRvX2Nsb3NlKSB8Ci0gICAgICAgIChjbG9zZSA/IGZfYXV0b19jbG9zZSA6IDApOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotYm9vbCBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+OjpzdHJpY3Rfc3luYygpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0X3R5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICBmb3IgKCBpdGVyYXRvciBmaXJzdCA9IGxpc3QoKS5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgIGxhc3QgPSBsaXN0KCkuZW5kKCk7Ci0gICAgICAgICAgZmlyc3QgIT0gbGFzdDsKLSAgICAgICAgICArK2ZpcnN0ICkKLSAgICB7Ci0gICAgICAgIGJvb2wgcyA9ICgqZmlyc3QpLT5zdHJpY3Rfc3luYygpOwotICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgczsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU2VsZiwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXZvaWQgY2hhaW5fYmFzZTxTZWxmLCBDaCwgVHIsIEFsbG9jLCBNb2RlPjo6cG9wKCkKLXsKLSAgICBORE5CT09TVF9BU1NFUlQoIWVtcHR5KCkpOwotICAgIGlmIChhdXRvX2Nsb3NlKCkpCi0gICAgICAgIHBpbXBsXy0+Y2xvc2UoKTsKLSAgICBzdHJlYW1idWZfdHlwZSogYnVmID0gMDsKLSAgICBzdGQ6OnN3YXAoYnVmLCBsaXN0KCkuYmFjaygpKTsKLSAgICBidWYtPnNldF9hdXRvX2Nsb3NlKGZhbHNlKTsKLSAgICBidWYtPnNldF9uZXh0KDApOwotICAgIGRlbGV0ZSBidWY7Ci0gICAgbGlzdCgpLnBvcF9iYWNrKCk7Ci0gICAgcGltcGxfLT5mbGFnc18gJj0gfmZfY29tcGxldGU7Ci0gICAgaWYgKGF1dG9fY2xvc2UoKSB8fCBsaXN0KCkuZW1wdHkoKSkKLSAgICAgICAgcGltcGxfLT5mbGFnc18gJj0gfmZfb3BlbjsKLX0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ0hBSU5fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NTEzZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2hhcl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxjc3RkaW8+ICAvLyBFT0YuCi0jaW5jbHVkZSA8c3RyaW5nPiAgLy8gc3RkOjpjaGFyX3RyYWl0cy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TCi0jIGluY2x1ZGUgPGN3Y2hhcj4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OndpbnRfdDsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi0vLyBEaW5rdW13YXJlIHRoYXQgY29tZXMgd2l0aCBRTlggTW9tZW50aWNzIDYuMy4wLCA0LjAuMiwgaW5jb3JyZWN0bHkgZGVmaW5lcwotLy8gdGhlIEVPRiBhbmQgV0VPRiBtYWNyb3MgdG8gbm90IHN0ZDo6IHF1YWxpZnkgdGhlIHdpbnRfdCB0eXBlIChhbmQgc28gZG9lcwotLy8gU3VuIEMrKyA1LjggKyBTVExwb3J0IDQpLiBGaXggYnkgcGxhY2luZyB0aGUgZGVmIGluIHRoaXMgc2NvcGUuCi0vLyBOT1RFOiBVc2UgTkROQk9PU1RfV09SS0FST1VORD8KLSNpZiAoZGVmaW5lZChfX1FOWF9fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCKSkgIFwKLSAgICB8fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQotdXNpbmcgOjpzdGQ6OndpbnRfdDsKLSNlbmRpZgotCi1jb25zdCBpbnQgV09VTERfQkxPQ0sgPSAoaW50KSAoRU9GIC0gMSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotY29uc3Qgc3RkOjp3aW50X3QgV1dPVUxEX0JMT0NLID0gKHN0ZDo6d2ludF90KSAoV0VPRiAtIDEpOwotI2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotc3RydWN0IGNoYXJfdHJhaXRzOwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2hhcl90cmFpdHM8Y2hhcj4gOiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcikgewotICAgIHN0YXRpYyBjaGFyIG5ld2xpbmUoKSB7IHJldHVybiAnXG4nOyB9Ci0gICAgc3RhdGljIGludCBnb29kKCkgeyByZXR1cm4gJ1xuJzsgfQotICAgIHN0YXRpYyBpbnQgd291bGRfYmxvY2soKSB7IHJldHVybiBXT1VMRF9CTE9DSzsgfQotICAgIHN0YXRpYyBib29sIGlzX2dvb2QoaW50IGMpIHsgcmV0dXJuIGMgIT0gRU9GICYmIGMgIT0gV09VTERfQkxPQ0s7IH0KLSAgICBzdGF0aWMgYm9vbCBpc19lb2YoaW50IGMpIHsgcmV0dXJuIGMgPT0gRU9GOyB9Ci0gICAgc3RhdGljIGJvb2wgd291bGRfYmxvY2soaW50IGMpIHsgcmV0dXJuIGMgPT0gV09VTERfQkxPQ0s7IH0KLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotdGVtcGxhdGU8Pgotc3RydWN0IGNoYXJfdHJhaXRzPHdjaGFyX3Q+IDogc3RkOjpjaGFyX3RyYWl0czx3Y2hhcl90PiB7Ci0gICAgc3RhdGljIHdjaGFyX3QgbmV3bGluZSgpIHsgcmV0dXJuIEwnXG4nOyB9Ci0gICAgc3RhdGljIHN0ZDo6d2ludF90IGdvb2QoKSB7IHJldHVybiBMJ1xuJzsgfQotICAgIHN0YXRpYyBzdGQ6OndpbnRfdCB3b3VsZF9ibG9jaygpIHsgcmV0dXJuIFdXT1VMRF9CTE9DSzsgfQotICAgIHN0YXRpYyBib29sIGlzX2dvb2Qoc3RkOjp3aW50X3QgYykgeyByZXR1cm4gYyAhPSBXRU9GICYmIGMgIT0gV1dPVUxEX0JMT0NLOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNfZW9mKHN0ZDo6d2ludF90IGMpIHsgcmV0dXJuIGMgPT0gV0VPRjsgfQotICAgIHN0YXRpYyBib29sIHdvdWxkX2Jsb2NrKHN0ZDo6d2ludF90IGMpIHsgcmV0dXJuIGMgPT0gV1dPVUxEX0JMT0NLOyB9Ci19OwotI2VuZGlmCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGVja2VkX29wZXJhdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2hlY2tlZF9vcGVyYXRpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEyNzA2NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGVja2VkX29wZXJhdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyBpbXBsZW1lbnRhdGlvbnMgb2YgZ2V0LCByZWFkLCBwdXQsIHdyaXRlIGFuZCBzZWVrIHdoaWNoCi0vLyBjaGVjayBhIGRldmljZSdzIG1vZGUgYXQgcnVudGltZSBpbnN0ZWFkIG9mIGNvbXBpbGUgdGltZS4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIRUNLRURfT1BFUkFUSU9OU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEVDS0VEX09QRVJBVElPTlNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kaXNwYXRjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lcnJvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvdW5yZWFjaGFibGVfcmV0dXJuLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZ2V0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcHV0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy93cml0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IHJlYWRfd3JpdGVfaWZfaW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3Qgc2Vla19pZl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgZ2V0X2lmKFQmIHQpCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpkaXNwYXRjaDxULCBpbnB1dCwgb3V0cHV0Pjo6dHlwZSB0YWc7Ci0gICAgcmV0dXJuIGRldGFpbDo6cmVhZF93cml0ZV9pZl9pbXBsPHRhZz46OmdldCh0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUKLXJlYWRfaWYoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmRpc3BhdGNoPFQsIGlucHV0LCBvdXRwdXQ+Ojp0eXBlIHRhZzsKLSAgICByZXR1cm4gZGV0YWlsOjpyZWFkX3dyaXRlX2lmX2ltcGw8dGFnPjo6cmVhZCh0LCBzLCBuKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWJvb2wgcHV0X2lmKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZGlzcGF0Y2g8VCwgb3V0cHV0LCBpbnB1dD46OnR5cGUgdGFnOwotICAgIHJldHVybiBkZXRhaWw6OnJlYWRfd3JpdGVfaWZfaW1wbDx0YWc+OjpwdXQodCwgYyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIHdyaXRlX2lmCi0gICAgKFQmIHQsIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpkaXNwYXRjaDxULCBvdXRwdXQsIGlucHV0Pjo6dHlwZSB0YWc7Ci0gICAgcmV0dXJuIGRldGFpbDo6cmVhZF93cml0ZV9pZl9pbXBsPHRhZz46OndyaXRlKHQsIHMsIG4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6c3RyZWFtcG9zCi1zZWVrX2lmKCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgCi0gICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0gTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLXsgCi0gICAgdXNpbmcgbmFtZXNwYWNlIGRldGFpbDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRpc3BhdGNoPFQsIHJhbmRvbV9hY2Nlc3MsIGFueV90YWc+Ojp0eXBlIHRhZzsKLSAgICByZXR1cm4gc2Vla19pZl9pbXBsPHRhZz46OnNlZWsodCwgb2ZmLCB3YXksIHdoaWNoKTsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tU3BlY2lhbGl6YXRpb25zIG9mIHJlYWRfd3JpdGVfaWZfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX3dyaXRlX2lmX2ltcGw8aW5wdXQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB0eXBlbmFtZSBpbnRfdHlwZV9vZjxUPjo6dHlwZSBnZXQoVCYgdCkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OmdldCh0KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6cmVhZCh0LCBzLCBuKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXQoVCYsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF93cml0ZSgpKTsKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oZmFsc2UpIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSAKLSAgICB3cml0ZShUJiwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiwgc3RkOjpzdHJlYW1zaXplKQotICAgIHsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3dyaXRlKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF93cml0ZV9pZl9pbXBsPG91dHB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlIGdldChUJikKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9yZWFkKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICByZWFkKFQmLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqLCBzdGQ6OnN0cmVhbXNpemUpCi0gICAgeyBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNhbnRfcmVhZCgpKTsKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oMCkgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpwdXQodCwgYyk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSAKLSAgICB3cml0ZSggVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCAKLSAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6d3JpdGUodCwgcywgbik7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tU3BlY2lhbGl6YXRpb25zIG9mIHNlZWtfaWZfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2lmX2ltcGw8cmFuZG9tX2FjY2Vzcz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zIAotICAgIHNlZWsoIFQmIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCAKLSAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnNlZWsodCwgb2ZmLCB3YXksIHdoaWNoKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlZWtfaWZfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3MgCi0gICAgc2VlayhUJiwgc3RyZWFtX29mZnNldCwgTkROQk9PU1RfSU9TOjpzZWVrZGlyLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlKQotICAgIHsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3NlZWsoKSk7Ci0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKHN0ZDo6c3RyZWFtcG9zKCkpIH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ0hFQ0tFRF9PUEVSQVRJT05TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2xvc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2xvc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGRlNDU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2Nsb3NlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0xPU0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DTE9TRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9mbHVzaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL25vbl9ibG9ja2luZ19hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+IC8vIE5ETkJPT1NUX0lPUwotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgY2xvc2UoVCYgdCk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIGNsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpOwotICAgIAotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIGNsb3NlX2FsbChUJiB0KQoteyAKLSAgICB0cnkgewotICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpjbG9zZSh0LCBORE5CT09TVF9JT1M6OmluKTsKLSAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNsb3NlKHQsIE5ETkJPT1NUX0lPUzo6b3V0KTsKLSAgICAgICAgfSBjYXRjaCAoLi4uKSB7IH0KLSAgICAgICAgdGhyb3c7Ci0gICAgfQotICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNsb3NlKHQsIE5ETkJPT1NUX0lPUzo6b3V0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLXZvaWQgY2xvc2VfYWxsKFQmIHQsIFNpbmsmIHNuaykKLXsgCi0gICAgdHJ5IHsKLSAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UodCwgc25rLCBORE5CT09TVF9JT1M6OmluKTsKLSAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNsb3NlKHQsIHNuaywgTkROQk9PU1RfSU9TOjpvdXQpOwotICAgICAgICB9IGNhdGNoICguLi4pIHsgfQotICAgICAgICB0aHJvdzsKLSAgICB9Ci0gICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UodCwgc25rLCBORE5CT09TVF9JT1M6Om91dCk7Ci19Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuIAotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvY2xvc2UuaHBwPgotI2Vsc2UgLy8gI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNsb3NlX2ltcGw7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIGNsb3NlKFQmIHQpIHsgZGV0YWlsOjpjbG9zZV9hbGwodCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgCi0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NUUklDVAotICAgIE5ETkJPT1NUX0FTU0VSVCh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluIHx8IHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0KTsKLSNlbHNlCi0gICAgaWYgKHdoaWNoID09IChORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQpKSB7Ci0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgZGV0YWlsOjpjbG9zZV9pbXBsPFQ+OjpjbG9zZShkZXRhaWw6OnVud3JhcCh0KSwgd2hpY2gpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLXZvaWQgY2xvc2UoVCYgdCwgU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQoteyAKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1RSSUNUCi0gICAgTkROQk9PU1RfQVNTRVJUKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4gfHwgd2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpOwotI2Vsc2UKLSAgICBpZiAod2hpY2ggPT0gKE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCkpIHsKLSAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwodCwgc25rKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGRldGFpbDo6Y2xvc2VfaW1wbDxUPjo6Y2xvc2UoZGV0YWlsOjp1bndyYXAodCksIHNuaywgd2hpY2gpOyAKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBjbG9zZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXN0cnVjdCBjbG9zZV9ib29zdF9zdHJlYW0geyB9Owotc3RydWN0IGNsb3NlX2ZpbHRlcmluZ19zdHJlYW0geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNsb3NlX3RhZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSAgICAgICAgICAgICBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgIHVud3JhcHBlZDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBpb3N0cmVhbXM6OnNlbGVjdDwKLSAgICAgICAgICAgICAgICBtcGw6Om5vdF88IGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBjbG9zYWJsZV90YWc+ID4sCi0gICAgICAgICAgICAgICAgYW55X3RhZywKLSAgICAgICAgICAgICAgICBtcGw6Om9yXzwKLSAgICAgICAgICAgICAgICAgICAgaXNfYm9vc3Rfc3RyZWFtPHVud3JhcHBlZD4sCi0gICAgICAgICAgICAgICAgICAgIGlzX2Jvb3N0X3N0cmVhbV9idWZmZXI8dW53cmFwcGVkPgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgY2xvc2VfYm9vc3Rfc3RyZWFtLAotICAgICAgICAgICAgICAgIG1wbDo6b3JfPAotICAgICAgICAgICAgICAgICAgICBpc19maWx0ZXJpbmdfc3RyZWFtPHVud3JhcHBlZD4sCi0gICAgICAgICAgICAgICAgICAgIGlzX2ZpbHRlcmluZ19zdHJlYW1idWY8dW53cmFwcGVkPgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgY2xvc2VfZmlsdGVyaW5nX3N0cmVhbSwKLSAgICAgICAgICAgICAgICBtcGw6Om9yXzwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIHR3b19zZXF1ZW5jZT4sCi0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBkdWFsX3VzZT4KLSAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgIHR3b19zZXF1ZW5jZSwKLSAgICAgICAgICAgICAgICBlbHNlXywKLSAgICAgICAgICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2xvc2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgY2xvc2VfaW1wbDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNsb3NlX3RhZzxUPjo6dHlwZT4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbG9zZV9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICAgICBpb3N0cmVhbXM6OmZsdXNoKHQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0KSB7Ci0gICAgICAgICAgICBub25fYmxvY2tpbmdfYWRhcHRlcjxTaW5rPiBuYihzbmspOwotICAgICAgICAgICAgaW9zdHJlYW1zOjpmbHVzaCh0LCBuYik7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xvc2VfaW1wbDxjbG9zZV9ib29zdF9zdHJlYW0+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQpCi0gICAgewotICAgICAgICB0LmNsb3NlKCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgIHQuY2xvc2UoKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xvc2VfaW1wbDxjbG9zZV9maWx0ZXJpbmdfc3RyZWFtPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgY29uc3QgYm9vbCBpbiA9ICBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIWlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZTsKLSAgICAgICAgaWYgKGluID09ICh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluKSAmJiB0LmlzX2NvbXBsZXRlKCkpCi0gICAgICAgICAgICB0LnBvcCgpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbG9zZV9pbXBsPGNsb3NhYmxlX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIGNvbnN0IGJvb2wgaW4gPSAgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGlucHV0Pjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICFpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgb3V0cHV0Pjo6dmFsdWU7Ci0gICAgICAgIGlmIChpbiA9PSAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbikpCi0gICAgICAgICAgICB0LmNsb3NlKCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgY29uc3QgYm9vbCBpbiA9ICBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIWlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZTsKLSAgICAgICAgaWYgKGluID09ICh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluKSkgewotICAgICAgICAgICAgbm9uX2Jsb2NraW5nX2FkYXB0ZXI8U2luaz4gbmIoc25rKTsKLSAgICAgICAgICAgIHQuY2xvc2UobmIpOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsb3NlX2ltcGw8dHdvX3NlcXVlbmNlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKSB7IHQuY2xvc2Uod2hpY2gpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICBub25fYmxvY2tpbmdfYWRhcHRlcjxTaW5rPiBuYihzbmspOwotICAgICAgICB0LmNsb3NlKG5iLCB3aGljaCk7Ci0gICAgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0xPU0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb2RlX2NvbnZlcnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb2RlX2NvbnZlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyYzI5ZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29kZV9jb252ZXJ0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDI1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyBtYWNoaW5lcnkgZm9yIHBlcmZvcm1pbmcgY29kZSBjb252ZXJzaW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFX0NPTlZFUlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPREVfQ09OVkVSVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TKSB8fCBcCi0gICAgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFKSBcCi0gICAgLyoqLwotIyBlcnJvciBjb2RlIGNvbnZlcnNpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtCi0jZW5kaWYKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgIC8vIG1heC4KLSNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZW1jcHkuCi0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgIC8vIERFRFVDRURfVFlQRU5BTUUsIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+ICAgLy8gZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2NvbmNlcHRfYWRhcHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2RpcmVjdF9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2J1ZmZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jYWxsX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb2RlY3Z0X2hvbGRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb2RlY3Z0X2hlbHBlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kb3VibGVfb2JqZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZm9yd2FyZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mdW5jdGlvbmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+IC8vIGZhaWx1cmUsIG9wZW5tb2RlLCBpbnQgdHlwZXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9vcHRpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+IC8vIEJvcmxhbmQgNS54Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1zdHJ1Y3QgY29kZV9jb252ZXJzaW9uX2Vycm9yIDogTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgewotICAgIGNvZGVfY29udmVyc2lvbl9lcnJvcigpIAotICAgICAgICA6IE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJjb2RlIGNvbnZlcnNpb24gZXJyb3IiKQotICAgICAgICB7IH0KLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBzdHJuY3B5X2lmX3NhbWUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBIZWxwZXIgdGVtcGxhdGUgZm9yIHN0cm5jcHlfaWZfc2FtZSwgYmVsb3cuCi10ZW1wbGF0ZTxib29sIEI+Ci1zdHJ1Y3Qgc3RybmNweV9pZl9zYW1lX2ltcGw7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzdHJuY3B5X2lmX3NhbWVfaW1wbDx0cnVlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci0gICAgc3RhdGljIENoKiBjb3B5KENoKiB0Z3QsIGNvbnN0IENoKiBzcmMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhDaCk6OmNvcHkodGd0LCBzcmMsIG4pOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc3RybmNweV9pZl9zYW1lX2ltcGw8ZmFsc2U+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcmMsIHR5cGVuYW1lIFRndD4KLSAgICBzdGF0aWMgVGd0KiBjb3B5KFRndCogdGd0LCBjb25zdCBTcmMqLCBzdGQ6OnN0cmVhbXNpemUpIHsgcmV0dXJuIHRndDsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgU3JjLCB0eXBlbmFtZSBUZ3Q+Ci1UZ3QqIHN0cm5jcHlfaWZfc2FtZShUZ3QqIHRndCwgY29uc3QgU3JjKiBzcmMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIHR5cGVkZWYgc3RybmNweV9pZl9zYW1lX2ltcGw8aXNfc2FtZTxTcmMsIFRndD46OnZhbHVlPiBpbXBsOwotICAgIHJldHVybiBpbXBsOjpjb3B5KHRndCwgc3JjLCBuKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY29udmVyc2lvbl9idWZmZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gQnVmZmVyIGFuZCBjb252ZXJzaW9uIHN0YXRlIGZvciByZWFkaW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgQ29kZWN2dCwgdHlwZW5hbWUgQWxsb2M+Ci1jbGFzcyBjb252ZXJzaW9uX2J1ZmZlciAKLSAgICA6IHB1YmxpYyBidWZmZXI8Ci0gICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpjb2RlY3Z0X2V4dGVybjxDb2RlY3Z0Pjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgQWxsb2MKLSAgICAgICAgICAgICA+IAotewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29kZWN2dDo6c3RhdGVfdHlwZSBzdGF0ZV90eXBlOwotICAgIGNvbnZlcnNpb25fYnVmZmVyKCkgCi0gICAgICAgIDogYnVmZmVyPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6Y29kZWN2dF9leHRlcm48Q29kZWN2dD46OnR5cGUsCi0gICAgICAgICAgICAgIEFsbG9jCi0gICAgICAgICAgPigwKSAKLSAgICB7IAotICAgICAgICByZXNldCgpOyAKLSAgICB9Ci0gICAgc3RhdGVfdHlwZSYgc3RhdGUoKSB7IHJldHVybiBzdGF0ZV87IH0KLSAgICB2b2lkIHJlc2V0KCkgCi0gICAgeyAKLSAgICAgICAgaWYgKHRoaXMtPnNpemUoKSkgCi0gICAgICAgICAgICB0aGlzLT5zZXQoMCwgMCk7Ci0gICAgICAgIHN0YXRlXyA9IHN0YXRlX3R5cGUoKTsgCi0gICAgfQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlIHN0YXRlXzsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNvbnZlcnRlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIENvbnRhaW5zIG1lbWJlciBkYXRhLCBvcGVuL2lzX29wZW4vY2xvc2UgYW5kIGJ1ZmZlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucy4KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgQ29kZWN2dCwgdHlwZW5hbWUgQWxsb2M+Ci1zdHJ1Y3QgY29kZV9jb252ZXJ0ZXJfaW1wbCB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjb2RlY3Z0X2V4dGVybjxDb2RlY3Z0Pjo6dHlwZSAgICAgICAgICBleHRlcm5fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPERldmljZT46OnR5cGUgICAgICAgICAgICAgIGRldmljZV9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlPGRldmljZV9jYXRlZ29yeSwgaW5wdXQ+ICAgICAgICAgIGNhbl9yZWFkOwotICAgIHR5cGVkZWYgaXNfY29udmVydGlibGU8ZGV2aWNlX2NhdGVnb3J5LCBvdXRwdXQ+ICAgICAgICAgY2FuX3dyaXRlOwotICAgIHR5cGVkZWYgaXNfY29udmVydGlibGU8ZGV2aWNlX2NhdGVnb3J5LCBiaWRpcmVjdGlvbmFsPiAgaXNfYmlkaXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIGlvc3RyZWFtczo6c2VsZWN0PCAgLy8gRGlzYW1iaWd1YXRpb24gZm9yIFRydTY0LgotICAgICAgICAgICAgICAgIGlzX2JpZGlyLCBiaWRpcmVjdGlvbmFsLAotICAgICAgICAgICAgICAgIGNhbl9yZWFkLCBpbnB1dCwKLSAgICAgICAgICAgICAgICBjYW5fd3JpdGUsIG91dHB1dAotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTsgICAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19kaXJlY3Q8RGV2aWNlPiwKLSAgICAgICAgICAgICAgICBkaXJlY3RfYWRhcHRlcjxEZXZpY2U+LAotICAgICAgICAgICAgICAgIERldmljZQotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX3R5cGU7Ci0gICAgdHlwZWRlZiBvcHRpb25hbDwgY29uY2VwdF9hZGFwdGVyPGRldmljZV90eXBlPiA+ICAgICAgICBzdG9yYWdlX3R5cGU7Ci0gICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZTxkZXZpY2VfY2F0ZWdvcnksIHR3b19zZXF1ZW5jZT4gICBpc19kb3VibGU7Ci0gICAgdHlwZWRlZiBjb252ZXJzaW9uX2J1ZmZlcjxDb2RlY3Z0LCBBbGxvYz4gICAgICAgICAgICAgICBidWZmZXJfdHlwZTsKLQotICAgIGNvZGVfY29udmVydGVyX2ltcGwoKSA6IGN2dF8oKSwgZmxhZ3NfKDApIHsgfQotCi0gICAgfmNvZGVfY29udmVydGVyX2ltcGwoKQotICAgIHsgCi0gICAgICAgIHRyeSB7IAotICAgICAgICAgICAgaWYgKGZsYWdzXyAmIGZfb3BlbikgY2xvc2UoKTsgCi0gICAgICAgIH0gY2F0Y2ggKC4uLikgeyAvKiAqLyB9IAotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHZvaWQgb3Blbihjb25zdCBUJiBkZXYsIGludCBidWZmZXJfc2l6ZSkKLSAgICB7Ci0gICAgICAgIGlmIChmbGFnc18gJiBmX29wZW4pCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJhbHJlYWR5IG9wZW4iKSk7Ci0gICAgICAgIGlmIChidWZmZXJfc2l6ZSA9PSAtMSkKLSAgICAgICAgICAgIGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemU7Ci0gICAgICAgIGludCBtYXhfbGVuZ3RoID0gY3Z0Xy5nZXQoKS5tYXhfbGVuZ3RoKCk7Ci0gICAgICAgIGJ1ZmZlcl9zaXplID0gKHN0ZDo6bWF4KShidWZmZXJfc2l6ZSwgMiAqIG1heF9sZW5ndGgpOwotICAgICAgICBpZiAoY2FuX3JlYWQ6OnZhbHVlKSB7Ci0gICAgICAgICAgICBidWZfLmZpcnN0KCkucmVzaXplKGJ1ZmZlcl9zaXplKTsKLSAgICAgICAgICAgIGJ1Zl8uZmlyc3QoKS5zZXQoMCwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNhbl93cml0ZTo6dmFsdWUgJiYgIWlzX2RvdWJsZTo6dmFsdWUpIHsKLSAgICAgICAgICAgIGJ1Zl8uc2Vjb25kKCkucmVzaXplKGJ1ZmZlcl9zaXplKTsKLSAgICAgICAgICAgIGJ1Zl8uc2Vjb25kKCkuc2V0KDAsIDApOwotICAgICAgICB9Ci0gICAgICAgIGRldl8ucmVzZXQoY29uY2VwdF9hZGFwdGVyPGRldmljZV90eXBlPihkZXYpKTsKLSAgICAgICAgZmxhZ3NfID0gZl9vcGVuOwotICAgIH0KLQotICAgIHZvaWQgY2xvc2UoKQotICAgIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9tZW1iZXJfY2xvc2UoKnRoaXMsIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX21lbWJlcl9jbG9zZSgqdGhpcywgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4gJiYgKGZsYWdzXyAmIGZfaW5wdXRfY2xvc2VkKSA9PSAwKSB7Ci0gICAgICAgICAgICBmbGFnc18gfD0gZl9pbnB1dF9jbG9zZWQ7Ci0gICAgICAgICAgICBpb3N0cmVhbXM6OmNsb3NlKGRldigpLCBORE5CT09TVF9JT1M6OmluKTsKLSAgICAgICAgfQotICAgICAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQgJiYgKGZsYWdzXyAmIGZfb3V0cHV0X2Nsb3NlZCkgPT0gMCkgewotICAgICAgICAgICAgZmxhZ3NfIHw9IGZfb3V0cHV0X2Nsb3NlZDsKLSAgICAgICAgICAgIGRldGFpbDo6ZXhlY3V0ZV9hbGwoCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpmbHVzaF9idWZmZXIoYnVmXy5zZWNvbmQoKSwgZGV2KCksIGNhbl93cml0ZTo6dmFsdWUpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShkZXYoKSwgTkROQk9PU1RfSU9TOjpvdXQpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9yZXNldChkZXZfKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfcmVzZXQoYnVmXy5maXJzdCgpKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfcmVzZXQoYnVmXy5zZWNvbmQoKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBib29sIGlzX29wZW4oKSBjb25zdCB7IHJldHVybiAoZmxhZ3NfICYgZl9vcGVuKSAhPSAwO30KLQotICAgIGRldmljZV90eXBlJiBkZXYoKSB7IHJldHVybiAqKmRldl87IH0KLQotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl9vcGVuICAgICAgICAgICAgID0gMSwKLSAgICAgICAgZl9pbnB1dF9jbG9zZWQgICAgID0gZl9vcGVuIDw8IDEsCi0gICAgICAgIGZfb3V0cHV0X2Nsb3NlZCAgICA9IGZfaW5wdXRfY2xvc2VkIDw8IDEKLSAgICB9OwotCi0gICAgY29kZWN2dF9ob2xkZXI8Q29kZWN2dD4gIGN2dF87Ci0gICAgc3RvcmFnZV90eXBlICAgICAgICAgICAgIGRldl87Ci0gICAgZG91YmxlX29iamVjdDwKLSAgICAgICAgYnVmZmVyX3R5cGUsIAotICAgICAgICBpc19kb3VibGUKLSAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgYnVmXzsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfOwotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY29udmVydGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09OVkVSVEVSX1BBUkFNUygpICwgaW50IGJ1ZmZlcl9zaXplID0gLTEKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPTlZFUlRFUl9BUkdTKCkgLCBidWZmZXJfc2l6ZQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIENvZGVjdnQsIHR5cGVuYW1lIEFsbG9jPgotc3RydWN0IGNvZGVfY29udmVydGVyX2Jhc2UgewotICAgIHR5cGVkZWYgZGV0YWlsOjpjb2RlX2NvbnZlcnRlcl9pbXBsPAotICAgICAgICAgICAgICAgIERldmljZSwgQ29kZWN2dCwgQWxsb2MKLSAgICAgICAgICAgID4gaW1wbF90eXBlOwotICAgIGNvZGVfY29udmVydGVyX2Jhc2UoKSA6IHBpbXBsXyhuZXcgaW1wbF90eXBlKSB7IH0KLSAgICBzaGFyZWRfcHRyPGltcGxfdHlwZT4gcGltcGxfOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIERldmljZSwgCi0gICAgICAgICAgdHlwZW5hbWUgQ29kZWN2dCA9IGRldGFpbDo6ZGVmYXVsdF9jb2RlY3Z0LCAKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIGNvZGVfY29udmVydGVyIAotICAgIDogcHJvdGVjdGVkIGNvZGVfY29udmVydGVyX2Jhc2U8RGV2aWNlLCBDb2RlY3Z0LCBBbGxvYz4KLXsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmNvZGVfY29udmVydGVyX2ltcGw8Ci0gICAgICAgICAgICAgICAgRGV2aWNlLCBDb2RlY3Z0LCBBbGxvYwotICAgICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsX3R5cGU6OmRldmljZV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF90eXBlOjpidWZmZXJfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Y29kZWN2dF9ob2xkZXI8Q29kZWN2dD46OmNvZGVjdnRfdHlwZSAgY29kZWN2dF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjb2RlY3Z0X2ludGVybjxDb2RlY3Z0Pjo6dHlwZSAgICAgICAgICBpbnRlcm5fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Y29kZWN2dF9leHRlcm48Q29kZWN2dD46OnR5cGUgICAgICAgICAgZXh0ZXJuX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmNvZGVjdnRfc3RhdGU8Q29kZWN2dD46OnR5cGUgICAgICAgICAgIHN0YXRlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBpbnRlcm5fdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsgICAgCi0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IGltcGxfdHlwZTo6bW9kZSwgZGV2aWNlX3RhZywgY2xvc2FibGVfdGFnLCBsb2NhbGl6YWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICBpc19zYW1lPAotICAgICAgICAgICAgZXh0ZXJuX3R5cGUsIAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZQotICAgICAgICA+Ojp2YWx1ZQotICAgICkpOwotcHVibGljOgotICAgIGNvZGVfY29udmVydGVyKCkgeyB9Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKQotICAgIGNvZGVfY29udmVydGVyKGNvZGVfY29udmVydGVyJiByaHMpIAotICAgICAgICA6IGNvZGVfY29udmVydGVyX2Jhc2U8RGV2aWNlLCBDb2RlY3Z0LCBBbGxvYz4ocmhzKQotICAgICAgICB7IH0KLSAgICBjb2RlX2NvbnZlcnRlcihjb25zdCBjb2RlX2NvbnZlcnRlciYgcmhzKSAKLSAgICAgICAgOiBjb2RlX2NvbnZlcnRlcl9iYXNlPERldmljZSwgQ29kZWN2dCwgQWxsb2M+KHJocykKLSAgICAgICAgeyB9Ci0jZW5kaWYKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRCggY29kZV9jb252ZXJ0ZXIsIG9wZW5faW1wbCwgRGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ09OVkVSVEVSX1BBUkFNUywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DT05WRVJURVJfQVJHUyApCi0KLSAgICAgICAgLy8gZnN0cmVhbS1saWtlIGludGVyZmFjZS4KLQotICAgIGJvb2wgaXNfb3BlbigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnBpbXBsXy0+aXNfb3BlbigpOyB9Ci0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0gTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7IGltcGwoKS5jbG9zZSh3aGljaCk7IH0KLQotICAgICAgICAvLyBEZXZpY2UgaW50ZXJmYWNlLgotCi0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiwgc3RkOjpzdHJlYW1zaXplKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiwgc3RkOjpzdHJlYW1zaXplKTsKLSAgICB2b2lkIGltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsb2MpIHsgaW1wbCgpLmN2dF8uaW1idWUobG9jKTsgfQotCi0gICAgICAgIC8vIERpcmVjdCBkZXZpY2UgYWNjZXNzLgotCi0gICAgRGV2aWNlJiBvcGVyYXRvciooKSB7IHJldHVybiBkZXRhaWw6OnVud3JhcF9kaXJlY3QoZGV2KCkpOyB9Ci0gICAgRGV2aWNlKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gJmRldGFpbDo6dW53cmFwX2RpcmVjdChkZXYoKSk7IH0KLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gLy8gVXNlZCBmb3IgZm9yd2FyZGluZy4KLSAgICB2b2lkIG9wZW5faW1wbChjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19DT05WRVJURVJfUEFSQU1TKCkpIAotICAgIHsgCi0gICAgICAgIGltcGwoKS5vcGVuKHQgTkROQk9PU1RfSU9TVFJFQU1TX0NPTlZFUlRFUl9BUkdTKCkpOyAKLSAgICB9Ci0KLSAgICBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCgpIHsgcmV0dXJuIGltcGwoKS5jdnRfLmdldCgpOyB9Ci0gICAgZGV2aWNlX3R5cGUmIGRldigpIHsgcmV0dXJuIGltcGwoKS5kZXYoKTsgfQotICAgIGJ1ZmZlcl90eXBlJiBpbigpIHsgcmV0dXJuIGltcGwoKS5idWZfLmZpcnN0KCk7IH0KLSAgICBidWZmZXJfdHlwZSYgb3V0KCkgeyByZXR1cm4gaW1wbCgpLmJ1Zl8uc2Vjb25kKCk7IH0KLSAgICBpbXBsX3R5cGUmIGltcGwoKSB7IHJldHVybiAqdGhpcy0+cGltcGxfOyB9Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgY29udmVydGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBJbXBsZW1lbnRhdGlvbiBub3RlOiBpZiBlbmQgb2Ygc3RyZWFtIGNvbnRhaW5zIGEgcGFydGlhbCBjaGFyYWN0ZXIsCi0vLyBpdCBpcyBpZ25vcmVkLgotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBDb2RldnQsIHR5cGVuYW1lIEFsbG9jPgotc3RkOjpzdHJlYW1zaXplIGNvZGVfY29udmVydGVyPERldmljZSwgQ29kZXZ0LCBBbGxvYz46OnJlYWQKLSAgICAoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsKLSAgICBjb25zdCBleHRlcm5fdHlwZSogICBuZXh0OyAgICAgICAgLy8gTmV4dCBleHRlcm5hbCBjaGFyLgotICAgIGludGVybl90eXBlKiAgICAgICAgIG5pbnQ7ICAgICAgICAvLyBOZXh0IGludGVybmFsIGNoYXIuCi0gICAgc3RkOjpzdHJlYW1zaXplICAgICAgdG90YWwgPSAwOyAgIC8vIENoYXJhY3RlcnMgcmVhZC4KLSAgICBpbnQgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBpb3N0cmVhbXM6OmNoYXJfdHJhaXRzPGNoYXI+Ojpnb29kKCk7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgcGFydGlhbCA9IGZhbHNlOwotICAgIGJ1ZmZlcl90eXBlJiAgICAgICAgIGJ1ZiA9IGluKCk7Ci0KLSAgICBkbyB7Ci0KLSAgICAgICAgLy8gRmlsbCBidWZmZXIuCi0gICAgICAgIGlmIChidWYucHRyKCkgPT0gYnVmLmVwdHIoKSB8fCBwYXJ0aWFsKSB7Ci0gICAgICAgICAgICBzdGF0dXMgPSBidWYuZmlsbChkZXYoKSk7Ci0gICAgICAgICAgICBpZiAoYnVmLnB0cigpID09IGJ1Zi5lcHRyKCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBwYXJ0aWFsID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDb252ZXJ0LgotICAgICAgICBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0IHJlc3VsdCA9Ci0gICAgICAgICAgICBjdnQoKS5pbiggYnVmLnN0YXRlKCksCi0gICAgICAgICAgICAgICAgICAgICAgYnVmLnB0cigpLCBidWYuZXB0cigpLCBuZXh0LAotICAgICAgICAgICAgICAgICAgICAgIHMgKyB0b3RhbCwgcyArIG4sIG5pbnQgKTsKLSAgICAgICAgYnVmLnB0cigpICs9IG5leHQgLSBidWYucHRyKCk7Ci0gICAgICAgIHRvdGFsID0gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihuaW50IC0gcyk7Ci0KLSAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKLSAgICAgICAgY2FzZSBzdGQ6OmNvZGVjdnRfYmFzZTo6cGFydGlhbDoKLSAgICAgICAgICAgIHBhcnRpYWwgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ugc3RkOjpjb2RlY3Z0X2Jhc2U6Om9rOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ugc3RkOjpjb2RlY3Z0X2Jhc2U6Om5vY29udjoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6bWluPHN0ZDo6c3RyZWFtc2l6ZT4obmV4dCAtIGJ1Zi5wdHIoKSwgbiAtIHRvdGFsKTsKLSAgICAgICAgICAgICAgICBkZXRhaWw6OnN0cm5jcHlfaWZfc2FtZShzICsgdG90YWwsIGJ1Zi5wdHIoKSwgYW10KTsKLSAgICAgICAgICAgICAgICB0b3RhbCArPSBhbXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBzdGQ6OmNvZGVjdnRfYmFzZTo6ZXJyb3I6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBidWYuc3RhdGUoKSA9IHN0YXRlX3R5cGUoKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY29kZV9jb252ZXJzaW9uX2Vycm9yKCkpOwotICAgICAgICB9Ci0KLSAgICB9IHdoaWxlICh0b3RhbCA8IG4gJiYgc3RhdHVzICE9IEVPRiAmJiBzdGF0dXMgIT0gV09VTERfQkxPQ0spOwotCi0gICAgcmV0dXJuIHRvdGFsID09IDAgJiYgc3RhdHVzID09IEVPRiA/IC0xIDogdG90YWw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgQ29kZXZ0LCB0eXBlbmFtZSBBbGxvYz4KLXN0ZDo6c3RyZWFtc2l6ZSBjb2RlX2NvbnZlcnRlcjxEZXZpY2UsIENvZGV2dCwgQWxsb2M+Ojp3cml0ZQotICAgIChjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIGJ1ZmZlcl90eXBlJiAgICAgICAgYnVmID0gb3V0KCk7Ci0gICAgZXh0ZXJuX3R5cGUqICAgICAgICBuZXh0OyAgICAgICAgICAgICAgLy8gTmV4dCBleHRlcm5hbCBjaGFyLgotICAgIGNvbnN0IGludGVybl90eXBlKiAgbmludDsgICAgICAgICAgICAgIC8vIE5leHQgaW50ZXJuYWwgY2hhci4KLSAgICBzdGQ6OnN0cmVhbXNpemUgICAgIHRvdGFsID0gMDsgICAgICAgICAvLyBDaGFyYWN0ZXJzIHdyaXR0ZW4uCi0gICAgYm9vbCAgICAgICAgICAgICAgICBwYXJ0aWFsID0gZmFsc2U7Ci0KLSAgICB3aGlsZSAodG90YWwgPCBuKSB7Ci0KLSAgICAgICAgLy8gRW1wdHkgYnVmZmVyLgotICAgICAgICBpZiAoYnVmLmVwdHIoKSA9PSBidWYuZW5kKCkgfHwgcGFydGlhbCkgewotICAgICAgICAgICAgaWYgKCFidWYuZmx1c2goZGV2KCkpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcGFydGlhbCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgCi0gICAgICAgIC8vIENvbnZlcnQuCi0gICAgICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgcmVzdWx0ID0KLSAgICAgICAgICAgIGN2dCgpLm91dCggYnVmLnN0YXRlKCksCi0gICAgICAgICAgICAgICAgICAgICAgIHMgKyB0b3RhbCwgcyArIG4sIG5pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5lcHRyKCksIGJ1Zi5lbmQoKSwgbmV4dCApOwotICAgICAgICBpbnQgcHJvZ3Jlc3MgPSAoaW50KSAobmV4dCAtIGJ1Zi5lcHRyKCkpOwotICAgICAgICBidWYuZXB0cigpICs9IHByb2dyZXNzOwotCi0gICAgICAgIHN3aXRjaCAocmVzdWx0KSB7Ci0gICAgICAgIGNhc2Ugc3RkOjpjb2RlY3Z0X2Jhc2U6OnBhcnRpYWw6Ci0gICAgICAgICAgICBwYXJ0aWFsID0gdHJ1ZTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIHN0ZDo6Y29kZWN2dF9iYXNlOjpvazoKLSAgICAgICAgICAgIHRvdGFsID0gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihuaW50IC0gcyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBzdGQ6OmNvZGVjdnRfYmFzZTo6bm9jb252OgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgICAgICAgICAgc3RkOjptaW48c3RkOjpzdHJlYW1zaXplPiggbmludCAtIHRvdGFsIC0gcywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5lbmQoKSAtIGJ1Zi5lcHRyKCkgKTsKLSAgICAgICAgICAgICAgICBkZXRhaWw6OnN0cm5jcHlfaWZfc2FtZShidWYuZXB0cigpLCBzICsgdG90YWwsIGFtdCk7Ci0gICAgICAgICAgICAgICAgdG90YWwgKz0gYW10OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ugc3RkOjpjb2RlY3Z0X2Jhc2U6OmVycm9yOgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnVmLnN0YXRlKCkgPSBzdGF0ZV90eXBlKCk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNvZGVfY29udmVyc2lvbl9lcnJvcigpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdG90YWw7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gLy8gQm9ybGFuZCA1LngKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPREVfQ09OVkVSVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29tYmluZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb21iaW5lLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZmY2Y2My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb21iaW5lLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2MCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gVG8gZG86IGFkZCBzdXBwb3J0IGZvciByYW5kb20tYWNjZXNzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT01CSU5FX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09NQklORV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5PX1NURF9MT0NBTEUsIERFRFVDRURfVFlQRU5BTUUuCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgaW5jbHVkZSA8bG9jYWxlPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPiAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4gICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+ICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPiAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4gIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4gCi0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBjb21iaW5lZF9kZXZpY2UuCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgRGV2aWNlIGRlZmluZWQgaW4gdGVybXMgb2YgYSBTb3VyY2UvU2luayBwYWlyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgU291cmNlIC0gQSBtb2RlbCBvZiBTb3VyY2UsIHdpdGggdGhlIHNhbWUgY2hhcl90eXBlIGFuZCB0cmFpdHNfdHlwZQotLy8gICAgICAgICAgYXMgU2luay4KLS8vICAgICAgU2luayAtIEEgbW9kZWwgb2YgU2luaywgd2l0aCB0aGUgc2FtZSBjaGFyX3R5cGUgYW5kIHRyYWl0c190eXBlCi0vLyAgICAgICAgICBhcyBTb3VyY2UuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotY2xhc3MgY29tYmluZWRfZGV2aWNlIHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxTb3VyY2U+Ojp0eXBlICBpbl9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFNpbms+Ojp0eXBlICAgIG91dF9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTaW5rPjo6dHlwZSAgIHNpbmtfY2hhcl90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFNvdXJjZT46OnR5cGUgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGJpZGlyZWN0aW9uYWwsIAotICAgICAgICAgIGRldmljZV90YWcsIAotICAgICAgICAgIGNsb3NhYmxlX3RhZywgCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2RldmljZTxTb3VyY2U+Ojp2YWx1ZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19kZXZpY2U8U2luaz46OnZhbHVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxpbl9jYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSkpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPG91dF9jYXRlZ29yeSwgb3V0cHV0Pjo6dmFsdWUpKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19zYW1lPGNoYXJfdHlwZSwgc2lua19jaGFyX3R5cGU+Ojp2YWx1ZSkpOwotICAgIGNvbWJpbmVkX2RldmljZShjb25zdCBTb3VyY2UmIHNyYywgY29uc3QgU2luayYgc25rKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlKTsKLSAgICAjaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgICAgICAgdm9pZCBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKTsKLSAgICAjZW5kaWYKLXByaXZhdGU6Ci0gICAgU291cmNlICBzcmNfOwotICAgIFNpbmsgICAgc2lua187Ci19OwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogY29tYmluZWRfZmlsdGVyLgotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIERldmljZSBkZWZpbmVkIGluIHRlcm1zIG9mIGEgU291cmNlL1NpbmsgcGFpci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIElucHV0RmlsdGVyIC0gQSBtb2RlbCBvZiBJbnB1dEZpbHRlciwgd2l0aCB0aGUgc2FtZSBjaGFyX3R5cGUgYXMgCi0vLyAgICAgICAgICBPdXRwdXRGaWx0ZXIuCi0vLyAgICAgIE91dHB1dEZpbHRlciAtIEEgbW9kZWwgb2YgT3V0cHV0RmlsdGVyLCB3aXRoIHRoZSBzYW1lIGNoYXJfdHlwZSBhcyAKLS8vICAgICAgICAgIElucHV0RmlsdGVyLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIElucHV0RmlsdGVyLCB0eXBlbmFtZSBPdXRwdXRGaWx0ZXI+Ci1jbGFzcyBjb21iaW5lZF9maWx0ZXIgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPElucHV0RmlsdGVyPjo6dHlwZSAgICBpbl9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPE91dHB1dEZpbHRlcj46OnR5cGUgICBvdXRfY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8T3V0cHV0RmlsdGVyPjo6dHlwZSAgb3V0cHV0X2NoYXJfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxJbnB1dEZpbHRlcj46OnR5cGUgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IG11bHRpY2hhcl9iaWRpcmVjdGlvbmFsX2ZpbHRlcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLCAKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZmlsdGVyPElucHV0RmlsdGVyPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZmlsdGVyPE91dHB1dEZpbHRlcj46OnZhbHVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxpbl9jYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSkpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPG91dF9jYXRlZ29yeSwgb3V0cHV0Pjo6dmFsdWUpKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19zYW1lPGNoYXJfdHlwZSwgb3V0cHV0X2NoYXJfdHlwZT46OnZhbHVlKSk7Ci0gICAgY29tYmluZWRfZmlsdGVyKGNvbnN0IElucHV0RmlsdGVyJiBpbiwgY29uc3QgT3V0cHV0RmlsdGVyJiBvdXQpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKFNvdXJjZSYgc3JjLCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnJlYWQoaW5fLCBzcmMsIHMsIG4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gbmRuYm9vc3Q6Omlvc3RyZWFtczo6d3JpdGUob3V0Xywgc25rLCBzLCBuKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluKSB7Ci0gICAgICAgICAgICBpZiAoaXNfY29udmVydGlibGU8aW5fY2F0ZWdvcnksIGR1YWxfdXNlPjo6dmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpb3N0cmVhbXM6OmNsb3NlKGluXywgc25rLCBORE5CT09TVF9JT1M6OmluKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwoaW5fLCBzbmspOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkgewotICAgICAgICAgICAgaWYgKGlzX2NvbnZlcnRpYmxlPG91dF9jYXRlZ29yeSwgZHVhbF91c2U+Ojp2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6Y2xvc2Uob3V0Xywgc25rLCBORE5CT09TVF9JT1M6Om91dCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKG91dF8sIHNuayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0gICAgICAgIHZvaWQgaW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGxvYyk7Ci0gICAgI2VuZGlmCi1wcml2YXRlOgotICAgIElucHV0RmlsdGVyICAgaW5fOwotICAgIE91dHB1dEZpbHRlciAgb3V0XzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEluLCB0eXBlbmFtZSBPdXQ+Ci1zdHJ1Y3QgY29tYmluYXRpb25fdHJhaXRzIAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfZGV2aWNlPEluPiwKLSAgICAgICAgICBjb21iaW5lZF9kZXZpY2U8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxJbj46OnR5cGUsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxPdXQ+Ojp0eXBlCi0gICAgICAgICAgPiwKLSAgICAgICAgICBjb21iaW5lZF9maWx0ZXI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxJbj46OnR5cGUsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxPdXQ+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPgotICAgIHsgfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgSW4sIHR5cGVuYW1lIE91dD4KLXN0cnVjdCBjb21iaW5hdGlvbiA6IGRldGFpbDo6Y29tYmluYXRpb25fdHJhaXRzPEluLCBPdXQ+Ojp0eXBlIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Y29tYmluYXRpb25fdHJhaXRzPEluLCBPdXQ+Ojp0eXBlICBiYXNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OndyYXBwZWRfdHlwZTxJbj46OnR5cGUgICAgICAgICAgaW5fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6d3JhcHBlZF90eXBlPE91dD46OnR5cGUgICAgICAgICBvdXRfdHlwZTsKLSAgICBjb21iaW5hdGlvbihjb25zdCBpbl90eXBlJiBpbiwgY29uc3Qgb3V0X3R5cGUmIG91dCkKLSAgICAgICAgOiBiYXNlX3R5cGUoaW4sIG91dCkgeyB9Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gV29ya2Fyb3VuZCBmb3IgVkM2IEVUSSBidWcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbiwgdHlwZW5hbWUgT3V0Pgotc3RydWN0IGNvbWJpbmVfdHJhaXRzIHsKLSAgICB0eXBlZGVmIGNvbWJpbmF0aW9uPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxJbj46OnR5cGUsIAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxPdXQ+Ojp0eXBlCi0gICAgICAgICAgICA+IHR5cGU7Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogY29tYmluZS4KLS8vIERlc2NyaXB0aW9uOiBUYWtlcyBhIFNvdXJjZS9TaW5rIHBhaXIgb3IgSW5wdXRGaWx0ZXIvT3V0cHV0RmlsdGVyIHBhaXIgYW5kCi0vLyAgICAgIHJldHVybnMgYSBTb3VyY2Ugb3IgRmlsdGVyIHdoaWNoIHBlcmZvcm1zIGlucHV0IHVzaW5nIHRoZSBmaXJzdCBtZW1iZXIKLS8vICAgICAgb2YgdGhlIHBhaXIgYW5kIG91dHB1dCB1c2luZyB0aGUgc2Vjb25kIG1lbWJlciBvZiB0aGUgcGFpci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIEluIC0gQSBtb2RlbCBvZiBTb3VyY2Ugb3IgSW5wdXRGaWx0ZXIsIHdpdGggdGhlIHNhbWUgY2hhcl90eXBlIGFzIE91dC4KLS8vICAgICAgT3V0IC0gQSBtb2RlbCBvZiBTaW5rIG9yIE91dHB1dEZpbHRlciwgd2l0aCB0aGUgc2FtZSBjaGFyX3R5cGUgYXMgSW4uCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgSW4sIHR5cGVuYW1lIE91dD4KLXR5cGVuYW1lIGRldGFpbDo6Y29tYmluZV90cmFpdHM8SW4sIE91dD46OnR5cGUKLWNvbWJpbmUoY29uc3QgSW4mIGluLCBjb25zdCBPdXQmIG91dCkgCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjb21iaW5lX3RyYWl0czxJbiwgT3V0Pjo6dHlwZSByZXR1cm5fdHlwZTsKLSAgICByZXR1cm4gcmV0dXJuX3R5cGUoaW4sIG91dCk7IAotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGNvbWJpbmVkX2RldmljZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotaW5saW5lIGNvbWJpbmVkX2RldmljZTxTb3VyY2UsIFNpbms+Ojpjb21iaW5lZF9kZXZpY2UKLSAgICAoY29uc3QgU291cmNlJiBzcmMsIGNvbnN0IFNpbmsmIHNuaykKLSAgICA6IHNyY18oc3JjKSwgc2lua18oc25rKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZQotY29tYmluZWRfZGV2aWNlPFNvdXJjZSwgU2luaz46OnJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGlvc3RyZWFtczo6cmVhZChzcmNfLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplCi1jb21iaW5lZF9kZXZpY2U8U291cmNlLCBTaW5rPjo6d3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGlvc3RyZWFtczo6d3JpdGUoc2lua18sIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLWlubGluZSB2b2lkCi1jb21iaW5lZF9kZXZpY2U8U291cmNlLCBTaW5rPjo6Y2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgCi0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHNyY18pOyAKLSAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHNpbmtfKTsgCi19Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNvbWJpbmVkX2RldmljZTxTb3VyY2UsIFNpbms+OjppbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKQotICAgIHsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShzcmNfLCBsb2MpOwotICAgICAgICBpb3N0cmVhbXM6OmltYnVlKHNpbmtfLCBsb2MpOwotICAgIH0KLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgZmlsdGVyX3BhaXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEZpbHRlciwgdHlwZW5hbWUgT3V0cHV0RmlsdGVyPgotaW5saW5lIGNvbWJpbmVkX2ZpbHRlcjxJbnB1dEZpbHRlciwgT3V0cHV0RmlsdGVyPjo6Y29tYmluZWRfZmlsdGVyCi0gICAgKGNvbnN0IElucHV0RmlsdGVyJiBpbiwgY29uc3QgT3V0cHV0RmlsdGVyJiBvdXQpIDogaW5fKGluKSwgb3V0XyhvdXQpCi0gICAgeyB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0RmlsdGVyLCB0eXBlbmFtZSBPdXRwdXRGaWx0ZXI+Ci0gICAgdm9pZCBjb21iaW5lZF9maWx0ZXI8SW5wdXRGaWx0ZXIsIE91dHB1dEZpbHRlcj46OmltYnVlCi0gICAgICAgIChjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKQotICAgIHsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShpbl8sIGxvYyk7Ci0gICAgICAgIGlvc3RyZWFtczo6aW1idWUob3V0XywgbG9jKTsKLSAgICB9Ci0jZW5kaWYKLQotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT01CSU5FX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29tcG9zZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb21wb3NlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ1NWRkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb21wb3NlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5NCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gTm90ZTogYmlkaXJlY3Rpb25hbCBzdHJlYW1zIGFyZSBub3Qgc3VwcG9ydGVkLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT01QT1NFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09NUE9TRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgIC8vIG1pbi4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgICAgICAgICAgIC8vIHBhaXIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAvLyBERURVQ0VEX1RZUEVOQU1FLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGlyZWN0X2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4gICAgICAvLyBtb2RlX29mLCBpc19kaXJlY3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGaXJzdCwgCi0gICAgICAgICAgdHlwZW5hbWUgU2Vjb25kLAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0TW9kZSA9IAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1vZGVfb2Y8Rmlyc3Q+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIFNlY29uZE1vZGUgPSAKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtb2RlX29mPFNlY29uZD46OnR5cGUgPgotc3RydWN0IGNvbXBvc2l0ZV9tb2RlCi0gICAgOiBzZWxlY3Q8Ci0gICAgICAgICAgaXNfY29udmVydGlibGU8U2Vjb25kTW9kZSwgRmlyc3RNb2RlPiwgRmlyc3RNb2RlLAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPEZpcnN0TW9kZSwgU2Vjb25kTW9kZT4sIFNlY29uZE1vZGUsCi0gICAgICAgICAgaXNfY29udmVydGlibGU8U2Vjb25kTW9kZSwgaW5wdXQ+LCAgICAgaW5wdXQsCi0gICAgICAgICAgZWxzZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Ci0gICAgICA+Ci0gICAgeyB9OwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogY29tcG9zaXRlX2RldmljZS4KLS8vIERlc2NyaXB0aW9uOiBQcm92aWRlcyBhIERldmljZSB2aWV3IG9mIGEgRmlsdGVyLCBEZXZpY2UgcGFpci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIEZpbHRlciAtIEEgbW9kZWwgb2YgRmlsdGVyLgotLy8gICAgICBEZXZpY2UgLSBBbiBpbmRpcmVjdCBtb2RlbCBvZiBEZXZpY2UuCi0vLwotdGVtcGxhdGU8IHR5cGVuYW1lIEZpbHRlciwKLSAgICAgICAgICB0eXBlbmFtZSBEZXZpY2UsCi0gICAgICAgICAgdHlwZW5hbWUgTW9kZSA9Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY29tcG9zaXRlX21vZGU8RmlsdGVyLCBEZXZpY2U+Ojp0eXBlID4KLWNsYXNzIGNvbXBvc2l0ZV9kZXZpY2UgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxEZXZpY2U+Ojp0eXBlICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPEZpbHRlcj46OnR5cGUgICAgICAgICAgICAgICAgICBmaWx0ZXJfbW9kZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RGV2aWNlPjo6dHlwZSAgICAgICAgICAgICAgICAgIGRldmljZV9tb2RlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIGlvc3RyZWFtczo6c2VsZWN0PCAgLy8gRGlzYW1iaWd1YXRpb24gZm9yIFRydTY0LgotICAgICAgICAgICAgICAgIGlzX2RpcmVjdDxEZXZpY2U+LCAgZGlyZWN0X2FkYXB0ZXI8RGV2aWNlPiwKLSAgICAgICAgICAgICAgICBpc19zdGRfaW88RGV2aWNlPiwgIERldmljZSYsCi0gICAgICAgICAgICAgICAgZWxzZV8sICAgICAgICAgICAgICBEZXZpY2UKLSAgICAgICAgICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19maWx0ZXI8RmlsdGVyPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZGV2aWNlPERldmljZT46OnZhbHVlKTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxGaWx0ZXI+Ojp0eXBlICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBNb2RlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGZsdXNoYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnLAotICAgICAgICAgIG9wdGltYWxseV9idWZmZXJlZF90YWcKLSAgICAgICAgeyB9OwotICAgIGNvbXBvc2l0ZV9kZXZpY2UoY29uc3QgRmlsdGVyJiBmbHQsIHBhcmFtX3R5cGUgZGV2KTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApOwotCi0gICAgdm9pZCBjbG9zZSgpOwotICAgIHZvaWQgY2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCk7Ci0gICAgYm9vbCBmbHVzaCgpOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKCkgY29uc3Q7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NhbGU+IC8vIEF2b2lkIGRlcGVuZGVuY3kgb24gPGxvY2FsZT4KLSAgICB2b2lkIGltYnVlKGNvbnN0IExvY2FsZSYgbG9jKQotICAgIHsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShmaWx0ZXJfLCBsb2MpOwotICAgICAgICBpb3N0cmVhbXM6OmltYnVlKGRldmljZV8sIGxvYyk7Ci0gICAgfQotCi0gICAgRmlsdGVyJiBmaXJzdCgpIHsgcmV0dXJuIGZpbHRlcl87IH0KLSAgICBEZXZpY2UmIHNlY29uZCgpIHsgcmV0dXJuIGRldmljZV87IH0KLXByaXZhdGU6Ci0gICAgRmlsdGVyICAgICAgZmlsdGVyXzsKLSAgICB2YWx1ZV90eXBlICBkZXZpY2VfOwotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGNvbXBvc2l0ZV9kZXZpY2UuCi0vLyBEZXNjcmlwdGlvbjogUHJvdmlkZXMgYSBEZXZpY2UgdmlldyBvZiBhIEZpbHRlciwgRGV2aWNlIHBhaXIuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBGaWx0ZXIgLSBBIG1vZGVsIG9mIEZpbHRlci4KLS8vICAgICAgRGV2aWNlIC0gQW4gaW5kaXJlY3QgbW9kZWwgb2YgRGV2aWNlLgotLy8KLXRlbXBsYXRlPCB0eXBlbmFtZSBGaWx0ZXIxLCAKLSAgICAgICAgICB0eXBlbmFtZSBGaWx0ZXIyLAotICAgICAgICAgIHR5cGVuYW1lIE1vZGUgPQotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNvbXBvc2l0ZV9tb2RlPEZpbHRlcjEsIEZpbHRlcjI+Ojp0eXBlID4KLWNsYXNzIGNvbXBvc2l0ZV9maWx0ZXIgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHJlZmVyZW5jZV93cmFwcGVyPEZpbHRlcjI+ICAgICAgICAgICBmaWx0ZXJfcmVmOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbW9kZV9vZjxGaWx0ZXIxPjo6dHlwZSAgICAgIGZpcnN0X21vZGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPEZpbHRlcjI+Ojp0eXBlICAgICAgc2Vjb25kX21vZGU7Ci0KLSAgICAvLyBBIGR1YWwtdXNlIGZpbHRlciBjYW5ub3QgYmUgY29tcG9zZWQgd2l0aCBhIHJlYWQtd3JpdGUgZmlsdGVyCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICAgIShpc19jb252ZXJ0aWJsZTxmaXJzdF9tb2RlLCBkdWFsX3VzZT46OnZhbHVlKSB8fAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPHNlY29uZF9tb2RlLCBpbnB1dD46OnZhbHVlKSB8fAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPHNlY29uZF9tb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkgfHwKLSAgICAgICAgIChpc19jb252ZXJ0aWJsZTxzZWNvbmRfbW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSkKLSAgICApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAgICEoaXNfY29udmVydGlibGU8c2Vjb25kX21vZGUsIGR1YWxfdXNlPjo6dmFsdWUpIHx8Ci0gICAgICAgICEoaXNfY29udmVydGlibGU8Zmlyc3RfbW9kZSwgaW5wdXQ+Ojp2YWx1ZSkgfHwKLSAgICAgICAgIShpc19jb252ZXJ0aWJsZTxmaXJzdF9tb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkgfHwKLSAgICAgICAgIChpc19jb252ZXJ0aWJsZTxmaXJzdF9tb2RlLCBkdWFsX3VzZT46OnZhbHVlKQotICAgICk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19maWx0ZXI8RmlsdGVyMT46OnZhbHVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2ZpbHRlcjxGaWx0ZXIyPjo6dmFsdWUpOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPEZpbHRlcjE+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogTW9kZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIG11bHRpY2hhcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGZsdXNoYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnLAotICAgICAgICAgIG9wdGltYWxseV9idWZmZXJlZF90YWcKLSAgICAgICAgeyB9OwotICAgIGNvbXBvc2l0ZV9maWx0ZXIoY29uc3QgRmlsdGVyMSYgZmlsdGVyMSwgY29uc3QgRmlsdGVyMiYgZmlsdGVyMikKLSAgICAgICAgOiBmaWx0ZXIxXyhmaWx0ZXIxKSwgZmlsdGVyMl8oZmlsdGVyMikKLSAgICAgICAgeyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBjb21wb3NpdGVfZGV2aWNlPGZpbHRlcl9yZWYsIFNvdXJjZT4gY21wKG5kbmJvb3N0OjpyZWYoZmlsdGVyMl8pLCBzcmMpOwotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjpyZWFkKGZpbHRlcjFfLCBjbXAsIHMsIG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmIHNuaywgY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIGNvbXBvc2l0ZV9kZXZpY2U8ZmlsdGVyX3JlZiwgU2luaz4gY21wKG5kbmJvb3N0OjpyZWYoZmlsdGVyMl8pLCBzbmspOwotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZShmaWx0ZXIxXywgY21wLCBzLCBuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2VlayggRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQotICAgIHsKLSAgICAgICAgY29tcG9zaXRlX2RldmljZTxmaWx0ZXJfcmVmLCBEZXZpY2U+IGNtcChuZG5ib29zdDo6cmVmKGZpbHRlcjJfKSwgZGV2KTsKLSAgICAgICAgcmV0dXJuIGlvc3RyZWFtczo6c2VlayhmaWx0ZXIxXywgY21wLCBvZmYsIHdheSwgd2hpY2gpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYgZGV2KQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCB0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGR1YWxfdXNlPjo6dmFsdWUpKTsKLQotICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZGV2aWNlIGJ5IGNvbXBvc2luZyB0aGUgc2Vjb25kIGZpbHRlcjJfIHdpdGggZGV2LgotICAgICAgICBjb21wb3NpdGVfZGV2aWNlPGZpbHRlcl9yZWYsIERldmljZT4gY21wKG5kbmJvb3N0OjpyZWYoZmlsdGVyMl8pLCBkZXYpOwotCi0gICAgICAgIC8vIENsb3NlIGlucHV0IHNlcXVlbmNlcyBpbiByZXZlcnNlIG9yZGVyIGFuZCBvdXRwdXQgc2VxdWVuY2VzIGluIAotICAgICAgICAvLyBmb3J3YXJkIG9yZGVyCi0gICAgICAgIGlmICghaXNfY29udmVydGlibGU8Zmlyc3RfbW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSkgewotICAgICAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMl8sIGRldiwgTkROQk9PU1RfSU9TOjppbiksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjFfLCBjbXAsIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIxXywgY21wLCBORE5CT09TVF9JT1M6Om91dCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjJfLCBkZXYsIE5ETkJPT1NUX0lPUzo6b3V0KQotICAgICAgICAgICAgKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc19jb252ZXJ0aWJsZTxzZWNvbmRfbW9kZSwgaW5wdXQ+Ojp2YWx1ZSkgewotICAgICAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMl8sIGRldiwgTkROQk9PU1RfSU9TOjppbiksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjFfLCBjbXAsIE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgICAgICApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMV8sIGNtcCwgTkROQk9PU1RfSU9TOjpvdXQpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIyXywgZGV2LCBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBjbG9zZShEZXZpY2UmIGRldiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAgICAgICAoaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIHR3b19zZXF1ZW5jZT46OnZhbHVlKSB8fAotICAgICAgICAgICAgKGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBkdWFsX3VzZT46OnZhbHVlKQotICAgICAgICApOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBkZXZpY2UgYnkgY29tcG9zaW5nIHRoZSBzZWNvbmQgZmlsdGVyMl8gd2l0aCBkZXYuCi0gICAgICAgIGNvbXBvc2l0ZV9kZXZpY2U8ZmlsdGVyX3JlZiwgRGV2aWNlPiBjbXAobmRuYm9vc3Q6OnJlZihmaWx0ZXIyXyksIGRldik7Ci0KLSAgICAgICAgLy8gQ2xvc2UgaW5wdXQgc2VxdWVuY2VzIGluIHJldmVyc2Ugb3JkZXIKLSAgICAgICAgaWYgKCB3aGljaCA9PSBORE5CT09TVF9JT1M6OmluICYmCi0gICAgICAgICAgICAgKCAhaXNfY29udmVydGlibGU8Zmlyc3RfbW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPHNlY29uZF9tb2RlLCBpbnB1dD46OnZhbHVlICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIyXywgZGV2LCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMV8sIGNtcCwgTkROQk9PU1RfSU9TOjppbikKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDbG9zZSBvdXRwdXQgc2VxdWVuY2VzIGluIGZvcndhcmQgb3JkZXIKLSAgICAgICAgaWYgKCB3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCAmJgotICAgICAgICAgICAgICggIWlzX2NvbnZlcnRpYmxlPGZpcnN0X21vZGUsIGR1YWxfdXNlPjo6dmFsdWUgfHwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxzZWNvbmRfbW9kZSwgb3V0cHV0Pjo6dmFsdWUgKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRldGFpbDo6ZXhlY3V0ZV9hbGwoCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjFfLCBjbXAsIE5ETkJPT1NUX0lPUzo6b3V0KSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMl8sIGRldiwgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIGJvb2wgZmx1c2goRGV2aWNlJiBkZXYpCi0gICAgewotICAgICAgICBjb21wb3NpdGVfZGV2aWNlPEZpbHRlcjIsIERldmljZT4gY21wKGZpbHRlcjJfLCBkZXYpOwotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjpmbHVzaChmaWx0ZXIxXywgY21wKTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgZmlyc3QgPSBpb3N0cmVhbXM6Om9wdGltYWxfYnVmZmVyX3NpemUoZmlsdGVyMV8pOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgc2Vjb25kID0gaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKGZpbHRlcjJfKTsKLSAgICAgICAgcmV0dXJuIGZpcnN0IDwgc2Vjb25kID8gc2Vjb25kIDogZmlyc3Q7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPiAvLyBBdm9pZCBkZXBlbmRlbmN5IG9uIDxsb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmIGxvYykKLSAgICB7ICAgLy8gVG8gZG86IGNvbnNpZGVyIHVzaW5nIFJBSUkuCi0gICAgICAgIGlvc3RyZWFtczo6aW1idWUoZmlsdGVyMV8sIGxvYyk7Ci0gICAgICAgIGlvc3RyZWFtczo6aW1idWUoZmlsdGVyMl8sIGxvYyk7Ci0gICAgfQotCi0gICAgRmlsdGVyMSYgZmlyc3QoKSB7IHJldHVybiBmaWx0ZXIxXzsgfQotICAgIEZpbHRlcjImIHNlY29uZCgpIHsgcmV0dXJuIGZpbHRlcjJfOyB9Ci1wcml2YXRlOgotICAgIEZpbHRlcjEgIGZpbHRlcjFfOwotICAgIEZpbHRlcjIgIGZpbHRlcjJfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBGaWx0ZXJPckRldmljZT4KLXN0cnVjdCBjb21wb3NpdGVfdHJhaXRzCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19kZXZpY2U8RmlsdGVyT3JEZXZpY2U+LAotICAgICAgICAgIGNvbXBvc2l0ZV9kZXZpY2U8RmlsdGVyLCBGaWx0ZXJPckRldmljZT4sCi0gICAgICAgICAgY29tcG9zaXRlX2ZpbHRlcjxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPgotICAgICAgPgotICAgIHsgfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBGaWx0ZXJPckRldmljZT4KLXN0cnVjdCBjb21wb3NpdGUgOiBkZXRhaWw6OmNvbXBvc2l0ZV90cmFpdHM8RmlsdGVyLCBGaWx0ZXJPckRldmljZT46OnR5cGUgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbV90eXBlPEZpbHRlck9yRGV2aWNlPjo6dHlwZSBwYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjb21wb3NpdGVfdHJhaXRzPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+Ojp0eXBlIGJhc2U7Ci0gICAgY29tcG9zaXRlKGNvbnN0IEZpbHRlciYgZmx0LCBwYXJhbV90eXBlIGRldikKLSAgICAgICAgOiBiYXNlKGZsdCwgZGV2KQotICAgICAgICB7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBjb21wb3NlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIE5vdGU6IFRoZSBmb2xsb3dpbmcgd29ya2Fyb3VuZHMgYXJlIHBhdHRlcm5lZCBhZnRlciByZXNvbHZlLmhwcC4gSXQgaGFzIG5vdAotLy8geWV0IGJlZW4gY29uZmlybWVkIHRoYXQgdGhleSBhcmUgbmVjZXNzYXJ5LgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBGaWx0ZXJPckRldmljZT4KLWNvbXBvc2l0ZTxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPgotY29tcG9zZSggY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlck9yRGV2aWNlJiBmb2QKLSAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShGaWx0ZXJPckRldmljZSkgKQoteyByZXR1cm4gY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+KGZpbHRlciwgZm9kKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLWNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxDaCwgVHI+ID4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoLCBUcj4mIHNiKQoteyByZXR1cm4gY29tcG9zaXRlPCBGaWx0ZXIsIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoLCBUcj4gPihmaWx0ZXIsIHNiKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLWNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiA+Ci1jb21wb3NlKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiYgaXMpCi17IHJldHVybiBjb21wb3NpdGU8IEZpbHRlciwgc3RkOjpiYXNpY19pc3RyZWFtPENoLCBUcj4gPihmaWx0ZXIsIGlzKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLWNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiA+Ci1jb21wb3NlKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiYgb3MpCi17IHJldHVybiBjb21wb3NpdGU8IEZpbHRlciwgc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4gPihmaWx0ZXIsIG9zKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLWNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4gPgotY29tcG9zZShjb25zdCBGaWx0ZXImIGZpbHRlciwgc3RkOjpiYXNpY19pb3N0cmVhbTxDaCwgVHI+JiBpbykKLXsgcmV0dXJuIGNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4gPihmaWx0ZXIsIGlvKTsgfQotCi0jIGVsc2UgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIEZpbHRlck9yRGV2aWNlPgotY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+Ci1jb21wb3NlKCBjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyT3JEZXZpY2UmIGZvZAotICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKEZpbHRlck9yRGV2aWNlKSApCi17IHJldHVybiBjb21wb3NpdGU8RmlsdGVyLCBGaWx0ZXJPckRldmljZT4oZmlsdGVyLCBmb2QpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6c3RyZWFtYnVmPgotY29tcG9zZShjb25zdCBGaWx0ZXImIGZpbHRlciwgc3RkOjpzdHJlYW1idWYmIHNiKQoteyByZXR1cm4gY29tcG9zaXRlPEZpbHRlciwgc3RkOjpzdHJlYW1idWY+KGZpbHRlciwgc2IpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6aXN0cmVhbT4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6aXN0cmVhbSYgaXMpCi17IHJldHVybiBjb21wb3NpdGU8RmlsdGVyLCBzdGQ6OmlzdHJlYW0+KGZpbHRlciwgaXMpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6b3N0cmVhbT4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6b3N0cmVhbSYgb3MpCi17IHJldHVybiBjb21wb3NpdGU8RmlsdGVyLCBzdGQ6Om9zdHJlYW0+KGZpbHRlciwgb3MpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6aW9zdHJlYW0+Ci1jb21wb3NlKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBzdGQ6Omlvc3RyZWFtJiBpbykKLXsgcmV0dXJuIGNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6aW9zdHJlYW0+KGZpbHRlciwgaW8pOyB9Ci0KLSMgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIFN0cmVhbT4KLWNvbXBvc2l0ZTxGaWx0ZXIsIFN0cmVhbT4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmbHQsIGNvbnN0IFN0cmVhbSYgc3RybSwgbXBsOjp0cnVlXykKLXsgICAvLyBCYWQgb3ZlcmxvYWQgcmVzb2x1dGlvbi4KLSAgICByZXR1cm4gY29tcG9zaXRlPEZpbHRlciwgU3RyZWFtPihmbHQsIGNvbnN0X2Nhc3Q8U3RyZWFtJj4oc3RybSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIEZpbHRlck9yRGV2aWNlPgotY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+Ci1jb21wb3NlKGNvbnN0IEZpbHRlciYgZmx0LCBjb25zdCBGaWx0ZXJPckRldmljZSYgZm9kLCBtcGw6OmZhbHNlXykKLXsgcmV0dXJuIGNvbXBvc2l0ZTxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPihmbHQsIGZvZCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBGaWx0ZXJPckRldmljZT4KLWNvbXBvc2l0ZTxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPgotY29tcG9zZSggY29uc3QgRmlsdGVyJiBmbHQsIGNvbnN0IEZpbHRlck9yRGV2aWNlJiBmb2QKLSAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKSApCi17IHJldHVybiBjb21wb3NlKGZsdCwgZm9kLCBpc19zdGRfaW88RmlsdGVyT3JEZXZpY2U+KCkpOyB9Ci0KLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiBcCi0gICAgICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApICYmIFwKLSAgICAgIWRlZmluZWQoX19HTlVDX18pIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRmlsdGVyT3JEZXZpY2U+Ci1jb21wb3NpdGU8RmlsdGVyLCBGaWx0ZXJPckRldmljZT4KLWNvbXBvc2UgKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJPckRldmljZSYgZm9kKQoteyByZXR1cm4gY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+KGZpbHRlciwgZm9kKTsgfQotCi0jIGVuZGlmIC8vIEJvcmxhbmQgNS54LCBWQzYtNy4wIG9yIEdDQyAyLjl4IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBjb21wb3NpdGVfZGV2aWNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIE1vZGU+Ci1jb21wb3NpdGVfZGV2aWNlPEZpbHRlciwgRGV2aWNlLCBNb2RlPjo6Y29tcG9zaXRlX2RldmljZQotICAgIChjb25zdCBGaWx0ZXImIGZsdCwgcGFyYW1fdHlwZSBkZXYpCi0gICAgOiBmaWx0ZXJfKGZsdCksIGRldmljZV8oZGV2KQotICAgIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OnJlYWQKLSAgICAoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGlvc3RyZWFtczo6cmVhZChmaWx0ZXJfLCBkZXZpY2VfLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBpb3N0cmVhbXM6OndyaXRlKGZpbHRlcl8sIGRldmljZV8sIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBNb2RlPgotc3RkOjpzdHJlYW1wb3MgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OnNlZWsKLSAgICAoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17IHJldHVybiBpb3N0cmVhbXM6OnNlZWsoZmlsdGVyXywgZGV2aWNlXywgb2ZmLCB3YXksIHdoaWNoKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLXZvaWQgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OmNsb3NlKCkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8TW9kZSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPGZpbHRlcl9tb2RlLCBkdWFsX3VzZT46OnZhbHVlKSB8fAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPGRldmljZV9tb2RlLCBpbnB1dD46OnZhbHVlKSB8fAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPGRldmljZV9tb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkKLSAgICApOwotCi0gICAgLy8gQ2xvc2UgaW5wdXQgc2VxdWVuY2VzIGluIHJldmVyc2Ugb3JkZXIgYW5kIG91dHB1dCBzZXF1ZW5jZXMgCi0gICAgLy8gaW4gZm9yd2FyZCBvcmRlcgotICAgIGlmICghaXNfY29udmVydGlibGU8ZmlsdGVyX21vZGUsIGR1YWxfdXNlPjo6dmFsdWUpIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShkZXZpY2VfLCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXJfLCBkZXZpY2VfLCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXJfLCBkZXZpY2VfLCBORE5CT09TVF9JT1M6Om91dCksCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZGV2aWNlXywgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICk7Ci0gICAgfSBlbHNlIGlmIChpc19jb252ZXJ0aWJsZTxkZXZpY2VfbW9kZSwgaW5wdXQ+Ojp2YWx1ZSkgewotICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGRldmljZV8sIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcl8sIGRldmljZV8sIE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgICk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXJfLCBkZXZpY2VfLCBORE5CT09TVF9JT1M6Om91dCksCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZGV2aWNlXywgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLXZvaWQgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OmNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8TW9kZSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCEoaXNfY29udmVydGlibGU8ZmlsdGVyX21vZGUsIGR1YWxfdXNlPjo6dmFsdWUpKTsKLQotICAgIC8vIENsb3NlIGlucHV0IHNlcXVlbmNlcyBpbiByZXZlcnNlIG9yZGVyCi0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShkZXZpY2VfLCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXJfLCBkZXZpY2VfLCBORE5CT09TVF9JT1M6OmluKSAKLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICAvLyBDbG9zZSBvdXRwdXQgc2VxdWVuY2VzIGluIGZvcndhcmQgb3JkZXIKLSAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXJfLCBkZXZpY2VfLCBORE5CT09TVF9JT1M6Om91dCksCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZGV2aWNlXywgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLWJvb2wgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OmZsdXNoKCkKLXsKLSAgICBib29sIHIxID0gaW9zdHJlYW1zOjpmbHVzaChmaWx0ZXJfLCBkZXZpY2VfKTsKLSAgICBib29sIHIyID0gaW9zdHJlYW1zOjpmbHVzaChkZXZpY2VfKTsKLSAgICByZXR1cm4gcjEgJiYgcjI7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBNb2RlPgotc3RkOjpzdHJlYW1zaXplCi1jb21wb3NpdGVfZGV2aWNlPEZpbHRlciwgRGV2aWNlLCBNb2RlPjo6b3B0aW1hbF9idWZmZXJfc2l6ZSgpIGNvbnN0Ci17IHJldHVybiBpb3N0cmVhbXM6Om9wdGltYWxfYnVmZmVyX3NpemUoZGV2aWNlXyk7IH0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09NUE9TRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbmNlcHRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbmNlcHRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU3MzRlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb25jZXB0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPTkNFUFRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09OQ0VQVFNfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIE5ETkJPT1NUX01TVkMKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGVmYXVsdF9hcmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIG9wZW5tb2RlLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb25zIG9mIGhlbHBlciB0ZW1wbGF0ZXMgZm9yIGRldmljZSBjb25jZXB0cy0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2ggPSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9BUkcoY2hhcik+Ci1zdHJ1Y3QgZGV2aWNlIHsKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBNb2RlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGxvY2FsaXphYmxlX3RhZwotICAgICAgICB7IH07Ci0KLSAgICB2b2lkIGNsb3NlKCkKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBkZXRhaWw7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxNb2RlLCB0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgIH0KLQotICAgIHZvaWQgY2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSkKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBkZXRhaWw7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPE1vZGUsIHR3b19zZXF1ZW5jZT46OnZhbHVlKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPgotICAgIHZvaWQgaW1idWUoY29uc3QgTG9jYWxlJikgeyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCA9IE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0FSRyh3Y2hhcl90KT4KLXN0cnVjdCB3ZGV2aWNlIDogZGV2aWNlPE1vZGUsIENoPiB7IH07Ci0KLXR5cGVkZWYgZGV2aWNlPGlucHV0PiAgICBzb3VyY2U7Ci10eXBlZGVmIHdkZXZpY2U8aW5wdXQ+ICAgd3NvdXJjZTsKLXR5cGVkZWYgZGV2aWNlPG91dHB1dD4gICBzaW5rOwotdHlwZWRlZiB3ZGV2aWNlPG91dHB1dD4gIHdzaW5rOwotCi0vLy0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbnMgb2YgaGVscGVyIHRlbXBsYXRlcyBmb3Igc2ltcGxlIGZpbHRlciBjb25jZXB0cy0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCA9IE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0FSRyhjaGFyKT4KLXN0cnVjdCBmaWx0ZXIgewotICAgIHR5cGVkZWYgQ2ggY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IE1vZGUsCi0gICAgICAgICAgZmlsdGVyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnCi0gICAgICAgIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYpCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2UgZGV0YWlsOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8TW9kZSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX2NvbnZlcnRpYmxlPE1vZGUsIGR1YWxfdXNlPjo6dmFsdWUpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBjbG9zZShEZXZpY2UmLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIGRldGFpbDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICAgICAgIChpc19jb252ZXJ0aWJsZTxNb2RlLCB0d29fc2VxdWVuY2U+Ojp2YWx1ZSkgfHwKLSAgICAgICAgICAgIChpc19jb252ZXJ0aWJsZTxNb2RlLCBkdWFsX3VzZT46OnZhbHVlKQotICAgICAgICApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2FsZT4KLSAgICB2b2lkIGltYnVlKGNvbnN0IExvY2FsZSYpIHsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2ggPSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9BUkcod2NoYXJfdCk+Ci1zdHJ1Y3Qgd2ZpbHRlciA6IGZpbHRlcjxNb2RlLCBDaD4geyB9OwotCi10eXBlZGVmIGZpbHRlcjxpbnB1dD4gICAgICBpbnB1dF9maWx0ZXI7Ci10eXBlZGVmIHdmaWx0ZXI8aW5wdXQ+ICAgICBpbnB1dF93ZmlsdGVyOwotdHlwZWRlZiBmaWx0ZXI8b3V0cHV0PiAgICAgb3V0cHV0X2ZpbHRlcjsKLXR5cGVkZWYgd2ZpbHRlcjxvdXRwdXQ+ICAgIG91dHB1dF93ZmlsdGVyOwotdHlwZWRlZiBmaWx0ZXI8c2Vla2FibGU+ICAgc2Vla2FibGVfZmlsdGVyOwotdHlwZWRlZiB3ZmlsdGVyPHNlZWthYmxlPiAgc2Vla2FibGVfd2ZpbHRlcjsKLXR5cGVkZWYgZmlsdGVyPGR1YWxfdXNlPiAgIGR1YWxfdXNlX2ZpbHRlcjsKLXR5cGVkZWYgd2ZpbHRlcjxkdWFsX3VzZT4gIGR1YWxfdXNlX3dmaWx0ZXI7Ci0gICAgICAgIAotLy8tLS0tLS1EZWZpbml0aW9ucyBvZiBoZWxwZXIgdGVtcGxhdGVzIGZvciBtdWx0aS1jaGFyYWN0ZXIgZmlsdGVyIGNuY2VwdHMtLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2ggPSBjaGFyPgotc3RydWN0IG11bHRpY2hhcl9maWx0ZXIgOiBmaWx0ZXI8TW9kZSwgQ2g+IHsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgOiBmaWx0ZXI8TW9kZSwgQ2g+OjpjYXRlZ29yeSwgbXVsdGljaGFyX3RhZyB7IH07Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCA9IHdjaGFyX3Q+Ci1zdHJ1Y3QgbXVsdGljaGFyX3dmaWx0ZXIgOiBtdWx0aWNoYXJfZmlsdGVyPE1vZGUsIENoPiB7IH07Ci0KLXR5cGVkZWYgbXVsdGljaGFyX2ZpbHRlcjxpbnB1dD4gICAgICBtdWx0aWNoYXJfaW5wdXRfZmlsdGVyOwotdHlwZWRlZiBtdWx0aWNoYXJfd2ZpbHRlcjxpbnB1dD4gICAgIG11bHRpY2hhcl9pbnB1dF93ZmlsdGVyOwotdHlwZWRlZiBtdWx0aWNoYXJfZmlsdGVyPG91dHB1dD4gICAgIG11bHRpY2hhcl9vdXRwdXRfZmlsdGVyOwotdHlwZWRlZiBtdWx0aWNoYXJfd2ZpbHRlcjxvdXRwdXQ+ICAgIG11bHRpY2hhcl9vdXRwdXRfd2ZpbHRlcjsKLXR5cGVkZWYgbXVsdGljaGFyX2ZpbHRlcjxkdWFsX3VzZT4gICBtdWx0aWNoYXJfZHVhbF91c2VfZmlsdGVyOwotdHlwZWRlZiBtdWx0aWNoYXJfd2ZpbHRlcjxkdWFsX3VzZT4gIG11bHRpY2hhcl9kdWFsX3VzZV93ZmlsdGVyOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPTkNFUFRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MzkzZDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyBjb25zdGFudHMgdXNlZCBieSBsaWJyYXJ5LgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT05TVEFOVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT05TVEFOVFNfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfREVWSUNFX0JVRkZFUl9TSVpFCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9ERVZJQ0VfQlVGRkVSX1NJWkUgNDA5NgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfRklMVEVSX0JVRkZFUl9TSVpFCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9GSUxURVJfQlVGRkVSX1NJWkUgMTI4Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9QQkFDS19CVUZGRVJfU0laRQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfUEJBQ0tfQlVGRkVSX1NJWkUgNAotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAvLyBzdHJlYW1zaXplLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotY29uc3Qgc3RkOjpzdHJlYW1zaXplIGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplID0gCi0gICAgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfREVWSUNFX0JVRkZFUl9TSVpFOyAKLWNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBkZWZhdWx0X2ZpbHRlcl9idWZmZXJfc2l6ZSA9IAotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0ZJTFRFUl9CVUZGRVJfU0laRTsKLWNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBkZWZhdWx0X3BiYWNrX2J1ZmZlcl9zaXplID0gCi0gICAgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfUEJBQ0tfQlVGRkVSX1NJWkU7Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09OU1RBTlRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29weS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb3B5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIxMWM1Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb3B5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1MiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQ29udGFpbnM6IFRoZSBmdW5jdGlvbiB0ZW1wbGF0ZSBjb3B5LCB3aGljaCByZWFkcyBkYXRhIGZyb20gYSBTb3VyY2UgCi0vLyBhbmQgd3JpdGVzIGl0IHRvIGEgU2luayB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSBpcyByZWFjaGVkLCByZXR1cm5pbmcgCi0vLyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdHJhbnNmZXJlZC4KLQotLy8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGNvbXBsaWNhdGVkIGJ5IHRoZSBuZWVkIHRvIGhhbmRsZSBzbWFydCBhZGFwdGVycwotLy8gYW5kIGRpcmVjdCBkZXZpY2VzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT1BZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09QWV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgcHRyZGlmZl90IGlzIGluIHN0ZC4KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29weSwgbWluLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwdHJkaWZmX3QuCi0jaW5jbHVkZSA8dXRpbGl0eT4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhaXIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL25vbl9ibG9ja2luZ19hZGFwdGVyLmhwcD4gICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnVmZmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2VuYWJsZV9pZl9zdHJlYW0uaHBwPiAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAvLyBmYWlsdXJlLCBzdHJlYW1zaXplLiAgICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc29sdmUuaHBwPiAgICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+ICAvLyByZWFkLCB3cml0ZSwgY2xvc2UuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4gIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPiAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBmb3VyIG92ZXJsb2FkcyBvZiBjb3B5X2ltcGwoKSBvcHRpbWl6ZSAKLSAgICAvLyBjb3B5aW5nIGluIHRoZSBjYXNlIHRoYXQgb25lIG9yIGJvdGggb2YgdGhlIHR3byBkZXZpY2VzCi0gICAgLy8gbW9kZWxzIERpcmVjdCAoc2VlIAotICAgIC8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zL2RvYy9pbmRleC5odG1sP3BhdGg9NC4xLjEuNCkKLQotLy8gQ29weSBmcm9tIGEgZGlyZWN0IHNvdXJjZSB0byBhIGRpcmVjdCBzaW5rCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1zdGQ6OnN0cmVhbXNpemUgY29weV9pbXBsKCBTb3VyY2UmIHNyYywgU2luayYgc25rLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAvKiBidWZmZXJfc2l6ZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6dHJ1ZV8sIG1wbDo6dHJ1ZV8gKQoteyAgIAotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8U291cmNlPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpwYWlyPGNoYXJfdHlwZSosIGNoYXJfdHlwZSo+ICAgIHBhaXJfdHlwZTsKLSAgICBwYWlyX3R5cGUgcDEgPSBpb3N0cmVhbXM6OmlucHV0X3NlcXVlbmNlKHNyYyk7Ci0gICAgcGFpcl90eXBlIHAyID0gaW9zdHJlYW1zOjpvdXRwdXRfc2VxdWVuY2Uoc25rKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgdG90YWwgPSAKLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPigKLSAgICAgICAgICAgIChzdGQ6Om1pbikocDEuc2Vjb25kIC0gcDEuZmlyc3QsIHAyLnNlY29uZCAtIHAyLmZpcnN0KQotICAgICAgICApOwotICAgIHN0ZDo6Y29weShwMS5maXJzdCwgcDEuZmlyc3QgKyB0b3RhbCwgcDIuZmlyc3QpOwotICAgIHJldHVybiB0b3RhbDsKLX0KLQotLy8gQ29weSBmcm9tIGEgZGlyZWN0IHNvdXJjZSB0byBhbiBpbmRpcmVjdCBzaW5rCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1zdGQ6OnN0cmVhbXNpemUgY29weV9pbXBsKCBTb3VyY2UmIHNyYywgU2luayYgc25rLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAvKiBidWZmZXJfc2l6ZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6dHJ1ZV8sIG1wbDo6ZmFsc2VfICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFNvdXJjZT46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiAgICBwYWlyX3R5cGU7Ci0gICAgcGFpcl90eXBlIHAgPSBpb3N0cmVhbXM6OmlucHV0X3NlcXVlbmNlKHNyYyk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHNpemUsIHRvdGFsOwotICAgIGZvciAoIHRvdGFsID0gMCwgc2l6ZSA9IHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4ocC5zZWNvbmQgLSBwLmZpcnN0KTsKLSAgICAgICAgICB0b3RhbCA8IHNpemU7ICkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgIGlvc3RyZWFtczo6d3JpdGUoc25rLCBwLmZpcnN0ICsgdG90YWwsIHNpemUgLSB0b3RhbCk7IAotICAgICAgICB0b3RhbCArPSBhbXQ7Ci0gICAgfQotICAgIHJldHVybiB0b3RhbDsKLX0KLQotLy8gQ29weSBmcm9tIGFuIGluZGlyZWN0IHNvdXJjZSB0byBhIGRpcmVjdCBzaW5rCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1zdGQ6OnN0cmVhbXNpemUgY29weV9pbXBsKCBTb3VyY2UmIHNyYywgU2luayYgc25rLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6ZmFsc2VfLCBtcGw6OnRydWVfICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTb3VyY2U+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OnBhaXI8Y2hhcl90eXBlKiwgY2hhcl90eXBlKj4gICAgcGFpcl90eXBlOwotICAgIGRldGFpbDo6YmFzaWNfYnVmZmVyPGNoYXJfdHlwZT4gIGJ1ZihidWZmZXJfc2l6ZSk7Ci0gICAgcGFpcl90eXBlICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHNuay5vdXRwdXRfc2VxdWVuY2UoKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgICAgICAgICAgICAgICAgICB0b3RhbCA9IDA7Ci0gICAgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgICAgICAgY2FwYWNpdHkgPSBwLnNlY29uZCAtIHAuZmlyc3Q7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IAotICAgICAgICAgICAgaW9zdHJlYW1zOjpyZWFkKAotICAgICAgICAgICAgICAgIHNyYywgCi0gICAgICAgICAgICAgICAgYnVmLmRhdGEoKSwKLSAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZSA8IGNhcGFjaXR5IC0gdG90YWwgPwotICAgICAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZSA6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oY2FwYWNpdHkgLSB0b3RhbCkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIGlmIChhbXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RkOjpjb3B5KGJ1Zi5kYXRhKCksIGJ1Zi5kYXRhKCkgKyBhbXQsIHAuZmlyc3QgKyB0b3RhbCk7Ci0gICAgICAgIHRvdGFsICs9IGFtdDsKLSAgICB9Ci0gICAgcmV0dXJuIHRvdGFsOwotfQotCi0vLyBDb3B5IGZyb20gYW4gaW5kaXJlY3Qgc291cmNlIHRvIGFuIGluZGlyZWN0IHNpbmsKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZSBjb3B5X2ltcGwoIFNvdXJjZSYgc3JjLCBTaW5rJiBzbmssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpmYWxzZV8sIG1wbDo6ZmFsc2VfICkKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8U291cmNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgZGV0YWlsOjpiYXNpY19idWZmZXI8Y2hhcl90eXBlPiAgYnVmKGJ1ZmZlcl9zaXplKTsKLSAgICBub25fYmxvY2tpbmdfYWRhcHRlcjxTaW5rPiAgICAgICBuYihzbmspOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSAgICAgICAgICAgICAgICAgIHRvdGFsID0gMDsKLSAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gZmFsc2U7Ci0gICAgd2hpbGUgKCFkb25lKSB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQ7Ci0gICAgICAgIGRvbmUgPSAoYW10ID0gaW9zdHJlYW1zOjpyZWFkKHNyYywgYnVmLmRhdGEoKSwgYnVmZmVyX3NpemUpKSA9PSAtMTsKLSAgICAgICAgaWYgKGFtdCAhPSAtMSkgewotICAgICAgICAgICAgaW9zdHJlYW1zOjp3cml0ZShuYiwgYnVmLmRhdGEoKSwgYW10KTsKLSAgICAgICAgICAgIHRvdGFsICs9IGFtdDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdG90YWw7Ci19Ci0KLSAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIG9iamVjdCBpcyB1c2VkIHdpdGggCi0gICAgLy8gbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpleGVjdXRlKCkgaW4gdGhlIHByaW1hcnkgCi0gICAgLy8gb3ZlcmxvYWQgb2YgY29weV9pbXBsKCksIGJlbG93Ci0KLS8vIEZ1bmN0aW9uIG9iamVjdCB0aGF0IGRlbGVnYXRlcyB0byBvbmUgb2YgdGhlIGFib3ZlIGZvdXIgCi0vLyBvdmVybG9hZHMgb2YgY29tcGxfaW1wbCgpCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1jbGFzcyBjb3B5X29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0X3R5cGU7Ci0gICAgY29weV9vcGVyYXRpb24oU291cmNlJiBzcmMsIFNpbmsmIHNuaywgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplKQotICAgICAgICA6IHNyY18oc3JjKSwgc25rXyhzbmspLCBidWZmZXJfc2l6ZV8oYnVmZmVyX3NpemUpCi0gICAgICAgIHsgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSBvcGVyYXRvcigpKCkgCi0gICAgewotICAgICAgICByZXR1cm4gY29weV9pbXBsKCBzcmNfLCBzbmtfLCBidWZmZXJfc2l6ZV8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICBpc19kaXJlY3Q8U291cmNlPigpLCBpc19kaXJlY3Q8U2luaz4oKSApOwotICAgIH0KLXByaXZhdGU6Ci0gICAgY29weV9vcGVyYXRpb24mIG9wZXJhdG9yPShjb25zdCBjb3B5X29wZXJhdGlvbiYpOwotICAgIFNvdXJjZSYgICAgICAgICAgc3JjXzsKLSAgICBTaW5rJiAgICAgICAgICAgIHNua187Ci0gICAgc3RkOjpzdHJlYW1zaXplICBidWZmZXJfc2l6ZV87Ci19OwotCi0vLyBQcmltYXJ5IG92ZXJsb2FkIG9mIGNvcHlfaW1wbC4gRGVsZWdhdGVzIHRvIG9uZSBvZiB0aGUgYWJvdmUgZm91ciAKLS8vIG92ZXJsb2FkcyBvZiBjb21wbF9pbXBsKCksIGRlcGVuZGluZyBvbiB3aGljaCBvZiB0aGUgdHdvIGdpdmVuIAotLy8gZGV2aWNlcywgaWYgYW55LCBtb2RlbHMgRGlyZWN0IChzZWUgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcy9kb2MvaW5kZXguaHRtbD9wYXRoPTQuMS4xLjQpCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1zdGQ6OnN0cmVhbXNpemUgY29weV9pbXBsKFNvdXJjZSBzcmMsIFNpbmsgc25rLCBzdGQ6OnN0cmVhbXNpemUgYnVmZmVyX3NpemUpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTb3VyY2U+Ojp0eXBlICBzcmNfY2hhcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTaW5rPjo6dHlwZSAgICBzbmtfY2hhcjsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19zYW1lPHNyY19jaGFyLCBzbmtfY2hhcj46OnZhbHVlKSk7Ci0gICAgcmV0dXJuIGRldGFpbDo6ZXhlY3V0ZV9hbGwoCi0gICAgICAgICAgICAgICBjb3B5X29wZXJhdGlvbjxTb3VyY2UsIFNpbms+KHNyYywgc25rLCBidWZmZXJfc2l6ZSksCi0gICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2VfYWxsKHNyYyksCi0gICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2VfYWxsKHNuaykKLSAgICAgICAgICAgKTsKLX0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY29weS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBPdmVybG9hZCBvZiBjb3B5KCkgZm9yIHRoZSBjYXNlIHdoZXJlIG5laXRoZXIgdGhlIHNvdXJjZSBub3IgdGhlIHNpbmsgaXMKLS8vIGEgc3RhbmRhcmQgc3RyZWFtIG9yIHN0cmVhbSBidWZmZXIKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZQotY29weSggY29uc3QgU291cmNlJiBzcmMsIGNvbnN0IFNpbmsmIHNuaywKLSAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oU291cmNlKQotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFNpbmspICkKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8U291cmNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgcmV0dXJuIGRldGFpbDo6Y29weV9pbXBsKCBkZXRhaWw6OnJlc29sdmU8aW5wdXQsIGNoYXJfdHlwZT4oc3JjKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OnJlc29sdmU8b3V0cHV0LCBjaGFyX3R5cGU+KHNuayksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NpemUgKTsgCi19Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIE92ZXJsb2FkIG9mIGNvcHkoKSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIHNvdXJjZSwgYnV0IG5vdCB0aGUgc2luaywgaXMKLS8vIGEgc3RhbmRhcmQgc3RyZWFtIG9yIHN0cmVhbSBidWZmZXIKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZQotY29weSggU291cmNlJiBzcmMsIGNvbnN0IFNpbmsmIHNuaywKLSAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRU5BQkxFX0lGX1NUUkVBTShTb3VyY2UpCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oU2luaykgKSAKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8U291cmNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgcmV0dXJuIGRldGFpbDo6Y29weV9pbXBsKCBkZXRhaWw6OndyYXAoc3JjKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OnJlc29sdmU8b3V0cHV0LCBjaGFyX3R5cGU+KHNuayksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NpemUgKTsKLX0KLQotLy8gT3ZlcmxvYWQgb2YgY29weSgpIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgc2luaywgYnV0IG5vdCB0aGUgc291cmNlLCBpcwotLy8gYSBzdGFuZGFyZCBzdHJlYW0gb3Igc3RyZWFtIGJ1ZmZlcgotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotc3RkOjpzdHJlYW1zaXplCi1jb3B5KCBjb25zdCBTb3VyY2UmIHNyYywgU2luayYgc25rLAotICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShTb3VyY2UpCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRU5BQkxFX0lGX1NUUkVBTShTaW5rKSApIAoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTb3VyY2U+Ojp0eXBlIGNoYXJfdHlwZTsKLSAgICByZXR1cm4gZGV0YWlsOjpjb3B5X2ltcGwoIGRldGFpbDo6cmVzb2x2ZTxpbnB1dCwgY2hhcl90eXBlPihzcmMpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6d3JhcChzbmspLCBidWZmZXJfc2l6ZSApOwotfQotCi0vLyBPdmVybG9hZCBvZiBjb3B5KCkgZm9yIHRoZSBjYXNlIHdoZXJlIG5laXRoZXIgdGhlIHNvdXJjZSBub3IgdGhlIHNpbmsgaXMKLS8vIGEgc3RhbmRhcmQgc3RyZWFtIG9yIHN0cmVhbSBidWZmZXIKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZQotY29weSggU291cmNlJiBzcmMsIFNpbmsmIHNuaywKLSAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRU5BQkxFX0lGX1NUUkVBTShTb3VyY2UpCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRU5BQkxFX0lGX1NUUkVBTShTaW5rKSApIAoteyAKLSAgICByZXR1cm4gZGV0YWlsOjpjb3B5X2ltcGwoZGV0YWlsOjp3cmFwKHNyYyksIGRldGFpbDo6d3JhcChzbmspLCBidWZmZXJfc2l6ZSk7Ci19Ci0KLSNlbmRpZiAvLyAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09QWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hYnNvbHV0ZV9wYXRoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hYnNvbHV0ZV9wYXRoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA5NDdlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWJzb2x1dGVfcGF0aC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwCi0gKiBEYXRlOiAgICAgICAgVGh1IERlYyAwNiAxMzoyMTo1NCBNU1QgMjAwNwotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogRGVmaW5lcyB0aGUgZnVuY3Rpb24gbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjphYnNvbHV0ZV9wYXRoLCB1c2VkIGZvciAKLSAqIGRlYnVnIG91dHB1dCBmb3IgbWFwcGVkIGZpbGVzLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9BQlNPTFVURV9QQVRIX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0FCU09MVVRFX1BBVEhfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2luZG93c19wb3NpeC5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSMgaW5jbHVkZSA8Y2N0eXBlPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jdXJyZW50X2RpcmVjdG9yeS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gUmVzb2x2ZXMgdGhlIGdpdmVuIHBhdGggcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLWlubGluZSBzdGQ6OnN0cmluZyBhYnNvbHV0ZV9wYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKQotewotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgcmV0dXJuIHBhdGguc2l6ZSgpICYmIChwYXRoWzBdID09ICcvJyB8fCBwYXRoWzBdID09ICdcXCcpIHx8Ci0gICAgICAgICAgIHBhdGguc2l6ZSgpID4gMSAmJiBzdGQ6OmlzYWxwaGEocGF0aFswXSkgJiYgcGF0aFsxXSA9PSAnOicgPwotICAgICAgICAgICAgICAgcGF0aCA6Ci0gICAgICAgICAgICAgICBjdXJyZW50X2RpcmVjdG9yeSgpICsgJ1xcJyArIHBhdGg7Ci0jZWxzZSAvLyAjaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICByZXR1cm4gcGF0aC5zaXplKCkgJiYgKHBhdGhbMF0gPT0gJy8nKSA/Ci0gICAgICAgIHBhdGggOgotICAgICAgICBjdXJyZW50X2RpcmVjdG9yeSgpICsgJy8nICsgcGF0aDsKLSNlbmRpZiAvLyAjaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLX0KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0FCU09MVVRFX1BBVEhfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWNjZXNzX2NvbnRyb2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FjY2Vzc19jb250cm9sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA2YWZhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWNjZXNzX2NvbnRyb2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIENvbnRhaW5zIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBjbGFzcyB0ZW1wbGF0ZSBhY2Nlc3NfY29udHJvbCwgd2hpY2gKLS8vIGFsbG93cyB0aGUgdHlwZSBvZiBpbmhlcml0YW5jZSBmcm9tIGEgcHJvdmlkZWQgYmFzZSBjbGFzcyB0byBiZSBzcGVjaWZpZWQgCi0vLyB1c2luZyBhIHRlbXBsYXRlIHBhcmFtZXRlci4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19BQ0NFU1NfQ09OVFJPTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0FDQ0VTU19DT05UUk9MX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1zdHJ1Y3QgcHJvdGVjdGVkXyB7IH07ICAvLyBSZXByZXNlbnRzIHByb3RlY3RlZCBpbmhlcml0YW5jZS4KLXN0cnVjdCBwdWJsaWNfIHsgfTsgICAgIC8vIFJlcHJlc2VudHMgcHVibGljIGluaGVyaXRhbmNlLgotCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8gSW1wbGVtZW50cyBwcm90ZWN0ZWQgaW5oZXJpdGFuY2UuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdHJ1Y3QgcHJvdF8gOiBwcm90ZWN0ZWQgVSAKLSAgICB7IAotICAgICAgICBwcm90XygpIHsgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBwcm90XyhWIHYpIDogVSh2KSB7IH0KLSAgICB9OwotCi0gICAgLy8gSW1wbGVtZW50cyBwdWJsaWMgaW5oZXJpdGFuY2UuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RydWN0IHB1Yl8gOiBwdWJsaWMgVSB7IAotICAgICAgICBwdWJfKCkgeyB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IHB1Yl8oViB2KSA6IFUodikgeyB9Ci0gICAgfTsKLQotLy8KLS8vIFVzZWQgdG8gZGVkdWNlIHRoZSBiYXNlIHR5cGUgZm9yIHRoZSB0ZW1wbGF0ZSBhY2Nlc3NfY29udHJvbC4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBY2Nlc3M+Ci1zdHJ1Y3QgYWNjZXNzX2NvbnRyb2xfYmFzZSB7Ci0gICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRfYWNjZXNzX3NwZWNpZmllcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPAotICAgICAgICAgICAgICAgICAgICBBY2Nlc3MsIHByb3RlY3RlZF8KLSAgICAgICAgICAgICAgICA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RfPFQ+LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8Ci0gICAgICAgICAgICAgICAgICAgIEFjY2VzcywgcHVibGljXwotICAgICAgICAgICAgICAgID4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHViXzxUPiwKLSAgICAgICAgICAgICAgICBlbHNlXywgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZF9hY2Nlc3Nfc3BlY2lmaWVyCi0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOwotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGFjY2Vzc19jb250cm9sLgotLy8gRGVzY3JpcHRpb246IEFsbG93cyB0aGUgdHlwZSBvZiBpbmhlcml0YW5jZSBmcm9tIGEgcHJvdmlkZWQgYmFzZSBjbGFzcwotLy8gICAgICB0byBiZSBzcGVjaWZpZWQgdXNpbmcgYW4gaW50IHRlbXBsYXRlIHBhcmFtZXRlci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIEJhc2UgLSBUaGUgY2xhc3MgZnJvbSB3aGljaCB0byBpbmhlcml0IChpbmRpcmVjdGx5LikKLS8vICAgICAgQWNjZXNzIC0gVGhlIHR5cGUgb2YgYWNjZXNzIGRlc2lyZWQuIE11c3QgYmUgb25lIG9mIHRoZSAKLS8vICAgICAgICAgIHZhbHVlcyBhY2Nlc3NfYmFzZTo6cHJvdCBvciBhY2Nlc3NfYmFzZTo6cHViLgotLy8KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBY2Nlc3MsCi0gICAgICAgICAgdHlwZW5hbWUgQmFzZSA9IC8vIFZDNiB3b3JrYXJhb3VuZCAoQ29tcGlsZXIgRXJyb3IgQzI1MTYpCi0gICAgICAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6YWNjZXNzX2NvbnRyb2xfYmFzZTxULCBBY2Nlc3M+Ojp0eXBlID4KLXN0cnVjdCBhY2Nlc3NfY29udHJvbCA6IHB1YmxpYyBCYXNlIHsgCi0gICAgYWNjZXNzX2NvbnRyb2woKSB7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBleHBsaWNpdCBhY2Nlc3NfY29udHJvbChVIHUpIDogQmFzZSh1KSB7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQUNDRVNTX0NPTlRST0xfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9jb25jZXB0X2FkYXB0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvY29uY2VwdF9hZGFwdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE4MmJlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9jb25jZXB0X2FkYXB0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09OQ0VQVF9BREFQVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkNFUFRfQURBUFRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTRklOQUUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbmNlcHRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL25vbl9ibG9ja2luZ19hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Rpc3BhdGNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Vycm9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+ICAgICAgICAvLyBwdWJzeW5jLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3VucmVhY2hhYmxlX3JldHVybi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9udWxsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDYXRlZ29yeT4gc3RydWN0IGRldmljZV93cmFwcGVyX2ltcGw7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDYXRlZ29yeT4gc3RydWN0IGZsdF93cmFwcGVyX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBjb25jZXB0X2FkYXB0ZXIgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dmFsdWVfdHlwZTxUPjo6dHlwZSAgICAgICB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGlzcGF0Y2g8VCwgaW5wdXQsIG91dHB1dD46OnR5cGUgIGlucHV0X3RhZzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRpc3BhdGNoPFQsIG91dHB1dCwgaW5wdXQ+Ojp0eXBlICBvdXRwdXRfdGFnOwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIGlzX2RldmljZTxUPiwKLSAgICAgICAgICAgICAgICBkZXZpY2Vfd3JhcHBlcl9pbXBsPGlucHV0X3RhZz4sCi0gICAgICAgICAgICAgICAgZmx0X3dyYXBwZXJfaW1wbDxpbnB1dF90YWc+Ci0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaW1wbDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19kZXZpY2U8VD4sCi0gICAgICAgICAgICAgICAgZGV2aWNlX3dyYXBwZXJfaW1wbDxvdXRwdXRfdGFnPiwKLSAgICAgICAgICAgICAgICBmbHRfd3JhcHBlcl9pbXBsPG91dHB1dF90YWc+Ci0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ltcGw7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgaXNfZGV2aWNlPFQ+LAotICAgICAgICAgICAgICAgIGRldmljZV93cmFwcGVyX2ltcGw8YW55X3RhZz4sCi0gICAgICAgICAgICAgICAgZmx0X3dyYXBwZXJfaW1wbDxhbnlfdGFnPgotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueV9pbXBsOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlICAgICAgICAgICAgICBjYXRlZ29yeTsKLQotICAgIGV4cGxpY2l0IGNvbmNlcHRfYWRhcHRlcihjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxUPiYgcmVmKSA6IHRfKHJlZi5nZXQoKSkKLSAgICB7IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfc3RkX2lvPFQ+Ojp2YWx1ZSk7IH0KLSAgICBleHBsaWNpdCBjb25jZXB0X2FkYXB0ZXIoY29uc3QgVCYgdCkgOiB0Xyh0KQotICAgIHsgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghaXNfc3RkX2lvPFQ+Ojp2YWx1ZSk7IH0KLQotICAgIFQmIG9wZXJhdG9yKigpIHsgcmV0dXJuIHRfOyB9Ci0gICAgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuICZ0XzsgfQotCi0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiB0aGlzLT5yZWFkKHMsIG4sIChiYXNpY19udWxsX3NvdXJjZTxjaGFyX3R5cGU+KikgMCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuLCBTb3VyY2UqIHNyYykKLSAgICB7IHJldHVybiBpbnB1dF9pbXBsOjpyZWFkKHRfLCBzcmMsIHMsIG4pOyB9Ci0KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiB0aGlzLT53cml0ZShzLCBuLCAoYmFzaWNfbnVsbF9zaW5rPGNoYXJfdHlwZT4qKSAwKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbiwgU2luayogc25rKQotICAgIHsgcmV0dXJuIG91dHB1dF9pbXBsOjp3cml0ZSh0Xywgc25rLCBzLCBuKTsgfQotCi0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApCi0gICAgeyAKLSAgICAgICAgcmV0dXJuIHRoaXMtPnNlZWsoIG9mZiwgd2F5LCB3aGljaCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzaWNfbnVsbF9kZXZpY2U8Y2hhcl90eXBlLCBzZWVrYWJsZT4qKSAwKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gsIERldmljZSogZGV2ICkKLSAgICB7IHJldHVybiBhbnlfaW1wbDo6c2Vlayh0XywgZGV2LCBvZmYsIHdheSwgd2hpY2gpOyB9Ci0KLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgeyB0aGlzLT5jbG9zZSh3aGljaCwgKGJhc2ljX251bGxfZGV2aWNlPGNoYXJfdHlwZSwgc2Vla2FibGU+KikgMCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gsIERldmljZSogZGV2KQotICAgIHsgYW55X2ltcGw6OmNsb3NlKHRfLCBkZXYsIHdoaWNoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIGJvb2wgZmx1c2goIERldmljZSogZGV2ICkKLSAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gYW55X2ltcGw6OmZsdXNoKHRfLCBkZXYpOwotICAgICAgICBpZiAoZGV2ICYmIGRldi0+TkROQk9PU1RfSU9TVFJFQU1TX1BVQlNZTkMoKSA9PSAtMSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2FsZT4gLy8gQXZvaWQgZGVwZW5kZW5jeSBvbiA8bG9jYWxlPgotICAgIHZvaWQgaW1idWUoY29uc3QgTG9jYWxlJiBsb2MpIHsgaW9zdHJlYW1zOjppbWJ1ZSh0XywgbG9jKTsgfQotCi0gICAgc3RkOjpzdHJlYW1zaXplIG9wdGltYWxfYnVmZmVyX3NpemUoKSBjb25zdAotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6b3B0aW1hbF9idWZmZXJfc2l6ZSh0Xyk7IH0KLXB1YmxpYzoKLSAgICBjb25jZXB0X2FkYXB0ZXImIG9wZXJhdG9yPShjb25zdCBjb25jZXB0X2FkYXB0ZXImKTsKLSAgICB2YWx1ZV90eXBlIHRfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1TcGVjaWFsaXphdGlvbnMgb2YgZGV2aWNlX3dyYXBwZXJfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IGRldmljZV93cmFwcGVyX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgRHVtbXk+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zIAotICAgIHNlZWsoIERldmljZSYgZGV2LCBEdW1teSosIHN0cmVhbV9vZmZzZXQgb2ZmLCAKLSAgICAgICAgICBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICkKLSAgICB7IAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPERldmljZT46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIHJldHVybiBzZWVrKGRldiwgb2ZmLCB3YXksIHdoaWNoLCBjYXRlZ29yeSgpKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyAKLSAgICBzZWVrKCBEZXZpY2UmLCBzdHJlYW1fb2Zmc2V0LCBORE5CT09TVF9JT1M6OnNlZWtkaXIsIAotICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUsIGFueV90YWcgKQotICAgIHsgCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9zZWVrKCkpOwotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKDApCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyAKLSAgICBzZWVrKCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIAotICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gsIAotICAgICAgICAgIHJhbmRvbV9hY2Nlc3MgKQotICAgIHsgCi0gICAgICAgIHJldHVybiBpb3N0cmVhbXM6OnNlZWsoZGV2LCBvZmYsIHdheSwgd2hpY2gpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIER1bW15PgotICAgIHN0YXRpYyB2b2lkIGNsb3NlKERldmljZSYgZGV2LCBEdW1teSosIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgeyBpb3N0cmVhbXM6OmNsb3NlKGRldiwgd2hpY2gpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIER1bW15PgotICAgIHN0YXRpYyBib29sIGZsdXNoKERldmljZSYgZGV2LCBEdW1teSopCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpmbHVzaChkZXYpOyB9Ci19OwotCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXZpY2Vfd3JhcHBlcl9pbXBsPGlucHV0PiA6IGRldmljZV93cmFwcGVyX2ltcGw8YW55X3RhZz4gIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIER1bW15PgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICByZWFkKCBEZXZpY2UmIGRldiwgRHVtbXkqLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSogcywKLSAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpyZWFkKGRldiwgcywgbik7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgRHVtbXk+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSAKLSAgICB3cml0ZSggRGV2aWNlJiwgRHVtbXkqLCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSosCi0gICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSApCi0gICAgeyBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNhbnRfd3JpdGUoKSk7Ci0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKDApIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXZpY2Vfd3JhcHBlcl9pbXBsPG91dHB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgRHVtbXk+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHJlYWQoRGV2aWNlJiwgRHVtbXkqLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSosIHN0ZDo6c3RyZWFtc2l6ZSkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9yZWFkKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIER1bW15PgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgCi0gICAgd3JpdGUoIERldmljZSYgZGV2LCBEdW1teSosIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlKiBzLAotICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZShkZXYsIHMsIG4pOyB9Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVNwZWNpYWxpemF0aW9ucyBvZiBmbHRfd3JhcHBlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx0X3dyYXBwZXJfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zCi0gICAgc2VlayggRmlsdGVyJiBmLCBEZXZpY2UqIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPEZpbHRlcj46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIHJldHVybiBzZWVrKGYsIGRldiwgb2ZmLCB3YXksIHdoaWNoLCBjYXRlZ29yeSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3MKLSAgICBzZWVrKCBGaWx0ZXImLCBEZXZpY2UqLCBzdHJlYW1fb2Zmc2V0LAotICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSwgYW55X3RhZyApCi0gICAgeyBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNhbnRfc2VlaygpKTsKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oMCkgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zCi0gICAgc2VlayggRmlsdGVyJiBmLCBEZXZpY2UqIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCwKLSAgICAgICAgICByYW5kb21fYWNjZXNzIHRhZyApCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPEZpbHRlcj46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIHJldHVybiBzZWVrKGYsIGRldiwgb2ZmLCB3YXksIHdoaWNoLCB0YWcsIGNhdGVnb3J5KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcwotICAgIHNlZWsoIEZpbHRlciYgZiwgRGV2aWNlKiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLAotICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUsCi0gICAgICAgICAgcmFuZG9tX2FjY2VzcywgYW55X3RhZyApCi0gICAgeyByZXR1cm4gZi5zZWVrKCpkZXYsIG9mZiwgd2F5KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zCi0gICAgc2VlayggRmlsdGVyJiBmLCBEZXZpY2UqIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCwKLSAgICAgICAgICByYW5kb21fYWNjZXNzLCB0d29fc2VxdWVuY2UgKQotICAgIHsgcmV0dXJuIGYuc2VlaygqZGV2LCBvZmYsIHdheSwgd2hpY2gpOyAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoRmlsdGVyJiBmLCBEZXZpY2UqIGRldiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7IGlvc3RyZWFtczo6Y2xvc2UoZiwgKmRldiwgd2hpY2gpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgYm9vbCBmbHVzaChGaWx0ZXImIGYsIERldmljZSogZGV2KQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6Zmx1c2goZiwgKmRldik7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbHRfd3JhcHBlcl9pbXBsPGlucHV0PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHJlYWQoIEZpbHRlciYgZiwgU291cmNlKiBzcmMsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxGaWx0ZXI+Ojp0eXBlKiBzLAotICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnJlYWQoZiwgKnNyYywgcywgbik7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIAotICAgIHdyaXRlKCBGaWx0ZXImLCBTaW5rKiwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPEZpbHRlcj46OnR5cGUqLCAKLSAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplICkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF93cml0ZSgpKTsKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oMCkgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZsdF93cmFwcGVyX2ltcGw8b3V0cHV0PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHJlYWQoRmlsdGVyJiwgU291cmNlKiwgdHlwZW5hbWUgY2hhcl90eXBlX29mPEZpbHRlcj46OnR5cGUqLHN0ZDo6c3RyZWFtc2l6ZSkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9yZWFkKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSAKLSAgICB3cml0ZSggRmlsdGVyJiBmLCBTaW5rKiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxGaWx0ZXI+Ojp0eXBlKiBzLAotICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZShmLCAqc25rLCBzLCBuKTsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09OQ0VQVF9BREFQVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGV2aWNlX2FkYXB0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGV2aWNlX2FkYXB0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTgyYzdhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2RldmljZV9hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmRldmljZV9hZGFwdGVyLAotICogYSBjb252ZW5pZW5jZSBiYXNlIGNsYXNzIGZvciBkZXZpY2UgYWRhcHRlcnMuCi0gKgotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9maWx0ZXJfYWRhcHRlci5ocHAKLSAqIERhdGU6ICAgICAgICBNb24gTm92IDI2IDE0OjM1OjQ4IE1TVCAyMDA3Ci0gKiAKLSAqIENvcHlyaWdodDogICAyMDA3LTIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ERVZJQ0VfQURBUFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ERVZJQ0VfQURBUFRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBkZXZpY2VfYWRhcHRlciB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp2YWx1ZV90eXBlPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnBhcmFtX3R5cGU8VD46OnR5cGUgcGFyYW1fdHlwZTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBkZXZpY2VfYWRhcHRlcihwYXJhbV90eXBlIHQpIDogdF8odCkgeyB9Ci0gICAgVCYgY29tcG9uZW50KCkgeyByZXR1cm4gdF87IH0KLQotICAgIHZvaWQgY2xvc2UoKSAKLSAgICB7Ci0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHRfKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAotICAgIHsgCi0gICAgICAgIGlvc3RyZWFtczo6Y2xvc2UodF8sIHdoaWNoKTsgCi0gICAgfQotCi0gICAgYm9vbCBmbHVzaCgpIAotICAgIHsgCi0gICAgICAgIHJldHVybiBpb3N0cmVhbXM6OmZsdXNoKHRfKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPiAvLyBBdm9pZCBkZXBlbmRlbmN5IG9uIDxsb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmIGxvYykgeyBpb3N0cmVhbXM6OmltYnVlKHRfLCBsb2MpOyB9Ci0KLSAgICBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZSgpIGNvbnN0IAotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6b3B0aW1hbF9idWZmZXJfc2l6ZSh0Xyk7IH0KLXB1YmxpYzoKLSAgICB2YWx1ZV90eXBlIHRfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RFVklDRV9BREFQVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGlyZWN0X2FkYXB0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGlyZWN0X2FkYXB0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWVlYmY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2RpcmVjdF9hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJUkVDVF9BREFQVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJUkVDVF9BREFQVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgLy8gU0ZJTkFFLCBNU1ZDLCBwdXQgcHRyZGlmZl90IGluIHN0ZC4KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAvLyBjb3B5LCBtaW4uCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgICAgLy8gcHRyZGlmZl90LgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcD4gICAgICAgIC8vIGZvcndhcmRpbmcuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4gIC8vIGxvY2FsZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2RvdWJsZV9vYmplY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIG9wZW5tb2RlLCBzZWVrZGlyLCBpbnQgdHlwZXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+ICAgICAgLy8gbW9kZV9vZiwgaXNfZGlyZWN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+IAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+IAotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gLy8gVkM3LjEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBkaXJlY3RfYWRhcHRlcl9iYXNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIFB1dCBhbGwgaW5pdGlhbGl6YXRpb24gaW4gYmFzZSBjbGFzcyB0byBmYWNpbGlhdGUgZm9yd2FyZGluZy4KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLWNsYXNzIGRpcmVjdF9hZGFwdGVyX2Jhc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPERpcmVjdD46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RGlyZWN0Pjo6dHlwZSAgICAgICBtb2RlX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IG1vZGVfdHlwZSwKLSAgICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICAgICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotICAgICAgICAgICwgbG9jYWxpemFibGVfdGFnCi0gICAgICAgICAgI2VuZGlmCi0gICAgICAgIHsgfTsKLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBkaXJlY3RfYWRhcHRlcl9iYXNlKGNvbnN0IERpcmVjdCYgZCk7Ci0gICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgdHdvX3NlcXVlbmNlPiBpc19kb3VibGU7Ci0gICAgc3RydWN0IHBvaW50ZXJzIHsKLSAgICAgICAgY2hhcl90eXBlICpiZWcsICpwdHIsICplbmQ7Ci0gICAgfTsKLSAgICB2b2lkIGluaXRfaW5wdXQobXBsOjp0cnVlXyk7Ci0gICAgdm9pZCBpbml0X2lucHV0KG1wbDo6ZmFsc2VfKSB7IH0KLSAgICB2b2lkIGluaXRfb3V0cHV0KG1wbDo6dHJ1ZV8pOwotICAgIHZvaWQgaW5pdF9vdXRwdXQobXBsOjpmYWxzZV8pIHsgfQotICAgIGRvdWJsZV9vYmplY3Q8cG9pbnRlcnMsIGlzX2RvdWJsZT4gIHB0cnNfOwotICAgIERpcmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0PgotY2xhc3MgZGlyZWN0X2FkYXB0ZXIgOiBwcml2YXRlIGRpcmVjdF9hZGFwdGVyX2Jhc2U8RGlyZWN0PiB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgZGlyZWN0X2FkYXB0ZXJfYmFzZTxEaXJlY3Q+ICAgICAgYmFzZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpwb2ludGVycyAgICAgcG9pbnRlcnM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmlzX2RvdWJsZSAgICBpc19kb3VibGU7Ci0gICAgdXNpbmcgYmFzZV90eXBlOjpwdHJzXzsKLSAgICB1c2luZyBiYXNlX3R5cGU6OmRfOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjYXRlZ29yeSAgICAgY2F0ZWdvcnk7Ci0KLSAgICAgICAgLy8gQ29uc3RydWN0b3JzCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzEwKQotICAgIGRpcmVjdF9hZGFwdGVyKGNvbnN0IERpcmVjdCYgZCkgOiBiYXNlX3R5cGUoZCkgeyB9ICAgCi0gICAgZGlyZWN0X2FkYXB0ZXIoY29uc3QgZGlyZWN0X2FkYXB0ZXImIGQpIDogYmFzZV90eXBlKGQpIHsgfQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTICgxLCBORE5CT09TVF9JT1NUUkVBTVNfTUFYX0ZPUldBUkRJTkdfQVJJVFkpCi0jZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RydWN0IGlzX2RpcmVjdAotICAgICAgICA6IG1wbDo6b3JfPCAKLSAgICAgICAgICAgICAgaXNfc2FtZTxVLCBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+ID4sIAotICAgICAgICAgICAgICBpc19zYW1lPFUsIERpcmVjdD4gCi0gICAgICAgICAgPgotICAgICAgICB7IH07Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBkaXJlY3RfYWRhcHRlcihjb25zdCBVJiB1KSAKLSAgICAgICAgOiBiYXNlX3R5cGUoZm9yd2FyZCh1LCBpc19kaXJlY3Q8VT4oKSkpCi0gICAgICAgIHsgfQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTICgyLCBORE5CT09TVF9JT1NUUkVBTVNfTUFYX0ZPUldBUkRJTkdfQVJJVFkpCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyhuKSBcCi0gICAgdGVtcGxhdGU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgdHlwZW5hbWUgUCk+IFwKLSAgICBkaXJlY3RfYWRhcHRlcihORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMobiwgY29uc3QgUCwgJnApKSBcCi0gICAgICAgIDogYmFzZV90eXBlKERpcmVjdChORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSkpIFwKLSAgICAgICAgeyB9IFwKLSAgICAvKiovCi0jaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLSN1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9NQUNSTwotCi0gICAgICAgIC8vIERldmljZSBpbnRlcmZhY2UuCi0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCwgTkROQk9PU1RfSU9TOjpzZWVrZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgPSBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKTsKLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKTsKLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotICAgIHZvaWQgaW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmKTsKLSNlbmRpZgotCi0gICAgICAgIC8vIERpcmVjdCBkZXZpY2UgYWNjZXNzLgotCi0gICAgRGlyZWN0JiBvcGVyYXRvciooKSB7IHJldHVybiBkXzsgfQotICAgIERpcmVjdCogb3BlcmF0b3ItPigpIHsgcmV0dXJuICZkXzsgfQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMxMCkKLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgRGlyZWN0IGZvcndhcmQoY29uc3QgVSYgdSwgbXBsOjp0cnVlXykgeyByZXR1cm4gdTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIERpcmVjdCBmb3J3YXJkKGNvbnN0IFUmIHUsIG1wbDo6ZmFsc2VfKSB7IHJldHVybiBEaXJlY3QodSk7IH0KLSNlbmRpZgotfTsKLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2Ygd3JhcF9kaXJlY3QgYW5kIHVud3JhcF9kaXJlY3QtLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotc3RydWN0IHdyYXBfZGlyZWN0X3RyYWl0cyAKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2RpcmVjdDxEZXZpY2U+LAotICAgICAgICAgIGRpcmVjdF9hZGFwdGVyPERldmljZT4sCi0gICAgICAgICAgRGV2aWNlCi0gICAgICA+Ci0gICAgeyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci10eXBlbmFtZSB3cmFwX2RpcmVjdF90cmFpdHM8RGV2aWNlPjo6dHlwZQotaW5saW5lIHdyYXBfZGlyZWN0KERldmljZSBkZXYpIAoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHdyYXBfZGlyZWN0X3RyYWl0czxEZXZpY2U+Ojp0eXBlIHR5cGU7Ci0gICAgcmV0dXJuIHR5cGUoZGV2KTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLWlubGluZSBEZXZpY2UmIHVud3JhcF9kaXJlY3QoRGV2aWNlJiBkKSB7IHJldHVybiBkOyB9ICAKLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotaW5saW5lIERldmljZSYgdW53cmFwX2RpcmVjdChkaXJlY3RfYWRhcHRlcjxEZXZpY2U+JiBkKSB7IHJldHVybiAqZDsgfSAgCi0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBkaXJlY3RfYWRhcHRlcl9iYXNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLWRpcmVjdF9hZGFwdGVyX2Jhc2U8RGlyZWN0Pjo6ZGlyZWN0X2FkYXB0ZXJfYmFzZShjb25zdCBEaXJlY3QmIGQpIDogZF8oZCkKLXsKLSAgICBpbml0X2lucHV0KGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBpbnB1dD4oKSk7Ci0gICAgaW5pdF9vdXRwdXQoaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD4oKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLXZvaWQgZGlyZWN0X2FkYXB0ZXJfYmFzZTxEaXJlY3Q+Ojppbml0X2lucHV0KG1wbDo6dHJ1ZV8pIAotewotICAgIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiBzZXEgPSBpb3N0cmVhbXM6OmlucHV0X3NlcXVlbmNlKGRfKTsKLSAgICBwdHJzXy5maXJzdCgpLmJlZyA9IHNlcS5maXJzdDsKLSAgICBwdHJzXy5maXJzdCgpLnB0ciA9IHNlcS5maXJzdDsKLSAgICBwdHJzXy5maXJzdCgpLmVuZCA9IHNlcS5zZWNvbmQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLXZvaWQgZGlyZWN0X2FkYXB0ZXJfYmFzZTxEaXJlY3Q+Ojppbml0X291dHB1dChtcGw6OnRydWVfKSAKLXsKLSAgICBzdGQ6OnBhaXI8Y2hhcl90eXBlKiwgY2hhcl90eXBlKj4gc2VxID0gaW9zdHJlYW1zOjpvdXRwdXRfc2VxdWVuY2UoZF8pOwotICAgIHB0cnNfLnNlY29uZCgpLmJlZyA9IHNlcS5maXJzdDsKLSAgICBwdHJzXy5zZWNvbmQoKS5wdHIgPSBzZXEuZmlyc3Q7Ci0gICAgcHRyc18uc2Vjb25kKCkuZW5kID0gc2VxLnNlY29uZDsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGRpcmVjdF9hZGFwdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0PgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+OjpyZWFkCi0gICAgKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBwb2ludGVycyYgZ2V0ID0gcHRyc18uZmlyc3QoKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgYXZhaWwgPSAKLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihnZXQuZW5kIC0gZ2V0LnB0cik7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IChzdGQ6Om1pbikobiwgYXZhaWwpOwotICAgIHN0ZDo6Y29weShnZXQucHRyLCBnZXQucHRyICsgcmVzdWx0LCBzKTsKLSAgICBnZXQucHRyICs9IHJlc3VsdDsKLSAgICByZXR1cm4gcmVzdWx0ICE9IDAgPyByZXN1bHQgOiAtMTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0PgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+Ojp3cml0ZQotICAgIChjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgcG9pbnRlcnMmIHB1dCA9IHB0cnNfLnNlY29uZCgpOwotICAgIGlmIChuID4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihwdXQuZW5kIC0gcHV0LnB0cikpCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24od3JpdGVfYXJlYV9leGhhdXN0ZWQoKSk7Ci0gICAgc3RkOjpjb3B5KHMsIHMgKyBuLCBwdXQucHRyKTsKLSAgICBwdXQucHRyICs9IG47Ci0gICAgcmV0dXJuIG47Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLWlubGluZSBzdGQ6OnN0cmVhbXBvcyBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+OjpzZWVrCi0gICAgKCBzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgCi0gICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIHBvaW50ZXJzJiBnZXQgPSBwdHJzXy5maXJzdCgpOwotICAgIHBvaW50ZXJzJiBwdXQgPSBwdHJzXy5zZWNvbmQoKTsKLSAgICBpZiAod2F5ID09IE5ETkJPT1NUX0lPUzo6Y3VyICYmIGdldC5wdHIgIT0gcHV0LnB0cikKLSAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgIHB0cmRpZmZfdCBuZXh0ID0gMDsKLSAgICBpZiAoKHdoaWNoICYgTkROQk9PU1RfSU9TOjppbikgfHwgIWlzX2RvdWJsZTo6dmFsdWUpIHsKLSAgICAgICAgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmJlZykKLSAgICAgICAgICAgIG5leHQgPSBvZmY7IAotICAgICAgICBlbHNlIGlmICh3YXkgPT0gTkROQk9PU1RfSU9TOjpjdXIpCi0gICAgICAgICAgICBuZXh0ID0gZ2V0LnB0ciAtIGdldC5iZWcgKyBvZmY7IAotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXh0ID0gZ2V0LmVuZCAtIGdldC5iZWcgKyBvZmY7IAotICAgICAgICBpZiAobmV4dCA+PSAwICYmIG5leHQgPD0gZ2V0LmVuZCAtIGdldC5iZWcpCi0gICAgICAgICAgICBnZXQucHRyID0gZ2V0LmJlZyArIG5leHQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3NlZWsoKSk7Ci0gICAgfQotICAgIGlmICgod2hpY2ggJiBORE5CT09TVF9JT1M6Om91dCkgJiYgaXNfZG91YmxlOjp2YWx1ZSkgewotICAgICAgICBpZiAod2F5ID09IE5ETkJPT1NUX0lPUzo6YmVnKQotICAgICAgICAgICAgbmV4dCA9IG9mZjsgCi0gICAgICAgIGVsc2UgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmN1cikKLSAgICAgICAgICAgIG5leHQgPSBwdXQucHRyIC0gcHV0LmJlZyArIG9mZjsgCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5leHQgPSBwdXQuZW5kIC0gcHV0LmJlZyArIG9mZjsgCi0gICAgICAgIGlmIChuZXh0ID49IDAgJiYgbmV4dCA8PSBwdXQuZW5kIC0gcHV0LmJlZykKLSAgICAgICAgICAgIHB1dC5wdHIgPSBwdXQuYmVnICsgbmV4dDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNldF90b19wb3NpdGlvbihuZXh0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0Pgotdm9pZCBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+OjpjbG9zZSgpIAoteyAKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIHR3b19zZXF1ZW5jZT46OnZhbHVlKSk7Ci0gICAgZGV0YWlsOjpjbG9zZV9hbGwoZF8pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEaXJlY3Q+Ci12b2lkIGRpcmVjdF9hZGFwdGVyPERpcmVjdD46OmNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAoteyAKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpjbG9zZShkXywgd2hpY2gpOwotfQotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEaXJlY3Q+Ci0gICAgdm9pZCBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+OjppbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKSAKLSAgICB7IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmltYnVlKGRfLCBsb2MpOyB9Ci0jZW5kaWYKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ESVJFQ1RfQURBUFRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2ZpbHRlcl9hZGFwdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2ZpbHRlcl9hZGFwdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVjNGM0NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9maWx0ZXJfYWRhcHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogRGVmaW5lcyB0aGUgY2xhc3MgdGVtcGxhdGUgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpmaWx0ZXJfYWRhcHRlciwKLSAqIGEgY29udmVuaWVuY2UgYmFzZSBjbGFzcyBmb3IgZmlsdGVyIGFkYXB0ZXJzLgotICoKLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZmlsdGVyX2FkYXB0ZXIuaHBwCi0gKiBEYXRlOiAgICAgICAgTW9uIE5vdiAyNiAxNDozNTo0OCBNU1QgMjAwNwotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZJTFRFUl9BREFQVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZJTFRFUl9BREFQVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGZpbHRlcl9hZGFwdGVyIHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnZhbHVlX3R5cGU8VD46OnR5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxUPjo6dHlwZSBwYXJhbV90eXBlOwotcHVibGljOgotICAgIGV4cGxpY2l0IGZpbHRlcl9hZGFwdGVyKHBhcmFtX3R5cGUgdCkgOiB0Xyh0KSB7IH0KLSAgICBUJiBjb21wb25lbnQoKSB7IHJldHVybiB0XzsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYpIAotICAgIHsgCi0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHRfLCBkZXYpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBjbG9zZShEZXZpY2UmIGRldiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgCi0gICAgeyAKLSAgICAgICAgaW9zdHJlYW1zOjpjbG9zZSh0XywgZGV2LCB3aGljaCk7IAotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGZsdXNoKERldmljZSYgZGV2KSAKLSAgICB7IAotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjpmbHVzaCh0XywgZGV2KTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPiAvLyBBdm9pZCBkZXBlbmRlbmN5IG9uIDxsb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmIGxvYykgeyBpb3N0cmVhbXM6OmltYnVlKHRfLCBsb2MpOyB9Ci0KLSAgICBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZSgpIGNvbnN0IAotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6b3B0aW1hbF9idWZmZXJfc2l6ZSh0Xyk7IH0KLXB1YmxpYzoKLSAgICB2YWx1ZV90eXBlIHRfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZJTFRFUl9BREFQVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbW9kZV9hZGFwdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL21vZGVfYWRhcHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZDViNjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbW9kZV9hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX01PREVfQURBUFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9NT0RFX0FEQVBURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLS8vIENvbnRhaW5zIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBjbGFzcyB0ZW1wbGF0ZSBtb2RlX2FkYXB0ZXIsIHdoaWNoIGFsbG93cwotLy8gYSBmaWx0ZXIgb3IgZGV2aWNlIHRvIGZ1bmN0aW9uIGFzIGlmIGl0IGhhcyBhIGRpZmZlcmVudCBpL28gbW9kZSB0aGFuIHRoYXQKLS8vIGRlZHVjZWQgYnkgdGhlIG1ldGFmdW5jdGlvbiBtb2RlX29mLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIG9wZW5tb2RlLCBzZWVrZGlyLCBpbnQgdHlwZXMuIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4gCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgVD4KLWNsYXNzIG1vZGVfYWRhcHRlciB7Ci1wcml2YXRlOgotICAgIHN0cnVjdCBlbXB0eV9iYXNlIHsgfTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxUPjo6dHlwZSAgY29tcG9uZW50X3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgCi0gICAgICAgIDogTW9kZSwgCi0gICAgICAgICAgZGV2aWNlX3RhZywKLSAgICAgICAgICBtcGw6OmlmXzxpc19maWx0ZXI8VD4sIGZpbHRlcl90YWcsIGRldmljZV90YWc+LAotICAgICAgICAgIG1wbDo6aWZfPGlzX2ZpbHRlcjxUPiwgbXVsdGljaGFyX3RhZywgZW1wdHlfYmFzZT4sCi0gICAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgICAgY2xvc2FibGVfdGFnLCAvLyBWQzYgY2FuJ3Qgc2VlIG1lbWJlciBjbG9zZSgpIQotICAgICAgICAgICNlbmRpZgotICAgICAgICAgIGxvY2FsaXphYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgZXhwbGljaXQgbW9kZV9hZGFwdGVyKGNvbnN0IGNvbXBvbmVudF90eXBlJiB0KSA6IHRfKHQpIHsgfQotCi0gICAgICAgIC8vIERldmljZSBtZW1iZXIgZnVuY3Rpb25zLgotCi0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHZvaWQgY2xvc2UoKTsKLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpOwotI2VuZGlmCi0KLSAgICAgICAgLy8gRmlsdGVyIG1lbWJlciBmdW5jdGlvbnMuCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpyZWFkKHRfLCBzcmMsIHMsIG4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZSh0Xywgc25rLCBzLCBuKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5KQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6c2Vlayh0XywgZGV2LCBvZmYsIHdheSk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnNlZWsodF8sIGRldiwgb2ZmLCB3YXksIHdoaWNoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYpCi0gICAgeyBkZXRhaWw6OmNsb3NlX2FsbCh0XywgZGV2KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgeyBpb3N0cmVhbXM6OmNsb3NlKHRfLCBkZXYsIHdoaWNoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPgotICAgIHZvaWQgaW1idWUoY29uc3QgTG9jYWxlJiBsb2MpCi0gICAgeyBpb3N0cmVhbXM6OmltYnVlKHRfLCBsb2MpOyB9Ci1wcml2YXRlOgotICAgIGNvbXBvbmVudF90eXBlIHRfOwotfTsKLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIG1vZGVfYWRhcHRlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBUPgotc3RkOjpzdHJlYW1zaXplIG1vZGVfYWRhcHRlcjxNb2RlLCBUPjo6cmVhZAotICAgIChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gbmRuYm9vc3Q6Omlvc3RyZWFtczo6cmVhZCh0Xywgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgVD4KLXN0ZDo6c3RyZWFtc2l6ZSBtb2RlX2FkYXB0ZXI8TW9kZSwgVD46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBuZG5ib29zdDo6aW9zdHJlYW1zOjp3cml0ZSh0Xywgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgVD4KLXN0ZDo6c3RyZWFtcG9zIG1vZGVfYWRhcHRlcjxNb2RlLCBUPjo6c2VlawotICAgIChzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgcmV0dXJuIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnNlZWsodF8sIG9mZiwgd2F5LCB3aGljaCk7IH0KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBUPgotICAgIHZvaWQgbW9kZV9hZGFwdGVyPE1vZGUsIFQ+OjpjbG9zZSgpIAotICAgIHsgZGV0YWlsOjpjbG9zZV9hbGwodF8pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBUPgotICAgIHZvaWQgbW9kZV9hZGFwdGVyPE1vZGUsIFQ+OjpjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKSAKLSAgICB7IGlvc3RyZWFtczo6Y2xvc2UodF8sIHdoaWNoKTsgfQotI2VuZGlmCi0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9NT0RFX0FEQVBURVJfSFBQX0lOQ0xVREVEIC8vLS0tLS0vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbm9uX2Jsb2NraW5nX2FkYXB0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbm9uX2Jsb2NraW5nX2FkYXB0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmEwNzBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL25vbl9ibG9ja2luZ19hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTk9OX0JMT0NLSU5HX0FEQVBURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTk9OX0JMT0NLSU5HX0FEQVBURVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAvLyBzdHJlYW1zaXplLCBzZWVrZGlyLCBvcGVubW9kZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy93cml0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci1jbGFzcyBub25fYmxvY2tpbmdfYWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogbW9kZV9vZjxEZXZpY2U+Ojp0eXBlLCBkZXZpY2VfdGFnCi0gICAgICAgIHsgfTsKLSAgICBleHBsaWNpdCBub25fYmxvY2tpbmdfYWRhcHRlcihEZXZpY2UmIGRldikgOiBkZXZpY2VfKGRldikgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IAotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gMDsKLSAgICAgICAgd2hpbGUgKHJlc3VsdCA8IG4pIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSBpb3N0cmVhbXM6OnJlYWQoZGV2aWNlXywgcywgbik7Ci0gICAgICAgICAgICBpZiAoYW10ID09IC0xKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmVzdWx0ICs9IGFtdDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0ICE9IDAgPyByZXN1bHQgOiAtMTsKLSAgICB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyAKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IDA7Ci0gICAgICAgIHdoaWxlIChyZXN1bHQgPCBuKSB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjp3cml0ZShkZXZpY2VfLCBzICsgcmVzdWx0LCBuIC0gcmVzdWx0KTsKLSAgICAgICAgICAgIHJlc3VsdCArPSBhbXQ7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsgICAgCi0gICAgfQotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnNlZWsoZGV2aWNlXywgb2ZmLCB3YXksIHdoaWNoKTsgfQotcHVibGljOgotICAgIG5vbl9ibG9ja2luZ19hZGFwdGVyJiBvcGVyYXRvcj0oY29uc3Qgbm9uX2Jsb2NraW5nX2FkYXB0ZXImKTsKLSAgICBEZXZpY2UmIGRldmljZV87Ci19OwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZSBpb3N0cmVhbXMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTk9OX0JMT0NLSU5HX0FEQVBURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9vdXRwdXRfaXRlcmF0b3JfYWRhcHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9vdXRwdXRfaXRlcmF0b3JfYWRhcHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YjY5MjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvb3V0cHV0X2l0ZXJhdG9yX2FkYXB0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9PVVRQVVRfSVRFUkFUT1JfQURBUFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9PVVRQVVRfSVRFUkFUT1JfQURBUFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgLy8gY29weS4KLSNpbmNsdWRlIDxpb3Nmd2Q+ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPiAvLyB0YWdzLgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgT3V0SXQ+Ci1jbGFzcyBvdXRwdXRfaXRlcmF0b3JfYWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8TW9kZSwgb3V0cHV0Pjo6dmFsdWUpKTsKLSAgICB0eXBlZGVmIENoICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzaW5rX3RhZyAgY2F0ZWdvcnk7Ci0gICAgZXhwbGljaXQgb3V0cHV0X2l0ZXJhdG9yX2FkYXB0ZXIoT3V0SXQgb3V0KSA6IG91dF8ob3V0KSB7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikgCi0gICAgeyAKLSAgICAgICAgc3RkOjpjb3B5KHMsIHMgKyBuLCBvdXRfKTsgCi0gICAgICAgIHJldHVybiBuOyAKLSAgICB9Ci1wcml2YXRlOgotICAgIE91dEl0IG91dF87Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfT1VUUFVUX0lURVJBVE9SX0FEQVBURVJfSFBQX0lOQ0xVREVEIC8vLS0tLS0vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvcmFuZ2VfYWRhcHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9yYW5nZV9hZGFwdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc4OTQ4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9yYW5nZV9hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4NyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1JBTkdFX0FEQVBURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUkFOR0VfQURBUFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbi4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB0cmRpZmZfdC4KLSNpbmNsdWRlIDxpb3Nmd2Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJlYW1zaXplLCBzdHJlYW1vZmYuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2l0ZXJhdG9yLmhwcD4gICAgICAgICAgICAgLy8gbmRuYm9vc3Q6Oml0ZXJhdG9yX3RyYWl0cy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lcnJvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFVzZWQgZm9yIHNpbXVsYXRlZCB0YWcgZGlzcGF0Y2guCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmF2ZXJzYWw+IHN0cnVjdCByYW5nZV9hZGFwdGVyX2ltcGw7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiByYW5nZV9hZGFwdGVyCi0vLyBEZXNjcmlwdGlvbjogRGV2aWNlIGJhc2VkIG9uIGFuIGluc3RhbmNlIG9mIG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZS4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgTW9kZSAtIEEgbW9kZSB0YWcuCi0vLyAgICAgUmFuZ2UgLSBBbiBpbnN0YW5jZSBvZiBpdGVyYXRvcl9yYW5nZS4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBSYW5nZT4KLWNsYXNzIHJhbmdlX2FkYXB0ZXIgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFJhbmdlOjppdGVyYXRvciAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPGl0ZXJhdG9yPiAgaXRlcl90cmFpdHM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX3RyYWl0czo6aXRlcmF0b3JfY2F0ZWdvcnkgICBpdGVyX2NhdDsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFJhbmdlOjp2YWx1ZV90eXBlICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgOiBNb2RlLCBkZXZpY2VfdGFnIHsgfTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgaXRlcl9jYXQsCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcKLSAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZwotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOwotICAgIHR5cGVkZWYgcmFuZ2VfYWRhcHRlcl9pbXBsPHRhZz4gICAgICAgICAgICAgICAgICAgaW1wbDsKLQotICAgIGV4cGxpY2l0IHJhbmdlX2FkYXB0ZXIoY29uc3QgUmFuZ2UmIHJuZyk7Ci0gICAgcmFuZ2VfYWRhcHRlcihpdGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXkpOwotcHJpdmF0ZToKLSAgICBpdGVyYXRvciBmaXJzdF8sIGN1cl8sIGxhc3RfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiByYW5nZV9hZGFwdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgUmFuZ2U+Ci1yYW5nZV9hZGFwdGVyPE1vZGUsIFJhbmdlPjo6cmFuZ2VfYWRhcHRlcihjb25zdCBSYW5nZSYgcm5nKQotICAgIDogZmlyc3RfKHJuZy5iZWdpbigpKSwgY3VyXyhybmcuYmVnaW4oKSksIGxhc3RfKHJuZy5lbmQoKSkgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIFJhbmdlPgotcmFuZ2VfYWRhcHRlcjxNb2RlLCBSYW5nZT46OnJhbmdlX2FkYXB0ZXIoaXRlcmF0b3IgZmlyc3QsIGl0ZXJhdG9yIGxhc3QpCi0gICAgOiBmaXJzdF8oZmlyc3QpLCBjdXJfKGZpcnN0KSwgbGFzdF8obGFzdCkgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIFJhbmdlPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSByYW5nZV9hZGFwdGVyPE1vZGUsIFJhbmdlPjo6cmVhZAotICAgIChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gaW1wbDo6cmVhZChjdXJfLCBsYXN0Xywgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgUmFuZ2U+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIHJhbmdlX2FkYXB0ZXI8TW9kZSwgUmFuZ2U+Ojp3cml0ZQotICAgIChjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gaW1wbDo6d3JpdGUoY3VyXywgbGFzdF8sIHMsIG4pOyB9Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgUmFuZ2U+Ci1zdGQ6OnN0cmVhbXBvcyByYW5nZV9hZGFwdGVyPE1vZGUsIFJhbmdlPjo6c2VlawotICAgIChzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSkKLXsgCi0gICAgaW1wbDo6c2VlayhmaXJzdF8sIGN1cl8sIGxhc3RfLCBvZmYsIHdheSk7IAotICAgIHJldHVybiBvZmZzZXRfdG9fcG9zaXRpb24oY3VyXyAtIGZpcnN0Xyk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgcmFuZ2VfYWRhcHRlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCByYW5nZV9hZGFwdGVyX2ltcGw8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXIsIHR5cGVuYW1lIENoPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgcmVhZAotICAgICAgICAoSXRlciYgY3VyLCBJdGVyJiBsYXN0LCBDaCogcyxzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZW0gPSBuOyAvLyBOby4gb2YgY2hhcnMgcmVtYWluaW5nLgotICAgICAgICB3aGlsZSAoY3VyICE9IGxhc3QgJiYgcmVtLS0gPiAwKSAqcysrID0gKmN1cisrOwotICAgICAgICByZXR1cm4gbiAtIHJlbSAhPSAwID8gbiAtIHJlbSA6IC0xOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXIsIHR5cGVuYW1lIENoPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAgICAgKEl0ZXImIGN1ciwgSXRlciYgbGFzdCwgY29uc3QgQ2gqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgd2hpbGUgKGN1ciAhPSBsYXN0ICYmIG4tLSA+IDApICpjdXIrKyA9ICpzKys7Ci0gICAgICAgIGlmIChjdXIgPT0gbGFzdCAmJiBuID4gMCkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24od3JpdGVfYXJlYV9leGhhdXN0ZWQoKSk7Ci0gICAgICAgIHJldHVybiBuOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByYW5nZV9hZGFwdGVyX2ltcGw8c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXIsIHR5cGVuYW1lIENoPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgcmVhZAotICAgICAgICAoSXRlciYgY3VyLCBJdGVyJiBsYXN0LCBDaCogcyxzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAKLSAgICAgICAgICAgIChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihsYXN0IC0gY3VyKSwgbik7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICBzdGQ6OmNvcHkoY3VyLCBjdXIgKyByZXN1bHQsIHMpOwotICAgICAgICBjdXIgKz0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcmVzdWx0ICE9IDAgPyByZXN1bHQgOiAtMTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyLCB0eXBlbmFtZSBDaD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIHdyaXRlCi0gICAgICAgIChJdGVyJiBjdXIsIEl0ZXImIGxhc3QsIGNvbnN0IENoKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBjb3VudCA9Ci0gICAgICAgICAgICAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4obGFzdCAtIGN1ciksIG4pOwotICAgICAgICBzdGQ6OmNvcHkocywgcyArIGNvdW50LCBjdXIpOwotICAgICAgICBjdXIgKz0gY291bnQ7Ci0gICAgICAgIGlmIChjb3VudCA8IG4pIAotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbih3cml0ZV9hcmVhX2V4aGF1c3RlZCgpKTsKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4KLSAgICBzdGF0aWMgdm9pZCBzZWVrCi0gICAgICAgICggSXRlciYgZmlyc3QsIEl0ZXImIGN1ciwgSXRlciYgbGFzdCwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSApCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBzd2l0Y2ggKHdheSkgewotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6YmVnOgotICAgICAgICAgICAgaWYgKG9mZiA+IGxhc3QgLSBmaXJzdCB8fCBvZmYgPCAwKQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3NlZWsoKSk7Ci0gICAgICAgICAgICBjdXIgPSBmaXJzdCArIG9mZjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6Y3VyOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90IG5ld29mZiA9IGN1ciAtIGZpcnN0ICsgb2ZmOwotICAgICAgICAgICAgICAgIGlmIChuZXdvZmYgPiBsYXN0IC0gZmlyc3QgfHwgbmV3b2ZmIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgICAgICAgICBjdXIgKz0gb2ZmOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6ZW5kOgotICAgICAgICAgICAgaWYgKGxhc3QgLSBmaXJzdCArIG9mZiA8IDAgfHwgb2ZmID4gMCkKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgICAgICAgICAgY3VyID0gbGFzdCArIG9mZjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKDApOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUkFOR0VfQURBUFRFUl9IUFBfSU5DTFVERUQgLy8tLS0tLS0tLS0tLS0tLS0vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkZF9mYWNldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRkX2ZhY2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJhYTUzNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRkX2ZhY2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBCb3Jyb3dlZCBmcm9tIDxuZG5ib29zdC9hcmNoaXZlL2FkZF9mYWNldC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9BRERfRkFDRVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQUREX0ZBQ0VUX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQi4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBhZGRfZmFjZXQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIERvZXMgU1RMcG9ydCB1c2VzIG9sZCBEaW5rdW13YXJlIGxvY2FsZT8KLSNpZiAoZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSkgJiYgXAotICAgIGRlZmluZWQoX1NUTFBfTk9fT1dOX0lPU1RSRUFNUykgXAotICAgIC8qKi8KLSMgIGlmIChkZWZpbmVkKF9ZVkFMUykgJiYgIWRlZmluZWQoX19JQk1DUFBfXykpIHx8IGRlZmluZWQoX0NQUExJQl9WRVIpCi0jICAgIGRlZmluZSBORE5CT09TVF9JT1NUUkVNU19TVExQT1JUX1dJVEhfT0xEX0RJTktVTVdBUkUKLSMgIGVuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBGYWNldD4KLWlubGluZSBzdGQ6OmxvY2FsZSBhZGRfZmFjZXQoY29uc3Qgc3RkOjpsb2NhbGUgJmwsIEZhY2V0ICogZikKLXsKLSAgICByZXR1cm4KLSAgICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsID09IDEpIHx8IFwKLSAgICAgICAgICAgIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFTVNfU1RMUE9SVF9XSVRIX09MRF9ESU5LVU1XQVJFKSBcCi0gICAgICAgICAgICAvKiovCi0gICAgICAgICAgICBzdGQ6OmxvY2FsZShzdGQ6Ol9BZGRmYWMobCwgZikpOwotICAgICAgICAjZWxzZQotICAgICAgICAgICAgLy8gc3RhbmRhcmQgY29tcGF0aWJsZQotICAgICAgICAgICAgc3RkOjpsb2NhbGUobCwgZik7Ci0gICAgICAgICNlbmRpZgotfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQUREX0ZBQ0VUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MWZhMjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQk9PTF9UUkFJVF9ERUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQk9PTF9UUkFJVF9ERUZfSFBQX0lOQ0xVREVEICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3RlbXBsYXRlX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSAKLS8vIAotLy8gTWFjcm8gbmFtZTogTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGCi0vLyBEZXNjcmlwdGlvbjogVXNlZCB0byBnZW5lcmF0ZSB0aGUgdHJhaXRzIGNsYXNzZXMgaXNfaXN0cmVhbSwgaXNfb3N0cmVhbSwKLS8vICAgICAgZXRjLgotLy8KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgyKSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19UUkFJVF9OQU1FU1BBQ0UodHJhaXQpCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1RSQUlUX05BTUVTUEFDRSh0cmFpdCkgTkROQk9PU1RfUFBfQ0FUKHRyYWl0LCBfaW1wbF8pOjogCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKHRyYWl0LCB0eXBlLCBhcml0eSkgXAotICAgIG5hbWVzcGFjZSBORE5CT09TVF9QUF9DQVQodHJhaXQsIF9pbXBsXykgeyBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfVEVNUExBVEVfUEFSQU1TKGFyaXR5LCBUKSBcCi0gICAgICB0eXBlX3RyYWl0czo6eWVzX3R5cGUgaGVscGVyIFwKLSAgICAgICAgICAoY29uc3Qgdm9sYXRpbGUgdHlwZSBORE5CT09TVF9JT1NUUkVBTVNfVEVNUExBVEVfQVJHUyhhcml0eSwgVCkqKTsgXAotICAgICAgdHlwZV90cmFpdHM6Om5vX3R5cGUgaGVscGVyKC4uLik7IFwKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLSAgICAgIHN0cnVjdCBpbXBsIHsgXAotICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBcCi0gICAgICAgICAgIChzaXplb2YoTkROQk9PU1RfSU9TVFJFQU1TX1RSQUlUX05BTUVTUEFDRSh0cmFpdCkgXAotICAgICAgICAgICAgICBoZWxwZXIoc3RhdGljX2Nhc3Q8VCo+KDApKSkgPT0gXAotICAgICAgICAgICAgICAgIHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7IFwKLSAgICAgIH07IFwKLSAgICB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi0gICAgc3RydWN0IHRyYWl0IFwKLSAgICAgICAgOiBtcGw6OmJvb2xfPE5ETkJPT1NUX1BQX0NBVCh0cmFpdCwgX2ltcGxfKTo6aW1wbDxUPjo6dmFsdWU+IFwKLSAgICB7IE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgdHJhaXQsIChUKSkgfTsgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CT09MX1RSQUlUX0RFRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIwODFhZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9TVEFUSUNfQ09OU0FOVC4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBVPgotc3RydWN0IGZvcndhcmRfaW1wbCB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKCAhaXNfc2FtZTwgVSwgRGV2aWNlID46OnZhbHVlICYmCi0gICAgICAgICAgIWlzX3NhbWU8IFUsIHJlZmVyZW5jZV93cmFwcGVyPERldmljZT4gPjo6dmFsdWUgKSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFU+Ci1zdHJ1Y3QgZm9yd2FyZAotICAgIDogbXBsOjpib29sXzxmb3J3YXJkX2ltcGw8RGV2aWNlLCBVPjo6dmFsdWU+Ci0gICAgeyB9OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDg1ZjFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fU1RSRUFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX1NUUkVBTV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vZm9yd2FyZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRGV2aWNlLAotICAgICAgICAgIHR5cGVuYW1lIFRyID0KLSAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZQotICAgICAgICAgICAgICApLAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0KLSAgICAgICAgICAgICAgc3RkOjphbGxvY2F0b3I8Ci0gICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlCi0gICAgICAgICAgICAgID4gPgotc3RydWN0IHN0cmVhbSA6IGRldGFpbDo6c3RyZWFtX2Jhc2U8RGV2aWNlLCBUciwgQWxsb2M+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IG1vZGVfb2Y8RGV2aWNlPjo6dHlwZSwKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgZGV0YWlsOjpzdHJlYW1fdHJhaXRzPERldmljZSwgVHI+OjpzdHJlYW1fdGFnCi0gICAgICAgIHsgfTsKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKQotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBkZXRhaWw6OnN0cmVhbV90cmFpdHM8Ci0gICAgICAgICAgICAgICAgRGV2aWNlLCBUcgotICAgICAgICAgICAgPjo6c3RyZWFtX3R5cGUgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV90eXBlOwotcHVibGljOgotICAgIHN0cmVhbSgpIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHN0cmVhbShjb25zdCBVMCYgdTApCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHN0cmVhbShjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTAsIHUxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICBzdHJlYW0oY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTAsIHUxLCB1Mik7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICBzdHJlYW0oVTAmIHUwKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICBzdHJlYW0oVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwLCB1MSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgc3RyZWFtKFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwLCB1MSwgdTIpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCwgdTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHZvaWQgb3Blbihjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCwgdTEsIHUyKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3BlbihVMCYgdTApCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHZvaWQgb3BlbihVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTAsIHUxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICB2b2lkIG9wZW4oVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTAsIHUxLCB1Mik7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICBib29sIGlzX29wZW4oKSBjb25zdCB7IHJldHVybiB0aGlzLT5tZW1iZXIuaXNfb3BlbigpOyB9Ci0gICAgdm9pZCBjbG9zZSgpIHsgdGhpcy0+bWVtYmVyLmNsb3NlKCk7IH0KLSAgICBib29sIGF1dG9fY2xvc2UoKSBjb25zdCB7IHJldHVybiB0aGlzLT5tZW1iZXIuYXV0b19jbG9zZSgpOyB9Ci0gICAgdm9pZCBzZXRfYXV0b19jbG9zZShib29sIGNsb3NlKSB7IHRoaXMtPm1lbWJlci5zZXRfYXV0b19jbG9zZShjbG9zZSk7IH0KLSAgICBib29sIHN0cmljdF9zeW5jKCkgeyByZXR1cm4gdGhpcy0+bWVtYmVyLnN0cmljdF9zeW5jKCk7IH0KLSAgICBEZXZpY2UmIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzLT5tZW1iZXI7IH0KLSAgICBEZXZpY2UqIG9wZXJhdG9yLT4oKSB7IHJldHVybiAmKnRoaXMtPm1lbWJlcjsgfQotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OmZhbHNlXywgY29uc3QgVTAmIHUwKQotICAgIHsKLSAgICAgICAgdGhpcy0+Y2xlYXIoKTsgCi0gICAgICAgIHRoaXMtPm1lbWJlci5vcGVuKHUwKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6ZmFsc2VfLCBVMCYgdTApCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4oZGV0YWlsOjp3cmFwKHUwKSk7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBjb25zdCBVMCYgdTApCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4oRGV2aWNlKGNvbnN0X2Nhc3Q8VTAmPih1MCkpKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmNsZWFyKCk7IAotICAgICAgICB0aGlzLT5tZW1iZXIub3BlbihEZXZpY2UodTApKTsKLSAgICB9Ci0jZW5kaWYgLy8gIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OmZhbHNlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4odTAsIHUxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgdGhpcy0+Y2xlYXIoKTsgCi0gICAgICAgIHRoaXMtPm1lbWJlci5vcGVuKERldmljZShjb25zdF9jYXN0PFUwJj4odTApLCB1MSkpOwotICAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgdGhpcy0+Y2xlYXIoKTsgCi0gICAgICAgIHRoaXMtPm1lbWJlci5vcGVuKERldmljZSh1MCwgdTEpKTsKLSAgICB9Ci0jZW5kaWYgLy8gIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjpmYWxzZV8sIGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4odTAsIHUxLCB1Mik7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIHRoaXMtPmNsZWFyKCk7IAotICAgICAgICB0aGlzLT5tZW1iZXIub3BlbihEZXZpY2UoY29uc3RfY2FzdDxVMCY+KHUwKSwgdTEsIHUyKSk7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4oRGV2aWNlKHUwLCB1MSwgdTIpKTsKLSAgICB9Ci0jZW5kaWYKLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTl9TVFJFQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vc3RyZWFtX2J1ZmZlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vc3RyZWFtX2J1ZmZlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0OWMxY2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jyb2tlbl9vdmVybG9hZF9yZXNvbHV0aW9uL3N0cmVhbV9idWZmZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fU1RSRUFNX0JVRkZFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTl9TVFJFQU1fQlVGRkVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9mb3J3YXJkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIAotICAgICAgICAgIHR5cGVuYW1lIFRyID0gCi0gICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUygKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIAotICAgICAgICAgICAgICApLAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gCi0gICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgCi0gICAgICAgICAgICAgID4sCi0gICAgICAgICAgdHlwZW5hbWUgTW9kZSA9IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbW9kZV9vZjxUPjo6dHlwZSA+Ci1jbGFzcyBzdHJlYW1fYnVmZmVyCi0gICAgOiBwdWJsaWMgZGV0YWlsOjpzdHJlYW1fYnVmZmVyX3RyYWl0czxULCBUciwgQWxsb2MsIE1vZGU+Ojp0eXBlCi17Ci1wcml2YXRlOgotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaW9zdHJlYW1zOjpjYXRlZ29yeV9vZjxUPjo6dHlwZSwgTW9kZQotICAgICAgICA+Ojp2YWx1ZQotICAgICkpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBkZXRhaWw6OnN0cmVhbV9idWZmZXJfdHJhaXRzPAotICAgICAgICAgICAgICAgIFQsIFRyLCBBbGxvYywgTW9kZQotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IE1vZGUsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIHN0cmVhbWJ1Zl90YWcKLSAgICAgICAgeyB9OwotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMoVHIpCi0gICAgc3RyZWFtX2J1ZmZlcigpIHsgfQotICAgIH5zdHJlYW1fYnVmZmVyKCkKLSAgICB7IAotICAgICAgICB0cnkgeyAKLSAgICAgICAgICAgIGlmICh0aGlzLT5pc19vcGVuKCkgJiYgdGhpcy0+YXV0b19jbG9zZSgpKSAKLSAgICAgICAgICAgICAgICB0aGlzLT5jbG9zZSgpOyAKLSAgICAgICAgfSBjYXRjaCAoLi4uKSB7IH0gCi0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHN0cmVhbV9idWZmZXIoY29uc3QgVTAmIHUwKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgc3RyZWFtX2J1ZmZlcihjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwLCB1MSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgc3RyZWFtX2J1ZmZlcihjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTAsIHUxLCB1Mik7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICBzdHJlYW1fYnVmZmVyKFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHN0cmVhbV9idWZmZXIoVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCwgdTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHN0cmVhbV9idWZmZXIoVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwLCB1MSwgdTIpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHZvaWQgb3Blbihjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwLCB1MSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCwgdTEsIHUyKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3BlbihVMCYgdTApCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICB2b2lkIG9wZW4oVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCwgdTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHZvaWQgb3BlbihVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTAsIHUxLCB1Mik7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICBUJiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpcy0+Y29tcG9uZW50KCk7IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gdGhpcy0+Y29tcG9uZW50KCk7IH0KLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjpmYWxzZV8sIGNvbnN0IFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3Blbihjb25zdF9jYXN0PFUwJj4odTApLCAtMSwgLTEpOwotICAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjpmYWxzZV8sIFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3BlbihkZXRhaWw6OndyYXAodTApLCAtMSwgLTEpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgY29uc3QgVTAmIHUwKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpvcGVuKFQoY29uc3RfY2FzdDxVMCY+KHUwKSksIC0xLCAtMSk7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBVMCYgdTApCi0gICAgewotICAgICAgICBiYXNlX3R5cGU6Om9wZW4oVCh1MCksIC0xLCAtMSk7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjpmYWxzZV8sIGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpvcGVuKHUwLCB1MSwgLTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBiYXNlX3R5cGU6Om9wZW4oVChjb25zdF9jYXN0PFUwJj4odTApLCB1MSksIC0xLCAtMSk7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBiYXNlX3R5cGU6Om9wZW4oVCh1MCwgdTEpLCAtMSwgLTEpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OmZhbHNlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3Blbih1MCwgdTEsIHUyKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpvcGVuKFQoY29uc3RfY2FzdDxVMCY+KHUwKSwgdTEsIHUyKSwgLTEsIC0xKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3BlbihUKHUwLCB1MSwgdTIpLCAtMSwgLTEpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdm9pZCBjaGVja19vcGVuKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLT5pc19vcGVuKCkpIAotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYWxyZWFkeSBvcGVuIikpOwotICAgIH0KLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTl9TVFJFQU1fQlVGRkVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2J1ZmZlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnVmZmVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmViNWY2Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnVmZmVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JVRkZFUlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlVGRkVSU19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2FwLgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgIC8vIG1lbWJlciB0ZW1wbGF0ZXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAgICAgLy8gc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+ICAgICAgICAgIC8vIGludF90eXBlX29mLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGVja2VkX29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tQnVmZmVycy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGJ1ZmZlcgotLy8gRGVzY3JpcHRpb246IENoYXJhY3RlciBidWZmZXIuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgIENoIC0gVGhlIGNoYXJhY3RlciB0eXBlLgotLy8gICAgIEFsbG9jIC0gVGhlIEFsbG9jYXRvciB0eXBlLgotLy8KLXRlbXBsYXRlPCB0eXBlbmFtZSBDaCwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+Ci1jbGFzcyBiYXNpY19idWZmZXIgewotcHJpdmF0ZToKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2M6OnRlbXBsYXRlIHJlYmluZDxDaD46Om90aGVyIGFsbG9jYXRvcl90eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIHN0ZDo6YWxsb2NhdG9yPENoPiBhbGxvY2F0b3JfdHlwZTsKLSNlbmRpZgotcHVibGljOgotICAgIGJhc2ljX2J1ZmZlcigpOwotICAgIGJhc2ljX2J1ZmZlcihpbnQgYnVmZmVyX3NpemUpOwotICAgIH5iYXNpY19idWZmZXIoKTsKLSAgICB2b2lkIHJlc2l6ZShpbnQgYnVmZmVyX3NpemUpOwotICAgIENoKiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGJ1Zl87IH0KLSAgICBDaCogZW5kKCkgY29uc3QgeyByZXR1cm4gYnVmXyArIHNpemVfOyB9Ci0gICAgQ2gqIGRhdGEoKSBjb25zdCB7IHJldHVybiBidWZfOyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBzaXplXzsgfQotICAgIHZvaWQgc3dhcChiYXNpY19idWZmZXImIHJocyk7Ci1wcml2YXRlOgotICAgIC8vIERpc2FsbG93IGNvcHlpbmcgYW5kIGFzc2lnbm1lbnQuCi0gICAgYmFzaWNfYnVmZmVyKGNvbnN0IGJhc2ljX2J1ZmZlciYpOwotICAgIGJhc2ljX2J1ZmZlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX2J1ZmZlciYpOwotICAgIENoKiAgICAgICAgICAgICAgYnVmXzsKLSAgICBzdGQ6OnN0cmVhbXNpemUgIHNpemVfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jPgotdm9pZCBzd2FwKGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+JiBsaHMsIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+JiByaHMpCi17IGxocy5zd2FwKHJocyk7IH0KLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGJ1ZmZlcgotLy8gRGVzY3JpcHRpb246IENoYXJhY3RlciBidWZmZXIgd2l0aCB0d28gcG9pbnRlcnMgYWNjZXNzaWJsZSB2aWEgcHRyKCkgYW5kCi0vLyAgICAgIGVwdHIoKS4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgQ2ggLSBBIGNoYXJhY3RlciB0eXBlLgotLy8KLXRlbXBsYXRlPCB0eXBlbmFtZSBDaCwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+Ci1jbGFzcyBidWZmZXIgOiBwdWJsaWMgYmFzaWNfYnVmZmVyPENoLCBBbGxvYz4gewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+IGJhc2U7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBpb3N0cmVhbXM6OmNoYXJfdHJhaXRzPENoPiB0cmFpdHNfdHlwZTsKLSAgICB1c2luZyBiYXNlOjpyZXNpemU7IAotICAgIHVzaW5nIGJhc2U6OmRhdGE7IAotICAgIHVzaW5nIGJhc2U6OnNpemU7Ci0gICAgdHlwZWRlZiBDaCogY29uc3QgY29uc3RfcG9pbnRlcjsKLSAgICBidWZmZXIoaW50IGJ1ZmZlcl9zaXplKTsKLSAgICBDaCogJiBwdHIoKSB7IHJldHVybiBwdHJfOyB9Ci0gICAgY29uc3RfcG9pbnRlciYgcHRyKCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQotICAgIENoKiAmIGVwdHIoKSB7IHJldHVybiBlcHRyXzsgfQotICAgIGNvbnN0X3BvaW50ZXImIGVwdHIoKSBjb25zdCB7IHJldHVybiBlcHRyXzsgfQotICAgIHZvaWQgc2V0KHN0ZDo6c3RyZWFtc2l6ZSBwdHIsIHN0ZDo6c3RyZWFtc2l6ZSBlbmQpOwotICAgIHZvaWQgc3dhcChidWZmZXImIHJocyk7Ci0KLSAgICAvLyBSZXR1cm5zIGFuIGludF90eXBlIGFzIGEgc3RhdHVzIGNvZGUuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHR5cGVuYW1lIGludF90eXBlX29mPFNvdXJjZT46OnR5cGUgZmlsbChTb3VyY2UmIHNyYykgCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUga2VlcDsKLSAgICAgICAgaWYgKChrZWVwID0gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihlcHRyXyAtIHB0cl8pKSA+IDApCi0gICAgICAgICAgICB0cmFpdHNfdHlwZTo6bW92ZSh0aGlzLT5kYXRhKCksIHB0cl8sIGtlZXApOwotICAgICAgICBzZXQoMCwga2VlcCk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAKLSAgICAgICAgICAgIGlvc3RyZWFtczo6cmVhZChzcmMsIHRoaXMtPmRhdGEoKSArIGtlZXAsIHRoaXMtPnNpemUoKSAtIGtlZXApOwotICAgICAgICBpZiAocmVzdWx0ICE9IC0xKQotICAgICAgICAgICAgdGhpcy0+c2V0KDAsIGtlZXAgKyByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0ID09IC0xID8KLSAgICAgICAgICAgIHRyYWl0c190eXBlOjplb2YoKSA6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID09IDAgPwotICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soKSA6Ci0gICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjpnb29kKCk7Ci0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgb25lIG9yIG1vcmUgY2hhcmFjdGVycyB3ZXJlIHdyaXR0ZW4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIGZsdXNoKFNpbmsmIGRlc3QpIAotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oZXB0cl8gLSBwdHJfKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6d3JpdGVfaWYoZGVzdCwgcHRyXywgYW10KTsKLSAgICAgICAgaWYgKHJlc3VsdCA8IGFtdCkgewotICAgICAgICAgICAgdHJhaXRzX3R5cGU6Om1vdmUoIHRoaXMtPmRhdGEoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyXyArIHJlc3VsdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW10IC0gcmVzdWx0ICk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy0+c2V0KDAsIGFtdCAtIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQgIT0gMDsKLSAgICB9Ci1wcml2YXRlOgotICAgIENoICpwdHJfLCAqZXB0cl87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci12b2lkIHN3YXAoYnVmZmVyPENoLCBBbGxvYz4mIGxocywgYnVmZmVyPENoLCBBbGxvYz4mIHJocykKLXsgbGhzLnN3YXAocmhzKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgYmFzaWNfYnVmZmVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci1iYXNpY19idWZmZXI8Q2gsIEFsbG9jPjo6YmFzaWNfYnVmZmVyKCkgOiBidWZfKDApLCBzaXplXygwKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jPgotYmFzaWNfYnVmZmVyPENoLCBBbGxvYz46OmJhc2ljX2J1ZmZlcihpbnQgYnVmZmVyX3NpemUpCi0gICAgOiBidWZfKHN0YXRpY19jYXN0PENoKj4oYWxsb2NhdG9yX3R5cGUoKS5hbGxvY2F0ZShidWZmZXJfc2l6ZSwgMCkpKSwgCi0gICAgICBzaXplXyhidWZmZXJfc2l6ZSkgLy8gQ2FzdCBmb3IgU3VuUHJvIDUuMy4KLSAgICB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jPgotaW5saW5lIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+Ojp+YmFzaWNfYnVmZmVyKCkKLXsKLSAgICBpZiAoYnVmXykgewotICAgICAgICBhbGxvY2F0b3JfdHlwZSgpLmRlYWxsb2NhdGUoYnVmXywKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQWxsb2M6OnNpemVfdHlwZT4oc2l6ZV8pKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYz4KLWlubGluZSB2b2lkIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+OjpyZXNpemUoaW50IGJ1ZmZlcl9zaXplKQotewotICAgIGlmIChzaXplXyAhPSBidWZmZXJfc2l6ZSkgewotICAgICAgICBiYXNpY19idWZmZXI8Q2gsIEFsbG9jPiB0ZW1wKGJ1ZmZlcl9zaXplKTsKLSAgICAgICAgc3RkOjpzd2FwKHNpemVfLCB0ZW1wLnNpemVfKTsKLSAgICAgICAgc3RkOjpzd2FwKGJ1Zl8sIHRlbXAuYnVmXyk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci12b2lkIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+Ojpzd2FwKGJhc2ljX2J1ZmZlciYgcmhzKSAKLXsgCi0gICAgc3RkOjpzd2FwKGJ1Zl8sIHJocy5idWZfKTsgCi0gICAgc3RkOjpzd2FwKHNpemVfLCByaHMuc2l6ZV8pOyAKLX0KLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGJ1ZmZlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jPgotYnVmZmVyPENoLCBBbGxvYz46OmJ1ZmZlcihpbnQgYnVmZmVyX3NpemUpCi0gICAgOiBiYXNpY19idWZmZXI8Q2gsIEFsbG9jPihidWZmZXJfc2l6ZSkgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYz4KLWlubGluZSB2b2lkIGJ1ZmZlcjxDaCwgQWxsb2M+OjpzZXQoc3RkOjpzdHJlYW1zaXplIHB0ciwgc3RkOjpzdHJlYW1zaXplIGVuZCkKLXsgCi0gICAgcHRyXyA9IGRhdGEoKSArIHB0cjsgCi0gICAgZXB0cl8gPSBkYXRhKCkgKyBlbmQ7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci1pbmxpbmUgdm9pZCBidWZmZXI8Q2gsIEFsbG9jPjo6c3dhcChidWZmZXImIHJocykgCi17IAotICAgIGJhc2U6OnN3YXAocmhzKTsgCi0gICAgc3RkOjpzd2FwKHB0cl8sIHJocy5wdHJfKTsgCi0gICAgc3RkOjpzd2FwKGVwdHJfLCByaHMuZXB0cl8pOyAKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JVRkZFUlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkxN2MxYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9WQUxVRV9UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1ZBTFVFX1RZUEVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcGFyYW1fdHlwZSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxpc19zdGRfaW88VD4sIFQmLCBjb25zdCBUJj46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdmFsdWVfdHlwZSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxpc19zdGRfaW88VD4sIFQmLCBUPjo6dHlwZSB0eXBlOwotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1ZBTFVFX1RZUEVfSFBQX0lOQ0xVREVEIC8vLS0tLS0tLS0tLS0vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YWFmMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gUHJvdmlkZXMgc3RkOjpjaGFyX3RyYWl0cyBmb3IgbGlicmFyaWVzIHdpdGhvdXQgdGVtcGxhdGVkIHN0cmVhbXMuIFNob3VsZCBub3QKLS8vIGJlIGNvbmZ1c2VkIHdpdGggPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+LCB3aGljaCBkZWZpbmVzIHRoZQotLy8gdGVtcGxhdGUgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2hhcl90cmFpdHMuCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQVJfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQVJfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE1ha2Ugc3VyZSBzaXplX3QgaXMgaW4gc3RkLgotIyBpbmNsdWRlIDxjc3RkZGVmPgotIyBpbmNsdWRlIDxjc3RyaW5nPgotIyBpbmNsdWRlIDxjc3RkaW8+Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaCkgc3RkOjpjaGFyX3RyYWl0czwgY2ggPgotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaCkgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjaGFyX3RyYWl0cwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBjaGFyX3RyYWl0cyAgewotICAgIHR5cGVkZWYgY2hhciAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIGludCAgICAgICAgICAgICBpbnRfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6c3RyZWFtcG9zICBwb3NfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6c3RyZWFtb2ZmICBvZmZfdHlwZTsKLQotICAgIC8vIE5vdGU6IHRoaXMgbWF5IG5vdCBiZSBub3QgY29uZm9ybWluZywgc2luY2UgaXQgdHJlYXRzIGNoYXJzIGFzIHVuc2lnbmVkLAotICAgIC8vIGJ1dCBpcyBvbmx5IHVzZWQgdG8gdGVzdCBmb3IgZXF1YWxpdHkuCi0gICAgc3RhdGljIGludCBjb21wYXJlKGNvbnN0IGNoYXIqIGxocywgY29uc3QgY2hhciogcmhzLCBzdGQ6OnNpemVfdCBuKQotICAgIHsgcmV0dXJuIHN0ZDo6c3RybmNtcChsaHMsIHJocywgbik7IH0KLSAgICBzdGF0aWMgY2hhciogY29weShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHN0ZDo6c2l6ZV90IG4pCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KHN0ZDo6bWVtY3B5KGRlc3QsIHNyYywgbikpOyB9Ci0gICAgc3RhdGljIGNoYXIqIG1vdmUoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzdGQ6OnNpemVfdCBuKQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihzdGQ6Om1lbW1vdmUoZGVzdCwgc3JjLCBuKSk7IH0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZmluZChjb25zdCBjaGFyKiBzLCBzdGQ6OnNpemVfdCBuLCBjb25zdCBjaGFyJiBjKQotICAgIHsgcmV0dXJuIChjb25zdCBjaGFyKikgKGNvbnN0IHZvaWQqKSBzdGQ6Om1lbWNocihzLCBjLCBuKTsgfQotICAgIHN0YXRpYyBjaGFyIHRvX2NoYXJfdHlwZShjb25zdCBpbnQmIGMpIHsgcmV0dXJuIGM7IH0KLSAgICBzdGF0aWMgaW50IHRvX2ludF90eXBlKGNvbnN0IGNoYXImIGMpIHsgcmV0dXJuIGM7IH0KLSAgICBzdGF0aWMgYm9vbCBlcV9pbnRfdHlwZShjb25zdCBpbnQmIGxocywgY29uc3QgaW50JiByaHMpCi0gICAgeyByZXR1cm4gbGhzID09IHJoczsgfQotICAgIHN0YXRpYyBpbnQgZW9mKCkgeyByZXR1cm4gRU9GOyB9Ci0gICAgc3RhdGljIGludCBub3RfZW9mKGNvbnN0IGludCYgYykgeyByZXR1cm4gYyAhPSBFT0YgPyBjIDogJ1xuJzsgfQotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQVJfVFJBSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaGVscGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb2RlY3Z0X2hlbHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMWExYzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaGVscGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQ29udGFpbnMgdGhlIGRlZmluaXRpb24gb2YgdGhlIHRlbXBsYXRlIGNvZGVjdnRfaGVscGVyLCB1c2VmdWwgZm9yCi0vLyBkZWZpbmluZyBzcGVjaWFsaXphdGlvbnMgb2Ygc3RkOjpjb2RlY3Z0IHdoZXJlIHN0YXRlX3R5cGUgIT0gbWJzdGF0ZV90LgotLy8gQ29tcGVuc2F0ZXMgZm9yIHRoZSBmYWN0IHRoYXQgc29tZSBzdGFuZGFyZCBsaWJyYXJ5IGltcGxlbWVudGF0aW9ucyAKLS8vIGRvIG5vdCBkZXJpdmUgdGhlIHByaW1pYXJ5IGNvZGVjdnQgdGVtcGxhdGUgZnJvbSBsb2NhbGU6OmZhY2V0IG9yIAotLy8gcHJvdmlkZSB0aGUgY29ycmVjdCBtZW1iZXIgdHlwZXMgYW5kIGZ1bmN0aW9ucy4KLQotLy8gVXNhZ2U6IAotLy8KLS8vIC8vIEluIGdsb2JhbCBuYW1lc3BhY2U6Ci0vLyBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9TUEVDKG15c3RhdGUpCi0vLwotLy8gLy8gSW4gdXNlciBuYW1lc3BhY2U6Ci0vLyB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlcm4sIHR5cGVuYW1lIEV4dGVybj4KLS8vIHN0cnVjdCBteWNvZGVjdnQgOiBjb2RlY3Z0X2hlbHBlcjxJbnRlcm4sIEV4dGVybiwgU3RhdGU+IHsgLi4uIH07Ci0vLwotLy8gLy8gT3I6Ci0vLyBzdHJ1Y3QgbXljb2RlY3Z0IDogY29kZWN2dF9oZWxwZXI8d2NoYXJfdCwgY2hhciwgU3RhdGU+IHsgLi4uIH07Ci0vLyAKLS8vIEV0Yy4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPREVDVlRfSEVMUEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPREVDVlRfSEVMUEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBQdXQgc2l6ZV90IGluIHN0ZCwgTkROQk9PU1RfTVNWQywgRGlua3VtLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgLy8gbWluLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAvLyBzaXplX3QuCi0jaW5jbHVkZSA8bG9jYWxlPiAgICAgICAgICAgIC8vIGxvY2FsZSwgY29kZWN2dF9iYXNlLCBjb2RlY3Z0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgdHJhaXRzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiwgPT0gMSkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY29kZWN2dF9pbnRlcm4geyB0eXBlZGVmIHR5cGVuYW1lIFQ6OmludGVybl90eXBlIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY29kZWN2dF9leHRlcm4geyB0eXBlZGVmIHR5cGVuYW1lIFQ6OmV4dGVybl90eXBlIHR5cGU7IH07Ci0KLSNlbHNlIC8vICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiwgPT0gMSkgLy8tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY29kZWN2dF9pbnRlcm4geyB0eXBlZGVmIHR5cGVuYW1lIFQ6OmZyb21fdHlwZSB0eXBlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNvZGVjdnRfZXh0ZXJuIHsgdHlwZWRlZiB0eXBlbmFtZSBUOjp0b190eXBlIHR5cGU7IH07Ci0KLSNlbmRpZiAvLyAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsID09IDEpIC8vLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY29kZWN2dF9zdGF0ZSB7IHR5cGVkZWYgdHlwZW5hbWUgVDo6c3RhdGVfdHlwZSB0eXBlOyB9OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBjb2RlY3Z0X2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19QUklNQVJZX0NPREVDVlRfREVGSU5JVElPTikgfHwgXAotICAgIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0VNUFRZX1BSSU1BUllfQ09ERUNWVF9ERUZJTklUSU9OKSB8fCBcCi0gICAgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFKSBcCi0gICAgLyoqLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVybiwgdHlwZW5hbWUgRXh0ZXJuLCB0eXBlbmFtZSBTdGF0ZT4KLXN0cnVjdCBjb2RlY3Z0X2ltcGwgOiBzdGQ6OmxvY2FsZTo6ZmFjZXQsIHN0ZDo6Y29kZWN2dF9iYXNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEludGVybiAgaW50ZXJuX3R5cGU7Ci0gICAgdHlwZWRlZiBFeHRlcm4gIGV4dGVybl90eXBlOwotICAgIHR5cGVkZWYgU3RhdGUgICBzdGF0ZV90eXBlOwotCi0gICAgY29kZWN2dF9pbXBsKHN0ZDo6c2l6ZV90IHJlZnMgPSAwKSA6IHN0ZDo6bG9jYWxlOjpmYWNldChyZWZzKSB7IH0gCi0KLSAgICBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0gICAgaW4oIFN0YXRlJiBzdGF0ZSwgY29uc3QgRXh0ZXJuKiBmaXJzdDEsIGNvbnN0IEV4dGVybiogbGFzdDEsCi0gICAgICAgIGNvbnN0IEV4dGVybiomIG5leHQxLCBJbnRlcm4qIGZpcnN0MiwgSW50ZXJuKiBsYXN0MiwKLSAgICAgICAgSW50ZXJuKiYgbmV4dDIgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGRvX2luKHN0YXRlLCBmaXJzdDEsIGxhc3QxLCBuZXh0MSwgZmlyc3QyLCBsYXN0MiwgbmV4dDIpOwotICAgIH0KLQotICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQKLSAgICBvdXQoIFN0YXRlJiBzdGF0ZSwgY29uc3QgSW50ZXJuKiBmaXJzdDEsIGNvbnN0IEludGVybiogbGFzdDEsCi0gICAgICAgICBjb25zdCBJbnRlcm4qJiBuZXh0MSwgRXh0ZXJuKiBmaXJzdDIsIEV4dGVybiogbGFzdDIsCi0gICAgICAgICBFeHRlcm4qJiBuZXh0MiApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZG9fb3V0KHN0YXRlLCBmaXJzdDEsIGxhc3QxLCBuZXh0MSwgZmlyc3QyLCBsYXN0MiwgbmV4dDIpOwotICAgIH0KLQotICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQKLSAgICB1bnNoaWZ0KFN0YXRlJiBzdGF0ZSwgRXh0ZXJuKiBmaXJzdDIsIEV4dGVybiogbGFzdDIsIEV4dGVybiomIG5leHQyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGRvX3Vuc2hpZnQoc3RhdGUsIGZpcnN0MiwgbGFzdDIsIG5leHQyKTsKLSAgICB9Ci0KLSAgICBib29sIGFsd2F5c19ub2NvbnYoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGRvX2Fsd2F5c19ub2NvbnYoKTsgfQotCi0gICAgaW50IG1heF9sZW5ndGgoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGRvX21heF9sZW5ndGgoKTsgfQotCi0gICAgaW50IGVuY29kaW5nKCkgY29uc3QgdGhyb3coKSB7IHJldHVybiBkb19lbmNvZGluZygpOyB9Ci0KLSAgICBpbnQgbGVuZ3RoKCBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9DVl9RVUFMSUZJRVIgU3RhdGUmIHN0YXRlLCAKLSAgICAgICAgICAgICAgICBjb25zdCBFeHRlcm4qIGZpcnN0MSwgY29uc3QgRXh0ZXJuKiBsYXN0MSwKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBsZW4yICkgY29uc3QgdGhyb3coKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRvX2xlbmd0aChzdGF0ZSwgZmlyc3QxLCBsYXN0MSwgbGVuMik7Ci0gICAgfQotcHJvdGVjdGVkOgotICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQKLSAgICB2aXJ0dWFsIGRvX2luKCBTdGF0ZSYsIGNvbnN0IEV4dGVybiosIGNvbnN0IEV4dGVybiosIGNvbnN0IEV4dGVybiomLCAKLSAgICAgICAgICAgICAgICAgICBJbnRlcm4qLCBJbnRlcm4qLCBJbnRlcm4qJiApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6Om5vY29udjsKLSAgICB9Ci0KLSAgICBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0gICAgdmlydHVhbCBkb19vdXQoIFN0YXRlJiwgY29uc3QgSW50ZXJuKiwgY29uc3QgSW50ZXJuKiwgY29uc3QgSW50ZXJuKiYsIAotICAgICAgICAgICAgICAgICAgICBFeHRlcm4qLCBFeHRlcm4qLCBFeHRlcm4qJiApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6Om5vY29udjsKLSAgICB9Ci0KLSAgICBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0gICAgdmlydHVhbCBkb191bnNoaWZ0KFN0YXRlJiwgRXh0ZXJuKiwgRXh0ZXJuKiwgRXh0ZXJuKiYpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6Om9rOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBkb19hbHdheXNfbm9jb252KCkgY29uc3QgdGhyb3coKSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2aXJ0dWFsIGludCBkb19tYXhfbGVuZ3RoKCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAxOyB9Ci0KLSAgICB2aXJ0dWFsIGludCBkb19lbmNvZGluZygpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gMTsgfQotCi0gICAgdmlydHVhbCBpbnQgZG9fbGVuZ3RoKCBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9DVl9RVUFMSUZJRVIgU3RhdGUmLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVybiogZmlyc3QxLCBjb25zdCBFeHRlcm4qIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbGVuMiApIGNvbnN0IHRocm93KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihsYXN0MSAtIGZpcnN0MSksIGxlbjIpOwotICAgIH0KLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vIG5vIHByaW1hcnkgY29kZWN2dCBkZWZpbml0aW9uLCBlbXB0eSBkZWZpbml0aW9uLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgTkROQk9PU1RfSU9TVFJFQU1TX0NPREVDVlRfU1BFQy0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fUFJJTUFSWV9DT0RFQ1ZUX0RFRklOSVRJT04pIHx8IFwKLSAgICBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19FTVBUWV9QUklNQVJZX0NPREVDVlRfREVGSU5JVElPTikgXAotICAgIC8qKi8KLSMgaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9TUEVDKHN0YXRlKSBcCi0gICAgbmFtZXNwYWNlIHN0ZCB7IFwKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJuLCB0eXBlbmFtZSBFeHRlcm4+IFwKLSAgICAgICAgY2xhc3MgY29kZWN2dDxJbnRlcm4sIEV4dGVybiwgc3RhdGU+IFwKLSAgICAgICAgICAgIDogcHVibGljIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjb2RlY3Z0X2ltcGw8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm4sIEV4dGVybiwgc3RhdGUgXAotICAgICAgICAgICAgICAgICAgICAgPiBcCi0gICAgICAgIHsgXAotICAgICAgICBwdWJsaWM6IFwKLSAgICAgICAgICAgIGNvZGVjdnQoc3RkOjpzaXplX3QgcmVmcyA9IDApIFwKLSAgICAgICAgICAgICAgICA6IDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjb2RlY3Z0X2ltcGw8IFwKLSAgICAgICAgICAgICAgICAgICAgICBJbnRlcm4sIEV4dGVybiwgc3RhdGUgXAotICAgICAgICAgICAgICAgICAgPihyZWZzKSBcCi0gICAgICAgICAgICAgICAgeyB9IFwKLSAgICAgICAgICAgIHN0YXRpYyBzdGQ6OmxvY2FsZTo6aWQgaWQ7IFwKLSAgICAgICAgfTsgXAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlcm4sIHR5cGVuYW1lIEV4dGVybj4gXAotICAgICAgICBzdGQ6OmxvY2FsZTo6aWQgY29kZWN2dDxJbnRlcm4sIEV4dGVybiwgc3RhdGU+OjppZDsgXAotICAgIH0gXAotICAgIC8qKi8KLSMgZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFQ1ZUX1NQRUMoc3RhdGUpIFwKLSAgICBuYW1lc3BhY2Ugc3RkIHsgXAotICAgICAgICB0ZW1wbGF0ZTw+IFwKLSAgICAgICAgY2xhc3MgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBzdGF0ZT4gXAotICAgICAgICAgICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNvZGVjdnRfaW1wbDwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QsIGNoYXIsIHN0YXRlIFwKLSAgICAgICAgICAgICAgICAgICAgID4gXAotICAgICAgICB7IFwKLSAgICAgICAgcHVibGljOiBcCi0gICAgICAgICAgICBjb2RlY3Z0KHN0ZDo6c2l6ZV90IHJlZnMgPSAwKSBcCi0gICAgICAgICAgICAgICAgOiA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y29kZWN2dF9pbXBsPCBcCi0gICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCwgY2hhciwgc3RhdGUgXAotICAgICAgICAgICAgICAgICAgPihyZWZzKSBcCi0gICAgICAgICAgICAgICAgeyB9IFwKLSAgICAgICAgICAgIHN0YXRpYyBzdGQ6OmxvY2FsZTo6aWQgaWQ7IFwKLSAgICAgICAgfTsgXAotICAgICAgICB0ZW1wbGF0ZTw+IFwKLSAgICAgICAgc3RkOjpsb2NhbGU6OmlkIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgc3RhdGU+OjppZDsgXAotICAgIH0gXAotICAgIC8qKi8KLSMgZW5kaWYKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9TUEVDKHN0YXRlKQotI2VuZGlmIC8vIG5vIHByaW1hcnkgY29kZWN2dCBkZWZpbml0aW9uLCBvciBlbXB0eSBkZWZpbml0aW9uLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNvZGVjdnRfaGVscGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJuLCB0eXBlbmFtZSBFeHRlcm4sIHR5cGVuYW1lIFN0YXRlPgotc3RydWN0IGNvZGVjdnRfaGVscGVyIDogc3RkOjpjb2RlY3Z0PEludGVybiwgRXh0ZXJuLCBTdGF0ZT4geyAKLSAgICB0eXBlZGVmIEludGVybiAgaW50ZXJuX3R5cGU7Ci0gICAgdHlwZWRlZiBFeHRlcm4gIGV4dGVybl90eXBlOwotICAgIHR5cGVkZWYgU3RhdGUgICBzdGF0ZV90eXBlOwotICAgIGNvZGVjdnRfaGVscGVyKHN0ZDo6c2l6ZV90IHJlZnMgPSAwKSAKLSAgICAjaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX05PX0NPREVDVlRfQ1RPUl9GUk9NX1NJWkVfVCkKLSAgICAgICAgOiBzdGQ6OmNvZGVjdnQ8SW50ZXJuLCBFeHRlcm4sIFN0YXRlPihyZWZzKQotICAgICNlbHNlCi0gICAgICAgIDogc3RkOjpjb2RlY3Z0PEludGVybiwgRXh0ZXJuLCBTdGF0ZT4oKQotICAgICNlbmRpZgotICAgICAgICB7IH0KLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fQ09ERUNWVF9NQVhfTEVOR1RICi0gICAgaW50IG1heF9sZW5ndGgoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGRvX21heF9sZW5ndGgoKTsgfQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgaW50IGRvX21heF9sZW5ndGgoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIDE7IH0KLSNlbmRpZgotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPREVDVlRfSEVMUEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaG9sZGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb2RlY3Z0X2hvbGRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNWU5MjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaG9sZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyBtYWNoaW5lcnkgZm9yIHBlcmZvcm1pbmcgY29kZSBjb252ZXJzaW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ERUNWVF9IT0xERVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ERUNWVF9IT0xERVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8Y3djaGFyPiAgICAgICAgICAgIC8vIG1ic3RhdGVfdC4KLSNpbmNsdWRlIDxsb2NhbGU+ICAgICAgICAgICAgLy8gY29kZWN2dCwgbG9jYWxlLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBIQVNfTUFDUk9fVVNFX0ZBQ0VULgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBkZWZhdWx0X2NvZGVjdnQgeyAKLSAgICB0eXBlZGVmIHdjaGFyX3QgICAgICAgICBpbnRlcm5fdHlwZSwgZnJvbV90eXBlOwotICAgIHR5cGVkZWYgY2hhciAgICAgICAgICAgIGV4dGVybl90eXBlLCB0b190eXBlOwotICAgIHR5cGVkZWYgc3RkOjptYnN0YXRlX3QgIHN0YXRlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlY3Z0Pgotc3RydWN0IGNvZGVjdnRfaG9sZGVyIHsKLSAgICB0eXBlZGVmIENvZGVjdnQgY29kZWN2dF90eXBlOwotICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYgZ2V0KCkgY29uc3QgeyByZXR1cm4gY29kZWN2dF87IH0KLSAgICB2b2lkIGltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJikgeyB9Ci0gICAgQ29kZWN2dCBjb2RlY3Z0XzsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjb2RlY3Z0X2hvbGRlcjxkZWZhdWx0X2NvZGVjdnQ+IHsKLSAgICB0eXBlZGVmIHN0ZDo6Y29kZWN2dDx3Y2hhcl90LCBjaGFyLCBzdGQ6Om1ic3RhdGVfdD4gY29kZWN2dF90eXBlOwotICAgIGNvZGVjdnRfaG9sZGVyKCkgeyByZXNldF9jb2RlY3Z0KCk7IH0KLSAgICBjb25zdCBjb2RlY3Z0X3R5cGUmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpjb2RlY3Z0XzsgfQotICAgIHZvaWQgaW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGxvYykgCi0gICAgeyAKLSAgICAgICAgbG9jXyA9IGxvYzsKLSAgICAgICAgcmVzZXRfY29kZWN2dCgpOwotICAgIH0KLSAgICB2b2lkIHJlc2V0X2NvZGVjdnQoKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgI2lmbmRlZiBORE5CT09TVF9IQVNfTUFDUk9fVVNFX0ZBQ0VUCi0gICAgICAgICAgICBjb2RlY3Z0XyA9ICYgdXNlX2ZhY2V0PCBjb2RlY3Z0X3R5cGUgPihsb2NfKTsKLSAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgIGNvZGVjdnRfID0gJiBfVVNFKGxvY18sIGNvZGVjdnRfdHlwZSk7Ci0gICAgICAgICNlbmRpZgotICAgIH0KLSAgICBzdGQ6OmxvY2FsZSBsb2NfOyAvLyBQcmV2ZW50IGNvZGVjdnRfIGZyb20gYmVpbmcgZnJlZWQuCi0gICAgY29uc3QgY29kZWN2dF90eXBlKiBjb2RlY3Z0XzsKLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT0RFQ1ZUX0hPTERFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYXV0b19saW5rLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYXV0b19saW5rLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE5ZjgwNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2F1dG9fbGluay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQWRhcHRlZCBmcm9tIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4gYW5kIGZyb20KLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvc2VwYXJhdGVfY29tcGlsYXRpb24uaHRtbCwgYnkgSm9obiBNYWRkb2NrLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQVVUT19MSU5LX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0FVVE9fTElOS19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfRVhURVJOQUxfTElCX05BTUUpCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgXAotICAgICB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgXAotICAgICB8fCAoZGVmaW5lZChfX01XRVJLU19fKSAmJiBkZWZpbmVkKF9XSU4zMikgJiYgKF9fTVdFUktTX18gPj0gMHgzMDAwKSkgXAotICAgICB8fCAoZGVmaW5lZChfX0lDTCkgJiYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmIChfTVNDX1ZFUiA+PSAxMjAwKSkgXAotICAgICAvKiovCi0jICBwcmFnbWEgY29tbWVudChsaWIsIE5ETkJPT1NUX0VYVEVSTkFMX0xJQl9OQU1FKQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9FWFRFUk5BTF9MSUJfTkFNRQotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRW5hYmxlIGF1dG9tYXRpYyBsaWJyYXJ5IHZhcmlhbnQgc2VsZWN0aW9uLS0tLS0tLS0tLS0tLS0tLS8vIAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1NPVVJDRSkgJiYgXAotICAgICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9OT19MSUIpICYmIFwKLSAgICAhZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fTElCKSBcCi0gICAgLyoqLwotCi0vLyBTZXQgdGhlIG5hbWUgb2Ygb3VyIGxpYnJhcnksIHRoaXMgd2lsbCBnZXQgdW5kZWYnZWQgYnkgYXV0b19saW5rLmhwcAotLy8gb25jZSBpdCdzIGRvbmUgd2l0aCBpdC4KLSMgZGVmaW5lIE5ETkJPT1NUX0xJQl9OQU1FIG5kbmJvb3N0X2lvc3RyZWFtcwotCi0vLyBJZiB3ZSdyZSBpbXBvcnRpbmcgY29kZSBmcm9tIGEgZGxsLCB0aGVuIHRlbGwgYXV0b19saW5rLmhwcCBhYm91dCBpdC4KLSMgaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0RZTl9MSU5LKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RZTl9MSU5LCi0jIGVuZGlmCi0KLS8vIEFuZCBpbmNsdWRlIHRoZSBoZWFkZXIgdGhhdCBkb2VzIHRoZSB3b3JrLgotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4KLSNlbmRpZiAgLy8gYXV0by1saW5raW5nIGRpc2FibGVkCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQVVUT19MSU5LX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9iemlwMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2J6aXAyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYyY2E2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2J6aXAyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBBZGFwdGVkIGZyb20gPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPiBhbmQgZnJvbQotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sLCBieSBKb2huIE1hZGRvY2suCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQlpJUDJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0JaSVAyX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9CWklQMl9CSU5BUlkpCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgXAotICAgICBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgXAotICAgICAoZGVmaW5lZChfX01XRVJLU19fKSAmJiBkZWZpbmVkKF9XSU4zMikgJiYgKF9fTVdFUktTX18gPj0gMHgzMDAwKSkgfHwgXAotICAgICAoZGVmaW5lZChfX0lDTCkgJiYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmIChfTVNDX1ZFUiA+PSAxMjAwKSkgXAotICAgICAvKiovCi0KLS8vIFNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIC5saWIgZmlsZS4KLSMgIHByYWdtYSBjb21tZW50KGxpYiwgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0JaSVAyX0JJTkFSWSkpCi0jIGVuZGlmCi0jZWxzZSAKLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1NPVVJDRSkgJiYgXAotICAgICAhZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKSAmJiBcCi0gICAgICFkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19MSUIpIFwKLSAgICAgLyoqLwotCi0vLyBTZXQgdGhlIG5hbWUgb2Ygb3VyIGxpYnJhcnksIHRoaXMgd2lsbCBnZXQgdW5kZWYnZWQgYnkgYXV0b19saW5rLmhwcAotLy8gb25jZSBpdCdzIGRvbmUgd2l0aCBpdC4KLSMgIGRlZmluZSBORE5CT09TVF9MSUJfTkFNRSBuZG5ib29zdF9iemlwMgotCi0vLyBJZiB3ZSdyZSBpbXBvcnRpbmcgY29kZSBmcm9tIGEgZGxsLCB0aGVuIHRlbGwgYXV0b19saW5rLmhwcCBhYm91dCBpdC4KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19EWU5fTElOSykKLSMgICBkZWZpbmUgTkROQk9PU1RfRFlOX0xJTksKLSMgIGVuZGlmCi0KLS8vIEFuZCBpbmNsdWRlIHRoZSBoZWFkZXIgdGhhdCBkb2VzIHRoZSB3b3JrLgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jIGVuZGlmCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQlpJUDJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9jb2RlY3Z0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZhNDViMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQ09ERUNWVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQ09ERUNWVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgIAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVN1cHBvcnQgZm9yIGNvZGVjdnQgd2l0aCB1c2VyLWRlZmluZWQgc3RhdGUgdHlwZXMtLS0tLS0tLS0vLwotCi0jaWYgZGVmaW5lZChfX01TTF9DUFBfXykgfHwgZGVmaW5lZChfX0xJQkNPTU9fXykgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX1NUTFBPUlRfVkVSU0lPTiwgPD0gMHg0NTApIFwKLSAgICAvKiovCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfTk9fUFJJTUFSWV9DT0RFQ1ZUX0RFRklOSVRJT04KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX1NUTFBPUlRfVkVSU0lPTiwgPiAweDQ1MCkgXAotICAgIC8qKi8KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19FTVBUWV9QUklNQVJZX0NPREVDVlRfREVGSU5JVElPTgotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tQ2hlY2sgZm9yIGNvZGVjdnQgY3RvciB0YWtpbmcgYSByZWZlcmVuY2UgY291bnQtLS0tLS0tLS0tLS8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDUpKSB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfU1RMUE9SVF9WRVJTSU9OLCA8IDB4NDYxKSBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05PX0NPREVDVlRfQ1RPUl9GUk9NX1NJWkVfVAotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tTm9ybWFsaXplIGNvZGVjdnQ6Omxlbmd0aC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiAhZGVmaW5lZChfX01TTF9DUFBfXykgJiYgIWRlZmluZWQoX19MSUJDT01PX18pICYmIFwKLSAgICAoIWRlZmluZWQoTkROQk9PU1RfUldTVERfVkVSKSB8fCBORE5CT09TVF9SV1NURF9WRVIgPCAweDA0MDEwMzAwKSAmJiBcCi0gICAgKCFkZWZpbmVkKF9fTUFDSF9fKSB8fCAhZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSkKLSAgICAvKiovCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9DVl9RVUFMSUZJRVIgY29uc3QKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9DVl9RVUFMSUZJRVIKLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUNoZWNrIGZvciBjb2RlY3Z0OjptYXhfbGVuZ3RoLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfU1RMUE9SVF9WRVJTSU9OLCA8IDB4NDYxKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05PX0NPREVDVlRfTUFYX0xFTkdUSAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1QdXQgbWJzdGF0ZV90IGFuZCBjb2RlY3Z0IGluIHN0ZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFCi0jIGluY2x1ZGUgPGxvY2FsZT4KLSNlbmRpZgotCi0vLyBGcm9tIFJvYmVydCBSYW1leSdzIHZlcnNpb24gb2YgdXRmOF9jb2RlY3Z0X2ZhY2V0LgotbmFtZXNwYWNlIHN0ZCB7IAotCi0jaWYgZGVmaW5lZChfX0xJQkNPTU9fXykKLSAgICB1c2luZyA6Om1ic3RhdGVfdDsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSAgICB1c2luZyA6Om1ic3RhdGVfdDsKLSNlbGlmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotICAgIHVzaW5nIDo6Y29kZWN2dDsKLSAgICB1c2luZyA6Om1ic3RhdGVfdDsKLSNlbmRpZgotCi19IC8vIEVuZCBuYW1lc3BhY2Ugc3RkLgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19DT0RFQ1ZUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNjVmMDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgLy8gTkROQk9PU1RfTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+ICAvLyBORE5CT09TVF9XT1JLQVJPVU5ELgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpICAgIC8vIENvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQuCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEzMCkgICAgLy8gTG9naWNhbCBvcGVyYXRpb24gb24gYWRkcmVzcyBvZiBzdHJpbmcgY29uc3RhbnQuCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIyNCkgICAgLy8gUGFyYW1ldGVyIHByZXZpb3VzbHkgZGVmaW5lZCBhcyB0eXBlLgotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpICAgIC8vIENvbnZlcnNpb246IHBvc3NpYmxlIGxvc3Mgb2YgZGF0YS4KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTEyKSAgICAvLyBBc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQuCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDcwNikgICAgLy8gQXNzaWdubWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbi4KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxNDAwKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2MzM0KSAgIC8vIHNpemVvZiBhcHBsaWVkIHRvIGFuIGV4cHJlc3Npb24gd2l0aCBhbiBvcGVyYXRvci4KLSMgZW5kaWYKLSNlbHNlCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotIyAgcHJhZ21hIHdhcm4gLTgwMDggICAgIC8vIENvbmRpdGlvbiBhbHdheXMgdHJ1ZS9mYWxzZS4KLSMgIHByYWdtYSB3YXJuIC04MDY2ICAgICAvLyBVbnJlYWNoYWJsZSBjb2RlLgotIyAgcHJhZ21hIHdhcm4gLTgwNzEgICAgIC8vIENvbnZlcnNpb24gbWF5IGxvc2Ugc2lnbmlmaWNhbnQgZGlnaXRzLgotIyAgcHJhZ21hIHdhcm4gLTgwNzIgICAgIC8vIFN1c3BpY2lvdXMgcG9pbnRlciBhcml0aG1ldGljLgotIyAgcHJhZ21hIHdhcm4gLTgwODAgICAgIC8vIGlkZW50aWZpZXIgZGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQuCi0jIGVuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZHluX2xpbmsuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9keW5fbGluay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ZDkyMmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9keW5fbGluay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQWRhcHRlZCBmcm9tIGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvc2VwYXJhdGVfY29tcGlsYXRpb24uaHRtbCwgYnkKLS8vIEpvaG4gTWFkZG9jay4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19EWU5fTElOS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfRFlOX0xJTktfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1FbmFibGUgZHluYW1pYyBsaW5raW5nIG9uIHdpbmRvd3MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8gCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfREVDTFNQRUMgCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19EWU5fTElOSykKLSMgIGlmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TT1VSQ0UKLSMgICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgX19kZWNsc3BlYyhkbGxleHBvcnQpCi0jICBlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotIyAgZW5kaWYgIAotIyBlbmRpZiAgCi0jZW5kaWYgCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfRFlOX0xJTktfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwNDNjNWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbHNlCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotIyAgcHJhZ21hIHdhcm4gLjgwMDggICAgIC8vIENvbmRpdGlvbiBhbHdheXMgdHJ1ZS9mYWxzZS4KLSMgIHByYWdtYSB3YXJuIC44MDY2ICAgICAvLyBVbnJlYWNoYWJsZSBjb2RlLgotIyAgcHJhZ21hIHdhcm4gLjgwNzEgICAgIC8vIENvbnZlcnNpb24gbWF5IGxvc2Ugc2lnbmlmaWNhbnQgZGlnaXRzLgotIyAgcHJhZ21hIHdhcm4gLjgwNzIgICAgIC8vIFN1c3BpY2lvdXMgcG9pbnRlciBhcml0aG1ldGljLgotIyAgcHJhZ21hIHdhcm4gLjgwODAgICAgIC8vIGlkZW50aWZpZXIgZGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQuCi0jIGVuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZnBvcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Zwb3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmI5NjU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZnBvcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwCi0gKiBEYXRlOiAgICAgICAgVGh1IERlYyAwNiAxMzoyMTo1NCBNU1QgMjAwNwotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogRGVmaW5lcyB0aGUgcHJlcHJvY2Vzc29yIHN5bWJvbCBORE5CT09TVF9JT1NUUkVBTVNfSEFTX0RJTktVTVdBUkVfRlBPUyBmb3IKLSAqIHBsYXRmb3JtcyB0aGF0IHVzZSB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc3RkOjpmcG9zIGZyb20gdGhlIERpbmt1bXdhcmUgCi0gKiBTdGFuZGFyZCBMaWJyYXJ5LgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfRlBPU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfRlBPU19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSMgaWYgKGRlZmluZWQoX1lWQUxTKSB8fCBkZWZpbmVkKF9DUFBMSUJfVkVSKSkgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmIFwKLSAgICAgIWRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikgJiYgIWRlZmluZWQoX19RTlhfXykKLSAgICAgLyoqLwotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19IQVNfRElOS1VNV0FSRV9GUE9TCi0jIGVuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0ZQT1NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2djYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2djYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ODUzNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9nY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEFkYXB0ZWQgZnJvbSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+IGFuZCBmcm9tCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL3NlcGFyYXRlX2NvbXBpbGF0aW9uLmh0bWwsIGJ5IEpvaG4gTWFkZG9jay4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19HQ0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0dDQ19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX0lOVEVMLgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfSU5URUwpCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfR0NDIChfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0dDQ19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfR0NDX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0dDQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M4M2FlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2xpbWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19MSU1JVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0xJTUlUU19IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTUFYX0ZPUldBUkRJTkdfQVJJVFkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWSAzCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTUFYX0VYRUNVVEVfQVJJVFkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRVhFQ1VURV9BUklUWSA1Ci0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfTElNSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmMzVjNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBBZGFwdGVkIGZyb20gPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPiBhbmQgZnJvbQotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sLCBieSBKb2huIE1hZGRvY2suCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9nY2MuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OKQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgfHwgXAotICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgfHwgXAotICAgICBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIHx8IFwKLSAgICAgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9JT1NUUkVBTVNfR0NDLCA8PSAyOTUpIFwKLSAgICAgLyoqLwotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotIyBlbmRpZgotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9ydGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9ydGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzliODE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvcnRsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiBEZWZpbmVzIHByZXByb2Nlc3NvciBzeW1ib2xzIGV4cGFuZGluZyB0byB0aGUgbmFtZXMgb2YgZnVuY3Rpb25zIGluIHRoZSAKLSAqIEMgcnVudGltZSBsaWJyYXJ5IHVzZWQgdG8gYWNjZXNzIGZpbGUgZGVzY3JpcHRvcnMgYW5kIHRvIHRoZSB0eXBlIHVzZWQKLSAqIHRvIHN0b3JlIGZpbGUgb2Zmc2V0cyBmb3Igc2Vla2luZy4KLSAqIAotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3J0bC5ocHAKLSAqIERhdGU6ICAgICAgICBXZWQgRGVjIDI2IDExOjU4OjExIE1TVCAyMDA3Ci0gKiAKLSAqIENvcHlyaWdodDogICAyMDA3LTIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfUlRMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19SVExfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpbmRvd3NfcG9zaXguaHBwPgotCi0vLyBIYW5kbGUgb3BlbiwgY2xvc2UsIHJlYWQsIGFuZCB3cml0ZQotI2lmZGVmIF9fQk9STEFORENfXwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1JUTCh4KSBORE5CT09TVF9KT0lOKF9ydGxfLCB4KQotI2VsaWYgZGVmaW5lZCBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1JUTCh4KSBORE5CT09TVF9KT0lOKF8sIHgpCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1JUTCh4KSA6OnggIC8vIERpc3Rpbmd1aXNoIGZyb20gbWVtYmVyIGZ1bmN0aW9uIG5hbWVkIHgKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfT1BFTiAgIE5ETkJPT1NUX0lPU1RSRUFNU19SVEwob3BlbikKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX0NMT1NFICBORE5CT09TVF9JT1NUUkVBTVNfUlRMKGNsb3NlKQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfUkVBRCAgIE5ETkJPT1NUX0lPU1RSRUFNU19SVEwocmVhZCkKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1dSSVRFICBORE5CT09TVF9JT1NUUkVBTVNfUlRMKHdyaXRlKQotCi0vLyBIYW5kbGUgbHNlZWssIG9mZl90LCBmdHJ1bmNhdGUsIGFuZCBzdGF0Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSMgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCBkZWZpbmVkKF9fTVNWQ1JUX18pIC8vIE1TVkMsIE1pbkdXCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1NFRUsgICAgX2xzZWVraTY0Ci0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX09GRlNFVCAgX19pbnQ2NAotIyBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm9ybGFuZCwgTWV0cm93ZXJrcywgLi4uCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1NFRUsgICAgbHNlZWsgIAotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9PRkZTRVQgIGxvbmcKLSMgZW5kaWYKLSNlbHNlIC8vIE5vbi13aW5kb3dzCi0jIGlmIGRlZmluZWQoX0xBUkdFRklMRTY0X1NPVVJDRSkgJiYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiBcCi0gICAgICAgICAoIWRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpIHx8IF9GSUxFX09GRlNFVF9CSVRTICE9IDY0KSB8fCBcCi0gICAgIGRlZmluZWQoX0FJWCkgJiYgIWRlZmluZWQoX0xBUkdFX0ZJTEVTKSB8fCBcCi0gICAgIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0hBU19MQVJHRV9GSUxFX0VYVEVOU0lPTlMpCi0gICAgIC8qKi8KLQotICAgIC8qIFN5c3RlbXMgd2l0aCB0cmFuc2l0aW9uYWwgZXh0ZW5zaW9ucyBmb3IgbGFyZ2UgZmlsZSBzdXBwb3J0ICovCi0KLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfU0VFSyAgICAgIGxzZWVrNjQKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfVFJVTkNBVEUgIGZ0cnVuY2F0ZTY0Ci0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX01NQVAgICAgICBtbWFwNjQKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfU1RBVCAgICAgIHN0YXQ2NAotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9GU1RBVCAgICAgZnN0YXQ2NAotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9PRkZTRVQgICAgb2ZmNjRfdAotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1NFRUsgICAgICBsc2VlawotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9UUlVOQ0FURSAgZnRydW5jYXRlCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX01NQVAgICAgICBtbWFwCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1NUQVQgICAgICBzdGF0Ci0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX0ZTVEFUICAgICBmc3RhdAotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9PRkZTRVQgICAgb2ZmX3QKLSMgZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19SVExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3VucmVhY2hhYmxlX3JldHVybi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3VucmVhY2hhYmxlX3JldHVybi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZTg1NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy91bnJlYWNoYWJsZV9yZXR1cm4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDEwIERhbmllbCBKYW1lcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9VTlJFQUNIQUJMRV9SRVRVUk5fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfVU5SRUFDSEFCTEVfUkVUVVJOX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gSWYgQm9vc3QuRXhjZXB0aW9uIGhhcyBORE5CT09TVF9BVFRSSUJVVEVfTk9SRVRVUk4KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fR05VQ19fKQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKHgpIFwKLSAgICBORE5CT09TVF9VTlJFQUNIQUJMRV9SRVRVUk4oeCkKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oeCkgXAotICAgIHJldHVybiB4OwotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmVhZDNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBBZGFwdGVkIGZyb20gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sLCBieQotLy8gSm9obiBNYWRkb2NrLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX1dJREVfU1RSRUFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfV0lERV9TVFJFQU1TX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgIAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVRlbXBsYXRlZCBzdHJlYW0gc3VwcG9ydC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBGcm9tIG5kbmJvb3N0L2R5bmFtaWNfYml0c2V0LmhwcDsgdGhhbmtzIHRvIE1hdHRoaWFzIFRyb3llciBmb3IgY3JheSBwYXRjaC4KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgaWYgZGVmaW5lZChfX1NUTF9DT05GSUdfSCkgJiYgXAotICAgICFkZWZpbmVkIChfX1NUTF9VU0VfTkVXX0lPU1RSRUFNUykgJiYgIWRlZmluZWQoX19jcmF5eDEpIFwKLSAgICAvKiovCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgZW5kaWYKLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tV2lkZSBzdHJlYW0gc3VwcG9ydC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTKSB8fCBcCi0gICAgIGRlZmluZWQgKE5ETkJPT1NUX05PX1NURF9XU1RSRUFNQlVGKSAmJiBcCi0gICAgICggIWRlZmluZWQoX19NU0xfQ1BQX18pIHx8IGRlZmluZWQoX01TTF9OT19XQ0hBUlRfQ1BQX1NVUFBPUlQpICkgXAotICAgICAvKiovCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotIyBlbmRpZgotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUyAgIAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUxvY2FsZSBzdXBwb3J0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLSMgaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKSB8fCBcCi0gICAgIGRlZmluZWQoX19DWUdXSU5fXykgJiYgXAotICAgICAoICFkZWZpbmVkKF9fTVNMX0NQUF9fKSB8fCBkZWZpbmVkKF9NU0xfTk9fV0NIQVJUX0NQUF9TVVBQT1JUKSApIFwKLSAgICAgLyoqLwotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLSMgZW5kaWYKLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfV0lERV9TVFJFQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aW5kb3dzX3Bvc2l4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2luZG93c19wb3NpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZDljNDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aW5kb3dzX3Bvc2l4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIChDKSBDb3B5cmlnaHQgMjAwMiwgMjAwMyBCZW1hbiBEYXdlcyAgIEJvb3N0LkZpbGVzeXN0ZW0KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX1dJTkRPV1NfUE9TSVhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX1dJTkRPV1NfUE9TSVhfSFBQX0lOQ0xVREVECi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRnJvbSBuZG5ib29zdC9saWJzL2ZpbGVzeXN0ZW0vc3JjL3BhdGhfcG9zaXhfd2luZG93cy5jcHAtLS0tLS8vCi0KLS8vIE5ETkJPT1NUX0lPU1RSRUFNU19QT1NJWCBvciBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUyBzcGVjaWZ5IHdoaWNoIEFQSSB0byB1c2UuCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX0lPU1RSRUFNU19QT1NJWCApCi0jIGlmIChkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoV0lOMzIpKSAmJiBcCi0gICAgICFkZWZpbmVkKF9fQ1lHV0lOX18pIFwKLSAgICAgLyoqLwotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUE9TSVgKLSMgZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19XSU5ET1dTX1BPU0lYX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy96bGliLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvemxpYi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzZGY1MGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy96bGliLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBBZGFwdGVkIGZyb20gPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPiBhbmQgZnJvbQotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sLCBieSBKb2huIE1hZGRvY2suCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfWkxJQl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfWkxJQl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9TVFJJTkdJWkUuCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1pMSUJfQklOQVJZKQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IFwKLSAgICAgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IFwKLSAgICAgKGRlZmluZWQoX19NV0VSS1NfXykgJiYgZGVmaW5lZChfV0lOMzIpICYmIChfX01XRVJLU19fID49IDB4MzAwMCkpIHx8IFwKLSAgICAgKGRlZmluZWQoX19JQ0wpICYmIGRlZmluZWQoX01TQ19FWFRFTlNJT05TKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkpIFwKLSAgICAgLyoqLwotCi0vLyBTcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSAubGliIGZpbGUuCi0jICBwcmFnbWEgY29tbWVudChsaWIsIE5ETkJPT1NUX1NUUklOR0laRShORE5CT09TVF9aTElCX0JJTkFSWSkpCi0jIGVuZGlmCi0jZWxzZSAKLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1NPVVJDRSkgJiYgXAotICAgICAhZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKSAmJiBcCi0gICAgICFkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19MSUIpIFwKLSAgICAgLyoqLwotCi0vLyBTZXQgdGhlIG5hbWUgb2Ygb3VyIGxpYnJhcnksIHRoaXMgd2lsbCBnZXQgdW5kZWYnZWQgYnkgYXV0b19saW5rLmhwcAotLy8gb25jZSBpdCdzIGRvbmUgd2l0aCBpdC4KLSMgIGRlZmluZSBORE5CT09TVF9MSUJfTkFNRSBuZG5ib29zdF96bGliCi0KLS8vIElmIHdlJ3JlIGltcG9ydGluZyBjb2RlIGZyb20gYSBkbGwsIHRoZW4gdGVsbCBhdXRvX2xpbmsuaHBwIGFib3V0IGl0LgotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0RZTl9MSU5LKQotIyAgIGRlZmluZSBORE5CT09TVF9EWU5fTElOSwotIyAgZW5kaWYKLQotLy8gQW5kIGluY2x1ZGUgdGhlIGhlYWRlciB0aGF0IGRvZXMgdGhlIHdvcmsuCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4KLSMgZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19aTElCX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvdW50ZWRfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvdW50ZWRfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzA1ODk4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb3VudGVkX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09VTlRFRF9BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT1VOVEVEX0FSUkFZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtaW4uCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAgICAgICAgLy8gc3RyZWFtc2l6ZS4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWNsYXNzIGNvdW50ZWRfYXJyYXlfc291cmNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHNvdXJjZV90YWcgIGNhdGVnb3J5OwotICAgIGNvdW50ZWRfYXJyYXlfc291cmNlKGNvbnN0IENoKiBidWYsIHN0ZDo6c3RyZWFtc2l6ZSBzaXplKSAKLSAgICAgICAgOiBidWZfKGJ1ZiksIHB0cl8oMCksIGVuZF8oc2l6ZSkKLSAgICAgICAgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoQ2gqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IChzdGQ6Om1pbikobiwgZW5kXyAtIHB0cl8pOwotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcl90eXBlKTo6Y29weQotICAgICAgICAgICAgKHMsIGJ1Zl8gKyBwdHJfLCByZXN1bHQpOwotICAgICAgICBwdHJfICs9IHJlc3VsdDsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIGNvdW50KCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQotcHJpdmF0ZToKLSAgICBjb25zdCBDaCogICAgICAgIGJ1Zl87Ci0gICAgc3RkOjpzdHJlYW1zaXplICBwdHJfLCBlbmRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgY291bnRlZF9hcnJheV9zaW5rIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzaW5rX3RhZyAgY2F0ZWdvcnk7Ci0gICAgY291bnRlZF9hcnJheV9zaW5rKENoKiBidWYsIHN0ZDo6c3RyZWFtc2l6ZSBzaXplKSAKLSAgICAgICAgOiBidWZfKGJ1ZiksIHB0cl8oMCksIGVuZF8oc2l6ZSkKLSAgICAgICAgeyB9Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBDaCogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gKHN0ZDo6bWluKShuLCBlbmRfIC0gcHRyXyk7Ci0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpOjpjb3B5Ci0gICAgICAgICAgICAoYnVmXyArIHB0cl8sIHMsIHJlc3VsdCk7Ci0gICAgICAgIHB0cl8gKz0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgY291bnQoKSBjb25zdCB7IHJldHVybiBwdHJfOyB9Ci1wcml2YXRlOgotICAgIENoKiAgICAgICAgICAgICAgYnVmXzsKLSAgICBzdGQ6OnN0cmVhbXNpemUgIHB0cl8sIGVuZF87Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPVU5URURfQVJSQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY3VycmVudF9kaXJlY3RvcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2N1cnJlbnRfZGlyZWN0b3J5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRhNjk1MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY3VycmVudF9kaXJlY3RvcnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcAotICogRGF0ZTogICAgICAgIFRodSBEZWMgMDYgMTM6MjE6NTQgTVNUIDIwMDcKLSAqIENvcHlyaWdodDogICAyMDA3LTIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICoKLSAqIERlZmluZXMgdGhlIGZ1bmN0aW9uIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y3VycmVudF9kaXJlY3RvcnksIHVzZWQgYnkgCi0gKiBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmFic29sdXRlX3BhdGguCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NVUlJFTlRfRElSRUNUT1JZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NVUlJFTlRfRElSRUNUT1JZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIG1ha2Ugc3VyZSBzaXplX3QgaXMgaW4gc3RkLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAvLyBzaXplX3QKLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9idWZmZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpbmRvd3NfcG9zaXguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3lzdGVtX2ZhaWx1cmUuaHBwPgotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0jIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOICAvLyBFeGNsdWRlIHJhcmVseS11c2VkIHN0dWZmIGZyb20gV2luZG93cyBoZWFkZXJzCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jIGluY2x1ZGUgPHVuaXN0ZC5oPiAgICAgICAgLy8gc3lzY29uZi4KLSNlbmRpZgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5Ci1pbmxpbmUgc3RkOjpzdHJpbmcgY3VycmVudF9kaXJlY3RvcnkoKQotewotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgRFdPUkQgICAgICAgICAgICAgICBsZW5ndGg7Ci0gICAgYmFzaWNfYnVmZmVyPGNoYXI+ICBidWYoTUFYX1BBVEgpOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGxlbmd0aCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeUEoYnVmLnNpemUoKSwgYnVmLmRhdGEoKSk7Ci0gICAgICAgIGlmICghbGVuZ3RoKQotICAgICAgICAgICAgdGhyb3dfc3lzdGVtX2ZhaWx1cmUoImZhaWxlZCBkZXRlcm1pbmluZyBjdXJyZW50IGRpcmVjdG9yeSIpOwotICAgICAgICBpZiAobGVuZ3RoIDwgc3RhdGljX2Nhc3Q8RFdPUkQ+KGJ1Zi5zaXplKCkpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGJ1Zi5yZXNpemUoYnVmLnNpemUoKSAqIDIpOwotICAgIH0KLSAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmLmRhdGEoKSwgbGVuZ3RoKTsKLSNlbHNlIC8vICNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIGJhc2ljX2J1ZmZlcjxjaGFyPiBidWYocGF0aGNvbmYoIi4iLCBfUENfUEFUSF9NQVgpKTsKLSAgICBpZiAoIWdldGN3ZChidWYuZGF0YSgpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1Zi5zaXplKCkpKSkKLSAgICAgICAgdGhyb3dfc3lzdGVtX2ZhaWx1cmUoImZhaWxlZCBkZXRlcm1pbmluZyBjdXJyZW50IGRpcmVjdG9yeSIpOwotICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWYuZGF0YSgpKTsKLSNlbmRpZiAvLyAjaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLX0KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DVVJSRU5UX0RJUkVDVE9SWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kZWZhdWx0X2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGVmYXVsdF9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODVhYWU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kZWZhdWx0X2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RFRkFVTFRfQVJHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RFRkFVTFRfQVJHX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9BUkcoYXJnKSBtcGw6OmlkZW50aXR5PCBhcmcgPjo6dHlwZQotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0FSRyhhcmcpIGFyZwotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfREVGQVVMVF9BUkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Rpc3BhdGNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE3ZTkyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ESVNQQVRDSF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ESVNQQVRDSF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgIC8vIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUuIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4gICAgICAgICAvLyBjYXRlZ29yeV9vZi4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPiAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+ICAgICAgICAgCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMge25hbWVzcGFjZSBkZXRhaWwgewotICAgIAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZzEsIHR5cGVuYW1lIFRhZzIsCi0gICAgICAgICAgdHlwZW5hbWUgVGFnMyA9IG1wbDo6dm9pZF8sIHR5cGVuYW1lIFRhZzQgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIFRhZzUgPSBtcGw6OnZvaWRfLCB0eXBlbmFtZSBUYWc2ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXRlZ29yeSA9IAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNhdGVnb3J5X29mPFQ+Ojp0eXBlID4KLXN0cnVjdCBkaXNwYXRjaCAKLSAgICA6IGlvc3RyZWFtczo6c2VsZWN0PCAgLy8gRGlzYW1iaWd1YXRpb24gZm9yIFRydTY0LgotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdGVnb3J5LCBUYWcxPiwgVGFnMSwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXRlZ29yeSwgVGFnMj4sIFRhZzIsCi0gICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0ZWdvcnksIFRhZzM+LCBUYWczLAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdGVnb3J5LCBUYWc0PiwgVGFnNCwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXRlZ29yeSwgVGFnNT4sIFRhZzUsCi0gICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0ZWdvcnksIFRhZzY+LCBUYWc2Ci0gICAgICA+Ci0gICAgeyB9OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRElTUEFUQ0hfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZG91YmxlX29iamVjdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZG91YmxlX29iamVjdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMjNmN2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2RvdWJsZV9vYmplY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgY2xhc3MgdGVtcGxhdGUgCi0vLyBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmRvdWJsZV9vYmplY3QsIHdoaWNoIGlzIHNpbWlsYXIgdG8gY29tcHJlc3NlZCBwYWlyCi0vLyBleGNlcHQgdGhhdCBib3RoIG1lbWJlcnMgb2YgdGhlIHBhaXIgaGF2ZSB0aGUgc2FtZSB0eXBlLCBhbmQgCi0vLyBjb21wcmVzc2lvbiBvY2N1cnMgb25seSBpZiByZXF1ZXN0ZWQgdXNpbmcgYSBib29sZWFuIHRlbXBsYXRlCi0vLyBwYXJhbWV0ZXIuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ET1VCTEVfT0JKRUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RPVUJMRV9PQkpFQ1RfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAvLyBzd2FwLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPiAweDMwMDMpCi0jIGluY2x1ZGUgPG1zbF91dGlsaXR5PgotI2Vsc2UKLSMgaW5jbHVkZSA8bmRuYm9vc3QvY2FsbF90cmFpdHMuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIHNpbmdsZV9vYmplY3RfaG9sZGVyIHsKLXB1YmxpYzoKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sID4gMHgzMDAzKQotICAgIHR5cGVkZWYgTWV0cm93ZXJrczo6Y2FsbF90cmFpdHM8VD4gICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmNhbGxfdHJhaXRzPFQ+ICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0jZW5kaWYKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpwYXJhbV90eXBlICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cmVmZXJlbmNlICAgICAgICByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6Y29uc3RfcmVmZXJlbmNlICBjb25zdF9yZWZlcmVuY2U7Ci0gICAgc2luZ2xlX29iamVjdF9ob2xkZXIoKSB7IH0KLSAgICBzaW5nbGVfb2JqZWN0X2hvbGRlcihwYXJhbV90eXBlIHQpIDogZmlyc3RfKHQpIHsgfQotICAgIHJlZmVyZW5jZSBmaXJzdCgpIHsgcmV0dXJuIGZpcnN0XzsgfQotICAgIGNvbnN0X3JlZmVyZW5jZSBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIGZpcnN0XzsgfQotICAgIHJlZmVyZW5jZSBzZWNvbmQoKSB7IHJldHVybiBmaXJzdF87IH0KLSAgICBjb25zdF9yZWZlcmVuY2Ugc2Vjb25kKCkgY29uc3QgeyByZXR1cm4gZmlyc3RfOyB9Ci0gICAgdm9pZCBzd2FwKHNpbmdsZV9vYmplY3RfaG9sZGVyJiBvKQotICAgIHsgc3RkOjpzd2FwKGZpcnN0Xywgby5maXJzdF8pOyB9Ci1wcml2YXRlOgotICAgIFQgZmlyc3RfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBkb3VibGVfb2JqZWN0X2hvbGRlciB7Ci1wdWJsaWM6Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA+IDB4MzAwMykKLSAgICB0eXBlZGVmIE1ldHJvd2Vya3M6OmNhbGxfdHJhaXRzPFQ+ICAgICAgICAgICAgIHRyYWl0c190eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjpjYWxsX3RyYWl0czxUPiAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cGFyYW1fdHlwZSAgICAgICBwYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OnJlZmVyZW5jZSAgICAgICAgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmNvbnN0X3JlZmVyZW5jZSAgY29uc3RfcmVmZXJlbmNlOwotICAgIGRvdWJsZV9vYmplY3RfaG9sZGVyKCkgeyB9Ci0gICAgZG91YmxlX29iamVjdF9ob2xkZXIocGFyYW1fdHlwZSB0MSwgcGFyYW1fdHlwZSB0MikKLSAgICAgICAgOiBmaXJzdF8odDEpLCBzZWNvbmRfKHQyKSB7IH0KLSAgICByZWZlcmVuY2UgZmlyc3QoKSB7IHJldHVybiBmaXJzdF87IH0KLSAgICBjb25zdF9yZWZlcmVuY2UgZmlyc3QoKSBjb25zdCB7IHJldHVybiBmaXJzdF87IH0KLSAgICByZWZlcmVuY2Ugc2Vjb25kKCkgeyByZXR1cm4gc2Vjb25kXzsgfQotICAgIGNvbnN0X3JlZmVyZW5jZSBzZWNvbmQoKSBjb25zdCB7IHJldHVybiBzZWNvbmRfOyB9Ci0gICAgdm9pZCBzd2FwKGRvdWJsZV9vYmplY3RfaG9sZGVyJiBkKQotICAgIHsgCi0gICAgICAgIHN0ZDo6c3dhcChmaXJzdF8sIGQuZmlyc3RfKTsgCi0gICAgICAgIHN0ZDo6c3dhcChzZWNvbmRfLCBkLnNlY29uZF8pOyAKLSAgICB9Ci1wcml2YXRlOgotICAgIFQgZmlyc3RfLCBzZWNvbmRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSXNEb3VibGU+Ci1jbGFzcyBkb3VibGVfb2JqZWN0IAotICAgIDogcHVibGljIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICBJc0RvdWJsZSwgCi0gICAgICAgICAgICAgICAgIGRvdWJsZV9vYmplY3RfaG9sZGVyPFQ+LCAKLSAgICAgICAgICAgICAgICAgc2luZ2xlX29iamVjdF9ob2xkZXI8VD4KLSAgICAgICAgICAgICA+Ojp0eXBlCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBJc0RvdWJsZSwgCi0gICAgICAgICAgICAgICAgZG91YmxlX29iamVjdF9ob2xkZXI8VD4sIAotICAgICAgICAgICAgICAgIHNpbmdsZV9vYmplY3RfaG9sZGVyPFQ+Ci0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA+IDB4MzAwMykKLSAgICB0eXBlZGVmIE1ldHJvd2Vya3M6OmNhbGxfdHJhaXRzPFQ+ICAgICAgICAgICAgIHRyYWl0c190eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjpjYWxsX3RyYWl0czxUPiAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cGFyYW1fdHlwZSAgICAgICBwYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OnJlZmVyZW5jZSAgICAgICAgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmNvbnN0X3JlZmVyZW5jZSAgY29uc3RfcmVmZXJlbmNlOwotICAgIGRvdWJsZV9vYmplY3QoKSA6IGJhc2VfdHlwZSgpIHt9Ci0gICAgZG91YmxlX29iamVjdChwYXJhbV90eXBlIHQxLCBwYXJhbV90eXBlIHQyKQotICAgICAgICA6IGJhc2VfdHlwZSh0MSwgdDIpIHsgfQotICAgIGJvb2wgaXNfZG91YmxlKCkgY29uc3QgeyByZXR1cm4gSXNEb3VibGU6OnZhbHVlOyB9Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRE9VQkxFX09CSkVDVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lbmFibGVfaWZfc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lbmFibGVfaWZfc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk2ZGZlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0VOQUJMRV9JRl9TVFJFQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRU5BQkxFX0lGX1NUUkVBTV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgIC8vIE5ETkJPT1NUX05PX1NGSU5BRS4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+ICAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwPiAgLy8gaXNfc3RkX2lvLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1OTIpKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0VOQUJMRV9JRl9TVFJFQU0oVCkgXAotICAgICwgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjwgbmRuYm9vc3Q6Omlvc3RyZWFtczo6aXNfc3RkX2lvPFQ+ID46OnR5cGUqID0gMCBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFQpIFwKLSAgICAsIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmPCBuZG5ib29zdDo6aW9zdHJlYW1zOjppc19zdGRfaW88VD4gPjo6dHlwZSogPSAwIFwKLSAgICAvKiovCi0jZWxzZSAKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19FTkFCTEVfSUZfU1RSRUFNKFQpCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0VOQUJMRV9JRl9TVFJFQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Vycm9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ4OTE5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9FUlJPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9FUlJPUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gZmFpbHVyZS4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgY2FudF9yZWFkKCkgCi17IHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgibm8gcmVhZCBhY2Nlc3MiKTsgfQotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgY2FudF93cml0ZSgpIAoteyByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoIm5vIHdyaXRlIGFjY2VzcyIpOyB9Ci0KLWlubGluZSBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSBjYW50X3NlZWsoKSAKLXsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJubyByYW5kb20gYWNjZXNzIik7IH0KLQotaW5saW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIGJhZF9yZWFkKCkgCi17IHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIHJlYWQiKTsgfQotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgYmFkX3B1dGJhY2soKSAKLXsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJwdXRiYWNrIGJ1ZmZlciBmdWxsIik7IH0KLQotaW5saW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIGJhZF93cml0ZSgpIAoteyByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImJhZCB3cml0ZSIpOyB9Ci0KLWlubGluZSBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSB3cml0ZV9hcmVhX2V4aGF1c3RlZCgpIAoteyByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoIndyaXRlIGFyZWEgZXhoYXVzdGVkIik7IH0KLQotaW5saW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIGJhZF9zZWVrKCkgCi17IHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIHNlZWsiKTsgfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRVJST1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMjQwYzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHAKLSAqIERhdGU6ICAgICAgICBUaHUgRGVjIDA2IDEzOjIxOjU0IE1TVCAyMDA3Ci0gKiBDb3B5cmlnaHQ6ICAgMjAwNy0yMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLQotICogRGVmaW5lcyB0aGUgb3ZlcmxvYWRlZCBmdW5jdGlvbiB0ZW1wbGF0ZSAKLSAqIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZXhlY3V0ZV9hbGwoKSBhbmQgdGhlIGZ1bmN0aW9uIHRlbXBsYXRlIAotICogbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpleGVjdXRlX2ZvcmVhY2goKS4KLSAqCi0gKiBleGVjdXRlX2FsbCgpIGludm9rZXMgYSBwcmltYXJ5IG9wZXJhdGlvbiBhbmQgcGVyZm9ybXMgYSBzZXF1ZW5jZSBvZiBjbGVhbnVwIAotICogb3BlcmF0aW9ucywgcmV0dXJuaW5nIHRoZSByZXN1bHQgb2YgdGhlIHByaW1hcnkgb3BlcmF0aW9uIGlmIG5vIGV4Y2VwdGlvbnMKLSAqIGFyZSB0aHJvd24uIElmIG9uZSBvZiB0aGUgb3BlcmF0aW9ucyB0aHJvd3MgYW4gZXhjZXB0aW9uLCBwZXJmb3JtcyB0aGUKLSAqIHJlbWFpbmluZyBvcGVyYXRpb25zIGFuZCByZXRocm93cyB0aGUgaW5pdGlhbCBleGNlcHRpb24uCi0gKgotICogZXhlY3V0ZV9mb3JlYWNoKCkgaXMgYSB2YXJpYW50IG9mIHN0ZDo6Zm9yZWFjaCB3aGljaCBpbnZva2VzIGEgZnVuY3Rpb24gCi0gKiBvYmplY3QgZm9yIGVhY2ggaXRlbSBpbiBhIHNlcXVlbmNlLCBjYXRjaGluZyBhbGwgZXhlY3B0aW9ucyBhbmQgcmV0aHJvd2luZwotICogdGhlIGZpcnN0IGNhdWdodCBleGNlcHRpb24gYWZ0ZXIgdGhlIGZ1bmN0aW9uIG9iamVjdCBoYXMgYmVlbiBpbnZva2VkIG9uIGVhY2gKLSAqIGl0ZW0uCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0VYRUNVVEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRVhFQ1VURV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9saW1pdHMuaHBwPiAgIC8vIE1BWF9FWEVDVVRFX0FSSVRZCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2xvY2FsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvcmVzdWx0X29mLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBIZWxwZXIgZm9yIGNsYXNzIHRlbXBsYXRlIGV4ZWN1dGVfdHJhaXRzLgotdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0Pgotc3RydWN0IGV4ZWN1dGVfdHJhaXRzX2ltcGwgewotICAgIHR5cGVkZWYgUmVzdWx0IHJlc3VsdF90eXBlOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgIHN0YXRpYyBSZXN1bHQgZXhlY3V0ZShPcCBvcCkgeyByZXR1cm4gb3AoKTsgfQotfTsKLQotLy8gU3BlY2lhbGl6YXRpb24gZm9yIHZvaWQgcmV0dXJuLiBGb3Igc2ltcGxpY2l0eSwgZXhlY3V0ZSgpIHJldHVybnMgaW50IAotLy8gZm9yIG9wZXJhdGlvbnMgcmV0dXJuaW5nIHZvaWQuIFRoaXMgY291bGQgYmUgYXZvaWRlZCB3aXRoIGFkZGl0aW9uYWwgd29yay4KLXRlbXBsYXRlPD4KLXN0cnVjdCBleGVjdXRlX3RyYWl0c19pbXBsPHZvaWQ+IHsKLSAgICB0eXBlZGVmIGludCByZXN1bHRfdHlwZTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICBzdGF0aWMgaW50IGV4ZWN1dGUoT3Agb3ApIHsgb3AoKTsgcmV0dXJuIDA7IH0KLX07Ci0KLS8vIERlZHVjZXMgdGhlIHJlc3VsdCB0eXBlIG9mIE9wIGFuZCBhbGxvd3MgdW5pZm9ybSB0cmVhdG1lbnQgb2Ygb3BlcmF0aW9ucyAKLS8vIHJldHVybmluZyB2b2lkIGFuZCBub24tdm9pZC4KLXRlbXBsYXRlPCB0eXBlbmFtZSBPcCwgCi0gICAgICAgICAgdHlwZW5hbWUgUmVzdWx0ID0gLy8gVkM2LjUgd29ya2Fyb3VuZC4KLSAgICAgICAgICAgICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1JFU1VMVF9PRikgJiYgXAotICAgICAgICAgICAgICAgICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1OTIpKQotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlc3VsdF9vZjxPcCgpPjo6dHlwZQotICAgICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBPcDo6cmVzdWx0X3R5cGUKLSAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgPgotc3RydWN0IGV4ZWN1dGVfdHJhaXRzIAotICAgIDogZXhlY3V0ZV90cmFpdHNfaW1wbDxSZXN1bHQ+Ci0gICAgeyB9OwotCi0vLyBJbXBsZW1lbnRhdGlvbiB3aXRoIG5vIGNsZWFudXAgb3BlcmF0aW9ucy4KLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdHlwZW5hbWUgZXhlY3V0ZV90cmFpdHM8T3A+OjpyZXN1bHRfdHlwZSAKLWV4ZWN1dGVfYWxsKE9wIG9wKSAKLXsgCi0gICAgcmV0dXJuIGV4ZWN1dGVfdHJhaXRzPE9wPjo6ZXhlY3V0ZShvcCk7Ci19Ci0KLS8vIEltcGxlbWVudGF0aW9uIHdpdGggb25lIG9yIG1vcmUgY2xlYW51cCBvcGVyYXRpb25zCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKG4pIFwKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wLCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCB0eXBlbmFtZSBDKT4gXAotICAgdHlwZW5hbWUgZXhlY3V0ZV90cmFpdHM8T3A+OjpyZXN1bHRfdHlwZSBcCi0gICBleGVjdXRlX2FsbChPcCBvcCwgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKG4sIEMsIGMpKSBcCi0gICB7IFwKLSAgICAgICB0eXBlbmFtZSBleGVjdXRlX3RyYWl0czxPcD46OnJlc3VsdF90eXBlIHI7IFwKLSAgICAgICB0cnkgeyBcCi0gICAgICAgICAgIHIgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmV4ZWN1dGVfYWxsKCBcCi0gICAgICAgICAgICAgICAgICAgb3AgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKG4pKSBcCi0gICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfREVDKG4pLCBjKSBcCi0gICAgICAgICAgICAgICApOyBcCi0gICAgICAgfSBjYXRjaCAoLi4uKSB7IFwKLSAgICAgICAgICAgdHJ5IHsgXAotICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGMsIE5ETkJPT1NUX1BQX0RFQyhuKSkoKTsgXAotICAgICAgICAgICB9IGNhdGNoICguLi4pIHsgfSBcCi0gICAgICAgICAgIHRocm93OyBcCi0gICAgICAgfSBcCi0gICAgICAgTkROQk9PU1RfUFBfQ0FUKGMsIE5ETkJPT1NUX1BQX0RFQyhuKSkoKTsgXAotICAgICAgIHJldHVybiByOyBcCi0gICB9IFwKLSAgIC8qKi8KLQotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDEsIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRVhFQ1VURV9BUklUWSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotI3VuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPCi0KLXRlbXBsYXRlPGNsYXNzIEluSXQsIGNsYXNzIE9wPgotT3AgZXhlY3V0ZV9mb3JlYWNoKEluSXQgZmlyc3QsIEluSXQgbGFzdCwgT3Agb3ApCi17Ci0gICAgaWYgKGZpcnN0ID09IGxhc3QpCi0gICAgICAgIHJldHVybiBvcDsKLSAgICB0cnkgewotICAgICAgICBvcCgqZmlyc3QpOwotICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgKytmaXJzdDsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZXhlY3V0ZV9mb3JlYWNoKGZpcnN0LCBsYXN0LCBvcCk7Ci0gICAgICAgIH0gY2F0Y2ggKC4uLikgeyB9Ci0gICAgICAgIHRocm93OwotICAgIH0KLSAgICArK2ZpcnN0OwotICAgIHJldHVybiBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmV4ZWN1dGVfZm9yZWFjaChmaXJzdCwgbGFzdCwgb3ApOwotfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRVhFQ1VURV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9maWxlX2hhbmRsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZmlsZV9oYW5kbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjM1ZDFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9maWxlX2hhbmRsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0gKgotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZmlsZV9oYW5kbGUuaHBwCi0gKiBEYXRlOiAgICAgICAgU3VuIEp1biAyMiAxNDoyMzoxMiBNRFQgMjAwOAotICogQ29weXJpZ2h0OiAgIDIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICoKLSAqIERlZmluZXMgdGhlIHR5cGUgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpmaWxlX2hhbmRsZSwgcmVwcmVzZW50aW5nIGFuCi0gKiBvcGVyYXRpbmcgc3lzdGVtIGZpbGUgaGFuZGxlLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GSUxFX0hBTkRMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GSUxFX0hBTkRMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpbmRvd3NfcG9zaXguaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHR5cGVkZWYgdm9pZCogIGZpbGVfaGFuZGxlOyAgLy8gQS5rLmEuIEhBTkRMRQotI2Vsc2UKLSAgICB0eXBlZGVmIGludCAgICBmaWxlX2hhbmRsZTsKLSNlbmRpZgotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRklMRV9IQU5ETEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NWI5MDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRk9SV0FSRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GT1JXQVJEX0hQUF9JTkNMVURFRCAgIAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgICAgICAKLSAKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDLCBORE5CT09TVF9OT19TRklOQUUKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2hfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi0vLy0tLS0tLU1hY3JvcyBmb3IgZGVmaW5pbmcgZm9yd2FyZGluZyBjb25zdHJ1Y3RvcnMgYW5kIG9wZW4gb3ZlcmxvYWRzLS0tLS0tLS0vLwotICAgIAotLy8KLS8vIE1hY3JvOiBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRChjbGFzcywgaW1wbCwgZGV2aWNlLCBwYXJhbXMsIGFyZ3MpCi0vLyBEZXNjcmlwdGlvbjogRGVmaW5lcyBjb25zdHJ1Y3RvcnMgYW5kIG92ZXJsb2FkcyBvZiAnb3Blbicgd2hpY2ggY29uc3RydWN0Ci0vLyAgICAgIGEgZGV2aWNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgYXJndW1lbnQgbGlzdCBhbmQgcGFzcyBpdCB0byB0aGUgc3BlY2lmaWVkCi0vLyAgICAgIGhlbHBlciBmdW5jdGlvbgotLy8gICBjbGFzcyAtIFRoZSBjbGFzcyBuYW1lCi0vLyAgIGltcGwgLSBUaGUgaGVscGVyIGZ1bmN0aW9uCi0vLyAgIGRldmljZSAtIFRoZSBkZXZpY2UgdHlwZQotLy8gICBwYXJhbXMgLSBUaGUgbGlzdCBvZiBmb3JtYWwgcGFyYW1ldGVycyB0cmFpbGluZyB0aGUgZGV2aWNlIHBhcmFtZXRlciBpbgotLy8gICAgIHRoZSBoZWxwZXIgZnVuY3Rpb24ncyBzaWduYXR1cmUKLS8vICAgcGFyYW1zIC0gVGhlIGxpc3Qgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgaGVscGVyIGZ1bmN0aW9uLCBmb2xsb3dpbmcgdGhlCi0vLyAgICAgZGV2aWNlIGFyZ3VtZW50Ci0vLwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRChjbGFzcywgaW1wbCwgZGV2aWNlLCBwYXJhbXMsIGFyZ3MpIFwKLSAgICBjbGFzcyhjb25zdCBkZXZpY2UmIHQgcGFyYW1zKCkpIFwKLSAgICB7IHRoaXMtPmltcGwoOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OndyYXAodCkgYXJncygpKTsgfSBcCi0gICAgY2xhc3MoZGV2aWNlJiB0IHBhcmFtcygpKSBcCi0gICAgeyB0aGlzLT5pbXBsKDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjp3cmFwKHQpIGFyZ3MoKSk7IH0gXAotICAgIGNsYXNzKGNvbnN0IDo6bmRuYm9vc3Q6OnJlZmVyZW5jZV93cmFwcGVyPGRldmljZT4mIHJlZiBwYXJhbXMoKSkgXAotICAgIHsgdGhpcy0+aW1wbChyZWYgYXJncygpKTsgfSBcCi0gICAgdm9pZCBvcGVuKGNvbnN0IGRldmljZSYgdCBwYXJhbXMoKSkgXAotICAgIHsgdGhpcy0+aW1wbCg6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6d3JhcCh0KSBhcmdzKCkpOyB9IFwKLSAgICB2b2lkIG9wZW4oZGV2aWNlJiB0IHBhcmFtcygpKSBcCi0gICAgeyB0aGlzLT5pbXBsKDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjp3cmFwKHQpIGFyZ3MoKSk7IH0gXAotICAgIHZvaWQgb3Blbihjb25zdCA6Om5kbmJvb3N0OjpyZWZlcmVuY2Vfd3JhcHBlcjxkZXZpY2U+JiByZWYgcGFyYW1zKCkpIFwKLSAgICB7IHRoaXMtPmltcGwocmVmIGFyZ3MoKSk7IH0gXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKCBcCi0gICAgICAgIDEsIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9JT1NUUkVBTVNfTUFYX0ZPUldBUkRJTkdfQVJJVFkpLCBcCi0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJESU5HX0NUT1IsIChjbGFzcywgaW1wbCwgZGV2aWNlKSBcCi0gICAgKSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oIFwKLSAgICAgICAgMSwgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWSksIFwKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfRk4sIChjbGFzcywgaW1wbCwgZGV2aWNlKSBcCi0gICAgKSBcCi0gICAgLyoqLwotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJESU5HX0NUT1JfSSh6LCBuLCB0dXBsZSkgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMTAwIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhuKSkgXAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIE5ETkJPT1NUX1BQX0RFQyhuKSwgdHlwZW5hbWUgVSkgPiBcCi0gICAgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCB0dXBsZSkgXAotICAgICggVTEwMCYgdTEwMCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9ERUMobikpIFwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aKHosIE5ETkJPT1NUX1BQX0RFQyhuKSwgY29uc3QgVSwgJnUpIFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NBTUUoVTEwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB0dXBsZSkpKSBcCi0gICAgeyB0aGlzLT5ORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIHR1cGxlKSBcCi0gICAgICAoIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgdHVwbGUpIFwKLSAgICAgICAgKCB1MTAwIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhuKSkgXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgTkROQk9PU1RfUFBfREVDKG4pLCB1KSkgKTsgfSBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfRk5fSSh6LCBuLCB0dXBsZSkgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMTAwIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhuKSkgXAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIE5ETkJPT1NUX1BQX0RFQyhuKSwgdHlwZW5hbWUgVSkgPiBcCi0gICAgdm9pZCBvcGVuIFwKLSAgICAoIFUxMDAmIHUxMDAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKG4pKSBcCi0gICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfWih6LCBORE5CT09TVF9QUF9ERUMobiksIGNvbnN0IFUsICZ1KSBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TQU1FKFUxMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgdHVwbGUpKSkgXAotICAgIHsgdGhpcy0+TkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCB0dXBsZSkgXAotICAgICAgKCB1MTAwIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhuKSkgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIE5ETkJPT1NUX1BQX0RFQyhuKSwgdSkgKTsgfSBcCi0gICAgLyoqLwotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJESU5HX0NUT1JfSSh6LCBuLCB0dXBsZSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJESU5HX0ZOX0koeiwgbiwgdHVwbGUpCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfQ1RPUih6LCBuLCB0dXBsZSkgXAotICAgIHRlbXBsYXRlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgVSk+IFwKLSAgICBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIHR1cGxlKSBcCi0gICAgKE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aKHosIG4sIGNvbnN0IFUsICZ1KSBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TQU1FKFUwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHR1cGxlKSkpIFwKLSAgICB7IHRoaXMtPk5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgdHVwbGUpIFwKLSAgICAgICggTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB0dXBsZSkgXAotICAgICAgICAoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB1KSkgKTsgfSBcCi0gICAgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfQ1RPUl9JKHosIG4sIHR1cGxlKSBcCi0gICAgLyoqLwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRElOR19GTih6LCBuLCB0dXBsZSkgXAotICAgIHRlbXBsYXRlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgVSk+IFwKLSAgICB2b2lkIG9wZW4oTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1ooeiwgbiwgY29uc3QgVSwgJnUpIFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NBTUUoVTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgdHVwbGUpKSkgXAotICAgIHsgdGhpcy0+TkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCB0dXBsZSkgXAotICAgICAgKCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHR1cGxlKSBcCi0gICAgICAgIChORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHUpKSApOyB9IFwKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRElOR19GTl9JKHosIG4sIHR1cGxlKSBcCi0gICAgLyoqLwotCi0vLyBEaXNhYmxlIGZvcndhcmRpbmcgY29uc3RydWN0b3JzIGlmIGZpcnN0IHBhcmFtZXRlciB0eXBlIGlzIHRoZSBzYW1lCi0vLyBhcyB0aGUgZGV2aWNlIHR5cGUKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUUpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MikpCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TQU1FKGRldmljZSwgcGFyYW0pIFwKLSAgICAsIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmPCBuZG5ib29zdDo6aXNfc2FtZTxkZXZpY2UsIHBhcmFtPiA+Ojp0eXBlKiA9IDAgXAotICAgIC8qKi8KLSNlbHNlIAotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU0FNRShkZXZpY2UsIHBhcmFtKQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRk9SV0FSRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA2MjBhNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnN0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZTVFJFQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRlNUUkVBTV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgaW5jbHVkZSA8ZnN0cmVhbT4KLSNlbHNlCi0jIGluY2x1ZGUgPGZzdHJlYW0uaD4KLSNlbmRpZiAKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lGU1RSRUFNKENoLCBUcikgc3RkOjpiYXNpY19pZnN0cmVhbTxDaCwgVHI+Ci0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfT0ZTVFJFQU0oQ2gsIFRyKSBzdGQ6OmJhc2ljX29mc3RyZWFtPENoLCBUcj4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19GU1RSRUFNKENoLCBUcikgc3RkOjpiYXNpY19mc3RyZWFtPENoLCBUcj4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19GSUxFQlVGKENoKSBzdGQ6OmJhc2ljX2ZpbGVidWY8Q2g+Ci0jZWxzZSAKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JRlNUUkVBTShDaCwgVHIpIHN0ZDo6aWZzdHJlYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19PRlNUUkVBTShDaCwgVHIpIHN0ZDo6b2ZzdHJlYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19GSUxFQlVGKENoKSBzdGQ6OmZpbGVidWYKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZTVFJFQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyYTgyNWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHAKLSAqIERhdGU6ICAgICAgICBTdW4gRGVjIDA5IDA1OjM4OjAzIE1TVCAyMDA3Ci0gKiBDb3B5cmlnaHQ6ICAgMjAwNy0yMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLQotICogRGVmaW5lcyBzZXZlcmFsIGZ1bmN0aW9uIG9iamVjdHMgYW5kIG9iamVjdCBnZW5lcmF0b3JzIGZvciB1c2Ugd2l0aCAKLSAqIGV4ZWN1dGVfYWxsKCkKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRlVOQ1RJT05BTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GVU5DVElPTkFMX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jbG9zZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAvLyBORE5CT09TVF9JT1MKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8gRnVuY3Rpb24gb2JqZWN0cyBhbmQgb2JqZWN0IGdlbmVyYXRvcnMgZm9yIGludm9raW5nCi0gICAgLy8gbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGRldmljZV9jbG9zZV9vcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCByZXN1bHRfdHlwZTsKLSAgICBkZXZpY2VfY2xvc2Vfb3BlcmF0aW9uKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAotICAgICAgICA6IHRfKHQpLCB3aGljaF8od2hpY2gpIAotICAgICAgICB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdCB7IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNsb3NlKHRfLCB3aGljaF8pOyB9Ci1wcml2YXRlOgotICAgIGRldmljZV9jbG9zZV9vcGVyYXRpb24mIG9wZXJhdG9yPShjb25zdCBkZXZpY2VfY2xvc2Vfb3BlcmF0aW9uJik7Ci0gICAgVCYgICAgICAgICAgICAgICAgICAgdF87Ci0gICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSAgd2hpY2hfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLWNsYXNzIGZpbHRlcl9jbG9zZV9vcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCByZXN1bHRfdHlwZTsKLSAgICBmaWx0ZXJfY2xvc2Vfb3BlcmF0aW9uKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICAgICAgOiB0Xyh0KSwgc25rXyhzbmspLCB3aGljaF8od2hpY2gpCi0gICAgICAgIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UodF8sIHNua18sIHdoaWNoXyk7IH0KLXByaXZhdGU6Ci0gICAgZmlsdGVyX2Nsb3NlX29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGZpbHRlcl9jbG9zZV9vcGVyYXRpb24mKTsKLSAgICBUJiAgICAgICAgICAgICAgICAgICB0XzsKLSAgICBTaW5rJiAgICAgICAgICAgICAgICBzbmtfOwotICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgIHdoaWNoXzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1kZXZpY2VfY2xvc2Vfb3BlcmF0aW9uPFQ+IAotY2FsbF9jbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKSAKLXsgcmV0dXJuIGRldmljZV9jbG9zZV9vcGVyYXRpb248VD4odCwgd2hpY2gpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci1maWx0ZXJfY2xvc2Vfb3BlcmF0aW9uPFQsIFNpbms+IAotY2FsbF9jbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAoteyByZXR1cm4gZmlsdGVyX2Nsb3NlX29wZXJhdGlvbjxULCBTaW5rPih0LCBzbmssIHdoaWNoKTsgfQotCi0gICAgLy8gRnVuY3Rpb24gb2JqZWN0cyBhbmQgb2JqZWN0IGdlbmVyYXRvcnMgZm9yIGludm9raW5nCi0gICAgLy8gbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjbG9zZV9hbGwKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGRldmljZV9jbG9zZV9hbGxfb3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgcmVzdWx0X3R5cGU7Ci0gICAgZGV2aWNlX2Nsb3NlX2FsbF9vcGVyYXRpb24oVCYgdCkgOiB0Xyh0KSB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdCB7IGRldGFpbDo6Y2xvc2VfYWxsKHRfKTsgfQotcHJpdmF0ZToKLSAgICBkZXZpY2VfY2xvc2VfYWxsX29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGRldmljZV9jbG9zZV9hbGxfb3BlcmF0aW9uJik7Ci0gICAgVCYgdF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotY2xhc3MgZmlsdGVyX2Nsb3NlX2FsbF9vcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCByZXN1bHRfdHlwZTsKLSAgICBmaWx0ZXJfY2xvc2VfYWxsX29wZXJhdGlvbihUJiB0LCBTaW5rJiBzbmspIDogdF8odCksIHNua18oc25rKSB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdCB7IGRldGFpbDo6Y2xvc2VfYWxsKHRfLCBzbmtfKTsgfQotcHJpdmF0ZToKLSAgICBmaWx0ZXJfY2xvc2VfYWxsX29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGZpbHRlcl9jbG9zZV9hbGxfb3BlcmF0aW9uJik7Ci0gICAgVCYgICAgIHRfOwotICAgIFNpbmsmICBzbmtfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWRldmljZV9jbG9zZV9hbGxfb3BlcmF0aW9uPFQ+IGNhbGxfY2xvc2VfYWxsKFQmIHQpIAoteyByZXR1cm4gZGV2aWNlX2Nsb3NlX2FsbF9vcGVyYXRpb248VD4odCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLWZpbHRlcl9jbG9zZV9hbGxfb3BlcmF0aW9uPFQsIFNpbms+IAotY2FsbF9jbG9zZV9hbGwoVCYgdCwgU2luayYgc25rKSAKLXsgcmV0dXJuIGZpbHRlcl9jbG9zZV9hbGxfb3BlcmF0aW9uPFQsIFNpbms+KHQsIHNuayk7IH0KLQotICAgIC8vIEZ1bmN0aW9uIG9iamVjdCBhbmQgb2JqZWN0IGdlbmVyYXRvciBmb3IgaW52b2tpbmcgYQotICAgIC8vIG1lbWJlciBmdW5jdGlvbiB2b2lkIGNsb3NlKHN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlKQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgbWVtYmVyX2Nsb3NlX29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwotICAgIG1lbWJlcl9jbG9zZV9vcGVyYXRpb24oVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgCi0gICAgICAgIDogdF8odCksIHdoaWNoXyh3aGljaCkgCi0gICAgICAgIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgdF8uY2xvc2Uod2hpY2hfKTsgfQotcHJpdmF0ZToKLSAgICBtZW1iZXJfY2xvc2Vfb3BlcmF0aW9uJiBvcGVyYXRvcj0oY29uc3QgbWVtYmVyX2Nsb3NlX29wZXJhdGlvbiYpOwotICAgIFQmICAgICAgICAgICAgICAgICAgIHRfOwotICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgIHdoaWNoXzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1tZW1iZXJfY2xvc2Vfb3BlcmF0aW9uPFQ+IGNhbGxfbWVtYmVyX2Nsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAoteyByZXR1cm4gbWVtYmVyX2Nsb3NlX29wZXJhdGlvbjxUPih0LCB3aGljaCk7IH0KLQotICAgIC8vIEZ1bmN0aW9uIG9iamVjdCBhbmQgb2JqZWN0IGdlbmVyYXRvciBmb3IgaW52b2tpbmcgYQotICAgIC8vIG1lbWJlciBmdW5jdGlvbiB2b2lkIHJlc2V0KCkKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIHJlc2V0X29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgcmVzZXRfb3BlcmF0aW9uKFQmIHQpIDogdF8odCkgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKCkgY29uc3QgeyB0Xy5yZXNldCgpOyB9Ci1wcml2YXRlOgotICAgIHJlc2V0X29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IHJlc2V0X29wZXJhdGlvbiYpOwotICAgIFQmIHRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc2V0X29wZXJhdGlvbjxUPiBjYWxsX3Jlc2V0KFQmIHQpIHsgcmV0dXJuIHJlc2V0X29wZXJhdGlvbjxUPih0KTsgfQotCi0gICAgLy8gRnVuY3Rpb24gb2JqZWN0IGFuZCBvYmplY3QgZ2VuZXJhdG9yIGZvciBjbGVhcmluZyBhIGZsYWcKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGNsZWFyX2ZsYWdzX29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwotICAgIGNsZWFyX2ZsYWdzX29wZXJhdGlvbihUJiB0KSA6IHRfKHQpIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgdF8gPSAwOyB9Ci1wcml2YXRlOgotICAgIGNsZWFyX2ZsYWdzX29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGNsZWFyX2ZsYWdzX29wZXJhdGlvbiYpOwotICAgIFQmIHRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsZWFyX2ZsYWdzX29wZXJhdGlvbjxUPiBjbGVhcl9mbGFncyhUJiB0KSAKLXsgcmV0dXJuIGNsZWFyX2ZsYWdzX29wZXJhdGlvbjxUPih0KTsgfQotCi0gICAgLy8gRnVuY3Rpb24gb2JqZWN0IGFuZCBnZW5lcmF0b3IgZm9yIGZsdXNoaW5nIGEgYnVmZmVyCi0KLS8vIEZ1bmN0aW9uIG9iamVjdCBmb3IgdXNlIHdpdGggZXhlY3V0ZV9hbGwoKQotdGVtcGxhdGU8dHlwZW5hbWUgQnVmZmVyLCB0eXBlbmFtZSBEZXZpY2U+Ci1jbGFzcyBmbHVzaF9idWZmZXJfb3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgcmVzdWx0X3R5cGU7Ci0gICAgZmx1c2hfYnVmZmVyX29wZXJhdGlvbihCdWZmZXImIGJ1ZiwgRGV2aWNlJiBkZXYsIGJvb2wgZmx1c2gpCi0gICAgICAgIDogYnVmXyhidWYpLCBkZXZfKGRldiksIGZsdXNoXyhmbHVzaCkKLSAgICAgICAgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChmbHVzaF8pIAotICAgICAgICAgICAgYnVmXy5mbHVzaChkZXZfKTsKLSAgICB9Ci1wcml2YXRlOgotICAgIGZsdXNoX2J1ZmZlcl9vcGVyYXRpb24mIG9wZXJhdG9yPShjb25zdCBmbHVzaF9idWZmZXJfb3BlcmF0aW9uJik7Ci0gICAgQnVmZmVyJiAgYnVmXzsKLSAgICBEZXZpY2UmICBkZXZfOwotICAgIGJvb2wgICAgIGZsdXNoXzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEJ1ZmZlciwgdHlwZW5hbWUgRGV2aWNlPgotZmx1c2hfYnVmZmVyX29wZXJhdGlvbjxCdWZmZXIsIERldmljZT4gCi1mbHVzaF9idWZmZXIoQnVmZmVyJiBidWYsIERldmljZSYgZGV2LCBib29sIGZsdXNoKQoteyByZXR1cm4gZmx1c2hfYnVmZmVyX29wZXJhdGlvbjxCdWZmZXIsIERldmljZT4oYnVmLCBkZXYsIGZsdXNoKTsgfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRlVOQ1RJT05BTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkM2NmYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lPU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JT1NfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX01TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0jIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykKLSMgIGluY2x1ZGUgPGlvcz4KLSMgZWxzZQotIyAgaW5jbHVkZSA8aXN0cmVhbT4KLSMgIGluY2x1ZGUgPG9zdHJlYW0+Ci0jIGVuZGlmCi0jZWxzZSAKLSMgaW5jbHVkZSA8ZXhjZXB0aW9uPgotIyBpbmNsdWRlIDxpb3Nmd2Q+Ci0jZW5kaWYgCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1MoY2gsIHRyKSAgc3RkOjpiYXNpY19pb3M8IGNoLCB0ciA+Ci0jIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgJiYgXAotICAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmIFwKLSAgICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgIC8qKi8KLQotI2RlZmluZSBORE5CT09TVF9JT1MgICAgICAgICAgICAgICAgc3RkOjppb3MKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgIHN0ZDo6aW9zOjpmYWlsdXJlCi0KLSMgZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX0lPUyAgICAgICAgICAgICAgICBzdGQ6Omlvc19iYXNlCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFICBzdGQ6Omlvc19iYXNlOjpmYWlsdXJlCi0KLSMgZW5kaWYKLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSU9TICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlvcwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSU9TKGNoLCB0cikgIHN0ZDo6aW9zCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpmYWlsdXJlCi0KLWNsYXNzIGZhaWx1cmUgOiBzdGQ6OmV4Y2VwdGlvbiB7ICAgIAotcHVibGljOgotICAgIGV4cGxpY2l0IGZhaWx1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIHdoYXRfYXJnKSA6IHdoYXRfKHdoYXRfYXJnKSB7IH0KLSAgICBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3QgeyByZXR1cm4gd2hhdF8uY19zdHIoKTsgfQotcHJpdmF0ZToKLSAgICBzdGQ6OnN0cmluZyB3aGF0XzsKLX07Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2UgZmFpbHVyZSwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JT1NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZkMjFhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JT1NUUkVBTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JT1NUUkVBTV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgaW5jbHVkZSA8aXN0cmVhbT4KLSMgaW5jbHVkZSA8b3N0cmVhbT4KLSNlbHNlCi0jIGluY2x1ZGUgPGlvc3RyZWFtLmg+Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lTVFJFQU0oY2gsIHRyKSBzdGQ6OmJhc2ljX2lzdHJlYW08IGNoLCB0ciA+Ci0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfT1NUUkVBTShjaCwgdHIpIHN0ZDo6YmFzaWNfb3N0cmVhbTwgY2gsIHRyID4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1NUUkVBTShjaCwgdHIpIHN0ZDo6YmFzaWNfaW9zdHJlYW08IGNoLCB0ciA+Ci0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRihjaCwgdHIpIHN0ZDo6c3RyZWFtYnVmCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSVNUUkVBTShjaCwgdHIpIHN0ZDo6aXN0cmVhbQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX09TVFJFQU0oY2gsIHRyKSBzdGQ6Om9zdHJlYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1NUUkVBTShjaCwgdHIpIHN0ZDo6aW9zdHJlYW0KLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lPU1RSRUFNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lzX2RlcmVmZXJlbmNlYWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfZGVyZWZlcmVuY2VhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VlOGM1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfZGVyZWZlcmVuY2VhYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNC4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSVNfREVSRUZFUkVOQ0VBQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lTX0RFUkVGRVJFTkNFQUJMRV9IUFBfSU5DTFVERUQKLQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsgCi0KLS8vIGlzX2RlcmVmZXJlbmNlYWJsZTxUPiBtZXRhZnVuY3Rpb24KLS8vCi0vLyBSZXF1aXJlczogR2l2ZW4geCBvZiB0eXBlIFQmLCBpZiB0aGUgZXhwcmVzc2lvbiAqeCBpcyB3ZWxsLWZvcm1lZAotLy8gaXQgbXVzdCBoYXZlIGNvbXBsZXRlIHR5cGU7IG90aGVyd2lzZSwgaXQgbXVzdCBuZWl0aGVyIGJlIGFtYmlndW91cwotLy8gbm9yIHZpb2xhdGUgYWNjZXNzLgotCi0vLyBUaGlzIG5hbWVzcGFjZSBlbnN1cmVzIHRoYXQgQURMIGRvZXNuJ3QgbWVzcyB0aGluZ3MgdXAuCi1uYW1lc3BhY2UgaXNfZGVyZWZlcmVuY2VhYmxlXwotewotICAvLyBhIHR5cGUgcmV0dXJuZWQgZnJvbSBvcGVyYXRvciogd2hlbiBubyBpbmNyZW1lbnQgaXMgZm91bmQgaW4gdGhlCi0gIC8vIHR5cGUncyBvd24gbmFtZXNwYWNlCi0gIHN0cnVjdCB0YWcge307Ci0gIAotICAvLyBhbnkgc29ha3MgdXAgaW1wbGljaXQgY29udmVyc2lvbnMgYW5kIG1ha2VzIHRoZSBmb2xsb3dpbmcKLSAgLy8gb3BlcmF0b3IqIGxlc3MtcHJlZmVycmVkIHRoYW4gYW55IG90aGVyIHN1Y2ggb3BlcmF0b3IgdGhhdAotICAvLyBtaWdodCBiZSBmb3VuZCB2aWEgQURMLgotICBzdHJ1Y3QgYW55IHsgdGVtcGxhdGUgPGNsYXNzIFQ+IGFueShUIGNvbnN0Jik7IH07Ci0KLSAgLy8gVGhpcyBpcyBhIGxhc3QtcmVzb3J0IG9wZXJhdG9yKiBmb3Igd2hlbiBub25lIG90aGVyIGlzIGZvdW5kCi0gIHRhZyBvcGVyYXRvciooYW55IGNvbnN0Jik7Ci0KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMjAyKSkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgIGRlZmluZSBORE5CT09TVF9jb21tYShhLGIpIChhKQotIyBlbHNlIAotICAvLyBJbiBjYXNlIGFuIG9wZXJhdG9yKysgaXMgZm91bmQgdGhhdCByZXR1cm5zIHZvaWQsIHdlJ2xsIHVzZSArK3gsMAotICB0YWcgb3BlcmF0b3IsKHRhZyxpbnQpOyAgCi0jICBkZWZpbmUgTkROQk9PU1RfY29tbWEoYSxiKSAoYSxiKQotIyBlbmRpZiAKLSAgCi0gIC8vIHR3byBjaGVjayBvdmVybG9hZHMgaGVscCB1cyBpZGVudGlmeSB3aGljaCBvcGVyYXRvcisrIHdhcyBwaWNrZWQKLSAgY2hhciAoJiBjaGVja19pbmNyZW1lbnQodGFnKSApWzJdOwotICAKLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIGNoYXIgY2hlY2tfaW5jcmVtZW50KFQgY29uc3QmKTsKLSAgCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBzdHJ1Y3QgaW1wbAotICB7Ci0gICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxUPjo6dHlwZSYgeDsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgIGJvb2wKLSAgICAgICAgLCB2YWx1ZSA9IHNpemVvZihpc19kZXJlZmVyZW5jZWFibGVfOjpjaGVja19pbmNyZW1lbnQoTkROQk9PU1RfY29tbWEoKngsMCkpKSA9PSAxCi0gICAgICApOwotICB9OwotfQotCi0jIHVuZGVmIE5ETkJPT1NUX2NvbW1hCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IGlzX2RlcmVmZXJlbmNlYWJsZSAKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoaXNfZGVyZWZlcmVuY2VhYmxlXzo6aW1wbDxUPjo6dmFsdWUpCi17IAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woaXNfZGVyZWZlcmVuY2VhYmxlXzo6aW1wbDxUPjo6dmFsdWUpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX2RlcmVmZXJlbmNlYWJsZSwoVCkpCi19OwotCi19IH0gCi0KLU5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjppc19kZXJlZmVyZW5jZWFibGUpCi0KLX0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JU19ERVJFRkVSRU5DRUFCTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfaXRlcmF0b3JfcmFuZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lzX2l0ZXJhdG9yX3JhbmdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RjYmNjNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfaXRlcmF0b3JfcmFuZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JU19JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JU19JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQgICAgICAgCi0gCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLQotIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIFdlIGF2b2lkIGRlcGVuZGVuY2Ugb24gQm9vc3QuUmFuZ2UgYnkgdXNpbmcgYSBmb3J3YXJkIGRlY2xhcmF0aW9uLgotdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+Ci1jbGFzcyBpdGVyYXRvcl9yYW5nZTsKLSAgICAKLW5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfaXRlcmF0b3JfcmFuZ2UsIG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZSwgMSkKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGlvc3RyZWFtcy4KLQotIyBlbHNlIC8vICMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBpb3N0cmVhbXMgeyAgICAKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlzX2l0ZXJhdG9yX3JhbmdlIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotICAgIH07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBpb3N0cmVhbXMuCi0KLSMgZW5kaWYgLy8gIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gLy8gRW5kIG5hbWVzcGFjZSBuZG5ib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSVNfSVRFUkFUT1JfUkFOR0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvbmV3bGluZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvbmV3bGluZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyYTdkMTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL25ld2xpbmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ORVdMSU5FX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX05FV0xJTkVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotc3RydWN0IG5ld2xpbmU7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBuZXdsaW5lPGNoYXI+IHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhciwgdmFsdWUgPSAnXG4nKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBuZXdsaW5lPHdjaGFyX3Q+IHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQod2NoYXJfdCwgdmFsdWUgPSBMJ1xuJyk7Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWxsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX05FV0xJTkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvb3B0aW9uYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL29wdGlvbmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FmOTEwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvb3B0aW9uYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBSZWNlbnQgY2hhbmdlcyB0byBCb29zdC5PcHRpb25hbCBpbnZvbHZpbmcgYXNzaWdtZW50IGJyb2tlIEJvb3N0Lklvc3RyZWFtcywKLS8vIGluIGEgd2F5IHdoaWNoIGNvdWxkIGJlIHJlbWVkaWVkIG9ubHkgYnkgcmVseWluZyBvbiB0aGUgZGVwcmVjYXRlZCByZXNldAotLy8gZnVuY3Rpb25zOyB3aXRoIFZDNiwgZXZlbiByZXNldCBkaWRuJ3Qgd29yay4gVW50aWwgdGhpcyBwcm9ibGVtIGlzIAotLy8gdW5kZXJzdG9vZCwgSW9zdHJlYW1zIHdpbGwgdXNlIGEgcHJpdmF0ZSB2ZXJzaW9uIG9mIG9wdGlvbmFsIHdpdGggYSBzbWFydCAKLS8vIHBvaW50ZXIgaW50ZXJmYWNlLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfT1BUSU9OQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfT1BUSU9OQUxfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbmVkX3N0b3JhZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVGFrZW4gZnJvbSA8bmRuYm9vc3Qvb3B0aW9uYWwuaHBwPi4KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFzcyBhbGlnbmVkX3N0b3JhZ2UKLXsKLSAgICAvLyBCb3JsYW5kIElDRXMgaWYgdW5uYW1lZCB1bmlvbnMgYXJlIHVzZWQgZm9yIHRoaXMhCi0gICAgdW5pb24gZHVtbXlfdQotICAgIHsKLSAgICAgICAgY2hhciBkYXRhWyBzaXplb2YoVCkgXTsKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0eXBlX3dpdGhfYWxpZ25tZW50PAotICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWUgPjo6dHlwZSBhbGlnbmVyXzsKLSAgICB9IGR1bW15XyA7Ci0KLSAgcHVibGljOgotCi0gICAgdm9pZCBjb25zdCogYWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuICZkdW1teV8uZGF0YVswXTsgfQotICAgIHZvaWQgICAgICAqIGFkZHJlc3MoKSAgICAgICB7IHJldHVybiAmZHVtbXlfLmRhdGFbMF07IH0KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBvcHRpb25hbCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLSAgICBvcHRpb25hbCgpIDogaW5pdGlhbGl6ZWRfKGZhbHNlKSB7IH0KLSAgICBvcHRpb25hbChjb25zdCBUJiB0KSA6IGluaXRpYWxpemVkXyhmYWxzZSkgeyByZXNldCh0KTsgfQotICAgIH5vcHRpb25hbCgpIHsgcmVzZXQoKTsgfQotICAgIFQmIG9wZXJhdG9yKigpIAotICAgIHsgCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChpbml0aWFsaXplZF8pOwotICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PFQqPihhZGRyZXNzKCkpOyAKLSAgICB9Ci0gICAgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29uc3QKLSAgICB7IAotICAgICAgICBORE5CT09TVF9BU1NFUlQoaW5pdGlhbGl6ZWRfKTsKLSAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBUKj4oYWRkcmVzcygpKTsgCi0gICAgfQotICAgIFQqIG9wZXJhdG9yLT4oKSAKLSAgICB7IAotICAgICAgICBORE5CT09TVF9BU1NFUlQoaW5pdGlhbGl6ZWRfKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihhZGRyZXNzKCkpOyAKLSAgICB9Ci0gICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0Ci0gICAgeyAKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKGluaXRpYWxpemVkXyk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4oYWRkcmVzcygpKTsgCi0gICAgfQotICAgIFQqIGdldCgpIAotICAgIHsgCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChpbml0aWFsaXplZF8pOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KGFkZHJlc3MoKSk7IAotICAgIH0KLSAgICBjb25zdCBUKiBnZXQoKSBjb25zdAotICAgIHsgCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChpbml0aWFsaXplZF8pOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KGFkZHJlc3MoKSk7IAotICAgIH0KLSAgICB2b2lkIHJlc2V0KCkgCi0gICAgewotICAgICAgICBpZiAoaW5pdGlhbGl6ZWRfKSB7IAotICAgICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpIHx8IFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpIFwKLSAgICAgICAgICAgIC8qKi8KLSAgICAgICAgICAgIFQqIHQgPSBzdGF0aWNfY2FzdDxUKj4oYWRkcmVzcygpKTsKLSAgICAgICAgICAgIHQtPn5UKCk7Ci0gICAgICAgICNlbHNlCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxUKj4oYWRkcmVzcygpKS0+VDo6flQoKTsKLSAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICBpbml0aWFsaXplZF8gPSBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICB2b2lkIHJlc2V0KGNvbnN0IFQmIHQpIAotICAgIHsKLSAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgbmV3IChhZGRyZXNzKCkpIFQodCk7IAotICAgICAgICBpbml0aWFsaXplZF8gPSB0cnVlOwotICAgIH0KLXByaXZhdGU6Ci0gICAgb3B0aW9uYWwoY29uc3Qgb3B0aW9uYWwmKTsKLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsJik7Ci0gICAgdm9pZCogYWRkcmVzcygpIHsgcmV0dXJuICZzdG9yYWdlXzsgfQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MoKSBjb25zdCB7IHJldHVybiAmc3RvcmFnZV87IH0KLSAgICBhbGlnbmVkX3N0b3JhZ2U8VD4gIHN0b3JhZ2VfOwotICAgIGJvb2wgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWRfOwotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX09QVElPTkFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3BhcmFtX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3BhcmFtX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWRhNDk1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wYXJhbV90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUEFSQU1fVFlQRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QQVJBTV9UWVBFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHBhcmFtX3R5cGUgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88aXNfc3RkX2lvPFQ+LCBUJiwgY29uc3QgVCY+Ojp0eXBlIHR5cGU7Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUEFSQU1fVFlQRV9IUFBfSU5DTFVERUQgLy8tLS0tLS0tLS0tLS8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcGF0aC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcGF0aC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZmM5ODAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3BhdGguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wYXRoLmhwcAotICogRGF0ZTogICAgICAgIFNhdCBKdW4gMjEgMjE6MjQ6MDUgTURUIDIwMDgKLSAqIENvcHlyaWdodDogICAyMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnBhdGgsIGZvciBzdG9yaW5nIGEgCi0gKiBhIHN0ZDo6c3RyaW5nIG9yIHN0ZDo6d3N0cmluZy4KLSAqCi0gKiBUaGlzIGNsYXNzIGFsbG93cyBpbnRlcm9wZXJhYmlsaXR5IHdpdGggQm9vc3QuRmlsZXN5c3RlbSB3aXRob3V0Ci0gKiBjcmVhdGluZyBhIGRlcGVuZGVuY2Ugb24gQm9vc3QuRmlsZXN5c3RlbSBoZWFkZXJzIG9yIGltcGxlbWVudGF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QQVRIX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1BBVEhfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TCi0jIGluY2x1ZGUgPGN3Y2hhcj4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWNsYXNzIHBhdGggewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Ci0gICAgc3RydWN0IHNmaW5hZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBWIHR5cGU7Ci0gICAgfTsKLXB1YmxpYzoKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBwYXRoKCkgOiBuYXJyb3dfKCksIHdpZGVfKCksIGlzX3dpZGVfKGZhbHNlKSB7IH0KLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIHN0ZDo6c3RyaW5nCi0gICAgcGF0aChjb25zdCBzdGQ6OnN0cmluZyYgcCkgOiBuYXJyb3dfKHApLCB3aWRlXygpLCBpc193aWRlXyhmYWxzZSkgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBDLXN0eWxlIHN0cmluZwotICAgIHBhdGgoY29uc3QgY2hhciogcCkgOiBuYXJyb3dfKHApLCB3aWRlXygpLCBpc193aWRlXyhmYWxzZSkgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBuZG5ib29zdDo6ZmlsZXN5c3RlbTI6OnBhdGggb3IKLSAgICAvLyBuZG5ib29zdDo6ZmlsZXN5c3RlbTI6OndwYXRoCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBleHBsaWNpdCBwYXRoKGNvbnN0IFBhdGgmIHAsIHR5cGVuYW1lIFBhdGg6OmV4dGVybmFsX3N0cmluZ190eXBlKiA9IDApCi0gICAgewotICAgICAgICBpbml0KHAuZXh0ZXJuYWxfZmlsZV9zdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgbmRuYm9vc3Q6OmZpbGVzeXN0ZW0zOjpwYXRoIChib29zdCBmaWxlc3lzdGVtIHYzKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgcGF0aChjb25zdCBQYXRoJiBwLCB0eXBlbmFtZSBQYXRoOjpjb2RlY3Z0X3R5cGUqID0gMCkKLSAgICB7Ci0gICAgICAgIGluaXQocC5uYXRpdmUoKSk7Ci0gICAgfQotCi0gICAgLy8gQ29weSBjb25zdHJ1Y3RvcgotICAgIHBhdGgoY29uc3QgcGF0aCYgcCkgCi0gICAgICAgIDogbmFycm93XyhwLm5hcnJvd18pLCB3aWRlXyhwLndpZGVfKSwgaXNfd2lkZV8ocC5pc193aWRlXykgCi0gICAgICAgIHsgfQotCi0gICAgLy8gQXNzaWdubWVudCBvcGVyYXRvciB0YWtpbmcgYW5vdGhlciBwYXRoCi0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHBhdGgmIHApCi0gICAgewotICAgICAgICBuYXJyb3dfID0gcC5uYXJyb3dfOwotICAgICAgICB3aWRlXyA9IHAud2lkZV87Ci0gICAgICAgIGlzX3dpZGVfID0gcC5pc193aWRlXzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IgdGFraW5nIGEgc3RkOjpzdHJpbmcKLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3Qgc3RkOjpzdHJpbmcmIHApCi0gICAgewotICAgICAgICBuYXJyb3dfID0gcDsKLSAgICAgICAgd2lkZV8uY2xlYXIoKTsKLSAgICAgICAgaXNfd2lkZV8gPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IgdGFraW5nIGEgQy1zdHlsZSBzdHJpbmcKLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3QgY2hhciogcCkKLSAgICB7Ci0gICAgICAgIG5hcnJvd18uYXNzaWduKHApOwotICAgICAgICB3aWRlXy5jbGVhcigpOwotICAgICAgICBpc193aWRlXyA9IGZhbHNlOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTQwMCkKLSAgICAvLyBBc3NpZ25tZW50IG9wZXJhdG9yIHRha2luZyBhIG5kbmJvb3N0OjpmaWxlc3lzdGVtMjo6cGF0aCBvcgotICAgIC8vIG5kbmJvb3N0OjpmaWxlc3lzdGVtMjo6d3BhdGgKLSAgICAvLyAobm90IG9uIFZpc3VhbCBDKysgNy4xLzguMCwgYXMgaXQgc2VlbXMgdG8gaGF2ZSBwcm9ibGVtcyB3aXRoCi0gICAgLy8gU0ZJTkFFIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMsIGRvZXNuJ3Qgc2VlbQotICAgIC8vIHdvcnRoIHdvcmtpbmcgYXJvdW5kKS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIHR5cGVuYW1lIHNmaW5hZTx0eXBlbmFtZSBQYXRoOjpleHRlcm5hbF9zdHJpbmdfdHlwZSwgcGF0aCY+Ojp0eXBlCi0gICAgICAgIG9wZXJhdG9yPShjb25zdCBQYXRoJiBwKQotICAgIHsKLSAgICAgICAgaW5pdChwLmV4dGVybmFsX2ZpbGVfc3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLyBBc3NpZ25tZW50IG9wZXJhdG9yIHRha2luZyBhIG5kbmJvb3N0OjpmaWxlc3lzdGVtMzo6cGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdHlwZW5hbWUgc2ZpbmFlPHR5cGVuYW1lIFBhdGg6OmNvZGVjdnRfdHlwZSwgcGF0aCY+Ojp0eXBlCi0gICAgICAgIG9wZXJhdG9yPShjb25zdCBQYXRoJiBwKQotICAgIHsKLSAgICAgICAgaW5pdChwLm5hdGl2ZSgpKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGJvb2wgaXNfd2lkZSgpIGNvbnN0IHsgcmV0dXJuIGlzX3dpZGVfOyB9Ci0KLSAgICAvLyBSZXR1cm5zIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIHVuZGVybHlpbmcgcGF0aCBhcyBhIHN0ZDo6c3RyaW5nCi0gICAgLy8gUmVxdWlyZXM6IGlzX3dpZGUoKSByZXR1cm5zIGZhbHNlCi0gICAgY29uc3QgY2hhciogY19zdHIoKSBjb25zdCB7IHJldHVybiBuYXJyb3dfLmNfc3RyKCk7IH0KLQotICAgIC8vIFJldHVybnMgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdW5kZXJseWluZyBwYXRoIGFzIGEgc3RkOjp3c3RyaW5nCi0gICAgLy8gUmVxdWlyZXM6IGlzX3dpZGUoKSByZXR1cm5zIHRydWUKLSAgICBjb25zdCB3Y2hhcl90KiBjX3dzdHIoKSBjb25zdCB7IHJldHVybiB3aWRlXy5jX3N0cigpOyB9Ci1wcml2YXRlOgotICAgIAotICAgIC8vIEZvciB3aWRlLWNoYXJhY3RlciBwYXRocywgdXNlIGEgbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OndwYXRoIGluc3RlYWQgb2YgYQotICAgIC8vIHN0ZDo6d3N0cmluZwotICAgIHBhdGgoY29uc3Qgc3RkOjp3c3RyaW5nJik7Ci0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6d3N0cmluZyYpOwotCi0gICAgdm9pZCBpbml0KHN0ZDo6c3RyaW5nIGNvbnN0JiBmaWxlX3BhdGgpCi0gICAgewotICAgICAgICBuYXJyb3dfID0gZmlsZV9wYXRoOwotICAgICAgICB3aWRlXy5jbGVhcigpOwotICAgICAgICBpc193aWRlXyA9IGZhbHNlOwotICAgIH0KLQotICAgIHZvaWQgaW5pdChzdGQ6OndzdHJpbmcgY29uc3QmIGZpbGVfcGF0aCkKLSAgICB7Ci0gICAgICAgIG5hcnJvd18uY2xlYXIoKTsKLSAgICAgICAgd2lkZV8gPSBmaWxlX3BhdGg7Ci0gICAgICAgIGlzX3dpZGVfID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyAgIG5hcnJvd187Ci0gICAgc3RkOjp3c3RyaW5nICB3aWRlXzsKLSAgICBib29sICAgICAgICAgIGlzX3dpZGVfOwotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykKLXsKLSAgICByZXR1cm4gbGhzLmlzX3dpZGUoKSA/Ci0gICAgICAgIHJocy5pc193aWRlKCkgJiYgc3RkOjp3Y3NjbXAobGhzLmNfd3N0cigpLCByaHMuY193c3RyKCkpID09IDAgOgotICAgICAgICAhcmhzLmlzX3dpZGUoKSAmJiBzdGQ6OnN0cmNtcChsaHMuY19zdHIoKSwgcmhzLmNfc3RyKCkpID09IDA7Ci19Ci0KLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWNsYXNzIHBhdGggewotcHVibGljOgotICAgIHBhdGgoKSB7IH0KLSAgICBwYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwKSA6IHBhdGhfKHApIHsgfQotICAgIHBhdGgoY29uc3QgY2hhciogcCkgOiBwYXRoXyhwKSB7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgICAgICBwYXRoKGNvbnN0IFBhdGgmIHApIDogcGF0aF8ocC5leHRlcm5hbF9maWxlX3N0cmluZygpKSB7IH0KLSAgICBwYXRoKGNvbnN0IHBhdGgmIHApIDogcGF0aF8ocC5wYXRoXykgeyB9Ci0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHBhdGgmIG90aGVyKSAKLSAgICB7Ci0gICAgICAgIHBhdGhfID0gb3RoZXIucGF0aF87Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6c3RyaW5nJiBwKSAKLSAgICB7Ci0gICAgICAgIHBhdGhfID0gcDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3QgY2hhciogcCkgCi0gICAgewotICAgICAgICBwYXRoXyA9IHA7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICAgICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IFBhdGgmIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBhdGhfID0gcC5leHRlcm5hbF9maWxlX3N0cmluZygpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0gICAgYm9vbCBpc193aWRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIHBhdGhfLmNfc3RyKCk7IH0KLSAgICBjb25zdCB3Y2hhcl90KiBjX3dzdHIoKSBjb25zdCB7IHJldHVybiAwOyB9Ci1wcml2YXRlOgotICAgIHN0ZDo6c3RyaW5nIHBhdGhfOwotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykKLXsKLSAgICByZXR1cm4gc3RkOjpzdHJjbXAobGhzLmNfc3RyKCksIHJocy5jX3N0cigpKSA9PSAwIDsKLX0KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1BBVEhfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNTJkNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUFVTSF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QVVNIX0hQUF9JTkNMVURFRCAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAgICAgICAKLSAKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9yYW5nZV9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHA+ICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4gICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2hfcGFyYW1zLmhwcD4gICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc29sdmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4gICAKLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vCi0vLyBNYWNybzogTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIX0NPTlNUUlVDVE9SKG5hbWUsIG1vZGUsIGNoLCBoZWxwZXIpLgotLy8gRGVzY3JpcHRpb246IERlZmluZXMgb3ZlcmxvYWRzIHdpdGggbmFtZSAnbmFtZScgd2hpY2ggZm9yd2FyZCB0byBhIGZ1bmN0aW9uCi0vLyAgICAgICdoZWxwZXInIHdoaWNoIHRha2VzIGEgZmlsdGVyIG9yIGRldmlkZSBieSBjb25zdCByZWZlcmVuY2UuCi0vLwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfQ09OU1RSVUNUT1IobmFtZSwgbW9kZSwgY2gsIGhlbHBlcikgXAotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfUFVTSF9JTVBMKG5hbWUsIG1vZGUsIGNoLCBoZWxwZXIsIDAsID8pIFwKLSAgICAvKiovCi0KLS8vCi0vLyBNYWNybzogTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIKG5hbWUsIG1vZGUsIGNoLCBoZWxwZXIpLgotLy8gRGVzY3JpcHRpb246IERlZmluZXMgY29uc3RydWN0b3JzIHdoaWNoIGZvcndhcmQgdG8gYSBmdW5jdGlvbgotLy8gICAgICAnaGVscGVyJyB3aGljaCB0YWtlcyBhIGZpbHRlciBvciBkZXZpY2UgYnkgY29uc3QgcmVmZXJlbmNlLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIKG5hbWUsIG1vZGUsIGNoLCBoZWxwZXIpIFwKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfSU1QTChuYW1lLCBtb2RlLCBjaCwgaGVscGVyLCAxLCB2b2lkKSBcCi0gICAgLyoqLwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfSU1QTC0tLS0tLS0tLS0vLwotICAgICAgICAgIAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQURBUFRfU1RSRUFNKG1vZGUsIGNoLCBhcmcsIGhlbHBlciwgaGFzX3JldHVybikgXAotICAgIHRoaXMtPmhlbHBlciggOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnJlc29sdmU8bW9kZSwgY2g+KGFyZykgXAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpICk7IFwKLSAgICAvKiovCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSBcCi0gICAgLyoqLwotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfSU1QTChuYW1lLCBtb2RlLCBjaCwgaGVscGVyLCBoYXNfcmV0dXJuLCByZXN1bHQpIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgdHlwZW5hbWUgVHJhaXRzVHlwZT4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoYXJUeXBlLCBUcmFpdHNUeXBlPiYgc2IgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX0lPU1RSRUFNU19BREFQVF9TVFJFQU0obW9kZSwgY2gsIHNiLCBoZWxwZXIsIGhhc19yZXR1cm4pOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgdHlwZW5hbWUgVHJhaXRzVHlwZT4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVHlwZSwgVHJhaXRzVHlwZT4mIGlzIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgeyBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8bW9kZSwgb3V0cHV0Pjo6dmFsdWUpKTsgXAotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0FEQVBUX1NUUkVBTShtb2RlLCBjaCwgaXMsIGhlbHBlciwgaGFzX3JldHVybik7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCB0eXBlbmFtZSBUcmFpdHNUeXBlPiBcCi0gICAgTkROQk9PU1RfUFBfSUlGKGhhc19yZXR1cm4sIHJlc3VsdCwgZXhwbGljaXQpIFwKLSAgICBuYW1lKDo6c3RkOjpiYXNpY19vc3RyZWFtPENoYXJUeXBlLCBUcmFpdHNUeXBlPiYgb3MgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxtb2RlLCBpbnB1dD46OnZhbHVlKSk7IFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19BREFQVF9TVFJFQU0obW9kZSwgY2gsIG9zLCBoZWxwZXIsIGhhc19yZXR1cm4pOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgdHlwZW5hbWUgVHJhaXRzVHlwZT4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6YmFzaWNfaW9zdHJlYW08Q2hhclR5cGUsIFRyYWl0c1R5cGU+JiBpbyBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgTkROQk9PU1RfSU9TVFJFQU1TX0FEQVBUX1NUUkVBTShtb2RlLCBjaCwgaW8sIGhlbHBlciwgaGFzX3JldHVybik7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+IFwKLSAgICBORE5CT09TVF9QUF9JSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcj4mIHJuZyBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgTkROQk9PU1RfUFBfRVhQUl9JRihoYXNfcmV0dXJuLCByZXR1cm4pIFwKLSAgICB0aGlzLT5oZWxwZXIoIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpyYW5nZV9hZGFwdGVyPCBcCi0gICAgICAgICAgICAgICAgICAgICAgbW9kZSwgaXRlcmF0b3JfcmFuZ2U8SXRlcj4gXAotICAgICAgICAgICAgICAgICAgPihybmcpIFwKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSApOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQaXBlbGluZSwgdHlwZW5hbWUgQ29uY2VwdD4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZShjb25zdCA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OnBpcGVsaW5lPFBpcGVsaW5lLCBDb25jZXB0PiYgcCkgXAotICAgIHsgcC5wdXNoKCp0aGlzKTsgfSBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZShjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKSkgXAotICAgIHsgdGhpcy0+aGVscGVyKCA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6cmVzb2x2ZTxtb2RlLCBjaD4odCkgXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTKCkgKTsgfSBcCi0gICAgLyoqLwotIyBlbHNlIC8vICMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIX0lNUEwobmFtZSwgbW9kZSwgY2gsIGhlbHBlciwgaGFzX3JldHVybiwgcmVzdWx0KSBcCi0gICAgTkROQk9PU1RfUFBfSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoOjpzdGQ6OnN0cmVhbWJ1ZiYgc2IgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX0lPU1RSRUFNU19BREFQVF9TVFJFQU0obW9kZSwgY2gsIHNiLCBoZWxwZXIsIGhhc19yZXR1cm4pOyB9IFwKLSAgICBORE5CT09TVF9QUF9JRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6aXN0cmVhbSYgaXMgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxtb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkpOyBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfQURBUFRfU1RSRUFNKG1vZGUsIGNoLCBpcywgaGVscGVyLCBoYXNfcmV0dXJuKTsgfSBcCi0gICAgTkROQk9PU1RfUFBfSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoOjpzdGQ6Om9zdHJlYW0mIG9zIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgeyBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8bW9kZSwgaW5wdXQ+Ojp2YWx1ZSkpOyBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfQURBUFRfU1RSRUFNKG1vZGUsIGNoLCBvcywgaGVscGVyLCBoYXNfcmV0dXJuKTsgfSBcCi0gICAgTkROQk9PU1RfUFBfSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoOjpzdGQ6Omlvc3RyZWFtJiBpbyBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgTkROQk9PU1RfSU9TVFJFQU1TX0FEQVBUX1NUUkVBTShtb2RlLCBjaCwgaW8sIGhlbHBlciwgaGFzX3JldHVybik7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+IFwKLSAgICBORE5CT09TVF9QUF9JRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZShjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyPiYgcm5nIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgeyBORE5CT09TVF9QUF9FWFBSX0lGKGhhc19yZXR1cm4sIHJldHVybikgXAotICAgIHRoaXMtPmhlbHBlciggOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnJhbmdlX2FkYXB0ZXI8IFwKLSAgICAgICAgICAgICAgICAgICAgICBtb2RlLCBpdGVyYXRvcl9yYW5nZTxJdGVyPiBcCi0gICAgICAgICAgICAgICAgICA+KHJuZykgXAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpICk7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBpcGVsaW5lLCB0eXBlbmFtZSBDb25jZXB0PiBcCi0gICAgTkROQk9PU1RfUFBfSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoY29uc3QgOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpwaXBlbGluZTxQaXBlbGluZSwgQ29uY2VwdD4mIHApIFwKLSAgICB7IHAucHVzaCgqdGhpcyk7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLSAgICBORE5CT09TVF9QUF9FWFBSX0lGKGhhc19yZXR1cm4sIHJlc3VsdCkgXAotICAgIG5hbWUoY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkpIFwKLSAgICB7IHRoaXMtPmhlbHBlciggOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnJlc29sdmU8bW9kZSwgY2g+KHQpIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpICk7IH0gXAotICAgIC8qKi8KLSMgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSNlbHNlIC8vICNpZiBWQzYsIFZDNy4wLCBCb3JsYW5kIDUueAotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIX0lNUEwobmFtZSwgbW9kZSwgY2gsIGhlbHBlciwgaGFzX3JldHVybiwgcmVzdWx0KSBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gXAotICAgIHZvaWQgTkROQk9PU1RfUFBfQ0FUKG5hbWUsIF9tc3ZjX2ltcGwpIFwKLSAgICAoIDo6bmRuYm9vc3Q6Om1wbDo6dHJ1ZV8sIGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkgKSBcCi0gICAgeyB0LnB1c2goKnRoaXMpOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi0gICAgdm9pZCBORE5CT09TVF9QUF9DQVQobmFtZSwgX21zdmNfaW1wbCkgXAotICAgICggOjpuZG5ib29zdDo6bXBsOjpmYWxzZV8sIGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkgKSBcCi0gICAgeyB0aGlzLT5oZWxwZXIoIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpyZXNvbHZlPG1vZGUsIGNoPih0KSBcCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSApOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi0gICAgTkROQk9PU1RfUFBfSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgXAotICAgICAgICB0aGlzLT5ORE5CT09TVF9QUF9DQVQobmFtZSwgX21zdmNfaW1wbCkgXAotICAgICAgICAgICAgICAoIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjppc19waXBlbGluZTxUPigpLCBcCi0gICAgICAgICAgICAgICAgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTKCkgKTsgXAotICAgIH0gXAotICAgIC8qKi8KLSNlbmRpZiAvLyAjaWYgVkM2LCBWQzcuMCwgQm9ybGFuZCA1LngKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QVVNIX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2hfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wdXNoX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYjIxNGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2hfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUFVTSF9QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUFVTSF9QQVJBTVNfSFBQX0lOQ0xVREVEIAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgICAgICAgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpIFwKLSAgICAsIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IC0xICwgc3RkOjpzdHJlYW1zaXplIHBiYWNrX3NpemUgPSAtMSBcCi0gICAgLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSAsIGJ1ZmZlcl9zaXplLCBwYmFja19zaXplICAgICAKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QVVNIX1BBUkFNU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9yZXNvbHZlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9yZXNvbHZlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQwZmE1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzb2x2ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9SRVNPTFZFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1JFU09MVkVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBwYXJ0aWFsIHNwZWMsIHB1dCBzaXplX3QgaW4gc3RkLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgIC8vIHN0ZDo6c2l6ZV90LgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pc19pbmNyZW1lbnRhYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL21vZGVfYWRhcHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL291dHB1dF9pdGVyYXRvcl9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvcmFuZ2VfYWRhcHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pc19kZXJlZmVyZW5jZWFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+IC8vIHRydWVfLgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2VuZGlmIC8vICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gLy8gVkM3LjEgQzQyMjQuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHJlc29sdmUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04gLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVzb2x2ZV90cmFpdHMgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlPFQ+LAotICAgICAgICAgICAgICAgIG91dHB1dF9pdGVyYXRvcl9hZGFwdGVyPE1vZGUsIENoLCBUPiwKLSAgICAgICAgICAgICAgICBjb25zdCBUJgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUKLXJlc29sdmUoIGNvbnN0IFQmIHQgCi0gICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkKLQotICAgICAgICAgLy8gSSBzdXNwZWN0IHRoYXQgdGhlIGNvbXBpbGVycyB3aGljaCByZXF1aXJlIHRoaXMgd29ya2Fyb3VuZCBtYXkKLSAgICAgICAgIC8vIGJlIGNvcnJlY3QsIGJ1dCBJJ20gbm90IHN1cmUgd2h5IDooCi0gICAgICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiwgTkROQk9PU1RfVEVTVEVEX0FUKDgxMCkpIHx8XAotICAgICAgICAgICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzIwNSkpIHx8IFwKLSAgICAgICAgICAgICBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0lPU1RSRUFNU19HQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCg0MDApKSB8fFwKLSAgICAgICAgICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgxMTEwKSkKLSAgICAgICAgICAgICAvKiovCi0gICAgICAgICAsIHR5cGVuYW1lIGRpc2FibGVfaWY8IGlzX2l0ZXJhdG9yX3JhbmdlPFQ+ID46OnR5cGUqID0gMAotICAgICAgICAgI2VuZGlmCi0gICAgICAgICApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgcmV0dXJuX3R5cGU7Ci0gICAgcmV0dXJuIHJldHVybl90eXBlKHQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHI+Ci1tb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoLCBUcj4gPiAKLXJlc29sdmUoc3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiYgc2IpCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoLCBUcj4gPih3cmFwKHNiKSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotbW9kZV9hZGFwdGVyPCBNb2RlLCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiA+IAotcmVzb2x2ZShzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiYgaXMpCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+ID4od3JhcChpcykpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLW1vZGVfYWRhcHRlcjwgTW9kZSwgc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4gPiAKLXJlc29sdmUoc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4mIG9zKQoteyByZXR1cm4gbW9kZV9hZGFwdGVyPCBNb2RlLCBzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiA+KHdyYXAob3MpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHI+Ci1tb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiA+IAotcmVzb2x2ZShzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4mIGlvKQoteyByZXR1cm4gbW9kZV9hZGFwdGVyPCBNb2RlLCBzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4gPih3cmFwKGlvKSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHN0ZDo6c2l6ZV90IE4+Ci1hcnJheV9hZGFwdGVyPE1vZGUsIENoPiByZXNvbHZlKENoICgmYXJyYXkpW05dKQoteyByZXR1cm4gYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD4oYXJyYXkpOyB9Ci0KLSMgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEl0ZXI+Ci0gICAgcmFuZ2VfYWRhcHRlcjwgTW9kZSwgbmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPEl0ZXI+ID4gCi0gICAgcmVzb2x2ZShjb25zdCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8SXRlcj4mIHJuZykKLSAgICB7IHJldHVybiByYW5nZV9hZGFwdGVyPCBNb2RlLCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8SXRlcj4gPihybmcpOyB9Ci0jICBlbmRpZiAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotCi0jIGVsc2UgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVD4KLXR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZQotcmVzb2x2ZSggY29uc3QgVCYgdCAKLSAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKQotICAgICAgICAgI2lmIGRlZmluZWQoX19HTlVDX18pCi0gICAgICAgICAsIHR5cGVuYW1lIGRpc2FibGVfaWY8IGlzX2l0ZXJhdG9yX3JhbmdlPFQ+ID46OnR5cGUqID0gMAotICAgICAgICAgI2VuZGlmCi0gICAgICAgICApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgcmV0dXJuX3R5cGU7Ci0gICAgcmV0dXJuIHJldHVybl90eXBlKHQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaD4KLW1vZGVfYWRhcHRlcjxNb2RlLCBzdGQ6OnN0cmVhbWJ1Zj4gCi1yZXNvbHZlKHN0ZDo6c3RyZWFtYnVmJiBzYikgCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8TW9kZSwgc3RkOjpzdHJlYW1idWY+KHdyYXAoc2IpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaD4KLW1vZGVfYWRhcHRlcjxNb2RlLCBzdGQ6OmlzdHJlYW0+IAotcmVzb2x2ZShzdGQ6OmlzdHJlYW0mIGlzKQoteyByZXR1cm4gbW9kZV9hZGFwdGVyPE1vZGUsIHN0ZDo6aXN0cmVhbT4od3JhcChpcykpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotbW9kZV9hZGFwdGVyPE1vZGUsIHN0ZDo6b3N0cmVhbT4gCi1yZXNvbHZlKHN0ZDo6b3N0cmVhbSYgb3MpCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8TW9kZSwgc3RkOjpvc3RyZWFtPih3cmFwKG9zKSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci1tb2RlX2FkYXB0ZXI8TW9kZSwgc3RkOjppb3N0cmVhbT4gCi1yZXNvbHZlKHN0ZDo6aW9zdHJlYW0mIGlvKQoteyByZXR1cm4gbW9kZV9hZGFwdGVyPE1vZGUsIHN0ZDo6aW9zdHJlYW0+KHdyYXAoaW8pKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgc3RkOjpzaXplX3QgTj4KLWFycmF5X2FkYXB0ZXI8TW9kZSwgQ2g+IHJlc29sdmUoQ2ggKCZhcnJheSlbTl0pCi17IHJldHVybiBhcnJheV9hZGFwdGVyPE1vZGUsIENoPihhcnJheSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEl0ZXI+Ci1yYW5nZV9hZGFwdGVyPCBNb2RlLCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8SXRlcj4gPiAKLXJlc29sdmUoY29uc3QgbmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPEl0ZXI+JiBybmcpCi17IHJldHVybiByYW5nZV9hZGFwdGVyPCBNb2RlLCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8SXRlcj4gPihybmcpOyB9Ci0KLSMgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVD4KLXN0cnVjdCByZXNvbHZlX3RyYWl0cyB7Ci0gICAgLy8gTm90ZTogdGVzdCBmb3IgaXNfaXRlcmF0b3JfcmFuZ2UgbXVzdCBjb21lIGJlZm9yZSB0ZXN0IGZvciBvdXRwdXQKLSAgICAvLyBpdGVyYXRvci4KLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQuCi0gICAgICAgICAgICAgICAgaXNfc3RkX2lvPFQ+LAotICAgICAgICAgICAgICAgIG1vZGVfYWRhcHRlcjxNb2RlLCBUPiwKLSAgICAgICAgICAgICAgICBpc19pdGVyYXRvcl9yYW5nZTxUPiwKLSAgICAgICAgICAgICAgICByYW5nZV9hZGFwdGVyPE1vZGUsIFQ+LAotICAgICAgICAgICAgICAgIGlzX2RlcmVmZXJlbmNlYWJsZTxUPiwKLSAgICAgICAgICAgICAgICBvdXRwdXRfaXRlcmF0b3JfYWRhcHRlcjxNb2RlLCBDaCwgVD4sCi0gICAgICAgICAgICAgICAgaXNfYXJyYXk8VD4sCi0gICAgICAgICAgICAgICAgYXJyYXlfYWRhcHRlcjxNb2RlLCBUPiwKLSAgICAgICAgICAgICAgICBlbHNlXywKLSAgICAgICAgICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotICAgICAgICAgICAgICAgICAgICBjb25zdCBUJgotICAgICAgICAgICAgICAgICNlbHNlCi0gICAgICAgICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUPgotdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIAotcmVzb2x2ZShjb25zdCBUJiB0LCBtcGw6OnRydWVfKQoteyAgIC8vIEJhZCBvdmVybG9hZCByZXNvbHV0aW9uLgotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIHJldHVybl90eXBlOwotICAgIHJldHVybiByZXR1cm5fdHlwZSh3cmFwKGNvbnN0X2Nhc3Q8VCY+KHQpKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUPgotdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIAotcmVzb2x2ZShjb25zdCBUJiB0LCBtcGw6OmZhbHNlXykKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgcmV0dXJuX3R5cGU7Ci0gICAgcmV0dXJuIHJldHVybl90eXBlKHQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVD4KLXR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZSAKLXJlc29sdmUoY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkpCi17IHJldHVybiByZXNvbHZlPE1vZGUsIENoPih0LCBpc19zdGRfaW88VD4oKSk7IH0KLQotIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmIFwKLSAgICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgJiYgXAotICAgICAhZGVmaW5lZChfX0dOVUNfXykgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgCi1yZXNvbHZlKFQmIHQsIG1wbDo6dHJ1ZV8pCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIHJldHVybl90eXBlOwotICAgIHJldHVybiByZXR1cm5fdHlwZSh3cmFwKHQpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgCi1yZXNvbHZlKFQmIHQsIG1wbDo6ZmFsc2VfKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZSByZXR1cm5fdHlwZTsKLSAgICByZXR1cm4gcmV0dXJuX3R5cGUodCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUPgotdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIAotcmVzb2x2ZShUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19FTkFCTEVfSUZfU1RSRUFNKFQpKQoteyByZXR1cm4gcmVzb2x2ZTxNb2RlLCBDaD4odCwgaXNfc3RkX2lvPFQ+KCkpOyB9Ci0KLSMgZW5kaWYgLy8gQm9ybGFuZCA1LngsIFZDNi03LjAgb3IgR0NDIDIuOXggLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04gLy8tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAvLyBWQzcuMSA0MjI0LgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9SRVNPTFZFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzMwNDdhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9yZXN0cmljdF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MiArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwCi0gKiBEYXRlOiAgICAgICAgU3VuIEphbiAwNiAxMjo1NzozMCBNU1QgMjAwOAotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogSWYgaW5jbHVkZWQgd2l0aCB0aGUgbWFjcm8gTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUIHVuZGVmaW5lZCwgZGVmaW5lcyB0aGUgCi0gKiBjbGFzcyB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZXN0cmljdGlvbi4gSWYgaW5jbHVkZWQgd2l0aCB0aGUgbWFjcm8KLSAqIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCBkZWZpbmVkIGFzIGFuIGlkZW50aWZpZXIsIGRlZmluZXMgdGhlIG92ZXJsb2FkZWQKLSAqIGZ1bmN0aW9uIHRlbXBsYXRlIG5kbmJvb3N0Ojppb3N0cmVhbXM6Ok5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCwgYW5kIG9iamVjdCAKLSAqIGdlbmVyYXRvciBmb3IgbmRuYm9vc3Q6Omlvc3RyZWFtczo6cmVzdHJpY3Rpb24uCi0gKgotICogVGhpcyBkZXNpZ24gYWxsb3dzIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVzdHJpY3QuaHBwPiBhbmQgCi0gKiA8bmRuYm9vc3QvaW9zdHJlYW1zL3NsaWNlLmhwcD4gdG8gc2hhcmUgYW4gaW1wbGVtZW50YXRpb24uCi0gKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVF9JTVBMX0hQUF9JTkNMVURFRCkgJiYgXAotICAgICFkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVF9JTVBMX0hQUF9JTkNMVURFRAotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgcmVzdHJpY3Rpb24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAvLyBtaW4uCi0jIGluY2x1ZGUgPHV0aWxpdHk+ICAgICAgICAgICAgLy8gcGFpci4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+ICAvLyBpbnRtYXhfdC4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAvLyBERURVQ0VEX1RZUEVOQU1FLgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9kZXZpY2VfYWRhcHRlci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9maWx0ZXJfYWRhcHRlci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2VuYWJsZV9pZl9zdHJlYW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgICAgLy8gZmFpbHVyZS4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9za2lwLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+ICAgICAgICAgLy8gbW9kZV9vZiwgaXNfZGlyZWN0LgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlLgotLy8gRGVzY3JpcHRpb246IFByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgdmlldyBvZiBhbiBpbmRpcmVjdCBEZXZpY2UuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBEZXZpY2UgLSBBbiBpbmRpcmVjdCBtb2RlbCBvZiBEZXZpY2UgdGhhdCBtb2RlbHMgZWl0aGVyIFNvdXJjZSBvcgotLy8gICAgICAgICAgU2Vla2FibGVEZXZpY2UuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotY2xhc3MgcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2UgOiBwdWJsaWMgZGV2aWNlX2FkYXB0ZXI8RGV2aWNlPiB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbV90eXBlPERldmljZT46OnR5cGUgIHBhcmFtX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbW9kZV9vZjxEZXZpY2U+Ojp0eXBlICAgICAgIG1vZGU7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghKGlzX2NvbnZlcnRpYmxlPG1vZGUsIGRldGFpbDo6dHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBtb2RlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGZsdXNoYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnLAotICAgICAgICAgIG9wdGltYWxseV9idWZmZXJlZF90YWcKLSAgICAgICAgeyB9OwotICAgIHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlKCBwYXJhbV90eXBlIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEgKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2VlayhzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSk7Ci1wcml2YXRlOgotICAgIHN0cmVhbV9vZmZzZXQgYmVnXywgcG9zXywgZW5kXzsKLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiByZXN0cmljdGVkX2RpcmVjdF9kZXZpY2UuCi0vLyBEZXNjcmlwdGlvbjogUHJvdmlkZXMgYW4gcmVzdHJpY3RlZCB2aWV3IG9mIGEgRGlyZWN0IERldmljZS4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIERldmljZSAtIEEgbW9kZWwgb2YgRGlyZWN0IGFuZCBEZXZpY2UuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotY2xhc3MgcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlIDogcHVibGljIGRldmljZV9hZGFwdGVyPERldmljZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiAgICBwYWlyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPERldmljZT46OnR5cGUgICAgICAgbW9kZTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCEoaXNfY29udmVydGlibGU8bW9kZSwgZGV0YWlsOjp0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IG1vZGVfb2Y8RGV2aWNlPjo6dHlwZSwKLSAgICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICAgIGRpcmVjdF90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGxvY2FsaXphYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlKCBjb25zdCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xICk7Ci0gICAgcGFpcl90eXBlIGlucHV0X3NlcXVlbmNlKCk7Ci0gICAgcGFpcl90eXBlIG91dHB1dF9zZXF1ZW5jZSgpOwotcHJpdmF0ZToKLSAgICBwYWlyX3R5cGUgc2VxdWVuY2UobXBsOjp0cnVlXyk7Ci0gICAgcGFpcl90eXBlIHNlcXVlbmNlKG1wbDo6ZmFsc2VfKTsKLSAgICBjaGFyX3R5cGUgKmJlZ18sICplbmRfOwotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHJlc3RyaWN0ZWRfZmlsdGVyLgotLy8gRGVzY3JpcHRpb246IFByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgdmlldyBvZiBhIEZpbHRlci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIEZpbHRlciAtIEFuIGluZGlyZWN0IG1vZGVsIG9mIEZpbHRlci4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+Ci1jbGFzcyByZXN0cmljdGVkX2ZpbHRlciA6IHB1YmxpYyBmaWx0ZXJfYWRhcHRlcjxGaWx0ZXI+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxGaWx0ZXI+Ojp0eXBlIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RmlsdGVyPjo6dHlwZSAgICAgIG1vZGU7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghKGlzX2NvbnZlcnRpYmxlPG1vZGUsIGRldGFpbDo6dHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBtb2RlLAotICAgICAgICAgIGZpbHRlcl90YWcsCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnLAotICAgICAgICAgIG9wdGltYWxseV9idWZmZXJlZF90YWcKLSAgICAgICAgeyB9OwotICAgIHJlc3RyaWN0ZWRfZmlsdGVyKCBjb25zdCBGaWx0ZXImIGZsdCwgc3RyZWFtX29mZnNldCBvZmYsIAotICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xICk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBpZiAoIW9wZW5fKQotICAgICAgICAgICAgb3BlbihzcmMsIE5ETkJPT1NUX0lPUzo6aW4pOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0KLSAgICAgICAgICAgIGVuZF8gIT0gLTEgPwotICAgICAgICAgICAgICAgIChzdGQ6Om1pbikgKG4sIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oZW5kXyAtIHBvc18pKSA6Ci0gICAgICAgICAgICAgICAgbjsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IAotICAgICAgICAgICAgaW9zdHJlYW1zOjpyZWFkKHRoaXMtPmNvbXBvbmVudCgpLCBzcmMsIHMsIGFtdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gLTEpCi0gICAgICAgICAgICBwb3NfICs9IHJlc3VsdDsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBpZiAoIW9wZW5fKQotICAgICAgICAgICAgb3BlbihzbmssIE5ETkJPT1NUX0lPUzo6b3V0KTsKLSAgICAgICAgaWYgKGVuZF8gIT0gLTEgJiYgcG9zXyArIG4gPj0gZW5kXykgewotICAgICAgICAgICAgaWYocG9zXyA8IGVuZF8pCi0gICAgICAgICAgICAgICAgcG9zXyArPSBpb3N0cmVhbXM6OndyaXRlKHRoaXMtPmNvbXBvbmVudCgpLAotICAgICAgICAgICAgICAgICAgICBzbmssIHMsIGVuZF8gLSBwb3NfKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3dyaXRlKCkpOwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAKLSAgICAgICAgICAgIGlvc3RyZWFtczo6d3JpdGUodGhpcy0+Y29tcG9uZW50KCksIHNuaywgcywgbik7Ci0gICAgICAgIHBvc18gKz0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKERldmljZSYgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSkKLSAgICB7Ci0gICAgICAgIHN0cmVhbV9vZmZzZXQgbmV4dDsKLSAgICAgICAgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmJlZykgewotICAgICAgICAgICAgbmV4dCA9IGJlZ18gKyBvZmY7Ci0gICAgICAgIH0gZWxzZSBpZiAod2F5ID09IE5ETkJPT1NUX0lPUzo6Y3VyKSB7Ci0gICAgICAgICAgICBuZXh0ID0gcG9zXyArIG9mZjsKLSAgICAgICAgfSBlbHNlIGlmIChlbmRfICE9IC0xKSB7Ci0gICAgICAgICAgICBuZXh0ID0gZW5kXyArIG9mZjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFJlc3RyaWN0aW9uIGlzIGhhbGYtb3Blbjsgc2VlayByZWxhdGl2ZSB0byB0aGUgYWN0dWFsIGVuZC4KLSAgICAgICAgICAgIHBvc18gPSB0aGlzLT5jb21wb25lbnQoKS5zZWVrKGRldiwgb2ZmLCBORE5CT09TVF9JT1M6OmVuZCk7Ci0gICAgICAgICAgICBpZiAocG9zXyA8IGJlZ18pCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXRfdG9fcG9zaXRpb24ocG9zXyAtIGJlZ18pOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuZXh0IDwgYmVnXyB8fCAoZW5kXyAhPSAtMSAmJiBuZXh0ID49IGVuZF8pKQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgcG9zXyA9IHRoaXMtPmNvbXBvbmVudCgpLnNlZWsoZGV2LCBuZXh0LCBORE5CT09TVF9JT1M6OmN1cik7Ci0gICAgICAgIHJldHVybiBvZmZzZXRfdG9fcG9zaXRpb24ocG9zXyAtIGJlZ18pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYgZGV2KSAKLSAgICB7IAotICAgICAgICBvcGVuXyA9IGZhbHNlOwotICAgICAgICBkZXRhaWw6OmNsb3NlX2FsbCh0aGlzLT5jb21wb25lbnQoKSwgZGV2KTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAotICAgIHsgCi0gICAgICAgIG9wZW5fID0gZmFsc2U7Ci0gICAgICAgIGlvc3RyZWFtczo6Y2xvc2UodGhpcy0+Y29tcG9uZW50KCksIGRldiwgd2hpY2gpOyAKLSAgICB9Ci1wcml2YXRlOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIG9wZW4oRGV2aWNlJiBkZXYsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlzX2NvbnZlcnRpYmxlPG1vZGUsIGR1YWxfdXNlPjo6dHlwZSBpc19kdWFsX3VzZTsKLSAgICAgICAgb3Blbl8gPSB0cnVlOwotICAgICAgICB3aGljaCA9IGlzX2R1YWxfdXNlKCkgPyB3aGljaCA6IChORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQpOwotICAgICAgICBpb3N0cmVhbXM6OnNraXAodGhpcy0+Y29tcG9uZW50KCksIGRldiwgYmVnXywgd2hpY2gpOwotICAgIH0KLQotICAgIHN0cmVhbV9vZmZzZXQgIGJlZ18sIHBvc18sIGVuZF87Ci0gICAgYm9vbCAgICAgICAgICAgb3Blbl87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlc3RyaWN0aW9uX3RyYWl0cwotICAgIDogaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQuCi0gICAgICAgICAgaXNfZmlsdGVyPFQ+LCAgcmVzdHJpY3RlZF9maWx0ZXI8VD4sCi0gICAgICAgICAgaXNfZGlyZWN0PFQ+LCAgcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPFQ+LAotICAgICAgICAgIGVsc2VfLCAgICAgICAgIHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlPFQ+Ci0gICAgICA+Ci0gICAgeyB9OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlc3RyaWN0aW9uIDogcHVibGljIGRldGFpbDo6cmVzdHJpY3Rpb25fdHJhaXRzPFQ+Ojp0eXBlIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxUPjo6dHlwZSAgICAgICAgICBwYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZXN0cmljdGlvbl90cmFpdHM8VD46OnR5cGUgIGJhc2VfdHlwZTsKLSAgICByZXN0cmljdGlvbihwYXJhbV90eXBlIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQotICAgICAgICA6IGJhc2VfdHlwZSh0LCBvZmYsIGxlbikKLSAgICAgICAgeyB9Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2U8RGV2aWNlPjo6cmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2UKLSAgICAocGFyYW1fdHlwZSBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbikKLSAgICA6IGRldmljZV9hZGFwdGVyPERldmljZT4oZGV2KSwgYmVnXyhvZmYpLCBwb3NfKG9mZiksIAotICAgICAgZW5kXyhsZW4gIT0gLTEgPyBvZmYgKyBsZW4gOiAtMSkKLXsKLSAgICBpZiAobGVuIDwgLTEgfHwgb2ZmIDwgMCkKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIG9mZnNldCIpKTsKLSAgICBpb3N0cmVhbXM6OnNraXAodGhpcy0+Y29tcG9uZW50KCksIG9mZik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2U8RGV2aWNlPjo6cmVhZAotICAgIChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9Ci0gICAgICAgIGVuZF8gIT0gLTEgPwotICAgICAgICAgICAgKHN0ZDo6bWluKSAobiwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihlbmRfIC0gcG9zXykpIDoKLSAgICAgICAgICAgIG47Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6cmVhZCh0aGlzLT5jb21wb25lbnQoKSwgcywgYW10KTsKLSAgICBpZiAocmVzdWx0ICE9IC0xKQotICAgICAgICBwb3NfICs9IHJlc3VsdDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlPERldmljZT46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17Ci0gICAgaWYgKGVuZF8gIT0gLTEgJiYgcG9zXyArIG4gPj0gZW5kXykgewotICAgICAgICBpZihwb3NfIDwgZW5kXykKLSAgICAgICAgICAgIHBvc18gKz0gaW9zdHJlYW1zOjp3cml0ZSh0aGlzLT5jb21wb25lbnQoKSwgcywgZW5kXyAtIHBvc18pOwotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF93cml0ZSgpKTsKLSAgICB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6d3JpdGUodGhpcy0+Y29tcG9uZW50KCksIHMsIG4pOwotICAgIHBvc18gKz0gcmVzdWx0OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXN0ZDo6c3RyZWFtcG9zIHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlPERldmljZT46OnNlZWsKLSAgICAoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXkpCi17Ci0gICAgc3RyZWFtX29mZnNldCBuZXh0OwotICAgIGlmICh3YXkgPT0gTkROQk9PU1RfSU9TOjpiZWcpIHsKLSAgICAgICAgbmV4dCA9IGJlZ18gKyBvZmY7Ci0gICAgfSBlbHNlIGlmICh3YXkgPT0gTkROQk9PU1RfSU9TOjpjdXIpIHsKLSAgICAgICAgbmV4dCA9IHBvc18gKyBvZmY7Ci0gICAgfSBlbHNlIGlmIChlbmRfICE9IC0xKSB7Ci0gICAgICAgIG5leHQgPSBlbmRfICsgb2ZmOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFJlc3RyaWN0aW9uIGlzIGhhbGYtb3Blbjsgc2VlayByZWxhdGl2ZSB0byB0aGUgYWN0dWFsIGVuZC4KLSAgICAgICAgcG9zXyA9IGlvc3RyZWFtczo6c2Vlayh0aGlzLT5jb21wb25lbnQoKSwgb2ZmLCBORE5CT09TVF9JT1M6OmVuZCk7Ci0gICAgICAgIGlmIChwb3NfIDwgYmVnXykKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3NlZWsoKSk7Ci0gICAgICAgIHJldHVybiBvZmZzZXRfdG9fcG9zaXRpb24ocG9zXyAtIGJlZ18pOwotICAgIH0KLSAgICBpZiAobmV4dCA8IGJlZ18gfHwgKGVuZF8gIT0gLTEgJiYgbmV4dCA+IGVuZF8pKQotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgIHBvc18gPSBpb3N0cmVhbXM6OnNlZWsodGhpcy0+Y29tcG9uZW50KCksIG5leHQgLSBwb3NfLCBORE5CT09TVF9JT1M6OmN1cik7Ci0gICAgcmV0dXJuIG9mZnNldF90b19wb3NpdGlvbihwb3NfIC0gYmVnXyk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiByZXN0cmljdGVkX2RpcmVjdF9kZXZpY2UtLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjpyZXN0cmljdGVkX2RpcmVjdF9kZXZpY2UKLSAgICAoY29uc3QgRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbikKLSAgICA6IGRldmljZV9hZGFwdGVyPERldmljZT4oZGV2KSwgYmVnXygwKSwgZW5kXygwKQotewotICAgIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiBzZXEgPQotICAgICAgICBzZXF1ZW5jZShpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgaW5wdXQ+KCkpOwotICAgIGlmICggb2ZmIDwgMCB8fCBsZW4gPCAtMSB8fCAKLSAgICAgICAgIChsZW4gIT0gLTEgJiYgb2ZmICsgbGVuID4gc2VxLnNlY29uZCAtIHNlcS5maXJzdCkgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIG9mZnNldCIpKTsKLSAgICB9Ci0gICAgYmVnXyA9IHNlcS5maXJzdCArIG9mZjsKLSAgICBlbmRfID0gbGVuICE9IC0xID8gCi0gICAgICAgIHNlcS5maXJzdCArIG9mZiArIGxlbiA6Ci0gICAgICAgIHNlcS5zZWNvbmQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXR5cGVuYW1lIHJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjpwYWlyX3R5cGUKLXJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjppbnB1dF9zZXF1ZW5jZSgpCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGlucHV0Pjo6dmFsdWUpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoYmVnXywgZW5kXyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXR5cGVuYW1lIHJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjpwYWlyX3R5cGUKLXJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjpvdXRwdXRfc2VxdWVuY2UoKQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihiZWdfLCBlbmRfKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotdHlwZW5hbWUgcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPERldmljZT46OnBhaXJfdHlwZQotcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPERldmljZT46OnNlcXVlbmNlKG1wbDo6dHJ1ZV8pCi17IHJldHVybiBpb3N0cmVhbXM6OmlucHV0X3NlcXVlbmNlKHRoaXMtPmNvbXBvbmVudCgpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci10eXBlbmFtZSByZXN0cmljdGVkX2RpcmVjdF9kZXZpY2U8RGV2aWNlPjo6cGFpcl90eXBlCi1yZXN0cmljdGVkX2RpcmVjdF9kZXZpY2U8RGV2aWNlPjo6c2VxdWVuY2UobXBsOjpmYWxzZV8pCi17IHJldHVybiBpb3N0cmVhbXM6Om91dHB1dF9zZXF1ZW5jZSh0aGlzLT5jb21wb25lbnQoKSk7IH0KLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHJlc3RyaWN0ZWRfZmlsdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotcmVzdHJpY3RlZF9maWx0ZXI8RmlsdGVyPjo6cmVzdHJpY3RlZF9maWx0ZXIKLSAgICAoY29uc3QgRmlsdGVyJiBmbHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbikKLSAgICA6IGZpbHRlcl9hZGFwdGVyPEZpbHRlcj4oZmx0KSwgYmVnXyhvZmYpLAotICAgICAgcG9zXyhvZmYpLCBlbmRfKGxlbiAhPSAtMSA/IG9mZiArIGxlbiA6IC0xKSwgb3Blbl8oZmFsc2UpCi17Ci0gICAgaWYgKGxlbiA8IC0xIHx8IG9mZiA8IDApCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImJhZCBvZmZzZXQiKSk7Ci19Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiByZXN0cmljdC9zbGljZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIE5vdGU6IFRoZSBmb2xsb3dpbmcgd29ya2Fyb3VuZHMgYXJlIHBhdHRlcm5lZCBhZnRlciByZXNvbHZlLmhwcC4gSXQgaGFzIG5vdAotLy8geWV0IGJlZW4gY29uZmlybWVkIHRoYXQgdGhleSBhcmUgbmVjZXNzYXJ5LgotCi0jIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04gLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIyAgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc3RyaWN0aW9uPFQ+IAotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKCBjb25zdCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4gPSAtMQotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkgKQoteyByZXR1cm4gcmVzdHJpY3Rpb248VD4odCwgb2ZmLCBsZW4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLXJlc3RyaWN0aW9uPCBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxDaCwgVHI+ID4KLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCggc3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiYgc2IsIHN0cmVhbV9vZmZzZXQgb2ZmLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX29mZnNldCBsZW4gPSAtMSApCi17IHJldHVybiByZXN0cmljdGlvbjwgc3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiA+KHNiLCBvZmYsIGxlbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotcmVzdHJpY3Rpb248IHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+ID4KLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiYgaXMsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248IHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+ID4oaXMsIG9mZiwgbGVuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHI+Ci1yZXN0cmljdGlvbjwgc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4gPgotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0gICAgKHN0ZDo6YmFzaWNfb3N0cmVhbTxDaCwgVHI+JiBvcywgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEpCi17IHJldHVybiByZXN0cmljdGlvbjwgc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4gPihvcywgb2ZmLCBsZW4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLXJlc3RyaWN0aW9uPCBzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4gPgotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0gICAgKHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiYgaW8sIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248IHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiA+KGlvLCBvZmYsIGxlbik7IH0KLQotIyAgZWxzZSAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc3RyaWN0aW9uPFQ+IAotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKCBjb25zdCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4gPSAtMQotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkgKQoteyByZXR1cm4gcmVzdHJpY3Rpb248VD4odCwgb2ZmLCBsZW4pOyB9Ci0KLXJlc3RyaWN0aW9uPHN0ZDo6c3RyZWFtYnVmPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChzdGQ6OnN0cmVhbWJ1ZiYgc2IsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248c3RkOjpzdHJlYW1idWY+KHNiLCBvZmYsIGxlbik7IH0KLQotcmVzdHJpY3Rpb248c3RkOjppc3RyZWFtPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChzdGQ6OmlzdHJlYW08Q2gsIFRyPiYgaXMsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248c3RkOjppc3RyZWFtPihpcywgb2ZmLCBsZW4pOyB9Ci0KLXJlc3RyaWN0aW9uPHN0ZDo6b3N0cmVhbT4gCi1ORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1QKLSAgICAoc3RkOjpvc3RyZWFtPENoLCBUcj4mIG9zLCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4gPSAtMSkKLXsgcmV0dXJuIHJlc3RyaWN0aW9uPHN0ZDo6b3N0cmVhbT4ob3MsIG9mZiwgbGVuKTsgfQotCi1yZXN0cmljdGlvbjxzdGQ6Omlvc3RyZWFtPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChzdGQ6Omlvc3RyZWFtPENoLCBUcj4mIGlvLCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4gPSAtMSkKLXsgcmV0dXJuIHJlc3RyaWN0aW9uPHN0ZDo6aW9zdHJlYW0+KGlvLCBvZmYsIGxlbik7IH0KLQotIyAgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1yZXN0cmljdGlvbjxUPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChjb25zdCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4sIG1wbDo6dHJ1ZV8pCi17ICAgLy8gQmFkIG92ZXJsb2FkIHJlc29sdXRpb24uCi0gICAgcmV0dXJuIHJlc3RyaWN0aW9uPFQ+KGNvbnN0X2Nhc3Q8VCY+KHQsIG9mZiwgbGVuKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1yZXN0cmljdGlvbjxUPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChjb25zdCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4sIG1wbDo6ZmFsc2VfKQoteyByZXR1cm4gcmVzdHJpY3Rpb248VD4odCwgb2ZmLCBsZW4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1yZXN0cmljdGlvbjxUPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCggY29uc3QgVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFQpICkKLXsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCh0LCBvZmYsIGxlbiwgaXNfc3RkX2lvPFQ+KCkpOyB9Ci0KLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiBcCi0gICAgICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApICYmIFwKLSAgICAgIWRlZmluZWQoX19HTlVDX18pIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1yZXN0cmljdGlvbjxUPgotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKFQmIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248VD4odCwgb2ZmLCBsZW4pOyB9Ci0KLSMgIGVuZGlmIC8vIEJvcmxhbmQgNS54LCBWQzYtNy4wIG9yIEdDQyAyLjl4IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jIGVuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OIC8vLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZiAhZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSU1QTF9IUFBfSU5DTFVERUQpIC4uLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA3NTNmNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyB0aGUgbWV0YWZ1bmN0aW9uIHNlbGVjdCwgd2hpY2ggbWltaWNzIHRoZSBlZmZlY3Qgb2YgYSBjaGFpbiBvZgotLy8gbmVzdGVkIG1wbCBpZl8ncy4KLS8vCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIFVzYWdlOgotLy8gICAgICAKLS8vIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0PAotLy8gICAgICAgICAgICAgICAgICAgICAgY2FzZTEsICB0eXBlMSwKLS8vICAgICAgICAgICAgICAgICAgICAgIGNhc2UyLCAgdHlwZTIsCi0vLyAgICAgICAgICAgICAgICAgICAgICAuLi4KLS8vICAgICAgICAgICAgICAgICAgICAgIHRydWVfLCAgdHlwZW4KLS8vICAgICAgICAgICAgICAgICAgPjo6dHlwZSBzZWxlY3Rpb247Ci0vLwotLy8gSGVyZSBjYXNlMSwgY2FzZTIsIC4uLiBhcmUgbW9kZWxzIG9mIE1QTDo6SW50ZWdyYWxDb25zdGFudCB3aXRoIHZhbHVlIHR5cGUKLS8vIGJvb2wsIGFuZCBuIDw9IDEyLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TRUxFQ1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19TRUxFQ1RfSFBQX0lOQ0xVREVEICAgCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgICAgIAotIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgCi0KLXR5cGVkZWYgbXBsOjp0cnVlXyBlbHNlXzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIENhc2UxID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlMSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTIgPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGUyID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlMyA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTMgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhc2U0ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlNCA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTUgPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGU1ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlNiA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTYgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhc2U3ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlNyA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTggPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGU4ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlOSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTkgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhc2UxMCA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTEwID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlMTEgPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGUxMSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTEyID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlMTIgPSBtcGw6OnZvaWRfID4KLXN0cnVjdCBzZWxlY3QgewotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlMSwgbXBsOjppZGVudGl0eTxUeXBlMT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlMiwgbXBsOjppZGVudGl0eTxUeXBlMj4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlMywgbXBsOjppZGVudGl0eTxUeXBlMz4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlNCwgbXBsOjppZGVudGl0eTxUeXBlND4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlNSwgbXBsOjppZGVudGl0eTxUeXBlNT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlNiwgbXBsOjppZGVudGl0eTxUeXBlNj4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlNywgbXBsOjppZGVudGl0eTxUeXBlNz4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlOCwgbXBsOjppZGVudGl0eTxUeXBlOD4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlOSwgbXBsOjppZGVudGl0eTxUeXBlOT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlMTAsIG1wbDo6aWRlbnRpdHk8VHlwZTEwPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2UxMSwgbXBsOjppZGVudGl0eTxUeXBlMTE+LCBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBDYXNlMTIsIFR5cGUxMiwgbXBsOjp2b2lkXyA+ID4gPiA+ID4gPiA+ID4gPiA+ID4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU0VMRUNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdF9ieV9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3RfYnlfc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMDI3NzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdF9ieV9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNC0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8KLS8vIEludGVuZGVkIGFzIGFuIGFsdGVybmF0aXZlIHRvIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBhbmQgdHlwZV90cmFpdHM6Om5vX3R5cGUuCi0vLyBQcm92aWRlcyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHR5cGVzIChjYXNlXzwwPiwgY2FzZV88MT4sIC4uLikgZm9yCi0vLyBkZXRlcm1pbmluZyB0aGUgcmVzdWx0cyBvZiBvdmVybG9hZCByZXN1bHRpb24gdXNpbmcgJ3NpemVvZicsIHBsdXMgYSB1bmlmb3JtCi0vLyBtZWFucyBvZiB1c2luZyB0aGUgcmVzdWx0LiB5ZXNfdHlwZSBhbmQgbm9fdHlwZSBhcmUgdHlwZWRlZnMgZm9yIGNhc2VfPDE+Ci0vLyBhbmQgY2FzZV88MD4uIEEgc2luZ2xlIGNhc2Ugd2l0aCBuZWdhdGl2ZSBhcmd1bWVudCwgY2FzZV88LTE+LCBpcyBhbHNvIAotLy8gcHJvdmlkZWQsIGZvciBjb252ZW5pZW5jZS4KLS8vCi0vLyBUaGlzIGhlYWRlciBtYXkgYmUgaW5jbHVkZWQgYW55IG51bWJlciBvZiB0aW1lcywgd2l0aAotLy8gTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UgZGVmaW5lZCB0byBiZSB0aGUgbGFyZ2VzdCBOIHN1Y2ggdGhhdCBjYXNlXzxOPgotLy8gaXMgbmVlZGVkIGZvciBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24uIEl0IGRlZmF1bHRzIHRvIDIwLgotLy8KLS8vIFRoaXMgaGVhZGVyIGRlcGVuZHMgb25seSBvbiBCb29zdC5Db25maWcgYW5kIEJvb3N0LlByZXByb2Nlc3Nvci4gRGVwZW5kZW5jZQotLy8gb24gVHlwZSBUcmFpdHMgb3IgTVBMIHdhcyBpbnRlbnRpb25hbGx5IGF2b2lkZWQsIHRvIGxlYXZlIG9wZW4gdGhlIAotLy8gcG9zc2liaWxpdHkgdGhhdCBzZWxlY3RfYnlfc2l6ZSBjb3VsZCBiZSB1c2VkIGJ5IHRoZXNlIGxpYnJhcmllcy4KLS8vCi0vLyBFeGFtcGxlIHVzYWdlOgotLy8KLS8vICAgICNkZWZpbmUgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UgNyAgIC8vIChOZWVkZWQgd2hlbiBkZWZhdWx0IHdhcyAyKQotLy8gICAgI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvc2VsZWN0X2J5X3NpemUuaHBwPgotLy8KLS8vICAgIHVzaW5nIG5hbWVzcGFjZSBuZG5ib29zdDo6dXRpbGl0eTsKLS8vCi0vLyAgICBjYXNlXzwwPiBoZWxwZXIoYm9vbCk7Ci0vLyAgICBjYXNlXzwxPiBoZWxwZXIoaW50KTsKLS8vICAgIGNhc2VfPDI+IGhlbHBlcih1bnNpZ25lZCk7Ci0vLyAgICBjYXNlXzwzPiBoZWxwZXIobG9uZyk7Ci0vLyAgICBjYXNlXzw0PiBoZWxwZXIodW5zaWduZWQgbG9uZyk7Ci0vLyAgICBjYXNlXzw1PiBoZWxwZXIoZmxvYXQpOwotLy8gICAgY2FzZV88Nj4gaGVscGVyKGRvdWJsZSk7Ci0vLyAgICBjYXNlXzw3PiBoZWxwZXIoY29uc3QgY2hhciopOwotLy8KLS8vICAgIHN0cnVjdCB0ZXN0IHsKLS8vICAgICAgICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0KLS8vICAgICAgICAgICAgc2VsZWN0X2J5X3NpemU8IHNpemVvZihoZWxwZXIoOTg3NlVMKSkgPjo6dmFsdWU7Ci0vLyAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCh2YWx1ZSA9PSA0KTsKLS8vICAgIH07Ci0vLwotLy8gRm9yIGNvbXBpbGVycyB3aXRoIGludGVncmFsIGNvbnN0YW50IGV4cHJlc3Npb24gcHJvYmxlbXMsIGUuZy4gQm9ybGFuZCA1LngsCi0vLyBvbmUgY2FuIGFsc28gd3JpdGUKLS8vCi0vLyAgICBzdHJ1Y3QgdGVzdCB7Ci0vLyAgICAgICAgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkUoaW50LCB2YWx1ZSwgaGVscGVyKDk4NzZVTCkpOwotLy8gICAgfTsKLS8vCi0vLyB0byBkZWZpbmUgYSBzdGF0aWMgaW50ZWdyYWwgY29uc3RhbnQgJ3ZhbHVlJyBlcXVhbCB0bwotLy8KLS8vICAgIHNlbGVjdF9ieV9zaXplPCBzaXplb2YoaGVscGVyKDk4NzZVTCkpID46OnZhbHVlLgotLy8KLQotLy8gSW5jbHVkZSBndWFyZHMgc3Vycm91bmQgYWxsIGNvbnRlbnRzIG9mIHRoaXMgaGVhZGVyIGV4Y2VwdCBmb3IgZXhwbGljaXQKLS8vIHNwZWNpYWxpemF0aW9ucyBvZiBzZWxlY3RfYnlfc2l6ZSBmb3IgY2FzZV88Tj4gd2l0aCBOID4gMi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1NFTEVDVF9CWV9TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1NFTEVDVF9CWV9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBUaGUgbG93ZXN0IE4gZm9yIHdoaWNoIHNlbGVjdF9ieV9zaXplPCBzaXplb2YoY2FzZV88Tj4pID4gaGFzIG5vdCBiZWVuCi0vLyBzcGVjaWFsaXplZC4KLSNkZWZpbmUgU0VMRUNUX0JZX1NJWkVfTUFYX1NQRUNJQUxJWkVEIDIwCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAvLyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHA+Ci0KLS8qIEFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIHVzaW5nIG1heF9hbGlnbi4gCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdXRpbGl0eSB7Ci0KLXRlbXBsYXRlPGludCBOPgotc3RydWN0IGNhc2VfIHsgY2hhciBjWyhOICsgMSkgKiBhbGlnbm1lbnRfb2Y8ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZV07IH07Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIFNpemU+Ci1zdHJ1Y3Qgc2VsZWN0X2J5X3NpemUgewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gCi0gICAgICAgIChTaXplIC8gYWxpZ25tZW50X29mPGRldGFpbDo6bWF4X2FsaWduPjo6dmFsdWUgLSAxKSk7Ci19OwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgdXRpbGl0eSwgYm9vc3QuCi0KLSovICAgICAgICAgICAgICAvLyBFbmQgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNhc2VfLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPGludCBOPiBzdHJ1Y3QgY2FzZV8geyBjaGFyIGMxOyBjYXNlXzxOIC0gMT4gYzI7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBjYXNlXzwtMT4geyBjaGFyIGM7IH07Ci10eXBlZGVmIGNhc2VfPHRydWU+IHllc190eXBlOwotdHlwZWRlZiBjYXNlXzxmYWxzZT4gbm9fdHlwZTsKLQotLy8tLS0tLS0tLS0tLS0tLURlY2xhcmF0aW9uIG9mIHNlbGVjdF9ieV9zaXplLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dW5zaWduZWQgU2l6ZT4gc3RydWN0IHNlbGVjdF9ieV9zaXplOwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIFNFTEVDVF9CWV9TSVpFX1NQRUMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIFNlcGVjaWFsaXplcyBzZWxlY3RfYnlfc2l6ZSBmb3Igc2l6ZW9mKGNhc2U8bi0xPikuIFRoZSBkZWNyZW1lbnQgaXMgdXNlZAotLy8gaGVyZSBiZWNhdXNlIHRoZSBwcmVwcm9jZXNzb3IgbGlicmFyeSBkb2Vzbid0IGhhbmRsZSBuZWdhdGl2ZSBpbnRlZ2Vycy4KLSNkZWZpbmUgU0VMRUNUX0JZX1NJWkVfU1BFQyhuKSBcCi0gICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgeyBcCi0gICAgICBzdGF0aWMgY29uc3QgaW50IE5ETkJPT1NUX1BQX0NBVChzaXplb2ZfY2FzZV8sIG4pID0gc2l6ZW9mKGNhc2VfPG4gLSAxPik7IFwKLSAgICAgIHRlbXBsYXRlPD4gXAotICAgICAgc3RydWN0IHNlbGVjdF9ieV9zaXplPCBORE5CT09TVF9QUF9DQVQoc2l6ZW9mX2Nhc2VfLCBuKSA+IHsgXAotICAgICAgICAgIHN0cnVjdCB0eXBlIHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBuIC0gMSk7IH07IFwKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IHR5cGU6OnZhbHVlKTsgXAotICAgICAgfTsgXAotICAgIH0gfSB9IFwKLSAgICAvKiovCi0KLS8vLS0tLS0tLS0tLS0tLS1EZWZhdWx0IHNwZWNpYWxpemF0aW9ucyBvZiBzZWxlY3RfYnlfc2l6ZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8obikgU0VMRUNUX0JZX1NJWkVfU1BFQyhuKQotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDAsIDIwKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0jdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgU0VMRUNUX0JZX1NJWkUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2RlZmluZSBORE5CT09TVF9TRUxFQ1RfQllfU0laRSh0eXBlXywgbmFtZSwgZXhwcikgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggXAotICAgICAgICB1bnNpZ25lZCwgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoYm9vc3Rfc2VsZWN0X2J5X3NpemVfdGVtcF8sIG5hbWUpID0gc2l6ZW9mKGV4cHIpIFwKLSAgICApOyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBcCi0gICAgICAgIHR5cGVfLCBcCi0gICAgICAgIG5hbWUgPSBcCi0gICAgICAgICAgICAoIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpzZWxlY3RfYnlfc2l6ZTwgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChib29zdF9zZWxlY3RfYnlfc2l6ZV90ZW1wXywgbmFtZSkgXAotICAgICAgICAgICAgICA+Ojp2YWx1ZSApIFwKLSAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfU0VMRUNUX0JZX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vLS0tLS0tLS0tLVNwZWNpYWxpemF0aW9ucyBvZiBTRUxFQ1RfQllfU0laRSAob3V0c2lkZSBtYWluIGluY2x1ZWQgZ3VhcmRzKS0tLS8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NFTEVDVF9CWV9TSVpFX01BWF9DQVNFKSAmJiBcCi0gICAgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UgPiBTRUxFQ1RfQllfU0laRV9NQVhfU1BFQ0lBTElaRUQKLQotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyhuKSBTRUxFQ1RfQllfU0laRV9TUEVDKG4pCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyBcCi0gICAgKFNFTEVDVF9CWV9TSVpFX01BWF9TUEVDSUFMSVpFRCwgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UpIFwKLSAgICAvKiovCi0jaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLSN1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9NQUNSTwotI3VuZGVmIFNFTEVDVF9CWV9TSVpFX01BWF9TUEVDSUFMSVpFRAotI2RlZmluZSBTRUxFQ1RfQllfU0laRV9NQVhfU1BFQ0lBTElaRUQgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDk5MzMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfU1RSRUFNQlVGX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBpbmNsdWRlIDxzdHJlYW1idWY+Ci0jZWxzZSAKLSMgaW5jbHVkZSA8c3RyZWFtYnVmLmg+Ci0jZW5kaWYgCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19TVFJFQU1CVUYoY2gsIHRyKSBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjwgY2gsIHRyID4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DIHB1YnN5bmMKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTRUVLT0ZGIHB1YnNlZWtvZmYKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTRUVLUE9TIHB1YnNlZWtwb3MKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKGNoLCB0cikgc3RkOjpzdHJlYW1idWYKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DIHN5bmMKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTRUVLT0ZGIHNlZWtvZmYKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTRUVLUE9TIHNlZWtwb3MKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvY2hhaW5idWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9jaGFpbmJ1Zi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1N2I4NTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9jaGFpbmJ1Zi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTkJVRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTkJVRl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfTVNWQywgdGVtcGxhdGUgZnJpZW5kcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYWluLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FjY2Vzc19jb250cm9sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9saW5rZWRfc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3RyYW5zbGF0ZV9pbnRfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvbm9uY29weWFibGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNoYWluYnVmLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBjaGFpbmJ1Zi4KLS8vIERlc2NyaXB0aW9uOiBTdHJlYW0gYnVmZmVyIHdoaWNoIG9wZXJhdGVzIGJ5IGRlbGVnYXRpbmcgdG8gdGhlIGZpcnN0Ci0vLyAgICAgIGxpbmtlZF9zdHJlYW1idWYgaW4gYSBjaGFpbi4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIENoYWluIC0gVGhlIGNoYWluIHR5cGUuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhaW4sIHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIEFjY2Vzcz4KLWNsYXNzIGNoYWluYnVmCi0gICAgOiBwdWJsaWMgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRigKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2hhaW46OmNoYXJfdHlwZSwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2hhaW46OnRyYWl0c190eXBlCi0gICAgICAgICAgICAgKSwKLSAgICAgIHB1YmxpYyBhY2Nlc3NfY29udHJvbDx0eXBlbmFtZSBDaGFpbjo6Y2xpZW50X3R5cGUsIEFjY2Vzcz4sCi0gICAgICBwcml2YXRlIG5vbmNvcHlhYmxlCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgYWNjZXNzX2NvbnRyb2w8Y2hhaW5fY2xpZW50PENoYWluPiwgQWNjZXNzPiAgICAgIGNsaWVudF90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2hhaW46OmNoYXJfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKHR5cGVuYW1lIENoYWluOjp0cmFpdHNfdHlwZSkKLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIGxpbmtlZF9zdHJlYW1idWY8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT4gICAgICAgICBkZWxlZ2F0ZV90eXBlOwotICAgIGNoYWluYnVmKCkgeyBjbGllbnRfdHlwZTo6c2V0X2NoYWluKCZjaGFpbl8pOyB9Ci0gICAgaW50X3R5cGUgdW5kZXJmbG93KCkgCi0gICAgICAgIHsgc2VudHJ5IHQodGhpcyk7IHJldHVybiB0cmFuc2xhdGUoZGVsZWdhdGUoKS51bmRlcmZsb3coKSk7IH0KLSAgICBpbnRfdHlwZSBwYmFja2ZhaWwoaW50X3R5cGUgYykKLSAgICAgICAgeyBzZW50cnkgdCh0aGlzKTsgcmV0dXJuIHRyYW5zbGF0ZShkZWxlZ2F0ZSgpLnBiYWNrZmFpbChjKSk7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgeHNnZXRuKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgICAgIHsgc2VudHJ5IHQodGhpcyk7IHJldHVybiBkZWxlZ2F0ZSgpLnhzZ2V0bihzLCBuKTsgfQotICAgIGludF90eXBlIG92ZXJmbG93KGludF90eXBlIGMpCi0gICAgICAgIHsgc2VudHJ5IHQodGhpcyk7IHJldHVybiB0cmFuc2xhdGUoZGVsZWdhdGUoKS5vdmVyZmxvdyhjKSk7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgICAgIHsgc2VudHJ5IHQodGhpcyk7IHJldHVybiBkZWxlZ2F0ZSgpLnhzcHV0bihzLCBuKTsgfQotICAgIGludCBzeW5jKCkgeyBzZW50cnkgdCh0aGlzKTsgcmV0dXJuIGRlbGVnYXRlKCkuc3luYygpOyB9Ci0gICAgcG9zX3R5cGUgc2Vla29mZiggb2ZmX3R5cGUgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPQotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQotICAgICAgICB7IHNlbnRyeSB0KHRoaXMpOyByZXR1cm4gZGVsZWdhdGUoKS5zZWVrb2ZmKG9mZiwgd2F5LCB3aGljaCk7IH0KLSAgICBwb3NfdHlwZSBzZWVrcG9zKCBwb3NfdHlwZSBzcCwKLSAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICAgICAgeyBzZW50cnkgdCh0aGlzKTsgcmV0dXJuIGRlbGVnYXRlKCkuc2Vla3BvcyhzcCwgd2hpY2gpOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6Y2hhcl90eXBlLAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6dHJhaXRzX3R5cGUKLSAgICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX3R5cGU7Ci0vLyNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPT0gMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS8vICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VU0lOR19QUk9URUNURURfU1RSRUFNQlVGX01FTUJFUlMoYmFzZV90eXBlKQotLy8jZW5kaWYKLXByaXZhdGU6Ci0KLSAgICAvLyBUcmFuc2xhdGUgZnJvbSBzdGQgaW50X3R5cGUgdG8gY2hhaW4ncyBpbnRfdHlwZS4KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpICAgICAgICAgICBzdGRfdHJhaXRzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2hhaW46OnRyYWl0c190eXBlICAgICAgICAgICAgICAgICAgICAgIGNoYWluX3RyYWl0czsKLSAgICBzdGF0aWMgdHlwZW5hbWUgY2hhaW5fdHJhaXRzOjppbnRfdHlwZSAKLSAgICB0cmFuc2xhdGUodHlwZW5hbWUgc3RkX3RyYWl0czo6aW50X3R5cGUgYykKLSAgICAgICAgeyByZXR1cm4gdHJhbnNsYXRlX2ludF90eXBlPHN0ZF90cmFpdHMsIGNoYWluX3RyYWl0cz4oYyk7IH0KLQotICAgIGRlbGVnYXRlX3R5cGUmIGRlbGVnYXRlKCkgCi0gICAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGRlbGVnYXRlX3R5cGUmPihjaGFpbl8uZnJvbnQoKSk7IH0KLSAgICB2b2lkIGdldF9wb2ludGVycygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPnNldGcoZGVsZWdhdGUoKS5lYmFjaygpLCBkZWxlZ2F0ZSgpLmdwdHIoKSwgZGVsZWdhdGUoKS5lZ3B0cigpKTsKLSAgICAgICAgICAgIHRoaXMtPnNldHAoZGVsZWdhdGUoKS5wYmFzZSgpLCBkZWxlZ2F0ZSgpLmVwcHRyKCkpOwotICAgICAgICAgICAgdGhpcy0+cGJ1bXAoKGludCkgKGRlbGVnYXRlKCkucHB0cigpIC0gZGVsZWdhdGUoKS5wYmFzZSgpKSk7Ci0gICAgICAgIH0KLSAgICB2b2lkIHNldF9wb2ludGVycygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGVnYXRlKCkuc2V0Zyh0aGlzLT5lYmFjaygpLCB0aGlzLT5ncHRyKCksIHRoaXMtPmVncHRyKCkpOwotICAgICAgICAgICAgZGVsZWdhdGUoKS5zZXRwKHRoaXMtPnBiYXNlKCksIHRoaXMtPmVwcHRyKCkpOwotICAgICAgICAgICAgZGVsZWdhdGUoKS5wYnVtcCgoaW50KSAodGhpcy0+cHB0cigpIC0gdGhpcy0+cGJhc2UoKSkpOwotICAgICAgICB9Ci0gICAgc3RydWN0IHNlbnRyeSB7Ci0gICAgICAgIHNlbnRyeShjaGFpbmJ1ZjxDaGFpbiwgTW9kZSwgQWNjZXNzPiogYnVmKSA6IGJ1Zl8oYnVmKQotICAgICAgICAgICAgeyBidWZfLT5zZXRfcG9pbnRlcnMoKTsgfQotICAgICAgICB+c2VudHJ5KCkgeyBidWZfLT5nZXRfcG9pbnRlcnMoKTsgfQotICAgICAgICBjaGFpbmJ1ZjxDaGFpbiwgTW9kZSwgQWNjZXNzPiogYnVmXzsKLSAgICB9OwotICAgIGZyaWVuZCBzdHJ1Y3Qgc2VudHJ5OwotICAgIENoYWluIGNoYWluXzsKLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTkJVRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvZGlyZWN0X3N0cmVhbWJ1Zi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2RpcmVjdF9zdHJlYW1idWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzc5NjA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvZGlyZWN0X3N0cmVhbWJ1Zi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ESVJFQ1RfU1RSRUFNQlVGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJUkVDVF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8dHlwZWluZm8+Ci0jaW5jbHVkZSA8dXRpbGl0eT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYWlyLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSwgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+ICAvLyBtZW1iZXIgdGVtcGxhdGUgZnJpZW5kcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mdW5jdGlvbmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9vcHRpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2xpbmtlZF9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcG9zaXRpb25pbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgCi0gICAgCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsCi0gICAgICAgICAgdHlwZW5hbWUgVHIgPSAKLSAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKAotICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAKLSAgICAgICAgICAgICAgKSA+Ci1jbGFzcyBkaXJlY3Rfc3RyZWFtYnVmIAotICAgIDogcHVibGljIGxpbmtlZF9zdHJlYW1idWY8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUsIFRyPgotewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKQotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGxpbmtlZF9zdHJlYW1idWY8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT4gICAgICBiYXNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSAgICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKAotICAgICAgICAgICAgICAgIGNoYXJfdHlwZSwgdHJhaXRzX3R5cGUKLSAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1idWZfdHlwZTsKLXB1YmxpYzogLy8gc3RyZWFtIG5lZWRzIGFjY2Vzcy4KLSAgICB2b2lkIG9wZW4oY29uc3QgVCYgdCwgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplLCAKLSAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIHBiYWNrX3NpemUpOwotICAgIGJvb2wgaXNfb3BlbigpIGNvbnN0OwotICAgIHZvaWQgY2xvc2UoKTsKLSAgICBib29sIGF1dG9fY2xvc2UoKSBjb25zdCB7IHJldHVybiBhdXRvX2Nsb3NlXzsgfQotICAgIHZvaWQgc2V0X2F1dG9fY2xvc2UoYm9vbCBjbG9zZSkgeyBhdXRvX2Nsb3NlXyA9IGNsb3NlOyB9Ci0gICAgYm9vbCBzdHJpY3Rfc3luYygpIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIC8vIERlY2xhcmVkIGluIGxpbmtlZF9zdHJlYW1idWYuCi0gICAgVCogY29tcG9uZW50KCkgeyByZXR1cm4gc3RvcmFnZV8uZ2V0KCk7IH0KLXByb3RlY3RlZDoKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPT0gMikKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfVVNJTkdfUFJPVEVDVEVEX1NUUkVBTUJVRl9NRU1CRVJTKGJhc2VfdHlwZSkKLSNlbmRpZgotICAgIGRpcmVjdF9zdHJlYW1idWYoKTsKLQotICAgIC8vLS0tLS0tLS0tLS0tLS1WaXJ0dWFsIGZ1bmN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vIERlY2xhcmVkIGluIGxpbmtlZF9zdHJlYW1idWYuCi0gICAgdm9pZCBjbG9zZV9pbXBsKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbSk7Ci0gICAgY29uc3Qgc3RkOjp0eXBlX2luZm8mIGNvbXBvbmVudF90eXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZWlkKFQpOyB9Ci0gICAgdm9pZCogY29tcG9uZW50X2ltcGwoKSB7IHJldHVybiBjb21wb25lbnQoKTsgfSAKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotICAgIHB1YmxpYzoKLSNlbmRpZgotCi0gICAgLy8gRGVjbGFyZWQgaW4gYmFzaWNfc3RyZWFtYnVmLgotICAgIGludF90eXBlIHVuZGVyZmxvdygpOwotICAgIGludF90eXBlIHBiYWNrZmFpbChpbnRfdHlwZSBjKTsKLSAgICBpbnRfdHlwZSBvdmVyZmxvdyhpbnRfdHlwZSBjKTsKLSAgICBwb3NfdHlwZSBzZWVrb2ZmKCBvZmZfdHlwZSBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApOwotICAgIHBvc190eXBlIHNlZWtwb3MocG9zX3R5cGUgc3AsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpOwotcHJpdmF0ZToKLSAgICBwb3NfdHlwZSBzZWVrX2ltcGwoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApOwotICAgIHZvaWQgaW5pdF9pbnB1dChhbnlfdGFnKSB7IH0KLSAgICB2b2lkIGluaXRfaW5wdXQoaW5wdXQpOwotICAgIHZvaWQgaW5pdF9vdXRwdXQoYW55X3RhZykgeyB9Ci0gICAgdm9pZCBpbml0X291dHB1dChvdXRwdXQpOwotICAgIHZvaWQgaW5pdF9nZXRfYXJlYSgpOwotICAgIHZvaWQgaW5pdF9wdXRfYXJlYSgpOwotICAgIGJvb2wgb25lX2hlYWQoKSBjb25zdDsKLSAgICBib29sIHR3b19oZWFkKCkgY29uc3Q7Ci0gICAgb3B0aW9uYWw8VD4gIHN0b3JhZ2VfOwotICAgIGNoYXJfdHlwZSAgICppYmVnXywgKmllbmRfLCAqb2JlZ18sICpvZW5kXzsKLSAgICBib29sICAgICAgICAgYXV0b19jbG9zZV87Ci19OwotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgZGlyZWN0X3N0cmVhbWJ1Zi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OmRpcmVjdF9zdHJlYW1idWYoKSAKLSAgICA6IGliZWdfKDApLCBpZW5kXygwKSwgb2JlZ18oMCksIG9lbmRfKDApLCBhdXRvX2Nsb3NlXyh0cnVlKSAKLXsgdGhpcy0+c2V0X3RydWVfZW9mKHRydWUpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdm9pZCBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6b3BlbgotICAgIChjb25zdCBUJiB0LCBzdGQ6OnN0cmVhbXNpemUsIHN0ZDo6c3RyZWFtc2l6ZSkKLXsKLSAgICBzdG9yYWdlXy5yZXNldCh0KTsKLSAgICBpbml0X2lucHV0KGNhdGVnb3J5KCkpOwotICAgIGluaXRfb3V0cHV0KGNhdGVnb3J5KCkpOwotICAgIHNldGcoMCwgMCwgMCk7Ci0gICAgc2V0cCgwLCAwKTsKLSAgICB0aGlzLT5zZXRfbmVlZHNfY2xvc2UoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci1ib29sIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+Ojppc19vcGVuKCkgY29uc3QgCi17IHJldHVybiBpYmVnXyAhPSAwIHx8IG9iZWdfICE9IDA7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci12b2lkIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpjbG9zZSgpIAoteyAKLSAgICBiYXNlX3R5cGUqIHNlbGYgPSB0aGlzOwotICAgIGRldGFpbDo6ZXhlY3V0ZV9hbGwoIGRldGFpbDo6Y2FsbF9tZW1iZXJfY2xvc2UoKnNlbGYsIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9tZW1iZXJfY2xvc2UoKnNlbGYsIE5ETkJPT1NUX0lPUzo6b3V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfcmVzZXQoc3RvcmFnZV8pICk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdHlwZW5hbWUgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OmludF90eXBlIAotZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnVuZGVyZmxvdygpCi17Ci0gICAgaWYgKCFpYmVnXykgCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9yZWFkKCkpOwotICAgIGlmICghZ3B0cigpKSAKLSAgICAgICAgaW5pdF9nZXRfYXJlYSgpOwotICAgIHJldHVybiBncHRyKCkgIT0gaWVuZF8gPyAKLSAgICAgICAgdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCpncHRyKCkpIDogCi0gICAgICAgIHRyYWl0c190eXBlOjplb2YoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci10eXBlbmFtZSBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6aW50X3R5cGUgCi1kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6cGJhY2tmYWlsKGludF90eXBlIGMpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBpZiAoIWliZWdfKSAKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3JlYWQoKSk7Ci0gICAgaWYgKGdwdHIoKSAhPSAwICYmIGdwdHIoKSAhPSBpYmVnXykgewotICAgICAgICBnYnVtcCgtMSk7Ci0gICAgICAgIGlmICghdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKGMsIHRyYWl0c190eXBlOjplb2YoKSkpCi0gICAgICAgICAgICAqZ3B0cigpID0gdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShjKTsKLSAgICAgICAgcmV0dXJuIHRyYWl0c190eXBlOjpub3RfZW9mKGMpOwotICAgIH0KLSAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9wdXRiYWNrKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcj4KLXR5cGVuYW1lIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjppbnRfdHlwZSAKLWRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpvdmVyZmxvdyhpbnRfdHlwZSBjKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgaWYgKCFvYmVnXykKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgibm8gd3JpdGUgYWNjZXNzIikpOwotICAgIGlmICghcHB0cigpKSBpbml0X3B1dF9hcmVhKCk7Ci0gICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoYywgdHJhaXRzX3R5cGU6OmVvZigpKSkgewotICAgICAgICBpZiAocHB0cigpID09IG9lbmRfKQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgid3JpdGUgYXJlYSBleGhhdXN0ZWQiKQotICAgICAgICAgICAgKTsKLSAgICAgICAgKnBwdHIoKSA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoYyk7Ci0gICAgICAgIHBidW1wKDEpOwotICAgICAgICByZXR1cm4gYzsKLSAgICB9Ci0gICAgcmV0dXJuIHRyYWl0c190eXBlOjpub3RfZW9mKGMpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcj4KLWlubGluZSB0eXBlbmFtZSBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6cG9zX3R5cGUKLWRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpzZWVrb2ZmCi0gICAgKG9mZl90eXBlIG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgcmV0dXJuIHNlZWtfaW1wbChvZmYsIHdheSwgd2hpY2gpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotaW5saW5lIHR5cGVuYW1lIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+Ojpwb3NfdHlwZQotZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnNlZWtwb3MKLSAgICAocG9zX3R5cGUgc3AsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17IAotICAgIHJldHVybiBzZWVrX2ltcGwocG9zaXRpb25fdG9fb2Zmc2V0KHNwKSwgTkROQk9PU1RfSU9TOjpiZWcsIHdoaWNoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci12b2lkIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpjbG9zZV9pbXBsKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4gJiYgaWJlZ18gIT0gMCkgewotICAgICAgICBzZXRnKDAsIDAsIDApOwotICAgICAgICBpYmVnXyA9IGllbmRfID0gMDsKLSAgICB9Ci0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0ICYmIG9iZWdfICE9IDApIHsKLSAgICAgICAgc3luYygpOwotICAgICAgICBzZXRwKDAsIDApOwotICAgICAgICBvYmVnXyA9IG9lbmRfID0gMDsKLSAgICB9Ci0gICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UoKnN0b3JhZ2VfLCB3aGljaCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdHlwZW5hbWUgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnBvc190eXBlIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpzZWVrX2ltcGwKLSAgICAoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIGJvdGggPSBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQ7Ci0gICAgaWYgKHR3b19oZWFkKCkgJiYgKHdoaWNoICYgYm90aCkgPT0gYm90aCkKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICBzdHJlYW1fb2Zmc2V0IHJlc3VsdCA9IC0xOwotICAgIGJvb2wgb25lID0gb25lX2hlYWQoKTsKLSAgICBpZiAob25lICYmIChwcHRyKCkgIT0gMCB8fCBncHRyKCk9PSAwKSkKLSAgICAgICAgaW5pdF9nZXRfYXJlYSgpOyAvLyBTd2l0Y2ggdG8gaW5wdXQgbW9kZSwgZm9yIGNvZGUgcmV1c2UuCi0gICAgaWYgKG9uZSB8fCAoKHdoaWNoICYgTkROQk9PU1RfSU9TOjppbikgIT0gMCAmJiBpYmVnXyAhPSAwKSkgewotICAgICAgICBpZiAoIWdwdHIoKSkgc2V0ZyhpYmVnXywgaWJlZ18sIGllbmRfKTsKLSAgICAgICAgcHRyZGlmZl90IG5leHQgPSAwOwotICAgICAgICBzd2l0Y2ggKHdheSkgewotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6YmVnOiBuZXh0ID0gb2ZmOyBicmVhazsKLSAgICAgICAgY2FzZSBORE5CT09TVF9JT1M6OmN1cjogbmV4dCA9IChncHRyKCkgLSBpYmVnXykgKyBvZmY7IGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6ZW5kOiBuZXh0ID0gKGllbmRfIC0gaWJlZ18pICsgb2ZmOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogTkROQk9PU1RfQVNTRVJUKDApOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuZXh0IDwgMCB8fCBuZXh0ID4gKGllbmRfIC0gaWJlZ18pKQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgc2V0ZyhpYmVnXywgaWJlZ18gKyBuZXh0LCBpZW5kXyk7Ci0gICAgICAgIHJlc3VsdCA9IG5leHQ7Ci0gICAgfQotICAgIGlmICghb25lICYmICh3aGljaCAmIE5ETkJPT1NUX0lPUzo6b3V0KSAhPSAwICYmIG9iZWdfICE9IDApIHsKLSAgICAgICAgaWYgKCFwcHRyKCkpIHNldHAob2JlZ18sIG9lbmRfKTsKLSAgICAgICAgcHRyZGlmZl90IG5leHQgPSAwOwotICAgICAgICBzd2l0Y2ggKHdheSkgewotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6YmVnOiBuZXh0ID0gb2ZmOyBicmVhazsKLSAgICAgICAgY2FzZSBORE5CT09TVF9JT1M6OmN1cjogbmV4dCA9IChwcHRyKCkgLSBvYmVnXykgKyBvZmY7IGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6ZW5kOiBuZXh0ID0gKG9lbmRfIC0gb2JlZ18pICsgb2ZmOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogTkROQk9PU1RfQVNTRVJUKDApOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuZXh0IDwgMCB8fCBuZXh0ID4gKG9lbmRfIC0gb2JlZ18pKQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgcGJ1bXAoc3RhdGljX2Nhc3Q8aW50PihuZXh0IC0gKHBwdHIoKSAtIG9iZWdfKSkpOwotICAgICAgICByZXN1bHQgPSBuZXh0OwotICAgIH0KLSAgICByZXR1cm4gb2Zmc2V0X3RvX3Bvc2l0aW9uKHJlc3VsdCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdm9pZCBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6aW5pdF9pbnB1dChpbnB1dCkKLXsKLSAgICBzdGQ6OnBhaXI8Y2hhcl90eXBlKiwgY2hhcl90eXBlKj4gcCA9IGlucHV0X3NlcXVlbmNlKCpzdG9yYWdlXyk7Ci0gICAgaWJlZ18gPSBwLmZpcnN0OwotICAgIGllbmRfID0gcC5zZWNvbmQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdm9pZCBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6aW5pdF9vdXRwdXQob3V0cHV0KQotewotICAgIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiBwID0gb3V0cHV0X3NlcXVlbmNlKCpzdG9yYWdlXyk7Ci0gICAgb2JlZ18gPSBwLmZpcnN0OwotICAgIG9lbmRfID0gcC5zZWNvbmQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdm9pZCBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6aW5pdF9nZXRfYXJlYSgpCi17Ci0gICAgc2V0ZyhpYmVnXywgaWJlZ18sIGllbmRfKTsKLSAgICBpZiAob25lX2hlYWQoKSAmJiBwcHRyKCkpIHsKLSAgICAgICAgZ2J1bXAoc3RhdGljX2Nhc3Q8aW50PihwcHRyKCkgLSBvYmVnXykpOwotICAgICAgICBzZXRwKDAsIDApOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci12b2lkIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+Ojppbml0X3B1dF9hcmVhKCkKLXsKLSAgICBzZXRwKG9iZWdfLCBvZW5kXyk7Ci0gICAgaWYgKG9uZV9oZWFkKCkgJiYgZ3B0cigpKSB7Ci0gICAgICAgIHBidW1wKHN0YXRpY19jYXN0PGludD4oZ3B0cigpIC0gaWJlZ18pKTsKLSAgICAgICAgc2V0ZygwLCAwLCAwKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotaW5saW5lIGJvb2wgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46Om9uZV9oZWFkKCkgY29uc3QKLXsgcmV0dXJuIGliZWdfICYmIG9iZWdfICYmIGliZWdfID09IG9iZWdfOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotaW5saW5lIGJvb2wgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnR3b19oZWFkKCkgY29uc3QKLXsgcmV0dXJuIGliZWdfICYmIG9iZWdfICYmIGliZWdfICE9IG9iZWdfOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gLy8gTVNWQwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJUkVDVF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2luZGlyZWN0X3N0cmVhbWJ1Zi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2luZGlyZWN0X3N0cmVhbWJ1Zi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NTdkZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9pbmRpcmVjdF9zdHJlYW1idWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gVGhpcyBtYXRlcmlhbCBpcyBoZWF2aWx5IGluZGVidGVkIHRvIHRoZSBkaXNjdXNzaW9uIGFuZCBjb2RlIHNhbXBsZXMgaW4KLS8vIEEuIExhbmdlciBhbmQgSy4gS3JlZnQsICJTdGFuZGFyZCBDKysgSU9TdHJlYW1zIGFuZCBMb2NhbGVzIiwKLS8vIEFkZGlzb24tV2VzbGV5LCAyMDAwLCBwcC4gMjI4LTQzLgotCi0vLyBVc2VyICJHTVNCIiBwcm92aWRlZCBhbiBvcHRpbWl6YXRpb24gZm9yIHNtYWxsIHNlZWtzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSU5ESVJFQ1RfU1RSRUFNQlVGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lORElSRUNUX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbiwgbWF4LgotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotI2luY2x1ZGUgPHR5cGVpbmZvPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgIC8vIE1lbWJlciB0ZW1wbGF0ZSBmcmllbmRzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvY29uY2VwdF9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2J1ZmZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2RvdWJsZV9vYmplY3QuaHBwPiAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvb3B0aW9uYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvbGlua2VkX3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQywgQkNDIDUueAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vCi0vLyBEZXNjcmlwdGlvbjogVGhlIGltcGxlbWVudGF0aW9uIG9mIGJhc2ljX3N0cmVhbWJ1ZiB1c2VkIGJ5IGNoYWlucy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1jbGFzcyBpbmRpcmVjdF9zdHJlYW1idWYKLSAgICA6IHB1YmxpYyBsaW5rZWRfc3RyZWFtYnVmPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlLCBUcj4KLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMoVHIpCi1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIGNvbmNlcHRfYWRhcHRlcjxUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlcjsKLSAgICB0eXBlZGVmIGRldGFpbDo6YmFzaWNfYnVmZmVyPGNoYXJfdHlwZSwgQWxsb2M+ICAgICAgICAgICAgYnVmZmVyX3R5cGU7Ci0gICAgdHlwZWRlZiBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPiAgICAgICAgICAgIG15X3R5cGU7Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmxpbmtlZF9zdHJlYW1idWY8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT4gIGJhc2VfdHlwZTsKLSAgICB0eXBlZGVmIGxpbmtlZF9zdHJlYW1idWY8Y2hhcl90eXBlLCBUcj4gICAgICAgICAgICAgICAgICAgc3RyZWFtYnVmX3R5cGU7Ci1wdWJsaWM6Ci0gICAgaW5kaXJlY3Rfc3RyZWFtYnVmKCk7Ci0KLSAgICB2b2lkIG9wZW4oY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSk7Ci0gICAgYm9vbCBpc19vcGVuKCkgY29uc3Q7Ci0gICAgdm9pZCBjbG9zZSgpOwotICAgIGJvb2wgYXV0b19jbG9zZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0X2F1dG9fY2xvc2UoYm9vbCBjbG9zZSk7Ci0gICAgYm9vbCBzdHJpY3Rfc3luYygpOwotCi0gICAgLy8gRGVjbGFyZWQgaW4gbGlua2VkX3N0cmVhbWJ1Zi4KLSAgICBUKiBjb21wb25lbnQoKSB7IHJldHVybiAmKm9iaigpOyB9Ci1wcm90ZWN0ZWQ6Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID09IDIpCi0gICAgTkROQk9PU1RfSU9TVFJFQU1TX1VTSU5HX1BST1RFQ1RFRF9TVFJFQU1CVUZfTUVNQkVSUyhiYXNlX3R5cGUpCi0jZW5kaWYKLQotICAgIC8vLS0tLS0tLS0tLXZpcnR1YWwgZnVuY3Rpb25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFCi0gICAgdm9pZCBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0gICAgcHVibGljOgotI2VuZGlmCi0gICAgaW50X3R5cGUgdW5kZXJmbG93KCk7Ci0gICAgaW50X3R5cGUgcGJhY2tmYWlsKGludF90eXBlIGMpOwotICAgIGludF90eXBlIG92ZXJmbG93KGludF90eXBlIGMpOwotICAgIGludCBzeW5jKCk7Ci0gICAgcG9zX3R5cGUgc2Vla29mZiggb2ZmX3R5cGUgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggKTsKLSAgICBwb3NfdHlwZSBzZWVrcG9zKHBvc190eXBlIHNwLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKTsKLQotICAgIC8vIERlY2xhcmVkIGluIGxpbmtlZF9zdHJlYW1idWYuCi0gICAgdm9pZCBzZXRfbmV4dChzdHJlYW1idWZfdHlwZSogbmV4dCk7Ci0gICAgdm9pZCBjbG9zZV9pbXBsKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbSk7Ci0gICAgY29uc3Qgc3RkOjp0eXBlX2luZm8mIGNvbXBvbmVudF90eXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZWlkKFQpOyB9Ci0gICAgdm9pZCogY29tcG9uZW50X2ltcGwoKSB7IHJldHVybiBjb21wb25lbnQoKTsgfQotcHJpdmF0ZToKLQotICAgIC8vLS0tLS0tLS0tLUFjY2Vzc29yIGZ1bmN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHdyYXBwZXImIG9iaigpIHsgcmV0dXJuICpzdG9yYWdlXzsgfQotICAgIHN0cmVhbWJ1Zl90eXBlKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbmV4dF87IH0KLSAgICBidWZmZXJfdHlwZSYgaW4oKSB7IHJldHVybiBidWZmZXJfLmZpcnN0KCk7IH0KLSAgICBidWZmZXJfdHlwZSYgb3V0KCkgeyByZXR1cm4gYnVmZmVyXy5zZWNvbmQoKTsgfQotICAgIGJvb2wgY2FuX3JlYWQoKSBjb25zdCB7IHJldHVybiBpc19jb252ZXJ0aWJsZTxNb2RlLCBpbnB1dD46OnZhbHVlOyB9Ci0gICAgYm9vbCBjYW5fd3JpdGUoKSBjb25zdCB7IHJldHVybiBpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ojp2YWx1ZTsgfQotICAgIGJvb2wgb3V0cHV0X2J1ZmZlcmVkKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGZfb3V0cHV0X2J1ZmZlcmVkKSAhPSAwOyB9Ci0gICAgYm9vbCBzaGFyZWRfYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gaXNfY29udmVydGlibGU8TW9kZSwgc2Vla2FibGU+Ojp2YWx1ZTsgfQotICAgIHZvaWQgc2V0X2ZsYWdzKGludCBmKSB7IGZsYWdzXyA9IGY7IH0KLQotICAgIC8vLS0tLS0tLS0tLVN0YXRlIGNoYW5naW5nIGZ1bmN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHZpcnR1YWwgdm9pZCBpbml0X2dldF9hcmVhKCk7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRfcHV0X2FyZWEoKTsKLQotICAgIC8vLS0tLS0tLS0tLVV0aWxpdHkgZnVuY3Rpb24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHBvc190eXBlIHNlZWtfaW1wbCggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICk7Ci0gICAgdm9pZCBzeW5jX2ltcGwoKTsKLQotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl9vcGVuICAgICAgICAgICAgID0gMSwKLSAgICAgICAgZl9vdXRwdXRfYnVmZmVyZWQgID0gZl9vcGVuIDw8IDEsCi0gICAgICAgIGZfYXV0b19jbG9zZSAgICAgICA9IGZfb3V0cHV0X2J1ZmZlcmVkIDw8IDEKLSAgICB9OwotCi0gICAgb3B0aW9uYWw8d3JhcHBlcj4gICAgICAgICAgIHN0b3JhZ2VfOwotICAgIHN0cmVhbWJ1Zl90eXBlKiAgICAgICAgICAgICBuZXh0XzsKLSAgICBkb3VibGVfb2JqZWN0PAotICAgICAgICBidWZmZXJfdHlwZSwKLSAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICBNb2RlLAotICAgICAgICAgICAgdHdvX3NlcXVlbmNlCi0gICAgICAgID4KLSAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyXzsKLSAgICBzdGQ6OnN0cmVhbXNpemUgICAgICAgICAgICAgcGJhY2tfc2l6ZV87Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzXzsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBpbmRpcmVjdF9zdHJlYW1idWYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjppbmRpcmVjdF9zdHJlYW1idWYoKQotICAgIDogbmV4dF8oMCksIHBiYWNrX3NpemVfKDApLCBmbGFnc18oZl9hdXRvX2Nsb3NlKSB7IH0KLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIG9wZW4sIGlzX29wZW4gYW5kIGNsb3NlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6b3BlbgotICAgIChjb25zdCBUJiB0LCBzdGQ6OnN0cmVhbXNpemUgYnVmZmVyX3NpemUsIHN0ZDo6c3RyZWFtc2l6ZSBwYmFja19zaXplKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLSAgICAvLyBOb3JtYWxpemUgYnVmZmVyIHNpemVzLgotICAgIGJ1ZmZlcl9zaXplID0KLSAgICAgICAgKGJ1ZmZlcl9zaXplICE9IC0xKSA/Ci0gICAgICAgIGJ1ZmZlcl9zaXplIDoKLSAgICAgICAgaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKHQpOwotICAgIHBiYWNrX3NpemUgPQotICAgICAgICAocGJhY2tfc2l6ZSAhPSAtMSkgPwotICAgICAgICBwYmFja19zaXplIDoKLSAgICAgICAgZGVmYXVsdF9wYmFja19idWZmZXJfc2l6ZTsKLQotICAgIC8vIENvbnN0cnVjdCBpbnB1dCBidWZmZXIuCi0gICAgaWYgKGNhbl9yZWFkKCkpIHsKLSAgICAgICAgcGJhY2tfc2l6ZV8gPSAoc3RkOjptYXgpKHN0ZDo6c3RyZWFtc2l6ZSgyKSwgcGJhY2tfc2l6ZSk7IC8vIFNUTFBvcnQgbmVlZHMgMi4KLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHNpemUgPQotICAgICAgICAgICAgcGJhY2tfc2l6ZV8gKwotICAgICAgICAgICAgKCBidWZmZXJfc2l6ZSA/IGJ1ZmZlcl9zaXplOiAxICk7Ci0gICAgICAgIGluKCkucmVzaXplKHNpemUpOwotICAgICAgICBpZiAoIXNoYXJlZF9idWZmZXIoKSkKLSAgICAgICAgICAgIGluaXRfZ2V0X2FyZWEoKTsKLSAgICB9Ci0KLSAgICAvLyBDb25zdHJ1Y3Qgb3V0cHV0IGJ1ZmZlci4KLSAgICBpZiAoY2FuX3dyaXRlKCkgJiYgIXNoYXJlZF9idWZmZXIoKSkgewotICAgICAgICBpZiAoYnVmZmVyX3NpemUgIT0gMCkKLSAgICAgICAgICAgIG91dCgpLnJlc2l6ZShidWZmZXJfc2l6ZSk7Ci0gICAgICAgIGluaXRfcHV0X2FyZWEoKTsKLSAgICB9Ci0KLSAgICBzdG9yYWdlXy5yZXNldCh3cmFwcGVyKHQpKTsKLSAgICBmbGFnc18gfD0gZl9vcGVuOwotICAgIGlmIChjYW5fd3JpdGUoKSAmJiBidWZmZXJfc2l6ZSA+IDEpCi0gICAgICAgIGZsYWdzXyB8PSBmX291dHB1dF9idWZmZXJlZDsKLSAgICB0aGlzLT5zZXRfdHJ1ZV9lb2YoZmFsc2UpOwotICAgIHRoaXMtPnNldF9uZWVkc19jbG9zZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbmxpbmUgYm9vbCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aXNfb3BlbigpIGNvbnN0Ci17IHJldHVybiAoZmxhZ3NfICYgZl9vcGVuKSAhPSAwOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXZvaWQgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OmNsb3NlKCkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIGJhc2VfdHlwZSogc2VsZiA9IHRoaXM7Ci0gICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgZGV0YWlsOjpjYWxsX21lbWJlcl9jbG9zZSgqc2VsZiwgTkROQk9PU1RfSU9TOjppbiksCi0gICAgICAgIGRldGFpbDo6Y2FsbF9tZW1iZXJfY2xvc2UoKnNlbGYsIE5ETkJPT1NUX0lPUzo6b3V0KSwKLSAgICAgICAgZGV0YWlsOjpjYWxsX3Jlc2V0KHN0b3JhZ2VfKSwKLSAgICAgICAgZGV0YWlsOjpjbGVhcl9mbGFncyhmbGFnc18pCi0gICAgKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotYm9vbCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6YXV0b19jbG9zZSgpIGNvbnN0Ci17IHJldHVybiAoZmxhZ3NfICYgZl9hdXRvX2Nsb3NlKSAhPSAwOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXZvaWQgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnNldF9hdXRvX2Nsb3NlKGJvb2wgY2xvc2UpCi17IGZsYWdzXyA9IChmbGFnc18gJiB+Zl9hdXRvX2Nsb3NlKSB8IChjbG9zZSA/IGZfYXV0b19jbG9zZSA6IDApOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiB2aXJ0dWFsIGZ1bmN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGxvYykKLXsKLSAgICBpZiAoaXNfb3BlbigpKSB7Ci0gICAgICAgIG9iaigpLmltYnVlKGxvYyk7Ci0gICAgICAgIGlmIChuZXh0XykKLSAgICAgICAgICAgIG5leHRfLT5wdWJpbWJ1ZShsb2MpOwotICAgIH0KLX0KLSNlbmRpZgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci10eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW50X3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+Ojp1bmRlcmZsb3coKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgaWYgKCFncHRyKCkpIGluaXRfZ2V0X2FyZWEoKTsKLSAgICBidWZmZXJfdHlwZSYgYnVmID0gaW4oKTsKLSAgICBpZiAoZ3B0cigpIDwgZWdwdHIoKSkgcmV0dXJuIHRyYWl0c190eXBlOjp0b19pbnRfdHlwZSgqZ3B0cigpKTsKLQotICAgIC8vIEZpbGwgcHV0YmFjayBidWZmZXIuCi0gICAgc3RkOjpzdHJlYW1zaXplIGtlZXAgPSAKLSAgICAgICAgKHN0ZDo6bWluKSggc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihncHRyKCkgLSBlYmFjaygpKSwKLSAgICAgICAgICAgICAgICAgICAgcGJhY2tfc2l6ZV8gKTsKLSAgICBpZiAoa2VlcCkKLSAgICAgICAgdHJhaXRzX3R5cGU6Om1vdmUoIGJ1Zi5kYXRhKCkgKyAocGJhY2tfc2l6ZV8gLSBrZWVwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdHIoKSAtIGtlZXAsIGtlZXAgKTsKLQotICAgIC8vIFNldCBwb2ludGVycyB0byByZWFzb25hYmxlIHZhbHVlcyBpbiBjYXNlIHJlYWQgdGhyb3dzLgotICAgIHNldGcoIGJ1Zi5kYXRhKCkgKyBwYmFja19zaXplXyAtIGtlZXAsCi0gICAgICAgICAgYnVmLmRhdGEoKSArIHBiYWNrX3NpemVfLAotICAgICAgICAgIGJ1Zi5kYXRhKCkgKyBwYmFja19zaXplXyApOwotCi0gICAgLy8gUmVhZCBmcm9tIHNvdXJjZS4KLSAgICBzdGQ6OnN0cmVhbXNpemUgY2hhcnMgPQotICAgICAgICBvYmooKS5yZWFkKGJ1Zi5kYXRhKCkgKyBwYmFja19zaXplXywgYnVmLnNpemUoKSAtIHBiYWNrX3NpemVfLCBuZXh0Xyk7Ci0gICAgaWYgKGNoYXJzID09IC0xKSB7Ci0gICAgICAgIHRoaXMtPnNldF90cnVlX2VvZih0cnVlKTsKLSAgICAgICAgY2hhcnMgPSAwOwotICAgIH0KLSAgICBzZXRnKGViYWNrKCksIGdwdHIoKSwgYnVmLmRhdGEoKSArIHBiYWNrX3NpemVfICsgY2hhcnMpOwotICAgIHJldHVybiBjaGFycyAhPSAwID8KLSAgICAgICAgdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCpncHRyKCkpIDoKLSAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci10eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW50X3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpwYmFja2ZhaWwoaW50X3R5cGUgYykKLXsKLSAgICBpZiAoZ3B0cigpICE9IGViYWNrKCkpIHsKLSAgICAgICAgZ2J1bXAoLTEpOwotICAgICAgICBpZiAoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShjLCB0cmFpdHNfdHlwZTo6ZW9mKCkpKQotICAgICAgICAgICAgKmdwdHIoKSA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoYyk7Ci0gICAgICAgIHJldHVybiB0cmFpdHNfdHlwZTo6bm90X2VvZihjKTsKLSAgICB9IGVsc2UgewotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9wdXRiYWNrKCkpOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdHlwZW5hbWUgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OmludF90eXBlCi1pbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6b3ZlcmZsb3coaW50X3R5cGUgYykKLXsKLSAgICBpZiAoIChvdXRwdXRfYnVmZmVyZWQoKSAmJiBwcHRyKCkgPT0gMCkgfHwKLSAgICAgICAgIChzaGFyZWRfYnVmZmVyKCkgJiYgZ3B0cigpICE9IDApICkKLSAgICB7Ci0gICAgICAgIGluaXRfcHV0X2FyZWEoKTsKLSAgICB9Ci0gICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoYywgdHJhaXRzX3R5cGU6OmVvZigpKSkgewotICAgICAgICBpZiAob3V0cHV0X2J1ZmZlcmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChwcHRyKCkgPT0gZXBwdHIoKSkgewotICAgICAgICAgICAgICAgIHN5bmNfaW1wbCgpOwotICAgICAgICAgICAgICAgIGlmIChwcHRyKCkgPT0gZXBwdHIoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYWl0c190eXBlOjplb2YoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwcHRyKCkgPSB0cmFpdHNfdHlwZTo6dG9fY2hhcl90eXBlKGMpOwotICAgICAgICAgICAgcGJ1bXAoMSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjaGFyX3R5cGUgZCA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoYyk7Ci0gICAgICAgICAgICBpZiAob2JqKCkud3JpdGUoJmQsIDEsIG5leHRfKSAhPSAxKQotICAgICAgICAgICAgICAgIHJldHVybiB0cmFpdHNfdHlwZTo6ZW9mKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRyYWl0c190eXBlOjpub3RfZW9mKGMpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbnQgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnN5bmMoKQotewotICAgIHRyeSB7IC8vIHN5bmMoKSBpcyBuby10aHJvdy4KLSAgICAgICAgc3luY19pbXBsKCk7Ci0gICAgICAgIG9iaigpLmZsdXNoKG5leHRfKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBjYXRjaCAoLi4uKSB7IHJldHVybiAtMTsgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1ib29sIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzdHJpY3Rfc3luYygpCi17Ci0gICAgdHJ5IHsgLy8gc3luYygpIGlzIG5vLXRocm93LgotICAgICAgICBzeW5jX2ltcGwoKTsKLSAgICAgICAgcmV0dXJuIG9iaigpLmZsdXNoKG5leHRfKTsKLSAgICB9IGNhdGNoICguLi4pIHsgcmV0dXJuIGZhbHNlOyB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWlubGluZSB0eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6cG9zX3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzZWVrb2ZmCi0gICAgKG9mZl90eXBlIG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgcmV0dXJuIHNlZWtfaW1wbChvZmYsIHdheSwgd2hpY2gpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWlubGluZSB0eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6cG9zX3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzZWVrcG9zCi0gICAgKHBvc190eXBlIHNwLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQoteyAKLSAgICByZXR1cm4gc2Vla19pbXBsKHBvc2l0aW9uX3RvX29mZnNldChzcCksIE5ETkJPT1NUX0lPUzo6YmVnLCB3aGljaCk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci10eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6cG9zX3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzZWVrX2ltcGwKLSAgICAoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgaWYgKCBncHRyKCkgIT0gMCAmJiB3YXkgPT0gTkROQk9PU1RfSU9TOjpjdXIgJiYgd2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbiAmJiAKLSAgICAgICAgIGViYWNrKCkgLSBncHRyKCkgPD0gb2ZmICYmIG9mZiA8PSBlZ3B0cigpIC0gZ3B0cigpICkgCi0gICAgeyAgIC8vIFNtYWxsIHNlZWsgb3B0aW1pemF0aW9uCi0gICAgICAgIGdidW1wKG9mZik7Ci0gICAgICAgIHJldHVybiBvYmooKS5zZWVrKDAsIE5ETkJPT1NUX0lPUzo6Y3VyLCBORE5CT09TVF9JT1M6OmluLCBuZXh0XykgLQotICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8b2ZmX3R5cGU+KGVncHRyKCkgLSBncHRyKCkpOwotICAgIH0KLSAgICBpZiAocHB0cigpICE9IDApIAotICAgICAgICB0aGlzLT5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU1lOQygpOyAvLyBzeW5jKCkgY29uZnVzZXMgVmlzdWFsQWdlIDYuCi0gICAgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmN1ciAmJiBncHRyKCkpCi0gICAgICAgIG9mZiAtPSBzdGF0aWNfY2FzdDxvZmZfdHlwZT4oZWdwdHIoKSAtIGdwdHIoKSk7Ci0gICAgc2V0ZygwLCAwLCAwKTsKLSAgICBzZXRwKDAsIDApOwotICAgIHJldHVybiBvYmooKS5zZWVrKG9mZiwgd2F5LCB3aGljaCwgbmV4dF8pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbmxpbmUgdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6c2V0X25leHQKLSAgICAoc3RyZWFtYnVmX3R5cGUqIG5leHQpCi17IG5leHRfID0gbmV4dDsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbmxpbmUgdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6Y2xvc2VfaW1wbAotICAgIChORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotewotICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluICYmIGlzX2NvbnZlcnRpYmxlPE1vZGUsIGlucHV0Pjo6dmFsdWUpIHsKLSAgICAgICAgc2V0ZygwLCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0ICYmIGlzX2NvbnZlcnRpYmxlPE1vZGUsIG91dHB1dD46OnZhbHVlKSB7Ci0gICAgICAgIHN5bmMoKTsKLSAgICAgICAgc2V0cCgwLCAwKTsKLSAgICB9Ci0gICAgaWYgKCAhaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGR1YWxfdXNlPjo6dmFsdWUgfHwKLSAgICAgICAgIGlzX2NvbnZlcnRpYmxlPE1vZGUsIGlucHV0Pjo6dmFsdWUgPT0gKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pICkKLSAgICB7Ci0gICAgICAgIG9iaigpLmNsb3NlKHdoaWNoLCBuZXh0Xyk7Ci0gICAgfQotfQotCi0vLy0tLS0tLS0tLS1TdGF0ZSBjaGFuZ2luZyBmdW5jdGlvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci12b2lkIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzeW5jX2ltcGwoKQotewotICAgIHN0ZDo6c3RyZWFtc2l6ZSBhdmFpbCwgYW10OwotICAgIGlmICgoYXZhaWwgPSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KHBwdHIoKSAtIHBiYXNlKCkpKSA+IDApIHsKLSAgICAgICAgaWYgKChhbXQgPSBvYmooKS53cml0ZShwYmFzZSgpLCBhdmFpbCwgbmV4dCgpKSkgPT0gYXZhaWwpCi0gICAgICAgICAgICBzZXRwKG91dCgpLmJlZ2luKCksIG91dCgpLmVuZCgpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyX3R5cGUqIHB0ciA9IHBwdHIoKTsKLSAgICAgICAgICAgIHNldHAob3V0KCkuYmVnaW4oKSArIGFtdCwgb3V0KCkuZW5kKCkpOwotICAgICAgICAgICAgcGJ1bXAocHRyIC0gcHB0cigpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW5pdF9nZXRfYXJlYSgpCi17Ci0gICAgaWYgKHNoYXJlZF9idWZmZXIoKSAmJiBwcHRyKCkgIT0gMCkgewotICAgICAgICBzeW5jX2ltcGwoKTsKLSAgICAgICAgc2V0cCgwLCAwKTsKLSAgICB9Ci0gICAgc2V0ZyhpbigpLmJlZ2luKCksIGluKCkuYmVnaW4oKSwgaW4oKS5iZWdpbigpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW5pdF9wdXRfYXJlYSgpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBpZiAoc2hhcmVkX2J1ZmZlcigpICYmIGdwdHIoKSAhPSAwKQotICAgICAgICBzZXRnKDAsIDAsIDApOwotICAgIGlmIChvdXRwdXRfYnVmZmVyZWQoKSkKLSAgICAgICAgc2V0cChvdXQoKS5iZWdpbigpLCBvdXQoKS5lbmQoKSk7Ci0gICAgZWxzZQotICAgICAgICBzZXRwKDAsIDApOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAvLyBNU1ZDLCBCQ0MgNS54Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSU5ESVJFQ1RfU1RSRUFNQlVGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9saW5rZWRfc3RyZWFtYnVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvbGlua2VkX3N0cmVhbWJ1Zi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZWMyM2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9saW5rZWRfc3RyZWFtYnVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0xJTktFRF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTElOS0VEX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDx0eXBlaW5mbz4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lbWJlciB0ZW1wbGF0ZSBmcmllbmRzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAgICAgICAgLy8gb3Blbm1vZGUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gLy8gTVNWQy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotY2xhc3MgY2hhaW5fYmFzZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhaW4sIHR5cGVuYW1lIEFjY2VzcywgdHlwZW5hbWUgTW9kZT4gY2xhc3MgY2hhaW5idWY7Ci0KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1VTSU5HX1BST1RFQ1RFRF9TVFJFQU1CVUZfTUVNQkVSUyhiYXNlKSBcCi0gICAgdXNpbmcgYmFzZTo6ZWJhY2s7IHVzaW5nIGJhc2U6OmdwdHI7IHVzaW5nIGJhc2U6OmVncHRyOyBcCi0gICAgdXNpbmcgYmFzZTo6c2V0ZzsgdXNpbmcgYmFzZTo6Z2J1bXA7IHVzaW5nIGJhc2U6OnBiYXNlOyBcCi0gICAgdXNpbmcgYmFzZTo6cHB0cjsgdXNpbmcgYmFzZTo6ZXBwdHI7IHVzaW5nIGJhc2U6OnNldHA7IFwKLSAgICB1c2luZyBiYXNlOjpwYnVtcDsgdXNpbmcgYmFzZTo6dW5kZXJmbG93OyB1c2luZyBiYXNlOjpwYmFja2ZhaWw7IFwKLSAgICB1c2luZyBiYXNlOjp4c2dldG47IHVzaW5nIGJhc2U6Om92ZXJmbG93OyB1c2luZyBiYXNlOjp4c3B1dG47IFwKLSAgICB1c2luZyBiYXNlOjpzeW5jOyB1c2luZyBiYXNlOjpzZWVrb2ZmOyB1c2luZyBiYXNlOjpzZWVrcG9zOyBcCi0gICAgLyoqLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIgPSBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoQ2gpID4KLWNsYXNzIGxpbmtlZF9zdHJlYW1idWYgOiBwdWJsaWMgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRihDaCwgVHIpIHsKLXByb3RlY3RlZDoKLSAgICBsaW5rZWRfc3RyZWFtYnVmKCkgOiBmbGFnc18oMCkgeyB9Ci0gICAgdm9pZCBzZXRfdHJ1ZV9lb2YoYm9vbCBlb2YpIAotICAgIHsgCi0gICAgICAgIGZsYWdzXyA9IChmbGFnc18gJiB+Zl90cnVlX2VvZikgfCAoZW9mID8gZl90cnVlX2VvZiA6IDApOyAKLSAgICB9Ci1wdWJsaWM6Ci0KLSAgICAvLyBTaG91bGQgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgcmVjZWl2aW5nIGFuIG9yZGluYXJ5IEVPRiBpbmRpY2F0aW9uLAotICAgIC8vIHRvIGNvbmZpcm0gdGhhdCBpdCByZXByZXNlbnRzIEVPRiByYXRoZXIgdGhhbiBXT1VMRF9CTE9DSy4KLSAgICBib29sIHRydWVfZW9mKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGZfdHJ1ZV9lb2YpICE9IDA7IH0KLXByb3RlY3RlZDoKLQotICAgIC8vLS0tLS0tLS0tLWdyYW50IGZyaWVuZHNoaXAgdG8gY2hhaW5fYmFzZSBhbmQgY2hhaW5idWYtLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaFQsIHR5cGVuYW1lIFRyVCwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGUgPgotICAgIGZyaWVuZCBjbGFzcyBjaGFpbl9iYXNlOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYWluLCB0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBBY2Nlc3M+Ci0gICAgZnJpZW5kIGNsYXNzIGNoYWluYnVmOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgZnJpZW5kIGNsYXNzIG1lbWJlcl9jbG9zZV9vcGVyYXRpb247IAotI2Vsc2UKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRihDaCwgVHIpIGJhc2U7Ci0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VU0lOR19QUk9URUNURURfU1RSRUFNQlVGX01FTUJFUlMoYmFzZSkKLSNlbmRpZgotICAgIHZvaWQgY2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIGlmICggd2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbiAmJiAKLSAgICAgICAgICAgIChmbGFnc18gJiBmX2lucHV0X2Nsb3NlZCkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsYWdzXyB8PSBmX2lucHV0X2Nsb3NlZDsKLSAgICAgICAgICAgIGNsb3NlX2ltcGwod2hpY2gpOwotICAgICAgICB9Ci0gICAgICAgIGlmICggd2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQgJiYgCi0gICAgICAgICAgICAoZmxhZ3NfICYgZl9vdXRwdXRfY2xvc2VkKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZmxhZ3NfIHw9IGZfb3V0cHV0X2Nsb3NlZDsKLSAgICAgICAgICAgIGNsb3NlX2ltcGwod2hpY2gpOwotICAgICAgICB9Ci0gICAgfQotICAgIHZvaWQgc2V0X25lZWRzX2Nsb3NlKCkKLSAgICB7Ci0gICAgICAgIGZsYWdzXyAmPSB+KGZfaW5wdXRfY2xvc2VkIHwgZl9vdXRwdXRfY2xvc2VkKTsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHNldF9uZXh0KGxpbmtlZF9zdHJlYW1idWY8Q2gsIFRyPiogLyogbmV4dCAqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlX2ltcGwoTkROQk9PU1RfSU9TOjpvcGVubW9kZSkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBhdXRvX2Nsb3NlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRfYXV0b19jbG9zZShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN0cmljdF9zeW5jKCkgPSAwOwotICAgIHZpcnR1YWwgY29uc3Qgc3RkOjp0eXBlX2luZm8mIGNvbXBvbmVudF90eXBlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCogY29tcG9uZW50X2ltcGwoKSA9IDA7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0gICAgcHJpdmF0ZToKLSNlbHNlCi0gICAgcHVibGljOgotI2VuZGlmCi1wcml2YXRlOgotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl90cnVlX2VvZiAgICAgICA9IDEsCi0gICAgICAgIGZfaW5wdXRfY2xvc2VkICAgPSBmX3RydWVfZW9mIDw8IDEsCi0gICAgICAgIGZfb3V0cHV0X2Nsb3NlZCAgPSBmX2lucHV0X2Nsb3NlZCA8PCAxCi0gICAgfTsKLSAgICBpbnQgZmxhZ3NfOwotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gLy8gTVNWQy4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9MSU5LRURfU1RSRUFNQlVGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N5c3RlbV9mYWlsdXJlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zeXN0ZW1fZmFpbHVyZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhOWRjYmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N5c3RlbV9mYWlsdXJlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIChDKSBDb3B5cmlnaHQgSm9uYXRoYW4gR3JhZWhsIDIwMDQuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gVXNlZCBieSBtYXBwZWRfZmlsZS5jcHAuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9TWVNURU1fRkFJTFVSRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9TWVNURU1fRkFJTFVSRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2luZG93c19wb3NpeC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gZmFpbHVyZS4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpICYmICFkZWZpbmVkKF9fTElCQ09NT19fKQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6c3RybGVuOyB9Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0jIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOICAvLyBFeGNsdWRlIHJhcmVseS11c2VkIHN0dWZmIGZyb20gV2luZG93cyBoZWFkZXJzCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jIGluY2x1ZGUgPGVycm5vLmg+Ci0jIGluY2x1ZGUgPHN0cmluZy5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotaW5saW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIHN5c3RlbV9mYWlsdXJlKGNvbnN0IGNoYXIqIG1zZykKLXsKLSAgICBzdGQ6OnN0cmluZyByZXN1bHQ7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICBEV09SRCBlcnI7Ci0gICAgTFBWT0lEIGxwTXNnQnVmOwotICAgIGlmICggKGVyciA9IDo6R2V0TGFzdEVycm9yKCkpICE9IE5PX0VSUk9SICYmCi0gICAgICAgICA6OkZvcm1hdE1lc3NhZ2VBKCBGT1JNQVRfTUVTU0FHRV9BTExPQ0FURV9CVUZGRVIgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFLRUxBTkdJRChMQU5HX05FVVRSQUwsIFNVQkxBTkdfREVGQVVMVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoTFBTVFIpICZscE1zZ0J1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMICkgIT0gMCApCi0gICAgewotICAgICAgICByZXN1bHQucmVzZXJ2ZShzdGQ6OnN0cmxlbihtc2cpICsgMiArIHN0ZDo6c3RybGVuKChMUFNUUilscE1zZ0J1ZikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKG1zZyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIjogIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoKExQU1RSKSBscE1zZ0J1Zik7Ci0gICAgICAgIDo6TG9jYWxGcmVlKGxwTXNnQnVmKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQgKz0gbXNnOwotICAgIH0KLSNlbHNlCi0gICAgY29uc3QgY2hhciogc3lzdGVtX21zZyA9IGVycm5vID8gc3RyZXJyb3IoZXJybm8pIDogIiI7Ci0gICAgcmVzdWx0LnJlc2VydmUoc3RkOjpzdHJsZW4obXNnKSArIDIgKyBzdGQ6OnN0cmxlbihzeXN0ZW1fbXNnKSk7Ci0gICAgcmVzdWx0LmFwcGVuZChtc2cpOwotICAgIHJlc3VsdC5hcHBlbmQoIjogIik7Ci0gICAgcmVzdWx0LmFwcGVuZChzeXN0ZW1fbXNnKTsKLSNlbmRpZgotICAgIHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRShyZXN1bHQpOwotfQotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgc3lzdGVtX2ZhaWx1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIG1zZykKLXsgcmV0dXJuIHN5c3RlbV9mYWlsdXJlKG1zZy5jX3N0cigpKTsgfQotCi1pbmxpbmUgdm9pZCB0aHJvd19zeXN0ZW1fZmFpbHVyZShjb25zdCBjaGFyKiBtc2cpCi17IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3lzdGVtX2ZhaWx1cmUobXNnKSk7IH0KLQotaW5saW5lIHZvaWQgdGhyb3dfc3lzdGVtX2ZhaWx1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIG1zZykKLXsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzeXN0ZW1fZmFpbHVyZShtc2cpKTsgfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfU1lTVEVNX0ZBSUxVUkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdGVtcGxhdGVfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC90ZW1wbGF0ZV9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWFhZmYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC90ZW1wbGF0ZV9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9URU1QTEFURV9QQVJBTVNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9QQVJBTVMoYXJpdHksIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfRVhQUl9JRihhcml0eSwgdGVtcGxhdGU8KSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoYXJpdHksIHR5cGVuYW1lIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfRVhQUl9JRihhcml0eSwgPikgXAotICAgIC8qKi8KLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfVEVNUExBVEVfQVJHUyhhcml0eSwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9FWFBSX0lGKGFyaXR5LCA8KSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoYXJpdHksIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfRVhQUl9JRihhcml0eSwgPikgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CVUZGRVJTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3RyYW5zbGF0ZV9pbnRfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdHJhbnNsYXRlX2ludF90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVjYmI2My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdHJhbnNsYXRlX2ludF90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfVFJBTlNMQVRFX0lOVF9UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1RSQU5TTEFURV9JTlRfVFlQRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGJvb2wgSXNTYW1lPgotc3RydWN0IHRyYW5zbGF0ZV9pbnRfdHlwZV9pbXBsOwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogdHJhbnNsYXRlX2NoYXIuCi0vLyBEZXNjcmlwdGlvbjogVHJhbnNsYXRlcyBhIGNoYXJhY3RlciBvciBhbiBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgZnJvbSB0aGUgCi0vLyAgICAgIGludF90eXBlIG9mIG9uZSBjaGFyYWN0ZXIgdHJhaXRzIHR5cGUgdG8gdGhlIGludF90eXBlIG9mIGFub3RoZXIuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlVHIsIHR5cGVuYW1lIFRhcmdldFRyPgotdHlwZW5hbWUgVGFyZ2V0VHI6OmludF90eXBlIAotdHJhbnNsYXRlX2ludF90eXBlKHR5cGVuYW1lIFNvdXJjZVRyOjppbnRfdHlwZSBjKSAKLXsgCi0gICAgdHlwZWRlZiB0cmFuc2xhdGVfaW50X3R5cGVfaW1wbDxpc19zYW1lPFNvdXJjZVRyLCBUYXJnZXRUcj46OnZhbHVlPiBpbXBsOwotICAgIHJldHVybiBpbXBsOjp0ZW1wbGF0ZSBpbm5lcjxTb3VyY2VUciwgVGFyZ2V0VHI+Ojp0cmFuc2xhdGUoYyk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0cmFuc2xhdGVfaW50X3R5cGVfaW1wbDx0cnVlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlVHIsIHR5cGVuYW1lIFRhcmdldFRyPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBUYXJnZXRUcjo6aW50X3R5cGUgCi0gICAgICAgIHRyYW5zbGF0ZSh0eXBlbmFtZSBTb3VyY2VUcjo6aW50X3R5cGUgYykgeyByZXR1cm4gYzsgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdHJhbnNsYXRlX2ludF90eXBlX2ltcGw8ZmFsc2U+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2VUciwgdHlwZW5hbWUgVGFyZ2V0VHI+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIFRhcmdldFRyOjppbnRfdHlwZSAKLSAgICAgICAgdHJhbnNsYXRlKHR5cGVuYW1lIFNvdXJjZVRyOjppbnRfdHlwZSBjKQotICAgICAgICAgICAgeyAKLSAgICAgICAgICAgICAgICByZXR1cm4gU291cmNlVHI6OmVxX2ludF90eXBlKFNvdXJjZVRyOjplb2YoKSkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0VHI6OmVvZigpIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldFRyOjp0b19pbnRfdHlwZShTb3VyY2VUcjo6dG9fY2hhcl90eXBlKGMpKTsKLSAgICAgICAgICAgIH0KLSAgICB9OwotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1RSQU5TTEFURV9JTlRfVFlQRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvY2xvc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi9jbG9zZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZGRkMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi9jbG9zZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjbG9zZV9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBjbG9zZShUJiB0KSB7IGRldGFpbDo6Y2xvc2VfYWxsKHQpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIGNsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIHVud3JhcHBlZDsKLSAgICBkZXRhaWw6OmNsb3NlX2ltcGw8VD46OmlubmVyPHVud3JhcHBlZD46OmNsb3NlKGRldGFpbDo6dW53cmFwKHQpLCB3aGljaCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci12b2lkIGNsb3NlKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIGRldGFpbDo6Y2xvc2VfaW1wbDxUPjo6aW5uZXI8dW53cmFwcGVkPjo6Y2xvc2UoZGV0YWlsOjp1bndyYXAodCksIHNuaywgd2hpY2gpOwotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNsb3NlX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjbG9zZV90YWcgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBjbG9zYWJsZV90YWc+LAotICAgICAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICAgICBtcGw6Om9yXzwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCB0d29fc2VxdWVuY2U+LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGR1YWxfdXNlPgotICAgICAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgICAgICB0d29fc2VxdWVuY2UsCi0gICAgICAgICAgICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgbXBsOjppZGVudGl0eTxhbnlfdGFnPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjbG9zZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBjbG9zZV9pbXBsPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2xvc2VfdGFnPFQ+Ojp0eXBlPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsb3NlX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0KQotICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6Zmx1c2godCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkgewotICAgICAgICAgICAgICAgIG5vbl9ibG9ja2luZ19hZGFwdGVyPFNpbms+IG5iKHNuayk7Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpmbHVzaCh0LCBuYik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsb3NlX2ltcGw8Y2xvc2FibGVfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGNhdGVnb3J5OwotICAgICAgICAgICAgY29uc3QgYm9vbCBpbiA9ICBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgb3V0cHV0Pjo6dmFsdWU7Ci0gICAgICAgICAgICBpZiAoaW4gPT0gKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pKQotICAgICAgICAgICAgICAgIHQuY2xvc2UoKTsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgICAgICBjb25zdCBib29sIGluID0gIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBpbnB1dD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZTsKLSAgICAgICAgICAgIGlmIChpbiA9PSAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbikpIHsKLSAgICAgICAgICAgICAgICBub25fYmxvY2tpbmdfYWRhcHRlcjxTaW5rPiBuYihzbmspOwotICAgICAgICAgICAgICAgIHQuY2xvc2UobmIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbG9zZV9pbXBsPHR3b19zZXF1ZW5jZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgeyB0LmNsb3NlKHdoaWNoKTsgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICAgICAgewotICAgICAgICAgICAgbm9uX2Jsb2NraW5nX2FkYXB0ZXI8U2luaz4gbmIoc25rKTsKLSAgICAgICAgICAgIHQuY2xvc2UobmIsIHdoaWNoKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvcmVhZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2L3JlYWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjY0YWU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvcmVhZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgcmVhZF9maWx0ZXJfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlIGdldChUJiB0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSB1bndyYXBwZWQ7Ci0gICAgcmV0dXJuIGRldGFpbDo6cmVhZF9kZXZpY2VfaW1wbDxUPjo6aW5uZXI8dW53cmFwcGVkPjo6Z2V0KGRldGFpbDo6dW53cmFwKHQpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUKLXJlYWQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIHJldHVybiBkZXRhaWw6OnJlYWRfZGV2aWNlX2ltcGw8VD46OmlubmVyPHVud3JhcHBlZD46OnJlYWQoZGV0YWlsOjp1bndyYXAodCksIHMsIG4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTb3VyY2U+Ci1zdGQ6OnN0cmVhbXNpemUKLXJlYWQoVCYgdCwgU291cmNlJiBzcmMsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIHVud3JhcHBlZDsKLSAgICByZXR1cm4gZGV0YWlsOjpyZWFkX2ZpbHRlcl9pbXBsPFQ+Ojppbm5lcjx1bndyYXBwZWQ+OjpyZWFkKGRldGFpbDo6dW53cmFwKHQpLCBzcmMsIHMsIG4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSB1bndyYXBwZWQ7Ci0gICAgcmV0dXJuIGRldGFpbDo6cmVhZF9kZXZpY2VfaW1wbDxUPjo6aW5uZXI8dW53cmFwcGVkPjo6cHV0YmFjayhkZXRhaWw6OnVud3JhcCh0KSwgYyk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGFkZGluZyAtMSBhcyBFT0YgaW5kaWNhdG9yLgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBjaGVja19lb2Yoc3RkOjpzdHJlYW1zaXplIG4pIHsgcmV0dXJuIG4gIT0gMCA/IG4gOiAtMTsgfQotCi0vLyBIZWxwZXIgdGVtcGxhdGVzIGZvciByZWFkaW5nIGZyb20gc3RyZWFtYnVmcy4KLXRlbXBsYXRlPGJvb2wgSXNMaW5rZWQ+Ci1zdHJ1Y3QgdHJ1ZV9lb2ZfaW1wbDsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRydWVfZW9mX2ltcGw8dHJ1ZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgdHJ1ZV9lb2YoVCYgdCkgeyByZXR1cm4gdC50cnVlX2VvZigpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdHJ1ZV9lb2ZfaW1wbDxmYWxzZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgdHJ1ZV9lb2YoVCYgdCkgeyByZXR1cm4gdHJ1ZTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBib29sIHRydWVfZW9mKFQmIHQpCi17Ci0gICAgY29uc3QgYm9vbCBsaW5rZWQgPSBpc19saW5rZWQ8VD46OnZhbHVlOwotICAgIHJldHVybiB0cnVlX2VvZl9pbXBsPGxpbmtlZD46OnRydWVfZW9mKHQpOwotfQotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiByZWFkX2RldmljZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgZGV0YWlsOjppc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICByZWFkX2RldmljZV9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRldGFpbDo6ZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBpc3RyZWFtX3RhZywgc3RyZWFtYnVmX3RhZywgaW5wdXQKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX2RldmljZV9pbXBsPGlzdHJlYW1fdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgZ2V0KFQmIHQpCi0gICAgICAgIHsgcmV0dXJuIHQuZ2V0KCk7IH0KLQotICAgICAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgICAgIHJlYWQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgeyByZXR1cm4gY2hlY2tfZW9mKHQucmRidWYoKS0+c2dldG4ocywgbikpOyB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgcHV0YmFjayhUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgICAgICAgY2hhcl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcl90eXBlKSAgdHJhaXRzX3R5cGU7Ci0gICAgICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZSggdC5yZGJ1ZigpLT5zcHV0YmFja2MoYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpICk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZGV2aWNlX2ltcGw8c3RyZWFtYnVmX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlCi0gICAgICAgIGdldChUJiB0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgY2hhcl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgICAgICAgIHRyYWl0c190eXBlOwotICAgICAgICAgICAgdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgYzsKLSAgICAgICAgICAgIHJldHVybiAhdHJhaXRzX3R5cGU6OmlzX2VvZihjID0gdC5zYnVtcGMoKSkgfHwKLSAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjp0cnVlX2VvZih0KQotICAgICAgICAgICAgICAgICAgICAgICAgPwotICAgICAgICAgICAgICAgICAgICBjIDogdHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgICAgIHJlYWQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdDsKLSAgICAgICAgICAgIHJldHVybiAoYW10ID0gdC5zZ2V0bihzLCBuKSkgIT0gMCA/Ci0gICAgICAgICAgICAgICAgYW10IDoKLSAgICAgICAgICAgICAgICBkZXRhaWw6OnRydWVfZW9mKHQpID8KLSAgICAgICAgICAgICAgICAgICAgLTEgOgotICAgICAgICAgICAgICAgICAgICAwOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgcHV0YmFjayhUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICAgICAgICAgIHJldHVybiAhdHJhaXRzX3R5cGU6OmlzX2VvZih0LnNwdXRiYWNrYyhjKSk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZGV2aWNlX2ltcGw8aW5wdXQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBpbnRfdHlwZV9vZjxUPjo6dHlwZQotICAgICAgICBnZXQoVCYgdCkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICAgICAgICAgIGNoYXJfdHlwZSBjOwotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdDsKLSAgICAgICAgICAgIHJldHVybiAoYW10ID0gdC5yZWFkKCZjLCAxKSkgPT0gMSA/Ci0gICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKGMpIDoKLSAgICAgICAgICAgICAgICBhbXQgPT0gLTEgPwotICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6ZW9mKCkgOgotICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICAgICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IHJldHVybiB0LnJlYWQocywgbik7IH0KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgICAgICB7ICAgLy8gVCBtdXN0IGJlIFBlZWthYmxlLgotICAgICAgICAgICAgcmV0dXJuIHQucHV0YmFjayhjKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgcmVhZF9maWx0ZXJfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlYWRfZmlsdGVyX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGRldGFpbDo6aXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgcmVhZF9maWx0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkZXRhaWw6OmRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgbXVsdGljaGFyX3RhZywgYW55X3RhZwotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZmlsdGVyX2ltcGw8bXVsdGljaGFyX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgICAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIHJlYWQKLSAgICAgICAgICAgICggVCYgdCwgU291cmNlJiBzcmMsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgICAKLSAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgICAgICB7IHJldHVybiB0LnJlYWQoc3JjLCBzLCBuKTsgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF9maWx0ZXJfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgcmVhZAotICAgICAgICAgICAgKCBUJiB0LCBTb3VyY2UmIHNyYywgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCAKLSAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgY2hhcl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgICAgICAgIHRyYWl0c190eXBlOwotICAgICAgICAgICAgZm9yIChzdGQ6OnN0cmVhbXNpemUgb2ZmID0gMDsgb2ZmIDwgbjsgKytvZmYpIHsKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgYyA9IHQuZ2V0KHNyYyk7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYWl0c190eXBlOjppc19lb2YoYykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGVja19lb2Yob2ZmKTsKLSAgICAgICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKGMpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2ZmOwotICAgICAgICAgICAgICAgIHNbb2ZmXSA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoYyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvd3JpdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi93cml0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMzk4ZTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi93cml0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIHVud3JhcHBlZDsKLSAgICByZXR1cm4gZGV0YWlsOjp3cml0ZV9kZXZpY2VfaW1wbDxUPjo6aW5uZXI8dW53cmFwcGVkPjo6cHV0KGRldGFpbDo6dW53cmFwKHQpLCBjKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAoVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIHJldHVybiBkZXRhaWw6OndyaXRlX2RldmljZV9pbXBsPFQ+Ojppbm5lcjx1bndyYXBwZWQ+Ojp3cml0ZShkZXRhaWw6OnVud3JhcCh0KSwgcywgbik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplCi13cml0ZSggVCYgdCwgU2luayYgc25rLCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIAotICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIHJldHVybiBkZXRhaWw6OndyaXRlX2ZpbHRlcl9pbXBsPFQ+Ojppbm5lcjx1bndyYXBwZWQ+Ojp3cml0ZShkZXRhaWw6OnVud3JhcCh0KSwgc25rLCBzLCBuKTsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiB3cml0ZV9kZXZpY2VfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIHdyaXRlX2RldmljZV9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgb3N0cmVhbV90YWcsIHN0cmVhbWJ1Zl90YWcsIG91dHB1dAotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2RldmljZV9pbXBsPG9zdHJlYW1fdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgIHRyYWl0c190eXBlOwotICAgICAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoIHQucmRidWYoKS0+cy5zcHV0YygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6ZW9mKCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAgICAgICAgIChUJiB0LCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IHJldHVybiB0LnJkYnVmKCktPnNwdXRuKHMsIG4pOyB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB3cml0ZV9kZXZpY2VfaW1wbDxzdHJlYW1idWZfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgIHRyYWl0c190eXBlOwotICAgICAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUodC5zcHV0YyhjKSwgdHJhaXRzX3R5cGU6OmVvZigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAgICAgICAgIChUJiB0LCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IHJldHVybiB0LnNwdXRuKHMsIG4pOyB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB3cml0ZV9kZXZpY2VfaW1wbDxvdXRwdXQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHN0YXRpYyBib29sIHB1dChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLSAgICAgICAgeyByZXR1cm4gdC53cml0ZSgmYywgMSkgPT0gMTsgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICAgICAgd3JpdGUoVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgeyByZXR1cm4gdC53cml0ZShzLCBuKTsgfQotICAgIH07Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2Ygd3JpdGVfZmlsdGVyX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICB3cml0ZV9maWx0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIG11bHRpY2hhcl90YWcsIGFueV90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB3cml0ZV9maWx0ZXJfaW1wbDxtdWx0aWNoYXJfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgICAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgICAgIHdyaXRlKCBUJiB0LCBTaW5rJiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywKLSAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICAgICAgeyByZXR1cm4gdC53cml0ZShzbmssIHMsIG4pOyB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB3cml0ZV9maWx0ZXJfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgICAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgICAgIHdyaXRlKCBUJiB0LCBTaW5rJiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywKLSAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChzdGQ6OnN0cmVhbXNpemUgb2ZmID0gMDsgb2ZmIDwgbjsgKytvZmYpCi0gICAgICAgICAgICAgICAgaWYgKCF0LnB1dChzbmssIHNbb2ZmXSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZmY7Ci0gICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzI5MWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9XUkFQX1VOV1JBUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9XUkFQX1VOV1JBUF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTRklOQUUsIE1TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwPiAgICAgICAgICAgICAgIC8vIGlzX3N0ZF9pby4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHdyYXAvdW53cmFwIHRyYWl0cy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB3cmFwcGVkX3R5cGUgCi0gICAgOiBtcGw6OmlmXzxpc19zdGRfaW88VD4sIHJlZmVyZW5jZV93cmFwcGVyPFQ+LCBUPgotICAgIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB1bndyYXBwZWRfdHlwZSAKLSAgICA6IHVud3JhcF9yZWZlcmVuY2U8VD4KLSAgICB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdW53cmFwX2lvcyAKLSAgICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICBpc19zdGRfaW88VD4sIAotICAgICAgICAgIHVud3JhcF9yZWZlcmVuY2U8VD4sIAotICAgICAgICAgIG1wbDo6aWRlbnRpdHk8VD4KLSAgICAgID4KLSAgICB7IH07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiB3cmFwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgVCB3cmFwKGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFQpKSAKLSAgICB7IHJldHVybiB0OyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSB3cmFwcGVkX3R5cGU8VD46OnR5cGUKLSAgICB3cmFwKFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX0VOQUJMRV9JRl9TVFJFQU0oVCkpIHsgcmV0dXJuIG5kbmJvb3N0OjpyZWYodCk7IH0KLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlIC8vIEJDQyA1LnggbmVlZHMgbmFtZXNwYWNlIHF1YWxpZmljYXRpb24uCi0gICAgd3JhcF9pbXBsKGNvbnN0IFQmIHQsIG1wbDo6dHJ1ZV8pIHsgcmV0dXJuIG5kbmJvb3N0OjpyZWYoY29uc3RfY2FzdDxUJj4odCkpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSB3cmFwcGVkX3R5cGU8VD46OnR5cGUgLy8gQkNDIDUueCBuZWVkcyBuYW1lc3BhY2UgcXVhbGlmaWNhdGlvbi4KLSAgICB3cmFwX2ltcGwoVCYgdCwgbXBsOjp0cnVlXykgeyByZXR1cm4gbmRuYm9vc3Q6OnJlZih0KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlIAotICAgIHdyYXBfaW1wbChjb25zdCBUJiB0LCBtcGw6OmZhbHNlXykgeyByZXR1cm4gdDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlIAotICAgIHdyYXBfaW1wbChUJiB0LCBtcGw6OmZhbHNlXykgeyByZXR1cm4gdDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlIAotICAgIHdyYXAoY29uc3QgVCYgdCkgeyByZXR1cm4gd3JhcF9pbXBsKHQsIGlzX3N0ZF9pbzxUPigpKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlIAotICAgIHdyYXAoVCYgdCkgeyByZXR1cm4gd3JhcF9pbXBsKHQsIGlzX3N0ZF9pbzxUPigpKTsgfQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHVud3JhcC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIHVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlJiAKLXVud3JhcChjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxUPiYgcmVmKSB7IHJldHVybiByZWYuZ2V0KCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIHVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlJiB1bndyYXAoVCYgdCkgeyByZXR1cm4gdDsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3QgdHlwZW5hbWUgdW53cmFwcGVkX3R5cGU8VD46OnR5cGUmIHVud3JhcChjb25zdCBUJiB0KSB7IHJldHVybiB0OyB9Ci0KLSNlbHNlIC8vICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIFNpbmNlIHVud3JhcCBpcyBhIHBvdGVudGlhbCBib3R0bGVuZWNrLCB3ZSBhdm9pZCBydW50aW1lIHRhZyBkaXNwYXRjaC4KLXRlbXBsYXRlPGJvb2wgSXNSZWZXcmFwPgotc3RydWN0IHVud3JhcF9pbXBsOwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdW53cmFwX2ltcGw8dHJ1ZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHR5cGVuYW1lIHVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlJiB1bndyYXAoY29uc3QgVCYgdCkgCi0gICAgeyByZXR1cm4gdC5nZXQoKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHVud3JhcF9pbXBsPGZhbHNlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgdW53cmFwcGVkX3R5cGU8VD46OnR5cGUmIHVud3JhcChjb25zdCBUJiB0KSAKLSAgICB7IHJldHVybiBjb25zdF9jYXN0PFQmPih0KTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIHVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlJiAKLXVud3JhcChjb25zdCBUJiB0KSAKLXsgcmV0dXJuIHVud3JhcF9pbXBsPGlzX3JlZmVyZW5jZV93cmFwcGVyPFQ+Ojp2YWx1ZT46OnVud3JhcCh0KTsgfQotCi0jZW5kaWYgLy8gI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfV1JBUF9VTldSQVBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRlYjM5ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgLy8gTkROQk9PU1RfTVNWQywgbWFrZSBzdXJlIHNpemVfdCBpcyBpbiBzdGQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgLy8gc3RkOjpzaXplX3QuCi0jaW5jbHVkZSA8dXRpbGl0eT4gICAgICAgICAgICAgICAgICAvLyBwYWlyLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci1jbGFzcyBhcnJheV9hZGFwdGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpwYWlyPGNoYXJfdHlwZSosIGNoYXJfdHlwZSo+ICBwYWlyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogcHVibGljIE1vZGUsCi0gICAgICAgICAgcHVibGljIGRldmljZV90YWcsCi0gICAgICAgICAgcHVibGljIGRpcmVjdF90YWcKLSAgICAgICAgeyB9OwotICAgIGFycmF5X2FkYXB0ZXIoY2hhcl90eXBlKiBiZWdpbiwgY2hhcl90eXBlKiBlbmQpOwotICAgIGFycmF5X2FkYXB0ZXIoY2hhcl90eXBlKiBiZWdpbiwgc3RkOjpzaXplX3QgbGVuZ3RoKTsKLSAgICBhcnJheV9hZGFwdGVyKGNvbnN0IGNoYXJfdHlwZSogYmVnaW4sIGNvbnN0IGNoYXJfdHlwZSogZW5kKTsKLSAgICBhcnJheV9hZGFwdGVyKGNvbnN0IGNoYXJfdHlwZSogYmVnaW4sIHN0ZDo6c2l6ZV90IGxlbmd0aCk7Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHRlbXBsYXRlPGludCBOPgotICAgIGFycmF5X2FkYXB0ZXIoY2hhcl90eXBlICgmYXIpW05dKQotICAgICAgICA6IGJlZ2luXyhhciksIGVuZF8oYXIgKyBOKSAKLSAgICAgICAgeyB9Ci0jZW5kaWYKLSAgICBwYWlyX3R5cGUgaW5wdXRfc2VxdWVuY2UoKTsKLSAgICBwYWlyX3R5cGUgb3V0cHV0X3NlcXVlbmNlKCk7Ci1wcml2YXRlOgotICAgIGNoYXJfdHlwZSogYmVnaW5fOwotICAgIGNoYXJfdHlwZSogZW5kXzsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vIExvY2FsIG1hY3JvcywgI3VuZGVmJ2QgYmVsb3cuCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWV9DVE9SKG5hbWUsIGNoKSBcCi0gICAgdGVtcGxhdGU8aW50IE4+IFwKLSAgICBORE5CT09TVF9QUF9DQVQoYmFzaWNfLCBuYW1lKShjaCAoJmFyKVtOXSkgXAotICAgICAgICA6IGJhc2VfdHlwZShhcikgeyB9IFwKLSAgICAvKiovCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZX0NUT1IobmFtZSwgY2gpCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZKG5hbWUsIG1vZGUpIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaD4gXAotICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoYmFzaWNfLCBuYW1lKSA6IGRldGFpbDo6YXJyYXlfYWRhcHRlcjxtb2RlLCBDaD4geyBcCi0gICAgcHJpdmF0ZTogXAotICAgICAgICB0eXBlZGVmIGRldGFpbDo6YXJyYXlfYWRhcHRlcjxtb2RlLCBDaD4gIGJhc2VfdHlwZTsgXAotICAgIHB1YmxpYzogXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2hhcl90eXBlICAgIGNoYXJfdHlwZTsgXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgIGNhdGVnb3J5OyBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChiYXNpY18sIG5hbWUpKGNoYXJfdHlwZSogYmVnaW4sIGNoYXJfdHlwZSogZW5kKSBcCi0gICAgICAgICAgICA6IGJhc2VfdHlwZShiZWdpbiwgZW5kKSB7IH0gXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoYmFzaWNfLCBuYW1lKShjaGFyX3R5cGUqIGJlZ2luLCBzdGQ6OnNpemVfdCBsZW5ndGgpIFwKLSAgICAgICAgICAgIDogYmFzZV90eXBlKGJlZ2luLCBsZW5ndGgpIHsgfSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChiYXNpY18sIG5hbWUpKGNvbnN0IGNoYXJfdHlwZSogYmVnaW4sIGNvbnN0IGNoYXJfdHlwZSogZW5kKSBcCi0gICAgICAgICAgICA6IGJhc2VfdHlwZShiZWdpbiwgZW5kKSB7IH0gXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoYmFzaWNfLCBuYW1lKShjb25zdCBjaGFyX3R5cGUqIGJlZ2luLCBzdGQ6OnNpemVfdCBsZW5ndGgpIFwKLSAgICAgICAgICAgIDogYmFzZV90eXBlKGJlZ2luLCBsZW5ndGgpIHsgfSBcCi0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWV9DVE9SKG5hbWUsIENoKSBcCi0gICAgfTsgXAotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGJhc2ljXywgbmFtZSk8Y2hhcj4gICAgIG5hbWU7IFwKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChiYXNpY18sIG5hbWUpPHdjaGFyX3Q+ICBORE5CT09TVF9QUF9DQVQodywgbmFtZSk7IFwKLSAgICAvKiovCi1ORE5CT09TVF9JT1NUUkVBTVNfQVJSQVkoYXJyYXlfc291cmNlLCBpbnB1dF9zZWVrYWJsZSkKLU5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWShhcnJheV9zaW5rLCBvdXRwdXRfc2Vla2FibGUpCi1ORE5CT09TVF9JT1NUUkVBTVNfQVJSQVkoYXJyYXksIHNlZWthYmxlKQotI3VuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWV9DVE9SCi0jdW5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBhcnJheV9hZGFwdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD46OmFycmF5X2FkYXB0ZXIKLSAgICAoY2hhcl90eXBlKiBiZWdpbiwgY2hhcl90eXBlKiBlbmQpIAotICAgIDogYmVnaW5fKGJlZ2luKSwgZW5kXyhlbmQpIAotICAgIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaD4KLWFycmF5X2FkYXB0ZXI8TW9kZSwgQ2g+OjphcnJheV9hZGFwdGVyCi0gICAgKGNoYXJfdHlwZSogYmVnaW4sIHN0ZDo6c2l6ZV90IGxlbmd0aCkgCi0gICAgOiBiZWdpbl8oYmVnaW4pLCBlbmRfKGJlZ2luICsgbGVuZ3RoKSAKLSAgICB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci1hcnJheV9hZGFwdGVyPE1vZGUsIENoPjo6YXJyYXlfYWRhcHRlcgotICAgIChjb25zdCBjaGFyX3R5cGUqIGJlZ2luLCBjb25zdCBjaGFyX3R5cGUqIGVuZCkgCi0gICAgOiBiZWdpbl8oY29uc3RfY2FzdDxjaGFyX3R5cGUqPihiZWdpbikpLCAgLy8gVHJlYXRlZCBhcyByZWFkLW9ubHkuCi0gICAgICBlbmRfKGNvbnN0X2Nhc3Q8Y2hhcl90eXBlKj4oZW5kKSkgICAgICAgLy8gVHJlYXRlZCBhcyByZWFkLW9ubHkuCi17IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD46OmFycmF5X2FkYXB0ZXIKLSAgICAoY29uc3QgY2hhcl90eXBlKiBiZWdpbiwgc3RkOjpzaXplX3QgbGVuZ3RoKSAKLSAgICA6IGJlZ2luXyhjb25zdF9jYXN0PGNoYXJfdHlwZSo+KGJlZ2luKSksICAgICAgIC8vIFRyZWF0ZWQgYXMgcmVhZC1vbmx5LgotICAgICAgZW5kXyhjb25zdF9jYXN0PGNoYXJfdHlwZSo+KGJlZ2luKSArIGxlbmd0aCkgLy8gVHJlYXRlZCBhcyByZWFkLW9ubHkuCi17IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotdHlwZW5hbWUgYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD46OnBhaXJfdHlwZQotYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD46OmlucHV0X3NlcXVlbmNlKCkKLXsgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8TW9kZSwgaW5wdXQ+Ojp2YWx1ZSkpOwotICByZXR1cm4gcGFpcl90eXBlKGJlZ2luXywgZW5kXyk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci10eXBlbmFtZSBhcnJheV9hZGFwdGVyPE1vZGUsIENoPjo6cGFpcl90eXBlCi1hcnJheV9hZGFwdGVyPE1vZGUsIENoPjo6b3V0cHV0X3NlcXVlbmNlKCkKLXsgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8TW9kZSwgb3V0cHV0Pjo6dmFsdWUpKTsKLSAgcmV0dXJuIHBhaXJfdHlwZShiZWdpbl8sIGVuZF8pOyB9Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQVJSQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYmFja19pbnNlcnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYmFja19pbnNlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYWFjZTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2JhY2tfaW5zZXJ0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JBQ0tfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQUNLX0lOU0VSVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gLy8gc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXI+Ci1jbGFzcyBiYWNrX2luc2VydF9kZXZpY2UgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzaW5rX3RhZyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OwotICAgIGJhY2tfaW5zZXJ0X2RldmljZShDb250YWluZXImIGNudCkgOiBjb250YWluZXIoJmNudCkgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyAKLSAgICAgICAgY29udGFpbmVyLT5pbnNlcnQoY29udGFpbmVyLT5lbmQoKSwgcywgcyArIG4pOyAKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotcHJvdGVjdGVkOgotICAgIENvbnRhaW5lciogY29udGFpbmVyOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyPgotYmFja19pbnNlcnRfZGV2aWNlPENvbnRhaW5lcj4gYmFja19pbnNlcnRlcihDb250YWluZXImIGNudCkKLXsgcmV0dXJuIGJhY2tfaW5zZXJ0X2RldmljZTxDb250YWluZXI+KGNudCk7IH0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CQUNLX0lOU0VSVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2ZpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2ZpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGM4NWYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9maWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRklMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTEVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotIyBpbmNsdWRlIDxsb2NhbGU+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzdHJpbmc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhdGhuYW1lcywgY2hhcl90cmFpdHMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAgICAgLy8gb3Blbm1vZGUsIHNlZWtkaXIsIGludCB0eXBlcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4gICAgICAgLy8gc2Vlay4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4gICAgICAKLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1jbGFzcyBiYXNpY19maWxlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBwdWJsaWMgc2Vla2FibGVfZGV2aWNlX3RhZywKLSAgICAgICAgICBwdWJsaWMgY2xvc2FibGVfdGFnLAotICAgICAgICAgIHB1YmxpYyBsb2NhbGl6YWJsZV90YWcsCi0gICAgICAgICAgcHVibGljIGZsdXNoYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIGJhc2ljX2ZpbGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIGJhc2VfbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIGJvb2wgcHV0YmFjayhjaGFyX3R5cGUgYyk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApOwotICAgIHZvaWQgb3BlbiggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsCi0gICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPQotICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgYmFzZV9tb2RlID0KLSAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKTsKLSAgICBib29sIGlzX29wZW4oKSBjb25zdDsKLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgYm9vbCBmbHVzaCgpOwotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFCi0gICAgdm9pZCBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKSB7IHBpbXBsXy0+ZmlsZV8ucHViaW1idWUobG9jKTsgIH0KLSNlbmRpZgotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgaW1wbCB7Ci0gICAgICAgIGltcGwoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSkKLSAgICAgICAgICAgIHsgZmlsZV8ub3BlbihwYXRoLmNfc3RyKCksIG1vZGUpOyB9Ci0gICAgICAgIH5pbXBsKCkgeyBpZiAoZmlsZV8uaXNfb3BlbigpKSBmaWxlXy5jbG9zZSgpOyB9Ci0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19GSUxFQlVGKENoKSBmaWxlXzsKLSAgICB9OwotICAgIHNoYXJlZF9wdHI8aW1wbD4gcGltcGxfOwotfTsKLQotdHlwZWRlZiBiYXNpY19maWxlPGNoYXI+ICAgICBmaWxlOwotdHlwZWRlZiBiYXNpY19maWxlPHdjaGFyX3Q+ICB3ZmlsZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgYmFzaWNfZmlsZV9zb3VyY2UgOiBwcml2YXRlIGJhc2ljX2ZpbGU8Q2g+IHsKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBpbnB1dF9zZWVrYWJsZSwKLSAgICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OnJlYWQ7Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OnB1dGJhY2s7Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OnNlZWs7Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OmlzX29wZW47Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OmNsb3NlOwotICAgIGJhc2ljX2ZpbGVfc291cmNlKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluICkKLSAgICAgICAgOiBiYXNpY19maWxlPENoPihwYXRoLCBtb2RlICYgfk5ETkJPT1NUX0lPUzo6b3V0LCBORE5CT09TVF9JT1M6OmluKQotICAgICAgICB7IH0KLSAgICB2b2lkIG9wZW4oIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjppbiApCi0gICAgewotICAgICAgICBiYXNpY19maWxlPENoPjo6b3BlbihwYXRoLCBtb2RlICYgfk5ETkJPT1NUX0lPUzo6b3V0LCBORE5CT09TVF9JT1M6OmluKTsKLSAgICB9Ci19OwotCi10eXBlZGVmIGJhc2ljX2ZpbGVfc291cmNlPGNoYXI+ICAgICBmaWxlX3NvdXJjZTsKLXR5cGVkZWYgYmFzaWNfZmlsZV9zb3VyY2U8d2NoYXJfdD4gIHdmaWxlX3NvdXJjZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgYmFzaWNfZmlsZV9zaW5rIDogcHJpdmF0ZSBiYXNpY19maWxlPENoPiB7Ci0gICAgdHlwZWRlZiBDaCBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogb3V0cHV0X3NlZWthYmxlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGZsdXNoYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIHVzaW5nIGJhc2ljX2ZpbGU8Q2g+Ojp3cml0ZTsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6c2VlazsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6aXNfb3BlbjsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6Y2xvc2U7Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OmZsdXNoOwotICAgIGJhc2ljX2ZpbGVfc2luayggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6Om91dCApCi0gICAgICAgIDogYmFzaWNfZmlsZTxDaD4ocGF0aCwgbW9kZSAmIH5ORE5CT09TVF9JT1M6OmluLCBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgeyB9Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7Ci0gICAgICAgIGJhc2ljX2ZpbGU8Q2g+OjpvcGVuKHBhdGgsIG1vZGUgJiB+TkROQk9PU1RfSU9TOjppbiwgTkROQk9PU1RfSU9TOjpvdXQpOwotICAgIH0KLX07Ci0KLXR5cGVkZWYgYmFzaWNfZmlsZV9zaW5rPGNoYXI+ICAgICBmaWxlX3Npbms7Ci10eXBlZGVmIGJhc2ljX2ZpbGVfc2luazx3Y2hhcl90PiAgd2ZpbGVfc2luazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiYXNpY19maWxlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1iYXNpY19maWxlPENoPjo6YmFzaWNfZmlsZQotICAgICggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSwgCi0gICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIGJhc2VfbW9kZSApCi17IAotICAgIG9wZW4ocGF0aCwgbW9kZSwgYmFzZV9tb2RlKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIGJhc2ljX2ZpbGU8Q2g+OjpyZWFkCi0gICAgKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IAotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSBwaW1wbF8tPmZpbGVfLnNnZXRuKHMsIG4pOyAKLSAgICByZXR1cm4gcmVzdWx0ICE9IDAgPyByZXN1bHQgOiAtMTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1pbmxpbmUgYm9vbCBiYXNpY19maWxlPENoPjo6cHV0YmFjayhjaGFyX3R5cGUgYykKLXsgCi0gICAgcmV0dXJuICEhcGltcGxfLT5maWxlXy5zcHV0YmFja2MoYyk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgYmFzaWNfZmlsZTxDaD46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBwaW1wbF8tPmZpbGVfLnNwdXRuKHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotc3RkOjpzdHJlYW1wb3MgYmFzaWNfZmlsZTxDaD46OnNlZWsKLSAgICAoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCAKLSAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgKQoteyByZXR1cm4gaW9zdHJlYW1zOjpzZWVrKHBpbXBsXy0+ZmlsZV8sIG9mZiwgd2F5KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLXZvaWQgYmFzaWNfZmlsZTxDaD46Om9wZW4KLSAgICAoIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUsIAotICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBiYXNlX21vZGUgKQoteyAKLSAgICBwaW1wbF8ucmVzZXQobmV3IGltcGwocGF0aCwgbW9kZSB8IGJhc2VfbW9kZSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWJvb2wgYmFzaWNfZmlsZTxDaD46OmlzX29wZW4oKSBjb25zdCB7IHJldHVybiBwaW1wbF8tPmZpbGVfLmlzX29wZW4oKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLXZvaWQgYmFzaWNfZmlsZTxDaD46OmNsb3NlKCkgeyBwaW1wbF8tPmZpbGVfLmNsb3NlKCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1ib29sIGJhc2ljX2ZpbGU8Q2g+OjpmbHVzaCgpCi17IHJldHVybiBwaW1wbF8tPmZpbGVfLk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCkgPT0gMDsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+IC8vIE1TVkMKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvZmlsZV9kZXNjcmlwdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9maWxlX2Rlc2NyaXB0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjVhODllLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9maWxlX2Rlc2NyaXB0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzE4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBJbnNwaXJlZCBieSBmZHN0cmVhbS5ocHAsIChDKSBDb3B5cmlnaHQgTmljb2xhaSBNLiBKb3N1dHRpcyAyMDAxLAotLy8gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuam9zdXR0aXMuY29tL2NwcGNvZGUvZmRzdHJlYW0uaHRtbC4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRklMRV9ERVNDUklQVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRklMRV9ERVNDUklQVE9SX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4gICAgICAgICAgICAgICAvLyBpbnRtYXhfdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+ICAvLyB0YWdzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZHluX2xpbmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpbmRvd3NfcG9zaXguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZmlsZV9oYW5kbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIG9wZW5tb2RlLCBzZWVrZGlyLCBpbnQgdHlwZXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wYXRoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcG9zaXRpb25pbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucwotY2xhc3MgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZTsKLWNsYXNzIGZpbGVfZGVzY3JpcHRvcl9zaW5rOwotbmFtZXNwYWNlIGRldGFpbCB7IHN0cnVjdCBmaWxlX2Rlc2NyaXB0b3JfaW1wbDsgfQotCi1lbnVtIGZpbGVfZGVzY3JpcHRvcl9mbGFncwotewotICAgIG5ldmVyX2Nsb3NlX2hhbmRsZSA9IDAsCi0gICAgY2xvc2VfaGFuZGxlID0gMwotfTsKLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZmlsZV9kZXNjcmlwdG9yIHsKLXB1YmxpYzoKLSAgICBmcmllbmQgY2xhc3MgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZTsKLSAgICBmcmllbmQgY2xhc3MgZmlsZV9kZXNjcmlwdG9yX3Npbms7Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmZpbGVfaGFuZGxlICBoYW5kbGVfdHlwZTsKLSAgICB0eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBzZWVrYWJsZV9kZXZpY2VfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0KLSAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yCi0gICAgZmlsZV9kZXNjcmlwdG9yKCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcnMgdGFraW5nIGZpbGUgZGVzY2lwdG9ycwotICAgIGZpbGVfZGVzY3JpcHRvcihoYW5kbGVfdHlwZSBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIGZpbGVfZGVzY3JpcHRvcihpbnQgZmQsIGZpbGVfZGVzY3JpcHRvcl9mbGFncyk7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1VTRV9ERVBSRUNBVEVEKQotICAgIC8vIENvbnN0cnVjdG9ycyB0YWtpbmcgZmlsZSBkZXNjaXB0b3JzCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yKGhhbmRsZV90eXBlIGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3IoaW50IGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgc3RkOjogc3RyaW5nCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBDLXN0eWxlIHN0cmluZwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvciggY29uc3QgY2hhciogcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBCb29zdC5GaWxlc3lzdGVtIHBhdGgKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvciggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7IAotICAgICAgICBpbml0KCk7Ci0gICAgICAgIG9wZW4oZGV0YWlsOjpwYXRoKHBhdGgpLCBtb2RlKTsgCi0gICAgfQotCi0gICAgLy8gQ29weSBjb25zdHJ1Y3RvcgotICAgIGZpbGVfZGVzY3JpcHRvcihjb25zdCBmaWxlX2Rlc2NyaXB0b3ImIG90aGVyKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWRzIHRha2luZyBmaWxlIGRlc2NyaXB0b3JzCi0gICAgdm9pZCBvcGVuKGhhbmRsZV90eXBlIGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgdm9pZCBvcGVuKGludCBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfVVNFX0RFUFJFQ0FURUQpCi0gICAgLy8gb3BlbiBvdmVybG9hZHMgdGFraW5nIGZpbGUgZGVzY3JpcHRvcnMKLSAgICB2b2lkIG9wZW4oaGFuZGxlX3R5cGUgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHZvaWQgb3BlbihpbnQgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIHN0ZDo6c3RyaW5nCi0gICAgdm9pZCBvcGVuKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBDLXN0eWxlIHN0cmluZwotICAgIHZvaWQgb3BlbiggY29uc3QgY2hhciogcGF0aCwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIEJvb3N0LkZpbGVzeXN0ZW0gcGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0KLSAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQotICAgIHsgb3BlbihkZXRhaWw6OnBhdGgocGF0aCksIG1vZGUpOyB9Ci0KLSAgICBib29sIGlzX29wZW4oKSBjb25zdDsKLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXkpOwotICAgIGhhbmRsZV90eXBlIGhhbmRsZSgpIGNvbnN0OwotcHJpdmF0ZToKLSAgICB2b2lkIGluaXQoKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgZGV0YWlsOjpwYXRoCi0gICAgdm9pZCBvcGVuKCBjb25zdCBkZXRhaWw6OnBhdGgmIHBhdGgsIAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSwgCi0gICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlID0gTkROQk9PU1RfSU9TOjpvcGVubW9kZSgwKSApOwotCi0gICAgdHlwZWRlZiBkZXRhaWw6OmZpbGVfZGVzY3JpcHRvcl9pbXBsIGltcGxfdHlwZTsKLSAgICBzaGFyZWRfcHRyPGltcGxfdHlwZT4gcGltcGxfOwotfTsKLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZSA6IHByaXZhdGUgZmlsZV9kZXNjcmlwdG9yIHsKLXB1YmxpYzoKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHR5cGVkZWYgdm9pZCogIGhhbmRsZV90eXBlOyAgLy8gQS5rLmEgSEFORExFCi0jZWxzZQotICAgIHR5cGVkZWYgaW50ICAgIGhhbmRsZV90eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiBjaGFyICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgOiBpbnB1dF9zZWVrYWJsZSwKLSAgICAgICAgZGV2aWNlX3RhZywKLSAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICB7IH07Ci0gICAgdXNpbmcgZmlsZV9kZXNjcmlwdG9yOjppc19vcGVuOwotICAgIHVzaW5nIGZpbGVfZGVzY3JpcHRvcjo6Y2xvc2U7Ci0gICAgdXNpbmcgZmlsZV9kZXNjcmlwdG9yOjpyZWFkOwotICAgIHVzaW5nIGZpbGVfZGVzY3JpcHRvcjo6c2VlazsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OmhhbmRsZTsKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKCkgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcnMgdGFraW5nIGZpbGUgZGVzY2lwdG9ycwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoaGFuZGxlX3R5cGUgZmQsIGZpbGVfZGVzY3JpcHRvcl9mbGFncyk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKGludCBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfVVNFX0RFUFJFQ0FURUQpCi0gICAgLy8gQ29uc3RydWN0b3JzIHRha2luZyBmaWxlIGRlc2NpcHRvcnMKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKGhhbmRsZV90eXBlIGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKGludCBmZCwgYm9vbCBjbG9zZV9vbl9leGl0ID0gZmFsc2UpOwotI2VuZGlmCi0jZW5kaWYKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIHN0ZDo6IHN0cmluZwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6aW4gKTsKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIEMtc3R5bGUgc3RyaW5nCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZSggY29uc3QgY2hhciogcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6OmluICk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBCb29zdC5GaWxlc3lzdGVtIHBhdGgKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjppbiApCi0gICAgeyBvcGVuKGRldGFpbDo6cGF0aChwYXRoKSwgbW9kZSk7IH0KLQotICAgIC8vIENvcHkgY29uc3RydWN0b3IKLSAgICBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKGNvbnN0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UmIG90aGVyKTsKLQotICAgIC8vIENvbnN0cnVjdG9ycyB0YWtpbmcgZmlsZSBkZXNjaXB0b3JzCi0gICAgdm9pZCBvcGVuKGhhbmRsZV90eXBlIGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgdm9pZCBvcGVuKGludCBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfVVNFX0RFUFJFQ0FURUQpCi0gICAgLy8gb3BlbiBvdmVybG9hZHMgdGFraW5nIGZpbGUgZGVzY3JpcHRvcnMKLSAgICB2b2lkIG9wZW4oaGFuZGxlX3R5cGUgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHZvaWQgb3BlbihpbnQgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIHN0ZDo6c3RyaW5nCi0gICAgdm9pZCBvcGVuKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6OmluKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIEMtc3R5bGUgc3RyaW5nCi0gICAgdm9pZCBvcGVuKGNvbnN0IGNoYXIqIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6aW4pOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBCb29zdC5GaWxlc3lzdGVtIHBhdGgKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIHZvaWQgb3Blbihjb25zdCBQYXRoJiBwYXRoLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6OmluKTsKLXByaXZhdGU6Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIGRldGFpbDo6cGF0aAotICAgIHZvaWQgb3Blbihjb25zdCBkZXRhaWw6OnBhdGgmIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpOwotfTsKLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZmlsZV9kZXNjcmlwdG9yX3NpbmsgOiBwcml2YXRlIGZpbGVfZGVzY3JpcHRvciB7Ci1wdWJsaWM6Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICB0eXBlZGVmIHZvaWQqICBoYW5kbGVfdHlwZTsgIC8vIEEuay5hIEhBTkRMRQotI2Vsc2UKLSAgICB0eXBlZGVmIGludCAgICBoYW5kbGVfdHlwZTsKLSNlbmRpZgotICAgIHR5cGVkZWYgY2hhciAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgIDogb3V0cHV0X3NlZWthYmxlLAotICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgIHsgfTsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OmlzX29wZW47Ci0gICAgdXNpbmcgZmlsZV9kZXNjcmlwdG9yOjpjbG9zZTsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OndyaXRlOwotICAgIHVzaW5nIGZpbGVfZGVzY3JpcHRvcjo6c2VlazsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OmhhbmRsZTsKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBmaWxlX2Rlc2NyaXB0b3Jfc2luaygpIHsgfQotCi0gICAgLy8gQ29uc3RydWN0b3JzIHRha2luZyBmaWxlIGRlc2NpcHRvcnMKLSAgICBmaWxlX2Rlc2NyaXB0b3Jfc2luayhoYW5kbGVfdHlwZSBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIGZpbGVfZGVzY3JpcHRvcl9zaW5rKGludCBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfVVNFX0RFUFJFQ0FURUQpCi0gICAgLy8gQ29uc3RydWN0b3JzIHRha2luZyBmaWxlIGRlc2NpcHRvcnMKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc2luayhoYW5kbGVfdHlwZSBmZCwgYm9vbCBjbG9zZV9vbl9leGl0ID0gZmFsc2UpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NpbmsoaW50IGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgc3RkOjogc3RyaW5nCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NpbmsoIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6Om91dCApOwotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgQy1zdHlsZSBzdHJpbmcKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc2luayggY29uc3QgY2hhciogcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjpvdXQgKTsKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIEJvb3N0LkZpbGVzeXN0ZW0gcGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NpbmsoIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7IG9wZW4oZGV0YWlsOjpwYXRoKHBhdGgpLCBtb2RlKTsgfQotCi0gICAgLy8gQ29weSBjb25zdHJ1Y3RvcgotICAgIGZpbGVfZGVzY3JpcHRvcl9zaW5rKGNvbnN0IGZpbGVfZGVzY3JpcHRvcl9zaW5rJiBvdGhlcik7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkcyB0YWtpbmcgZmlsZSBkZXNjcmlwdG9ycwotICAgIHZvaWQgb3BlbihoYW5kbGVfdHlwZSBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHZvaWQgb3BlbihpbnQgZmQsIGZpbGVfZGVzY3JpcHRvcl9mbGFncyk7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1VTRV9ERVBSRUNBVEVEKQotICAgIC8vIG9wZW4gb3ZlcmxvYWRzIHRha2luZyBmaWxlIGRlc2NyaXB0b3JzCi0gICAgdm9pZCBvcGVuKGhhbmRsZV90eXBlIGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICB2b2lkIG9wZW4oaW50IGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBzdGQ6OnN0cmluZwotICAgIHZvaWQgb3BlbiggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjpvdXQgKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIEMtc3R5bGUgc3RyaW5nCi0gICAgdm9pZCBvcGVuKCBjb25zdCBjaGFyKiBwYXRoLCAKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIEJvb3N0LkZpbGVzeXN0ZW0gcGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBQYXRoJiBwYXRoLCAKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7IG9wZW4oZGV0YWlsOjpwYXRoKHBhdGgpLCBtb2RlKTsgfQotcHJpdmF0ZToKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgZGV0YWlsOjpwYXRoCi0gICAgdm9pZCBvcGVuKGNvbnN0IGRldGFpbDo6cGF0aCYgcGF0aCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSk7Ci19OwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcD4gLy8gcG9wcyBhYmlfc3VmZml4LmhwcCBwcmFnbWFzCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxFX0RFU0NSSVBUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbWFwcGVkX2ZpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL21hcHBlZF9maWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhmYmQ1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbWFwcGVkX2ZpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTk5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgSm9yZ2UgTG9kb3MgMjAwOC4KLS8vIChDKSBDb3B5cmlnaHQgSm9uYXRoYW4gVHVya2FuaXMgMjAwMy4KLS8vIChDKSBDb3B5cmlnaHQgQ3JhaWcgSGVuZGVyc29uIDIwMDIuICAgJ2Jvb3N0L21lbW1hcC5ocHAnIGZyb20gc2FuZGJveAotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19NQVBQRURfRklMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX01BUFBFRF9GSUxFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBzaXplX3QgaXMgaW4gc3RkLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpemVfdC4KLSNpbmNsdWRlIDxzdHJpbmc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXRobmFtZXMuCi0jaW5jbHVkZSA8dXRpbGl0eT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFpci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9NU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2xvc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb25jZXB0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYXV0b19saW5rLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9keW5fbGluay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAgICAvLyBvcGVubW9kZSwgZmFpbHVyZQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcGF0aC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcG9zaXRpb25pbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBtYXBwZWRfZmlsZV9iYXNlIGFuZCBtYXBwZWRfZmlsZV9wYXJhbXMtLS0tLS8vCi0KLS8vIEZvcndhcmQgZGVjbGFyYXRpb25zCi1jbGFzcyBtYXBwZWRfZmlsZV9zb3VyY2U7Ci1jbGFzcyBtYXBwZWRfZmlsZV9zaW5rOwotY2xhc3MgbWFwcGVkX2ZpbGU7Ci1uYW1lc3BhY2UgZGV0YWlsIHsgY2xhc3MgbWFwcGVkX2ZpbGVfaW1wbDsgfQotCi1jbGFzcyBtYXBwZWRfZmlsZV9iYXNlIHsKLXB1YmxpYzoKLSAgICBlbnVtIG1hcG1vZGUgewotICAgICAgICByZWFkb25seSA9IDEsCi0gICAgICAgIHJlYWR3cml0ZSA9IDIsCi0gICAgICAgIHByaXYgPSA0Ci0gICAgfTsKLX07Ci0KLS8vIEJpdG1hc2sgb3BlcmF0aW9ucyBmb3IgbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZQotbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSAKLW9wZXJhdG9yfChtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGEsIG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgYik7Ci0KLW1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgCi1vcGVyYXRvciYobWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSBhLCBtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGIpOwotCi1tYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIAotb3BlcmF0b3JeKG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgYSwgbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSBiKTsKLQotbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSAKLW9wZXJhdG9yfihtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGEpOwotCi1tYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIAotb3BlcmF0b3J8PShtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlJiBhLCBtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGIpOwotCi1tYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIAotb3BlcmF0b3ImPShtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlJiBhLCBtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGIpOwotCi1tYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIAotb3BlcmF0b3JePShtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlJiBhLCBtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGIpOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgbWFwcGVkX2ZpbGVfcGFyYW1zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotc3RydWN0IG1hcHBlZF9maWxlX3BhcmFtc19iYXNlIHsKLSAgICBtYXBwZWRfZmlsZV9wYXJhbXNfYmFzZSgpCi0gICAgICAgIDogZmxhZ3Moc3RhdGljX2Nhc3Q8bWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZT4oMCkpLCAKLSAgICAgICAgICBtb2RlKCksIG9mZnNldCgwKSwgbGVuZ3RoKHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigtMSkpLCAKLSAgICAgICAgICBuZXdfZmlsZV9zaXplKDApLCBoaW50KDApCi0gICAgICAgIHsgfQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgbWFwcGVkX2ZpbGVfaW1wbDsKLSAgICB2b2lkIG5vcm1hbGl6ZSgpOwotcHVibGljOgotICAgIG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgICBmbGFnczsKLSAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlICAgICAgICAgbW9kZTsgIC8vIERlcHJlY2F0ZWQKLSAgICBzdHJlYW1fb2Zmc2V0ICAgICAgICAgICAgICAgb2Zmc2V0OwotICAgIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICBsZW5ndGg7Ci0gICAgc3RyZWFtX29mZnNldCAgICAgICAgICAgICAgIG5ld19maWxlX3NpemU7Ci0gICAgY29uc3QgY2hhciogICAgICAgICAgICAgICAgIGhpbnQ7Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLyBUaGlzIHRlbXBsYXRlIGFsbG93cyBCb29zdC5GaWxlc3lzdGVtIHBhdGhzIHRvIGJlIHNwZWNpZmllZCB3aGVuIGNyZWF0aW5nIG9yCi0vLyByZW9wZW5pbmcgYSBtZW1vcnkgbWFwcGVkIGZpbGUsIHdpdGhvdXQgY3JlYXRpbmcgYSBkZXBlbmRlbmNlIG9uCi0vLyBCb29zdC5GaWxlc3lzdGVtLiBQb3NzaWJsZSB2YWx1ZXMgb2YgUGF0aCBpbmNsdWRlIHN0ZDo6c3RyaW5nLAotLy8gbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGgsIG5kbmJvb3N0OjpmaWxlc3lzdGVtOjp3cGF0aCwgCi0vLyBhbmQgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpwYXRoICh1c2VkIHRvIHN0b3JlIGVpdGhlciBhIHN0ZDo6c3RyaW5nIG9yIGEKLS8vIHN0ZDo6d3N0cmluZykuCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotc3RydWN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyAKLSAgICA6IGRldGFpbDo6bWFwcGVkX2ZpbGVfcGFyYW1zX2Jhc2UgCi17Ci0gICAgdHlwZWRlZiBkZXRhaWw6Om1hcHBlZF9maWxlX3BhcmFtc19iYXNlIGJhc2VfdHlwZTsKLQotICAgIC8vIEZvciB3aWRlIHBhdGhzLCBpbnN0YW50aWF0ZSBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXMgCi0gICAgLy8gd2l0aCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6d3BhdGgKLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19zYW1lPFBhdGgsIHN0ZDo6d3N0cmluZz46OnZhbHVlKSk7Ci0jZW5kaWYKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXMoKSB7IH0KLQotICAgIC8vIENvbnN0cnVjdGlvbiBmcm9tIGEgUGF0aAotICAgIGV4cGxpY2l0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyhjb25zdCBQYXRoJiBwKSA6IHBhdGgocCkgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3Rpb24gZnJvbSBhIHBhdGggb2YgYSBkaWZmZXJlbnQgdHlwZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGhUPgotICAgIGV4cGxpY2l0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyhjb25zdCBQYXRoVCYgcCkgOiBwYXRoKHApIHsgfQotCi0gICAgLy8gQ29weSBjb25zdHJ1Y3RvcgotICAgIGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyhjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXMmIG90aGVyKQotICAgICAgICA6IGJhc2VfdHlwZShvdGhlciksIHBhdGgob3RoZXIucGF0aCkKLSAgICAgICAgeyB9Ci0KLSAgICAvLyBUZW1wbGF0ZWQgY29weSBjb25zdHJ1Y3RvcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGhUPgotICAgIGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyhjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aFQ+JiBvdGhlcikKLSAgICAgICAgOiBiYXNlX3R5cGUob3RoZXIpLCBwYXRoKG90aGVyLnBhdGgpCi0gICAgICAgIHsgfQotCi0gICAgdHlwZWRlZiBQYXRoICBwYXRoX3R5cGU7Ci0gICAgUGF0aCAgICAgICAgICBwYXRoOwotfTsKLQotdHlwZWRlZiBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8c3RkOjpzdHJpbmc+IG1hcHBlZF9maWxlX3BhcmFtczsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG1hcHBlZF9maWxlX3NvdXJjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgbWFwcGVkX2ZpbGVfc291cmNlIDogcHVibGljIG1hcHBlZF9maWxlX2Jhc2UgewotcHJpdmF0ZToKLSAgICBzdHJ1Y3Qgc2FmZV9ib29sX2hlbHBlciB7IGludCB4OyB9OwotICAgIHR5cGVkZWYgaW50IHNhZmVfYm9vbF9oZWxwZXI6OiogICAgICAgICAgICAgICAgIHNhZmVfYm9vbDsKLSAgICB0eXBlZGVmIGRldGFpbDo6bWFwcGVkX2ZpbGVfaW1wbCAgICAgICAgICAgICAgICBpbXBsX3R5cGU7Ci0gICAgdHlwZWRlZiBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8ZGV0YWlsOjpwYXRoPiAgcGFyYW1fdHlwZTsKLSAgICBmcmllbmQgY2xhc3MgbWFwcGVkX2ZpbGU7Ci0gICAgZnJpZW5kIGNsYXNzIGRldGFpbDo6bWFwcGVkX2ZpbGVfaW1wbDsKLSAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojppb3N0cmVhbXM6Om9wZXJhdGlvbnM8bWFwcGVkX2ZpbGVfc291cmNlPjsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogcHVibGljIHNvdXJjZV90YWcsCi0gICAgICAgICAgcHVibGljIGRpcmVjdF90YWcsCi0gICAgICAgICAgcHVibGljIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgY29uc3QgY2hhciogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzaXplX3R5cGUsIG1heF9sZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KC0xKSk7Ci0KLSAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yCi0gICAgbWFwcGVkX2ZpbGVfc291cmNlKCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBwYXJhbWV0ZXJzIG9iamVjdAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgbWFwcGVkX2ZpbGVfc291cmNlKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBsaXN0IG9mIHBhcmFtZXRlcnMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IG1hcHBlZF9maWxlX3NvdXJjZSggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBsZW5ndGggPSBtYXhfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmludG1heF90IG9mZnNldCA9IDAgKTsKLQotICAgIC8vIENvcHkgQ29uc3RydWN0b3IKLSAgICBtYXBwZWRfZmlsZV9zb3VyY2UoY29uc3QgbWFwcGVkX2ZpbGVfc291cmNlJiBvdGhlcik7Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tU3RyZWFtIGludGVyZmFjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIHZvaWQgb3Blbihjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aD4mIHApOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgIG5kbmJvb3N0OjppbnRtYXhfdCBvZmZzZXQgPSAwICk7Ci0KLSAgICBib29sIGlzX29wZW4oKSBjb25zdDsKLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgb3BlcmF0b3Igc2FmZV9ib29sKCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLSAgICBtYXBtb2RlIGZsYWdzKCkgY29uc3Q7Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tQ29udGFpbmVyIGludGVyZmFjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKLSAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0OwotICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0OwotCi0gICAgLy8tLS0tLS0tLS0tLS0tLVF1ZXJ5IGFkbWlzc2libGUgb2Zmc2V0cy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gUmV0dXJucyB0aGUgYWxsb2NhdGlvbiBncmFudWxhcml0eSBmb3IgdmlydHVhbCBtZW1vcnkuIFZhbHVlcyBwYXNzZWQKLSAgICAvLyBhcyBvZmZzZXRzIG11c3QgYmUgbXVsdGlwbGVzIG9mIHRoaXMgdmFsdWUuCi0gICAgc3RhdGljIGludCBhbGlnbm1lbnQoKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGluaXQoKTsKLSAgICB2b2lkIG9wZW5faW1wbChjb25zdCBwYXJhbV90eXBlJiBwKTsKLQotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPGltcGxfdHlwZT4gcGltcGxfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG1hcHBlZF9maWxlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgbWFwcGVkX2ZpbGUgOiBwdWJsaWMgbWFwcGVkX2ZpbGVfYmFzZSB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgbWFwcGVkX2ZpbGVfc291cmNlICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlX3R5cGU7Ci0gICAgdHlwZWRlZiBkZWxlZ2F0ZV90eXBlOjpzYWZlX2Jvb2wgICAgICAgICAgICAgICAgc2FmZV9ib29sOwotICAgIHR5cGVkZWYgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPGRldGFpbDo6cGF0aD4gIHBhcmFtX3R5cGU7Ci0gICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6aW9zdHJlYW1zOjpvcGVyYXRpb25zPG1hcHBlZF9maWxlID47Ci0gICAgZnJpZW5kIGNsYXNzIG1hcHBlZF9maWxlX3Npbms7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IHB1YmxpYyBzZWVrYWJsZV9kZXZpY2VfdGFnLAotICAgICAgICAgIHB1YmxpYyBkaXJlY3RfdGFnLAotICAgICAgICAgIHB1YmxpYyBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIHR5cGVkZWYgbWFwcGVkX2ZpbGVfc291cmNlOjpzaXplX3R5cGUgICAgICAgICAgIHNpemVfdHlwZTsKLSAgICB0eXBlZGVmIGNoYXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIGNvbnN0IGNoYXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc2l6ZV90eXBlLCBtYXhfbGVuZ3RoID0gZGVsZWdhdGVfdHlwZTo6bWF4X2xlbmd0aCk7Ci0KLSAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yCi0gICAgbWFwcGVkX2ZpbGUoKSB7IH0KLQotICAgIC8vIENvbnN0cnVzdG9yIHRha2luZyBhIHBhcmFtZXRlcnMgb2JqZWN0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBleHBsaWNpdCBtYXBwZWRfZmlsZShjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aD4mIHApOwotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgbGlzdCBvZiBwYXJhbWV0ZXJzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBtYXBwZWRfZmlsZSggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgICAgbWFwbW9kZSBmbGFncywKLSAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIGxlbmd0aCA9IG1heF9sZW5ndGgsCi0gICAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ID0gMCApOwotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgbGlzdCBvZiBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcgYSAKLSAgICAvLyBzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSAoZGVwcmVjYXRlZCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IG1hcHBlZF9maWxlKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX29mZnNldCBvZmZzZXQgPSAwICk7Ci0KLSAgICAvLyBDb3B5IENvbnN0cnVjdG9yCi0gICAgbWFwcGVkX2ZpbGUoY29uc3QgbWFwcGVkX2ZpbGUmIG90aGVyKTsKLQotICAgIC8vLS0tLS0tLS0tLS0tLS1Db252ZXJzaW9uIHRvIG1hcHBlZF9maWxlX3NvdXJjZSAoZGVwcmVjYXRlZCktLS0tLS0tLS0tLS0tLy8KLQotICAgIG9wZXJhdG9yIG1hcHBlZF9maWxlX3NvdXJjZSYoKSB7IHJldHVybiBkZWxlZ2F0ZV87IH0KLSAgICBvcGVyYXRvciBjb25zdCBtYXBwZWRfZmlsZV9zb3VyY2UmKCkgY29uc3QgeyByZXR1cm4gZGVsZWdhdGVfOyB9Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tU3RyZWFtIGludGVyZmFjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIHBhcmFtZXRlcnMgb2JqZWN0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgbGlzdCBvZiBwYXJhbWV0ZXJzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICBtYXBtb2RlIG1vZGUsCi0gICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ID0gMCApOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBsaXN0IG9mIHBhcmFtZXRlcnMsIGluY2x1ZGluZyBhIAotICAgIC8vIHN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIChkZXByZWNhdGVkKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0KLSAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQsCi0gICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ID0gMCApOwotCi0gICAgYm9vbCBpc19vcGVuKCkgY29uc3QgeyByZXR1cm4gZGVsZWdhdGVfLmlzX29wZW4oKTsgfQotICAgIHZvaWQgY2xvc2UoKSB7IGRlbGVnYXRlXy5jbG9zZSgpOyB9Ci0gICAgb3BlcmF0b3Igc2FmZV9ib29sKCkgY29uc3QgeyByZXR1cm4gZGVsZWdhdGVfOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZGVsZWdhdGVfOyB9Ci0gICAgbWFwbW9kZSBmbGFncygpIGNvbnN0IHsgcmV0dXJuIGRlbGVnYXRlXy5mbGFncygpOyB9Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tQ29udGFpbmVyIGludGVyZmFjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGRlbGVnYXRlXy5zaXplKCk7IH0KLSAgICBjaGFyKiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogY29uc3RfZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGRlbGVnYXRlXy5kYXRhKCk7IH0KLSAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKTsgfQotICAgIGNvbnN0X2l0ZXJhdG9yIGNvbnN0X2JlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfZGF0YSgpOyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gZGF0YSgpICsgc2l6ZSgpOyB9Ci0gICAgY29uc3RfaXRlcmF0b3IgY29uc3RfZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfZGF0YSgpICsgc2l6ZSgpOyB9Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tUXVlcnkgYWRtaXNzaWJsZSBvZmZzZXRzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyBSZXR1cm5zIHRoZSBhbGxvY2F0aW9uIGdyYW51bGFyaXR5IGZvciB2aXJ0dWFsIG1lbW9yeS4gVmFsdWVzIHBhc3NlZAotICAgIC8vIGFzIG9mZnNldHMgbXVzdCBiZSBtdWx0aXBsZXMgb2YgdGhpcyB2YWx1ZS4KLSAgICBzdGF0aWMgaW50IGFsaWdubWVudCgpIHsgcmV0dXJuIG1hcHBlZF9maWxlX3NvdXJjZTo6YWxpZ25tZW50KCk7IH0KLQotICAgIC8vLS0tLS0tLS0tLS0tLS1GaWxlIGFjY2Vzcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgdm9pZCByZXNpemUoc3RyZWFtX29mZnNldCBuZXdfc2l6ZSk7Ci1wcml2YXRlOgotICAgIGRlbGVnYXRlX3R5cGUgZGVsZWdhdGVfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG1hcHBlZF9maWxlX3NpbmstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgbWFwcGVkX2ZpbGVfc2luayA6IHByaXZhdGUgbWFwcGVkX2ZpbGUgewotcHVibGljOgotICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6Omlvc3RyZWFtczo6b3BlcmF0aW9uczxtYXBwZWRfZmlsZV9zaW5rPjsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6bWFwbW9kZTsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6cmVhZG9ubHk7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OnJlYWR3cml0ZTsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6cHJpdjsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6Y2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IHB1YmxpYyBzaW5rX3RhZywKLSAgICAgICAgICBwdWJsaWMgZGlyZWN0X3RhZywKLSAgICAgICAgICBwdWJsaWMgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6c2l6ZV90eXBlOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjppdGVyYXRvcjsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6bWF4X2xlbmd0aDsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6aXNfb3BlbjsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6Y2xvc2U7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6Om9wZXJhdG9yIHNhZmVfYm9vbDsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6b3BlcmF0b3IgITsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6ZmxhZ3M7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OnNpemU7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OmRhdGE7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OmJlZ2luOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjplbmQ7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OmFsaWdubWVudDsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6cmVzaXplOwotCi0gICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgIG1hcHBlZF9maWxlX3NpbmsoKSB7IH0KLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIHBhcmFtZXRlcnMgb2JqZWN0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBleHBsaWNpdCBtYXBwZWRfZmlsZV9zaW5rKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBsaXN0IG9mIHBhcmFtZXRlcnMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IG1hcHBlZF9maWxlX3NpbmsoIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIGxlbmd0aCA9IG1heF9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmludG1heF90IG9mZnNldCA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwbW9kZSBmbGFncyA9IHJlYWR3cml0ZSApOwotCi0gICAgLy8gQ29weSBDb25zdHJ1Y3RvcgotICAgIG1hcHBlZF9maWxlX3NpbmsoY29uc3QgbWFwcGVkX2ZpbGVfc2luayYgb3RoZXIpOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBwYXJhbWV0ZXJzIG9iamVjdAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCk7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIGxpc3Qgb2YgcGFyYW1ldGVycwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgc2l6ZV90eXBlIGxlbmd0aCA9IG1heF9sZW5ndGgsCi0gICAgICAgICAgICAgICBuZG5ib29zdDo6aW50bWF4X3Qgb2Zmc2V0ID0gMCwKLSAgICAgICAgICAgICAgIG1hcG1vZGUgZmxhZ3MgPSByZWFkd3JpdGUgKTsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgbWFwcGVkX2ZpbGVfc291cmNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci1tYXBwZWRfZmlsZV9zb3VyY2U6Om1hcHBlZF9maWxlX3NvdXJjZShjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aD4mIHApCi17IGluaXQoKTsgb3BlbihwKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotbWFwcGVkX2ZpbGVfc291cmNlOjptYXBwZWRfZmlsZV9zb3VyY2UoIAotICAgIGNvbnN0IFBhdGgmIHBhdGgsIHNpemVfdHlwZSBsZW5ndGgsIG5kbmJvb3N0OjppbnRtYXhfdCBvZmZzZXQpCi17IGluaXQoKTsgb3BlbihwYXRoLCBsZW5ndGgsIG9mZnNldCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLXZvaWQgbWFwcGVkX2ZpbGVfc291cmNlOjpvcGVuKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCkKLXsKLSAgICBwYXJhbV90eXBlIHBhcmFtcyhwKTsKLSAgICBpZiAocGFyYW1zLmZsYWdzKSB7Ci0gICAgICAgIGlmIChwYXJhbXMuZmxhZ3MgIT0gbWFwcGVkX2ZpbGU6OnJlYWRvbmx5KQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiaW52YWxpZCBmbGFncyIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAocGFyYW1zLm1vZGUgJiBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImludmFsaWQgbW9kZSIpKTsKLSAgICAgICAgcGFyYW1zLm1vZGUgfD0gTkROQk9PU1RfSU9TOjppbjsKLSAgICB9Ci0gICAgb3Blbl9pbXBsKHBhcmFtcyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci12b2lkIG1hcHBlZF9maWxlX3NvdXJjZTo6b3BlbigKLSAgICBjb25zdCBQYXRoJiBwYXRoLCBzaXplX3R5cGUgbGVuZ3RoLCBuZG5ib29zdDo6aW50bWF4X3Qgb2Zmc2V0KQotewotICAgIHBhcmFtX3R5cGUgcChwYXRoKTsKLSAgICBwLmxlbmd0aCA9IGxlbmd0aDsKLSAgICBwLm9mZnNldCA9IG9mZnNldDsKLSAgICBvcGVuKHApOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIG1hcHBlZF9maWxlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotbWFwcGVkX2ZpbGU6Om1hcHBlZF9maWxlKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCkKLXsgb3BlbihwKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotbWFwcGVkX2ZpbGU6Om1hcHBlZF9maWxlKCAKLSAgICBjb25zdCBQYXRoJiBwYXRoLCBtYXBtb2RlIGZsYWdzLCAKLSAgICBzaXplX3R5cGUgbGVuZ3RoLCBzdHJlYW1fb2Zmc2V0IG9mZnNldCApCi17IG9wZW4ocGF0aCwgZmxhZ3MsIGxlbmd0aCwgb2Zmc2V0KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotbWFwcGVkX2ZpbGU6Om1hcHBlZF9maWxlKCAKLSAgICBjb25zdCBQYXRoJiBwYXRoLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUsIAotICAgIHNpemVfdHlwZSBsZW5ndGgsIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ICkKLXsgb3BlbihwYXRoLCBtb2RlLCBsZW5ndGgsIG9mZnNldCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLXZvaWQgbWFwcGVkX2ZpbGU6Om9wZW4oY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKQoteyBkZWxlZ2F0ZV8ub3Blbl9pbXBsKHApOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci12b2lkIG1hcHBlZF9maWxlOjpvcGVuKCAKLSAgICBjb25zdCBQYXRoJiBwYXRoLCBtYXBtb2RlIGZsYWdzLCAKLSAgICBzaXplX3R5cGUgbGVuZ3RoLCBzdHJlYW1fb2Zmc2V0IG9mZnNldCApCi17Ci0gICAgcGFyYW1fdHlwZSBwKHBhdGgpOwotICAgIHAuZmxhZ3MgPSBmbGFnczsKLSAgICBwLmxlbmd0aCA9IGxlbmd0aDsKLSAgICBwLm9mZnNldCA9IG9mZnNldDsKLSAgICBvcGVuKHApOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotdm9pZCBtYXBwZWRfZmlsZTo6b3BlbiggCi0gICAgY29uc3QgUGF0aCYgcGF0aCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlLCAKLSAgICBzaXplX3R5cGUgbGVuZ3RoLCBzdHJlYW1fb2Zmc2V0IG9mZnNldCApCi17Ci0gICAgcGFyYW1fdHlwZSBwKHBhdGgpOwotICAgIHAubW9kZSA9IG1vZGU7Ci0gICAgcC5sZW5ndGggPSBsZW5ndGg7Ci0gICAgcC5vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgb3BlbihwKTsKLX0KLQotaW5saW5lIGNoYXIqIG1hcHBlZF9maWxlOjpkYXRhKCkgY29uc3QgCi17IHJldHVybiAoZmxhZ3MoKSAhPSByZWFkb25seSkgPyBjb25zdF9jYXN0PGNoYXIqPihkZWxlZ2F0ZV8uZGF0YSgpKSA6IDA7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBtYXBwZWRfZmlsZV9zaW5rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLW1hcHBlZF9maWxlX3Npbms6Om1hcHBlZF9maWxlX3NpbmsoY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKQoteyBvcGVuKHApOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci1tYXBwZWRfZmlsZV9zaW5rOjptYXBwZWRfZmlsZV9zaW5rKAotICAgIGNvbnN0IFBhdGgmIHBhdGgsIHNpemVfdHlwZSBsZW5ndGgsCi0gICAgbmRuYm9vc3Q6OmludG1heF90IG9mZnNldCwgbWFwbW9kZSBmbGFncyApCi17IG9wZW4ocGF0aCwgbGVuZ3RoLCBvZmZzZXQsIGZsYWdzKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotdm9pZCBtYXBwZWRfZmlsZV9zaW5rOjpvcGVuKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCkKLXsKLSAgICBwYXJhbV90eXBlIHBhcmFtcyhwKTsKLSAgICBpZiAocGFyYW1zLmZsYWdzKSB7Ci0gICAgICAgIGlmIChwYXJhbXMuZmxhZ3MgJiBtYXBwZWRfZmlsZTo6cmVhZG9ubHkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJpbnZhbGlkIGZsYWdzIikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChwYXJhbXMubW9kZSAmIE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJpbnZhbGlkIG1vZGUiKSk7Ci0gICAgICAgIHBhcmFtcy5tb2RlIHw9IE5ETkJPT1NUX0lPUzo6b3V0OwotICAgIH0KLSAgICBtYXBwZWRfZmlsZTo6b3BlbihwYXJhbXMpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotdm9pZCBtYXBwZWRfZmlsZV9zaW5rOjpvcGVuKAotICAgIGNvbnN0IFBhdGgmIHBhdGgsIHNpemVfdHlwZSBsZW5ndGgsCi0gICAgbmRuYm9vc3Q6OmludG1heF90IG9mZnNldCwgbWFwbW9kZSBmbGFncyApCi17Ci0gICAgcGFyYW1fdHlwZSBwKHBhdGgpOwotICAgIHAuZmxhZ3MgPSBmbGFnczsKLSAgICBwLmxlbmd0aCA9IGxlbmd0aDsKLSAgICBwLm9mZnNldCA9IG9mZnNldDsKLSAgICBvcGVuKHApOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVNwZWNpYWxpemF0aW9uIG9mIGRpcmVjdF9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3BlcmF0aW9uczxtYXBwZWRfZmlsZV9zb3VyY2U+Ci0gICAgOiBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNsb3NlX2ltcGw8Y2xvc2FibGVfdGFnPgotewotICAgIHN0YXRpYyBzdGQ6OnBhaXI8Y2hhciosIGNoYXIqPgotICAgIGlucHV0X3NlcXVlbmNlKG1hcHBlZF9maWxlX3NvdXJjZSYgc3JjKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCBjb25zdF9jYXN0PGNoYXIqPihzcmMuYmVnaW4oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4oc3JjLmVuZCgpKSApOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcGVyYXRpb25zPG1hcHBlZF9maWxlPgotICAgIDogbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjbG9zZV9pbXBsPGNsb3NhYmxlX3RhZz4KLXsKLSAgICBzdGF0aWMgc3RkOjpwYWlyPGNoYXIqLCBjaGFyKj4KLSAgICBpbnB1dF9zZXF1ZW5jZShtYXBwZWRfZmlsZSYgZmlsZSkKLSAgICB7IAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZmlsZS5iZWdpbigpLCBmaWxlLmVuZCgpKTsgCi0gICAgfQotICAgIHN0YXRpYyBzdGQ6OnBhaXI8Y2hhciosIGNoYXIqPgotICAgIG91dHB1dF9zZXF1ZW5jZShtYXBwZWRfZmlsZSYgZmlsZSkKLSAgICB7IAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZmlsZS5iZWdpbigpLCBmaWxlLmVuZCgpKTsgCi0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9wZXJhdGlvbnM8bWFwcGVkX2ZpbGVfc2luaz4KLSAgICA6IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y2xvc2VfaW1wbDxjbG9zYWJsZV90YWc+Ci17Ci0gICAgc3RhdGljIHN0ZDo6cGFpcjxjaGFyKiwgY2hhcio+Ci0gICAgb3V0cHV0X3NlcXVlbmNlKG1hcHBlZF9maWxlX3NpbmsmIHNpbmspCi0gICAgeyAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNpbmsuYmVnaW4oKSwgc2luay5lbmQoKSk7IAotICAgIH0KLX07Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG1hcG1vZGUgb3BlcmF0b3JzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotaW5saW5lIG1hcHBlZF9maWxlOjptYXBtb2RlIAotb3BlcmF0b3J8KG1hcHBlZF9maWxlOjptYXBtb2RlIGEsIG1hcHBlZF9maWxlOjptYXBtb2RlIGIpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PG1hcHBlZF9maWxlOjptYXBtb2RlPgotICAgICAgICAoc3RhdGljX2Nhc3Q8aW50PihhKSB8IHN0YXRpY19jYXN0PGludD4oYikpOwotfQotCi1pbmxpbmUgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgCi1vcGVyYXRvciYobWFwcGVkX2ZpbGU6Om1hcG1vZGUgYSwgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgYikKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bWFwcGVkX2ZpbGU6Om1hcG1vZGU+Ci0gICAgICAgIChzdGF0aWNfY2FzdDxpbnQ+KGEpICYgc3RhdGljX2Nhc3Q8aW50PihiKSk7Ci19Ci0KLWlubGluZSBtYXBwZWRfZmlsZTo6bWFwbW9kZSAKLW9wZXJhdG9yXihtYXBwZWRfZmlsZTo6bWFwbW9kZSBhLCBtYXBwZWRfZmlsZTo6bWFwbW9kZSBiKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxtYXBwZWRfZmlsZTo6bWFwbW9kZT4KLSAgICAgICAgKHN0YXRpY19jYXN0PGludD4oYSkgXiBzdGF0aWNfY2FzdDxpbnQ+KGIpKTsKLX0KLQotaW5saW5lIG1hcHBlZF9maWxlOjptYXBtb2RlCi1vcGVyYXRvcn4obWFwcGVkX2ZpbGU6Om1hcG1vZGUgYSkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bWFwcGVkX2ZpbGU6Om1hcG1vZGU+KH5zdGF0aWNfY2FzdDxpbnQ+KGEpKTsKLX0KLQotaW5saW5lIG1hcHBlZF9maWxlOjptYXBtb2RlIAotb3BlcmF0b3J8PShtYXBwZWRfZmlsZTo6bWFwbW9kZSYgYSwgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgYikKLXsKLSAgICByZXR1cm4gYSA9IGEgfCBiOwotfQotCi1pbmxpbmUgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgCi1vcGVyYXRvciY9KG1hcHBlZF9maWxlOjptYXBtb2RlJiBhLCBtYXBwZWRfZmlsZTo6bWFwbW9kZSBiKQotewotICAgIHJldHVybiBhID0gYSAmIGI7Ci19Ci0KLWlubGluZSBtYXBwZWRfZmlsZTo6bWFwbW9kZSAKLW9wZXJhdG9yXj0obWFwcGVkX2ZpbGU6Om1hcG1vZGUmIGEsIG1hcHBlZF9maWxlOjptYXBtb2RlIGIpCi17Ci0gICAgcmV0dXJuIGEgPSBhIF4gYjsKLX0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHA+IC8vIHBvcHMgYWJpX3N1ZmZpeC5ocHAgcHJhZ21hcwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTUFQUEVEX0ZJTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbnVsbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbnVsbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YWJkOWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL251bGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDQtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEluc3BpcmVkIGJ5IERhcnlsZSBXYWxrZXIncyBudWxsYnVmIGZyb20gaGlzIE1vcmUgSS9PIHN1Ym1pc3Npb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05VTExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19OVUxMX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+IC8vIG9wZW5tb2RlLCBzdHJlYW1zaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgTW9kZT4KLWNsYXNzIGJhc2ljX251bGxfZGV2aWNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBwdWJsaWMgTW9kZSwKLSAgICAgICAgICBwdWJsaWMgZGV2aWNlX3RhZywKLSAgICAgICAgICBwdWJsaWMgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChDaCosIHN0ZDo6c3RyZWFtc2l6ZSkgeyByZXR1cm4gMDsgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBDaCosIHN0ZDo6c3RyZWFtc2l6ZSBuKSB7IHJldHVybiBuOyB9Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCwgTkROQk9PU1RfSU9TOjpzZWVrZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkgCi0gICAgeyByZXR1cm4gLTE7IH0KLSAgICB2b2lkIGNsb3NlKCkgeyB9Ci0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlKSB7IH0KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotc3RydWN0IGJhc2ljX251bGxfc291cmNlIDogcHJpdmF0ZSBiYXNpY19udWxsX2RldmljZTxDaCwgaW5wdXQ+IHsKLSAgICB0eXBlZGVmIENoICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHNvdXJjZV90YWcgIGNhdGVnb3J5OwotICAgIHVzaW5nIGJhc2ljX251bGxfZGV2aWNlPENoLCBpbnB1dD46OnJlYWQ7Ci0gICAgdXNpbmcgYmFzaWNfbnVsbF9kZXZpY2U8Q2gsIGlucHV0Pjo6Y2xvc2U7Ci19OwotCi10eXBlZGVmIGJhc2ljX251bGxfc291cmNlPGNoYXI+ICAgICBudWxsX3NvdXJjZTsKLXR5cGVkZWYgYmFzaWNfbnVsbF9zb3VyY2U8d2NoYXJfdD4gIHdudWxsX3NvdXJjZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgYmFzaWNfbnVsbF9zaW5rIDogcHJpdmF0ZSBiYXNpY19udWxsX2RldmljZTxDaCwgb3V0cHV0PiB7Ci0gICAgdHlwZWRlZiBDaCAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgc2lua190YWcgIGNhdGVnb3J5OwotICAgIHVzaW5nIGJhc2ljX251bGxfZGV2aWNlPENoLCBvdXRwdXQ+Ojp3cml0ZTsKLSAgICB1c2luZyBiYXNpY19udWxsX2RldmljZTxDaCwgb3V0cHV0Pjo6Y2xvc2U7Ci19OwotCi10eXBlZGVmIGJhc2ljX251bGxfc2luazxjaGFyPiAgICAgbnVsbF9zaW5rOwotdHlwZWRlZiBiYXNpY19udWxsX3Npbms8d2NoYXJfdD4gIHdudWxsX3Npbms7Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTlVMTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9hZ2dyZWdhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2FnZ3JlZ2F0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYmEwNWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2FnZ3JlZ2F0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0FHR1JFR0FURV9GSUxURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19BR0dSRUdBVEVfRklMVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29weSwgbWluLgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFja19pbnNlcnRlcgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4gICAgICAvLyBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgICAgLy8gb3Blbm1vZGUsIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+ICAgICAgICAgICAvLyBjaGVja19lb2YgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3dyaXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogYWdncmVnYXRlX2ZpbHRlci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIENoIC0gVGhlIGNoYXJhY3RlciB0eXBlLgotLy8gICAgICBBbGxvYyAtIFRoZSBhbGxvY2F0b3IgdHlwZS4KLS8vIERlc2NyaXB0aW9uOiBVdGlsaXR5IGZvciBkZWZpbmluZyBEdWFsVXNlRmlsdGVycyB3aGljaCBmaWx0ZXIgYW4KLS8vICAgICAgZW50aXJlIHN0cmVhbSBhdCBvbmNlLiBUbyB1c2UsIG92ZXJyaWRlIHRoZSBwcm90ZWN0ZWQgdmlydHVhbAotLy8gICAgICBtZW1iZXIgZG9fZmlsdGVyLgotLy8gTm90ZTogVGhpcyBmaWx0ZXIgc2hvdWxkIG5vdCBiZSBjb3BpZWQgd2hpbGUgaXQgaXMgaW4gdXNlLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+Ci1jbGFzcyBhZ2dyZWdhdGVfZmlsdGVyICB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDaCBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogZHVhbF91c2UsCi0gICAgICAgICAgZmlsdGVyX3RhZywKLSAgICAgICAgICBtdWx0aWNoYXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgYWdncmVnYXRlX2ZpbHRlcigpIDogcHRyXygwKSwgc3RhdGVfKDApIHsgfQotICAgIHZpcnR1YWwgfmFnZ3JlZ2F0ZV9maWx0ZXIoKSB7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCghKHN0YXRlXyAmIGZfd3JpdGUpKTsKLSAgICAgICAgc3RhdGVfIHw9IGZfcmVhZDsKLSAgICAgICAgaWYgKCEoc3RhdGVfICYgZl9lb2YpKQotICAgICAgICAgICAgZG9fcmVhZChzcmMpOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0KLSAgICAgICAgICAgIChzdGQ6Om1pbikobiwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihkYXRhXy5zaXplKCkgLSBwdHJfKSk7Ci0gICAgICAgIGlmIChhbXQpIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpOjpjb3B5KHMsICZkYXRhX1twdHJfXSwgYW10KTsKLSAgICAgICAgICAgIHB0cl8gKz0gYW10OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBkZXRhaWw6OmNoZWNrX2VvZihhbXQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCEoc3RhdGVfICYgZl9yZWFkKSk7Ci0gICAgICAgIHN0YXRlXyB8PSBmX3dyaXRlOwotICAgICAgICBkYXRhXy5pbnNlcnQoZGF0YV8uZW5kKCksIHMsIHMgKyBuKTsKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmIHNpbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICBpZiAoKHN0YXRlXyAmIGZfcmVhZCkgIT0gMCAmJiB3aGljaCA9PSBORE5CT09TVF9JT1M6OmluKQotICAgICAgICAgICAgY2xvc2VfaW1wbCgpOwotICAgICAgICBpZiAoKHN0YXRlXyAmIGZfd3JpdGUpICE9IDAgJiYgd2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgdmVjdG9yX3R5cGUgZmlsdGVyZWQ7Ci0gICAgICAgICAgICAgICAgZG9fZmlsdGVyKGRhdGFfLCBmaWx0ZXJlZCk7Ci0gICAgICAgICAgICAgICAgZG9fd3JpdGUoIAotICAgICAgICAgICAgICAgICAgICBzaW5rLCAmZmlsdGVyZWRbMF0sCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oZmlsdGVyZWQuc2l6ZSgpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPENoLCBBbGxvYz4gICAgICAgICAgIHZlY3Rvcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yX3R5cGU6OnNpemVfdHlwZSAgc2l6ZV90eXBlOwotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZG9fZmlsdGVyKGNvbnN0IHZlY3Rvcl90eXBlJiBzcmMsIHZlY3Rvcl90eXBlJiBkZXN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRvX2Nsb3NlKCkgeyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgdm9pZCBkb19yZWFkKFNvdXJjZSYgc3JjKQotICAgIHsKLSAgICAgICAgdXNpbmcgc3RkOjpzdHJlYW1zaXplOwotICAgICAgICB2ZWN0b3JfdHlwZSBkYXRhOwotICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplICBzaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemU7Ci0gICAgICAgICAgICBDaCAgICAgICAgICAgICAgICAgICAgIGJ1ZltzaXplXTsKLSAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAgICAgICAgYW10OwotICAgICAgICAgICAgaWYgKChhbXQgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZWFkKHNyYywgYnVmLCBzaXplKSkgPT0gLTEpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkYXRhLmluc2VydChkYXRhLmVuZCgpLCBidWYsIGJ1ZiArIGFtdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZG9fZmlsdGVyKGRhdGEsIGRhdGFfKTsKLSAgICAgICAgc3RhdGVfIHw9IGZfZW9mOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgdm9pZCBkb193cml0ZShTaW5rJiBzaW5rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKSAKLSAgICB7IAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8U2luaz46OnR5cGUgIGNhdGVnb3J5OwotICAgICAgICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+ICAgICAgICAgICAgIGNhbl93cml0ZTsKLSAgICAgICAgZG9fd3JpdGUoc2luaywgcywgbiwgY2FuX3dyaXRlKCkpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgZG9fd3JpdGUoU2luayYgc2luaywgY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbiwgbXBsOjp0cnVlXykgCi0gICAgeyBpb3N0cmVhbXM6OndyaXRlKHNpbmssIHMsIG4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgZG9fd3JpdGUoU2luayYsIGNvbnN0IGNoYXJfdHlwZSosIHN0ZDo6c3RyZWFtc2l6ZSwgbXBsOjpmYWxzZV8pIHsgfQotCi0gICAgdm9pZCBjbG9zZV9pbXBsKCkKLSAgICB7Ci0gICAgICAgIGRhdGFfLmNsZWFyKCk7Ci0gICAgICAgIHB0cl8gPSAwOwotICAgICAgICBzdGF0ZV8gPSAwOwotICAgICAgICBkb19jbG9zZSgpOwotICAgIH0KLQotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl9yZWFkICAgPSAxLAotICAgICAgICBmX3dyaXRlICA9IGZfcmVhZCA8PCAxLAotICAgICAgICBmX2VvZiAgICA9IGZfd3JpdGUgPDwgMQotICAgIH07Ci0KLSAgICAvLyBOb3RlOiB0eXBpY2FsbHkgd2lsbCBub3QgYmUgY29waWVkIHdoaWxlIHZlY3RvciBjb250YWlucyBkYXRhLgotICAgIHZlY3Rvcl90eXBlICBkYXRhXzsKLSAgICBzaXplX3R5cGUgICAgcHRyXzsKLSAgICBpbnQgICAgICAgICAgc3RhdGVfOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGFnZ3JlZ2F0ZV9maWx0ZXIsIDEpCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19BR0dSRUdBVEVfRklMVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2J6aXAyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9iemlwMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNmM0ZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2J6aXAyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxNCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gTm90ZTogY3VzdG9tIGFsbG9jYXRvcnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gVkM2LCBzaW5jZSB0aGF0IGNvbXBpbGVyCi0vLyBoYWQgdHJvdWJsZSBmaW5kaW5nIHRoZSBmdW5jdGlvbiB6bGliX2Jhc2U6OmRvX2luaXQuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JaSVAyX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQlpJUDJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPGNhc3NlcnQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8bmV3PiAgICAgICAgICAgICAgIC8vIGJhZF9hbGxvYy4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gTVNWQywgU1RBVElDX0NPTlNUQU5ULCBERURVQ0VEX1RZUEVOQU1FLCBESU5LVU0uCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb25zdGFudHMuaHBwPiAgIC8vIGJ1ZmZlciBzaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYnppcDIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2R5bl9saW5rLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIGZhaWx1cmUsIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9zeW1tZXRyaWMuaHBwPiAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+ICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPiAgICAgCi0KLS8vIE11c3QgY29tZSBsYXN0LgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjUxIDQyMzEgNDY2MCkKLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4gICAgICAgICAgIAotCi0vLyBUZW1wb3JhcnkgZml4LgotI3VuZGVmIHNtYWxsCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgYnppcDIgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIFR5cGVkZWZzLgotCi10eXBlZGVmIHZvaWQqICgqYWxsb2NfZnVuYykodm9pZCosIGludCwgaW50KTsKLXR5cGVkZWYgdm9pZCAoKmZyZWVfZnVuYykodm9pZCosIHZvaWQqKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBTdGF0dXMgY29kZXMKLQotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBvazsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgcnVuX29rOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBmbHVzaF9vazsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZmluaXNoX29rOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBzdHJlYW1fZW5kOyAgICAKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgc2VxdWVuY2VfZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IHBhcmFtX2Vycm9yOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBtZW1fZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGRhdGFfZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGRhdGFfZXJyb3JfbWFnaWM7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGlvX2Vycm9yOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCB1bmV4cGVjdGVkX2VvZjsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgb3V0YnVmZl9mdWxsOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBjb25maWdfZXJyb3I7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQWN0aW9uIGNvZGVzCi0KLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZmluaXNoOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBydW47Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZXMKLQotY29uc3QgaW50IGRlZmF1bHRfYmxvY2tfc2l6ZSAgID0gOTsKLWNvbnN0IGludCBkZWZhdWx0X3dvcmtfZmFjdG9yICA9IDMwOwotY29uc3QgYm9vbCBkZWZhdWx0X3NtYWxsICAgICAgID0gZmFsc2U7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBiemlwMi4gCi0KLS8vCi0vLyBDbGFzcyBuYW1lOiBiemlwMl9wYXJhbXMuCi0vLyBEZXNjcmlwdGlvbjogRW5jYXBzdWxhdGVzIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBkZWZsYXRlSW5pdDIKLS8vICAgICAgdG8gY3VzdG9taXplIGNvbXByZXNzaW9uLgotLy8KLXN0cnVjdCBiemlwMl9wYXJhbXMgewotCi0gICAgLy8gTm9uLWV4cGxpY2l0IGNvbnN0cnVjdG9yIGZvciBjb21wcmVzc2lvbi4KLSAgICBiemlwMl9wYXJhbXMoIGludCBibG9ja19zaXplICAgPSBiemlwMjo6ZGVmYXVsdF9ibG9ja19zaXplLAotICAgICAgICAgICAgICAgICAgaW50IHdvcmtfZmFjdG9yICA9IGJ6aXAyOjpkZWZhdWx0X3dvcmtfZmFjdG9yICkKLSAgICAgICAgOiBibG9ja19zaXplKGJsb2NrX3NpemUpLCB3b3JrX2ZhY3Rvcih3b3JrX2ZhY3RvcikKLSAgICAgICAgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciBmb3IgZGVjb21wcmVzc2lvbi4KLSAgICBiemlwMl9wYXJhbXMoYm9vbCBzbWFsbCkKLSAgICAgICAgOiBzbWFsbChzbWFsbCksIHdvcmtfZmFjdG9yKDApCi0gICAgICAgIHsgfQotCi0gICAgdW5pb24gewotICAgICAgICBpbnQgICBibG9ja19zaXplOyAgICAvLyBGb3IgY29tcHJlc3Npb24uCi0gICAgICAgIGJvb2wgIHNtYWxsOyAgICAgICAgIC8vIEZvciBkZWNvbXByZXNzaW9uLgotICAgIH07Ci0gICAgaW50ICAgICAgIHdvcmtfZmFjdG9yOwotfTsKLQotLy8KLS8vIENsYXNzIG5hbWU6IGJ6aXAyX2Vycm9yLgotLy8gRGVzY3JpcHRpb246IFN1YmNsYXNzIG9mIHN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmUgdGhyb3duIHRvIGluZGljYXRlCi0vLyAgICAgYnppcDIgZXJyb3JzIG90aGVyIHRoYW4gb3V0LW9mLW1lbW9yeSBjb25kaXRpb25zLgotLy8KLWNsYXNzIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGJ6aXAyX2Vycm9yIDogcHVibGljIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBiemlwMl9lcnJvcihpbnQgZXJyb3IpOwotICAgIGludCBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIGVycm9yXzsgfQotICAgIHN0YXRpYyB2b2lkIGNoZWNrIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKGludCBlcnJvcik7Ci1wcml2YXRlOgotICAgIGludCBlcnJvcl87Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1zdHJ1Y3QgYnppcDJfYWxsb2NhdG9yX3RyYWl0cyB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8Y2hhcj46Om90aGVyIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgc3RkOjphbGxvY2F0b3I8Y2hhcj4gdHlwZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFsbG9jLAotICAgICAgICAgIHR5cGVuYW1lIEJhc2UgPSAvLyBWQzYgd29ya2Fyb3VuZCAoQzI1MTYpCi0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYnppcDJfYWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OnR5cGUgPgotc3RydWN0IGJ6aXAyX2FsbG9jYXRvciA6IHByaXZhdGUgQmFzZSB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmFzZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLXB1YmxpYzoKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgY3VzdG9tID0gCi0gICAgICAgICghaXNfc2FtZTxzdGQ6OmFsbG9jYXRvcjxjaGFyPiwgQmFzZT46OnZhbHVlKSk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiemlwMl9hbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dHlwZSBhbGxvY2F0b3JfdHlwZTsKLSAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGUodm9pZCogc2VsZiwgaW50IGl0ZW1zLCBpbnQgc2l6ZSk7Ci0gICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZSh2b2lkKiBzZWxmLCB2b2lkKiBhZGRyZXNzKTsKLX07Ci0KLWNsYXNzIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGJ6aXAyX2Jhc2UgIHsgCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLXByb3RlY3RlZDoKLSAgICBiemlwMl9iYXNlKGNvbnN0IGJ6aXAyX3BhcmFtcyYgcGFyYW1zKTsKLSAgICB+YnppcDJfYmFzZSgpOwotICAgIGJ6aXAyX3BhcmFtcyYgcGFyYW1zKCkgeyByZXR1cm4gcGFyYW1zXzsgfQotICAgIGJvb2wmIHJlYWR5KCkgeyByZXR1cm4gcmVhZHlfOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IAotICAgIHZvaWQgaW5pdCggYm9vbCBjb21wcmVzcywKLSAgICAgICAgICAgICAgIGJ6aXAyX2FsbG9jYXRvcjxBbGxvYz4mIGFsbG9jICkKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbCBjdXN0b20gPSBiemlwMl9hbGxvY2F0b3I8QWxsb2M+OjpjdXN0b207Ci0gICAgICAgICAgICBkb19pbml0KCBjb21wcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tID8gYnppcDJfYWxsb2NhdG9yPEFsbG9jPjo6YWxsb2NhdGUgOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbSA/IGJ6aXAyX2FsbG9jYXRvcjxBbGxvYz46OmRlYWxsb2NhdGUgOiAwLAotICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICBjdXN0b20gPyAmYWxsb2MgOiAwICk7Ci0gICAgICAgIH0KLSAgICB2b2lkIGJlZm9yZSggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgICAgICAgICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kICk7Ci0gICAgdm9pZCBhZnRlcihjb25zdCBjaGFyKiYgc3JjX2JlZ2luLCBjaGFyKiYgZGVzdF9iZWdpbik7Ci0gICAgaW50IGNoZWNrX2VuZChjb25zdCBjaGFyKiBzcmNfYmVnaW4sIGNvbnN0IGNoYXIqIGRlc3RfYmVnaW4pOwotICAgIGludCBjb21wcmVzcyhpbnQgYWN0aW9uKTsKLSAgICBpbnQgZGVjb21wcmVzcygpOwotICAgIHZvaWQgZW5kKGJvb2wgY29tcHJlc3MpOwotcHJpdmF0ZToKLSAgICB2b2lkIGRvX2luaXQoIGJvb2wgY29tcHJlc3MsIAotICAgICAgICAgICAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgICAgICAgICAgICBiemlwMjo6YWxsb2NfZnVuYywgCi0gICAgICAgICAgICAgICAgICAgICAgYnppcDI6OmZyZWVfZnVuYywgCi0gICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIHZvaWQqIGRlcml2ZWQgKTsKLSAgICBiemlwMl9wYXJhbXMgIHBhcmFtc187Ci0gICAgdm9pZCogICAgICAgICBzdHJlYW1fOyAvLyBBY3R1YWwgdHlwZTogYnpfc3RyZWFtKi4KLSAgICBib29sICAgICAgICAgIHJlYWR5XzsKLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBiemlwMl9jb21wcmVzc29yX2ltcGwKLS8vIERlc2NyaXB0aW9uOiBNb2RlbCBvZiBTeW1tZXRyaWNGaWx0ZXIgaW1wbGVtZW50aW5nIGNvbXByZXNzaW9uIGJ5Ci0vLyAgICAgIGRlbGVnYXRpbmcgdG8gdGhlIGxpYmJ6aXAyIGZ1bmN0aW9uIEJaX2J6Q29tcHJlc3MuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+Ci1jbGFzcyBiemlwMl9jb21wcmVzc29yX2ltcGwgCi0gICAgOiBwdWJsaWMgYnppcDJfYmFzZSwgCi0gICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0gICAgICAgICAgcHVibGljCi0gICAgICAjZW5kaWYKLSAgICAgIGJ6aXAyX2FsbG9jYXRvcjxBbGxvYz4gCi17Ci1wdWJsaWM6IAotICAgIGJ6aXAyX2NvbXByZXNzb3JfaW1wbChjb25zdCBiemlwMl9wYXJhbXMmKTsKLSAgICBib29sIGZpbHRlciggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgICAgICAgICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kLCBib29sIGZsdXNoICk7Ci0gICAgdm9pZCBjbG9zZSgpOwotcHJpdmF0ZToKLSAgICB2b2lkIGluaXQoKTsKLSAgICBib29sIGVvZl87IC8vIEd1YXJkIHRvIG1ha2Ugc3VyZSBmaWx0ZXIoKSBpc24ndCBjYWxsZWQgYWZ0ZXIgaXQgcmV0dXJucyBmYWxzZS4KLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBiemlwMl9jb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgU3ltbWV0cmljRmlsdGVyIGltcGxlbWVudGluZyBkZWNvbXByZXNzaW9uIGJ5Ci0vLyAgICAgIGRlbGVnYXRpbmcgdG8gdGhlIGxpYmJ6aXAyIGZ1bmN0aW9uIEJaX2J6RGVjb21wcmVzcy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIGJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsIAotICAgIDogcHVibGljIGJ6aXAyX2Jhc2UsIAotICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotICAgICAgICAgIHB1YmxpYwotICAgICAgI2VuZGlmCi0gICAgICBiemlwMl9hbGxvY2F0b3I8QWxsb2M+IAoteyAKLXB1YmxpYzoKLSAgICBiemlwMl9kZWNvbXByZXNzb3JfaW1wbChib29sIHNtYWxsID0gYnppcDI6OmRlZmF1bHRfc21hbGwpOwotICAgIGJvb2wgZmlsdGVyKCBjb25zdCBjaGFyKiYgYmVnaW5faW4sIGNvbnN0IGNoYXIqIGVuZF9pbiwKLSAgICAgICAgICAgICAgICAgY2hhciomIGJlZ2luX291dCwgY2hhciogZW5kX291dCwgYm9vbCBmbHVzaCApOwotICAgIHZvaWQgY2xvc2UoKTsKLXByaXZhdGU6Ci0gICAgdm9pZCBpbml0KCk7Ci0gICAgYm9vbCBlb2ZfOyAvLyBHdWFyZCB0byBtYWtlIHN1cmUgZmlsdGVyKCkgaXNuJ3QgY2FsbGVkIGFmdGVyIGl0IHJldHVybnMgZmFsc2UuCi19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogYnppcDJfY29tcHJlc3NvcgotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIElucHV0RmlsdGVyIGFuZCBPdXRwdXRGaWx0ZXIgaW1wbGVtZW50aW5nCi0vLyAgICAgIGNvbXByZXNzaW9uIHVzaW5nIGxpYmJ6aXAyLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotc3RydWN0IGJhc2ljX2J6aXAyX2NvbXByZXNzb3IgCi0gICAgOiBzeW1tZXRyaWNfZmlsdGVyPGRldGFpbDo6YnppcDJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPiwgQWxsb2M+IAotewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGRldGFpbDo6YnppcDJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPiAgICAgICAgaW1wbF90eXBlOwotICAgIHR5cGVkZWYgc3ltbWV0cmljX2ZpbHRlcjxpbXBsX3R5cGUsIEFsbG9jPiAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNhdGVnb3J5ICAgICAgICAgICAgICAgIGNhdGVnb3J5OwotICAgIGJhc2ljX2J6aXAyX2NvbXByZXNzb3IoIGNvbnN0IGJ6aXAyX3BhcmFtcyYgPSBiemlwMjo6ZGVmYXVsdF9ibG9ja19zaXplLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgPSAgZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUgKTsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY19iemlwMl9jb21wcmVzc29yLCAxKQotCi10eXBlZGVmIGJhc2ljX2J6aXAyX2NvbXByZXNzb3I8PiBiemlwMl9jb21wcmVzc29yOwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogYnppcDJfZGVjb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgSW5wdXRGaWx0ZXIgYW5kIE91dHB1dEZpbHRlciBpbXBsZW1lbnRpbmcKLS8vICAgICAgZGVjb21wcmVzc2lvbiB1c2luZyBsaWJiemlwMi4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLXN0cnVjdCBiYXNpY19iemlwMl9kZWNvbXByZXNzb3IgCi0gICAgOiBzeW1tZXRyaWNfZmlsdGVyPGRldGFpbDo6YnppcDJfZGVjb21wcmVzc29yX2ltcGw8QWxsb2M+LCBBbGxvYz4gCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgZGV0YWlsOjpiemlwMl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz4gICAgICBpbXBsX3R5cGU7Ci0gICAgdHlwZWRlZiBzeW1tZXRyaWNfZmlsdGVyPGltcGxfdHlwZSwgQWxsb2M+ICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgYmFzaWNfYnppcDJfZGVjb21wcmVzc29yKCBib29sIHNtYWxsID0gYnppcDI6OmRlZmF1bHRfc21hbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgPSBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSApOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX2J6aXAyX2RlY29tcHJlc3NvciwgMSkKLQotdHlwZWRlZiBiYXNpY19iemlwMl9kZWNvbXByZXNzb3I8PiBiemlwMl9kZWNvbXByZXNzb3I7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgYnppcDJfYWxsb2NhdG9yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgQmFzZT4KLXZvaWQqIGJ6aXAyX2FsbG9jYXRvcjxBbGxvYywgQmFzZT46OmFsbG9jYXRlKHZvaWQqIHNlbGYsIGludCBpdGVtcywgaW50IHNpemUpCi17IAotICAgIHNpemVfdHlwZSBsZW4gPSBpdGVtcyAqIHNpemU7Ci0gICAgY2hhciogcHRyID0gCi0gICAgICAgIHN0YXRpY19jYXN0PGFsbG9jYXRvcl90eXBlKj4oc2VsZiktPmFsbG9jYXRlCi0gICAgICAgICAgICAobGVuICsgc2l6ZW9mKHNpemVfdHlwZSkKLSAgICAgICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA9PSAxKQotICAgICAgICAgICAgICAgICwgKGNoYXIqKTAKLSAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgKTsKLSAgICAqcmVpbnRlcnByZXRfY2FzdDxzaXplX3R5cGUqPihwdHIpID0gbGVuOwotICAgIHJldHVybiBwdHIgKyBzaXplb2Yoc2l6ZV90eXBlKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEJhc2U+Ci12b2lkIGJ6aXAyX2FsbG9jYXRvcjxBbGxvYywgQmFzZT46OmRlYWxsb2NhdGUodm9pZCogc2VsZiwgdm9pZCogYWRkcmVzcykKLXsgCi0gICAgY2hhciogcHRyID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYWRkcmVzcykgLSBzaXplb2Yoc2l6ZV90eXBlKTsKLSAgICBzaXplX3R5cGUgbGVuID0gKnJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90eXBlKj4ocHRyKSArIHNpemVvZihzaXplX3R5cGUpOwotICAgIHN0YXRpY19jYXN0PGFsbG9jYXRvcl90eXBlKj4oc2VsZiktPmRlYWxsb2NhdGUocHRyLCBsZW4pOyAKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiemlwMl9jb21wcmVzc29yX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iemlwMl9jb21wcmVzc29yX2ltcGw8QWxsb2M+OjpiemlwMl9jb21wcmVzc29yX2ltcGwoY29uc3QgYnppcDJfcGFyYW1zJiBwKQotICAgIDogYnppcDJfYmFzZShwKSwgZW9mXyhmYWxzZSkgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYm9vbCBiemlwMl9jb21wcmVzc29yX2ltcGw8QWxsb2M+OjpmaWx0ZXIKLSAgICAoIGNvbnN0IGNoYXIqJiBzcmNfYmVnaW4sIGNvbnN0IGNoYXIqIHNyY19lbmQsCi0gICAgICBjaGFyKiYgZGVzdF9iZWdpbiwgY2hhciogZGVzdF9lbmQsIGJvb2wgZmx1c2ggKQotewotICAgIGlmICghcmVhZHkoKSkgaW5pdCgpOwotICAgIGlmIChlb2ZfKSByZXR1cm4gZmFsc2U7Ci0gICAgYmVmb3JlKHNyY19iZWdpbiwgc3JjX2VuZCwgZGVzdF9iZWdpbiwgZGVzdF9lbmQpOwotICAgIGludCByZXN1bHQgPSBjb21wcmVzcyhmbHVzaCA/IGJ6aXAyOjpmaW5pc2ggOiBiemlwMjo6cnVuKTsKLSAgICBhZnRlcihzcmNfYmVnaW4sIGRlc3RfYmVnaW4pOwotICAgIGJ6aXAyX2Vycm9yOjpjaGVjayBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihyZXN1bHQpOwotICAgIHJldHVybiAhKGVvZl8gPSByZXN1bHQgPT0gYnppcDI6OnN0cmVhbV9lbmQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXZvaWQgYnppcDJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6Y2xvc2UoKSAKLXsgCi0gICAgdHJ5IHsKLSAgICAgICAgZW5kKHRydWUpOwotICAgIH0gY2F0Y2ggKC4uLikgeyAKLSAgICAgICAgZW9mXyA9IGZhbHNlOyAKLSAgICAgICAgdGhyb3c7Ci0gICAgfQotICAgIGVvZl8gPSBmYWxzZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1pbmxpbmUgdm9pZCBiemlwMl9jb21wcmVzc29yX2ltcGw8QWxsb2M+Ojppbml0KCkgCi17IGJ6aXAyX2Jhc2U6OmluaXQodHJ1ZSwgc3RhdGljX2Nhc3Q8YnppcDJfYWxsb2NhdG9yPEFsbG9jPiY+KCp0aGlzKSk7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiemlwMl9kZWNvbXByZXNzb3JfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iemlwMl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz46OmJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsKGJvb2wgc21hbGwpCi0gICAgOiBiemlwMl9iYXNlKGJ6aXAyX3BhcmFtcyhzbWFsbCkpLCBlb2ZfKGZhbHNlKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1ib29sIGJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6ZmlsdGVyCi0gICAgKCBjb25zdCBjaGFyKiYgc3JjX2JlZ2luLCBjb25zdCBjaGFyKiBzcmNfZW5kLAotICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kLCBib29sIGZsdXNoICkKLXsKLSAgICBpZiAoZW9mXykgewotICAgICAgICAvLyByZXNldCB0aGUgc3RyZWFtIGlmIHRoZXJlIGFyZSBtb3JlIGNoYXJhY3RlcnMKLSAgICAgICAgaWYoc3JjX2JlZ2luID09IHNyY19lbmQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNsb3NlKCk7Ci0gICAgfQotICAgIGlmICghcmVhZHkoKSkgCi0gICAgICAgIGluaXQoKTsKLSAgICBiZWZvcmUoc3JjX2JlZ2luLCBzcmNfZW5kLCBkZXN0X2JlZ2luLCBkZXN0X2VuZCk7Ci0gICAgaW50IHJlc3VsdCA9IGRlY29tcHJlc3MoKTsKLSAgICBpZihyZXN1bHQgPT0gYnppcDI6Om9rICYmIGZsdXNoKQotICAgICAgICByZXN1bHQgPSBjaGVja19lbmQoc3JjX2JlZ2luLCBkZXN0X2JlZ2luKTsKLSAgICBhZnRlcihzcmNfYmVnaW4sIGRlc3RfYmVnaW4pOwotICAgIGJ6aXAyX2Vycm9yOjpjaGVjayBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihyZXN1bHQpOwotICAgIGVvZl8gPSByZXN1bHQgPT0gYnppcDI6OnN0cmVhbV9lbmQ7Ci0gICAgcmV0dXJuIHRydWU7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXZvaWQgYnppcDJfZGVjb21wcmVzc29yX2ltcGw8QWxsb2M+OjpjbG9zZSgpIAoteyAKLSAgICB0cnkgewotICAgICAgICBlbmQoZmFsc2UpOwotICAgIH0gY2F0Y2ggKC4uLikgeyAKLSAgICAgICAgZW9mXyA9IGZhbHNlOyAKLSAgICAgICAgdGhyb3c7Ci0gICAgfQotICAgIGVvZl8gPSBmYWxzZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1pbmxpbmUgdm9pZCBiemlwMl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz46OmluaXQoKQoteyBiemlwMl9iYXNlOjppbml0KGZhbHNlLCBzdGF0aWNfY2FzdDxiemlwMl9hbGxvY2F0b3I8QWxsb2M+Jj4oKnRoaXMpKTsgfQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiemlwMl9kZWNvbXByZXNzb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iYXNpY19iemlwMl9jb21wcmVzc29yPEFsbG9jPjo6YmFzaWNfYnppcDJfY29tcHJlc3NvcgotICAgICAgICAoY29uc3QgYnppcDJfcGFyYW1zJiBwLCBpbnQgYnVmZmVyX3NpemUpIAotICAgIDogYmFzZV90eXBlKGJ1ZmZlcl9zaXplLCBwKSAKLSAgICB7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiemlwMl9kZWNvbXByZXNzb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iYXNpY19iemlwMl9kZWNvbXByZXNzb3I8QWxsb2M+OjpiYXNpY19iemlwMl9kZWNvbXByZXNzb3IKLSAgICAgICAgKGJvb2wgc21hbGwsIGludCBidWZmZXJfc2l6ZSkgCi0gICAgOiBiYXNlX3R5cGUoYnVmZmVyX3NpemUsIHNtYWxsKQotICAgIHsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcD4gLy8gUG9wcyBhYmlfc3VmZml4LmhwcCBwcmFnbWFzLgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CWklQMl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9jb3VudGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9jb3VudGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc4MGMxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvY291bnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09VTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPVU5URVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gY291bnQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAvLyBWQzcuMSBDNDI0NC4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBiYXNpY19jb3VudGVyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgQ2ggLSBUaGUgY2hhcmFjdGVyIHR5cGUuCi0vLyBEZXNjcmlwdGlvbjogRmlsdGVyIHdoaWNoIGNvdW50cyBsaW5lcyBhbmQgY2hhcmFjdGVycy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWNsYXNzIGJhc2ljX2NvdW50ZXIgIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIG11bHRpY2hhcl90YWcsCi0gICAgICAgICAgb3B0aW1hbGx5X2J1ZmZlcmVkX3RhZwotICAgICAgICB7IH07Ci0gICAgZXhwbGljaXQgYmFzaWNfY291bnRlcihpbnQgZmlyc3RfbGluZSA9IDAsIGludCBmaXJzdF9jaGFyID0gMCkKLSAgICAgICAgOiBsaW5lc18oZmlyc3RfbGluZSksIGNoYXJzXyhmaXJzdF9jaGFyKQotICAgICAgICB7IH0KLSAgICBpbnQgbGluZXMoKSBjb25zdCB7IHJldHVybiBsaW5lc187IH0KLSAgICBpbnQgY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIGNoYXJzXzsgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKCkgY29uc3QgeyByZXR1cm4gMDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKFNvdXJjZSYgc3JjLCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6cmVhZChzcmMsIHMsIG4pOwotICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBsaW5lc18gKz0gc3RkOjpjb3VudChzLCBzICsgcmVzdWx0LCBjaGFyX3RyYWl0czxDaD46Om5ld2xpbmUoKSk7Ci0gICAgICAgIGNoYXJzXyArPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6d3JpdGUoc25rLCBzLCBuKTsKLSAgICAgICAgbGluZXNfICs9IHN0ZDo6Y291bnQocywgcyArIHJlc3VsdCwgY2hhcl90cmFpdHM8Q2g+OjpuZXdsaW5lKCkpOwotICAgICAgICBjaGFyc18gKz0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLXByaXZhdGU6Ci0gICAgaW50IGxpbmVzXzsKLSAgICBpbnQgY2hhcnNfOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX2NvdW50ZXIsIDEpCi0KLQotdHlwZWRlZiBiYXNpY19jb3VudGVyPGNoYXI+ICAgICBjb3VudGVyOwotdHlwZWRlZiBiYXNpY19jb3VudGVyPHdjaGFyX3Q+ICB3Y291bnRlcjsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09VTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9ncmVwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9ncmVwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM3YTI5Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvZ3JlcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9ncmVwLmhwcAotICogRGF0ZTogICAgICAgIE1vbiBNYXkgMjYgMTc6NDg6NDUgTURUIDIwMDgKLSAqIENvcHlyaWdodDogICAyMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyB0ZW1wbGF0ZSBiYXNpY19ncmVwX2ZpbHRlciBhbmQgaXRzIHNwZWNpYWxpemF0aW9ucwotICogZ3JlcF9maWx0ZXIgYW5kIHdncmVwX2ZpbHRlci4KLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19HUkVQX0ZJTFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0dSRVBfRklMVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxtZW1vcnk+ICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4gICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2xpbmUuaHBwPiAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZ3JlcCB7Ci0KLWNvbnN0IGludCBpbnZlcnQgICAgICA9IDE7Ci1jb25zdCBpbnQgd2hvbGVfbGluZSAgPSBpbnZlcnQgPDwgMTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGdyZXAuCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBDaCwKLSAgICAgICAgICB0eXBlbmFtZSBUciA9IHJlZ2V4X3RyYWl0czxDaD4sCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxDaD4gPgotY2xhc3MgYmFzaWNfZ3JlcF9maWx0ZXIgOiBwdWJsaWMgYmFzaWNfbGluZV9maWx0ZXI8Q2gsIEFsbG9jPiB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgYmFzaWNfbGluZV9maWx0ZXI8Q2gsIEFsbG9jPiAgICAgICAgICAgICAgIGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2hhcl90eXBlICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNhdGVnb3J5ICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OnN0cmluZ190eXBlICAgICAgICAgICAgc3RyaW5nX3R5cGU7Ci0gICAgdHlwZWRlZiBiYXNpY19yZWdleDxDaCwgVHI+ICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfdHlwZTsKLSAgICB0eXBlZGVmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGU7Ci0gICAgYmFzaWNfZ3JlcF9maWx0ZXIoIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLAotICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgbWF0Y2hfZmxhZ3MgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wdGlvbnMgPSAwICk7Ci0gICAgaW50IGNvdW50KCkgY29uc3QgeyByZXR1cm4gY291bnRfOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY2xvc2UoU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpjbG9zZShzbmssIHdoaWNoKTsKLSAgICAgICAgb3B0aW9uc18gJj0gfmZfaW5pdGlhbGl6ZWQ7Ci0gICAgfQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHN0cmluZ190eXBlIGRvX2ZpbHRlcihjb25zdCBzdHJpbmdfdHlwZSYgbGluZSkKLSAgICB7Ci0gICAgICAgIGlmICgob3B0aW9uc18gJiBmX2luaXRpYWxpemVkKSA9PSAwKSB7Ci0gICAgICAgICAgICBvcHRpb25zXyB8PSBmX2luaXRpYWxpemVkOwotICAgICAgICAgICAgY291bnRfID0gMDsKLSAgICAgICAgfQotICAgICAgICBib29sIG1hdGNoZXMgPSAob3B0aW9uc18gJiBncmVwOjp3aG9sZV9saW5lKSA/Ci0gICAgICAgICAgICByZWdleF9tYXRjaChsaW5lLCByZV8sIG1hdGNoX2ZsYWdzXykgOgotICAgICAgICAgICAgcmVnZXhfc2VhcmNoKGxpbmUsIHJlXywgbWF0Y2hfZmxhZ3NfKTsKLSAgICAgICAgaWYgKG9wdGlvbnNfICYgZ3JlcDo6aW52ZXJ0KQotICAgICAgICAgICAgbWF0Y2hlcyA9ICFtYXRjaGVzOwotICAgICAgICBpZiAobWF0Y2hlcykKLSAgICAgICAgICAgICsrY291bnRfOwotICAgICAgICByZXR1cm4gbWF0Y2hlcyA/IGxpbmUgKyB0cmFpdHNfdHlwZTo6bmV3bGluZSgpIDogc3RyaW5nX3R5cGUoKTsKLSAgICB9Ci0KLSAgICAvLyBQcml2YXRlIGZsYWdzIGJpdHdpc2UgT1InZCB3aXRoIGNvbnN0YW50cyBmcm9tIG5hbWVzcGFjZSBncmVwCi0gICAgZW51bSBmbGFnc18gewotICAgICAgICBmX2luaXRpYWxpemVkID0gNjU1MzYKLSAgICB9OwotCi0gICAgcmVnZXhfdHlwZSAgICAgICByZV87Ci0gICAgbWF0Y2hfZmxhZ190eXBlICBtYXRjaF9mbGFnc187Ci0gICAgaW50ICAgICAgICAgICAgICBvcHRpb25zXzsKLSAgICBpbnQgICAgICAgICAgICAgIGNvdW50XzsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY19ncmVwX2ZpbHRlciwgMykKLQotdHlwZWRlZiBiYXNpY19ncmVwX2ZpbHRlcjxjaGFyPiAgICAgZ3JlcF9maWx0ZXI7Ci10eXBlZGVmIGJhc2ljX2dyZXBfZmlsdGVyPHdjaGFyX3Q+ICB3Z3JlcF9maWx0ZXI7Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiYXNpY19ncmVwX2ZpbHRlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYz4KLWJhc2ljX2dyZXBfZmlsdGVyPENoLCBUciwgQWxsb2M+OjpiYXNpY19ncmVwX2ZpbHRlcgotICAgIChjb25zdCByZWdleF90eXBlJiByZSwgbWF0Y2hfZmxhZ190eXBlIG1hdGNoX2ZsYWdzLCBpbnQgb3B0aW9ucykKLSAgICA6IGJhc2VfdHlwZSh0cnVlKSwgcmVfKHJlKSwgbWF0Y2hfZmxhZ3NfKG1hdGNoX2ZsYWdzKSwgCi0gICAgICBvcHRpb25zXyhvcHRpb25zKSwgY291bnRfKDApCi0gICAgeyB9Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgICAgICAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRUdFWF9GSUxURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvZ3ppcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvZ3ppcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZjlmY2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2d6aXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzU3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIGNsYXNzIHRlbXBsYXRlcyBnemlwX2NvbXByZXNzb3IgYW5kCi0vLyBnemlwX2RlY29tcHJlc3NvciBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBmaWxlcyBpbiB0aGUgZ3ppcCBmaWxlIGZvcm1hdAotLy8gKFJGQyAxOTUyKS4gQmFzZWQgaW4gcGFydCBvbiB3b3JrIG9mIEpvbmF0aGFuIGRlIEhhbGxldXg7IHNlZSBbLi4uXQotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19HWklQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfR1pJUF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBTVEFUSUNfQ09OU1RBTlQsIFNURENfTkFNRVNQQUNFLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBESU5LVU1XQVJFX1NURExJQiwgX19TVExfQ09ORklHX0guCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAvLyBtaW4uCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxjc3RkaW8+ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVPRi4KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpemVfdC4KLSNpbmNsdWRlIDxjdGltZT4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0ZDo6dGltZV90LgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgLy8gUHV0IHNpemVfdCBpbiBzdGQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAgICAgICAgICAgICAgLy8gdWludDhfdCwgdWludDMyX3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+ICAvLyBidWZmZXIgc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbm9uX2Jsb2NraW5nX2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9yYW5nZV9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+IC8vIGZhaWx1cmUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lcnJvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYmFja19pbnNlcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci96bGliLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPiAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3B1dGJhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMwOSkgICAgLy8gVHJ1bmNhdGlvbiBvZiBjb25zdGFudCB2YWx1ZS4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OnRpbWVfdDsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbnMgb2YgY29uc3RhbnRzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBnemlwIHsKLQotdXNpbmcgbmFtZXNwYWNlIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnpsaWI7Ci0KLSAgICAvLyBFcnJvciBjb2RlcyB1c2VkIGJ5IGd6aXBfZXJyb3IuCi0KLWNvbnN0IGludCB6bGliX2Vycm9yICAgICAgICA9IDE7Ci1jb25zdCBpbnQgYmFkX2NyYyAgICAgICAgICAgPSAyOyAvLyBSZWNvcmRlZCBjcmMgZG9lc24ndCBtYXRjaCBkYXRhLgotY29uc3QgaW50IGJhZF9sZW5ndGggICAgICAgID0gMzsgLy8gUmVjb3JkZWQgbGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGF0YS4KLWNvbnN0IGludCBiYWRfaGVhZGVyICAgICAgICA9IDQ7IC8vIE1hbGZvcm1lZCBoZWFkZXIuCi1jb25zdCBpbnQgYmFkX2Zvb3RlciAgICAgICAgPSA1OyAvLyBNYWxmb3JtZWQgZm9vdGVyLgotY29uc3QgaW50IGJhZF9tZXRob2QgICAgICAgID0gNjsgLy8gVW5zdXBwb3J0ZWQgY29tcHJlc3Npb24gbWV0aG9kLgotCi1uYW1lc3BhY2UgbWFnaWMgewotCi0gICAgLy8gTWFnaWMgbnVtYmVycyB1c2VkIGJ5IGd6aXAgaGVhZGVyLgotCi1jb25zdCBpbnQgaWQxICAgICAgICAgICAgICAgPSAweDFmOwotY29uc3QgaW50IGlkMiAgICAgICAgICAgICAgID0gMHg4YjsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIG1hZ2ljLgotCi1uYW1lc3BhY2UgbWV0aG9kIHsKLQotICAgIC8vIENvZGVzIHVzZWQgZm9yIHRoZSAnQ00nIGJ5dGUgb2YgdGhlIGd6aXAgaGVhZGVyLgotCi1jb25zdCBpbnQgZGVmbGF0ZSAgICAgICAgICAgPSA4OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgbWV0aG9kLgotCi1uYW1lc3BhY2UgZmxhZ3MgewotCi0gICAgLy8gQ29kZXMgdXNlZCBmb3IgdGhlICdGTEcnIGJ5dGUgb2YgdGhlIGd6aXAgaGVhZGVyLgotCi1jb25zdCBpbnQgdGV4dCAgICAgICAgICAgICAgPSAxOwotY29uc3QgaW50IGhlYWRlcl9jcmMgICAgICAgID0gMjsKLWNvbnN0IGludCBleHRyYSAgICAgICAgICAgICA9IDQ7Ci1jb25zdCBpbnQgbmFtZSAgICAgICAgICAgICAgPSA4OwotY29uc3QgaW50IGNvbW1lbnQgICAgICAgICAgID0gMTY7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBmbGFncy4KLQotbmFtZXNwYWNlIGV4dHJhX2ZsYWdzIHsKLQotICAgIC8vIENvZGVzIHVzZWQgZm9yIHRoZSAnWEZMJyBieXRlIG9mIHRoZSBnemlwIGhlYWRlci4KLQotY29uc3QgaW50IGJlc3RfY29tcHJlc3Npb24gID0gMjsKLWNvbnN0IGludCBiZXN0X3NwZWVkICAgICAgICA9IDQ7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBleHRyYV9mbGFncy4KLQotICAgIC8vIENvZGVzIHVzZWQgZm9yIHRoZSAnT1MnIGJ5dGUgb2YgdGhlIGd6aXAgaGVhZGVyLgotCi1jb25zdCBpbnQgb3NfZmF0ICAgICAgICAgICAgPSAwOwotY29uc3QgaW50IG9zX2FtaWdhICAgICAgICAgID0gMTsKLWNvbnN0IGludCBvc192bXMgICAgICAgICAgICA9IDI7Ci1jb25zdCBpbnQgb3NfdW5peCAgICAgICAgICAgPSAzOwotY29uc3QgaW50IG9zX3ZtX2NtcyAgICAgICAgID0gNDsKLWNvbnN0IGludCBvc19hdGFyaSAgICAgICAgICA9IDU7Ci1jb25zdCBpbnQgb3NfaHBmcyAgICAgICAgICAgPSA2OwotY29uc3QgaW50IG9zX21hY2ludG9zaCAgICAgID0gNzsKLWNvbnN0IGludCBvc196X3N5c3RlbSAgICAgICA9IDg7Ci1jb25zdCBpbnQgb3NfY3BfbSAgICAgICAgICAgPSA5OwotY29uc3QgaW50IG9zX3RvcHNfMjAgICAgICAgID0gMTA7Ci1jb25zdCBpbnQgb3NfbnRmcyAgICAgICAgICAgPSAxMTsKLWNvbnN0IGludCBvc19xZG9zICAgICAgICAgICA9IDEyOwotY29uc3QgaW50IG9zX2Fjb3JuICAgICAgICAgID0gMTM7Ci1jb25zdCBpbnQgb3NfdW5rbm93biAgICAgICAgPSAyNTU7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBnemlwLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgZ3ppcF9wYXJhbXMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLwotLy8gQ2xhc3MgbmFtZTogZ3ppcF9wYXJhbXMuCi0vLyBEZXNjcmlwdGlvbjogU3ViY2xhc3Mgb2YgemxpYl9wYXJhbXMgd2l0aCBhbiBhZGRpdGlvbmFsIGZpZWxkCi0vLyAgICAgIHJlcHJlc2VudGluZyBhIGZpbGUgbmFtZS4KLS8vCi1zdHJ1Y3QgZ3ppcF9wYXJhbXMgOiB6bGliX3BhcmFtcyB7Ci0KLSAgICAvLyBOb24tZXhwbGljaXQgY29uc3RydWN0b3IuCi0gICAgZ3ppcF9wYXJhbXMoIGludCBsZXZlbCAgICAgICAgICAgICAgPSBnemlwOjpkZWZhdWx0X2NvbXByZXNzaW9uLAotICAgICAgICAgICAgICAgICBpbnQgbWV0aG9kICAgICAgICAgICAgID0gZ3ppcDo6ZGVmbGF0ZWQsCi0gICAgICAgICAgICAgICAgIGludCB3aW5kb3dfYml0cyAgICAgICAgPSBnemlwOjpkZWZhdWx0X3dpbmRvd19iaXRzLAotICAgICAgICAgICAgICAgICBpbnQgbWVtX2xldmVsICAgICAgICAgID0gZ3ppcDo6ZGVmYXVsdF9tZW1fbGV2ZWwsCi0gICAgICAgICAgICAgICAgIGludCBzdHJhdGVneSAgICAgICAgICAgPSBnemlwOjpkZWZhdWx0X3N0cmF0ZWd5LAotICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBmaWxlX25hbWUgID0gIiIsCi0gICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbW1lbnQgICAgPSAiIiwKLSAgICAgICAgICAgICAgICAgc3RkOjp0aW1lX3QgbXRpbWUgICAgICA9IDAgKQotICAgICAgICA6IHpsaWJfcGFyYW1zKGxldmVsLCBtZXRob2QsIHdpbmRvd19iaXRzLCBtZW1fbGV2ZWwsIHN0cmF0ZWd5KSwKLSAgICAgICAgICBmaWxlX25hbWUoZmlsZV9uYW1lKSwgY29tbWVudChjb21tZW50KSwgbXRpbWUobXRpbWUpCi0gICAgICAgIHsgfQotICAgIHN0ZDo6c3RyaW5nICBmaWxlX25hbWU7Ci0gICAgc3RkOjpzdHJpbmcgIGNvbW1lbnQ7Ci0gICAgc3RkOjp0aW1lX3QgIG10aW1lOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGd6aXBfZXJyb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8KLS8vIENsYXNzIG5hbWU6IGd6aXBfZXJyb3IuCi0vLyBEZXNjcmlwdGlvbjogU3ViY2xhc3Mgb2Ygc3RkOjppb3NfYmFzZTo6ZmFpbHVyZSB0aHJvd24gdG8gaW5kaWNhdGUKLS8vICAgICB6bGliIGVycm9ycyBvdGhlciB0aGFuIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucy4KLS8vCi1jbGFzcyBnemlwX2Vycm9yIDogcHVibGljIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBnemlwX2Vycm9yKGludCBlcnJvcikKLSAgICAgICAgOiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiZ3ppcCBlcnJvciIpLAotICAgICAgICAgIGVycm9yXyhlcnJvciksIHpsaWJfZXJyb3JfY29kZV8oemxpYjo6b2theSkgeyB9Ci0gICAgZXhwbGljaXQgZ3ppcF9lcnJvcihjb25zdCB6bGliX2Vycm9yJiBlKQotICAgICAgICA6IE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJnemlwIGVycm9yIiksCi0gICAgICAgICAgZXJyb3JfKGd6aXA6OnpsaWJfZXJyb3IpLCB6bGliX2Vycm9yX2NvZGVfKGUuZXJyb3IoKSkKLSAgICAgICAgeyB9Ci0gICAgaW50IGVycm9yKCkgY29uc3QgeyByZXR1cm4gZXJyb3JfOyB9Ci0gICAgaW50IHpsaWJfZXJyb3JfY29kZSgpIGNvbnN0IHsgcmV0dXJuIHpsaWJfZXJyb3JfY29kZV87IH0KLXByaXZhdGU6Ci0gICAgaW50IGVycm9yXzsKLSAgICBpbnQgemxpYl9lcnJvcl9jb2RlXzsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBnemlwX2NvbXByZXNzb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBnemlwX2NvbXByZXNzb3IKLS8vIERlc2NyaXB0aW9uOiBNb2RlbCBvZiBPdXRwdXRGaWx0ZXIgaW1wbGVtZW50aW5nIGNvbXByZXNzaW9uIGluIHRoZQotLy8gICAgICBnemlwIGZvcm1hdC4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIGJhc2ljX2d6aXBfY29tcHJlc3NvciA6IGJhc2ljX3psaWJfY29tcHJlc3NvcjxBbGxvYz4gewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGJhc2ljX3psaWJfY29tcHJlc3NvcjxBbGxvYz4gIGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGR1YWxfdXNlLAotICAgICAgICAgIGZpbHRlcl90YWcsCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIGJhc2ljX2d6aXBfY29tcHJlc3NvciggY29uc3QgZ3ppcF9wYXJhbXMmID0gZ3ppcDo6ZGVmYXVsdF9jb21wcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplICk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gMDsKLQotICAgICAgICAvLyBSZWFkIGhlYWRlci4KLSAgICAgICAgaWYgKCEoZmxhZ3NfICYgZl9oZWFkZXJfZG9uZSkpCi0gICAgICAgICAgICByZXN1bHQgKz0gcmVhZF9zdHJpbmcocywgbiwgaGVhZGVyXyk7Ci0KLSAgICAgICAgLy8gUmVhZCBib2R5LgotICAgICAgICBpZiAoIShmbGFnc18gJiBmX2JvZHlfZG9uZSkpIHsKLQotICAgICAgICAgICAgLy8gUmVhZCBmcm9tIGJhc2ljX3psaWJfZmlsdGVyLgotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IGJhc2VfdHlwZTo6cmVhZChzcmMsIHMgKyByZXN1bHQsIG4gLSByZXN1bHQpOwotICAgICAgICAgICAgaWYgKGFtdCAhPSAtMSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBhbXQ7Ci0gICAgICAgICAgICAgICAgaWYgKGFtdCA8IG4gLSByZXN1bHQpIHsgLy8gRG91YmxlLWNoZWNrIGZvciBFT0YuCi0gICAgICAgICAgICAgICAgICAgIGFtdCA9IGJhc2VfdHlwZTo6cmVhZChzcmMsIHMgKyByZXN1bHQsIG4gLSByZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYW10ICE9IC0xKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGFtdDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYW10ID09IC0xKQotICAgICAgICAgICAgICAgIHByZXBhcmVfZm9vdGVyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZWFkIGZvb3Rlci4KLSAgICAgICAgaWYgKChmbGFnc18gJiBmX2JvZHlfZG9uZSkgIT0gMCAmJiByZXN1bHQgPCBuKQotICAgICAgICAgICAgcmVzdWx0ICs9IHJlYWRfc3RyaW5nKHMgKyByZXN1bHQsIG4gLSByZXN1bHQsIGZvb3Rlcl8pOwotCi0gICAgICAgIHJldHVybiByZXN1bHQgIT0gMCA/IHJlc3VsdCA6IC0xOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmIHNuaywgY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIGlmICghKGZsYWdzXyAmIGZfaGVhZGVyX2RvbmUpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihoZWFkZXJfLnNpemUoKSAtIG9mZnNldF8pOwotICAgICAgICAgICAgb2Zmc2V0XyArPSBuZG5ib29zdDo6aW9zdHJlYW1zOjp3cml0ZShzbmssIGhlYWRlcl8uZGF0YSgpICsgb2Zmc2V0XywgYW10KTsKLSAgICAgICAgICAgIGlmIChvZmZzZXRfID09IGhlYWRlcl8uc2l6ZSgpKQotICAgICAgICAgICAgICAgIGZsYWdzXyB8PSBmX2hlYWRlcl9kb25lOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBiYXNlX3R5cGU6OndyaXRlKHNuaywgcywgbik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIC8vIENsb3NlIHpsaWIgY29tcHJlc3Nvci4KLSAgICAgICAgICAgIGJhc2VfdHlwZTo6Y2xvc2Uoc25rLCBtKTsKLQotICAgICAgICAgICAgaWYgKG0gPT0gTkROQk9PU1RfSU9TOjpvdXQpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmxhZ3NfICYgZl9oZWFkZXJfZG9uZSkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIFdyaXRlIGZpbmFsIGZpZWxkcyBvZiBnemlwIGZpbGUgZm9ybWF0LgotICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb25nKHRoaXMtPmNyYygpLCBzbmspOwotICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb25nKHRoaXMtPnRvdGFsX2luKCksIHNuayk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoKC4uLikgewotICAgICAgICAgICAgY2xvc2VfaW1wbCgpOwotICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgIH0KLSAgICAgICAgY2xvc2VfaW1wbCgpOwotICAgIH0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGd6aXBfcGFyYW1zIG5vcm1hbGl6ZV9wYXJhbXMoZ3ppcF9wYXJhbXMgcCk7Ci0gICAgdm9pZCBwcmVwYXJlX2Zvb3RlcigpOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkX3N0cmluZyhjaGFyKiBzLCBzdGQ6OnN0cmVhbXNpemUgbiwgc3RkOjpzdHJpbmcmIHN0cik7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0YXRpYyB2b2lkIHdyaXRlX2xvbmcobG9uZyBuLCBTaW5rJiBuZXh0LCBuZG5ib29zdDo6bXBsOjp0cnVlXykKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChuZXh0LCBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgbikpOwotICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpwdXQobmV4dCwgc3RhdGljX2Nhc3Q8Y2hhcj4oMHhGRiAmIChuID4+IDgpKSk7Ci0gICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChuZXh0LCBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgKG4gPj4gMTYpKSk7Ci0gICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChuZXh0LCBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgKG4gPj4gMjQpKSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVfbG9uZyhsb25nIG4sIFNpbmsmIG5leHQsIG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLSAgICB7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVfbG9uZyhsb25nIG4sIFNpbmsmIG5leHQpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFNpbms+Ojp0eXBlIGNhdGVnb3J5OwotICAgICAgICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+IGNhbl93cml0ZTsKLSAgICAgICAgd3JpdGVfbG9uZyhuLCBuZXh0LCBjYW5fd3JpdGUoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjbG9zZV9pbXBsKCkKLSAgICB7Ci0gICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAyKSAmJiBkZWZpbmVkKF9fU1RMX0NPTkZJR19IKSB8fCBcCi0gICAgICAgICAgICBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA9PSAxKSBcCi0gICAgICAgICAgICAvKiovCi0gICAgICAgICAgICBmb290ZXJfLmVyYXNlKDAsIHN0ZDo6c3RyaW5nOjpucG9zKTsKLSAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgIGZvb3Rlcl8uY2xlYXIoKTsKLSAgICAgICAgI2VuZGlmCi0gICAgICAgIG9mZnNldF8gPSAwOwotICAgICAgICBmbGFnc18gPSAwOwotICAgIH0KLQotICAgIGVudW0gc3RhdGVfdHlwZSB7Ci0gICAgICAgIGZfaGVhZGVyX2RvbmUgPSAxLAotICAgICAgICBmX2JvZHlfZG9uZSA9IGZfaGVhZGVyX2RvbmUgPDwgMSwKLSAgICAgICAgZl9mb290ZXJfZG9uZSA9IGZfYm9keV9kb25lIDw8IDEKLSAgICB9OwotICAgIHN0ZDo6c3RyaW5nICBoZWFkZXJfOwotICAgIHN0ZDo6c3RyaW5nICBmb290ZXJfOwotICAgIHN0ZDo6c2l6ZV90ICBvZmZzZXRfOwotICAgIGludCAgICAgICAgICBmbGFnc187Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYmFzaWNfZ3ppcF9jb21wcmVzc29yLCAxKQotCi10eXBlZGVmIGJhc2ljX2d6aXBfY29tcHJlc3Nvcjw+IGd6aXBfY29tcHJlc3NvcjsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGhlbHBlciB0ZW1wbGF0ZXMgZm9yIGRlY29tcHJlc3Npb24tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFByb2Nlc3NlcyBnemlwIGhlYWRlcnMKLWNsYXNzIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGd6aXBfaGVhZGVyIHsKLXB1YmxpYzoKLSAgICBnemlwX2hlYWRlcigpIHsgcmVzZXQoKTsgfQotCi0gICAgLy8gTWVtYmVycyBmb3IgcHJvY2Vzc2luZyBoZWFkZXIgZGF0YQotICAgIHZvaWQgcHJvY2VzcyhjaGFyIGMpOwotICAgIGJvb2wgZG9uZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlXyA9PSBzX2RvbmU7IH0KLSAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICAvLyBNZW1iZXJzIGZvciBhY2Nlc3NpbmcgaGVhZGVyIGRhdGEKLSAgICBzdGQ6OnN0cmluZyBmaWxlX25hbWUoKSBjb25zdCB7IHJldHVybiBmaWxlX25hbWVfOyB9Ci0gICAgc3RkOjpzdHJpbmcgY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbW1lbnRfOyB9Ci0gICAgYm9vbCB0ZXh0KCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGd6aXA6OmZsYWdzOjp0ZXh0KSAhPSAwOyB9Ci0gICAgaW50IG9zKCkgY29uc3QgeyByZXR1cm4gb3NfOyB9Ci0gICAgc3RkOjp0aW1lX3QgbXRpbWUoKSBjb25zdCB7IHJldHVybiBtdGltZV87IH0KLXByaXZhdGU6Ci0gICAgZW51bSBzdGF0ZV90eXBlIHsKLSAgICAgICAgc19pZDEgICAgICAgPSAxLAotICAgICAgICBzX2lkMiAgICAgICA9IHNfaWQxICsgMSwKLSAgICAgICAgc19jbSAgICAgICAgPSBzX2lkMiArIDEsCi0gICAgICAgIHNfZmxnICAgICAgID0gc19jbSArIDEsCi0gICAgICAgIHNfbXRpbWUgICAgID0gc19mbGcgKyAxLAotICAgICAgICBzX3hmbCAgICAgICA9IHNfbXRpbWUgKyAxLAotICAgICAgICBzX29zICAgICAgICA9IHNfeGZsICsgMSwKLSAgICAgICAgc194bGVuICAgICAgPSBzX29zICsgMSwKLSAgICAgICAgc19leHRyYSAgICAgPSBzX3hsZW4gKyAxLAotICAgICAgICBzX25hbWUgICAgICA9IHNfZXh0cmEgKyAxLAotICAgICAgICBzX2NvbW1lbnQgICA9IHNfbmFtZSArIDEsCi0gICAgICAgIHNfaGNyYyAgICAgID0gc19jb21tZW50ICsgMSwKLSAgICAgICAgc19kb25lICAgICAgPSBzX2hjcmMgKyAxCi0gICAgfTsKLSAgICBzdGQ6OnN0cmluZyAgZmlsZV9uYW1lXzsKLSAgICBzdGQ6OnN0cmluZyAgY29tbWVudF87Ci0gICAgaW50ICAgICAgICAgIG9zXzsKLSAgICBzdGQ6OnRpbWVfdCAgbXRpbWVfOwotICAgIGludCAgICAgICAgICBmbGFnc187Ci0gICAgaW50ICAgICAgICAgIHN0YXRlXzsKLSAgICBpbnQgICAgICAgICAgb2Zmc2V0XzsgIC8vIE9mZnNldCB3aXRoaW4gZml4ZWQtbGVuZ3RoIHJlZ2lvbi4KLSAgICBpbnQgICAgICAgICAgeGxlbl87ICAgIC8vIEJ5dGVzIHJlbWFpbmluZyBpbiBleHRyYSBmaWVsZC4KLX07Ci0KLS8vIFByb2Nlc3NlcyBnemlwIGZvb3RlcnMKLWNsYXNzIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGd6aXBfZm9vdGVyIHsKLXB1YmxpYzoKLSAgICBnemlwX2Zvb3RlcigpIHsgcmVzZXQoKTsgfQotICAgIAotICAgIC8vIE1lbWJlcnMgZm9yIHByb2Nlc3NpbmcgZm9vdGVyIGRhdGEKLSAgICB2b2lkIHByb2Nlc3MoY2hhciBjKTsKLSAgICBib29sIGRvbmUoKSBjb25zdCB7IHJldHVybiBzdGF0ZV8gPT0gc19kb25lOyB9Ci0gICAgdm9pZCByZXNldCgpOwotICAgIAotICAgIC8vIE1lbWJlcnMgZm9yIGFjY2Vzc2luZyBmb290ZXIgZGF0YQotICAgIHpsaWI6OnVsb25nIGNyYygpIGNvbnN0IHsgcmV0dXJuIGNyY187IH0KLSAgICB6bGliOjp1bG9uZyB1bmNvbXByZXNzZWRfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGlzaXplXzsgfQotcHJpdmF0ZToKLSAgICBlbnVtIHN0YXRlX3R5cGUgewotICAgICAgICBzX2NyYyAgICAgPSAxLAotICAgICAgICBzX2lzaXplICAgPSBzX2NyYyArIDEsCi0gICAgICAgIHNfZG9uZSAgICA9IHNfaXNpemUgKyAxCi0gICAgfTsKLSAgICB6bGliOjp1bG9uZyAgY3JjXzsKLSAgICB6bGliOjp1bG9uZyAgaXNpemVfOwotICAgIGludCAgICAgICAgICBzdGF0ZV87Ci0gICAgaW50ICAgICAgICAgIG9mZnNldF87IAotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbC4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGJhc2ljX2d6aXBfZGVjb21wcmVzc29yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGJhc2ljX2d6aXBfZGVjb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgSW5wdXRGaWx0ZXIgaW1wbGVtZW50aW5nIGNvbXByZXNzaW9uIGluIHRoZQotLy8gICAgICBnemlwIGZvcm1hdC4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIGJhc2ljX2d6aXBfZGVjb21wcmVzc29yIDogYmFzaWNfemxpYl9kZWNvbXByZXNzb3I8QWxsb2M+IHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBiYXNpY196bGliX2RlY29tcHJlc3NvcjxBbGxvYz4gICBiYXNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OnN0cmluZ190eXBlICBzdHJpbmdfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGR1YWxfdXNlLAotICAgICAgICAgIGZpbHRlcl90YWcsCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIGJhc2ljX2d6aXBfZGVjb21wcmVzc29yKCBpbnQgd2luZG93X2JpdHMgPSBnemlwOjpkZWZhdWx0X3dpbmRvd19iaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgPSBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSApOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IDA7Ci0gICAgICAgIHdoaWxlKHJlc3VsdCA8IG4pIHsKLSAgICAgICAgICAgIGlmKHN0YXRlXyA9PSBzX3N0YXJ0KSB7Ci0gICAgICAgICAgICAgICAgc3RhdGVfID0gc19oZWFkZXI7Ci0gICAgICAgICAgICAgICAgaGVhZGVyXy5yZXNldCgpOwotICAgICAgICAgICAgICAgIGZvb3Rlcl8ucmVzZXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdGF0ZV8gPT0gc19oZWFkZXIpIHsKLSAgICAgICAgICAgICAgICBpbnQgYyA9IHNbcmVzdWx0KytdOwotICAgICAgICAgICAgICAgIGhlYWRlcl8ucHJvY2VzcyhjKTsKLSAgICAgICAgICAgICAgICBpZiAoaGVhZGVyXy5kb25lKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlXyA9IHNfYm9keTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGVfID09IHNfYm9keSkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTo6d3JpdGUoc25rLCBzICsgcmVzdWx0LCBuIC0gcmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGFtdDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLT5lb2YoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV8gPSBzX2Zvb3RlcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGNvbnN0IHpsaWJfZXJyb3ImIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGUpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgeyAvLyBzdGF0ZV8gPT0gc19mb290ZXIKLSAgICAgICAgICAgICAgICBpZiAoZm9vdGVyXy5kb25lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZvb3Rlcl8uY3JjKCkgIT0gdGhpcy0+Y3JjKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZ3ppcDo6YmFkX2NyYykpOwotCi0gICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTo6Y2xvc2Uoc25rLCBORE5CT09TVF9JT1M6Om91dCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlXyA9IHNfc3RhcnQ7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGMgPSBzW3Jlc3VsdCsrXTsKLSAgICAgICAgICAgICAgICAgICAgZm9vdGVyXy5wcm9jZXNzKGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcj4gIHRyYWl0c190eXBlOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgICAgICAgICAgICByZXN1bHQgPSAwOwotICAgICAgICBwZWVrYWJsZV9zb3VyY2U8U291cmNlPiAgICBwZWVrKHNyYywgcHV0YmFja18pOwotICAgICAgICB3aGlsZSAocmVzdWx0IDwgbiAmJiBzdGF0ZV8gIT0gc19kb25lKSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGVfID09IHNfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZV8gPSBzX2hlYWRlcjsKLSAgICAgICAgICAgICAgICBoZWFkZXJfLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgZm9vdGVyXy5yZXNldCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0YXRlXyA9PSBzX2hlYWRlcikgewotICAgICAgICAgICAgICAgIGludCBjID0gbmRuYm9vc3Q6Omlvc3RyZWFtczo6Z2V0KHBlZWspOwotICAgICAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6aXNfZW9mKGMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZ3ppcF9lcnJvcihnemlwOjpiYWRfaGVhZGVyKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soYykpIHsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGhlYWRlcl8ucHJvY2VzcyhjKTsKLSAgICAgICAgICAgICAgICBpZiAoaGVhZGVyXy5kb25lKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlXyA9IHNfYm9keTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGVfID09IHNfYm9keSkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTo6cmVhZChwZWVrLCBzICsgcmVzdWx0LCBuIC0gcmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFtdCAhPSAtMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGFtdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbXQgPCBuIC0gcmVzdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcGVlay5wdXRiYWNrKHRoaXMtPnVuY29uc3VtZWRfaW5wdXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV8gPSBzX2Zvb3RlcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGNvbnN0IHpsaWJfZXJyb3ImIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGUpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgeyAvLyBzdGF0ZV8gPT0gc19mb290ZXIKLSAgICAgICAgICAgICAgICBpbnQgYyA9IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmdldChwZWVrKTsKLSAgICAgICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OmlzX2VvZihjKSkgewotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZ3ppcDo6YmFkX2Zvb3RlcikpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKGMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb290ZXJfLnByb2Nlc3MoYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGZvb3Rlcl8uZG9uZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmb290ZXJfLmNyYygpICE9IHRoaXMtPmNyYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGd6aXA6OmJhZF9jcmMpKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGMgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpnZXQocGVlayk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6aXNfZW9mKGMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV8gPSBzX2RvbmU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwZWVrLnB1dGJhY2soYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYXNlX3R5cGU6OmNsb3NlKHBlZWssIE5ETkJPT1NUX0lPUzo6aW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVfID0gc19zdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl8ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rlcl8ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAocGVlay5oYXNfdW5jb25zdW1lZF9pbnB1dCgpKSB7Ci0gICAgICAgICAgICBwdXRiYWNrXyA9IHBlZWsudW5jb25zdW1lZF9pbnB1dCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHV0YmFja18uY2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0ICE9IDAgfHwgc3RhdGVfICE9IHNfZG9uZSA/Ci0gICAgICAgICAgICByZXN1bHQgOgotICAgICAgICAgICAgLTE7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHZvaWQgY2xvc2UoU291cmNlJiBzcmMsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbSkKLSAgICB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBiYXNlX3R5cGU6OmNsb3NlKHNyYywgbSk7Ci0gICAgICAgIH0gY2F0Y2ggKGNvbnN0IHpsaWJfZXJyb3ImIGUpIHsKLSAgICAgICAgICAgIHN0YXRlXyA9IHNfc3RhcnQ7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZSkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtID09IE5ETkJPT1NUX0lPUzo6b3V0KSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGVfID09IHNfc3RhcnQgfHwgc3RhdGVfID09IHNfaGVhZGVyKQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZ3ppcF9lcnJvcihnemlwOjpiYWRfaGVhZGVyKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGF0ZV8gPT0gc19ib2R5KQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZ3ppcF9lcnJvcihnemlwOjpiYWRfZm9vdGVyKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGF0ZV8gPT0gc19mb290ZXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWZvb3Rlcl8uZG9uZSgpKQotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZ3ppcDo6YmFkX2Zvb3RlcikpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYoZm9vdGVyXy5jcmMoKSAhPSB0aGlzLT5jcmMoKSkKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGd6aXA6OmJhZF9jcmMpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCEiQmFkIHN0YXRlIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGVfID0gc19zdGFydDsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBmaWxlX25hbWUoKSBjb25zdCB7IHJldHVybiBoZWFkZXJfLmZpbGVfbmFtZSgpOyB9Ci0gICAgc3RkOjpzdHJpbmcgY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIGhlYWRlcl8uY29tbWVudCgpOyB9Ci0gICAgYm9vbCB0ZXh0KCkgY29uc3QgeyByZXR1cm4gaGVhZGVyXy50ZXh0KCk7IH0KLSAgICBpbnQgb3MoKSBjb25zdCB7IHJldHVybiBoZWFkZXJfLm9zKCk7IH0KLSAgICBzdGQ6OnRpbWVfdCBtdGltZSgpIGNvbnN0IHsgcmV0dXJuIGhlYWRlcl8ubXRpbWUoKTsgfQotcHJpdmF0ZToKLSAgICBzdGF0aWMgZ3ppcF9wYXJhbXMgbWFrZV9wYXJhbXMoaW50IHdpbmRvd19iaXRzKTsKLQotICAgIC8vIFNvdXJjZSBhZGFwdGVyIGFsbG93aW5nIGFuIGFyYml0cmFyeSBjaGFyYWN0ZXIgc2VxdWVuY2UgdG8gYmUgcHV0IGJhY2suCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHN0cnVjdCBwZWVrYWJsZV9zb3VyY2UgewotICAgICAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotICAgICAgICBzdHJ1Y3QgY2F0ZWdvcnkgOiBzb3VyY2VfdGFnLCBwZWVrYWJsZV90YWcgeyB9OwotICAgICAgICBleHBsaWNpdCBwZWVrYWJsZV9zb3VyY2UoU291cmNlJiBzcmMsIGNvbnN0IHN0cmluZ190eXBlJiBwdXRiYWNrID0gIiIpIAotICAgICAgICAgICAgOiBzcmNfKHNyYyksIHB1dGJhY2tfKHB1dGJhY2spLCBvZmZzZXRfKDApCi0gICAgICAgICAgICB7IH0KLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhciogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAwOwotCi0gICAgICAgICAgICAvLyBDb3B5IGNoYXJhY3RlcnMgZnJvbSBwdXRiYWNrIGJ1ZmZlcgotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIHBic2l6ZSA9IAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4ocHV0YmFja18uc2l6ZSgpKTsKLSAgICAgICAgICAgIGlmIChvZmZzZXRfIDwgcGJzaXplKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gKHN0ZDo6bWluKShuLCBwYnNpemUgLSBvZmZzZXRfKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcik6OmNvcHkoCi0gICAgICAgICAgICAgICAgICAgIHMsIHB1dGJhY2tfLmRhdGEoKSArIG9mZnNldF8sIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0XyArPSByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBuKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBSZWFkIGNoYXJhY3RlcnMgZnJvbSBzcmNfCi0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6cmVhZChzcmNfLCBzICsgcmVzdWx0LCBuIC0gcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiBhbXQgIT0gLTEgPyAKLSAgICAgICAgICAgICAgICByZXN1bHQgKyBhbXQgOiAKLSAgICAgICAgICAgICAgICByZXN1bHQgPyByZXN1bHQgOiAtMTsKLSAgICAgICAgfQotICAgICAgICBib29sIHB1dGJhY2soY2hhciBjKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAob2Zmc2V0XykgewotICAgICAgICAgICAgICAgIHB1dGJhY2tfWy0tb2Zmc2V0X10gPSBjOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmJhZF9wdXRiYWNrKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBwdXRiYWNrKGNvbnN0IHN0cmluZ190eXBlJiBzKQotICAgICAgICB7Ci0gICAgICAgICAgICBwdXRiYWNrXy5yZXBsYWNlKDAsIG9mZnNldF8sIHMpOwotICAgICAgICAgICAgb2Zmc2V0XyA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc29tZSBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBwdXRiYWNrIGJ1dCBub3QgcmUtcmVhZC4KLSAgICAgICAgYm9vbCBoYXNfdW5jb25zdW1lZF9pbnB1dCgpIGNvbnN0IAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0XyA8IHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4ocHV0YmFja18uc2l6ZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJldHVybnMgdGhlIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGJlZW4gcHV0IGJhY2sgYnV0IG5vdCByZS1yZWFkLgotICAgICAgICBzdHJpbmdfdHlwZSB1bmNvbnN1bWVkX2lucHV0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0cmluZ190eXBlKHB1dGJhY2tfLCBvZmZzZXRfLCBwdXRiYWNrXy5zaXplKCkgLSBvZmZzZXRfKTsKLSAgICAgICAgfQotICAgICAgICBTb3VyY2UmICAgICAgICAgIHNyY187Ci0gICAgICAgIHN0cmluZ190eXBlICAgICAgcHV0YmFja187Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAgb2Zmc2V0XzsKLSAgICB9OwotCi0gICAgZW51bSBzdGF0ZV90eXBlIHsKLSAgICAgICAgc19zdGFydCAgID0gMSwKLSAgICAgICAgc19oZWFkZXIgID0gc19zdGFydCArIDEsCi0gICAgICAgIHNfYm9keSAgICA9IHNfaGVhZGVyICsgMSwKLSAgICAgICAgc19mb290ZXIgID0gc19ib2R5ICsgMSwKLSAgICAgICAgc19kb25lICAgID0gc19mb290ZXIgKyAxCi0gICAgfTsKLSAgICBkZXRhaWw6Omd6aXBfaGVhZGVyICBoZWFkZXJfOwotICAgIGRldGFpbDo6Z3ppcF9mb290ZXIgIGZvb3Rlcl87Ci0gICAgc3RyaW5nX3R5cGUgICAgICAgICAgcHV0YmFja187Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgc3RhdGVfOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX2d6aXBfZGVjb21wcmVzc29yLCAxKQotCi10eXBlZGVmIGJhc2ljX2d6aXBfZGVjb21wcmVzc29yPD4gZ3ppcF9kZWNvbXByZXNzb3I7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgZ3ppcF9jb21wcmVzc29yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYmFzaWNfZ3ppcF9jb21wcmVzc29yPEFsbG9jPjo6YmFzaWNfZ3ppcF9jb21wcmVzc29yCi0gICAgKGNvbnN0IGd6aXBfcGFyYW1zJiBwLCBpbnQgYnVmZmVyX3NpemUpCi0gICAgOiBiYXNlX3R5cGUobm9ybWFsaXplX3BhcmFtcyhwKSwgYnVmZmVyX3NpemUpLAotICAgICAgb2Zmc2V0XygwKSwgZmxhZ3NfKDApCi17Ci0gICAgLy8gQ2FsY3VsYXRlIGd6aXAgaGVhZGVyLgotICAgIGJvb2wgaGFzX25hbWUgPSAhcC5maWxlX25hbWUuZW1wdHkoKTsKLSAgICBib29sIGhhc19jb21tZW50ID0gIXAuY29tbWVudC5lbXB0eSgpOwotCi0gICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBsZW5ndGggPQotICAgICAgICAxMCArCi0gICAgICAgIChoYXNfbmFtZSA/IHAuZmlsZV9uYW1lLnNpemUoKSArIDEgOiAwKSArCi0gICAgICAgIChoYXNfY29tbWVudCA/IHAuY29tbWVudC5zaXplKCkgKyAxIDogMCk7Ci0gICAgICAgIC8vICsgMjsgLy8gSGVhZGVyIGNyYyBjb25mdXNlcyBndW56aXAuCi0gICAgaW50IGZsYWdzID0KLSAgICAgICAgLy9nemlwOjpmbGFnczo6aGVhZGVyX2NyYyArCi0gICAgICAgIChoYXNfbmFtZSA/IGd6aXA6OmZsYWdzOjpuYW1lIDogMCkgKwotICAgICAgICAoaGFzX2NvbW1lbnQgPyBnemlwOjpmbGFnczo6Y29tbWVudCA6IDApOwotICAgIGludCBleHRyYV9mbGFncyA9Ci0gICAgICAgICggcC5sZXZlbCA9PSB6bGliOjpiZXN0X2NvbXByZXNzaW9uID8KLSAgICAgICAgICAgICAgZ3ppcDo6ZXh0cmFfZmxhZ3M6OmJlc3RfY29tcHJlc3Npb24gOgotICAgICAgICAgICAgICAwICkgKwotICAgICAgICAoIHAubGV2ZWwgPT0gemxpYjo6YmVzdF9zcGVlZCA/Ci0gICAgICAgICAgICAgIGd6aXA6OmV4dHJhX2ZsYWdzOjpiZXN0X3NwZWVkIDoKLSAgICAgICAgICAgICAgMCApOwotICAgIGhlYWRlcl8ucmVzZXJ2ZShsZW5ndGgpOwotICAgIGhlYWRlcl8gKz0gZ3ppcDo6bWFnaWM6OmlkMTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUQxLgotICAgIGhlYWRlcl8gKz0gZ3ppcDo6bWFnaWM6OmlkMjsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUQyLgotICAgIGhlYWRlcl8gKz0gZ3ppcDo6bWV0aG9kOjpkZWZsYXRlOyAgICAgICAgICAgICAgICAgICAgLy8gQ00uCi0gICAgaGVhZGVyXyArPSBzdGF0aWNfY2FzdDxjaGFyPihmbGFncyk7ICAgICAgICAgICAgICAgICAvLyBGTEcuCi0gICAgaGVhZGVyXyArPSBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgcC5tdGltZSk7ICAgICAgICAvLyBNVElNRS4KLSAgICBoZWFkZXJfICs9IHN0YXRpY19jYXN0PGNoYXI+KDB4RkYgJiAocC5tdGltZSA+PiA4KSk7Ci0gICAgaGVhZGVyXyArPSBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgKHAubXRpbWUgPj4gMTYpKTsKLSAgICBoZWFkZXJfICs9IHN0YXRpY19jYXN0PGNoYXI+KDB4RkYgJiAocC5tdGltZSA+PiAyNCkpOwotICAgIGhlYWRlcl8gKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oZXh0cmFfZmxhZ3MpOyAgICAgICAgICAgLy8gWEZMLgotICAgIGhlYWRlcl8gKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oZ3ppcDo6b3NfdW5rbm93bik7ICAgICAgLy8gT1MuCi0gICAgaWYgKGhhc19uYW1lKSB7Ci0gICAgICAgIGhlYWRlcl8gKz0gcC5maWxlX25hbWU7Ci0gICAgICAgIGhlYWRlcl8gKz0gJ1wwJzsKLSAgICB9Ci0gICAgaWYgKGhhc19jb21tZW50KSB7Ci0gICAgICAgIGhlYWRlcl8gKz0gcC5jb21tZW50OwotICAgICAgICBoZWFkZXJfICs9ICdcMCc7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWd6aXBfcGFyYW1zIGJhc2ljX2d6aXBfY29tcHJlc3NvcjxBbGxvYz46Om5vcm1hbGl6ZV9wYXJhbXMoZ3ppcF9wYXJhbXMgcCkKLXsKLSAgICBwLm5vaGVhZGVyID0gdHJ1ZTsKLSAgICBwLmNhbGN1bGF0ZV9jcmMgPSB0cnVlOwotICAgIHJldHVybiBwOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXZvaWQgYmFzaWNfZ3ppcF9jb21wcmVzc29yPEFsbG9jPjo6cHJlcGFyZV9mb290ZXIoKQotewotICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmJhY2tfaW5zZXJ0X2RldmljZTxzdGQ6OnN0cmluZz4gb3V0KGZvb3Rlcl8pOwotICAgIHdyaXRlX2xvbmcodGhpcy0+Y3JjKCksIG91dCk7Ci0gICAgd3JpdGVfbG9uZyh0aGlzLT50b3RhbF9pbigpLCBvdXQpOwotICAgIGZsYWdzXyB8PSBmX2JvZHlfZG9uZTsKLSAgICBvZmZzZXRfID0gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1zdGQ6OnN0cmVhbXNpemUgYmFzaWNfZ3ppcF9jb21wcmVzc29yPEFsbG9jPjo6cmVhZF9zdHJpbmcKLSAgICAoY2hhciogcywgc3RkOjpzdHJlYW1zaXplIG4sIHN0ZDo6c3RyaW5nJiBzdHIpCi17Ci0gICAgc3RkOjpzdHJlYW1zaXplIGF2YWlsID0KLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihzdHIuc2l6ZSgpIC0gb2Zmc2V0Xyk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IChzdGQ6Om1pbikoYXZhaWwsIG4pOwotICAgIHN0ZDo6Y29weSggc3RyLmRhdGEoKSArIG9mZnNldF8sCi0gICAgICAgICAgICAgICBzdHIuZGF0YSgpICsgb2Zmc2V0XyArIGFtdCwKLSAgICAgICAgICAgICAgIHMgKTsKLSAgICBvZmZzZXRfICs9IGFtdDsKLSAgICBpZiAoICEoZmxhZ3NfICYgZl9oZWFkZXJfZG9uZSkgJiYKLSAgICAgICAgIG9mZnNldF8gPT0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHN0ci5zaXplKCkpICkKLSAgICB7Ci0gICAgICAgIGZsYWdzXyB8PSBmX2hlYWRlcl9kb25lOwotICAgIH0KLSAgICByZXR1cm4gYW10OwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGd6aXBfZGVjb21wcmVzc29yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJhc2ljX2d6aXBfZGVjb21wcmVzc29yPEFsbG9jPjo6YmFzaWNfZ3ppcF9kZWNvbXByZXNzb3IKLSAgICAoaW50IHdpbmRvd19iaXRzLCBpbnQgYnVmZmVyX3NpemUpCi0gICAgOiBiYXNlX3R5cGUobWFrZV9wYXJhbXMod2luZG93X2JpdHMpLCBidWZmZXJfc2l6ZSksCi0gICAgICBzdGF0ZV8oc19zdGFydCkKLSAgICB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1nemlwX3BhcmFtcyBiYXNpY19nemlwX2RlY29tcHJlc3NvcjxBbGxvYz46Om1ha2VfcGFyYW1zKGludCB3aW5kb3dfYml0cykKLXsKLSAgICBnemlwX3BhcmFtcyBwOwotICAgIHAud2luZG93X2JpdHMgPSB3aW5kb3dfYml0czsKLSAgICBwLm5vaGVhZGVyID0gdHJ1ZTsKLSAgICBwLmNhbGN1bGF0ZV9jcmMgPSB0cnVlOwotICAgIHJldHVybiBwOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19HWklQX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2xpbmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2xpbmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODM5OWIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9saW5lLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTElORV9GSUxURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19MSU5FX0ZJTFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbi4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoZWNrZWRfb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgICAgICAgICAvLyBvcGVubW9kZSwgc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+ICAgICAgICAgICAgICAgIC8vIGNoZWNrX2VvZiAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy93cml0ZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAvLyBWQzcuMSBDNDI0NC4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBsaW5lX2ZpbHRlci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIENoIC0gVGhlIGNoYXJhY3RlciB0eXBlLgotLy8gICAgICBBbGxvYyAtIFRoZSBhbGxvY2F0b3IgdHlwZS4KLS8vIERlc2NyaXB0aW9uOiBGaWx0ZXIgd2hpY2ggcHJvY2Vzc2VzIGRhdGEgb25lIGxpbmUgYXQgYSB0aW1lLgotLy8KLXRlbXBsYXRlPCB0eXBlbmFtZSBDaCwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9Ci0gICAgICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykKLSAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Q2g+OjphbGxvY2F0b3JfdHlwZQotICAgICAgICAgICNlbHNlCi0gICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPENoPgotICAgICAgICAgICNlbmRpZgotICAgICAgICAgID4KLWNsYXNzIGJhc2ljX2xpbmVfZmlsdGVyIHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxDaD46OnRyYWl0c190eXBlICBzdHJpbmdfdHJhaXRzOwotcHVibGljOgotICAgIHR5cGVkZWYgQ2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzwKLSAgICAgICAgICAgICAgICBDaCwKLSAgICAgICAgICAgICAgICBzdHJpbmdfdHJhaXRzLAotICAgICAgICAgICAgICAgIEFsbG9jCi0gICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIG11bHRpY2hhcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLXByb3RlY3RlZDoKLSAgICBiYXNpY19saW5lX2ZpbHRlcihib29sIHN1cHByZXNzX25ld2xpbmVzID0gZmFsc2UpIAotICAgICAgICA6IHBvc18oc3RyaW5nX3R5cGU6Om5wb3MpLCAKLSAgICAgICAgICBmbGFnc18oc3VwcHJlc3NfbmV3bGluZXMgPyBmX3N1cHByZXNzIDogMCkgCi0gICAgICAgIHsgfQotcHVibGljOgotICAgIHZpcnR1YWwgfmJhc2ljX2xpbmVfZmlsdGVyKCkgeyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBORE5CT09TVF9BU1NFUlQoIShmbGFnc18gJiBmX3dyaXRlKSk7Ci0gICAgICAgIGZsYWdzXyB8PSBmX3JlYWQ7Ci0KLSAgICAgICAgLy8gSGFuZGxlIHVuZmluaXNoZWQgYnVzaW5lc3MuCi0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAwOwotICAgICAgICBpZiAoIWN1cl9saW5lXy5lbXB0eSgpICYmIChyZXN1bHQgPSByZWFkX2xpbmUocywgbikpID09IG4pCi0gICAgICAgICAgICByZXR1cm4gbjsKLQotICAgICAgICB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgc3RhdHVzID0gdHJhaXRzX3R5cGU6Omdvb2QoKTsKLSAgICAgICAgd2hpbGUgKHJlc3VsdCA8IG4gJiYgIXRyYWl0c190eXBlOjppc19lb2Yoc3RhdHVzKSkgewotCi0gICAgICAgICAgICAvLyBDYWxsIG5leHRfbGluZSgpIHRvIHJldHJpZXZlIGEgbGluZSBvZiBmaWx0ZXJlZCB0ZXh0LCBhbmQKLSAgICAgICAgICAgIC8vIHJlYWRfbGluZSgpIHRvIGNvcHkgaXQgaW50byBidWZmZXIgcy4KLSAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soc3RhdHVzID0gbmV4dF9saW5lKHNyYykpKQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQgKz0gcmVhZF9saW5lKHMgKyByZXN1bHQsIG4gLSByZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRldGFpbDo6Y2hlY2tfZW9mKHJlc3VsdCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCEoZmxhZ3NfICYgZl9yZWFkKSk7Ci0gICAgICAgIGZsYWdzXyB8PSBmX3dyaXRlOwotCi0gICAgICAgIC8vIEhhbmRsZSB1bmZpbmlzaGVkIGJ1c2luZXNzLgotICAgICAgICBpZiAocG9zXyAhPSBzdHJpbmdfdHlwZTo6bnBvcyAmJiAhd3JpdGVfbGluZShzbmspKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgY29uc3QgY2hhcl90eXBlICpjdXIgPSBzLCAqbmV4dDsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLQotICAgICAgICAgICAgLy8gU2VhcmNoIGZvciB0aGUgbmV4dCBmdWxsIGxpbmUgaW4gW2N1ciwgcyArIG4pLCBmaWx0ZXIgaXQKLSAgICAgICAgICAgIC8vIGFuZCB3cml0ZSBpdCB0byBzbmsuCi0gICAgICAgICAgICB0eXBlbmFtZSBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIHJlc3QgPSBuIC0gKGN1ciAtIHMpOwotICAgICAgICAgICAgaWYgKChuZXh0ID0gdHJhaXRzX3R5cGU6OmZpbmQoY3VyLCByZXN0LCB0cmFpdHNfdHlwZTo6bmV3bGluZSgpKSkpIHsKLSAgICAgICAgICAgICAgICBjdXJfbGluZV8uYXBwZW5kKGN1ciwgbmV4dCAtIGN1cik7Ci0gICAgICAgICAgICAgICAgY3VyID0gbmV4dCArIDE7Ci0gICAgICAgICAgICAgICAgaWYgKCF3cml0ZV9saW5lKHNuaykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGN1ciAtIHMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjdXJfbGluZV8uYXBwZW5kKGN1ciwgcmVzdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY2xvc2UoU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKChmbGFnc18gJiBmX3JlYWQpICYmIHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0KLSAgICAgICAgaWYgKChmbGFnc18gJiBmX3dyaXRlKSAmJiB3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBpZiAoIWN1cl9saW5lXy5lbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICB3cml0ZV9saW5lKHNuayk7Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7IH0KLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNsb3NlX2ltcGwoKTsKLSAgICAgICAgfQotICAgIH0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCBzdHJpbmdfdHlwZSBkb19maWx0ZXIoY29uc3Qgc3RyaW5nX3R5cGUmIGxpbmUpID0gMDsKLQotICAgIC8vIENvcGllcyBmaWx0ZXJlZCBjaGFyYWN0ZXJzIGZyb24gdGhlIGN1cnJlbnQgbGluZSBpbnRvCi0gICAgLy8gdGhlIGdpdmVuIGJ1ZmZlci4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZF9saW5lKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0KLSAgICAgICAgICAgIChzdGQ6Om1pbikgKG4sIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oY3VyX2xpbmVfLnNpemUoKSkpOwotICAgICAgICB0cmFpdHNfdHlwZTo6Y29weShzLCBjdXJfbGluZV8uZGF0YSgpLCByZXN1bHQpOwotICAgICAgICBjdXJfbGluZV8uZXJhc2UoMCwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICAvLyBBdHRlbXB0cyB0byByZXRyaWV2ZSBhIGxpbmUgb2YgdGV4dCBmcm9tIHRoZSBnaXZlbiBzb3VyY2U7IHJldHVybnMKLSAgICAvLyBhbiBpbnRfdHlwZSBhcyBhIGdvb2QvZW9mL3dvdWxkX2Jsb2NrIHN0YXR1cyBjb2RlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgbmV4dF9saW5lKFNvdXJjZSYgc3JjKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBlIGM7Ci0gICAgICAgIHdoaWxlICggdHJhaXRzX3R5cGU6OmlzX2dvb2QoYyA9IGlvc3RyZWFtczo6Z2V0KHNyYykpICYmCi0gICAgICAgICAgICAgICAgYyAhPSB0cmFpdHNfdHlwZTo6bmV3bGluZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgY3VyX2xpbmVfICs9IHRyYWl0c190eXBlOjp0b19pbnRfdHlwZShjKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXRyYWl0c190eXBlOjp3b3VsZF9ibG9jayhjKSkgewotICAgICAgICAgICAgaWYgKCFjdXJfbGluZV8uZW1wdHkoKSB8fCBjID09IHRyYWl0c190eXBlOjpuZXdsaW5lKCkpCi0gICAgICAgICAgICAgICAgY3VyX2xpbmVfID0gZG9fZmlsdGVyKGN1cl9saW5lXyk7Ci0gICAgICAgICAgICBpZiAoYyA9PSB0cmFpdHNfdHlwZTo6bmV3bGluZSgpICYmIChmbGFnc18gJiBmX3N1cHByZXNzKSA9PSAwKQotICAgICAgICAgICAgICAgIGN1cl9saW5lXyArPSBjOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBjOyAvLyBzdGF0dXMgaW5kaWNhdG9yLgotICAgIH0KLQotICAgIC8vIEZpbHRlcnMgdGhlIGN1cnJlbnQgbGluZSBhbmQgYXR0ZW1wcyB0byB3cml0ZSBpdCB0byB0aGUgZ2l2ZW4gc2luay4KLSAgICAvLyBSZXR1cm5zIHRydWUgZm9yIHN1Y2Nlc3MuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIHdyaXRlX2xpbmUoU2luayYgc25rKQotICAgIHsKLSAgICAgICAgc3RyaW5nX3R5cGUgbGluZSA9IGRvX2ZpbHRlcihjdXJfbGluZV8pOwotICAgICAgICBpZiAoKGZsYWdzXyAmIGZfc3VwcHJlc3MpID09IDApCi0gICAgICAgICAgICBsaW5lICs9IHRyYWl0c190eXBlOjpuZXdsaW5lKCk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGxpbmUuc2l6ZSgpKTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBpb3N0cmVhbXM6OndyaXRlX2lmKHNuaywgbGluZS5kYXRhKCksIGFtdCkgPT0gYW10OwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB2b2lkIGNsb3NlX2ltcGwoKQotICAgIHsKLSAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgZmxhZ3NfICY9IGZfc3VwcHJlc3M7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBjdXJfbGluZV8uZXJhc2UoKTsKLSAgICAgICAgcG9zXyA9IHN0cmluZ190eXBlOjpucG9zOwotICAgIH0KLQotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl9yZWFkICAgICAgPSAxLAotICAgICAgICBmX3dyaXRlICAgICA9IGZfcmVhZCA8PCAxLAotICAgICAgICBmX3N1cHByZXNzICA9IGZfd3JpdGUgPDwgMQotICAgIH07Ci0KLSAgICBzdHJpbmdfdHlwZSAgICAgICAgICAgICAgICAgICAgICBjdXJfbGluZV87Ci0gICAgdHlwZW5hbWUgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSAgcG9zXzsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc187Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYmFzaWNfbGluZV9maWx0ZXIsIDIpCi0KLXR5cGVkZWYgYmFzaWNfbGluZV9maWx0ZXI8Y2hhcj4gICAgIGxpbmVfZmlsdGVyOwotdHlwZWRlZiBiYXNpY19saW5lX2ZpbHRlcjx3Y2hhcl90PiAgd2xpbmVfZmlsdGVyOwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19MSU5FX0ZJTFRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9uZXdsaW5lLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9uZXdsaW5lLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ3YTVlZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvbmV3bGluZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NDIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIE5PVEU6IEkgaG9wZSB0byByZXBsYWNlIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHdpdGggYSBtdWNoIHNpbXBsZXIKLS8vIG9uZS4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTkVXTElORV9GSUxURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ORVdMSU5FX0ZJTFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+ICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpY19lcnJvci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9yZWFkLmhwcD4gICAgICAgIC8vIGdldCAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwPiAgICAgICAvLyBwdXQgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcHV0YmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQVNTRVJUX1VOUkVBQ0hBQkxFKHZhbCkgXAotICAgIChORE5CT09TVF9BU1NFUlQoInVucmVhY2hhYmxlIGNvZGUiID09IDApLCB2YWwpIFwKLSAgICAvKiovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgbmV3bGluZSB7Ci0KLWNvbnN0IGNoYXIgQ1IgICAgICAgICAgICAgICAgICAgPSAweDBEOwotY29uc3QgY2hhciBMRiAgICAgICAgICAgICAgICAgICA9IDB4MEE7Ci0KLSAgICAvLyBGbGFncyBmb3IgY29uZmlndXJpbmcgbmV3bGluZV9maWx0ZXIuCi0KLS8vIEV4YWN0bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgZmxhZ3MgbXVzdCBiZSBwcmVzZW50LgotCi1jb25zdCBpbnQgcG9zaXggICAgICAgICAgICAgPSAxOyAgICAvLyBVc2UgQ1IgYXMgbGluZSBzZXBhcmF0b3IuCi1jb25zdCBpbnQgbWFjICAgICAgICAgICAgICAgPSAyOyAgICAvLyBVc2UgTEYgYXMgbGluZSBzZXBhcmF0b3IuCi1jb25zdCBpbnQgZG9zICAgICAgICAgICAgICAgPSA0OyAgICAvLyBVc2UgQ1JMRiBhcyBsaW5lIHNlcGFyYXRvci4KLWNvbnN0IGludCBtaXhlZCAgICAgICAgICAgICA9IDg7ICAgIC8vIE1peGVkIGxpbmUgZW5kaW5ncy4KLWNvbnN0IGludCBmaW5hbF9uZXdsaW5lICAgICA9IDE2OwotY29uc3QgaW50IHBsYXRmb3JtX21hc2sgICAgID0gcG9zaXggfCBkb3MgfCBtYWM7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBuZXdsaW5lLgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotY2xhc3MgbmV3bGluZV9iYXNlIHsKLXB1YmxpYzoKLSAgICBib29sIGlzX3Bvc2l4KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhaXNfbWl4ZWQoKSAmJiAoZmxhZ3NfICYgbmV3bGluZTo6cG9zaXgpICE9IDA7Ci0gICAgfQotICAgIGJvb2wgaXNfZG9zKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhaXNfbWl4ZWQoKSAmJiAoZmxhZ3NfICYgbmV3bGluZTo6ZG9zKSAhPSAwOwotICAgIH0KLSAgICBib29sIGlzX21hYygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIWlzX21peGVkKCkgJiYgKGZsYWdzXyAmIG5ld2xpbmU6Om1hYykgIT0gMDsKLSAgICB9Ci0gICAgYm9vbCBpc19taXhlZF9wb3NpeCgpIGNvbnN0IHsgcmV0dXJuIChmbGFnc18gJiBuZXdsaW5lOjpwb3NpeCkgIT0gMDsgfQotICAgIGJvb2wgaXNfbWl4ZWRfZG9zKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIG5ld2xpbmU6OmRvcykgIT0gMDsgfQotICAgIGJvb2wgaXNfbWl4ZWRfbWFjKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIG5ld2xpbmU6Om1hYykgIT0gMDsgfQotICAgIGJvb2wgaXNfbWl4ZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgaW50IHBsYXRmb3JtID0KLSAgICAgICAgICAgIChmbGFnc18gJiBuZXdsaW5lOjpwb3NpeCkgIT0gMCA/Ci0gICAgICAgICAgICAgICAgbmV3bGluZTo6cG9zaXggOgotICAgICAgICAgICAgICAgIChmbGFnc18gJiBuZXdsaW5lOjpkb3MpICE9IDAgPwotICAgICAgICAgICAgICAgICAgICBuZXdsaW5lOjpkb3MgOgotICAgICAgICAgICAgICAgICAgICAoZmxhZ3NfICYgbmV3bGluZTo6bWFjKSAhPSAwID8KLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU6Om1hYyA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAwOwotICAgICAgICByZXR1cm4gKGZsYWdzXyAmIH5wbGF0Zm9ybSAmIG5ld2xpbmU6OnBsYXRmb3JtX21hc2spICE9IDA7Ci0gICAgfQotICAgIGJvb2wgaGFzX2ZpbmFsX25ld2xpbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIChmbGFnc18gJiBuZXdsaW5lOjpmaW5hbF9uZXdsaW5lKSAhPSAwOwotICAgIH0KLXByb3RlY3RlZDoKLSAgICBuZXdsaW5lX2Jhc2UoaW50IGZsYWdzKSA6IGZsYWdzXyhmbGFncykgeyB9Ci0gICAgaW50IGZsYWdzXzsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLWNsYXNzIG5ld2xpbmVfZXJyb3IKLSAgICA6IHB1YmxpYyBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSwgcHVibGljIGRldGFpbDo6bmV3bGluZV9iYXNlCi17Ci1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBuZXdsaW5lX2NoZWNrZXI7Ci0gICAgbmV3bGluZV9lcnJvcihpbnQgZmxhZ3MpCi0gICAgICAgIDogTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImJhZCBsaW5lIGVuZGluZ3MiKSwKLSAgICAgICAgICBkZXRhaWw6Om5ld2xpbmVfYmFzZShmbGFncykKLSAgICAgICAgeyB9Ci19OwotCi1jbGFzcyBuZXdsaW5lX2ZpbHRlciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0KLSAgICBleHBsaWNpdCBuZXdsaW5lX2ZpbHRlcihpbnQgdGFyZ2V0KSA6IGZsYWdzXyh0YXJnZXQpCi0gICAgewotICAgICAgICBpZiAoIHRhcmdldCAhPSBpb3N0cmVhbXM6Om5ld2xpbmU6OnBvc2l4ICYmCi0gICAgICAgICAgICAgdGFyZ2V0ICE9IGlvc3RyZWFtczo6bmV3bGluZTo6ZG9zICYmCi0gICAgICAgICAgICAgdGFyZ2V0ICE9IGlvc3RyZWFtczo6bmV3bGluZTo6bWFjICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6OmxvZ2ljX2Vycm9yKCJiYWQgZmxhZ3MiKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgaW50IGdldChTb3VyY2UmIHNyYykKLSAgICB7Ci0gICAgICAgIHVzaW5nIGlvc3RyZWFtczo6bmV3bGluZTo6Q1I7Ci0gICAgICAgIHVzaW5nIGlvc3RyZWFtczo6bmV3bGluZTo6TEY7Ci0KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKChmbGFnc18gJiBmX3dyaXRlKSA9PSAwKTsKLSAgICAgICAgZmxhZ3NfIHw9IGZfcmVhZDsKLQotICAgICAgICBpZiAoZmxhZ3NfICYgKGZfaGFzX0xGIHwgZl9oYXNfRU9GKSkgewotICAgICAgICAgICAgaWYgKGZsYWdzXyAmIGZfaGFzX0xGKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXdsaW5lKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIEVPRjsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBjID0KLSAgICAgICAgICAgIChmbGFnc18gJiBmX2hhc19DUikgPT0gMCA/Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpnZXQoc3JjKSA6Ci0gICAgICAgICAgICAgICAgQ1I7Ci0KLSAgICAgICAgaWYgKGMgPT0gV09VTERfQkxPQ0sgKQotICAgICAgICAgICAgcmV0dXJuIFdPVUxEX0JMT0NLOwotCi0gICAgICAgIGlmIChjID09IENSKSB7Ci0gICAgICAgICAgICBmbGFnc18gfD0gZl9oYXNfQ1I7Ci0KLSAgICAgICAgICAgIGludCBkOwotICAgICAgICAgICAgaWYgKChkID0gaW9zdHJlYW1zOjpnZXQoc3JjKSkgPT0gV09VTERfQkxPQ0spCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdPVUxEX0JMT0NLOwotCi0gICAgICAgICAgICBpZiAoZCA9PSBMRikgewotICAgICAgICAgICAgICAgIGZsYWdzXyAmPSB+Zl9oYXNfQ1I7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ld2xpbmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGQgPT0gRU9GKSB7Ci0gICAgICAgICAgICAgICAgZmxhZ3NfIHw9IGZfaGFzX0VPRjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpwdXRiYWNrKHNyYywgZCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZsYWdzXyAmPSB+Zl9oYXNfQ1I7Ci0gICAgICAgICAgICByZXR1cm4gbmV3bGluZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGMgPT0gTEYpCi0gICAgICAgICAgICByZXR1cm4gbmV3bGluZSgpOwotCi0gICAgICAgIHJldHVybiBjOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgYm9vbCBwdXQoU2luayYgZGVzdCwgY2hhciBjKQotICAgIHsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpDUjsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpMRjsKLQotICAgICAgICBORE5CT09TVF9BU1NFUlQoKGZsYWdzXyAmIGZfcmVhZCkgPT0gMCk7Ci0gICAgICAgIGZsYWdzXyB8PSBmX3dyaXRlOwotCi0gICAgICAgIGlmICgoZmxhZ3NfICYgZl9oYXNfTEYpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gYyA9PSBMRiA/Ci0gICAgICAgICAgICAgICAgbmV3bGluZShkZXN0KSA6Ci0gICAgICAgICAgICAgICAgbmV3bGluZShkZXN0KSAmJiB0aGlzLT5wdXQoZGVzdCwgYyk7Ci0KLSAgICAgICAgaWYgKGMgPT0gTEYpCi0gICAgICAgICAgIHJldHVybiBuZXdsaW5lKGRlc3QpOwotCi0gICAgICAgIGlmICgoZmxhZ3NfICYgZl9oYXNfQ1IpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gbmV3bGluZShkZXN0KSA/Ci0gICAgICAgICAgICAgICAgdGhpcy0+cHV0KGRlc3QsIGMpIDoKLSAgICAgICAgICAgICAgICBmYWxzZTsKLQotICAgICAgICBpZiAoYyA9PSBDUikgewotICAgICAgICAgICAgZmxhZ3NfIHw9IGZfaGFzX0NSOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjpwdXQoZGVzdCwgYyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmIGRlc3QsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8U2luaz46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIGlmICgoZmxhZ3NfICYgZl93cml0ZSkgIT0gMCAmJiAoZmxhZ3NfICYgZl9oYXNfQ1IpICE9IDApCi0gICAgICAgICAgICBuZXdsaW5lX2lmX3NpbmsoZGVzdCk7Ci0gICAgICAgIGZsYWdzXyAmPSB+Zl9oYXNfTEY7IC8vIFJlc3RvcmUgb3JpZ2luYWwgZmxhZ3MuCi0gICAgfQotcHJpdmF0ZToKLQotICAgIC8vIFJldHVybnMgdGhlIGFwcHJvcHJpYXRlIGVsZW1lbnQgb2YgYSBuZXdsaW5lIHNlcXVlbmNlLgotICAgIGludCBuZXdsaW5lKCkKLSAgICB7Ci0gICAgICAgIHVzaW5nIGlvc3RyZWFtczo6bmV3bGluZTo6Q1I7Ci0gICAgICAgIHVzaW5nIGlvc3RyZWFtczo6bmV3bGluZTo6TEY7Ci0KLSAgICAgICAgc3dpdGNoIChmbGFnc18gJiBpb3N0cmVhbXM6Om5ld2xpbmU6OnBsYXRmb3JtX21hc2spIHsKLSAgICAgICAgY2FzZSBpb3N0cmVhbXM6Om5ld2xpbmU6OnBvc2l4OgotICAgICAgICAgICAgcmV0dXJuIExGOwotICAgICAgICBjYXNlIGlvc3RyZWFtczo6bmV3bGluZTo6bWFjOgotICAgICAgICAgICAgcmV0dXJuIENSOwotICAgICAgICBjYXNlIGlvc3RyZWFtczo6bmV3bGluZTo6ZG9zOgotICAgICAgICAgICAgaWYgKGZsYWdzXyAmIGZfaGFzX0xGKSB7Ci0gICAgICAgICAgICAgICAgZmxhZ3NfICY9IH5mX2hhc19MRjsKLSAgICAgICAgICAgICAgICByZXR1cm4gTEY7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZsYWdzXyB8PSBmX2hhc19MRjsKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19BU1NFUlRfVU5SRUFDSEFCTEUoMCk7Ci0gICAgfQotCi0gICAgLy8gV3JpdGVzIGEgbmV3bGluZSBzZXF1ZW5jZS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIGJvb2wgbmV3bGluZShTaW5rJiBkZXN0KQotICAgIHsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpDUjsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpMRjsKLQotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgc3dpdGNoIChmbGFnc18gJiBpb3N0cmVhbXM6Om5ld2xpbmU6OnBsYXRmb3JtX21hc2spIHsKLSAgICAgICAgY2FzZSBpb3N0cmVhbXM6Om5ld2xpbmU6OnBvc2l4OgotICAgICAgICAgICAgc3VjY2VzcyA9IG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChkZXN0LCBMRik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBpb3N0cmVhbXM6Om5ld2xpbmU6Om1hYzoKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpwdXQoZGVzdCwgQ1IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgaW9zdHJlYW1zOjpuZXdsaW5lOjpkb3M6Ci0gICAgICAgICAgICBpZiAoKGZsYWdzXyAmIGZfaGFzX0xGKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChzdWNjZXNzID0gbmRuYm9vc3Q6Omlvc3RyZWFtczo6cHV0KGRlc3QsIExGKSkpCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzXyAmPSB+Zl9oYXNfTEY7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChkZXN0LCBDUikpIHsKLSAgICAgICAgICAgICAgICBpZiAoIShzdWNjZXNzID0gbmRuYm9vc3Q6Omlvc3RyZWFtczo6cHV0KGRlc3QsIExGKSkpCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzXyB8PSBmX2hhc19MRjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzdWNjZXNzKQotICAgICAgICAgICAgZmxhZ3NfICY9IH5mX2hhc19DUjsKLSAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7Ci0gICAgfQotCi0gICAgLy8gV3JpdGVzIGEgbmV3bGluZSBzZXF1ZW5jZSBpZiB0aGUgZ2l2ZW4gZGV2aWNlIGlzIGEgU2luay4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBuZXdsaW5lX2lmX3NpbmsoRGV2aWNlJiBkZXN0KSAKLSAgICB7IAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8RGV2aWNlPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgbmV3bGluZV9pZl9zaW5rKGRlc3QsIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+KCkpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgbmV3bGluZV9pZl9zaW5rKFNpbmsmIGRlc3QsIG1wbDo6dHJ1ZV8pIHsgbmV3bGluZShkZXN0KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHZvaWQgbmV3bGluZV9pZl9zaW5rKFNvdXJjZSYsIG1wbDo6ZmFsc2VfKSB7IH0KLQotICAgIGVudW0gZmxhZ3MgewotICAgICAgICBmX2hhc19MRiAgICAgICAgID0gMzI3NjgsCi0gICAgICAgIGZfaGFzX0NSICAgICAgICAgPSBmX2hhc19MRiA8PCAxLAotICAgICAgICBmX2hhc19uZXdsaW5lICAgID0gZl9oYXNfQ1IgPDwgMSwKLSAgICAgICAgZl9oYXNfRU9GICAgICAgICA9IGZfaGFzX25ld2xpbmUgPDwgMSwKLSAgICAgICAgZl9yZWFkICAgICAgICAgICA9IGZfaGFzX0VPRiA8PCAxLAotICAgICAgICBmX3dyaXRlICAgICAgICAgID0gZl9yZWFkIDw8IDEKLSAgICB9OwotICAgIGludCAgICAgICBmbGFnc187Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUobmV3bGluZV9maWx0ZXIsIDApCi0KLWNsYXNzIG5ld2xpbmVfY2hlY2tlciA6IHB1YmxpYyBkZXRhaWw6Om5ld2xpbmVfYmFzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogZHVhbF91c2VfZmlsdGVyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIGV4cGxpY2l0IG5ld2xpbmVfY2hlY2tlcihpbnQgdGFyZ2V0ID0gbmV3bGluZTo6bWl4ZWQpCi0gICAgICAgIDogZGV0YWlsOjpuZXdsaW5lX2Jhc2UoMCksIHRhcmdldF8odGFyZ2V0KSwgb3Blbl8oZmFsc2UpCi0gICAgICAgIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBpbnQgZ2V0KFNvdXJjZSYgc3JjKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmV3bGluZTo6Q1I7Ci0gICAgICAgIHVzaW5nIG5ld2xpbmU6OkxGOwotCi0gICAgICAgIGlmICghb3Blbl8pIHsKLSAgICAgICAgICAgIG9wZW5fID0gdHJ1ZTsKLSAgICAgICAgICAgIHNvdXJjZSgpID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBjOwotICAgICAgICBpZiAoKGMgPSBpb3N0cmVhbXM6OmdldChzcmMpKSA9PSBXT1VMRF9CTE9DSykKLSAgICAgICAgICAgIHJldHVybiBXT1VMRF9CTE9DSzsKLQotICAgICAgICAvLyBVcGRhdGUgc291cmNlIGZsYWdzLgotICAgICAgICBpZiAoYyAhPSBFT0YpCi0gICAgICAgICAgICBzb3VyY2UoKSAmPSB+Zl9saW5lX2NvbXBsZXRlOwotICAgICAgICBpZiAoKHNvdXJjZSgpICYgZl9oYXNfQ1IpICE9IDApIHsKLSAgICAgICAgICAgIGlmIChjID09IExGKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlKCkgfD0gbmV3bGluZTo6ZG9zOwotICAgICAgICAgICAgICAgIHNvdXJjZSgpIHw9IGZfbGluZV9jb21wbGV0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc291cmNlKCkgfD0gbmV3bGluZTo6bWFjOwotICAgICAgICAgICAgICAgIGlmIChjID09IEVPRikKLSAgICAgICAgICAgICAgICAgICAgc291cmNlKCkgfD0gZl9saW5lX2NvbXBsZXRlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGMgPT0gTEYpIHsKLSAgICAgICAgICAgIHNvdXJjZSgpIHw9IG5ld2xpbmU6OnBvc2l4OwotICAgICAgICAgICAgc291cmNlKCkgfD0gZl9saW5lX2NvbXBsZXRlOwotICAgICAgICB9Ci0gICAgICAgIHNvdXJjZSgpID0gKHNvdXJjZSgpICYgfmZfaGFzX0NSKSB8IChjID09IENSID8gZl9oYXNfQ1IgOiAwKTsKLQotICAgICAgICAvLyBDaGVjayBmb3IgZXJyb3JzLgotICAgICAgICBpZiAoIGMgPT0gRU9GICYmCi0gICAgICAgICAgICAodGFyZ2V0XyAmIG5ld2xpbmU6OmZpbmFsX25ld2xpbmUpICE9IDAgJiYKLSAgICAgICAgICAgIChzb3VyY2UoKSAmIGZfbGluZV9jb21wbGV0ZSkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoICh0YXJnZXRfICYgbmV3bGluZTo6cGxhdGZvcm1fbWFzaykgIT0gMCAmJgotICAgICAgICAgICAgIChzb3VyY2UoKSAmIH50YXJnZXRfICYgbmV3bGluZTo6cGxhdGZvcm1fbWFzaykgIT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBjOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgYm9vbCBwdXQoU2luayYgZGVzdCwgaW50IGMpCi0gICAgewotICAgICAgICB1c2luZyBpb3N0cmVhbXM6Om5ld2xpbmU6OkNSOwotICAgICAgICB1c2luZyBpb3N0cmVhbXM6Om5ld2xpbmU6OkxGOwotCi0gICAgICAgIGlmICghb3Blbl8pIHsKLSAgICAgICAgICAgIG9wZW5fID0gdHJ1ZTsKLSAgICAgICAgICAgIHNvdXJjZSgpID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghaW9zdHJlYW1zOjpwdXQoZGVzdCwgYykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgIC8vIFVwZGF0ZSBzb3VyY2UgZmxhZ3MuCi0gICAgICAgIHNvdXJjZSgpICY9IH5mX2xpbmVfY29tcGxldGU7Ci0gICAgICAgIGlmICgoc291cmNlKCkgJiBmX2hhc19DUikgIT0gMCkgewotICAgICAgICAgICAgaWYgKGMgPT0gTEYpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UoKSB8PSBuZXdsaW5lOjpkb3M7Ci0gICAgICAgICAgICAgICAgc291cmNlKCkgfD0gZl9saW5lX2NvbXBsZXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UoKSB8PSBuZXdsaW5lOjptYWM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSBMRikgewotICAgICAgICAgICAgc291cmNlKCkgfD0gbmV3bGluZTo6cG9zaXg7Ci0gICAgICAgICAgICBzb3VyY2UoKSB8PSBmX2xpbmVfY29tcGxldGU7Ci0gICAgICAgIH0KLSAgICAgICAgc291cmNlKCkgPSAoc291cmNlKCkgJiB+Zl9oYXNfQ1IpIHwgKGMgPT0gQ1IgPyBmX2hhc19DUiA6IDApOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBlcnJvcnMuCi0gICAgICAgIGlmICggKHRhcmdldF8gJiBuZXdsaW5lOjpwbGF0Zm9ybV9tYXNrKSAhPSAwICYmCi0gICAgICAgICAgICAgKHNvdXJjZSgpICYgfnRhcmdldF8gJiBuZXdsaW5lOjpwbGF0Zm9ybV9tYXNrKSAhPSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZmFpbCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlKQotICAgIHsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpmaW5hbF9uZXdsaW5lOwotCi0gICAgICAgIC8vIFVwZGF0ZSBmaW5hbF9uZXdsaW5lIGZsYWcuCi0gICAgICAgIGlmICggKHNvdXJjZSgpICYgZl9oYXNfQ1IpICE9IDAgfHwKLSAgICAgICAgICAgICAoc291cmNlKCkgJiBmX2xpbmVfY29tcGxldGUpICE9IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzb3VyY2UoKSB8PSBmaW5hbF9uZXdsaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2xlYXIgbm9uLXN0aWNreSBmbGFncy4KLSAgICAgICAgc291cmNlKCkgJj0gfihmX2hhc19DUiB8IGZfbGluZV9jb21wbGV0ZSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGVycm9ycy4KLSAgICAgICAgaWYgKCAodGFyZ2V0XyAmIGZpbmFsX25ld2xpbmUpICE9IDAgJiYKLSAgICAgICAgICAgICAoc291cmNlKCkgJiBmaW5hbF9uZXdsaW5lKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZmFpbCgpOwotICAgICAgICB9Ci0gICAgfQotcHJpdmF0ZToKLSAgICB2b2lkIGZhaWwoKSB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24obmV3bGluZV9lcnJvcihzb3VyY2UoKSkpOyB9Ci0gICAgaW50JiBzb3VyY2UoKSB7IHJldHVybiBmbGFnc187IH0KLSAgICBpbnQgc291cmNlKCkgY29uc3QgeyByZXR1cm4gZmxhZ3NfOyB9Ci0KLSAgICBlbnVtIGZsYWdzIHsKLSAgICAgICAgZl9oYXNfQ1IgPSAzMjc2OCwKLSAgICAgICAgZl9saW5lX2NvbXBsZXRlID0gZl9oYXNfQ1IgPDwgMQotICAgIH07Ci0KLSAgICBpbnQgICB0YXJnZXRfOyAgLy8gUmVwcmVzZW50cyBleHBlY3RlZCBpbnB1dC4KLSAgICBib29sICBvcGVuXzsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShuZXdsaW5lX2NoZWNrZXIsIDApCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05FV0xJTkVfRklMVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3JlZ2V4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9yZWdleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiYzU5OWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3JlZ2V4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRUdFWF9GSUxURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19SRUdFWF9GSUxURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG9jYXRvci4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi5ocHA+ICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2FnZ3JlZ2F0ZS5ocHA+ICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPiAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQ2gsCi0gICAgICAgICAgdHlwZW5hbWUgVHIgPSByZWdleF90cmFpdHM8Q2g+LAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Q2g+ID4KLWNsYXNzIGJhc2ljX3JlZ2V4X2ZpbHRlciA6IHB1YmxpYyBhZ2dyZWdhdGVfZmlsdGVyPENoLCBBbGxvYz4gewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGFnZ3JlZ2F0ZV9maWx0ZXI8Q2gsIEFsbG9jPiAgICAgICAgICAgICAgICAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgICAgICAgICAgICBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPENoPiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZTsKLSAgICB0eXBlZGVmIGJhc2ljX3JlZ2V4PENoLCBUcj4gICAgICAgICAgICAgICAgICAgICAgICByZWdleF90eXBlOwotICAgIHR5cGVkZWYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgICAgICAgICAgIGZsYWdfdHlwZTsKLSAgICB0eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29uc3QgQ2gqPiAgICAgICAgICAgICAgICAgICBtYXRjaF90eXBlOwotICAgIHR5cGVkZWYgZnVuY3Rpb24xPHN0cmluZ190eXBlLCBjb25zdCBtYXRjaF90eXBlJj4gIGZvcm1hdHRlcjsKLQotICAgIGJhc2ljX3JlZ2V4X2ZpbHRlciggY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXImIHJlcGxhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZmxhZ3MgPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQgKQotICAgICAgICA6IHJlXyhyZSksIHJlcGxhY2VfKHJlcGxhY2UpLCBmbGFnc18oZmxhZ3MpIHsgfQotICAgIGJhc2ljX3JlZ2V4X2ZpbHRlciggY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmdfdHlwZSYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGZsYWdzID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGZtdF9mbGFncyA9IHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2RlZmF1bHQgKQotICAgICAgICA6IHJlXyhyZSksIHJlcGxhY2VfKHNpbXBsZV9mb3JtYXR0ZXIoZm10LCBmbXRfZmxhZ3MpKSwgZmxhZ3NfKGZsYWdzKSB7IH0KLSAgICBiYXNpY19yZWdleF9maWx0ZXIoIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZmxhZ3MgPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZm10X2ZsYWdzID0gcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfZGVmYXVsdCApCi0gICAgICAgIDogcmVfKHJlKSwgcmVwbGFjZV8oc2ltcGxlX2Zvcm1hdHRlcihmbXQsIGZtdF9mbGFncykpLCBmbGFnc18oZmxhZ3MpIHsgfQotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6dmVjdG9yX3R5cGUgICAgICAgdmVjdG9yX3R5cGU7Ci0gICAgdm9pZCBkb19maWx0ZXIoY29uc3QgdmVjdG9yX3R5cGUmIHNyYywgdmVjdG9yX3R5cGUmIGRlc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgcmVnZXhfaXRlcmF0b3I8Y29uc3QgQ2gqLCBDaCwgVHI+IGl0ZXJhdG9yOwotICAgICAgICAgICAgaWYgKHNyYy5lbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGl0ZXJhdG9yIGZpcnN0KCZzcmNbMF0sICZzcmNbMF0gKyBzcmMuc2l6ZSgpLCByZV8sIGZsYWdzXyk7Ci0gICAgICAgICAgICBpdGVyYXRvciBsYXN0OwotICAgICAgICAgICAgY29uc3QgQ2gqIHN1ZmZpeCA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkgewotICAgICAgICAgICAgICAgIGRlc3QuaW5zZXJ0KCBkZXN0LmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QtPnByZWZpeCgpLmZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdC0+cHJlZml4KCkuc2Vjb25kICk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgcmVwbGFjZW1lbnQgPSByZXBsYWNlXygqZmlyc3QpOwotICAgICAgICAgICAgICAgIGRlc3QuaW5zZXJ0KCBkZXN0LmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQuZW5kKCkgKTsKLSAgICAgICAgICAgICAgICBzdWZmaXggPSBmaXJzdC0+c3VmZml4KCkuZmlyc3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3VmZml4KSB7Ci0gICAgICAgICAgICAgICAgZGVzdC5pbnNlcnQoZGVzdC5lbmQoKSwgc3VmZml4LCAmc3JjWzBdICsgc3JjLnNpemUoKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRlc3QuaW5zZXJ0KGRlc3QuZW5kKCksICZzcmNbMF0sICZzcmNbMF0gKyBzcmMuc2l6ZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIHN0cnVjdCBzaW1wbGVfZm9ybWF0dGVyIHsKLSAgICAgICAgc2ltcGxlX2Zvcm1hdHRlcihjb25zdCBzdHJpbmdfdHlwZSYgZm10LCBmbGFnX3R5cGUgZm10X2ZsYWdzKSAKLSAgICAgICAgICAgIDogZm10XyhmbXQpLCBmbXRfZmxhZ3NfKGZtdF9mbGFncykgeyB9Ci0gICAgICAgIHN0cmluZ190eXBlIG9wZXJhdG9yKCkgKGNvbnN0IG1hdGNoX3R5cGUmIG1hdGNoKSBjb25zdAotICAgICAgICB7IHJldHVybiBtYXRjaC5mb3JtYXQoZm10XywgZm10X2ZsYWdzXyk7IH0KLSAgICAgICAgc3RyaW5nX3R5cGUgIGZtdF87Ci0gICAgICAgIGZsYWdfdHlwZSAgICBmbXRfZmxhZ3NfOwotICAgIH07Ci0gICAgcmVnZXhfdHlwZSAgcmVfOwotICAgIGZvcm1hdHRlciAgIHJlcGxhY2VfOwotICAgIGZsYWdfdHlwZSAgIGZsYWdzXzsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY19yZWdleF9maWx0ZXIsIDMpCi0KLXR5cGVkZWYgYmFzaWNfcmVnZXhfZmlsdGVyPGNoYXI+ICAgICByZWdleF9maWx0ZXI7Ci10eXBlZGVmIGJhc2ljX3JlZ2V4X2ZpbHRlcjx3Y2hhcl90PiAgd3JlZ2V4X2ZpbHRlcjsKLQotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmICAgICAgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUkVHRVhfRklMVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3N0ZGlvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9zdGRpby5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZTg0MjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3N0ZGlvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBCYXNlZCBvbiB0aGUgd29yayBvZiBDaHJpc3RvcGhlciBEaWdnaW5zLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TVERJT19GSUxURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19TVERJT19GSUxURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bWVtb3J5PiAgICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYmFja19pbnNlcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9hZ2dyZWdhdGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3N0cmVhbV9idWZmZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+Ci1jbGFzcyBiYXNpY19zdGRpb19maWx0ZXIgOiBwdWJsaWMgYWdncmVnYXRlX2ZpbHRlcjxDaCwgQWxsb2M+IHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBhZ2dyZWdhdGVfZmlsdGVyPENoLCBBbGxvYz4gICAgICAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjYXRlZ29yeSAgICAgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OnZlY3Rvcl90eXBlICB2ZWN0b3JfdHlwZTsKLXByaXZhdGU6Ci0gICAgc3RhdGljIHN0ZDo6aXN0cmVhbSYgc3RhbmRhcmRfaW5wdXQoY2hhciopIHsgcmV0dXJuIHN0ZDo6Y2luOyB9Ci0gICAgc3RhdGljIHN0ZDo6b3N0cmVhbSYgc3RhbmRhcmRfb3V0cHV0KGNoYXIqKSB7IHJldHVybiBzdGQ6OmNvdXQ7IH0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotICAgIHN0YXRpYyBzdGQ6Ondpc3RyZWFtJiBzdGFuZGFyZF9pbnB1dCh3Y2hhcl90KikgeyByZXR1cm4gc3RkOjp3Y2luOyB9Ci0gICAgc3RhdGljIHN0ZDo6d29zdHJlYW0mIHN0YW5kYXJkX291dHB1dCh3Y2hhcl90KikgeyByZXR1cm4gc3RkOjp3Y291dDsgfQotI2VuZGlmIC8vIE5ETkJPT1NUX0lPU1RSRUFNU19OT19XSURFX1NUUkVBTVMKLQotICAgIHN0cnVjdCBzY29wZWRfcmVkaXJlY3RvciB7IC8vIFRoYW5rcyB0byBNYXhpbSBFZ29ydXNoa2luLgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhDaCkgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSU9TKENoLCB0cmFpdHNfdHlwZSkgICAgICAgaW9zX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRihDaCwgdHJhaXRzX3R5cGUpIHN0cmVhbWJ1Zl90eXBlOwotICAgICAgICBzY29wZWRfcmVkaXJlY3RvciggaW9zX3R5cGUmIGlvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbWJ1Zl90eXBlKiBuZXdidWYgKQotICAgICAgICAgICAgOiBpb3NfKGlvcyksIG9sZF8oaW9zLnJkYnVmKG5ld2J1ZikpCi0gICAgICAgICAgICB7IH0KLSAgICAgICAgfnNjb3BlZF9yZWRpcmVjdG9yKCkgeyBpb3NfLnJkYnVmKG9sZF8pOyB9Ci0gICAgICAgIHNjb3BlZF9yZWRpcmVjdG9yJiBvcGVyYXRvcj0oY29uc3Qgc2NvcGVkX3JlZGlyZWN0b3ImKTsKLSAgICAgICAgaW9zX3R5cGUmICAgICAgICBpb3NfOwotICAgICAgICBzdHJlYW1idWZfdHlwZSogIG9sZF87Ci0gICAgfTsKLQotICAgIHZpcnR1YWwgdm9pZCBkb19maWx0ZXIoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRvX2ZpbHRlcihjb25zdCB2ZWN0b3JfdHlwZSYgc3JjLCB2ZWN0b3JfdHlwZSYgZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0cmVhbV9idWZmZXI8IGJhc2ljX2FycmF5X3NvdXJjZTxDaD4gPgotICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNidWYoJnNyY1swXSwgJnNyY1swXSArIHNyYy5zaXplKCkpOwotICAgICAgICBzdHJlYW1fYnVmZmVyPCBiYWNrX2luc2VydF9kZXZpY2U8dmVjdG9yX3R5cGU+ID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGJ1Zihpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIoZGVzdCkpOwotICAgICAgICBzY29wZWRfcmVkaXJlY3RvciByZWRpcmVjdF9pbnB1dChzdGFuZGFyZF9pbnB1dCgoQ2gqKTApLCAmc3JjYnVmKTsKLSAgICAgICAgc2NvcGVkX3JlZGlyZWN0b3IgcmVkaXJlY3Rfb3V0cHV0KHN0YW5kYXJkX291dHB1dCgoQ2gqKTApLCAmZGVzdGJ1Zik7Ci0gICAgICAgIGRvX2ZpbHRlcigpOwotICAgIH0KLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY19zdGRpb19maWx0ZXIsIDIpCi0KLXR5cGVkZWYgYmFzaWNfc3RkaW9fZmlsdGVyPGNoYXI+ICAgICBzdGRpb19maWx0ZXI7Ci10eXBlZGVmIGJhc2ljX3N0ZGlvX2ZpbHRlcjx3Y2hhcl90PiAgd3N0ZGlvX3dmaWx0ZXI7Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1RESU9fRklMVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3N5bW1ldHJpYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvc3ltbWV0cmljLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM1OTkwMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvc3ltbWV0cmljLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxMCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQ29udGFpbnMgdGhlIGRlZmluaXRpb25zIG9mIHRoZSBjbGFzcyB0ZW1wbGF0ZXMgc3ltbWV0cmljX2ZpbHRlciwKLS8vIHdoaWNoIG1vZGVscyBEdWFsVXNlRmlsdGVyIGJhc2VkIG9uIGEgbW9kZWwgb2YgdGhlIFN5bW1ldHJpYyBGaWx0ZXIuCi0KLS8vCi0vLyBSb3VnaGx5LCBhIFN5bW1ldHJpYyBGaWx0ZXIgaXMgYSBjbGFzcyB0eXBlIHdpdGggdGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6Ci0vLwotLy8gICBzdHJ1Y3Qgc3ltbWV0cmljX2ZpbHRlciB7Ci0vLyAgICAgICB0eXBlZGVmIHh4eCBjaGFyX3R5cGU7Ci0vLwotLy8gICAgICAgYm9vbCBmaWx0ZXIoIGNvbnN0IGNoYXIqJiBiZWdpbl9pbiwgY29uc3QgY2hhciogZW5kX2luLAotLy8gICAgICAgICAgICAgICAgICAgIGNoYXIqJiBiZWdpbl9vdXQsIGNoYXIqIGVuZF9vdXQsIGJvb2wgZmx1c2ggKQotLy8gICAgICAgewotLy8gICAgICAgICAgLy8gQ29uc3VtZSBhcyBtYW55IGNoYXJhY3RlcnMgYXMgcG9zc2libGUgZnJvbSB0aGUgaW50ZXJ2YWwKLS8vICAgICAgICAgIC8vIFtiZWdpbl9pbiwgZW5kX2luKSwgd2l0aG91dCBleGhhdXN0aW5nIHRoZSBvdXRwdXQgcmFuZ2UKLS8vICAgICAgICAgIC8vIFtiZWdpbl9vdXQsIGVuZF9vdXQpLiBJZiBmbHVzaCBpcyB0cnVlLCB3cml0ZSBhcyBtdXNoIG91dHB1dAotLy8gICAgICAgICAgLy8gYXMgcG9zc2libGUuIAotLy8gICAgICAgICAgLy8gQSByZXR1cm4gdmFsdWUgb2YgdHJ1ZSBpbmRpY2F0ZXMgdGhhdCBmaWx0ZXIgc2hvdWxkIGJlIGNhbGxlZCAKLS8vICAgICAgICAgIC8vIGFnYWluLiBNb3JlIHByZWNpc2VseSwgaWYgZmx1c2ggaXMgZmFsc2UsIGEgcmV0dXJuIHZhbHVlIG9mIAotLy8gICAgICAgICAgLy8gZmFsc2UgaW5kaWNhdGVzIHRoYXQgdGhlIG5hdHVyYWwgZW5kIG9mIHN0cmVhbSBoYXMgYmVlbiByZWFjaGVkCi0vLyAgICAgICAgICAvLyBhbmQgdGhhdCBhbGwgZmlsdGVyZWQgZGF0YSBoYXMgYmVlbiBmb3J3YXJkZWQ7IGlmIGZsdXNoIGlzCi0vLyAgICAgICAgICAvLyB0cnVlLCBhIHJldHVybiB2YWx1ZSBvZiBmYWxzZSBpbmRpY2F0ZXMgdGhhdCBhbGwgZmlsdGVyZWQgZGF0YSAKLS8vICAgICAgICAgIC8vIGhhcyBiZWVuIGZvcndhcmRlZC4KLS8vICAgICAgIH0KLS8vICAgICAgIHZvaWQgY2xvc2UoKSB7IC8qIFJlc2V0IGZpbHRlcidzIHN0YXRlLiAqLyB9Ci0vLyAgIH07Ci0vLwotLy8gU3ltbWV0cmljIEZpbHRlciBmaWx0ZXJzIG5lZWQgbm90IGJlIENvcHlDb25zdHJ1Y3RhYmxlLgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1lNTUVUUklDX0ZJTFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1NZTU1FVFJJQ19GSUxURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG9jYXRvciwgYXV0b19wdHIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+ICAgICAgICAvLyBidWZmZXIgc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2J1ZmZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3RlbXBsYXRlX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPiAgICAgICAvLyByZWFkLCB3cml0ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBTeW1tZXRyaWNGaWx0ZXIsCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPQotICAgICAgICAgICAgICBzdGQ6OmFsbG9jYXRvcjwKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFN5bW1ldHJpY0ZpbHRlcj46OnR5cGUKLSAgICAgICAgICAgICAgPiA+Ci1jbGFzcyBzeW1tZXRyaWNfZmlsdGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTeW1tZXRyaWNGaWx0ZXI+Ojp0eXBlICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgICAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGUsIEFsbG9jPiAgc3RyaW5nX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogZHVhbF91c2UsCi0gICAgICAgICAgZmlsdGVyX3RhZywKLSAgICAgICAgICBtdWx0aWNoYXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0KLSAgICAvLyBFeHBhbmRzIHRvIGEgc2VxdWVuY2Ugb2YgY3RvcnMgd2hpY2ggZm9yd2FyZCB0byBpbXBsLgotICAgICNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8obikgXAotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfVEVNUExBVEVfUEFSQU1TKG4sIFQpIFwKLSAgICAgICAgZXhwbGljaXQgc3ltbWV0cmljX2ZpbHRlciggXAotICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMobiwgY29uc3QgVCwgJnQpICkgXAotICAgICAgICAgICAgOiBwaW1wbF8obmV3IGltcGwoYnVmZmVyX3NpemUgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgdCkpKSBcCi0gICAgICAgICAgICB7IE5ETkJPT1NUX0FTU0VSVChidWZmZXJfc2l6ZSA+IDApOyB9IFwKLSAgICAgICAgLyoqLwotICAgICNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTICgwLCBORE5CT09TVF9JT1NUUkVBTVNfTUFYX0ZPUldBUkRJTkdfQVJJVFkpCi0gICAgI2luY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0gICAgI3VuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBpZiAoIShzdGF0ZSgpICYgZl9yZWFkKSkKLSAgICAgICAgICAgIGJlZ2luX3JlYWQoKTsKLQotICAgICAgICBidWZmZXJfdHlwZSYgIGJ1ZiA9IHBpbXBsXy0+YnVmXzsKLSAgICAgICAgaW50ICAgICAgICAgICBzdGF0dXMgPSAoc3RhdGUoKSAmIGZfZW9mKSAhPSAwID8gZl9lb2YgOiBmX2dvb2Q7Ci0gICAgICAgIGNoYXJfdHlwZSAgICAqbmV4dF9zID0gcywKLSAgICAgICAgICAgICAgICAgICAgICplbmRfcyA9IHMgKyBuOwotICAgICAgICB3aGlsZSAodHJ1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gSW52b2tlIGZpbHRlciBpZiB0aGVyZSBhcmUgdW5jb25zdW1lZCBjaGFyYWN0ZXJzIGluIGJ1ZmZlciBvciBpZgotICAgICAgICAgICAgLy8gZmlsdGVyIG11c3QgYmUgZmx1c2hlZC4KLSAgICAgICAgICAgIGJvb2wgZmx1c2ggPSBzdGF0dXMgPT0gZl9lb2Y7Ci0gICAgICAgICAgICBpZiAoYnVmLnB0cigpICE9IGJ1Zi5lcHRyKCkgfHwgZmx1c2gpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyX3R5cGUqIG5leHQgPSBidWYucHRyKCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBkb25lID0KLSAgICAgICAgICAgICAgICAgICAgIWZpbHRlcigpLmZpbHRlcihuZXh0LCBidWYuZXB0cigpLCBuZXh0X3MsIGVuZF9zLCBmbHVzaCk7Ci0gICAgICAgICAgICAgICAgYnVmLnB0cigpID0gYnVmLmRhdGEoKSArIChuZXh0IC0gYnVmLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGRvbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmNoZWNrX2VvZigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KG5leHRfcyAtIHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiBubyBtb3JlIGNoYXJhY3RlcnMgYXJlIGF2YWlsYWJsZSB3aXRob3V0IGJsb2NraW5nLCBvcgotICAgICAgICAgICAgLy8gaWYgcmVhZCByZXF1ZXN0IGhhcyBiZWVuIHNhdGlzZmllZCwgcmV0dXJuLgotICAgICAgICAgICAgaWYgKCAoc3RhdHVzID09IGZfd291bGRfYmxvY2sgJiYgYnVmLnB0cigpID09IGJ1Zi5lcHRyKCkpIHx8Ci0gICAgICAgICAgICAgICAgIG5leHRfcyA9PSBlbmRfcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4obmV4dF9zIC0gcyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEZpbGwgYnVmZmVyLgotICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBmX2dvb2QpCi0gICAgICAgICAgICAgICAgc3RhdHVzID0gZmlsbChzcmMpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgaWYgKCEoc3RhdGUoKSAmIGZfd3JpdGUpKQotICAgICAgICAgICAgYmVnaW5fd3JpdGUoKTsKLQotICAgICAgICBidWZmZXJfdHlwZSYgICAgIGJ1ZiA9IHBpbXBsXy0+YnVmXzsKLSAgICAgICAgY29uc3QgY2hhcl90eXBlICpuZXh0X3MsICplbmRfczsKLSAgICAgICAgZm9yIChuZXh0X3MgPSBzLCBlbmRfcyA9IHMgKyBuOyBuZXh0X3MgIT0gZW5kX3M7ICkgewotICAgICAgICAgICAgaWYgKGJ1Zi5wdHIoKSA9PSBidWYuZXB0cigpICYmICFmbHVzaChzbmspKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYoIWZpbHRlcigpLmZpbHRlcihuZXh0X3MsIGVuZF9zLCBidWYucHRyKCksIGJ1Zi5lcHRyKCksIGZhbHNlKSkgewotICAgICAgICAgICAgICAgIGZsdXNoKHNuayk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4obmV4dF9zIC0gcyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlKQotICAgIHsKLSAgICAgICAgaWYgKG1vZGUgPT0gTkROQk9PU1RfSU9TOjpvdXQpIHsKLQotICAgICAgICAgICAgaWYgKCEoc3RhdGUoKSAmIGZfd3JpdGUpKQotICAgICAgICAgICAgICAgIGJlZ2luX3dyaXRlKCk7Ci0KLSAgICAgICAgICAgIC8vIFJlcGVhdGVkbHkgaW52b2tlIGZpbHRlcigpIHdpdGggbm8gaW5wdXQuCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGJ1ZmZlcl90eXBlJiAgICAgYnVmID0gcGltcGxfLT5idWZfOwotICAgICAgICAgICAgICAgIGNoYXJfdHlwZSAgICAgICAgZHVtbXk7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBlbmQgPSAmZHVtbXk7Ci0gICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICBhZ2FpbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGFnYWluKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChidWYucHRyKCkgIT0gYnVmLmVwdHIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFnYWluID0gZmlsdGVyKCkuZmlsdGVyKCBlbmQsIGVuZCwgYnVmLnB0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5lcHRyKCksIHRydWUgKTsKLSAgICAgICAgICAgICAgICAgICAgZmx1c2goc25rKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICB0cnkgeyBjbG9zZV9pbXBsKCk7IH0gY2F0Y2ggKC4uLikgeyB9Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgU3ltbWV0cmljRmlsdGVyJiBmaWx0ZXIoKSB7IHJldHVybiAqcGltcGxfOyB9Ci0gICAgc3RyaW5nX3R5cGUgdW5jb25zdW1lZF9pbnB1dCgpIGNvbnN0OwotCi0vLyBHaXZlIGltcGwgYWNjZXNzIHRvIGJ1ZmZlcl90eXBlIG9uIFRydTY0Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ERUNDWFhfVkVSLCBORE5CT09TVF9URVNURURfQVQoNjA1OTAwNDIpKSAKLSAgICBwcml2YXRlOgotI2VuZGlmCi0gICAgdHlwZWRlZiBkZXRhaWw6OmJ1ZmZlcjxjaGFyX3R5cGUsIEFsbG9jPiBidWZmZXJfdHlwZTsKLXByaXZhdGU6Ci0gICAgYnVmZmVyX3R5cGUmIGJ1ZigpIHsgcmV0dXJuIHBpbXBsXy0+YnVmXzsgfQotICAgIGNvbnN0IGJ1ZmZlcl90eXBlJiBidWYoKSBjb25zdCB7IHJldHVybiBwaW1wbF8tPmJ1Zl87IH0KLSAgICBpbnQmIHN0YXRlKCkgeyByZXR1cm4gcGltcGxfLT5zdGF0ZV87IH0KLSAgICB2b2lkIGJlZ2luX3JlYWQoKTsKLSAgICB2b2lkIGJlZ2luX3dyaXRlKCk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgaW50IGZpbGwoU291cmNlJiBzcmMpCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gaW9zdHJlYW1zOjpyZWFkKHNyYywgYnVmKCkuZGF0YSgpLCBidWYoKS5zaXplKCkpOwotICAgICAgICBpZiAoYW10ID09IC0xKSB7Ci0gICAgICAgICAgICBzdGF0ZSgpIHw9IGZfZW9mOwotICAgICAgICAgICAgcmV0dXJuIGZfZW9mOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZigpLnNldCgwLCBhbXQpOwotICAgICAgICByZXR1cm4gYW10ICE9IDAgPyBmX2dvb2QgOiBmX3dvdWxkX2Jsb2NrOwotICAgIH0KLQotICAgIC8vIEF0dGVtcHRzIHRvIHdyaXRlIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIHRoZSBnaXZlbiBTaW5rLgotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbiBjaGFyYWN0ZXIgd2FzIHdyaXR0ZW4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIGZsdXNoKFNpbmsmIHNuaykKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW9zdHJlYW1zOjpjYXRlZ29yeV9vZjxTaW5rPjo6dHlwZSAgY2F0ZWdvcnk7Ci0gICAgICAgIHR5cGVkZWYgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD4gICAgICAgICAgICAgY2FuX3dyaXRlOwotICAgICAgICByZXR1cm4gZmx1c2goc25rLCBjYW5fd3JpdGUoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIGZsdXNoKFNpbmsmIHNuaywgbXBsOjp0cnVlXykKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihidWYoKS5wdHIoKSAtIGJ1ZigpLmRhdGEoKSk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPQotICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6d3JpdGUoc25rLCBidWYoKS5kYXRhKCksIGFtdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPCBhbXQgJiYgcmVzdWx0ID4gMCkKLSAgICAgICAgICAgIHRyYWl0c190eXBlOjptb3ZlKGJ1ZigpLmRhdGEoKSwgYnVmKCkuZGF0YSgpICsgcmVzdWx0LCBhbXQgLSByZXN1bHQpOwotICAgICAgICBidWYoKS5zZXQoYW10IC0gcmVzdWx0LCBidWYoKS5zaXplKCkpOwotICAgICAgICByZXR1cm4gcmVzdWx0ICE9IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIGZsdXNoKFNpbmsmLCBtcGw6OmZhbHNlXykgeyByZXR1cm4gdHJ1ZTt9Ci0KLSAgICB2b2lkIGNsb3NlX2ltcGwoKTsKLQotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl9yZWFkICAgPSAxLAotICAgICAgICBmX3dyaXRlICA9IGZfcmVhZCA8PCAxLAotICAgICAgICBmX2VvZiAgICA9IGZfd3JpdGUgPDwgMSwKLSAgICAgICAgZl9nb29kLAotICAgICAgICBmX3dvdWxkX2Jsb2NrCi0gICAgfTsKLQotICAgIHN0cnVjdCBpbXBsIDogU3ltbWV0cmljRmlsdGVyIHsKLQotICAgIC8vIEV4cGFuZHMgdG8gYSBzZXF1ZW5jZSBvZiBjdG9ycyB3aGljaCBmb3J3YXJkIHRvIFN5bW1ldHJpY0ZpbHRlci4KLSAgICAjZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKG4pIFwKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1RFTVBMQVRFX1BBUkFNUyhuLCBUKSBcCi0gICAgICAgIGltcGwoIGludCBidWZmZXJfc2l6ZSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhuLCBjb25zdCBULCAmdCkgKSBcCi0gICAgICAgICAgICA6IFN5bW1ldHJpY0ZpbHRlcihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCB0KSksIFwKLSAgICAgICAgICAgICAgYnVmXyhidWZmZXJfc2l6ZSksIHN0YXRlXygwKSBcCi0gICAgICAgICAgICB7IH0gXAotICAgICAgICAvKiovCi0gICAgI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDAsIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWSkKLSAgICAjaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLSAgICAjdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8KLQotICAgICAgICBidWZmZXJfdHlwZSAgYnVmXzsKLSAgICAgICAgaW50ICAgICAgICAgIHN0YXRlXzsKLSAgICB9OwotCi0gICAgc2hhcmVkX3B0cjxpbXBsPiBwaW1wbF87Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoc3ltbWV0cmljX2ZpbHRlciwgMikKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBzeW1tZXRyaWNfZmlsdGVyLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFN5bW1ldHJpY0ZpbHRlciwgdHlwZW5hbWUgQWxsb2M+Ci12b2lkIHN5bW1ldHJpY19maWx0ZXI8U3ltbWV0cmljRmlsdGVyLCBBbGxvYz46OmJlZ2luX3JlYWQoKQotewotICAgIE5ETkJPT1NUX0FTU0VSVCghKHN0YXRlKCkgJiBmX3dyaXRlKSk7Ci0gICAgc3RhdGUoKSB8PSBmX3JlYWQ7Ci0gICAgYnVmKCkuc2V0KDAsIDApOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTeW1tZXRyaWNGaWx0ZXIsIHR5cGVuYW1lIEFsbG9jPgotdm9pZCBzeW1tZXRyaWNfZmlsdGVyPFN5bW1ldHJpY0ZpbHRlciwgQWxsb2M+OjpiZWdpbl93cml0ZSgpCi17Ci0gICAgTkROQk9PU1RfQVNTRVJUKCEoc3RhdGUoKSAmIGZfcmVhZCkpOwotICAgIHN0YXRlKCkgfD0gZl93cml0ZTsKLSAgICBidWYoKS5zZXQoMCwgYnVmKCkuc2l6ZSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3ltbWV0cmljRmlsdGVyLCB0eXBlbmFtZSBBbGxvYz4KLXZvaWQgc3ltbWV0cmljX2ZpbHRlcjxTeW1tZXRyaWNGaWx0ZXIsIEFsbG9jPjo6Y2xvc2VfaW1wbCgpCi17Ci0gICAgc3RhdGUoKSA9IDA7Ci0gICAgYnVmKCkuc2V0KDAsIDApOwotICAgIGZpbHRlcigpLmNsb3NlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN5bW1ldHJpY0ZpbHRlciwgdHlwZW5hbWUgQWxsb2M+Ci10eXBlbmFtZSBzeW1tZXRyaWNfZmlsdGVyPFN5bW1ldHJpY0ZpbHRlciwgQWxsb2M+OjpzdHJpbmdfdHlwZQotc3ltbWV0cmljX2ZpbHRlcjxTeW1tZXRyaWNGaWx0ZXIsIEFsbG9jPjo6dW5jb25zdW1lZF9pbnB1dCgpIGNvbnN0Ci17IHJldHVybiBzdHJpbmdfdHlwZShidWYoKS5wdHIoKSwgYnVmKCkuZXB0cigpKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1lNTUVUUklDX0ZJTFRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci90ZXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci90ZXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFkN2I1ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvdGVzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUl9URVNUX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfTVNWQyxwdXQgc2l6ZV90IGluIHN0ZC4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAvLyBtaW4uCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzaXplX3QuCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgXAotICAgIC8qKi8KLSMgaW5jbHVkZSA8Y3N0ZGxpYj4gICAgICAgICAgICAgICAgICAgICAgIC8vIHJhbmQuCi0jZW5kaWYKLSNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lbWNweSwgc3RybGVuLgotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgXAotICAgIC8qKi8KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2xpbmVhcl9jb25ncnVlbnRpYWwuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vdW5pZm9ybV9zbWFsbGludC5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbXBvc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb3B5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9iYWNrX2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotI3VuZGVmIG1lbWNweQotI3VuZGVmIHJhbmQKLSN1bmRlZiBzdHJsZW4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpICYmICFkZWZpbmVkKF9fTElCQ09NT19fKQotbmFtZXNwYWNlIHN0ZCB7IAotICAgIHVzaW5nIDo6bWVtY3B5OyAKLSAgICB1c2luZyA6OnN0cmxlbjsgCi0gICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgfHwgXAotICAgICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgfHwgXAotICAgICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgXAotICAgICAgICAvKiovCi0gICAgICAgIHVzaW5nIDo6cmFuZDsgCi0gICAgI2VuZGlmCi19Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19zdHJpbmcsIHN0ZDo6YmFzaWNfc3RyaW5nLCAzKQotCi1jb25zdCBzdGQ6OnN0cmVhbXNpemUgZGVmYXVsdF9pbmNyZW1lbnQgPSA1OwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgXAotICAgIC8qKi8KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmFuZChpbnQgaW5jKQotICAgIHsKLSAgICAgICAgc3RhdGljIHJhbmQ0OCAgICAgICAgICAgICAgICByYW5kb21fZ2VuOwotICAgICAgICBzdGF0aWMgdW5pZm9ybV9zbWFsbGludDxpbnQ+IHJhbmRvbV9kaXN0KDAsIGluYyk7Ci0gICAgICAgIHJldHVybiByYW5kb21fZGlzdChyYW5kb21fZ2VuKTsKLSAgICB9Ci0jZWxzZQotICAgIHN0ZDo6c3RyZWFtc2l6ZSByYW5kKGludCBpbmMpIAotICAgIHsgCi0gICAgICAgIHJldHVybiAoc3RkOjpyYW5kKCkgKiBpbmMgKyAxKSAvIFJBTkRfTUFYOyAKLSAgICB9Ci0jZW5kaWYKLQotY2xhc3Mgbm9uX2Jsb2NraW5nX3NvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBzb3VyY2VfdGFnLAotICAgICAgICAgIHBlZWthYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgZXhwbGljaXQgbm9uX2Jsb2NraW5nX3NvdXJjZSggY29uc3Qgc3RkOjpzdHJpbmcmIGRhdGEsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBpbmMgPSBkZWZhdWx0X2luY3JlbWVudCApIAotICAgICAgICA6IGRhdGFfKGRhdGEpLCBpbmNfKGluYyksIHBvc18oMCkKLSAgICAgICAgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhciogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBpZiAocG9zXyA9PSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGRhdGFfLnNpemUoKSkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhdmFpbCA9IAotICAgICAgICAgICAgKHN0ZDo6bWluKSAobiwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihkYXRhXy5zaXplKCkgLSBwb3NfKSk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAoc3RkOjptaW4pIChyYW5kKGluY18pLCBhdmFpbCk7Ci0gICAgICAgIGlmIChhbXQpCi0gICAgICAgICAgICBzdGQ6Om1lbWNweShzLCBkYXRhXy5jX3N0cigpICsgcG9zXywgYW10KTsKLSAgICAgICAgcG9zXyArPSBhbXQ7Ci0gICAgICAgIHJldHVybiBhbXQ7Ci0gICAgfQotCi0gICAgYm9vbCBwdXRiYWNrKGNoYXIgYykKLSAgICB7Ci0gICAgICAgIGlmIChwb3NfID4gMCkgewotICAgICAgICAgICAgZGF0YV9bLS1wb3NfXSA9IGM7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBzdGQ6OnN0cmluZyAgICAgIGRhdGFfOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSAgaW5jXywgcG9zXzsKLX07Ci0KLWNsYXNzIG5vbl9ibG9ja2luZ19zaW5rIDogcHVibGljIHNpbmsgewotcHVibGljOgotICAgIG5vbl9ibG9ja2luZ19zaW5rKCBzdGQ6OnN0cmluZyYgZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGluYyA9IGRlZmF1bHRfaW5jcmVtZW50ICkgCi0gICAgICAgIDogZGVzdF8oZGVzdCksIGluY18oaW5jKSAKLSAgICAgICAgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXIqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IChzdGQ6Om1pbikgKHJhbmQoaW5jXyksIG4pOwotICAgICAgICBkZXN0Xy5pbnNlcnQoZGVzdF8uZW5kKCksIHMsIHMgKyBhbXQpOwotICAgICAgICByZXR1cm4gYW10OwotICAgIH0KLXByaXZhdGU6Ci0gICAgbm9uX2Jsb2NraW5nX3NpbmsmIG9wZXJhdG9yPShjb25zdCBub25fYmxvY2tpbmdfc2luayYpOwotICAgIHN0ZDo6c3RyaW5nJiAgICAgZGVzdF87Ci0gICAgc3RkOjpzdHJlYW1zaXplICBpbmNfOwotfTsKLSAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHRlc3RfaW5wdXRfZmlsdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWJvb2wgdGVzdF9pbnB1dF9maWx0ZXIoIEZpbHRlciBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjp0cnVlXyApCi17Ci0gICAgZm9yICggaW50IGluYyA9IGRlZmF1bHRfaW5jcmVtZW50OyAKLSAgICAgICAgICBpbmMgPCBkZWZhdWx0X2luY3JlbWVudCAqIDQwOyAKLSAgICAgICAgICBpbmMgKz0gZGVmYXVsdF9pbmNyZW1lbnQgKQotICAgIHsKLSAgICAgICAgbm9uX2Jsb2NraW5nX3NvdXJjZSAgc3JjKGlucHV0LCBpbmMpOwotICAgICAgICBzdGQ6OnN0cmluZyAgICAgICAgICBkZXN0OwotICAgICAgICBpb3N0cmVhbXM6OmNvcHkoY29tcG9zZShmaWx0ZXIsIHNyYyksIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihkZXN0KSk7Ci0gICAgICAgIGlmIChkZXN0ICE9IG91dHB1dCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgU291cmNlMSwgdHlwZW5hbWUgU291cmNlMj4KLWJvb2wgdGVzdF9pbnB1dF9maWx0ZXIoIEZpbHRlciBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMSYgaW5wdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMiYgb3V0cHV0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6ZmFsc2VfICkKLXsKLSAgICBzdGQ6OnN0cmluZyBpbjsKLSAgICBzdGQ6OnN0cmluZyBvdXQ7Ci0gICAgaW9zdHJlYW1zOjpjb3B5KGlucHV0LCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIoaW4pKTsKLSAgICBpb3N0cmVhbXM6OmNvcHkob3V0cHV0LCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIob3V0KSk7Ci0gICAgcmV0dXJuIHRlc3RfaW5wdXRfZmlsdGVyKGZpbHRlciwgaW4sIG91dCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgU291cmNlMSwgdHlwZW5hbWUgU291cmNlMj4KLWJvb2wgdGVzdF9pbnB1dF9maWx0ZXIoIEZpbHRlciBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMSYgaW5wdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMiYgb3V0cHV0ICkKLXsKLSAgICAvLyBVc2UgdGFnIGRpc3BhdGNoIHRvIGNvbXBlbnNhdGUgZm9yIGJhZCBvdmVybG9hZCByZXNvbHV0aW9uLgotICAgIHJldHVybiB0ZXN0X2lucHV0X2ZpbHRlciggZmlsdGVyLCBpbnB1dCwgb3V0cHV0LCAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3N0cmluZzxTb3VyY2UxPigpICk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHRlc3Rfb3V0cHV0X2ZpbHRlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWJvb2wgdGVzdF9vdXRwdXRfZmlsdGVyKCBGaWx0ZXIgZmlsdGVyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6dHJ1ZV8gKQotewotICAgIGZvciAoIGludCBpbmMgPSBkZWZhdWx0X2luY3JlbWVudDsgCi0gICAgICAgICAgaW5jIDwgZGVmYXVsdF9pbmNyZW1lbnQgKiA0MDsgCi0gICAgICAgICAgaW5jICs9IGRlZmF1bHRfaW5jcmVtZW50ICkKLSAgICB7Ci0gICAgICAgIGFycmF5X3NvdXJjZSAgc3JjKGlucHV0LmRhdGEoKSwgaW5wdXQuZGF0YSgpICsgaW5wdXQuc2l6ZSgpKTsKLSAgICAgICAgc3RkOjpzdHJpbmcgICBkZXN0OwotICAgICAgICBpb3N0cmVhbXM6OmNvcHkoc3JjLCBjb21wb3NlKGZpbHRlciwgbm9uX2Jsb2NraW5nX3NpbmsoZGVzdCwgaW5jKSkpOwotICAgICAgICBpZiAoZGVzdCAhPSBvdXRwdXQgKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBTb3VyY2UxLCB0eXBlbmFtZSBTb3VyY2UyPgotYm9vbCB0ZXN0X291dHB1dF9maWx0ZXIoIEZpbHRlciBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZTEmIGlucHV0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTb3VyY2UyJiBvdXRwdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6ZmFsc2VfICkKLXsKLSAgICBzdGQ6OnN0cmluZyBpbjsKLSAgICBzdGQ6OnN0cmluZyBvdXQ7Ci0gICAgaW9zdHJlYW1zOjpjb3B5KGlucHV0LCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIoaW4pKTsKLSAgICBpb3N0cmVhbXM6OmNvcHkob3V0cHV0LCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIob3V0KSk7Ci0gICAgcmV0dXJuIHRlc3Rfb3V0cHV0X2ZpbHRlcihmaWx0ZXIsIGluLCBvdXQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIFNvdXJjZTEsIHR5cGVuYW1lIFNvdXJjZTI+Ci1ib29sIHRlc3Rfb3V0cHV0X2ZpbHRlciggRmlsdGVyIGZpbHRlciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMSYgaW5wdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZTImIG91dHB1dCApCi17Ci0gICAgLy8gVXNlIHRhZyBkaXNwYXRjaCB0byBjb21wZW5zYXRlIGZvciBiYWQgb3ZlcmxvYWQgcmVzb2x1dGlvbi4KLSAgICByZXR1cm4gdGVzdF9vdXRwdXRfZmlsdGVyKCBmaWx0ZXIsIGlucHV0LCBvdXRwdXQsICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3N0cmluZzxTb3VyY2UxPigpICk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHRlc3RfZmlsdGVyX3BhaXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dEZpbHRlciwgdHlwZW5hbWUgSW5wdXRGaWx0ZXI+Ci1ib29sIHRlc3RfZmlsdGVyX3BhaXIoIE91dHB1dEZpbHRlciBvdXQsIAotICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEZpbHRlciBpbiwgCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkYXRhLCAKLSAgICAgICAgICAgICAgICAgICAgICAgbXBsOjp0cnVlXyApCi17Ci0gICAgZm9yICggaW50IGluYyA9IGRlZmF1bHRfaW5jcmVtZW50OyAKLSAgICAgICAgICBpbmMgPD0gZGVmYXVsdF9pbmNyZW1lbnQgKiA0MDsgCi0gICAgICAgICAgaW5jICs9IGRlZmF1bHRfaW5jcmVtZW50ICkKLSAgICB7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5X3NvdXJjZSAgc3JjKGRhdGEuZGF0YSgpLCBkYXRhLmRhdGEoKSArIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nICAgdGVtcDsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nICAgZGVzdDsKLSAgICAgICAgICAgIGlvc3RyZWFtczo6Y29weShzcmMsIGNvbXBvc2Uob3V0LCBub25fYmxvY2tpbmdfc2luayh0ZW1wLCBpbmMpKSk7Ci0gICAgICAgICAgICBpb3N0cmVhbXM6OmNvcHkoIAotICAgICAgICAgICAgICAgIGNvbXBvc2UoaW4sIG5vbl9ibG9ja2luZ19zb3VyY2UodGVtcCwgaW5jKSksCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpiYWNrX2luc2VydGVyKGRlc3QpCi0gICAgICAgICAgICApOwotICAgICAgICAgICAgaWYgKGRlc3QgIT0gZGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXlfc291cmNlICBzcmMoZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCkpOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICB0ZW1wOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICBkZXN0OwotICAgICAgICAgICAgaW9zdHJlYW1zOjpjb3B5KHNyYywgY29tcG9zZShvdXQsIG5vbl9ibG9ja2luZ19zaW5rKHRlbXAsIGluYykpKTsKLSAgICAgICAgICAgIC8vIHRydW5jYXRlIHRoZSBmaWxlLCB0aGlzIHNob3VsZCBub3QgbG9vcCwgaXQgbWF5IHRocm93Ci0gICAgICAgICAgICAvLyBzdGQ6Omlvc19iYXNlOjpmYWlsdXJlLCB3aGljaCB3ZSBzd2FsbG93LgotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB0ZW1wLnJlc2l6ZSh0ZW1wLnNpemUoKSAvIDIpOwotICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6Y29weSggCi0gICAgICAgICAgICAgICAgICAgIGNvbXBvc2UoaW4sIG5vbl9ibG9ja2luZ19zb3VyY2UodGVtcCwgaW5jKSksCi0gICAgICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihkZXN0KQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGNhdGNoKHN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmUmKSB7fQotICAgICAgICB9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5X3NvdXJjZSAgc3JjKGRhdGEuZGF0YSgpLCBkYXRhLmRhdGEoKSArIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nICAgdGVtcDsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nICAgZGVzdDsKLSAgICAgICAgICAgIGlvc3RyZWFtczo6Y29weShjb21wb3NlKG91dCwgc3JjKSwgbm9uX2Jsb2NraW5nX3NpbmsodGVtcCwgaW5jKSk7Ci0gICAgICAgICAgICBpb3N0cmVhbXM6OmNvcHkoIAotICAgICAgICAgICAgICAgIG5vbl9ibG9ja2luZ19zb3VyY2UodGVtcCwgaW5jKSwKLSAgICAgICAgICAgICAgICBjb21wb3NlKGluLCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIoZGVzdCkpCi0gICAgICAgICAgICApOwotICAgICAgICAgICAgaWYgKGRlc3QgIT0gZGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXlfc291cmNlICBzcmMoZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCkpOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICB0ZW1wOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICBkZXN0OwotICAgICAgICAgICAgaW9zdHJlYW1zOjpjb3B5KGNvbXBvc2Uob3V0LCBzcmMpLCBub25fYmxvY2tpbmdfc2luayh0ZW1wLCBpbmMpKTsKLSAgICAgICAgICAgIC8vIHRydW5jYXRlIHRoZSBmaWxlLCB0aGlzIHNob3VsZCBub3QgbG9vcCwgaXQgbWF5IHRocm93Ci0gICAgICAgICAgICAvLyBzdGQ6Omlvc19iYXNlOjpmYWlsdXJlLCB3aGljaCB3ZSBzd2FsbG93LgotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB0ZW1wLnJlc2l6ZSh0ZW1wLnNpemUoKSAvIDIpOwotICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6Y29weSggCi0gICAgICAgICAgICAgICAgICAgIG5vbl9ibG9ja2luZ19zb3VyY2UodGVtcCwgaW5jKSwKLSAgICAgICAgICAgICAgICAgICAgY29tcG9zZShpbiwgaW9zdHJlYW1zOjpiYWNrX2luc2VydGVyKGRlc3QpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGNhdGNoKHN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmUmKSB7fQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRGaWx0ZXIsIHR5cGVuYW1lIElucHV0RmlsdGVyLCB0eXBlbmFtZSBTb3VyY2U+Ci1ib29sIHRlc3RfZmlsdGVyX3BhaXIoIE91dHB1dEZpbHRlciBvdXQsIAotICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEZpbHRlciBpbiwgCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZSYgZGF0YSwgCi0gICAgICAgICAgICAgICAgICAgICAgIG1wbDo6ZmFsc2VfICkKLXsKLSAgICBzdGQ6OnN0cmluZyBzdHI7Ci0gICAgaW9zdHJlYW1zOjpjb3B5KGRhdGEsIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihzdHIpKTsKLSAgICByZXR1cm4gdGVzdF9maWx0ZXJfcGFpcihvdXQsIGluLCBzdHIpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRGaWx0ZXIsIHR5cGVuYW1lIElucHV0RmlsdGVyLCB0eXBlbmFtZSBTb3VyY2U+Ci1ib29sIHRlc3RfZmlsdGVyX3BhaXIoIE91dHB1dEZpbHRlciBvdXQsIAotICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEZpbHRlciBpbiwgCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZSYgZGF0YSApCi17Ci0gICAgLy8gVXNlIHRhZyBkaXNwYXRjaCB0byBjb21wZW5zYXRlIGZvciBiYWQgb3ZlcmxvYWQgcmVzb2x1dGlvbi4KLSAgICByZXR1cm4gdGVzdF9maWx0ZXJfcGFpcihvdXQsIGluLCBkYXRhLCBpc19zdHJpbmc8U291cmNlPigpKTsKLX0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxURVJfVEVTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci96bGliLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci96bGliLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM1ZWQzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvemxpYi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MjcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIE5vdGU6IGN1c3RvbSBhbGxvY2F0b3JzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIFZDNiwgc2luY2UgdGhhdCBjb21waWxlcgotLy8gaGFkIHRyb3VibGUgZmluZGluZyB0aGUgZnVuY3Rpb24gemxpYl9iYXNlOjpkb19pbml0LgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19aTElCX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfWkxJQl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGNhc3NlcnQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPGlvc2Z3ZD4gICAgICAgICAgICAvLyBzdHJlYW1zaXplLiAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgIC8vIGFsbG9jYXRvciwgYmFkX2FsbG9jLgotI2luY2x1ZGUgPG5ldz4gICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIE1TVkMsIFNUQVRJQ19DT05TVEFOVCwgREVEVUNFRF9UWVBFTkFNRSwgRElOS1VNLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAvLyB1aW50Kl90Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb25zdGFudHMuaHBwPiAgIC8vIGJ1ZmZlciBzaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZHluX2xpbmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvemxpYi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gZmFpbHVyZSwgc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3N5bW1ldHJpYy5ocHA+ICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+ICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI1MSA0MjMxIDQ2NjApICAgICAgICAgLy8gRGVwZW5kZW5jaWVzIG5vdCBleHBvcnRlZC4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4gICAgICAgICAgIAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIHpsaWIgewotICAgICAgICAgICAgICAgICAgICAvLyBUeXBlZGVmcwotCi10eXBlZGVmIHVpbnQzMl90IHVpbnQ7Ci10eXBlZGVmIHVpbnQ4X3QgYnl0ZTsKLXR5cGVkZWYgdWludDMyX3QgdWxvbmc7Ci0KLS8vIFByZWZpeCAneCcgcHJldmVudHMgc3ltYm9scyBmcm9tIGJlaW5nIHJlZGVmaW5lZCB3aGVuIFpfUFJFRklYIGlzIGRlZmluZWQKLXR5cGVkZWYgdm9pZCogKCp4YWxsb2NfZnVuYykodm9pZCosIHpsaWI6OnVpbnQsIHpsaWI6OnVpbnQpOwotdHlwZWRlZiB2b2lkICgqeGZyZWVfZnVuYykodm9pZCosIHZvaWQqKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBDb21wcmVzc2lvbiBsZXZlbHMKLQotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBub19jb21wcmVzc2lvbjsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgYmVzdF9zcGVlZDsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgYmVzdF9jb21wcmVzc2lvbjsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZGVmYXVsdF9jb21wcmVzc2lvbjsKLQotICAgICAgICAgICAgICAgICAgICAvLyBDb21wcmVzc2lvbiBtZXRob2RzCi0KLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZGVmbGF0ZWQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQ29tcHJlc3Npb24gc3RyYXRlZ2llcwotCi1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGRlZmF1bHRfc3RyYXRlZ3k7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGZpbHRlcmVkOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBodWZmbWFuX29ubHk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU3RhdHVzIGNvZGVzCi0KLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgb2theTsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgc3RyZWFtX2VuZDsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgc3RyZWFtX2Vycm9yOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCB2ZXJzaW9uX2Vycm9yOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBkYXRhX2Vycm9yOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBtZW1fZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGJ1Zl9lcnJvcjsKLQotICAgICAgICAgICAgICAgICAgICAvLyBGbHVzaCBjb2RlcwotCi1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGZpbmlzaDsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgbm9fZmx1c2g7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IHN5bmNfZmx1c2g7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQ29kZSBmb3IgY3VycmVudCBPUwotCi0vL05ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgb3NfY29kZTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBOdWxsIHBvaW50ZXIgY29uc3RhbnQuCi0KLWNvbnN0IGludCBudWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKLQotICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHZhbHVlcwotCi1jb25zdCBpbnQgZGVmYXVsdF93aW5kb3dfYml0cyAgICAgICAgICAgICAgICA9IDE1OwotY29uc3QgaW50IGRlZmF1bHRfbWVtX2xldmVsICAgICAgICAgICAgICAgICAgPSA4OwotY29uc3QgYm9vbCBkZWZhdWx0X2NyYyAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKLWNvbnN0IGJvb2wgZGVmYXVsdF9ub2hlYWRlciAgICAgICAgICAgICAgICAgID0gZmFsc2U7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSB6bGliLiAKLQotLy8KLS8vIENsYXNzIG5hbWU6IHpsaWJfcGFyYW1zLgotLy8gRGVzY3JpcHRpb246IEVuY2Fwc3VsYXRlcyB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gZGVmbGF0ZUluaXQyCi0vLyAgICAgIGFuZCBpbmZsYXRlSW5pdDIgdG8gY3VzdG9taXplIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLgotLy8KLXN0cnVjdCB6bGliX3BhcmFtcyB7Ci0KLSAgICAvLyBOb24tZXhwbGljaXQgY29uc3RydWN0b3IuCi0gICAgemxpYl9wYXJhbXMoIGludCBsZXZlbCAgICAgICAgICAgPSB6bGliOjpkZWZhdWx0X2NvbXByZXNzaW9uLAotICAgICAgICAgICAgICAgICBpbnQgbWV0aG9kICAgICAgICAgID0gemxpYjo6ZGVmbGF0ZWQsCi0gICAgICAgICAgICAgICAgIGludCB3aW5kb3dfYml0cyAgICAgPSB6bGliOjpkZWZhdWx0X3dpbmRvd19iaXRzLCAKLSAgICAgICAgICAgICAgICAgaW50IG1lbV9sZXZlbCAgICAgICA9IHpsaWI6OmRlZmF1bHRfbWVtX2xldmVsLCAKLSAgICAgICAgICAgICAgICAgaW50IHN0cmF0ZWd5ICAgICAgICA9IHpsaWI6OmRlZmF1bHRfc3RyYXRlZ3ksCi0gICAgICAgICAgICAgICAgIGJvb2wgbm9oZWFkZXIgICAgICAgPSB6bGliOjpkZWZhdWx0X25vaGVhZGVyLAotICAgICAgICAgICAgICAgICBib29sIGNhbGN1bGF0ZV9jcmMgID0gemxpYjo6ZGVmYXVsdF9jcmMgKQotICAgICAgICA6IGxldmVsKGxldmVsKSwgbWV0aG9kKG1ldGhvZCksIHdpbmRvd19iaXRzKHdpbmRvd19iaXRzKSwKLSAgICAgICAgICBtZW1fbGV2ZWwobWVtX2xldmVsKSwgc3RyYXRlZ3koc3RyYXRlZ3kpLCAgCi0gICAgICAgICAgbm9oZWFkZXIobm9oZWFkZXIpLCBjYWxjdWxhdGVfY3JjKGNhbGN1bGF0ZV9jcmMpCi0gICAgICAgIHsgfQotICAgIGludCBsZXZlbDsKLSAgICBpbnQgbWV0aG9kOwotICAgIGludCB3aW5kb3dfYml0czsKLSAgICBpbnQgbWVtX2xldmVsOwotICAgIGludCBzdHJhdGVneTsKLSAgICBib29sIG5vaGVhZGVyOwotICAgIGJvb2wgY2FsY3VsYXRlX2NyYzsKLX07Ci0KLS8vCi0vLyBDbGFzcyBuYW1lOiB6bGliX2Vycm9yLgotLy8gRGVzY3JpcHRpb246IFN1YmNsYXNzIG9mIHN0ZDo6aW9zOjpmYWlsdXJlIHRocm93biB0byBpbmRpY2F0ZQotLy8gICAgIHpsaWIgZXJyb3JzIG90aGVyIHRoYW4gb3V0LW9mLW1lbW9yeSBjb25kaXRpb25zLgotLy8KLWNsYXNzIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIHpsaWJfZXJyb3IgOiBwdWJsaWMgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgewotcHVibGljOgotICAgIGV4cGxpY2l0IHpsaWJfZXJyb3IoaW50IGVycm9yKTsKLSAgICBpbnQgZXJyb3IoKSBjb25zdCB7IHJldHVybiBlcnJvcl87IH0KLSAgICBzdGF0aWMgdm9pZCBjaGVjayBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihpbnQgZXJyb3IpOwotcHJpdmF0ZToKLSAgICBpbnQgZXJyb3JfOwotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotc3RydWN0IHpsaWJfYWxsb2NhdG9yX3RyYWl0cyB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8Y2hhcj46Om90aGVyIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgc3RkOjphbGxvY2F0b3I8Y2hhcj4gdHlwZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFsbG9jLAotICAgICAgICAgIHR5cGVuYW1lIEJhc2UgPSAvLyBWQzYgd29ya2Fyb3VuZCAoQzI1MTYpCi0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgemxpYl9hbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dHlwZSA+Ci1zdHJ1Y3QgemxpYl9hbGxvY2F0b3IgOiBwcml2YXRlIEJhc2UgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2U6OnNpemVfdHlwZSBzaXplX3R5cGU7Ci1wdWJsaWM6Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGN1c3RvbSA9IAotICAgICAgICAoIWlzX3NhbWU8c3RkOjphbGxvY2F0b3I8Y2hhcj4sIEJhc2U+Ojp2YWx1ZSkpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgemxpYl9hbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dHlwZSBhbGxvY2F0b3JfdHlwZTsKLSAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGUodm9pZCogc2VsZiwgemxpYjo6dWludCBpdGVtcywgemxpYjo6dWludCBzaXplKTsKLSAgICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKHZvaWQqIHNlbGYsIHZvaWQqIGFkZHJlc3MpOwotfTsKLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgemxpYl9iYXNlIHsgCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLXByb3RlY3RlZDoKLSAgICB6bGliX2Jhc2UoKTsKLSAgICB+emxpYl9iYXNlKCk7Ci0gICAgdm9pZCogc3RyZWFtKCkgeyByZXR1cm4gc3RyZWFtXzsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiAKLSAgICB2b2lkIGluaXQoIGNvbnN0IHpsaWJfcGFyYW1zJiBwLCAKLSAgICAgICAgICAgICAgIGJvb2wgY29tcHJlc3MsCi0gICAgICAgICAgICAgICB6bGliX2FsbG9jYXRvcjxBbGxvYz4mIHphbGxvYyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgY3VzdG9tID0gemxpYl9hbGxvY2F0b3I8QWxsb2M+OjpjdXN0b207Ci0gICAgICAgICAgICBkb19pbml0KCBwLCBjb21wcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tID8gemxpYl9hbGxvY2F0b3I8QWxsb2M+OjphbGxvY2F0ZSA6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tID8gemxpYl9hbGxvY2F0b3I8QWxsb2M+OjpkZWFsbG9jYXRlIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgJnphbGxvYyApOwotICAgICAgICB9Ci0gICAgdm9pZCBiZWZvcmUoIGNvbnN0IGNoYXIqJiBzcmNfYmVnaW4sIGNvbnN0IGNoYXIqIHNyY19lbmQsCi0gICAgICAgICAgICAgICAgIGNoYXIqJiBkZXN0X2JlZ2luLCBjaGFyKiBkZXN0X2VuZCApOwotICAgIHZvaWQgYWZ0ZXIoIGNvbnN0IGNoYXIqJiBzcmNfYmVnaW4sIGNoYXIqJiBkZXN0X2JlZ2luLCAKLSAgICAgICAgICAgICAgICBib29sIGNvbXByZXNzICk7Ci0gICAgaW50IHhkZWZsYXRlKGludCBmbHVzaCk7ICAvLyBQcmVmaXggJ3gnIHByZXZlbnRzIHN5bWJvbHMgZnJvbSBiZWluZyAKLSAgICBpbnQgeGluZmxhdGUoaW50IGZsdXNoKTsgIC8vIHJlZGVmaW5lZCB3aGVuIFpfUFJFRklYIGlzIGRlZmluZWQKLSAgICB2b2lkIHJlc2V0KGJvb2wgY29tcHJlc3MsIGJvb2wgcmVhbGxvYyk7Ci1wdWJsaWM6Ci0gICAgemxpYjo6dWxvbmcgY3JjKCkgY29uc3QgeyByZXR1cm4gY3JjXzsgfQotICAgIGludCB0b3RhbF9pbigpIGNvbnN0IHsgcmV0dXJuIHRvdGFsX2luXzsgfQotICAgIGludCB0b3RhbF9vdXQoKSBjb25zdCB7IHJldHVybiB0b3RhbF9vdXRfOyB9Ci1wcml2YXRlOgotICAgIHZvaWQgZG9faW5pdCggY29uc3QgemxpYl9wYXJhbXMmIHAsIGJvb2wgY29tcHJlc3MsIAotICAgICAgICAgICAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgICAgICAgICAgICB6bGliOjp4YWxsb2NfZnVuYywgCi0gICAgICAgICAgICAgICAgICAgICAgemxpYjo6eGZyZWVfZnVuYywgCi0gICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIHZvaWQqIGRlcml2ZWQgKTsKLSAgICB2b2lkKiAgICAgICAgc3RyZWFtXzsgICAgICAgICAvLyBBY3R1YWwgdHlwZTogel9zdHJlYW0qLgotICAgIGJvb2wgICAgICAgICBjYWxjdWxhdGVfY3JjXzsKLSAgICB6bGliOjp1bG9uZyAgY3JjXzsKLSAgICB6bGliOjp1bG9uZyAgY3JjX2ltcF87Ci0gICAgaW50ICAgICAgICAgIHRvdGFsX2luXzsKLSAgICBpbnQgICAgICAgICAgdG90YWxfb3V0XzsKLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiB6bGliX2NvbXByZXNzb3JfaW1wbAotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIEMtU3R5bGUgRmlsdGUgaW1wbGVtZW50aW5nIGNvbXByZXNzaW9uIGJ5Ci0vLyAgICAgIGRlbGVnYXRpbmcgdG8gdGhlIHpsaWIgZnVuY3Rpb24gZGVmbGF0ZS4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIHpsaWJfY29tcHJlc3Nvcl9pbXBsIDogcHVibGljIHpsaWJfYmFzZSwgcHVibGljIHpsaWJfYWxsb2NhdG9yPEFsbG9jPiB7IAotcHVibGljOiAKLSAgICB6bGliX2NvbXByZXNzb3JfaW1wbChjb25zdCB6bGliX3BhcmFtcyYgPSB6bGliOjpkZWZhdWx0X2NvbXByZXNzaW9uKTsKLSAgICB+emxpYl9jb21wcmVzc29yX2ltcGwoKTsKLSAgICBib29sIGZpbHRlciggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgICAgICAgICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kLCBib29sIGZsdXNoICk7Ci0gICAgdm9pZCBjbG9zZSgpOwotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHpsaWJfY29tcHJlc3NvcgotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIEMtU3R5bGUgRmlsdGUgaW1wbGVtZW50aW5nIGRlY29tcHJlc3Npb24gYnkKLS8vICAgICAgZGVsZWdhdGluZyB0byB0aGUgemxpYiBmdW5jdGlvbiBpbmZsYXRlLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotY2xhc3MgemxpYl9kZWNvbXByZXNzb3JfaW1wbCA6IHB1YmxpYyB6bGliX2Jhc2UsIHB1YmxpYyB6bGliX2FsbG9jYXRvcjxBbGxvYz4gewotcHVibGljOgotICAgIHpsaWJfZGVjb21wcmVzc29yX2ltcGwoY29uc3QgemxpYl9wYXJhbXMmKTsKLSAgICB6bGliX2RlY29tcHJlc3Nvcl9pbXBsKGludCB3aW5kb3dfYml0cyA9IHpsaWI6OmRlZmF1bHRfd2luZG93X2JpdHMpOwotICAgIH56bGliX2RlY29tcHJlc3Nvcl9pbXBsKCk7Ci0gICAgYm9vbCBmaWx0ZXIoIGNvbnN0IGNoYXIqJiBiZWdpbl9pbiwgY29uc3QgY2hhciogZW5kX2luLAotICAgICAgICAgICAgICAgICBjaGFyKiYgYmVnaW5fb3V0LCBjaGFyKiBlbmRfb3V0LCBib29sIGZsdXNoICk7Ci0gICAgdm9pZCBjbG9zZSgpOwotICAgIGJvb2wgZW9mKCkgY29uc3QgeyByZXR1cm4gZW9mXzsgfQotcHJpdmF0ZToKLSAgICBib29sIGVvZl87Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogemxpYl9jb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgSW5wdXRGaWx0ZXIgYW5kIE91dHB1dEZpbHRlciBpbXBsZW1lbnRpbmcKLS8vICAgICAgY29tcHJlc3Npb24gdXNpbmcgemxpYi4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLXN0cnVjdCBiYXNpY196bGliX2NvbXByZXNzb3IgCi0gICAgOiBzeW1tZXRyaWNfZmlsdGVyPGRldGFpbDo6emxpYl9jb21wcmVzc29yX2ltcGw8QWxsb2M+LCBBbGxvYz4gCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgZGV0YWlsOjp6bGliX2NvbXByZXNzb3JfaW1wbDxBbGxvYz4gICAgICAgICBpbXBsX3R5cGU7Ci0gICAgdHlwZWRlZiBzeW1tZXRyaWNfZmlsdGVyPGltcGxfdHlwZSwgQWxsb2M+ICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgYmFzaWNfemxpYl9jb21wcmVzc29yKCBjb25zdCB6bGliX3BhcmFtcyYgPSB6bGliOjpkZWZhdWx0X2NvbXByZXNzaW9uLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplICk7Ci0gICAgemxpYjo6dWxvbmcgY3JjKCkgeyByZXR1cm4gdGhpcy0+ZmlsdGVyKCkuY3JjKCk7IH0KLSAgICBpbnQgdG90YWxfaW4oKSB7ICByZXR1cm4gdGhpcy0+ZmlsdGVyKCkudG90YWxfaW4oKTsgfQotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX3psaWJfY29tcHJlc3NvciwgMSkKLQotdHlwZWRlZiBiYXNpY196bGliX2NvbXByZXNzb3I8PiB6bGliX2NvbXByZXNzb3I7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiB6bGliX2RlY29tcHJlc3NvcgotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIElucHV0RmlsdGVyIGFuZCBPdXRwdXRGaWx0ZXIgaW1wbGVtZW50aW5nCi0vLyAgICAgIGRlY29tcHJlc3Npb24gdXNpbmcgemxpYi4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLXN0cnVjdCBiYXNpY196bGliX2RlY29tcHJlc3NvciAKLSAgICA6IHN5bW1ldHJpY19maWx0ZXI8ZGV0YWlsOjp6bGliX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPiwgQWxsb2M+IAotewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGRldGFpbDo6emxpYl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz4gICAgICAgaW1wbF90eXBlOwotICAgIHR5cGVkZWYgc3ltbWV0cmljX2ZpbHRlcjxpbXBsX3R5cGUsIEFsbG9jPiAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNhdGVnb3J5ICAgICAgICAgICAgICAgIGNhdGVnb3J5OwotICAgIGJhc2ljX3psaWJfZGVjb21wcmVzc29yKCBpbnQgd2luZG93X2JpdHMgPSB6bGliOjpkZWZhdWx0X3dpbmRvd19iaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgPSBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSApOwotICAgIGJhc2ljX3psaWJfZGVjb21wcmVzc29yKCBjb25zdCB6bGliX3BhcmFtcyYgcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUgKTsKLSAgICB6bGliOjp1bG9uZyBjcmMoKSB7IHJldHVybiB0aGlzLT5maWx0ZXIoKS5jcmMoKTsgfQotICAgIGludCB0b3RhbF9vdXQoKSB7ICByZXR1cm4gdGhpcy0+ZmlsdGVyKCkudG90YWxfb3V0KCk7IH0KLSAgICBib29sIGVvZigpIHsgcmV0dXJuIHRoaXMtPmZpbHRlcigpLmVvZigpOyB9Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYmFzaWNfemxpYl9kZWNvbXByZXNzb3IsIDEpCi0KLXR5cGVkZWYgYmFzaWNfemxpYl9kZWNvbXByZXNzb3I8PiB6bGliX2RlY29tcHJlc3NvcjsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiB6bGliX2FsbG9jYXRvci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBCYXNlPgotdm9pZCogemxpYl9hbGxvY2F0b3I8QWxsb2MsIEJhc2U+OjphbGxvY2F0ZQotICAgICh2b2lkKiBzZWxmLCB6bGliOjp1aW50IGl0ZW1zLCB6bGliOjp1aW50IHNpemUpCi17IAotICAgIHNpemVfdHlwZSBsZW4gPSBpdGVtcyAqIHNpemU7Ci0gICAgY2hhciogcHRyID0gCi0gICAgICAgIHN0YXRpY19jYXN0PGFsbG9jYXRvcl90eXBlKj4oc2VsZiktPmFsbG9jYXRlCi0gICAgICAgICAgICAobGVuICsgc2l6ZW9mKHNpemVfdHlwZSkKLSAgICAgICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA9PSAxKQotICAgICAgICAgICAgICAgICwgKGNoYXIqKTAKLSAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgKTsKLSAgICAqcmVpbnRlcnByZXRfY2FzdDxzaXplX3R5cGUqPihwdHIpID0gbGVuOwotICAgIHJldHVybiBwdHIgKyBzaXplb2Yoc2l6ZV90eXBlKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEJhc2U+Ci12b2lkIHpsaWJfYWxsb2NhdG9yPEFsbG9jLCBCYXNlPjo6ZGVhbGxvY2F0ZSh2b2lkKiBzZWxmLCB2b2lkKiBhZGRyZXNzKQoteyAKLSAgICBjaGFyKiBwdHIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRyZXNzKSAtIHNpemVvZihzaXplX3R5cGUpOwotICAgIHNpemVfdHlwZSBsZW4gPSAqcmVpbnRlcnByZXRfY2FzdDxzaXplX3R5cGUqPihwdHIpICsgc2l6ZW9mKHNpemVfdHlwZSk7Ci0gICAgc3RhdGljX2Nhc3Q8YWxsb2NhdG9yX3R5cGUqPihzZWxmKS0+ZGVhbGxvY2F0ZShwdHIsIGxlbik7IAotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHpsaWJfY29tcHJlc3Nvcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXpsaWJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6emxpYl9jb21wcmVzc29yX2ltcGwoY29uc3QgemxpYl9wYXJhbXMmIHApCi17IGluaXQocCwgdHJ1ZSwgc3RhdGljX2Nhc3Q8emxpYl9hbGxvY2F0b3I8QWxsb2M+Jj4oKnRoaXMpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXpsaWJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6fnpsaWJfY29tcHJlc3Nvcl9pbXBsKCkKLXsgcmVzZXQodHJ1ZSwgZmFsc2UpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYm9vbCB6bGliX2NvbXByZXNzb3JfaW1wbDxBbGxvYz46OmZpbHRlcgotICAgICggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgIGNoYXIqJiBkZXN0X2JlZ2luLCBjaGFyKiBkZXN0X2VuZCwgYm9vbCBmbHVzaCApCi17Ci0gICAgYmVmb3JlKHNyY19iZWdpbiwgc3JjX2VuZCwgZGVzdF9iZWdpbiwgZGVzdF9lbmQpOwotICAgIGludCByZXN1bHQgPSB4ZGVmbGF0ZShmbHVzaCA/IHpsaWI6OmZpbmlzaCA6IHpsaWI6Om5vX2ZsdXNoKTsKLSAgICBhZnRlcihzcmNfYmVnaW4sIGRlc3RfYmVnaW4sIHRydWUpOwotICAgIHpsaWJfZXJyb3I6OmNoZWNrIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdCAhPSB6bGliOjpzdHJlYW1fZW5kOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci12b2lkIHpsaWJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6Y2xvc2UoKSB7IHJlc2V0KHRydWUsIHRydWUpOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgemxpYl9kZWNvbXByZXNzb3JfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotemxpYl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz46OnpsaWJfZGVjb21wcmVzc29yX2ltcGwoY29uc3QgemxpYl9wYXJhbXMmIHApCi0gIDogZW9mXyhmYWxzZSkKLXsgaW5pdChwLCBmYWxzZSwgc3RhdGljX2Nhc3Q8emxpYl9hbGxvY2F0b3I8QWxsb2M+Jj4oKnRoaXMpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXpsaWJfZGVjb21wcmVzc29yX2ltcGw8QWxsb2M+Ojp+emxpYl9kZWNvbXByZXNzb3JfaW1wbCgpCi17IHJlc2V0KGZhbHNlLCBmYWxzZSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci16bGliX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6emxpYl9kZWNvbXByZXNzb3JfaW1wbChpbnQgd2luZG93X2JpdHMpCi17IAotICAgIHpsaWJfcGFyYW1zIHA7Ci0gICAgcC53aW5kb3dfYml0cyA9IHdpbmRvd19iaXRzOwotICAgIGluaXQocCwgZmFsc2UsIHN0YXRpY19jYXN0PHpsaWJfYWxsb2NhdG9yPEFsbG9jPiY+KCp0aGlzKSk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJvb2wgemxpYl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz46OmZpbHRlcgotICAgICggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgIGNoYXIqJiBkZXN0X2JlZ2luLCBjaGFyKiBkZXN0X2VuZCwgYm9vbCAvKiBmbHVzaCAqLyApCi17Ci0gICAgYmVmb3JlKHNyY19iZWdpbiwgc3JjX2VuZCwgZGVzdF9iZWdpbiwgZGVzdF9lbmQpOwotICAgIGludCByZXN1bHQgPSB4aW5mbGF0ZSh6bGliOjpzeW5jX2ZsdXNoKTsKLSAgICBhZnRlcihzcmNfYmVnaW4sIGRlc3RfYmVnaW4sIGZhbHNlKTsKLSAgICB6bGliX2Vycm9yOjpjaGVjayBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihyZXN1bHQpOwotICAgIHJldHVybiAhKGVvZl8gPSByZXN1bHQgPT0gemxpYjo6c3RyZWFtX2VuZCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotdm9pZCB6bGliX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6Y2xvc2UoKSB7Ci0gICAgZW9mXyA9IGZhbHNlOwotICAgIHJlc2V0KGZhbHNlLCB0cnVlKTsKLX0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiB6bGliX2RlY29tcHJlc3Nvci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iYXNpY196bGliX2NvbXByZXNzb3I8QWxsb2M+OjpiYXNpY196bGliX2NvbXByZXNzb3IKLSAgICAoY29uc3QgemxpYl9wYXJhbXMmIHAsIGludCBidWZmZXJfc2l6ZSkgCi0gICAgOiBiYXNlX3R5cGUoYnVmZmVyX3NpemUsIHApIHsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHpsaWJfZGVjb21wcmVzc29yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJhc2ljX3psaWJfZGVjb21wcmVzc29yPEFsbG9jPjo6YmFzaWNfemxpYl9kZWNvbXByZXNzb3IKLSAgICAoaW50IHdpbmRvd19iaXRzLCBpbnQgYnVmZmVyX3NpemUpIAotICAgIDogYmFzZV90eXBlKGJ1ZmZlcl9zaXplLCB3aW5kb3dfYml0cykgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYmFzaWNfemxpYl9kZWNvbXByZXNzb3I8QWxsb2M+OjpiYXNpY196bGliX2RlY29tcHJlc3NvcgotICAgIChjb25zdCB6bGliX3BhcmFtcyYgcCwgaW50IGJ1ZmZlcl9zaXplKSAKLSAgICA6IGJhc2VfdHlwZShidWZmZXJfc2l6ZSwgcCkgeyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBQb3BzIGFiaV9zdWZmaXguaHBwIHByYWdtYXMuCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1pMSUJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXJpbmdfc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDA4NWExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxURVJfU1RSRUFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRklMVEVSX1NUUkVBTV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWNjZXNzX2NvbnRyb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zdHJlYW0uaHBwPiAgICAgICAgLy8gc3RhbmRhcmQgc3RyZWFtcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+ICAgICAgIC8vIHB1YnN5bmMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGZpbHRlcmVkX2lzdHJlYW0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHI+Ci1zdHJ1Y3QgZmlsdGVyaW5nX3N0cmVhbV90cmFpdHMgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBpb3N0cmVhbXM6OnNlbGVjdDwgIC8vIERpc2FtYmlndWF0aW9uIGZvciBUcnU2NCAgCi0gICAgICAgICAgICAgICAgbXBsOjphbmRfPCAKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8TW9kZSwgaW5wdXQ+LCAKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8TW9kZSwgb3V0cHV0PiAKLSAgICAgICAgICAgICAgICA+LCAgICAgICAgICAKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSU9TVFJFQU0oQ2gsIFRyKSwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxNb2RlLCBpbnB1dD4sIAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JU1RSRUFNKENoLCBUciksCi0gICAgICAgICAgICAgICAgZWxzZV8sICAgICAgICAKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfT1NUUkVBTShDaCwgVHIpCi0gICAgICAgICAgICA+Ojp0eXBlIHN0cmVhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIGlvc3RyZWFtczo6c2VsZWN0PCAvLyBEaXNtYmlndWF0aW9uIHJlcXVpcmVkIGZvciBUcnU2NC4KLSAgICAgICAgICAgICAgICBtcGw6OmFuZF88Ci0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPE1vZGUsIGlucHV0PiwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8TW9kZSwgb3V0cHV0PgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPE1vZGUsIGlucHV0PiwKLSAgICAgICAgICAgICAgICBpc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICBlbHNlXywKLSAgICAgICAgICAgICAgICBvc3RyZWFtX3RhZwotICAgICAgICAgICAgPjo6dHlwZSBzdHJlYW1fdGFnOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhaW4sIHR5cGVuYW1lIEFjY2Vzcz4KLWNsYXNzIGZpbHRlcmluZ19zdHJlYW1fYmFzZSAKLSAgICA6IHB1YmxpYyBhY2Nlc3NfY29udHJvbDwKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjaGFpbl9jbGllbnQ8Q2hhaW4+LAotICAgICAgICAgICAgICAgICBBY2Nlc3MKLSAgICAgICAgICAgICA+LAotICAgICAgcHVibGljIGZpbHRlcmluZ19zdHJlYW1fdHJhaXRzPAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6bW9kZSwgCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIENoYWluOjpjaGFyX3R5cGUsIAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6dHJhaXRzX3R5cGUKLSAgICAgICAgICAgICA+OjpzdHJlYW1fdHlwZQotewotcHVibGljOgotICAgIHR5cGVkZWYgQ2hhaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWluX3R5cGU7Ci0gICAgdHlwZWRlZiBhY2Nlc3NfY29udHJvbDwKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjaGFpbl9jbGllbnQ8Q2hhaW4+LAotICAgICAgICAgICAgICAgICBBY2Nlc3MKLSAgICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfdHlwZTsKLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgZmlsdGVyaW5nX3N0cmVhbV90cmFpdHM8Ci0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIENoYWluOjptb2RlLCAKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2hhaW46OmNoYXJfdHlwZSwgCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIENoYWluOjp0cmFpdHNfdHlwZQotICAgICAgICAgICAgPjo6c3RyZWFtX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV90eXBlOwotICAgIGZpbHRlcmluZ19zdHJlYW1fYmFzZSgpIDogc3RyZWFtX3R5cGUoMCkgeyB0aGlzLT5zZXRfY2hhaW4oJmNoYWluXyk7IH0KLXByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnkoKSB7IHRoaXMtPnJkYnVmKGNoYWluXy5lbXB0eSgpID8gMCA6ICZjaGFpbl8uZnJvbnQoKSk7IH0KLSAgICBDaGFpbiBjaGFpbl87Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLwotLy8gTWFjcm86IE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfRklMVEVSX1NUUkVBTShuYW1lXywgY2hhaW5fdHlwZV8sIGRlZmF1bHRfY2hhcl8pCi0vLyBEZXNjcmlwdGlvbjogRGVmaW5lcyBhIHRlbXBsYXRlIGRlcml2ZWQgZnJvbSBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZiB3aGljaCB1c2VzCi0vLyAgICAgIGEgY2hhaW4gdG8gcGVyZm9ybSBpL28uIFRoZSB0ZW1wbGF0ZSBoYXMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgotLy8gICAgICBNb2RlIC0gdGhlIGkvbyBtb2RlLgotLy8gICAgICBDaCAtIFRoZSBjaGFyYWN0ZXIgdHlwZS4KLS8vICAgICAgVHIgLSBUaGUgY2hhcmFjdGVyIHRyYWl0cyB0eXBlLgotLy8gICAgICBBbGxvYyAtIFRoZSBhbGxvY2F0b3IgdHlwZS4KLS8vICAgICAgQWNjZXNzIC0gSW5kaWNhdGVzIGFjY2Vzc2liaWxpdHkgb2YgdGhlIGNoYWluIGludGVyZmFjZTsgbXVzdCBiZSBlaXRoZXIKLS8vICAgICAgICAgIHB1YmxpY18gb3IgcHJvdGVjdGVkXzsgZGVmYXVsdHMgdG8gcHVibGljXy4KLS8vIE1hY3JvIHBhcmFtZXRlcnM6Ci0vLyAgICAgIG5hbWVfIC0gVGhlIG5hbWUgb2YgdGhlIHRlbXBsYXRlIHRvIGJlIGRlZmluZWQuCi0vLyAgICAgIGNoYWluX3R5cGVfIC0gVGhlIG5hbWUgb2YgdGhlIGNoYWluIHRlbXBsYXRlLgotLy8gICAgICBkZWZhdWx0X2NoYXJfIC0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBjaGFyIHRlbXBsYXRlIHBhcmFtZXRlci4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfRklMVEVSX1NUUkVBTShuYW1lXywgY2hhaW5fdHlwZV8sIGRlZmF1bHRfY2hhcl8pIFwKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTW9kZSwgXAotICAgICAgICAgICAgICB0eXBlbmFtZSBDaCA9IGRlZmF1bHRfY2hhcl8sIFwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVHIgPSBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoQ2gpLCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Q2g+LCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIEFjY2VzcyA9IHB1YmxpY18gPiBcCi0gICAgY2xhc3MgbmFtZV8gXAotICAgICAgICA6IHB1YmxpYyBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmZpbHRlcmluZ19zdHJlYW1fYmFzZTwgXAotICAgICAgICAgICAgICAgICAgICAgY2hhaW5fdHlwZV88TW9kZSwgQ2gsIFRyLCBBbGxvYz4sIEFjY2VzcyBcCi0gICAgICAgICAgICAgICAgID4gXAotICAgIHsgXAotICAgIHB1YmxpYzogXAotICAgICAgICB0eXBlZGVmIENoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7IFwKLSAgICAgICAgc3RydWN0IGNhdGVnb3J5IFwKLSAgICAgICAgICAgIDogTW9kZSwgXAotICAgICAgICAgICAgICBjbG9zYWJsZV90YWcsIFwKLSAgICAgICAgICAgICAgZGV0YWlsOjpmaWx0ZXJpbmdfc3RyZWFtX3RyYWl0czxNb2RlLCBDaCwgVHI+OjpzdHJlYW1fdGFnIFwKLSAgICAgICAgICAgIHsgfTsgXAotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKSBcCi0gICAgICAgIHR5cGVkZWYgTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU7IFwKLSAgICAgICAgdHlwZWRlZiBjaGFpbl90eXBlXzxNb2RlLCBDaCwgVHIsIEFsbG9jPiAgY2hhaW5fdHlwZTsgXAotICAgICAgICBuYW1lXygpIHsgfSBcCi0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfUFVTSF9DT05TVFJVQ1RPUihuYW1lXywgbW9kZSwgQ2gsIHB1c2hfaW1wbCkgXAotICAgICAgICB+bmFtZV8oKSB7IFwKLSAgICAgICAgICAgIGlmICh0aGlzLT5pc19jb21wbGV0ZSgpKSBcCi0gICAgICAgICAgICAgICAgIHRoaXMtPnJkYnVmKCktPk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCk7IFwKLSAgICAgICAgfSBcCi0gICAgcHJpdmF0ZTogXAotICAgICAgICB0eXBlZGVmIGFjY2Vzc19jb250cm9sPCBcCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y2hhaW5fY2xpZW50PCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFpbl90eXBlXzxNb2RlLCBDaCwgVHIsIEFsbG9jPiBcCi0gICAgICAgICAgICAgICAgICAgID4sIFwKLSAgICAgICAgICAgICAgICAgICAgQWNjZXNzIFwKLSAgICAgICAgICAgICAgICA+IGNsaWVudF90eXBlOyBcCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLSAgICAgICAgdm9pZCBwdXNoX2ltcGwoY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgICAgICB7IGNsaWVudF90eXBlOjpwdXNoKHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpKTsgfSBcCi0gICAgfTsgXAotICAgIC8qKi8gICAgCi1ORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZJTFRFUl9TVFJFQU0oZmlsdGVyaW5nX3N0cmVhbSwgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2hhaW4sIGNoYXIpCi1ORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZJTFRFUl9TVFJFQU0od2ZpbHRlcmluZ19zdHJlYW0sIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNoYWluLCB3Y2hhcl90KQotCi10eXBlZGVmIGZpbHRlcmluZ19zdHJlYW08aW5wdXQ+ICAgIGZpbHRlcmluZ19pc3RyZWFtOwotdHlwZWRlZiBmaWx0ZXJpbmdfc3RyZWFtPG91dHB1dD4gICBmaWx0ZXJpbmdfb3N0cmVhbTsKLXR5cGVkZWYgd2ZpbHRlcmluZ19zdHJlYW08aW5wdXQ+ICAgZmlsdGVyaW5nX3dpc3RyZWFtOwotdHlwZWRlZiB3ZmlsdGVyaW5nX3N0cmVhbTxvdXRwdXQ+ICBmaWx0ZXJpbmdfd29zdHJlYW07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlIGlvc3RyZWFtcywgYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+IC8vIE1TVkMKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUl9TVFJFQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXJpbmdfc3RyZWFtYnVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW1idWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTRmZDNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW1idWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUklOR19TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxURVJJTkdfU1RSRUFNQlVGX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hY2Nlc3NfY29udHJvbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wdXNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+IC8vIHB1YnN5bmMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvY2hhaW5idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+ICAgICAgICAgICAgICAgICAgICAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBNYWNybzogTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9GSUxURVJCVUYobmFtZV8sIGNoYWluX3R5cGVfLCBkZWZhdWx0X2NoYXJfKQotLy8gRGVzY3JpcHRpb246IERlZmluZXMgYSB0ZW1wbGF0ZSBkZXJpdmVkIGZyb20gc3RkOjpiYXNpY19zdHJlYW1idWYgd2hpY2ggdXNlcwotLy8gICAgICBhIGNoYWluIHRvIHBlcmZvcm0gaS9vLiBUaGUgdGVtcGxhdGUgaGFzIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKLS8vICAgICAgQ2ggLSBUaGUgY2hhcmFjdGVyIHR5cGUuCi0vLyAgICAgIFRyIC0gVGhlIGNoYXJhY3RlciB0cmFpdHMgdHlwZS4KLS8vICAgICAgQWxsb2MgLSBUaGUgYWxsb2NhdG9yIHR5cGUuCi0vLyAgICAgIEFjY2VzcyAtIEluZGljYXRlcyBhY2Nlc3NpYmlsaXR5IG9mIHRoZSBjaGFpbiBpbnRlcmZhY2U7IG11c3QgYmUgZWl0aGVyCi0vLyAgICAgICAgICBwdWJsaWNfIG9yIHByb3RlY3RlZF87IGRlZmF1bHRzIHRvIHB1YmxpY18uCi0vLwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZJTFRFUl9TVFJFQU1CVUYobmFtZV8sIGNoYWluX3R5cGVfLCBkZWZhdWx0X2NoYXJfKSBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE1vZGUsIFwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgQ2ggPSBkZWZhdWx0X2NoYXJfLCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFRyID0gTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKENoKSwgXAotICAgICAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiwgXAotICAgICAgICAgICAgICB0eXBlbmFtZSBBY2Nlc3MgPSBwdWJsaWNfID4gXAotICAgIGNsYXNzIG5hbWVfIDogcHVibGljIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y2hhaW5idWY8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhaW5fdHlwZV88TW9kZSwgQ2gsIFRyLCBBbGxvYz4sIE1vZGUsIEFjY2VzcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgPiBcCi0gICAgeyBcCi0gICAgcHVibGljOiBcCi0gICAgICAgIHR5cGVkZWYgQ2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7IFwKLSAgICAgICAgc3RydWN0IGNhdGVnb3J5IFwKLSAgICAgICAgICAgIDogTW9kZSwgY2xvc2FibGVfdGFnLCBzdHJlYW1idWZfdGFnIFwKLSAgICAgICAgICAgIHsgfTsgXAotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKSBcCi0gICAgICAgIHR5cGVkZWYgTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOyBcCi0gICAgICAgIHR5cGVkZWYgY2hhaW5fdHlwZV88TW9kZSwgQ2gsIFRyLCBBbGxvYz4gICAgICAgICAgICAgICBjaGFpbl90eXBlOyBcCi0gICAgICAgIG5hbWVfKCkgeyB9IFwKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIX0NPTlNUUlVDVE9SKG5hbWVfLCBtb2RlLCBDaCwgcHVzaF9pbXBsKSBcCi0gICAgICAgIH5uYW1lXygpIHsgaWYgKHRoaXMtPmlzX2NvbXBsZXRlKCkpIHRoaXMtPk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCk7IH0gXAotICAgIH07IFwKLSAgICAvKiovIAotTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9GSUxURVJfU1RSRUFNQlVGKGZpbHRlcmluZ19zdHJlYW1idWYsIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNoYWluLCBjaGFyKQotTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9GSUxURVJfU1RSRUFNQlVGKGZpbHRlcmluZ193c3RyZWFtYnVmLCBuZG5ib29zdDo6aW9zdHJlYW1zOjpjaGFpbiwgd2NoYXJfdCkKLQotdHlwZWRlZiBmaWx0ZXJpbmdfc3RyZWFtYnVmPGlucHV0PiAgICBmaWx0ZXJpbmdfaXN0cmVhbWJ1ZjsKLXR5cGVkZWYgZmlsdGVyaW5nX3N0cmVhbWJ1ZjxvdXRwdXQ+ICAgZmlsdGVyaW5nX29zdHJlYW1idWY7Ci10eXBlZGVmIGZpbHRlcmluZ193c3RyZWFtYnVmPGlucHV0PiAgIGZpbHRlcmluZ193aXN0cmVhbWJ1ZjsKLXR5cGVkZWYgZmlsdGVyaW5nX3dzdHJlYW1idWY8b3V0cHV0PiAgZmlsdGVyaW5nX3dvc3RyZWFtYnVmOwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUklOR19TVFJFQU1CVUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9mbHVzaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9mbHVzaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMGRmNjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmx1c2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GTFVTSF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZMVVNIX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Rpc3BhdGNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGZsdXNoX2RldmljZV9pbXBsOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGZsdXNoX2ZpbHRlcl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBmbHVzaChUJiB0KQoteyByZXR1cm4gZGV0YWlsOjpmbHVzaF9kZXZpY2VfaW1wbDxUPjo6Zmx1c2goZGV0YWlsOjp1bndyYXAodCkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci1ib29sIGZsdXNoKFQmIHQsIFNpbmsmIHNuaykKLXsgcmV0dXJuIGRldGFpbDo6Zmx1c2hfZmlsdGVyX2ltcGw8VD46OmZsdXNoKGRldGFpbDo6dW53cmFwKHQpLCBzbmspOyB9Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgZmx1c2hfZGV2aWNlX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGZsdXNoX2RldmljZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBmbHVzaF9kZXZpY2VfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIG9zdHJlYW1fdGFnLCBzdHJlYW1idWZfdGFnLCBmbHVzaGFibGVfdGFnLCBhbnlfdGFnCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx1c2hfZGV2aWNlX2ltcGw8b3N0cmVhbV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIGZsdXNoKFQmIHQpCi0gICAgeyByZXR1cm4gdC5yZGJ1ZigpLT5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU1lOQygpID09IDA7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbHVzaF9kZXZpY2VfaW1wbDxzdHJlYW1idWZfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBmbHVzaChUJiB0KQotICAgIHsgcmV0dXJuIHQuTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNZTkMoKSA9PSAwOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx1c2hfZGV2aWNlX2ltcGw8Zmx1c2hhYmxlX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgZmx1c2goVCYgdCkgeyByZXR1cm4gdC5mbHVzaCgpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx1c2hfZGV2aWNlX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgZmx1c2goVCYpIHsgcmV0dXJuIHRydWU7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBmbHVzaF9maWx0ZXJfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZmx1c2hfZmlsdGVyX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIGZsdXNoX2ZpbHRlcl9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgZmx1c2hhYmxlX3RhZywgYW55X3RhZwotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZsdXNoX2ZpbHRlcl9pbXBsPGZsdXNoYWJsZV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotICAgIHN0YXRpYyBib29sIGZsdXNoKFQmIHQsIFNpbmsmIHNuaykgeyByZXR1cm4gdC5mbHVzaChzbmspOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx1c2hfZmlsdGVyX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIGJvb2wgZmx1c2goVCYsIFNpbmsmKSB7IHJldHVybiBmYWxzZTsgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRkxVU0hfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9nZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZ2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFmOGY3YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9nZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0dFVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0dFVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19HRVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9pbWJ1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9pbWJ1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOWZmYjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvaW1idWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lNQlVFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfSU1CVUVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIERFRFVDRURfVFlQRU5BTUUsIE1TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBJbXBsZW1lbnRhdGlvbiB0ZW1wbGF0ZXMgZm9yIHNpbXVsYXRlZCB0YWcgZGlzcGF0Y2guCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLXN0cnVjdCBpbWJ1ZV9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMb2NhbGU+Ci12b2lkIGltYnVlKFQmIHQsIGNvbnN0IExvY2FsZSYgbG9jKQoteyBkZXRhaWw6OmltYnVlX2ltcGw8VD46OmltYnVlKGRldGFpbDo6dW53cmFwKHQpLCBsb2MpOyB9Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgaW1idWVfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGltYnVlX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIGltYnVlX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBzdHJlYW1idWZfdGFnLCBsb2NhbGl6YWJsZV90YWcsIGFueV90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbWJ1ZV9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMb2NhbGU+Ci0gICAgc3RhdGljIHZvaWQgaW1idWUoVCYsIGNvbnN0IExvY2FsZSYpIHsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGltYnVlX2ltcGw8c3RyZWFtYnVmX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIExvY2FsZT4KLSAgICBzdGF0aWMgdm9pZCBpbWJ1ZShUJiB0LCBjb25zdCBMb2NhbGUmIGxvYykgeyB0LnB1YmltYnVlKGxvYyk7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbWJ1ZV9pbXBsPGxvY2FsaXphYmxlX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIExvY2FsZT4KLSAgICBzdGF0aWMgdm9pZCBpbWJ1ZShUJiB0LCBjb25zdCBMb2NhbGUmIGxvYykgeyB0LmltYnVlKGxvYyk7IH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lNQlVFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvaW5wdXRfc2VxdWVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvaW5wdXRfc2VxdWVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTUwYzZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2lucHV0X3NlcXVlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JTlBVVF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0lOUFVUX1NFUVVFTkNFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPHV0aWxpdHk+ICAgICAgICAgICAvLyBwYWlyLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwPiAgLy8gaXNfY3VzdG9tIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaW5wdXRfc2VxdWVuY2VfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnBhaXI8Ci0gICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqLAotICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKgotPgotaW5wdXRfc2VxdWVuY2UoVCYgdCkKLXsgcmV0dXJuIGRldGFpbDo6aW5wdXRfc2VxdWVuY2VfaW1wbDxUPjo6aW5wdXRfc2VxdWVuY2UodCk7IH0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBkaXJlY3RfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlucHV0X3NlcXVlbmNlX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGRldGFpbDo6aXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgaW5wdXRfc2VxdWVuY2VfaW1wbDxkaXJlY3RfdGFnPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlucHV0X3NlcXVlbmNlX2ltcGw8ZGlyZWN0X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIHN0ZDo6cGFpcjwKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VT46OnR5cGUqLAotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxVPjo6dHlwZSoKLSAgICA+Ci0gICAgaW5wdXRfc2VxdWVuY2UoVSYgdSkgeyByZXR1cm4gdS5pbnB1dF9zZXF1ZW5jZSgpOyB9Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JTlBVVF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ludmVydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9pbnZlcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjBlNWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ludmVydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lOVkVSVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0lOVkVSVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcHksIG1pbi4gIAotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRS4gICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPiAgICAgICAgICAgLy8gZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29tcG9zZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9idWZmZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY291bnRlZF9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwPiAvLyBjbGVhcl9mbGFncywgY2FsbF9yZXNldAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBpbnZlcnNlLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgRmlsdGVyIC0gQSBtb2RlbCBvZiBJbnB1dEZpbHRlciBvciBPdXRwdXRGaWx0ZXIuCi0vLyBEZXNjcmlwdGlvbjogR2VuZXJhdGVzIGFuIElucHV0RmlsdGVyIGZyb20gYW4gT3V0cHV0RmlsdGVyIG9yCi0vLyAgICAgIHZpY2UgdmVyc2EuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotY2xhc3MgaW52ZXJzZSB7Ci1wcml2YXRlOgotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZmlsdGVyPEZpbHRlcj46OnZhbHVlKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPEZpbHRlcj46OnR5cGUgICBiYXNlX2NhdGVnb3J5OwotICAgIHR5cGVkZWYgcmVmZXJlbmNlX3dyYXBwZXI8RmlsdGVyPiAgICAgICAgICAgIGZpbHRlcl9yZWY7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RmlsdGVyPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50X3R5cGVfb2Y8RmlsdGVyPjo6dHlwZSAgIGludF90eXBlOwotICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgICAgICAgICAgICAgIHRyYWl0c190eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgYmFzZV9jYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgaW5wdXQKLSAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgIG91dHB1dCwKLSAgICAgICAgICAgICAgICBpbnB1dAotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IG1vZGUsIAotICAgICAgICAgIGZpbHRlcl90YWcsIAotICAgICAgICAgIG11bHRpY2hhcl90YWcsIAotICAgICAgICAgIGNsb3NhYmxlX3RhZyAKLSAgICAgICAgeyB9OwotICAgIGV4cGxpY2l0IGludmVyc2UoIGNvbnN0IEZpbHRlciYgZmlsdGVyLCAKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYnVmZmVyX3NpemUgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemUpIAotICAgICAgICA6IHBpbXBsXyhuZXcgaW1wbChmaWx0ZXIsIGJ1ZmZlcl9zaXplKSkKLSAgICAgICAgeyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXIqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZXRhaWw6OmNvdW50ZWRfYXJyYXlfc2luazxjaGFyX3R5cGU+ICBhcnJheV9zaW5rOwotICAgICAgICB0eXBlZGVmIGNvbXBvc2l0ZTxmaWx0ZXJfcmVmLCBhcnJheV9zaW5rPiAgICAgIGZpbHRlcmVkX2FycmF5X3Npbms7Ci0KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKChmbGFncygpICYgZl93cml0ZSkgPT0gMCk7Ci0gICAgICAgIGlmIChmbGFncygpID09IDApIHsKLSAgICAgICAgICAgIGZsYWdzKCkgPSBmX3JlYWQ7Ci0gICAgICAgICAgICBidWYoKS5zZXQoMCwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmaWx0ZXJlZF9hcnJheV9zaW5rIHNuayhmaWx0ZXIoKSwgYXJyYXlfc2luayhzLCBuKSk7Ci0gICAgICAgIGludF90eXBlIHN0YXR1czsKLSAgICAgICAgZm9yICggc3RhdHVzID0gdHJhaXRzX3R5cGU6Omdvb2QoKTsKLSAgICAgICAgICAgICAgc25rLnNlY29uZCgpLmNvdW50KCkgPCBuICYmIHN0YXR1cyA9PSB0cmFpdHNfdHlwZTo6Z29vZCgpOyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IGJ1ZigpLmZpbGwoc3JjKTsKLSAgICAgICAgICAgIGJ1ZigpLmZsdXNoKHNuayk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHNuay5zZWNvbmQoKS5jb3VudCgpID09IDAgJiYKLSAgICAgICAgICAgICAgIHN0YXR1cyA9PSB0cmFpdHNfdHlwZTo6ZW9mKCkgCi0gICAgICAgICAgICAgICAgICAgPyAKLSAgICAgICAgICAgICAgIC0xCi0gICAgICAgICAgICAgICAgICAgOiAKLSAgICAgICAgICAgICAgIHNuay5zZWNvbmQoKS5jb3VudCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmIGRlc3QsIGNvbnN0IGNoYXIqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZXRhaWw6OmNvdW50ZWRfYXJyYXlfc291cmNlPGNoYXJfdHlwZT4gIGFycmF5X3NvdXJjZTsKLSAgICAgICAgdHlwZWRlZiBjb21wb3NpdGU8ZmlsdGVyX3JlZiwgYXJyYXlfc291cmNlPiAgICAgIGZpbHRlcmVkX2FycmF5X3NvdXJjZTsKLQotICAgICAgICBORE5CT09TVF9BU1NFUlQoKGZsYWdzKCkgJiBmX3JlYWQpID09IDApOwotICAgICAgICBpZiAoZmxhZ3MoKSA9PSAwKSB7Ci0gICAgICAgICAgICBmbGFncygpID0gZl93cml0ZTsKLSAgICAgICAgICAgIGJ1ZigpLnNldCgwLCAwKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZmlsdGVyZWRfYXJyYXlfc291cmNlIHNyYyhmaWx0ZXIoKSwgYXJyYXlfc291cmNlKHMsIG4pKTsKLSAgICAgICAgZm9yIChib29sIGdvb2QgPSB0cnVlOyBzcmMuc2Vjb25kKCkuY291bnQoKSA8IG4gJiYgZ29vZDsgKSB7Ci0gICAgICAgICAgICBidWYoKS5maWxsKHNyYyk7Ci0gICAgICAgICAgICBnb29kID0gYnVmKCkuZmx1c2goZGVzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHNyYy5zZWNvbmQoKS5jb3VudCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYgZGV2KQotICAgIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Zmx1c2hfYnVmZmVyKGJ1ZigpLCBkZXYsIChmbGFncygpICYgZl93cml0ZSkgIT0gMCksCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2VfYWxsKHBpbXBsXy0+ZmlsdGVyXywgZGV2KSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2xlYXJfZmxhZ3MoZmxhZ3MoKSkKLSAgICAgICAgKTsKLSAgICB9Ci1wcml2YXRlOgotICAgIGZpbHRlcl9yZWYgZmlsdGVyKCkgeyByZXR1cm4gbmRuYm9vc3Q6OnJlZihwaW1wbF8tPmZpbHRlcl8pOyB9Ci0gICAgZGV0YWlsOjpidWZmZXI8Y2hhcl90eXBlPiYgYnVmKCkgeyByZXR1cm4gcGltcGxfLT5idWZfOyB9Ci0gICAgaW50JiBmbGFncygpIHsgcmV0dXJuIHBpbXBsXy0+ZmxhZ3NfOyB9Ci0gICAgCi0gICAgZW51bSBmbGFnc18gewotICAgICAgICBmX3JlYWQgPSAxLCBmX3dyaXRlID0gMgotICAgIH07Ci0KLSAgICBzdHJ1Y3QgaW1wbCB7Ci0gICAgICAgIGltcGwoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6c3RyZWFtc2l6ZSBuKSAKLSAgICAgICAgICAgIDogZmlsdGVyXyhmaWx0ZXIpLCBidWZfKG4pLCBmbGFnc18oMCkKLSAgICAgICAgeyBidWZfLnNldCgwLCAwKTsgfQotICAgICAgICBGaWx0ZXIgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfOwotICAgICAgICBkZXRhaWw6OmJ1ZmZlcjxjaGFyX3R5cGU+ICBidWZfOwotICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc187Ci0gICAgfTsKLSAgICBzaGFyZWRfcHRyPGltcGw+IHBpbXBsXzsKLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBpbnZlcnQuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBGaWx0ZXIgLSBBIG1vZGVsIG9mIElucHV0RmlsdGVyIG9yIE91dHB1dEZpbHRlci4KLS8vIERlc2NyaXB0aW9uOiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIGFuIGFwcHJvcHJpYXRlIHNwZWNpYWxpemF0aW9uIG9mIGludmVyc2UuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotaW52ZXJzZTxGaWx0ZXI+IGludmVydChjb25zdCBGaWx0ZXImIGYpIHsgcmV0dXJuIGludmVyc2U8RmlsdGVyPihmKTsgfQotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JTlZFUlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjExZGVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX09QRVJBVElPTlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19PUEVSQVRJT05TX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2Nsb3NlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmx1c2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9pbWJ1ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2lucHV0X3NlcXVlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3B0aW1hbF9idWZmZXJfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL291dHB1dF9zZXF1ZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3JlYWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9zZWVrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfT1BFUkFUSU9OU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVlNzk5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfT1BFUkFUSU9OU19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19PUEVSQVRJT05TX0ZXRF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgb3BlcmF0aW9uczsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBjdXN0b21fdGFnIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jdXN0b20KLSAgICA6IG1wbDo6bm90XzwKLSAgICAgICAgICBpc19iYXNlX2FuZF9kZXJpdmVkPCBjdXN0b21fdGFnLCBvcGVyYXRpb25zPFQ+ID4KLSAgICAgID4KLSAgICB7IH07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgb3BlcmF0aW9ucyA6IGRldGFpbDo6Y3VzdG9tX3RhZyB7IH07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfT1BFUkFUSU9OU19GV0RfSFBQX0lOQ0xVREVEIC8vLS0tLS0tLS0tLS0tLS0vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvb3B0aW1hbF9idWZmZXJfc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vcHRpbWFsX2J1ZmZlcl9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRmNGE4MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vcHRpbWFsX2J1ZmZlcl9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19PUFRJTUFMX0JVRkZFUl9TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfT1BUSU1BTF9CVUZGRVJfU0laRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+ICAvLyBjb25zdGFudHMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kaXNwYXRjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IG9wdGltYWxfYnVmZmVyX3NpemVfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKGNvbnN0IFQmIHQpCi17Ci0gICAgdHlwZWRlZiBkZXRhaWw6Om9wdGltYWxfYnVmZmVyX3NpemVfaW1wbDxUPiBpbXBsOwotICAgIHJldHVybiBpbXBsOjpvcHRpbWFsX2J1ZmZlcl9zaXplKGRldGFpbDo6dW53cmFwKHQpKTsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBvcHRpbWFsX2J1ZmZlcl9zaXplX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgb3B0aW1hbF9idWZmZXJfc2l6ZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBvcHRpbWFsX2J1ZmZlcl9zaXplX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBvcHRpbWFsbHlfYnVmZmVyZWRfdGFnLCBkZXZpY2VfdGFnLCBmaWx0ZXJfdGFnCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3B0aW1hbF9idWZmZXJfc2l6ZV9pbXBsPG9wdGltYWxseV9idWZmZXJlZF90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZShjb25zdCBUJiB0KQotICAgIHsgcmV0dXJuIHQub3B0aW1hbF9idWZmZXJfc2l6ZSgpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3B0aW1hbF9idWZmZXJfc2l6ZV9pbXBsPGRldmljZV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZShjb25zdCBUJikKLSAgICB7IHJldHVybiBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9wdGltYWxfYnVmZmVyX3NpemVfaW1wbDxmaWx0ZXJfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIG9wdGltYWxfYnVmZmVyX3NpemUoY29uc3QgVCYpCi0gICAgeyByZXR1cm4gZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemU7IH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX09QVElNQUxfQlVGRkVSX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vdXRwdXRfc2VxdWVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvb3V0cHV0X3NlcXVlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEwZTUyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vdXRwdXRfc2VxdWVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX09VVFBVVF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX09VVFBVVF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDx1dGlsaXR5PiAgICAgICAgICAgLy8gcGFpci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4gIC8vIGlzX2N1c3RvbSAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IG91dHB1dF9zZXF1ZW5jZV9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6cGFpcjwKLSAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSosCi0gICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqCi0+Ci1vdXRwdXRfc2VxdWVuY2UoVCYgdCkKLXsgcmV0dXJuIGRldGFpbDo6b3V0cHV0X3NlcXVlbmNlX2ltcGw8VD46Om91dHB1dF9zZXF1ZW5jZSh0KTsgfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG91dHB1dF9zZXF1ZW5jZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBvdXRwdXRfc2VxdWVuY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgZGV0YWlsOjppc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBvdXRwdXRfc2VxdWVuY2VfaW1wbDxkaXJlY3RfdGFnPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG91dHB1dF9zZXF1ZW5jZV9pbXBsPGRpcmVjdF90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0YXRpYyBzdGQ6OnBhaXI8Ci0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFU+Ojp0eXBlKiwKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VT46OnR5cGUqCi0gICAgPgotICAgIG91dHB1dF9zZXF1ZW5jZShVJiB1KSB7IHJldHVybiB1Lm91dHB1dF9zZXF1ZW5jZSgpOyB9Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19PVVRQVVRfU0VRVUVOQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NWQzYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4gICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdGVtcGxhdGVfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwPgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoZmlsdGVyLCBhcml0eSkgXAotICAgIHRlbXBsYXRlPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhhcml0eSwgdHlwZW5hbWUgVCkgXAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihhcml0eSkgdHlwZW5hbWUgQ29tcG9uZW50PiBcCi0gICAgOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpwaXBlbGluZTwgXAotICAgICAgICA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6cGlwZWxpbmVfc2VnbWVudDwgXAotICAgICAgICAgICAgZmlsdGVyIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9BUkdTKGFyaXR5LCBUKSBcCi0gICAgICAgID4sIFwKLSAgICAgICAgQ29tcG9uZW50IFwKLSAgICA+IG9wZXJhdG9yfCggY29uc3QgZmlsdGVyIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9BUkdTKGFyaXR5LCBUKSYgZiwgXAotICAgICAgICAgICAgICAgICBjb25zdCBDb21wb25lbnQmIGMgKSBcCi0gICAgeyBcCi0gICAgICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnBpcGVsaW5lX3NlZ21lbnQ8IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsdGVyIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9BUkdTKGFyaXR5LCBUKSBcCi0gICAgICAgICAgICAgICAgPiBzZWdtZW50OyBcCi0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OnBpcGVsaW5lPHNlZ21lbnQsIENvbXBvbmVudD4gXAotICAgICAgICAgICAgICAgICAgIChzZWdtZW50KGYpLCBjKTsgXAotICAgIH0gXAotICAgIC8qKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBpcGVsaW5lLCB0eXBlbmFtZSBDb21wb25lbnQ+Ci1zdHJ1Y3QgcGlwZWxpbmU7Ci0gICAgCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgCi0gICAgc3RydWN0IHBpcGVsaW5lX2Jhc2UgeyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaXNfcGlwZWxpbmUgCi0gICAgICAgIDogaXNfYmFzZV9hbmRfZGVyaXZlZDxwaXBlbGluZV9iYXNlLCBUPgotICAgICAgICB7IH07Ci0jZW5kaWYgCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaXNfcGlwZWxpbmUgOiBtcGw6OmZhbHNlXyB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQaXBlbGluZSwgdHlwZW5hbWUgQ29tcG9uZW50PgotICAgIHN0cnVjdCBpc19waXBlbGluZTwgcGlwZWxpbmU8UGlwZWxpbmUsIENvbXBvbmVudD4gPiA6IG1wbDo6dHJ1ZV8geyB9OwotI2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENvbXBvbmVudD4KLWNsYXNzIHBpcGVsaW5lX3NlZ21lbnQgCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgIDogcGlwZWxpbmVfYmFzZSAKLSNlbmRpZiAKLXsKLXB1YmxpYzoKLSAgICBwaXBlbGluZV9zZWdtZW50KGNvbnN0IENvbXBvbmVudCYgY29tcG9uZW50KSAKLSAgICAgICAgOiBjb21wb25lbnRfKGNvbXBvbmVudCkgCi0gICAgICAgIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZuPgotICAgIHZvaWQgZm9yX2VhY2goRm4gZm4pIGNvbnN0IHsgZm4oY29tcG9uZW50Xyk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFpbj4KLSAgICB2b2lkIHB1c2goQ2hhaW4mIGNobikgY29uc3QgeyBjaG4ucHVzaChjb21wb25lbnRfKTsgfQotcHJpdmF0ZToKLSAgICBwaXBlbGluZV9zZWdtZW50IG9wZXJhdG9yPShjb25zdCBwaXBlbGluZV9zZWdtZW50Jik7Ci0gICAgY29uc3QgQ29tcG9uZW50JiBjb21wb25lbnRfOwotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgUGlwZWxpbmUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQaXBlbGluZSwgdHlwZW5hbWUgQ29tcG9uZW50Pgotc3RydWN0IHBpcGVsaW5lIDogUGlwZWxpbmUgewotICAgIHR5cGVkZWYgUGlwZWxpbmUgICBwaXBlbGluZV90eXBlOwotICAgIHR5cGVkZWYgQ29tcG9uZW50ICBjb21wb25lbnRfdHlwZTsKLSAgICBwaXBlbGluZShjb25zdCBQaXBlbGluZSYgcCwgY29uc3QgQ29tcG9uZW50JiBjb21wb25lbnQpCi0gICAgICAgIDogUGlwZWxpbmUocCksIGNvbXBvbmVudF8oY29tcG9uZW50KQotICAgICAgICB7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGbj4KLSAgICB2b2lkIGZvcl9lYWNoKEZuIGZuKSBjb25zdAotICAgIHsKLSAgICAgICAgUGlwZWxpbmU6OmZvcl9lYWNoKGZuKTsKLSAgICAgICAgZm4oY29tcG9uZW50Xyk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYWluPgotICAgIHZvaWQgcHVzaChDaGFpbiYgY2huKSBjb25zdAotICAgIHsgCi0gICAgICAgIFBpcGVsaW5lOjpwdXNoKGNobik7Ci0gICAgICAgIGNobi5wdXNoKGNvbXBvbmVudF8pOwotICAgIH0KLSAgICBjb25zdCBQaXBlbGluZSYgdGFpbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgY29uc3QgQ29tcG9uZW50JiBoZWFkKCkgY29uc3QgeyByZXR1cm4gY29tcG9uZW50XzsgfQotcHJpdmF0ZToKLSAgICBwaXBlbGluZSBvcGVyYXRvcj0oY29uc3QgcGlwZWxpbmUmKTsKLSAgICBjb25zdCBDb21wb25lbnQmIGNvbXBvbmVudF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQaXBlbGluZSwgdHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBDb21wb25lbnQ+Ci1waXBlbGluZTxwaXBlbGluZTxQaXBlbGluZSwgRmlsdGVyPiwgQ29tcG9uZW50Pgotb3BlcmF0b3J8KGNvbnN0IHBpcGVsaW5lPFBpcGVsaW5lLCBGaWx0ZXI+JiBwLCBjb25zdCBDb21wb25lbnQmIGNtcCkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2ZpbHRlcjxGaWx0ZXI+Ojp2YWx1ZSk7Ci0gICAgcmV0dXJuIHBpcGVsaW5lPHBpcGVsaW5lPFBpcGVsaW5lLCBGaWx0ZXI+LCBDb21wb25lbnQ+KHAsIGNtcCk7Ci19Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc4ZjllNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIFRoYW5rcyB0byBHYXJldGggU3lsdmVzdGVyLUJyYWRsZXkgZm9yIHRoZSBEaW5rdW13YXJlIHZlcnNpb25zIG9mIHRoZQotLy8gcG9zaXRpb25pbmcgZnVuY3Rpb25zLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19QT1NJVElPTklOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BPU0lUSU9OSU5HX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwPiAvLyBtYnN0YXRlX3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZnBvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAvLyBzdHJlYW1vZmYsIHN0cmVhbXBvcy4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+IAotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OmZwb3NfdDsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBzdHJlYW1fb2Zmc2V0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXR5cGVkZWYgbmRuYm9vc3Q6OmludG1heF90IHN0cmVhbV9vZmZzZXQ7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBzdHJlYW1fb2Zmc2V0X3RvX3N0cmVhbW9mZi0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWlubGluZSBzdGQ6OnN0cmVhbW9mZiBzdHJlYW1fb2Zmc2V0X3RvX3N0cmVhbW9mZihzdHJlYW1fb2Zmc2V0IG9mZikKLXsgcmV0dXJuIHN0YXRpY19jYXN0PHN0cmVhbV9vZmZzZXQ+KG9mZik7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG9mZnNldF90b19wb3NpdGlvbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0hBU19ESU5LVU1XQVJFX0ZQT1MKLQotaW5saW5lIHN0ZDo6c3RyZWFtcG9zIG9mZnNldF90b19wb3NpdGlvbihzdHJlYW1fb2Zmc2V0IG9mZikgeyByZXR1cm4gb2ZmOyB9Ci0KLSMgZWxzZSAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSEFTX0RJTktVTVdBUkVfRlBPUwotCi1pbmxpbmUgc3RkOjpzdHJlYW1wb3Mgb2Zmc2V0X3RvX3Bvc2l0aW9uKHN0cmVhbV9vZmZzZXQgb2ZmKQoteyByZXR1cm4gc3RkOjpzdHJlYW1wb3Moc3RkOjptYnN0YXRlX3QoKSwgb2ZmKTsgfQotCi0jIGVuZGlmIC8vICMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19IQVNfRElOS1VNV0FSRV9GUE9TCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBwb3NpdGlvbl90b19vZmZzZXQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIEhhbmRlIGN1c3RvbSBwb3NfdHlwZSdzCi10ZW1wbGF0ZTx0eXBlbmFtZSBQb3NUeXBlPiAKLWlubGluZSBzdHJlYW1fb2Zmc2V0IHBvc2l0aW9uX3RvX29mZnNldChQb3NUeXBlIHBvcykKLXsgcmV0dXJuIHN0ZDo6c3RyZWFtb2ZmKHBvcyk7IH0KLQotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0hBU19ESU5LVU1XQVJFX0ZQT1MKLQotaW5saW5lIHN0cmVhbV9vZmZzZXQgcG9zaXRpb25fdG9fb2Zmc2V0KHN0ZDo6c3RyZWFtcG9zIHBvcykgeyByZXR1cm4gcG9zOyB9Ci0KLSMgZWxzZSAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSEFTX0RJTktVTVdBUkVfRlBPUwotCi0vLyBJbiB0aGUgRGlua3Vtd2FyZSBzdGFuZGFyZCBsaWJyYXJ5LCBhIHN0ZDo6c3RyZWFtcG9zIGNvbnNpc3RzIG9mIHR3byBzdHJlYW0KLS8vIG9mZnNldHMgLS0gX0Zwb3MsIG9mIHR5cGUgc3RkOjpmcG9zX3QsIGFuZCBfTXlvZmYsIG9mIHR5cGUgc3RkOjpzdHJlYW1vZmYgLS0KLS8vIHRvZ2V0aGVyIHdpdGggYSBjb252ZXJzaW9uIHN0YXRlLiBBIHN0ZDo6c3RyZWFtcG9zIGlzIGNvbnZlcnRlZCB0byBhIAotLy8gbmRuYm9vc3Q6Omlvc3RyZWFtczo6c3RyZWFtX29mZnNldCBieSBleHRyYWN0aW5nIHRoZSB0d28gc3RyZWFtIG9mZnNldHMgYW5kCi0vLyBzdW1taW5nIHRoZW0uIFRoZSB2YWx1ZSBvZiBfRnBvcyBjYW4gYmUgZXh0cmFjdGVkIHVzaW5nIHRoZSBpbXBsZW1lbnRhdGlvbi0KLS8vIGRlZmluZWQgbWVtYmVyIGZ1bmN0aW9ucyBzZWVrcG9zKCkgb3IgZ2V0X2Zwb3NfdCgpLCBkZXBlbmRpbmcgb24gdGhlIAotLy8gRGlua3Vtd2FyZSB2ZXJzaW9uLiBUaGUgdmFsdWUgb2YgX015b2ZmIGNhbm5vdCBiZSBleHRyYWN0ZWQgZGlyZWN0bHksIGJ1dCBjYW4KLS8vIGJlIGNhbGN1bGF0ZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgdGhlIAotLy8gc3RkOjpmcG9zIHRvIGEgc3RkOjpzdHJlYW1vZmYgYW5kIHRoZSByZXN1bHQgb2YgY29udmVydGluZyB0aGUgbWVtYmVyIF9GcG9zCi0vLyB0byBhIGxvbmcuIFRoZSBsYXR0ZXIgb3BlcmF0aW9uIGlzIGFjY29tcGxpc2hlZCB3aXRoIHRoZSBtYWNybyBfRlBPU09GRiwgCi0vLyB3aGljaCB3b3JrcyBjb3JyZWN0bHkgb24gcGxhdGZvcm1zIHdoZXJlIHN0ZDo6ZnBvc190IGlzIGFuIGludGVncmFsIHR5cGUgYW5kIAotLy8gcGxhdGZvcm1zIHdoZXJlIGl0IGlzIGEgc3RydWN0Ci0KLS8vIENvbnZlcnRzIGEgc3RkOjpmcG9zX3QgdG8gYSBzdHJlYW1fb2Zmc2V0Ci1pbmxpbmUgc3RyZWFtX29mZnNldCBmcG9zX3RfdG9fb2Zmc2V0KHN0ZDo6ZnBvc190IHBvcykKLXsKLSMgIGlmIGRlZmluZWQoX1BPU0lYXykgfHwgKF9JTlRFR1JBTF9NQVhfQklUUyA+PSA2NCkgfHwgZGVmaW5lZChfX0lCTUNQUF9fKQotICAgIHJldHVybiBwb3M7Ci0jICBlbHNlCi0gICAgcmV0dXJuIF9GUE9TT0ZGKHBvcyk7Ci0jICBlbmRpZgotfQotCi0vLyBFeHRyYWN0cyB0aGUgbWVtYmVyIF9GcG9zIGZyb20gYSBzdGQ6OmZwb3MKLWlubGluZSBzdGQ6OmZwb3NfdCBzdHJlYW1wb3NfdG9fZnBvc190KHN0ZDo6c3RyZWFtcG9zIHBvcykKLXsKLSMgIGlmIGRlZmluZWQgKF9DUFBMSUJfVkVSKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0gICAgcmV0dXJuIHBvcy5zZWVrcG9zKCk7Ci0jICBlbHNlCi0gICAgcmV0dXJuIHBvcy5nZXRfZnBvc190KCk7Ci0jICBlbmRpZgotfQotCi1pbmxpbmUgc3RyZWFtX29mZnNldCBwb3NpdGlvbl90b19vZmZzZXQoc3RkOjpzdHJlYW1wb3MgcG9zKQotewotICAgIHJldHVybiBmcG9zX3RfdG9fb2Zmc2V0KHN0cmVhbXBvc190b19mcG9zX3QocG9zKSkgKwotICAgICAgICBzdGF0aWNfY2FzdDxzdHJlYW1fb2Zmc2V0PigKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtb2ZmPihwb3MpIC0KLSAgICAgICAgICAgIF9GUE9TT0ZGKHN0cmVhbXBvc190b19mcG9zX3QocG9zKSkKLSAgICAgICAgKTsKLX0KLQotIyBlbmRpZiAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSEFTX0RJTktVTVdBUkVfRlBPUyAKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1BPU0lUSU9OSU5HX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcHV0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3B1dC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5M2ZlZDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcHV0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19QVVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVVRfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3dyaXRlLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1BVVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3B1dGJhY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcHV0YmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NjkyNGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcHV0YmFjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUFVUQkFDS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVVEJBQ0tfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3JlYWQuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUFVUQkFDS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3JlYWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMWVkZjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFQURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19SRUFEX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2L3JlYWQuaHBwPgotI2Vsc2UgLy8gI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlYWRfZGV2aWNlX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVhZF9maWx0ZXJfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlIGdldChUJiB0KQoteyByZXR1cm4gZGV0YWlsOjpyZWFkX2RldmljZV9pbXBsPFQ+OjpnZXQoZGV0YWlsOjp1bndyYXAodCkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplCi1yZWFkKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBkZXRhaWw6OnJlYWRfZGV2aWNlX2ltcGw8VD46OnJlYWQoZGV0YWlsOjp1bndyYXAodCksIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNvdXJjZT4KLXN0ZDo6c3RyZWFtc2l6ZQotcmVhZChUJiB0LCBTb3VyY2UmIHNyYywgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGRldGFpbDo6cmVhZF9maWx0ZXJfaW1wbDxUPjo6cmVhZChkZXRhaWw6OnVud3JhcCh0KSwgc3JjLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQoteyByZXR1cm4gZGV0YWlsOjpyZWFkX2RldmljZV9pbXBsPFQ+OjpwdXRiYWNrKGRldGFpbDo6dW53cmFwKHQpLCBjKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBhZGRpbmcgLTEgYXMgRU9GIGluZGljYXRvci4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgY2hlY2tfZW9mKHN0ZDo6c3RyZWFtc2l6ZSBuKSB7IHJldHVybiBuICE9IDAgPyBuIDogLTE7IH0KLQotLy8gSGVscGVyIHRlbXBsYXRlcyBmb3IgcmVhZGluZyBmcm9tIHN0cmVhbWJ1ZnMuCi10ZW1wbGF0ZTxib29sIElzTGlua2VkPgotc3RydWN0IHRydWVfZW9mX2ltcGw7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0cnVlX2VvZl9pbXBsPHRydWU+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHRydWVfZW9mKFQmIHQpIHsgcmV0dXJuIHQudHJ1ZV9lb2YoKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRydWVfZW9mX2ltcGw8ZmFsc2U+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHRydWVfZW9mKFQmKSB7IHJldHVybiB0cnVlOyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGJvb2wgdHJ1ZV9lb2YoVCYgdCkKLXsKLSAgICBjb25zdCBib29sIGxpbmtlZCA9IGlzX2xpbmtlZDxUPjo6dmFsdWU7Ci0gICAgcmV0dXJuIHRydWVfZW9mX2ltcGw8bGlua2VkPjo6dHJ1ZV9lb2YodCk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiByZWFkX2RldmljZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgZGV0YWlsOjppc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICByZWFkX2RldmljZV9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRldGFpbDo6ZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBpc3RyZWFtX3RhZywgc3RyZWFtYnVmX3RhZywgaW5wdXQKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX2RldmljZV9pbXBsPGlzdHJlYW1fdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgZ2V0KFQmIHQpCi0gICAgeyByZXR1cm4gdC5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIGNoZWNrX2VvZih0LnJkYnVmKCktPnNnZXRuKHMsIG4pKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgICAgICAgY2hhcl90eXBlOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpICB0cmFpdHNfdHlwZTsKLSAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoIHQucmRidWYoKS0+c3B1dGJhY2tjKGMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpICk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZGV2aWNlX2ltcGw8c3RyZWFtYnVmX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlCi0gICAgZ2V0KFQmIHQpCi0gICAgeyAgIC8vIGdjYyAyLjk1IG5lZWRzIG5hbWVzcGFjZSBxdWFsaWZpY2F0aW9uIGZvciBjaGFyX3RyYWl0cy4KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgIGNoYXJfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpb3N0cmVhbXM6OmNoYXJfdHJhaXRzPGNoYXJfdHlwZT4gIHRyYWl0c190eXBlOwotICAgICAgICB0eXBlbmFtZSBpbnRfdHlwZV9vZjxUPjo6dHlwZSBjOwotICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjppc19lb2YoYyA9IHQuc2J1bXBjKCkpIHx8Ci0gICAgICAgICAgICAgICAgZGV0YWlsOjp0cnVlX2VvZih0KQotICAgICAgICAgICAgICAgICAgICA/Ci0gICAgICAgICAgICAgICAgYyA6IHRyYWl0c190eXBlOjp3b3VsZF9ibG9jaygpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHJlYWQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQ7Ci0gICAgICAgIHJldHVybiAoYW10ID0gdC5zZ2V0bihzLCBuKSkgIT0gMCA/Ci0gICAgICAgICAgICBhbXQgOgotICAgICAgICAgICAgZGV0YWlsOjp0cnVlX2VvZih0KSA/Ci0gICAgICAgICAgICAgICAgLTEgOgotICAgICAgICAgICAgICAgIDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgIHsgICAvLyBnY2MgMi45NSBuZWVkcyBuYW1lc3BhY2UgcXVhbGlmaWNhdGlvbiBmb3IgY2hhcl90cmFpdHMuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICBjaGFyX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgaW9zdHJlYW1zOjpjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICB0cmFpdHNfdHlwZTsKLSAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6aXNfZW9mKHQuc3B1dGJhY2tjKGMpKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbDxpbnB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlCi0gICAgZ2V0KFQmIHQpCi0gICAgeyAgIC8vIGdjYyAyLjk1IG5lZWRzIG5hbWVzcGFjZSBxdWFsaWZpY2F0aW9uIGZvciBjaGFyX3RyYWl0cy4KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgIGNoYXJfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpb3N0cmVhbXM6OmNoYXJfdHJhaXRzPGNoYXJfdHlwZT4gIHRyYWl0c190eXBlOwotICAgICAgICBjaGFyX3R5cGUgYzsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdDsKLSAgICAgICAgcmV0dXJuIChhbXQgPSB0LnJlYWQoJmMsIDEpKSA9PSAxID8KLSAgICAgICAgICAgIHRyYWl0c190eXBlOjp0b19pbnRfdHlwZShjKSA6Ci0gICAgICAgICAgICBhbXQgPT0gLTEgPwotICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjplb2YoKSA6Ci0gICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIHQucmVhZChzLCBuKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgIHsgICAvLyBUIG11c3QgYmUgUGVla2FibGUuCi0gICAgICAgIHJldHVybiB0LnB1dGJhY2soYyk7Ci0gICAgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHJlYWRfZmlsdGVyX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZWFkX2ZpbHRlcl9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBkZXRhaWw6OmlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIHJlYWRfZmlsdGVyX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGV0YWlsOjpkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIG11bHRpY2hhcl90YWcsIGFueV90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX2ZpbHRlcl9pbXBsPG11bHRpY2hhcl90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSByZWFkCi0gICAgICAgKFQmIHQsIFNvdXJjZSYgc3JjLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIHQucmVhZChzcmMsIHMsIG4pOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF9maWx0ZXJfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU291cmNlPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgcmVhZAotICAgICAgIChUJiB0LCBTb3VyY2UmIHNyYywgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7ICAgLy8gZ2NjIDIuOTUgbmVlZHMgbmFtZXNwYWNlIHF1YWxpZmljYXRpb24gZm9yIGNoYXJfdHJhaXRzLgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgY2hhcl90eXBlOwotICAgICAgICB0eXBlZGVmIGlvc3RyZWFtczo6Y2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgdHJhaXRzX3R5cGU7Ci0gICAgICAgIGZvciAoc3RkOjpzdHJlYW1zaXplIG9mZiA9IDA7IG9mZiA8IG47ICsrb2ZmKSB7Ci0gICAgICAgICAgICB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgYyA9IHQuZ2V0KHNyYyk7Ci0gICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OmlzX2VvZihjKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tfZW9mKG9mZik7Ci0gICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKGMpKQotICAgICAgICAgICAgICAgIHJldHVybiBvZmY7Ci0gICAgICAgICAgICBzW29mZl0gPSB0cmFpdHNfdHlwZTo6dG9fY2hhcl90eXBlKGMpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuOwotICAgIH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFQURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9yZXN0cmljdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9yZXN0cmljdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMGZkZTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcmVzdHJpY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotICoKLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0LmhwcAotICogRGF0ZTogICAgICAgIFN1biBKYW4gMDYgMTI6NTc6MzAgTVNUIDIwMDgKLSAqIENvcHlyaWdodDogICAyMDA4IENvZGVSYWdlLCBMTEMKLSAgICAgICAgICAgICAgICAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZXN0cmljdGlvbiBhbmQgdGhlIAotICogb3ZlcmxvYWRlZCBmdW5jdGlvbiB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZXN0cmljdAotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwPgotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1QgcmVzdHJpY3QKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwPgotI3VuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zZWVrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmYxOWIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TRUVLX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfU0VFS19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAgICAgLy8gc3RyZWFtc2l6ZSwgc2Vla2Rpciwgb3Blbm1vZGUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHNlZWtfZGV2aWNlX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgc2Vla19maWx0ZXJfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXBvcwotc2VlayggVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0gTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLXsgCi0gICAgdXNpbmcgbmFtZXNwYWNlIGRldGFpbDsKLSAgICByZXR1cm4gc2Vla19kZXZpY2VfaW1wbDxUPjo6c2VlayhkZXRhaWw6OnVud3JhcCh0KSwgb2ZmLCB3YXksIHdoaWNoKTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIERldmljZT4KLWlubGluZSBzdGQ6OnN0cmVhbXBvcwotc2VlayggVCYgdCwgRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCA9IE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApCi17IAotICAgIHVzaW5nIG5hbWVzcGFjZSBkZXRhaWw7Ci0gICAgcmV0dXJuIHNlZWtfZmlsdGVyX2ltcGw8VD46OnNlZWsoZGV0YWlsOjp1bndyYXAodCksIGRldiwgb2ZmLCB3YXksIHdoaWNoKTsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBzZWVrX2RldmljZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgc2Vla19kZXZpY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgc2Vla19kZXZpY2VfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIGlvc3RyZWFtX3RhZywgaXN0cmVhbV90YWcsIG9zdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgICAgc3RyZWFtYnVmX3RhZywgdHdvX2hlYWQsIGFueV90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXN0cnVjdCBzZWVrX2ltcGxfYmFzaWNfaW9zIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApCi0gICAgewotICAgICAgICBpZiAoIHdheSA9PSBORE5CT09TVF9JT1M6OmJlZyAmJgotICAgICAgICAgICAgICggb2ZmIDwgaW50ZWdlcl90cmFpdHM8c3RkOjpzdHJlYW1vZmY+Ojpjb25zdF9taW4gfHwKLSAgICAgICAgICAgICAgIG9mZiA+IGludGVnZXJfdHJhaXRzPHN0ZDo6c3RyZWFtb2ZmPjo6Y29uc3RfbWF4ICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdC5yZGJ1ZigpLT5wdWJzZWVrcG9zKG9mZnNldF90b19wb3NpdGlvbihvZmYpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiB0LnJkYnVmKCktPnB1YnNlZWtvZmYob2ZmLCB3YXksIHdoaWNoKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2RldmljZV9pbXBsPGlvc3RyZWFtX3RhZz4gOiBzZWVrX2ltcGxfYmFzaWNfaW9zIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlZWtfZGV2aWNlX2ltcGw8aXN0cmVhbV90YWc+IDogc2Vla19pbXBsX2Jhc2ljX2lvcyB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2RldmljZV9pbXBsPG9zdHJlYW1fdGFnPiA6IHNlZWtfaW1wbF9iYXNpY19pb3MgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2Vla19kZXZpY2VfaW1wbDxzdHJlYW1idWZfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3Mgc2VlayggVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggKQotICAgIHsKLSAgICAgICAgaWYgKCB3YXkgPT0gTkROQk9PU1RfSU9TOjpiZWcgJiYKLSAgICAgICAgICAgICAoIG9mZiA8IGludGVnZXJfdHJhaXRzPHN0ZDo6c3RyZWFtb2ZmPjo6Y29uc3RfbWluIHx8Ci0gICAgICAgICAgICAgICBvZmYgPiBpbnRlZ2VyX3RyYWl0czxzdGQ6OnN0cmVhbW9mZj46OmNvbnN0X21heCApICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHQuTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNFRUtQT1Mob2Zmc2V0X3RvX3Bvc2l0aW9uKG9mZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHQuTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNFRUtPRkYob2ZmLCB3YXksIHdoaWNoKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2RldmljZV9pbXBsPHR3b19oZWFkPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3Mgc2VlayggVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggKQotICAgIHsgcmV0dXJuIHQuc2VlayhvZmYsIHdheSwgd2hpY2gpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2Vla19kZXZpY2VfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3Mgc2VlayggVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgKQotICAgIHsgcmV0dXJuIHQuc2VlayhvZmYsIHdheSk7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBzZWVrX2ZpbHRlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgc2Vla19maWx0ZXJfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgc2Vla19maWx0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDxULCB0d29faGVhZCwgYW55X3RhZz46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2Vla19maWx0ZXJfaW1wbDx0d29faGVhZD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3Mgc2VlayggVCYgdCwgRGV2aWNlJiBkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApCi0gICAgeyByZXR1cm4gdC5zZWVrKGQsIG9mZiwgd2F5LCB3aGljaCk7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2ZpbHRlcl9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIFQmIHQsIERldmljZSYgZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgKQotICAgIHsgcmV0dXJuIHQuc2VlayhkLCBvZmYsIHdheSk7IH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NFRUtfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9za2lwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NraXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjVhNjAwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NraXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBUbyBkbzogaGFuZGxlIGJpZGlyZWN0aW9uIHN0cmVhbXMgYW5kIG91dHB1dC1zZWVrYWJsZSBjb21wb25lbnRzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TS0lQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfU0tJUF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIGZhaWx1cmUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9zZWVrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci12b2lkIHNraXAoRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBtcGw6OnRydWVfKQoteyBpb3N0cmVhbXM6OnNlZWsoZGV2LCBvZmYsIE5ETkJPT1NUX0lPUzo6Y3VyKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci12b2lkIHNraXAoRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBtcGw6OmZhbHNlXykKLXsgICAvLyBnY2MgMi45NSBuZWVkcyBuYW1lc3BhY2UgcXVhbGlmaWNhdGlvbiBmb3IgY2hhcl90cmFpdHMuCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgaW9zdHJlYW1zOjpjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgIHRyYWl0c190eXBlOwotICAgIGZvciAoc3RyZWFtX29mZnNldCB6ID0gMDsgeiA8IG9mZjsgKSB7Ci0gICAgICAgIHR5cGVuYW1lIHRyYWl0c190eXBlOjppbnRfdHlwZSBjOwotICAgICAgICBpZiAodHJhaXRzX3R5cGU6OmlzX2VvZihjID0gaW9zdHJlYW1zOjpnZXQoZGV2KSkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJiYWQgc2tpcCBvZmZzZXQiKSk7Ci0gICAgICAgIGlmICghdHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKGMpKQotICAgICAgICAgICAgKyt6OwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci12b2lkIHNraXAoIEZpbHRlciYgZmx0LCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gsIG1wbDo6dHJ1ZV8gKQoteyBuZG5ib29zdDo6aW9zdHJlYW1zOjpzZWVrKGZsdCwgZGV2LCBvZmYsIE5ETkJPT1NUX0lPUzo6Y3VyLCB3aGljaCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci12b2lkIHNraXAoIEZpbHRlciYgZmx0LCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUsIG1wbDo6ZmFsc2VfICkKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgY2hhcl90eXBlIGM7Ci0gICAgZm9yIChzdHJlYW1fb2Zmc2V0IHogPSAwOyB6IDwgb2ZmOyApIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdDsKLSAgICAgICAgaWYgKChhbXQgPSBpb3N0cmVhbXM6OnJlYWQoZmx0LCBkZXYsICZjLCAxKSkgPT0gLTEpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJiYWQgc2tpcCBvZmZzZXQiKSk7Ci0gICAgICAgIGlmIChhbXQgPT0gMSkKLSAgICAgICAgICAgICsrejsKLSAgICB9Ci19Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXZvaWQgc2tpcChEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYpCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbW9kZV9vZjxEZXZpY2U+Ojp0eXBlICAgICBtb2RlOwotICAgIHR5cGVkZWYgbXBsOjpvcl88Ci0gICAgICAgIGlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0X3NlZWthYmxlPiwKLSAgICAgICAgaXNfY29udmVydGlibGU8bW9kZSwgb3V0cHV0X3NlZWthYmxlPgotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc2VlazsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAoY2FuX3NlZWs6OnZhbHVlIHx8IGlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0Pjo6dmFsdWUpCi0gICAgKTsKLSAgICBkZXRhaWw6OnNraXAoZGV2LCBvZmYsIGNhbl9zZWVrKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLXZvaWQgc2tpcCggRmlsdGVyJiBmbHQsIERldmljZSYgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwgCi0gICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPSBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RmlsdGVyPjo6dHlwZSAgICAgICAgICAgICAgICAgZmlsdGVyX21vZGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPERldmljZT46OnR5cGUgICAgICAgICAgICAgICAgIGRldmljZV9tb2RlOwotICAgIHR5cGVkZWYgbXBsOjpvcl88Ci0gICAgICAgIG1wbDo6YW5kXzwKLSAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGZpbHRlcl9tb2RlLCBpbnB1dF9zZWVrYWJsZT4sCi0gICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxkZXZpY2VfbW9kZSwgaW5wdXRfc2Vla2FibGU+Ci0gICAgICAgID4sCi0gICAgICAgIG1wbDo6YW5kXzwKLSAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGZpbHRlcl9tb2RlLCBvdXRwdXRfc2Vla2FibGU+LAotICAgICAgICAgICAgaXNfY29udmVydGlibGU8ZGV2aWNlX21vZGUsIG91dHB1dF9zZWVrYWJsZT4KLSAgICAgICAgPgotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc2VlazsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAoIGNhbl9zZWVrOjp2YWx1ZSB8fCAKLSAgICAgICAgICAoaXNfY29udmVydGlibGU8ZmlsdGVyX21vZGUsIGlucHV0Pjo6dmFsdWUgJiYKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxkZXZpY2VfbW9kZSwgaW5wdXQ+Ojp2YWx1ZSkgKQotICAgICk7Ci0gICAgZGV0YWlsOjpza2lwKGZsdCwgZGV2LCBvZmYsIHdoaWNoLCBjYW5fc2VlaygpKTsKLX0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TS0lQX0hQUF9JTkNMVURFRCAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zbGljZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zbGljZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMTZlYTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvc2xpY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotICoKLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0LmhwcAotICogRGF0ZTogICAgICAgIFN1biBKYW4gMDYgMTI6NTc6MzAgTVNUIDIwMDgKLSAqIENvcHlyaWdodDogICAyMDA4IENvZGVSYWdlLCBMTEMKLSAgICAgICAgICAgICAgICAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZXN0cmljdGlvbiBhbmQgdGhlIAotICogb3ZlcmxvYWRlZCBmdW5jdGlvbiB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpzbGljZS4KLSAqCi0gKiBUaGlzIGhlYWRlciBpcyBwcm92aWRlZCBmb3IgcGxhdGZvcm1zIG9uIHdoaWNoICJyZXN0cmljdCIgaXMgYSBrZXl3b3JkLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwPgotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1Qgc2xpY2UKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwPgotI3VuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE1ODExNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1fSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mb3J3YXJkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvc3RyZWFtLmhwcD4gIC8vIHN0YW5kYXJkIHN0cmVhbXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW1fYnVmZmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFRyPgotc3RydWN0IHN0cmVhbV90cmFpdHMgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgVHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxEZXZpY2U+Ojp0eXBlICAgICAgICAgICAgICAgICBtb2RlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIGlvc3RyZWFtczo6c2VsZWN0PCAvLyBEaXNhbWJpZ3VhdGlvbiByZXF1aXJlZCBmb3IgVHJ1NjQuCi0gICAgICAgICAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxtb2RlLCBpbnB1dD4sCi0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPG1vZGUsIG91dHB1dD4KLSAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1NUUkVBTShjaGFyX3R5cGUsIHRyYWl0c190eXBlKSwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxtb2RlLCBpbnB1dD4sCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lTVFJFQU0oY2hhcl90eXBlLCB0cmFpdHNfdHlwZSksCi0gICAgICAgICAgICAgICAgZWxzZV8sCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX09TVFJFQU0oY2hhcl90eXBlLCB0cmFpdHNfdHlwZSkKLSAgICAgICAgICAgID46OnR5cGUgc3RyZWFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8IC8vIERpc2FtYmlndWF0aW9uIHJlcXVpcmVkIGZvciBUcnU2NC4KLSAgICAgICAgICAgICAgICBtcGw6OmFuZF88Ci0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0PiwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8bW9kZSwgb3V0cHV0PgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0PiwKLSAgICAgICAgICAgICAgICBpc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICBlbHNlXywKLSAgICAgICAgICAgICAgICBvc3RyZWFtX3RhZwotICAgICAgICAgICAgPjo6dHlwZSBzdHJlYW1fdGFnOwotfTsKLQotLy8gQnkgZW5jYXBzdWxhdGluZyBpbml0aWFsaXphdGlvbiBpbiBhIGJhc2UsIHdlIGNhbiBkZWZpbmUgdGhlIG1hY3JvCi0vLyBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZPUldBUkRJTkdfRlVOQ1RJT05TIHRvIGdlbmVyYXRlIGNvbnN0cnVjdG9ycwotLy8gd2l0aG91dCBiYXNlIG1lbWJlciBpbml0aWFsaXplciBsaXN0cy4KLXRlbXBsYXRlPCB0eXBlbmFtZSBEZXZpY2UsCi0gICAgICAgICAgdHlwZW5hbWUgVHIgPQotICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlCi0gICAgICAgICAgICAgICksCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPQotICAgICAgICAgICAgICBzdGQ6OmFsbG9jYXRvcjwKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUKLSAgICAgICAgICAgICAgPiwKLSAgICAgICAgICB0eXBlbmFtZSBCYXNlID0gLy8gVkM2IFdvcmthcm91bmQuCi0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGV0YWlsOjpzdHJlYW1fdHJhaXRzPERldmljZSwgVHI+OjpzdHJlYW1fdHlwZSA+Ci1jbGFzcyBzdHJlYW1fYmFzZQotICAgIDogcHJvdGVjdGVkIGJhc2VfZnJvbV9tZW1iZXI8IHN0cmVhbV9idWZmZXI8RGV2aWNlLCBUciwgQWxsb2M+ID4sCi0gICAgICBwdWJsaWMgQmFzZQotewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGJhc2VfZnJvbV9tZW1iZXI8IHN0cmVhbV9idWZmZXI8RGV2aWNlLCBUciwgQWxsb2M+ID4gIHBiYXNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdHJlYW1fdHJhaXRzPERldmljZSwgVHI+OjpzdHJlYW1fdHlwZSAgICAgICBzdHJlYW1fdHlwZTsKLXByb3RlY3RlZDoKLSAgICB1c2luZyBwYmFzZV90eXBlOjptZW1iZXI7IC8vIEF2b2lkIHdhcm5pbmcgYWJvdXQgJ3RoaXMnIGluIGluaXRpYWxpemVyIGxpc3QuCi1wdWJsaWM6Ci0gICAgc3RyZWFtX2Jhc2UoKSA6IHBiYXNlX3R5cGUoKSwgc3RyZWFtX3R5cGUoJm1lbWJlcikgeyB9Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9zdHJlYW0uaHBwPgotI2Vsc2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBzdHJlYW0uCi0vLyBEZXNjcmlwdGlvbjogQSBpb3N0cmVhbSB3aGljaCByZWFkcyBmcm9tIGFuZCB3cml0ZXMgdG8gYW4gaW5zdGFuY2Ugb2YgYQotLy8gICAgICBkZXNpZ25hdGVkIGRldmljZSB0eXBlLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgRGV2aWNlIC0gQSBkZXZpY2UgdHlwZS4KLS8vICAgICAgQWxsb2MgLSBUaGUgYWxsb2NhdG9yIHR5cGUuCi0vLwotdGVtcGxhdGU8IHR5cGVuYW1lIERldmljZSwKLSAgICAgICAgICB0eXBlbmFtZSBUciA9Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUygKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUKLSAgICAgICAgICAgICAgKSwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9Ci0gICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZQotICAgICAgICAgICAgICA+ID4KLXN0cnVjdCBzdHJlYW0gOiBkZXRhaWw6OnN0cmVhbV9iYXNlPERldmljZSwgVHIsIEFsbG9jPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeSAKLSAgICAgICAgOiBtb2RlX29mPERldmljZT46OnR5cGUsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGRldGFpbDo6c3RyZWFtX3RyYWl0czxEZXZpY2UsIFRyPjo6c3RyZWFtX3RhZwotICAgICAgICB7IH07Ci0gICAgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTUJVRl9UWVBFREVGUyhUcikKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgZGV0YWlsOjpzdHJlYW1fdHJhaXRzPAotICAgICAgICAgICAgICAgIERldmljZSwgVHIKLSAgICAgICAgICAgID46OnN0cmVhbV90eXBlICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fdHlwZTsKLXB1YmxpYzoKLSAgICBzdHJlYW0oKSB7IH0KLSAgICBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRCggc3RyZWFtLCBvcGVuX2ltcGwsIERldmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTICkKLSAgICBib29sIGlzX29wZW4oKSBjb25zdCB7IHJldHVybiB0aGlzLT5tZW1iZXIuaXNfb3BlbigpOyB9Ci0gICAgdm9pZCBjbG9zZSgpIHsgdGhpcy0+bWVtYmVyLmNsb3NlKCk7IH0KLSAgICBib29sIGF1dG9fY2xvc2UoKSBjb25zdCB7IHJldHVybiB0aGlzLT5tZW1iZXIuYXV0b19jbG9zZSgpOyB9Ci0gICAgdm9pZCBzZXRfYXV0b19jbG9zZShib29sIGNsb3NlKSB7IHRoaXMtPm1lbWJlci5zZXRfYXV0b19jbG9zZShjbG9zZSk7IH0KLSAgICBib29sIHN0cmljdF9zeW5jKCkgeyByZXR1cm4gdGhpcy0+bWVtYmVyLnN0cmljdF9zeW5jKCk7IH0KLSAgICBEZXZpY2UmIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzLT5tZW1iZXI7IH0KLSAgICBEZXZpY2UqIG9wZXJhdG9yLT4oKSB7IHJldHVybiAmKnRoaXMtPm1lbWJlcjsgfQotICAgIERldmljZSogY29tcG9uZW50KCkgeyByZXR1cm4gdGhpcy0+bWVtYmVyLmNvbXBvbmVudCgpOyB9Ci1wcml2YXRlOgotICAgIHZvaWQgb3Blbl9pbXBsKGNvbnN0IERldmljZSYgZGV2IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSAvLyBGb3IgZm9yd2FyZGluZy4KLSAgICB7IAotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4oZGV2IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSk7IAotICAgIH0KLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfc3RyZWFtX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvc3RyZWFtX2J1ZmZlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW1fYnVmZmVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIxMjk3Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW1fYnVmZmVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNX0JVRkZFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTV9CVUZGRVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgIC8vIGFsbG9jYXRvci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZvcndhcmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIGZhaWx1cmUsIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvZGlyZWN0X3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvaW5kaXJlY3Rfc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXN0cnVjdCBzdHJlYW1fYnVmZmVyX3RyYWl0cyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdF90YWcKLSAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+LAotICAgICAgICAgICAgICAgIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jyb2tlbl9vdmVybG9hZF9yZXNvbHV0aW9uL3N0cmVhbV9idWZmZXIuaHBwPgotI2Vsc2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULAotICAgICAgICAgIHR5cGVuYW1lIFRyID0KLSAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUKLSAgICAgICAgICAgICAgKSwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9Ci0gICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUKLSAgICAgICAgICAgICAgPiwKLSAgICAgICAgICB0eXBlbmFtZSBNb2RlID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtb2RlX29mPFQ+Ojp0eXBlID4KLWNsYXNzIHN0cmVhbV9idWZmZXIKLSAgICA6IHB1YmxpYyBkZXRhaWw6OnN0cmVhbV9idWZmZXJfdHJhaXRzPFQsIFRyLCBBbGxvYywgTW9kZT46OnR5cGUKLXsKLXByaXZhdGU6Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoCi0gICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPFQ+Ojp0eXBlLCBNb2RlCi0gICAgICAgID46OnZhbHVlCi0gICAgKSk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgZGV0YWlsOjpzdHJlYW1fYnVmZmVyX3RyYWl0czwKLSAgICAgICAgICAgICAgICBULCBUciwgQWxsb2MsIE1vZGUKLSAgICAgICAgICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeSAKLSAgICAgICAgOiBNb2RlLAotICAgICAgICAgIGNsb3NhYmxlX3RhZywKLSAgICAgICAgICBzdHJlYW1idWZfdGFnCi0gICAgICAgIHsgfTsKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKQotcHVibGljOgotICAgIHN0cmVhbV9idWZmZXIoKSB7IH0KLSAgICB+c3RyZWFtX2J1ZmZlcigpCi0gICAgeyAKLSAgICAgICAgdHJ5IHsgCi0gICAgICAgICAgICBpZiAodGhpcy0+aXNfb3BlbigpICYmIHRoaXMtPmF1dG9fY2xvc2UoKSkgCi0gICAgICAgICAgICAgICAgdGhpcy0+Y2xvc2UoKTsgCi0gICAgICAgIH0gY2F0Y2ggKC4uLikgeyB9IAotICAgIH0KLSAgICBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRCggc3RyZWFtX2J1ZmZlciwgb3Blbl9pbXBsLCBULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MgKQotICAgIFQmIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzLT5jb21wb25lbnQoKTsgfQotICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiB0aGlzLT5jb21wb25lbnQoKTsgfQotcHJpdmF0ZToKLSAgICB2b2lkIG9wZW5faW1wbChjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKQotICAgICAgICB7ICAgLy8gVXNlZCBmb3IgZm9yd2FyZGluZy4KLSAgICAgICAgICAgIGlmICh0aGlzLT5pc19vcGVuKCkpCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImFscmVhZHkgb3BlbiIpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIGJhc2VfdHlwZTo6b3Blbih0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSk7Ci0gICAgICAgIH0KLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1fQlVGRkVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvdGVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3RlZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YzNjYmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvdGVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfVEVFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfVEVFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIE5ETkJPT1NUX0RFRFVDRV9UWVBFTkFNRS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2RldmljZV9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZmlsdGVyX2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mdW5jdGlvbmFsLmhwcD4gIC8vIGNhbGxfY2xvc2VfYWxsIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiB0ZWVfZmlsdGVyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgRGV2aWNlIC0gQSBibG9ja2luZyBTaW5rLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLWNsYXNzIHRlZV9maWx0ZXIgOiBwdWJsaWMgZGV0YWlsOjpmaWx0ZXJfYWRhcHRlcjxEZXZpY2U+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxEZXZpY2U+Ojp0eXBlICBwYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUgICAgICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZV9maWx0ZXJfdGFnLAotICAgICAgICAgIG11bHRpY2hhcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGZsdXNoYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnLAotICAgICAgICAgIG9wdGltYWxseV9idWZmZXJlZF90YWcKLSAgICAgICAgeyB9OwotCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19kZXZpY2U8RGV2aWNlPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICBpc19jb252ZXJ0aWJsZTwgLy8gVXNpbmcgbW9kZV9vZiBjYXVzZXMgZmFpbHVyZXMgb24gVkM2LTcuMC4KLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaW9zdHJlYW1zOjpjYXRlZ29yeV9vZjxEZXZpY2U+Ojp0eXBlLCBvdXRwdXQKLSAgICAgICAgPjo6dmFsdWUKLSAgICApKTsKLQotICAgIGV4cGxpY2l0IHRlZV9maWx0ZXIocGFyYW1fdHlwZSBkZXYpIAotICAgICAgICA6IGRldGFpbDo6ZmlsdGVyX2FkYXB0ZXI8RGV2aWNlPihkZXYpIAotICAgICAgICB7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSBpb3N0cmVhbXM6OnJlYWQoc3JjLCBzLCBuKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSAtMSkgewotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdDIgPSBpb3N0cmVhbXM6OndyaXRlKHRoaXMtPmNvbXBvbmVudCgpLCBzLCByZXN1bHQpOwotICAgICAgICAgICAgKHZvaWQpIHJlc3VsdDI7IC8vIFN1cHByZXNzICd1bnVzZWQgdmFyaWFibGUnIHdhcm5pbmcuCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQocmVzdWx0ID09IHJlc3VsdDIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6d3JpdGUoc25rLCBzLCBuKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdDIgPSBpb3N0cmVhbXM6OndyaXRlKHRoaXMtPmNvbXBvbmVudCgpLCBzLCByZXN1bHQpOwotICAgICAgICAodm9pZCkgcmVzdWx0MjsgLy8gU3VwcHJlc3MgJ3VudXNlZCB2YXJpYWJsZScgd2FybmluZy4KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHJlc3VsdCA9PSByZXN1bHQyKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOZXh0PgotICAgIHZvaWQgY2xvc2UoTmV4dCYsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpCi0gICAgeyAKLSAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwodGhpcy0+Y29tcG9uZW50KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgYm9vbCBmbHVzaChTaW5rJiBzbmspCi0gICAgewotICAgICAgICBib29sIHIxID0gaW9zdHJlYW1zOjpmbHVzaChzbmspOwotICAgICAgICBib29sIHIyID0gaW9zdHJlYW1zOjpmbHVzaCh0aGlzLT5jb21wb25lbnQoKSk7Ci0gICAgICAgIHJldHVybiByMSAmJiByMjsKLSAgICB9Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUodGVlX2ZpbHRlciwgMSkKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHRlZV9kZXZpY2UuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBEZXZpY2UgLSBBIGJsb2NraW5nIERldmljZS4KLS8vICAgICAgU2luayAtIEEgYmxvY2tpbmcgU2luay4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFNpbms+Ci1jbGFzcyB0ZWVfZGV2aWNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxEZXZpY2U+Ojp0eXBlICBkZXZpY2VfcGFyYW07Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnBhcmFtX3R5cGU8U2luaz46OnR5cGUgICAgc2lua19wYXJhbTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dmFsdWVfdHlwZTxEZXZpY2U+Ojp0eXBlICBkZXZpY2VfdmFsdWU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnZhbHVlX3R5cGU8U2luaz46OnR5cGUgICAgc2lua192YWx1ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgICAgICBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPERldmljZT46OnR5cGUsIAotICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Ci0gICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgaW5wdXQKLSAgICAgICAgICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZGV2aWNlPERldmljZT46OnZhbHVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2RldmljZTxTaW5rPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICBpc19zYW1lPAotICAgICAgICAgICAgY2hhcl90eXBlLCAKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFNpbms+Ojp0eXBlCi0gICAgICAgID46OnZhbHVlCi0gICAgKSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoCi0gICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPFNpbms+Ojp0eXBlLCAKLSAgICAgICAgICAgIG91dHB1dAotICAgICAgICA+Ojp2YWx1ZQotICAgICkpOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IG1vZGUsCi0gICAgICAgICAgZGV2aWNlX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgZmx1c2hhYmxlX3RhZywKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcsCi0gICAgICAgICAgb3B0aW1hbGx5X2J1ZmZlcmVkX3RhZwotICAgICAgICB7IH07Ci0gICAgdGVlX2RldmljZShkZXZpY2VfcGFyYW0gZGV2aWNlLCBzaW5rX3BhcmFtIHNpbmspIAotICAgICAgICA6IGRldl8oZGV2aWNlKSwgc2lua18oc2luaykKLSAgICAgICAgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPERldmljZT46OnR5cGUsIGlucHV0Ci0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICApKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdDEgPSBpb3N0cmVhbXM6OnJlYWQoZGV2Xywgcywgbik7Ci0gICAgICAgIGlmIChyZXN1bHQxICE9IC0xKSB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0MiA9IGlvc3RyZWFtczo6d3JpdGUoc2lua18sIHMsIHJlc3VsdDEpOwotICAgICAgICAgICAgKHZvaWQpIHJlc3VsdDE7IC8vIFN1cHByZXNzICd1bnVzZWQgdmFyaWFibGUnIHdhcm5pbmcuCi0gICAgICAgICAgICAodm9pZCkgcmVzdWx0MjsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChyZXN1bHQxID09IHJlc3VsdDIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQxOwotICAgIH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPERldmljZT46OnR5cGUsIG91dHB1dAotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgKSk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQxID0gaW9zdHJlYW1zOjp3cml0ZShkZXZfLCBzLCBuKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdDIgPSBpb3N0cmVhbXM6OndyaXRlKHNpbmtfLCBzLCBuKTsKLSAgICAgICAgKHZvaWQpIHJlc3VsdDE7IC8vIFN1cHByZXNzICd1bnVzZWQgdmFyaWFibGUnIHdhcm5pbmcuCi0gICAgICAgICh2b2lkKSByZXN1bHQyOwotICAgICAgICBORE5CT09TVF9BU1NFUlQocmVzdWx0MSA9PSBuICYmIHJlc3VsdDIgPT0gbik7Ci0gICAgICAgIHJldHVybiBuOwotICAgIH0KLSAgICB2b2lkIGNsb3NlKCkKLSAgICB7Ci0gICAgICAgIGRldGFpbDo6ZXhlY3V0ZV9hbGwoIGRldGFpbDo6Y2FsbF9jbG9zZV9hbGwoZGV2XyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZV9hbGwoc2lua18pICk7Ci0gICAgfQotICAgIGJvb2wgZmx1c2goKQotICAgIHsKLSAgICAgICAgYm9vbCByMSA9IGlvc3RyZWFtczo6Zmx1c2goZGV2Xyk7Ci0gICAgICAgIGJvb2wgcjIgPSBpb3N0cmVhbXM6OmZsdXNoKHNpbmtfKTsKLSAgICAgICAgcmV0dXJuIHIxICYmIHIyOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmIGxvYykKLSAgICB7Ci0gICAgICAgIGlvc3RyZWFtczo6aW1idWUoZGV2XywgbG9jKTsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShzaW5rXywgbG9jKTsKLSAgICB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIG9wdGltYWxfYnVmZmVyX3NpemUoKSBjb25zdCAKLSAgICB7Ci0gICAgICAgIHJldHVybiAoc3RkOjptYXgpICggaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKGRldl8pLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3N0cmVhbXM6Om9wdGltYWxfYnVmZmVyX3NpemUoc2lua18pICk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBkZXZpY2VfdmFsdWUgIGRldl87Ci0gICAgc2lua192YWx1ZSAgICBzaW5rXzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci10ZWVfZmlsdGVyPFNpbms+IHRlZShTaW5rJiBzbmspIAoteyByZXR1cm4gdGVlX2ZpbHRlcjxTaW5rPihzbmspOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci10ZWVfZmlsdGVyPFNpbms+IHRlZShjb25zdCBTaW5rJiBzbmspIAoteyByZXR1cm4gdGVlX2ZpbHRlcjxTaW5rPihzbmspOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgU2luaz4KLXRlZV9kZXZpY2U8RGV2aWNlLCBTaW5rPiB0ZWUoRGV2aWNlJiBkZXYsIFNpbmsmIHNpbmspIAoteyByZXR1cm4gdGVlX2RldmljZTxEZXZpY2UsIFNpbms+KGRldiwgc2luayk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBTaW5rPgotdGVlX2RldmljZTxEZXZpY2UsIFNpbms+IHRlZShjb25zdCBEZXZpY2UmIGRldiwgU2luayYgc2luaykgCi17IHJldHVybiB0ZWVfZGV2aWNlPERldmljZSwgU2luaz4oZGV2LCBzaW5rKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFNpbms+Ci10ZWVfZGV2aWNlPERldmljZSwgU2luaz4gdGVlKERldmljZSYgZGV2LCBjb25zdCBTaW5rJiBzaW5rKSAKLXsgcmV0dXJuIHRlZV9kZXZpY2U8RGV2aWNlLCBTaW5rPihkZXYsIHNpbmspOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgU2luaz4KLXRlZV9kZXZpY2U8RGV2aWNlLCBTaW5rPiB0ZWUoY29uc3QgRGV2aWNlJiBkZXYsIGNvbnN0IFNpbmsmIHNpbmspIAoteyByZXR1cm4gdGVlX2RldmljZTxEZXZpY2UsIFNpbms+KGRldiwgc2luayk7IH0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19URUVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE1ZWIwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAKLS8vIENvbnRhaW5zIG1ldGFmdW5jdGlvbnMgY2hhcl90eXBlX29mLCBjYXRlZ29yeV9vZiBhbmQgbW9kZV9vZiB1c2VkIGZvcgotLy8gZGVkdWNpbmcgdGhlIGkvbyBjYXRlZ29yeSBhbmQgaS9vIG1vZGUgb2YgYSBtb2RlbCBvZiBGaWx0ZXIgb3IgRGV2aWNlLgotLy8KLS8vIEFsc28gY29udGFpbnMgc2V2ZXJhbCB1dGlsaXR5IG1ldGFmdW5jdGlvbnMsIGZ1bmN0aW9ucyBhbmQgbWFjcm9zLgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSU9fVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfSU9fVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8aW9zZndkPiAgICAgICAgICAgIC8vIHN0cmVhbSB0eXBlcywgY2hhcl90cmFpdHMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIHBhcnRpYWwgc3BlYywgZGVkdWNlZCB0eXBlbmFtZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPiAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfaXRlcmF0b3JfcmFuZ2UuaHBwPiAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdC5ocHA+ICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdF9ieV9zaXplLmhwcD4gICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4gICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwPiAKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+ICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+ICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+ICAKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPiAgICAgICAgICAgICAgICAgCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS92YWx1ZV90eXBlLmhwcD4KLSNlbmRpZiAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vLS0tLS0tLS0tLURlZmluaXRpb25zIG9mIHByZWRpY2F0ZXMgZm9yIHN0cmVhbXMgYW5kIHN0cmVhbSBidWZmZXJzLS0tLS0tLS0tLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19pc3RyZWFtLCBzdGQ6OmJhc2ljX2lzdHJlYW0sIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfb3N0cmVhbSwgc3RkOjpiYXNpY19vc3RyZWFtLCAyKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX2lvc3RyZWFtLCBzdGQ6OmJhc2ljX2lvc3RyZWFtLCAyKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX3N0cmVhbWJ1Ziwgc3RkOjpiYXNpY19zdHJlYW1idWYsIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfaWZzdHJlYW0sIHN0ZDo6YmFzaWNfaWZzdHJlYW0sIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfb2ZzdHJlYW0sIHN0ZDo6YmFzaWNfb2ZzdHJlYW0sIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfZnN0cmVhbSwgc3RkOjpiYXNpY19mc3RyZWFtLCAyKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX2ZpbGVidWYsIHN0ZDo6YmFzaWNfZmlsZWJ1ZiwgMikKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19pc3RyaW5nc3RyZWFtLCBzdGQ6OmJhc2ljX2lzdHJpbmdzdHJlYW0sIDMpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfb3N0cmluZ3N0cmVhbSwgc3RkOjpiYXNpY19vc3RyaW5nc3RyZWFtLCAzKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX3N0cmluZ3N0cmVhbSwgc3RkOjpiYXNpY19zdHJpbmdzdHJlYW0sIDMpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfc3RyaW5nYnVmLCBzdGQ6OmJhc2ljX3N0cmluZ2J1ZiwgMykKLQotI2Vsc2UgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX2lzdHJlYW0sIHN0ZDo6aXN0cmVhbSwgMCkKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19vc3RyZWFtLCBzdGQ6Om9zdHJlYW0sIDApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfaW9zdHJlYW0sIHN0ZDo6aW9zdHJlYW0sIDApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfc3RyZWFtYnVmLCBzdGQ6OnN0cmVhbWJ1ZiwgMCkKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdGRfaW8KLSAgICA6IG1wbDo6b3JfPCBpc19pc3RyZWFtPFQ+LCBpc19vc3RyZWFtPFQ+LCBpc19zdHJlYW1idWY8VD4gPgotICAgIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdGRfZmlsZV9kZXZpY2UKLSAgICA6IG1wbDo6b3JfPCAKLSAgICAgICAgICBpc19pZnN0cmVhbTxUPiwgCi0gICAgICAgICAgaXNfb2ZzdHJlYW08VD4sIAotICAgICAgICAgIGlzX2ZzdHJlYW08VD4sIAotICAgICAgICAgIGlzX2ZpbGVidWY8VD4KLSAgICAgID4KLSAgICB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc3RkX3N0cmluZ19kZXZpY2UKLSAgICA6IG1wbDo6b3JfPCAKLSAgICAgICAgICBpc19pc3RyaW5nc3RyZWFtPFQ+LCAKLSAgICAgICAgICBpc19vc3RyaW5nc3RyZWFtPFQ+LCAKLSAgICAgICAgICBpc19zdHJpbmdzdHJlYW08VD4sIAotICAgICAgICAgIGlzX3N0cmluZ2J1ZjxUPgotICAgICAgPgotICAgIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2M+Ci1zdHJ1Y3Qgc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1jbGFzcyBzdHJlYW1fYnVmZmVyOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyLCAKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgQWNjZXNzID4KLWNsYXNzIGZpbHRlcmluZ19zdHJlYW07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBBY2Nlc3MgPgotY2xhc3Mgd2ZpbHRlcmluZ19zdHJlYW07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBBY2Nlc3MgPgotY2xhc3MgZmlsdGVyaW5nX3N0cmVhbWJ1ZjsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEFjY2VzcyA+Ci1jbGFzcyBmaWx0ZXJpbmdfd3N0cmVhbWJ1ZjsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotY2xhc3MgbGlua2VkX3N0cmVhbWJ1ZjsKLQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKCBpc19ib29zdF9zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoIGlzX2Jvb3N0X3N0cmVhbV9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnN0cmVhbV9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKCBpc19maWx0ZXJpbmdfc3RyZWFtX2ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmZpbHRlcmluZ19zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKCBpc19maWx0ZXJpbmdfd3N0cmVhbV9pbXBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjp3ZmlsdGVyaW5nX3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoIGlzX2ZpbHRlcmluZ19zdHJlYW1idWZfaW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZmlsdGVyaW5nX3N0cmVhbWJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoIGlzX2ZpbHRlcmluZ193c3RyZWFtYnVmX2ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmZpbHRlcmluZ193c3RyZWFtYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1ICkKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19saW5rZWQsIGxpbmtlZF9zdHJlYW1idWYsIDIpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZmlsdGVyaW5nX3N0cmVhbQotICAgIDogbXBsOjpvcl88Ci0gICAgICAgICAgaXNfZmlsdGVyaW5nX3N0cmVhbV9pbXBsPFQ+LAotICAgICAgICAgIGlzX2ZpbHRlcmluZ193c3RyZWFtX2ltcGw8VD4KLSAgICAgID4KLSAgICB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZmlsdGVyaW5nX3N0cmVhbWJ1ZgotICAgIDogbXBsOjpvcl88Ci0gICAgICAgICAgaXNfZmlsdGVyaW5nX3N0cmVhbWJ1Zl9pbXBsPFQ+LAotICAgICAgICAgIGlzX2ZpbHRlcmluZ193c3RyZWFtYnVmX2ltcGw8VD4KLSAgICAgID4KLSAgICB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfYm9vc3QKLSAgICA6IG1wbDo6b3JfPAotICAgICAgICAgIGlzX2Jvb3N0X3N0cmVhbTxUPiwgCi0gICAgICAgICAgaXNfYm9vc3Rfc3RyZWFtX2J1ZmZlcjxUPiwgCi0gICAgICAgICAgaXNfZmlsdGVyaW5nX3N0cmVhbTxUPiwgCi0gICAgICAgICAgaXNfZmlsdGVyaW5nX3N0cmVhbWJ1ZjxUPgotICAgICAgPgotICAgIHsgfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb25zIG9mIGNoYXJfdHlwZV9vZi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBtZW1iZXJfY2hhcl90eXBlIHsgdHlwZWRlZiB0eXBlbmFtZSBUOjpjaGFyX3R5cGUgdHlwZTsgfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2hhcl90eXBlX29mIAotICAgIDogZGV0YWlsOjptZW1iZXJfY2hhcl90eXBlPAotICAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUKLSAgICAgID4gCi0gICAgeyB9OwotCi0jIGVsc2UgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNoYXJfdHlwZV9vZiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIFU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBpc19zdGRfaW88VT4sCi0gICAgICAgICAgICAgICAgbXBsOjppZGVudGl0eTxjaGFyPiwKLSAgICAgICAgICAgICAgICBkZXRhaWw6Om1lbWJlcl9jaGFyX3R5cGU8VT4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLSMgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+Ci1zdHJ1Y3QgY2hhcl90eXBlX29mPCBpdGVyYXRvcl9yYW5nZTxJdGVyPiA+IHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3ZhbHVlPEl0ZXI+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gLy8tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNoYXJfdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdHJ1Y3QgZ2V0X3ZhbHVlX3R5cGUgewotICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmFuZ2VfdmFsdWU8VT46OnR5cGUgdHlwZTsKLSAgICAgICAgI2VuZGlmIC8vICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgfTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIGlzX2l0ZXJhdG9yX3JhbmdlPFQ+LAotICAgICAgICAgICAgICAgIGdldF92YWx1ZV90eXBlPFQ+LAotICAgICAgICAgICAgICAgIGRldGFpbDo6bWVtYmVyX2NoYXJfdHlwZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlCi0gICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9ucyBvZiBjYXRlZ29yeV9vZi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgbWVtYmVyX2NhdGVnb3J5IHsgdHlwZWRlZiB0eXBlbmFtZSBUOjpjYXRlZ29yeSB0eXBlOyB9OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNhdGVnb3J5X29mIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0cnVjdCBtZW1iZXJfY2F0ZWdvcnkgeyAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBVOjpjYXRlZ29yeSB0eXBlOyAKLSAgICB9OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSBVOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgIAotICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIG1wbDo6YW5kXzwKLSAgICAgICAgICAgICAgICAgICAgaXNfc3RkX2lvPFU+LAotICAgICAgICAgICAgICAgICAgICBtcGw6Om5vdF88IGRldGFpbDo6aXNfYm9vc3Q8VT4gPgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQKLSAgICAgICAgICAgICAgICAgICAgaXNfZmlsZWJ1ZjxVPiwgICAgICAgIGZpbGVidWZfdGFnLAotICAgICAgICAgICAgICAgICAgICBpc19pZnN0cmVhbTxVPiwgICAgICAgaWZzdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgICAgICBpc19vZnN0cmVhbTxVPiwgICAgICAgb2ZzdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgICAgICBpc19mc3RyZWFtPFU+LCAgICAgICAgZnN0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX3N0cmluZ2J1ZjxVPiwgICAgICBzdHJpbmdidWZfdGFnLAotICAgICAgICAgICAgICAgICAgICBpc19pc3RyaW5nc3RyZWFtPFU+LCAgaXN0cmluZ3N0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX29zdHJpbmdzdHJlYW08VT4sICBvc3RyaW5nc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICAgICAgaXNfc3RyaW5nc3RyZWFtPFU+LCAgIHN0cmluZ3N0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX3N0cmVhbWJ1ZjxVPiwgICAgICBnZW5lcmljX3N0cmVhbWJ1Zl90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX2lvc3RyZWFtPFU+LCAgICAgICBnZW5lcmljX2lvc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICAgICAgaXNfaXN0cmVhbTxVPiwgICAgICAgIGdlbmVyaWNfaXN0cmVhbV90YWcsIAotICAgICAgICAgICAgICAgICAgICBpc19vc3RyZWFtPFU+LCAgICAgICAgZ2VuZXJpY19vc3RyZWFtX3RhZwotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgZGV0YWlsOjptZW1iZXJfY2F0ZWdvcnk8VT4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIFBhcnRpYWwgc3BlY2lhbGl6YXRpb24gZm9yIHJlZmVyZW5jZSB3cmFwcGVycwotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjYXRlZ29yeV9vZjwgcmVmZXJlbmNlX3dyYXBwZXI8VD4gPgotICAgIDogY2F0ZWdvcnlfb2Y8VD4KLSAgICB7IH07Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gLy8tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBnZXRfY2F0ZWdvcnktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIAotLy8gUmV0dXJucyBhbiBvYmplY3Qgb2YgdHlwZSBjYXRlZ29yeV9vZjxUPjo6dHlwZS4KLS8vIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSBnZXRfY2F0ZWdvcnkoY29uc3QgVCYpIAoteyB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGNhdGVnb3J5OyByZXR1cm4gY2F0ZWdvcnkoKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgaW50X3R5cGVfb2YtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGludF90eXBlX29mIHsgCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0gICAgdHlwZWRlZiBzdGQ6OmNoYXJfdHJhaXRzPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlCi0gICAgICAgICAgICA+IHRyYWl0c190eXBlOyAgICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBlIHR5cGU7IAotI2Vsc2UgIAotICAgIHR5cGVkZWYgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU7IAotI2VuZGlmCi19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgbW9kZV9vZi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8aW50IE4+IHN0cnVjdCBpb19tb2RlX2ltcGw7Ci0KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX01PREVfSEVMUEVSKHRhZ18sIGlkXykgXAotICAgIGNhc2VfPGlkXz4gaW9fbW9kZV9pbXBsX2hlbHBlcih0YWdfKTsgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGlvX21vZGVfaW1wbDxpZF8+IHsgdHlwZWRlZiB0YWdfIHR5cGU7IH07IFwKLSAgICAvKiovCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIoaW5wdXQsIDEpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIob3V0cHV0LCAyKQotTkROQk9PU1RfSU9TVFJFQU1TX01PREVfSEVMUEVSKGJpZGlyZWN0aW9uYWwsIDMpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIoaW5wdXRfc2Vla2FibGUsIDQpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIob3V0cHV0X3NlZWthYmxlLCA1KQotTkROQk9PU1RfSU9TVFJFQU1TX01PREVfSEVMUEVSKHNlZWthYmxlLCA2KQotTkROQk9PU1RfSU9TVFJFQU1TX01PREVfSEVMUEVSKGR1YWxfc2Vla2FibGUsIDcpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIoYmlkaXJlY3Rpb25hbF9zZWVrYWJsZSwgOCkKLU5ETkJPT1NUX0lPU1RSRUFNU19NT0RFX0hFTFBFUihkdWFsX3VzZSwgOSkKLSN1bmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpb19tb2RlX2lkIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGNhdGVnb3J5OwotICAgIE5ETkJPT1NUX1NFTEVDVF9CWV9TSVpFKGludCwgdmFsdWUsIGRldGFpbDo6aW9fbW9kZV9pbXBsX2hlbHBlcihjYXRlZ29yeSgpKSk7Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAvLyBCb3JsYW5kIDUuNi40IHJlcXVpcmVzIHRoaXMgY2lyY3VtbG9jdXRpb24uCi1zdHJ1Y3QgbW9kZV9vZiA6IGRldGFpbDo6aW9fbW9kZV9pbXBsPCBkZXRhaWw6OmlvX21vZGVfaWQ8VD46OnZhbHVlID4geyB9OwotCi0vLyBQYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGZvciByZWZlcmVuY2Ugd3JhcHBlcnMKLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgbW9kZV9vZjwgcmVmZXJlbmNlX3dyYXBwZXI8VD4gPgotICAgIDogbW9kZV9vZjxUPgotICAgIHsgfTsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgaXNfZGV2aWNlLCBpc19maWx0ZXIgYW5kIGlzX2RpcmVjdC0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnPgotc3RydWN0IGhhc190cmFpdF9pbXBsIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGNhdGVnb3J5OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgVGFnPjo6dmFsdWUpKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZz4KLXN0cnVjdCBoYXNfdHJhaXQgCi0gICAgOiBtcGw6OmJvb2xfPGhhc190cmFpdF9pbXBsPFQsIFRhZz46OnZhbHVlPgotICAgIHsgfTsgCi0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZGV2aWNlIDogZGV0YWlsOjpoYXNfdHJhaXQ8VCwgZGV2aWNlX3RhZz4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2ZpbHRlciA6IGRldGFpbDo6aGFzX3RyYWl0PFQsIGZpbHRlcl90YWc+IHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19kaXJlY3QgOiBkZXRhaWw6Omhhc190cmFpdDxULCBkaXJlY3RfdGFnPiB7IH07Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMtLS0tLS0tLS0tLy8KLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKSBcCi0gICAgdHlwZWRlZiBUciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgIGludF90eXBlOyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6b2ZmX3R5cGUgIG9mZl90eXBlOyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cG9zX3R5cGUgIHBvc190eXBlOyBcCi0gICAgLyoqLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JT19UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHNfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDJhY2VhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiB0ZW1wbGF0ZXMgZGVmaW5lZCBpbiB0cmFpdHMuaHBwLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JT19UUkFJVFNfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfSU9fVFJBSVRTX0ZXRF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGlvc2Z3ZD4gLy8gc3RyZWFtIHR5cGVzLCBjaGFyX3RyYWl0cy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7ICAgICAgCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfaXN0cmVhbTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19vc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2lvc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3N0cmVhbWJ1ZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19pc3RyaW5nc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX29zdHJpbmdzdHJlYW07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc3RyaW5nc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3N0cmluZ2J1ZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19pZnN0cmVhbTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19vZnN0cmVhbTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19mc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2ZpbGVidWY7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc3RkX2lvOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3N0ZF9maWxlX2RldmljZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdGRfc3RyaW5nX2RldmljZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjaGFyX3R5cGVfb2Y7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2F0ZWdvcnlfb2Y7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaW50X3R5cGVfb2Y7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgbW9kZV9vZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19kZXZpY2U7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZmlsdGVyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2RpcmVjdDsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfYm9vc3Rfc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2Jvb3N0X3N0cmVhbV9idWZmZXI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZmlsdGVyaW5nX3N0cmVhbTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19maWx0ZXJpbmdfc3RyZWFtYnVmOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2xpbmtlZDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19ib29zdDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JT19UUkFJVFNfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmQ4MTJlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3dyaXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV1JJVEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19XUklURV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2L3dyaXRlLmhwcD4KLSNlbHNlIC8vICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi17IHJldHVybiBkZXRhaWw6OndyaXRlX2RldmljZV9pbXBsPFQ+OjpwdXQoZGV0YWlsOjp1bndyYXAodCksIGMpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIHdyaXRlCi0gICAgKFQmIHQsIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBkZXRhaWw6OndyaXRlX2RldmljZV9pbXBsPFQ+Ojp3cml0ZShkZXRhaWw6OnVud3JhcCh0KSwgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUKLXdyaXRlKCBUJiB0LCBTaW5rJiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgCi0gICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQoteyByZXR1cm4gZGV0YWlsOjp3cml0ZV9maWx0ZXJfaW1wbDxUPjo6d3JpdGUoZGV0YWlsOjp1bndyYXAodCksIHNuaywgcywgbik7IH0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiB3cml0ZV9kZXZpY2VfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIHdyaXRlX2RldmljZV9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgb3N0cmVhbV90YWcsIHN0cmVhbWJ1Zl90YWcsIG91dHB1dAotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2RldmljZV9pbXBsPG9zdHJlYW1fdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgIHRyYWl0c190eXBlOwotICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZSggdC5yZGJ1ZigpLT5zcHV0YyhjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjplb2YoKSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZQotICAgICAgICAoVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiB0LnJkYnVmKCktPnNwdXRuKHMsIG4pOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGw8c3RyZWFtYnVmX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgcHV0KFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgICAgICAgY2hhcl90eXBlOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpICB0cmFpdHNfdHlwZTsKLSAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUodC5zcHV0YyhjKSwgdHJhaXRzX3R5cGU6OmVvZigpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAgICAgKFQmIHQsIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gdC5zcHV0bihzLCBuKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2RldmljZV9pbXBsPG91dHB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgcHV0KFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgIHsgcmV0dXJuIHQud3JpdGUoJmMsIDEpID09IDE7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHdyaXRlKFQmIHQsIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gdC53cml0ZShzLCBuKTsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHdyaXRlX2ZpbHRlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB3cml0ZV9maWx0ZXJfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgd3JpdGVfZmlsdGVyX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBtdWx0aWNoYXJfdGFnLCBhbnlfdGFnCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgd3JpdGVfZmlsdGVyX2ltcGw8bXVsdGljaGFyX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHdyaXRlKCBUJiB0LCBTaW5rJiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywKLSAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgIHsgcmV0dXJuIHQud3JpdGUoc25rLCBzLCBuKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICB3cml0ZSggVCYgdCwgU2luayYgc25rLCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsCi0gICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICB7Ci0gICAgICAgIGZvciAoc3RkOjpzdHJlYW1zaXplIG9mZiA9IDA7IG9mZiA8IG47ICsrb2ZmKQotICAgICAgICAgICAgaWYgKCF0LnB1dChzbmssIHNbb2ZmXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9mZjsKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV1JJVEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lzX3BsYWNlaG9sZGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXNfcGxhY2Vob2xkZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzQwODIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXNfcGxhY2Vob2xkZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9JU19QTEFDRUhPTERFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSVNfUExBQ0VIT0xERVJfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKCBfTVNDX1ZFUiApICYmICggX01TQ19WRVIgPj0gMTAyMCApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotCi0vLyAgaXNfcGxhY2Vob2xkZXIuaHBwIC0gVFIxIGlzX3BsYWNlaG9sZGVyIG1ldGFmdW5jdGlvbgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXIKLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSVNfUExBQ0VIT0xERVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWQ2MjljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLy8gIGl0ZXJhdG9yLmhwcCB3b3JrYXJvdW5kcyBmb3Igbm9uLWNvbmZvcm1pbmcgc3RhbmRhcmQgbGlicmFyaWVzICAtLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAwLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgMTIgSmFuIDAxIGFkZGVkIDxjc3RkZGVmPiBmb3Igc3RkOjpwdHJkaWZmX3QgKEplbnMgTWF1cmVyKQotLy8gIDI4IEp1biAwMCBXb3JrYXJvdW5kcyB0byBkZWFsIHdpdGgga25vd24gTVNWQyBidWdzIChEYXZpZCBBYnJhaGFtcykKLS8vICAyNiBKdW4gMDAgSW5pdGlhbCB2ZXJzaW9uIChKZXJlbXkgU2llaykKLQotI2lmbmRlZiBORE5CT09TVF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfSFBQCi0KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgLy8gc3RkOjpwdHJkaWZmX3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSMgaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1IpICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SKQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ2F0ZWdvcnksIGNsYXNzIFQsCi0gICAgY2xhc3MgRGlzdGFuY2UgPSBzdGQ6OnB0cmRpZmZfdCwKLSAgICBjbGFzcyBQb2ludGVyID0gVCosIGNsYXNzIFJlZmVyZW5jZSA9IFQmPgotICBzdHJ1Y3QgaXRlcmF0b3IKLSAgewotICAgIHR5cGVkZWYgVCAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBEaXN0YW5jZSAgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgUG9pbnRlciAgIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBSZWZlcmVuY2UgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgQ2F0ZWdvcnkgIGl0ZXJhdG9yX2NhdGVnb3J5OwotICB9OwotIyBlbHNlCi0KLSAgLy8gZGVjbGFyZSBpdGVyYXRvcl9iYXNlIGluIG5hbWVzcGFjZSBkZXRhaWwgdG8gd29yayBhcm91bmQgTVNWQyBidWdzIHdoaWNoCi0gIC8vIHByZXZlbnQgZGVyaXZhdGlvbiBmcm9tIGFuIGlkZW50aWNhbGx5LW5hbWVkIGNsYXNzIGluIGEgZGlmZmVyZW50IG5hbWVzcGFjZS4KLSAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgQ2F0ZWdvcnksIGNsYXNzIFQsIGNsYXNzIERpc3RhbmNlLCBjbGFzcyBQb2ludGVyLCBjbGFzcyBSZWZlcmVuY2U+Ci0jICBpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDX1NURF9JVEVSQVRPUikKLSAgIHN0cnVjdCBpdGVyYXRvcl9iYXNlIDogc3RkOjppdGVyYXRvcjxDYXRlZ29yeSwgVCwgRGlzdGFuY2UsIFBvaW50ZXIsIFJlZmVyZW5jZT4ge307Ci0jICBlbHNlCi0gICBzdHJ1Y3QgaXRlcmF0b3JfYmFzZSA6IHN0ZDo6aXRlcmF0b3I8Q2F0ZWdvcnksIFQsIERpc3RhbmNlPgotICAgewotICAgICB0eXBlZGVmIFJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgIHR5cGVkZWYgUG9pbnRlciBwb2ludGVyOwotICAgICB0eXBlZGVmIERpc3RhbmNlIGRpZmZlcmVuY2VfdHlwZTsKLSAgIH07Ci0jICBlbmRpZgotICB9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENhdGVnb3J5LCBjbGFzcyBULCBjbGFzcyBEaXN0YW5jZSA9IHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgICAgY2xhc3MgUG9pbnRlciA9IFQqLCBjbGFzcyBSZWZlcmVuY2UgPSBUJj4KLSAgc3RydWN0IGl0ZXJhdG9yIDogbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfYmFzZTxDYXRlZ29yeSwgVCwgRGlzdGFuY2UsIFBvaW50ZXIsIFJlZmVyZW5jZT4ge307Ci0jIGVuZGlmCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfSVRFUkFUT1JfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ19kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGFmOTI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ19kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gbm8gaW5jbHVkZSBndWFyZCBtdWx0aXBsZSBpbmNsdXNpb24gaW50ZW5kZWQKLQotLy8KLS8vIFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB1bnRpbCB0aGUgYnVsayBvZiB0aGlzIGlzCi0vLyBhdmFpbGFibGUgaW4gYm9vc3QgY29uZmlnLgotLy8gMjMvMDIvMDMgdGh3Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gZm9yIHByaW9yCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfSVRFUkFUT1JfQ09ORklHX0RFRgotIyBlcnJvciB5b3UgaGF2ZSBuZXN0ZWQgY29uZmlnX2RlZiAjaW5jbHVzaW9uLgotI2Vsc2UgCi0jIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9DT05GSUdfREVGCi0jZW5kaWYgCi0KLS8vIFdlIGVuYWJsZSB0aGlzIGFsd2F5cyBub3cuICBPdGhlcndpc2UsIHRoZSBzaW1wbGUgY2FzZSBpbgotLy8gbGlicy9pdGVyYXRvci90ZXN0L2NvbnN0YW50X2l0ZXJhdG9yX2Fycm93LmNwcCBmYWlscyB0byBjb21waWxlCi0vLyBiZWNhdXNlIHRoZSBvcGVyYXRvci0+IHJldHVybiBpcyBpbXByb3Blcmx5IGRlZHVjZWQgYXMgYSBub24tY29uc3QKLS8vIHBvaW50ZXIuCi0jaWYgMSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDUzMSkpCi0KLS8vIFJlY2FsbCB0aGF0IGluIGdlbmVyYWwsIGNvbXBpbGVycyB3aXRob3V0IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24KLS8vIGNhbid0IHN0cmlwIGNvbnN0bmVzcy4gIENvbnNpZGVyIGNvdW50aW5nX2l0ZXJhdG9yLCB3aGljaCBub3JtYWxseQotLy8gcGFzc2VzIGEgY29uc3QgVmFsdWUgdG8gaXRlcmF0b3JfZmFjYWRlLiAgQXMgYSByZXN1bHQsIGFueSBjb2RlCi0vLyB3aGljaCBtYWtlcyBhIHN0ZDo6dmVjdG9yIG9mIHRoZSBpdGVyYXRvcidzIHZhbHVlX3R5cGUgd2lsbCBmYWlsCi0vLyB3aGVuIGl0cyBhbGxvY2F0b3IgZGVjbGFyZXMgZnVuY3Rpb25zIG92ZXJsb2FkZWQgb24gcmVmZXJlbmNlIGFuZAotLy8gY29uc3RfcmVmZXJlbmNlICh0aGUgc2FtZSB0eXBlKS4KLS8vCi0vLyBGdXJ0aGVybW9yZSwgQm9ybGFuZCA1LjUuMSBkcm9wcyBjb25zdG5lc3MgaW4gZW5vdWdoIHdheXMgdGhhdCB3ZQotLy8gZW5kIHVwIHVzaW5nIGEgcHJveHkgZm9yIG9wZXJhdG9yW10gd2hlbiB3ZSBvdGhlcndpc2Ugc2hvdWxkbid0LgotLy8gVXNpbmcgcmVmZXJlbmNlIGNvbnN0bmVzcyBnaXZlcyBpdCBhbiBleHRyYSBoaW50IHRoYXQgaXQgY2FuCi0vLyByZXR1cm4gdGhlIHZhbHVlX3R5cGUgZnJvbSBvcGVyYXRvcltdIGRpcmVjdGx5LCBidXQgaXMgbm90Ci0vLyBzdHJpY3RseSBuZWNlc3NhcnkuICBOb3Qgc3VyZSBob3cgYmVzdCB0byByZXNvbHZlIHRoaXMgb25lLgotCi0jIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9SRUZfQ09OU1RORVNTX0tJTExTX1dSSVRBQklMSVRZIDEKLQotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1QTApKSAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgKE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04sIDw9IDcwMCkgJiYgZGVmaW5lZChfTVNDX1ZFUikpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fREVDQ1hYX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDYwNTkwMDQyKSkgICAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MCkpCi0gICAgCi0jIGRlZmluZSBORE5CT09TVF9OT19MVkFMVUVfUkVUVVJOX0RFVEVDVElPTgotCi0jIGlmIDAgLy8gdGVzdCBjb2RlCi0gIHN0cnVjdCB2ICB7fTsKLQotICB0eXBlZGVmICBjaGFyICgmbm8pWzNdOwotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBubyBmb28oVCBjb25zdCYsIC4uLik7Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIGNoYXIgZm9vKFQmLCBpbnQpOwotCi0KLSAgc3RydWN0IHZhbHVlX2l0ZXJhdG9yCi0gIHsKLSAgICAgIHYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBsdmFsdWVfZGVyZWZfaGVscGVyCi0gIHsKLSAgICAgIHN0YXRpYyBUJiB4OwotICAgICAgZW51bSB7IHZhbHVlID0gKHNpemVvZihmb28oKngsMCkpID09IDEpIH07Ci0gIH07Ci0KLSAgaW50IHoyWyhsdmFsdWVfZGVyZWZfaGVscGVyPHYqPjo6dmFsdWUgPT0gMSkgPyAxIDogLTFdOwotICBpbnQgelsobHZhbHVlX2RlcmVmX2hlbHBlcjx2YWx1ZV9pdGVyYXRvcj46OnZhbHVlKSA9PSAxID8gLTEgOiAxIF07Ci0jIGVuZGlmIAotCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0weDI0MDcpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQ09OVkVSVElCTEUgLy8gImlzX2NvbnZlcnRpYmxlIGRvZXNuJ3Qgd29yayBmb3Igc2ltcGxlIHR5cGVzIgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPT0gMykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfTUlOT1JfXywgPCA0KSAmJiAhZGVmaW5lZChfX0VER19WRVJTSU9OX18pICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0NPTlZFUlRJQkxFX1RFTVBMQVRFIC8vIFRoZSBmb2xsb3dpbmcgcHJvZ3JhbSBmYWlscyB0byBjb21waWxlOgotCi0jICBpZiAwIC8vIHRlc3QgY29kZQotICAgICNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgc3RydWN0IGZvbwotICAgIHsKLSAgICAgICAgZm9vKFQpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgICAgICBmb28oZm9vPFU+IGNvbnN0JiBvdGhlcikgOiBwKG90aGVyLnApIHsgfQotCi0gICAgICAgIFQgcDsKLSAgICB9OwotCi0gICAgYm9vbCB4ID0gbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPGZvbzxpbnQgY29uc3QqPiwgZm9vPGludCo+ID46OnZhbHVlOwotIyAgZW5kaWYKLQotI2VuZGlmCi0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRSkgfHwgZGVmaW5lZChORE5CT09TVF9OT19JU19DT05WRVJUSUJMRSkgfHwgZGVmaW5lZChORE5CT09TVF9OT19JU19DT05WRVJUSUJMRV9URU1QTEFURSkpCi0jIGRlZmluZSBORE5CT09TVF9OT19TVFJJQ1RfSVRFUkFUT1JfSU5URVJPUEVSQUJJTElUWQotI2VuZGlmIAotCi0jIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0jICBkZWZpbmUgTkROQk9PU1RfQVJHX0RFUEVOREVOVF9UWVBFTkFNRSB0eXBlbmFtZQotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfQVJHX0RFUEVOREVOVF9UWVBFTkFNRQotIyBlbmRpZgotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID09IDIpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX01JTk9SX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg5NSkpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLQotLy8gR0NDLTIuOTUgZWFnZXJseSBpbnN0YW50aWF0ZXMgdGVtcGxhdGVkIGNvbnN0cnVjdG9ycyBhbmQgY29udmVyc2lvbgotLy8gb3BlcmF0b3JzIGluIGNvbnZlcnRpYmlsaXR5IGNoZWNrcywgY2F1c2luZyBwcmVtYXR1cmUgZXJyb3JzLgotLy8KLS8vIEJvcmxhbmQncyBwcm9ibGVtcyBhcmUgaGFyZGVyIHRvIGRpYWdub3NlIGR1ZSB0byBsYWNrIG9mIGFuCi0vLyBpbnN0YW50aWF0aW9uIHN0YWNrIGJhY2t0cmFjZS4gIFRoZXkgbWF5IGJlIGR1ZSBpbiBwYXJ0IHRvIHRoZSBmYWN0Ci0vLyB0aGF0IGl0IGRyb3BzIGN2LXF1YWxpZmljYXRpb24gd2lsbHktbmlsbHkgaW4gdGVtcGxhdGVzLgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX09ORV9XQVlfSVRFUkFUT1JfSU5URVJPUAotIyBlbmRpZiAKLQotLy8gbm8gaW5jbHVkZSBndWFyZDsgbXVsdGlwbGUgaW5jbHVzaW9uIGludGVuZGVkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX3VuZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU4MjhhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBUaG9tYXMgV2l0dCAgICAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBubyBpbmNsdWRlIGd1YXJkIG11bHRpcGxlIGluY2x1c2lvbiBpbnRlbmRlZAotCi0vLwotLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIHVudGlsIHRoZSBidWxrIG9mIHRoaXMgaXMKLS8vIGF2YWlsYWJsZSBpbiBib29zdCBjb25maWcuCi0vLyAyMy8wMi8wMyB0aHcKLS8vCi0KLSN1bmRlZiBORE5CT09TVF9OT19JU19DT05WRVJUSUJMRQotI3VuZGVmIE5ETkJPT1NUX05PX0lTX0NPTlZFUlRJQkxFX1RFTVBMQVRFCi0jdW5kZWYgTkROQk9PU1RfTk9fU1RSSUNUX0lURVJBVE9SX0lOVEVST1BFUkFCSUxJVFkKLSN1bmRlZiBORE5CT09TVF9BUkdfREVQRU5ERU5UX1RZUEVOQU1FCi0jdW5kZWYgTkROQk9PU1RfTk9fTFZBTFVFX1JFVFVSTl9ERVRFQ1RJT04KLSN1bmRlZiBORE5CT09TVF9OT19PTkVfV0FZX0lURVJBVE9SX0lOVEVST1AKLQotI2lmZGVmIE5ETkJPT1NUX0lURVJBVE9SX0NPTkZJR19ERUYKLSMgdW5kZWYgTkROQk9PU1RfSVRFUkFUT1JfQ09ORklHX0RFRgotI2Vsc2UKLSMgZXJyb3IgbWlzc2luZyBvciBuZXN0ZWQgI2luY2x1ZGUgY29uZmlnX2RlZgotI2VuZGlmIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZW5hYmxlX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2VuYWJsZV9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMDQxYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZW5hYmxlX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfRU5BQkxFX0lGXzIzMDIyMDAzVEhXX0hQUAotI2RlZmluZSBORE5CT09TVF9FTkFCTEVfSUZfMjMwMjIwMDNUSFdfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcD4KLQotLy8KLS8vIEJvb3N0IGl0ZXJhdG9ycyB1c2VzIGl0cyBvd24gZW5hYmxlX2lmIGNhdXNlIHdlIG5lZWQKLS8vIHNwZWNpYWwgc2VtYW50aWNzIGZvciBkZWZpY2llbnQgY29tcGlsZXJzLgotLy8gMjMvMDIvMDMgdGh3Ci0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotICBuYW1lc3BhY2UgaXRlcmF0b3JzCi0gIHsKLSAgICAvLwotICAgIC8vIEJhc2UgbWFjaGluZXJ5IGZvciBhbGwga2luZHMgb2YgZW5hYmxlIGlmCi0gICAgLy8KLSAgICB0ZW1wbGF0ZTxib29sPgotICAgIHN0cnVjdCBlbmFibGVkCi0gICAgewotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgIHN0cnVjdCBiYXNlCi0gICAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgfTsKLSAgICB9OwotICAgIAotICAgIC8vCi0gICAgLy8gRm9yIGNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgIlN1YnN0aXR1dGlvbiBGYWlsdXJlIElzIE5vdCBBbiBFcnJvciIKLSAgICAvLyBlbmFibGVfaWYgZmFsbHMgYmFjayB0byBhbHdheXMgZW5hYmxlZC4gU2VlIGNvbW1lbnRzCi0gICAgLy8gb24gb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGNvbnNlcXVlbmNlcy4KLSAgICAvLwotICAgIHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3QgZW5hYmxlZDxmYWxzZT4KLSAgICB7Ci0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgc3RydWN0IGJhc2UKLSAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19TRklOQUUKLQotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLQotICAgICAgICAvLyBUaGlzIHdheSB0byBkbyBpdCB3b3VsZCBnaXZlIGEgbmljZSBlcnJvciBtZXNzYWdlIGNvbnRhaW5pbmcKLSAgICAgICAgLy8gaW52YWxpZCBvdmVybG9hZCwgYnV0IGhhcyB0aGUgYmlnIGRpc2FkdmFudGFnZSB0aGF0Ci0gICAgICAgIC8vIHRoZXJlIGlzIG5vIHJlZmVyZW5jZSB0byB1c2VyIGNvZGUgaW4gdGhlIGVycm9yIG1lc3NhZ2UuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIHN0cnVjdCBpbnZhbGlkX292ZXJsb2FkOwotICAgICAgICAvLyB0eXBlZGVmIGludmFsaWRfb3ZlcmxvYWQgdHlwZTsKLSAgICAgICAgLy8KLSNlbmRpZgotICAgICAgfTsKLSAgICB9OwotCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwKLSAgICAgICAgICAgICAgY2xhc3MgUmV0dXJuPgotICAgIHN0cnVjdCBlbmFibGVfaWYKLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JU19DT05WRVJUSUJMRSkKLSAgICAgIDogZW5hYmxlZDwoQ29uZDo6dmFsdWUpPjo6dGVtcGxhdGUgYmFzZTxSZXR1cm4+Ci0jIGVsc2UKLSAgICAgIDogbXBsOjppZGVudGl0eTxSZXR1cm4+Ci0jIGVuZGlmIAotICAgIHsKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgIHR5cGVkZWYgUmV0dXJuIHR5cGU7Ci0jIGVuZGlmIAotICAgIH07Ci0KLSAgfSAvLyBuYW1lc3BhY2UgaXRlcmF0b3JzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0VOQUJMRV9JRl8yMzAyMjAwM1RIV19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2ZhY2FkZV9pdGVyYXRvcl9jYXRlZ29yeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9mYWNhZGVfaXRlcmF0b3JfY2F0ZWdvcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTQ4NzkzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2ZhY2FkZV9pdGVyYXRvcl9jYXRlZ29yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMKLS8vIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIEZBQ0FERV9JVEVSQVRPUl9DQVRFR09SWV9ORE5CT09TVF9EV0EyMDAzMTExOF9IUFAKLSMgZGVmaW5lIEZBQ0FERV9JVEVSQVRPUl9DQVRFR09SWV9ORE5CT09TVF9EV0EyMDAzMTExOF9IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jYXRlZ29yaWVzLmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPiAgLy8gdXNlZCBpbiBpdGVyYXRvcl90YWcgaW5oZXJpdGFuY2UgbG9naWMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fzc2VydC5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcD4gLy8gdHJ5IHRvIGtlZXAgdGhpcyBsYXN0Ci0KLSMgaWZkZWYgTkROQk9PU1RfSVRFUkFUT1JfUkVGX0NPTlNUTkVTU19LSUxMU19XUklUQUJJTElUWQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2luZGlyZWN0X3RyYWl0cy5ocHA+Ci0jIGVuZGlmCi0KLS8vCi0vLyBpdGVyYXRvcl9jYXRlZ29yeSBkZWR1Y3Rpb24gZm9yIGl0ZXJhdG9yX2ZhY2FkZQotLy8KLQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotbmFtZXNwYWNlIG5kbmJvb3N0IHsgc3RydWN0IHVzZV9kZWZhdWx0OyB9Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgIHsKLQotc3RydWN0IGlucHV0X291dHB1dF9pdGVyYXRvcl90YWcKLSAgOiBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZwotewotICAgIC8vIFVzaW5nIGluaGVyaXRhbmNlIGZvciBvbmx5IGlucHV0X2l0ZXJhdG9yX3RhZyBoZWxwcyB0byBhdm9pZAotICAgIC8vIGFtYmlndWl0aWVzIHdoZW4gYSBzdGRsaWIgaW1wbGVtZW50YXRpb24gZGlzcGF0Y2hlcyBvbiBhCi0gICAgLy8gZnVuY3Rpb24gd2hpY2ggaXMgb3ZlcmxvYWRlZCBvbiBib3RoIGlucHV0X2l0ZXJhdG9yX3RhZyBhbmQKLSAgICAvLyBvdXRwdXRfaXRlcmF0b3JfdGFnLCBhcyBTVExQb3J0IGRvZXMsIGluIGl0cyBfX3ZhbGlkX3JhbmdlCi0gICAgLy8gZnVuY3Rpb24uICBJIGNsYWltIGl0J3MgYmV0dGVyIHRvIGF2b2lkIHRoZSBhbWJpZ3VpdHkgaW4gdGhlc2UKLSAgICAvLyBjYXNlcy4KLSAgICBvcGVyYXRvciBzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZygpOwotICAgIH0KLX07Ci0KLS8vCi0vLyBUcnVlIGlmZiB0aGUgdXNlciBoYXMgZXhwbGljaXRseSBkaXNhYmxlZCB3cml0YWJpbGl0eSBvZiB0aGlzCi0vLyBpdGVyYXRvci4gIFBhc3MgdGhlIGl0ZXJhdG9yX2ZhY2FkZSdzIFZhbHVlIHBhcmFtZXRlciBhbmQgaXRzCi0vLyBuZXN0ZWQgOjpyZWZlcmVuY2UgdHlwZS4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVmFsdWVQYXJhbSwgY2xhc3MgUmVmZXJlbmNlPgotc3RydWN0IGl0ZXJhdG9yX3dyaXRhYmlsaXR5X2Rpc2FibGVkCi0jIGlmZGVmIE5ETkJPT1NUX0lURVJBVE9SX1JFRl9DT05TVE5FU1NfS0lMTFNfV1JJVEFCSUxJVFkgLy8gQWRkaW5nIFRob21hcycgbG9naWM/Ci0gIDogbXBsOjpvcl88Ci0gICAgICAgIGlzX2NvbnN0PFJlZmVyZW5jZT4KLSAgICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6aW5kaXJlY3RfdHJhaXRzOjppc19yZWZlcmVuY2VfdG9fY29uc3Q8UmVmZXJlbmNlPgotICAgICAgLCBpc19jb25zdDxWYWx1ZVBhcmFtPgotICAgID4KLSMgZWxzZSAKLSAgOiBpc19jb25zdDxWYWx1ZVBhcmFtPgotIyBlbmRpZiAKLXt9OwotCi0KLS8vCi0vLyBDb252ZXJ0IGFuIGl0ZXJhdG9yX2ZhY2FkZSdzIHRyYXZlcnNhbCBjYXRlZ29yeSwgVmFsdWUgcGFyYW1ldGVyLAotLy8gYW5kIDo6cmVmZXJlbmNlIHR5cGUgdG8gYW4gYXBwcm9wcmlhdGUgb2xkLXN0eWxlIGNhdGVnb3J5LgotLy8KLS8vIElmIHdyaXRhYmlsaXR5IGhhcyBiZWVuIGRpc2FibGVkIHBlciB0aGUgYWJvdmUgbWV0YWZ1bmN0aW9uLCB0aGUKLS8vIHJlc3VsdCB3aWxsIG5vdCBiZSBjb252ZXJ0aWJsZSB0byBvdXRwdXRfaXRlcmF0b3JfdGFnLgotLy8KLS8vIE90aGVyd2lzZSwgaWYgVHJhdmVyc2FsID09IHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcsIHRoZSBmb2xsb3dpbmcKLS8vIGNvbmRpdGlvbnMgd2lsbCByZXN1bHQgaW4gYSB0YWcgdGhhdCBpcyBjb252ZXJ0aWJsZSBib3RoIHRvCi0vLyBpbnB1dF9pdGVyYXRvcl90YWcgYW5kIG91dHB1dF9pdGVyYXRvcl90YWc6Ci0vLwotLy8gICAgMS4gUmVmZXJlbmNlIGlzIGEgcmVmZXJlbmNlIHRvIG5vbi1jb25zdAotLy8gICAgMi4gUmVmZXJlbmNlIGlzIG5vdCBhIHJlZmVyZW5jZSBhbmQgaXMgY29udmVydGlibGUgdG8gVmFsdWUKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVHJhdmVyc2FsLCBjbGFzcyBWYWx1ZVBhcmFtLCBjbGFzcyBSZWZlcmVuY2U+Ci1zdHJ1Y3QgaXRlcmF0b3JfZmFjYWRlX2RlZmF1bHRfY2F0ZWdvcnkKLSAgOiBtcGw6OmV2YWxfaWY8Ci0gICAgICAgIG1wbDo6YW5kXzwKLSAgICAgICAgICAgIGlzX3JlZmVyZW5jZTxSZWZlcmVuY2U+Ci0gICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxUcmF2ZXJzYWwsZm9yd2FyZF90cmF2ZXJzYWxfdGFnPgotICAgICAgICA+Ci0gICAgICAsIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxyYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgLCBtcGw6OmlkZW50aXR5PHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWc+Ci0gICAgICAgICAgLCBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxUcmF2ZXJzYWwsYmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcKLSAgICAgICAgICAgICAgLCBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnCi0gICAgICAgICAgICA+Ci0gICAgICAgID4KLSAgICAgICwgdHlwZW5hbWUgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCwgc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3IgcmVhZGFiaWxpdHkKLSAgICAgICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxSZWZlcmVuY2UsIFZhbHVlUGFyYW0+Ci0gICAgICAgICAgICA+Ci0gICAgICAgICAgLCBtcGw6OmlkZW50aXR5PHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnPgotICAgICAgICAgICwgbXBsOjppZGVudGl0eTxUcmF2ZXJzYWw+Ci0gICAgICAgID4KLSAgICA+Ci17Ci19OwotCi0vLyBUcnVlIGlmZiBUIGlzIGNvbnZlcnRpYmxlIHRvIGFuIG9sZC1zdHlsZSBpdGVyYXRvciBjYXRlZ29yeS4KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2l0ZXJhdG9yX2NhdGVnb3J5Ci0gIDogbXBsOjpvcl88Ci0gICAgICAgIGlzX2NvbnZlcnRpYmxlPFQsc3RkOjppbnB1dF9pdGVyYXRvcl90YWc+Ci0gICAgICAsIGlzX2NvbnZlcnRpYmxlPFQsc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnPgotICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2l0ZXJhdG9yX3RyYXZlcnNhbAotICA6IGlzX2NvbnZlcnRpYmxlPFQsaW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnPgote307Ci0KLS8vCi0vLyBBIGNvbXBvc2l0ZSBpdGVyYXRvcl9jYXRlZ29yeSB0YWcgY29udmVydGlibGUgdG8gQ2F0ZWdvcnkgKGEgcHVyZQotLy8gb2xkLXN0eWxlIGNhdGVnb3J5KSBhbmQgVHJhdmVyc2FsIChhIHB1cmUgdHJhdmVyc2FsIHRhZykuCi0vLyBUcmF2ZXJzYWwgbXVzdCBiZSBhIHN0cmljdCBpbmNyZWFzZSBvZiB0aGUgdHJhdmVyc2FsIHBvd2VyIGdpdmVuIGJ5Ci0vLyBDYXRlZ29yeS4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgQ2F0ZWdvcnksIGNsYXNzIFRyYXZlcnNhbD4KLXN0cnVjdCBpdGVyYXRvcl9jYXRlZ29yeV93aXRoX3RyYXZlcnNhbAotICA6IENhdGVnb3J5LCBUcmF2ZXJzYWwKLXsKLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICAvLyBNYWtlIHN1cmUgdGhpcyBpc24ndCB1c2VkIHRvIGJ1aWxkIGFueSBjYXRlZ29yaWVzIHdoZXJlCi0gICAgLy8gY29udmVydGliaWxpdHkgdG8gVHJhdmVyc2FsIGlzIHJlZHVuZGFudC4gIFNob3VsZCBqdXN0IHVzZSB0aGUKLSAgICAvLyBDYXRlZ29yeSBlbGVtZW50IGluIHRoYXQgY2FzZS4KLSAgICBORE5CT09TVF9NUExfQVNTRVJUX05PVCgoCi0gICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl9jYXRlZ29yeV90b190cmF2ZXJzYWw8Q2F0ZWdvcnk+Ojp0eXBlCi0gICAgICAgICAgICAsIFRyYXZlcnNhbAotICAgICAgICAgID4pKTsKLQotICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKGlzX2l0ZXJhdG9yX2NhdGVnb3J5PENhdGVnb3J5PikpOwotICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKChpc19pdGVyYXRvcl9jYXRlZ29yeTxUcmF2ZXJzYWw+KSk7Ci0gICAgTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QoKGlzX2l0ZXJhdG9yX3RyYXZlcnNhbDxDYXRlZ29yeT4pKTsKLSMgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIE5ETkJPT1NUX1RFU1RFRF9BVCgxMzEwKSkKLSAgICBORE5CT09TVF9NUExfQVNTRVJUKChpc19pdGVyYXRvcl90cmF2ZXJzYWw8VHJhdmVyc2FsPikpOwotIyAgZW5kaWYgCi0jIGVuZGlmIAotfTsKLQotLy8gQ29tcHV0ZXMgYW4gaXRlcmF0b3JfY2F0ZWdvcnkgdGFnIHdob3NlIHRyYXZlcnNhbCBpcyBUcmF2ZXJzYWwgYW5kCi0vLyB3aGljaCBpcyBhcHByb3ByaWF0ZSBmb3IgYW4gaXRlcmF0b3IKLXRlbXBsYXRlIDxjbGFzcyBUcmF2ZXJzYWwsIGNsYXNzIFZhbHVlUGFyYW0sIGNsYXNzIFJlZmVyZW5jZT4KLXN0cnVjdCBmYWNhZGVfaXRlcmF0b3JfY2F0ZWdvcnlfaW1wbAotewotIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKChpc19pdGVyYXRvcl9jYXRlZ29yeTxUcmF2ZXJzYWw+KSk7Ci0jIGVuZGlmIAotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfZmFjYWRlX2RlZmF1bHRfY2F0ZWdvcnk8Ci0gICAgICAgIFRyYXZlcnNhbCxWYWx1ZVBhcmFtLFJlZmVyZW5jZQotICAgID46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgaXNfc2FtZTwKLSAgICAgICAgICAgIFRyYXZlcnNhbAotICAgICAgICAgICwgdHlwZW5hbWUgaXRlcmF0b3JfY2F0ZWdvcnlfdG9fdHJhdmVyc2FsPGNhdGVnb3J5Pjo6dHlwZQotICAgICAgICA+Ci0gICAgICAsIGNhdGVnb3J5Ci0gICAgICAsIGl0ZXJhdG9yX2NhdGVnb3J5X3dpdGhfdHJhdmVyc2FsPGNhdGVnb3J5LFRyYXZlcnNhbD4KLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLwotLy8gQ29tcHV0ZSBhbiBpdGVyYXRvcl9jYXRlZ29yeSBmb3IgaXRlcmF0b3JfZmFjYWRlCi0vLwotdGVtcGxhdGUgPGNsYXNzIENhdGVnb3J5T3JUcmF2ZXJzYWwsIGNsYXNzIFZhbHVlUGFyYW0sIGNsYXNzIFJlZmVyZW5jZT4KLXN0cnVjdCBmYWNhZGVfaXRlcmF0b3JfY2F0ZWdvcnkKLSAgOiBtcGw6OmV2YWxfaWY8Ci0gICAgICAgIGlzX2l0ZXJhdG9yX2NhdGVnb3J5PENhdGVnb3J5T3JUcmF2ZXJzYWw+Ci0gICAgICAsIG1wbDo6aWRlbnRpdHk8Q2F0ZWdvcnlPclRyYXZlcnNhbD4gLy8gb2xkLXN0eWxlIGNhdGVnb3JpZXMgYXJlIGZpbmUgYXMtaXMKLSAgICAgICwgZmFjYWRlX2l0ZXJhdG9yX2NhdGVnb3J5X2ltcGw8Q2F0ZWdvcnlPclRyYXZlcnNhbCxWYWx1ZVBhcmFtLFJlZmVyZW5jZT4KLSAgICA+Ci17Ci19OwotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmRldGFpbAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gRkFDQURFX0lURVJBVE9SX0NBVEVHT1JZX05ETkJPT1NUX0RXQTIwMDMxMTE4X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pbnRlcm9wZXJhYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaW50ZXJvcGVyYWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1YjIxMDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pbnRlcm9wZXJhYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfSU5URVJPUEVSQUJMRV8yMzAyMjAwM1RIV19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVST1BFUkFCTEVfMjMwMjIwMDNUSFdfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX2RlZi5ocHA+IC8vIG11c3QgYXBwZWFyIGxhc3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSAgLy8KLSAgLy8gTWV0YSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0d28KLSAgLy8gaXRlcmF0b3IgdHlwZXMgYXJlIGNvbnNpZGVyZWQgaW50ZXJvcGVyYWJsZS4KLSAgLy8KLSAgLy8gVHdvIGl0ZXJhdG9yIHR5cGVzIEEsQiBhcmUgY29uc2lkZXJlZCBpbnRlcm9wZXJhYmxlIGlmIGVpdGhlcgotICAvLyBBIGlzIGNvbnZlcnRpYmxlIHRvIEIgb3IgdmljZSB2ZXJzYS4KLSAgLy8gVGhpcyBpbnRlcm9wZXJhYmlsaXR5IGRlZmluaXRpb24gaXMgaW4gc3luYyB3aXRoIHRoZQotICAvLyBzdGFuZGFyZHMgcmVxdWlyZW1lbnRzIG9uIGNvbnN0YW50L211dGFibGUgY29udGFpbmVyCi0gIC8vIGl0ZXJhdG9ycyAoMjMuMSBbbGliLmNvbnRhaW5lci5yZXF1aXJlbWVudHNdKS4KLSAgLy8KLSAgLy8gRm9yIGNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgaXNfY29udmVydGlibGUgCi0gIC8vIGlzX2ludGVyb3BlcmFibGUgZ2l2ZXMgZmFsc2UgcG9zaXRpdmVzLiBTZWUgY29tbWVudHMKLSAgLy8gb24gb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGNvbnNlcXVlbmNlcy4KLSAgLy8KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+Ci0gIHN0cnVjdCBpc19pbnRlcm9wZXJhYmxlCi0jIGlmZGVmIE5ETkJPT1NUX05PX1NUUklDVF9JVEVSQVRPUl9JTlRFUk9QRVJBQklMSVRZCi0gICAgOiBtcGw6OnRydWVfCi0jIGVsc2UKLSAgICA6IG1wbDo6b3JfPAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPCBBLCBCID4KLSAgICAgICAgLCBpc19jb252ZXJ0aWJsZTwgQiwgQSA+ID4KLSMgZW5kaWYKLSAgeyAKLSAgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0lOVEVST1BFUkFCTEVfMjMwMjIwMDNUSFdfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2FkYXB0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9hZGFwdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE5YmQ1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2FkYXB0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzY1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfSVRFUkFUT1JfQURBUFRPUl8yMzAyMjAwM1RIV19IUFAKLSNkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfQURBUFRPUl8yMzAyMjAwM1RIV19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfZmFjYWRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZW5hYmxlX2lmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9JVEVSQVRPUl9SRUZfQ09OU1RORVNTX0tJTExTX1dSSVRBQklMSVRZCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX2RlZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgLy8gVXNlZCBhcyBhIGRlZmF1bHQgdGVtcGxhdGUgYXJndW1lbnQgaW50ZXJuYWxseSwgbWVyZWx5IHRvCi0gIC8vIGluZGljYXRlICJ1c2UgdGhlIGRlZmF1bHQiLCB0aGlzIGNhbiBhbHNvIGJlIHBhc3NlZCBieSB1c2VycwotICAvLyBleHBsaWNpdGx5IGluIG9yZGVyIHRvIHNwZWNpZnkgdGhhdCB0aGUgZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4KLSAgc3RydWN0IHVzZV9kZWZhdWx0OwotICAKLSMgaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgLy8gdGhlIGluY29tcGxldGVuZXNzIG9mIHVzZV9kZWZhdWx0IGNhdXNlcyBtYXNzaXZlIHByb2JsZW1zIGZvcgotICAvLyBpc19jb252ZXJ0aWJsZSAobmF0dXJhbGx5KS4gIFRoaXMgd29ya2Fyb3VuZCBpcyBmb3J0dW5hdGVseSBub3QKLSAgLy8gbmVlZGVkIGZvciB2YzYvdmM3LgotICB0ZW1wbGF0ZTxjbGFzcyBUbz4KLSAgc3RydWN0IGlzX2NvbnZlcnRpYmxlPHVzZV9kZWZhdWx0LFRvPgotICAgIDogbXBsOjpmYWxzZV8ge307Ci0jIGVuZGlmIAotICAKLSAgbmFtZXNwYWNlIGRldGFpbAotICB7Ci0KLSAgICAvLyAKLSAgICAvLyBSZXN1bHQgdHlwZSB1c2VkIGluIGVuYWJsZV9pZl9jb252ZXJ0aWJsZSBtZXRhIGZ1bmN0aW9uLgotICAgIC8vIFRoaXMgY2FuIGJlIGFuIGluY29tcGxldGUgdHlwZSwgYXMgb25seSBwb2ludGVycyB0byAKLSAgICAvLyBlbmFibGVfaWZfY29udmVydGlibGU8IC4uLiA+Ojp0eXBlIGFyZSB1c2VkLgotICAgIC8vIFdlIGNvdWxkIGhhdmUgdXNlZCB2b2lkIGZvciB0aGlzLCBidXQgY29udmVyc2lvbiB0bwotICAgIC8vIHZvaWQqIGlzIGp1c3QgdG8gZWFzeS4KLSAgICAvLwotICAgIHN0cnVjdCBlbmFibGVfdHlwZTsKLSAgfQotCi0KLSAgLy8KLSAgLy8gZW5hYmxlX2lmIGZvciB1c2UgaW4gYWRhcHRlZCBpdGVyYXRvcnMgY29uc3RydWN0b3JzLgotICAvLwotICAvLyBJbiBvcmRlciB0byBwcm92aWRlIGludGVyb3BlcmFiaWxpdHkgYmV0d2VlbiBhZGFwdGVkIGNvbnN0YW50IGFuZAotICAvLyBtdXRhYmxlIGl0ZXJhdG9ycywgYWRhcHRlZCBpdGVyYXRvcnMgd2lsbCB1c3VhbGx5IHByb3ZpZGUgdGVtcGxhdGVkCi0gIC8vIGNvbnZlcnNpb24gY29uc3RydWN0b3JzIG9mIHRoZSBmb2xsb3dpbmcgZm9ybQotICAvLwotICAvLyB0ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yPgotICAvLyBjbGFzcyBhZGFwdGVkX2l0ZXJhdG9yIDoKLSAgLy8gICBwdWJsaWMgaXRlcmF0b3JfYWRhcHRvcjwgYWRhcHRlZF9pdGVyYXRvcjxJdGVyYXRvcj4sIEl0ZXJhdG9yID4KLSAgLy8gewotICAvLyBwdWJsaWM6Ci0gIC8vICAgCi0gIC8vICAgLi4uCi0gIC8vCi0gIC8vICAgdGVtcGxhdGUgPGNsYXNzIE90aGVySXRlcmF0b3I+Ci0gIC8vICAgYWRhcHRlZF9pdGVyYXRvcigKLSAgLy8gICAgICAgT3RoZXJJdGVyYXRvciBjb25zdCYgaXQKLSAgLy8gICAgICwgdHlwZW5hbWUgZW5hYmxlX2lmX2NvbnZlcnRpYmxlPE90aGVySXRlcmF0b3IsIEl0ZXJhdG9yPjo6dHlwZSogPSAwKTsKLSAgLy8KLSAgLy8gICAuLi4KLSAgLy8gfTsKLSAgLy8KLSAgLy8gZW5hYmxlX2lmX2NvbnZlcnRpYmxlIGlzIHVzZWQgdG8gcmVtb3ZlIHRob3NlIG92ZXJsb2FkcyBmcm9tIHRoZSBvdmVybG9hZAotICAvLyBzZXQgdGhhdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLiBGb3IgYWxsIHByYWN0aWNhbCBwdXJwb3NlcyBvbmx5IG92ZXJsb2FkcwotICAvLyBmb3IgY29uc3RhbnQvbXV0YWJsZSBpbnRlcmFjdGlvbiB3aWxsIHJlbWFpbi4gVGhpcyBoYXMgdGhlIGFkdmFudGFnZSB0aGF0Ci0gIC8vIG1ldGEgZnVuY3Rpb25zIGxpa2UgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlIGRvIG5vdCByZXR1cm4gZmFsc2UgcG9zaXRpdmVzLAotICAvLyBhcyB0aGV5IGNhbiBvbmx5IGxvb2sgYXQgdGhlIHNpZ25hdHVyZSBvZiB0aGUgY29udmVyc2lvbiBjb25zdHJ1Y3RvcgotICAvLyBhbmQgbm90IGF0IHRoZSBhY3R1YWwgaW5zdGFudGlhdGlvbi4KLSAgLy8KLSAgLy8gZW5hYmxlX2lmX2ludGVyb3BlcmFibGUgY2FuIGJlIHNhZmVseSB1c2VkIGluIHVzZXIgY29kZS4gSXQgZmFsbHMgYmFjayB0bwotICAvLyBhbHdheXMgZW5hYmxlZCBmb3IgY29tcGlsZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBlbmFibGVfaWYgb3IgaXNfY29udmVydGlibGUuIAotICAvLyBUaGVyZSBpcyBubyBuZWVkIGZvciBjb21waWxlciBzcGVjaWZpYyB3b3JrYXJvdW5kcyBpbiB1c2VyIGNvZGUuIAotICAvLwotICAvLyBUaGUgb3BlcmF0b3JzIGltcGxlbWVudGF0aW9uIHJlbGllcyBvbiBuZG5ib29zdDo6aXNfY29udmVydGlibGUgbm90IHJldHVybmluZwotICAvLyBmYWxzZSBwb3NpdGl2ZXMgZm9yIHVzZXIvbGlicmFyeSBkZWZpbmVkIGl0ZXJhdG9yIHR5cGVzLiBTZWUgY29tbWVudHMKLSAgLy8gb24gb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGNvbnNlcXVlbmNlcy4KLSAgLy8KLSMgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2NvbnZlcnRpYmxlCi0gIHsKLSAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIG1wbDo6b3JfPAotICAgICAgICAgICAgIGlzX3NhbWU8RnJvbSxUbz4KLSAgICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxGcm9tLCBUbz4KLSAgICAgICAgID4KLSAgICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6ZW5hYmxlX3R5cGUKLSAgICAgICwgaW50JgotICAgICA+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0gIAotIyAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0lTX0NPTlZFUlRJQkxFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRSkKLSAgCi0gIHRlbXBsYXRlIDxjbGFzcyBGcm9tLCBjbGFzcyBUbz4KLSAgc3RydWN0IGVuYWJsZV9pZl9jb252ZXJ0aWJsZQotICB7Ci0gICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmVuYWJsZV90eXBlIHR5cGU7Ci0gIH07Ci0gIAotIyAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9NU0NfRlVMTF9WRVIsIE5ETkJPT1NUX1RFU1RFRF9BVCgxMzEwMjI5MikpICYmIE5ETkJPT1NUX01TVkMgPiAxMzAwCi0gIAotICAvLyBGb3Igc29tZSByZWFzb24gdmM3LjEgbmVlZHMgdXMgdG8gImN1dCBvZmYiIGluc3RhbnRpYXRpb24KLSAgLy8gb2YgaXNfY29udmVydGlibGUgaW4gYSBmZXcgY2FzZXMuCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2NvbnZlcnRpYmxlCi0gICAgOiBpdGVyYXRvcnM6OmVuYWJsZV9pZjwKLSAgICAgICAgbXBsOjpvcl88Ci0gICAgICAgICAgICBpc19zYW1lPEZyb20sVG8+Ci0gICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxGcm9tLCBUbz4KLSAgICAgICAgPgotICAgICAgLCBuZG5ib29zdDo6ZGV0YWlsOjplbmFibGVfdHlwZQotICAgID4KLSAge307Ci0gIAotIyAgZWxzZSAKLSAgCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2NvbnZlcnRpYmxlCi0gICAgOiBpdGVyYXRvcnM6OmVuYWJsZV9pZjwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxGcm9tLCBUbz4KLSAgICAgICAgLCBuZG5ib29zdDo6ZGV0YWlsOjplbmFibGVfdHlwZQotICAgICAgPgotICB7fTsKLSAgICAgIAotIyBlbmRpZgotICAKLSAgLy8KLSAgLy8gRGVmYXVsdCB0ZW1wbGF0ZSBhcmd1bWVudCBoYW5kbGluZyBmb3IgaXRlcmF0b3JfYWRhcHRvcgotICAvLwotICBuYW1lc3BhY2UgZGV0YWlsCi0gIHsKLSAgICAvLyBJZiBUIGlzIHVzZV9kZWZhdWx0LCByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnZva2luZwotICAgIC8vIERlZmF1bHROdWxsYXJ5Rm4sIG90aGVyd2lzZSByZXR1cm4gVC4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRGVmYXVsdE51bGxhcnlGbj4KLSAgICBzdHJ1Y3QgaWFfZGZsdF9oZWxwCi0gICAgICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgIGlzX3NhbWU8VCwgdXNlX2RlZmF1bHQ+Ci0gICAgICAgICAgLCBEZWZhdWx0TnVsbGFyeUZuCi0gICAgICAgICAgLCBtcGw6OmlkZW50aXR5PFQ+Ci0gICAgICAgID4KLSAgICB7Ci0gICAgfTsKLQotICAgIC8vIEEgbWV0YWZ1bmN0aW9uIHdoaWNoIGNvbXB1dGVzIGFuIGl0ZXJhdG9yX2FkYXB0b3IncyBiYXNlIGNsYXNzLAotICAgIC8vIGEgc3BlY2lhbGl6YXRpb24gb2YgaXRlcmF0b3JfZmFjYWRlLgotICAgIHRlbXBsYXRlIDwKLSAgICAgICAgY2xhc3MgRGVyaXZlZAotICAgICAgLCBjbGFzcyBCYXNlCi0gICAgICAsIGNsYXNzIFZhbHVlCi0gICAgICAsIGNsYXNzIFRyYXZlcnNhbAotICAgICAgLCBjbGFzcyBSZWZlcmVuY2UKLSAgICAgICwgY2xhc3MgRGlmZmVyZW5jZQotICAgID4KLSAgICBzdHJ1Y3QgaXRlcmF0b3JfYWRhcHRvcl9iYXNlCi0gICAgewotICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX2ZhY2FkZTwKLSAgICAgICAgICAgIERlcml2ZWQKLSAgICAgICAgICAgIAotIyBpZmRlZiBORE5CT09TVF9JVEVSQVRPUl9SRUZfQ09OU1RORVNTX0tJTExTX1dSSVRBQklMSVRZCi0gICAgICAgICAgLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppYV9kZmx0X2hlbHA8Ci0gICAgICAgICAgICAgICAgVmFsdWUKLSAgICAgICAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8UmVmZXJlbmNlLHVzZV9kZWZhdWx0PgotICAgICAgICAgICAgICAgICAgLCBpdGVyYXRvcl92YWx1ZTxCYXNlPgotICAgICAgICAgICAgICAgICAgLCByZW1vdmVfcmVmZXJlbmNlPFJlZmVyZW5jZT4KLSAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0jIGVsc2UKLSAgICAgICAgICAsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmlhX2RmbHRfaGVscDwKLSAgICAgICAgICAgICAgICBWYWx1ZSwgaXRlcmF0b3JfdmFsdWU8QmFzZT4KLSAgICAgICAgICAgID46OnR5cGUKLSMgZW5kaWYKLSAgICAgICAgICAgIAotICAgICAgICAgICwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aWFfZGZsdF9oZWxwPAotICAgICAgICAgICAgICAgIFRyYXZlcnNhbAotICAgICAgICAgICAgICAsIGl0ZXJhdG9yX3RyYXZlcnNhbDxCYXNlPgotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgICAgICAgLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppYV9kZmx0X2hlbHA8Ci0gICAgICAgICAgICAgICAgUmVmZXJlbmNlCi0gICAgICAgICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFZhbHVlLHVzZV9kZWZhdWx0PgotICAgICAgICAgICAgICAgICAgLCBpdGVyYXRvcl9yZWZlcmVuY2U8QmFzZT4KLSAgICAgICAgICAgICAgICAgICwgYWRkX3JlZmVyZW5jZTxWYWx1ZT4KLSAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICAgICAgICAsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmlhX2RmbHRfaGVscDwKLSAgICAgICAgICAgICAgICBEaWZmZXJlbmNlLCBpdGVyYXRvcl9kaWZmZXJlbmNlPEJhc2U+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgID4KLSAgICAgICAgdHlwZTsKLSAgICB9OwotICAKLSAgICAvLyB3b3JrYXJvdW5kIGZvciBhQysrIENSIEpBR2FmMzM1MTIKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHIxLCBjbGFzcyBUcjI+Ci0gICAgaW5saW5lIHZvaWQgaXRlcmF0b3JfYWRhcHRvcl9hc3NlcnRfdHJhdmVyc2FsICgpCi0gICAgewotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8VHIxLCBUcjI+Ojp2YWx1ZSkpOwotICAgIH0KLSAgfQotICAKLSAgLy8KLSAgLy8gSXRlcmF0b3IgQWRhcHRvcgotICAvLwotICAvLyBUaGUgcGFyYW1ldGVyIG9yZGVyaW5nIGNoYW5nZWQgc2xpZ2h0bHkgd2l0aCByZXNwZWN0IHRvIGZvcm1lcgotICAvLyB2ZXJzaW9ucyBvZiBpdGVyYXRvcl9hZGFwdG9yIFRoZSBpZGVhIGlzIHRoYXQgd2hlbiB0aGUgdXNlciBuZWVkcwotICAvLyB0byBmaWRkbGUgd2l0aCB0aGUgcmVmZXJlbmNlIHR5cGUgaXQgaXMgaGlnaGx5IGxpa2VseSB0aGF0IHRoZQotICAvLyBpdGVyYXRvciBjYXRlZ29yeSBoYXMgdG8gYmUgYWRqdXN0ZWQgYXMgd2VsbC4gIEFueSBvZiB0aGUKLSAgLy8gZm9sbG93aW5nIGZvdXIgdGVtcGxhdGUgYXJndW1lbnRzIG1heSBiZSBvbW1pdHRlZCBvciBleHBsaWNpdGx5Ci0gIC8vIHJlcGxhY2VkIGJ5IHVzZV9kZWZhdWx0LgotICAvLwotICAvLyAgIFZhbHVlIC0gaWYgc3VwcGxpZWQsIHRoZSB2YWx1ZV90eXBlIG9mIHRoZSByZXN1bHRpbmcgaXRlcmF0b3IsIHVubGVzcwotICAvLyAgICAgIGNvbnN0LiBJZiBjb25zdCwgYSBjb25mb3JtaW5nIGNvbXBpbGVyIHN0cmlwcyBjb25zdG5lc3MgZm9yIHRoZQotICAvLyAgICAgIHZhbHVlX3R5cGUuIElmIG5vdCBzdXBwbGllZCwgaXRlcmF0b3JfdHJhaXRzPEJhc2U+Ojp2YWx1ZV90eXBlIGlzIHVzZWQKLSAgLy8KLSAgLy8gICBDYXRlZ29yeSAtIHRoZSB0cmF2ZXJzYWwgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBpdGVyYXRvci4gSWYgbm90Ci0gIC8vICAgICAgc3VwcGxpZWQsIGl0ZXJhdG9yX3RyYXZlcnNhbDxCYXNlPjo6dHlwZSBpcyB1c2VkLgotICAvLwotICAvLyAgIFJlZmVyZW5jZSAtIHRoZSByZWZlcmVuY2UgdHlwZSBvZiB0aGUgcmVzdWx0aW5nIGl0ZXJhdG9yLCBhbmQgaW4KLSAgLy8gICAgICBwYXJ0aWN1bGFyLCB0aGUgcmVzdWx0IHR5cGUgb2Ygb3BlcmF0b3IqKCkuIElmIG5vdCBzdXBwbGllZCBidXQKLSAgLy8gICAgICBWYWx1ZSBpcyBzdXBwbGllZCwgVmFsdWUmIGlzIHVzZWQuIE90aGVyd2lzZQotICAvLyAgICAgIGl0ZXJhdG9yX3RyYWl0czxCYXNlPjo6cmVmZXJlbmNlIGlzIHVzZWQuCi0gIC8vCi0gIC8vICAgRGlmZmVyZW5jZSAtIHRoZSBkaWZmZXJlbmNlX3R5cGUgb2YgdGhlIHJlc3VsdGluZyBpdGVyYXRvci4gSWYgbm90Ci0gIC8vICAgICAgc3VwcGxpZWQsIGl0ZXJhdG9yX3RyYWl0czxCYXNlPjo6ZGlmZmVyZW5jZV90eXBlIGlzIHVzZWQuCi0gIC8vCi0gIHRlbXBsYXRlIDwKLSAgICAgIGNsYXNzIERlcml2ZWQKLSAgICAsIGNsYXNzIEJhc2UKLSAgICAsIGNsYXNzIFZhbHVlICAgICAgICA9IHVzZV9kZWZhdWx0Ci0gICAgLCBjbGFzcyBUcmF2ZXJzYWwgICAgPSB1c2VfZGVmYXVsdAotICAgICwgY2xhc3MgUmVmZXJlbmNlICAgID0gdXNlX2RlZmF1bHQKLSAgICAsIGNsYXNzIERpZmZlcmVuY2UgICA9IHVzZV9kZWZhdWx0Ci0gID4KLSAgY2xhc3MgaXRlcmF0b3JfYWRhcHRvcgotICAgIDogcHVibGljIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX2FkYXB0b3JfYmFzZTwKLSAgICAgICAgRGVyaXZlZCwgQmFzZSwgVmFsdWUsIFRyYXZlcnNhbCwgUmVmZXJlbmNlLCBEaWZmZXJlbmNlCi0gICAgICA+Ojp0eXBlCi0gIHsKLSAgICAgIGZyaWVuZCBjbGFzcyBpdGVyYXRvcl9jb3JlX2FjY2VzczsKLQotICAgcHJvdGVjdGVkOgotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl9hZGFwdG9yX2Jhc2U8Ci0gICAgICAgICAgRGVyaXZlZCwgQmFzZSwgVmFsdWUsIFRyYXZlcnNhbCwgUmVmZXJlbmNlLCBEaWZmZXJlbmNlCi0gICAgICA+Ojp0eXBlIHN1cGVyX3Q7Ci0gICBwdWJsaWM6Ci0gICAgICBpdGVyYXRvcl9hZGFwdG9yKCkge30KLQotICAgICAgZXhwbGljaXQgaXRlcmF0b3JfYWRhcHRvcihCYXNlIGNvbnN0ICZpdGVyKQotICAgICAgICAgIDogbV9pdGVyYXRvcihpdGVyKQotICAgICAgewotICAgICAgfQotCi0gICAgICB0eXBlZGVmIEJhc2UgYmFzZV90eXBlOwotCi0gICAgICBCYXNlIGNvbnN0JiBiYXNlKCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQotCi0gICBwcm90ZWN0ZWQ6Ci0gICAgICAvLyBmb3IgY29udmVuaWVuY2UgaW4gZGVyaXZlZCBjbGFzc2VzCi0gICAgICB0eXBlZGVmIGl0ZXJhdG9yX2FkYXB0b3I8RGVyaXZlZCxCYXNlLFZhbHVlLFRyYXZlcnNhbCxSZWZlcmVuY2UsRGlmZmVyZW5jZT4gaXRlcmF0b3JfYWRhcHRvcl87Ci0gICAgICAKLSAgICAgIC8vCi0gICAgICAvLyBsdmFsdWUgYWNjZXNzIHRvIHRoZSBCYXNlIG9iamVjdCBmb3IgRGVyaXZlZAotICAgICAgLy8KLSAgICAgIEJhc2UgY29uc3QmIGJhc2VfcmVmZXJlbmNlKCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQotCi0gICAgICBCYXNlJiBiYXNlX3JlZmVyZW5jZSgpCi0gICAgICAgIHsgcmV0dXJuIG1faXRlcmF0b3I7IH0KLQotICAgcHJpdmF0ZToKLSAgICAgIC8vCi0gICAgICAvLyBDb3JlIGl0ZXJhdG9yIGludGVyZmFjZSBmb3IgaXRlcmF0b3JfZmFjYWRlLiAgVGhpcyBpcyBwcml2YXRlCi0gICAgICAvLyB0byBwcmV2ZW50IHRlbXB0YXRpb24gZm9yIERlcml2ZWQgY2xhc3NlcyB0byB1c2UgaXQsIHdoaWNoCi0gICAgICAvLyB3aWxsIG9mdGVuIHJlc3VsdCBpbiBhbiBlcnJvci4gIERlcml2ZWQgY2xhc3NlcyBzaG91bGQgdXNlCi0gICAgICAvLyBiYXNlX3JlZmVyZW5jZSgpLCBhYm92ZSwgdG8gZ2V0IGRpcmVjdCBhY2Nlc3MgdG8gbV9pdGVyYXRvci4KLSAgICAgIC8vIAotICAgICAgdHlwZW5hbWUgc3VwZXJfdDo6cmVmZXJlbmNlIGRlcmVmZXJlbmNlKCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gKm1faXRlcmF0b3I7IH0KLQotICAgICAgdGVtcGxhdGUgPAotICAgICAgY2xhc3MgT3RoZXJEZXJpdmVkLCBjbGFzcyBPdGhlckl0ZXJhdG9yLCBjbGFzcyBWLCBjbGFzcyBDLCBjbGFzcyBSLCBjbGFzcyBECi0gICAgICA+ICAgCi0gICAgICBib29sIGVxdWFsKGl0ZXJhdG9yX2FkYXB0b3I8T3RoZXJEZXJpdmVkLCBPdGhlckl0ZXJhdG9yLCBWLCBDLCBSLCBEPiBjb25zdCYgeCkgY29uc3QKLSAgICAgIHsKLSAgICAgICAgLy8gTWF5YmUgcmVhZGQgd2l0aCBzYW1lX2Rpc3RhbmNlCi0gICAgICAgIC8vICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAvLyAgICAgICAgICAgICAgIChkZXRhaWw6OnNhbWVfY2F0ZWdvcnlfYW5kX2RpZmZlcmVuY2U8RGVyaXZlZCxPdGhlckRlcml2ZWQ+Ojp2YWx1ZSkKLSAgICAgICAgLy8gICAgICAgICAgICAgICApOwotICAgICAgICAgIHJldHVybiBtX2l0ZXJhdG9yID09IHguYmFzZSgpOwotICAgICAgfQotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX2NhdGVnb3J5X3RvX3RyYXZlcnNhbDwKLSAgICAgICAgICB0eXBlbmFtZSBzdXBlcl90OjppdGVyYXRvcl9jYXRlZ29yeQotICAgICAgPjo6dHlwZSBteV90cmF2ZXJzYWw7Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0FEQVBUT1JfQVNTRVJUX1RSQVZFUlNBTChjYXQpIFwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX2FkYXB0b3JfYXNzZXJ0X3RyYXZlcnNhbDxteV90cmF2ZXJzYWwsIGNhdD4oKTsKLQotICAgICAgdm9pZCBhZHZhbmNlKHR5cGVuYW1lIHN1cGVyX3Q6OmRpZmZlcmVuY2VfdHlwZSBuKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0FEQVBUT1JfQVNTRVJUX1RSQVZFUlNBTChyYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWcpCi0gICAgICAgICAgbV9pdGVyYXRvciArPSBuOwotICAgICAgfQotICAKLSAgICAgIHZvaWQgaW5jcmVtZW50KCkgeyArK21faXRlcmF0b3I7IH0KLQotICAgICAgdm9pZCBkZWNyZW1lbnQoKSAKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9JVEVSQVRPUl9BREFQVE9SX0FTU0VSVF9UUkFWRVJTQUwoYmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnKQotICAgICAgICAgICAtLW1faXRlcmF0b3I7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlIDwKLSAgICAgICAgICBjbGFzcyBPdGhlckRlcml2ZWQsIGNsYXNzIE90aGVySXRlcmF0b3IsIGNsYXNzIFYsIGNsYXNzIEMsIGNsYXNzIFIsIGNsYXNzIEQKLSAgICAgID4gICAKLSAgICAgIHR5cGVuYW1lIHN1cGVyX3Q6OmRpZmZlcmVuY2VfdHlwZSBkaXN0YW5jZV90bygKLSAgICAgICAgICBpdGVyYXRvcl9hZGFwdG9yPE90aGVyRGVyaXZlZCwgT3RoZXJJdGVyYXRvciwgViwgQywgUiwgRD4gY29uc3QmIHkpIGNvbnN0Ci0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfSVRFUkFUT1JfQURBUFRPUl9BU1NFUlRfVFJBVkVSU0FMKHJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZykKLSAgICAgICAgICAvLyBNYXliZSByZWFkZCB3aXRoIHNhbWVfZGlzdGFuY2UKLSAgICAgICAgICAvLyAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICAgICAvLyAgICAgICAgICAgICAgIChkZXRhaWw6OnNhbWVfY2F0ZWdvcnlfYW5kX2RpZmZlcmVuY2U8RGVyaXZlZCxPdGhlckRlcml2ZWQ+Ojp2YWx1ZSkKLSAgICAgICAgICAvLyAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgcmV0dXJuIHkuYmFzZSgpIC0gbV9pdGVyYXRvcjsKLSAgICAgIH0KLQotIyB1bmRlZiBORE5CT09TVF9JVEVSQVRPUl9BREFQVE9SX0FTU0VSVF9UUkFWRVJTQUwKLSAgICAgIAotICAgcHJpdmF0ZTogLy8gZGF0YSBtZW1iZXJzCi0gICAgICBCYXNlIG1faXRlcmF0b3I7Ci0gIH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0lURVJBVE9SX0FEQVBUT1JfMjMwMjIwMDNUSFdfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jYXRlZ29yaWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYwMmU1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9JVEVSQVRPUl9DQVRFR09SSUVTX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUklFU19IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX2RlZi5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vCi0vLyBUcmF2ZXJzYWwgQ2F0ZWdvcmllcwotLy8KLQotc3RydWN0IG5vX3RyYXZlcnNhbF90YWcge307Ci0KLXN0cnVjdCBpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWcgCi0gIDogbm9fdHJhdmVyc2FsX3RhZwotewotLy8gICAgIGluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZygpIHt9Ci0vLyAgICAgaW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnKHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyBjb25zdCYpIHt9OwotfTsKLSAgCi1zdHJ1Y3Qgc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZwotICA6IGluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZwotewotLy8gICAgIHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcoKSB7fQotLy8gICAgIHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcoc3RkOjppbnB1dF9pdGVyYXRvcl90YWcgY29uc3QmKSB7fTsKLX07Ci0gIAotc3RydWN0IGZvcndhcmRfdHJhdmVyc2FsX3RhZwotICA6IHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcKLXsKLS8vICAgICBmb3J3YXJkX3RyYXZlcnNhbF90YWcoKSB7fQotLy8gICAgIGZvcndhcmRfdHJhdmVyc2FsX3RhZyhzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGNvbnN0Jikge307Ci19OwotICAKLXN0cnVjdCBiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcKLSAgOiBmb3J3YXJkX3RyYXZlcnNhbF90YWcKLXsKLS8vICAgICBiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcoKSB7fTsKLS8vICAgICBiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcoc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyBjb25zdCYpIHt9OwotfTsKLSAgCi1zdHJ1Y3QgcmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnCi0gIDogYmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnCi17Ci0vLyAgICAgcmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnKCkge307Ci0vLyAgICAgcmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnKHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgY29uc3QmKSB7fTsKLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsgIAotICAvLwotICAvLyBDb252ZXJ0IGEgInN0cmljdGx5IG9sZC1zdHlsZSIgaXRlcmF0b3IgY2F0ZWdvcnkgdG8gYSB0cmF2ZXJzYWwKLSAgLy8gdGFnLiAgVGhpcyBpcyBicm9rZW4gb3V0IGludG8gYSBzZXBhcmF0ZSBtZXRhZnVuY3Rpb24gdG8gcmVkdWNlCi0gIC8vIHRoZSBjb3N0IG9mIGluc3RhbnRpYXRpbmcgaXRlcmF0b3JfY2F0ZWdvcnlfdG9fdHJhdmVyc2FsLCBiZWxvdywKLSAgLy8gZm9yIG5ldy1zdHlsZSB0eXBlcy4KLSAgLy8KLSAgdGVtcGxhdGUgPGNsYXNzIENhdD4KLSAgc3RydWN0IG9sZF9jYXRlZ29yeV90b190cmF2ZXJzYWwKLSAgICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXQsc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZz4KLSAgICAgICAgLCBtcGw6OmlkZW50aXR5PHJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdCxzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnPgotICAgICAgICAgICAgLCBtcGw6OmlkZW50aXR5PGJpZGlyZWN0aW9uYWxfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0LHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWc+Ci0gICAgICAgICAgICAgICAgLCBtcGw6OmlkZW50aXR5PGZvcndhcmRfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICAgICAsIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXQsc3RkOjppbnB1dF9pdGVyYXRvcl90YWc+Ci0gICAgICAgICAgICAgICAgICAgICwgbXBsOjppZGVudGl0eTxzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICAgICAsIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0LHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICwgbXBsOjppZGVudGl0eTxpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgICAgICAgICAgICAgICAsIHZvaWQKLSAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgID4KLSAgICAgICAgICA+Ci0gICAgICA+Ci0gIHt9OwotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICB0ZW1wbGF0ZSA8PgotICBzdHJ1Y3Qgb2xkX2NhdGVnb3J5X3RvX3RyYXZlcnNhbDxpbnQ+Ci0gIHsKLSAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gIH07Ci0jIGVuZGlmCi0KLSAgdGVtcGxhdGUgPGNsYXNzIFRyYXZlcnNhbD4KLSAgc3RydWN0IHB1cmVfdHJhdmVyc2FsX3RhZwotICAgIDogbXBsOjpldmFsX2lmPAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxyYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICwgbXBsOjppZGVudGl0eTxyYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxUcmF2ZXJzYWwsYmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgLCBtcGw6OmlkZW50aXR5PGJpZGlyZWN0aW9uYWxfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8VHJhdmVyc2FsLGZvcndhcmRfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8Zm9yd2FyZF90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgICAgICAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8aW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICAgICAgICAgLCB2b2lkCi0gICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICA+Ci0gICAgICAgICAgPgotICAgICAgPgotICB7Ci0gIH07Ci0gIAotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgdGVtcGxhdGUgPD4KLSAgc3RydWN0IHB1cmVfdHJhdmVyc2FsX3RhZzxpbnQ+Ci0gIHsKLSAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gIH07Ci0jIGVuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0KLS8vCi0vLyBDb252ZXJ0IGFuIGl0ZXJhdG9yIGNhdGVnb3J5IGludG8gYSB0cmF2ZXJzYWwgdGFnCi0vLwotdGVtcGxhdGUgPGNsYXNzIENhdD4KLXN0cnVjdCBpdGVyYXRvcl9jYXRlZ29yeV90b190cmF2ZXJzYWwKLSAgOiBtcGw6OmV2YWxfaWY8IC8vIGlmIGFscmVhZHkgY29udmVydGlibGUgdG8gYSB0cmF2ZXJzYWwgdGFnLCB3ZSdyZSBkb25lLgotICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXQsaW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnPgotICAgICAgLCBtcGw6OmlkZW50aXR5PENhdD4KLSAgICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6b2xkX2NhdGVnb3J5X3RvX3RyYXZlcnNhbDxDYXQ+Ci0gICAgPgote307Ci0KLS8vIFRyYWl0IHRvIGdldCBhbiBpdGVyYXRvcidzIHRyYXZlcnNhbCBjYXRlZ29yeQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yID0gbXBsOjpfMT4KLXN0cnVjdCBpdGVyYXRvcl90cmF2ZXJzYWwKLSAgOiBpdGVyYXRvcl9jYXRlZ29yeV90b190cmF2ZXJzYWw8Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5Ci0gICAgPgote307Ci0KLSMgaWZkZWYgTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUCi0vLyBIYWNrIGJlY2F1c2UgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCBkb2Vzbid0IHNlZW0gdG8gd29yawotLy8gb3V0IHdlbGwuICBJbnN0YW50aWF0aW5nIHRoZSBuZXN0ZWQgYXBwbHkgdGVtcGxhdGUgYWxzbwotLy8gcmVxdWlyZXMgaW5zdGFudGlhdGluZyBpdGVyYXRvcl90cmFpdHMgb24gdGhlCi0vLyBwbGFjZWhvbGRlci4gSW5zdGVhZCB3ZSBqdXN0IHNwZWNpYWxpemUgaXQgYXMgYSBtZXRhZnVuY3Rpb24KLS8vIGNsYXNzLgotdGVtcGxhdGUgPD4KLXN0cnVjdCBpdGVyYXRvcl90cmF2ZXJzYWw8bXBsOjpfMT4KLXsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgYXBwbHkgOiBpdGVyYXRvcl90cmF2ZXJzYWw8VD4KLSAgICB7fTsKLX07Ci10ZW1wbGF0ZSA8Pgotc3RydWN0IGl0ZXJhdG9yX3RyYXZlcnNhbDxtcGw6Ol8+Ci0gIDogaXRlcmF0b3JfdHJhdmVyc2FsPG1wbDo6XzE+Ci17fTsKLSMgZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUklFU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfY29uY2VwdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jb25jZXB0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZDQ1ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jb25jZXB0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBKZXJlbXkgU2llayAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0NPTkNFUFRTX0hQUAotI2RlZmluZSBORE5CT09TVF9JVEVSQVRPUl9DT05DRVBUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwPgotCi0vLyBVc2UgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzIHRvIHdvcmsgYXJvdW5kIHNvbWUgTVNWQy9EaW5rdW13YXJlIHByb2JsZW1zLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLS8vIFVzZSBuZG5ib29zdC9saW1pdHMgdG8gd29yayBhcm91bmQgbWlzc2luZyBsaW1pdHMgaGVhZGVycyBvbiBzb21lIGNvbXBpbGVycwotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2NvbmNlcHRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0X2NvbmNlcHRzCi17Ci0gIC8vIFVzZWQgYSBkaWZmZXJlbnQgbmFtZXNwYWNlIGhlcmUgKGluc3RlYWQgb2YgImJvb3N0Iikgc28gdGhhdCB0aGUKLSAgLy8gY29uY2VwdCBkZXNjcmlwdGlvbnMgZG8gbm90IHRha2UgZm9yIGdyYW50ZWQgdGhlIG5hbWVzIGluCi0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdC4KLQotICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAvLyBJdGVyYXRvciBBY2Nlc3MgQ29uY2VwdHMKLQotICBORE5CT09TVF9jb25jZXB0KFJlYWRhYmxlSXRlcmF0b3IsKEl0ZXJhdG9yKSkKLSAgICA6IG5kbmJvb3N0OjpBc3NpZ25hYmxlPEl0ZXJhdG9yPgotICAgICwgbmRuYm9vc3Q6OkNvcHlDb25zdHJ1Y3RpYmxlPEl0ZXJhdG9yPgotCi0gIHsKLSAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShSZWFkYWJsZUl0ZXJhdG9yKQotICAgICAgewotCi0gICAgICAgICAgdmFsdWVfdHlwZSB2ID0gKmk7Ci0gICAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyh2KTsKLSAgICAgIH0KLSAgcHJpdmF0ZToKLSAgICAgIEl0ZXJhdG9yIGk7Ci0gIH07Ci0gIAotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgVmFsdWVUeXBlID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gID4KLSAgc3RydWN0IFdyaXRhYmxlSXRlcmF0b3IKLSAgICA6IG5kbmJvb3N0OjpDb3B5Q29uc3RydWN0aWJsZTxJdGVyYXRvcj4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShXcml0YWJsZUl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgICppID0gdjsKLSAgICAgIH0KLSAgcHJpdmF0ZToKLSAgICAgIFZhbHVlVHlwZSB2OwotICAgICAgSXRlcmF0b3IgaTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgVmFsdWVUeXBlID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gID4KLSAgc3RydWN0IFdyaXRhYmxlSXRlcmF0b3JDb25jZXB0IDogV3JpdGFibGVJdGVyYXRvcjxJdGVyYXRvcixWYWx1ZVR5cGU+IHt9OwotICAKLSAgTkROQk9PU1RfY29uY2VwdChTd2FwcGFibGVJdGVyYXRvciwoSXRlcmF0b3IpKQotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFN3YXBwYWJsZUl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgIHN0ZDo6aXRlcl9zd2FwKGkxLCBpMik7Ci0gICAgICB9Ci0gIHByaXZhdGU6Ci0gICAgICBJdGVyYXRvciBpMTsKLSAgICAgIEl0ZXJhdG9yIGkyOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTHZhbHVlSXRlcmF0b3IsKEl0ZXJhdG9yKSkKLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICAKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTHZhbHVlSXRlcmF0b3IpCi0gICAgICB7Ci0gICAgICAgIHZhbHVlX3R5cGUmIHIgPSBjb25zdF9jYXN0PHZhbHVlX3R5cGUmPigqaSk7Ci0gICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0gIHByaXZhdGU6Ci0gICAgICBJdGVyYXRvciBpOwotICB9OwotCi0gIAotICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAvLyBJdGVyYXRvciBUcmF2ZXJzYWwgQ29uY2VwdHMKLQotICBORE5CT09TVF9jb25jZXB0KEluY3JlbWVudGFibGVJdGVyYXRvciwoSXRlcmF0b3IpKQotICAgIDogbmRuYm9vc3Q6OkFzc2lnbmFibGU8SXRlcmF0b3I+Ci0gICAgLCBuZG5ib29zdDo6Q29weUNvbnN0cnVjdGlibGU8SXRlcmF0b3I+Ci0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Oml0ZXJhdG9yX3RyYXZlcnNhbDxJdGVyYXRvcj46OnR5cGUgdHJhdmVyc2FsX2NhdGVnb3J5OwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgIG5kbmJvb3N0OjpDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgIHRyYXZlcnNhbF9jYXRlZ29yeQotICAgICAgICAgICwgbmRuYm9vc3Q6OmluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZwotICAgICAgICA+KSk7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoSW5jcmVtZW50YWJsZUl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgICsraTsKLSAgICAgICAgICAodm9pZClpKys7Ci0gICAgICB9Ci0gIHByaXZhdGU6Ci0gICAgICBJdGVyYXRvciBpOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoU2luZ2xlUGFzc0l0ZXJhdG9yLChJdGVyYXRvcikpCi0gICAgOiBJbmNyZW1lbnRhYmxlSXRlcmF0b3I8SXRlcmF0b3I+Ci0gICAgLCBuZG5ib29zdDo6RXF1YWxpdHlDb21wYXJhYmxlPEl0ZXJhdG9yPgotCi0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICBuZG5ib29zdDo6Q29udmVydGlibGU8Ci0gICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBTaW5nbGVQYXNzSXRlcmF0b3I6OnRyYXZlcnNhbF9jYXRlZ29yeQotICAgICAgICAgICAsIG5kbmJvb3N0OjpzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgPiApKTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEZvcndhcmRUcmF2ZXJzYWwsKEl0ZXJhdG9yKSkKLSAgICA6IFNpbmdsZVBhc3NJdGVyYXRvcjxJdGVyYXRvcj4KLSAgICAsIG5kbmJvb3N0OjpEZWZhdWx0Q29uc3RydWN0aWJsZTxJdGVyYXRvcj4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgICAgCi0gICAgICBORE5CT09TVF9NUExfQVNTRVJUKChuZG5ib29zdDo6aXNfaW50ZWdyYWw8ZGlmZmVyZW5jZV90eXBlPikpOwotICAgICAgTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTihzdGQ6Om51bWVyaWNfbGltaXRzPGRpZmZlcmVuY2VfdHlwZT46OmlzX3NpZ25lZCwgPT0sIHRydWUpOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgbmRuYm9vc3Q6OkNvbnZlcnRpYmxlPAotICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgRm9yd2FyZFRyYXZlcnNhbDo6dHJhdmVyc2FsX2NhdGVnb3J5Ci0gICAgICAgICAgICwgbmRuYm9vc3Q6OmZvcndhcmRfdHJhdmVyc2FsX3RhZwotICAgICAgICAgID4gKSk7Ci0gIH07Ci0gIAotICBORE5CT09TVF9jb25jZXB0KEJpZGlyZWN0aW9uYWxUcmF2ZXJzYWwsKEl0ZXJhdG9yKSkKLSAgICA6IEZvcndhcmRUcmF2ZXJzYWw8SXRlcmF0b3I+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICBuZG5ib29zdDo6Q29udmVydGlibGU8Ci0gICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBCaWRpcmVjdGlvbmFsVHJhdmVyc2FsOjp0cmF2ZXJzYWxfY2F0ZWdvcnkKLSAgICAgICAgICAgLCBuZG5ib29zdDo6YmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgPiApKTsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShCaWRpcmVjdGlvbmFsVHJhdmVyc2FsKQotICAgICAgewotICAgICAgICAgIC0taTsKLSAgICAgICAgICAodm9pZClpLS07Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgSXRlcmF0b3IgaTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KFJhbmRvbUFjY2Vzc1RyYXZlcnNhbCwoSXRlcmF0b3IpKQotICAgIDogQmlkaXJlY3Rpb25hbFRyYXZlcnNhbDxJdGVyYXRvcj4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgIG5kbmJvb3N0OjpDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbDo6dHJhdmVyc2FsX2NhdGVnb3J5Ci0gICAgICAgICAgICwgbmRuYm9vc3Q6OnJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZwotICAgICAgICAgID4gKSk7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoUmFuZG9tQWNjZXNzVHJhdmVyc2FsKQotICAgICAgewotICAgICAgICAgIGkgKz0gbjsKLSAgICAgICAgICBpID0gaSArIG47Ci0gICAgICAgICAgaSA9IG4gKyBpOwotICAgICAgICAgIGkgLT0gbjsKLSAgICAgICAgICBpID0gaSAtIG47Ci0gICAgICAgICAgbiA9IGkgLSBqOwotICAgICAgfQotICAgICAgCi0gICBwcml2YXRlOgotICAgICAgdHlwZW5hbWUgQmlkaXJlY3Rpb25hbFRyYXZlcnNhbDxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBuOwotICAgICAgSXRlcmF0b3IgaSwgajsKLSAgfTsKLQotICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAvLyBJdGVyYXRvciBJbnRlcm9wZXJhYmlsaXR5IAotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcjEsIHR5cGVuYW1lIEl0ZXJhdG9yMj4KLSAgICB2b2lkIGludGVyb3Bfc2luZ2xlX3Bhc3NfY29uc3RyYWludHMoSXRlcmF0b3IxIGNvbnN0JiBpMSwgSXRlcmF0b3IyIGNvbnN0JiBpMikKLSAgICB7Ci0gICAgICAgIGJvb2wgYjsKLSAgICAgICAgYiA9IGkxID09IGkyOwotICAgICAgICBiID0gaTEgIT0gaTI7Ci0KLSAgICAgICAgYiA9IGkyID09IGkxOwotICAgICAgICBiID0gaTIgIT0gaTE7Ci0gICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yMSwgdHlwZW5hbWUgSXRlcmF0b3IyPgotICAgIHZvaWQgaW50ZXJvcF9yYW5kX2FjY2Vzc19jb25zdHJhaW50cygKLSAgICAgICAgSXRlcmF0b3IxIGNvbnN0JiBpMSwgSXRlcmF0b3IyIGNvbnN0JiBpMiwKLSAgICAgICAgbmRuYm9vc3Q6OnJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZywgbmRuYm9vc3Q6OnJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZykKLSAgICB7Ci0gICAgICAgIGJvb2wgYjsKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yMj46OmRpZmZlcmVuY2VfdHlwZSBuOwotICAgICAgICBiID0gaTEgPCAgaTI7Ci0gICAgICAgIGIgPSBpMSA8PSBpMjsKLSAgICAgICAgYiA9IGkxID4gIGkyOwotICAgICAgICBiID0gaTEgPj0gaTI7Ci0gICAgICAgIG4gPSBpMSAtICBpMjsKLQotICAgICAgICBiID0gaTIgPCAgaTE7Ci0gICAgICAgIGIgPSBpMiA8PSBpMTsKLSAgICAgICAgYiA9IGkyID4gIGkxOwotICAgICAgICBiID0gaTIgPj0gaTE7Ci0gICAgICAgIG4gPSBpMiAtICBpMTsKLSAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhiKTsKLSAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IxLCB0eXBlbmFtZSBJdGVyYXRvcjI+Ci0gICAgdm9pZCBpbnRlcm9wX3JhbmRfYWNjZXNzX2NvbnN0cmFpbnRzKAotICAgICAgICBJdGVyYXRvcjEgY29uc3QmLCBJdGVyYXRvcjIgY29uc3QmLAotICAgICAgICBuZG5ib29zdDo6c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZywgbmRuYm9vc3Q6OnNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcpCi0gICAgeyB9Ci0KLSAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgTkROQk9PU1RfY29uY2VwdChJbnRlcm9wZXJhYmxlSXRlcmF0b3IsKEl0ZXJhdG9yKShDb25zdEl0ZXJhdG9yKSkKLSAgewotICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cHVyZV90cmF2ZXJzYWxfdGFnPAotICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjppdGVyYXRvcl90cmF2ZXJzYWw8Ci0gICAgICAgICAgICAgIEl0ZXJhdG9yCi0gICAgICAgICAgPjo6dHlwZQotICAgICAgPjo6dHlwZSB0cmF2ZXJzYWxfY2F0ZWdvcnk7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cHVyZV90cmF2ZXJzYWxfdGFnPAotICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjppdGVyYXRvcl90cmF2ZXJzYWw8Ci0gICAgICAgICAgICAgIENvbnN0SXRlcmF0b3IKLSAgICAgICAgICA+Ojp0eXBlCi0gICAgICA+Ojp0eXBlIGNvbnN0X3RyYXZlcnNhbF9jYXRlZ29yeTsKLSAgICAgIAotICBwdWJsaWM6Ci0gICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoU2luZ2xlUGFzc0l0ZXJhdG9yPEl0ZXJhdG9yPikpOwotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKFNpbmdsZVBhc3NJdGVyYXRvcjxDb25zdEl0ZXJhdG9yPikpOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEludGVyb3BlcmFibGVJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgICBkZXRhaWw6OmludGVyb3Bfc2luZ2xlX3Bhc3NfY29uc3RyYWludHMoaSwgY2kpOwotICAgICAgICAgIGRldGFpbDo6aW50ZXJvcF9yYW5kX2FjY2Vzc19jb25zdHJhaW50cyhpLCBjaSwgdHJhdmVyc2FsX2NhdGVnb3J5KCksIGNvbnN0X3RyYXZlcnNhbF9jYXRlZ29yeSgpKTsKLQotICAgICAgICAgIGNpID0gaTsKLSAgICAgIH0KLSAgICAgIAotICAgcHJpdmF0ZToKLSAgICAgIEl0ZXJhdG9yICAgICAgaTsKLSAgICAgIENvbnN0SXRlcmF0b3IgY2k7Ci0gIH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0X2NvbmNlcHRzCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9jb25jZXB0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0lURVJBVE9SX0NPTkNFUFRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9mYWNhZGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9mYWNhZGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2E2NDY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfZmFjYWRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3NCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuCi0vLyAoQykgQ29weXJpZ2h0IEplcmVteSBTaWVrICAgIDIwMDIuCi0vLyAoQykgQ29weXJpZ2h0IFRob21hcyBXaXR0ICAgIDIwMDIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV8yMzAyMjAwM1RIV19IUFAKLSNkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFXzIzMDIyMDAzVEhXX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2ludGVyb3BlcmFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZmFjYWRlX2l0ZXJhdG9yX2NhdGVnb3J5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZW5hYmxlX2lmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbHdheXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcD4gLy8gdGhpcyBnb2VzIGxhc3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIC8vIFRoaXMgZm9yd2FyZCBkZWNsYXJhdGlvbiBpcyByZXF1aXJlZCBmb3IgdGhlIGZyaWVuZCBkZWNsYXJhdGlvbgotICAvLyBpbiBpdGVyYXRvcl9jb3JlX2FjY2VzcwotICB0ZW1wbGF0ZSA8Y2xhc3MgSSwgY2xhc3MgViwgY2xhc3MgVEMsIGNsYXNzIFIsIGNsYXNzIEQ+IGNsYXNzIGl0ZXJhdG9yX2ZhY2FkZTsKLQotICBuYW1lc3BhY2UgZGV0YWlsCi0gIHsKLSAgICAvLyBBIGJpbmFyeSBtZXRhZnVuY3Rpb24gY2xhc3MgdGhhdCBhbHdheXMgcmV0dXJucyBib29sLiAgVkM2Ci0gICAgLy8gSUNFcyBvbiBtcGw6OmFsd2F5czxib29sPiwgcHJvYmFibHkgYmVjYXVzZSBvZiB0aGUgZGVmYXVsdAotICAgIC8vIHBhcmFtZXRlcnMuCi0gICAgc3RydWN0IGFsd2F5c19ib29sMgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGJvb2wgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgLy8KLSAgICAvLyBlbmFibGUgaWYgZm9yIHVzZSBpbiBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbi4KLSAgICAvLwotICAgIHRlbXBsYXRlIDwKLSAgICAgICAgY2xhc3MgRmFjYWRlMQotICAgICAgLCBjbGFzcyBGYWNhZGUyCi0gICAgICAsIGNsYXNzIFJldHVybgotICAgID4KLSAgICBzdHJ1Y3QgZW5hYmxlX2lmX2ludGVyb3BlcmFibGUKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgbXBsOjpvcl88Ci0gICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8RmFjYWRlMSwgRmFjYWRlMj4KLSAgICAgICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxGYWNhZGUyLCBGYWNhZGUxPgotICAgICAgICAgICAgPgotICAgICAgICAgICwgUmV0dXJuCi0gICAgICAgICAgLCBpbnRbM10KLSAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07ICAgICAgICAKLSNlbHNlCi0gICAgICA6IDo6bmRuYm9vc3Q6Oml0ZXJhdG9yczo6ZW5hYmxlX2lmPAotICAgICAgICAgICBtcGw6Om9yXzwKLSAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPEZhY2FkZTEsIEZhY2FkZTI+Ci0gICAgICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxGYWNhZGUyLCBGYWNhZGUxPgotICAgICAgICAgICA+Ci0gICAgICAgICAsIFJldHVybgotICAgICAgICA+Ci0gICAge307Ci0jZW5kaWYgCi0KLSAgICAvLwotICAgIC8vIEdlbmVyYXRlcyBhc3NvY2lhdGVkIHR5cGVzIGZvciBhbiBpdGVyYXRvcl9mYWNhZGUgd2l0aCB0aGUKLSAgICAvLyBnaXZlbiBwYXJhbWV0ZXJzLgotICAgIC8vCi0gICAgdGVtcGxhdGUgPAotICAgICAgICBjbGFzcyBWYWx1ZVBhcmFtCi0gICAgICAsIGNsYXNzIENhdGVnb3J5T3JUcmF2ZXJzYWwKLSAgICAgICwgY2xhc3MgUmVmZXJlbmNlIAotICAgICAgLCBjbGFzcyBEaWZmZXJlbmNlCi0gICAgPgotICAgIHN0cnVjdCBpdGVyYXRvcl9mYWNhZGVfdHlwZXMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZmFjYWRlX2l0ZXJhdG9yX2NhdGVnb3J5PAotICAgICAgICAgICAgQ2F0ZWdvcnlPclRyYXZlcnNhbCwgVmFsdWVQYXJhbSwgUmVmZXJlbmNlCi0gICAgICAgID46OnR5cGUgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jb25zdDxWYWx1ZVBhcmFtPjo6dHlwZSB2YWx1ZV90eXBlOwotICAgICAgICAKLSAgICAgICAgLy8gTm90IHRoZSByZWFsIGFzc29jaWF0ZWQgcG9pbnRlciB0eXBlCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3Jfd3JpdGFiaWxpdHlfZGlzYWJsZWQ8VmFsdWVQYXJhbSxSZWZlcmVuY2U+Ci0gICAgICAgICAgLCBhZGRfcG9pbnRlcjxjb25zdCB2YWx1ZV90eXBlPgotICAgICAgICAgICwgYWRkX3BvaW50ZXI8dmFsdWVfdHlwZT4KLSAgICAgICAgPjo6dHlwZSBwb2ludGVyOwotICAgICAgCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAmJiAoTkROQk9PU1RfV09SS0FST1VORChfU1RMUE9SVF9WRVJTSU9OLCBORE5CT09TVF9URVNURURfQVQoMHg0NTIpKSAgICAgICAgICAgICAgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCBORE5CT09TVF9URVNURURfQVQoMzEwKSkpICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9SV1NURF9WRVIsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDIwMTAxKSkgICAgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA8PSAzMTApCi0KLSAgICAgICAgLy8gVG8gaW50ZXJvcGVyYXRlIHdpdGggc29tZSBicm9rZW4gbGlicmFyeS9jb21waWxlcgotICAgICAgICAvLyBjb21iaW5hdGlvbnMsIHVzZXItZGVmaW5lZCBpdGVyYXRvcnMgbXVzdCBiZSBkZXJpdmVkIGZyb20KLSAgICAgICAgLy8gc3RkOjppdGVyYXRvci4gIEl0IGlzIHBvc3NpYmxlIHRvIGltcGxlbWVudCBhIHN0YW5kYXJkCi0gICAgICAgIC8vIGxpYnJhcnkgZm9yIGJyb2tlbiBjb21waWxlcnMgd2l0aG91dCB0aGlzIGxpbWl0YXRpb24uCi0jICBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX05FRURTX0lURVJBVE9SX0JBU0UgMQotCi0gICAgICAgIHR5cGVkZWYKLSAgICAgICAgICAgaXRlcmF0b3I8aXRlcmF0b3JfY2F0ZWdvcnksIHZhbHVlX3R5cGUsIERpZmZlcmVuY2UsIHBvaW50ZXIsIFJlZmVyZW5jZT4KLSAgICAgICAgYmFzZTsKLSMgZW5kaWYKLSAgICB9OwotCi0gICAgLy8gaXRlcmF0b3JzIHdob3NlIGRlcmVmZXJlbmNlIG9wZXJhdG9ycyByZWZlcmVuY2UgdGhlIHNhbWUgdmFsdWUKLSAgICAvLyBmb3IgYWxsIGl0ZXJhdG9ycyBpbnRvIHRoZSBzYW1lIHNlcXVlbmNlIChsaWtlIG1hbnkgaW5wdXQKLSAgICAvLyBpdGVyYXRvcnMpIG5lZWQgaGVscCB3aXRoIHRoZWlyIHBvc3RmaXggKys6IHRoZSByZWZlcmVuY2VkCi0gICAgLy8gdmFsdWUgbXVzdCBiZSByZWFkIGFuZCBzdG9yZWQgYXdheSBiZWZvcmUgdGhlIGluY3JlbWVudCBvY2N1cnMKLSAgICAvLyBzbyB0aGF0ICphKysgeWllbGRzIHRoZSBvcmlnaW5hbGx5IHJlZmVyZW5jZWQgZWxlbWVudCBhbmQgbm90Ci0gICAgLy8gdGhlIG5leHQgb25lLgotICAgIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLSAgICBjbGFzcyBwb3N0Zml4X2luY3JlbWVudF9wcm94eQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl92YWx1ZTxJdGVyYXRvcj46OnR5cGUgdmFsdWVfdHlwZTsKLSAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBwb3N0Zml4X2luY3JlbWVudF9wcm94eShJdGVyYXRvciBjb25zdCYgeCkKLSAgICAgICAgICA6IHN0b3JlZF92YWx1ZSgqeCkKLSAgICAgICAge30KLQotICAgICAgICAvLyBSZXR1cm5pbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSBhbGxvd3Mgbm9uc2Vuc2UgbGlrZQotICAgICAgICAvLyAoKnIrKykubXV0YXRlKCksIGJ1dCBpdCBpbXBvc2VzIGZld2VyIGFzc3VtcHRpb25zIGFib3V0IHRoZQotICAgICAgICAvLyBiZWhhdmlvciBvZiB0aGUgdmFsdWVfdHlwZS4gIEluIHBhcnRpY3VsYXIsIHJlY2FsbCB0aGF0Ci0gICAgICAgIC8vICgqcikubXV0YXRlKCkgaXMgbGVnYWwgaWYgb3BlcmF0b3IqIHJldHVybnMgYnkgdmFsdWUuCi0gICAgICAgIHZhbHVlX3R5cGUmCi0gICAgICAgIG9wZXJhdG9yKigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5zdG9yZWRfdmFsdWU7Ci0gICAgICAgIH0KLSAgICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSB2YWx1ZV90eXBlIHN0b3JlZF92YWx1ZTsKLSAgICB9OwotICAgIAotICAgIC8vCi0gICAgLy8gSW4gZ2VuZXJhbCwgd2UgY2FuJ3QgZGV0ZXJtaW5lIHRoYXQgc3VjaCBhbiBpdGVyYXRvciBpc24ndAotICAgIC8vIHdyaXRhYmxlIC0tIHdlIGFsc28gbmVlZCB0byBzdG9yZSBhIGNvcHkgb2YgdGhlIG9sZCBpdGVyYXRvciBzbwotICAgIC8vIHRoYXQgaXQgY2FuIGJlIHdyaXR0ZW4gaW50by4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgY2xhc3Mgd3JpdGFibGVfcG9zdGZpeF9pbmNyZW1lbnRfcHJveHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdmFsdWU8SXRlcmF0b3I+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgd3JpdGFibGVfcG9zdGZpeF9pbmNyZW1lbnRfcHJveHkoSXRlcmF0b3IgY29uc3QmIHgpCi0gICAgICAgICAgOiBzdG9yZWRfdmFsdWUoKngpCi0gICAgICAgICAgLCBzdG9yZWRfaXRlcmF0b3IoeCkKLSAgICAgICAge30KLQotICAgICAgICAvLyBEZXJlZmVyZW5jaW5nIG11c3QgcmV0dXJuIGEgcHJveHkgc28gdGhhdCBib3RoICpyKysgPSBvIGFuZAotICAgICAgICAvLyB2YWx1ZV90eXBlKCpyKyspIGNhbiB3b3JrLiAgSW4gdGhpcyBjYXNlLCAqciBpcyB0aGUgc2FtZSBhcwotICAgICAgICAvLyAqcisrLCBhbmQgdGhlIGNvbnZlcnNpb24gb3BlcmF0b3IgYmVsb3cgaXMgdXNlZCB0byBlbnN1cmUKLSAgICAgICAgLy8gcmVhZGFiaWxpdHkuCi0gICAgICAgIHdyaXRhYmxlX3Bvc3RmaXhfaW5jcmVtZW50X3Byb3h5IGNvbnN0JgotICAgICAgICBvcGVyYXRvciooKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQcm92aWRlcyByZWFkYWJpbGl0eSBvZiAqcisrCi0gICAgICAgIG9wZXJhdG9yIHZhbHVlX3R5cGUmKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0b3JlZF92YWx1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFByb3ZpZGVzIHdyaXRhYmlsaXR5IG9mICpyKysKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIFQgY29uc3QmIG9wZXJhdG9yPShUIGNvbnN0JiB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICAqdGhpcy0+c3RvcmVkX2l0ZXJhdG9yID0geDsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhpcyBvdmVybG9hZCBqdXN0IGluIGNhc2Ugb25seSBub24tY29uc3Qgb2JqZWN0cyBhcmUgd3JpdGFibGUKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIFQmIG9wZXJhdG9yPShUJiB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICAqdGhpcy0+c3RvcmVkX2l0ZXJhdG9yID0geDsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUHJvdmlkZXMgWChyKyspCi0gICAgICAgIG9wZXJhdG9yIEl0ZXJhdG9yIGNvbnN0JigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdG9yZWRfaXRlcmF0b3I7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgIHByaXZhdGU6Ci0gICAgICAgIG11dGFibGUgdmFsdWVfdHlwZSBzdG9yZWRfdmFsdWU7Ci0gICAgICAgIEl0ZXJhdG9yIHN0b3JlZF9pdGVyYXRvcjsKLSAgICB9OwotCi0jIGlmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBSZWZlcmVuY2UsIGNsYXNzIFZhbHVlPgotICAgIHN0cnVjdCBpc19ub25fcHJveHlfcmVmZXJlbmNlX2ltcGwKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBSZWZlcmVuY2UgcjsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBSPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICBSIGNvbnN0IHZvbGF0aWxlKgotICAgICAgICAgICAgICAsIFZhbHVlIGNvbnN0IHZvbGF0aWxlKgotICAgICAgICAgICAgPgotICAgICAgICAgICwgY2hhclsxXQotICAgICAgICAgICwgY2hhclsyXQotICAgICAgICA+Ojp0eXBlJiBoZWxwZXIoUiBjb25zdCYpOwotICAgICAgICAKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gc2l6ZW9mKGhlbHBlcihyKSkgPT0gMSk7Ci0gICAgfTsKLSAgICAgICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFJlZmVyZW5jZSwgY2xhc3MgVmFsdWU+Ci0gICAgc3RydWN0IGlzX25vbl9wcm94eV9yZWZlcmVuY2UKLSAgICAgIDogbXBsOjpib29sXzwKLSAgICAgICAgICAgIGlzX25vbl9wcm94eV9yZWZlcmVuY2VfaW1wbDxSZWZlcmVuY2UsIFZhbHVlPjo6dmFsdWUKLSAgICAgICAgPgotICAgIHt9OwotIyBlbHNlIAotICAgIHRlbXBsYXRlIDxjbGFzcyBSZWZlcmVuY2UsIGNsYXNzIFZhbHVlPgotICAgIHN0cnVjdCBpc19ub25fcHJveHlfcmVmZXJlbmNlCi0gICAgICA6IGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxSZWZlcmVuY2U+Ojp0eXBlCi0gICAgICAgICAgICBjb25zdCB2b2xhdGlsZSoKLSAgICAgICAgICAsIFZhbHVlIGNvbnN0IHZvbGF0aWxlKgotICAgICAgICA+Ci0gICAge307Ci0jIGVuZGlmIAotICAgICAgICAKLSAgICAvLyBBIG1ldGFmdW5jdGlvbiB0byBjaG9vc2UgdGhlIHJlc3VsdCB0eXBlIG9mIHBvc3RmaXggKysKLSAgICAvLwotICAgIC8vIEJlY2F1c2UgdGhlIEMrKzk4IGlucHV0IGl0ZXJhdG9yIHJlcXVpcmVtZW50cyBzYXkgdGhhdCAqcisrIGhhcwotICAgIC8vIHR5cGUgVCAodmFsdWVfdHlwZSksIGltcGxlbWVudGF0aW9ucyBvZiBzb21lIHN0YW5kYXJkCi0gICAgLy8gYWxnb3JpdGhtcyBsaWtlIGxleGljb2dyYXBoaWNhbF9jb21wYXJlIG1heSB1c2UgY29uc3RydWN0aW9ucwotICAgIC8vIGxpa2U6Ci0gICAgLy8KLSAgICAvLyAgICAgICAgICAqcisrIDwgKnMrKwotICAgIC8vCi0gICAgLy8gSWYgKnIrKyByZXR1cm5zIGEgcHJveHkgKGFzIHJlcXVpcmVkIGlmIHIgaXMgd3JpdGFibGUgYnV0IG5vdAotICAgIC8vIG11bHRpcGFzcyksIHRoaXMgc29ydCBvZiBleHByZXNzaW9uIHdpbGwgZmFpbCB1bmxlc3MgdGhlIHByb3h5Ci0gICAgLy8gc3VwcG9ydHMgdGhlIG9wZXJhdG9yPC4gIFNpbmNlIHRoZXJlIGFyZSBhbnkgbnVtYmVyIG9mIHN1Y2gKLSAgICAvLyBvcGVyYXRpb25zLCB3ZSdyZSBub3QgZ29pbmcgdG8gdHJ5IHRvIHN1cHBvcnQgdGhlbS4gIFRoZXJlZm9yZSwKLSAgICAvLyBldmVuIGlmIHIrKyByZXR1cm5zIGEgcHJveHksICpyKysgd2lsbCBvbmx5IHJldHVybiBhIHByb3h5IGlmCi0gICAgLy8gKnIgYWxzbyByZXR1cm5zIGEgcHJveHkuCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBWYWx1ZSwgY2xhc3MgUmVmZXJlbmNlLCBjbGFzcyBDYXRlZ29yeU9yVHJhdmVyc2FsPgotICAgIHN0cnVjdCBwb3N0Zml4X2luY3JlbWVudF9yZXN1bHQKLSAgICAgIDogbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgICAgIC8vIEEgcHJveHkgaXMgb25seSBuZWVkZWQgZm9yIHJlYWRhYmxlIGl0ZXJhdG9ycwotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFJlZmVyZW5jZSxWYWx1ZSBjb25zdCY+Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gTm8gbXVsdGlwYXNzIGl0ZXJhdG9yIGNhbiBoYXZlIHZhbHVlcyB0aGF0IGRpc2FwcGVhcgotICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBwb3NpdGlvbnMgY2FuIGJlIHJlLXZpc2l0ZWQKLSAgICAgICAgICAgICAgLCBtcGw6Om5vdF88Ci0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfY2F0ZWdvcnlfdG9fdHJhdmVyc2FsPENhdGVnb3J5T3JUcmF2ZXJzYWw+Ojp0eXBlCi0gICAgICAgICAgICAgICAgICAgICAgLCBmb3J3YXJkX3RyYXZlcnNhbF90YWcKLSAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgID4KLSAgICAgICAgICAsIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIGlzX25vbl9wcm94eV9yZWZlcmVuY2U8UmVmZXJlbmNlLFZhbHVlPgotICAgICAgICAgICAgICAsIHBvc3RmaXhfaW5jcmVtZW50X3Byb3h5PEl0ZXJhdG9yPgotICAgICAgICAgICAgICAsIHdyaXRhYmxlX3Bvc3RmaXhfaW5jcmVtZW50X3Byb3h5PEl0ZXJhdG9yPgotICAgICAgICAgICAgPgotICAgICAgICAgICwgbXBsOjppZGVudGl0eTxJdGVyYXRvcj4KLSAgICAgICAgPgotICAgIHt9OwotCi0gICAgLy8gb3BlcmF0b3ItPigpIG5lZWRzIHNwZWNpYWwgc3VwcG9ydCBmb3IgaW5wdXQgaXRlcmF0b3JzIHRvIHN0cmljdGx5IG1lZXQgdGhlCi0gICAgLy8gc3RhbmRhcmQncyByZXF1aXJlbWVudHMuIElmICppIGlzIG5vdCBhIHJlZmVyZW5jZSB0eXBlLCB3ZSBtdXN0IHN0aWxsCi0gICAgLy8gcHJvZHVjZSBhbiBsdmFsdWUgdG8gd2hpY2ggYSBwb2ludGVyIGNhbiBiZSBmb3JtZWQuICBXZSBkbyB0aGF0IGJ5Ci0gICAgLy8gcmV0dXJuaW5nIGEgcHJveHkgb2JqZWN0IGNvbnRhaW5pbmcgYW4gaW5zdGFuY2Ugb2YgdGhlIHJlZmVyZW5jZSBvYmplY3QuCi0gICAgdGVtcGxhdGUgPGNsYXNzIFJlZmVyZW5jZSwgY2xhc3MgUG9pbnRlcj4KLSAgICBzdHJ1Y3Qgb3BlcmF0b3JfYXJyb3dfZGlzcGF0Y2ggLy8gcHJveHkgcmVmZXJlbmNlcwotICAgIHsKLSAgICAgICAgc3RydWN0IHByb3h5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGV4cGxpY2l0IHByb3h5KFJlZmVyZW5jZSBjb25zdCAmIHgpIDogbV9yZWYoeCkge30KLSAgICAgICAgICAgIFJlZmVyZW5jZSogb3BlcmF0b3ItPigpIHsgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YobV9yZWYpOyB9Ci0gICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5lZWRlZCBmb3IgTVdDVyBhbmQgQkNDLCB3aGljaCB3b24ndCBjYWxsCi0gICAgICAgICAgICAvLyBvcGVyYXRvci0+IGFnYWluIGF1dG9tYXRpY2FsbHkgcGVyIDEzLjMuMS4yIHBhcmEgOAotICAgICAgICAgICAgb3BlcmF0b3IgUmVmZXJlbmNlKigpIHsgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YobV9yZWYpOyB9Ci0gICAgICAgICAgICBSZWZlcmVuY2UgbV9yZWY7Ci0gICAgICAgIH07Ci0gICAgICAgIHR5cGVkZWYgcHJveHkgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHN0YXRpYyByZXN1bHRfdHlwZSBhcHBseShSZWZlcmVuY2UgY29uc3QgJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoeCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvaW50ZXI+Ci0gICAgc3RydWN0IG9wZXJhdG9yX2Fycm93X2Rpc3BhdGNoPFQmLCBQb2ludGVyPiAvLyAicmVhbCIgcmVmZXJlbmNlcwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBQb2ludGVyIHJlc3VsdF90eXBlOwotICAgICAgICBzdGF0aWMgcmVzdWx0X3R5cGUgYXBwbHkoVCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YoeCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIC8vIERlYWwgd2l0aCBFVEkKLSAgICB0ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IG9wZXJhdG9yX2Fycm93X2Rpc3BhdGNoPGludCwgaW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgcmVzdWx0X3R5cGU7Ci0gICAgfTsKLSMgZW5kaWYKLQotICAgIC8vIEEgcHJveHkgcmV0dXJuIHR5cGUgZm9yIG9wZXJhdG9yW10sIG5lZWRlZCB0byBkZWFsIHdpdGgKLSAgICAvLyBpdGVyYXRvcnMgdGhhdCBtYXkgaW52YWxpZGF0ZSByZWZlcmVudHMgdXBvbiBkZXN0cnVjdGlvbi4KLSAgICAvLyBDb25zaWRlciB0aGUgdGVtcG9yYXJ5IGl0ZXJhdG9yIGluICooYSArIG4pCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotICAgIGNsYXNzIG9wZXJhdG9yX2JyYWNrZXRzX3Byb3h5Ci0gICAgewotICAgICAgICAvLyBJdGVyYXRvciBpcyBhY3R1YWxseSBhbiBpdGVyYXRvcl9mYWNhZGUsIHNvIHdlIGRvIG5vdCBoYXZlIHRvCi0gICAgICAgIC8vIGdvIHRocm91Z2ggaXRlcmF0b3JfdHJhaXRzIHRvIGFjY2VzcyB0aGUgdHJhaXRzLgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpyZWZlcmVuY2UgIHJlZmVyZW5jZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgb3BlcmF0b3JfYnJhY2tldHNfcHJveHkoSXRlcmF0b3IgY29uc3QmIGl0ZXIpCi0gICAgICAgICAgOiBtX2l0ZXIoaXRlcikKLSAgICAgICAge30KLQotICAgICAgICBvcGVyYXRvciByZWZlcmVuY2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKm1faXRlcjsKLSAgICAgICAgfQotCi0gICAgICAgIG9wZXJhdG9yX2JyYWNrZXRzX3Byb3h5JiBvcGVyYXRvcj0odmFsdWVfdHlwZSBjb25zdCYgdmFsKQotICAgICAgICB7Ci0gICAgICAgICAgICAqbV9pdGVyID0gdmFsOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgcHJpdmF0ZToKLSAgICAgICAgSXRlcmF0b3IgbV9pdGVyOwotICAgIH07Ci0KLSAgICAvLyBBIG1ldGFmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciBvcGVyYXRvcltdIG11c3QgcmV0dXJuIGEKLSAgICAvLyBwcm94eSwgb3Igd2hldGhlciBpdCBjYW4gc2ltcGx5IHJldHVybiBhIGNvcHkgb2YgdGhlIHZhbHVlX3R5cGUuCi0gICAgdGVtcGxhdGUgPGNsYXNzIFZhbHVlVHlwZSwgY2xhc3MgUmVmZXJlbmNlPgotICAgIHN0cnVjdCB1c2Vfb3BlcmF0b3JfYnJhY2tldHNfcHJveHkKLSAgICAgIDogbXBsOjpub3RfPAotICAgICAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgICAgIC8vIFJlYWxseSB3ZSB3YW50IGFuIGlzX2NvcHlfY29uc3RydWN0aWJsZSB0cmFpdCBoZXJlLAotICAgICAgICAgICAgICAgIC8vIGJ1dCBpc19QT0Qgd2lsbCBoYXZlIHRvIHN1ZmZpY2UgaW4gdGhlIG1lYW50aW1lLgotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19QT0Q8VmFsdWVUeXBlPgotICAgICAgICAgICAgICAsIGl0ZXJhdG9yX3dyaXRhYmlsaXR5X2Rpc2FibGVkPFZhbHVlVHlwZSxSZWZlcmVuY2U+Ci0gICAgICAgICAgICA+Ci0gICAgICAgID4KLSAgICB7fTsKLSAgICAgICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBWYWx1ZSwgY2xhc3MgUmVmZXJlbmNlPgotICAgIHN0cnVjdCBvcGVyYXRvcl9icmFja2V0c19yZXN1bHQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICB1c2Vfb3BlcmF0b3JfYnJhY2tldHNfcHJveHk8VmFsdWUsUmVmZXJlbmNlPgotICAgICAgICAgICwgb3BlcmF0b3JfYnJhY2tldHNfcHJveHk8SXRlcmF0b3I+Ci0gICAgICAgICAgLCBWYWx1ZQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLSAgICBvcGVyYXRvcl9icmFja2V0c19wcm94eTxJdGVyYXRvcj4gbWFrZV9vcGVyYXRvcl9icmFja2V0c19yZXN1bHQoSXRlcmF0b3IgY29uc3QmIGl0ZXIsIG1wbDo6dHJ1ZV8pCi0gICAgewotICAgICAgICByZXR1cm4gb3BlcmF0b3JfYnJhY2tldHNfcHJveHk8SXRlcmF0b3I+KGl0ZXIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLSAgICB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSBtYWtlX29wZXJhdG9yX2JyYWNrZXRzX3Jlc3VsdChJdGVyYXRvciBjb25zdCYgaXRlciwgbXBsOjpmYWxzZV8pCi0gICAgewotICAgICAgcmV0dXJuICppdGVyOwotICAgIH0KLQotICAgIHN0cnVjdCBjaG9vc2VfZGlmZmVyZW5jZV90eXBlCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSTEsIGNsYXNzIEkyPgotICAgICAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgICA6Ci0jIGlmZGVmIE5ETkJPT1NUX05PX09ORV9XQVlfSVRFUkFUT1JfSU5URVJPUAotICAgICAgICAgIGl0ZXJhdG9yX2RpZmZlcmVuY2U8STE+Ci0jIGVsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPEkyLEkxPgotICAgICAgICAgICAgLCB0eXBlbmFtZSBJMTo6ZGlmZmVyZW5jZV90eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIEkyOjpkaWZmZXJlbmNlX3R5cGUKLSAgICAgICAgICA+Ci0jIGVsc2UgCi0gICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxJMixJMT4KLSAgICAgICAgICAgICwgaXRlcmF0b3JfZGlmZmVyZW5jZTxJMT4KLSAgICAgICAgICAgICwgaXRlcmF0b3JfZGlmZmVyZW5jZTxJMj4KLSAgICAgICAgICA+Ci0jIGVuZGlmIAotICAgICAgICB7fTsKLQotICAgIH07Ci0gIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0KLSAgLy8gTWFjcm9zIHdoaWNoIGRlc2NyaWJlIHRoZSBkZWNsYXJhdGlvbnMgb2YgYmluYXJ5IG9wZXJhdG9ycwotIyBpZmRlZiBORE5CT09TVF9OT19TVFJJQ1RfSVRFUkFUT1JfSU5URVJPUEVSQUJJTElUWQotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9JTlRFUk9QX0hFQUQocHJlZml4LCBvcCwgcmVzdWx0X3R5cGUpICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNsYXNzIERlcml2ZWQxLCBjbGFzcyBWMSwgY2xhc3MgVEMxLCBjbGFzcyBSZWZlcmVuY2UxLCBjbGFzcyBEaWZmZXJlbmNlMSBcCi0gICAgICAsIGNsYXNzIERlcml2ZWQyLCBjbGFzcyBWMiwgY2xhc3MgVEMyLCBjbGFzcyBSZWZlcmVuY2UyLCBjbGFzcyBEaWZmZXJlbmNlMiBcCi0gICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHByZWZpeCB0eXBlbmFtZSBtcGw6OmFwcGx5MjxyZXN1bHRfdHlwZSxEZXJpdmVkMSxEZXJpdmVkMj46OnR5cGUgXAotICAgIG9wZXJhdG9yIG9wKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQxLCBWMSwgVEMxLCBSZWZlcmVuY2UxLCBEaWZmZXJlbmNlMT4gY29uc3QmIGxocyAgIFwKLSAgICAgICwgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQyLCBWMiwgVEMyLCBSZWZlcmVuY2UyLCBEaWZmZXJlbmNlMj4gY29uc3QmIHJocykKLSMgZWxzZSAKLSMgIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUF9IRUFEKHByZWZpeCwgb3AsIHJlc3VsdF90eXBlKSAgIFwKLSAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2xhc3MgRGVyaXZlZDEsIGNsYXNzIFYxLCBjbGFzcyBUQzEsIGNsYXNzIFJlZmVyZW5jZTEsIGNsYXNzIERpZmZlcmVuY2UxIFwKLSAgICAgICwgY2xhc3MgRGVyaXZlZDIsIGNsYXNzIFYyLCBjbGFzcyBUQzIsIGNsYXNzIFJlZmVyZW5jZTIsIGNsYXNzIERpZmZlcmVuY2UyIFwKLSAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcmVmaXggdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6ZW5hYmxlX2lmX2ludGVyb3BlcmFibGU8ICAgICAgICAgICAgIFwKLSAgICAgICAgRGVyaXZlZDEsIERlcml2ZWQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICwgdHlwZW5hbWUgbXBsOjphcHBseTI8cmVzdWx0X3R5cGUsRGVyaXZlZDEsRGVyaXZlZDI+Ojp0eXBlICAgICAgIFwKLSAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBvcGVyYXRvciBvcCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQxLCBWMSwgVEMxLCBSZWZlcmVuY2UxLCBEaWZmZXJlbmNlMT4gY29uc3QmIGxocyAgIFwKLSAgICAgICwgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQyLCBWMiwgVEMyLCBSZWZlcmVuY2UyLCBEaWZmZXJlbmNlMj4gY29uc3QmIHJocykKLSMgZW5kaWYgCi0KLSMgIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUExVU19IRUFEKHByZWZpeCxhcmdzKSAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxjbGFzcyBEZXJpdmVkLCBjbGFzcyBWLCBjbGFzcyBUQywgY2xhc3MgUiwgY2xhc3MgRD4gICBcCi0gICAgcHJlZml4IERlcml2ZWQgb3BlcmF0b3IrIGFyZ3MKLQotICAvLwotICAvLyBIZWxwZXIgY2xhc3MgZm9yIGdyYW50aW5nIGFjY2VzcyB0byB0aGUgaXRlcmF0b3IgY29yZSBpbnRlcmZhY2UuCi0gIC8vCi0gIC8vIFRoZSBzaW1wbGUgY29yZSBpbnRlcmZhY2UgaXMgdXNlZCBieSBpdGVyYXRvcl9mYWNhZGUuIFRoZSBjb3JlCi0gIC8vIGludGVyZmFjZSBvZiBhIHVzZXIvbGlicmFyeSBkZWZpbmVkIGl0ZXJhdG9yIHR5cGUgc2hvdWxkIG5vdCBiZSBtYWRlIHB1YmxpYwotICAvLyBzbyB0aGF0IGl0IGRvZXMgbm90IGNsdXR0ZXIgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIEluc3RlYWQgaXRlcmF0b3JfY29yZV9hY2Nlc3MKLSAgLy8gc2hvdWxkIGJlIG1hZGUgZnJpZW5kIHNvIHRoYXQgaXRlcmF0b3JfZmFjYWRlIGNhbiBhY2Nlc3MgdGhlIGNvcmUKLSAgLy8gaW50ZXJmYWNlIHRocm91Z2ggaXRlcmF0b3JfY29yZV9hY2Nlc3MuCi0gIC8vCi0gIGNsYXNzIGl0ZXJhdG9yX2NvcmVfYWNjZXNzCi0gIHsKLSMgaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUykgICAgICAgICAgICAgICAgICAKLSAgICAgIC8vIFRhc3RlbGVzcyBhcyB0aGlzIG1heSBzZWVtLCBtYWtpbmcgYWxsIG1lbWJlcnMgcHVibGljIGFsbG93cyBtZW1iZXIgdGVtcGxhdGVzCi0gICAgICAvLyB0byB3b3JrIGluIHRoZSBhYnNlbmNlIG9mIG1lbWJlciB0ZW1wbGF0ZSBmcmllbmRzLgotICAgcHVibGljOgotIyBlbHNlCi0gICAgICAKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBJLCBjbGFzcyBWLCBjbGFzcyBUQywgY2xhc3MgUiwgY2xhc3MgRD4gZnJpZW5kIGNsYXNzIGl0ZXJhdG9yX2ZhY2FkZTsKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTihvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9JTlRFUk9QX0hFQUQoZnJpZW5kLG9wLCBuZG5ib29zdDo6ZGV0YWlsOjphbHdheXNfYm9vbDIpOwotCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPT0pCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oIT0pCi0KLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTig8KQotICAgICAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKD4pCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPD0pCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPj0pCi0jICB1bmRlZiBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04KLQotICAgICAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX0lOVEVST1BfSEVBRCgKLSAgICAgICAgICBmcmllbmQsIC0sIG5kbmJvb3N0OjpkZXRhaWw6OmNob29zZV9kaWZmZXJlbmNlX3R5cGUpCi0gICAgICA7Ci0KLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTX0hFQUQoCi0gICAgICAgICAgZnJpZW5kIGlubGluZQotICAgICAgICAgICwgKGl0ZXJhdG9yX2ZhY2FkZTxEZXJpdmVkLCBWLCBUQywgUiwgRD4gY29uc3QmCi0gICAgICAgICAgICwgdHlwZW5hbWUgRGVyaXZlZDo6ZGlmZmVyZW5jZV90eXBlKQotICAgICAgKQotICAgICAgOwotCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUExVU19IRUFEKAotICAgICAgICAgIGZyaWVuZCBpbmxpbmUKLSAgICAgICAgLCAodHlwZW5hbWUgRGVyaXZlZDo6ZGlmZmVyZW5jZV90eXBlCi0gICAgICAgICAgICwgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsIFYsIFRDLCBSLCBEPiBjb25zdCYpCi0gICAgICApCi0gICAgICA7Ci0KLSMgZW5kaWYKLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZT4KLSAgICAgIHN0YXRpYyB0eXBlbmFtZSBGYWNhZGU6OnJlZmVyZW5jZSBkZXJlZmVyZW5jZShGYWNhZGUgY29uc3QmIGYpCi0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuIGYuZGVyZWZlcmVuY2UoKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZT4KLSAgICAgIHN0YXRpYyB2b2lkIGluY3JlbWVudChGYWNhZGUmIGYpCi0gICAgICB7Ci0gICAgICAgICAgZi5pbmNyZW1lbnQoKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZT4KLSAgICAgIHN0YXRpYyB2b2lkIGRlY3JlbWVudChGYWNhZGUmIGYpCi0gICAgICB7Ci0gICAgICAgICAgZi5kZWNyZW1lbnQoKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZTEsIGNsYXNzIEZhY2FkZTI+Ci0gICAgICBzdGF0aWMgYm9vbCBlcXVhbChGYWNhZGUxIGNvbnN0JiBmMSwgRmFjYWRlMiBjb25zdCYgZjIsIG1wbDo6dHJ1ZV8pCi0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuIGYxLmVxdWFsKGYyKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZTEsIGNsYXNzIEZhY2FkZTI+Ci0gICAgICBzdGF0aWMgYm9vbCBlcXVhbChGYWNhZGUxIGNvbnN0JiBmMSwgRmFjYWRlMiBjb25zdCYgZjIsIG1wbDo6ZmFsc2VfKQotICAgICAgewotICAgICAgICAgIHJldHVybiBmMi5lcXVhbChmMSk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBGYWNhZGU+Ci0gICAgICBzdGF0aWMgdm9pZCBhZHZhbmNlKEZhY2FkZSYgZiwgdHlwZW5hbWUgRmFjYWRlOjpkaWZmZXJlbmNlX3R5cGUgbikKLSAgICAgIHsKLSAgICAgICAgICBmLmFkdmFuY2Uobik7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBGYWNhZGUxLCBjbGFzcyBGYWNhZGUyPgotICAgICAgc3RhdGljIHR5cGVuYW1lIEZhY2FkZTE6OmRpZmZlcmVuY2VfdHlwZSBkaXN0YW5jZV9mcm9tKAotICAgICAgICAgIEZhY2FkZTEgY29uc3QmIGYxLCBGYWNhZGUyIGNvbnN0JiBmMiwgbXBsOjp0cnVlXykKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gLWYxLmRpc3RhbmNlX3RvKGYyKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZTEsIGNsYXNzIEZhY2FkZTI+Ci0gICAgICBzdGF0aWMgdHlwZW5hbWUgRmFjYWRlMjo6ZGlmZmVyZW5jZV90eXBlIGRpc3RhbmNlX2Zyb20oCi0gICAgICAgICAgRmFjYWRlMSBjb25zdCYgZjEsIEZhY2FkZTIgY29uc3QmIGYyLCBtcGw6OmZhbHNlXykKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gZjIuZGlzdGFuY2VfdG8oZjEpOwotICAgICAgfQotCi0gICAgICAvLwotICAgICAgLy8gQ3VyaW91c2x5IFJlY3VycmluZyBUZW1wbGF0ZSBpbnRlcmZhY2UuCi0gICAgICAvLwotICAgICAgdGVtcGxhdGUgPGNsYXNzIEksIGNsYXNzIFYsIGNsYXNzIFRDLCBjbGFzcyBSLCBjbGFzcyBEPgotICAgICAgc3RhdGljIEkmIGRlcml2ZWQoaXRlcmF0b3JfZmFjYWRlPEksVixUQyxSLEQ+JiBmYWNhZGUpCi0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxJKj4oJmZhY2FkZSk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBJLCBjbGFzcyBWLCBjbGFzcyBUQywgY2xhc3MgUiwgY2xhc3MgRD4KLSAgICAgIHN0YXRpYyBJIGNvbnN0JiBkZXJpdmVkKGl0ZXJhdG9yX2ZhY2FkZTxJLFYsVEMsUixEPiBjb25zdCYgZmFjYWRlKQotICAgICAgewotICAgICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8SSBjb25zdCo+KCZmYWNhZGUpOwotICAgICAgfQotCi0gICBwcml2YXRlOgotICAgICAgLy8gb2JqZWN0cyBvZiB0aGlzIGNsYXNzIGFyZSB1c2VsZXNzCi0gICAgICBpdGVyYXRvcl9jb3JlX2FjY2VzcygpOyAvL3VuZGVmaW5lZAotICB9OwotCi0gIC8vCi0gIC8vIGl0ZXJhdG9yX2ZhY2FkZSAtIHVzZSBhcyBhIHB1YmxpYyBiYXNlIGNsYXNzIGZvciBkZWZpbmluZyBuZXcKLSAgLy8gc3RhbmRhcmQtY29uZm9ybWluZyBpdGVyYXRvcnMuCi0gIC8vCi0gIHRlbXBsYXRlIDwKLSAgICAgIGNsYXNzIERlcml2ZWQgICAgICAgICAgICAgLy8gVGhlIGRlcml2ZWQgaXRlcmF0b3IgdHlwZSBiZWluZyBjb25zdHJ1Y3RlZAotICAgICwgY2xhc3MgVmFsdWUKLSAgICAsIGNsYXNzIENhdGVnb3J5T3JUcmF2ZXJzYWwKLSAgICAsIGNsYXNzIFJlZmVyZW5jZSAgID0gVmFsdWUmCi0gICAgLCBjbGFzcyBEaWZmZXJlbmNlICA9IHN0ZDo6cHRyZGlmZl90Ci0gID4KLSAgY2xhc3MgaXRlcmF0b3JfZmFjYWRlCi0jIGlmZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9ORUVEU19JVEVSQVRPUl9CQVNFCi0gICAgOiBwdWJsaWMgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfZmFjYWRlX3R5cGVzPAotICAgICAgICAgVmFsdWUsIENhdGVnb3J5T3JUcmF2ZXJzYWwsIFJlZmVyZW5jZSwgRGlmZmVyZW5jZQotICAgICAgPjo6YmFzZQotIyAgdW5kZWYgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX05FRURTX0lURVJBVE9SX0JBU0UKLSMgZW5kaWYKLSAgewotICAgcHJpdmF0ZToKLSAgICAgIC8vCi0gICAgICAvLyBDdXJpb3VzbHkgUmVjdXJyaW5nIFRlbXBsYXRlIGludGVyZmFjZS4KLSAgICAgIC8vCi0gICAgICBEZXJpdmVkJiBkZXJpdmVkKCkKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PERlcml2ZWQqPih0aGlzKTsKLSAgICAgIH0KLQotICAgICAgRGVyaXZlZCBjb25zdCYgZGVyaXZlZCgpIGNvbnN0Ci0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxEZXJpdmVkIGNvbnN0Kj4odGhpcyk7Ci0gICAgICB9Ci0KLSAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfZmFjYWRlX3R5cGVzPAotICAgICAgICAgVmFsdWUsIENhdGVnb3J5T3JUcmF2ZXJzYWwsIFJlZmVyZW5jZSwgRGlmZmVyZW5jZQotICAgICAgPiBhc3NvY2lhdGVkX3R5cGVzOwotCi0gICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6Om9wZXJhdG9yX2Fycm93X2Rpc3BhdGNoPAotICAgICAgICAgIFJlZmVyZW5jZQotICAgICAgICAsIHR5cGVuYW1lIGFzc29jaWF0ZWRfdHlwZXM6OnBvaW50ZXIKLSAgICAgID4gb3BlcmF0b3JfYXJyb3dfZGlzcGF0Y2hfOwotCi0gICBwcm90ZWN0ZWQ6Ci0gICAgICAvLyBGb3IgdXNlIGJ5IGRlcml2ZWQgY2xhc3NlcwotICAgICAgdHlwZWRlZiBpdGVyYXRvcl9mYWNhZGU8RGVyaXZlZCxWYWx1ZSxDYXRlZ29yeU9yVHJhdmVyc2FsLFJlZmVyZW5jZSxEaWZmZXJlbmNlPiBpdGVyYXRvcl9mYWNhZGVfOwotICAgICAgCi0gICBwdWJsaWM6Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXNzb2NpYXRlZF90eXBlczo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgdHlwZWRlZiBSZWZlcmVuY2UgcmVmZXJlbmNlOwotICAgICAgdHlwZWRlZiBEaWZmZXJlbmNlIGRpZmZlcmVuY2VfdHlwZTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBvcGVyYXRvcl9hcnJvd19kaXNwYXRjaF86OnJlc3VsdF90eXBlIHBvaW50ZXI7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXNzb2NpYXRlZF90eXBlczo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgICAgIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdAotICAgICAgewotICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9jb3JlX2FjY2Vzczo6ZGVyZWZlcmVuY2UodGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgIH0KLQotICAgICAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gb3BlcmF0b3JfYXJyb3dfZGlzcGF0Y2hfOjphcHBseSgqdGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgIH0KLSAgICAgICAgCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpvcGVyYXRvcl9icmFja2V0c19yZXN1bHQ8RGVyaXZlZCxWYWx1ZSxyZWZlcmVuY2U+Ojp0eXBlCi0gICAgICBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBuKSBjb25zdAotICAgICAgewotICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6dXNlX29wZXJhdG9yX2JyYWNrZXRzX3Byb3h5PFZhbHVlLFJlZmVyZW5jZT4gdXNlX3Byb3h5OwotICAgICAgICAgIAotICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX29wZXJhdG9yX2JyYWNrZXRzX3Jlc3VsdDxEZXJpdmVkPigKLSAgICAgICAgICAgICAgdGhpcy0+ZGVyaXZlZCgpICsgbgotICAgICAgICAgICAgLCB1c2VfcHJveHkoKQotICAgICAgICAgICk7Ci0gICAgICB9Ci0KLSAgICAgIERlcml2ZWQmIG9wZXJhdG9yKysoKQotICAgICAgewotICAgICAgICAgIGl0ZXJhdG9yX2NvcmVfYWNjZXNzOjppbmNyZW1lbnQodGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgICAgICByZXR1cm4gdGhpcy0+ZGVyaXZlZCgpOwotICAgICAgfQotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cG9zdGZpeF9pbmNyZW1lbnRfcmVzdWx0PERlcml2ZWQsVmFsdWUsUmVmZXJlbmNlLENhdGVnb3J5T3JUcmF2ZXJzYWw+Ojp0eXBlCi0gICAgICBvcGVyYXRvcisrKGludCkKLSAgICAgIHsKLSAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpwb3N0Zml4X2luY3JlbWVudF9yZXN1bHQ8RGVyaXZlZCxWYWx1ZSxSZWZlcmVuY2UsQ2F0ZWdvcnlPclRyYXZlcnNhbD46OnR5cGUKLSAgICAgICAgICB0bXAodGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgICAgICArKyp0aGlzOwotICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICB9Ci0jIGVuZGlmCi0gICAgICAKLSAgICAgIERlcml2ZWQmIG9wZXJhdG9yLS0oKQotICAgICAgewotICAgICAgICAgIGl0ZXJhdG9yX2NvcmVfYWNjZXNzOjpkZWNyZW1lbnQodGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgICAgICByZXR1cm4gdGhpcy0+ZGVyaXZlZCgpOwotICAgICAgfQotCi0gICAgICBEZXJpdmVkIG9wZXJhdG9yLS0oaW50KQotICAgICAgewotICAgICAgICAgIERlcml2ZWQgdG1wKHRoaXMtPmRlcml2ZWQoKSk7Ci0gICAgICAgICAgLS0qdGhpczsKLSAgICAgICAgICByZXR1cm4gdG1wOwotICAgICAgfQotCi0gICAgICBEZXJpdmVkJiBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBuKQotICAgICAgewotICAgICAgICAgIGl0ZXJhdG9yX2NvcmVfYWNjZXNzOjphZHZhbmNlKHRoaXMtPmRlcml2ZWQoKSwgbik7Ci0gICAgICAgICAgcmV0dXJuIHRoaXMtPmRlcml2ZWQoKTsKLSAgICAgIH0KLQotICAgICAgRGVyaXZlZCYgb3BlcmF0b3ItPShkaWZmZXJlbmNlX3R5cGUgbikKLSAgICAgIHsKLSAgICAgICAgICBpdGVyYXRvcl9jb3JlX2FjY2Vzczo6YWR2YW5jZSh0aGlzLT5kZXJpdmVkKCksIC1uKTsKLSAgICAgICAgICByZXR1cm4gdGhpcy0+ZGVyaXZlZCgpOwotICAgICAgfQotCi0gICAgICBEZXJpdmVkIG9wZXJhdG9yLShkaWZmZXJlbmNlX3R5cGUgeCkgY29uc3QKLSAgICAgIHsKLSAgICAgICAgICBEZXJpdmVkIHJlc3VsdCh0aGlzLT5kZXJpdmVkKCkpOwotICAgICAgICAgIHJldHVybiByZXN1bHQgLT0geDsKLSAgICAgIH0KLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgIC8vIFRoZXJlIGFwcGVhcnMgdG8gYmUgYSBidWcgd2hpY2ggdHJhc2hlcyB0aGUgZGF0YSBvZiBjbGFzc2VzCi0gICAgICAvLyBkZXJpdmVkIGZyb20gaXRlcmF0b3JfZmFjYWRlIHdoZW4gdGhleSBhcmUgYXNzaWduZWQgdW5sZXNzIHdlCi0gICAgICAvLyBkZWZpbmUgdGhpcyBhc3NpZ25tZW50IG9wZXJhdG9yLiAgVGhpcyBidWcgaXMgb25seSByZXZlYWxlZAotICAgICAgLy8gKHNvIGZhcikgaW4gU1RMUG9ydCBkZWJ1ZyBtb2RlLCBidXQgaXQncyBjbGVhcmx5IGEgY29kZWdlbgotICAgICAgLy8gcHJvYmxlbSBzbyB3ZSBhcHBseSB0aGUgd29ya2Fyb3VuZCBmb3IgYWxsIE1TVkM2LgotICAgICAgaXRlcmF0b3JfZmFjYWRlJiBvcGVyYXRvcj0oaXRlcmF0b3JfZmFjYWRlIGNvbnN0JikKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICB9Ci0jIGVuZGlmCi0gIH07Ci0KLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICB0ZW1wbGF0ZSA8Y2xhc3MgSSwgY2xhc3MgViwgY2xhc3MgVEMsIGNsYXNzIFIsIGNsYXNzIEQ+Ci0gIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpwb3N0Zml4X2luY3JlbWVudF9yZXN1bHQ8SSxWLFIsVEM+Ojp0eXBlCi0gIG9wZXJhdG9yKysoCi0gICAgICBpdGVyYXRvcl9mYWNhZGU8SSxWLFRDLFIsRD4mIGkKLSAgICAsIGludAotICApCi0gIHsKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnBvc3RmaXhfaW5jcmVtZW50X3Jlc3VsdDxJLFYsUixUQz46OnR5cGUKLSAgICAgICAgICB0bXAoKnN0YXRpY19jYXN0PEkqPigmaSkpOwotICAgICAgCi0gICAgICArK2k7Ci0gICAgICAKLSAgICAgIHJldHVybiB0bXA7Ci0gIH0KLSMgZW5kaWYgCi0KLSAgCi0gIC8vCi0gIC8vIENvbXBhcmlzb24gb3BlcmF0b3IgaW1wbGVtZW50YXRpb24uIFRoZSBsaWJyYXJ5IHN1cHBsaWVkIG9wZXJhdG9ycwotICAvLyBlbmFibGVzIHRoZSB1c2VyIHRvIHByb3ZpZGUgZnVsbHkgaW50ZXJvcGVyYWJsZSBjb25zdGFudC9tdXRhYmxlCi0gIC8vIGl0ZXJhdG9yIHR5cGVzLiBJLmUuIHRoZSBsaWJyYXJ5IHByb3ZpZGVzIGFsbCBvcGVyYXRvcnMKLSAgLy8gZm9yIGFsbCBtdXRhYmxlL2NvbnN0YW50IGl0ZXJhdG9yIGNvbWJpbmF0aW9ucy4KLSAgLy8KLSAgLy8gTm90ZSB0aG91Z2ggdGhhdCB0aGlzIGtpbmQgb2YgaW50ZXJvcGVyYWJpbGl0eSBmb3IgY29uc3RhbnQvbXV0YWJsZQotICAvLyBpdGVyYXRvcnMgaXMgbm90IHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZCBmb3IgY29udGFpbmVyIGl0ZXJhdG9ycy4KLSAgLy8gQWxsIHRoZSBzdGFuZGFyZCBhc2tzIGZvciBpcyBhIGNvbnZlcnNpb24gbXV0YWJsZSAtPiBjb25zdGFudC4KLSAgLy8gTW9zdCBzdGFuZGFyZCBsaWJyYXJ5IGltcGxlbWVudGF0aW9ucyBub3dhZGF5cyBwcm92aWRlIGZ1bGx5IGludGVyb3BlcmFibGUKLSAgLy8gaXRlcmF0b3IgaW1wbGVtZW50YXRpb25zLCBidXQgdGhlcmUgYXJlIHN0aWxsIGhlYXZpbHkgdXNlZCBpbXBsZW1lbnRhdGlvbnMKLSAgLy8gdGhhdCBkbyBub3QgcHJvdmlkZSB0aGVtLiAoQWN0dWFsbHkgaXQncyBldmVuIHdvcnNlLCB0aGV5IGRvIG5vdCBwcm92aWRlCi0gIC8vIHRoZW0gZm9yIG9ubHkgYSBmZXcgaXRlcmF0b3JzLikKLSAgLy8KLSAgLy8gPz8gTWF5YmUgYSBORE5CT09TVF9JVEVSQVRPUl9OT19GVUxMX0lOVEVST1BFUkFCSUxJVFkgbWFjcm8gc2hvdWxkCi0gIC8vICAgIGVuYWJsZSB0aGUgdXNlciB0byB0dXJuIG9mZiBtaXhlZCB0eXBlIG9wZXJhdG9ycwotICAvLwotICAvLyBUaGUgbGlicmFyeSB0YWtlcyBjYXJlIHRvIHByb3ZpZGUgb25seSB0aGUgcmlnaHQgb3BlcmF0b3Igb3ZlcmxvYWRzLgotICAvLyBJLmUuCi0gIC8vCi0gIC8vIGJvb2wgb3BlcmF0b3I9PShJdGVyYXRvciwgICAgICBJdGVyYXRvcik7Ci0gIC8vIGJvb2wgb3BlcmF0b3I9PShDb25zdEl0ZXJhdG9yLCBJdGVyYXRvcik7Ci0gIC8vIGJvb2wgb3BlcmF0b3I9PShJdGVyYXRvciwgICAgICBDb25zdEl0ZXJhdG9yKTsKLSAgLy8gYm9vbCBvcGVyYXRvcj09KENvbnN0SXRlcmF0b3IsIENvbnN0SXRlcmF0b3IpOwotICAvLwotICAvLyAgIC4uLgotICAvLwotICAvLyBJbiBvcmRlciB0byBkbyBzbyBpdCB1c2VzIGMrKyBpZGlvbXMgdGhhdCBhcmUgbm90IHlldCB3aWRlbHkgc3VwcG9ydGVkCi0gIC8vIGJ5IGN1cnJlbnQgY29tcGlsZXIgcmVsZWFzZXMuIFRoZSBsaWJyYXJ5IGlzIGRlc2lnbmVkIHRvIGRlZ3JhZGUgZ3JhY2VmdWxseQotICAvLyBpbiB0aGUgZmFjZSBvZiBjb21waWxlciBkZWZpY2llbmNpZXMuIEluIGdlbmVyYWwgY29tcGlsZXIKLSAgLy8gZGVmaWNpZW5jaWVzIHJlc3VsdCBpbiBsZXNzIHN0cmljdCBlcnJvciBjaGVja2luZyBhbmQgbW9yZSBvYnNjdXJlCi0gIC8vIGVycm9yIG1lc3NhZ2VzLCBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhZmZlY3RlZC4KLSAgLy8KLSAgLy8gRm9yIGZ1bGwgb3BlcmF0aW9uIGNvbXBpbGVyIHN1cHBvcnQgZm9yICJTdWJzdGl0dXRpb24gRmFpbHVyZSBJcyBOb3QgQW4gRXJyb3IiCi0gIC8vIChha2EuIGVuYWJsZV9pZikgYW5kIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZSBpcyByZXF1aXJlZC4KLSAgLy8KLSAgLy8gVGhlIGZvbGxvd2luZyBwcm9ibGVtcyBvY2N1ciBpZiBzdXBwb3J0IGlzIGxhY2tpbmcuCi0gIC8vCi0gIC8vIFBzZXVkbyBjb2RlCi0gIC8vCi0gIC8vIC0tLS0tLS0tLS0tLS0tLQotICAvLyBBZGFwdG9yQTxJdGVyYXRvcjE+IGExOwotICAvLyBBZGFwdG9yQTxJdGVyYXRvcjI+IGEyOwotICAvLwotICAvLyAvLyBUaGlzIHdpbGwgcmVzdWx0IGluIGEgbm8gc3VjaCBvdmVybG9hZCBlcnJvciBpbiBmdWxsIG9wZXJhdGlvbgotICAvLyAvLyBJZiBlbmFibGVfaWYgb3IgaXNfY29udmVydGlibGUgaXMgbm90IHN1cHBvcnRlZAotICAvLyAvLyBUaGUgaW5zdGFudGlhdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiBlcnJvciBob3BlZnVsbHkgaW5kaWNhdGluZyB0aGF0Ci0gIC8vIC8vIHRoZXJlIGlzIG5vIG9wZXJhdG9yPT0gZm9yIEl0ZXJhdG9yMSwgSXRlcmF0b3IyCi0gIC8vIC8vIFRoZSBzYW1lIHdpbGwgaGFwcGVuIGlmIG5vIGVuYWJsZV9pZiBpcyB1c2VkIHRvIHJlbW92ZQotICAvLyAvLyBmYWxzZSBvdmVybG9hZHMgZnJvbSB0aGUgdGVtcGxhdGVkIGNvbnZlcnNpb24gY29uc3RydWN0b3IKLSAgLy8gLy8gb2YgQWRhcHRvckEuCi0gIC8vCi0gIC8vIGExID09IGEyOwotICAvLyAtLS0tLS0tLS0tLS0tLS0tCi0gIC8vCi0gIC8vIEFkYXB0b3JBPEl0ZXJhdG9yPiBhOwotICAvLyBBZGFwdG9yQjxJdGVyYXRvcj4gYjsKLSAgLy8KLSAgLy8gLy8gVGhpcyB3aWxsIHJlc3VsdCBpbiBhIG5vIHN1Y2ggb3ZlcmxvYWQgZXJyb3IgaW4gZnVsbCBvcGVyYXRpb24KLSAgLy8gLy8gSWYgZW5hYmxlX2lmIGlzIG5vdCBzdXBwb3J0ZWQgdGhlIHN0YXRpYyBhc3NlcnQgdXNlZAotICAvLyAvLyBpbiB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gd2lsbCBmYWlsLgotICAvLyAvLyBUaGlzIHdpbGwgYWNjaWRlbnRseSB3b3JrIGlmIGlzX2NvbnZlcnRpYmxlIGlzIG5vdCBzdXBwb3J0ZWQuCi0gIC8vCi0gIC8vIGEgPT0gYjsKLSAgLy8gLS0tLS0tLS0tLS0tLS0tLQotICAvLwotCi0jIGlmZGVmIE5ETkJPT1NUX05PX09ORV9XQVlfSVRFUkFUT1JfSU5URVJPUAotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0NPTlZFUlRJQkxFKGEsYikgbXBsOjp0cnVlXygpCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9DT05WRVJUSUJMRShhLGIpIGlzX2NvbnZlcnRpYmxlPGEsYj4oKQotIyBlbmRpZgotCi0jIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUChvcCwgcmVzdWx0X3R5cGUsIHJldHVybl9wcmVmaXgsIGJhc2Vfb3ApIFwKLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX0lOVEVST1BfSEVBRChpbmxpbmUsIG9wLCByZXN1bHRfdHlwZSkgICAgICAgICAgICAgICAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAvKiBGb3IgdGhvc2UgY29tcGlsZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgZW5hYmxlX2lmICovICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIGlzX2ludGVyb3BlcmFibGU8IERlcml2ZWQxLCBEZXJpdmVkMiA+Ojp2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHJldHVybl9wcmVmaXggaXRlcmF0b3JfY29yZV9hY2Nlc3M6OmJhc2Vfb3AoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICpzdGF0aWNfY2FzdDxEZXJpdmVkMSBjb25zdCo+KCZsaHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICwgKnN0YXRpY19jYXN0PERlcml2ZWQyIGNvbnN0Kj4oJnJocykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgLCBORE5CT09TVF9JVEVSQVRPUl9DT05WRVJUSUJMRShEZXJpdmVkMixEZXJpdmVkMSkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0KLQotIyBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKG9wLCByZXR1cm5fcHJlZml4LCBiYXNlX29wKSBcCi0gIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9JTlRFUk9QKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6YWx3YXlzX2Jvb2wyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLCByZXR1cm5fcHJlZml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAsIGJhc2Vfb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApCi0KLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKD09LCByZXR1cm4sIGVxdWFsKQotICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oIT0sIHJldHVybiAhLCBlcXVhbCkKLQotICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPCwgcmV0dXJuIDAgPiwgZGlzdGFuY2VfZnJvbSkKLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKD4sIHJldHVybiAwIDwsIGRpc3RhbmNlX2Zyb20pCi0gIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTig8PSwgcmV0dXJuIDAgPj0sIGRpc3RhbmNlX2Zyb20pCi0gIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTig+PSwgcmV0dXJuIDAgPD0sIGRpc3RhbmNlX2Zyb20pCi0jIHVuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTgotCi0gIC8vIG9wZXJhdG9yLSByZXF1aXJlcyBhbiBhZGRpdGlvbmFsIHBhcnQgaW4gdGhlIHN0YXRpYyBhc3NlcnRpb24KLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX0lOVEVST1AoCi0gICAgICAtCi0gICAgLCBuZG5ib29zdDo6ZGV0YWlsOjpjaG9vc2VfZGlmZmVyZW5jZV90eXBlCi0gICAgLCByZXR1cm4KLSAgICAsIGRpc3RhbmNlX2Zyb20KLSAgKQotIyB1bmRlZiBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUAotIyB1bmRlZiBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUF9IRUFECi0KLSMgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTKGFyZ3MpICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTX0hFQUQoaW5saW5lLCBhcmdzKSAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIERlcml2ZWQgdG1wKHN0YXRpY19jYXN0PERlcml2ZWQgY29uc3QmPihpKSk7ICBcCi0gICAgICByZXR1cm4gdG1wICs9IG47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9Ci0KLU5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTKCgKLSAgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsIFYsIFRDLCBSLCBEPiBjb25zdCYgaQotICAsIHR5cGVuYW1lIERlcml2ZWQ6OmRpZmZlcmVuY2VfdHlwZSBuCi0pKQotCi1ORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUExVUygoCi0gICAgdHlwZW5hbWUgRGVyaXZlZDo6ZGlmZmVyZW5jZV90eXBlIG4KLSAgICAsIGl0ZXJhdG9yX2ZhY2FkZTxEZXJpdmVkLCBWLCBUQywgUiwgRD4gY29uc3QmIGkKLSkpCi0jIHVuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTCi0jIHVuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTX0hFQUQKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFXzIzMDIyMDAzVEhXX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDhmYjYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBJVEVSQVRPUl9UUkFJVFNfTkROQk9PU1RfRFdBMjAwMzQ3X0hQUAotIyBkZWZpbmUgSVRFUkFUT1JfVFJBSVRTX05ETkJPT1NUX0RXQTIwMDM0N19IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotCi0vLyBVbmZvcnR1bmF0ZWx5LCBnKysgMi45NS54IGNob2tlcyB3aGVuIHdlIGRlZmluZSBhIGNsYXNzIHRlbXBsYXRlCi0vLyBpdGVyYXRvcl9jYXRlZ29yeSB3aGljaCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBpdHMKLS8vIHN0ZDo6aXRlcmF0b3JfY2F0ZWdvcnkoKSBmdW5jdGlvbiwgcHJvYmFibHkgZHVlIGluIHBhcnQgdG8gdGhlCi0vLyAic3RkOjogaXMgdmlzaWJsZSBnbG9iYWxseSIgaGFjayBpdCB1c2VzLiAgVXNlCi0vLyBORE5CT09TVF9JVEVSQVRPUl9DQVRFR09SWSB0byB3cml0ZSBjb2RlIHRoYXQncyBwb3J0YWJsZSB0byBvbGRlcgotLy8gR0NDcy4KLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8PSAyKQotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0NBVEVHT1JZIGl0ZXJhdG9yX2NhdGVnb3J5XwotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUlkgaXRlcmF0b3JfY2F0ZWdvcnkKLSMgZW5kaWYKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfdmFsdWUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUgdHlwZTsKLX07Ci0gIAotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IGl0ZXJhdG9yX3JlZmVyZW5jZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cmVmZXJlbmNlIHR5cGU7Ci19OwotICAKLSAgCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfcG9pbnRlcgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cG9pbnRlciB0eXBlOwotfTsKLSAgCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfZGlmZmVyZW5jZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUlkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IHR5cGU7Ci19OwotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpdGVyYXRvcl92YWx1ZTxpbnQ+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotICAKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXRlcmF0b3JfcmVmZXJlbmNlPGludD4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXRlcmF0b3JfcG9pbnRlcjxpbnQ+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotICAKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXRlcmF0b3JfZGlmZmVyZW5jZTxpbnQ+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotICAKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUlk8aW50PgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLSMgZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Oml0ZXJhdG9yCi0KLSNlbmRpZiAvLyBJVEVSQVRPUl9UUkFJVFNfTkROQk9PU1RfRFdBMjAwMzQ3X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9yZXZlcnNlX2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvcmV2ZXJzZV9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5Yjc2NWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9yZXZlcnNlX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfUkVWRVJTRV9JVEVSQVRPUl8yMzAyMjAwM1RIV19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVWRVJTRV9JVEVSQVRPUl8yMzAyMjAwM1RIV19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9hZGFwdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSAgLy8KLSAgLy8KLSAgLy8KLSAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotICBjbGFzcyByZXZlcnNlX2l0ZXJhdG9yCi0gICAgICA6IHB1YmxpYyBpdGVyYXRvcl9hZGFwdG9yPCByZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPiwgSXRlcmF0b3IgPgotICB7Ci0gICAgICB0eXBlZGVmIGl0ZXJhdG9yX2FkYXB0b3I8IHJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+LCBJdGVyYXRvciA+IHN1cGVyX3Q7Ci0KLSAgICAgIGZyaWVuZCBjbGFzcyBpdGVyYXRvcl9jb3JlX2FjY2VzczsKLQotICAgcHVibGljOgotICAgICAgcmV2ZXJzZV9pdGVyYXRvcigpIHt9Ci0KLSAgICAgIGV4cGxpY2l0IHJldmVyc2VfaXRlcmF0b3IoSXRlcmF0b3IgeCkgCi0gICAgICAgICAgOiBzdXBlcl90KHgpIHt9Ci0KLSAgICAgIHRlbXBsYXRlPGNsYXNzIE90aGVySXRlcmF0b3I+Ci0gICAgICByZXZlcnNlX2l0ZXJhdG9yKAotICAgICAgICAgIHJldmVyc2VfaXRlcmF0b3I8T3RoZXJJdGVyYXRvcj4gY29uc3QmIHIKLSAgICAgICAgICAsIHR5cGVuYW1lIGVuYWJsZV9pZl9jb252ZXJ0aWJsZTxPdGhlckl0ZXJhdG9yLCBJdGVyYXRvcj46OnR5cGUqID0gMAotICAgICAgICAgICkKLSAgICAgICAgICA6IHN1cGVyX3Qoci5iYXNlKCkpCi0gICAgICB7fQotCi0gICBwcml2YXRlOgotICAgICAgdHlwZW5hbWUgc3VwZXJfdDo6cmVmZXJlbmNlIGRlcmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gKm5kbmJvb3N0Ojpwcmlvcih0aGlzLT5iYXNlKCkpOyB9Ci0gICAgCi0gICAgICB2b2lkIGluY3JlbWVudCgpIHsgLS10aGlzLT5iYXNlX3JlZmVyZW5jZSgpOyB9Ci0gICAgICB2b2lkIGRlY3JlbWVudCgpIHsgKyt0aGlzLT5iYXNlX3JlZmVyZW5jZSgpOyB9Ci0KLSAgICAgIHZvaWQgYWR2YW5jZSh0eXBlbmFtZSBzdXBlcl90OjpkaWZmZXJlbmNlX3R5cGUgbikKLSAgICAgIHsKLSAgICAgICAgICB0aGlzLT5iYXNlX3JlZmVyZW5jZSgpICs9IC1uOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3RoZXJJdGVyYXRvcj4KLSAgICAgIHR5cGVuYW1lIHN1cGVyX3Q6OmRpZmZlcmVuY2VfdHlwZQotICAgICAgZGlzdGFuY2VfdG8ocmV2ZXJzZV9pdGVyYXRvcjxPdGhlckl0ZXJhdG9yPiBjb25zdCYgeSkgY29uc3QKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdGhpcy0+YmFzZV9yZWZlcmVuY2UoKSAtIHkuYmFzZSgpOwotICAgICAgfQotICB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ci0gIHJldmVyc2VfaXRlcmF0b3I8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiBtYWtlX3JldmVyc2VfaXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIHgpCi0gIHsKLSAgICAgIHJldHVybiByZXZlcnNlX2l0ZXJhdG9yPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4oeCk7Ci0gIH0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFVkVSU0VfSVRFUkFUT1JfMjMwMjIwMDNUSFdfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjJjODE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLy8gLS0gYmluZC5ocHAgLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgR2FyeSBQb3dlbGwgKGd3cG93ZWxsQGhvdG1haWwuY29tKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIAotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9CSU5EX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQklORF9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9jb3JlLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYmluZF9mdW5jdGlvbnMuaHBwIgotICAgIAotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9jb3JlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2NvcmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDFlYzQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2NvcmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLy8gLS0gY29yZS5ocHAgLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwMCBHYXJ5IFBvd2VsbCAocG93ZWxsZ0BhbWF6b24uY29tKQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0vLyAKLS8vIEluY2x1ZGVzIHRoZSBjb3JlIG9mIExMLCB3aXRob3V0IGFueSByZWFsIGZlYXR1cmVzIGZvciBjbGllbnQ6Ci0vLyAKLS8vIHR1cGxlcywgbGFtYmRhIGZ1bmN0b3JzLCByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gdGVtcGxhdGVzLAotLy8gYXJndW1lbnQgc3Vic3RpdHV0aW9uIG1lY2hhbmlzbSAoc2VsZWN0IGZ1bmN0aW9ucykKLS8vIAotLy8gU29tZSBmdW5jdGlvbmFsaXR5IGNvbWVzIGFzIHdlbGw6Ci0vLyBBc3NpZ25tZW50IGFuZCBzdWJzY3JpcHQgb3BlcmF0b3JzLCBhcyB3ZWxsIGFzIGZ1bmN0aW9uCi0vLyBjYWxsIG9wZXJhdG9yIGZvciBwbGFjZWhvbGRlciB2YXJpYWJsZXMuCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0NPUkVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9DT1JFX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvdHJhbnNmb3JtX3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvY3ZfdHJhaXRzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R1cGxlL3R1cGxlLmhwcCIKLQotLy8gaW5qZWN0IHNvbWUgb2YgdGhlIHR1cGxlIG5hbWVzIGludG8gbGFtYmRhIAotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBsYW1iZGEgewotCi11c2luZyA6Om5kbmJvb3N0Ojp0dXBsZXM6OnR1cGxlOwotdXNpbmcgOjpuZG5ib29zdDo6dHVwbGVzOjpudWxsX3R5cGU7Ci0KLX0gLy8gbGFtYmRhCi19IC8vIGJvb3N0Ci0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9jb25maWcuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z3ZC5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2FyaXR5X2NvZGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYWN0aW9ucy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV90cmFpdHMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9mdW5jdGlvbl9hZGFwdG9ycy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9yZXR1cm5fdHlwZV90cmFpdHMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9zZWxlY3RfZnVuY3Rpb25zLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z1bmN0b3JfYmFzZS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9mdW5jdG9ycy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL3JldC5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbGFtYmRhIHsKLQotbmFtZXNwYWNlIHsKLQotICAvLyBUaGVzZSBhcmUgY29uc3RhbnRzIHR5cGVzIGFuZCBuZWVkIHRvIGJlIGluaXRpYWxpc2VkCi0gIG5kbmJvb3N0OjpsYW1iZGE6OnBsYWNlaG9sZGVyMV90eXBlIGZyZWUxID0gbmRuYm9vc3Q6OmxhbWJkYTo6cGxhY2Vob2xkZXIxX3R5cGUoKTsKLSAgbmRuYm9vc3Q6OmxhbWJkYTo6cGxhY2Vob2xkZXIyX3R5cGUgZnJlZTIgPSBuZG5ib29zdDo6bGFtYmRhOjpwbGFjZWhvbGRlcjJfdHlwZSgpOwotICBuZG5ib29zdDo6bGFtYmRhOjpwbGFjZWhvbGRlcjNfdHlwZSBmcmVlMyA9IG5kbmJvb3N0OjpsYW1iZGE6OnBsYWNlaG9sZGVyM190eXBlKCk7Ci0KLSAgbmRuYm9vc3Q6OmxhbWJkYTo6cGxhY2Vob2xkZXIxX3R5cGUmIF8xID0gZnJlZTE7Ci0gIG5kbmJvb3N0OjpsYW1iZGE6OnBsYWNlaG9sZGVyMl90eXBlJiBfMiA9IGZyZWUyOwotICBuZG5ib29zdDo6bGFtYmRhOjpwbGFjZWhvbGRlcjNfdHlwZSYgXzMgPSBmcmVlMzsKLSAgLy8gXzEsIF8yLCAuLi4gbmFtaW5nIHNjaGVtZSBieSBQZXRlciBEaW1vdgotfSAvLyB1bm5hbWVkCi0gICAKLX0gLy8gbGFtYmRhCi19IC8vIGJvb3N0Ci0gICAKLSAgIAotI2VuZGlmIC8vTkROQk9PU1RfTEFNQkRBX0NPUkVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYWN0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYWN0aW9ucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMjgyMGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2FjdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLS8vIC0tIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0gYWN0aW9ucy5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfQUNUSU9OU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0FDVElPTlNfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLQotCi10ZW1wbGF0ZTxpbnQgQXJpdHksIGNsYXNzIEFjdD4gY2xhc3MgYWN0aW9uOwotCi0vLyB0aGVzZSBuZWVkIHRvIGJlIGRlZmluZWQgaGVyZSwgc2luY2UgdGhlIGNvcnJlc3BvbmRpbmcgbGFtYmRhIAotLy8gZnVuY3Rpb25zIGFyZSBtZW1iZXJzIG9mIGxhbWJkYV9mdW5jdG9yIGNsYXNzZXMKLQotY2xhc3MgYXNzaWdubWVudF9hY3Rpb24ge307Ci1jbGFzcyBzdWJzY3JpcHRfYWN0aW9uIHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyBvdGhlcl9hY3Rpb247Ci0KLS8vIGFjdGlvbiBmb3Igc3BlY2lmeWluZyB0aGUgZXhwbGljaXQgcmV0dXJuIHR5cGUKLXRlbXBsYXRlIDxjbGFzcyBSRVQ+IGNsYXNzIGV4cGxpY2l0X3JldHVybl90eXBlX2FjdGlvbiB7fTsKLQotLy8gYWN0aW9uIGZvciBwcmV2ZW50aW5nIHRoZSBleHBhbnNpb24gb2YgYSBsYW1iZGEgZXhwcmVzc2lvbgotc3RydWN0IHByb3RlY3RfYWN0aW9uIHt9OwotCi0gIC8vIG11c3QgYmUgZGVmaW5lZCBoZXJlLCBjb21tYSBpcyBhIHNwZWNpYWwgY2FzZQotc3RydWN0IGNvbW1hX2FjdGlvbiB7fTsKLQotCi0gIC8vIGFjdGlvbnMsIGZvciB3aGljaCB0aGUgZXhpc3RlbmNlIG9mIHByb3RlY3QgaXMgY2hlY2tlZCBpbiByZXR1cm4gdHlwZSAKLSAgLy8gZGVkdWN0aW9uLgotCi10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBzdHJ1Y3QgaXNfcHJvdGVjdGFibGUgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBOT1RFOiBjb21tYSBhY3Rpb24gaXMgcHJvdGVjdGFibGUuIE90aGVyIHByb3RlY3RhYmxlIGFjdGlvbnMKLS8vIGFyZSBsaXN0ZWQgaW4gb3BlcmF0b3JfYWN0aW9ucy5ocHAKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcHJvdGVjdGFibGU8b3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICAvLyB0aGlzIHR5cGUgaXMgdXNlZCBpbiByZXR1cm4gdHlwZSBkZWR1Y3Rpb25zIHRvIHNpZ25hbCB0aGF0IGRlZHVjdGlvbiAKLSAgLy8gZGlkIG5vdCBmaW5kIGEgcmVzdWx0LiBJdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGFuIGVycm9yLCBpdCBjb21tb25seQotICAvLyBtZWFucyB0aGF0IHNvbWV0aGluZyBlbHNlIHNob3VsZCBiZSB0cmllZC4KLSAgY2xhc3MgdW5zcGVjaWZpZWQge307Ci19Ci0KLSAgLy8gZnVuY3Rpb24gYWN0aW9uIGlzIGEgc3BlY2lhbCBjYXNlOiBiaW5kIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkIHdpdGggCi0gIC8vIHRoZSByZXR1cm4gdHlwZSBzcGVjaWFsaXplZCBleHBsaWNpdGx5IGUuZy4gYmluZDxpbnQ+KGZvbyk7Ci0gIC8vIElmIHRoaXMgY2FsbCBzeW50YXggaXMgdXNlZCwgdGhlIHJldHVybiB0eXBlIGlzIHN0b3JlZCBpbiB0aGUgbGF0dGVyCi0gIC8vIGFyZ3VtZW50IG9mIGZ1bmN0aW9uX2FjdGlvbiB0ZW1wbGF0ZS4gT3RoZXJ3aXNlIHRoZSBhcmd1bWVudCBnZXRzIHRoZSB0eXBlCi0gIC8vICd1bnNwZWNpZmllZCcuCi0gIC8vIFRoaXMgYXJndW1lbnQgaXMgb25seSByZWxldmFudCBpbiB0aGUgcmV0dXJuIHR5cGUgZGVkdWN0aW9uIGNvZGUKLXRlbXBsYXRlIDxpbnQgSSwgY2xhc3MgUmVzdWx0X3R5cGUgPSBkZXRhaWw6OnVuc3BlY2lmaWVkPiAKLWNsYXNzIGZ1bmN0aW9uX2FjdGlvbiB7fTsKLSAgIAotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDEsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjwyLCBUPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uX2FkYXB0b3I8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxBMT46OnR5cGU+OjoKLSAgICAgIHRlbXBsYXRlIGFwcGx5PFJFVD4oYTEsIGEyKTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDMsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSwgYTIsIGEzKTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDQsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSwgYTIsIGEzLCBhNCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjw1LCBUPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1KSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uX2FkYXB0b3I8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxBMT46OnR5cGU+OjoKLSAgICAgIHRlbXBsYXRlIGFwcGx5PFJFVD4oYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDYsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIAotICAgICAgICAgICBjbGFzcyBBNj4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2KSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uX2FkYXB0b3I8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxBMT46OnR5cGU+OjoKLSAgICAgIHRlbXBsYXRlIGFwcGx5PFJFVD4oYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjw3LCBUPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCAgCi0gICAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjw4LCBUPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCAKLSAgICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIAotICAgICAgICAgICAgICAgICAgIEE4JiBhOCkgewotICAgIHJldHVybiBmdW5jdGlvbl9hZGFwdG9yPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8QTE+Ojp0eXBlPjo6Ci0gICAgICB0ZW1wbGF0ZSBhcHBseTxSRVQ+KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjw5LCBUPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCAKLSAgICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3LCAKLSAgICAgICAgICAgICAgICAgICBBOCYgYTgsIEE5JiBhOSkgewotICAgIHJldHVybiBmdW5jdGlvbl9hZGFwdG9yPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8QTE+Ojp0eXBlPjo6Ci0gICAgICB0ZW1wbGF0ZSBhcHBseTxSRVQ+KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBmdW5jdGlvbl9hY3Rpb248MTAsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIAotICAgICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSwgY2xhc3MgQTEwPgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgCi0gICAgICAgICAgICAgICAgICAgQTgmIGE4LCBBOSYgYTksIEExMCYgYTEwKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uX2FkYXB0b3I8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxBMT46OnR5cGU+OjoKLSAgICAgIHRlbXBsYXRlIGFwcGx5PFJFVD4oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwKTsKLSAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9hcml0eV9jb2RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9hcml0eV9jb2RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczNTYwOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYXJpdHlfY29kZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLy8gLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfQVJJVFlfQ09ERV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0FSSVRZX0NPREVfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3RyYW5zZm9ybV90cmFpdHMuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0vLyBUaGVzZSBjb25zdGFudHMgc3RhdGUsIHdoZXRoZXIgYSBsYW1iZGFfZnVuY3RvciBpbnN0YW50aWF0aW9uIHJlc3VsdHMgZnJvbSAKLS8vIGFuIGV4cHJlc3Npb24gd2hpY2ggY29udGFpbnMgbm8gcGxhY2Vob2xkZXJzIChOT05FKSwgCi0vLyBvbmx5IGZyZWUxIHBsYWNlaG9sZGVycyAoRklSU1QpLCAKLS8vIGZyZWUyIHBsYWNlaG9sZGVycyBhbmQgbWF5YmUgZnJlZTEgcGxhY2Vob2xkZXJzIChTRUNPTkQpLAotLy8gZnJlZTMgYW5kIG1heWJlIGZyZWUxIGFuZCBmcmVlMiBwbGFjZWhvbGRlcnMgKFRISVJEKSwKLS8vIGZyZWVFIHBsYWNlaG9sZGVycyBhbmQgbWF5YmUgZnJlZTEgYW5kIGZyZWUyICAoRVhDRVBUSU9OKS4KLS8vIFJFVEhST1cgbWVhbnMsIHRoYXQgYSByZXRocm93IGV4cHJlc3Npb24gaXMgdXNlZCBzb21ld2hlcmUgaW4gdGhlIGxhbWJkYV9mdW5jdG9yLgotCi1lbnVtIHsgTk9ORSAgICAgICAgICAgICA9IDB4MDAsIC8vIE5vdGljZSB3ZSBhcmUgdXNpbmcgYml0cyBhcyBmbGFncyBoZXJlLgotICAgICAgIEZJUlNUICAgICAgICAgICAgPSAweDAxLCAKLSAgICAgICBTRUNPTkQgICAgICAgICAgID0gMHgwMiwgCi0gICAgICAgVEhJUkQgICAgICAgICAgICA9IDB4MDQsIAotICAgICAgIEVYQ0VQVElPTiAgICAgICAgPSAweDA4LCAKLSAgICAgICBSRVRIUk9XICAgICAgICAgID0gMHgxMH07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBnZXRfdHVwbGVfYXJpdHk7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGdldF9hcml0eV87Ci0KLX0gLy8gZW5kIGRldGFpbDsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBnZXRfYXJpdHkgewotCi0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gZGV0YWlsOjpnZXRfYXJpdHlfPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGU+Ojp0eXBlPjo6dmFsdWUpOwotCi19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBnZXRfYXJpdHlfIHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgZ2V0X2FyaXR5XzxsYW1iZGFfZnVuY3RvcjxUPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBnZXRfYXJpdHk8VD46OnZhbHVlKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEFjdGlvbiwgY2xhc3MgQXJncz4KLXN0cnVjdCBnZXRfYXJpdHlfPGxhbWJkYV9mdW5jdG9yX2Jhc2U8QWN0aW9uLCBBcmdzPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBnZXRfdHVwbGVfYXJpdHk8QXJncz46OnZhbHVlKTsKLX07Ci0KLXRlbXBsYXRlPGludCBJPgotc3RydWN0IGdldF9hcml0eV88cGxhY2Vob2xkZXI8ST4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gSSk7Ci19OwotCi19IC8vIGRldGFpbCAKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBnZXRfdHVwbGVfYXJpdHkgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IGdldF9hcml0eTx0eXBlbmFtZSBUOjpoZWFkX3R5cGU+Ojp2YWx1ZSB8IGdldF90dXBsZV9hcml0eTx0eXBlbmFtZSBUOjp0YWlsX3R5cGU+Ojp2YWx1ZSk7Ci19OwotCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBnZXRfdHVwbGVfYXJpdHk8bnVsbF90eXBlPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci19OwotCi0KLSAgLy8gRG9lcyBUIGhhdmUgcGxhY2Vob2xkZXI8ST4gYXMgaXQncyBzdWJleHByZXNzaW9uPwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgST4KLXN0cnVjdCBoYXNfcGxhY2Vob2xkZXIgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoZ2V0X2FyaXR5PFQ+Ojp2YWx1ZSAmIEkpICE9IDApOwotfTsgCi0KLXRlbXBsYXRlPGludCBJLCBpbnQgSj4KLXN0cnVjdCBpbmNsdWRlc19wbGFjZWhvbGRlciB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChKICYgSSkgIT0gMCk7Ci19OwotCi10ZW1wbGF0ZTxpbnQgSSwgaW50IEo+Ci1zdHJ1Y3QgbGFja3NfcGxhY2Vob2xkZXIgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoKEogJiBJKSA9PSAwKSk7Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYmluZF9mdW5jdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2JpbmRfZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM3ZjRlOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYmluZF9mdW5jdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg3OSArMCwwIEBACi0vLyAtLSBiaW5kX2Z1bmN0aW9ucy5ocHAgLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfQklORF9GVU5DVElPTlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9CSU5EX0ZVTkNUSU9OU19IUFAKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0jaWZkZWYgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HCi0KLSAgLy8gZ2NjIDIuOTYgaW5zdGFudGlhdGVzIGJpbmQgZnVuY3Rpb25zIGl0IGRvZXMgbm90IGV2ZW4gY2FsbC4KLSAgLy8gVGhlc2UgaW5zdGFudGlhdGlvbnMgbGVhZCB0byBpbmNvcnJlY3QgdHlwZXMgaW4gdGhlIHJldHVybiB0eXBlLCAKLSAgLy8gYW5kIGEgY29tcGlsYXRpb24gZXJyb3IgcmVzdWx0cy4gCi0gIC8vIFRoaXMgdHdlYWtpbmcgaXMgdG8gcHJldmVudCB0aGUgZm9ybWF0aW9uIG9mIHRoZSBlcnJvbmVvdXMgdHlwZS4KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgY29uc3RpZnlfbm9uX2Z1bmNzIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgZGV0YWlsOjpJRl90eXBlPG5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWUsCi0gICAgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD4sCi0gICAgbmRuYm9vc3Q6OmFkZF9jb25zdDxUPgotICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19Ci0jZW5kaWYKLS8vIDEtYXJndW1lbnQgYmluZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSNpZm5kZWYgTkROQk9PU1RfUkVGX1RPX0ZVTkNfQ09ORkxJQ1RTX1dJVEhfUkVGX1RPX1QKLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQ+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8UmVzdWx0KCYpKCk+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoJiBhMSkoKSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPFJlc3VsdCgmKSgpPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8UmVzdWx0KCYpKCk+Ojp0eXBlCi0gICAgICAoYTEpCi0gICAgKTsKLX0KLSNlbmRpZgotCi0gI2lmbmRlZiBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxPiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMT46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDE+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPGNvbnN0IEFyZzE+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxPjo6dHlwZQotICAgICAgKGExKQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzE+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMT46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDEsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMT46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPGNvbnN0IEFyZzE+Ojp0eXBlCi0gICAgICAoYTEpCi0gICAgKTsKLX0KLQotCi0gI2Vsc2UgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxPiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDE+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgICAgKGExKQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQ+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8UmVzdWx0KCopKCk+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKSgpKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDEsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8UmVzdWx0KCopKCk+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoKikoKT46OnR5cGUKLSAgICAgIChhMSkKLSAgICApOwotfQotCi0KLSNlbmRpZiAKLQotLy8gMi1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoJikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoJmExKShQYXIxKSwgY29uc3QgQXJnMiYgYTIpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwyLCBmdW5jdGlvbl9hY3Rpb248MiwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoJikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoJikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgICAoYTEsIGEyKQotICAgICk7Ci19Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyPiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMSwgY29uc3QgQXJnMj46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyPiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxLCBjb25zdCBBcmcyPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMSwgY29uc3QgQXJnMj46OnR5cGUKLSAgICAgIChhMSwgYTIpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxLCBjb25zdCBBcmcyPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MiwgZnVuY3Rpb25fYWN0aW9uPDIsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMSwgY29uc3QgQXJnMj46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPGNvbnN0IEFyZzEsIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgICAoYTEsIGEyKQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzI+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwyLCBmdW5jdGlvbl9hY3Rpb248Mj4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwyLCBmdW5jdGlvbl9hY3Rpb248Mj4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MiwgZnVuY3Rpb25fYWN0aW9uPDIsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoKikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKShQYXIxKSwgY29uc3QgQXJnMiYgYTIpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwyLCBmdW5jdGlvbl9hY3Rpb248MiwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoKikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoKikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgICAoYTEsIGEyKQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gMy1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMz4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyKSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmYTEpKFBhcjEsIFBhcjIpLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwzLCBmdW5jdGlvbl9hY3Rpb248MywgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMykKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDM+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDM+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMz4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDMsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMykKLSAgICApOwotfQotCi0KLSAjZWxzZSAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDM+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzPiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMz4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMykKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDMsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCogY29uc3QgJiBhMSkoUGFyMSwgUGFyMiksIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzKQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gNC1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgQXJnMiwKLSAgICAgICAgICBjbGFzcyBBcmczLCBjbGFzcyBBcmc0PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NCwgZnVuY3Rpb25fYWN0aW9uPDQsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCZhMSkoUGFyMSwgUGFyMiwgUGFyMyksIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywKLSAgICAgY29uc3QgQXJnNCYgYTQpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248NCwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQpCi0gICAgKTsKLX0KLSNlbmRpZgotCi0gI2lmbmRlZiBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnND4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248ND4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnND4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0KQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQ+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248ND4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248ND4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NCwgZnVuY3Rpb25fYWN0aW9uPDQsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248NCwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIEFyZzIsCi0gICAgICAgICAgY2xhc3MgQXJnMywgY2xhc3MgQXJnND4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzKSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyJiBhMiwKLSAgICAgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NCwgZnVuY3Rpb25fYWN0aW9uPDQsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzKSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzKSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0KQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gNS1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDUsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LAotICAgICAgY29uc3QgQXJnNQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQpLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsCi0gICAgIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsCi0gICAgICAgIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsCi0gICAgICAgIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUpCi0gICAgKTsKLX0KLSNlbmRpZgotCi0gI2lmbmRlZiBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDU+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNQotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzU+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw1LCBmdW5jdGlvbl9hY3Rpb248NSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDUsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1KQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzU+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw1LCBmdW5jdGlvbl9hY3Rpb248NT4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDU+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIFBhcjQsCi0gICAgICAgICAgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwKLSAgICAgIGNvbnN0IEFyZzUKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0KSwgY29uc3QgQXJnMiYgYTIsCi0gICAgIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw1LCBmdW5jdGlvbl9hY3Rpb248NSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LAotICAgICAgICBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LAotICAgICAgICBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1KQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gNi1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzY+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw2LCBmdW5jdGlvbl9hY3Rpb248NiwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCZhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSksIGNvbnN0IEFyZzImIGEyLAotICAgICBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQotICAgICk7Ci19Ci0jZW5kaWYKLQotICNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDYsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKLSAgICApOwotfQotCi0KLSAjZWxzZSAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzY+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw2LCBmdW5jdGlvbl9hY3Rpb248Nj4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDYsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiYgYTIsCi0gICAgIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDYsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCi0gICAgKTsKLX0KLQotCi0gI2VuZGlmIAotCi0vLyA3LWFyZ3VtZW50IGJpbmQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9UT19GVU5DX0NPTkZMSUNUU19XSVRIX1JFRl9UT19UCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIFBhcjYsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNz4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDcsIGZ1bmN0aW9uX2FjdGlvbjw3LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoJmExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2KSwgY29uc3QgQXJnMiYgYTIsCi0gICAgIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LAotICAgICBjb25zdCBBcmc3JiBhNykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDcsIGZ1bmN0aW9uX2FjdGlvbjw3LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzc+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248Nz4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDcsIGZ1bmN0aW9uX2FjdGlvbjw3PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzc+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248NywgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgY29uc3QgQXJnNwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDcsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCi0gICAgKTsKLX0KLQotCi0gI2Vsc2UgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwKLSAgICAgICAgICBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDc+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDc+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDcsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248NywgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIFBhcjQsCi0gICAgICAgICAgY2xhc3MgUGFyNSwgY2xhc3MgUGFyNiwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDcsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYpLAotICAgICBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwKLSAgICAgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDcsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gOC1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBQYXI2LCBjbGFzcyBQYXI3LCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLAotICAgICAgICAgIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzg+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OCwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNyksIGNvbnN0IEFyZzIsCi0gICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCZhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNyksIGNvbnN0IEFyZzImIGEyLAotICAgICBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwKLSAgICAgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzg+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDgsIGZ1bmN0aW9uX2FjdGlvbjw4LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsCi0gICAgICBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDgsIGZ1bmN0aW9uX2FjdGlvbjw4PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBQYXI2LCBjbGFzcyBQYXI3LCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLAotICAgICAgICAgIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzg+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OCwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNyksIGNvbnN0IEFyZzIsCi0gICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCogY29uc3QgJiBhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNyksCi0gICAgIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1LAotICAgICBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkKLSAgICApOwotfQotCi0KLSAjZW5kaWYgCi0KLS8vIDktYXJndW1lbnQgYmluZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSNpZm5kZWYgTkROQk9PU1RfUkVGX1RPX0ZVTkNfQ09ORkxJQ1RTX1dJVEhfUkVGX1RPX1QKLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIFBhcjQsCi0gICAgICAgICAgY2xhc3MgUGFyNSwgY2xhc3MgUGFyNiwgY2xhc3MgUGFyNywgY2xhc3MgUGFyOCwgY2xhc3MgQXJnMiwKLSAgICAgICAgICBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LAotICAgICAgICAgIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzk+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCksIGNvbnN0IEFyZzIsCi0gICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LAotICAgICAgY29uc3QgQXJnOQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLAotICAgICBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwKLSAgICAgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwgY29uc3QgQXJnOSYgYTkpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzk+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OT4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsCi0gICAgIGNvbnN0IEFyZzkmIGE5KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDk+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsCi0gICAgIGNvbnN0IEFyZzkmIGE5KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkKLSAgICApOwotfQotCi0KLSAjZWxzZSAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzk+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OT4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDksIGZ1bmN0aW9uX2FjdGlvbjw5PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsCi0gICAgICAgIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDksIGZ1bmN0aW9uX2FjdGlvbjw5LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIFBhcjYsIGNsYXNzIFBhcjcsIGNsYXNzIFBhcjgsIGNsYXNzIEFyZzIsCi0gICAgICAgICAgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywKLSAgICAgICAgICBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLCBjb25zdCBBcmcyLAotICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwKLSAgICAgIGNvbnN0IEFyZzkKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4KSwKLSAgICAgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUsCi0gICAgIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsIGNvbnN0IEFyZzkmIGE5KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpCi0gICAgKTsKLX0KLQotCi0gI2VuZGlmIAotCi0vLyAxMC1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBQYXI2LCBjbGFzcyBQYXI3LCBjbGFzcyBQYXI4LCBjbGFzcyBQYXI5LAotICAgICAgICAgIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsCi0gICAgICAgICAgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOSwgY2xhc3MgQXJnMTA+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4LCBQYXI5KSwKLSAgICAgIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsCi0gICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgsIFBhcjkpLAotICAgICBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwKLSAgICAgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwgY29uc3QgQXJnOSYgYTksCi0gICAgIGNvbnN0IEFyZzEwJiBhMTApIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCwgUGFyOSksCi0gICAgICAgIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsCi0gICAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgsIFBhcjkpLAotICAgICAgICBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgICBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCkKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzksIGNsYXNzIEFyZzEwPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MTAsIGZ1bmN0aW9uX2FjdGlvbjwxMD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSwgY29uc3QgQXJnMTAmIGExMCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTA+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwKQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOSwKLSAgICAgICAgICBjbGFzcyBBcmcxMD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTAsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSwgY29uc3QgQXJnMTAmIGExMCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTAsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApCi0gICAgKTsKLX0KLQotCi0gI2Vsc2UgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwKLSAgICAgICAgICBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5LCBjbGFzcyBBcmcxMD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTA+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwKLSAgICAgIGNvbnN0IEFyZzEwCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSwgY29uc3QgQXJnMTAmIGExMCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTA+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5LAotICAgICAgICAgIGNsYXNzIEFyZzEwPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MTAsIGZ1bmN0aW9uX2FjdGlvbjwxMCwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksCi0gICAgICBjb25zdCBBcmcxMAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwKLSAgICAgY29uc3QgQXJnOSYgYTksIGNvbnN0IEFyZzEwJiBhMTApIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBQYXI2LCBjbGFzcyBQYXI3LCBjbGFzcyBQYXI4LCBjbGFzcyBQYXI5LAotICAgICAgICAgIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsCi0gICAgICAgICAgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOSwgY2xhc3MgQXJnMTA+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4LCBQYXI5KSwKLSAgICAgIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsCi0gICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgsCi0gICAgIFBhcjkpLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwKLSAgICAgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwgY29uc3QgQXJnOSYgYTksCi0gICAgIGNvbnN0IEFyZzEwJiBhMTApIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCwgUGFyOSksCi0gICAgICAgIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsCi0gICAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgsIFBhcjkpLAotICAgICAgICBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgICBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCkKLSAgICApOwotfQotCi0KLSAjZW5kaWYgCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYSAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2Z1bmN0aW9uX2FkYXB0b3JzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9mdW5jdGlvbl9hZGFwdG9ycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MjczNTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2Z1bmN0aW9uX2FkYXB0b3JzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4OSArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtICBmdW5jdGlvbl9hZGFwdG9ycy5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfRlVOQ1RJT05fQURBUFRPUlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9GVU5DVElPTl9BREFQVE9SU19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90dXBsZS90dXBsZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvc2FtZV90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3V0aWxpdHkvcmVzdWx0X29mLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RFTVBMQVRFX0RFRihzaWcpCi0KLXRlbXBsYXRlPGNsYXNzIFR1cGxlPgotc3RydWN0IHJlbW92ZV9yZWZlcmVuY2VzX2Zyb21fZWxlbWVudHMgewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmNvbnM8Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8dHlwZW5hbWUgVHVwbGU6OmhlYWRfdHlwZT46OnR5cGUsCi0gICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZXNfZnJvbV9lbGVtZW50czx0eXBlbmFtZSBUdXBsZTo6dGFpbF90eXBlPjo6dHlwZQotICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVtb3ZlX3JlZmVyZW5jZXNfZnJvbV9lbGVtZW50czxuZG5ib29zdDo6dHVwbGVzOjpudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBuZG5ib29zdDo6dHVwbGVzOjpudWxsX3R5cGUgdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEZ1bmM+IHN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yIHsKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8RnVuYz46OnR5cGUgcGxhaW5GOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fUkVTVUxUX09GKQotICAvLyBTdXBwb3J0IGZ1bmN0b3JzIHRoYXQgdXNlIHRoZSBuZG5ib29zdDo6cmVzdWx0X29mIHJldHVybiB0eXBlIGNvbnZlbnRpb24uCi0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlLCBpbnQgTGVuZ3RoLCBib29sIEhhc1NpZz4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI7Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlLCBpbnQgTGVuZ3RoPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgTGVuZ3RoLCB0cnVlPgotICAgIDogcGxhaW5GOjp0ZW1wbGF0ZSBzaWc8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZXNfZnJvbV9lbGVtZW50czxUdXBsZT46OnR5cGUKLSAgICAgID4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgMCwgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKCk+Ci0gIHt9OwotICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI8VHVwbGUsIDEsIGZhbHNlPgotICAgIDogcmVzdWx0X29mPHBsYWluRigKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDEsIFR1cGxlPjo6dHlwZSkKLSAgICAgID4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgMiwgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MiwgVHVwbGU+Ojp0eXBlKQotICAgICAgPgotICB7fTsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCAzLCBmYWxzZT4KLSAgICA6IHJlc3VsdF9vZjxwbGFpbkYoCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwxLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwyLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwzLCBUdXBsZT46OnR5cGUpCi0gICAgICA+Ci0gIHt9OwotICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI8VHVwbGUsIDQsIGZhbHNlPgotICAgIDogcmVzdWx0X29mPHBsYWluRigKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDEsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDIsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDMsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDQsIFR1cGxlPjo6dHlwZSkKLSAgICAgID4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgNSwgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MiwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MywgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NCwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NSwgVHVwbGU+Ojp0eXBlKQotICAgICAgPgotICB7fTsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCA2LCBmYWxzZT4KLSAgICA6IHJlc3VsdF9vZjxwbGFpbkYoCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwxLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwyLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwzLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw0LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw1LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw2LCBUdXBsZT46OnR5cGUpCi0gICAgICA+Ci0gIHt9OwotICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI8VHVwbGUsIDcsIGZhbHNlPgotICAgIDogcmVzdWx0X29mPHBsYWluRigKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDEsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDIsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDMsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDQsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDUsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDYsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDcsIFR1cGxlPjo6dHlwZSkKLSAgICAgID4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgOCwgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MiwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MywgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NCwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NiwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NywgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8OCwgVHVwbGU+Ojp0eXBlKQotICAgICAgPgotICB7fTsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCA5LCBmYWxzZT4KLSAgICA6IHJlc3VsdF9vZjxwbGFpbkYoCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwxLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwyLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwzLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw0LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw1LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw2LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw3LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw4LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw5LCBUdXBsZT46OnR5cGUpCi0gICAgICA+Ci0gIHt9OwotCi0gIC8vIHdlIGRvIG5vdCBrbm93IHRoZSByZXR1cm4gdHlwZSBvZmYtaGFuZCwgd2UgbXVzdCBhc2sgaXQgZnJvbSBGdW5jCi0gIC8vIFRvIHNpZyB3ZSBwYXNzIGEgY29ucyBsaXN0LCB3aGVyZSB0aGUgaGVhZCBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0IHR5cGUKLSAgLy8gaXRzZWxmIChwb3RlbnRpYWxseSBjdi1xdWFsaWZpZWQpCi0gIC8vIGFuZCB0aGUgdGFpbCBjb250YWlucyB0aGUgdHlwZXMgb2YgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gYmUgcGFzc2VkCi0gIC8vIHRvIHRoZSBmdW5jdGlvbiBvYmplY3QuIFRoZSBhcmd1bWVudHMgY2FuIGJlIGN2IHF1YWxpZmllZAotICAvLyBhcyB3ZWxsLgotICB0ZW1wbGF0ZSA8Y2xhc3MgQXJncz4KLSAgc3RydWN0IHNpZwotICAgIDogcmVzdWx0X2NvbnZlcnRlcjwKLSAgICAgICAgQXJncwotICAgICAgLCB0dXBsZXM6Omxlbmd0aDx0eXBlbmFtZSBBcmdzOjp0YWlsX3R5cGU+Ojp2YWx1ZQotICAgICAgLCBkZXRhaWw6Omhhc19zaWc8cGxhaW5GPjo6dmFsdWUKLSAgICAgID4KLSAge307Ci0jZWxzZSAvLyBORE5CT09TVF9OT19SRVNVTFRfT0YKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQXJncz4gY2xhc3Mgc2lnIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8RnVuYz46OnR5cGUgcGxhaW5GOwotICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBwbGFpbkY6OnRlbXBsYXRlIHNpZzwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZXNfZnJvbV9lbGVtZW50czxBcmdzPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLSAgfTsKLSNlbmRpZgotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTE+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExKSB7Ci0gICAgcmV0dXJuIGExKCk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIpIHsKLSAgICByZXR1cm4gYTEoYTIpOwotICB9Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzKSB7Ci0gICAgcmV0dXJuIGExKGEyLCBhMyk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCwgYTUpOwotICB9Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2KSB7Ci0gICAgcmV0dXJuIGExKGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCAKLSAgICAgICAgICAgY2xhc3MgQTc+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBNyYgYTcpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCAKLSAgICAgICAgICAgY2xhc3MgQTcsIGNsYXNzIEE4PgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQTcmIGE3LCBBOCYgYTgpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICB9Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgCi0gICAgICAgICAgIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBNyYgYTcsIEE4JiBhOCwgQTkmIGE5KSB7Ci0gICAgcmV0dXJuIGExKGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCAKLSAgICAgICAgICAgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSwgY2xhc3MgQTEwPgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQTcmIGE3LCBBOCYgYTgsIEE5JiBhOSwgQTEwJiBhMTApIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgRnVuYz4gc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8Y29uc3QgRnVuYz47IC8vIGVycm9yIAotCi0vLyAtLSBmdW5jdGlvbiBhZGFwdG9ycyB3aXRoIGRhdGEgbWVtYmVyIGFjY2VzcwotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgVD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFQgT2JqZWN0OjoqPiB7Ci0KLSAgLy8gIHR5cGVkZWYgZGV0YWlsOjp1bnNwZWNpZmllZCB0eXBlOwotCi0gIC8vIFQgY2FuIGhhdmUgcXVhbGlmaWVycyBhbmQgY2FuIGJlIGEgcmVmZXJlbmNlIHR5cGUKLSAgLy8gV2UgZ2V0IHRoZSByZXR1cm4gdHlwZSBieSBhZGRpbmcgY29uc3QsIGlmIHRoZSBvYmplY3QgdGhyb3VnaCB3aGljaAotICAvLyB0aGUgZGF0YSBtZW1iZXIgaXMgYWNjZXNzZWQgaXMgY29uc3QsIGFuZCBmaW5hbGx5IGFkZGluZyBhIHJlZmVyZW5jZQotICB0ZW1wbGF0ZTxjbGFzcyBBcmdzPiBjbGFzcyBzaWcgeyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmVsZW1lbnQ8MSwgQXJncz46OnR5cGUgYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPAotICAgICAgYXJndW1lbnRfdHlwZQotICAgID46OnR5cGUgdW5yZWZfdHlwZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjxuZG5ib29zdDo6aXNfY29uc3Q8dW5yZWZfdHlwZT46OnZhbHVlLAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9jb25zdDxUPjo6dHlwZSwKLSAgICAgIFQKLSAgICA+OjpSRVQgcHJvcGVybHlfY29uc3RlZF9yZXR1cm5fdHlwZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjxuZG5ib29zdDo6aXNfdm9sYXRpbGU8dW5yZWZfdHlwZT46OnZhbHVlLAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF92b2xhdGlsZTxwcm9wZXJseV9jb25zdGVkX3JldHVybl90eXBlPjo6dHlwZSwKLSAgICAgIHByb3Blcmx5X2NvbnN0ZWRfcmV0dXJuX3R5cGUKLSAgICA+OjpSRVQgcHJvcGVybHlfY3ZkX3JldHVybl90eXBlOwotCi0KLSAgcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjxuZG5ib29zdDo6aXNfcmVmZXJlbmNlPGFyZ3VtZW50X3R5cGU+Ojp2YWx1ZSwKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPHByb3Blcmx5X2N2ZF9yZXR1cm5fdHlwZT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlCi0gICAgPjo6UkVUIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJFVCBhcHBseSggVCBPYmplY3Q6OipkYXRhLCBPYmplY3QmIG8pIHsKLSAgICByZXR1cm4gby4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIGNvbnN0IE9iamVjdCYgbykgewotICAgIHJldHVybiBvLipkYXRhOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoIFQgT2JqZWN0OjoqZGF0YSwgdm9sYXRpbGUgT2JqZWN0JiBvKSB7Ci0gICAgcmV0dXJuIG8uKmRhdGE7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJFVCBhcHBseSggVCBPYmplY3Q6OipkYXRhLCBjb25zdCB2b2xhdGlsZSBPYmplY3QmIG8pIHsKLSAgICByZXR1cm4gby4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIE9iamVjdCogbykgewotICAgIHJldHVybiBvLT4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIGNvbnN0IE9iamVjdCogbykgewotICAgIHJldHVybiBvLT4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIHZvbGF0aWxlIE9iamVjdCogbykgewotICAgIHJldHVybiBvLT4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIGNvbnN0IHZvbGF0aWxlIE9iamVjdCogbykgewotICAgIHJldHVybiBvLT4qZGF0YTsKLSAgfQotfTsKLQotLy8gLS0gZnVuY3Rpb24gYWRhcHRvcnMgd2l0aCAxIGFyZ3VtZW50IGFwcGx5Ci0gICAKLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKHZvaWQpPiB7Ci0gIAotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKSgpKSB7Ci0gICAgcmV0dXJuIGZ1bmMoKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoKikodm9pZCk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKSgpKSB7Ci0gICAgcmV0dXJuIGZ1bmMoKTsKLSAgfQotfTsKLQotCi0vLyAtLSBmdW5jdGlvbiBhZGFwdG9ycyB3aXRoIDIgYXJndW1lbnQgYXBwbHkKLXRlbXBsYXRlIDxjbGFzcyBPYmplY3QsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoT2JqZWN0OjoqKSgpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoKSBjb25zdCwgY29uc3QgT2JqZWN0KiBvKSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKCkgY29uc3QsIGNvbnN0IE9iamVjdCYgbykgewotICAgIHJldHVybiAoby4qZnVuYykoKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKCk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKSgpLCBPYmplY3QqIG8pIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKSgpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoKSwgT2JqZWN0JiBvKSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKSgpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxKSwgQTEmIGExKSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0ICgqKShBcmcxKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxKSwgQTEmIGExKSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggMyBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEpIGNvbnN0LCBjb25zdCBPYmplY3QqIG8sIAotICAgIEExJiBhMSkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxKSBjb25zdCwgY29uc3QgT2JqZWN0JiBvLCAKLSAgICBBMSYgYTEpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEpLCBPYmplY3QqIG8sIEExJiBhMSkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxKSwgT2JqZWN0JiBvLCBBMSYgYTEpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoQXJnMSwgQXJnMik+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIpLCBBMSYgYTEsIEEyJiBhMikgewotICAgIHJldHVybiBmdW5jKGExLCBhMik7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEsIEFyZzIpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyKSwgQTEmIGExLCBBMiYgYTIpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggNCBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyKSBjb25zdCwgY29uc3QgT2JqZWN0KiBvLCBBMSYgYTEsIEEyJiBhMikgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMik7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIpIGNvbnN0LCBjb25zdCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyKSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKShhMSwgYTIpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMik+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyKSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiksIE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMik7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKEFyZzEsIEFyZzIsIEFyZzMpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoUmVzdWx0ICgqZnVuYykoQXJnMSwgQXJnMiwgQXJnMyksIEExJiBhMSwgQTImIGEyLCBBMyYgYTMpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoKikoQXJnMSwgQXJnMiwgQXJnMyk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczKSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMykgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggNSBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMykgY29uc3QsIGNvbnN0IE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMykgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMykgY29uc3QsIGNvbnN0IE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMykgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMyk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPYmplY3QsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoT2JqZWN0OjoqKShBcmcxLCBBcmcyLCBBcmczKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMpIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKShhMSwgYTIsIGEzKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMpLCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxLCBBcmcyLCBBcmczLCBBcmc0KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0ICgqKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggNiBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpIGNvbnN0LCBjb25zdCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KSBjb25zdCwgY29uc3QgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KSwgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSkgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggNyBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1KSBjb25zdCwgY29uc3QgT2JqZWN0KiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpIGNvbnN0LCBjb25zdCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1KSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1KSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSksIE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoUmVzdWx0ICgqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiksIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoKikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNik+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNikgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggOCBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNikgY29uc3QsIGNvbnN0IE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNikgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNikgY29uc3QsIGNvbnN0IE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNikgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPYmplY3QsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoT2JqZWN0OjoqKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYpIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpLCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0ICgqKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggOSBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpIGNvbnN0LCBjb25zdCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNykgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KSBjb25zdCwgY29uc3QgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNykgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KSwgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIEE4JiBhOCkgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3LCBBOCYgYTgpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggMTAgYXJndW1lbnQgYXBwbHkKLXRlbXBsYXRlIDxjbGFzcyBPYmplY3QsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoT2JqZWN0OjoqKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KSBjb25zdD4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCkgY29uc3QsIGNvbnN0IE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3LCBBOCYgYTgpIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KSBjb25zdCwgY29uc3QgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIEE4JiBhOCkgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KSwgT2JqZWN0KiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIEE4JiBhOCkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpLCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgQTgmIGE4KSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4LCBBcmc5KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgsIEFyZzkpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIEE4JiBhOCwgQTkmIGE5KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgsIEFyZzkpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoUmVzdWx0ICgqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCwgQXJnOSksIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgQTgmIGE4LCBBOSYgYTkpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLSAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2lzX2luc3RhbmNlX29mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9pc19pbnN0YW5jZV9vZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMDM1OTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2lzX2luc3RhbmNlX29mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtIGlzX2luc3RhbmNlX29mLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAyMDAxIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JU19JTlNUQU5DRV9PRgotI2RlZmluZSBORE5CT09TVF9MQU1CREFfSVNfSU5TVEFOQ0VfT0YKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiIC8vIGZvciBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jb252ZXJzaW9uX3RyYWl0cy5ocHAiIC8vIGZvciBpc19jb252ZXJ0aWJsZQotI2luY2x1ZGUgIm5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0XzJuZC5ocHAiCi0KLS8vIGlzX2luc3RhbmNlX29mIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAKLS8vIGlzX2luc3RhbmNlX29mX248QSwgQj46OnZhbHVlIGlzIHRydWUsIGlmIHR5cGUgQSBpcyAKLS8vIGFuIGluc3RhbnRpYXRpb24gb2YgYSB0ZW1wbGF0ZSBCLCBvciBBIGRlcml2ZXMgZnJvbSBhbiBpbnN0YW50aWF0aW9uIAotLy8gb2YgdGVtcGxhdGUgQgotLy8KLS8vIG4gaXMgdGhlIG51bWJlciBvZiB0ZW1wbGF0ZSBhcmd1bWVudHMgZm9yIEIKLS8vIAotLy8gRXhhbXBsZToKLS8vIGlzX2luc3RhbmNlX29mXzI8c3RkOjppc3RyZWFtLCBiYXNpY19zdHJlYW0+Ojp2YWx1ZSA9PSB0cnVlCi0KLS8vIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiB3YXMgc29tZXdoYXQgZGlmZmVyZW50LCB3aXRoIGRpZmZlcmVudCB2ZXJzaW9ucwotLy8gZm9yIGRpZmZlcmVudCBjb21waWxlcnMuIEhvd2V2ZXIsIHRoZXJlIHdhcyBzdGlsbCBhIHByb2JsZW0KLS8vIHdpdGggZ2NjLjMuMC4yIGFuZCAzLjAuMyBjb21waWxlcnMsIHdoaWNoIGRpZG4ndCB0aGluayByZWdhcmQKLS8vIGlzX2luc3RhbmNlX29mX048Li4uPjo6dmFsdWUgd2FzIGEgY29uc3RhbnQuCi0vLyBKb2huIE1hZGRvY2sgc3VnZ2VzdGVkIHRoZSB3YXkgYXJvdW5kIHRoaXMgcHJvYmxlbSBieSBidWlsZGluZyAKLS8vIGlzX2luc3RhbmNlX29mIHRlbXBsYXRlcyB1c2luZyBuZG5ib29zdDo6aXNfY29udmVydGlibGUuCi0vLyBOb3cgd2Ugb25seSBoYXZlIG9uZSB2ZXJzaW9uIG9mIGlzX2luc3RhbmNlX29mIHRlbXBsYXRlcywgd2hpY2ggZGVsYWdhdGUKLS8vIGFsbCB0aGUgbmFzdHkgY29tcGlsZXIgdHJpY2tzIHRvIGlzX2NvbnZlcnRpYmxlLiAKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQ0xBU1MoeiwgTixBKSBORE5CT09TVF9QUF9DT01NQV9JRihOKSBjbGFzcwotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQ0xBU1NfQVJHKHosIE4sQSkgTkROQk9PU1RfUFBfQ09NTUFfSUYoTikgY2xhc3MgQSMjTiAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0FSRyh6LCBOLEEpIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE4pIEEjI04gCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0NMQVNTX0xJU1QobiwgTkFNRSkgTkROQk9PU1RfUFBfUkVQRUFUKG4sIE5ETkJPT1NUX0xBTUJEQV9DTEFTUywgTkFNRSkKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQ0xBU1NfQVJHX0xJU1QobiwgTkFNRSkgTkROQk9PU1RfUFBfUkVQRUFUKG4sIE5ETkJPT1NUX0xBTUJEQV9DTEFTU19BUkcsIE5BTUUpCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0FSR19MSVNUKG4sIE5BTUUpIE5ETkJPT1NUX1BQX1JFUEVBVChuLCBORE5CT09TVF9MQU1CREFfQVJHLCBOQU1FKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0lTX0lOU1RBTkNFX09GX1RFTVBMQVRFKElOREVYKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbmFtZXNwYWNlIGRldGFpbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8dGVtcGxhdGU8TkROQk9PU1RfTEFNQkRBX0NMQVNTX0xJU1QoSU5ERVgsVCk+IGNsYXNzIEY+ICAgICAgICAgICAgICAgXAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChjb252ZXJzaW9uX3Rlc3Rlcl8sSU5ERVgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8TkROQk9PU1RfTEFNQkRBX0NMQVNTX0FSR19MSVNUKElOREVYLEEpPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1BQX0NBVChjb252ZXJzaW9uX3Rlc3Rlcl8sSU5ERVgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChjb25zdCBGPE5ETkJPT1NUX0xBTUJEQV9BUkdfTElTVChJTkRFWCxBKT4mKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAvKiBlbmQgZGV0YWlsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgRnJvbSwgdGVtcGxhdGUgPE5ETkJPT1NUX0xBTUJEQV9DTEFTU19MSVNUKElOREVYLFQpPiBjbGFzcyBUbz4gXAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChpc19pbnN0YW5jZV9vZl8sSU5ERVgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gcHJpdmF0ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgdHlwZWRlZiA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgRnJvbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIE5ETkJPT1NUX1BQX0NBVChkZXRhaWw6OmNvbnZlcnNpb25fdGVzdGVyXyxJTkRFWCk8VG8+ICAgICAgICAgICAgICAgICAgICAgXAotICAgPiBoZWxwZXJfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBoZWxwZXJfdHlwZTo6dmFsdWUpOyAgICAgICAgICAgICAgICAgIFwKLX07Ci0KLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfSEVMUEVSKHosIE4sIEEpIE5ETkJPT1NUX0xBTUJEQV9JU19JTlNUQU5DRV9PRl9URU1QTEFURSggTkROQk9PU1RfUFBfSU5DKE4pICkKLQotLy8gR2VuZXJhdGUgdGhlIHRyYWl0cyBmb3IgMS00IGFyZ3VtZW50IHRlbXBsYXRlcwotCi1ORE5CT09TVF9QUF9SRVBFQVRfMk5EKDQsTkROQk9PU1RfTEFNQkRBX0hFTFBFUixGT08pCi0KLSN1bmRlZiBORE5CT09TVF9MQU1CREFfSEVMUEVSCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0lTX0lOU1RBTkNFX09GX1RFTVBMQVRFCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0NMQVNTCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0FSRwotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9DTEFTU19BUkcKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfQ0xBU1NfTElTVAotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9BUkdfTElTVAotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9DTEFTU19BUkdfTElTVAotCi19IC8vIGxhbWJkYQotfSAvLyBib29zdAotCi0jZW5kaWYKLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNWRjZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLy8gQm9vc3QgTGFtYmRhIExpYnJhcnkgLSBsYW1iZGFfY29uZmlnLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfTEFNQkRBX0NPTkZJR19IUFAKLQotLy8gYWRkIHRvIG5kbmJvb3N0L2NvbmZpZy5ocHAKLS8vIGZvciBub3cKLQotCi0jIGlmIGRlZmluZWQgX19HTlVDX18KLSMgICBpZiAoX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA+PSA0KSAKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORwotIyAgIGVuZGlmCi0jICAgaWYgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPD0gOTcpIAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9TVFJFQU1TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HCi0jICAgZW5kaWYKLSMgICBpZiAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8PSA5NSkgCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0ZBSUxTX0lOX1RFTVBMQVRFX0tFWVdPUkRfQUZURVJfU0NPUEVfT1BFUgotIyAgIGVuZGlmCi0jIGVuZGlmICAvLyBfX0dOVUNfXwotIAotCi0jaWYgZGVmaW5lZCBfX0tDQwotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0ZERUNMX1RFTVBMQVRFU19BU19URU1QTEFURV9URU1QTEFURV9QQVJBTVMKLQotI2VuZGlmICAvLyBfX0tDQwotCi0jZW5kaWYKLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9mdW5jdG9yX2Jhc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9mdW5jdG9yX2Jhc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmIwMTJmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZnVuY3Rvcl9iYXNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxNSArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAgbGFtYmRhX2Z1bmN0b3JfYmFzZS5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z3ZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfdHJhaXRzLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTQwMCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUxMikgLy9hc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSNlbmRpZgotCi0gIC8vIGZvciByZXR1cm4gdHlwZSBkZWR1Y3Rpb25zIHdlIHdyYXAgYm91bmQgYXJndW1lbnQgdG8gdGhpcyBjbGFzcywKLSAgLy8gd2hpY2ggZnVsZmlscyB0aGUgYmFzZSBjbGFzcyBjb250cmFjdCBmb3IgbGFtYmRhX2Z1bmN0b3JzCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWNsYXNzIGlkZW50aXR5IHsKLQotICBUIGVsZW07Ci1wdWJsaWM6Ci0gIAotICB0eXBlZGVmIFQgZWxlbWVudF90OwotCi0gIC8vIHRha2UgYWxsIHBhcmFtZXRlcnMgYXMgY29uc3QgcmVmZXJlbmNlcy4gTm90ZSB0aGF0IG5vbi1jb25zdCByZWZlcmVuY2VzCi0gIC8vIHN0YXkgYXMgdGhleSBhcmUuCi0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9jb25zdDxUPjo6dHlwZQotICA+Ojp0eXBlIHBhcl90OwotCi0gIGV4cGxpY2l0IGlkZW50aXR5KHBhcl90IHQpIDogZWxlbSh0KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBTaWdBcmdzPiAKLSAgc3RydWN0IHNpZyB7IHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jb25zdDxlbGVtZW50X3Q+Ojp0eXBlIHR5cGU7IH07Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgQ0FMTF9VU0VfQVJHUzsgcmV0dXJuIGVsZW07IH0KLX07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE0MDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiAKLWlubGluZSBsYW1iZGFfZnVuY3RvcjxpZGVudGl0eTxUJj4gPiB2YXIoVCYgdCkgeyByZXR1cm4gaWRlbnRpdHk8VCY+KHQpOyB9Ci0KLSAgLy8gZm9yIGxhbWJkYSBmdW5jdG9ycywgdmFyIGlzIGFuIGlkZW50aXR5IG9wZXJhdG9yLiBJdCB3YXMgZm9yYmlkZGVuCi0gIC8vIGF0IHNvbWUgcG9pbnQsIGJ1dCB3ZSBtaWdodCB3YW50IHRvIHZhciBzb21ldGhpbmcgdGhhdCBjYW4gYmUgYSAKLSAgLy8gbm9uLWxhbWJkYSBmdW5jdG9yIG9yIGEgbGFtYmRhIGZ1bmN0b3IuCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWxhbWJkYV9mdW5jdG9yPFQ+IHZhcihjb25zdCBsYW1iZGFfZnVuY3RvcjxUPiYgdCkgeyByZXR1cm4gdDsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHZhcl90eXBlIHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxpZGVudGl0eTxUJj4gPiB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gCi1pbmxpbmUgCi1sYW1iZGFfZnVuY3RvcjxpZGVudGl0eTx0eXBlbmFtZSBib3VuZF9hcmd1bWVudF9jb252ZXJzaW9uPGNvbnN0IFQ+Ojp0eXBlPiA+Ci1jb25zdGFudChjb25zdCBUJiB0KSB7IAotICByZXR1cm4gaWRlbnRpdHk8dHlwZW5hbWUgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbjxjb25zdCBUPjo6dHlwZT4odCk7IAotfQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1sYW1iZGFfZnVuY3RvcjxUPiBjb25zdGFudChjb25zdCBsYW1iZGFfZnVuY3RvcjxUPiYgdCkgeyByZXR1cm4gdDsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGNvbnN0YW50X3R5cGUgewotICB0eXBlZGVmIAotICAgbGFtYmRhX2Z1bmN0b3I8Ci0gICAgIGlkZW50aXR5PHR5cGVuYW1lIGJvdW5kX2FyZ3VtZW50X2NvbnZlcnNpb248Y29uc3QgVD46OnR5cGU+IAotICAgPiB0eXBlOwotfTsKLQotCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiAKLWlubGluZSBsYW1iZGFfZnVuY3RvcjxpZGVudGl0eTxjb25zdCBUJj4gPiBjb25zdGFudF9yZWYoY29uc3QgVCYgdCkgeyAKLSAgcmV0dXJuIGlkZW50aXR5PGNvbnN0IFQmPih0KTsgCi19Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWxhbWJkYV9mdW5jdG9yPFQ+IGNvbnN0YW50X3JlZihjb25zdCBsYW1iZGFfZnVuY3RvcjxUPiYgdCkgeyByZXR1cm4gdDsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGNvbnN0YW50X3JlZl90eXBlIHsKLSAgdHlwZWRlZiAKLSAgIGxhbWJkYV9mdW5jdG9yPGlkZW50aXR5PGNvbnN0IFQmPiA+IHR5cGU7Ci19OwotCi0KLQotICAvLyBhc19sYW1iZGFfZnVuY3RvciB0dXJucyBhbnkgdHlwZXMgdG8gbGFtYmRhIGZ1bmN0b3JzIAotICAvLyBub24tbGFtYmRhX2Z1bmN0b3JzIHdpbGwgYmUgYm91bmQgYXJndW1lbnQgdHlwZXMKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGFzX2xhbWJkYV9mdW5jdG9yIHsgCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxUPjo6dHlwZSBwbGFpbl9UOwotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6SUY8aXNfbGFtYmRhX2Z1bmN0b3I8cGxhaW5fVD46OnZhbHVlLCAKLSAgICAgIHBsYWluX1QsCi0gICAgICBsYW1iZGFfZnVuY3RvcjwKLSAgICAgICAgaWRlbnRpdHk8dHlwZW5hbWUgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbjxUPjo6dHlwZT4gCi0gICAgICA+Ci0gICAgPjo6UkVUIHR5cGU7IAotfTsKLQotLy8gdHVybnMgYXJiaXRyYXJ5IG9iamVjdHMgaW50byBsYW1iZGEgZnVuY3RvcnMKLXRlbXBsYXRlIDxjbGFzcyBUPiAKLWlubGluZSAKLWxhbWJkYV9mdW5jdG9yPGlkZW50aXR5PHR5cGVuYW1lIGJvdW5kX2FyZ3VtZW50X2NvbnZlcnNpb248Y29uc3QgVD46OnR5cGU+ID4gCi10b19sYW1iZGFfZnVuY3Rvcihjb25zdCBUJiB0KSB7IAotICByZXR1cm4gaWRlbnRpdHk8dHlwZW5hbWUgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbjxjb25zdCBUPjo6dHlwZT4odCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiAKLWlubGluZSBsYW1iZGFfZnVuY3RvcjxUPiAKLXRvX2xhbWJkYV9mdW5jdG9yKGNvbnN0IGxhbWJkYV9mdW5jdG9yPFQ+JiB0KSB7IAotICByZXR1cm4gdDsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7ICAgCi0KLQotCi0vLyBJbiBhIGNhbGwgY29uc3RpZnlfcnZhbHM8VD46OmdvKHgpCi0vLyB4IHNob3VsZCBiZSBvZiB0eXBlIFQuIElmIFQgaXMgYSBub24tcmVmZXJlbmNlIHR5cGUsIGRvCi0vLyByZXR1cm5zIHggYXMgY29uc3QgcmVmZXJlbmNlLiAKLS8vIE90aGVyd2lzZSB0aGUgdHlwZSBkb2Vzbid0IGNoYW5nZS4KLS8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMgdG8gYXZvaWQgCi0vLyAnY2Fubm90IGJpbmQgdGVtcG9yYXJpZXMgdG8gbm9uLWNvbnN0IHJlZmVyZW5jZXMnIGVycm9ycy4KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgY29uc3RpZnlfcnZhbHMgewotICB0ZW1wbGF0ZTxjbGFzcyBVPgotICBzdGF0aWMgaW5saW5lIGNvbnN0IFUmIGdvKGNvbnN0IFUmIHUpIHsgcmV0dXJuIHU7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgY29uc3RpZnlfcnZhbHM8VCY+IHsKLSAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgc3RhdGljIGlubGluZSBVJiBnbyhVJiB1KSB7IHJldHVybiB1OyB9Ci19OwotCi0gIC8vIGNoZWNrIHdoZXRoZXIgb25lIG9mIHRoZSBlbGVtZW50cyBvZiBhIHR1cGxlIChjb25zIGxpc3QpIGlzIG9mIHR5cGUKLSAgLy8gbnVsbF90eXBlLiBOZWVkZWQsIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGdvZXMgYWhlYWQgYW5kIGluc3RhbnRpYXRlcwotICAvLyBzaWcgdGVtcGxhdGUgZm9yIG51bGxhcnkgY2FzZSBldmVuIGlmIHRoZSBudWxsYXJ5IG9wZXJhdG9yKCkgaXMgbm90Ci0gIC8vIGNhbGxlZAotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc19udWxsX3R5cGUgCi17IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsgfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IGlzX251bGxfdHlwZTxudWxsX3R5cGU+IAoteyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGU8Y2xhc3MgVHVwbGU+IHN0cnVjdCBoYXNfbnVsbF90eXBlIHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKGlzX251bGxfdHlwZTx0eXBlbmFtZSBUdXBsZTo6aGVhZF90eXBlPjo6dmFsdWUgfHwgaGFzX251bGxfdHlwZTx0eXBlbmFtZSBUdXBsZTo6dGFpbF90eXBlPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBoYXNfbnVsbF90eXBlPG51bGxfdHlwZT4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0KLS8vIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLXRlbXBsYXRlPGNsYXNzIEFyZ3MsIGNsYXNzIFNpZ0FyZ3M+Ci1jbGFzcyBkZWR1Y2VfYXJndW1lbnRfdHlwZXNfIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBhc19sYW1iZGFfZnVuY3Rvcjx0eXBlbmFtZSBBcmdzOjpoZWFkX3R5cGU+Ojp0eXBlIGxmX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbGZfdDo6aW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8U2lnQXJncz46OnR5cGUgZWxfdDsgIAotcHVibGljOgotICB0eXBlZGVmCi0gICAgbmRuYm9vc3Q6OnR1cGxlczo6Y29uczwKLSAgICAgIGVsX3QsIAotICAgICAgdHlwZW5hbWUgZGVkdWNlX2FyZ3VtZW50X3R5cGVzXzx0eXBlbmFtZSBBcmdzOjp0YWlsX3R5cGUsIFNpZ0FyZ3M+Ojp0eXBlCi0gICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4KLWNsYXNzIGRlZHVjZV9hcmd1bWVudF90eXBlc188bnVsbF90eXBlLCBTaWdBcmdzPiB7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7IAotfTsKLQotCi0vLyAgLy8gbm90ZSB0aGF0IHR1cGxlcyBjYW5ub3QgaGF2ZSBwbGFpbiBmdW5jdGlvbiB0eXBlcyBhcyBlbGVtZW50cy4KLS8vICAvLyBIZW5jZSwgYWxsIG90aGVyIHR5cGVzIHdpbGwgYmUgbm9uLWNvbnN0LCBleGNlcHQgcmVmZXJlbmNlcyB0byAKLS8vICAvLyBmdW5jdGlvbnMuCi0vLyAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlX2V4Y2VwdF9mcm9tX2Z1bmN0aW9ucyB7Ci0vLyAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlIHQ7Ci0vLyAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPHQ+Ojp2YWx1ZSwgVCwgdD46OlJFVCB0eXBlOwotLy8gIH07Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZ3MsIGNsYXNzIFNpZ0FyZ3M+Ci1jbGFzcyBkZWR1Y2Vfbm9uX3JlZl9hcmd1bWVudF90eXBlc18gewotICB0eXBlZGVmIHR5cGVuYW1lIGFzX2xhbWJkYV9mdW5jdG9yPHR5cGVuYW1lIEFyZ3M6OmhlYWRfdHlwZT46OnR5cGUgbGZfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBsZl90Ojppbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzxTaWdBcmdzPjo6dHlwZSBlbF90OyAgCi1wdWJsaWM6Ci0gIHR5cGVkZWYKLSAgICBuZG5ib29zdDo6dHVwbGVzOjpjb25zPAotICAvLyAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9leGNlcHRfZnJvbV9mdW5jdGlvbnM8ZWxfdD46OnR5cGUsIAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8ZWxfdD46OnR5cGUsIAotICAgICAgdHlwZW5hbWUgZGVkdWNlX25vbl9yZWZfYXJndW1lbnRfdHlwZXNfPHR5cGVuYW1lIEFyZ3M6OnRhaWxfdHlwZSwgU2lnQXJncz46OnR5cGUKLSAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPgotY2xhc3MgZGVkdWNlX25vbl9yZWZfYXJndW1lbnRfdHlwZXNfPG51bGxfdHlwZSwgU2lnQXJncz4gewotcHVibGljOgotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOyAKLX07Ci0KLSAgLy8gLS0tLS0tLS0tLS0tLQotCi0vLyB0YWtlIHN0b3JlZCBBcmdzIGFuZCBPcGVuIEFyZ3MsIGFuZCByZXR1cm4gYSBjb25zdCBsaXN0IHdpdGggCi0vLyBkZWR1Y2VkIGVsZW1lbnRzIChyZWFsIHJldHVybiB0eXBlcykKLXRlbXBsYXRlPGNsYXNzIEFyZ3MsIGNsYXNzIFNpZ0FyZ3M+Ci1jbGFzcyBkZWR1Y2VfYXJndW1lbnRfdHlwZXMgewotICB0eXBlZGVmIHR5cGVuYW1lIGRlZHVjZV9hcmd1bWVudF90eXBlc188QXJncywgU2lnQXJncz46OnR5cGUgdDE7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICBoYXNfbnVsbF90eXBlPHQxPjo6dmFsdWUsIG51bGxfdHlwZSwgdDEKLSAgPjo6UkVUIHR5cGU7IAotfTsKLQotLy8gdGFrZSBzdG9yZWQgQXJncyBhbmQgT3BlbiBBcmdzLCBhbmQgcmV0dXJuIGEgY29uc3QgbGlzdCB3aXRoIAotLy8gZGVkdWNlZCBlbGVtZW50cyAocmVmZXJlbmNlcyBhcmUgc3RyaXBwZWQgZnJvbSB0aGUgZWxlbWVudCB0eXBlcykKLQotdGVtcGxhdGU8Y2xhc3MgQXJncywgY2xhc3MgU2lnQXJncz4KLWNsYXNzIGRlZHVjZV9ub25fcmVmX2FyZ3VtZW50X3R5cGVzIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZWR1Y2Vfbm9uX3JlZl9hcmd1bWVudF90eXBlc188QXJncywgU2lnQXJncz46OnR5cGUgdDE7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICBoYXNfbnVsbF90eXBlPHQxPjo6dmFsdWUsIG51bGxfdHlwZSwgdDEKLSAgPjo6UkVUIHR5cGU7IAotfTsKLQotdGVtcGxhdGUgPGludCBOLCBjbGFzcyBBcmdzLCBjbGFzcyBTaWdBcmdzPgotc3RydWN0IG50aF9yZXR1cm5fdHlwZV9zaWcgewotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgIGFzX2xhbWJkYV9mdW5jdG9yPAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR1cGxlczo6ZWxlbWVudDxOLCBBcmdzPjo6dHlwZSAKLSAgLy8gICAgICAgICAgICB0eXBlbmFtZSB0dXBsZV9lbGVtZW50X2FzX3JlZmVyZW5jZTxOLCBBcmdzPjo6dHlwZSAKLSAgICAgICAgPjo6dHlwZSBsZl90eXBlOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbGZfdHlwZTo6aW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8U2lnQXJncz46OnR5cGUgdHlwZTsgIAotfTsKLQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFR1cGxlPiBzdHJ1Y3QgZWxlbWVudF9vcl9udWxsIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHVwbGVzOjplbGVtZW50PE4sIFR1cGxlPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8aW50IE4+IHN0cnVjdCBlbGVtZW50X29yX251bGw8TiwgbnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotCi0KLSAgIAotICAgCi19IC8vIGVuZCBkZXRhaWwKLSAgIAotIC8vIC0tIGxhbWJkYV9mdW5jdG9yIGJhc2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIHRoZSBleHBsaWNpdF9yZXR1cm5fdHlwZV9hY3Rpb24gY2FzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBcmdzPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxleHBsaWNpdF9yZXR1cm5fdHlwZV9hY3Rpb248UkVUPiwgQXJncz4gCi17Ci1wdWJsaWM6Ci0gIEFyZ3MgYXJnczsKLQotICB0eXBlZGVmIFJFVCByZXN1bHRfdHlwZTsKLQotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIDogYXJncyhhKSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSRVQgdHlwZTsgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVRfLCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IAotICB7Ci0gICAgcmV0dXJuIGRldGFpbDo6Y29uc3RpZnlfcnZhbHM8UkVUPjo6Z28oCi0gICAgIGRldGFpbDo6cl9zZWxlY3Q8UkVUPjo6Z28obmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSk7Ci0gIH0KLX07Ci0KLS8vIHRoZSBwcm90ZWN0X2FjdGlvbiBjYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZTxjbGFzcyBBcmdzPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxwcm90ZWN0X2FjdGlvbiwgQXJncz4KLXsKLXB1YmxpYzoKLSAgQXJncyBhcmdzOwotcHVibGljOgotCi0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9Ci0KLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4KLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgCi0gIHsKLSAgICAgQ0FMTF9VU0VfQVJHUzsKLSAgICAgcmV0dXJuIG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgeyAKLSAgICAvLyAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dHVwbGVfZWxlbWVudF9hc19yZWZlcmVuY2U8MCwgU2lnQXJncz46OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmVsZW1lbnQ8MCwgQXJncz46OnR5cGUgdHlwZTsKLSAgfTsKLX07Ci0KLS8vIERvIG5vdGhpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWNsYXNzIGRvX25vdGhpbmdfYWN0aW9uIHt9OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmdzPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxkb19ub3RoaW5nX2FjdGlvbiwgQXJncz4gewotICAvLyAgQXJncyBhcmdzOwotcHVibGljOgotICAvLyAgZXhwbGljaXQgbGFtYmRhX2Z1bmN0b3JfYmFzZShjb25zdCBBcmdzJiBhKSB7fQotICBsYW1iZGFfZnVuY3Rvcl9iYXNlKCkge30KLQotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7Ci0gICAgcmV0dXJuIENBTExfVVNFX0FSR1M7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07Ci19OyAgCi0KLQotLy8gIFRoZXNlIHNwZWNpYWxpemF0aW9ucyBwcm92aWRlIGEgc2hvcnRlciBub3RhdGlvbiB0byBkZWZpbmUgYWN0aW9ucy4KLS8vICBUaGVzZSBsYW1iZGFfZnVuY3Rvcl9iYXNlIGluc3RhbmNlcyB0YWtlIGNhcmUgb2YgdGhlIHJlY3Vyc2l2ZSBldmFsdWF0aW9uCi0vLyAgb2YgdGhlIGFyZ3VtZW50cyBhbmQgcGFzcyB0aGUgZXZhbHVhdGVkIGFyZ3VtZW50cyB0byB0aGUgYXBwbHkgZnVuY3Rpb24KLS8vICBvZiBhbiBhY3Rpb24gY2xhc3MuIFRvIG1ha2UgYWN0aW9uIFggd29yayB3aXRoIHRoZXNlIGNsYXNzZXMsIG9uZSBtdXN0Ci0vLyAgaW5zdGFudGlhdGUgdGhlIGxhbWJkYV9mdW5jdG9yX2Jhc2UgYXM6Ci0vLyAgbGFtYmRhX2Z1bmN0b3JfYmFzZTxhY3Rpb248QVJJVFksIFg+LCBBcmdzPgotLy8gIFdoZXJlIEFSSVRZIGlzIHRoZSBhcml0eSBvZiB0aGUgYXBwbHkgZnVuY3Rpb24gaW4gWAotCi0vLyAgVGhlIHJldHVybiB0eXBlIGlzIHF1ZXJpZWQgYXM6Ci0vLyAgcmV0dXJuX3R5cGVfTjxYLCBFdmFsdWF0ZWRBcmd1bWVudFR5cGVzPjo6dHlwZQotLy8gIGZvciB3aGljaCB0aGVyZSBtdXN0IGJlIGEgc3BlY2lhbGl6YXRpb24uCi0KLS8vICBGdW5jdGlvbiBhY3Rpb25zLCBjYXN0cywgdGhyb3dzLC4uLiBhbGwgZ28gdmlhIHRoZXNlIGNsYXNzZXMuCi0KLQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBcmdzPiAgCi1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPGFjdGlvbjwwLCBBY3Q+LCBBcmdzPiAgICAgICAgICAgCi17ICAKLXB1YmxpYzogIAotLy8gIEFyZ3MgYXJnczsgbm90IG5lZWRlZAotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIC8qYSovKSB7fSAgCi0gIAotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmV0dXJuX3R5cGVfTjxBY3QsIG51bGxfdHlwZT46OnR5cGUgdHlwZTsKLSAgfTsKLSAgCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiAgCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgIAotICAgIENBTExfVVNFX0FSR1M7Ci0gICAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigpOwotICB9Ci19OwotCi0KLSNpZiBkZWZpbmVkIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQgIAotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQiICAKLSNlbmRpZiAgCi0gIAotICAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVChBUklUWSkgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBcmdzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPGFjdGlvbjxBUklUWSwgQWN0PiwgQXJncz4gICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIEFyZ3MgYXJnczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIDogYXJncyhhKSB7fSAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZGV0YWlsOjpkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgU2lnQXJncz46OnR5cGUgcmV0c190OyAgICAgICAgIFwKLSAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICByZXR1cm5fdHlwZV9OX3Byb3Q8QWN0LCByZXRzX3Q+Ojp0eXBlIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdXNpbmcgbmRuYm9vc3Q6OnR1cGxlczo6Z2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1c2luZyBkZXRhaWw6OmNvbnN0aWZ5X3J2YWxzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHVzaW5nIGRldGFpbDo6cl9zZWxlY3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdXNpbmcgZGV0YWlsOjplbGVtZW50X29yX251bGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1c2luZyBkZXRhaWw6OmRlZHVjZV9hcmd1bWVudF90eXBlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCi1ORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKDEpCi0KLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotCi0gIHJldHVybiBBY3Q6OnRlbXBsYXRlIGFwcGx5PFJFVD4oCi0gICAgY29uc3RpZnlfcnZhbHM8cnQwPjo6Z28ocl9zZWxlY3Q8cnQwPjo6Z28oZ2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSkKLSAgICApOwotICB9Ci19OwotCi0KLU5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQoMikKLSAgCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotCi0gIHJldHVybiBBY3Q6OnRlbXBsYXRlIGFwcGx5PFJFVD4oCi0gICAgY29uc3RpZnlfcnZhbHM8cnQwPjo6Z28ocl9zZWxlY3Q8cnQwPjo6Z28oZ2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQxPjo6Z28ocl9zZWxlY3Q8cnQxPjo6Z28oZ2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSkKLSAgICApOwotICB9Ci19OwotCi1ORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKDMpCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgdHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUgcmV0c190OwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0KLSAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigKLSAgICBjb25zdGlmeV9ydmFsczxydDA+OjpnbyhyX3NlbGVjdDxydDA+OjpnbyhnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDE+OjpnbyhyX3NlbGVjdDxydDE+OjpnbyhnZXQ8MT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDI+OjpnbyhyX3NlbGVjdDxydDI+OjpnbyhnZXQ8Mj4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKQotICAgICk7Ci0gIH0KLX07Ci0KLU5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQoNCkKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgdHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUgcmV0c190OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwwLCByZXRzX3Q+Ojp0eXBlIHJ0MDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MSwgcmV0c190Pjo6dHlwZSBydDE7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDIsIHJldHNfdD46OnR5cGUgcnQyOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwzLCByZXRzX3Q+Ojp0eXBlIHJ0MzsKLQotICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mz46OmdvKHJfc2VsZWN0PHJ0Mz46OmdvKGdldDwzPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpCi0gICAgKTsKLSAgfQotfTsKLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCg1KQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDMsIHJldHNfdD46OnR5cGUgcnQzOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw0LCByZXRzX3Q+Ojp0eXBlIHJ0NDsKLQotICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mz46OmdvKHJfc2VsZWN0PHJ0Mz46OmdvKGdldDwzPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0ND46OmdvKHJfc2VsZWN0PHJ0ND46OmdvKGdldDw0PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpCi0gICAgKTsKLSAgfQotfTsKLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCg2KQotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwyLCByZXRzX3Q+Ojp0eXBlIHJ0MjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MywgcmV0c190Pjo6dHlwZSBydDM7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDQsIHJldHNfdD46OnR5cGUgcnQ0OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw1LCByZXRzX3Q+Ojp0eXBlIHJ0NTsKLQotCi0gICAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigKLSAgICBjb25zdGlmeV9ydmFsczxydDA+OjpnbyhyX3NlbGVjdDxydDA+OjpnbyhnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDE+OjpnbyhyX3NlbGVjdDxydDE+OjpnbyhnZXQ8MT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDI+OjpnbyhyX3NlbGVjdDxydDI+OjpnbyhnZXQ8Mj4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDM+OjpnbyhyX3NlbGVjdDxydDM+OjpnbyhnZXQ8Mz4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDQ+OjpnbyhyX3NlbGVjdDxydDQ+OjpnbyhnZXQ8ND4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDU+OjpnbyhyX3NlbGVjdDxydDU+OjpnbyhnZXQ8NT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSAKLSAgICApOwotICB9Ci19OwotCi1ORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKDcpCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwyLCByZXRzX3Q+Ojp0eXBlIHJ0MjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MywgcmV0c190Pjo6dHlwZSBydDM7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDQsIHJldHNfdD46OnR5cGUgcnQ0OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw1LCByZXRzX3Q+Ojp0eXBlIHJ0NTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NiwgcmV0c190Pjo6dHlwZSBydDY7Ci0KLQotICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mz46OmdvKHJfc2VsZWN0PHJ0Mz46OmdvKGdldDwzPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0ND46OmdvKHJfc2VsZWN0PHJ0ND46OmdvKGdldDw0PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0NT46OmdvKHJfc2VsZWN0PHJ0NT46OmdvKGdldDw1PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Nj46OmdvKHJfc2VsZWN0PHJ0Nj46OmdvKGdldDw2PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpCi0gICAgKTsKLSAgfQotfTsKLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCg4KQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDMsIHJldHNfdD46OnR5cGUgcnQzOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw0LCByZXRzX3Q+Ojp0eXBlIHJ0NDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NSwgcmV0c190Pjo6dHlwZSBydDU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDYsIHJldHNfdD46OnR5cGUgcnQ2OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw3LCByZXRzX3Q+Ojp0eXBlIHJ0NzsKLQotICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mz46OmdvKHJfc2VsZWN0PHJ0Mz46OmdvKGdldDwzPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0ND46OmdvKHJfc2VsZWN0PHJ0ND46OmdvKGdldDw0PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0NT46OmdvKHJfc2VsZWN0PHJ0NT46OmdvKGdldDw1PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Nj46OmdvKHJfc2VsZWN0PHJ0Nj46OmdvKGdldDw2PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Nz46OmdvKHJfc2VsZWN0PHJ0Nz46OmdvKGdldDw3PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpCi0gICAgKTsKLSAgfQotfTsKLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCg5KQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDMsIHJldHNfdD46OnR5cGUgcnQzOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw0LCByZXRzX3Q+Ojp0eXBlIHJ0NDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NSwgcmV0c190Pjo6dHlwZSBydDU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDYsIHJldHNfdD46OnR5cGUgcnQ2OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw3LCByZXRzX3Q+Ojp0eXBlIHJ0NzsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8OCwgcmV0c190Pjo6dHlwZSBydDg7Ci0KLSAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigKLSAgICBjb25zdGlmeV9ydmFsczxydDA+OjpnbyhyX3NlbGVjdDxydDA+OjpnbyhnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDE+OjpnbyhyX3NlbGVjdDxydDE+OjpnbyhnZXQ8MT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDI+OjpnbyhyX3NlbGVjdDxydDI+OjpnbyhnZXQ8Mj4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDM+OjpnbyhyX3NlbGVjdDxydDM+OjpnbyhnZXQ8Mz4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDQ+OjpnbyhyX3NlbGVjdDxydDQ+OjpnbyhnZXQ8ND4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDU+OjpnbyhyX3NlbGVjdDxydDU+OjpnbyhnZXQ8NT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDY+OjpnbyhyX3NlbGVjdDxydDY+OjpnbyhnZXQ8Nj4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDc+OjpnbyhyX3NlbGVjdDxydDc+OjpnbyhnZXQ8Nz4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDg+OjpnbyhyX3NlbGVjdDxydDg+OjpnbyhnZXQ8OD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKQotICAgICk7Ci0gIH0KLX07Ci0KLU5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQoMTApIAotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDMsIHJldHNfdD46OnR5cGUgcnQzOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw0LCByZXRzX3Q+Ojp0eXBlIHJ0NDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NSwgcmV0c190Pjo6dHlwZSBydDU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDYsIHJldHNfdD46OnR5cGUgcnQ2OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw3LCByZXRzX3Q+Ojp0eXBlIHJ0NzsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8OCwgcmV0c190Pjo6dHlwZSBydDg7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDksIHJldHNfdD46OnR5cGUgcnQ5OwotCi0gIHJldHVybiBBY3Q6OnRlbXBsYXRlIGFwcGx5PFJFVD4oCi0gICAgY29uc3RpZnlfcnZhbHM8cnQwPjo6Z28ocl9zZWxlY3Q8cnQwPjo6Z28oZ2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQxPjo6Z28ocl9zZWxlY3Q8cnQxPjo6Z28oZ2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQyPjo6Z28ocl9zZWxlY3Q8cnQyPjo6Z28oZ2V0PDI+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQzPjo6Z28ocl9zZWxlY3Q8cnQzPjo6Z28oZ2V0PDM+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ0Pjo6Z28ocl9zZWxlY3Q8cnQ0Pjo6Z28oZ2V0PDQ+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ1Pjo6Z28ocl9zZWxlY3Q8cnQ1Pjo6Z28oZ2V0PDU+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ2Pjo6Z28ocl9zZWxlY3Q8cnQ2Pjo6Z28oZ2V0PDY+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ3Pjo6Z28ocl9zZWxlY3Q8cnQ3Pjo6Z28oZ2V0PDc+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ4Pjo6Z28ocl9zZWxlY3Q8cnQ4Pjo6Z28oZ2V0PDg+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ5Pjo6Z28ocl9zZWxlY3Q8cnQ5Pjo6Z28oZ2V0PDk+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSkgCi0gICAgKTsKLSAgfQotfTsKLQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQKLQotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9mdW5jdG9ycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z1bmN0b3JzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIwZTg2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z1bmN0b3JzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1NyArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtICBsYW1iZGFfZnVuY3RvcnMuaHBwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JTX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9yZXN1bHRfb2YuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzEwKQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9ESVNBQkxFX0lGX0FSUkFZMShBMSwgUjEpXAotICB0eXBlbmFtZSBsYXp5X2Rpc2FibGVfaWY8aXNfYXJyYXk8QTE+LCB0eXBlbmFtZSBSMSA+Ojp0eXBlCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9ESVNBQkxFX0lGX0FSUkFZMihBMSwgQTIsIFIxLCBSMikgXAotICB0eXBlbmFtZSBsYXp5X2Rpc2FibGVfaWY8bXBsOjpvcl88aXNfYXJyYXk8QTE+LCBpc19hcnJheTxBMj4gPiwgdHlwZW5hbWUgUjEsIFIyID46OnR5cGUKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkzKEExLCBBMiwgQTMsIFIxLCBSMiwgUjMpIFwKLSAgdHlwZW5hbWUgbGF6eV9kaXNhYmxlX2lmPG1wbDo6b3JfPGlzX2FycmF5PEExPiwgaXNfYXJyYXk8QTI+LCBpc19hcnJheTxBMz4gPiwgdHlwZW5hbWUgUjEsIFIyLCBSMyA+Ojp0eXBlCi0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkxKEExLCBSMSkgdHlwZW5hbWUgUjE6OnR5cGUKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkyKEExLCBBMiwgUjEsIFIyKSB0eXBlbmFtZSBSMSwgUjI6OnR5cGUKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkzKEExLCBBMiwgQTMsIFIxLCBSMiwgUjMpIHR5cGVuYW1lIFIxLCBSMiwgUjM6OnR5cGUKLQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLS8vIC0tIGxhbWJkYV9mdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vL2lubGluZSBjb25zdCBudWxsX3R5cGUgY29uc3RfbnVsbF90eXBlKCkgeyByZXR1cm4gbnVsbF90eXBlKCk7IH0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci1uYW1lc3BhY2UgewotCi0gIHN0YXRpYyBjb25zdCBudWxsX3R5cGUgY29uc3RhbnRfbnVsbF90eXBlID0gbnVsbF90eXBlKCk7Ci0KLX0gLy8gdW5uYW1lZAotfSAvLyBkZXRhaWwKLQotY2xhc3MgdW51c2VkIHt9OwotCi0jZGVmaW5lIGNudWxsX3R5cGUoKSBkZXRhaWw6OmNvbnN0YW50X251bGxfdHlwZQotCi0vLyAtLSBmcmVlIHZhcmlhYmxlcyB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKLSAKLSAgLy8gaGVscGVyIHRvIHdvcmsgYXJvdW5kIHRoZSBjYXNlIHdoZXJlIHRoZSBudWxsYXJ5IHJldHVybiB0eXBlIGRlZHVjdGlvbiAKLSAgLy8gaXMgYWx3YXlzIHBlcmZvcm1lZCwgZXZlbiB0aG91Z2ggdGhlIGZ1bmN0b3IgaXMgbm90IG51bGxhcnkgIAotbmFtZXNwYWNlIGRldGFpbCB7Ci0gIHRlbXBsYXRlPGludCBOLCBjbGFzcyBUdXBsZT4gc3RydWN0IGdldF9lbGVtZW50X29yX251bGxfdHlwZSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgIGRldGFpbDo6dHVwbGVfZWxlbWVudF9hc19yZWZlcmVuY2U8TiwgVHVwbGU+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0gIHRlbXBsYXRlPGludCBOPiBzdHJ1Y3QgZ2V0X2VsZW1lbnRfb3JfbnVsbF90eXBlPE4sIG51bGxfdHlwZT4gewotICAgIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci0gIH07Ci19Ci0KLXRlbXBsYXRlIDxpbnQgST4gc3RydWN0IHBsYWNlaG9sZGVyOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBwbGFjZWhvbGRlcjxGSVJTVD4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpnZXRfZWxlbWVudF9vcl9udWxsX3R5cGU8MCwgU2lnQXJncz46OnR5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4gCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFJFVD46OnZhbHVlKTsgCi0gICAgQ0FMTF9VU0VfQVJHUzsgLy8gZG9lcyBub3RoaW5nLCBwcmV2ZW50cyB3YXJuaW5ncyBmb3IgdW51c2VkIGFyZ3MKLSAgICByZXR1cm4gYTsgCi0gIH0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsYWNlaG9sZGVyPFNFQ09ORD4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpnZXRfZWxlbWVudF9vcl9udWxsX3R5cGU8MSwgU2lnQXJncz46OnR5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4gCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgQ0FMTF9VU0VfQVJHUzsgcmV0dXJuIGI7IH0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsYWNlaG9sZGVyPFRISVJEPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmdldF9lbGVtZW50X29yX251bGxfdHlwZTwyLCBTaWdBcmdzPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiAKLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyBDQUxMX1VTRV9BUkdTOyByZXR1cm4gYzsgfQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGxhY2Vob2xkZXI8RVhDRVBUSU9OPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmdldF9lbGVtZW50X29yX251bGxfdHlwZTwzLCBTaWdBcmdzPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiAKLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyBDQUxMX1VTRV9BUkdTOyByZXR1cm4gZW52OyB9Ci19OwotICAgCi10eXBlZGVmIGNvbnN0IGxhbWJkYV9mdW5jdG9yPHBsYWNlaG9sZGVyPEZJUlNUPiA+ICBwbGFjZWhvbGRlcjFfdHlwZTsKLXR5cGVkZWYgY29uc3QgbGFtYmRhX2Z1bmN0b3I8cGxhY2Vob2xkZXI8U0VDT05EPiA+IHBsYWNlaG9sZGVyMl90eXBlOwotdHlwZWRlZiBjb25zdCBsYW1iZGFfZnVuY3RvcjxwbGFjZWhvbGRlcjxUSElSRD4gPiAgcGxhY2Vob2xkZXIzX3R5cGU7Ci0gICAKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KLS8vIGZyZWUgdmFyaWFibGVzIGFyZSBsYW1iZGFfZnVuY3RvcnMuIFRoaXMgaXMgdG8gYWxsb3cgdW5pZm9ybSBoYW5kbGluZyB3aXRoIAotLy8gb3RoZXIgbGFtYmRhX2Z1bmN0b3JzLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxNDAwKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTEyKSAvL2Fzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotI2VuZGlmCi0KLS8vIC0tIGxhbWJkYV9mdW5jdG9yIE5PTkUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWNsYXNzIGxhbWJkYV9mdW5jdG9yIDogcHVibGljIFQgCi17Ci0KLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIGFyaXR5X2JpdHMgPSBnZXRfYXJpdHk8VD46OnZhbHVlKTsKLSAKLXB1YmxpYzoKLSAgdHlwZWRlZiBUIGluaGVyaXRlZDsKLQotICBsYW1iZGFfZnVuY3RvcigpIHt9Ci0gIGxhbWJkYV9mdW5jdG9yKGNvbnN0IGxhbWJkYV9mdW5jdG9yJiBsKSA6IGluaGVyaXRlZChsKSB7fQotCi0gIGxhbWJkYV9mdW5jdG9yKGNvbnN0IFQmIHQpIDogaW5oZXJpdGVkKHQpIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW5oZXJpdGVkOjp0ZW1wbGF0ZSAKLSAgICAgIHNpZzx0eXBlbmFtZSBTaWdBcmdzOjp0YWlsX3R5cGU+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgLy8gTm90ZSB0aGF0IHRoaXMgcmV0dXJuIHR5cGUgZGVkdWN0aW9uIHRlbXBsYXRlIGlzIGluc3RhbnRpYXRlZCwgZXZlbiAKLSAgLy8gaWYgdGhlIG51bGxhcnkgCi0gIC8vIG9wZXJhdG9yKCkgaXMgbm90IGNhbGxlZCBhdCBhbGwuIE9uZSBtdXN0IG1ha2Ugc3VyZSB0aGF0IGl0IGRvZXMgbm90IGZhaWwuCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8bnVsbF90eXBlPjo6dHlwZQotICAgICAgbnVsbGFyeV9yZXR1cm5fdHlwZTsKLQotICAvLyBTdXBwb3J0IGZvciBuZG5ib29zdDo6cmVzdWx0X29mLgotICB0ZW1wbGF0ZSA8Y2xhc3MgU2lnPiBzdHJ1Y3QgcmVzdWx0OwotICB0ZW1wbGF0ZSA8Y2xhc3MgRj4KLSAgc3RydWN0IHJlc3VsdDxGKCk+IHsKLSAgICB0eXBlZGVmIG51bGxhcnlfcmV0dXJuX3R5cGUgdHlwZTsKLSAgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEE+Ci0gIHN0cnVjdCByZXN1bHQ8RihBKT4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2lnPHR1cGxlPEYsIEE+ID46OnR5cGUgdHlwZTsKLSAgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0cnVjdCByZXN1bHQ8RihBLCBCKT4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2lnPHR1cGxlPEYsIEEsIEI+ID46OnR5cGUgdHlwZTsKLSAgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEM+Ci0gIHN0cnVjdCByZXN1bHQ8RihBLCBCLCBDKT4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2lnPHR1cGxlPEYsIEEsIEIsIEM+ID46OnR5cGUgdHlwZTsKLSAgfTsKLQotICBudWxsYXJ5X3JldHVybl90eXBlIG9wZXJhdG9yKCkoKSBjb25zdCB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIAotICAgICAgY2FsbDxudWxsYXJ5X3JldHVybl90eXBlPgotICAgICAgICAoY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBPgotICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJj4gPjo6dHlwZQotICBvcGVyYXRvcigpKEEmIGEpIGNvbnN0IHsgCi0gICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgY2FsbDwKLSAgICAgIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEmPiA+Ojp0eXBlCi0gICAgPihhLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEE+Ci0gIE5ETkJPT1NUX0xBTUJEQV9ESVNBQkxFX0lGX0FSUkFZMShBLCBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBIGNvbnN0Jj4gPikKLSAgb3BlcmF0b3IoKShBIGNvbnN0JiBhKSBjb25zdCB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIGNhbGw8Ci0gICAgICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBIGNvbnN0Jj4gPjo6dHlwZQotICAgID4oYSwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJiwgQiY+ID46OnR5cGUKLSAgb3BlcmF0b3IoKShBJiBhLCBCJiBiKSBjb25zdCB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIGNhbGw8Ci0gICAgICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJiwgQiY+ID46OnR5cGUKLSAgICA+KGEsIGIsIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICBORE5CT09TVF9MQU1CREFfRElTQUJMRV9JRl9BUlJBWTIoQSwgQiwgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSBjb25zdCYsIEImPiA+KQotICBvcGVyYXRvcigpKEEgY29uc3QmIGEsIEImIGIpIGNvbnN0IHsgCi0gICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgY2FsbDwKLSAgICAgIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEgY29uc3QmLCBCJj4gPjo6dHlwZQotICAgID4oYSwgYiwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIE5ETkJPT1NUX0xBTUJEQV9ESVNBQkxFX0lGX0FSUkFZMihBLCBCLCBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJiwgQiBjb25zdCY+ID4pCi0gIG9wZXJhdG9yKCkoQSYgYSwgQiBjb25zdCYgYikgY29uc3QgeyAKLSAgICByZXR1cm4gaW5oZXJpdGVkOjp0ZW1wbGF0ZSBjYWxsPAotICAgICAgdHlwZW5hbWUgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSYsIEIgY29uc3QmPiA+Ojp0eXBlCi0gICAgPihhLCBiLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSk7IAotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLSAgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkyKEEsIEIsIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEgY29uc3QmLCBCIGNvbnN0Jj4gPikKLSAgb3BlcmF0b3IoKShBIGNvbnN0JiBhLCBCIGNvbnN0JiBiKSBjb25zdCB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIGNhbGw8Ci0gICAgICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBIGNvbnN0JiwgQiBjb25zdCY+ID46OnR5cGUKLSAgICA+KGEsIGIsIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBDPgotICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJiwgQiYsIEMmPiA+Ojp0eXBlCi0gIG9wZXJhdG9yKCkoQSYgYSwgQiYgYiwgQyYgYykgY29uc3QKLSAgeyAKLSAgICByZXR1cm4gaW5oZXJpdGVkOjp0ZW1wbGF0ZSBjYWxsPAotICAgICAgdHlwZW5hbWUgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSYsIEImLCBDJj4gPjo6dHlwZQotICAgID4oYSwgYiwgYywgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBDPgotICBORE5CT09TVF9MQU1CREFfRElTQUJMRV9JRl9BUlJBWTMoQSwgQiwgQywgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSBjb25zdCYsIEIgY29uc3QmLCBDIGNvbnN0Jj4gPikKLSAgb3BlcmF0b3IoKShBIGNvbnN0JiBhLCBCIGNvbnN0JiBiLCBDIGNvbnN0JiBjKSBjb25zdAotICB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIGNhbGw8Ci0gICAgICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBIGNvbnN0JiwgQiBjb25zdCYsIEMgY29uc3QmPiA+Ojp0eXBlCi0gICAgPihhLCBiLCBjLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIC8vIGZvciBpbnRlcm5hbCBjYWxscyB3aXRoIGVudgotICB0ZW1wbGF0ZTxDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlCi0gIGludGVybmFsX2NhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyAKLSAgICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgCi0gICAgICAgY2FsbDx0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIAotICAgICAgICAgc2lnPHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlPihDQUxMX0FDVFVBTF9BUkdTKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBPgotICBjb25zdCBsYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgICAgICAgICAgICAgb3RoZXJfYWN0aW9uPGFzc2lnbm1lbnRfYWN0aW9uPiwKLSAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0dXBsZTxsYW1iZGFfZnVuY3RvciwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPGNvbnN0IEE+Ojp0eXBlPiA+ID4KLSAgb3BlcmF0b3I9KGNvbnN0IEEmIGEpIGNvbnN0IHsKLSAgICByZXR1cm4gbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgICAgICAgICAgICAgIG90aGVyX2FjdGlvbjxhc3NpZ25tZW50X2FjdGlvbj4sCi0gICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHVwbGU8bGFtYmRhX2Z1bmN0b3IsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxjb25zdCBBPjo6dHlwZT4gPgotICAgICAoICBuZG5ib29zdDo6dHVwbGU8bGFtYmRhX2Z1bmN0b3IsCi0gICAgICAgICAgICAgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8Y29uc3QgQT46OnR5cGU+KCp0aGlzLCBhKSApOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQT4gCi0gIGNvbnN0IGxhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yX2Jhc2U8IAotICAgICAgICAgICAgICAgICAgb3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCAKLSAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0dXBsZTxsYW1iZGFfZnVuY3RvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxjb25zdCBBPjo6dHlwZT4gPiA+IAotICBvcGVyYXRvcltdKGNvbnN0IEEmIGEpIGNvbnN0IHsgCi0gICAgcmV0dXJuIGxhbWJkYV9mdW5jdG9yX2Jhc2U8IAotICAgICAgICAgICAgICAgICAgb3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCAKLSAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0dXBsZTxsYW1iZGFfZnVuY3RvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxjb25zdCBBPjo6dHlwZT4gPgotICAgICAoIG5kbmJvb3N0Ojp0dXBsZTxsYW1iZGFfZnVuY3RvciwgCi0gICAgICAgICAgICAgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8Y29uc3QgQT46OnR5cGU+KCp0aGlzLCBhICkgKTsgCi0gIH0gCi19OwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxNDAwKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX0RFQ0xUWVBFKQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHJlc3VsdF9vZjxuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPigpPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmxhbWJkYTo6bGFtYmRhX2Z1bmN0b3I8VD46Om51bGxhcnlfcmV0dXJuX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVzdWx0X29mPGNvbnN0IG5kbmJvb3N0OjpsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPFQ+KCk+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPjo6bnVsbGFyeV9yZXR1cm5fdHlwZSB0eXBlOwotfTsKLQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZjxuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPigpPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmxhbWJkYTo6bGFtYmRhX2Z1bmN0b3I8VD46Om51bGxhcnlfcmV0dXJuX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZjxjb25zdCBuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPigpPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmxhbWJkYTo6bGFtYmRhX2Z1bmN0b3I8VD46Om51bGxhcnlfcmV0dXJuX3R5cGUgdHlwZTsKLX07Ci0KLX0KLQotLy8gaXNfcGxhY2Vob2xkZXIKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lzX3BsYWNlaG9sZGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGlzX3BsYWNlaG9sZGVyPCBsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPCBsYW1iZGE6OnBsYWNlaG9sZGVyPGxhbWJkYTo6RklSU1Q+ID4gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSAxIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpc19wbGFjZWhvbGRlcjwgbGFtYmRhOjpsYW1iZGFfZnVuY3RvcjwgbGFtYmRhOjpwbGFjZWhvbGRlcjxsYW1iZGE6OlNFQ09ORD4gPiA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IDIgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGlzX3BsYWNlaG9sZGVyPCBsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPCBsYW1iZGE6OnBsYWNlaG9sZGVyPGxhbWJkYTo6VEhJUkQ+ID4gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSAzIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk4Y2VmNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vLyAgbGFtYmRhX2Z3ZC5ocHAgLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd3d3LmJvb3N0Lm9yZwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0ZXRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0ZXRF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsgCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgZ2VuZXJhdGVfZXJyb3I7Ci0KLX0gICAKLS8vIC0tIHBsYWNlaG9sZGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZSA8aW50IEk+IHN0cnVjdCBwbGFjZWhvbGRlcjsKLQotLy8gZnVuY3Rpb25fYWRhcHRvcnMKLXRlbXBsYXRlIDxjbGFzcyBGdW5jPiAKLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yOwotCi10ZW1wbGF0ZSA8aW50IEksIGNsYXNzIEFjdD4gY2xhc3MgYWN0aW9uOwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4gCi1jbGFzcyBsYW1iZGFfZnVuY3RvcjsKLQotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQXJncz4gCi1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlOwotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotLy8gICNkZWZpbmUgQ0FMTF9URU1QTEFURV9BUkdTIGNsYXNzIEEsIGNsYXNzIEVudgotLy8gICNkZWZpbmUgQ0FMTF9GT1JNQUxfQVJHUyBBJiBhLCBFbnYmIGVudgotLy8gICNkZWZpbmUgQ0FMTF9BQ1RVQUxfQVJHUyBhLCBlbnYKLS8vICAjZGVmaW5lIENBTExfQUNUVUFMX0FSR1NfTk9fRU5WIGEKLS8vICAjZGVmaW5lIENBTExfUkVGRVJFTkNFX1RZUEVTIEEmLCBFbnYmCi0vLyAgI2RlZmluZSBDQUxMX1BMQUlOX1RZUEVTIEEsIEVudgotI2RlZmluZSBDQUxMX1RFTVBMQVRFX0FSR1MgY2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQywgY2xhc3MgRW52Ci0jZGVmaW5lIENBTExfRk9STUFMX0FSR1MgQSYgYSwgQiYgYiwgQyYgYywgRW52JiBlbnYKLSNkZWZpbmUgQ0FMTF9BQ1RVQUxfQVJHUyBhLCBiLCBjLCBlbnYKLSNkZWZpbmUgQ0FMTF9BQ1RVQUxfQVJHU19OT19FTlYgYSwgYiwgYwotI2RlZmluZSBDQUxMX1JFRkVSRU5DRV9UWVBFUyBBJiwgQiYsIEMmLCBFbnYmCi0jZGVmaW5lIENBTExfUExBSU5fVFlQRVMgQSwgQiwgQywgRW52Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbGFtYmRhIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLXZvaWQgZG9fbm90aGluZyhBMSYsIEEyJiwgQTMmLCBBNCYpIHt9Ci0KLX0gLy8gZGV0YWlsCi19IC8vIGxhbWJkYQotfSAvLyBib29zdAotCi0vLyBwcmV2ZW50IHRoZSB3YXJuaW5ncyBmcm9tIHVudXNlZCBhcmd1bWVudHMKLSNkZWZpbmUgQ0FMTF9VU0VfQVJHUyBcCi06Om5kbmJvb3N0OjpsYW1iZGE6OmRldGFpbDo6ZG9fbm90aGluZyhhLCBiLCBjLCBlbnYpCi0KLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIzNmUwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NzggKzAsMCBAQAotLy8gLSBsYW1iZGFfdHJhaXRzLmhwcCAtLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd3d3LmJvb3N0Lm9yZwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfTEFNQkRBX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3RyYW5zZm9ybV90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2N2X3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZnVuY3Rpb25fdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9vYmplY3RfdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90dXBsZS90dXBsZS5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbGFtYmRhIHsKLQotLy8gLS0gaWYgY29uc3RydWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gUHJvcG9zZWQgYnkgS3J6eXN6dG9mIEN6YXJuZWNraSBhbmQgVWxyaWNoIEVpc2VuZWNrZXIKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDxib29sIElmLCBjbGFzcyBUaGVuLCBjbGFzcyBFbHNlPiBzdHJ1Y3QgSUYgeyB0eXBlZGVmIFRoZW4gUkVUOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVGhlbiwgY2xhc3MgRWxzZT4gc3RydWN0IElGPGZhbHNlLCBUaGVuLCBFbHNlPiB7Ci0gIHR5cGVkZWYgRWxzZSBSRVQ7Ci19OwotCi0KLS8vIEFuIGlmIGNvbnN0cnVjdCB0aGF0IGRvZXNuJ3QgaW5zdGFudGlhdGUgdGhlIG5vbi1tYXRjaGluZyB0ZW1wbGF0ZToKLQotLy8gQ2FsbGVkIGFzOiAKLS8vICBJRl90eXBlPGNvbmRpdGlvbiwgQSwgQj46OnR5cGUgCi0vLyBUaGUgbWF0Y2hpbmcgdGVtcGxhdGUgbXVzdCBkZWZpbmUgdGhlIHR5cGVkZWQgJ3R5cGUnCi0vLyBJLmUuIEE6OnR5cGUgaWYgY29uZGl0aW9uIGlzIHRydWUsIEI6OnR5cGUgaWYgY29uZGl0aW9uIGlzIGZhbHNlCi0vLyBJZGVhIGZyb20gVmVzYSBLYXJ2b25lbiAoZnJvbSBDJkUgYXMgd2VsbCBJIGd1ZXNzKQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBJRl90eXBlXwotewotICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLX07Ci0KLQotdGVtcGxhdGU8Ym9vbCBDLCBjbGFzcyBULCBjbGFzcyBFPgotc3RydWN0IElGX3R5cGUKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgIElGX3R5cGVfPHR5cGVuYW1lIElGPEMsIFQsIEU+OjpSRVQgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gaGVscGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2l2ZSB0eXBlZGVmIFQgdG8gc29tZSB0eXBlCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlkZW50aXR5X21hcHBpbmcgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotLy8gQW4gaWYgY29uc3RydWN0IGZvciBmaW5kaW5nIGFuIGludGVncmFsIGNvbnN0YW50ICd2YWx1ZScKLS8vIERvZXMgbm90IGluc3RhbnRpYXRlIHRoZSBub24tbWF0Y2hpbmcgYnJhbmNoCi0vLyBDYWxsZWQgYXMgSUZfdmFsdWU8Y29uZGl0aW9uLCBBLCBCPjo6dmFsdWUKLS8vIElmIGNvbmRpdGlvbiBpcyB0cnVlIEE6OnZhbHVlIG11c3QgYmUgZGVmaW5lZCwgb3RoZXJ3aXNlIEI6OnZhbHVlCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgSUZfdmFsdWVfCi17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gVDo6dmFsdWUpOwotfTsKLQotCi10ZW1wbGF0ZTxib29sIEMsIGNsYXNzIFQsIGNsYXNzIEU+Ci1zdHJ1Y3QgSUZfdmFsdWUKLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAoSUZfdmFsdWVfPHR5cGVuYW1lIElGPEMsIFQsIEU+OjpSRVQ+Ojp2YWx1ZSkpOwotfTsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyByZW1vdmVzIHJlZmVyZW5jZSBmcm9tIG90aGVyIHRoYW4gZnVuY3Rpb24gdHlwZXM6Ci10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyByZW1vdmVfcmVmZXJlbmNlX2lmX3ZhbGlkCi17Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSBwbGFpblQ7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgSUY8Ci0gICAgbmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPHBsYWluVD46OnZhbHVlLAotICAgIFQsCi0gICAgcGxhaW5UCi0gID46OlJFVCB0eXBlOwotCi19OwotCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlX2FuZF9jdiB7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8Ci0gICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlCi0gICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLSAgIAotLy8gcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBvZiB0dXBsZSBUCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVD4gc3RydWN0IHR1cGxlX2VsZW1lbnRfYXNfcmVmZXJlbmNlIHsgICAKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgICBuZG5ib29zdDo6dHVwbGVzOjphY2Nlc3NfdHJhaXRzPAotICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmVsZW1lbnQ8TiwgVD46OnR5cGUKLSAgICAgPjo6bm9uX2NvbnN0X3R5cGUgdHlwZTsKLX07Ci0KLS8vIHJldHVybnMgdGhlIGN2IGFuZCByZXZlcmVuY2Ugc3RyaXBwZWQgdHlwZSBvZiBhIHR1cGxlIGVsZW1lbnQKLXRlbXBsYXRlPGludCBOLCBjbGFzcyBUPiBzdHJ1Y3QgdHVwbGVfZWxlbWVudF9zdHJpcHBlZCB7ICAgCi0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgcmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Ci0gICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR1cGxlczo6ZWxlbWVudDxOLCBUPjo6dHlwZQotICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLyBpc19sYW1iZGFfZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfbGFtYmRhX2Z1bmN0b3JfIHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLSAgIAotdGVtcGxhdGUgPGNsYXNzIEFyZz4gc3RydWN0IGlzX2xhbWJkYV9mdW5jdG9yXzxsYW1iZGFfZnVuY3RvcjxBcmc+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0gICAKLX0gLy8gZW5kIGRldGFpbAotCi0gICAKLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfbGFtYmRhX2Z1bmN0b3IgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgCi0gICAgIHZhbHVlID0gCi0gICAgICAgZGV0YWlsOjppc19sYW1iZGFfZnVuY3Rvcl88Ci0gICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PFQ+Ojp0eXBlCi0gICAgICAgPjo6dmFsdWUpOwotfTsKLSAgIAotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gLS0gcGFyYW1ldGVyX3RyYWl0c18gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIEFuIGludGVybmFsIHBhcmFtZXRlciB0eXBlIHRyYWl0cyBjbGFzcyB0aGF0IHJlc3BlY3RzCi0vLyB0aGUgcmVmZXJlbmNlX3dyYXBwZXIgY2xhc3MuCi0KLS8vIFRoZSBjb252ZXJzaW9ucyBwZXJmb3JtZWQgYXJlOgotLy8gcmVmZXJlbmNlcyAtPiBjb21waWxlX3RpbWVfZXJyb3IKLS8vIFQxIC0+IFQyLCAKLS8vIHJlZmVyZW5jZV93cmFwcGVyPFQ+IC0+IFQmCi0vLyBjb25zdCBhcnJheSAtPiByZWYgdG8gY29uc3QgYXJyYXkKLS8vIGFycmF5IC0+IHJlZiB0byBhcnJheQotLy8gZnVuY3Rpb24gLT4gcmVmIHRvIGZ1bmN0aW9uCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IAotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfIHsKLSAgdHlwZWRlZiBUMiB0eXBlOwotfTsKLQotLy8gRG8gbm90IGluc3RhbnRpYXRlIHdpdGggcmVmZXJlbmNlIHR5cGVzCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBbnk+IHN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxUJiwgQW55PiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZ2VuZXJhdGVfZXJyb3I8VCY+OjoKLSAgICAgIHBhcmFtZXRlcl90cmFpdHNfY2xhc3NfaW5zdGFudGlhdGVkX3dpdGhfcmVmZXJlbmNlX3R5cGUgdHlwZTsKLX07Ci0KLS8vIEFycmF5cyBjYW4ndCBiZSBzdG9yZWQgYXMgcGxhaW4gdHlwZXM7IGNvbnZlcnQgdGhlbSB0byByZWZlcmVuY2VzCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbiwgY2xhc3MgQW55PiBzdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188VFtuXSwgQW55PiB7Ci0gIHR5cGVkZWYgVCAoJnR5cGUpW25dOwotfTsKLSAgIAotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4sIGNsYXNzIEFueT4gCi1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188Y29uc3QgVFtuXSwgQW55PiB7Ci0gIHR5cGVkZWYgY29uc3QgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4sIGNsYXNzIEFueT4gCi1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188dm9sYXRpbGUgVFtuXSwgQW55PiB7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgIFQgKCZ0eXBlKVtuXTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbiwgY2xhc3MgQW55PiAKLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxjb25zdCB2b2xhdGlsZSBUW25dLCBBbnk+IHsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBUICgmdHlwZSlbbl07Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFueT4gCi1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188bmRuYm9vc3Q6OnJlZmVyZW5jZV93cmFwcGVyPFQ+LCBBbnkgPnsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQW55PiAKLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxjb25zdCBuZG5ib29zdDo6cmVmZXJlbmNlX3dyYXBwZXI8VD4sIEFueSA+ewotICB0eXBlZGVmIFQmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBbnk+IAotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPHZvbGF0aWxlIG5kbmJvb3N0OjpyZWZlcmVuY2Vfd3JhcHBlcjxUPiwgQW55ID57Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFueT4gCi1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188Y29uc3Qgdm9sYXRpbGUgbmRuYm9vc3Q6OnJlZmVyZW5jZV93cmFwcGVyPFQ+LCBBbnkgPnsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQW55Pgotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPHZvaWQsIEFueT4gewotICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZywgY2xhc3MgQW55Pgotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPGxhbWJkYV9mdW5jdG9yPEFyZz4sIEFueSA+IHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxBcmc+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIGNsYXNzIEFueT4KLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+LCBBbnkgPiB7Ci0gIHR5cGVkZWYgbGFtYmRhX2Z1bmN0b3I8QXJnPiB0eXBlOwotfTsKLQotLy8gQXJlIHRoZSB2b2xhdGlsZSB2ZXJzaW9ucyBuZWVkZWQ/Ci10ZW1wbGF0ZTxjbGFzcyBBcmcsIGNsYXNzIEFueT4KLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzx2b2xhdGlsZSBsYW1iZGFfZnVuY3RvcjxBcmc+LCBBbnkgPiB7Ci0gIHR5cGVkZWYgbGFtYmRhX2Z1bmN0b3I8QXJnPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQXJnLCBjbGFzcyBBbnk+Ci1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188Y29uc3Qgdm9sYXRpbGUgbGFtYmRhX2Z1bmN0b3I8QXJnPiwgQW55ID4gewotICB0eXBlZGVmIGxhbWJkYV9mdW5jdG9yPEFyZz4gdHlwZTsKLX07Ci0KLX0gLy8gZW5kIG5hbWVzcGFjZSBkZXRhaWwKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIHRyYWl0cyBjbGFzc2VzIGZvciBsYW1iZGEgZXhwcmVzc2lvbnMgKGJpbmQgZnVuY3Rpb25zLCBvcGVyYXRvcnMgLi4uKSAgIAotCi0vLyBtdXN0IGJlIGluc3RhbnRpYXRlZCB3aXRoIG5vbi1yZWZlcmVuY2UgdHlwZXMKLQotLy8gVGhlIGRlZmF1bHQgaXMgY29uc3QgcGxhaW4gdHlwZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBjb25zdCBUIC0+IGNvbnN0IFQsIAotLy8gVCAtPiBjb25zdCBULCAKLS8vIHJlZmVyZW5jZXMgLT4gY29tcGlsZV90aW1lX2Vycm9yCi0vLyByZWZlcmVuY2Vfd3JhcHBlcjxUPiAtPiBUJgotLy8gYXJyYXkgLT4gY29uc3QgcmVmIGFycmF5Ci10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGNvbnN0X2NvcHlfYXJndW1lbnQgewotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6cGFyYW1ldGVyX3RyYWl0c188Ci0gICAgICBULAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpJRjxuZG5ib29zdDo6aXNfZnVuY3Rpb248VD46OnZhbHVlLCBUJiwgY29uc3QgVD46OlJFVAotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIFQgbWF5IGJlIGEgZnVuY3Rpb24gdHlwZS4gV2l0aG91dCB0aGUgSUYgdGVzdCwgY29uc3Qgd291bGQgYmUgYWRkZWQgCi0vLyB0byBhIGZ1bmN0aW9uIHR5cGUsIHdoaWNoIGlzIGlsbGVnYWwuCi0KLS8vIGFsbCBhcnJheXMgYXJlIGNvbnZlcnRlZCB0byBjb25zdC4KLS8vIFRoaXMgdHJhaXRzIHRlbXBsYXRlIGlzIHVzZWQgZm9yICdjb25zdCBUJicgcGFyYW1ldGVyIHBhc3NpbmcgCi0vLyBhbmQgdGh1cyB0aGUga25vd2xlZGdlIG9mIHRoZSBwb3RlbnRpYWwgCi0vLyBub24tY29uc3RuZXNzIG9mIGFuIGFjdHVhbCBhcmd1bWVudCBpcyBsb3N0LiAgIAotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+ICBzdHJ1Y3QgY29uc3RfY29weV9hcmd1bWVudCA8VFtuXT4gewotICB0eXBlZGVmIGNvbnN0IFQgKCZ0eXBlKVtuXTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4gIHN0cnVjdCBjb25zdF9jb3B5X2FyZ3VtZW50IDx2b2xhdGlsZSBUW25dPiB7Ci0gICAgIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVCAoJnR5cGUpW25dOwotfTsKLSAgIAotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBjb25zdF9jb3B5X2FyZ3VtZW50PFQmPiB7fTsKLS8vIGRvIG5vdCBpbnN0YW50aWF0ZSB3aXRoIHJlZmVyZW5jZXMKLSAgLy8gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpnZW5lcmF0ZV9lcnJvcjxUJj46OnJlZmVyZW5jZXNfbm90X2FsbG93ZWQgdHlwZTsKLQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY29uc3RfY29weV9hcmd1bWVudDx2b2lkPiB7Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotCi0vLyBEb2VzIHRoZSBzYW1lIGFzIGNvbnN0X2NvcHlfYXJndW1lbnQsIGJ1dCBwYXNzZXMgcmVmZXJlbmNlcyB0aHJvdWdoIGFzIHN1Y2gKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudDxUPjo6dHlwZSB0eXBlOyAKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbjxUJj4gewotICB0eXBlZGVmIFQmIHR5cGU7IAotfTsKLSAgIAotLy8gVGhlIGRlZmF1bHQgaXMgbm9uLWNvbnN0IHJlZmVyZW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBjb25zdCBUIC0+IGNvbnN0IFQmLCAKLS8vIFQgLT4gVCYsIAotLy8gcmVmZXJlbmNlcyAtPiBjb21waWxlX3RpbWVfZXJyb3IKLS8vIHJlZmVyZW5jZV93cmFwcGVyPFQ+IC0+IFQmCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHJlZmVyZW5jZV9hcmd1bWVudCB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbWV0ZXJfdHJhaXRzXzxULCBUJj46OnR5cGUgdHlwZTsgCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHJlZmVyZW5jZV9hcmd1bWVudDxUJj4gewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Z2VuZXJhdGVfZXJyb3I8VCY+OjpyZWZlcmVuY2VzX25vdF9hbGxvd2VkIHR5cGU7IAotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQXJnPgotc3RydWN0IHJlZmVyZW5jZV9hcmd1bWVudDxsYW1iZGFfZnVuY3RvcjxBcmc+ID4gewotICB0eXBlZGVmIGxhbWJkYV9mdW5jdG9yPEFyZz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZz4KLXN0cnVjdCByZWZlcmVuY2VfYXJndW1lbnQ8Y29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+IHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxBcmc+IHR5cGU7Ci19OwotCi0vLyBBcmUgdGhlIHZvbGF0aWxlIHZlcnNpb25zIG5lZWRlZD8KLXRlbXBsYXRlPGNsYXNzIEFyZz4KLXN0cnVjdCByZWZlcmVuY2VfYXJndW1lbnQ8dm9sYXRpbGUgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+IHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxBcmc+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmc+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2FyZ3VtZW50PGNvbnN0IHZvbGF0aWxlIGxhbWJkYV9mdW5jdG9yPEFyZz4gPiB7Ci0gIHR5cGVkZWYgbGFtYmRhX2Z1bmN0b3I8QXJnPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlZmVyZW5jZV9hcmd1bWVudDx2b2lkPiB7Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAKLS8vIEFycmF5IHRvIHBvaW50ZXIgY29udmVyc2lvbgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgYXJyYXlfdG9fcG9pbnRlciB7IAotICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBpbnQgTj4KLXN0cnVjdCBhcnJheV90b19wb2ludGVyIDxjb25zdCBUW05dPiB7IAotICB0eXBlZGVmIGNvbnN0IFQqIHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIGludCBOPgotc3RydWN0IGFycmF5X3RvX3BvaW50ZXIgPFRbTl0+IHsgCi0gIHR5cGVkZWYgVCogdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBpbnQgTj4KLXN0cnVjdCBhcnJheV90b19wb2ludGVyIDxjb25zdCBUICgmKSBbTl0+IHsgCi0gIHR5cGVkZWYgY29uc3QgVCogdHlwZTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgaW50IE4+Ci1zdHJ1Y3QgYXJyYXlfdG9fcG9pbnRlciA8VCAoJikgW05dPiB7IAotICB0eXBlZGVmIFQqIHR5cGU7Ci19OwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVGhlIGNhbGxfdHJhaXRzIGZvciBiaW5kCi0vLyBSZXNwZWN0cyB0aGUgcmVmZXJlbmNlX3dyYXBwZXIgY2xhc3MuCi0KLS8vIFRoZXNlIHRlbXBsYXRlcyBhcmUgdXNlZCBvdXRzaWRlIG9mIGJpbmQgZnVuY3Rpb25zIGFzIHdlbGwuCi0vLyB0aGUgYmluZF90dXBsZV9tYXBwZXIgcHJvdmlkZXMgYSBzaG9ydGVyIG5vdGF0aW9uIGZvciBkZWZhdWx0Ci0vLyBib3VuZCBhcmd1bWVudCBzdG9yaW5nIHNlbWFudGljcywgaWYgYWxsIGFyZ3VtZW50cyBhcmUgdHJlYXRlZAotLy8gdW5pZm9ybWx5LgotCi0vLyBmcm9tIHRlbXBsYXRlPGNsYXNzIFQ+IGZvbyhjb25zdCBUJiB0KSA6IGJpbmRfdHJhaXRzPGNvbnN0IFQ+Ojp0eXBlCi0vLyBmcm9tIHRlbXBsYXRlPGNsYXNzIFQ+IGZvbyhUJiB0KSA6IGJpbmRfdHJhaXRzPFQ+Ojp0eXBlCi0KLS8vIENvbnZlcnNpb25zOgotLy8gVCAtPiBjb25zdCBULAotLy8gY3YgVCAtPiBjdiBULCAKLS8vIFQmIC0+IFQmIAotLy8gcmVmZXJlbmNlX3dyYXBwZXI8VD4gLT4gVCYKLS8vIGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPFQ+IC0+IFQmCi0vLyBhcnJheSAtPiBjb25zdCByZWYgYXJyYXkKLQotLy8gbWFrZSBib3VuZCBhcmd1bWVudHMgY29uc3QsIHRoaXMgaXMgYSBkZWxpYmVyYXRlIGRlc2lnbiBjaG9pY2UsIHRoZQotLy8gcHVycG9zZSBpcyB0byBwcmV2ZW50IHNpZGUgZWZmZWN0cyB0byBib3VuZCBhcmd1bWVudHMgdGhhdCBhcmUgc3RvcmVkCi0vLyBhcyBjb3BpZXMKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgYmluZF90cmFpdHMgewotICB0eXBlZGVmIGNvbnN0IFQgdHlwZTsgCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGJpbmRfdHJhaXRzPFQmPiB7Ci0gIHR5cGVkZWYgVCYgdHlwZTsgCi19OwotCi0vLyBudWxsX3R5cGVzIGFyZSBhbiBleGNlcHRpb24sIHdlIGFsd2F5cyB3YW50IHRvIHN0b3JlIHRoZW0gYXMgbm9uIGNvbnN0Ci0vLyBzbyB0aGF0IG90aGVyIHRlbXBsYXRlcyBjYW4gYXNzdW1lIHRoYXQgbnVsbF90eXBlIGlzIGFsd2F5cyB3aXRob3V0IGNvbnN0Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8bnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotCi0vLyB0aGUgYmluZF90dXBsZV9tYXBwZXIsIGJpbmRfdHlwZV9nZW5lcmF0b3JzIG1heSAKLS8vIGludHJvZHVjZSBjb25zdCB0byBudWxsX3R5cGUKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX3RyYWl0czxjb25zdCBudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0KLS8vIEFycmF5cyBjYW4ndCBiZSBzdG9yZWQgYXMgcGxhaW4gdHlwZXM7IGNvbnZlcnQgdGhlbSB0byByZWZlcmVuY2VzLgotLy8gQWxsIGFycmF5cyBhcmUgY29udmVydGVkIHRvIGNvbnN0LiBUaGlzIGlzIGJlY2F1c2UgYmluZCB0YWtlcyBpdHMKLS8vIHBhcmFtZXRlcnMgYXMgY29uc3QgVCYgYW5kIHRodXMgdGhlIGtub3dsZWRnZSBvZiB0aGUgcG90ZW50aWFsIAotLy8gbm9uLWNvbnN0bmVzcyBvZiBhY3R1YWwgYXJndW1lbnQgaXMgbG9zdC4KLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuPiAgc3RydWN0IGJpbmRfdHJhaXRzIDxUW25dPiB7Ci0gIHR5cGVkZWYgY29uc3QgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+IAotc3RydWN0IGJpbmRfdHJhaXRzPGNvbnN0IFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4gIHN0cnVjdCBiaW5kX3RyYWl0czx2b2xhdGlsZSBUW25dPiB7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+IAotc3RydWN0IGJpbmRfdHJhaXRzPGNvbnN0IHZvbGF0aWxlIFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSPgotc3RydWN0IGJpbmRfdHJhaXRzPFIoKT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEFyZzE+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8UihBcmcxKT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoQXJnMSk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyPgotc3RydWN0IGJpbmRfdHJhaXRzPFIoQXJnMSwgQXJnMik+IHsKLSAgICB0eXBlZGVmIFIoJnR5cGUpKEFyZzEsIEFyZzIpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMz4KLXN0cnVjdCBiaW5kX3RyYWl0czxSKEFyZzEsIEFyZzIsIEFyZzMpPiB7Ci0gICAgdHlwZWRlZiBSKCZ0eXBlKShBcmcxLCBBcmcyLCBBcmczKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQ+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8UihBcmcxLCBBcmcyLCBBcmczLCBBcmc0KT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1Pgotc3RydWN0IGJpbmRfdHJhaXRzPFIoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSk+IHsKLSAgICB0eXBlZGVmIFIoJnR5cGUpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNj4KLXN0cnVjdCBiaW5kX3RyYWl0czxSKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpPiB7Ci0gICAgdHlwZWRlZiBSKCZ0eXBlKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2KTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzc+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8UihBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNyk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4Pgotc3RydWN0IGJpbmRfdHJhaXRzPFIoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCk+IHsKLSAgICB0eXBlZGVmIFIoJnR5cGUpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOT4KLXN0cnVjdCBiaW5kX3RyYWl0czxSKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgsIEFyZzkpPiB7Ci0gICAgdHlwZWRlZiBSKCZ0eXBlKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4LCBBcmc5KTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IAotc3RydWN0IGJpbmRfdHJhaXRzPHJlZmVyZW5jZV93cmFwcGVyPFQ+ID57Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IAotc3RydWN0IGJpbmRfdHJhaXRzPGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPFQ+ID57Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX3RyYWl0czx2b2lkPiB7Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotCi0KLXRlbXBsYXRlIDwKLSAgY2xhc3MgVDAgPSBudWxsX3R5cGUsIGNsYXNzIFQxID0gbnVsbF90eXBlLCBjbGFzcyBUMiA9IG51bGxfdHlwZSwgCi0gIGNsYXNzIFQzID0gbnVsbF90eXBlLCBjbGFzcyBUNCA9IG51bGxfdHlwZSwgY2xhc3MgVDUgPSBudWxsX3R5cGUsIAotICBjbGFzcyBUNiA9IG51bGxfdHlwZSwgY2xhc3MgVDcgPSBudWxsX3R5cGUsIGNsYXNzIFQ4ID0gbnVsbF90eXBlLCAKLSAgY2xhc3MgVDkgPSBudWxsX3R5cGUKLT4KLXN0cnVjdCBiaW5kX3R1cGxlX21hcHBlciB7Ci0gIHR5cGVkZWYKLSAgICB0dXBsZTx0eXBlbmFtZSBiaW5kX3RyYWl0czxUMD46OnR5cGUsIAotICAgICAgICAgIHR5cGVuYW1lIGJpbmRfdHJhaXRzPFQxPjo6dHlwZSwgCi0gICAgICAgICAgdHlwZW5hbWUgYmluZF90cmFpdHM8VDI+Ojp0eXBlLCAKLSAgICAgICAgICB0eXBlbmFtZSBiaW5kX3RyYWl0czxUMz46OnR5cGUsIAotICAgICAgICAgIHR5cGVuYW1lIGJpbmRfdHJhaXRzPFQ0Pjo6dHlwZSwgCi0gICAgICAgICAgdHlwZW5hbWUgYmluZF90cmFpdHM8VDU+Ojp0eXBlLCAKLSAgICAgICAgICB0eXBlbmFtZSBiaW5kX3RyYWl0czxUNj46OnR5cGUsIAotICAgICAgICAgIHR5cGVuYW1lIGJpbmRfdHJhaXRzPFQ3Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBiaW5kX3RyYWl0czxUOD46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgYmluZF90cmFpdHM8VDk+Ojp0eXBlPiB0eXBlOwotfTsKLQotLy8gYmluZF90cmFpdHMsIGV4Y2VwdCBtYXAgY29uc3QgVCYgLT4gY29uc3QgVAotICAvLyB0aGlzIGlzIG5lZWRlZCBlLmcuIGluIGN1cnJ5aW5nLiBDb25zdCByZWZlcmVuY2UgYXJndW1lbnRzIGNhbgotICAvLyByZWZlciB0byB0ZW1wb3Jhcmllcywgc28gaXQgaXMgbm90IHNhZmUgdG8gc3RvcmUgdGhlbSBhcyByZWZlcmVuY2VzLgotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHJlbW92ZV9jb25zdF9yZWZlcmVuY2UgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmluZF90cmFpdHM8VD46OnR5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHJlbW92ZV9jb25zdF9yZWZlcmVuY2U8Y29uc3QgVCY+IHsKLSAgICB0eXBlZGVmIGNvbnN0IFQgdHlwZTsKLSAgfTsKLQotCi0vLyBtYXBzIHRoZSBiaW5kIGFyZ3VtZW50IHR5cGVzIHRvIHRoZSByZXN1bHRpbmcgbGFtYmRhIGZ1bmN0b3IgdHlwZQotdGVtcGxhdGUgPAotICBjbGFzcyBUMCA9IG51bGxfdHlwZSwgY2xhc3MgVDEgPSBudWxsX3R5cGUsIGNsYXNzIFQyID0gbnVsbF90eXBlLCAKLSAgY2xhc3MgVDMgPSBudWxsX3R5cGUsIGNsYXNzIFQ0ID0gbnVsbF90eXBlLCBjbGFzcyBUNSA9IG51bGxfdHlwZSwgCi0gIGNsYXNzIFQ2ID0gbnVsbF90eXBlLCBjbGFzcyBUNyA9IG51bGxfdHlwZSwgY2xhc3MgVDggPSBudWxsX3R5cGUsIAotICBjbGFzcyBUOSA9IG51bGxfdHlwZQotPgotY2xhc3MgYmluZF90eXBlX2dlbmVyYXRvciB7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZQotICBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gID46OnR5cGUgYXJnc190OwotCi0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG5vZl9lbGVtcyA9IG5kbmJvb3N0Ojp0dXBsZXM6Omxlbmd0aDxhcmdzX3Q+Ojp2YWx1ZSk7Ci0KLSAgdHlwZWRlZiAKLSAgICBhY3Rpb248Ci0gICAgICBub2ZfZWxlbXMsIAotICAgICAgZnVuY3Rpb25fYWN0aW9uPG5vZl9lbGVtcz4KLSAgICA+IGFjdGlvbl90eXBlOwotCi1wdWJsaWM6Ci0gIHR5cGVkZWYKLSAgICBsYW1iZGFfZnVuY3RvcjwKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICAgIGFjdGlvbl90eXBlLCAKLSAgICAgICAgYXJnc190Ci0gICAgICA+Ci0gICAgPiB0eXBlOyAKLSAgICAKLX07Ci0KLQotICAgCi19IC8vIGRldGFpbAotICAgCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGNvbnN0IFQmICBtYWtlX2NvbnN0KGNvbnN0IFQmIHQpIHsgcmV0dXJuIHQ7IH0KLQotCi19IC8vIGVuZCBvZiBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIGVuZCBvZiBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0gICAKLSNlbmRpZiAvLyBORE5CT09TVF9MQU1CREFfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL21lbWJlcl9wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL21lbWJlcl9wdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmFiYjc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9tZW1iZXJfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczNyArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtLSBtZW1iZXJfcHRyLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vIENvcHlyaWdodCAoQykgMjAwMCBHYXJ5IFBvd2VsbCAoZ2FyeS5wb3dlbGxAc2llcnJhLmNvbSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9MQU1CREFfTUVNQkVSX1BUUl9IUFApCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9NRU1CRVJfUFRSX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0KLWNsYXNzIG1lbWJlcl9wb2ludGVyX2FjdGlvbiB7fTsKLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gdGhlIGJvb3N0IHR5cGVfdHJhaXRzIG1lbWJlcl9wb2ludGVyIHRyYWl0cyBhcmUgbm90IGVub3VnaCwgCi0vLyBuZWVkIHRvIGtub3cgbW9yZSBkZXRhaWxzLgotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlciB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD46OnR5cGUgdHlwZTsKLSAgdHlwZWRlZiBkZXRhaWw6OnVuc3BlY2lmaWVkIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgZGV0YWlsOjp1bnNwZWNpZmllZCBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIFU6Oio+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxUPjo6dHlwZSB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSB0cnVlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8Y29uc3QgVCBVOjoqPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8Y29uc3QgVD46OnR5cGUgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gdHJ1ZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPgotc3RydWN0IG1lbWJlcl9wb2ludGVyPHZvbGF0aWxlIFQgVTo6Kj4gewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPHZvbGF0aWxlIFQ+Ojp0eXBlIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IHRydWUpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxjb25zdCB2b2xhdGlsZSBUIFU6Oio+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxjb25zdCB2b2xhdGlsZSBUPjo6dHlwZSB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSB0cnVlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IGZhbHNlKTsKLX07Ci0KLS8vIC0tIG5vbmNvbnN0IG1lbWJlciBmdW5jdGlvbnMgLS0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoKT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTE+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEpPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyKT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzKT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQpPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1KT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTY+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyk+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSk+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLS8vIC0tIGNvbnN0IG1lbWJlciBmdW5jdGlvbnMgLS0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoKSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTE+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEpIGNvbnN0PiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyKSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzKSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQpIGNvbnN0PiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1KSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTY+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikgY29uc3Q+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNykgY29uc3Q+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSkgY29uc3Q+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLSAgLy8gLS0gdm9sYXRpbGUgLS0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoKSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTE+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEpIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyKSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzKSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQpIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1KSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTY+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNykgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSkgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLSAgLy8gLS0gY29uc3Qgdm9sYXRpbGUKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoKSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTE+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyKSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzKSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5KSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotCi19IC8vIGRldGFpbAotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICAvLyB0aGlzIGNsYXNzIGhvbGRzIGEgcG9pbnRlciB0byBhIG1lbWJlciBmdW5jdGlvbiBhbmQgdGhlIG9iamVjdC4KLSAgLy8gd2hlbiBjYWxsZWQsIGl0IGp1c3QgY2FsbHMgdGhlIG1lbWJlciBmdW5jdGlvbiB3aXRoIHRoZSBwYXJhbWV0ZXJzIAotICAvLyBwcm92aWRlZAotCi0gIC8vIEl0IHdvdWxkIGhhdmUgYmVlbiBwb3NzaWJsZSB0byB1c2UgZXhpc3RpbmcgbGFtYmRhX2Z1bmN0b3JzIHRvIHJlcHJlc2VudAotICAvLyBhIGJvdW5kIG1lbWJlciBmdW5jdGlvbiBsaWtlIHRoaXMsIGJ1dCB0byBoYXZlIGEgc2VwYXJhdGUgdGVtcGxhdGUgaXMgCi0gIC8vIHNhZmVyLCBzaW5jZSBub3cgdGhpcyBmdW5jdG9yIGRvZXNuJ3QgbWl4IGFuZCBtYXRjaCB3aXRoIGxhbWJkYV9mdW5jdG9ycwotICAvLyBvbmx5IHRoaW5nIHlvdSBjYW4gZG8gd2l0aCB0aGlzIGlzIHRvIGNhbGwgaXQKLQotICAvLyBub3RlIHRoYXQgcHJldmlvdXNseSBpbnN0YW50aWF0ZWQgY2xhc3NlcyAKLSAgLy8gKG90aGVyX2FjdGlvbjxtZW1iZXJfcG9pbnRlcl9hY3Rpb24+IGFuZCBtZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyCi0gIC8vIGd1YXJhbnRlZSwgdGhhdCBBIGFuZCBCIGFyZSAKLSAgLy8gc3VjaCB0eXBlcywgdGhhdCBmb3Igb2JqZWN0cyBhIGFuZCBiIG9mIGNvcnJlc3BvbmRpbmcgdHlwZXMsIGEtPipiIGxlYWRzIAotICAvLyB0byB0aGUgYnVpbHRpbiAtPiogdG8gYmUgY2FsbGVkLiBTbyB0eXBlcyB0aGF0IHdvdWxkIGVuZCBpbiBhICBjYWxsIHRvIAotICAvLyBhIHVzZXIgZGVmaW5lZCAtPiogZG8gbm90IGNyZWF0ZSBhIG1lbWJlcl9wb2ludGVyX2NhbGxlciBvYmplY3QuCi0KLXRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQSwgY2xhc3MgQj4KLWNsYXNzIG1lbWJlcl9wb2ludGVyX2NhbGxlciB7Ci0gIEEgYTsgQiBiOwotCi1wdWJsaWM6Ci0gIG1lbWJlcl9wb2ludGVyX2NhbGxlcihjb25zdCBBJiBhYSwgY29uc3QgQiYgYmIpIDogYShhYSksIGIoYmIpIHt9Ci0KLSAgUkVUIG9wZXJhdG9yKCkoKSBjb25zdCB7IHJldHVybiAoYS0+KmIpKCk7IH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTE+Ci0gIFJFVCBvcGVyYXRvcigpKGNvbnN0IEExJiBhMSkgY29uc3QgeyByZXR1cm4gKGEtPipiKShhMSk7IH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPgotICBSRVQgb3BlcmF0b3IoKShjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMikgY29uc3QgeyByZXR1cm4gKGEtPipiKShhMSwgYTIpOyB9IAotCi0gIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIFJFVCBvcGVyYXRvcigpKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMpIGNvbnN0IHsgCi0gICAgcmV0dXJuIChhLT4qYikoYTEsIGEyLCBhMyk7IAotICB9IAotCi0gIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBSRVQgb3BlcmF0b3IoKShjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgQTQmIGE0KSBjb25zdCB7IAotICAgIHJldHVybiAoYS0+KmIpKGExLCBhMiwgYTMsIGE0KTsgCi0gIH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBSRVQgb3BlcmF0b3IoKShjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsIAotICAgICAgICAgICAgICAgICBjb25zdCBBNSYgYTUpIGNvbnN0IHsgCi0gICAgcmV0dXJuIChhLT4qYikoYTEsIGEyLCBhMywgYTQsIGE1KTsgCi0gIH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgUkVUIG9wZXJhdG9yKCkoY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYpIGNvbnN0IHsgCi0gICAgcmV0dXJuIChhLT4qYikoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7IAotICB9IAotCi0gIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIAotICAgICAgICAgICBjbGFzcyBBNz4KLSAgUkVUIG9wZXJhdG9yKCkoY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBhNykgY29uc3QgeyAKLSAgICByZXR1cm4gKGEtPipiKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7IAotICB9IAotCi0gIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIAotICAgICAgICAgICBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gIFJFVCBvcGVyYXRvcigpKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IEE1JiBhNSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYgYTcsCi0gICAgICAgICAgICAgICAgIGNvbnN0IEE4JiBhOCkgY29uc3QgeyAKLSAgICByZXR1cm4gKGEtPipiKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOyAKLSAgfSAKLQotICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCAKLSAgICAgICAgICAgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgUkVUIG9wZXJhdG9yKCkoY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBhNywKLSAgICAgICAgICAgICAgICAgY29uc3QgQTgmIGE4LCBjb25zdCBBOSYgYTkpIGNvbnN0IHsgCi0gICAgcmV0dXJuIChhLT4qYikoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7IAotICB9IAotCi19OwotCi0vLyBoZWxwZXIgdGVtcGxhdGVzIGZvciByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gYW5kIGFjdGlvbiBjbGFzc2VzCi0vLyBkaWZmZXJlbnQgY2FzZXMgZm9yIGRhdGEgbWVtYmVyLCBmdW5jdGlvbiBtZW1iZXIsIG5laXRoZXIKLQotLy8gdHJ1ZS10cnVlIGNhc2UKLXRlbXBsYXRlIDxib29sIElzX2RhdGFfbWVtYmVyLCBib29sIElzX2Z1bmN0aW9uX21lbWJlcj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyOwotICAvLyBjYW5ub3QgYmUgYm90aCwgbm8gYm9keSBwcm92aWRlZAotCi0gIC8vIGRhdGEgbWVtYmVyIGNhc2UKLSAgLy8gdGhpcyBtZWFucywgdGhhdCBCIGlzIGEgZGF0YSBtZW1iZXIgYW5kIEEgaXMgYSBwb2ludGVyIHR5cGUsCi0gIC8vIHNvIGVpdGhlciBidWlsdC1pbiAtPiogc2hvdWxkIGJlIGNhbGxlZCwgb3IgdGhlcmUgaXMgYW4gZXJyb3IKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXJfYWN0aW9uX2hlbHBlcjx0cnVlLCBmYWxzZT4gewotcHVibGljOgotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQSwgY2xhc3MgQj4KLSAgc3RhdGljIFJFVCBhcHBseShBJiBhLCBCJiBiKSB7IAotICAgIHJldHVybiBhLT4qYjsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICBzdHJ1Y3QgcmV0dXJuX3R5cGUgewotICBwcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbkI7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWVtYmVyX3BvaW50ZXI8cGxhaW5CPjo6dHlwZSB0eXBlMDsKLSAgICAvLyB3ZSByZW1vdmUgdGhlIHJlZmVyZW5jZSBub3csIGFzIHdlIG1heSBoYXZlIHRvIGFkZCBjdjpzIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8dHlwZTA+Ojp0eXBlIHR5cGUxOwotCi0gICAgLy8gQSBpcyBhIHJlZmVyZW5jZSB0byBwb2ludGVyCi0gICAgLy8gcmVtb3ZlIHRoZSB0b3AgbGV2ZWwgY3YgcXVhbGlmaWVycyBhbmQgcmVmZXJlbmNlCi0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgbm9uX3JlZl9BOwotCi0gICAgLy8gQSBpcyBhIHBvaW50ZXIgdHlwZSwgc28gdGFrZSB0aGUgdHlwZSBwb2ludGVkIHRvCi0gICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxub25fcmVmX0E+Ojp0eXBlIG5vbl9wb2ludGVyX0E7IAotCi0gIHB1YmxpYzoKLSAgICAvLyBGb3Igbm9uLXJlZmVyZW5jZSB0eXBlcywgd2UgbXVzdCBhZGQgY29uc3QgYW5kL29yIHZvbGF0aWxlIGlmCi0gICAgLy8gdGhlIHBvaW50ZXIgdHlwZSBoYXMgdGhlc2UgcXVhbGlmaWVycwotICAgIC8vIElmIHRoZSBtZW1iZXIgaXMgYSByZWZlcmVuY2UsIHRoZXNlIGRvIG5vdCBoYXZlIGFueSBlZmZlY3QKLSAgICAvLyAgIChjdiBUID09IFQgaWYgVCBpcyBhIHJlZmVyZW5jZSB0eXBlKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PG5vbl9wb2ludGVyX0E+Ojp2YWx1ZSwgCi0gICAgICB0eXBlbmFtZSA6Om5kbmJvb3N0OjphZGRfY29uc3Q8dHlwZTE+Ojp0eXBlLAotICAgICAgdHlwZTEKLSAgICA+OjpSRVQgdHlwZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgICAgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8bm9uX3BvaW50ZXJfQT46OnZhbHVlLCAKLSAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OmFkZF92b2xhdGlsZTx0eXBlMj46OnR5cGUsCi0gICAgICB0eXBlMgotICAgID46OlJFVCB0eXBlMzsKLSAgICAvLyBhZGQgcmVmZXJlbmNlIGJhY2sKLSAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8dHlwZTM+Ojp0eXBlIHR5cGU7Ci0gIH07Ci19OwotCi0gIC8vIG5laXRoZXIgY2FzZQotdGVtcGxhdGUgPD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyPGZhbHNlLCBmYWxzZT4gewotcHVibGljOgotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQSYgYSwgQiYgYikgeyAKLS8vIG5vdCBhIGJ1aWx0IGluIG1lbWJlciBwb2ludGVyIG9wZXJhdG9yLCBqdXN0IGNhbGwgLT4qCi0gICAgcmV0dXJuIGEtPipiOyAKLSAgfQotICAvLyBhbiBvdmVybG9hZGVkIG1lbWJlciBwb2ludGVyIG9wZXJhdG9ycywgdXNlciBzaG91bGQgaGF2ZSBzcGVjaWZpZWQKLSAgLy8gdGhlIHJldHVybiB0eXBlCi0gIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0IHRoZXJlIGlzIG5vIG1hdGNoaW5nIHNwZWNpYWxpemF0aW9uIGZvcgotICAvLyByZXR1cm5fdHlwZV8yLCBzbyB0cnkgcmV0dXJuX3R5cGVfMl9wbGFpbgotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICBzdHJ1Y3QgcmV0dXJuX3R5cGUgewotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBwbGFpbl9yZXR1cm5fdHlwZV8yPAotICAgICAgb3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4sIEEsIEIKLSAgICA+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0gIAotfTsKLQotCi0vLyBtZW1iZXIgcG9pbnRlciBmdW5jdGlvbiBjYXNlCi0vLyBUaGlzIGlzIGEgYnVpbHQgaW4gLT4qIGNhbGwgZm9yIGEgbWVtYmVyIGZ1bmN0aW9uLCAKLS8vIHRoZSBvbmx5IHRoaW5nIHRoYXQgeW91IGNhbiBkbyB3aXRoIHRoYXQsIGlzIHRvIGdpdmUgaXQgc29tZSBhcmd1bWVudHMKLS8vIG5vdGUsIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBBIGlzIGEgcG9pbnRlciB0eXBlLCBhbmQgdGh1cyBpdCBjYW5ub3QKLS8vIGJlIGEgY2FsbCB0byBvdmVybG9hZGVkIC0+KgotdGVtcGxhdGUgPD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyPGZhbHNlLCB0cnVlPiB7Ci0gIHB1YmxpYzoKLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQSYgYSwgQiYgYikgeyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjxCPjo6dHlwZSBwbGFpbkI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1lbWJlcl9wb2ludGVyPHBsYWluQj46OnR5cGUgcmV0X3Q7IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PEE+Ojp0eXBlIHBsYWluQTsKLQotICAgIC8vIHdlIGFsd2F5cyBzdHJpcCBjdjpzIHRvIAotICAgIC8vIG1ha2UgdGhlIHR3byByb3V0ZXMgKGNhbGxpbmcgYW5kIHR5cGUgZGVkdWN0aW9uKQotICAgIC8vIHRvIGdpdmUgdGhlIHNhbWUgcmVzdWx0cyAoYW5kIHRoZSBjb25zdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsCi0gICAgLy8gZGlmZmVyZW5jZSkKLSAgICByZXR1cm4gZGV0YWlsOjptZW1iZXJfcG9pbnRlcl9jYWxsZXI8cmV0X3QsIHBsYWluQSwgcGxhaW5CPihhLCBiKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICBzdHJ1Y3QgcmV0dXJuX3R5cGUgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbkI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1lbWJlcl9wb2ludGVyPHBsYWluQj46OnR5cGUgcmV0X3Q7IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbkE7IAotCi0gICAgdHlwZWRlZiBkZXRhaWw6Om1lbWJlcl9wb2ludGVyX2NhbGxlcjxyZXRfdCwgcGxhaW5BLCBwbGFpbkI+IHR5cGU7IAotICB9OwotfTsKLQotfSAvLyBkZXRhaWwKLQotdGVtcGxhdGU8PiBjbGFzcyBvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiAgewotcHVibGljOgotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQSYgYSwgQiYgYikgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8Qj46OnR5cGUgcGxhaW5COwotCi0gICAgcmV0dXJuIGRldGFpbDo6bWVtYmVyX3BvaW50ZXJfYWN0aW9uX2hlbHBlcjwKLSAgICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8QT46OnZhbHVlICYmIAotICAgICAgICAgIGRldGFpbDo6bWVtYmVyX3BvaW50ZXI8cGxhaW5CPjo6aXNfZGF0YV9tZW1iZXIsCi0gICAgICAgIG5kbmJvb3N0Ojppc19wb2ludGVyPEE+Ojp2YWx1ZSAmJiAKLSAgICAgICAgICBkZXRhaWw6Om1lbWJlcl9wb2ludGVyPHBsYWluQj46OmlzX2Z1bmN0aW9uX21lbWJlcgotICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8UkVUPihhLCBiKTsgCi0gICAgfQotfTsKLQotICAvLyByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gLS0KLQotICAvLyBJZiB0aGUgcmlnaHQgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGRhdGEgbWVtYmVyLCAKLSAgLy8gYW5kIHRoZSBsZWZ0IGFyZ3VtZW50IGlzIG9mIGNvbXBhdGlibGUgcG9pbnRlciB0byBjbGFzcyB0eXBlCi0gIC8vIHJldHVybiB0eXBlIGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG1lbWJlciB0eXBlCi0KLSAgLy8gaWYgcmlnaHQgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGEgbWVtYmVyIGZ1bmN0aW9uLCBhbmQgdGhlIGxlZnQgCi0gIC8vIGFyZ3VtZW50IGlzIG9mIGEgY29tcGF0aWJsZSB0eXBlLCB0aGUgcmV0dXJuIHR5cGUgaXMgYSAKLSAgLy8gbWVtYmVyX3BvaW50ZXJfY2FsbGVyIChzZWUgYWJvdmUpCi0KLSAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gZmFpbHMuIFRoZXJlIGlzIGVpdGhlciBhbiBlcnJvciwgCi0gIC8vIG9yIHRoZSB1c2VyIGlzIHRyeWluZyB0byBjYWxsIGFuIG92ZXJsb2FkZWQgLT4qCi0gIC8vIEluIHN1Y2ggYSBjYXNlIGVpdGhlciByZXQ8PiBtdXN0IGJlIHVzZWQsIG9yIGEgcmV0dXJuX3R5cGVfMiB1c2VyIAotICAvLyBkZWZpbmVkIHNwZWNpYWxpemF0aW9uIG11c3QgYmUgcHJvdmlkZWQKLQotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotc3RydWN0IHJldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4sIEEsIEI+IHsKLXByaXZhdGU6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbkI7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjptZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyPAotICAgICAgZGV0YWlsOjptZW1iZXJfcG9pbnRlcjxwbGFpbkI+Ojppc19kYXRhX21lbWJlciwKLSAgICAgIGRldGFpbDo6bWVtYmVyX3BvaW50ZXI8cGxhaW5CPjo6aXNfZnVuY3Rpb25fbWVtYmVyCi0gICAgPjo6dGVtcGxhdGUgcmV0dXJuX3R5cGU8QSwgQj46OnR5cGUgdHlwZTsgCi19OwotCi0gIC8vIHRoaXMgaXMgdGhlIHdheSB0aGUgZ2VuZXJpYyBsYW1iZGFfZnVuY3Rvcl9iYXNlIGZ1bmN0aW9ucyBpbnN0YW50aWF0ZQotICAvLyByZXR1cm4gdHlwZSBkZWR1Y3Rpb24uIFdlIHR1cm4gaXQgaW50byByZXR1cm5fdHlwZV8yLCBzbyB0aGF0IHRoZSAKLSAgLy8gdXNlciBjYW4gcHJvdmlkZSBzcGVjaWFsaXphdGlvbnMgb24gdGhhdCBsZXZlbC4KLXRlbXBsYXRlPGNsYXNzIEFyZ3M+Ci1zdHJ1Y3QgcmV0dXJuX3R5cGVfTjxvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiwgQXJncz4gewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmVsZW1lbnQ8MCwgQXJncz46OnR5cGUgQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHVwbGVzOjplbGVtZW50PDEsIEFyZ3M+Ojp0eXBlIEI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiwgCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSwgCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxCPjo6dHlwZQotICAgICAgICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzI+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwyLCBvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiA+LAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZzE+LCB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50PEFyZzI+Ojp0eXBlPgotICA+Ci0+Ci1vcGVyYXRvci0+Kihjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmcxPiYgYTEsIGNvbnN0IEFyZzImIGEyKQotewotICByZXR1cm4gCi0gICAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgICBhY3Rpb248Miwgb3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4gPiwKLSAgICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnMT4sIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQ8QXJnMj46OnR5cGU+Ci0gICAgICA+Ci0gICAgICAodHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnMT4sIAotICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQ8QXJnMj46OnR5cGU+KGExLCBhMikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248Miwgb3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4gPiwKLSAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmcxPiwgbGFtYmRhX2Z1bmN0b3I8QXJnMj4gPgotICA+Ci0+Ci1vcGVyYXRvci0+Kihjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmcxPiYgYTEsIGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZzI+JiBhMikKLXsKLSAgcmV0dXJuIAotICAgICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgICAgYWN0aW9uPDIsIG90aGVyX2FjdGlvbjxtZW1iZXJfcG9pbnRlcl9hY3Rpb24+ID4sCi0gICAgICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZzE+LCBsYW1iZGFfZnVuY3RvcjxBcmcyPiA+Ci0gICAgICA+Ci0gICAgKHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZzE+LCBsYW1iZGFfZnVuY3RvcjxBcmcyPiA+KGExLCBhMikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248Miwgb3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4gPiwKLSAgICB0dXBsZTx0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50PEFyZzE+Ojp0eXBlLCBsYW1iZGFfZnVuY3RvcjxBcmcyPiA+Ci0gID4KLT4KLW9wZXJhdG9yLT4qKGNvbnN0IEFyZzEmIGExLCBjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmcyPiYgYTIpCi17Ci0gIHJldHVybiAKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICAgIGFjdGlvbjwyLCBvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiA+LAotICAgICAgICB0dXBsZTx0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50PEFyZzE+Ojp0eXBlLCBsYW1iZGFfZnVuY3RvcjxBcmcyPiA+Ci0gICAgICA+Ci0gICAgICAodHVwbGU8dHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudDxBcmcxPjo6dHlwZSwgCi0gICAgICAgICAgICAgbGFtYmRhX2Z1bmN0b3I8QXJnMj4gPihhMSwgYTIpKTsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZgotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX2FjdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX2FjdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDA1ZjlmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcl9hY3Rpb25zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vLyAtLSBvcGVyYXRvcl9hY3Rpb25zLmhwcCAtIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL2xhbWJkYS5jcy51dHUuZmkgCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX09QRVJBVE9SX0FDVElPTlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUl9BQ1RJT05TX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0KLS8vIC0tIGFydGlobWV0aWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBwbHVzX2FjdGlvbiB7fTsKLWNsYXNzIG1pbnVzX2FjdGlvbiB7fTsKLWNsYXNzIG11bHRpcGx5X2FjdGlvbiB7fTsKLWNsYXNzIGRpdmlkZV9hY3Rpb24ge307Ci1jbGFzcyByZW1haW5kZXJfYWN0aW9uIHt9OwotCi0vLyAtLSBiaXR3aXNlICAtLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIGxlZnRzaGlmdF9hY3Rpb24ge307Ci1jbGFzcyByaWdodHNoaWZ0X2FjdGlvbiB7fTsKLWNsYXNzIHhvcl9hY3Rpb24ge307Ci0KLQotLy8gLS0gYml0d2lzZS9sb2dpY2FsIC0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgYW5kX2FjdGlvbiB7fTsKLWNsYXNzIG9yX2FjdGlvbiB7fTsKLWNsYXNzIG5vdF9hY3Rpb24ge307Ci0KLS8vIC0tIHJlbGF0aW9uYWwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBsZXNzX2FjdGlvbiB7fTsKLWNsYXNzIGdyZWF0ZXJfYWN0aW9uIHt9OwotY2xhc3MgbGVzc29yZXF1YWxfYWN0aW9uIHt9OwotY2xhc3MgZ3JlYXRlcm9yZXF1YWxfYWN0aW9uIHt9OwotY2xhc3MgZXF1YWxfYWN0aW9uIHt9OwotY2xhc3Mgbm90ZXF1YWxfYWN0aW9uIHt9OwotCi0vLyAtLSBpbmNyZW1lbnQvZGVjcmVtZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBpbmNyZW1lbnRfYWN0aW9uIHt9OwotY2xhc3MgZGVjcmVtZW50X2FjdGlvbiB7fTsKLQotLy8gLS0gdm9pZCByZXR1cm4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIC0tIG90aGVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgYWRkcmVzc29mX2FjdGlvbiB7fTsKLSAgLy8gY2xhc3MgY29tbWFfYWN0aW9uIHt9OyAvLyBkZWZpbmVkIGluIGFjdGlvbnMuaHBwCi1jbGFzcyBjb250ZW50c29mX2FjdGlvbiB7fTsKLS8vIGNsYXNzIG1lbWJlcl9wb2ludGVyX2FjdGlvbiB7fTsgKGRlZmluZWQgaW4gbWVtYmVyX3B0ci5ocHApCi0KLQotLy8gLS0gYWN0aW91biBncm91cCB0ZW1wbGF0ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgYXJpdGhtZXRpY19hY3Rpb247Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyBiaXR3aXNlX2FjdGlvbjsKLXRlbXBsYXRlIDxjbGFzcyBBY3Rpb24+IGNsYXNzIGxvZ2ljYWxfYWN0aW9uOwotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgcmVsYXRpb25hbF9hY3Rpb247Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyBhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uOwotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjsKLXRlbXBsYXRlIDxjbGFzcyBBY3Rpb24+IGNsYXNzIHVuYXJ5X2FyaXRobWV0aWNfYWN0aW9uOwotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgcHJlX2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uOwotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgcG9zdF9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgLy8gYWN0aW9ucywgZm9yIHdoaWNoIHRoZSBleGlzdGVuY2Ugb2YgcHJvdGVjdCBpcyBjaGVja2VkIGluIHJldHVybiB0eXBlIAotICAvLyBkZWR1Y3Rpb24uCi0KLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxhcml0aG1ldGljX2FjdGlvbjxBY3Q+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0PiBzdHJ1Y3QgaXNfcHJvdGVjdGFibGU8Yml0d2lzZV9hY3Rpb248QWN0PiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEFjdD4gc3RydWN0IGlzX3Byb3RlY3RhYmxlPGxvZ2ljYWxfYWN0aW9uPEFjdD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxyZWxhdGlvbmFsX2FjdGlvbjxBY3Q+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0PiAKLXN0cnVjdCBpc19wcm90ZWN0YWJsZTxhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPEFjdD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPEFjdD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTx1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxBY3Q+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0PiAKLXN0cnVjdCBpc19wcm90ZWN0YWJsZTxwcmVfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248QWN0PiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEFjdD4gc3RydWN0IAotaXNfcHJvdGVjdGFibGU8cG9zdF9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxBY3Q+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxvdGhlcl9hY3Rpb248YWRkcmVzc29mX2FjdGlvbj4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxvdGhlcl9hY3Rpb248Y29udGVudHNvZl9hY3Rpb24+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGlzX3Byb3RlY3RhYmxlPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcHJvdGVjdGFibGU8b3RoZXJfYWN0aW9uPGFzc2lnbm1lbnRfYWN0aW9uPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi0vLyBOT1RFOiBjb21tYSBhY3Rpb24gaXMgYWxzbyBwcm90ZWN0YWJsZSwgYnV0IHRoZSBzcGVjaWFsaXphdGlvbiBpcwotICAvLyBpbiBhY3Rpb25zLmhwcAotCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYSAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfbGFtYmRhX2Z1bmNfYmFzZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfbGFtYmRhX2Z1bmNfYmFzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwYmI0NWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX2xhbWJkYV9mdW5jX2Jhc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcxICswLDAgQEAKLS8vIEJvb3N0IExhbWJkYSBMaWJyYXJ5ICAtIG9wZXJhdG9yX2xhbWJkYV9mdW5jX2Jhc2UuaHBwIC0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUl9MQU1CREFfRlVOQ19CQVNFX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfT1BFUkFUT1JfTEFNQkRBX0ZVTkNfQkFTRV9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotCi0vLyBUaGVzZSBvcGVyYXRvcnMgY2Fubm90IGJlIGltcGxlbWVudGVkIGFzIGFwcGx5IGZ1bmN0aW9ucyBvZiBhY3Rpb24gCi0vLyB0ZW1wbGF0ZXMKLQotCi0vLyBTcGVjaWFsaXphdGlvbiBmb3IgY29tbWEuCi10ZW1wbGF0ZTxjbGFzcyBBcmdzPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiwgQXJncz4gewotcHVibGljOgotICBBcmdzIGFyZ3M7Ci1wdWJsaWM6Ci0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsKLSAgICByZXR1cm4gZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSwgCi0gICAgICAgICAgIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUyk7IAotICB9Ci0KLQotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgCi0gIHByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgZGV0YWlsOjpkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgU2lnQXJncz46OnR5cGUgcmV0c190OyAgICAgIAotICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXR1cm5fdHlwZV8yX2NvbW1hPCAvLyBjb21tYSBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmVsZW1lbnRfb3JfbnVsbDwwLCByZXRzX3Q+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjplbGVtZW50X29yX251bGw8MSwgcmV0c190Pjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLSAgfTsKLQotfTsgIAotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gaGVscGVyIHRyYWl0cyB0byBtYWtlIHRoZSBleHByZXNzaW9uIHNob3J0ZXIsIHRha2VzIGJpbmFyeSBhY3Rpb24KLS8vIGJvdW5kIGFyZ3VtZW50IHR1cGxlLCBvcGVuIGFyZ3VtZW50IHR1cGxlIGFuZCBnaXZlcyB0aGUgcmV0dXJuIHR5cGUKLQotdGVtcGxhdGU8Y2xhc3MgQWN0aW9uLCBjbGFzcyBCb3VuZCwgY2xhc3MgT3Blbj4gY2xhc3MgYmluYXJ5X3J0IHsKLSAgcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBkZXRhaWw6OmRlZHVjZV9hcmd1bWVudF90eXBlczxCb3VuZCwgT3Blbj46OnR5cGUgcmV0c190OyAgICAgIAotICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXR1cm5fdHlwZV8yX3Byb3Q8Ci0gICAgICBBY3Rpb24sICAKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi0gIC8vIHNhbWUgZm9yIHVuYXJ5IGFjdGlvbnMKLXRlbXBsYXRlPGNsYXNzIEFjdGlvbiwgY2xhc3MgQm91bmQsIGNsYXNzIE9wZW4+IGNsYXNzIHVuYXJ5X3J0IHsKLSAgcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBkZXRhaWw6OmRlZHVjZV9hcmd1bWVudF90eXBlczxCb3VuZCwgT3Blbj46OnR5cGUgcmV0c190OyAgICAgIAotICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXR1cm5fdHlwZV8xX3Byb3Q8Ci0gICAgICBBY3Rpb24sICAKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLX0gLy8gZW5kIGRldGFpbAotCi0vLyBTcGVjaWFsaXphdGlvbiBmb3IgbG9naWNhbCBhbmQgKHRvIHByZXNlcnZlIHNob3J0Y2lyY3VpdGluZykKLS8vIHRoaXMgY291bGQgYmUgZG9uZSB3aXRoIGEgbWFjcm8gYXMgdGhlIG90aGVycywgY29kZSB1c2VkIHRvIGJlIGRpZmZlcmVudAotdGVtcGxhdGU8Y2xhc3MgQXJncz4KLWNsYXNzIGxhbWJkYV9mdW5jdG9yX2Jhc2U8bG9naWNhbF9hY3Rpb248YW5kX2FjdGlvbj4sIEFyZ3M+IHsKLXB1YmxpYzoKLSAgQXJncyBhcmdzOwotcHVibGljOgotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIDogYXJncyhhKSB7fQotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPgotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7Ci0gICAgcmV0dXJuIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykgJiYgCi0gICAgICAgICAgIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUyk7IAotICB9Ci0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgeyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBkZXRhaWw6OmJpbmFyeV9ydDxsb2dpY2FsX2FjdGlvbjxhbmRfYWN0aW9uPiwgQXJncywgU2lnQXJncz46OnR5cGUgdHlwZTsKLSAgfTsgICAgICAKLX07ICAKLQotLy8gU3BlY2lhbGl6YXRpb24gZm9yIGxvZ2ljYWwgb3IgKHRvIHByZXNlcnZlIHNob3J0Y2lyY3VpdGluZykKLS8vIHRoaXMgY291bGQgYmUgZG9uZSB3aXRoIGEgbWFjcm8gYXMgdGhlIG90aGVycywgY29kZSB1c2VkIHRvIGJlIGRpZmZlcmVudAotdGVtcGxhdGU8Y2xhc3MgQXJncz4KLWNsYXNzIGxhbWJkYV9mdW5jdG9yX2Jhc2U8bG9naWNhbF9hY3Rpb248IG9yX2FjdGlvbj4sIEFyZ3M+IHsKLXB1YmxpYzoKLSAgQXJncyBhcmdzOwotcHVibGljOgotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIDogYXJncyhhKSB7fQotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPgotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7Ci0gICAgcmV0dXJuIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykgfHwgCi0gICAgICAgICAgIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUyk7IAotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7IAotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGRldGFpbDo6YmluYXJ5X3J0PGxvZ2ljYWxfYWN0aW9uPG9yX2FjdGlvbj4sIEFyZ3MsIFNpZ0FyZ3M+Ojp0eXBlIHR5cGU7Ci0gIH07ICAgICAgCi19OyAgCi0KLS8vIFNwZWNpYWxpemF0aW9uIGZvciBzdWJzY3JpcHQKLXRlbXBsYXRlPGNsYXNzIEFyZ3M+Ci1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgQXJncz4gewotcHVibGljOgotICBBcmdzIGFyZ3M7Ci1wdWJsaWM6Ci0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsKLSAgICByZXR1cm4gZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSAKLSAgICAgICAgICAgW2RldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUyldOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgeyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBkZXRhaWw6OmJpbmFyeV9ydDxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIEFyZ3MsIFNpZ0FyZ3M+Ojp0eXBlIAotICAgICAgICB0eXBlOwotICB9OyAgICAgIAotfTsgIAotCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oU1lNQk9MLCBBQ1RJT05fQ0xBU1MpICBcCi10ZW1wbGF0ZTxjbGFzcyBBcmdzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWNsYXNzIGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OX0NMQVNTLCBBcmdzPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIEFyZ3MgYXJnczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIDogYXJncyhhKSB7fSAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykgIFwKLSAgICAgICAgICAgU1lNQk9MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICBkZXRhaWw6OnNlbGVjdChuZG5ib29zdDo6dHVwbGVzOjpnZXQ8MT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpOyBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBkZXRhaWw6OmJpbmFyeV9ydDxBQ1RJT05fQ0xBU1MsIEFyZ3MsIFNpZ0FyZ3M+Ojp0eXBlIHR5cGU7ICAgICAgICAgIFwKLSAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKFNZTUJPTCwgQUNUSU9OX0NMQVNTKSAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEFyZ3M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxBQ1RJT05fQ0xBU1MsIEFyZ3M+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgQXJncyBhcmdzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gU1lNQk9MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICBkZXRhaWw6OnNlbGVjdChuZG5ib29zdDo6dHVwbGVzOjpnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpOyBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBkZXRhaWw6OnVuYXJ5X3J0PEFDVElPTl9DTEFTUywgQXJncywgU2lnQXJncz46OnR5cGUgdHlwZTsgICAgICAgICAgIFwKLSAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9QT1NURklYX1VOQVJZX0FDVElPTihTWU1CT0wsIEFDVElPTl9DTEFTUykgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEFyZ3M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxBQ1RJT05fQ0xBU1MsIEFyZ3M+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgQXJncyBhcmdzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykgU1lNQk9MOyBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBkZXRhaWw6OnVuYXJ5X3J0PEFDVElPTl9DTEFTUywgQXJncywgU2lnQXJncz46OnR5cGUgdHlwZTsgICAgICAgICAgIFwKLSAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgIAotCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigrLGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKC0sYXJpdGhtZXRpY19hY3Rpb248bWludXNfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKCosYXJpdGhtZXRpY19hY3Rpb248bXVsdGlwbHlfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKC8sYXJpdGhtZXRpY19hY3Rpb248ZGl2aWRlX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTiglLGFyaXRobWV0aWNfYWN0aW9uPHJlbWFpbmRlcl9hY3Rpb24+KQotCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig8PCxiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKD4+LGJpdHdpc2VfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKCYsYml0d2lzZV9hY3Rpb248YW5kX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTih8LGJpdHdpc2VfYWN0aW9uPG9yX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTiheLGJpdHdpc2VfYWN0aW9uPHhvcl9hY3Rpb24+KQotCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig8LHJlbGF0aW9uYWxfYWN0aW9uPGxlc3NfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKD4scmVsYXRpb25hbF9hY3Rpb248Z3JlYXRlcl9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oPD0scmVsYXRpb25hbF9hY3Rpb248bGVzc29yZXF1YWxfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKD49LHJlbGF0aW9uYWxfYWN0aW9uPGdyZWF0ZXJvcmVxdWFsX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig9PSxyZWxhdGlvbmFsX2FjdGlvbjxlcXVhbF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oIT0scmVsYXRpb25hbF9hY3Rpb248bm90ZXF1YWxfYWN0aW9uPikKLQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oKz0sYXJpdGhtZXRpY19hc3NpZ25tZW50X2FjdGlvbjxwbHVzX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigtPSxhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPG1pbnVzX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigqPSxhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPG11bHRpcGx5X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigvPSxhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPGRpdmlkZV9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oJT0sYXJpdGhtZXRpY19hc3NpZ25tZW50X2FjdGlvbjxyZW1haW5kZXJfYWN0aW9uPikKLQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oPDw9LGJpdHdpc2VfYXNzaWdubWVudF9hY3Rpb248bGVmdHNoaWZ0X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig+Pj0sYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigmPSxiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPGFuZF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04ofD0sYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxvcl9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oXj0sYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjx4b3JfYWN0aW9uPikKLQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oPSxvdGhlcl9hY3Rpb248IGFzc2lnbm1lbnRfYWN0aW9uPikKLQotCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTigrLCB1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTigtLCB1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxtaW51c19hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1BSRUZJWF9VTkFSWV9BQ1RJT04ofiwgYml0d2lzZV9hY3Rpb248bm90X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTighLCBsb2dpY2FsX2FjdGlvbjxub3RfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKCsrLCBwcmVfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248aW5jcmVtZW50X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTigtLSwgcHJlX2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPGRlY3JlbWVudF9hY3Rpb24+KQotCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTigmLG90aGVyX2FjdGlvbjxhZGRyZXNzb2ZfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKCosb3RoZXJfYWN0aW9uPGNvbnRlbnRzb2ZfYWN0aW9uPikKLQotTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVU5BUllfQUNUSU9OKCsrLCBwb3N0X2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPGluY3JlbWVudF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVU5BUllfQUNUSU9OKC0tLCBwb3N0X2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPGRlY3JlbWVudF9hY3Rpb24+KQotCi0KLSN1bmRlZiBORE5CT09TVF9MQU1CREFfUE9TVEZJWF9VTkFSWV9BQ1RJT04KLSN1bmRlZiBORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTgotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcl9yZXR1cm5fdHlwZV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX3JldHVybl90eXBlX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYjM3Y2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX3JldHVybl90eXBlX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MTcgKzAsMCBAQAotLy8gIG9wZXJhdG9yX3JldHVybl90eXBlX3RyYWl0cy5ocHAgLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd3d3LmJvb3N0Lm9yZwotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUl9SRVRVUk5fVFlQRV9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUl9SRVRVUk5fVFlQRV9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2lzX2luc3RhbmNlX29mLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9zYW1lX3RyYWl0cy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9pbmRpcmVjdF9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2RldGFpbC9jb250YWluZXJfZndkLmhwcCIKLQotI2luY2x1ZGUgPGNzdGRkZWY+IC8vIG5lZWRlZCBmb3IgdGhlIHB0cmRpZmZfdAotI2luY2x1ZGUgPGlvc2Z3ZD4gIC8vIGZvciBpc3RyZWFtIGFuZCBvc3RyZWFtCi0KLSNpbmNsdWRlIDxpdGVyYXRvcj4gLy8gbmVlZGVkIGZvciBvcGVyYXRvciYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAtLSBnZW5lcmFsIGhlbHBlciB0ZW1wbGF0ZXMgZm9yIHR5cGUgZGVkdWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBNdWNoIG9mIHRoZSB0eXBlIGRlZHVjdGlvbiBjb2RlIGZvciBzdGFuZGFyZCBhcml0aG1ldGljIHR5cGVzIGZyb20gR2FyeSBQb3dlbGwKLQotdGVtcGxhdGUgPGNsYXNzIEE+IHN0cnVjdCBwcm9tb3RlX2NvZGUgeyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gLTE7IH07Ci0vLyB0aGlzIG1lYW5zIHRoYXQgYSBjb2RlIGlzIG5vdCBkZWZpbmVkIGZvciBBCi0KLS8vIC0tIHRoZSBuZXh0IDUgdHlwZXMgYXJlIG5lZWRlZCBpbiBpZl90aGVuX2Vsc2VfcmV0dXJuIAotLy8gdGhlIHByb21vdGlvbiBvcmRlciBpcyBub3QgaW1wb3J0YW50LCBidXQgdGhleSBtdXN0IGhhdmUgZGlzdGluY3QgdmFsdWVzLgotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxib29sPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8Y2hhcj4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPHVuc2lnbmVkIGNoYXI+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDMwOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxzaWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPHNob3J0IGludD4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTA7IH07Ci0vLyAtLS0tLS0tLS0tCi0KLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8aW50PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPHVuc2lnbmVkIGludD4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjAwOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxsb25nPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAzMDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPHVuc2lnbmVkIGxvbmc+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDQwMDsgfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxmbG9hdD4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTAwOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxkb3VibGU+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDYwMDsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8bG9uZyBkb3VibGU+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDcwMDsgfTsKLQotLy8gVE9ETzogd2NoYXJfdAotCi0vLyBmb3J3YXJkIGRlbGNhcmF0aW9uIG9mIGNvbXBsZXguCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbGFtYmRhIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPCBzdGQ6OmNvbXBsZXg8ZmxvYXQ+ID4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gODAwOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTwgc3RkOjpjb21wbGV4PGRvdWJsZT4gPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA5MDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPCBzdGQ6OmNvbXBsZXg8bG9uZyBkb3VibGU+ID4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTAwMDsgfTsKLQotLy8gLS0gaW50IHByb21vdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHByb21vdGVfdG9faW50IHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX3RvX2ludDxib29sPiB7IHR5cGVkZWYgaW50IHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV90b19pbnQ8Y2hhcj4geyB0eXBlZGVmIGludCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfdG9faW50PHVuc2lnbmVkIGNoYXI+IHsgdHlwZWRlZiBpbnQgdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX3RvX2ludDxzaWduZWQgY2hhcj4geyB0eXBlZGVmIGludCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfdG9faW50PHNob3J0IGludD4geyB0eXBlZGVmIGludCB0eXBlOyB9OwotCi0vLyBUaGUgdW5zaWduZWQgc2hvcnQgaW50IHByb21vdGlvbiBydWxlIGlzIHRoaXM6Ci0vLyB1bnNpZ25lZCBzaG9ydCBpbnQgdG8gc2lnbmVkIGludCBpZiBhIHNpZ25lZCBpbnQgY2FuIGhvbGQgYWxsIHZhbHVlcyAKLS8vIG9mIHVuc2lnbmVkIHNob3J0IGludCwgb3RoZXJ3aXNlIGdvIHRvIHVuc2lnbmVkIGludC4KLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX3RvX2ludDx1bnNpZ25lZCBzaG9ydCBpbnQ+Ci17IAotICAgICAgICB0eXBlZGVmCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpJRjxzaXplb2YoaW50KSA8PSBzaXplb2YodW5zaWduZWQgc2hvcnQgaW50KSwgICAgICAgIAotLy8gSSBoYWQgdGhlIGxvZ2ljIHJldmVyc2VkIGJ1dCAiPiIgbWVzc2VzIHVwIHRoZSBwYXJzaW5nLgotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwKLSAgICAgICAgICAgICAgICBpbnQ+OjpSRVQgdHlwZTsgCi19OwotCi0KLS8vIFRPRE86IHRoaW5rLCBzaG91bGQgdGhlcmUgYmUgZGVmYXVsdCBiZWhhdmlvdXIgZm9yIG5vbi1zdGFuZGFyZCB0eXBlcz8KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKLS8vIFVuYXJ5IGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAotCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEE+Ci1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMSB7Ci0gIHR5cGVkZWYgZGV0YWlsOjp1bnNwZWNpZmllZCB0eXBlOwotfTsKLQotCi0KLXRlbXBsYXRlPGNsYXNzIEFjdCwgY2xhc3MgQT4KLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8xPHVuYXJ5X2FyaXRobWV0aWNfYWN0aW9uPEFjdD4sIEE+IHsKLSAgdHlwZWRlZiBBIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEE+IAotc3RydWN0IHJldHVybl90eXBlXzE8dW5hcnlfYXJpdGhtZXRpY19hY3Rpb248QWN0PiwgQT4geyAKLSAgdHlwZWRlZiAKLSAgICB0eXBlbmFtZSBwbGFpbl9yZXR1cm5fdHlwZV8xPAotICAgICAgdW5hcnlfYXJpdGhtZXRpY19hY3Rpb248QWN0PiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIEE+Ci1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMTxiaXR3aXNlX2FjdGlvbjxub3RfYWN0aW9uPiwgQT4gewotICB0eXBlZGVmIEEgdHlwZTsKLX07Ci0KLS8vIGJpdHdpc2Ugbm90LCBvcGVyYXRvcn4oKQotdGVtcGxhdGU8Y2xhc3MgQT4gc3RydWN0IHJldHVybl90eXBlXzE8Yml0d2lzZV9hY3Rpb248bm90X2FjdGlvbj4sIEE+IHsKLSAgdHlwZWRlZiAKLSAgICB0eXBlbmFtZSBwbGFpbl9yZXR1cm5fdHlwZV8xPAotICAgICAgYml0d2lzZV9hY3Rpb248bm90X2FjdGlvbj4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi0vLyBwcmVmaXggaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgb3BlcmF0b3JzIHJldHVybiAKLS8vIHRoZWlyIGFyZ3VtZW50IGJ5IGRlZmF1bHQgYXMgYSBub24tY29uc3QgcmVmZXJlbmNlCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEE+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzE8cHJlX2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPEFjdD4sIEE+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8xPHByZV9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxBY3Q+LCBBPiB7Ci0gIHR5cGVkZWYgCi0gICAgdHlwZW5hbWUgcGxhaW5fcmV0dXJuX3R5cGVfMTwKLSAgICAgIHByZV9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxBY3Q+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIHBvc3QgZGVjcmVtZW50IGp1c3QgcmV0dXJucyB0aGUgc2FtZSBwbGFpbiB0eXBlLgotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBPgotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzE8cG9zdF9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxBY3Q+LCBBPiB7Ci0gIHR5cGVkZWYgQSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8xPHBvc3RfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248QWN0PiwgQT4gCi17IAotICB0eXBlZGVmIAotICAgIHR5cGVuYW1lIHBsYWluX3JldHVybl90eXBlXzE8Ci0gICAgICBwb3N0X2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPEFjdD4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gbG9naWNhbCBub3QsIG9wZXJhdG9yISgpCi10ZW1wbGF0ZTxjbGFzcyBBPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8xPGxvZ2ljYWxfYWN0aW9uPG5vdF9hY3Rpb24+LCBBPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQT4KLXN0cnVjdCByZXR1cm5fdHlwZV8xPGxvZ2ljYWxfYWN0aW9uPG5vdF9hY3Rpb24+LCBBPiB7Ci0gIHR5cGVkZWYgCi0gICAgdHlwZW5hbWUgcGxhaW5fcmV0dXJuX3R5cGVfMTwKLSAgICAgIGxvZ2ljYWxfYWN0aW9uPG5vdF9hY3Rpb24+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIGFkZHJlc3Mgb2YgYWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLXRlbXBsYXRlPGNsYXNzIEE+IAotc3RydWN0IHJldHVybl90eXBlXzE8b3RoZXJfYWN0aW9uPGFkZHJlc3NvZl9hY3Rpb24+LCBBPiB7IAotICB0eXBlZGVmIAotICAgIHR5cGVuYW1lIHBsYWluX3JldHVybl90eXBlXzE8Ci0gICAgICBvdGhlcl9hY3Rpb248YWRkcmVzc29mX2FjdGlvbj4sIAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTE7Ci0KLSAgLy8gSWYgbm8gdXNlciBkZWZpbmVkIHNwZWNpYWxpemF0aW9uIGZvciBBLCB0aGVuIHJldHVybiB0aGUKLSAgLy8gY3YgcXVhbGlmaWVkIHBvaW50ZXIgdG8gQQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0gICAgbmRuYm9vc3Q6OmlzX3NhbWU8dHlwZTEsIGRldGFpbDo6dW5zcGVjaWZpZWQ+Ojp2YWx1ZSwgCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8QT46OnR5cGUqLAotICAgIHR5cGUxCi0gID46OlJFVCB0eXBlOwotfTsKLQotLy8gY29udGVudHNvZiBhY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIFRPRE86IHRoaXMgZGVkdWN0aW9uIG1heSBsZWFkIHRvIGZhaWwgZGlyZWN0bHksIAotLy8gKGlmIEEgaGFzIG5vIHNwZWNpYWxpemF0aW9uIGZvciBpdGVyYXRvcl90cmFpdHMgYW5kIGhhcyBubwotLy8gdHlwZWRlZiBBOjpyZWZlcmVuY2UuCi0vLyBUaGVyZSBpcyBubyBlYXN5IHdheSBhcm91bmQgdGhpcywgY2F1c2UgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgd2F5Ci0vLyB0byB0ZXN0IHdoZXRoZXIgYSBjbGFzcyBpcyBhbiBpdGVyYXRvciBvciBub3QuCi0gCi0vLyBUaGUgZGVmYXVsdCB3b3JrcyB3aXRoIHN0ZDo6aXRlcmF0b3JzLgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICAvLyBBIGlzIGEgbm9ucmVmZXJlbmNlIHR5cGUKLXRlbXBsYXRlIDxjbGFzcyBBPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aW5kaXJlY3RfcmVmZXJlbmNlPEE+Ojp0eXBlIHR5cGU7IAotfTsKLQotICAvLyB0aGlzIGlzIHNpbmNlIHRoZSBudWxsYXJ5ICgpIGluIGxhbWJkYV9mdW5jdG9yIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQKLXRlbXBsYXRlIDw+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8bnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgZGV0YWlsOjp1bnNwZWNpZmllZCB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxjb25zdCBBPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgY29udGVudHNvZl90eXBlPEE+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTx2b2xhdGlsZSBBPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgY29udGVudHNvZl90eXBlPEE+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxjb25zdCB2b2xhdGlsZSBBPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgY29udGVudHNvZl90eXBlPEE+Ojp0eXBlIHR5cGU7Ci19OwotCi0gIC8vIHN0YW5kYXJkIGl0ZXJhdG9yIHRyYWl0cyBzaG91bGQgdGFrZSBjYXJlIG9mIHRoZSBwb2ludGVyIHR5cGVzIAotICAvLyBidXQganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLCB3ZSBoYXZlIHRoZSBzcGVjaWFsaXphdGlvbnMgaGVyZToKLSAgLy8gdGhlc2Ugd29yayBldmVuIGlmIEEgaXMgY3YtcXVhbGlmaWVkLgotdGVtcGxhdGUgPGNsYXNzIEE+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8QSo+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlPEEqIGNvbnN0PiB7Ci0gIHR5cGVkZWYgQSYgdHlwZTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxBKiB2b2xhdGlsZT4gewotICB0eXBlZGVmIEEmIHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEE+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8QSogY29uc3Qgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgaW50IE4+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8QVtOXT4geyAKLSAgdHlwZWRlZiBBJiB0eXBlOyAKLX07Ci10ZW1wbGF0ZTxjbGFzcyBBLCBpbnQgTj4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxjb25zdCBBW05dPiB7IAotICB0eXBlZGVmIGNvbnN0IEEmIHR5cGU7IAotfTsKLXRlbXBsYXRlPGNsYXNzIEEsIGludCBOPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlPHZvbGF0aWxlIEFbTl0+IHsgCi0gIHR5cGVkZWYgdm9sYXRpbGUgQSYgdHlwZTsgCi19OwotdGVtcGxhdGU8Y2xhc3MgQSwgaW50IE4+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8Y29uc3Qgdm9sYXRpbGUgQVtOXT4geyAKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBBJiB0eXBlOyAKLX07Ci0KLQotCi0KLQotfSAvLyBlbmQgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIEE+IAotc3RydWN0IHJldHVybl90eXBlXzE8b3RoZXJfYWN0aW9uPGNvbnRlbnRzb2ZfYWN0aW9uPiwgQT4geyAKLQotICB0eXBlZGVmIAotICAgIHR5cGVuYW1lIHBsYWluX3JldHVybl90eXBlXzE8Ci0gICAgICBvdGhlcl9hY3Rpb248Y29udGVudHNvZl9hY3Rpb24+LCAKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGUxOwotCi0gIC8vIElmIG5vIHVzZXIgZGVmaW5lZCBzcGVjaWFsaXphdGlvbiBmb3IgQSwgdGhlbiByZXR1cm4gdGhlCi0gIC8vIGN2IHF1YWxpZmllZCBwb2ludGVyIHRvIEEKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgZGV0YWlsOjpJRl90eXBlPAotICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgIGRldGFpbDo6Y29udGVudHNvZl90eXBlPAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8QT46OnR5cGUKLSAgICA+LAotICAgIGRldGFpbDo6aWRlbnRpdHlfbWFwcGluZzx0eXBlMT4KLSAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGJpbmFyeSBhY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIGhlcmUgdGhlIGRlZmF1bHQgY2FzZSBpczogbm8gdXNlciBkZWZpbmVkIHZlcnNpb25zOgotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yIHsKLSAgdHlwZWRlZiBkZXRhaWw6OnVuc3BlY2lmaWVkIHR5cGU7IAotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIGVycm9yIGNsYXNzZXMKLWNsYXNzIGlsbGVnYWxfcG9pbnRlcl9hcml0aG1ldGlje307Ci0KLS8vIHBvaW50ZXIgYXJpdGhtZXRpYyB0eXBlIGRlZHVjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gdmFsdWUgPSBmYWxzZSBtZWFucyB0aGF0IHRoaXMgaXMgbm90IGEgcG9pbnRlciBhcml0aG1ldGljIGNhc2UKLS8vIHZhbHVlID0gdHJ1ZSBtZWFucywgdGhhdCB0aGlzIGNhbiBiZSBhIHBvaW50ZXIgYXJpdGhtZXRpYyBjYXNlLCBidXQgbm90IG5lY2Vzc2FyaWx5IGlzCi0vLyBUaGlzIG1lYW5zLCB0aGF0IGZvciB1c2VyIGRlZmluZWQgb3BlcmF0b3JzIGZvciBwb2ludGVyIHR5cGVzLCBzYXkgZm9yIHNvbWUgb3BlcmF0b3IrKFgsICpZKSwKLS8vIHRoZSBkZWR1Y3Rpb25zIG11c3QgYmUgY29kZWQgYXQgYW4gZWFybGllbCBsZXZlbCAocmV0dXJuX3R5cGVfMikuCi0KLXRlbXBsYXRlPGNsYXNzIEFjdCwgY2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcG9pbnRlcl9hcml0aG1ldGljX3RyYWl0cyB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+IAotc3RydWN0IHBvaW50ZXJfYXJpdGhtZXRpY190cmFpdHM8cGx1c19hY3Rpb24sIEEsIEI+IHsgCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBhcnJheV90b19wb2ludGVyPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlPjo6dHlwZSBBUDsKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBhcnJheV90b19wb2ludGVyPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEI+Ojp0eXBlPjo6dHlwZSBCUDsKLQotICBzdGF0aWMgY29uc3QgYm9vbCBpc19wb2ludGVyX0EgPSBuZG5ib29zdDo6aXNfcG9pbnRlcjxBUD46OnZhbHVlOwotICBzdGF0aWMgY29uc3QgYm9vbCBpc19wb2ludGVyX0IgPSBuZG5ib29zdDo6aXNfcG9pbnRlcjxCUD46OnZhbHVlOyAgCi0KLSAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBpc19wb2ludGVyX0EgfHwgaXNfcG9pbnRlcl9COwotCi0gIC8vIGNhbid0IGFkZCB0d28gcG9pbnRlcnMuCi0gIC8vIG5vdGUsIHRoYXQgd2UgZG8gbm90IGNoZWNrIHdldGhlciB0aGUgb3RoZXIgdHlwZSBpcyB2YWxpZCBmb3IgCi0gIC8vIGFkZGl0aW9uIHdpdGggYSBwb2ludGVyLgotICAvLyB0aGUgY29tcGlsZXIgd2lsbCBjYXRjaCBpdCBpbiB0aGUgYXBwbHkgZnVuY3Rpb24KLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICBkZXRhaWw6OklGPAotICAgIGlzX3BvaW50ZXJfQSAmJiBpc19wb2ludGVyX0IsIAotICAgICAgZGV0YWlsOjpyZXR1cm5fdHlwZV9kZWR1Y3Rpb25fZmFpbHVyZTwKLSAgICAgICAgZGV0YWlsOjppbGxlZ2FsX3BvaW50ZXJfYXJpdGhtZXRpYwotICAgICAgPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6SUY8aXNfcG9pbnRlcl9BLCBBUCwgQlA+OjpSRVQKLSAgPjo6UkVUIHR5cGU7IAotCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCBwb2ludGVyX2FyaXRobWV0aWNfdHJhaXRzPG1pbnVzX2FjdGlvbiwgQSwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBhcnJheV90b19wb2ludGVyPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlPjo6dHlwZSBBUDsKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBhcnJheV90b19wb2ludGVyPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEI+Ojp0eXBlPjo6dHlwZSBCUDsKLQotICBzdGF0aWMgY29uc3QgYm9vbCBpc19wb2ludGVyX0EgPSBuZG5ib29zdDo6aXNfcG9pbnRlcjxBUD46OnZhbHVlOwotICBzdGF0aWMgY29uc3QgYm9vbCBpc19wb2ludGVyX0IgPSBuZG5ib29zdDo6aXNfcG9pbnRlcjxCUD46OnZhbHVlOyAgCi0KLSAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBpc19wb2ludGVyX0EgfHwgaXNfcG9pbnRlcl9COwotCi0gIHN0YXRpYyBjb25zdCBib29sIHNhbWVfcG9pbnRlcl90eXBlID0KLSAgICBpc19wb2ludGVyX0EgJiYgaXNfcG9pbnRlcl9CICYmIAotICAgIG5kbmJvb3N0Ojppc19zYW1lPAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jb25zdDwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9wb2ludGVyPAotICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY29uc3Q8QVA+Ojp0eXBlCi0gICAgICAgID46OnR5cGUKLSAgICAgID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2NvbnN0PAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8Ci0gICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jb25zdDxCUD46OnR5cGUKLSAgICAgICAgPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgID46OnZhbHVlOwotCi0gIC8vIHB0ciAtIHB0ciBoYXMgdHlwZSBwdHJkaWZmX3QKLSAgLy8gbm90ZSwgdGhhdCB3ZSBkbyBub3QgY2hlY2sgaWYsIGluIHB0ciAtIEIsIEIgaXMgCi0gIC8vIHZhbGlkIGZvciBzdWJ0cmFjdGlvbiB3aXRoIGEgcG9pbnRlci4KLSAgLy8gdGhlIGNvbXBpbGVyIHdpbGwgY2F0Y2ggaXQgaW4gdGhlIGFwcGx5IGZ1bmN0aW9uCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgZGV0YWlsOjpJRjwKLSAgICBzYW1lX3BvaW50ZXJfdHlwZSwgY29uc3Qgc3RkOjpwdHJkaWZmX3QsCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICAgIGlzX3BvaW50ZXJfQSwgCi0gICAgICBBUCwgCi0gICAgICBkZXRhaWw6OnJldHVybl90eXBlX2RlZHVjdGlvbl9mYWlsdXJlPGRldGFpbDo6aWxsZWdhbF9wb2ludGVyX2FyaXRobWV0aWM+Ci0gICAgPjo6UkVUCi0gID46OlJFVCB0eXBlOyAKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgCi0vLyAtLSBhcml0aG1ldGljIGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotICAgCi10ZW1wbGF0ZTxib29sIGlzX3BvaW50ZXJfYXJpdGhtZXRpYywgY2xhc3MgQWN0LCBjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8yOwotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8zOwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSAgCi0KLS8vIGRyb3AgYW55IHF1YWxpZmllcnMgZnJvbSB0aGUgYXJndW1lbnQgdHlwZXMgd2l0aGluIGFyaXRobWV0aWNfYWN0aW9uCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBBY3Q+IAotc3RydWN0IHJldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248QWN0PiwgQSwgQj4KLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CPjo6dHlwZSB0eXBlMTsKLSAgCi0gIC8vIGlmIHVzZXIgZGVmaW5lZCByZXR1cm4gdHlwZSwgZG8gbm90IGVudGVyIHRoZSB3aG9sZSBhcml0aG1ldGljIGRlZHVjdGlvbnMKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGX3R5cGU8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIGRldGFpbDo6cmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzE8Ci0gICAgICAgICBkZXRhaWw6OnBvaW50ZXJfYXJpdGhtZXRpY190cmFpdHM8QWN0LCBBLCBCPjo6dmFsdWUsIEFjdCwgQSwgQgotICAgICAgPiwKLSAgICAgIHBsYWluX3JldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248QWN0PiwgcGxhaW5fQSwgcGxhaW5fQj4KLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLSAgIAotLy8gcGVyZm9ybSBpbnRlZ3JhbCBwcm9tb3Rpb24sIG5vIHBvaW50ZXIgYXJpdGhtZXRpYwotdGVtcGxhdGU8Ym9vbCBpc19wb2ludGVyX2FyaXRobWV0aWMsIGNsYXNzIEFjdCwgY2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzEKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMjwKLSAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLyBwb2ludGVyX2FyaXRobWV0aWMKLXRlbXBsYXRlPGNsYXNzIEFjdCwgY2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzE8dHJ1ZSwgQWN0LCBBLCBCPgotewotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBvaW50ZXJfYXJpdGhtZXRpY190cmFpdHM8QWN0LCBBLCBCPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMzwKLSAgICAgIHR5cGVuYW1lIHByb21vdGVfdG9faW50PEE+Ojp0eXBlLCAKLSAgICAgIHR5cGVuYW1lIHByb21vdGVfdG9faW50PEI+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gc3BlY2lhbGl6YXRpb24gZm9yIHVuc2lnbmVkIGludC4KLS8vIFdlIG9ubHkgaGF2ZSB0byBkbyB0aGVzZSB0d28gc3BlY2lhbGl6YXRpb24gYmVjYXVzZSB0aGUgdmFsdWUgcHJvbW90aW9uIHdpbGwKLS8vIHRha2UgY2FyZSBvZiB0aGUgb3RoZXIgY2FzZXMuCi0vLyBUaGUgdW5zaWduZWQgaW50IHByb21vdGlvbiBydWxlIGlzIHRoaXM6Ci0vLyB1bnNpZ25lZCBpbnQgdG8gbG9uZyBpZiBhIGxvbmcgY2FuIGhvbGQgYWxsIHZhbHVlcyBvZiB1bnNpZ25lZCBpbnQsCi0vLyBvdGhlcndpc2UgZ28gdG8gdW5zaWduZWQgbG9uZy4KLQotLy8gc3RydWN0IHNvIEkgZG9uJ3QgaGF2ZSB0byB0eXBlIHRoaXMgdHdpY2UuCi1zdHJ1Y3QgcHJvbW90aW9uX29mX3Vuc2lnbmVkX2ludAotewotICAgICAgICB0eXBlZGVmCi0gICAgICAgIGRldGFpbDo6SUY8c2l6ZW9mKGxvbmcpIDw9IHNpemVvZih1bnNpZ25lZCBpbnQpLCAgICAgICAgCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywKLSAgICAgICAgICAgICAgICBsb25nPjo6UkVUIHR5cGU7IAotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8yPHVuc2lnbmVkIGludCwgbG9uZz4KLXsKLSAgICAgICAgdHlwZWRlZiBwcm9tb3Rpb25fb2ZfdW5zaWduZWRfaW50Ojp0eXBlIHR5cGU7Ci19OwotdGVtcGxhdGU8Pgotc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8yPGxvbmcsIHVuc2lnbmVkIGludD4KLXsKLSAgICAgICAgdHlwZWRlZiBwcm9tb3Rpb25fb2ZfdW5zaWduZWRfaW50Ojp0eXBlIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+IHN0cnVjdCByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMyB7IAotICAgZW51bSB7IHByb21vdGVfY29kZV9BX3ZhbHVlID0gcHJvbW90ZV9jb2RlPEE+Ojp2YWx1ZSwKLSAgICAgICAgIHByb21vdGVfY29kZV9CX3ZhbHVlID0gcHJvbW90ZV9jb2RlPEI+Ojp2YWx1ZSB9OyAvLyBlbnVtcyBmb3IgS0NDCi0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICBkZXRhaWw6OklGPAotICAgICAgcHJvbW90ZV9jb2RlX0FfdmFsdWUgPT0gLTEgfHwgcHJvbW90ZV9jb2RlX0JfdmFsdWUgPT0gLTEsCi0gICAgICBkZXRhaWw6OnJldHVybl90eXBlX2RlZHVjdGlvbl9mYWlsdXJlPHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8zPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0gICAgICAgICgoaW50KXByb21vdGVfY29kZV9BX3ZhbHVlID4gKGludClwcm9tb3RlX2NvZGVfQl92YWx1ZSksIAotICAgICAgICBBLCAKLSAgICAgICAgQgotICAgICAgPjo6UkVUCi0gICAgPjo6UkVUIHR5cGU7ICAgICAgICAgICAgICAgICAgICAKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyAtLSAgYml0d2lzZSBhY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIG5vdGU6IGZvciBpbnRlZ3JhbCB0eXBlcyBkZXVkdWN0aW9uIGlzIHNpbWlsYXIgdG8gYXJpdGhtZXRpYyBhY3Rpb25zLiAKLQotLy8gZHJvcCBhbnkgcXVhbGlmaWVycyBmcm9tIHRoZSBhcmd1bWVudCB0eXBlcyB3aXRoaW4gYXJpdGhtZXRpYyBhY3Rpb24KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEFjdD4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxBY3Q+LCBBLCBCPgotewotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248QWN0PiwgcGxhaW5fQSwgcGxhaW5fQj46OnR5cGUgdHlwZTE7Ci0gIAotICAvLyBpZiB1c2VyIGRlZmluZWQgcmV0dXJuIHR5cGUsIGRvIG5vdCBlbnRlciB0eXBlIGRlZHVjdGlvbnMKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGX3R5cGU8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIHJldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LCBBLCBCPiwKLSAgICAgIHBsYWluX3JldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248QWN0PiwgcGxhaW5fQSwgcGxhaW5fQj4KLSAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgLy8gcGx1c19hY3Rpb24gaXMganVzdCBhIHJhbmRvbSBwaWNrLCBoYXMgdG8gYmUgYSBjb25jcmV0ZSBpbnN0YW5jZQotCi0gIC8vIFRPRE86IFRoaXMgY2hlY2sgaXMgb25seSB2YWxpZCBmb3IgYnVpbHQtaW4gdHlwZXMsIG92ZXJsb2FkZWQgdHlwZXMgbWlnaHQKLSAgLy8gYWNjZXB0IGZsb2F0aW5nIHBvaW50IG9wZXJhdG9ycwotCi0gIC8vIGJpdHdpc2Ugb3BlcmF0b3JzIG5vdCBkZWZpbmVkIGZvciBmbG9hdGluZyBwb2ludCB0eXBlcwotICAvLyB0aGVzZSB0ZXN0IGFyZSBub3Qgc3RyaWN0bHkgbmVlZGVkIGhlcmUsIHNpbmNlIHRoZSBlcnJvciB3aWxsIGJlIGNhdWdodCBpbgotICAvLyB0aGUgYXBwbHkgZnVuY3Rpb24KLSAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghKG5kbmJvb3N0Ojppc19mbG9hdDxwbGFpbl9BPjo6dmFsdWUgJiYgbmRuYm9vc3Q6OmlzX2Zsb2F0PHBsYWluX0I+Ojp2YWx1ZSkpOwotCi19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9TVFJFQU1TCi0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3QgbGVmdHNoaWZ0X3R5cGUgewotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICBuZG5ib29zdDo6aXNfY29udmVydGlibGU8Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSosCi0gICAgICBzdGQ6Om9zdHJlYW0qCi0gICAgPjo6dmFsdWUsCi0gICAgc3RkOjpvc3RyZWFtJiwgCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICA+OjpSRVQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3QgcmlnaHRzaGlmdF90eXBlIHsKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0KLSAgICBuZG5ib29zdDo6aXNfY29udmVydGlibGU8Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSosCi0gICAgICBzdGQ6OmlzdHJlYW0qCi0gICAgPjo6dmFsdWUsIAotICAgIHN0ZDo6aXN0cmVhbSYsCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICA+OjpSRVQgdHlwZTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgZ2V0X29zdHJlYW1fdHlwZSB7Ci0gIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPHR5cGVuYW1lIFQ6OmNoYXJfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFQ6OnRyYWl0c190eXBlPiYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgZ2V0X2lzdHJlYW1fdHlwZSB7Ci0gIHR5cGVkZWYgc3RkOjpiYXNpY19pc3RyZWFtPHR5cGVuYW1lIFQ6OmNoYXJfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFQ6OnRyYWl0c190eXBlPiYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3QgbGVmdHNoaWZ0X3R5cGUgewotcHJpdmF0ZToKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSBwbGFpbkE7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRl90eXBlPAotICAgIGlzX2luc3RhbmNlX29mXzI8cGxhaW5BLCBzdGQ6OmJhc2ljX29zdHJlYW0+Ojp2YWx1ZSwgCi0gICAgZ2V0X29zdHJlYW1fdHlwZTxwbGFpbkE+LCAvL3JlZmVyZW5jZSB0byB0aGUgc3RyZWFtIAotICAgIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT4KLSAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCByaWdodHNoaWZ0X3R5cGUgewotcHJpdmF0ZToKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSBwbGFpbkE7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRl90eXBlPAotICAgIGlzX2luc3RhbmNlX29mXzI8cGxhaW5BLCBzdGQ6OmJhc2ljX2lzdHJlYW0+Ojp2YWx1ZSwgCi0gICAgZ2V0X2lzdHJlYW1fdHlwZTxwbGFpbkE+LCAvL3JlZmVyZW5jZSB0byB0aGUgc3RyZWFtIAotICAgIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT4KLSAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi0jZW5kaWYKLQotfSAvLyBlbmQgZGV0YWlsCi0KLS8vIG9zdHJlYW0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+IAotc3RydWN0IHJldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248bGVmdHNoaWZ0X2FjdGlvbj4sIEEsIEI+Ci17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248bGVmdHNoaWZ0X2FjdGlvbj4sIHBsYWluX0EsIHBsYWluX0I+Ojp0eXBlIHR5cGUxOwotICAKLSAgLy8gaWYgdXNlciBkZWZpbmVkIHJldHVybiB0eXBlLCBkbyBub3QgZW50ZXIgdHlwZSBkZWR1Y3Rpb25zCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRl90eXBlPAotICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8dHlwZTEsIGRldGFpbDo6dW5zcGVjaWZpZWQ+Ojp2YWx1ZSwgCi0gICAgICBkZXRhaWw6OmxlZnRzaGlmdF90eXBlPEEsIEI+LAotICAgICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPiwgcGxhaW5fQSwgcGxhaW5fQj4KLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLyBpc3RyZWFtCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yPGJpdHdpc2VfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPiwgQSwgQj4KLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4sIHBsYWluX0EsIHBsYWluX0I+Ojp0eXBlIHR5cGUxOwotICAKLSAgLy8gaWYgdXNlciBkZWZpbmVkIHJldHVybiB0eXBlLCBkbyBub3QgZW50ZXIgdHlwZSBkZWR1Y3Rpb25zCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRl90eXBlPAotICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8dHlwZTEsIGRldGFpbDo6dW5zcGVjaWZpZWQ+Ojp2YWx1ZSwgCi0gICAgICBkZXRhaWw6OnJpZ2h0c2hpZnRfdHlwZTxBLCBCPiwKLSAgICAgIHBsYWluX3JldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248cmlnaHRzaGlmdF9hY3Rpb24+LCBwbGFpbl9BLCBwbGFpbl9CPgotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIC0tIGxvZ2ljYWwgYWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBhbHdheXMgYm9vbAotLy8gTk9URTogdGhpcyBtYXkgbm90IGJlIHRydWUgZm9yIHNvbWUgd2VpcmQgdXNlci1kZWZpbmVkIHR5cGVzLAotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPGxvZ2ljYWxfYWN0aW9uPEFjdD4sIEEsIEI+IHsgCi0gIHR5cGVkZWYgYm9vbCB0eXBlOyAKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEFjdD4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxsb2dpY2FsX2FjdGlvbjxBY3Q+LCBBLCBCPiB7IAotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8bG9naWNhbF9hY3Rpb248QWN0PiwgcGxhaW5fQSwgcGxhaW5fQj46OnR5cGUgdHlwZTsKLSAgCi19OwotCi0KLS8vIC0tIHJlbGF0aW9uYWwgYWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBhbHdheXMgYm9vbAotLy8gTk9URTogdGhpcyBtYXkgbm90IGJlIHRydWUgZm9yIHNvbWUgd2VpcmQgdXNlci1kZWZpbmVkIHR5cGVzLAotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPHJlbGF0aW9uYWxfYWN0aW9uPEFjdD4sIEEsIEI+IHsgCi0gIHR5cGVkZWYgYm9vbCB0eXBlOyAKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEFjdD4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxyZWxhdGlvbmFsX2FjdGlvbjxBY3Q+LCBBLCBCPiB7IAotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8cmVsYXRpb25hbF9hY3Rpb248QWN0PiwgcGxhaW5fQSwgcGxhaW5fQj46OnR5cGUgdHlwZTsgCi19OwotCi0vLyBBc3NpbmdtZW50IGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIHJldHVybiB0eXBlIGlzIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBhcyByZWZlcmVuY2UKLQotLy8gbm90ZSB0aGF0IGN2LXF1YWxpZmllcnMgYXJlIHByZXNlcnZlZC4KLS8vIFllcywgYXNzaWdubWVudCBvcGVyYXRvciBjYW4gYmUgY29uc3QhCi0KLS8vIE5PVEU6IHRoaXMgbWF5IG5vdCBiZSB0cnVlIGZvciBzb21lIHdlaXJkIHVzZXItZGVmaW5lZCB0eXBlcywKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yPGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248QWN0PiwgQSwgQj4geyAKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBwbGFpbl9yZXR1cm5fdHlwZV8yPAotICAgICAgYXJpdGhtZXRpY19hc3NpZ25tZW50X2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CCi0gICAgPjo6dHlwZSB0eXBlMTsKLSAgCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRjwKLSAgICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8QT46OnR5cGUsCi0gICAgICB0eXBlMQotICAgID46OlJFVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yPGJpdHdpc2VfYXNzaWdubWVudF9hY3Rpb248QWN0PiwgQSwgQj4geyAKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBwbGFpbl9yZXR1cm5fdHlwZV8yPAotICAgICAgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CCi0gICAgPjo6dHlwZSB0eXBlMTsKLSAgCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRjwKLSAgICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8QT46OnR5cGUsCi0gICAgICB0eXBlMQotICAgID46OlJFVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248YXNzaWdubWVudF9hY3Rpb24+LCBBLCBCPiB7IAotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBwbGFpbl9yZXR1cm5fdHlwZV8yPAotICAgICAgb3RoZXJfYWN0aW9uPGFzc2lnbm1lbnRfYWN0aW9uPiwgcGxhaW5fQSwgcGxhaW5fQgotICAgID46OnR5cGUgdHlwZTE7Ci0gIAotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6SUY8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPEE+Ojp0eXBlLAotICAgICAgdHlwZTEKLSAgICA+OjpSRVQgdHlwZTsKLX07Ci0KLS8vIC0tIG90aGVyIGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBjb21tYSBhY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gTm90ZTogdGhpcyBtYXkgbm90IGJlIHRydWUgZm9yIHNvbWUgd2VpcmQgdXNlci1kZWZpbmVkIHR5cGVzLAotCi0vLyBOT1RFISBUaGlzIG9ubHkgdHJpZXMgdGhlIHBsYWluX3JldHVybl90eXBlXzIgbGF5ZXIgYW5kIGdpdmVzCi0vLyBkZXRhaWw6OnVuc3BlY2lmaWVkIGFzIGRlZmF1bHQuIElmIG5vIHN1Y2ggc3BlY2lhbGl6YXRpb24gaXMgZm91bmQsIHRoZSAKLS8vIHR5cGUgcnVsZSBpbiB0aGUgc3BjZWNpYWxpemF0aW9uIG9mIHRoZSByZXR1cm5fdHlwZV8yX3Byb3QgaXMgdXNlZAotLy8gdG8gZ2l2ZSB0aGUgdHlwZSBvZiB0aGUgcmlnaHQgYXJndW1lbnQgKHdoaWNoIGNhbiBiZSBhIHJlZmVyZW5jZSB0b28pCi0vLyAoVGhlIGJ1aWx0IGluIG9wZXJhdG9yLCBjYW4gcmV0dXJuIGEgbC0gb3IgcnZhbHVlKS4KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+IAotc3RydWN0IHJldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4sIEEsIEI+IHsgCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjwKLSAgICAgIG90aGVyX2FjdGlvbjxjb21tYV9hY3Rpb24+LCBwbGFpbl9BLCBwbGFpbl9CCi0gICAgPjo6dHlwZSB0eXBlOwotICB9OwotCi0vLyBzdWJzY3JpcHQgYWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0gIC8vIEEgYW5kIEIgYXJlIG5vbnJlZmVyZW5jZSB0eXBlcwotdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+IHN0cnVjdCBzdWJzY3JpcHRfdHlwZSB7Ci0gIHR5cGVkZWYgZGV0YWlsOjp1bnNwZWNpZmllZCB0eXBlOyAKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8QSosIEI+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8QSogY29uc3QsIEI+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8QSogdm9sYXRpbGUsIEI+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8QSogY29uc3Qgdm9sYXRpbGUsIEI+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBpbnQgTj4gc3RydWN0IHN1YnNjcmlwdF90eXBlPEFbTl0sIEI+IHsgCi0gIHR5cGVkZWYgQSYgdHlwZTsgCi19OwotCi0gIC8vIHRoZXNlIDMgc3BlY2lhbGl6YXRpb25zIGFyZSBuZWVkZWQgdG8gbWFrZSBnY2MgPDMgaGFwcHkKLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGludCBOPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8Y29uc3QgQVtOXSwgQj4geyAKLSAgdHlwZWRlZiBjb25zdCBBJiB0eXBlOyAKLX07Ci10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBpbnQgTj4gc3RydWN0IHN1YnNjcmlwdF90eXBlPHZvbGF0aWxlIEFbTl0sIEI+IHsgCi0gIHR5cGVkZWYgdm9sYXRpbGUgQSYgdHlwZTsgCi19OwotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgaW50IE4+IHN0cnVjdCBzdWJzY3JpcHRfdHlwZTxjb25zdCB2b2xhdGlsZSBBW05dLCBCPiB7IAotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIEEmIHR5cGU7IAotfTsKLQotfSAvLyBlbmQgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIEEsIEI+IHsKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSBub25yZWZfQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxCPjo6dHlwZSBub25yZWZfQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8Ci0gICAgICBvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHBsYWluX0EsIHBsYWluX0IKLSAgICA+Ojp0eXBlIHR5cGUxOwotICAKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGX3R5cGU8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIGRldGFpbDo6c3Vic2NyaXB0X3R5cGU8bm9ucmVmX0EsIG5vbnJlZl9CPiwKLSAgICAgIHBsYWluX3JldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCBwbGFpbl9BLCBwbGFpbl9CPgotICAgID46OnR5cGUgdHlwZTsKLQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgS2V5LCBjbGFzcyBULCBjbGFzcyBDbXAsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHN0ZDo6bWFwPEtleSwgVCwgQ21wLCBBbGxvY2F0b3I+LCBCPiB7IAotICB0eXBlZGVmIFQmIHR5cGU7Ci0gIC8vIFQgPT0gc3RkOjptYXA8S2V5LCBULCBDbXAsIEFsbG9jYXRvcj46Om1hcHBlZF90eXBlOyAKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgQ21wLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIEI+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCBzdGQ6Om11bHRpbWFwPEtleSwgVCwgQ21wLCBBbGxvY2F0b3I+LCBCPiB7IAotICB0eXBlZGVmIFQmIHR5cGU7Ci0gIC8vIFQgPT0gc3RkOjptYXA8S2V5LCBULCBDbXAsIEFsbG9jYXRvcj46Om1hcHBlZF90eXBlOyAKLX07Ci0KLSAgLy8gZGVxdWUKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHN0ZDo6ZGVxdWU8VCwgQWxsb2NhdG9yPiwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmRlcXVlPFQsIEFsbG9jYXRvcj46OnJlZmVyZW5jZSB0eXBlOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIGNvbnN0IHN0ZDo6ZGVxdWU8VCwgQWxsb2NhdG9yPiwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmRlcXVlPFQsIEFsbG9jYXRvcj46OmNvbnN0X3JlZmVyZW5jZSB0eXBlOwotfTsKLQotICAvLyB2ZWN0b3IKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHN0ZDo6dmVjdG9yPFQsIEFsbG9jYXRvcj4sIEI+IHsgCi0gIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjp2ZWN0b3I8VCwgQWxsb2NhdG9yPjo6cmVmZXJlbmNlIHR5cGU7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBCPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgY29uc3Qgc3RkOjp2ZWN0b3I8VCwgQWxsb2NhdG9yPiwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnZlY3RvcjxULCBBbGxvY2F0b3I+Ojpjb25zdF9yZWZlcmVuY2UgdHlwZTsKLX07Ci0KLSAgLy8gYmFzaWNfc3RyaW5nCi10ZW1wbGF0ZTxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj46OnJlZmVyZW5jZSB0eXBlOwotfTsKLXRlbXBsYXRlPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBCPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+LCBCPiB7IAotICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPjo6Y29uc3RfcmVmZXJlbmNlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4gPiB7IAotICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2hhciosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4gPiB7IAotICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2hhcio+IHsgCi0gIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jYXRvciwgc3RkOjpzaXplX3QgTj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyW05dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+ID4geyAKLSAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBOPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJbTl0+IHsgCi0gIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+IHR5cGU7Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9ycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFjOWE0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3MCArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtIG9wZXJhdG9ycy5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUlNfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2lzX2luc3RhbmNlX29mLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX0JFMQotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mIE5ETkJPT1NUX0xBTUJEQV9CRTEiCi0jZW5kaWYKLQotICAvLyBGb3IgYWxsIEJPT1NUQV9MQU1CREFfQkUqIG1hY3JvczoKLQotICAvLyBDT05TVEEgbXVzdCBiZSBlaXRoZXIgJ0EnIG9yICdjb25zdCBBJwotICAvLyBDT05TVEIgbXVzdCBiZSBlaXRoZXIgJ0InIG9yICdjb25zdCBCJwotCi0gIC8vIEl0IGlzIHN0dXBpZCB0byBoYXZlIHRoZSBuYW1lcyBBIGFuZCBCIGFzIG1hY3JvIGFyZ3VtZW50cywgYnV0IGl0IGF2b2lkcwotICAvLyB0aGUgbmVlZCB0byBwYXNzIGluIGVtdHB5IG1hY3JvIGFyZ3VtZW50cywgd2hpY2ggZ2l2ZXMgd2FybmluZ3Mgb24gc29tZQotICAvLyBjb21waWxlcnMKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQkUxKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEEsIENPTlNUQiwgQ09OVkVSU0lPTikgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIGNsYXNzIEI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbGFtYmRhX2Z1bmN0b3I8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBBQ1RJT04sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4sIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPENPTlNUQj46OnR5cGU+ICBcCi0gID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotT1BFUl9OQU1FIChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBhLCBDT05TVEImIGIpIHsgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIEFDVElPTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8Q09OU1RCPjo6dHlwZT5cCi0gICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICh0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxDT05TVEI+Ojp0eXBlPihhLCBiKSk7IFwKLX0KLQotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9MQU1CREFfQkUyCi0jZXJyb3IgIk11bHRpcGxlIGRlZmluZXMgb2YgTkROQk9PU1RfTEFNQkRBX0JFMiIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9CRTIoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQSwgQ09OU1RCLCBDT05WRVJTSU9OKSAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEFyZz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1sYW1iZGFfZnVuY3RvcjwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEFDVElPTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHVwbGU8dHlwZW5hbWUgQ09OVkVSU0lPTiA8Q09OU1RBPjo6dHlwZSwgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+ICAgICAgICBcCi0gID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotT1BFUl9OQU1FIChDT05TVEEmIGEsIGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGIpIHsgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIEFDVElPTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdHVwbGU8dHlwZW5hbWUgQ09OVkVSU0lPTiA8Q09OU1RBPjo6dHlwZSwgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+ICAgICAgXAotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICh0dXBsZTx0eXBlbmFtZSBDT05WRVJTSU9OIDxDT05TVEE+Ojp0eXBlLCBsYW1iZGFfZnVuY3RvcjxBcmc+ID4oYSwgYikpOyBcCi19Ci0KLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX0JFMwotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mIE5ETkJPT1NUX0xBTUJEQV9CRTMiCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQkUzKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEEsIENPTlNUQiwgQ09OVkVSU0lPTikgICAgXAotdGVtcGxhdGU8Y2xhc3MgQXJnQSwgY2xhc3MgQXJnQj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbGFtYmRhX2Z1bmN0b3I8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEFDVElPTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZ0E+LCBsYW1iZGFfZnVuY3RvcjxBcmdCPiA+ICAgICAgICAgICAgICAgICAgICAgXAotICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotT1BFUl9OQU1FIChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmdBPiYgYSwgY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnQj4mIGIpIHsgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgQUNUSU9OLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnQT4sIGxhbWJkYV9mdW5jdG9yPEFyZ0I+ID4gICAgICAgICAgICAgICAgICAgXAotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAodHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnQT4sIGxhbWJkYV9mdW5jdG9yPEFyZ0I+ID4oYSwgYikpOyAgICAgICAgICAgICAgXAotfQotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9MQU1CREFfQkUKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiBORE5CT09TVF9MQU1CREFfQkUiCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQkUoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQSwgQ09OU1RCLCBDT05TVF9DT05WRVJTSU9OKSBcCi1ORE5CT09TVF9MQU1CREFfQkUxKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEEsIENPTlNUQiwgQ09OU1RfQ09OVkVSU0lPTikgICAgICAgIFwKLU5ETkJPT1NUX0xBTUJEQV9CRTIoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQSwgQ09OU1RCLCBDT05TVF9DT05WRVJTSU9OKSAgICAgICAgXAotTkROQk9PU1RfTEFNQkRBX0JFMyhPUEVSX05BTUUsIEFDVElPTiwgQ09OU1RBLCBDT05TVEIsIENPTlNUX0NPTlZFUlNJT04pCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0VNUFRZKCkgCi0KLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcissIGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvci0sIGFyaXRobWV0aWNfYWN0aW9uPG1pbnVzX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3IqLCBhcml0aG1ldGljX2FjdGlvbjxtdWx0aXBseV9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yLywgYXJpdGhtZXRpY19hY3Rpb248ZGl2aWRlX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3IlLCBhcml0aG1ldGljX2FjdGlvbjxyZW1haW5kZXJfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcjw8LCBiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcj4+LCBiaXR3aXNlX2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3ImLCBiaXR3aXNlX2FjdGlvbjxhbmRfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcnwsIGJpdHdpc2VfYWN0aW9uPG9yX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3JeLCBiaXR3aXNlX2FjdGlvbjx4b3JfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvciYmLCBsb2dpY2FsX2FjdGlvbjxhbmRfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcnx8LCBsb2dpY2FsX2FjdGlvbjxvcl9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yPCwgcmVsYXRpb25hbF9hY3Rpb248bGVzc19hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yPiwgcmVsYXRpb25hbF9hY3Rpb248Z3JlYXRlcl9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yPD0sIHJlbGF0aW9uYWxfYWN0aW9uPGxlc3NvcmVxdWFsX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3I+PSwgcmVsYXRpb25hbF9hY3Rpb248Z3JlYXRlcm9yZXF1YWxfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcj09LCByZWxhdGlvbmFsX2FjdGlvbjxlcXVhbF9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yIT0sIHJlbGF0aW9uYWxfYWN0aW9uPG5vdGVxdWFsX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi0KLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcis9LCBhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPHBsdXNfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yLT0sIGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248bWludXNfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yKj0sIGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248bXVsdGlwbHlfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yLz0sIGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248ZGl2aWRlX2FjdGlvbj4sIEEsIGNvbnN0IEIsIHJlZmVyZW5jZV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvciU9LCBhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPHJlbWFpbmRlcl9hY3Rpb24+LCBBLCBjb25zdCBCLCByZWZlcmVuY2VfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3I8PD0sIGJpdHdpc2VfYXNzaWdubWVudF9hY3Rpb248bGVmdHNoaWZ0X2FjdGlvbj4sIEEsIGNvbnN0IEIsIHJlZmVyZW5jZV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcj4+PSwgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4sIEEsIGNvbnN0IEIsIHJlZmVyZW5jZV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvciY9LCBiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPGFuZF9hY3Rpb24+LCBBLCBjb25zdCBCLCByZWZlcmVuY2VfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3J8PSwgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxvcl9hY3Rpb24+LCBBLCBjb25zdCBCLCByZWZlcmVuY2VfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3JePSwgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjx4b3JfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotCi0KLS8vIEEgc3BlY2lhbCB0cmljayBmb3IgY29tbWEgb3BlcmF0b3IgZm9yIGNvcnJlY3QgcHJlcHJvY2Vzc2luZwotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX0NPTU1BX09QRVJBVE9SX05BTUUKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiBORE5CT09TVF9MQU1CREFfQ09NTUFfT1BFUkFUT1JfTkFNRSIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9DT01NQV9PUEVSQVRPUl9OQU1FIG9wZXJhdG9yLAotCi1ORE5CT09TVF9MQU1CREFfQkUxKE5ETkJPT1NUX0xBTUJEQV9DT01NQV9PUEVSQVRPUl9OQU1FLCBvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRTIoTkROQk9PU1RfTEFNQkRBX0NPTU1BX09QRVJBVE9SX05BTUUsIG90aGVyX2FjdGlvbjxjb21tYV9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFMyhORE5CT09TVF9MQU1CREFfQ09NTUFfT1BFUkFUT1JfTkFNRSwgb3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi0KLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gc3BlY2lhbCBjYXNlcyBmb3Igb3N0cmVhbSYgPDwgQW55IGFuZCBpc3RyZWFtJiA+PiBBbnkgLS0tLS0tLS0tLS0tLS0tCi0vLyB0aGUgYWN0dWFsIHN0cmVhbSBjbGFzc2VzIG1heSB2YXJ5IGFuZCB0aHVzIGEgc3BlY2lhbGlzYXRpb24gZm9yLCAKLS8vIHNheSBvc3RyZWFtJiBkb2VzIG5vdCBtYXRjaCAodGhlIGdlbmVyYWwgY2FzZSBhYm92ZSBpcyBjaG9zZW4pLiAKLS8vIFRoZXJlZm9yZSB3ZSBzcGVjaWFsaXNlIGZvciBub24tY29uc3QgcmVmZXJlbmNlOgotLy8gaWYgdGhlIGxlZnQgYXJndW1lbnQgaXMgYSBzdHJlYW0sIHdlIHN0b3JlIHRoZSBzdHJlYW0gYXMgcmVmZXJlbmNlCi0vLyBpZiBpdCBpcyBzb21ldGhpbmcgZWxzZSwgd2Ugc3RvcmUgYSBjb25zdCBwbGFpbiBieSBkZWZhdWx0Ci0KLS8vIE5vdGUgdGhhdCB0aGUgb3ZlcmxvYWRpbmcgaXMgY29uc3QgdnMuIG5vbi1jb25zdCBmaXJzdCBhcmd1bWVudAotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVEX1NUUkVBTVMKLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBjb252ZXJ0X29zdHJlYW1fdG9fcmVmX290aGVyc190b19jX3BsYWluX2J5X2RlZmF1bHQgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0gICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxUKiwgc3RkOjpvc3RyZWFtKj46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICBUJiwKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8VD46OnR5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OlJFVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGNvbnZlcnRfaXN0cmVhbV90b19yZWZfb3RoZXJzX3RvX2NfcGxhaW5fYnlfZGVmYXVsdCB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPFQqLCBzdGQ6OmlzdHJlYW0qPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgIFQmLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxUPjo6dHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6UkVUIHR5cGU7Ci19OwotI2Vsc2UKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGNvbnZlcnRfb3N0cmVhbV90b19yZWZfb3RoZXJzX3RvX2NfcGxhaW5fYnlfZGVmYXVsdCB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICAgICAgICAgICAgICAgICAgICAgaXNfaW5zdGFuY2Vfb2ZfMjwKLSAgICAgICAgICAgICAgICAgICAgICAgICBULCBzdGQ6OmJhc2ljX29zdHJlYW0KLSAgICAgICAgICAgICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgIFQmLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxUPjo6dHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6UkVUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgY29udmVydF9pc3RyZWFtX3RvX3JlZl9vdGhlcnNfdG9fY19wbGFpbl9ieV9kZWZhdWx0IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgICAgICAgICAgICAgICAgICAgICBpc19pbnN0YW5jZV9vZl8yPAotICAgICAgICAgICAgICAgICAgICAgICAgIFQsIHN0ZDo6YmFzaWNfaXN0cmVhbQotICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgVCYsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPFQ+Ojp0eXBlCi0gICAgICAgICAgICAgICAgICAgICA+OjpSRVQgdHlwZTsKLX07Ci0jZW5kaWYKLQotfSAvLyBkZXRhaWwKLQotTkROQk9PU1RfTEFNQkRBX0JFMihvcGVyYXRvcjw8LCBiaXR3aXNlX2FjdGlvbjwgbGVmdHNoaWZ0X2FjdGlvbj4sIEEsIGNvbnN0IEIsIGRldGFpbDo6Y29udmVydF9vc3RyZWFtX3RvX3JlZl9vdGhlcnNfdG9fY19wbGFpbl9ieV9kZWZhdWx0KQotTkROQk9PU1RfTEFNQkRBX0JFMihvcGVyYXRvcj4+LCBiaXR3aXNlX2FjdGlvbjwgcmlnaHRzaGlmdF9hY3Rpb24+LCBBLCBjb25zdCBCLCBkZXRhaWw6OmNvbnZlcnRfaXN0cmVhbV90b19yZWZfb3RoZXJzX3RvX2NfcGxhaW5fYnlfZGVmYXVsdCkgICAgICAKLQotCi0vLyBzcGVjaWFsIGNhc2UgZm9yIGlvX21hbmlwdWxhdG9ycy4KLS8vIGZ1bmN0aW9uIHJlZmVyZW5jZXMgY2Fubm90IGJlIGdpdmVuIGFzIGFyZ3VtZW50cyB0byBsYW1iZGEgb3BlcmF0b3IKLS8vIGV4cHJlc3Npb25zIGluIGdlbmVyYWwuIFdpdGggPDwgYW5kID4+IHRoZSB1c2Ugb2YgbWFuaXB1bGF0b3JzIGlzCi0vLyBzbyBjb21tb24sIHRoYXQgc3BlY2lhbGl6YXRpb25zIGFyZSBwcm92aWRlZCB0byBtYWtlIHRoZW0gd29yay4KLQotdGVtcGxhdGU8Y2xhc3MgQXJnLCBjbGFzcyBSZXQsIGNsYXNzIE1hbmlwQXJnPgotaW5saW5lIGNvbnN0IAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYml0d2lzZV9hY3Rpb248bGVmdHNoaWZ0X2FjdGlvbj4sCi0gICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgUmV0KCYpKE1hbmlwQXJnKT4gCi0gID4gCi0+Ci1vcGVyYXRvcjw8KGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGEsIFJldCgmYikoTWFuaXBBcmcpKQotewotICByZXR1cm4gCi0gICAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgICBiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPiwKLSAgICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgUmV0KCYpKE1hbmlwQXJnKT4KLSAgICAgID4gCi0gICAgKCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBSZXQoJikoTWFuaXBBcmcpPihhLCBiKSApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIGNsYXNzIFJldCwgY2xhc3MgTWFuaXBBcmc+Ci1pbmxpbmUgY29uc3QgCi1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBiaXR3aXNlX2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4sCi0gICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgUmV0KCYpKE1hbmlwQXJnKT4KLSAgPiAKLT4KLW9wZXJhdG9yPj4oY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYSwgUmV0KCZiKShNYW5pcEFyZykpCi17Ci0gIHJldHVybiAKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICAgIGJpdHdpc2VfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPiwKLSAgICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgUmV0KCYpKE1hbmlwQXJnKT4KLSAgICAgID4gCi0gICAgKCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBSZXQoJikoTWFuaXBBcmcpPihhLCBiKSApOwotfQotCi0KLS8vICgrIGFuZCAtKSB0YWtlIHRoZWlyIGFyZ3VtZW50cyBhcyBjb25zdCByZWZlcmVuY2VzLiAKLS8vIFRoaXMgaGFzIGNvbnNxdWVuY2VzIHdpdGggcG9pbnRlciBhcnRpaG1ldGljCi0vLyBFLmcgaW50IGFbXTsgLi4uICphID0gMSB3b3JrcyBidXQgbm90ICooYSsxKSA9IDEuIAotLy8gdGhlIHJlc3VsdCBvZiBhKzEgd291bGQgYmUgY29uc3QKLS8vIFRvIG1ha2UgdGhlIGxhdHRlciB3b3JrIHRvbywgCi0vLyBub24tY29uc3QgYXJyYXlzIGFyZSB0YWtlbiBhcyBub24tY29uc3QgYW5kIHN0b3JlZCBhcyBub24tY29uc3QgYXMgd2VsbC4KLSNpZiBkZWZpbmVkICBORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTEKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiAgTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UxIgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UxKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEIpICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIGludCBOLCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWxhbWJkYV9mdW5jdG9yPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OLCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBDT05TVEIoJilbTl0+ID4gICAgXAotPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU9QRVJfTkFNRSAoY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYSwgQ09OU1RCKCZiKVtOXSkgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTiwgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgQ09OU1RCKCYpW05dPiA+ICBcCi0gICh0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBDT05TVEIoJilbTl0+KGEsIGIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotfQotCi0KLSNpZiBkZWZpbmVkICBORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTIKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiAgTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UyIgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UyKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEEpICAgICAgICAgICBcCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgQSwgY2xhc3MgQXJnPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWxhbWJkYV9mdW5jdG9yPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OLCB0dXBsZTxDT05TVEEoJilbTl0sIGxhbWJkYV9mdW5jdG9yPEFyZz4gPiA+ICAgXAotPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU9QRVJfTkFNRSAoQ09OU1RBKCZhKVtOXSwgY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYikgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTiwgdHVwbGU8Q09OU1RBKCYpW05dLCBsYW1iZGFfZnVuY3RvcjxBcmc+ID4gPiBcCi0gICAgKHR1cGxlPENPTlNUQSgmKVtOXSwgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+KGEsIGIpKTsgICAgICAgICAgICAgICAgICAgICAgXAotfQotCi0KLU5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMShvcGVyYXRvcissIGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPiwgQikKLU5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMihvcGVyYXRvcissIGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPiwgQSkKLU5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMShvcGVyYXRvcissIGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPixjb25zdCBCKQotTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UyKG9wZXJhdG9yKywgYXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LGNvbnN0IEEpCi0KLQotLy9ORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTEob3BlcmF0b3ItLCBhcml0aG1ldGljX2FjdGlvbjxtaW51c19hY3Rpb24+KQotLy8gVGhpcyBpcyBub3QgbmVlZGVkLCBzaW5jZSB0aGUgcmVzdWx0IG9mIHB0ci1wdHIgaXMgYW4gcnZhbHVlIGFueXdheQotCi1ORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTIob3BlcmF0b3ItLCBhcml0aG1ldGljX2FjdGlvbjxtaW51c19hY3Rpb24+LCBBKQotTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UyKG9wZXJhdG9yLSwgYXJpdGhtZXRpY19hY3Rpb248bWludXNfYWN0aW9uPiwgY29uc3QgQSkKLQotCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0JFMQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9CRTIKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfQkUzCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0JFCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0NPTU1BX09QRVJBVE9SX05BTUUKLQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMgotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gdW5hcnkgb3BlcmF0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX1VFCi0jZXJyb3IgIk11bHRpcGxlIGRlZmluZXMgb2YgTkROQk9PU1RfTEFNQkRBX1VFIgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1VFKE9QRVJfTkFNRSwgQUNUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEFyZz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWxhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OLCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4gPiA+IFwKLU9QRVJfTkFNRSAoY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcmV0dXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTiwgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+ID4gICAgICAgICAgICAgIFwKLSAgICAoIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPihhKSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0KLQotCi1ORE5CT09TVF9MQU1CREFfVUUob3BlcmF0b3IrLCB1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfVUUob3BlcmF0b3ItLCB1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxtaW51c19hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1VFKG9wZXJhdG9yfiwgYml0d2lzZV9hY3Rpb248bm90X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfVUUob3BlcmF0b3IhLCBsb2dpY2FsX2FjdGlvbjxub3RfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9VRShvcGVyYXRvcisrLCBwcmVfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248aW5jcmVtZW50X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfVUUob3BlcmF0b3ItLSwgcHJlX2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPGRlY3JlbWVudF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1VFKG9wZXJhdG9yKiwgb3RoZXJfYWN0aW9uPGNvbnRlbnRzb2ZfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9VRShvcGVyYXRvciYsIG90aGVyX2FjdGlvbjxhZGRyZXNzb2ZfYWN0aW9uPikKLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVUUKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiBORE5CT09TVF9MQU1CREFfUE9TVEZJWF9VRSIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9QT1NURklYX1VFKE9QRVJfTkFNRSwgQUNUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBBcmc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1sYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTiwgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+ID4gPiBcCi1PUEVSX05BTUUgKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGEsIGludCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTxBQ1RJT04sIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPiA+ICAgICAgICAgICAgICBcCi0gICAgKCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4oYSkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19Ci0KLQotTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVUUob3BlcmF0b3IrKywgcG9zdF9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxpbmNyZW1lbnRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9QT1NURklYX1VFKG9wZXJhdG9yLS0sIHBvc3RfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248ZGVjcmVtZW50X2FjdGlvbj4pCi0KLSN1bmRlZiBORE5CT09TVF9MQU1CREFfVUUKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfUE9TVEZJWF9VRQotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL3JldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE0NWVjZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNSArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAgcmV0LmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9SRVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9SRVRfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLSAgLy8gVE9ETzoKLQotLy8gIEFkZCBzcGVjaWFsaXphdGlvbnMgZm9yIGZ1bmN0aW9uIHJlZmVyZW5jZXMgZm9yIHJldCwgcHJvdGVjdCBhbmQgdW5sYW1iZGEKLS8vICBlLmcgdm9pZCBmb28oKTsgdW5sYW1iZGEoZm9vKTsgZmFpbHMsIGFzIGl0IHdvdWxkIGFkZCBhIGNvbnN0IHF1YWxpZmllcgotICAvLyBmb3IgYSBmdW5jdGlvbiB0eXBlLiAKLSAgLy8gb24gdGhlIG90aGVyIGhhbmQgdW5sYW1iZGEoKmZvbykgZG9lcyB3b3JrCi0KLQotLy8gLS0gcmV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIHRoZSBleHBsaWNpdCByZXR1cm4gdHlwZSB0ZW1wbGF0ZSAKLQotICAvLyBUT0RPOiBJdCdkIGJlIG5pY2UgdG8gbWFrZSByZXQgYSBub3AgZm9yIG90aGVyIHRoYW4gbGFtYmRhIGZ1bmN0b3JzCi0gIC8vIGJ1dCBjYXVzZXMgYW4gYW1iaWd1aXl0eSB3aXRoIGdjYyAobm90IHdpdGggS0NDKSwgY2hlY2sgd2hhdCBpcyB0aGUKLSAgLy8gcmlnaHQgaW50ZXJwcmV0YXRpb24uCi0KLSAgLy8gIC8vIHJldCBmb3Igb3RoZXJzIHRoYW4gbGFtYmRhIGZ1bmN0b3JzIGhhcyBubyBlZmZlY3QKLSAgLy8gdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzIFQ+Ci0gIC8vIGlubGluZSBjb25zdCBUJiByZXQoY29uc3QgVCYgdCkgeyByZXR1cm4gdDsgfQotCi0KLXRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQXJnPgotaW5saW5lIGNvbnN0IAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgZXhwbGljaXRfcmV0dXJuX3R5cGVfYWN0aW9uPFJFVD4sIAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPgotICA+IAotPgotcmV0KGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGExKQotewotICByZXR1cm4gIAotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBleHBsaWNpdF9yZXR1cm5fdHlwZV9hY3Rpb248UkVUPiwgCi0gICAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4KLSAgICA+IAotICAgICh0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4oYTEpKTsKLX0KLQotLy8gcHJvdGVjdCAtLS0tLS0tLS0tLS0tLS0tLS0KLQotICAvLyBwcm90ZWN0aW5nIG90aGVycyB0aGFuIGxhbWJkYSBmdW5jdG9ycyBoYXMgbm8gZWZmZWN0Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBjb25zdCBUJiBwcm90ZWN0KGNvbnN0IFQmIHQpIHsgcmV0dXJuIHQ7IH0KLQotdGVtcGxhdGU8Y2xhc3MgQXJnPgotaW5saW5lIGNvbnN0IAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgcHJvdGVjdF9hY3Rpb24sIAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPgotICA+IAotPgotcHJvdGVjdChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBhMSkKLXsKLSAgcmV0dXJuIAotICAgICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgICAgcHJvdGVjdF9hY3Rpb24sIAotICAgICAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4KLSAgICAgID4gCi0gICAgKHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPihhMSkpOwotfQotICAgCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIEhpZGVzIHRoZSBsYW1iZGEgZnVuY3Rvcm5lc3Mgb2YgYSBsYW1iZGEgZnVuY3Rvci4gCi0vLyBBZnRlciB0aGlzLCB0aGUgZnVuY3RvciBpcyBpbW11bmUgdG8gYXJndW1lbnQgc3Vic3RpdHV0aW9uLCBldGMuCi0vLyBUaGlzIGNhbiBiZSB1c2VkLCBlLmcuIHRvIG1ha2UgaXQgc2FmZSB0byBwYXNzIGxhbWJkYSBmdW5jdG9ycyBhcyAKLS8vIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMsIHdoaWNoIG1pZ2h0IHVzZSB0aGVtIGFzIHRhcmdldCBmdW5jdGlvbnMKLQotLy8gbm90ZSwgdW5sYW1iZGEgYW5kIHByb3RlY3QgYXJlIGRpZmZlcmVudCB0aGluZ3MuIFByb3RlY3QgaGlkZXMgdGhlIGxhbWJkYQotLy8gZnVuY3RvciBmb3Igb25lIGFwcGxpY2F0aW9uLCB1bmxhbWJkYSBmb3IgZ29vZC4KLQotdGVtcGxhdGUgPGNsYXNzIExhbWJkYUZ1bmN0b3I+Ci1jbGFzcyBub25fbGFtYmRhX2Z1bmN0b3IKLXsKLSAgTGFtYmRhRnVuY3RvciBsZjsKLXB1YmxpYzoKLSAgCi0gIC8vIFRoaXMgZnVuY3RvciBkZWZpbmVzIHRoZSByZXN1bHRfdHlwZSB0eXBlZGVmLgotICAvLyBUaGUgcmVzdWx0IHR5cGUgbXVzdCBiZSBkZWR1Y2libGUgd2l0aG91dCBrbm93aW5nIHRoZSBhcmd1bWVudHMKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgIExhbWJkYUZ1bmN0b3I6OmluaGVyaXRlZDo6IAotICAgICAgICB0ZW1wbGF0ZSBzaWc8dHlwZW5hbWUgU2lnQXJnczo6dGFpbF90eXBlPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIGV4cGxpY2l0IG5vbl9sYW1iZGFfZnVuY3Rvcihjb25zdCBMYW1iZGFGdW5jdG9yJiBhKSA6IGxmKGEpIHt9Ci0KLSAgdHlwZW5hbWUgTGFtYmRhRnVuY3Rvcjo6bnVsbGFyeV9yZXR1cm5fdHlwZSAgCi0gIG9wZXJhdG9yKCkoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIAotICAgICAgY2FsbDx0eXBlbmFtZSBMYW1iZGFGdW5jdG9yOjpudWxsYXJ5X3JldHVybl90eXBlPgotICAgICAgICAoY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3Qgbm9uX2xhbWJkYV9mdW5jdG9yLCBBJj4gPjo6dHlwZSAKLSAgb3BlcmF0b3IoKShBJiBhKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIGNhbGw8dHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IG5vbl9sYW1iZGFfZnVuY3RvciwgQSY+ID46OnR5cGUgPihhLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3Qgbm9uX2xhbWJkYV9mdW5jdG9yLCBBJiwgQiY+ID46OnR5cGUgCi0gIG9wZXJhdG9yKCkoQSYgYSwgQiYgYikgY29uc3QgewotICAgIHJldHVybiBsZi50ZW1wbGF0ZSBjYWxsPHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBub25fbGFtYmRhX2Z1bmN0b3IsIEEmLCBCJj4gPjo6dHlwZSA+KGEsIGIsIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBDPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3Qgbm9uX2xhbWJkYV9mdW5jdG9yLCBBJiwgQiYsIEMmPiA+Ojp0eXBlIAotICBvcGVyYXRvcigpKEEmIGEsIEImIGIsIEMmIGMpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgY2FsbDx0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3Qgbm9uX2xhbWJkYV9mdW5jdG9yLCBBJiwgQiYsIEMmPiA+Ojp0eXBlPihhLCBiLCBjLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZz4KLWlubGluZSBjb25zdCBBcmcmIHVubGFtYmRhKGNvbnN0IEFyZyYgYSkgeyByZXR1cm4gYTsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnPgotaW5saW5lIGNvbnN0IG5vbl9sYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3RvcjxBcmc+ID4gCi11bmxhbWJkYShjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBhKQotewotICByZXR1cm4gbm9uX2xhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yPEFyZz4gPihhKTsKLX0KLQotICAvLyBEdWUgdG8gYSBsYW5ndWFnZSByZXN0cmljdGlvbiwgbGFtYmRhIGZ1bmN0b3JzIGNhbm5vdCBiZSBtYWRlIHRvCi0gIC8vIGFjY2VwdCBub24tY29uc3QgcnZhbHVlIGFyZ3VtZW50cy4gVXN1YWxseSBpdGVyYXRvcnMgZG8gbm90IHJldHVybiAKLSAgLy8gdGVtcG9yYXJpZXMsIGJ1dCBzb21ldGltZXMgdGhleSBkby4gVGhhdCdzIHdoeSBhIHdvcmthcm91bmQgaXMgcHJvdmlkZWQuCi0gIC8vIE5vdGUsIHRoYXQgdGhpcyBwb3RlbnRpYWxseSBicmVha3MgY29uc3QgY29ycmVjdG5lc3MsIHNvIGJlIGNhcmVmdWwhCi0KLS8vIGFueSBsYW1iZGEgZnVuY3RvciBjYW4gYmUgdHVybmVkIGludG8gYSBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IKLS8vIFRoZSBvcGVyYXRvcigpIHRha2VzIGFyZ3VtZW50cyBhcyBjb25zdHMgYW5kIHRoZW4gY2FzdHMgY29uc3RuZXNzCi0vLyBhd2F5LiBTbyB0aGlzIGJyZWFrcyBjb25zdCBjb3JyZWN0bmVzcyEhISBidXQgaXMgYSBuZWNlc3Nhcnkgd29ya2Fyb3VuZAotLy8gaW4gc29tZSBjYXNlcyBkdWUgdG8gbGFuZ3VhZ2UgbGltaXRhdGlvbnMuCi0vLyBOb3RlLCB0aGF0IHRoaXMgaXMgbm90IGEgbGFtYmRhX2Z1bmN0b3IgYW55bW9yZSwgc28gaXQgY2FuIG5vdCBiZSB1c2VkCi0vLyBhcyBhIHN1YiBsYW1iZGEgZXhwcmVzc2lvbi4KLQotdGVtcGxhdGUgPGNsYXNzIExhbWJkYUZ1bmN0b3I+Ci1zdHJ1Y3QgY29uc3RfaW5jb3JyZWN0X2xhbWJkYV9mdW5jdG9yIHsKLSAgTGFtYmRhRnVuY3RvciBsZjsKLXB1YmxpYzoKLQotICBleHBsaWNpdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IoY29uc3QgTGFtYmRhRnVuY3RvciYgYSkgOiBsZihhKSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBMYW1iZGFGdW5jdG9yOjppbmhlcml0ZWQ6OnRlbXBsYXRlIAotICAgICAgICBzaWc8dHlwZW5hbWUgU2lnQXJnczo6dGFpbF90eXBlPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIC8vIFRoZSBudWxsYXJ5IGNhc2UgaXMgbm90IG5lZWRlZCAobm8gYXJndW1lbnRzLCBubyBwYXJhbWV0ZXIgdHlwZSBwcm9ibGVtcykKLQotICB0ZW1wbGF0ZTxjbGFzcyBBPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfaW5jb3JyZWN0X2xhbWJkYV9mdW5jdG9yLCBBJj4gPjo6dHlwZQotICBvcGVyYXRvcigpKGNvbnN0IEEmIGEpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgY2FsbDx0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfaW5jb3JyZWN0X2xhbWJkYV9mdW5jdG9yLCBBJj4gPjo6dHlwZSA+KGNvbnN0X2Nhc3Q8QSY+KGEpLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IsIEEmLCBCJj4gPjo6dHlwZQotICBvcGVyYXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEImIGIpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgY2FsbDx0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfaW5jb3JyZWN0X2xhbWJkYV9mdW5jdG9yLCBBJiwgQiY+ID46OnR5cGUgPihjb25zdF9jYXN0PEEmPihhKSwgY29uc3RfY2FzdDxCJj4oYiksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEM+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IsIEEmLCBCJiwgQyY+ID46OnR5cGUKLSAgb3BlcmF0b3IoKShjb25zdCBBJiBhLCBjb25zdCBCJiBiLCBjb25zdCBDJiBjKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIGNhbGw8dHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X2luY29ycmVjdF9sYW1iZGFfZnVuY3RvciwgQSYsIEImLCBDJj4gPjo6dHlwZT4oY29uc3RfY2FzdDxBJj4oYSksIGNvbnN0X2Nhc3Q8QiY+KGIpLCBjb25zdF9jYXN0PEMmPihjKSwgY251bGxfdHlwZSgpKTsKLSAgfQotfTsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBhbnkgbGFtYmRhIGZ1bmN0b3IgY2FuIGJlIHR1cm5lZCBpbnRvIGEgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yCi0vLyBUaGUgb3BlcmF0b3IoKSB0YWtlcyBhcmd1bWVudHMgYXMgY29uc3QuCi0vLyBUaGlzIGlzIHVzZWZ1bCBpZiBsYW1iZGEgZnVuY3RvcnMgYXJlIGNhbGxlZCB3aXRoIG5vbi1jb25zdCBydmFsdWVzLgotLy8gTm90ZSwgdGhhdCB0aGlzIGlzIG5vdCBhIGxhbWJkYV9mdW5jdG9yIGFueW1vcmUsIHNvIGl0IGNhbiBub3QgYmUgdXNlZAotLy8gYXMgYSBzdWIgbGFtYmRhIGV4cHJlc3Npb24uCi0KLXRlbXBsYXRlIDxjbGFzcyBMYW1iZGFGdW5jdG9yPgotc3RydWN0IGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvciB7Ci0gIExhbWJkYUZ1bmN0b3IgbGY7Ci1wdWJsaWM6Ci0KLSAgZXhwbGljaXQgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yKGNvbnN0IExhbWJkYUZ1bmN0b3ImIGEpIDogbGYoYSkge30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgTGFtYmRhRnVuY3Rvcjo6aW5oZXJpdGVkOjp0ZW1wbGF0ZSAKLSAgICAgICAgc2lnPHR5cGVuYW1lIFNpZ0FyZ3M6OnRhaWxfdHlwZT46OnR5cGUgdHlwZTsKLSAgfTsKLQotICAvLyBUaGUgbnVsbGFyeSBjYXNlIGlzIG5vdCBuZWVkZWQ6IG5vIGFyZ3VtZW50cywgbm8gY29uc3RuZXNzIHByb2JsZW1zLgotCi0gIHRlbXBsYXRlPGNsYXNzIEE+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9wYXJhbWV0ZXJfbGFtYmRhX2Z1bmN0b3IsIGNvbnN0IEEmPiA+Ojp0eXBlCi0gIG9wZXJhdG9yKCkoY29uc3QgQSYgYSkgY29uc3QgewotICAgIHJldHVybiBsZi50ZW1wbGF0ZSBjYWxsPHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9wYXJhbWV0ZXJfbGFtYmRhX2Z1bmN0b3IsIGNvbnN0IEEmPiA+Ojp0eXBlID4oYSwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yLCBjb25zdCBBJiwgY29uc3QgQiY+ID46OnR5cGUKLSAgb3BlcmF0b3IoKShjb25zdCBBJiBhLCBjb25zdCBCJiBiKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIGNhbGw8dHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvciwgY29uc3QgQSYsIGNvbnN0IEImPiA+Ojp0eXBlID4oYSwgYiwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQz4KLSAgdHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvciwgY29uc3QgQSYsIGNvbnN0IEImLCBjb25zdCBDJj4KLT46OnR5cGUKLSAgb3BlcmF0b3IoKShjb25zdCBBJiBhLCBjb25zdCBCJiBiLCBjb25zdCBDJiBjKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIGNhbGw8dHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvciwgY29uc3QgQSYsIGNvbnN0IEImLCBjb25zdCBDJj4gPjo6dHlwZT4oYSwgYiwgYywgY251bGxfdHlwZSgpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZz4KLWlubGluZSBjb25zdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3I8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+Ci1icmVha19jb25zdChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBsZikKLXsKLSAgcmV0dXJuIGNvbnN0X2luY29ycmVjdF9sYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3RvcjxBcmc+ID4obGYpOwotfQotCi0KLXRlbXBsYXRlIDxjbGFzcyBBcmc+Ci1pbmxpbmUgY29uc3QgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yPEFyZz4gPgotY29uc3RfcGFyYW1ldGVycyhjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBsZikKLXsKLSAgcmV0dXJuIGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3RvcjxBcmc+ID4obGYpOwotfQotCi0vLyBtYWtlIHZvaWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBtYWtlX3ZvaWQoIHggKSB0dXJucyBhIGxhbWJkYSBmdW5jdG9yIHggd2l0aCBzb21lIHJldHVybiB0eXBlIHkgaW50bwotLy8gYW5vdGhlciBsYW1iZGEgZnVuY3Rvciwgd2hpY2ggaGFzIGEgdm9pZCByZXR1cm4gdHlwZQotLy8gd2hlbiBjYWxsZWQsIHRoZSBvcmlnaW5hbCByZXR1cm4gdHlwZSBpcyBkaXNjYXJkZWQKLQotLy8gd2UgdXNlIHRoaXMgYWN0aW9uLiBUaGUgYWN0aW9uIGNsYXNzIHdpbGwgYmUgY2FsbGVkLCB3aGljaCBtZWFucyB0aGF0Ci0vLyB0aGUgd3JhcHBlZCBsYW1iZGEgZnVuY3RvciBpcyBldmFsdWF0ZWQsIGJ1dCB3ZSBqdXN0IGRvbid0IGRvIGFueXRoaW5nCi0vLyB3aXRoIHRoZSByZXN1bHQuCi1zdHJ1Y3Qgdm9pZGlmaWVyX2FjdGlvbiB7Ci0gIHRlbXBsYXRlPGNsYXNzIFJldCwgY2xhc3MgQT4gc3RhdGljIHZvaWQgYXBwbHkoQSYpIHt9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmdzPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfTjx2b2lkaWZpZXJfYWN0aW9uLCBBcmdzPiB7Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQXJnMT4KLWlubGluZSBjb25zdCAKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxLCB2b2lkaWZpZXJfYWN0aW9uPiwKLSAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmcxPiA+Ci0gID4gCi0+IAotbWFrZV92b2lkKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZzE+JiBhMSkgeyAKLXJldHVybiAKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEsIHZvaWRpZmllcl9hY3Rpb24+LAotICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnMT4gPgotICAgID4gCi0gICh0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmcxPiA+IChhMSkpOwotfQotCi0vLyBmb3Igbm9uLWxhbWJkYSBmdW5jdG9ycywgbWFrZV92b2lkIGRvZXMgbm90aGluZyAKLS8vICh0aGUgYXJndW1lbnQgZ2V0cyBldmFsdWF0ZWQgaW1tZWRpYXRlbHkpCi0KLXRlbXBsYXRlPGNsYXNzIEFyZzE+Ci1pbmxpbmUgY29uc3QgCi1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTxkb19ub3RoaW5nX2FjdGlvbiwgbnVsbF90eXBlPiAKLT4gCi1tYWtlX3ZvaWQoY29uc3QgQXJnMSYpIHsgCi1yZXR1cm4gCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTxkb19ub3RoaW5nX2FjdGlvbiwgbnVsbF90eXBlPigpOwotfQotCi0vLyBzdGRfZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyAgVGhlIFNUTCB1c2VzIHRoZSByZXN1bHRfdHlwZSB0eXBlZGVmIGFzIHRoZSBjb252ZW50aW9uIHRvIGxldCBiaW5kZXJzIGtub3cKLS8vICB0aGUgcmV0dXJuIHR5cGUgb2YgYSBmdW5jdGlvbiBvYmplY3QuIAotLy8gIExMIHVzZXMgdGhlIHNpZyB0ZW1wbGF0ZS4KLS8vICBUbyBsZXQgTEwga25vdyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgaGFzIHRoZSByZXN1bHRfdHlwZSB0eXBlZGVmIAotLy8gIGRlZmluZWQsIGl0IGNhbiBiZSB3cmFwcGVkIHdpdGggdGhlIHN0ZF9mdW5jdG9yIGZ1bmN0aW9uLgotCi0KLS8vIEp1c3QgaW5oZXJpdCBmb3JtIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgKHRoZSBzdGFuZGFyZCBmdW5jdG9yKSwgCi0vLyBhbmQgcHJvdmlkZSBhIHNpZyB0ZW1wbGF0ZS4gU28gd2UgaGF2ZSBhIGNsYXNzIHdoaWNoIGlzIHN0aWxsIHRoZQotLy8gc2FtZSBmdW5jdG9yICsgdGhlIHNpZyB0ZW1wbGF0ZS4KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCByZXN1bHRfdHlwZV90b19zaWcgOiBwdWJsaWMgVCB7Ci0gIHRlbXBsYXRlPGNsYXNzIEFyZ3M+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIHR5cGVuYW1lIFQ6OnJlc3VsdF90eXBlIHR5cGU7IH07Ci0gIHJlc3VsdF90eXBlX3RvX3NpZyhjb25zdCBUJiB0KSA6IFQodCkge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEY+Ci1pbmxpbmUgcmVzdWx0X3R5cGVfdG9fc2lnPEY+IHN0ZF9mdW5jdG9yKGNvbnN0IEYmIGYpIHsgcmV0dXJuIGY7IH0KLQotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL3JldHVybl90eXBlX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0dXJuX3R5cGVfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk1MGE2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0dXJuX3R5cGVfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MiArMCwwIEBACi0vLyAgcmV0dXJuX3R5cGVfdHJhaXRzLmhwcCAtLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfUkVUVVJOX1RZUEVfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfUkVUVVJOX1RZUEVfVFJBSVRTX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2hhc194eHguaHBwIgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gLy8gbmVlZGVkIGZvciB0aGUgcHRyZGlmZl90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90OwotCi0vLyBNdWNoIG9mIHRoZSB0eXBlIGRlZHVjdGlvbiBjb2RlIGZvciBzdGFuZGFyZCBhcml0aG1ldGljIHR5cGVzIAotLy8gZnJvbSBHYXJ5IFBvd2VsbAotCi0gIC8vIGRpZmZlcmVudCBhcml0aWVzOgotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQTE+IHN0cnVjdCByZXR1cm5fdHlwZV8xOyAvLyAxLWFyeSBhY3Rpb25zCi10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBMSwgY2xhc3MgQTI+IHN0cnVjdCByZXR1cm5fdHlwZV8yOyAvLyAyLWFyeQotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQXJncz4gc3RydWN0IHJldHVybl90eXBlX047IC8vID4zLSBhcnkKLQotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQTE+IHN0cnVjdCByZXR1cm5fdHlwZV8xX3Byb3Q7Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBMSwgY2xhc3MgQTI+IHN0cnVjdCByZXR1cm5fdHlwZV8yX3Byb3Q7IC8vIDItYXJ5Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBMT4gc3RydWN0IHJldHVybl90eXBlX05fcHJvdDsgLy8gPjMtYXJ5Ci0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzPiBjbGFzcyByZXR1cm5fdHlwZV9kZWR1Y3Rpb25fZmFpbHVyZSB7fTsKLQotICAvLyBJbiBzb21lIGNhc2VzIHJldHVybiB0eXBlIGRlZHVjdGlvbiBzaG91bGQgZmFpbCAoYW4gaW52YWxpZCBsYW1iZGEgCi0gIC8vIGV4cHJlc3Npb24pLiBTb21ldGltZXMgdGhlIGxhbWJkYSBleHByZXNzaW9uIGNhbiBiZSBvaywgdGhlIHJldHVybiB0eXBlCi0gIC8vIGp1c3QgaXMgbm90IGRlZHVjaWJsZSAodXNlciBkZWZpbmVkIG9wZXJhdG9ycykuIFRoZW4gcmV0dXJuIHR5cGUgZGVkdWN0aW9uCi0gIC8vIHNob3VsZCBuZXZlciBiZSBlbnRlcmVkIGF0IGFsbCwgYW5kIHRoZSB1c2Ugb2YgcmV0PD4gZG9lcyB0aGlzLgotICAvLyBIb3dldmVyLCBmb3IgbnVsbGFyeSBsYW1iZGEgZnVuY3RvcnMsIHJldHVybiB0eXBlIGRlZHVjdGlvbiBpcyBhbHdheXMKLSAgLy8gZW50ZXJlZCwgYW5kIHRoZXJlIHNlZW1zIHRvIGJlIG5vIHdheSBhcm91bmQgdGhpcy4KLQotICAvLyAodGhlIHJldHVybiB0eXBlIGlzIHBhcnQgb2YgdGhlIHByb3RvdHlwZSBvZiB0aGUgbm9uLXRlbXBsYXRlCi0gIC8vIG9wZXJhdG9yKCkoKS4gVGhlIHByb3RvdHlwZSBpcyBpbnN0YW50aWF0ZWQsIGV2ZW4gdGhvdWdoIHRoZSBib2R5IAotICAvLyBpcyBub3QuKSAKLSAKLSAgLy8gU28sIGluIHRoZSBjYXNlIHRoZSByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gc2hvdWxkIGZhaWwsIGl0IHNob3VsZCBub3QKLSAgLy8gZmFpbCBkaXJlY3RseSwgYnV0IHJhdGhlciByZXN1bHQgaW4gYSB2YWxpZCBidXQgd3JvbmcgcmV0dXJuIHR5cGUsCi0gIC8vIGNhdXNpbmcgYSBjb21waWxlIHRpbWUgZXJyb3Igb25seSBpZiB0aGUgZnVuY3Rpb24gaXMgcmVhbGx5IGNhbGxlZC4KLQotCi0KLX0gLy8gZW5kIGRldGFpbAotCi0KLQotLy8gcmV0dXJuX3R5cGVfWF9wcm90IGNsYXNzZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFRoZXNlIGNsYXNzZXMgYXJlIHRoZSBmaXJzdCBsYXllciB0aGF0IGdldHMgaW5zdGFudGlhdGVkIGZyb20gdGhlIAotLy8gbGFtYmRhX2Z1bmN0b3JfYmFzZSBzaWcgdGVtcGxhdGVzLiBJdCB3aWxsIGNoZWNrIHdoZXRoZXIgCi0vLyB0aGUgYWN0aW9uIGlzIHByb3RlY3RhYmxlIGFuZCBvbmUgb2YgYXJndW1lbnRzIGlzICJwcm90ZWN0ZWQiIG9yIGl0cwotLy8gZXZhbHVhdGlvbiB3aWxsIG90aGVyd2lzZSByZXN1bHQgaW4gYW5vdGhlciBsYW1iZGEgZnVuY3Rvci4KLS8vIElmIHRoaXMgaXMgYSBjYXNlLCB0aGUgcmVzdWx0IHR5cGUgd2lsbCBiZSBhbm90aGVyIGxhbWJkYSBmdW5jdG9yLgotCi0vLyBUaGUgYXJndW1lbnRzIGFyZSBhbHdheXMgbm9uLXJlZmVyZW5jZSB0eXBlcywgZXhjZXB0IGZvciBjb21tYSBhY3Rpb24KLS8vIHdoZXJlIHRoZSByaWdodCBhcmd1bWVudCBjYW4gYmUgYSByZWZlcmVuY2UgdG9vLiBUaGlzIGlzIGJlY2F1c2UgaXQgCi0vLyBtYXR0ZXJzIChpbiB0aGUgYnVpbHRpbiBjYXNlKSB3aGV0aGVyIHRoZSBhcmd1bWVudCBpcyBhbiBsdmFsdWUgb3IgCi0vLyBydmFsdWU6IGludCBpOyBpLCAxIC0+IHJ2YWx1ZTsgMSwgaSAtPiBsdmFsdWUKLQotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQT4gc3RydWN0IHJldHVybl90eXBlXzFfcHJvdCB7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRjwKLSAgLy8gICAgICBpc19wcm90ZWN0YWJsZTxBY3Q+Ojp2YWx1ZSAmJiBpc19sYW1iZGFfZnVuY3RvcjxBPjo6dmFsdWUsCi0gICAgICBpY2VfYW5kPGlzX3Byb3RlY3RhYmxlPEFjdD46OnZhbHVlLCBpc19sYW1iZGFfZnVuY3RvcjxBPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgIGxhbWJkYV9mdW5jdG9yPAotICAgICAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPCAKLSAgICAgICAgICBBY3QsIAotICAgICAgICAgIHR1cGxlPHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGU+Ci0gICAgICAgID4KLSAgICAgID4sCi0gICAgICB0eXBlbmFtZSByZXR1cm5fdHlwZV8xPEFjdCwgQT46OnR5cGUKLSAgICA+OjpSRVQgdHlwZTsgIAotfTsKLQotICAvLyB0YWtlIGNhcmUgb2YgdGhlIHVuYXZvaWRhYmxlIGluc3RhbnRpYXRpb24gZm9yIG51bGxhcnkgY2FzZQotdGVtcGxhdGU8Y2xhc3MgQWN0PiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMV9wcm90PEFjdCwgbnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotIAotLy8gVW5hcnkgYWN0aW9ucyAocmVzdWx0IGZyb20gdW5hcnkgb3BlcmF0b3JzKQotLy8gZG8gbm90IGhhdmUgYSBkZWZhdWx0IHJldHVybiB0eXBlLgotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMSB7IAotICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgZGV0YWlsOjpyZXR1cm5fdHlwZV9kZWR1Y3Rpb25fZmFpbHVyZTxyZXR1cm5fdHlwZV8xPiB0eXBlOwotfTsKLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgY2xhc3MgcHJvdGVjdF9jb252ZXJzaW9uIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgbm9uX3JlZl9UOwotICAgIHB1YmxpYzoKLQotICAvLyBhZGQgY29uc3QgdG8gcnZhbHVlcywgc28gdGhhdCBhbGwgcnZhbHVlcyBhcmUgc3RvcmVkIGFzIGNvbnN0IGluIAotICAvLyB0aGUgYXJncyB0dXBsZQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRl90eXBlPAotLy8gICAgICBuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSAmJiAhbmRuYm9vc3Q6OmlzX2NvbnN0PG5vbl9yZWZfVD46OnZhbHVlLAotICAgICAgaWNlX2FuZDxuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgaWNlX25vdDxuZG5ib29zdDo6aXNfY29uc3Q8bm9uX3JlZl9UPjo6dmFsdWU+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgZGV0YWlsOjppZGVudGl0eV9tYXBwaW5nPFQ+LAotICAgICAgY29uc3RfY29weV9hcmd1bWVudDxub25fcmVmX1Q+IC8vIGhhbmRsZXMgZnVudGlvbiBhbmQgYXJyYXkgCi0gICAgPjo6dHlwZSB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAvLyB0eXBlcyBjb3JyZWN0bHkKLSAgfTsKLQotfSAvLyBlbmQgZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBBY3QsIGNsYXNzIEEsIGNsYXNzIEI+IHN0cnVjdCByZXR1cm5fdHlwZV8yX3Byb3QgewotCi0vLyBleHBlcmltZW50YWwgZmVhdHVyZQotICAvLyBXZSBtYXkgaGF2ZSBhIGxhbWJkYSBmdW5jdG9yIGFzIGEgcmVzdWx0IHR5cGUgb2YgYSBzdWJleHByZXNzaW9uIAotICAvLyAoaWYgcHJvdGVjdCkgaGFzICBiZWVuIHVzZWQuCi0gIC8vIFRodXMsIGlmIG9uZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGVzIGlzIGEgbGFtYmRhIGZ1bmN0b3IsIHRoZSByZXN1bHQKLSAgLy8gaXMgYSBsYW1iZGEgZnVuY3RvciBhcyB3ZWxsLiAKLSAgLy8gV2UgbmVlZCB0byBtYWtlIGEgY29uc2VydmF0aXZlIGNob2lzZSBoZXJlLgotICAvLyBUaGUgcmVzdWx0aW5nIGxhbWJkYSBmdW5jdG9yIHN0b3JlcyBhbGwgY29uc3QgcmVmZXJlbmNlIGFyZ3VtZW50cyBhcwotICAvLyBjb25zdCBjb3BpZXMuIFJlZmVyZW5jZXMgdG8gbm9uLWNvbnN0IGFyZSBzdG9yZWQgYXMgc3VjaC4KLSAgLy8gU28gaWYgdGhlIHNvdXJjZSBvZiB0aGUgYXJndW1lbnQgaXMgYSBjb25zdCBvcGVuIGFyZ3VtZW50LCBhIGJvdW5kCi0gIC8vIGFyZ3VtZW50IHN0b3JlZCBhcyBhIGNvbnN0IHJlZmVyZW5jZSwgb3IgYSBmdW5jdGlvbiByZXR1cm5pbmcgYSAKLSAgLy8gY29uc3QgcmVmZXJlbmNlLCB0aGF0IGluZm9ybWF0aW9uIGlzIGxvc3QuIFRoZXJlIGlzIG5vIHdheSBvZiAKLSAgLy8gdGVsbGluZyBhcGFydCAncmVhbCBjb25zdCByZWZlcmVuY2VzJyBmcm9tIGp1c3QgJ0xMIGludGVybmFsCi0gIC8vIGNvbnN0IHJlZmVyZW5jZXMnIChvciBpdCB3b3VsZCBiZSByZWFsbHkgaGFyZCkKLQotICAvLyBUaGUgcmV0dXJuIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiBsYW1iZGFfZnVuY3Rvciwgd2hpY2ggaGFzIGEgY29udmVydGluZyAKLSAgLy8gY29weSBjb25zdHJ1Y3Rvci4gSXQgY2FuIGNvcHkgYW55IGxhbWJkYSBmdW5jdG9yLCB0aGF0IGhhcyB0aGUgc2FtZSAKLSAgLy8gYWN0aW9uIHR5cGUgYW5kIGNvZGUsIGFuZCBhIGNvcHkgY29tcGF0aWJsZSBhcmd1bWVudCB0dXBsZS4KLQotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8QT46OnR5cGUgbm9uX3JlZl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEI+Ojp0eXBlIG5vbl9yZWZfQjsKLQotdHlwZWRlZiB0eXBlbmFtZSAKLSAgZGV0YWlsOjpJRjwKLS8vICAgIGlzX3Byb3RlY3RhYmxlPEFjdD46OnZhbHVlICYmCi0vLyAgICAgIChpc19sYW1iZGFfZnVuY3RvcjxBPjo6dmFsdWUgfHwgaXNfbGFtYmRhX2Z1bmN0b3I8Qj46OnZhbHVlKSwKLSAgICBpY2VfYW5kPGlzX3Byb3RlY3RhYmxlPEFjdD46OnZhbHVlLAotICAgICAgICAgICAgaWNlX29yPGlzX2xhbWJkYV9mdW5jdG9yPEE+Ojp2YWx1ZSwgCi0gICAgICAgICAgICAgICAgICAgaXNfbGFtYmRhX2Z1bmN0b3I8Qj46OnZhbHVlPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICBsYW1iZGFfZnVuY3RvcjwKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8IAotICAgICAgICBBY3QsIAotICAgICAgICB0dXBsZTx0eXBlbmFtZSBkZXRhaWw6OnByb3RlY3RfY29udmVyc2lvbjxBPjo6dHlwZSwgCi0gICAgICAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6cHJvdGVjdF9jb252ZXJzaW9uPEI+Ojp0eXBlPgotICAgICAgPgotICAgID4sCi0gICAgdHlwZW5hbWUgcmV0dXJuX3R5cGVfMjxBY3QsIG5vbl9yZWZfQSwgbm9uX3JlZl9CPjo6dHlwZQotICA+OjpSRVQgdHlwZTsKLX07Ci0KLSAgLy8gdGFrZSBjYXJlIG9mIHRoZSB1bmF2b2lkYWJsZSBpbnN0YW50aWF0aW9uIGZvciBudWxsYXJ5IGNhc2UKLXRlbXBsYXRlPGNsYXNzIEFjdD4gc3RydWN0IHJldHVybl90eXBlXzJfcHJvdDxBY3QsIG51bGxfdHlwZSwgbnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotICAvLyB0YWtlIGNhcmUgb2YgdGhlIHVuYXZvaWRhYmxlIGluc3RhbnRpYXRpb24gZm9yIG51bGxhcnkgY2FzZQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBPdGhlcj4gc3RydWN0IHJldHVybl90eXBlXzJfcHJvdDxBY3QsIE90aGVyLCBudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0gIC8vIHRha2UgY2FyZSBvZiB0aGUgdW5hdm9pZGFibGUgaW5zdGFudGlhdGlvbiBmb3IgbnVsbGFyeSBjYXNlCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIE90aGVyPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMl9wcm90PEFjdCwgbnVsbF90eXBlLCBPdGhlcj4gewotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOwotfTsKLQotICAvLyBjb21tYSBpcyBhIHNwZWNpYWwgY2FzZSwgYXMgdGhlIHVzZXIgZGVmaW5lZCBvcGVyYXRvciBjYW4gcmV0dXJuCi0gIC8vIGFuIGx2YWx1ZSAocmVmZXJlbmNlKSB0b28sIGhlbmNlIGl0IG11c3QgYmUgaGFuZGxlZCBhdCB0aGlzIGxldmVsLgotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMl9jb21tYQotewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlIG5vbl9yZWZfQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxCPjo6dHlwZSBub25fcmVmX0I7Ci0KLXR5cGVkZWYgdHlwZW5hbWUgCi0gIGRldGFpbDo6SUY8Ci0vLyAgaXNfcHJvdGVjdGFibGU8b3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4gPjo6dmFsdWUgJiYgLy8gaXQgaXMgcHJvdGVjdGFibGUKLS8vICAoaXNfbGFtYmRhX2Z1bmN0b3I8QT46OnZhbHVlIHx8IGlzX2xhbWJkYV9mdW5jdG9yPEI+Ojp2YWx1ZSksCi0gICAgaWNlX2FuZDxpc19wcm90ZWN0YWJsZTxvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiA+Ojp2YWx1ZSwgLy8gaXQgaXMgcHJvdGVjdGFibGUKLSAgICAgICAgICAgIGljZV9vcjxpc19sYW1iZGFfZnVuY3RvcjxBPjo6dmFsdWUsIAotICAgICAgICAgICAgICAgICAgIGlzX2xhbWJkYV9mdW5jdG9yPEI+Ojp2YWx1ZT46OnZhbHVlPjo6dmFsdWUsCi0gICAgbGFtYmRhX2Z1bmN0b3I8Ci0gICAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPCAKLSAgICAgICAgb3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4sIAotICAgICAgICB0dXBsZTx0eXBlbmFtZSBkZXRhaWw6OnByb3RlY3RfY29udmVyc2lvbjxBPjo6dHlwZSwgCi0gICAgICAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6cHJvdGVjdF9jb252ZXJzaW9uPEI+Ojp0eXBlPgotICAgICAgPgotICAgID4sCi0gICAgdHlwZW5hbWUgCi0gICAgICByZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxjb21tYV9hY3Rpb24+LCBub25fcmVmX0EsIG5vbl9yZWZfQj46OnR5cGUKLSAgPjo6UkVUIHR5cGUxOwotCi0gICAvLyBpZiBubyB1c2VyIGRlZmluZWQgcmV0dXJuX3R5cGVfMiAob3IgcGxhaW5fcmV0dXJuX3R5cGVfMikgc3BlY2lhbGl6YXRpb24KLSAgLy8gbWF0Y2hlcywgdGhlbiByZXR1cm4gdGhlIHJpZ2h0aGFuZCBhcmd1bWVudAotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6SUY8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIEIsCi0gICAgICB0eXBlMQotICAgID46OlJFVCB0eXBlOwotCi19OwotCi0KLSAgLy8gY3VycmVudGx5IHRoZXJlIGFyZSBubyBwcm90ZWN0YWJsZSBhY3Rpb25zIHdpdGggPiAyIGFyZ3MKLQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBcmdzPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfTl9wcm90IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSByZXR1cm5fdHlwZV9OPEFjdCwgQXJncz46OnR5cGUgdHlwZTsKLX07Ci0KLSAgLy8gdGFrZSBjYXJlIG9mIHRoZSB1bmF2b2lkYWJsZSBpbnN0YW50aWF0aW9uIGZvciBudWxsYXJ5IGNhc2UKLXRlbXBsYXRlPGNsYXNzIEFjdD4gc3RydWN0IHJldHVybl90eXBlX05fcHJvdDxBY3QsIG51bGxfdHlwZT4gewotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOwotfTsKLQotLy8gaGFuZGxlIGRpZmZlcmVudCBraW5kIG9mIGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgLy8gdXNlIHRoZSByZXR1cm4gdHlwZSBnaXZlbiBpbiB0aGUgYmluZCBpbnZvY2F0aW9uIGFzIGJpbmQ8UmV0PiguLi4pCi10ZW1wbGF0ZTxpbnQgSSwgY2xhc3MgQXJncywgY2xhc3MgUmV0PiAKLXN0cnVjdCByZXR1cm5fdHlwZV9OPGZ1bmN0aW9uX2FjdGlvbjxJLCBSZXQ+LCBBcmdzPiB7IAotICB0eXBlZGVmIFJldCB0eXBlOwotfTsKLQotLy8gOjpyZXN1bHRfdHlwZSBzdXBwb3J0Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKHJlc3VsdF90eXBlKQotCi10ZW1wbGF0ZTxjbGFzcyBGPiBzdHJ1Y3QgZ2V0X3Jlc3VsdF90eXBlCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRjo6cmVzdWx0X3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHN0cnVjdCBnZXRfc2lnCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZnVuY3Rpb25fYWRhcHRvcjxGPjo6dGVtcGxhdGUgc2lnPEE+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICAvLyBSZXQgaXMgZGV0YWlsOjp1bnNwZWNpZmllZCwgc28gdHJ5IHRvIGRlZHVjZSByZXR1cm4gdHlwZQotdGVtcGxhdGU8aW50IEksIGNsYXNzIEFyZ3M+IAotc3RydWN0IHJldHVybl90eXBlX048ZnVuY3Rpb25fYWN0aW9uPEksIGRldGFpbDo6dW5zcGVjaWZpZWQ+LCBBcmdzID4geyAKLQotICAvLyBpbiB0aGUgY2FzZSBvZiBmdW5jdGlvbiBhY3Rpb24sIHRoZSBmaXJzdCBlbGVtZW50IGluIEFyZ3MgaXMgCi0gIC8vIHNvbWUgdHlwZSBvZiBmdW5jdGlvbgotICB0eXBlZGVmIHR5cGVuYW1lIEFyZ3M6OmhlYWRfdHlwZSBGdW5jOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8RnVuYz46OnR5cGUgcGxhaW5fRnVuYzsKLQotcHVibGljOiAKLSAgLy8gcGFzcyB0aGUgZnVuY3Rpb24gdG8gZnVuY3Rpb25fYWRhcHRvciwgYW5kIGdldCB0aGUgcmV0dXJuIHR5cGUgZnJvbSAKLSAgLy8gdGhhdAotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0gICAgZGV0YWlsOjpoYXNfcmVzdWx0X3R5cGU8cGxhaW5fRnVuYz46OnZhbHVlLAotICAgIGRldGFpbDo6Z2V0X3Jlc3VsdF90eXBlPHBsYWluX0Z1bmM+LAotICAgIGRldGFpbDo6Z2V0X3NpZzxwbGFpbl9GdW5jLCBBcmdzPgotICA+OjpSRVQ6OnR5cGUgdHlwZTsKLX07Ci0KLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9zZWxlY3RfZnVuY3Rpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9zZWxlY3RfZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE1Y2UwNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvc2VsZWN0X2Z1bmN0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vLyAtLSBzZWxlY3RfZnVuY3Rpb25zLmhwcCAtLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfU0VMRUNUX0ZVTkNUSU9OU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1NFTEVDVF9GVU5DVElPTlNfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotCi0vLyBzZWxlY3QgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlPGNsYXNzIEFueSwgQ0FMTF9URU1QTEFURV9BUkdTPgotaW5saW5lIEFueSYgc2VsZWN0KEFueSYgYW55LCBDQUxMX0ZPUk1BTF9BUkdTKSB7IENBTExfVVNFX0FSR1M7IHJldHVybiBhbnk7IH0KLQotCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIENBTExfVEVNUExBVEVfQVJHUz4KLWlubGluZSB0eXBlbmFtZSBBcmc6OnRlbXBsYXRlIHNpZzx0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZQotc2VsZWN0ICggY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgb3AsIENBTExfRk9STUFMX0FSR1MgKSB7IAotICByZXR1cm4gb3AudGVtcGxhdGUgY2FsbDwKLSAgICB0eXBlbmFtZSBBcmc6OnRlbXBsYXRlIHNpZzx0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZQotICA+KENBTExfQUNUVUFMX0FSR1MpOyAKLX0KLXRlbXBsYXRlPGNsYXNzIEFyZywgQ0FMTF9URU1QTEFURV9BUkdTPgotaW5saW5lIHR5cGVuYW1lIEFyZzo6dGVtcGxhdGUgc2lnPHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlCi1zZWxlY3QgKCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBvcCwgQ0FMTF9GT1JNQUxfQVJHUykgeyAKLSAgcmV0dXJuIG9wLnRlbXBsYXRlIGNhbGw8Ci0gICAgdHlwZW5hbWUgQXJnOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUKLSAgPihDQUxMX0FDVFVBTF9BUkdTKTsgCi19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gc2VsZWN0IGZ1bmN0aW9ucyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgZXhwbGljaXRseSBnaXZlbgotLy8gTm90ZTogb24gbWFueSBmdW5jdGlvbnMsIHRoaXMgcmV0dXJuIHR5cGUgaXMganVzdCBkaXNjYXJkZWQuCi0vLyBUaGUgc2VsZWN0IGZ1bmN0aW9ucyBhcmUgaW5zaWRlIGEgY2xhc3MgdGVtcGxhdGUsIGFuZCB0aGUgcmV0dXJuIHR5cGUKLS8vIGlzIGEgY2xhc3MgdGVtcGxhdGUgYXJndW1lbnQuCi0vLyBUaGUgZmlyc3QgaW1wbGVtZW50YXRpb24gdXNlZCBmdW5jdGlvbiB0ZW1wbGF0ZXMgd2l0aCBhbiBleHBsaWNpdGx5IAotLy8gc3BlY2lmaWVkIHRlbXBsYXRlIHBhcmFtZXRlci4KLS8vIEhvd2V2ZXIsIHRoaXMgcmVzdWx0ZWQgaW4gYW1iaWd1b3VzIGNhbGxzIChhdCBsZWFzdCB3aXRoIGdjYyAyLjk1LjIgCi0vLyBhbmQgZWRnIDIuNDQpLiBOb3Qgc3VyZSB3aGV0aGVyIHRoZSBjb21waWxlcnMgd2VyZSByaWdodCBvciB3cm9uZy4gCi0gIAotdGVtcGxhdGU8Y2xhc3MgUkVUPiBzdHJ1Y3Qgcl9zZWxlY3QgewotCi0vLyBBbnkgPT0gUkVUCi0gIHRlbXBsYXRlPGNsYXNzIEFueSwgQ0FMTF9URU1QTEFURV9BUkdTPgotICBzdGF0aWMgCi0gIGlubGluZSBSRVQgZ28gKEFueSYgYW55LCBDQUxMX0ZPUk1BTF9BUkdTKSB7IENBTExfVVNFX0FSR1M7IHJldHVybiBhbnk7IH0KLQotCi0gIHRlbXBsYXRlPGNsYXNzIEFyZywgQ0FMTF9URU1QTEFURV9BUkdTPiAKLSAgc3RhdGljIAotICBpbmxpbmUgUkVUIGdvIChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBvcCwgQ0FMTF9GT1JNQUxfQVJHUyApIHsKLSAgICByZXR1cm4gb3AudGVtcGxhdGUgY2FsbDxSRVQ+KENBTExfQUNUVUFMX0FSR1MpOyAKLSAgfQotICB0ZW1wbGF0ZTxjbGFzcyBBcmcsIENBTExfVEVNUExBVEVfQVJHUz4gCi0gIHN0YXRpYyAKLSAgaW5saW5lIFJFVCBnbyAobGFtYmRhX2Z1bmN0b3I8QXJnPiYgb3AsIENBTExfRk9STUFMX0FSR1MgKSB7IAotICAgIHJldHVybiBvcC50ZW1wbGF0ZSBjYWxsPFJFVD4oQ0FMTF9BQ1RVQUxfQVJHUyk7IAotICB9Ci19OwotICAgCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQzNDY1Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gLS0gbGFtYmRhLmhwcCAtLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vbGFtYmRhLmNzLnV0dS5maSAKLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfTEFNQkRBX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfTEFNQkRBX0hQUAotCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvY29yZS5ocHAiCi0KLSNpZmRlZiBORE5CT09TVF9OT19GREVDTF9URU1QTEFURVNfQVNfVEVNUExBVEVfVEVNUExBVEVfUEFSQU1TCi0jaW5jbHVkZSA8aXN0cmVhbT4KLSNpbmNsdWRlIDxvc3RyZWFtPgotI2VuZGlmCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX2FjdGlvbnMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfbGFtYmRhX2Z1bmNfYmFzZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcl9yZXR1cm5fdHlwZV90cmFpdHMuaHBwIgotCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9ycy5ocHAiCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0ZBSUxTX0lOX1RFTVBMQVRFX0tFWVdPUkRfQUZURVJfU0NPUEVfT1BFUgotLy8gc29ycnksIG1lbWJlciBwdHIgZG9lcyBub3Qgd29yayB3aXRoIGdjYzIuOTUKLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL21lbWJlcl9wdHIuaHBwIgotI2VuZGlmCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xleGljYWxfY2FzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xleGljYWxfY2FzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyOGExZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcyNSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9MRVhJQ0FMX0NBU1RfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vIEJvb3N0IGxleGljYWxfY2FzdC5ocHAgaGVhZGVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb252ZXJzaW9uIGZvciBkb2N1bWVudGF0aW9uLgotLy8gU2VlIGVuZCBvZiB0aGlzIGhlYWRlciBmb3IgcmlnaHRzIGFuZCBwZXJtaXNzaW9ucy4KLS8vCi0vLyB3aGF0OiAgbGV4aWNhbF9jYXN0IGN1c3RvbSBrZXl3b3JkIGNhc3QKLS8vIHdobzogICBjb250cmlidXRlZCBieSBLZXZsaW4gSGVubmV5LAotLy8gICAgICAgIGVuaGFuY2VkIHdpdGggY29udHJpYnV0aW9ucyBmcm9tIFRlcmplIFNsZXR0ZWJvLAotLy8gICAgICAgIHdpdGggYWRkaXRpb25hbCBmaXhlcyBhbmQgc3VnZ2VzdGlvbnMgZnJvbSBHZW5uYXJvIFByb3RhLAotLy8gICAgICAgIEJlbWFuIERhd2VzLCBEYXZlIEFicmFoYW1zLCBEYXJ5bGUgV2Fsa2VyLCBQZXRlciBEaW1vdiwKLS8vICAgICAgICBBbGV4YW5kZXIgTmFzb25vdiwgQW50b255IFBvbHVraGluLCBKdXN0aW4gVmlpcmV0LCBNaWNoYWVsIEhvZm1hbm4sCi0vLyAgICAgICAgQ2hlbmcgWWFuZywgTWF0dGhldyBCcmFkYnVyeSwgRGF2aWQgVy4gQmlyZHNhbGwsIFBhdmVsIEtvcnpoIGFuZCBvdGhlciBCb29zdGVycwotLy8gd2hlbjogIE5vdmVtYmVyIDIwMDAsIE1hcmNoIDIwMDMsIEp1bmUgMjAwNSwgSnVuZSAyMDA2LCBNYXJjaCAyMDExIC0gMjAxMwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTSkgfHwgZGVmaW5lZChORE5CT09TVF9OT19TVERfV1NUUklORykKLSNkZWZpbmUgTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVAotI2VuZGlmCi0KLSNpbmNsdWRlIDxjbGltaXRzPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPHR5cGVpbmZvPgotI2luY2x1ZGUgPGV4Y2VwdGlvbj4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9sY2FzdF9wcmVjaXNpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgICBpbmNsdWRlIDxsb2NhbGU+Ci0jZWxzZQotIyAgIGlmbmRlZiBORE5CT09TVF9MRVhJQ0FMX0NBU1RfQVNTVU1FX0NfTE9DQUxFCi0gICAgICAgIC8vIEdldHRpbmcgZXJyb3IgYXQgdGhpcyBwb2ludCBtZWFucywgdGhhdCB5b3VyIFNUTCBsaWJyYXJ5IGlzIG9sZC9sYW1lL21pc2NvbmZpZ3VyZWQuCi0gICAgICAgIC8vIElmIG5vdGhpbmcgY2FuIGJlIGRvbmUgd2l0aCBTVEwgbGlicmFyeSwgZGVmaW5lIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9BU1NVTUVfQ19MT0NBTEUsCi0gICAgICAgIC8vIGJ1dCBiZXdhcmU6IGxleGljYWxfY2FzdCB3aWxsIHVuZGVyc3RhbmQgb25seSAnQycgbG9jYWxlIGRlbGltZXRlcnMgYW5kIHRob3VzYW5kcwotICAgICAgICAvLyBzZXBhcmF0b3JzLgotIyAgICAgICBlcnJvciAiVW5hYmxlIHRvIHVzZSA8bG9jYWxlPiBoZWFkZXIuIERlZmluZSBORE5CT09TVF9MRVhJQ0FMX0NBU1RfQVNTVU1FX0NfTE9DQUxFIHRvIGZvcmNlICIKLSMgICAgICAgZXJyb3IgIm5kbmJvb3N0OjpsZXhpY2FsX2Nhc3QgdG8gdXNlIG9ubHkgJ0MnIGxvY2FsZSBkdXJpbmcgY29udmVyc2lvbnMuIgotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotI2luY2x1ZGUgPHN0cnN0cmVhbT4KLSNlbHNlCi0jaW5jbHVkZSA8c3N0cmVhbT4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVFlQRUlECi0jZGVmaW5lIE5ETkJPT1NUX0xDQVNUX1RIUk9XX0JBRF9DQVNUKFMsIFQpIHRocm93X2V4Y2VwdGlvbihiYWRfbGV4aWNhbF9jYXN0KCkpCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9MQ0FTVF9USFJPV19CQURfQ0FTVChTb3VyY2UsIFRhcmdldCkgXAotICAgIHRocm93X2V4Y2VwdGlvbihiYWRfbGV4aWNhbF9jYXN0KHR5cGVpZChTb3VyY2UpLCB0eXBlaWQoVGFyZ2V0KSkpCi0jZW5kaWYKLQotI2lmIChkZWZpbmVkKE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgpICYmICFkZWZpbmVkKF9fR05VQ19fKSkgfHwgR0NDX1ZFUlNJT04gPiA0MDcwMAotI2RlZmluZSBORE5CT09TVF9MQ0FTVF9IQVNfSU5UMTI4Ci0jZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICAvLyBleGNlcHRpb24gdXNlZCB0byBpbmRpY2F0ZSBydW50aW1lIGxleGljYWxfY2FzdCBmYWlsdXJlCi0gICAgY2xhc3MgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgYmFkX2xleGljYWxfY2FzdCA6Ci0gICAgLy8gd29ya2Fyb3VuZCBNU1ZDIGJ1ZyB3aXRoIHN0ZDo6YmFkX2Nhc3Qgd2hlbiBfSEFTX0VYQ0VQVElPTlMgPT0gMCAKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIGRlZmluZWQoX0hBU19FWENFUFRJT05TKSAmJiAhX0hBU19FWENFUFRJT05TIAotICAgICAgICBwdWJsaWMgc3RkOjpleGNlcHRpb24gCi0jZWxzZSAKLSAgICAgICAgcHVibGljIHN0ZDo6YmFkX2Nhc3QgCi0jZW5kaWYgCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCA8IDB4NTYwICkKLSAgICAgICAgLy8gdW5kZXIgYmNjMzIgNS41LjEgYmFkX2Nhc3QgZG9lc24ndCBkZXJpdmUgZnJvbSBleGNlcHRpb24KLSAgICAgICAgLCBwdWJsaWMgc3RkOjpleGNlcHRpb24KLSNlbmRpZgotCi0gICAgewotICAgIHB1YmxpYzoKLSAgICAgICAgYmFkX2xleGljYWxfY2FzdCgpIE5ETkJPT1NUX05PRVhDRVBUIDoKLSNpZm5kZWYgTkROQk9PU1RfTk9fVFlQRUlECi0gICAgICAgICAgc291cmNlKCZ0eXBlaWQodm9pZCkpLCB0YXJnZXQoJnR5cGVpZCh2b2lkKSkKLSNlbHNlCi0gICAgICAgICAgc291cmNlKDApLCB0YXJnZXQoMCkgLy8gdGhpcyBicmVha3MgZ2V0dGVycwotI2VuZGlmCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJhZF9sZXhpY2FsX2Nhc3QoCi0gICAgICAgICAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyAmc291cmNlX3R5cGVfYXJnLAotICAgICAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gJnRhcmdldF90eXBlX2FyZykgTkROQk9PU1RfTk9FWENFUFQgOgotICAgICAgICAgICAgc291cmNlKCZzb3VyY2VfdHlwZV9hcmcpLCB0YXJnZXQoJnRhcmdldF90eXBlX2FyZykKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gJnNvdXJjZV90eXBlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICpzb3VyY2U7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gJnRhcmdldF90eXBlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICp0YXJnZXQ7Ci0gICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotICAgICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKndoYXQoKSBjb25zdCBub2V4Y2VwdAotI2Vsc2UKLSAgICAgICAgdmlydHVhbCBjb25zdCBjaGFyICp3aGF0KCkgY29uc3QgdGhyb3coKQotI2VuZGlmCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAiYmFkIGxleGljYWwgY2FzdDogIgotICAgICAgICAgICAgICAgICAgICJzb3VyY2UgdHlwZSB2YWx1ZSBjb3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgdGFyZ2V0IjsKLSAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0gICAgICAgIHZpcnR1YWwgfmJhZF9sZXhpY2FsX2Nhc3QoKSBORE5CT09TVF9OT0VYQ0VQVAotI2Vsc2UKLSAgICAgICAgdmlydHVhbCB+YmFkX2xleGljYWxfY2FzdCgpIHRocm93KCkKLSNlbmRpZgotICAgICAgICB7fQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICpzb3VyY2U7Ci0gICAgICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICp0YXJnZXQ7Ci0gICAgfTsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gd2lkZXN0X2NoYXIKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXRDaGFyLCB0eXBlbmFtZSBTb3VyY2VDaGFyPgotICAgICAgICBzdHJ1Y3Qgd2lkZXN0X2NoYXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgKHNpemVvZihUYXJnZXRDaGFyKSA+IHNpemVvZihTb3VyY2VDaGFyKSkKLSAgICAgICAgICAgICAgICAsIFRhcmdldENoYXIKLSAgICAgICAgICAgICAgICAsIFNvdXJjZUNoYXIgPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotICAgIH0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQoX19QR0lDX18pCi0KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxpc3RyZWFtPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotI2luY2x1ZGUgPGFycmF5PgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZnBjbGFzc2lmeS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfY29yZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29udGFpbmVyL2NvbnRhaW5lcl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIuaHBwPgotI2lmbmRlZiBORE5CT09TVF9OT19DV0NIQVIKLSMgICBpbmNsdWRlIDxjd2NoYXI+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gaXNfY2hhcl9vcl93Y2hhcjwuLi4+Ci0gICAgewotICAgICAgICAvLyByZXR1cm5zIHRydWUsIGlmIFQgaXMgb25lIG9mIHRoZSBjaGFyYWN0ZXIgdHlwZXMKLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IGlzX2NoYXJfb3Jfd2NoYXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8IFQsIGNoYXIgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8IFQsIHdjaGFyX3QgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTwgVCwgY2hhcjE2X3QgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTwgVCwgY2hhcjMyX3QgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTwgVCwgdW5zaWduZWQgY2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8IFQsIHNpZ25lZCBjaGFyID46OnZhbHVlCi0gICAgICAgICAgICA+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAocmVzdWx0X3R5cGU6OnZhbHVlKSApOwotICAgICAgICB9OwotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbm9ybWFsaXplX3NpbmdsZV9ieXRlX2NoYXI8Q2hhcj4KLSAgICB7Ci0gICAgICAgIC8vIENvbnZlcnRzIHNpZ25lZC91bnNpZ25lZCBjaGFyIHRvIGNoYXIKLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyID4KLSAgICAgICAgc3RydWN0IG5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyIAotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIENoYXIgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3Qgbm9ybWFsaXplX3NpbmdsZV9ieXRlX2NoYXI8IHNpZ25lZCBjaGFyID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IG5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyPCB1bnNpZ25lZCBjaGFyID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8VD4KLSAgICB7Ci0gICAgICAgIC8vIEhlbHBlciB0eXBlLCBtZWFuaW5nIHRoYXQgc3RyYW0gY2hhcmFjdGVyIGZvciBUIG11c3QgYmUgZGVkdWNlZCAKLSAgICAgICAgLy8gYXQgU3RhZ2UgMiAoU2VlIGRlZHVjZV9zb3VyY2VfY2hhcjxUPiBhbmQgZGVkdWNlX3RhcmdldF9jaGFyPFQ+KQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIFQgPiBzdHJ1Y3QgZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyIHt9OwotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gc3RyZWFtX2NoYXJfY29tbW9uPFQ+Ci0gICAgewotICAgICAgICAvLyBTZWxlY3RvcnMgdG8gY2hvb3NlIHN0cmVhbSBjaGFyYWN0ZXIgdHlwZSAoY29tbW9uIGZvciBTb3VyY2UgYW5kIFRhcmdldCkKLSAgICAgICAgLy8gUmV0dXJucyBvbmUgb2YgY2hhciwgd2NoYXJfdCwgY2hhcjE2X3QsIGNoYXIzMl90IG9yIGRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjxUPiB0eXBlcwotICAgICAgICAvLyBFeGVjdXRlZCBvbiBTdGFnZSAxIChTZWUgZGVkdWNlX3NvdXJjZV9jaGFyPFQ+IGFuZCBkZWR1Y2VfdGFyZ2V0X2NoYXI8VD4pCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgVHlwZSA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb246IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgVHlwZSA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIFR5cGUsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IFR5cGUgPgotICAgICAgICA+IHt9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IENoYXIqID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IENoYXIqID4KLSAgICAgICAgPiB7fTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIENoYXIgPgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBjb25zdCBDaGFyKiA+OiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8IENoYXIgPjo6dmFsdWUsCi0gICAgICAgICAgICBDaGFyLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6ZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyPCBjb25zdCBDaGFyKiA+Ci0gICAgICAgID4ge307Ci0KLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBDaGFyID4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgbmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPCBDaGFyKiA+ID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTwgQ2hhciogPiA+Ci0gICAgICAgID4ge307Ci0gICAgCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTwgY29uc3QgQ2hhciogPiA+OiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8IENoYXIgPjo6dmFsdWUsCi0gICAgICAgICAgICBDaGFyLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6ZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyPCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8IGNvbnN0IENoYXIqID4gPgotICAgICAgICA+IHt9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYyA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jID4gPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIENoYXIgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MgPgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MgPiA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgQ2hhciB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciwgc3RkOjpzaXplX3QgTiA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IG5kbmJvb3N0OjphcnJheTwgQ2hhciwgTiA+ID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IG5kbmJvb3N0OjphcnJheTwgQ2hhciwgTiA+ID4KLSAgICAgICAgPiB7fTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIENoYXIsIHN0ZDo6c2l6ZV90IE4gPgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBuZG5ib29zdDo6YXJyYXk8IGNvbnN0IENoYXIsIE4gPiA+OiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8IENoYXIgPjo6dmFsdWUsCi0gICAgICAgICAgICBDaGFyLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6ZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyPCBuZG5ib29zdDo6YXJyYXk8IGNvbnN0IENoYXIsIE4gPiA+Ci0gICAgICAgID4ge307Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciwgc3RkOjpzaXplX3QgTiA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IHN0ZDo6YXJyYXk8Q2hhciwgTiA+ID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IHN0ZDo6YXJyYXk8IENoYXIsIE4gPiA+Ci0gICAgICAgID4ge307Ci0KLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBDaGFyLCBzdGQ6OnNpemVfdCBOID4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgc3RkOjphcnJheTwgY29uc3QgQ2hhciwgTiA+ID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IHN0ZDo6YXJyYXk8IGNvbnN0IENoYXIsIE4gPiA+Ci0gICAgICAgID4ge307Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgbmRuYm9vc3Q6OmludDEyOF90eXBlID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZGVudGl0eTwgY2hhciA+IHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBuZG5ib29zdDo6dWludDEyOF90eXBlID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZGVudGl0eTwgY2hhciA+IHt9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCB3Y2hhcl90ID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgICAgIH07Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vIGRlZHVjZV9zb3VyY2VfY2hhcl9pbXBsPFQ+Ci0gICAgewotICAgICAgICAvLyBJZiB0eXBlIFQgaXMgYGRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcmAgdHlwZSwgdGhlbiB0cmllcyB0byBkZWR1Y2UKLSAgICAgICAgLy8gY2hhcmFjdGVyIHR5cGUgdXNpbmcgbmRuYm9vc3Q6Omhhc19sZWZ0X3NoaWZ0PFQ+IG1ldGFmdW5jdGlvbi4KLSAgICAgICAgLy8gT3RoZXJ3aXNlIHN1cHBsaWVkIHR5cGUgVCBpcyBhIGNoYXJhY3RlciB0eXBlLCB0aGF0IG11c3QgYmUgbm9ybWFsaXplZAotICAgICAgICAvLyB1c2luZyBub3JtYWxpemVfc2luZ2xlX2J5dGVfY2hhcjxDaGFyPi4KLSAgICAgICAgLy8gRXhlY3V0ZWQgYXQgU3RhZ2UgMiAgKFNlZSBkZWR1Y2Vfc291cmNlX2NoYXI8VD4gYW5kIGRlZHVjZV90YXJnZXRfY2hhcjxUPikKLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyID4gCi0gICAgICAgIHN0cnVjdCBkZWR1Y2Vfc291cmNlX2NoYXJfaW1wbAotICAgICAgICB7IAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Om5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyPCBDaGFyID46OnR5cGUgdHlwZTsgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIFQgPiAKLSAgICAgICAgc3RydWN0IGRlZHVjZV9zb3VyY2VfY2hhcl9pbXBsPCBkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IFQgPiA+IAotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpoYXNfbGVmdF9zaGlmdDwgc3RkOjpiYXNpY19vc3RyZWFtPCBjaGFyID4sIFQgPiByZXN1bHRfdDsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVCkKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKChyZXN1bHRfdDo6dmFsdWUpLCAKLSAgICAgICAgICAgICAgICAiU291cmNlIHR5cGUgaXMgbm90IHN0ZDo6b3N0cmVhbWBhYmxlIGFuZCBzdGQ6Ondvc3RyZWFtYHMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBTVEwgaW1wbGVtZW50YXRpb24iKTsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOwotI2Vsc2UKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgICAgIHJlc3VsdF90Ojp2YWx1ZSwgY2hhciwgd2NoYXJfdAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRygocmVzdWx0X3Q6OnZhbHVlIHx8IG5kbmJvb3N0OjpoYXNfbGVmdF9zaGlmdDwgc3RkOjpiYXNpY19vc3RyZWFtPCB0eXBlID4sIFQgPjo6dmFsdWUpLCAKLSAgICAgICAgICAgICAgICAiU291cmNlIHR5cGUgaXMgbmVpdGhlciBzdGQ6Om9zdHJlYW1gYWJsZSBub3Igc3RkOjp3b3N0cmVhbWBhYmxlIik7Ci0jZW5kaWYKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsICAvLyBkZWR1Y2VfdGFyZ2V0X2NoYXJfaW1wbDxUPgotICAgIHsKLSAgICAgICAgLy8gSWYgdHlwZSBUIGlzIGBkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXJgIHR5cGUsIHRoZW4gdHJpZXMgdG8gZGVkdWNlCi0gICAgICAgIC8vIGNoYXJhY3RlciB0eXBlIHVzaW5nIG5kbmJvb3N0OjpoYXNfcmlnaHRfc2hpZnQ8VD4gbWV0YWZ1bmN0aW9uLgotICAgICAgICAvLyBPdGhlcndpc2Ugc3VwcGxpZWQgdHlwZSBUIGlzIGEgY2hhcmFjdGVyIHR5cGUsIHRoYXQgbXVzdCBiZSBub3JtYWxpemVkCi0gICAgICAgIC8vIHVzaW5nIG5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyPENoYXI+LgotICAgICAgICAvLyBFeGVjdXRlZCBhdCBTdGFnZSAyICAoU2VlIGRlZHVjZV9zb3VyY2VfY2hhcjxUPiBhbmQgZGVkdWNlX3RhcmdldF9jaGFyPFQ+KQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIgPiAKLSAgICAgICAgc3RydWN0IGRlZHVjZV90YXJnZXRfY2hhcl9pbXBsIAotICAgICAgICB7IAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyPCBDaGFyID46OnR5cGUgdHlwZTsgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIFQgPiAKLSAgICAgICAgc3RydWN0IGRlZHVjZV90YXJnZXRfY2hhcl9pbXBsPCBkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8VD4gPiAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Omhhc19yaWdodF9zaGlmdDxzdGQ6OmJhc2ljX2lzdHJlYW08Y2hhcj4sIFQgPiByZXN1bHRfdDsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVCkKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKChyZXN1bHRfdDo6dmFsdWUpLCAKLSAgICAgICAgICAgICAgICAiVGFyZ2V0IHR5cGUgaXMgbm90IHN0ZDo6aXN0cmVhbWBhYmxlIGFuZCBzdGQ6Ondpc3RyZWFtYHMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBTVEwgaW1wbGVtZW50YXRpb24iKTsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOwotI2Vsc2UKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgICAgIHJlc3VsdF90Ojp2YWx1ZSwgY2hhciwgd2NoYXJfdAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRygocmVzdWx0X3Q6OnZhbHVlIHx8IG5kbmJvb3N0OjpoYXNfcmlnaHRfc2hpZnQ8c3RkOjpiYXNpY19pc3RyZWFtPHdjaGFyX3Q+LCBUID46OnZhbHVlKSwgCi0gICAgICAgICAgICAgICAgIlRhcmdldCB0eXBlIGlzIG5laXRoZXIgc3RkOjppc3RyZWFtYGFibGUgbm9yIHN0ZDo6d2lzdHJlYW1gYWJsZSIpOwotI2VuZGlmCi0gICAgICAgIH07Ci0gICAgfSAKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgIC8vIGRlZHVjZV90YXJnZXRfY2hhcjxUPiBhbmQgZGVkdWNlX3NvdXJjZV9jaGFyPFQ+Ci0gICAgewotICAgICAgICAvLyBXZSBkZWR1Y2Ugc3RyZWFtIGNoYXJhY3RlciB0eXBlcyBpbiB0d28gc3RhZ2VzLgotICAgICAgICAvLwotICAgICAgICAvLyBTdGFnZSAxIGlzIGNvbW1vbiBmb3IgVGFyZ2V0IGFuZCBTb3VyY2UuIEF0IFN0YWdlIDEgd2UgZ2V0IAotICAgICAgICAvLyBub24gbm9ybWFsaXplZCBjaGFyYWN0ZXIgdHlwZSAobWF5IGNvbnRhaW4gdW5zaWduZWQvc2lnbmVkIGNoYXIpCi0gICAgICAgIC8vIG9yIGRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjxUPiB3aGVyZSBUIGlzIHRoZSBvcmlnaW5hbCB0eXBlLgotICAgICAgICAvLyBTdGFnZSAxIGlzIGV4ZWN1dGVkIGJ5IHN0cmVhbV9jaGFyX2NvbW1vbjxUPgotICAgICAgICAvLwotICAgICAgICAvLyBBdCBTdGFnZSAyIHdlIG5vcm1hbGl6ZSBjaGFyYWN0ZXIgdHlwZXMgb3IgdHJ5IHRvIGRlZHVjZSBjaGFyYWN0ZXIgCi0gICAgICAgIC8vIHR5cGUgdXNpbmcgbWV0YWZ1bmN0aW9ucy4gCi0gICAgICAgIC8vIFN0YWdlIDIgaXMgZXhlY3V0ZWQgYnkgZGVkdWNlX3RhcmdldF9jaGFyX2ltcGw8VD4gYW5kIAotICAgICAgICAvLyBkZWR1Y2Vfc291cmNlX2NoYXJfaW1wbDxUPgotICAgICAgICAvLwotICAgICAgICAvLyBkZWR1Y2VfdGFyZ2V0X2NoYXI8VD4gYW5kIGRlZHVjZV9zb3VyY2VfY2hhcjxUPiBmdW5jdGlvbnMgY29tYmluZSAKLSAgICAgICAgLy8gYm90aCBzdGFnZXMKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIFQgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX3RhcmdldF9jaGFyCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdHJlYW1fY2hhcl9jb21tb248IFQgPjo6dHlwZSBzdGFnZTFfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZWR1Y2VfdGFyZ2V0X2NoYXJfaW1wbDwgc3RhZ2UxX3R5cGUgPjo6dHlwZSBzdGFnZTJfdHlwZTsKLQotICAgICAgICAgICAgdHlwZWRlZiBzdGFnZTJfdHlwZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgVCA+Ci0gICAgICAgIHN0cnVjdCBkZWR1Y2Vfc291cmNlX2NoYXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0cmVhbV9jaGFyX2NvbW1vbjwgVCA+Ojp0eXBlIHN0YWdlMV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRlZHVjZV9zb3VyY2VfY2hhcl9pbXBsPCBzdGFnZTFfdHlwZSA+Ojp0eXBlIHN0YWdlMl90eXBlOwotCi0gICAgICAgICAgICB0eXBlZGVmIHN0YWdlMl90eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBkZWR1Y2VfY2hhcl90cmFpdHMgdGVtcGxhdGUKLSAgICB7Ci0gICAgICAgIC8vIFdlIGFyZSBhdHRlbXB0aW5nIHRvIGdldCBjaGFyX3RyYWl0czw+IGZyb20gU291cmNlIG9yIFRhZ3JldAotICAgICAgICAvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIuIE90aGVyd2lzZSB3ZSdsbCBiZSB1c2luZyBzdGQ6OmNoYXJfdHJhaXRzPENoYXI+Ci0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgQ2hhciwgY2xhc3MgVGFyZ2V0LCBjbGFzcyBTb3VyY2UgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpjaGFyX3RyYWl0czwgQ2hhciA+IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jLCBjbGFzcyBTb3VyY2UgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgU291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUYXJnZXQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBzdGQ6OmJhc2ljX3N0cmluZzwgQ2hhciwgVHJhaXRzLCBBbGxvYyA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jLCBjbGFzcyBTb3VyY2UgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzwgQ2hhciwgVHJhaXRzLCBBbGxvYyA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFRyYWl0cyB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgQ2hhciwgY2xhc3MgVGFyZ2V0LCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jID4KLSAgICAgICAgc3RydWN0IGRlZHVjZV9jaGFyX3RyYWl0czwgQ2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBUYXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUcmFpdHMgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MxLCBjbGFzcyBBbGxvYzIgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jMSA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jMiA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYzEsIGNsYXNzIEFsbG9jMj4KLSAgICAgICAgc3RydWN0IGRlZHVjZV9jaGFyX3RyYWl0czwgQ2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MxID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jMiA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jMSwgY2xhc3MgQWxsb2MyID4KLSAgICAgICAgc3RydWN0IGRlZHVjZV9jaGFyX3RyYWl0czwgQ2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MxID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgc3RkOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MyID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUcmFpdHMgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MxLCBjbGFzcyBBbGxvYzIgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jMSA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzwgQ2hhciwgVHJhaXRzLCBBbGxvYzIgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFRyYWl0cyB0eXBlOwotICAgICAgICB9OwotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gYXJyYXlfdG9fcG9pbnRlcl9kZWNheTxUPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0IGFycmF5X3RvX3BvaW50ZXJfZGVjYXkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICAgICAgc3RydWN0IGFycmF5X3RvX3BvaW50ZXJfZGVjYXk8VFtOXT4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBUICogdHlwZTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vIGlzX3RoaXNfZmxvYXRfY29udmVyc2lvbl9vcHRpbWl6ZWQ8RmxvYXQsIENoYXI+Ci0gICAgewotICAgICAgICAvLyB0aGlzIG1ldGFmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZSwgaWYgd2UgaGF2ZSBvcHRpbWl6ZWQgY29tbnZlcnNpb24gCi0gICAgICAgIC8vIGZyb20gRmxvYXQgdHlwZSB0byBDaGFyIGFycmF5LiAKLSAgICAgICAgLy8gTXVzdCBiZSBpbiBzeW5jIHdpdGggbGV4aWNhbF9zdHJlYW1fbGltaXRlZF9zcmM8Q2hhciwgLi4uPjo6c2hsX3JlYWxfdHlwZSguLi4pCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdCwgdHlwZW5hbWUgQ2hhcj4KLSAgICAgICAgc3RydWN0IGlzX3RoaXNfZmxvYXRfY29udmVyc2lvbl9vcHRpbWl6ZWQgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19mbG9hdDxGbG9hdD46OnZhbHVlLAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NXUFJJTlRGKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfZXE8c2l6ZW9mKENoYXIpLCBzaXplb2YoY2hhcikgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPENoYXIsIHdjaGFyX3Q+Ojp2YWx1ZQotICAgICAgICAgICAgICAgID46OnZhbHVlCi0jZWxzZQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2VxPHNpemVvZihDaGFyKSwgc2l6ZW9mKGNoYXIpID46OnZhbHVlCi0jZW5kaWYKLSAgICAgICAgICAgID4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChyZXN1bHRfdHlwZTo6dmFsdWUpICk7Ci0gICAgICAgIH07Ci0gICAgfQotICAgIAotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbGNhc3Rfc3JjX2xlbmd0aAotICAgIHsKLSAgICAgICAgLy8gUmV0dXJuIG1heC4gbGVuZ3RoIG9mIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBTb3VyY2U7Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBTb3VyY2UgLy8gU291cmNlIHR5cGUgb2YgbGV4aWNhbF9jYXN0LgotICAgICAgICAgICAgICAgID4KLSAgICAgICAgc3RydWN0IGxjYXN0X3NyY19sZW5ndGgKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDEpOwotICAgICAgICAgICAgLy8gVG8gY2hlY2sgY292ZXJhZ2UsIGJ1aWxkIHRoZSB0ZXN0IHdpdGgKLSAgICAgICAgICAgIC8vIGJqYW0gLS12MiBwcm9maWxlIG9wdGltaXphdGlvbj1vZmYKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrX2NvdmVyYWdlKCkge30KLSAgICAgICAgfTsKLQotICAgICAgICAvLyBIZWxwZXIgZm9yIGludGVncmFsIHR5cGVzLgotICAgICAgICAvLyBOb3RlcyBvbiBsZW5ndGggY2FsY3VsYXRpb246Ci0gICAgICAgIC8vIE1heCBsZW5ndGggZm9yIDMyYml0IGludCB3aXRoIGdyb3VwaW5nICJcMSIgYW5kIHRob3VzYW5kc19zZXAgJywnOgotICAgICAgICAvLyAiLTIsMSw0LDcsNCw4LDMsNiw0LDciCi0gICAgICAgIC8vICBeICAgICAgICAgICAgICAgICAgICAtIGlzX3NpZ25lZAotICAgICAgICAvLyAgIF4gICAgICAgICAgICAgICAgICAgLSAxIGRpZ2l0IG5vdCBjb3VudGVkIGJ5IGRpZ2l0czEwCi0gICAgICAgIC8vICAgIF5eXl5eXl5eXl5eXl5eXl5eXiAtIGRpZ2l0czEwICogMgotICAgICAgICAvLwotICAgICAgICAvLyBDb25zdGFudCBpc19zcGVjaWFsaXplZCBpcyB1c2VkIGluc3RlYWQgb2YgY29uc3RhbnQgMQotICAgICAgICAvLyB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyBpbiBhIHJhcmUgY2FzZSB3aGVuCi0gICAgICAgIC8vIDxuZG5ib29zdC9saW1pdHMuaHBwPiBkb2Vzbid0IGFkZCBtaXNzaW5nIHNwZWNpYWxpemF0aW9uIGZvcgotICAgICAgICAvLyBudW1lcmljX2xpbWl0czxUPiBmb3Igc29tZSBpbnRlZ3JhbCB0eXBlIFQuCi0gICAgICAgIC8vIFdoZW4gaXNfc3BlY2lhbGl6ZWQgaXMgZmFsc2UsIHRoZSB3aG9sZSBleHByZXNzaW9uIGlzIDAuCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFNvdXJjZT4KLSAgICAgICAgc3RydWN0IGxjYXN0X3NyY19sZW5ndGhfaW50ZWdyYWwKLSAgICAgICAgewotI2lmbmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9Ci0gICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZCArCi0gICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3NwZWNpYWxpemVkICsgLyogPT0gMSAqLwotICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2U+OjpkaWdpdHMxMCAqIDIKLSAgICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMTU2KTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFNvdXJjZSkgKiBDSEFSX0JJVCA8PSAyNTYpOwotI2VuZGlmCi0gICAgICAgIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfTENBU1RfREVGKFQpICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGxjYXN0X3NyY19sZW5ndGg8VD4gXAotICAgICAgICA6IGxjYXN0X3NyY19sZW5ndGhfaW50ZWdyYWw8VD4gICAgICAgICAgIFwKLSAgICB7IHN0YXRpYyB2b2lkIGNoZWNrX2NvdmVyYWdlKCkge30gfTsKLQotICAgICAgICBORE5CT09TVF9MQ0FTVF9ERUYoc2hvcnQpCi0gICAgICAgIE5ETkJPT1NUX0xDQVNUX0RFRih1bnNpZ25lZCBzaG9ydCkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKGludCkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKHVuc2lnbmVkIGludCkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKGxvbmcpCi0gICAgICAgIE5ETkJPT1NUX0xDQVNUX0RFRih1bnNpZ25lZCBsb25nKQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi0gICAgICAgIE5ETkJPT1NUX0xDQVNUX0RFRihuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgIE5ETkJPT1NUX0xDQVNUX0RFRih1bnNpZ25lZCBfX2ludDY0KQotICAgICAgICBORE5CT09TVF9MQ0FTVF9ERUYoICAgICAgICAgX19pbnQ2NCkKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKG5kbmJvb3N0OjppbnQxMjhfdHlwZSkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUpCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX0xDQVNUX0RFRgotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX0NPTVBJTEVfVElNRV9QUkVDSVNJT04KLSAgICAgICAgLy8gSGVscGVyIGZvciBmbG9hdGluZyBwb2ludCB0eXBlcy4KLSAgICAgICAgLy8gLTEuMjM0NTY3ODllLTEyMzQ1NgotICAgICAgICAvLyBeICAgICAgICAgICAgICAgICAgIHNpZ24KLSAgICAgICAgLy8gIF4gICAgICAgICAgICAgICAgICBsZWFkaW5nIGRpZ2l0Ci0gICAgICAgIC8vICAgXiAgICAgICAgICAgICAgICAgZGVjaW1hbCBwb2ludCAKLSAgICAgICAgLy8gICAgXl5eXl5eXl4gICAgICAgICBsY2FzdF9wcmVjaXNpb248U291cmNlPjo6dmFsdWUKLSAgICAgICAgLy8gICAgICAgICAgICBeICAgICAgICAiZSIKLSAgICAgICAgLy8gICAgICAgICAgICAgXiAgICAgICBleHBvbmVudCBzaWduCi0gICAgICAgIC8vICAgICAgICAgICAgICBeXl5eXl4gZXhwb25lbnQgKGFzc3VtZWQgNiBvciBsZXNzIGRpZ2l0cykKLSAgICAgICAgLy8gc2lnbiArIGxlYWRpbmcgZGlnaXQgKyBkZWNpbWFsIHBvaW50ICsgImUiICsgZXhwb25lbnQgc2lnbiA9PSA1Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFNvdXJjZT4KLSAgICAgICAgc3RydWN0IGxjYXN0X3NyY19sZW5ndGhfZmxvYXRpbmcKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2U+OjptYXhfZXhwb25lbnQxMCA8PSAgOTk5OTk5TCAmJgotICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46Om1pbl9leHBvbmVudDEwID49IC05OTk5OTlMCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPQotICAgICAgICAgICAgICAgICAgICA1ICsgbGNhc3RfcHJlY2lzaW9uPFNvdXJjZT46OnZhbHVlICsgNgotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgbGNhc3Rfc3JjX2xlbmd0aDxmbG9hdD4KLSAgICAgICAgICA6IGxjYXN0X3NyY19sZW5ndGhfZmxvYXRpbmc8ZmxvYXQ+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrX2NvdmVyYWdlKCkge30KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBsY2FzdF9zcmNfbGVuZ3RoPGRvdWJsZT4KLSAgICAgICAgICA6IGxjYXN0X3NyY19sZW5ndGhfZmxvYXRpbmc8ZG91YmxlPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgdm9pZCBjaGVja19jb3ZlcmFnZSgpIHt9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgbGNhc3Rfc3JjX2xlbmd0aDxsb25nIGRvdWJsZT4KLSAgICAgICAgICA6IGxjYXN0X3NyY19sZW5ndGhfZmxvYXRpbmc8bG9uZyBkb3VibGU+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrX2NvdmVyYWdlKCkge30KLSAgICAgICAgfTsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fQ09NUElMRV9USU1FX1BSRUNJU0lPTgotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbGV4aWNhbF9jYXN0X3N0cmVhbV90cmFpdHM8U291cmNlLCBUYXJnZXQ+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlLCBjbGFzcyBUYXJnZXQ+Ci0gICAgICAgIHN0cnVjdCBsZXhpY2FsX2Nhc3Rfc3RyZWFtX3RyYWl0cyB7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG9fcG9pbnRlcl9kZWNheTxTb3VyY2U+Ojp0eXBlIHNyYzsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6cmVtb3ZlX2N2PHNyYz46OnR5cGUgICAgICAgICAgICBub19jdl9zcmM7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmRlZHVjZV9zb3VyY2VfY2hhcjxub19jdl9zcmM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWNlX3NyY19jaGFyX21ldGFmdW5jOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRlZHVjZV9zcmNfY2hhcl9tZXRhZnVuYzo6dHlwZSAgICAgICAgICAgc3JjX2NoYXJfdDsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfdGFyZ2V0X2NoYXI8VGFyZ2V0Pjo6dHlwZSB0YXJnZXRfY2hhcl90OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6OndpZGVzdF9jaGFyPAotICAgICAgICAgICAgICAgIHRhcmdldF9jaGFyX3QsIHNyY19jaGFyX3QKLSAgICAgICAgICAgID46OnR5cGUgY2hhcl90eXBlOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCggIW5kbmJvb3N0Ojppc19zYW1lPGNoYXIxNl90LCBzcmNfY2hhcl90Pjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhbmRuYm9vc3Q6OmlzX3NhbWU8Y2hhcjE2X3QsIHRhcmdldF9jaGFyX3Q+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgIllvdXIgY29tcGlsZXIgZG9lcyBub3QgaGF2ZSBmdWxsIHN1cHBvcnQgZm9yIGNoYXIxNl90IiApOwotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCggIW5kbmJvb3N0Ojppc19zYW1lPGNoYXIzMl90LCBzcmNfY2hhcl90Pjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhbmRuYm9vc3Q6OmlzX3NhbWU8Y2hhcjMyX3QsIHRhcmdldF9jaGFyX3Q+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgIllvdXIgY29tcGlsZXIgZG9lcyBub3QgaGF2ZSBmdWxsIHN1cHBvcnQgZm9yIGNoYXIzMl90IiApOwotI2VuZGlmCi0KLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcl90cmFpdHM8Ci0gICAgICAgICAgICAgICAgY2hhcl90eXBlLCBUYXJnZXQsIG5vX2N2X3NyYwotICAgICAgICAgICAgPjo6dHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPGNoYXIsIHNyY19jaGFyX3Q+Ojp2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc291cmNlIGlzIG5vdCBhIHdpZGUgY2hhcmFjdGVyIGJhc2VkIHR5cGUKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9uZTxzaXplb2YoY2hhciksIHNpemVvZih0YXJnZXRfY2hhcl90KSA+Ojp2YWx1ZSwgIC8vIHRhcmdldCB0eXBlIGlzIGJhc2VkIG9uIHdpZGUgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19jaGFyX29yX3djaGFyPG5vX2N2X3NyYz46OnZhbHVlICAgICAgICAgICAgICAgICAgICAgLy8gc2luZ2xlIGNoYXJhY3RlciB3aWRlbmluZyBpcyBvcHRpbWl6ZWQKLSAgICAgICAgICAgICAgICA+Ojp2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBkb2VzIG5vdCByZXF1aXJlcyBzdHJpbmdidWZmZXIKLSAgICAgICAgICAgID4gICBpc19zdHJpbmdfd2lkZW5pbmdfcmVxdWlyZWRfdDsKLQotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19pbnRlZ3JhbDxub19jdl9zcmM+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc190aGlzX2Zsb2F0X2NvbnZlcnNpb25fb3B0aW1pemVkPG5vX2N2X3NyYywgY2hhcl90eXBlID46OnZhbHVlLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGVkdWNlX3NyY19jaGFyX21ldGFmdW5jOjpzdGFnZTFfdHlwZSAgICAgICAgICAvLyBpZiB3ZSBkaWQgbm90IGdldCBjaGFyYWN0ZXIgdHlwZSBhdCBzdGFnZTEKLSAgICAgICAgICAgICAgICA+Ojp2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gd2UgaGF2ZSBubyBvcHRpbWl6YXRpb24gZm9yIHRoYXQgdHlwZQotICAgICAgICAgICAgPjo6dmFsdWUgPiAgIGlzX3NvdXJjZV9pbnB1dF9ub3Rfb3B0aW1pemVkX3Q7Ci0KLSAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gb3B0aW1pemVkIGNvbnZlcnNpb24gZm9yCi0gICAgICAgICAgICAvLyBTb3VyY2UsIHdlIGRvIG5vdCBuZWVkIHRvIGNvbnN0cnVjdCBzdHJpbmdidWYuCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgcmVxdWlyZXNfc3RyaW5nYnVmID0gCi0gICAgICAgICAgICAgICAgKG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgICAgICBpc19zdHJpbmdfd2lkZW5pbmdfcmVxdWlyZWRfdDo6dmFsdWUsIGlzX3NvdXJjZV9pbnB1dF9ub3Rfb3B0aW1pemVkX3Q6OnZhbHVlCi0gICAgICAgICAgICAgICAgPjo6dmFsdWUpCi0gICAgICAgICAgICApOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmxjYXN0X3NyY19sZW5ndGg8bm9fY3Zfc3JjPiBsZW5fdDsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vICcwJywgJysnIGFuZCAnLScgY29uc3RhbnRzCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIENoYXIgPiBzdHJ1Y3QgbGNhc3RfY2hhcl9jb25zdGFudHM7Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgbGNhc3RfY2hhcl9jb25zdGFudHM8Y2hhcj4KLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXIsIHplcm8gID0gJzAnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyLCBtaW51cyA9ICctJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhciwgcGx1cyA9ICcrJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhciwgbG93ZXJjYXNlX2UgPSAnZScpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXIsIGNhcGl0YWxfZSA9ICdFJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhciwgY19kZWNpbWFsX3NlcGFyYXRvciA9ICcuJyk7Ci0gICAgICAgIH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBsY2FzdF9jaGFyX2NvbnN0YW50czx3Y2hhcl90PgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQod2NoYXJfdCwgemVybyAgPSBMJzAnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh3Y2hhcl90LCBtaW51cyA9IEwnLScpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHdjaGFyX3QsIHBsdXMgPSBMJysnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh3Y2hhcl90LCBsb3dlcmNhc2VfZSA9IEwnZScpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHdjaGFyX3QsIGNhcGl0YWxfZSA9IEwnRScpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHdjaGFyX3QsIGNfZGVjaW1hbF9zZXBhcmF0b3IgPSBMJy4nKTsKLSAgICAgICAgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IGxjYXN0X2NoYXJfY29uc3RhbnRzPGNoYXIxNl90PgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjE2X3QsIHplcm8gID0gdScwJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjE2X3QsIG1pbnVzID0gdSctJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjE2X3QsIHBsdXMgPSB1JysnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMTZfdCwgbG93ZXJjYXNlX2UgPSB1J2UnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMTZfdCwgY2FwaXRhbF9lID0gdSdFJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjE2X3QsIGNfZGVjaW1hbF9zZXBhcmF0b3IgPSB1Jy4nKTsKLSAgICAgICAgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IGxjYXN0X2NoYXJfY29uc3RhbnRzPGNoYXIzMl90PgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjMyX3QsIHplcm8gID0gVScwJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjMyX3QsIG1pbnVzID0gVSctJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjMyX3QsIHBsdXMgPSBVJysnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMzJfdCwgbG93ZXJjYXNlX2UgPSBVJ2UnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMzJfdCwgY2FwaXRhbF9lID0gVSdFJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjMyX3QsIGNfZGVjaW1hbF9zZXBhcmF0b3IgPSBVJy4nKTsKLSAgICAgICAgfTsKLSNlbmRpZgotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbGNhc3RfdG9fdW5zaWduZWQKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgICAgIGlubGluZQotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1ha2VfdW5zaWduZWQ8VD46OnR5cGUgbGNhc3RfdG9fdW5zaWduZWQoVCB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPigKLSAgICAgICAgICAgICAgICB2YWx1ZSA8IDAgPyAwdSAtIHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPih2YWx1ZSkgOiB2YWx1ZQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbGNhc3RfcHV0X3Vuc2lnbmVkCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIFQsIGNsYXNzIENoYXJUPgotICAgICAgICBDaGFyVCogbGNhc3RfcHV0X3Vuc2lnbmVkKGNvbnN0IFQgbl9wYXJhbSwgQ2hhclQqIGZpbmlzaCkKLSAgICAgICAgewotI2lmbmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkKTsKLSNlbmRpZgotCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6aW50X3R5cGUgaW50X3R5cGU7Ci0gICAgICAgICAgICBDaGFyVCBjb25zdCBjemVybyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6emVybzsKLSAgICAgICAgICAgIGludF90eXBlIGNvbnN0IHplcm8gPSBUcmFpdHM6OnRvX2ludF90eXBlKGN6ZXJvKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgICAgKHNpemVvZihpbnRfdHlwZSkgPiBzaXplb2YoVCkpCi0gICAgICAgICAgICAgICAgICAgICwgaW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgLCBUCi0gICAgICAgICAgICA+Ojp0eXBlIG4gPSBuX3BhcmFtOwotCi0jaWZuZGVmIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9BU1NVTUVfQ19MT0NBTEUKLSAgICAgICAgICAgIHN0ZDo6bG9jYWxlIGxvYzsKLSAgICAgICAgICAgIGlmIChsb2MgIT0gc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSkgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpudW1wdW5jdDxDaGFyVD4gbnVtcHVuY3Q7Ci0gICAgICAgICAgICAgICAgbnVtcHVuY3QgY29uc3QmIG5wID0gTkROQk9PU1RfVVNFX0ZBQ0VUKG51bXB1bmN0LCBsb2MpOwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0IGdyb3VwaW5nID0gbnAuZ3JvdXBpbmcoKTsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbnN0IGdyb3VwaW5nX3NpemUgPSBncm91cGluZy5zaXplKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGdyb3VwaW5nX3NpemUgJiYgZ3JvdXBpbmdbMF0gPiAwICkKLSAgICAgICAgICAgICAgICB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHVsaW1pdGVkIGdyb3VwIGlzIHVucmVhY2hhYmxlOgotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzMTAgPCBDSEFSX01BWCk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgQ2hhclQgdGhvdXNhbmRzX3NlcCA9IG5wLnRob3VzYW5kc19zZXAoKTsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBncm91cCA9IDA7IC8vIGN1cnJlbnQgZ3JvdXAgbnVtYmVyCi0gICAgICAgICAgICAgICAgICAgIGNoYXIgbGFzdF9ncnBfc2l6ZSA9IGdyb3VwaW5nWzBdOwotICAgICAgICAgICAgICAgICAgICBjaGFyIGxlZnQgPSBsYXN0X2dycF9zaXplOwotCi0gICAgICAgICAgICAgICAgICAgIGRvCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxlZnQgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2dyb3VwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGdyb3VwIDwgZ3JvdXBpbmdfc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgZ3JwX3NpemUgPSBncm91cGluZ1tncm91cF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZ3JwX3NpemUgPSBncnBfc2l6ZSA8PSAwID8gc3RhdGljX2Nhc3Q8Y2hhcj4oQ0hBUl9NQVgpIDogZ3JwX3NpemU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGxhc3RfZ3JwX3NpemU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1maW5pc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhaXRzOjphc3NpZ24oKmZpbmlzaCwgdGhvdXNhbmRzX3NlcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC0tbGVmdDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLS1maW5pc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRfdHlwZSBjb25zdCBkaWdpdCA9IHN0YXRpY19jYXN0PGludF90eXBlPihuICUgMTBVKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFRyYWl0czo6YXNzaWduKCpmaW5pc2gsIFRyYWl0czo6dG9fY2hhcl90eXBlKHplcm8gKyBkaWdpdCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbiAvPSAxMDsKLSAgICAgICAgICAgICAgICAgICAgfSB3aGlsZShuKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmlzaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkbwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLS1maW5pc2g7Ci0gICAgICAgICAgICAgICAgICAgIGludF90eXBlIGNvbnN0IGRpZ2l0ID0gc3RhdGljX2Nhc3Q8aW50X3R5cGU+KG4gJSAxMFUpOwotICAgICAgICAgICAgICAgICAgICBUcmFpdHM6OmFzc2lnbigqZmluaXNoLCBUcmFpdHM6OnRvX2NoYXJfdHlwZSh6ZXJvICsgZGlnaXQpKTsKLSAgICAgICAgICAgICAgICAgICAgbiAvPSAxMDsKLSAgICAgICAgICAgICAgICB9IHdoaWxlKG4pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZmluaXNoOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBsY2FzdF9yZXRfdW5zaWduZWQKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgVCwgY2xhc3MgQ2hhclQ+Ci0gICAgICAgIGlubGluZSBib29sIGxjYXN0X3JldF91bnNpZ25lZChUJiB2YWx1ZSwgY29uc3QgQ2hhclQqIGNvbnN0IGJlZ2luLCBjb25zdCBDaGFyVCogZW5kKQotICAgICAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCFzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQpOwotI2VuZGlmCi0gICAgICAgICAgICBDaGFyVCBjb25zdCBjemVybyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6emVybzsKLSAgICAgICAgICAgIC0tZW5kOwotICAgICAgICAgICAgdmFsdWUgPSAwOwotCi0gICAgICAgICAgICBpZiAoYmVnaW4gPiBlbmQgfHwgKmVuZCA8IGN6ZXJvIHx8ICplbmQgPj0gY3plcm8gKyAxMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KCplbmQgLSBjemVybyk7Ci0gICAgICAgICAgICAtLWVuZDsKLSAgICAgICAgICAgIFQgbXVsdGlwbGllciA9IDE7Ci0gICAgICAgICAgICBib29sIG11bHRpcGxpZXJfb3ZlcmZsb3dlZCA9IGZhbHNlOwotCi0jaWZuZGVmIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9BU1NVTUVfQ19MT0NBTEUKLSAgICAgICAgICAgIHN0ZDo6bG9jYWxlIGxvYzsKLSAgICAgICAgICAgIGlmIChsb2MgIT0gc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSkgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpudW1wdW5jdDxDaGFyVD4gbnVtcHVuY3Q7Ci0gICAgICAgICAgICAgICAgbnVtcHVuY3QgY29uc3QmIG5wID0gTkROQk9PU1RfVVNFX0ZBQ0VUKG51bXB1bmN0LCBsb2MpOwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBncm91cGluZyA9IG5wLmdyb3VwaW5nKCk7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjb25zdCBncm91cGluZ19zaXplID0gZ3JvdXBpbmcuc2l6ZSgpOwotCi0gICAgICAgICAgICAgICAgLyogQWNjb3JkaW5nIHRvIFByb2dyYW1taW5nIGxhbmd1YWdlcyAtIEMrKwotICAgICAgICAgICAgICAgICAqIHdlIE1VU1QgY2hlY2sgZm9yIGNvcnJlY3QgZ3JvdXBpbmcKLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBpZiAoZ3JvdXBpbmdfc2l6ZSAmJiBncm91cGluZ1swXSA+IDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGN1cnJlbnRfZ3JvdXBpbmcgPSAwOwotICAgICAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCB0aG91c2FuZHNfc2VwID0gbnAudGhvdXNhbmRzX3NlcCgpOwotICAgICAgICAgICAgICAgICAgICBjaGFyIHJlbWFpbmVkID0gc3RhdGljX2Nhc3Q8Y2hhcj4oZ3JvdXBpbmdbY3VycmVudF9ncm91cGluZ10gLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBzaGFsbF93ZV9yZXR1cm4gPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGZvcig7ZW5kPj1iZWdpbjsgLS1lbmQpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW1haW5lZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgY29uc3QgbXVsdGlwbGllcl8xMCA9IHN0YXRpY19jYXN0PFQ+KG11bHRpcGxpZXIgKiAxMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpcGxpZXJfMTAgLyAxMCAhPSBtdWx0aXBsaWVyKSBtdWx0aXBsaWVyX292ZXJmbG93ZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVCBjb25zdCBkaWdfdmFsdWUgPSBzdGF0aWNfY2FzdDxUPigqZW5kIC0gY3plcm8pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgY29uc3QgbmV3X3N1Yl92YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KG11bHRpcGxpZXJfMTAgKiBkaWdfdmFsdWUpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCplbmQgPCBjemVybyB8fCAqZW5kID49IGN6ZXJvICsgMTAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRldGVjdGluZyBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGRpZ192YWx1ZSAmJiBuZXdfc3ViX3ZhbHVlIC8gZGlnX3ZhbHVlICE9IG11bHRpcGxpZXJfMTApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDxUPigoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KSgpLW5ld19zdWJfdmFsdWUpIDwgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtdWx0aXBsaWVyX292ZXJmbG93ZWQgJiYgZGlnX3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlICsgbmV3X3N1Yl92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IHN0YXRpY19jYXN0PFQ+KG11bHRpcGxpZXIgKiAxMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1yZW1haW5lZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhVHJhaXRzOjplcSgqZW5kLCB0aG91c2FuZHNfc2VwKSApIC8vfHwgYmVnaW4gPT0gZW5kICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQWNjb3JkaW5nIHRvIFByb2dyYW1taW5nIGxhbmd1YWdlcyAtIEMrKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBEaWdpdCBncm91cGluZyBpcyBjaGVja2VkLiBUaGF0IGlzLCB0aGUgcG9zaXRpb25zIG9mIGRpc2NhcmRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzZXBhcmF0b3JzIGlzIGV4YW1pbmVkIGZvciBjb25zaXN0ZW5jeSB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHVzZV9mYWNldDxudW1wdW5jdDxjaGFyVD4gPihsb2MgKS5ncm91cGluZygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEJVVCB3aGF0IGlmIHRoZXJlIGlzIG5vIHNlcGFyYXRvcnMgYXQgYWxsIGFuZCBncm91cGluZygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGlzIG5vdCBlbXB0eT8gV2VsbCwgd2UgaGF2ZSBubyBleHRyYWNlZCBzZXBhcmF0b3JzLCBzbyB3ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB3b25gdCBjaGVjayB0aGVtIGZvciBjb25zaXN0ZW5jeS4gVGhpcyB3aWxsIGFsbG93IHVzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHdvcmsgd2l0aCAiQyIgbG9jYWxlIGZyb20gb3RoZXIgbG9jYWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhbGxfd2VfcmV0dXJuID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYmVnaW4gPT0gZW5kICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudF9ncm91cGluZyA8IGdyb3VwaW5nX3NpemUtMSApICsrY3VycmVudF9ncm91cGluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZWQgPSBncm91cGluZ1tjdXJyZW50X2dyb3VwaW5nXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoc2hhbGxfd2VfcmV0dXJuKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAoIGJlZ2luIDw9IGVuZCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBUIGNvbnN0IG11bHRpcGxpZXJfMTAgPSBzdGF0aWNfY2FzdDxUPihtdWx0aXBsaWVyICogMTApOwotICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGllcl8xMCAvIDEwICE9IG11bHRpcGxpZXIpIG11bHRpcGxpZXJfb3ZlcmZsb3dlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgVCBjb25zdCBkaWdfdmFsdWUgPSBzdGF0aWNfY2FzdDxUPigqZW5kIC0gY3plcm8pOwotICAgICAgICAgICAgICAgICAgICBUIGNvbnN0IG5ld19zdWJfdmFsdWUgPSBzdGF0aWNfY2FzdDxUPihtdWx0aXBsaWVyXzEwICogZGlnX3ZhbHVlKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoKmVuZCA8IGN6ZXJvIHx8ICplbmQgPj0gY3plcm8gKyAxMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRldGVjdGluZyBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChkaWdfdmFsdWUgJiYgbmV3X3N1Yl92YWx1ZSAvIGRpZ192YWx1ZSAhPSBtdWx0aXBsaWVyXzEwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PFQ+KChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCktbmV3X3N1Yl92YWx1ZSkgPCB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtdWx0aXBsaWVyX292ZXJmbG93ZWQgJiYgZGlnX3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlICsgbmV3X3N1Yl92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSBzdGF0aWNfY2FzdDxUPihtdWx0aXBsaWVyICogMTApOwotICAgICAgICAgICAgICAgICAgICAtLWVuZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyVD4KLSAgICAgICAgYm9vbCBsY19pZXF1YWwoY29uc3QgQ2hhclQqIHZhbCwgY29uc3QgQ2hhclQqIGxjYXNlLCBjb25zdCBDaGFyVCogdWNhc2UsIHVuc2lnbmVkIGludCBsZW4pIE5ETkJPT1NUX05PRVhDRVBUIHsKLSAgICAgICAgICAgIGZvciggdW5zaWduZWQgaW50IGk9MDsgaSA8IGxlbjsgKytpICkgewotICAgICAgICAgICAgICAgIGlmICggdmFsW2ldICE9IGxjYXNlW2ldICYmIHZhbFtpXSAhPSB1Y2FzZVtpXSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBSZXR1cm5zIHRydWUgYW5kIHNldHMgdGhlIGNvcnJlY3QgdmFsdWUgaWYgZm91bmQgTmFOIG9yIEluZi4gKi8KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXJULCBjbGFzcyBUPgotICAgICAgICBpbmxpbmUgYm9vbCBwYXJzZV9pbmZfbmFuX2ltcGwoY29uc3QgQ2hhclQqIGJlZ2luLCBjb25zdCBDaGFyVCogZW5kLCBUJiB2YWx1ZQotICAgICAgICAgICAgLCBjb25zdCBDaGFyVCogbGNfTkFOLCBjb25zdCBDaGFyVCogbGNfbmFuCi0gICAgICAgICAgICAsIGNvbnN0IENoYXJUKiBsY19JTkZJTklUWSwgY29uc3QgQ2hhclQqIGxjX2luZmluaXR5Ci0gICAgICAgICAgICAsIGNvbnN0IENoYXJUIG9wZW5pbmdfYnJhY2UsIGNvbnN0IENoYXJUIGNsb3NpbmdfYnJhY2UpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICBpZiAoYmVnaW4gPT0gZW5kKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb25zdCBDaGFyVCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICBjb25zdCBDaGFyVCBwbHVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjpwbHVzOwotICAgICAgICAgICAgY29uc3QgaW50IGluaWZpbml0eV9zaXplID0gODsKLQotICAgICAgICAgICAgYm9vbCBoYXNfbWludXMgPSBmYWxzZTsKLSAgICAgICAgICAgIC8qIFBhcnNpbmcgKy8tICovCi0gICAgICAgICAgICBpZiggKmJlZ2luID09IG1pbnVzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgIGhhc19taW51cyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKCAqYmVnaW4gPT0gcGx1cyApICsrYmVnaW47Ci0KLSAgICAgICAgICAgIGlmKCBlbmQtYmVnaW4gPCAzICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYoIGxjX2llcXVhbChiZWdpbiwgbGNfbmFuLCBsY19OQU4sIDMpICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiZWdpbiArPSAzOwotICAgICAgICAgICAgICAgIGlmIChlbmQgIT0gYmVnaW4pIC8qIEl0IGlzICduYW4oLi4uKScgb3Igc29tZSBiYWQgaW5wdXQqLwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYoZW5kLWJlZ2luPDIpIHJldHVybiBmYWxzZTsgLy8gYmFkIGlucHV0Ci0gICAgICAgICAgICAgICAgICAgIC0tIGVuZDsKLSAgICAgICAgICAgICAgICAgICAgaWYoICpiZWdpbiAhPSBvcGVuaW5nX2JyYWNlIHx8ICplbmQgIT0gY2xvc2luZ19icmFjZSkgcmV0dXJuIGZhbHNlOyAvLyBiYWQgaW5wdXQKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiggIWhhc19taW51cyApIHZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6cXVpZXRfTmFOKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSB2YWx1ZSA9IChuZG5ib29zdDo6bWF0aDo6Y2hhbmdlc2lnbikgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OnF1aWV0X05hTigpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaWYgKCggLyogJ0lORicgb3IgJ2luZicgKi8KLSAgICAgICAgICAgICAgICAgIGVuZC1iZWdpbj09MwotICAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgICAgICAgICAgIGxjX2llcXVhbChiZWdpbiwgbGNfaW5maW5pdHksIGxjX0lORklOSVRZLCAzKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICB8fAotICAgICAgICAgICAgICAgICggLyogJ0lORklOSVRZJyBvciAnaW5maW5pdHknICovCi0gICAgICAgICAgICAgICAgICBlbmQtYmVnaW49PWluaWZpbml0eV9zaXplCi0gICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAgbGNfaWVxdWFsKGJlZ2luLCBsY19pbmZpbml0eSwgbGNfSU5GSU5JVFksIGluaWZpbml0eV9zaXplKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoICFoYXNfbWludXMgKSB2YWx1ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCk7Ci0gICAgICAgICAgICAgICAgZWxzZSB2YWx1ZSA9IChuZG5ib29zdDo6bWF0aDo6Y2hhbmdlc2lnbikgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcHV0X2luZl9uYW5faW1wbChDaGFyVCogYmVnaW4sIENoYXJUKiYgZW5kLCBjb25zdCBUJiB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICwgY29uc3QgQ2hhclQqIGxjX25hbgotICAgICAgICAgICAgICAgICAgICAgICAgICwgY29uc3QgQ2hhclQqIGxjX2luZmluaXR5KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICAgICAgY29uc3QgQ2hhclQgbWludXMgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46Om1pbnVzOwotICAgICAgICAgICAgaWYgKCAobmRuYm9vc3Q6Om1hdGg6OmlzbmFuKSh2YWx1ZSkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICggKG5kbmJvb3N0OjptYXRoOjpzaWduYml0KSh2YWx1ZSkgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKmJlZ2luID0gbWludXM7Ci0gICAgICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1lbWNweShiZWdpbiwgbGNfbmFuLCAzICogc2l6ZW9mKENoYXJUKSk7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyAzOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIGlmICggKG5kbmJvb3N0OjptYXRoOjppc2luZikodmFsdWUpICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIChuZG5ib29zdDo6bWF0aDo6c2lnbmJpdCkodmFsdWUpICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICpiZWdpbiA9IG1pbnVzOwotICAgICAgICAgICAgICAgICAgICArKyBiZWdpbjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBtZW1jcHkoYmVnaW4sIGxjX2luZmluaXR5LCAzICogc2l6ZW9mKENoYXJUKSk7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyAzOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcGFyc2VfaW5mX25hbihjb25zdCB3Y2hhcl90KiBiZWdpbiwgY29uc3Qgd2NoYXJfdCogZW5kLCBUJiB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2luZl9uYW5faW1wbChiZWdpbiwgZW5kLCB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTCJOQU4iLCBMIm5hbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIEwiSU5GSU5JVFkiLCBMImluZmluaXR5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTCcoJywgTCcpJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgYm9vbCBwdXRfaW5mX25hbih3Y2hhcl90KiBiZWdpbiwgd2NoYXJfdComIGVuZCwgY29uc3QgVCYgdmFsdWUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwdXRfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlLCBMIm5hbiIsIEwiaW5maW5pdHkiKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcGFyc2VfaW5mX25hbihjb25zdCBjaGFyMTZfdCogYmVnaW4sIGNvbnN0IGNoYXIxNl90KiBlbmQsIFQmIHZhbHVlKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB1Ik5BTiIsIHUibmFuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgdSJJTkZJTklUWSIsIHUiaW5maW5pdHkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB1JygnLCB1JyknKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBib29sIHB1dF9pbmZfbmFuKGNoYXIxNl90KiBiZWdpbiwgY2hhcjE2X3QqJiBlbmQsIGNvbnN0IFQmIHZhbHVlKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcHV0X2luZl9uYW5faW1wbChiZWdpbiwgZW5kLCB2YWx1ZSwgdSJuYW4iLCB1ImluZmluaXR5Iik7Ci0gICAgICAgIH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgYm9vbCBwYXJzZV9pbmZfbmFuKGNvbnN0IGNoYXIzMl90KiBiZWdpbiwgY29uc3QgY2hhcjMyX3QqIGVuZCwgVCYgdmFsdWUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwYXJzZV9pbmZfbmFuX2ltcGwoYmVnaW4sIGVuZCwgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFUiTkFOIiwgVSJuYW4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBVIklORklOSVRZIiwgVSJpbmZpbml0eSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFUnKCcsIFUnKScpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcHV0X2luZl9uYW4oY2hhcjMyX3QqIGJlZ2luLCBjaGFyMzJfdComIGVuZCwgY29uc3QgVCYgdmFsdWUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwdXRfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlLCBVIm5hbiIsIFUiaW5maW5pdHkiKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXJULCBjbGFzcyBUPgotICAgICAgICBib29sIHBhcnNlX2luZl9uYW4oY29uc3QgQ2hhclQqIGJlZ2luLCBjb25zdCBDaGFyVCogZW5kLCBUJiB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2luZl9uYW5faW1wbChiZWdpbiwgZW5kLCB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgIk5BTiIsICJuYW4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAiSU5GSU5JVFkiLCAiaW5maW5pdHkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnKCcsICcpJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcHV0X2luZl9uYW4oQ2hhclQqIGJlZ2luLCBDaGFyVComIGVuZCwgY29uc3QgVCYgdmFsdWUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwdXRfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlLCAibmFuIiwgImluZmluaXR5Iik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbGNhc3RfcmV0X2Zsb2F0Ci0gICAgewotCi0vLyBTaWxlbmNlIGJ1Z2d5IE1TIHdhcm5pbmdzIGxpa2UgQzQyNDQ6ICcrPScgOiBjb252ZXJzaW9uIGZyb20gJ2ludCcgdG8gJ3Vuc2lnbmVkIHNob3J0JywgcG9zc2libGUgbG9zcyBvZiBkYXRhIAotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA9PSAxNDAwKSAKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpIAotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KSAKLSNlbmRpZiAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIHN0cnVjdCBtYW50aXNzYV9ob2xkZXJfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICAvKiBDYW4gbm90IGJlIHVzZWQgd2l0aCB0aGlzIHR5cGUgKi8KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QgbWFudGlzc2FfaG9sZGVyX3R5cGU8ZmxvYXQ+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHR5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIGRvdWJsZSAgICAgICB3aWRlX3Jlc3VsdF90OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBtYW50aXNzYV9ob2xkZXJfdHlwZTxkb3VibGU+Ci0gICAgICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotICAgICAgICAgICAgdHlwZWRlZiBsb25nIGRvdWJsZSAgd2lkZV9yZXN1bHRfdDsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgdHlwZTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHR5cGU7Ci0jZW5kaWYKLSNlbmRpZgotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgVCwgY2xhc3MgQ2hhclQ+Ci0gICAgICAgIGlubGluZSBib29sIGxjYXN0X3JldF9mbG9hdChUJiB2YWx1ZSwgY29uc3QgQ2hhclQqIGJlZ2luLCBjb25zdCBDaGFyVCogZW5kKQotICAgICAgICB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTEVYSUNBTF9DQVNUX0FTU1VNRV9DX0xPQ0FMRQotICAgICAgICAgICAgc3RkOjpsb2NhbGUgbG9jOwotICAgICAgICAgICAgdHlwZWRlZiBzdGQ6Om51bXB1bmN0PENoYXJUPiBudW1wdW5jdDsKLSAgICAgICAgICAgIG51bXB1bmN0IGNvbnN0JiBucCA9IE5ETkJPT1NUX1VTRV9GQUNFVChudW1wdW5jdCwgbG9jKTsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0IGdyb3VwaW5nKAotICAgICAgICAgICAgICAgICAgICAobG9jID09IHN0ZDo6bG9jYWxlOjpjbGFzc2ljKCkpCi0gICAgICAgICAgICAgICAgICAgID8gc3RkOjpzdHJpbmcoKQotICAgICAgICAgICAgICAgICAgICA6IG5wLmdyb3VwaW5nKCkKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbnN0IGdyb3VwaW5nX3NpemUgPSBncm91cGluZy5zaXplKCk7Ci0gICAgICAgICAgICBDaGFyVCBjb25zdCB0aG91c2FuZHNfc2VwID0gc3RhdGljX2Nhc3Q8Q2hhclQ+KGdyb3VwaW5nX3NpemUgPyBucC50aG91c2FuZHNfc2VwKCkgOiAwKTsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IGRlY2ltYWxfcG9pbnQgPSBucC5kZWNpbWFsX3BvaW50KCk7Ci0gICAgICAgICAgICBib29sIGZvdW5kX2dyb3VwaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGxhc3RfZ3JvdXBpbmdfcG9zID0gZ3JvdXBpbmdfc2l6ZSAtIDE7Ci0jZWxzZQotICAgICAgICAgICAgQ2hhclQgY29uc3QgZGVjaW1hbF9wb2ludCA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6Y19kZWNpbWFsX3NlcGFyYXRvcjsKLSNlbmRpZgotCi0gICAgICAgICAgICBDaGFyVCBjb25zdCBjemVybyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6emVybzsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IG1pbnVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjptaW51czsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IHBsdXMgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46OnBsdXM7Ci0gICAgICAgICAgICBDaGFyVCBjb25zdCBjYXBpdGFsX2UgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46OmNhcGl0YWxfZTsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IGxvd2VyY2FzZV9lID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+Ojpsb3dlcmNhc2VfZTsKLQotICAgICAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxUPigwKTsKLQotICAgICAgICAgICAgaWYgKHBhcnNlX2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsdWUpKSByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmludF90eXBlIGludF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1hbnRpc3NhX2hvbGRlcl90eXBlPFQ+Ojp0eXBlIG1hbnRpc3NhX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbWFudGlzc2FfaG9sZGVyX3R5cGU8VD46OndpZGVfcmVzdWx0X3Qgd2lkZV9yZXN1bHRfdDsKLSAgICAgICAgICAgIGludF90eXBlIGNvbnN0IHplcm8gPSBUcmFpdHM6OnRvX2ludF90eXBlKGN6ZXJvKTsKLSAgICAgICAgICAgIGlmIChiZWdpbiA9PSBlbmQpIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgLyogR2V0dGluZyB0aGUgcGx1cy9taW51cyBzaWduICovCi0gICAgICAgICAgICBib29sIGhhc19taW51cyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKFRyYWl0czo6ZXEoKmJlZ2luLCBtaW51cykgKSB7Ci0gICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgaGFzX21pbnVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPT0gZW5kKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKFRyYWl0czo6ZXEoKmJlZ2luLCBwbHVzKSApIHsKLSAgICAgICAgICAgICAgICArK2JlZ2luOwotICAgICAgICAgICAgICAgIGlmIChiZWdpbiA9PSBlbmQpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBmb3VuZF9kZWNpbWFsID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sIGZvdW5kX251bWJlcl9iZWZvcmVfZXhwID0gZmFsc2U7Ci0gICAgICAgICAgICBpbnQgcG93X29mXzEwID0gMDsKLSAgICAgICAgICAgIG1hbnRpc3NhX3R5cGUgbWFudGlzc2E9MDsKLSAgICAgICAgICAgIGJvb2wgaXNfbWFudGlzc2FfZnVsbCA9IGZhbHNlOwotCi0gICAgICAgICAgICBjaGFyIGxlbmd0aF9zaW5jZV9sYXN0X2RlbGltID0gMDsKLQotICAgICAgICAgICAgd2hpbGUgKCBiZWdpbiAhPSBlbmQgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChmb3VuZF9kZWNpbWFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFdlIGFsbG93IG5vIHRob3VzYW5kX3NlcGFyYXRvcnMgYWZ0ZXIgZGVjaW1hbCBwb2ludCAqLwotCi0gICAgICAgICAgICAgICAgICAgIG1hbnRpc3NhX3R5cGUgdG1wX21hbnRpc3NhID0gbWFudGlzc2EgKiAxMHU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChUcmFpdHM6OmVxKCpiZWdpbiwgbG93ZXJjYXNlX2UpIHx8IFRyYWl0czo6ZXEoKmJlZ2luLCBjYXBpdGFsX2UpKSBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAqYmVnaW4gPCBjemVybyB8fCAqYmVnaW4gPj0gY3plcm8gKyAxMCApIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAgICBpc19tYW50aXNzYV9mdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdG1wX21hbnRpc3NhIC8gMTB1ICE9IG1hbnRpc3NhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHN0ZDo6bnVtZXJpY19saW1pdHM8bWFudGlzc2FfdHlwZT46Om1heCkoKS0oKmJlZ2luIC0gemVybykgPCB0bXBfbWFudGlzc2EKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX21hbnRpc3NhX2Z1bGwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC0tIHBvd19vZl8xMDsKLSAgICAgICAgICAgICAgICAgICAgbWFudGlzc2EgPSB0bXBfbWFudGlzc2E7Ci0gICAgICAgICAgICAgICAgICAgIG1hbnRpc3NhICs9ICpiZWdpbiAtIHplcm87Ci0KLSAgICAgICAgICAgICAgICAgICAgZm91bmRfbnVtYmVyX2JlZm9yZV9leHAgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCpiZWdpbiA+PSBjemVybyAmJiAqYmVnaW4gPCBjemVybyArIDEwKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIENoZWNraW5nIGZvciBtYW50aXNzYSBvdmVyZmxvdy4gSWYgb3ZlcmZsb3cgd2lsbAotICAgICAgICAgICAgICAgICAgICAgICAgICogb2NjdXIsIHRoZW0gd2Ugb25seSBpbmNyZWFzZSBtdWx0aXBseWVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnRpc3NhX3R5cGUgdG1wX21hbnRpc3NhID0gbWFudGlzc2EgKiAxMHU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiggICAgICFpc19tYW50aXNzYV9mdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRtcF9tYW50aXNzYSAvIDEwdSA9PSBtYW50aXNzYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3RkOjpudW1lcmljX2xpbWl0czxtYW50aXNzYV90eXBlPjo6bWF4KSgpLSgqYmVnaW4gLSB6ZXJvKSA+PSB0bXBfbWFudGlzc2EKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFudGlzc2EgPSB0bXBfbWFudGlzc2E7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFudGlzc2EgKz0gKmJlZ2luIC0gemVybzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX21hbnRpc3NhX2Z1bGwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrIHBvd19vZl8xMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfbnVtYmVyX2JlZm9yZV9leHAgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgKysgbGVuZ3RoX3NpbmNlX2xhc3RfZGVsaW07Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoVHJhaXRzOjplcSgqYmVnaW4sIGRlY2ltYWxfcG9pbnQpIHx8IFRyYWl0czo6ZXEoKmJlZ2luLCBsb3dlcmNhc2VfZSkgfHwgVHJhaXRzOjplcSgqYmVnaW4sIGNhcGl0YWxfZSkpIHsKLSNpZm5kZWYgTkROQk9PU1RfTEVYSUNBTF9DQVNUX0FTU1VNRV9DX0xPQ0FMRQotICAgICAgICAgICAgICAgICAgICAgICAgLyogSWYgKCB3ZSBuZWVkIHRvIGNoZWNrIGdyb3VwaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgIGFuZCAoICAgZ3JvdXBpbmcgbWlzc21hdGNoZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICBvciBncm91cGluZyBwb3NpdGlvbiBpcyBpbmNvcnJlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICBvciB3ZSBhcmUgdXNpbmcgdGhlIGdyb3VwaW5nIHBvc2l0aW9uIDAgdHdpY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgKiAgICApIHRoZW4gcmV0dXJuIGVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBncm91cGluZ19zaXplICYmIGZvdW5kX2dyb3VwaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhfc2luY2VfbGFzdF9kZWxpbSAhPSBncm91cGluZ1swXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBsYXN0X2dyb3VwaW5nX3Bvcz4xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChsYXN0X2dyb3VwaW5nX3Bvcz09MCAmJiBncm91cGluZ19zaXplPjEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICkgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKFRyYWl0czo6ZXEoKmJlZ2luLCBkZWNpbWFsX3BvaW50KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2RlY2ltYWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRfbnVtYmVyX2JlZm9yZV9leHAgJiYgYmVnaW49PWVuZCkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRfbnVtYmVyX2JlZm9yZV9leHApIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotI2lmbmRlZiBORE5CT09TVF9MRVhJQ0FMX0NBU1RfQVNTVU1FX0NfTE9DQUxFCi0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGdyb3VwaW5nX3NpemUgJiYgVHJhaXRzOjplcSgqYmVnaW4sIHRob3VzYW5kc19zZXApKXsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZvdW5kX2dyb3VwaW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEl0IGlzIG5vdCBoZSBmaXJzdCB0aW1lLCB3aGVuIHdlIGZpbmQgdGhvdXNhbmRzIHNlcGFyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzbyB3ZSBuZWVkIHRvIGNoZWssIGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBncm91cGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBlcXVhbCB0byBncm91cGluZ1tsYXN0X2dyb3VwaW5nX3Bvc10gKi8KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGhfc2luY2VfbGFzdF9kZWxpbSAhPSBncm91cGluZ1tsYXN0X2dyb3VwaW5nX3Bvc10gKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0X2dyb3VwaW5nX3BvcykgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGxhc3RfZ3JvdXBpbmdfcG9zOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aF9zaW5jZV9sYXN0X2RlbGltICE9IGdyb3VwaW5nW2xhc3RfZ3JvdXBpbmdfcG9zXSkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdlIGFyZSBjYWxsaW5nIHRoZSBncm91cGluZ1swXSB0d2ljZSwgd2hlbiBncm91cGluZyBzaXplIGlzIG1vcmUgdGhhbiAxICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cGluZ19zaXplPjF1ICYmIGxhc3RfZ3JvdXBpbmdfcG9zKzE8Z3JvdXBpbmdfc2l6ZSkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGltaXRlciBhdCB0aGUgYmVnaW5pbmcgJywwMDAnICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsZW5ndGhfc2luY2VfbGFzdF9kZWxpbSkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZ3JvdXBpbmcgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGhfc2luY2VfbGFzdF9kZWxpbSA+IGdyb3VwaW5nW2xhc3RfZ3JvdXBpbmdfcG9zXSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX3NpbmNlX2xhc3RfZGVsaW0gPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgKysgYmVnaW47Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGltaXRlciBhdCB0aGUgZW5kICcxMDAsJyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJlZ2luID09IGVuZCkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICArK2JlZ2luOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBFeHBvbmVudCBmb3VuZAotICAgICAgICAgICAgaWYgKCBiZWdpbiAhPSBlbmQgJiYgKFRyYWl0czo6ZXEoKmJlZ2luLCBsb3dlcmNhc2VfZSkgfHwgVHJhaXRzOjplcSgqYmVnaW4sIGNhcGl0YWxfZSkpICkgewotICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgIGlmICggYmVnaW4gPT0gZW5kICkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgYm9vbCBleHBfaGFzX21pbnVzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYoVHJhaXRzOjplcSgqYmVnaW4sIG1pbnVzKSkgewotICAgICAgICAgICAgICAgICAgICBleHBfaGFzX21pbnVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgICAgIGlmICggYmVnaW4gPT0gZW5kICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoVHJhaXRzOjplcSgqYmVnaW4sIHBsdXMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgICAgICBpZiAoIGJlZ2luID09IGVuZCApIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpbnQgZXhwX3Bvd19vZl8xMCA9IDA7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKCBiZWdpbiAhPSBlbmQgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAqYmVnaW4gPCBjemVybwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICpiZWdpbiA+PSBjemVybyArIDEwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZXhwX3Bvd19vZl8xMCAqIDEwIDwgZXhwX3Bvd19vZl8xMCkgLyogT3ZlcmZsb3dzIGFyZSBjaGVja2VkIGxvd2VyIG1vcmUgcHJlY2lzZWx5Ki8KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICBleHBfcG93X29mXzEwICo9IDEwOwotICAgICAgICAgICAgICAgICAgICBleHBfcG93X29mXzEwICs9ICpiZWdpbiAtIHplcm87Ci0gICAgICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGV4cF9wb3dfb2ZfMTAgKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIE92ZXJmbG93cyBhcmUgY2hlY2tlZCBsb3dlciAqLwotICAgICAgICAgICAgICAgICAgICBpZiAoIGV4cF9oYXNfbWludXMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3dfb2ZfMTAgLT0gZXhwX3Bvd19vZl8xMDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvd19vZl8xMCArPSBleHBfcG93X29mXzEwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBXZSBuZWVkIGEgbW9yZSBhY2N1cmF0ZSBhbGdvcml0aG0uLi4gV2UgY2FuIG5vdCB1c2UgY3VycmVudCBhbGdvcml0aG0KLSAgICAgICAgICAgICAqIHdpdGggbG9uZyBkb3VibGVzIChhbmQgd2l0aCBkb3VibGVzIGlmIHNpemVvZihkb3VibGUpPT1zaXplb2YobG9uZyBkb3VibGUpKS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgY29uc3Qgd2lkZV9yZXN1bHRfdCByZXN1bHQgPSBzdGQ6OnBvdyhzdGF0aWNfY2FzdDx3aWRlX3Jlc3VsdF90PigxMC4wKSwgcG93X29mXzEwKSAqIG1hbnRpc3NhOwotICAgICAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxUPiggaGFzX21pbnVzID8gKG5kbmJvb3N0OjptYXRoOjpjaGFuZ2VzaWduKShyZXN1bHQpIDogcmVzdWx0KTsKLQotICAgICAgICAgICAgaWYgKCAobmRuYm9vc3Q6Om1hdGg6OmlzaW5mKSh2YWx1ZSkgfHwgKG5kbmJvb3N0OjptYXRoOjppc25hbikodmFsdWUpICkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotLy8gVW5zaWxlbmNlIGJ1Z2d5IE1TIHdhcm5pbmdzIGxpa2UgQzQyNDQ6ICcrPScgOiBjb252ZXJzaW9uIGZyb20gJ2ludCcgdG8gJ3Vuc2lnbmVkIHNob3J0JywgcG9zc2libGUgbG9zcyBvZiBkYXRhIAotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA9PSAxNDAwKSAKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkgCi0jZW5kaWYgCi0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBwYXJzZXJfYnVmCi0gICAgewotICAgICAgICAvLwotICAgICAgICAvLyBjbGFzcyBwYXJzZXJfYnVmOgotICAgICAgICAvLyBhY3RzIGFzIGEgc3RyZWFtIGJ1ZmZlciB3aGljaCB3cmFwcyBhcm91bmQgYSBwYWlyIG9mIHBvaW50ZXJzCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoaXMgY2xhc3MgaXMgY29waWVkIChhbmQgc2xpZ2h0bHkgY2hhbmdlZCkgZnJvbQotICAgICAgICAvLyBuZG5ib29zdC9yZWdleC92NC9jcHBfcmVnZXhfdHJhaXRzLmhwcAotICAgICAgICAvLyBUaGFua3MgSm9obiBNYWRkb2NrIGZvciBpdCEgKHByZXZpb3VzIHZlcnNpb24gaGFkIHNvbWUKLSAgICAgICAgLy8gcHJvYmxlbXMgd2l0aCBsaWJjKysgYW5kIHNvbWUgb3RoZXIgU1RMIGltcGxlbWVudGF0aW9ucykKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEJ1ZmZlclR5cGUsIGNsYXNzIGNoYXJUPgotICAgICAgICBjbGFzcyBwYXJzZXJfYnVmIDogcHVibGljIEJ1ZmZlclR5cGUgewotICAgICAgICAgICB0eXBlZGVmIEJ1ZmZlclR5cGUgYmFzZV90eXBlOwotICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6aW50X3R5cGUgaW50X3R5cGU7Ci0gICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6cG9zX3R5cGUgcG9zX3R5cGU7Ci0gICAgICAgICAgIHR5cGVkZWYgOjpzdGQ6OnN0cmVhbXNpemUgc3RyZWFtc2l6ZTsKLSAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6Om9mZl90eXBlIG9mZl90eXBlOwotCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgcGFyc2VyX2J1ZigpIDogYmFzZV90eXBlKCkgeyBzZXRidWYoMCwgMCk7IH0KLSAgICAgICAgICAgY29uc3QgY2hhclQqIGdldG5leHQoKSB7IHJldHVybiB0aGlzLT5ncHRyKCk7IH0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLSAgICAgICAgICAgIHVzaW5nIGJhc2VfdHlwZTo6cHB0cjsKLSAgICAgICAgICAgIHVzaW5nIGJhc2VfdHlwZTo6cGJhc2U7Ci0jZWxzZQotICAgICAgICAgICAgY2hhclQqIHBwdHIoKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OnBwdHIoKTsgfQotICAgICAgICAgICAgY2hhclQqIHBiYXNlKCkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjpwYmFzZSgpOyB9Ci0jZW5kaWYKLSAgICAgICAgICAgYmFzZV90eXBlKiBzZXRidWYoY2hhcl90eXBlKiBzLCBzdHJlYW1zaXplIG4pIHsKLSAgICAgICAgICAgICAgIHRoaXMtPnNldGcocywgcywgcyArIG4pOwotICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICBwb3NfdHlwZSBzZWVrcG9zKHBvc190eXBlIHNwLCA6OnN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoKSB7Ci0gICAgICAgICAgICAgICBpZih3aGljaCAmIDo6c3RkOjppb3NfYmFzZTo6b3V0KQotICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICAgICAgICAgICAgICBvZmZfdHlwZSBzaXplID0gc3RhdGljX2Nhc3Q8b2ZmX3R5cGU+KHRoaXMtPmVncHRyKCkgLSB0aGlzLT5lYmFjaygpKTsKLSAgICAgICAgICAgICAgIGNoYXJUKiBnID0gdGhpcy0+ZWJhY2soKTsKLSAgICAgICAgICAgICAgIGlmKG9mZl90eXBlKHNwKSA8PSBzaXplKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgdGhpcy0+c2V0ZyhnLCBnICsgb2ZmX3R5cGUoc3ApLCBnICsgc2l6ZSk7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICBwb3NfdHlwZSBzZWVrb2ZmKG9mZl90eXBlIG9mZiwgOjpzdGQ6Omlvc19iYXNlOjpzZWVrZGlyIHdheSwgOjpzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSB3aGljaCkgewotICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aW50X3Q8c2l6ZW9mKHdheSkgKiBDSEFSX0JJVD46OmxlYXN0IGNhc3RfdHlwZTsKLQotICAgICAgICAgICAgICAgaWYod2hpY2ggJiA6OnN0ZDo6aW9zX2Jhc2U6Om91dCkKLSAgICAgICAgICAgICAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3Qgc2l6ZSA9IHRoaXMtPmVncHRyKCkgLSB0aGlzLT5lYmFjaygpOwotICAgICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3QgcG9zID0gdGhpcy0+Z3B0cigpIC0gdGhpcy0+ZWJhY2soKTsKLSAgICAgICAgICAgICAgIGNoYXJUKiBnID0gdGhpcy0+ZWJhY2soKTsKLSAgICAgICAgICAgICAgIHN3aXRjaChzdGF0aWNfY2FzdDxjYXN0X3R5cGU+KHdheSkpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBjYXNlIDo6c3RkOjppb3NfYmFzZTo6YmVnOgotICAgICAgICAgICAgICAgICAgaWYoKG9mZiA8IDApIHx8IChvZmYgPiBzaXplKSkKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgdGhpcy0+c2V0ZyhnLCBnICsgb2ZmLCBnICsgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgIGNhc2UgOjpzdGQ6Omlvc19iYXNlOjplbmQ6Ci0gICAgICAgICAgICAgICAgICBpZigob2ZmIDwgMCkgfHwgKG9mZiA+IHNpemUpKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICB0aGlzLT5zZXRnKGcsIGcgKyBzaXplIC0gb2ZmLCBnICsgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgIGNhc2UgOjpzdGQ6Omlvc19iYXNlOjpjdXI6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCBuZXdwb3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4ocG9zICsgb2ZmKTsKLSAgICAgICAgICAgICAgICAgIGlmKChuZXdwb3MgPCAwKSB8fCAobmV3cG9zID4gc2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnNldGcoZywgZyArIG5ld3BvcywgZyArIHNpemUpOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICBkZWZhdWx0OiA7Ci0gICAgICAgICAgICAgICB9Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2VuZGlmCi0gICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cG9zX3R5cGU+KHRoaXMtPmdwdHIoKSAtIHRoaXMtPmViYWNrKCkpOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgcGFyc2VyX2J1ZiYgb3BlcmF0b3I9KGNvbnN0IHBhcnNlcl9idWYmKTsKLSAgICAgICAgICAgcGFyc2VyX2J1Zihjb25zdCBwYXJzZXJfYnVmJik7Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgICAgc3RydWN0IGRvX25vdF9jb25zdHJ1Y3Rfb3V0X3N0cmVhbV90e307Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBvcHRpbWl6ZWQgc3RyZWFtIHdyYXBwZXIKLSAgICB7Ci0gICAgICAgIC8vIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBTb3VyY2UgaGFzIGFuIHVwcGVyIGxpbWl0LgotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgQ2hhclQgLy8gYSByZXN1bHQgb2Ygd2lkZXN0X2NoYXIgdHJhbnNmb3JtYXRpb24KLSAgICAgICAgICAgICAgICAsIGNsYXNzIFRyYWl0cyAvLyB1c3VhbGx5IGNoYXJfdHJhaXRzPENoYXJUPgotICAgICAgICAgICAgICAgICwgYm9vbCBSZXF1aXJlc1N0cmluZ2J1ZmZlcgotICAgICAgICAgICAgICAgID4KLSAgICAgICAgY2xhc3MgbGV4aWNhbF9zdHJlYW1fbGltaXRlZF9zcmMKLSAgICAgICAgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pCi0gICAgICAgICAgICB0eXBlZGVmIHN0ZDo6b3N0cnN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtX3Q7Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpCi0gICAgICAgICAgICB0eXBlZGVmIHN0ZDo6b3N0cmluZ3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIHBhcnNlcl9idWY8c3RkOjpzdHJlYW1idWYsIGNoYXI+ICAgICAgICBidWZmZXJfdDsKLSNlbHNlCi0gICAgICAgICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmluZ3N0cmVhbTxDaGFyVCwgVHJhaXRzPiAgICAgICAgICAgICAgICAgb3V0X3N0cmVhbV90OwotICAgICAgICAgICAgdHlwZWRlZiBwYXJzZXJfYnVmPHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoYXJULCBUcmFpdHM+LCBDaGFyVD4gIGJ1ZmZlcl90OwotI2VuZGlmCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICBSZXF1aXJlc1N0cmluZ2J1ZmZlciwKLSAgICAgICAgICAgICAgICBvdXRfc3RyZWFtX3QsCi0gICAgICAgICAgICAgICAgZG9fbm90X2NvbnN0cnVjdF9vdXRfc3RyZWFtX3QKLSAgICAgICAgICAgID46OnR5cGUgZGVkdWNlZF9vdXRfc3RyZWFtX3Q7Ci0KLSAgICAgICAgICAgIC8vIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIFNvdXJjZSBpcyB3cml0dGVuIHRvIFtzdGFydCwgZmluaXNoKS4KLSAgICAgICAgICAgIENoYXJUKiBzdGFydDsKLSAgICAgICAgICAgIENoYXJUKiBmaW5pc2g7Ci0gICAgICAgICAgICBkZWR1Y2VkX291dF9zdHJlYW1fdCBvdXRfc3RyZWFtOwotCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIGxleGljYWxfc3RyZWFtX2xpbWl0ZWRfc3JjKENoYXJUKiBzdGEsIENoYXJUKiBmaW4pIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICAgIDogc3RhcnQoc3RhKQotICAgICAgICAgICAgICAsIGZpbmlzaChmaW4pCi0gICAgICAgICAgICB7fQotCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAvLyBVbmRlZmluZWQ6Ci0gICAgICAgICAgICBsZXhpY2FsX3N0cmVhbV9saW1pdGVkX3NyYyhsZXhpY2FsX3N0cmVhbV9saW1pdGVkX3NyYyBjb25zdCYpOwotICAgICAgICAgICAgdm9pZCBvcGVyYXRvcj0obGV4aWNhbF9zdHJlYW1fbGltaXRlZF9zcmMgY29uc3QmKTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBIRUxQRVIgRlVOQ1RJT05TIEZPUiBPUEVSQVRPUlMgPDwgKCAuLi4gKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICAgICAgICAgIGJvb2wgc2hsX2NoYXIoQ2hhclQgY2gpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVHJhaXRzOjphc3NpZ24oKnN0YXJ0LCBjaCk7Ci0gICAgICAgICAgICAgICAgZmluaXNoID0gc3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgYm9vbCBzaGxfY2hhcihUIGNoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCggc2l6ZW9mKFQpIDw9IHNpemVvZihDaGFyVCkpICwKLSAgICAgICAgICAgICAgICAgICAgIm5kbmJvb3N0OjpsZXhpY2FsX2Nhc3QgZG9lcyBub3Qgc3VwcG9ydCBuYXJyb3dpbmcgb2YgY2hhciB0eXBlcy4iCi0gICAgICAgICAgICAgICAgICAgICJVc2UgbmRuYm9vc3Q6OmxvY2FsZSBpbnN0ZWFkIiApOwotI2lmbmRlZiBORE5CT09TVF9MRVhJQ0FMX0NBU1RfQVNTVU1FX0NfTE9DQUxFCi0gICAgICAgICAgICAgICAgc3RkOjpsb2NhbGUgbG9jOwotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IHcgPSBORE5CT09TVF9VU0VfRkFDRVQoc3RkOjpjdHlwZTxDaGFyVD4sIGxvYykud2lkZW4oY2gpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCB3ID0gc3RhdGljX2Nhc3Q8Q2hhclQ+KGNoKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIFRyYWl0czo6YXNzaWduKCpzdGFydCwgdyk7Ci0gICAgICAgICAgICAgICAgZmluaXNoID0gc3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIGJvb2wgc2hsX2NoYXJfYXJyYXkoQ2hhclQgY29uc3QqIHN0cikgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGFydCA9IGNvbnN0X2Nhc3Q8Q2hhclQqPihzdHIpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHN0YXJ0ICsgVHJhaXRzOjpsZW5ndGgoc3RyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBib29sIHNobF9jaGFyX2FycmF5KFQgY29uc3QqIHN0cikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRygoIHNpemVvZihUKSA8PSBzaXplb2YoQ2hhclQpKSwKLSAgICAgICAgICAgICAgICAgICAgIm5kbmJvb3N0OjpsZXhpY2FsX2Nhc3QgZG9lcyBub3Qgc3VwcG9ydCBuYXJyb3dpbmcgb2YgY2hhciB0eXBlcy4iCi0gICAgICAgICAgICAgICAgICAgICJVc2UgbmRuYm9vc3Q6OmxvY2FsZSBpbnN0ZWFkIiApOwotICAgICAgICAgICAgICAgIHJldHVybiBzaGxfaW5wdXRfc3RyZWFtYWJsZShzdHIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBib29sIHNobF9jaGFyX2FycmF5X2xpbWl0ZWQoQ2hhclQgY29uc3QqIHN0ciwgc3RkOjpzaXplX3QgbWF4X3NpemUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSBjb25zdF9jYXN0PENoYXJUKj4oc3RyKTsKLSAgICAgICAgICAgICAgICBmaW5pc2ggPSBzdGQ6OmZpbmQoc3RhcnQsIHN0YXJ0ICsgbWF4X3NpemUsIFRyYWl0czo6dG9fY2hhcl90eXBlKDApKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRTdHJlYW1hYmxlPgotICAgICAgICAgICAgYm9vbCBzaGxfaW5wdXRfc3RyZWFtYWJsZShJbnB1dFN0cmVhbWFibGUmIGlucHV0KQotICAgICAgICAgICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpCi0gICAgICAgICAgICAgICAgLy8gSWYgeW91IGhhdmUgY29tcGlsYXRpb24gZXJyb3IgYXQgdGhpcyBwb2ludCwgdGhhbiB5b3VyIFNUTCBsaWJyYXJ5Ci0gICAgICAgICAgICAgICAgLy8gZG9lcyBub3Qgc3VwcG9ydCBzdWNoIGNvbnZlcnNpb25zLiBUcnkgdXBkYXRpbmcgaXQuCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgobmRuYm9vc3Q6OmlzX3NhbWU8Y2hhciwgQ2hhclQ+Ojp2YWx1ZSkpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgYm9vbCBjb25zdCByZXN1bHQgPSAhKG91dF9zdHJlYW0gPDwgaW5wdXQpLmZhaWwoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBidWZmZXJfdCogY29uc3QgcCA9IHN0YXRpY19jYXN0PGJ1ZmZlcl90Kj4oCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoYXJULCBUcmFpdHM+Kj4ob3V0X3N0cmVhbS5yZGJ1ZigpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSBwLT5wYmFzZSgpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHAtPnBwdHIoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgICAgIGlubGluZSBib29sIHNobF9zaWduZWQoVCBuKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXJ0ID0gbGNhc3RfcHV0X3Vuc2lnbmVkPFRyYWl0cz4obGNhc3RfdG9fdW5zaWduZWQobiksIGZpbmlzaCk7Ci0gICAgICAgICAgICAgICAgaWYobiA8IDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAtLXN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICAgICAgICAgIFRyYWl0czo6YXNzaWduKCpzdGFydCwgbWludXMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFNvbWVDaGFyVD4KLSAgICAgICAgICAgIGJvb2wgc2hsX3JlYWxfdHlwZShjb25zdCBUJiB2YWwsIFNvbWVDaGFyVCogYmVnaW4sIFNvbWVDaGFyVComIGVuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAocHV0X2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsKSkgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgbGNhc3Rfc2V0X3ByZWNpc2lvbihvdXRfc3RyZWFtLCAmdmFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hsX2lucHV0X3N0cmVhbWFibGUodmFsKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RhdGljIGJvb2wgc2hsX3JlYWxfdHlwZShmbG9hdCB2YWwsIGNoYXIqIGJlZ2luLCBjaGFyKiYgZW5kKQotICAgICAgICAgICAgeyAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dF9pbmZfbmFuKGJlZ2luLCBlbmQsIHZhbCkpIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB2YWxfYXNfZG91YmxlID0gdmFsOwotICAgICAgICAgICAgICAgIGVuZCA9IGJlZ2luICsgCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE0MDApICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmX3MoYmVnaW4sIGVuZC1iZWdpbiwKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoYmVnaW4sIAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICIlLipnIiwgc3RhdGljX2Nhc3Q8aW50PihuZG5ib29zdDo6ZGV0YWlsOjpsY2FzdF9nZXRfcHJlY2lzaW9uPGZsb2F0PigpKSwgdmFsX2FzX2RvdWJsZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZCA+IGJlZ2luOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBzaGxfcmVhbF90eXBlKGRvdWJsZSB2YWwsIGNoYXIqIGJlZ2luLCBjaGFyKiYgZW5kKQotICAgICAgICAgICAgeyAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dF9pbmZfbmFuKGJlZ2luLCBlbmQsIHZhbCkpIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGVuZCA9IGJlZ2luICsgCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE0MDApICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmX3MoYmVnaW4sIGVuZC1iZWdpbiwKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoYmVnaW4sIAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICIlLipnIiwgc3RhdGljX2Nhc3Q8aW50PihuZG5ib29zdDo6ZGV0YWlsOjpsY2FzdF9nZXRfcHJlY2lzaW9uPGRvdWJsZT4oKSksIHZhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZCA+IGJlZ2luOwotICAgICAgICAgICAgfQotCi0jaWZuZGVmIF9fTUlOR1czMl9fCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBzaGxfcmVhbF90eXBlKGxvbmcgZG91YmxlIHZhbCwgY2hhciogYmVnaW4sIGNoYXIqJiBlbmQpCi0gICAgICAgICAgICB7ICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgICAgICBpZiAocHV0X2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsKSkgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTQwMCkgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGZfcyhiZWdpbiwgZW5kLWJlZ2luLAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihiZWdpbiwgCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgIiUuKkxnIiwgc3RhdGljX2Nhc3Q8aW50PihuZG5ib29zdDo6ZGV0YWlsOjpsY2FzdF9nZXRfcHJlY2lzaW9uPGxvbmcgZG91YmxlPigpKSwgdmFsICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZCA+IGJlZ2luOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NXUFJJTlRGKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKLSAgICAgICAgICAgIHN0YXRpYyBib29sIHNobF9yZWFsX3R5cGUoZmxvYXQgdmFsLCB3Y2hhcl90KiBiZWdpbiwgd2NoYXJfdComIGVuZCkKLSAgICAgICAgICAgIHsgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICAgICAgICAgIGlmIChwdXRfaW5mX25hbihiZWdpbiwgZW5kLCB2YWwpKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgdmFsX2FzX2RvdWJsZSA9IHZhbDsKLSAgICAgICAgICAgICAgICBlbmQgPSBiZWdpbiArIHN3cHJpbnRmKGJlZ2luLCBlbmQtYmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiUuKmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihuZG5ib29zdDo6ZGV0YWlsOjpsY2FzdF9nZXRfcHJlY2lzaW9uPGZsb2F0ID4oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxfYXNfZG91YmxlICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZCA+IGJlZ2luOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBzaGxfcmVhbF90eXBlKGRvdWJsZSB2YWwsIHdjaGFyX3QqIGJlZ2luLCB3Y2hhcl90KiYgZW5kKQotICAgICAgICAgICAgeyAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dF9pbmZfbmFuKGJlZ2luLCBlbmQsIHZhbCkpIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGVuZCA9IGJlZ2luICsgc3dwcmludGYoYmVnaW4sIGVuZC1iZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJS4qZyIsIHN0YXRpY19jYXN0PGludD4obmRuYm9vc3Q6OmRldGFpbDo6bGNhc3RfZ2V0X3ByZWNpc2lvbjxkb3VibGUgPigpKSwgdmFsICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZCA+IGJlZ2luOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBzaGxfcmVhbF90eXBlKGxvbmcgZG91YmxlIHZhbCwgd2NoYXJfdCogYmVnaW4sIHdjaGFyX3QqJiBlbmQpCi0gICAgICAgICAgICB7ICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgICAgICBpZiAocHV0X2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsKSkgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyBzd3ByaW50ZihiZWdpbiwgZW5kLWJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlLipMZyIsIHN0YXRpY19jYXN0PGludD4obmRuYm9vc3Q6OmRldGFpbDo6bGNhc3RfZ2V0X3ByZWNpc2lvbjxsb25nIGRvdWJsZSA+KCkpLCB2YWwgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5kID4gYmVnaW47Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBPUEVSQVRPUlMgPDwgKCAuLi4gKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgQWxsb2M+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQsVHJhaXRzLEFsbG9jPiBjb25zdCYgc3RyKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXJ0ID0gY29uc3RfY2FzdDxDaGFyVCo+KHN0ci5kYXRhKCkpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHN0YXJ0ICsgc3RyLmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBBbGxvYz4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8Q2hhclQsVHJhaXRzLEFsbG9jPiBjb25zdCYgc3RyKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXJ0ID0gY29uc3RfY2FzdDxDaGFyVCo+KHN0ci5kYXRhKCkpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHN0YXJ0ICsgc3RyLmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBjemVybyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6emVybzsKLSAgICAgICAgICAgICAgICBUcmFpdHM6OmFzc2lnbigqc3RhcnQsIFRyYWl0czo6dG9fY2hhcl90eXBlKGN6ZXJvICsgdmFsdWUpKTsKLSAgICAgICAgICAgICAgICBmaW5pc2ggPSBzdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBpdGVyYXRvcl9yYW5nZTxDaGFyVCo+JiBybmcpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSBybmcuYmVnaW4oKTsKLSAgICAgICAgICAgICAgICBmaW5pc2ggPSBybmcuZW5kKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IAotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY29uc3QgaXRlcmF0b3JfcmFuZ2U8Y29uc3QgQ2hhclQqPiYgcm5nKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXJ0ID0gY29uc3RfY2FzdDxDaGFyVCo+KHJuZy5iZWdpbigpKTsKLSAgICAgICAgICAgICAgICBmaW5pc2ggPSBjb25zdF9jYXN0PENoYXJUKj4ocm5nLmVuZCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBpdGVyYXRvcl9yYW5nZTxjb25zdCBzaWduZWQgY2hhcio+JiBybmcpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgqdGhpcykgPDwgaXRlcmF0b3JfcmFuZ2U8Y2hhcio+KAotICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihybmcuYmVnaW4oKSkpLAotICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihybmcuZW5kKCkpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBpdGVyYXRvcl9yYW5nZTxjb25zdCB1bnNpZ25lZCBjaGFyKj4mIHJuZykgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCp0aGlzKSA8PCBpdGVyYXRvcl9yYW5nZTxjaGFyKj4oCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJuZy5iZWdpbigpKSksCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJuZy5lbmQoKSkpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IGl0ZXJhdG9yX3JhbmdlPHNpZ25lZCBjaGFyKj4mIHJuZykgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCp0aGlzKSA8PCBpdGVyYXRvcl9yYW5nZTxjaGFyKj4oCi0gICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJuZy5iZWdpbigpKSwKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocm5nLmVuZCgpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBpdGVyYXRvcl9yYW5nZTx1bnNpZ25lZCBjaGFyKj4mIHJuZykgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCp0aGlzKSA8PCBpdGVyYXRvcl9yYW5nZTxjaGFyKj4oCi0gICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJuZy5iZWdpbigpKSwKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocm5nLmVuZCgpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjaGFyIGNoKSAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXIoY2gpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwodW5zaWduZWQgY2hhciBjaCkgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHN0YXRpY19jYXN0PGNoYXI+KGNoKSk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzaWduZWQgY2hhciBjaCkgICAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4oY2gpKTsgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwod2NoYXJfdCBjb25zdCogc3RyKSAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5KHN0cik7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PCh3Y2hhcl90ICogc3RyKSAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXJfYXJyYXkoc3RyKTsgfQotI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHdjaGFyX3QgY2gpICAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcihjaCk7IH0KLSNlbmRpZgotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY2hhcjE2X3QgY2gpICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyKGNoKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNoYXIxNl90ICogc3RyKSAgICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcl9hcnJheShzdHIpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY2hhcjE2X3QgY29uc3QgKiBzdHIpICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5KHN0cik7IH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTKQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNoYXIzMl90IGNoKSAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcihjaCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjaGFyMzJfdCAqIHN0cikgICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXJfYXJyYXkoc3RyKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNoYXIzMl90IGNvbnN0ICogc3RyKSAgICAgICB7IHJldHVybiBzaGxfY2hhcl9hcnJheShzdHIpOyB9Ci0jZW5kaWYKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PCh1bnNpZ25lZCBjaGFyIGNvbnN0KiBjaCkgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyIGNvbnN0Kj4oY2gpKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHVuc2lnbmVkIGNoYXIgKiBjaCkgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PGNoYXIgKj4oY2gpKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHNpZ25lZCBjaGFyIGNvbnN0KiBjaCkgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PGNoYXIgY29uc3QqPihjaCkpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc2lnbmVkIGNoYXIgKiBjaCkgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPihjaCkpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY2hhciBjb25zdCogc3RyKSAgICAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5KHN0cik7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjaGFyKiBzdHIpICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXJfYXJyYXkoc3RyKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHNob3J0IG4pICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfc2lnbmVkKG4pOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoaW50IG4pICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9zaWduZWQobik7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChsb25nIG4pICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX3NpZ25lZChuKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHVuc2lnbmVkIHNob3J0IG4pICAgICAgICAgICB7IHN0YXJ0ID0gbGNhc3RfcHV0X3Vuc2lnbmVkPFRyYWl0cz4obiwgZmluaXNoKTsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PCh1bnNpZ25lZCBpbnQgbikgICAgICAgICAgICAgeyBzdGFydCA9IGxjYXN0X3B1dF91bnNpZ25lZDxUcmFpdHM+KG4sIGZpbmlzaCk7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBuKSAgICAgICAgICAgIHsgc3RhcnQgPSBsY2FzdF9wdXRfdW5zaWduZWQ8VHJhaXRzPihuLCBmaW5pc2gpOyByZXR1cm4gdHJ1ZTsgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgbikgICB7IHN0YXJ0ID0gbGNhc3RfcHV0X3Vuc2lnbmVkPFRyYWl0cz4obiwgZmluaXNoKTsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgbikgICAgeyByZXR1cm4gc2hsX3NpZ25lZChuKTsgfQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwodW5zaWduZWQgX19pbnQ2NCBuKSAgICAgICAgIHsgc3RhcnQgPSBsY2FzdF9wdXRfdW5zaWduZWQ8VHJhaXRzPihuLCBmaW5pc2gpOyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KCAgICAgICAgIF9faW50NjQgbikgICAgICAgICB7IHJldHVybiBzaGxfc2lnbmVkKG4pOyB9Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgKLSAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUmIG4pICAgeyBzdGFydCA9IGxjYXN0X3B1dF91bnNpZ25lZDxUcmFpdHM+KG4sIGZpbmlzaCk7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBuZG5ib29zdDo6aW50MTI4X3R5cGUmIG4pICAgIHsgcmV0dXJuIHNobF9zaWduZWQobik7IH0KLSNlbmRpZgotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoZmxvYXQgdmFsKSAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9yZWFsX3R5cGUodmFsLCBzdGFydCwgZmluaXNoKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGRvdWJsZSB2YWwpICAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfcmVhbF90eXBlKHZhbCwgc3RhcnQsIGZpbmlzaCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChsb25nIGRvdWJsZSB2YWwpICAgICAgICAgICAgewotI2lmbmRlZiBfX01JTkdXMzJfXwotICAgICAgICAgICAgICAgIHJldHVybiBzaGxfcmVhbF90eXBlKHZhbCwgc3RhcnQsIGZpbmlzaCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBzaGxfcmVhbF90eXBlKHN0YXRpY19jYXN0PGRvdWJsZT4odmFsKSwgc3RhcnQsIGZpbmlzaCk7Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwobmRuYm9vc3Q6OmFycmF5PENoYXJULCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcl9hcnJheV9saW1pdGVkKGlucHV0LmJlZ2luKCksIE4pOyB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KG5kbmJvb3N0OjphcnJheTx1bnNpZ25lZCBjaGFyLCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PG5kbmJvb3N0OjphcnJheTxjaGFyLCBOPiBjb25zdCYgPihpbnB1dCkpOyB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KG5kbmJvb3N0OjphcnJheTxzaWduZWQgY2hhciwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y2hhciwgTj4gY29uc3QmID4oaW5wdXQpKTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChuZG5ib29zdDo6YXJyYXk8Y29uc3QgQ2hhclQsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5X2xpbWl0ZWQoaW5wdXQuYmVnaW4oKSwgTik7IH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwobmRuYm9vc3Q6OmFycmF5PGNvbnN0IHVuc2lnbmVkIGNoYXIsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8bmRuYm9vc3Q6OmFycmF5PGNvbnN0IGNoYXIsIE4+IGNvbnN0JiA+KGlucHV0KSk7IH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwobmRuYm9vc3Q6OmFycmF5PGNvbnN0IHNpZ25lZCBjaGFyLCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PG5kbmJvb3N0OjphcnJheTxjb25zdCBjaGFyLCBOPiBjb25zdCYgPihpbnB1dCkpOyB9Ci0gCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc3RkOjphcnJheTxDaGFyVCwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyAKLSAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc2l6ZSgpKSByZXR1cm4gc2hsX2NoYXJfYXJyYXlfbGltaXRlZCgmaW5wdXRbMF0sIE4pOwotICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHRydWU7IAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzdGQ6OmFycmF5PHVuc2lnbmVkIGNoYXIsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8bmRuYm9vc3Q6OmFycmF5PGNoYXIsIE4+IGNvbnN0JiA+KGlucHV0KSk7IH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc3RkOjphcnJheTxzaWduZWQgY2hhciwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y2hhciwgTj4gY29uc3QmID4oaW5wdXQpKTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzdGQ6OmFycmF5PGNvbnN0IENoYXJULCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zaXplKCkpIHJldHVybiBzaGxfY2hhcl9hcnJheV9saW1pdGVkKCZpbnB1dFswXSwgTik7Ci0gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gdHJ1ZTsgCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHN0ZDo6YXJyYXk8Y29uc3QgdW5zaWduZWQgY2hhciwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y29uc3QgY2hhciwgTj4gY29uc3QmID4oaW5wdXQpKTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzdGQ6OmFycmF5PGNvbnN0IHNpZ25lZCBjaGFyLCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PG5kbmJvb3N0OjphcnJheTxjb25zdCBjaGFyLCBOPiBjb25zdCYgPihpbnB1dCkpOyB9Ci0jZW5kaWYKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEluU3RyZWFtYWJsZT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBJblN0cmVhbWFibGUmIGlucHV0KSAgeyByZXR1cm4gc2hsX2lucHV0X3N0cmVhbWFibGUoaW5wdXQpOyB9Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogSEVMUEVSIEZVTkNUSU9OUyBGT1IgT1BFUkFUT1JTID4+ICggLi4uICkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgICAgIHByaXZhdGU6Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPgotICAgICAgICAgICAgYm9vbCBzaHJfdW5zaWduZWQoVHlwZSYgb3V0cHV0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PSBmaW5pc2gpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICAgICAgQ2hhclQgY29uc3QgcGx1cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6cGx1czsKLSAgICAgICAgICAgICAgICBib29sIGhhc19taW51cyA9IGZhbHNlOwotCi0gICAgICAgICAgICAgICAgLyogV2Ugd29uYHQgdXNlIGBzdGFydCcgYW55IG1vcmUsIHNvIG5vIG5lZWQgaW4gZGVjcmVtZW50aW5nIGl0IGFmdGVyICovCi0gICAgICAgICAgICAgICAgaWYgKCBUcmFpdHM6OmVxKG1pbnVzLCpzdGFydCkgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKytzdGFydDsKLSAgICAgICAgICAgICAgICAgICAgaGFzX21pbnVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBUcmFpdHM6OmVxKCBwbHVzLCAqc3RhcnQgKSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICArK3N0YXJ0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGJvb2wgY29uc3Qgc3VjY2VlZCA9IGxjYXN0X3JldF91bnNpZ25lZDxUcmFpdHM+KG91dHB1dCwgc3RhcnQsIGZpbmlzaCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaGFzX21pbnVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0YXRpY19jYXN0PFR5cGU+KDB1IC0gb3V0cHV0KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci0gICAgICAgICAgICBib29sIHNocl9zaWduZWQoVHlwZSYgb3V0cHV0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PSBmaW5pc2gpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICAgICAgQ2hhclQgY29uc3QgcGx1cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6cGx1czsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbWFrZV91bnNpZ25lZDxUeXBlPjo6dHlwZSB1dHlwZTsKLSAgICAgICAgICAgICAgICB1dHlwZSBvdXRfdG1wID0wOwotICAgICAgICAgICAgICAgIGJvb2wgaGFzX21pbnVzID0gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAvKiBXZSB3b25gdCB1c2UgYHN0YXJ0JyBhbnkgbW9yZSwgc28gbm8gbmVlZCBpbiBkZWNyZW1lbnRpbmcgaXQgYWZ0ZXIgKi8KLSAgICAgICAgICAgICAgICBpZiAoIFRyYWl0czo6ZXEobWludXMsKnN0YXJ0KSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICArK3N0YXJ0OwotICAgICAgICAgICAgICAgICAgICBoYXNfbWludXMgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIFRyYWl0czo6ZXEocGx1cywgKnN0YXJ0KSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICArK3N0YXJ0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGJvb2wgc3VjY2VlZCA9IGxjYXN0X3JldF91bnNpZ25lZDxUcmFpdHM+KG91dF90bXAsIHN0YXJ0LCBmaW5pc2gpOwotICAgICAgICAgICAgICAgIGlmIChoYXNfbWludXMpIHsKLSAgICAgICAgICAgICAgICAgICAgdXR5cGUgY29uc3QgY29tcF92YWwgPSAoc3RhdGljX2Nhc3Q8dXR5cGU+KDEpIDw8IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZT46OmRpZ2l0cyk7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2NlZWQgPSBzdWNjZWVkICYmIG91dF90bXA8PWNvbXBfdmFsOwotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdGF0aWNfY2FzdDxUeXBlPigwdSAtIG91dF90bXApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHV0eXBlIGNvbnN0IGNvbXBfdmFsID0gc3RhdGljX2Nhc3Q8dXR5cGU+KChzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGU+OjptYXgpKCkpOwotICAgICAgICAgICAgICAgICAgICBzdWNjZWVkID0gc3VjY2VlZCAmJiBvdXRfdG1wPD1jb21wX3ZhbDsKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0X3RtcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0U3RyZWFtYWJsZT4KLSAgICAgICAgICAgIGJvb2wgc2hyX3VzaW5nX2Jhc2VfY2xhc3MoSW5wdXRTdHJlYW1hYmxlJiBvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coCi0gICAgICAgICAgICAgICAgICAgICghbmRuYm9vc3Q6OmlzX3BvaW50ZXI8SW5wdXRTdHJlYW1hYmxlPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAibmRuYm9vc3Q6OmxleGljYWxfY2FzdCBjYW4gbm90IGNvbnZlcnQgdG8gcG9pbnRlcnMiCi0gICAgICAgICAgICAgICAgKTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coKG5kbmJvb3N0Ojppc19zYW1lPGNoYXIsIENoYXJUPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAibmRuYm9vc3Q6OmxleGljYWxfY2FzdCBjYW4gbm90IGNvbnZlcnQsIGJlY2F1c2UgeW91ciBTVEwgbGlicmFyeSBkb2VzIG5vdCAiCi0gICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IHN1Y2ggY29udmVyc2lvbnMuIFRyeSB1cGRhdGluZyBpdC4iCi0gICAgICAgICAgICAgICAgKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pCi0gICAgICAgICAgICAgICAgc3RkOjppc3Ryc3RyZWFtIHN0cmVhbShzdGFydCwgZmluaXNoIC0gc3RhcnQpOwotI2Vsc2UKLQotICAgICAgICAgICAgICAgIGJ1ZmZlcl90IGJ1ZjsKLSAgICAgICAgICAgICAgICBidWYuc2V0YnVmKHN0YXJ0LCBmaW5pc2ggLSBzdGFydCk7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKQotICAgICAgICAgICAgICAgIHN0ZDo6aXN0cmVhbSBzdHJlYW0oJmJ1Zik7Ci0jZWxzZQotICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiBzdHJlYW0oJmJ1Zik7Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotCi0gICAgICAgICAgICAgICAgc3RyZWFtLnVuc2V0ZihzdGQ6Omlvczo6c2tpcHdzKTsKLSAgICAgICAgICAgICAgICBsY2FzdF9zZXRfcHJlY2lzaW9uKHN0cmVhbSwgc3RhdGljX2Nhc3Q8SW5wdXRTdHJlYW1hYmxlKj4oMCkpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmVhbSA+PiBvdXRwdXQgJiYKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmdldCgpID09Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fPDMpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX1dTVFJJTkcpCi0gICAgICAgIC8vIEdDQyAyLjl4IGxhY2tzIHN0ZDo6Y2hhcl90cmFpdHM8Pjo6ZW9mKCkuCi0gICAgICAgIC8vIFdlIHVzZSBORE5CT09TVF9OT19TVERfV1NUUklORyB0byBmaWx0ZXIgb3V0IFNUTHBvcnQgYW5kIGxpYnN0ZGMrKy12MwotICAgICAgICAvLyBjb25maWd1cmF0aW9ucywgd2hpY2ggZG8gcHJvdmlkZSBzdGQ6OmNoYXJfdHJhaXRzPD46OmVvZigpLgotCi0gICAgICAgICAgICAgICAgICAgIEVPRjsKLSNlbHNlCi0gICAgICAgICAgICAgICAgVHJhaXRzOjplb2YoKTsKLSNlbmRpZgotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgICAgICAgICAgaW5saW5lIGJvb2wgc2hyX3hjaGFyKFQmIG91dHB1dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRygoIHNpemVvZihDaGFyVCkgPT0gc2l6ZW9mKFQpICksCi0gICAgICAgICAgICAgICAgICAgICJuZG5ib29zdDo6bGV4aWNhbF9jYXN0IGRvZXMgbm90IHN1cHBvcnQgbmFycm93aW5nIG9mIGNoYXJhY3RlciB0eXBlcy4iCi0gICAgICAgICAgICAgICAgICAgICJVc2UgbmRuYm9vc3Q6OmxvY2FsZSBpbnN0ZWFkIiApOwotICAgICAgICAgICAgICAgIGJvb2wgY29uc3Qgb2sgPSAoZmluaXNoIC0gc3RhcnQgPT0gMSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9rKSB7Ci0gICAgICAgICAgICAgICAgICAgIENoYXJUIG91dDsKLSAgICAgICAgICAgICAgICAgICAgVHJhaXRzOjphc3NpZ24ob3V0LCAqc3RhcnQpOwotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdGF0aWNfY2FzdDxUPihvdXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gb2s7Ci0gICAgICAgICAgICB9Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogT1BFUkFUT1JTID4+ICggLi4uICkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+Pih1bnNpZ25lZCBzaG9ydCYgb3V0cHV0KSAgICAgICAgICAgICB7IHJldHVybiBzaHJfdW5zaWduZWQob3V0cHV0KTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHVuc2lnbmVkIGludCYgb3V0cHV0KSAgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl91bnNpZ25lZChvdXRwdXQpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4odW5zaWduZWQgbG9uZyBpbnQmIG91dHB1dCkgICAgICAgICAgeyByZXR1cm4gc2hyX3Vuc2lnbmVkKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihzaG9ydCYgb3V0cHV0KSAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfc2lnbmVkKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihpbnQmIG91dHB1dCkgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfc2lnbmVkKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+Pihsb25nIGludCYgb3V0cHV0KSAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfc2lnbmVkKG91dHB1dCk7IH0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4obmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSYgb3V0cHV0KSAgICAgeyByZXR1cm4gc2hyX3Vuc2lnbmVkKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUmIG91dHB1dCkgICAgICB7IHJldHVybiBzaHJfc2lnbmVkKG91dHB1dCk7IH0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHVuc2lnbmVkIF9faW50NjQmIG91dHB1dCkgICAgICAgICAgIHsgcmV0dXJuIHNocl91bnNpZ25lZChvdXRwdXQpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oX19pbnQ2NCYgb3V0cHV0KSAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hyX3NpZ25lZChvdXRwdXQpOyB9Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6dWludDEyOF90eXBlJiBvdXRwdXQpICAgICAgICB7IHJldHVybiBzaHJfdW5zaWduZWQob3V0cHV0KTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KG5kbmJvb3N0OjppbnQxMjhfdHlwZSYgb3V0cHV0KSAgICAgICAgIHsgcmV0dXJuIHNocl9zaWduZWQob3V0cHV0KTsgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihjaGFyJiBvdXRwdXQpICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfeGNoYXIob3V0cHV0KTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHVuc2lnbmVkIGNoYXImIG91dHB1dCkgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl94Y2hhcihvdXRwdXQpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oc2lnbmVkIGNoYXImIG91dHB1dCkgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hyX3hjaGFyKG91dHB1dCk7IH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+Pih3Y2hhcl90JiBvdXRwdXQpICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfeGNoYXIob3V0cHV0KTsgfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oY2hhcjE2X3QmIG91dHB1dCkgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hyX3hjaGFyKG91dHB1dCk7IH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTKQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KGNoYXIzMl90JiBvdXRwdXQpICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl94Y2hhcihvdXRwdXQpOyB9Ci0jZW5kaWYKLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEFsbG9jPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJULFRyYWl0cyxBbGxvYz4mIHN0cikgeyBzdHIuYXNzaWduKHN0YXJ0LCBmaW5pc2gpOyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBBbGxvYz4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8Q2hhclQsVHJhaXRzLEFsbG9jPiYgc3RyKSB7IHN0ci5hc3NpZ24oc3RhcnQsIGZpbmlzaCk7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAgICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTiwgY2xhc3MgQXJyYXlUPgotICAgICAgICAgICAgYm9vbCBzaHJfc3RkX2FycmF5KEFycmF5VCYgb3V0cHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzaXplX3Qgc2l6ZSA9IGZpbmlzaCAtIHN0YXJ0OwotICAgICAgICAgICAgICAgIGlmIChzaXplID4gTiAtIDEpIHsgLy8gYC0xYCBiZWNhdXNlIHdlIG5lZWQgdG8gc3RvcmUgXDAgYXQgdGhlIGVuZCAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1lbWNweSgmb3V0cHV0WzBdLCBzdGFydCwgc2l6ZSAqIHNpemVvZihDaGFyVCkpOwotICAgICAgICAgICAgICAgIG91dHB1dFtzaXplXSA9IFRyYWl0czo6dG9fY2hhcl90eXBlKDApOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgcHVibGljOgotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6YXJyYXk8Q2hhclQsIE4+JiBvdXRwdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIHJldHVybiBzaHJfc3RkX2FycmF5PE4+KG91dHB1dCk7IAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6YXJyYXk8dW5zaWduZWQgY2hhciwgTj4mIG91dHB1dCkgICAKLSAgICAgICAgICAgIHsgCi0gICAgICAgICAgICAgICAgcmV0dXJuICgoKnRoaXMpID4+IHJlaW50ZXJwcmV0X2Nhc3Q8bmRuYm9vc3Q6OmFycmF5PGNoYXIsIE4+JiA+KG91dHB1dCkpOyAKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4obmRuYm9vc3Q6OmFycmF5PHNpZ25lZCBjaGFyLCBOPiYgb3V0cHV0KSAgIAotICAgICAgICAgICAgeyAKLSAgICAgICAgICAgICAgICByZXR1cm4gKCgqdGhpcykgPj4gcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y2hhciwgTj4mID4ob3V0cHV0KSk7IAotICAgICAgICAgICAgfQotIAotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHN0ZDo6YXJyYXk8Q2hhclQsIE4+JiBvdXRwdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIHJldHVybiBzaHJfc3RkX2FycmF5PE4+KG91dHB1dCk7IAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihzdGQ6OmFycmF5PHVuc2lnbmVkIGNoYXIsIE4+JiBvdXRwdXQpICAgCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIHJldHVybiAoKCp0aGlzKSA+PiByZWludGVycHJldF9jYXN0PHN0ZDo6YXJyYXk8Y2hhciwgTj4mID4ob3V0cHV0KSk7IAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihzdGQ6OmFycmF5PHNpZ25lZCBjaGFyLCBOPiYgb3V0cHV0KQotICAgICAgICAgICAgeyAKLSAgICAgICAgICAgICAgICByZXR1cm4gKCgqdGhpcykgPj4gcmVpbnRlcnByZXRfY2FzdDxzdGQ6OmFycmF5PGNoYXIsIE4+JiA+KG91dHB1dCkpOyAKLSAgICAgICAgICAgIH0KLSNlbmRpZgotCi0KLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBjYXNlICItMCIgfHwgIjAiIHx8ICIrMCIgOiAgIG91dHB1dCA9IGZhbHNlOyByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAqIGNhc2UgIjEiIHx8ICIrMSI6ICAgICAgICAgICAgb3V0cHV0ID0gdHJ1ZTsgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICogZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+Pihib29sJiBvdXRwdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ2hhclQgY29uc3QgemVybyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6emVybzsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBwbHVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjpwbHVzOwotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IG1pbnVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjptaW51czsKLQotICAgICAgICAgICAgICAgIHN3aXRjaChmaW5pc2gtc3RhcnQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBUcmFpdHM6OmVxKHN0YXJ0WzBdLCAgemVybysxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQgfHwgVHJhaXRzOjplcShzdGFydFswXSwgemVybyApOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIFRyYWl0czo6ZXEoIHBsdXMsICpzdGFydCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gVHJhaXRzOjplcShzdGFydFswXSwgemVybyArMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dCB8fCBUcmFpdHM6OmVxKHN0YXJ0WzBdLCB6ZXJvICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJhaXRzOjplcSggbWludXMsICpzdGFydCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgVHJhaXRzOjplcSggemVybywgc3RhcnRbMV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gZmFsc2U7IC8vIFN1cHByZXNzIHdhcm5pbmcgYWJvdXQgdW5pbml0YWxpemVkIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oZmxvYXQmIG91dHB1dCkgeyByZXR1cm4gbGNhc3RfcmV0X2Zsb2F0PFRyYWl0cz4ob3V0cHV0LHN0YXJ0LGZpbmlzaCk7IH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgLy8gTm90IG9wdGltaXNlZCBjb252ZXJ0ZXIKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgYm9vbCBmbG9hdF90eXBlc19jb252ZXJ0ZXJfaW50ZXJuYWwoVCYgb3V0cHV0LCBpbnQgLyp0YWcqLykgewotICAgICAgICAgICAgICAgIGlmIChwYXJzZV9pbmZfbmFuKHN0YXJ0LCBmaW5pc2gsIG91dHB1dCkpIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGJvb2wgcmV0dXJuX3ZhbHVlID0gc2hyX3VzaW5nX2Jhc2VfY2xhc3Mob3V0cHV0KTsKLQotICAgICAgICAgICAgICAgIC8qIFNvbWUgY29tcGlsZXJzIGFuZCBsaWJyYXJpZXMgc3VjY2Vzc2Z1bGx5Ci0gICAgICAgICAgICAgICAgICogcGFyc2UgJ2luZicsICdJTkZJTklUWScsICcxLjBFJywgJzEuMEUtJy4uLgotICAgICAgICAgICAgICAgICAqIFdlIGFyZSB0cnlpbmcgdG8gcHJvdmlkZSBhIHVuaWZpZWQgYmVoYXZpb3VyLAotICAgICAgICAgICAgICAgICAqIHNvIHdlIGp1c3QgZm9yYmlkIHN1Y2ggY29udmVyc2lvbnMgKGFzIHNvbWUKLSAgICAgICAgICAgICAgICAgKiBvZiB0aGUgbW9zdCBwb3B1bGFyIGNvbXBpbGVycy9saWJyYXJpZXMgZG8pCi0gICAgICAgICAgICAgICAgICogKi8KLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICAgICAgQ2hhclQgY29uc3QgcGx1cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6cGx1czsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBjYXBpdGFsX2UgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46OmNhcGl0YWxfZTsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBsb3dlcmNhc2VfZSA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bG93ZXJjYXNlX2U7Ci0gICAgICAgICAgICAgICAgaWYgKCByZXR1cm5fdmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgICAgIFRyYWl0czo6ZXEoKihmaW5pc2gtMSksIGxvd2VyY2FzZV9lKSAgICAgICAgICAgICAgICAgICAvLyAxLjBlCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBUcmFpdHM6OmVxKCooZmluaXNoLTEpLCBjYXBpdGFsX2UpICAgICAgICAgICAgICAgICAgLy8gMS4wRQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgVHJhaXRzOjplcSgqKGZpbmlzaC0xKSwgbWludXMpICAgICAgICAgICAgICAgICAgICAgIC8vIDEuMGUtIG9yIDEuMEUtCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBUcmFpdHM6OmVxKCooZmluaXNoLTEpLCBwbHVzKSAgICAgICAgICAgICAgICAgICAgICAgLy8gMS4wZSsgb3IgMS4wRSsKLSAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICApIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE9wdGltaXNlZCBjb252ZXJ0ZXIKLSAgICAgICAgICAgIGJvb2wgZmxvYXRfdHlwZXNfY29udmVydGVyX2ludGVybmFsKGRvdWJsZSYgb3V0cHV0LGNoYXIgLyp0YWcqLykgewotICAgICAgICAgICAgICAgIHJldHVybiBsY2FzdF9yZXRfZmxvYXQ8VHJhaXRzPihvdXRwdXQsc3RhcnQsZmluaXNoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHVibGljOgotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oZG91YmxlJiBvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBTb21lIGNvbXBpbGVycyBpbXBsZW1lbnQgbG9uZyBkb3VibGUgYXMgZG91YmxlLiBJbiB0aGF0IGNhc2UgdGhlc2UgdHlwZXMgaGF2ZQotICAgICAgICAgICAgICAgICAqIHNhbWUgc2l6ZSwgc2FtZSBwcmVjaXNpb24sIHNhbWUgbWF4IGFuZCBtaW4gdmFsdWVzLi4uIEFuZCBpdCBtZWFucywKLSAgICAgICAgICAgICAgICAgKiB0aGF0IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgbGNhc3RfcmV0X2Zsb2F0IGNhbm5vdCBiZSB1c2VkIGZvciB0eXBlCi0gICAgICAgICAgICAgICAgICogZG91YmxlLCBiZWNhdXNlIGl0IHdpbGwgZ2l2ZSBhIGJpZyBwcmVjaXNpb24gbG9zcy4KLSAgICAgICAgICAgICAgICAgKiAqLwotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0jaWYgKGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgfHwgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpKSAmJiAhZGVmaW5lZChORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TKQotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9lcTwgc2l6ZW9mKGRvdWJsZSksIHNpemVvZihsb25nIGRvdWJsZSkgPjo6dmFsdWUsCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgMSwKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBpbnQsCi0gICAgICAgICAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAgICAgICA+Ojp0eXBlIHRhZyA9IDA7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXRfdHlwZXNfY29udmVydGVyX2ludGVybmFsKG91dHB1dCwgdGFnKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KGxvbmcgZG91YmxlJiBvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHRhZyA9IDA7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0X3R5cGVzX2NvbnZlcnRlcl9pbnRlcm5hbChvdXRwdXQsIHRhZyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEdlbmVyaWMgaXN0cmVhbS1iYXNlZCBhbGdvcml0aG0uCi0gICAgICAgICAgICAvLyBsY2FzdF9zdHJlYW1idWZfZm9yX3RhcmdldDxJbnB1dFN0cmVhbWFibGU+Ojp2YWx1ZSBpcyB0cnVlLgotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRTdHJlYW1hYmxlPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KElucHV0U3RyZWFtYWJsZSYgb3V0cHV0KSB7IHJldHVybiBzaHJfdXNpbmdfYmFzZV9jbGFzcyhvdXRwdXQpOyB9Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGlzX3N0ZHN0cmluZwotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSApOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEFsbG9jPgotICAgICAgICBzdHJ1Y3QgaXNfc3Rkc3RyaW5nPCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVCwgVHJhaXRzLCBBbGxvYz4gPgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgQWxsb2M+Ci0gICAgICAgIHN0cnVjdCBpc19zdGRzdHJpbmc8IG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzxDaGFyVCwgVHJhaXRzLCBBbGxvYz4gPgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBpc19hcml0aG1ldGljX2FuZF9ub3RfeGNoYXJzCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8U291cmNlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUYXJnZXQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jaGFyX29yX3djaGFyPFRhcmdldD46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jaGFyX29yX3djaGFyPFNvdXJjZT46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICAgICApCi0gICAgICAgICAgICApOwotICAgICAgICB9OwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIGlzX3hjaGFyX3RvX3hjaGFyPFRhcmdldCwgU291cmNlPjo6dmFsdWUgaXMgdHJ1ZSwgd2hlbgotICAgICAgICAgKiBUYXJnZXQgYW5kIFNvdWNlIGFyZSB0aGUgc2FtZSBjaGFyIHR5cGVzLCBvciB3aGVuCi0gICAgICAgICAqIFRhcmdldCBhbmQgU291Y2UgYXJlIGNoYXIgdHlwZXMgb2YgdGhlIHNhbWUgc2l6ZS4KLSAgICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgICAgICBzdHJ1Y3QgaXNfeGNoYXJfdG9feGNoYXIKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFNvdXJjZSxUYXJnZXQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfY2hhcl9vcl93Y2hhcjxUYXJnZXQ+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2VxPCBzaXplb2YoY2hhciksc2l6ZW9mKFRhcmdldCk+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfZXE8IHNpemVvZihjaGFyKSxzaXplb2YoU291cmNlKT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jaGFyX29yX3djaGFyPFRhcmdldD46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jaGFyX29yX3djaGFyPFNvdXJjZT46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBpc19jaGFyX2FycmF5X3RvX3N0ZHN0cmluZwotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSApOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEFsbG9jPgotICAgICAgICBzdHJ1Y3QgaXNfY2hhcl9hcnJheV90b19zdGRzdHJpbmc8IHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJULCBUcmFpdHMsIEFsbG9jPiwgQ2hhclQqID4KLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSApOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEFsbG9jPgotICAgICAgICBzdHJ1Y3QgaXNfY2hhcl9hcnJheV90b19zdGRzdHJpbmc8IHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJULCBUcmFpdHMsIEFsbG9jPiwgY29uc3QgQ2hhclQqID4KLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSApOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEFsbG9jPgotICAgICAgICBzdHJ1Y3QgaXNfY2hhcl9hcnJheV90b19zdGRzdHJpbmc8IG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzxDaGFyVCwgVHJhaXRzLCBBbGxvYz4sIENoYXJUKiA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUgKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBBbGxvYz4KLSAgICAgICAgc3RydWN0IGlzX2NoYXJfYXJyYXlfdG9fc3Rkc3RyaW5nPCBuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8Q2hhclQsIFRyYWl0cywgQWxsb2M+LCBjb25zdCBDaGFyVCogPgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlICk7Ci0gICAgICAgIH07Ci0KLSNpZiAoZGVmaW5lZCBfTVNDX1ZFUikKLSMgcHJhZ21hIHdhcm5pbmcoIHB1c2ggKQotIyBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ3MDEgKSAvLyBwb3NzaWJsZSB1c2Ugb2YgLi4uIGJlZm9yZSBpbml0aWFsaXphdGlvbgotIyBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ3MDIgKSAvLyB1bnJlYWNoYWJsZSBjb2RlCi0jIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDI2NyApIC8vIGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAndW5zaWduZWQgaW50JwotI2VuZGlmCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgICAgICBzdHJ1Y3QgbGV4aWNhbF9jYXN0X2RvX2Nhc3QKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGlubGluZSBUYXJnZXQgbGV4aWNhbF9jYXN0X2ltcGwoY29uc3QgU291cmNlJiBhcmcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBsZXhpY2FsX2Nhc3Rfc3RyZWFtX3RyYWl0czxTb3VyY2UsIFRhcmdldD4gIHN0cmVhbV90cmFpdDsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGRldGFpbDo6bGV4aWNhbF9zdHJlYW1fbGltaXRlZF9zcmM8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc3RyZWFtX3RyYWl0OjpjaGFyX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0cmVhbV90cmFpdDo6dHJhaXRzLCAKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3RyYWl0OjpyZXF1aXJlc19zdHJpbmdidWYgCi0gICAgICAgICAgICAgICAgPiBpbnRlcnByZXRlcl90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gVGFyZ2V0IHR5cGUgbXVzdCBiZSBkZWZhdWx0IGNvbnN0cnVjdGlibGUKLSAgICAgICAgICAgICAgICBUYXJnZXQgcmVzdWx0OyAgICAgICAgICAgICAgIAotCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdHJlYW1fdHJhaXQ6OmNoYXJfdHlwZSBidWZbc3RyZWFtX3RyYWl0OjpsZW5fdDo6dmFsdWUgKyAxXTsKLSAgICAgICAgICAgICAgICBzdHJlYW1fdHJhaXQ6Omxlbl90OjpjaGVja19jb3ZlcmFnZSgpOwotCi0gICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXJfdHlwZSBpbnRlcnByZXRlcihidWYsIGJ1ZiArIHN0cmVhbV90cmFpdDo6bGVuX3Q6OnZhbHVlICsgMSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBEaXNhYmxpbmcgQURMLCBieSBkaXJlY3RseSBzcGVjaWZ5aW5nIG9wZXJhdG9ycy4KLSAgICAgICAgICAgICAgICBpZighKGludGVycHJldGVyLm9wZXJhdG9yIDw8KGFyZykgJiYgaW50ZXJwcmV0ZXIub3BlcmF0b3IgPj4ocmVzdWx0KSkpCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9MQ0FTVF9USFJPV19CQURfQ0FTVChTb3VyY2UsIFRhcmdldCk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotI2lmIChkZWZpbmVkIF9NU0NfVkVSKQotIyBwcmFnbWEgd2FybmluZyggcG9wICkKLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBsZXhpY2FsX2Nhc3RfY29weQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgaW5saW5lIGNvbnN0IFNvdXJjZSYgbGV4aWNhbF9jYXN0X2ltcGwoY29uc3QgU291cmNlICZhcmcpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFyZzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlLCBjbGFzcyBUYXJnZXQgPgotICAgICAgICBzdHJ1Y3QgZGV0ZWN0X3ByZWNpc2lvbl9sb3NzCi0gICAgICAgIHsKLSAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om51bWVyaWM6OlRydW5jPFNvdXJjZT4gUm91bmRlcjsKLSAgICAgICAgIHR5cGVkZWYgU291cmNlIHNvdXJjZV90eXBlIDsKLQotICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1wbDo6aWZfPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8U291cmNlPiwgU291cmNlLCBTb3VyY2UgY29uc3QmCi0gICAgICAgICAgPjo6dHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgICAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBzb3VyY2VfdHlwZSBuZWFyX2ludCA9IFJvdW5kZXI6Om5lYXJieWludChzKTsKLSAgICAgICAgICAgIGlmIChuZWFyX2ludCkgewotICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZV90eXBlIG9yaWdfZGl2X3JvdW5kID0gcyAvIG5lYXJfaW50OwotICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZV90eXBlIGVwcyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c291cmNlX3R5cGU+OjplcHNpbG9uKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoKG9yaWdfZGl2X3JvdW5kID4gMSA/IG9yaWdfZGl2X3JvdW5kIC0gMSA6IDEgLSBvcmlnX2Rpdl9yb3VuZCkgPiBlcHMpCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0xDQVNUX1RIUk9XX0JBRF9DQVNUKFNvdXJjZSwgVGFyZ2V0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHMgOwotICAgICAgICAgfQotCi0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFJvdW5kZXI6OnJvdW5kX3N0eWxlIHJvdW5kX3N0eWxlOwotICAgICAgICB9IDsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlLCBjbGFzcyBUYXJnZXQgPgotICAgICAgICBzdHJ1Y3Qgbm90aHJvd19vdmVyZmxvd19oYW5kbGVyCi0gICAgICAgIHsKLSAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkgKCBuZG5ib29zdDo6bnVtZXJpYzo6cmFuZ2VfY2hlY2tfcmVzdWx0IHIgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyICE9IG5kbmJvb3N0OjpudW1lcmljOjpjSW5SYW5nZSkKLSAgICAgICAgICAgICAgICBORE5CT09TVF9MQ0FTVF9USFJPV19CQURfQ0FTVChTb3VyY2UsIFRhcmdldCk7Ci0gICAgICAgICAgfQotICAgICAgICB9IDsKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBsZXhpY2FsX2Nhc3RfZHluYW1pY19udW1fbm90X2lnbm9yaW5nX21pbnVzCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdF9pbXBsKGNvbnN0IFNvdXJjZSAmYXJnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmVydGVyPAotICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZlcnNpb25fdHJhaXRzPFRhcmdldCxTb3VyY2U+LAotICAgICAgICAgICAgICAgICAgICAgICAgbm90aHJvd19vdmVyZmxvd19oYW5kbGVyPFNvdXJjZSwgVGFyZ2V0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdF9wcmVjaXNpb25fbG9zczxTb3VyY2UsIFRhcmdldD4KLSAgICAgICAgICAgICAgICA+Ojpjb252ZXJ0KGFyZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgICAgICBzdHJ1Y3QgbGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtX2lnbm9yaW5nX21pbnVzCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdF9pbXBsKGNvbnN0IFNvdXJjZSAmYXJnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjpldmFsX2lmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfZmxvYXQ8U291cmNlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppZGVudGl0eTxTb3VyY2U+LAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8U291cmNlPgotICAgICAgICAgICAgICAgID46OnR5cGUgdXNvdXJjZV90OwotCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmVydGVyPAotICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgdXNvdXJjZV90LAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZlcnNpb25fdHJhaXRzPFRhcmdldCx1c291cmNlX3Q+LAotICAgICAgICAgICAgICAgICAgICAgICAgbm90aHJvd19vdmVyZmxvd19oYW5kbGVyPHVzb3VyY2VfdCwgVGFyZ2V0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdF9wcmVjaXNpb25fbG9zczx1c291cmNlX3QsIFRhcmdldD4KLSAgICAgICAgICAgICAgICA+IGNvbnZlcnRlcl90OwotCi0gICAgICAgICAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAgICAgICAgICAgYXJnIDwgMCA/IHN0YXRpY19jYXN0PFRhcmdldD4oMHUgLSBjb252ZXJ0ZXJfdDo6Y29udmVydCgwdSAtIGFyZykpIDogY29udmVydGVyX3Q6OmNvbnZlcnQoYXJnKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogbGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtIGZvbGxvd3MgdGhlIHJ1bGVzOgotICAgICAgICAgKiAxKSBJZiBTb3VyY2UgY2FuIGJlIGNvbnZlcnRlZCB0byBUYXJnZXQgd2l0aG91dCBwcmVjaXNpb24gbG9zcyBhbmQKLSAgICAgICAgICogd2l0aG91dCBvdmVyZmxvd3MsIHRoZW4gYXNzaWduIFNvdXJjZSB0byBUYXJnZXQgYW5kIHJldHVybgotICAgICAgICAgKgotICAgICAgICAgKiAyKSBJZiBTb3VyY2UgaXMgbGVzcyB0aGFuIDAgYW5kIFRhcmdldCBpcyBhbiB1bnNpZ25lZCBpbnRlZ2VyLAotICAgICAgICAgKiB0aGVuIG5lZ2F0ZSBTb3VyY2UsIGNoZWNrIHRoZSByZXF1aXJlbWVudHMgb2YgcnVsZSAxKSBhbmQgaWYKLSAgICAgICAgICogc3VjY2Vzc2Z1bCwgYXNzaWduIHN0YXRpY19jYXN0ZWQgU291cmNlIHRvIFRhcmdldCBhbmQgcmV0dXJuCi0gICAgICAgICAqCi0gICAgICAgICAqIDMpIE90aGVyd2lzZSB0aHJvdyBhIGJhZF9sZXhpY2FsX2Nhc3QgZXhjZXB0aW9uCi0gICAgICAgICAqCi0gICAgICAgICAqCi0gICAgICAgICAqIFJ1bGUgMikgcmVxdWlyZWQgYmVjYXVzZSBuZG5ib29zdDo6bGV4aWNhbF9jYXN0IGhhcyB0aGUgYmVoYXZpb3Igb2YKLSAgICAgICAgICogc3RyaW5nc3RyZWFtLCB3aGljaCB1c2VzIHRoZSBydWxlcyBvZiBzY2FuZiBmb3IgY29udmVyc2lvbnMuIEFuZAotICAgICAgICAgKiBpbiB0aGUgQzk5IHN0YW5kYXJkIGZvciB1bnNpZ25lZCBpbnB1dCB2YWx1ZSBtaW51cyBzaWduIGlzCi0gICAgICAgICAqIG9wdGlvbmFsLCBzbyBpZiBhIG5lZ2F0aXZlIG51bWJlciBpcyByZWFkLCBubyBlcnJvcnMgd2lsbCBhcmlzZQotICAgICAgICAgKiBhbmQgdGhlIHJlc3VsdCB3aWxsIGJlIHRoZSB0d28ncyBjb21wbGVtZW50LgotICAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgICAgICBzdHJ1Y3QgbGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdF9pbXBsKGNvbnN0IFNvdXJjZSAmYXJnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2lnbmVkPFNvdXJjZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19mbG9hdDxTb3VyY2U+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8U291cmNlLCBib29sPjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPFRhcmdldCwgYm9vbD46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc191bnNpZ25lZDxUYXJnZXQ+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgbGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtX2lnbm9yaW5nX21pbnVzPFRhcmdldCwgU291cmNlPiwKLSAgICAgICAgICAgICAgICAgICAgbGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtX25vdF9pZ25vcmluZ19taW51czxUYXJnZXQsIFNvdXJjZT4KLSAgICAgICAgICAgICAgICA+Ojp0eXBlIGNhc3Rlcl90eXBlOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhc3Rlcl90eXBlOjpsZXhpY2FsX2Nhc3RfaW1wbChhcmcpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdChjb25zdCBTb3VyY2UgJmFyZykKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b19wb2ludGVyX2RlY2F5PFNvdXJjZT46OnR5cGUgc3JjOwotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc194Y2hhcl90b194Y2hhcjxUYXJnZXQsIHNyYyA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19jaGFyX2FycmF5X3RvX3N0ZHN0cmluZzxUYXJnZXQsIHNyYyA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTxUYXJnZXQsIHNyYyA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX3N0ZHN0cmluZzxUYXJnZXQgPjo6dmFsdWUKLSAgICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICA+IHNoYWxsX3dlX2NvcHlfdDsKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19hcml0aG1ldGljX2FuZF9ub3RfeGNoYXJzPFRhcmdldCwgc3JjID4gc2hhbGxfd2VfY29weV93aXRoX2R5bmFtaWNfY2hlY2tfdDsKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgIHNoYWxsX3dlX2NvcHlfdDo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpsZXhpY2FsX2Nhc3RfY29weTxzcmMgPiwKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgc2hhbGxfd2VfY29weV93aXRoX2R5bmFtaWNfY2hlY2tfdDo6dmFsdWUsCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmxleGljYWxfY2FzdF9keW5hbWljX251bTxUYXJnZXQsIHNyYyA+LAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpsZXhpY2FsX2Nhc3RfZG9fY2FzdDxUYXJnZXQsIHNyYyA+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgY2FzdGVyX3R5cGU7Ci0KLSAgICAgICAgcmV0dXJuIGNhc3Rlcl90eXBlOjpsZXhpY2FsX2Nhc3RfaW1wbChhcmcpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gICAgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3QoY29uc3QgY2hhciogY2hhcnMsIHN0ZDo6c2l6ZV90IGNvdW50KQotICAgICB7Ci0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IGNoYXIqPihjaGFycywgY2hhcnMgKyBjb3VudCkKLSAgICAgICAgKTsKLSAgICB9Ci0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gICAgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3QoY29uc3QgdW5zaWduZWQgY2hhciogY2hhcnMsIHN0ZDo6c2l6ZV90IGNvdW50KQotICAgIHsKLSAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IHVuc2lnbmVkIGNoYXIqPihjaGFycywgY2hhcnMgKyBjb3VudCkKLSAgICAgICAgICk7Ci0gICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gICAgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3QoY29uc3Qgc2lnbmVkIGNoYXIqIGNoYXJzLCBzdGQ6OnNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IHNpZ25lZCBjaGFyKj4oY2hhcnMsIGNoYXJzICsgY291bnQpCi0gICAgICAgICk7Ci0gICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0PgotICAgIGlubGluZSBUYXJnZXQgbGV4aWNhbF9jYXN0KGNvbnN0IHdjaGFyX3QqIGNoYXJzLCBzdGQ6OnNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IHdjaGFyX3QqPihjaGFycywgY2hhcnMgKyBjb3VudCkKLSAgICAgICAgKTsKLSAgICB9Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ0hBUjE2X1QKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0PgotICAgIGlubGluZSBUYXJnZXQgbGV4aWNhbF9jYXN0KGNvbnN0IGNoYXIxNl90KiBjaGFycywgc3RkOjpzaXplX3QgY291bnQpCi0gICAgewotICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6bGV4aWNhbF9jYXN0PFRhcmdldD4oCi0gICAgICAgICAgICA6Om5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTxjb25zdCBjaGFyMTZfdCo+KGNoYXJzLCBjaGFycyArIGNvdW50KQotICAgICAgICApOwotICAgIH0KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19DSEFSMzJfVAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gICAgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3QoY29uc3QgY2hhcjMyX3QqIGNoYXJzLCBzdGQ6OnNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IGNoYXIzMl90Kj4oY2hhcnMsIGNoYXJzICsgY291bnQpCi0gICAgICAgICk7Ci0gICAgfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0KLSAgICAgICAgLy8gc2VsZWN0b3JzIGZvciBjaG9vc2luZyBzdHJlYW0gY2hhcmFjdGVyIHR5cGUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOwotICAgICAgICB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QKLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXI8d2NoYXJfdD4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB3Y2hhcl90IHR5cGU7Ci0gICAgICAgIH07Ci0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcjx3Y2hhcl90ICo+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgd2NoYXJfdCB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyPGNvbnN0IHdjaGFyX3QgKj4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB3Y2hhcl90IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXI8c3RkOjp3c3RyaW5nPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHdjaGFyX3QgdHlwZTsKLSAgICAgICAgfTsKLSNlbmRpZgotCi0gICAgICAgIC8vIHN0cmVhbSB3cmFwcGVyIGZvciBoYW5kbGluZyBsZXhpY2FsIGNvbnZlcnNpb25zCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgICAgIGNsYXNzIGxleGljYWxfc3RyZWFtCi0gICAgICAgIHsKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgd2lkZXN0X2NoYXI8Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgc3RyZWFtX2NoYXI8VGFyZ2V0Pjo6dHlwZSwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdHJlYW1fY2hhcjxTb3VyY2U+Ojp0eXBlPjo6dHlwZSBjaGFyX3R5cGU7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHRyYWl0c190eXBlOwotCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIGxleGljYWxfc3RyZWFtKGNoYXJfdHlwZSogPSAwLCBjaGFyX3R5cGUqID0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdHJlYW0udW5zZXRmKHN0ZDo6aW9zOjpza2lwd3MpOwotICAgICAgICAgICAgICAgIGxjYXN0X3NldF9wcmVjaXNpb24oc3RyZWFtLCBzdGF0aWNfY2FzdDxTb3VyY2UqPigwKSwgc3RhdGljX2Nhc3Q8VGFyZ2V0Kj4oMCkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH5sZXhpY2FsX3N0cmVhbSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNKQotICAgICAgICAgICAgICAgIHN0cmVhbS5mcmVlemUoZmFsc2UpOwotICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IFNvdXJjZSAmaW5wdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoc3RyZWFtIDw8IGlucHV0KS5mYWlsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbWFibGU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oSW5wdXRTdHJlYW1hYmxlICZvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICFpc19wb2ludGVyPElucHV0U3RyZWFtYWJsZT46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSA+PiBvdXRwdXQgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmdldCgpID09Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fPDMpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX1dTVFJJTkcpCi0vLyBHQ0MgMi45eCBsYWNrcyBzdGQ6OmNoYXJfdHJhaXRzPD46OmVvZigpLgotLy8gV2UgdXNlIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HIHRvIGZpbHRlciBvdXQgU1RMcG9ydCBhbmQgbGlic3RkYysrLXYzCi0vLyBjb25maWd1cmF0aW9ucywgd2hpY2ggZG8gcHJvdmlkZSBzdGQ6OmNoYXJfdHJhaXRzPD46OmVvZigpLgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBFT0Y7Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpOwotI2VuZGlmCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihzdGQ6OnN0cmluZyAmb3V0cHV0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTSkKLSAgICAgICAgICAgICAgICBzdHJlYW0gPDwgJ1wwJzsKLSAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICBzdHJlYW0uc3RyKCkuc3dhcChvdXRwdXQpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgI2lmbmRlZiBORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oc3RkOjp3c3RyaW5nICZvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RyZWFtLnN0cigpLnN3YXAob3V0cHV0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICNlbmRpZgotCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAjaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pCi0gICAgICAgICAgICBzdGQ6OnN0cnN0cmVhbSBzdHJlYW07Ci0gICAgICAgICAgICAjZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpCi0gICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Ci0gICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmdzdHJlYW08Y2hhcl90eXBlLHRyYWl0c190eXBlPiBzdHJlYW07Ci0gICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICAvLyBjYWxsLWJ5LXZhbHVlIGZhbGxiYWNrIHZlcnNpb24gKGRlcHJlY2F0ZWQpCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICBUYXJnZXQgbGV4aWNhbF9jYXN0KFNvdXJjZSBhcmcpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6d2lkZXN0X2NoYXI8IAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OnN0cmVhbV9jaGFyPFRhcmdldD46OnR5cGUgCi0gICAgICAgICAgLCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6c3RyZWFtX2NoYXI8U291cmNlPjo6dHlwZSAKLSAgICAgICAgPjo6dHlwZSBjaGFyX3R5cGU7IAotCi0gICAgICAgIHR5cGVkZWYgc3RkOjpjaGFyX3RyYWl0czxjaGFyX3R5cGU+IHRyYWl0czsKLSAgICAgICAgZGV0YWlsOjpsZXhpY2FsX3N0cmVhbTxUYXJnZXQsIFNvdXJjZSwgdHJhaXRzPiBpbnRlcnByZXRlcjsKLSAgICAgICAgVGFyZ2V0IHJlc3VsdDsKLQotICAgICAgICBpZighKGludGVycHJldGVyIDw8IGFyZyAmJiBpbnRlcnByZXRlciA+PiByZXN1bHQpKQotICAgICAgICAgIE5ETkJPT1NUX0xDQVNUX1RIUk9XX0JBRF9DQVNUKFNvdXJjZSwgVGFyZ2V0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0vLyBDb3B5cmlnaHQgS2V2bGluIEhlbm5leSwgMjAwMC0yMDA1LgotLy8gQ29weXJpZ2h0IEFsZXhhbmRlciBOYXNvbm92LCAyMDA2LTIwMTAuCi0vLyBDb3B5cmlnaHQgQW50b255IFBvbHVraGluLCAyMDExLTIwMTMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jdW5kZWYgTkROQk9PU1RfTENBU1RfVEhST1dfQkFEX0NBU1QKLSN1bmRlZiBORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UCi0jdW5kZWYgTkROQk9PU1RfTENBU1RfSEFTX0lOVDEyOAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTEVYSUNBTF9DQVNUX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGltaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGltaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q1NWQ5Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xpbWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIG1hZGRvY2sgMTk5OS4gCi0vLyAgKEMpIERhdmlkIEFicmFoYW1zIDIwMDIuICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyB1c2UgdGhpcyBoZWFkZXIgYXMgYSB3b3JrYXJvdW5kIGZvciBtaXNzaW5nIDxsaW1pdHM+Ci0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb21wYXRpYmlsaXR5L2luZGV4Lmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfTElNSVRTCi0jZGVmaW5lIE5ETkJPT1NUX0xJTUlUUwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX0xJTUlUUwotIyAgZXJyb3IgIlRoZXJlIGlzIG5vIHN0ZDo6bnVtZXJpY19saW1pdHMgc3VwcHBvcnQgYXZhaWxhYmxlLiIKLSNlbHNlCi0jIGluY2x1ZGUgPGxpbWl0cz4KLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgJiYgZGVmaW5lZChORE5CT09TVF9OT19MT05HX0xPTkdfTlVNRVJJQ19MSU1JVFMpKSBcCi0gICAgICB8fCAoZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMpKQotLy8gQWRkIG1pc3Npbmcgc3BlY2lhbGl6YXRpb25zIGZvciBudW1lcmljX2xpbWl0czoKLSNpZmRlZiBORE5CT09TVF9IQVNfTVNfSU5UNjQKLSMgIGRlZmluZSBORE5CT09TVF9MTFQgX19pbnQ2NAotIyAgZGVmaW5lIE5ETkJPT1NUX1VMTFQgdW5zaWduZWQgX19pbnQ2NAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9MTFQgIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0jICBkZWZpbmUgTkROQk9PU1RfVUxMVCAgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0jZW5kaWYKLQotI2luY2x1ZGUgPGNsaW1pdHM+ICAvLyBmb3IgQ0hBUl9CSVQKLQotbmFtZXNwYWNlIHN0ZAotewotICB0ZW1wbGF0ZTw+Ci0gIGNsYXNzIG51bWVyaWNfbGltaXRzPE5ETkJPT1NUX0xMVD4gCi0gIHsKLSAgIHB1YmxpYzoKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NwZWNpYWxpemVkID0gdHJ1ZSk7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX01TX0lOVDY0Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfTExUIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKXsgcmV0dXJuIDB4ODAwMDAwMDAwMDAwMDAwMGk2NDsgfQotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiAweDdGRkZGRkZGRkZGRkZGRkZpNjQ7IH0KLSNlbGlmIGRlZmluZWQoTExPTkdfTUFYKQotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiBMTE9OR19NSU47IH0KLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gTExPTkdfTUFYOyB9Ci0jZWxpZiBkZWZpbmVkKExPTkdMT05HX01BWCkKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gTE9OR0xPTkdfTUlOOyB9Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfTExUIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKXsgcmV0dXJuIExPTkdMT05HX01BWDsgfQotI2Vsc2UKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gMUxMIDw8IChzaXplb2YoTkROQk9PU1RfTExUKSAqIENIQVJfQklUIC0gMSk7IH0KLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gfihtaW4pKCk7IH0KLSNlbmRpZgotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgZGlnaXRzID0gc2l6ZW9mKE5ETkJPT1NUX0xMVCkgKiBDSEFSX0JJVCAtMSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBkaWdpdHMxMCA9IChDSEFSX0JJVCAqIHNpemVvZiAoTkROQk9PU1RfTExUKSAtIDEpICogMzAxTCAvIDEwMDApOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NpZ25lZCA9IHRydWUpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2ludGVnZXIgPSB0cnVlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19leGFjdCA9IHRydWUpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgcmFkaXggPSAyKTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgZXBzaWxvbigpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgcm91bmRfZXJyb3IoKSB0aHJvdygpIHsgcmV0dXJuIDA7IH07Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG1pbl9leHBvbmVudCA9IDApOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWluX2V4cG9uZW50MTAgPSAwKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG1heF9leHBvbmVudCA9IDApOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWF4X2V4cG9uZW50MTAgPSAwKTsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19pbmZpbml0eSA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfcXVpZXRfTmFOID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19kZW5vcm0gPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2Rlbm9ybV9sb3NzID0gZmFsc2UpOwotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBpbmZpbml0eSgpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgcXVpZXRfTmFOKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBzaWduYWxpbmdfTmFOKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBkZW5vcm1fbWluKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfaWVjNTU5ID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2JvdW5kZWQgPSB0cnVlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19tb2R1bG8gPSB0cnVlKTsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHRyYXBzID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChmbG9hdF9yb3VuZF9zdHlsZSwgcm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVybyk7Ci0gICAgICAKLSAgfTsKLQotICB0ZW1wbGF0ZTw+Ci0gIGNsYXNzIG51bWVyaWNfbGltaXRzPE5ETkJPT1NUX1VMTFQ+IAotICB7Ci0gICBwdWJsaWM6Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19zcGVjaWFsaXplZCA9IHRydWUpOwotI2lmZGVmIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gMHVpNjQ7IH0KLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKXsgcmV0dXJuIDB4RkZGRkZGRkZGRkZGRkZGRnVpNjQ7IH0KLSNlbGlmIGRlZmluZWQoVUxMT05HX01BWCkgJiYgZGVmaW5lZChVTExPTkdfTUlOKQotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gVUxMT05HX01JTjsgfQotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gVUxMT05HX01BWDsgfQotI2VsaWYgZGVmaW5lZChVTE9OR0xPTkdfTUFYKSAmJiBkZWZpbmVkKFVMT05HTE9OR19NSU4pCi0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiBVTE9OR0xPTkdfTUlOOyB9Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiBVTE9OR0xPTkdfTUFYOyB9Ci0jZWxzZQotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gMHVMTDsgfQotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gfjB1TEw7IH0KLSNlbmRpZgotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgZGlnaXRzID0gc2l6ZW9mKE5ETkJPT1NUX0xMVCkgKiBDSEFSX0JJVCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBkaWdpdHMxMCA9IChDSEFSX0JJVCAqIHNpemVvZiAoTkROQk9PU1RfTExUKSkgKiAzMDFMIC8gMTAwMCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc2lnbmVkID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2ludGVnZXIgPSB0cnVlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19leGFjdCA9IHRydWUpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgcmFkaXggPSAyKTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIGVwc2lsb24oKSB0aHJvdygpIHsgcmV0dXJuIDA7IH07Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCByb3VuZF9lcnJvcigpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWluX2V4cG9uZW50ID0gMCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtaW5fZXhwb25lbnQxMCA9IDApOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWF4X2V4cG9uZW50ID0gMCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtYXhfZXhwb25lbnQxMCA9IDApOwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2luZmluaXR5ID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19xdWlldF9OYU4gPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2Rlbm9ybSA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfZGVub3JtX2xvc3MgPSBmYWxzZSk7Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBpbmZpbml0eSgpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIHF1aWV0X05hTigpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIHNpZ25hbGluZ19OYU4oKSB0aHJvdygpIHsgcmV0dXJuIDA7IH07Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBkZW5vcm1fbWluKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfaWVjNTU5ID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2JvdW5kZWQgPSB0cnVlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19tb2R1bG8gPSB0cnVlKTsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHRyYXBzID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChmbG9hdF9yb3VuZF9zdHlsZSwgcm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVybyk7Ci0gICAgICAKLSAgfTsKLX0KLSNlbmRpZiAKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbWFrZV9zaGFyZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYWtlX3NoYXJlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyOGJlZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYWtlX3NoYXJlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX01BS0VfU0hBUkVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NQUtFX1NIQVJFRF9IUFBfSU5DTFVERUQKLQotLy8gIG1ha2Vfc2hhcmVkLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvbWFrZV9zaGFyZWQuaHRtbAotLy8gIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTUFLRV9TSEFSRURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvcG9saWNpZXMvcG9saWN5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9wb2xpY2llcy9wb2xpY3kuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmEzNWQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9wb2xpY2llcy9wb2xpY3kuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkyICswLDAgQEAKLS8vICBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDcuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX1BPTElDWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9QT0xJQ1lfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NvbnRhaW5zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9maW5kX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcmVtb3ZlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY29tcGFyaXNvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3Rvb2xzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bGltaXRzPgotLy8gU2FkbHkgd2UgZG8gbmVlZCB0aGUgLmggdmVyc2lvbnMgb2YgdGhlc2UgdG8gYmUgc3VyZSBvZiBnZXR0aW5nCi0vLyBGTFRfTUFOVF9ESUcgZXRjLgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPG1hdGguaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgbWF0aHsgCi0KLW5hbWVzcGFjZSB0b29sc3sKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbnQgZGlnaXRzKE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRShUKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLVQgZXBzaWxvbihORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoVCkpOwotCi19Ci0KLW5hbWVzcGFjZSBwb2xpY2llc3sKLQotLy8KLS8vIERlZmluZSBtYWNyb3MgZm9yIG91ciBkZWZhdWx0IHBvbGljaWVzLCBpZiB0aGV5J3JlIG5vdCBkZWZpbmVkIGFscmVhZHk6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9NQVRIX0RPTUFJTl9FUlJPUl9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9ET01BSU5fRVJST1JfUE9MSUNZIHRocm93X29uX2Vycm9yCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9QT0xFX0VSUk9SX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX1BPTEVfRVJST1JfUE9MSUNZIHRocm93X29uX2Vycm9yCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9PVkVSRkxPV19FUlJPUl9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9PVkVSRkxPV19FUlJPUl9QT0xJQ1kgdGhyb3dfb25fZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX0VWQUxVQVRJT05fRVJST1JfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRVZBTFVBVElPTl9FUlJPUl9QT0xJQ1kgdGhyb3dfb25fZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX1JPVU5ESU5HX0VSUk9SX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX1JPVU5ESU5HX0VSUk9SX1BPTElDWSB0aHJvd19vbl9lcnJvcgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfVU5ERVJGTE9XX0VSUk9SX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX1VOREVSRkxPV19FUlJPUl9QT0xJQ1kgaWdub3JlX2Vycm9yCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9ERU5PUk1fRVJST1JfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfREVOT1JNX0VSUk9SX1BPTElDWSBpZ25vcmVfZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX0lOREVURVJNSU5BVEVfUkVTVUxUX0VSUk9SX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX0lOREVURVJNSU5BVEVfUkVTVUxUX0VSUk9SX1BPTElDWSBpZ25vcmVfZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX0RJR0lUUzEwX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX0RJR0lUUzEwX1BPTElDWSAwCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9QUk9NT1RFX0ZMT0FUX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX1BST01PVEVfRkxPQVRfUE9MSUNZIHRydWUKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX1BST01PVEVfRE9VQkxFX1BPTElDWQotI2lmZGVmIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9QUk9NT1RFX0RPVUJMRV9QT0xJQ1kgZmFsc2UKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfUFJPTU9URV9ET1VCTEVfUE9MSUNZIHRydWUKLSNlbmRpZgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfRElTQ1JFVEVfUVVBTlRJTEVfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRElTQ1JFVEVfUVVBTlRJTEVfUE9MSUNZIGludGVnZXJfcm91bmRfb3V0d2FyZHMKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX0FTU0VSVF9VTkRFRklORURfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfQVNTRVJUX1VOREVGSU5FRF9QT0xJQ1kgdHJ1ZQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfTUFYX1NFUklFU19JVEVSQVRJT05fUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfTUFYX1NFUklFU19JVEVSQVRJT05fUE9MSUNZIDEwMDAwMDAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX01BWF9ST09UX0lURVJBVElPTl9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9NQVhfUk9PVF9JVEVSQVRJT05fUE9MSUNZIDIwMAotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pIFwKLSAgICYmICEoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA8PSAyKSkKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9NRVRBX0lOVCh0eXBlLCBuYW1lLCBEZWZhdWx0KVwKLSAgIHRlbXBsYXRlIDx0eXBlIE4gPSBEZWZhdWx0PiBzdHJ1Y3QgbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppbnRfPE4+e307XAotICAgbmFtZXNwYWNlIGRldGFpbHtcCi0gICB0ZW1wbGF0ZSA8dHlwZSBOPlwKLSAgIGNoYXIgdGVzdF9pc192YWxpZF9hcmcoY29uc3QgbmFtZTxOPiopO1wKLSAgIGNoYXIgdGVzdF9pc19kZWZhdWx0X2FyZyhjb25zdCBuYW1lPERlZmF1bHQ+Kik7XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUjI19pbXBcCi0gICB7XAotICAgICAgdGVtcGxhdGUgPHR5cGUgTj4gc3RhdGljIGNoYXIgdGVzdChjb25zdCBuYW1lPE4+Kik7XAotICAgICAgc3RhdGljIGRvdWJsZSB0ZXN0KC4uLik7XAotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gc2l6ZW9mKHRlc3Qoc3RhdGljX2Nhc3Q8VCo+KDApKSkgPT0gMSk7XAotICAgfTtcCi0gICB9XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzXyMjbmFtZSMjX2ltcDxUPjo6dmFsdWU+e307Ci0KLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9NRVRBX0JPT0wobmFtZSwgRGVmYXVsdClcCi0gICB0ZW1wbGF0ZSA8Ym9vbCBOID0gRGVmYXVsdD4gc3RydWN0IG5hbWUgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88Tj57fTtcCi0gICBuYW1lc3BhY2UgZGV0YWlse1wKLSAgIHRlbXBsYXRlIDxib29sIE4+XAotICAgY2hhciB0ZXN0X2lzX3ZhbGlkX2FyZyhjb25zdCBuYW1lPE4+Kik7XAotICAgY2hhciB0ZXN0X2lzX2RlZmF1bHRfYXJnKGNvbnN0IG5hbWU8RGVmYXVsdD4qKTtcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzXyMjbmFtZSMjX2ltcFwKLSAgIHtcCi0gICAgICB0ZW1wbGF0ZSA8Ym9vbCBOPiBzdGF0aWMgY2hhciB0ZXN0KGNvbnN0IG5hbWU8Tj4qKTtcCi0gICAgICBzdGF0aWMgZG91YmxlIHRlc3QoLi4uKTtcCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YodGVzdChzdGF0aWNfY2FzdDxUKj4oMCkpKSA9PSAxKTtcCi0gICB9O1wKLSAgIH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzXyMjbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjpib29sXzwgOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfIyNuYW1lIyNfaW1wPFQ+Ojp2YWx1ZT57fTsKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfTUVUQV9JTlQoVHlwZSwgbmFtZSwgRGVmYXVsdClcCi0gICB0ZW1wbGF0ZSA8VHlwZSBOID0gRGVmYXVsdD4gc3RydWN0IG5hbWUgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6aW50XzxOPnt9O1wKLSAgIG5hbWVzcGFjZSBkZXRhaWx7XAotICAgdGVtcGxhdGUgPFR5cGUgTj5cCi0gICBjaGFyIHRlc3RfaXNfdmFsaWRfYXJnKGNvbnN0IG5hbWU8Tj4qKTtcCi0gICBjaGFyIHRlc3RfaXNfZGVmYXVsdF9hcmcoY29uc3QgbmFtZTxEZWZhdWx0PiopO1wKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfIyNuYW1lIyNfdGVzdGVyXAotICAge1wKLSAgICAgIHRlbXBsYXRlIDxUeXBlIE4+IHN0YXRpYyBjaGFyIHRlc3QoY29uc3QgbmFtZTxOPiYpO1wKLSAgICAgIHN0YXRpYyBkb3VibGUgdGVzdCguLi4pO1wKLSAgIH07XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUjI19pbXBcCi0gICB7XAotICAgICAgc3RhdGljIFQgaW5zdDtcCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YoIDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzXyMjbmFtZSMjX3Rlc3RlcjxUPjo6dGVzdChpbnN0KSkgPT0gMSk7XAotICAgfTtcCi0gICB9XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzXyMjbmFtZSMjX2ltcDxUPjo6dmFsdWU+XAotICAge1wKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdHJ1Y3QgYXBwbHl7IHR5cGVkZWYgaXNfIyNuYW1lPFU+IHR5cGU7IH07XAotICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9NQVRIX01FVEFfQk9PTChuYW1lLCBEZWZhdWx0KVwKLSAgIHRlbXBsYXRlIDxib29sIE4gPSBEZWZhdWx0PiBzdHJ1Y3QgbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjpib29sXzxOPnt9O1wKLSAgIG5hbWVzcGFjZSBkZXRhaWx7XAotICAgdGVtcGxhdGUgPGJvb2wgTj5cCi0gICBjaGFyIHRlc3RfaXNfdmFsaWRfYXJnKGNvbnN0IG5hbWU8Tj4qKTtcCi0gICBjaGFyIHRlc3RfaXNfZGVmYXVsdF9hcmcoY29uc3QgbmFtZTxEZWZhdWx0PiopO1wKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfIyNuYW1lIyNfdGVzdGVyXAotICAge1wKLSAgICAgIHRlbXBsYXRlIDxib29sIE4+IHN0YXRpYyBjaGFyIHRlc3QoY29uc3QgbmFtZTxOPiYpO1wKLSAgICAgIHN0YXRpYyBkb3VibGUgdGVzdCguLi4pO1wKLSAgIH07XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUjI19pbXBcCi0gICB7XAotICAgICAgc3RhdGljIFQgaW5zdDtcCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YoIDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzXyMjbmFtZSMjX3Rlc3RlcjxUPjo6dGVzdChpbnN0KSkgPT0gMSk7XAotICAgfTtcCi0gICB9XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzXyMjbmFtZSMjX2ltcDxUPjo6dmFsdWU+XAotICAge1wKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdHJ1Y3QgYXBwbHl7IHR5cGVkZWYgaXNfIyNuYW1lPFU+IHR5cGU7ICB9O1wKLSAgIH07Ci0jZW5kaWYKLS8vCi0vLyBCZWdpbiBieSBkZWZpbmluZyBwb2xpY3kgdHlwZXMgZm9yIGVycm9yIGhhbmRsaW5nOgotLy8KLWVudW0gZXJyb3JfcG9saWN5X3R5cGUKLXsKLSAgIHRocm93X29uX2Vycm9yID0gMCwKLSAgIGVycm5vX29uX2Vycm9yID0gMSwKLSAgIGlnbm9yZV9lcnJvciA9IDIsCi0gICB1c2VyX2Vycm9yID0gMwotfTsKLQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChlcnJvcl9wb2xpY3lfdHlwZSwgZG9tYWluX2Vycm9yLCBORE5CT09TVF9NQVRIX0RPTUFJTl9FUlJPUl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCBwb2xlX2Vycm9yLCBORE5CT09TVF9NQVRIX1BPTEVfRVJST1JfUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChlcnJvcl9wb2xpY3lfdHlwZSwgb3ZlcmZsb3dfZXJyb3IsIE5ETkJPT1NUX01BVEhfT1ZFUkZMT1dfRVJST1JfUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChlcnJvcl9wb2xpY3lfdHlwZSwgdW5kZXJmbG93X2Vycm9yLCBORE5CT09TVF9NQVRIX1VOREVSRkxPV19FUlJPUl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCBkZW5vcm1fZXJyb3IsIE5ETkJPT1NUX01BVEhfREVOT1JNX0VSUk9SX1BPTElDWSkKLU5ETkJPT1NUX01BVEhfTUVUQV9JTlQoZXJyb3JfcG9saWN5X3R5cGUsIGV2YWx1YXRpb25fZXJyb3IsIE5ETkJPT1NUX01BVEhfRVZBTFVBVElPTl9FUlJPUl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCByb3VuZGluZ19lcnJvciwgTkROQk9PU1RfTUFUSF9ST1VORElOR19FUlJPUl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvciwgTkROQk9PU1RfTUFUSF9JTkRFVEVSTUlOQVRFX1JFU1VMVF9FUlJPUl9QT0xJQ1kpCi0KLS8vCi0vLyBQb2xpY3kgdHlwZXMgZm9yIGludGVybmFsIHByb21vdGlvbjoKLS8vCi1ORE5CT09TVF9NQVRIX01FVEFfQk9PTChwcm9tb3RlX2Zsb2F0LCBORE5CT09TVF9NQVRIX1BST01PVEVfRkxPQVRfUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0JPT0wocHJvbW90ZV9kb3VibGUsIE5ETkJPT1NUX01BVEhfUFJPTU9URV9ET1VCTEVfUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0JPT0woYXNzZXJ0X3VuZGVmaW5lZCwgTkROQk9PU1RfTUFUSF9BU1NFUlRfVU5ERUZJTkVEX1BPTElDWSkKLS8vCi0vLyBQb2xpY3kgdHlwZXMgZm9yIGRpc2NyZXRlIHF1YW50aWxlczoKLS8vCi1lbnVtIGRpc2NyZXRlX3F1YW50aWxlX3BvbGljeV90eXBlCi17Ci0gICByZWFsLAotICAgaW50ZWdlcl9yb3VuZF9vdXR3YXJkcywKLSAgIGludGVnZXJfcm91bmRfaW53YXJkcywKLSAgIGludGVnZXJfcm91bmRfZG93biwKLSAgIGludGVnZXJfcm91bmRfdXAsCi0gICBpbnRlZ2VyX3JvdW5kX25lYXJlc3QKLX07Ci0KLU5ETkJPT1NUX01BVEhfTUVUQV9JTlQoZGlzY3JldGVfcXVhbnRpbGVfcG9saWN5X3R5cGUsIGRpc2NyZXRlX3F1YW50aWxlLCBORE5CT09TVF9NQVRIX0RJU0NSRVRFX1FVQU5USUxFX1BPTElDWSkKLS8vCi0vLyBQcmVjaXNpb246Ci0vLwotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChpbnQsIGRpZ2l0czEwLCBORE5CT09TVF9NQVRIX0RJR0lUUzEwX1BPTElDWSkKLU5ETkJPT1NUX01BVEhfTUVUQV9JTlQoaW50LCBkaWdpdHMyLCAwKQotLy8KLS8vIEl0ZXJhdGlvbnM6Ci0vLwotTkROQk9PU1RfTUFUSF9NRVRBX0lOVCh1bnNpZ25lZCBsb25nLCBtYXhfc2VyaWVzX2l0ZXJhdGlvbnMsIE5ETkJPT1NUX01BVEhfTUFYX1NFUklFU19JVEVSQVRJT05fUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVCh1bnNpZ25lZCBsb25nLCBtYXhfcm9vdF9pdGVyYXRpb25zLCBORE5CT09TVF9NQVRIX01BWF9ST09UX0lURVJBVElPTl9QT0xJQ1kpCi0vLwotLy8gRGVmaW5lIHRoZSBuYW1lcyBmb3IgZWFjaCBwb3NzaWJsZSBwb2xpY3k6Ci0vLwotI2RlZmluZSBORE5CT09TVF9NQVRIX1BBUkFNRVRFUihuYW1lKVwKLSAgIE5ETkJPT1NUX1BBUkFNRVRFUl9URU1QTEFURV9LRVlXT1JEKG5hbWUjI19uYW1lKVwKLSAgIE5ETkJPT1NUX1BBUkFNRVRFUl9OQU1FKG5hbWUjI19uYW1lKQotCi1zdHJ1Y3QgZGVmYXVsdF9wb2xpY3l7fTsKLQotbmFtZXNwYWNlIGRldGFpbHsKLS8vCi0vLyBUcmFpdCB0byB3b3JrIG91dCBiaXRzIHByZWNpc2lvbiBmcm9tIGRpZ2l0czEwIGFuZCBkaWdpdHMyOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBEaWdpdHMxMCwgY2xhc3MgRGlnaXRzMj4KLXN0cnVjdCBwcmVjaXNpb24KLXsKLSAgIC8vCi0gICAvLyBOb3cgd29yayBvdXQgdGhlIHByZWNpc2lvbjoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgIChEaWdpdHMxMDo6dmFsdWUgPT0gMCksCi0gICAgICBkaWdpdHMyPDA+LAotICAgICAgZGlnaXRzMjwoKERpZ2l0czEwOjp2YWx1ZSArIDEpICogMTAwMEwpIC8gMzAxTD4KLSAgID46OnR5cGUgZGlnaXRzMl90eXBlOwotcHVibGljOgotI2lmZGVmIF9fQk9STEFORENfXwotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAoRGlnaXRzMjo6dmFsdWUgPiA6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjpwcmVjaXNpb248RGlnaXRzMTAsRGlnaXRzMj46OmRpZ2l0czJfdHlwZTo6dmFsdWUpLAotICAgICAgRGlnaXRzMiwgZGlnaXRzMl90eXBlPjo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgKERpZ2l0czI6OnZhbHVlID4gZGlnaXRzMl90eXBlOjp2YWx1ZSksCi0gICAgICBEaWdpdHMyLCBkaWdpdHMyX3R5cGU+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCLCBib29sIGI+Ci1zdHJ1Y3Qgc2VsZWN0X3Jlc3VsdAotewotICAgdHlwZWRlZiBBIHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3Qgc2VsZWN0X3Jlc3VsdDxBLCBCLCBmYWxzZT4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpkZXJlZjxCPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFNlcSwgY2xhc3MgUHJlZCwgY2xhc3MgRGVmYXVsdFR5cGU+Ci1zdHJ1Y3QgZmluZF9hcmcKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZmluZF9pZjxTZXEsIFByZWQ+Ojp0eXBlIGl0ZXI7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZW5kPFNlcT46OnR5cGUgZW5kX3R5cGU7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdF9yZXN1bHQ8Ci0gICAgICBEZWZhdWx0VHlwZSwgaXRlciwKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8aXRlciwgZW5kX3R5cGU+Ojp2YWx1ZT46OnR5cGUgdHlwZTsKLX07Ci0KLWRvdWJsZSB0ZXN0X2lzX3ZhbGlkX2FyZyguLi4pOwotZG91YmxlIHRlc3RfaXNfZGVmYXVsdF9hcmcoLi4uKTsKLWNoYXIgdGVzdF9pc192YWxpZF9hcmcoY29uc3QgZGVmYXVsdF9wb2xpY3kqKTsKLWNoYXIgdGVzdF9pc19kZWZhdWx0X2FyZyhjb25zdCBkZWZhdWx0X3BvbGljeSopOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc192YWxpZF9wb2xpY3lfaW1wIAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gc2l6ZW9mKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OnRlc3RfaXNfdmFsaWRfYXJnKHN0YXRpY19jYXN0PFQqPigwKSkpID09IDEpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfZGVmYXVsdF9wb2xpY3lfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6dGVzdF9pc19kZWZhdWx0X2FyZyhzdGF0aWNfY2FzdDxUKj4oMCkpKSA9PSAxKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfdmFsaWRfcG9saWN5IAotOiBwdWJsaWMgbXBsOjpib29sXzwgCi0gICA6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3lfaW1wPFQ+Ojp2YWx1ZT4KLXt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzX2RlZmF1bHRfcG9saWN5IAotOiBwdWJsaWMgbXBsOjpib29sXzwgCi0gICA6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc19kZWZhdWx0X3BvbGljeV9pbXA8VD46OnZhbHVlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICBzdHJ1Y3QgYXBwbHkKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfZGVmYXVsdF9wb2xpY3k8VT4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgU2VxLCBjbGFzcyBULCBpbnQgTj4KLXN0cnVjdCBhcHBlbmRfTgotewotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OnB1c2hfYmFjazxTZXEsIFQ+Ojp0eXBlIG5ld19zZXE7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGFwcGVuZF9OPG5ld19zZXEsIFQsIE4tMT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBTZXEsIGNsYXNzIFQ+Ci1zdHJ1Y3QgYXBwZW5kX048U2VxLCBULCAwPgotewotICAgdHlwZWRlZiBTZXEgdHlwZTsKLX07Ci0KLS8vCi0vLyBUcmFpdHMgY2xhc3MgdG8gd29yayBvdXQgd2hhdCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIG91ciBkZWZhdWx0Ci0vLyBwb2xpY3k8PiBjbGFzcyB3aWxsIGhhdmUgd2hlbiBtb2RpZmllZCBmb3IgZm9yd2FyZGluZzoKLS8vCi10ZW1wbGF0ZSA8Ym9vbCBmLCBib29sIGQ+Ci1zdHJ1Y3QgZGVmYXVsdF9hcmdzCi17Ci0gICB0eXBlZGVmIHByb21vdGVfZmxvYXQ8ZmFsc2U+IGFyZzE7Ci0gICB0eXBlZGVmIHByb21vdGVfZG91YmxlPGZhbHNlPiBhcmcyOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBkZWZhdWx0X2FyZ3M8ZmFsc2UsIGZhbHNlPgotewotICAgdHlwZWRlZiBkZWZhdWx0X3BvbGljeSBhcmcxOwotICAgdHlwZWRlZiBkZWZhdWx0X3BvbGljeSBhcmcyOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBkZWZhdWx0X2FyZ3M8dHJ1ZSwgZmFsc2U+Ci17Ci0gICB0eXBlZGVmIHByb21vdGVfZmxvYXQ8ZmFsc2U+IGFyZzE7Ci0gICB0eXBlZGVmIGRlZmF1bHRfcG9saWN5IGFyZzI7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGRlZmF1bHRfYXJnczxmYWxzZSwgdHJ1ZT4KLXsKLSAgIHR5cGVkZWYgcHJvbW90ZV9kb3VibGU8ZmFsc2U+IGFyZzE7Ci0gICB0eXBlZGVmIGRlZmF1bHRfcG9saWN5IGFyZzI7Ci19OwotCi10eXBlZGVmIGRlZmF1bHRfYXJnczxORE5CT09TVF9NQVRIX1BST01PVEVfRkxPQVRfUE9MSUNZLCBORE5CT09TVF9NQVRIX1BST01PVEVfRE9VQkxFX1BPTElDWT46OmFyZzEgZm9yd2FyZGluZ19hcmcxOwotdHlwZWRlZiBkZWZhdWx0X2FyZ3M8TkROQk9PU1RfTUFUSF9QUk9NT1RFX0ZMT0FUX1BPTElDWSwgTkROQk9PU1RfTUFUSF9QUk9NT1RFX0RPVUJMRV9QT0xJQ1k+OjphcmcyIGZvcndhcmRpbmdfYXJnMjsKLQotfSAvLyBkZXRhaWwKLS8vCi0vLyBOb3cgZGVmaW5lIHRoZSBwb2xpY3kgdHlwZSB3aXRoIGVub3VnaCBhcmd1bWVudHMgdG8gaGFuZGxlIGFsbAotLy8gdGhlIHBvbGljaWVzOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBBMSA9IGRlZmF1bHRfcG9saWN5LCAKLSAgICAgICAgICBjbGFzcyBBMiA9IGRlZmF1bHRfcG9saWN5LCAKLSAgICAgICAgICBjbGFzcyBBMyA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE0ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTUgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBNiA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE3ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTggPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBOSA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEExMCA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEExMSA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEExMiA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEExMyA9IGRlZmF1bHRfcG9saWN5Pgotc3RydWN0IHBvbGljeQotewotcHJpdmF0ZToKLSAgIC8vCi0gICAvLyBWYWxpZGF0ZSBhbGwgb3VyIGFyZ3VtZW50czoKLSAgIC8vCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMT46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEEyPjo6dmFsdWUpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3k8QTM+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBND46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEE1Pjo6dmFsdWUpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3k8QTY+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBNz46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEE4Pjo6dmFsdWUpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3k8QTk+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMTA+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMTE+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMTI+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMTM+Ojp2YWx1ZSk7Ci0gICAvLwotICAgLy8gVHlwZWxpc3Qgb2YgdGhlIGFyZ3VtZW50czoKLSAgIC8vCi0gICB0eXBlZGVmIG1wbDo6bGlzdDxBMSxBMixBMyxBNCxBNSxBNixBNyxBOCxBOSxBMTAsQTExLEExMixBMTM+IGFyZ19saXN0OwotCi1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2RvbWFpbl9lcnJvcjxtcGw6Ol8xPiwgZG9tYWluX2Vycm9yPD4gPjo6dHlwZSBkb21haW5fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcG9sZV9lcnJvcjxtcGw6Ol8xPiwgcG9sZV9lcnJvcjw+ID46OnR5cGUgcG9sZV9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19vdmVyZmxvd19lcnJvcjxtcGw6Ol8xPiwgb3ZlcmZsb3dfZXJyb3I8PiA+Ojp0eXBlIG92ZXJmbG93X2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX3VuZGVyZmxvd19lcnJvcjxtcGw6Ol8xPiwgdW5kZXJmbG93X2Vycm9yPD4gPjo6dHlwZSB1bmRlcmZsb3dfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGVub3JtX2Vycm9yPG1wbDo6XzE+LCBkZW5vcm1fZXJyb3I8PiA+Ojp0eXBlIGRlbm9ybV9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19ldmFsdWF0aW9uX2Vycm9yPG1wbDo6XzE+LCBldmFsdWF0aW9uX2Vycm9yPD4gPjo6dHlwZSBldmFsdWF0aW9uX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX3JvdW5kaW5nX2Vycm9yPG1wbDo6XzE+LCByb3VuZGluZ19lcnJvcjw+ID46OnR5cGUgcm91bmRpbmdfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfaW5kZXRlcm1pbmF0ZV9yZXN1bHRfZXJyb3I8bXBsOjpfMT4sIGluZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yPD4gPjo6dHlwZSBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcl90eXBlOwotcHJpdmF0ZToKLSAgIC8vCi0gICAvLyBOb3cgd29yayBvdXQgdGhlIHByZWNpc2lvbjoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2RpZ2l0czEwPG1wbDo6XzE+LCBkaWdpdHMxMDw+ID46OnR5cGUgZGlnaXRzMTBfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGlnaXRzMjxtcGw6Ol8xPiwgZGlnaXRzMjw+ID46OnR5cGUgYml0c19wcmVjaXNpb25fdHlwZTsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwcmVjaXNpb248ZGlnaXRzMTBfdHlwZSwgYml0c19wcmVjaXNpb25fdHlwZT46OnR5cGUgcHJlY2lzaW9uX3R5cGU7Ci0gICAvLwotICAgLy8gSW50ZXJuYWwgcHJvbW90aW9uOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcHJvbW90ZV9mbG9hdDxtcGw6Ol8xPiwgcHJvbW90ZV9mbG9hdDw+ID46OnR5cGUgcHJvbW90ZV9mbG9hdF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19wcm9tb3RlX2RvdWJsZTxtcGw6Ol8xPiwgcHJvbW90ZV9kb3VibGU8PiA+Ojp0eXBlIHByb21vdGVfZG91YmxlX3R5cGU7Ci0gICAvLwotICAgLy8gRGlzY3JldGUgcXVhbnRpbGVzOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGlzY3JldGVfcXVhbnRpbGU8bXBsOjpfMT4sIGRpc2NyZXRlX3F1YW50aWxlPD4gPjo6dHlwZSBkaXNjcmV0ZV9xdWFudGlsZV90eXBlOwotICAgLy8KLSAgIC8vIE1hdGhlbWF0aWNhbGx5IHVuZGVmaW5lZCBwcm9wZXJ0aWVzOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfYXNzZXJ0X3VuZGVmaW5lZDxtcGw6Ol8xPiwgYXNzZXJ0X3VuZGVmaW5lZDw+ID46OnR5cGUgYXNzZXJ0X3VuZGVmaW5lZF90eXBlOwotICAgLy8KLSAgIC8vIE1heCBpdGVyYXRpb25zOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfbWF4X3Nlcmllc19pdGVyYXRpb25zPG1wbDo6XzE+LCBtYXhfc2VyaWVzX2l0ZXJhdGlvbnM8PiA+Ojp0eXBlIG1heF9zZXJpZXNfaXRlcmF0aW9uc190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19tYXhfcm9vdF9pdGVyYXRpb25zPG1wbDo6XzE+LCBtYXhfcm9vdF9pdGVyYXRpb25zPD4gPjo6dHlwZSBtYXhfcm9vdF9pdGVyYXRpb25zX3R5cGU7Ci19OwotLy8KLS8vIFRoZXNlIGZ1bGwgc3BlY2lhbGl6YXRpb25zIGFyZSBkZWZpbmVkIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mCi0vLyB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucyB0aGF0IGhhdmUgdG8gdGFrZSBwbGFjZSB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0Ci0vLyBwb2xpY2llcywgdGhleSBoYXZlIHF1aXRlIGEgbGFyZ2UgaW1wYWN0IG9uIGNvbXBpbGUgdGltZXM6Ci0vLwotdGVtcGxhdGUgPD4KLXN0cnVjdCBwb2xpY3k8ZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5PgotewotcHVibGljOgotICAgdHlwZWRlZiBkb21haW5fZXJyb3I8PiBkb21haW5fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgcG9sZV9lcnJvcjw+IHBvbGVfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgb3ZlcmZsb3dfZXJyb3I8PiBvdmVyZmxvd19lcnJvcl90eXBlOwotICAgdHlwZWRlZiB1bmRlcmZsb3dfZXJyb3I8PiB1bmRlcmZsb3dfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgZGVub3JtX2Vycm9yPD4gZGVub3JtX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIGV2YWx1YXRpb25fZXJyb3I8PiBldmFsdWF0aW9uX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHJvdW5kaW5nX2Vycm9yPD4gcm91bmRpbmdfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgaW5kZXRlcm1pbmF0ZV9yZXN1bHRfZXJyb3I8PiBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcl90eXBlOwotI2lmIE5ETkJPT1NUX01BVEhfRElHSVRTMTBfUE9MSUNZID09IDAKLSAgIHR5cGVkZWYgZGlnaXRzMjw+IHByZWNpc2lvbl90eXBlOwotI2Vsc2UKLSAgIHR5cGVkZWYgZGV0YWlsOjpwcmVjaXNpb248ZGlnaXRzMTA8PiwgZGlnaXRzMjw+ID46OnR5cGUgcHJlY2lzaW9uX3R5cGU7Ci0jZW5kaWYKLSAgIHR5cGVkZWYgcHJvbW90ZV9mbG9hdDw+IHByb21vdGVfZmxvYXRfdHlwZTsKLSAgIHR5cGVkZWYgcHJvbW90ZV9kb3VibGU8PiBwcm9tb3RlX2RvdWJsZV90eXBlOwotICAgdHlwZWRlZiBkaXNjcmV0ZV9xdWFudGlsZTw+IGRpc2NyZXRlX3F1YW50aWxlX3R5cGU7Ci0gICB0eXBlZGVmIGFzc2VydF91bmRlZmluZWQ8PiBhc3NlcnRfdW5kZWZpbmVkX3R5cGU7Ci0gICB0eXBlZGVmIG1heF9zZXJpZXNfaXRlcmF0aW9uczw+IG1heF9zZXJpZXNfaXRlcmF0aW9uc190eXBlOwotICAgdHlwZWRlZiBtYXhfcm9vdF9pdGVyYXRpb25zPD4gbWF4X3Jvb3RfaXRlcmF0aW9uc190eXBlOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBwb2xpY3k8ZGV0YWlsOjpmb3J3YXJkaW5nX2FyZzEsIGRldGFpbDo6Zm9yd2FyZGluZ19hcmcyLCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5PgotewotcHVibGljOgotICAgdHlwZWRlZiBkb21haW5fZXJyb3I8PiBkb21haW5fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgcG9sZV9lcnJvcjw+IHBvbGVfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgb3ZlcmZsb3dfZXJyb3I8PiBvdmVyZmxvd19lcnJvcl90eXBlOwotICAgdHlwZWRlZiB1bmRlcmZsb3dfZXJyb3I8PiB1bmRlcmZsb3dfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgZGVub3JtX2Vycm9yPD4gZGVub3JtX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIGV2YWx1YXRpb25fZXJyb3I8PiBldmFsdWF0aW9uX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHJvdW5kaW5nX2Vycm9yPD4gcm91bmRpbmdfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgaW5kZXRlcm1pbmF0ZV9yZXN1bHRfZXJyb3I8PiBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcl90eXBlOwotI2lmIE5ETkJPT1NUX01BVEhfRElHSVRTMTBfUE9MSUNZID09IDAKLSAgIHR5cGVkZWYgZGlnaXRzMjw+IHByZWNpc2lvbl90eXBlOwotI2Vsc2UKLSAgIHR5cGVkZWYgZGV0YWlsOjpwcmVjaXNpb248ZGlnaXRzMTA8PiwgZGlnaXRzMjw+ID46OnR5cGUgcHJlY2lzaW9uX3R5cGU7Ci0jZW5kaWYKLSAgIHR5cGVkZWYgcHJvbW90ZV9mbG9hdDxmYWxzZT4gcHJvbW90ZV9mbG9hdF90eXBlOwotICAgdHlwZWRlZiBwcm9tb3RlX2RvdWJsZTxmYWxzZT4gcHJvbW90ZV9kb3VibGVfdHlwZTsKLSAgIHR5cGVkZWYgZGlzY3JldGVfcXVhbnRpbGU8PiBkaXNjcmV0ZV9xdWFudGlsZV90eXBlOwotICAgdHlwZWRlZiBhc3NlcnRfdW5kZWZpbmVkPD4gYXNzZXJ0X3VuZGVmaW5lZF90eXBlOwotICAgdHlwZWRlZiBtYXhfc2VyaWVzX2l0ZXJhdGlvbnM8PiBtYXhfc2VyaWVzX2l0ZXJhdGlvbnNfdHlwZTsKLSAgIHR5cGVkZWYgbWF4X3Jvb3RfaXRlcmF0aW9uczw+IG1heF9yb290X2l0ZXJhdGlvbnNfdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3ksIAotICAgICAgICAgIGNsYXNzIEExID0gZGVmYXVsdF9wb2xpY3ksIAotICAgICAgICAgIGNsYXNzIEEyID0gZGVmYXVsdF9wb2xpY3ksIAotICAgICAgICAgIGNsYXNzIEEzID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTQgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBNSA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE2ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTcgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBOCA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE5ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTEwID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTExID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTEyID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTEzID0gZGVmYXVsdF9wb2xpY3k+Ci1zdHJ1Y3Qgbm9ybWFsaXNlCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiBtcGw6Omxpc3Q8QTEsQTIsQTMsQTQsQTUsQTYsQTcsQTgsQTksQTEwLEExMSxBMTIsQTEzPiBhcmdfbGlzdDsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZG9tYWluX2Vycm9yPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OmRvbWFpbl9lcnJvcl90eXBlID46OnR5cGUgZG9tYWluX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX3BvbGVfZXJyb3I8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6cG9sZV9lcnJvcl90eXBlID46OnR5cGUgcG9sZV9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19vdmVyZmxvd19lcnJvcjxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5OjpvdmVyZmxvd19lcnJvcl90eXBlID46OnR5cGUgb3ZlcmZsb3dfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfdW5kZXJmbG93X2Vycm9yPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OnVuZGVyZmxvd19lcnJvcl90eXBlID46OnR5cGUgdW5kZXJmbG93X2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2Rlbm9ybV9lcnJvcjxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5OjpkZW5vcm1fZXJyb3JfdHlwZSA+Ojp0eXBlIGRlbm9ybV9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19ldmFsdWF0aW9uX2Vycm9yPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OmV2YWx1YXRpb25fZXJyb3JfdHlwZSA+Ojp0eXBlIGV2YWx1YXRpb25fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcm91bmRpbmdfZXJyb3I8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6cm91bmRpbmdfZXJyb3JfdHlwZSA+Ojp0eXBlIHJvdW5kaW5nX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2luZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OmluZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yX3R5cGUgPjo6dHlwZSBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcl90eXBlOwotICAgLy8KLSAgIC8vIE5vdyB3b3JrIG91dCB0aGUgcHJlY2lzaW9uOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGlnaXRzMTA8bXBsOjpfMT4sIGRpZ2l0czEwPD4gPjo6dHlwZSBkaWdpdHMxMF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19kaWdpdHMyPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OnByZWNpc2lvbl90eXBlID46OnR5cGUgYml0c19wcmVjaXNpb25fdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwcmVjaXNpb248ZGlnaXRzMTBfdHlwZSwgYml0c19wcmVjaXNpb25fdHlwZT46OnR5cGUgcHJlY2lzaW9uX3R5cGU7Ci0gICAvLwotICAgLy8gSW50ZXJuYWwgcHJvbW90aW9uOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcHJvbW90ZV9mbG9hdDxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5Ojpwcm9tb3RlX2Zsb2F0X3R5cGUgPjo6dHlwZSBwcm9tb3RlX2Zsb2F0X3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX3Byb21vdGVfZG91YmxlPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OnByb21vdGVfZG91YmxlX3R5cGUgPjo6dHlwZSBwcm9tb3RlX2RvdWJsZV90eXBlOwotICAgLy8KLSAgIC8vIERpc2NyZXRlIHF1YW50aWxlczoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2Rpc2NyZXRlX3F1YW50aWxlPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OmRpc2NyZXRlX3F1YW50aWxlX3R5cGUgPjo6dHlwZSBkaXNjcmV0ZV9xdWFudGlsZV90eXBlOwotICAgLy8KLSAgIC8vIE1hdGhlbWF0aWNhbGx5IHVuZGVmaW5lZCBwcm9wZXJ0aWVzOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfYXNzZXJ0X3VuZGVmaW5lZDxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5Ojphc3NlcnRfdW5kZWZpbmVkX3R5cGUgPjo6dHlwZSBhc3NlcnRfdW5kZWZpbmVkX3R5cGU7Ci0gICAvLwotICAgLy8gTWF4IGl0ZXJhdGlvbnM6Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19tYXhfc2VyaWVzX2l0ZXJhdGlvbnM8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6bWF4X3Nlcmllc19pdGVyYXRpb25zX3R5cGU+Ojp0eXBlIG1heF9zZXJpZXNfaXRlcmF0aW9uc190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19tYXhfcm9vdF9pdGVyYXRpb25zPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6Om1heF9yb290X2l0ZXJhdGlvbnNfdHlwZT46OnR5cGUgbWF4X3Jvb3RfaXRlcmF0aW9uc190eXBlOwotICAgLy8KLSAgIC8vIERlZmluZSBhIHR5cGVsaXN0IG9mIHRoZSBwb2xpY2llczoKLSAgIC8vCi0gICB0eXBlZGVmIG1wbDo6dmVjdG9yPAotICAgICAgZG9tYWluX2Vycm9yX3R5cGUsCi0gICAgICBwb2xlX2Vycm9yX3R5cGUsCi0gICAgICBvdmVyZmxvd19lcnJvcl90eXBlLAotICAgICAgdW5kZXJmbG93X2Vycm9yX3R5cGUsCi0gICAgICBkZW5vcm1fZXJyb3JfdHlwZSwKLSAgICAgIGV2YWx1YXRpb25fZXJyb3JfdHlwZSwKLSAgICAgIHJvdW5kaW5nX2Vycm9yX3R5cGUsCi0gICAgICBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcl90eXBlLAotICAgICAgcHJlY2lzaW9uX3R5cGUsCi0gICAgICBwcm9tb3RlX2Zsb2F0X3R5cGUsCi0gICAgICBwcm9tb3RlX2RvdWJsZV90eXBlLAotICAgICAgZGlzY3JldGVfcXVhbnRpbGVfdHlwZSwKLSAgICAgIGFzc2VydF91bmRlZmluZWRfdHlwZSwKLSAgICAgIG1heF9zZXJpZXNfaXRlcmF0aW9uc190eXBlLAotICAgICAgbWF4X3Jvb3RfaXRlcmF0aW9uc190eXBlPiByZXN1bHRfbGlzdDsKLSAgIC8vCi0gICAvLyBSZW1vdmUgYWxsIHRoZSBwb2xpY2llcyB0aGF0IGFyZSB0aGUgc2FtZSBhcyB0aGUgZGVmYXVsdDoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6cmVtb3ZlX2lmPHJlc3VsdF9saXN0LCBkZXRhaWw6OmlzX2RlZmF1bHRfcG9saWN5PG1wbDo6Xz4gPjo6dHlwZSByZWR1Y2VkX2xpc3Q7Ci0gICAvLwotICAgLy8gUGFkIG91dCB0aGUgbGlzdCB3aXRoIGRlZmF1bHRzOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphcHBlbmRfTjxyZWR1Y2VkX2xpc3QsIGRlZmF1bHRfcG9saWN5LCAoMTQgLSA6Om5kbmJvb3N0OjptcGw6OnNpemU8cmVkdWNlZF9saXN0Pjo6dmFsdWUpPjo6dHlwZSByZXN1bHRfdHlwZTsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgcG9saWN5PAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDA+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88MT4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50XzwyPiA+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDM+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88ND4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50Xzw1PiA+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDY+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88Nz4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50Xzw4PiA+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDk+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88MTA+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88MTE+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88MTI+ID46OnR5cGUgPiB0eXBlOwotfTsKLS8vCi0vLyBGdWxsIHNwZWNpYWxpc2F0aW9uIHRvIHNwZWVkIHVwIGNvbXBpbGF0aW9uIG9mIHRoZSBjb21tb24gY2FzZToKLS8vCi10ZW1wbGF0ZSA8Pgotc3RydWN0IG5vcm1hbGlzZTxwb2xpY3k8PiwgCi0gICAgICAgICAgcHJvbW90ZV9mbG9hdDxmYWxzZT4sIAotICAgICAgICAgIHByb21vdGVfZG91YmxlPGZhbHNlPiwgCi0gICAgICAgICAgZGlzY3JldGVfcXVhbnRpbGU8PiwKLSAgICAgICAgICBhc3NlcnRfdW5kZWZpbmVkPD4sCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3k+Ci17Ci0gICB0eXBlZGVmIHBvbGljeTxkZXRhaWw6OmZvcndhcmRpbmdfYXJnMSwgZGV0YWlsOjpmb3J3YXJkaW5nX2FyZzI+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IG5vcm1hbGlzZTxwb2xpY3k8ZGV0YWlsOjpmb3J3YXJkaW5nX2FyZzEsIGRldGFpbDo6Zm9yd2FyZGluZ19hcmcyPiwKLSAgICAgICAgICBwcm9tb3RlX2Zsb2F0PGZhbHNlPiwKLSAgICAgICAgICBwcm9tb3RlX2RvdWJsZTxmYWxzZT4sCi0gICAgICAgICAgZGlzY3JldGVfcXVhbnRpbGU8PiwKLSAgICAgICAgICBhc3NlcnRfdW5kZWZpbmVkPD4sCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3k+Ci17Ci0gICB0eXBlZGVmIHBvbGljeTxkZXRhaWw6OmZvcndhcmRpbmdfYXJnMSwgZGV0YWlsOjpmb3J3YXJkaW5nX2FyZzI+IHR5cGU7Ci19OwotCi1pbmxpbmUgcG9saWN5PD4gbWFrZV9wb2xpY3koKQoteyByZXR1cm4gcG9saWN5PD4oKTsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTE+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMT46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMT46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTI+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTI+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTI+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTM+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTM+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBND46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJiwgY29uc3QgQTQmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBND46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYsIGNvbnN0IEE0JiwgY29uc3QgQTUmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYsIGNvbnN0IEE0JiwgY29uc3QgQTUmLCBjb25zdCBBNiYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJiwgY29uc3QgQTQmLCBjb25zdCBBNSYsIGNvbnN0IEE2JiwgY29uc3QgQTcmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYsIGNvbnN0IEE0JiwgY29uc3QgQTUmLCBjb25zdCBBNiYsIGNvbnN0IEE3JiwgY29uc3QgQTgmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYsIGNvbnN0IEE0JiwgY29uc3QgQTUmLCBjb25zdCBBNiYsIGNvbnN0IEE3JiwgY29uc3QgQTgmLCBjb25zdCBBOSYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSwgY2xhc3MgQTEwPgotaW5saW5lIHR5cGVuYW1lIG5vcm1hbGlzZTxwb2xpY3k8PiwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSwgQTEwPjo6dHlwZSBtYWtlX3BvbGljeShjb25zdCBBMSYsIGNvbnN0IEEyJiwgY29uc3QgQTMmLCBjb25zdCBBNCYsIGNvbnN0IEE1JiwgY29uc3QgQTYmLCBjb25zdCBBNyYsIGNvbnN0IEE4JiwgY29uc3QgQTkmLCBjb25zdCBBMTAmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5LCBBMTA+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSwgY2xhc3MgQTEwLCBjbGFzcyBBMTE+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5LCBBMTAsIEExMT46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJiwgY29uc3QgQTQmLCBjb25zdCBBNSYsIGNvbnN0IEE2JiwgY29uc3QgQTcmLCBjb25zdCBBOCYsIGNvbnN0IEE5JiwgY29uc3QgQTEwJiwgY29uc3QgQTExJikKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5LCBBMTAsIEExMT46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsKLX0KLQotLy8KLS8vIFRyYWl0cyBjbGFzcyB0byBoYW5kbGUgaW50ZXJuYWwgcHJvbW90aW9uOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBSZWFsLCBjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgZXZhbHVhdGlvbgotewotICAgdHlwZWRlZiBSZWFsIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5Pgotc3RydWN0IGV2YWx1YXRpb248ZmxvYXQsIFBvbGljeT4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88dHlwZW5hbWUgUG9saWN5Ojpwcm9tb3RlX2Zsb2F0X3R5cGUsIGRvdWJsZSwgZmxvYXQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5Pgotc3RydWN0IGV2YWx1YXRpb248ZG91YmxlLCBQb2xpY3k+Ci17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPHR5cGVuYW1lIFBvbGljeTo6cHJvbW90ZV9kb3VibGVfdHlwZSwgbG9uZyBkb3VibGUsIGRvdWJsZT46OnR5cGUgdHlwZTsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVhbD4KLXN0cnVjdCBiYXNpY19kaWdpdHMgOiBwdWJsaWMgbXBsOjppbnRfPDA+eyB9OwotdGVtcGxhdGUgPD4KLXN0cnVjdCBiYXNpY19kaWdpdHM8ZmxvYXQ+IDogcHVibGljIG1wbDo6aW50XzxGTFRfTUFOVF9ESUc+eyB9OwotdGVtcGxhdGUgPD4KLXN0cnVjdCBiYXNpY19kaWdpdHM8ZG91YmxlPiA6IHB1YmxpYyBtcGw6OmludF88REJMX01BTlRfRElHPnsgfTsKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgYmFzaWNfZGlnaXRzPGxvbmcgZG91YmxlPiA6IHB1YmxpYyBtcGw6OmludF88TERCTF9NQU5UX0RJRz57IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZWFsLCBjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgcHJlY2lzaW9uCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbD46OnJhZGl4ID09IDIpOwotICAgdHlwZWRlZiB0eXBlbmFtZSBQb2xpY3k6OnByZWNpc2lvbl90eXBlIHByZWNpc2lvbl90eXBlOwotICAgdHlwZWRlZiBiYXNpY19kaWdpdHM8UmVhbD4gZGlnaXRzX3Q7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgbXBsOjplcXVhbF90bzxkaWdpdHNfdCwgbXBsOjppbnRfPDA+ID4sCi0gICAgICAvLyBQb3NzaWJseSB1bmtub3duIHByZWNpc2lvbjoKLSAgICAgIHByZWNpc2lvbl90eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICBtcGw6Om9yXzxtcGw6Omxlc3NfZXF1YWw8ZGlnaXRzX3QsIHByZWNpc2lvbl90eXBlPiwgbXBsOjpsZXNzX2VxdWFsPHByZWNpc2lvbl90eXBlLCBtcGw6OmludF88MD4gPiA+LAotICAgICAgICAgLy8gRGVmYXVsdCBjYXNlLCBmdWxsIHByZWNpc2lvbiBmb3IgUmVhbFR5cGU6Ci0gICAgICAgICBkaWdpdHMyPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbD46OmRpZ2l0cz4sCi0gICAgICAgICAvLyBVc2VyIGN1c3RvbWlzZWQgcHJlY2lzaW9uOgotICAgICAgICAgcHJlY2lzaW9uX3R5cGUKLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgcHJlY2lzaW9uPGZsb2F0LCBQb2xpY3k+Ci17Ci0gICB0eXBlZGVmIGRpZ2l0czI8RkxUX01BTlRfRElHPiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgcHJlY2lzaW9uPGRvdWJsZSwgUG9saWN5PgotewotICAgdHlwZWRlZiBkaWdpdHMyPERCTF9NQU5UX0RJRz4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5Pgotc3RydWN0IHByZWNpc2lvbjxsb25nIGRvdWJsZSwgUG9saWN5PgotewotICAgdHlwZWRlZiBkaWdpdHMyPExEQkxfTUFOVF9ESUc+IHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVhbCwgY2xhc3MgUG9saWN5Pgotc3RydWN0IHByZWNpc2lvbgotewotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWw+OjpyYWRpeCA9PSAyKSB8fCAoKDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6aXNfc3BlY2lhbGl6ZWQgPT0gMCkgfHwgKDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6ZGlnaXRzID09IDApKSk7Ci0jaWZuZGVmIF9fQk9STEFORENfXwotICAgdHlwZWRlZiB0eXBlbmFtZSBQb2xpY3k6OnByZWNpc2lvbl90eXBlIHByZWNpc2lvbl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAoKDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6aXNfc3BlY2lhbGl6ZWQgPT0gMCkgfHwgKDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6ZGlnaXRzID09IDApKSwKLSAgICAgIC8vIFBvc3NpYmx5IHVua25vd24gcHJlY2lzaW9uOgotICAgICAgcHJlY2lzaW9uX3R5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAoKDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6ZGlnaXRzIDw9IHByZWNpc2lvbl90eXBlOjp2YWx1ZSkgCi0gICAgICAgICB8fCAoUG9saWN5OjpwcmVjaXNpb25fdHlwZTo6dmFsdWUgPD0gMCkpLAotICAgICAgICAgLy8gRGVmYXVsdCBjYXNlLCBmdWxsIHByZWNpc2lvbiBmb3IgUmVhbFR5cGU6Ci0gICAgICAgICBkaWdpdHMyPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbD46OmRpZ2l0cz4sCi0gICAgICAgICAvLyBVc2VyIGN1c3RvbWlzZWQgcHJlY2lzaW9uOgotICAgICAgICAgcHJlY2lzaW9uX3R5cGUKLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgdHlwZTsKLSNlbHNlCi0gICB0eXBlZGVmIHR5cGVuYW1lIFBvbGljeTo6cHJlY2lzaW9uX3R5cGUgcHJlY2lzaW9uX3R5cGU7Ci0gICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWw+OjpkaWdpdHM+IGRpZ2l0c190OwotICAgdHlwZWRlZiBtcGw6OmJvb2xfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbD46OmlzX3NwZWNpYWxpemVkPiBzcGVjX3Q7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgbXBsOjpvcl88bXBsOjplcXVhbF90bzxzcGVjX3QsIG1wbDo6ZmFsc2VfPiwgbXBsOjplcXVhbF90bzxkaWdpdHNfdCwgbXBsOjppbnRfPDA+ID4gPiwKLSAgICAgIC8vIFBvc3NpYmx5IHVua25vd24gcHJlY2lzaW9uOgotICAgICAgcHJlY2lzaW9uX3R5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIG1wbDo6b3JfPG1wbDo6bGVzc19lcXVhbDxkaWdpdHNfdCwgcHJlY2lzaW9uX3R5cGU+LCBtcGw6Omxlc3NfZXF1YWw8cHJlY2lzaW9uX3R5cGUsIG1wbDo6aW50XzwwPiA+ID4sCi0gICAgICAgICAvLyBEZWZhdWx0IGNhc2UsIGZ1bGwgcHJlY2lzaW9uIGZvciBSZWFsVHlwZToKLSAgICAgICAgIGRpZ2l0czI8IDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6ZGlnaXRzPiwKLSAgICAgICAgIC8vIFVzZXIgY3VzdG9taXNlZCBwcmVjaXNpb246Ci0gICAgICAgICBwcmVjaXNpb25fdHlwZQotICAgICAgPjo6dHlwZQotICAgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi19OwotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfVVNFX0ZMT0FUMTI4Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgcHJlY2lzaW9uPF9fZmxvYXQxMjgsIFBvbGljeT4KLXsKLSAgIHR5cGVkZWYgbXBsOjppbnRfPDExMz4gdHlwZTsKLX07Ci0KLSNlbmRpZgotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotaW5saW5lIGludCBkaWdpdHNfaW1wKG1wbDo6dHJ1ZV8gY29uc3QmKQotewotI2lmbmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCk7Ci0jZWxzZQotICAgTkROQk9PU1RfQVNTRVJUKDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpOwotI2VuZGlmCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6cHJlY2lzaW9uPFQsIFBvbGljeT46OnR5cGUgcF90OwotICAgcmV0dXJuIHBfdDo6dmFsdWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci1pbmxpbmUgaW50IGRpZ2l0c19pbXAobXBsOjpmYWxzZV8gY29uc3QmKQotewotICAgcmV0dXJuIHRvb2xzOjpkaWdpdHM8VD4oKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci1pbmxpbmUgaW50IGRpZ2l0cyhORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoVCkpCi17Ci0gICB0eXBlZGVmIG1wbDo6Ym9vbF88IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkID4gdGFnX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjpkaWdpdHNfaW1wPFQsIFBvbGljeT4odGFnX3R5cGUoKSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1pbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfbWF4X3Nlcmllc19pdGVyYXRpb25zKCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUG9saWN5OjptYXhfc2VyaWVzX2l0ZXJhdGlvbnNfdHlwZSBpdGVyX3R5cGU7Ci0gICByZXR1cm4gaXRlcl90eXBlOjp2YWx1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFBvbGljeT4KLWlubGluZSB1bnNpZ25lZCBsb25nIGdldF9tYXhfcm9vdF9pdGVyYXRpb25zKCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUG9saWN5OjptYXhfcm9vdF9pdGVyYXRpb25zX3R5cGUgaXRlcl90eXBlOwotICAgcmV0dXJuIGl0ZXJfdHlwZTo6dmFsdWU7Ci19Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEaWdpdHMsIGNsYXNzIFNtYWxsLCBjbGFzcyBEZWZhdWx0Pgotc3RydWN0IHNlcmllc19mYWN0b3JfY2FsYwotewotICAgc3RhdGljIFQgZ2V0KCkKLSAgIHsKLSAgICAgIHJldHVybiBsZGV4cChUKDEuMCksIDEgLSBEaWdpdHM6OnZhbHVlKTsKLSAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEaWdpdHM+Ci1zdHJ1Y3Qgc2VyaWVzX2ZhY3Rvcl9jYWxjPFQsIERpZ2l0cywgbXBsOjp0cnVlXywgbXBsOjp0cnVlXz4KLXsKLSAgIHN0YXRpYyBUIGdldCgpCi0gICB7Ci0gICAgICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjplcHNpbG9uPFQ+KCk7Ci0gICB9Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERpZ2l0cz4KLXN0cnVjdCBzZXJpZXNfZmFjdG9yX2NhbGM8VCwgRGlnaXRzLCBtcGw6OnRydWVfLCBtcGw6OmZhbHNlXz4KLXsKLSAgIHN0YXRpYyBUIGdldCgpCi0gICB7Ci0gICAgICBzdGF0aWMgY29uc3QgbmRuYm9vc3Q6OnVpbnRtYXhfdCB2ID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnRtYXhfdD4oMXUpIDw8IChEaWdpdHM6OnZhbHVlIC0gMSk7Ci0gICAgICByZXR1cm4gMSAvIHN0YXRpY19jYXN0PFQ+KHYpOwotICAgfQotfTsKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEaWdpdHM+Ci1zdHJ1Y3Qgc2VyaWVzX2ZhY3Rvcl9jYWxjPFQsIERpZ2l0cywgbXBsOjpmYWxzZV8sIG1wbDo6dHJ1ZV8+Ci17Ci0gICBzdGF0aWMgVCBnZXQoKQotICAgewotICAgICAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjp0b29sczo6ZXBzaWxvbjxUPigpOwotICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLWlubGluZSBUIGdldF9lcHNpbG9uX2ltcChtcGw6OnRydWVfIGNvbnN0JikKLXsKLSNpZm5kZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpyYWRpeCA9PSAyKTsKLSNlbHNlCi0gICBORE5CT09TVF9BU1NFUlQoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCk7Ci0gICBORE5CT09TVF9BU1NFUlQoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpyYWRpeCA9PSAyKTsKLSNlbmRpZgotICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OnByZWNpc2lvbjxULCBQb2xpY3k+Ojp0eXBlIHBfdDsKLSAgIHR5cGVkZWYgbXBsOjpib29sXzxwX3Q6OnZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8bmRuYm9vc3Q6OnVpbnRtYXhfdD46OmRpZ2l0cz4gaXNfc21hbGxfaW50OwotICAgdHlwZWRlZiBtcGw6OmJvb2xfPHBfdDo6dmFsdWUgPj0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzPiBpc19kZWZhdWx0X3ZhbHVlOwotICAgcmV0dXJuIHNlcmllc19mYWN0b3JfY2FsYzxULCBwX3QsIGlzX3NtYWxsX2ludCwgaXNfZGVmYXVsdF92YWx1ZT46OmdldCgpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotaW5saW5lIFQgZ2V0X2Vwc2lsb25faW1wKG1wbDo6ZmFsc2VfIGNvbnN0JikKLXsKLSAgIHJldHVybiB0b29sczo6ZXBzaWxvbjxUPigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLWlubGluZSBUIGdldF9lcHNpbG9uKE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRShUKSkKLXsKLSAgIHR5cGVkZWYgbXBsOjpib29sXzwgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkICYmIChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpyYWRpeCA9PSAyKSkgPiB0YWdfdHlwZTsKLSAgIHJldHVybiBkZXRhaWw6OmdldF9lcHNpbG9uX2ltcDxULCBQb2xpY3k+KHRhZ190eXBlKCkpOwotfQotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIAotICAgICAgICAgIGNsYXNzIEEyLCAKLSAgICAgICAgICBjbGFzcyBBMywKLSAgICAgICAgICBjbGFzcyBBNCwKLSAgICAgICAgICBjbGFzcyBBNSwKLSAgICAgICAgICBjbGFzcyBBNiwKLSAgICAgICAgICBjbGFzcyBBNywKLSAgICAgICAgICBjbGFzcyBBOCwKLSAgICAgICAgICBjbGFzcyBBOSwKLSAgICAgICAgICBjbGFzcyBBMTAsCi0gICAgICAgICAgY2xhc3MgQTExPgotY2hhciB0ZXN0X2lzX3BvbGljeShjb25zdCBwb2xpY3k8QTEsQTIsQTMsQTQsQTUsQTYsQTcsQTgsQTksQTEwLEExMT4qKTsKLWRvdWJsZSB0ZXN0X2lzX3BvbGljeSguLi4pOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUD4KLXN0cnVjdCBpc19wb2xpY3lfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OnRlc3RfaXNfcG9saWN5KHN0YXRpY19jYXN0PFAqPigwKSkpID09IDEpKTsKLX07Ci0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIFA+Ci1zdHJ1Y3QgaXNfcG9saWN5IDogcHVibGljIG1wbDo6Ym9vbF88IDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3BvbGljeV9pbXA8UD46OnZhbHVlPiB7fTsKLQotLy8KLS8vIEhlbHBlciB0cmFpdHMgY2xhc3MgZm9yIGRpc3RyaWJ1dGlvbiBlcnJvciBoYW5kbGluZzoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5Pgotc3RydWN0IGNvbnN0cnVjdG9yX2Vycm9yX2NoZWNrCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIFBvbGljeTo6ZG9tYWluX2Vycm9yX3R5cGUgZG9tYWluX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgIChkb21haW5fZXJyb3JfdHlwZTo6dmFsdWUgPT0gdGhyb3dfb25fZXJyb3IpIHx8IChkb21haW5fZXJyb3JfdHlwZTo6dmFsdWUgPT0gdXNlcl9lcnJvciksCi0gICAgICBtcGw6OnRydWVfLAotICAgICAgbXBsOjpmYWxzZV8+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5Pgotc3RydWN0IG1ldGhvZF9lcnJvcl9jaGVjawotewotICAgdHlwZWRlZiB0eXBlbmFtZSBQb2xpY3k6OmRvbWFpbl9lcnJvcl90eXBlIGRvbWFpbl9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAoZG9tYWluX2Vycm9yX3R5cGU6OnZhbHVlID09IHRocm93X29uX2Vycm9yKSAmJiAoZG9tYWluX2Vycm9yX3R5cGU6OnZhbHVlICE9IHVzZXJfZXJyb3IpLAotICAgICAgbXBsOjpmYWxzZV8sCi0gICAgICBtcGw6OnRydWVfPjo6dHlwZSB0eXBlOwotfTsKLQotfX19IC8vIG5hbWVzcGFjZXMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfUE9MSUNZX0hQUAotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9mcF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9mcF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmYxNzhhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9kZXRhaWwvZnBfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3MCArMCwwIEBACi0vLyBmcF90cmFpdHMuaHBwCi0KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9GUF9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRlBfVFJBSVRTX0hQUAotCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDYgSm9oYW4gUmFkZQotCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotLy8gb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8qCi1UbyBzdXBwb3J0IG9sZCBjb21waWxlcnMsIGNhcmUgaGFzIGJlZW4gdGFrZW4gdG8gYXZvaWQgcGFydGlhbCB0ZW1wbGF0ZQotc3BlY2lhbGl6YXRpb24gYW5kIG1ldGEgZnVuY3Rpb24gZm9yd2FyZGluZy4KLVdpdGggdGhlc2UgdGVjaG5pcXVlcywgdGhlIGNvZGUgY291bGQgYmUgc2ltcGxpZmllZC4KLSovCi0KLSNpZiBkZWZpbmVkKF9fdm1zKSAmJiBkZWZpbmVkKF9fREVDQ1hYKSAmJiAhX19JRUVFX0ZMT0FUCi0vLyBUaGUgVkFYIGZsb2F0aW5nIHBvaW50IGZvcm1hdHMgYXJlIHVzZWQgKGZvciBmbG9hdCBhbmQgZG91YmxlKQotIyAgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1ZBWF9GT1JNQVQKLSNlbmRpZgotCi0jaW5jbHVkZSA8Y3N0cmluZz4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2VuZGlhbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXRpbmdfcG9pbnQuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSAgbmFtZXNwYWNlIHN0ZHsgdXNpbmcgOjptZW1jcHk7IH0KLSNlbmRpZgotCi0jaWZuZGVmIEZQX05PUk1BTAotCi0jZGVmaW5lIEZQX1pFUk8gICAgICAgIDAKLSNkZWZpbmUgRlBfTk9STUFMICAgICAgMQotI2RlZmluZSBGUF9JTkZJTklURSAgICAyCi0jZGVmaW5lIEZQX05BTiAgICAgICAgIDMKLSNkZWZpbmUgRlBfU1VCTk9STUFMICAgNAotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19GUENMQVNTSUZZCi0KLSNpZm5kZWYgZnBjbGFzc2lmeQotIyAgaWYgKGRlZmluZWQoX19HTElCQ1BQX18pIHx8IGRlZmluZWQoX19HTElCQ1hYX18pKSBcCi0gICAgICAgICAmJiBkZWZpbmVkKF9HTElCQ1hYX1VTRV9DOTlfTUFUSCkgXAotICAgICAgICAgJiYgIShkZWZpbmVkKF9HTElCQ1hYX1VTRV9DOTlfRlBfTUFDUk9TX0RZTkFNSUMpIFwKLSAgICAgICAgICYmIChfR0xJQkNYWF9VU0VfQzk5X0ZQX01BQ1JPU19EWU5BTUlDICE9IDApKQotIyAgICAgaWZkZWYgX1NUTFBfVkVORE9SX0NTVEQKLSMgICAgICAgIGlmIF9TVExQT1JUX1ZFUlNJT04gPj0gMHg1MjAKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWCA6Ol9fc3RkX2FsaWFzOjogCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfRlBDTEFTU0lGWV9QUkVGSVggOjpfU1RMUF9WRU5ET1JfQ1NURDo6IAotIyAgICAgICAgZW5kaWYKLSMgICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWCA6OnN0ZDo6Ci0jICAgICBlbmRpZgotIyAgZWxzZQotIyAgICAgdW5kZWYgTkROQk9PU1RfSEFTX0ZQQ0xBU1NJRlkKLSMgICAgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWAotIyAgZW5kaWYKLSNlbGlmIChkZWZpbmVkKF9fSFBfYUNDKSAmJiAhZGVmaW5lZChfX2hwcGEpKQotLy8gYUNDIDYgYXBwZWFycyB0byBkbyAiI2RlZmluZSBmcGNsYXNzaWZ5IGZwY2xhc3NpZnkiIHdoaWNoIG1lc3NlcyB1cyB1cCBhIGJpdCEKLSMgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWCA6OgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWAotI2VuZGlmCi0KLSNpZmRlZiBfX01JTkdXMzJfXwotIyAgdW5kZWYgTkROQk9PU1RfSEFTX0ZQQ0xBU1NJRlkKLSNlbmRpZgotCi0jZW5kaWYKLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIG1hdGggewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8qIAotVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSB1c2VkIHRvIHRhZyB0aGUgZGlmZmVyZW50IG1ldGhvZHMgdGhhdCBhcmUgdXNlZAotZm9yIGZsb2F0aW5nIHBvaW50IGNsYXNzaWZpY2F0aW9uCi0qLwotCi1zdHJ1Y3QgbmF0aXZlX3RhZyB7fTsKLXRlbXBsYXRlIDxib29sIGhhc19saW1pdHM+Ci1zdHJ1Y3QgZ2VuZXJpY190YWcge307Ci1zdHJ1Y3QgaWVlZV90YWcge307Ci1zdHJ1Y3QgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyA6IHB1YmxpYyBpZWVlX3RhZyB7fTsKLXN0cnVjdCBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZyA6IHB1YmxpYyBpZWVlX3RhZyB7fTsKLQotI2lmZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0vLwotLy8gVGhlc2UgaGVscGVyIGZ1bmN0aW9ucyBhcmUgdXNlZCBvbmx5IHdoZW4gbnVtZXJpY19saW1pdHM8PgotLy8gbWVtYmVycyBhcmUgbm90IGNvbXBpbGUgdGltZSBjb25zdGFudHM6Ci0vLwotaW5saW5lIGJvb2wgaXNfZ2VuZXJpY190YWdfZmFsc2UoY29uc3QgZ2VuZXJpY190YWc8ZmFsc2U+KikKLXsKLSAgIHJldHVybiB0cnVlOwotfQotaW5saW5lIGJvb2wgaXNfZ2VuZXJpY190YWdfZmFsc2UoY29uc3Qgdm9pZCopCi17Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLyoKLU1vc3QgcHJvY2Vzc29ycyBzdXBwb3J0IHRocmVlIGRpZmZlcmVudCBmbG9hdGluZyBwb2ludCBwcmVjaXNpb25zOgotc2luZ2xlIHByZWNpc2lvbiAoMzIgYml0cyksIGRvdWJsZSBwcmVjaXNpb24gKDY0IGJpdHMpCi1hbmQgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiAoODAgLSAxMjggYml0cywgZGVwZW5kaW5nIG9uIHRoZSBwcm9jZXNzb3IpCi0KLU5vdGUgdGhhdCB0aGUgQysrIHR5cGUgbG9uZyBkb3VibGUgY2FuIGJlIGltcGxlbWVudGVkCi1ib3RoIGFzIGRvdWJsZSBwcmVjaXNpb24gYW5kIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24uCi0qLwotCi1zdHJ1Y3QgdW5rbm93bl9wcmVjaXNpb257fTsKLXN0cnVjdCBzaW5nbGVfcHJlY2lzaW9uIHt9Owotc3RydWN0IGRvdWJsZV9wcmVjaXNpb24ge307Ci1zdHJ1Y3QgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbiB7fTsKLQotLy8gbmF0aXZlX3RhZyB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBmcF90cmFpdHNfbmF0aXZlCi17Ci0gICAgdHlwZWRlZiBuYXRpdmVfdGFnIG1ldGhvZDsKLX07Ci0KLS8vIGdlbmVyaWNfdGFnIHZlcnNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBzdHJ1Y3QgZnBfdHJhaXRzX25vbl9uYXRpdmUKLXsKLSNpZm5kZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgIHR5cGVkZWYgZ2VuZXJpY190YWc8c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQ+IG1ldGhvZDsKLSNlbHNlCi0gICB0eXBlZGVmIGdlbmVyaWNfdGFnPGZhbHNlPiBtZXRob2Q7Ci0jZW5kaWYKLX07Ci0KLS8vIGllZWVfdGFnIHZlcnNpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vKgotVGhlc2Ugc3BlY2lhbGl6YXRpb25zIG9mIGZwX3RyYWl0c19ub25fbmF0aXZlIGNvbnRhaW4gaW5mb3JtYXRpb24gbmVlZGVkCi10byAicGFyc2UiIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIuCi0KLVR5cGVkZWYgbWVtYmVyczoKLQotICBiaXRzIC0tIHRoZSB0YXJnZXQgdHlwZSB3aGVuIGNvcHlpbmcgdGhlIGxlYWRpbmcgYnl0ZXMgb2YgYSBmbG9hdGluZwotICAgICAgcG9pbnQgbnVtYmVyLiBJdCBpcyBhIHR5cGVkZWYgZm9yIHVpbnQzMl90IG9yIHVpbnQ2NF90LgotCi0gIG1ldGhvZCAtLSB0ZWxscyB1cyB3aGV0aGVyIGFsbCBieXRlcyBhcmUgY29waWVkIG9yIG5vdC4KLSAgICAgIEl0IGlzIGEgdHlwZWRlZiBmb3IgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBvciBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZy4KLQotU3RhdGljIGRhdGEgbWVtYmVyczoKLQotICBzaWduLCBleHBvbmVudCwgZmxhZywgc2lnbmlmaWNhbmQgLS0gYml0IG1hc2tzIHRoYXQgZ2l2ZSB0aGUgbWVhbmluZyBvZiB0aGUKLSAgYml0cyBpbiB0aGUgbGVhZGluZyBieXRlcy4KLQotU3RhdGljIGZ1bmN0aW9uIG1lbWJlcnM6Ci0KLSAgZ2V0X2JpdHMoKSwgc2V0X2JpdHMoKSAtLSBwcm92aWRlIGFjY2VzcyB0byB0aGUgbGVhZGluZyBieXRlcy4KLQotKi8KLQotLy8gaWVlZV90YWcgdmVyc2lvbiwgZmxvYXQgKDMyIGJpdHMpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlBDTEFTU0lGWV9WQVhfRk9STUFUCi0KLXRlbXBsYXRlPD4gc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGZsb2F0LCBzaW5nbGVfcHJlY2lzaW9uPgotewotICAgIHR5cGVkZWYgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBtZXRob2Q7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ24gICAgICAgID0gMHg4MDAwMDAwMHUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZXhwb25lbnQgICAgPSAweDdmODAwMDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIGZsYWcgICAgICAgID0gMHgwMDAwMDAwMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBzaWduaWZpY2FuZCA9IDB4MDA3ZmZmZmYpOwotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBiaXRzOwotICAgIHN0YXRpYyB2b2lkIGdldF9iaXRzKGZsb2F0IHgsIHVpbnQzMl90JiBhKSB7IHN0ZDo6bWVtY3B5KCZhLCAmeCwgNCk7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhmbG9hdCYgeCwgdWludDMyX3QgYSkgeyBzdGQ6Om1lbWNweSgmeCwgJmEsIDQpOyB9Ci19OwotCi0vLyBpZWVlX3RhZyB2ZXJzaW9uLCBkb3VibGUgKDY0IGJpdHMpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fSU5UNjRfVCkgfHwgZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikgXAotICAgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19DT0RFR0VBUl9fKQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxkb3VibGUsIGRvdWJsZV9wcmVjaXNpb24+Ci17Ci0gICAgdHlwZWRlZiBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZyBtZXRob2Q7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ24gICAgICAgID0gMHg4MDAwMDAwMHUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZXhwb25lbnQgICAgPSAweDdmZjAwMDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIGZsYWcgICAgICAgID0gMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBzaWduaWZpY2FuZCA9IDB4MDAwZmZmZmYpOwotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBiaXRzOwotCi0gICAgc3RhdGljIHZvaWQgZ2V0X2JpdHMoZG91YmxlIHgsIHVpbnQzMl90JiBhKQotICAgIHsKLSAgICAgICAgc3RkOjptZW1jcHkoJmEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sIDQpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHNldF9iaXRzKGRvdWJsZSYgeCwgdWludDMyX3QgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sICZhLCA0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0JJR19FTkRJQU4pCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgb2Zmc2V0XyA9IDApOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9MSVRUTEVfRU5ESUFOKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG9mZnNldF8gPSA0KTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChmYWxzZSk7Ci0jZW5kaWYKLX07Ci0KLS8vLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0KLSNlbHNlCi0KLXRlbXBsYXRlPD4gc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGRvdWJsZSwgZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9hbGxfYml0c190YWcgbWV0aG9kOwotCi0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNpZ24gICAgID0gKCh1aW50NjRfdCkweDgwMDAwMDAwdSkgPDwgMzI7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGV4cG9uZW50ID0gKCh1aW50NjRfdCkweDdmZjAwMDAwKSA8PCAzMjsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZmxhZyAgICAgPSAwOwotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBzaWduaWZpY2FuZAotICAgICAgICA9ICgoKHVpbnQ2NF90KTB4MDAwZmZmZmYpIDw8IDMyKSArICgodWludDY0X3QpMHhmZmZmZmZmZnUpOwotCi0gICAgdHlwZWRlZiB1aW50NjRfdCBiaXRzOwotICAgIHN0YXRpYyB2b2lkIGdldF9iaXRzKGRvdWJsZSB4LCB1aW50NjRfdCYgYSkgeyBzdGQ6Om1lbWNweSgmYSwgJngsIDgpOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0X2JpdHMoZG91YmxlJiB4LCB1aW50NjRfdCBhKSB7IHN0ZDo6bWVtY3B5KCZ4LCAmYSwgOCk7IH0KLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfRlBDTEFTU0lGWV9WQVhfRk9STUFUCi0KLS8vIGxvbmcgZG91YmxlICg2NCBiaXRzKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0lOVDY0X1QpIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04pXAotICAgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19DT0RFR0VBUl9fKQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxsb25nIGRvdWJsZSwgZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2ZmMDAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDBmZmZmZik7Ci0KLSAgICB0eXBlZGVmIHVpbnQzMl90IGJpdHM7Ci0KLSAgICBzdGF0aWMgdm9pZCBnZXRfYml0cyhsb25nIGRvdWJsZSB4LCB1aW50MzJfdCYgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KCZhLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmeCkgKyBvZmZzZXRfLCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhsb25nIGRvdWJsZSYgeCwgdWludDMyX3QgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sICZhLCA0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0JJR19FTkRJQU4pCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgb2Zmc2V0XyA9IDApOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9MSVRUTEVfRU5ESUFOKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG9mZnNldF8gPSA0KTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChmYWxzZSk7Ci0jZW5kaWYKLX07Ci0KLS8vLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0KLSNlbHNlCi0KLXRlbXBsYXRlPD4gc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGxvbmcgZG91YmxlLCBkb3VibGVfcHJlY2lzaW9uPgotewotICAgIHR5cGVkZWYgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBtZXRob2Q7Ci0KLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc2lnbiAgICAgPSAodWludDY0X3QpMHg4MDAwMDAwMHUgPDwgMzI7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGV4cG9uZW50ID0gKHVpbnQ2NF90KTB4N2ZmMDAwMDAgPDwgMzI7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGZsYWcgICAgID0gMDsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc2lnbmlmaWNhbmQKLSAgICAgICAgPSAoKHVpbnQ2NF90KTB4MDAwZmZmZmYgPDwgMzIpICsgKHVpbnQ2NF90KTB4ZmZmZmZmZmZ1OwotCi0gICAgdHlwZWRlZiB1aW50NjRfdCBiaXRzOwotICAgIHN0YXRpYyB2b2lkIGdldF9iaXRzKGxvbmcgZG91YmxlIHgsIHVpbnQ2NF90JiBhKSB7IHN0ZDo6bWVtY3B5KCZhLCAmeCwgOCk7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhsb25nIGRvdWJsZSYgeCwgdWludDY0X3QgYSkgeyBzdGQ6Om1lbWNweSgmeCwgJmEsIDgpOyB9Ci19OwotCi0jZW5kaWYKLQotCi0vLyBsb25nIGRvdWJsZSAoPjY0IGJpdHMpLCB4ODYgYW5kIHg2NCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWYgZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX01fSVg4NikgXAotICAgIHx8IGRlZmluZWQoX19hbWQ2NCkgfHwgZGVmaW5lZChfX2FtZDY0X18pICB8fCBkZWZpbmVkKF9NX0FNRDY0KSBcCi0gICAgfHwgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkKLQotLy8gSW50ZWwgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiBmb3JtYXQgKDgwIGJpdHMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxsb25nIGRvdWJsZSwgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2ZmZjAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAweDAwMDA4MDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDAwN2ZmZik7Ci0KLSAgICB0eXBlZGVmIHVpbnQzMl90IGJpdHM7Ci0KLSAgICBzdGF0aWMgdm9pZCBnZXRfYml0cyhsb25nIGRvdWJsZSB4LCB1aW50MzJfdCYgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KCZhLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmeCkgKyA2LCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhsb25nIGRvdWJsZSYgeCwgdWludDMyX3QgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZ4KSArIDYsICZhLCA0KTsKLSAgICB9Ci19OwotCi0KLS8vIGxvbmcgZG91YmxlICg+NjQgYml0cyksIEl0YW5pdW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNlbGlmIGRlZmluZWQoX19pYTY0KSB8fCBkZWZpbmVkKF9faWE2NF9fKSB8fCBkZWZpbmVkKF9NX0lBNjQpCi0KLS8vIFRoZSBmbG9hdGluZyBwb2ludCBmb3JtYXQgaXMgdW5rbm93biBhdCBjb21waWxlIHRpbWUKLS8vIE5vIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGlzIHByb3ZpZGVkLgotLy8gVGhlIGdlbmVyaWNfdGFnIGRlZmluaXRpb24gaXMgdXNlZC4KLQotLy8gVGhlIEl0YW5pdW0gc3VwcG9ydHMgYm90aAotLy8gdGhlIEludGVsIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0ICg4MCBiaXRzKSBhbmQKLS8vIHRoZSBJRUVFIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0IHdpdGggMTUgZXhwb25lbnQgYml0cyAoMTI4IGJpdHMpLgotCi0KLS8vIGxvbmcgZG91YmxlICg+NjQgYml0cyksIFBvd2VyUEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNlbGlmIGRlZmluZWQoX19wb3dlcnBjKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fUE9XRVJQQ19fKSBcCi0gICAgfHwgZGVmaW5lZChfX3BwYykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBDX18pCi0KLS8vIFBvd2VyUEMgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiBmb3JtYXQgKDEyOCBiaXRzKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnBfdHJhaXRzX25vbl9uYXRpdmU8bG9uZyBkb3VibGUsIGV4dGVuZGVkX2RvdWJsZV9wcmVjaXNpb24+Ci17Ci0gICAgdHlwZWRlZiBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZyBtZXRob2Q7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ24gICAgICAgID0gMHg4MDAwMDAwMHUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZXhwb25lbnQgICAgPSAweDdmZjAwMDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIGZsYWcgICAgICAgID0gMHgwMDAwMDAwMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBzaWduaWZpY2FuZCA9IDB4MDAwZmZmZmYpOwotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBiaXRzOwotCi0gICAgc3RhdGljIHZvaWQgZ2V0X2JpdHMobG9uZyBkb3VibGUgeCwgdWludDMyX3QmIGEpCi0gICAgewotICAgICAgICBzdGQ6Om1lbWNweSgmYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJngpICsgb2Zmc2V0XywgNCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0X2JpdHMobG9uZyBkb3VibGUmIHgsIHVpbnQzMl90IGEpCi0gICAgewotICAgICAgICBzdGQ6Om1lbWNweShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmeCkgKyBvZmZzZXRfLCAmYSwgNCk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9CSUdfRU5ESUFOKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG9mZnNldF8gPSAwKTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTElUVExFX0VORElBTikKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBvZmZzZXRfID0gMTIpOwotI2Vsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGZhbHNlKTsKLSNlbmRpZgotfTsKLQotCi0vLyBsb25nIGRvdWJsZSAoPjY0IGJpdHMpLCBNb3Rvcm9sYSA2OEsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jZWxpZiBkZWZpbmVkKF9fbTY4aykgfHwgZGVmaW5lZChfX202OGtfXykgXAotICAgIHx8IGRlZmluZWQoX19tYzY4MDAwKSB8fCBkZWZpbmVkKF9fbWM2ODAwMF9fKSBcCi0KLS8vIE1vdG9yb2xhIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0ICg5NiBiaXRzKQotCi0vLyBJdCBpcyB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIEludGVsIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0LAotLy8gZXhjZXB0IHRoYXQgMSkgaXQgaXMgYmlnLWVuZGlhbiwgMikgdGhlIDNyZCBhbmQgNHRoIGJ5dGUgYXJlIHBhZGRpbmcsIGFuZAotLy8gMykgdGhlIGZsYWcgYml0IGlzIG5vdCBzZXQgZm9yIGluZmluaXR5Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxsb25nIGRvdWJsZSwgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2ZmZjAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAweDAwMDA4MDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDAwN2ZmZik7Ci0KLSAgICAvLyBjb3B5IDFzdCwgMm5kLCA1dGggYW5kIDZ0aCBieXRlLiAzcmQgYW5kIDR0aCBieXRlIGFyZSBwYWRkaW5nLgotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBiaXRzOwotCi0gICAgc3RhdGljIHZvaWQgZ2V0X2JpdHMobG9uZyBkb3VibGUgeCwgdWludDMyX3QmIGEpCi0gICAgewotICAgICAgICBzdGQ6Om1lbWNweSgmYSwgJngsIDIpOwotICAgICAgICBzdGQ6Om1lbWNweShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmYSkgKyAyLAotICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJngpICsgNCwgMik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0X2JpdHMobG9uZyBkb3VibGUmIHgsIHVpbnQzMl90IGEpCi0gICAgewotICAgICAgICBzdGQ6Om1lbWNweSgmeCwgJmEsIDIpOwotICAgICAgICBzdGQ6Om1lbWNweShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmeCkgKyA0LAotICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJmEpICsgMiwgMik7Ci0gICAgfQotfTsKLQotCi0vLyBsb25nIGRvdWJsZSAoPjY0IGJpdHMpLCBBbGwgb3RoZXIgcHJvY2Vzc29ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jZWxzZQotCi0vLyBJRUVFIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0IHdpdGggMTUgZXhwb25lbnQgYml0cyAoMTI4IGJpdHMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxsb25nIGRvdWJsZSwgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2ZmZjAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAweDAwMDAwMDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDAwZmZmZik7Ci0KLSAgICB0eXBlZGVmIHVpbnQzMl90IGJpdHM7Ci0KLSAgICBzdGF0aWMgdm9pZCBnZXRfYml0cyhsb25nIGRvdWJsZSB4LCB1aW50MzJfdCYgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KCZhLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmeCkgKyBvZmZzZXRfLCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhsb25nIGRvdWJsZSYgeCwgdWludDMyX3QgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sICZhLCA0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0JJR19FTkRJQU4pCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgb2Zmc2V0XyA9IDApOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9MSVRUTEVfRU5ESUFOKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG9mZnNldF8gPSAxMik7Ci0jZWxzZQotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoZmFsc2UpOwotI2VuZGlmCi19OwotCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gc2l6ZV90b19wcmVjaXNpb24gaXMgYSB0eXBlIHN3aXRjaCBmb3IgY29udmVydGluZyBhIEMrKyBmbG9hdGluZyBwb2ludCB0eXBlCi0vLyB0byB0aGUgY29ycmVzcG9uZGluZyBwcmVjaXNpb24gdHlwZS4KLQotdGVtcGxhdGU8aW50IG4sIGJvb2wgZnA+IHN0cnVjdCBzaXplX3RvX3ByZWNpc2lvbgotewotICAgdHlwZWRlZiB1bmtub3duX3ByZWNpc2lvbiB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2l6ZV90b19wcmVjaXNpb248NCwgdHJ1ZT4KLXsKLSAgICB0eXBlZGVmIHNpbmdsZV9wcmVjaXNpb24gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNpemVfdG9fcHJlY2lzaW9uPDgsIHRydWU+Ci17Ci0gICAgdHlwZWRlZiBkb3VibGVfcHJlY2lzaW9uIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaXplX3RvX3ByZWNpc2lvbjwxMCwgdHJ1ZT4KLXsKLSAgICB0eXBlZGVmIGV4dGVuZGVkX2RvdWJsZV9wcmVjaXNpb24gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNpemVfdG9fcHJlY2lzaW9uPDEyLCB0cnVlPgotewotICAgIHR5cGVkZWYgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbiB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2l6ZV90b19wcmVjaXNpb248MTYsIHRydWU+Ci17Ci0gICAgdHlwZWRlZiBleHRlbmRlZF9kb3VibGVfcHJlY2lzaW9uIHR5cGU7Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIEZpZ3VyZSBvdXQgd2hldGhlciB0byB1c2UgbmF0aXZlIGNsYXNzaWZpY2F0aW9uIGZ1bmN0aW9ucyBiYXNlZCBvbgotLy8gd2hldGhlciBUIGlzIGEgYnVpbHQgaW4gZmxvYXRpbmcgcG9pbnQgdHlwZSBvciBub3Q6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3Qgc2VsZWN0X25hdGl2ZQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzaXplX3RvX3ByZWNpc2lvbjxzaXplb2YoVCksIDo6bmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUgcHJlY2lzaW9uOwotICAgIHR5cGVkZWYgZnBfdHJhaXRzX25vbl9uYXRpdmU8VCwgcHJlY2lzaW9uPiB0eXBlOwotfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWxlY3RfbmF0aXZlPGZsb2F0PgotewotICAgIHR5cGVkZWYgZnBfdHJhaXRzX25hdGl2ZTxmbG9hdD4gdHlwZTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2VsZWN0X25hdGl2ZTxkb3VibGU+Ci17Ci0gICAgdHlwZWRlZiBmcF90cmFpdHNfbmF0aXZlPGRvdWJsZT4gdHlwZTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2VsZWN0X25hdGl2ZTxsb25nIGRvdWJsZT4KLXsKLSAgICB0eXBlZGVmIGZwX3RyYWl0c19uYXRpdmU8bG9uZyBkb3VibGU+IHR5cGU7Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBmcF90cmFpdHMgaXMgYSB0eXBlIHN3aXRjaCB0aGF0IHNlbGVjdHMgdGhlIHJpZ2h0IGZwX3RyYWl0c19ub25fbmF0aXZlCi0KLSNpZiAoZGVmaW5lZChORE5CT09TVF9NQVRIX1VTRV9DOTkpICYmICEoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgNCkpKSBcCi0gICAmJiAhZGVmaW5lZChfX2hwdXgpIFwKLSAgICYmICFkZWZpbmVkKF9fREVDQ1hYKVwKLSAgICYmICFkZWZpbmVkKF9fb3NmX18pIFwKLSAgICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKVwKLSAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfRElTQUJMRV9TVERfRlBDTEFTU0lGWSkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBmcF90cmFpdHMKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc2l6ZV90b19wcmVjaXNpb248c2l6ZW9mKFQpLCA6Om5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlIHByZWNpc2lvbjsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZKSAmJiAhZGVmaW5lZChORE5CT09TVF9NQVRIX0RJU0FCTEVfU1REX0ZQQ0xBU1NJRlkpCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3RfbmF0aXZlPFQ+Ojp0eXBlIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgZnBfdHJhaXRzX25vbl9uYXRpdmU8VCwgcHJlY2lzaW9uPiB0eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiBmcF90cmFpdHNfbm9uX25hdGl2ZTxULCBwcmVjaXNpb24+IHNpZ25fY2hhbmdlX3R5cGU7Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19ICAgLy8gbmFtZXNwYWNlIGRldGFpbAotfSAgIC8vIG5hbWVzcGFjZSBtYXRoCi19ICAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9yb3VuZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9yb3VuZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDUxOGM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9kZXRhaWwvcm91bmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8vIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwOC4KLQotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQKLS8vIG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfU1BFQ0lBTF9ST1VORF9GV0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfU1BFQ0lBTF9ST1VORF9GV0RfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvdG9vbHMvcHJvbW90aW9uLmhwcD4KLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgIG5hbWVzcGFjZSBtYXRoCi0gICB7IAotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSB0cnVuYyhjb25zdCBUJiB2LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgdHJ1bmMoY29uc3QgVCYgdik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgaW50IGl0cnVuYyhjb25zdCBUJiB2LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGludCBpdHJ1bmMoY29uc3QgVCYgdik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgbG9uZyBsdHJ1bmMoY29uc3QgVCYgdiwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBsb25nIGx0cnVuYyhjb25zdCBUJiB2KTsKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIGxsdHJ1bmMoY29uc3QgVCYgdiwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgbGx0cnVuYyhjb25zdCBUJiB2KTsKLSNlbmRpZgotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcm91bmQoY29uc3QgVCYgdiwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHJvdW5kKGNvbnN0IFQmIHYpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIGludCBpcm91bmQoY29uc3QgVCYgdiwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpbnQgaXJvdW5kKGNvbnN0IFQmIHYpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIGxvbmcgbHJvdW5kKGNvbnN0IFQmIHYsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgbG9uZyBscm91bmQoY29uc3QgVCYgdik7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBsbHJvdW5kKGNvbnN0IFQmIHYsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIGxscm91bmQoY29uc3QgVCYgdik7Ci0jZW5kaWYKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBUIG1vZGYoY29uc3QgVCYgdiwgVCogaXBhcnQsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgVCBtb2RmKGNvbnN0IFQmIHYsIFQqIGlwYXJ0KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBUIG1vZGYoY29uc3QgVCYgdiwgaW50KiBpcGFydCwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBUIG1vZGYoY29uc3QgVCYgdiwgaW50KiBpcGFydCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgVCBtb2RmKGNvbnN0IFQmIHYsIGxvbmcqIGlwYXJ0LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIFQgbW9kZihjb25zdCBUJiB2LCBsb25nKiBpcGFydCk7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIFQgbW9kZihjb25zdCBUJiB2LCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUqIGlwYXJ0LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIFQgbW9kZihjb25zdCBUJiB2LCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUqIGlwYXJ0KTsKLSNlbmRpZgotCi0gICB9Ci19Ci0KLSN1bmRlZiBORE5CT09TVF9NQVRIX1NURF9VU0lORwotI2RlZmluZSBORE5CT09TVF9NQVRIX1NURF9VU0lORyBORE5CT09TVF9NQVRIX1NURF9VU0lOR19DT1JFXAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OnJvdW5kO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjppcm91bmQ7XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Omxyb3VuZDtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6dHJ1bmM7XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Oml0cnVuYztcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6bHRydW5jO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjptb2RmOwotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NQVRIX1NQRUNJQUxfUk9VTkRfRldEX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZnBjbGFzc2lmeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZnBjbGFzc2lmeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNGIxOTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2ZwY2xhc3NpZnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjA2ICswLDAgQEAKLS8vICBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUtMjAwOC4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCBKb2hhbiBSYWRlCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX0ZQQ0xBU1NJRllfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRlBDTEFTU0lGWV9IUFAKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC90b29scy9yZWFsX2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0aW5nX3BvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL21hdGhfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9mcF90cmFpdHMuaHBwPgotLyohCi0gIFxmaWxlIGZwY2xhc3NpZnkuaHBwCi0gIFxicmllZiBDbGFzc2lmeSBmbG9hdGluZy1wb2ludCB2YWx1ZSBhcyBub3JtYWwsIHN1Ym5vcm1hbCwgemVybywgaW5maW5pdGUsIG9yIE5hTi4KLSAgXHZlcnNpb24gMS4wCi0gIFxhdXRob3IgSm9obiBNYWRkb2NrCi0gKi8KLQotLyoKLQotMS4gSWYgdGhlIHBsYXRmb3JtIGlzIEM5OSBjb21wbGlhbnQsIHRoZW4gdGhlIG5hdGl2ZSBmbG9hdGluZyBwb2ludAotY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGFyZSB1c2VkLiAgSG93ZXZlciwgbm90ZSB0aGF0IHdlIG11c3Qgb25seQotZGVmaW5lIHRoZSBmdW5jdGlvbnMgd2hpY2ggY2FsbCBzdGQ6OmZwY2xhc3NpZnkgZXRjIGlmIHRoYXQgZnVuY3Rpb24KLXJlYWxseSBkb2VzIGV4aXN0OiBvdGhlcndpc2UgYSBjb21waWxlciBtYXkgcmVqZWN0IHRoZSBjb2RlIGV2ZW4gdGhvdWdoCi10aGUgdGVtcGxhdGUgaXMgbmV2ZXIgaW5zdGFudGlhdGVkLgotCi0yLiBJZiB0aGUgcGxhdGZvcm0gaXMgbm90IEM5OSBjb21wbGlhbnQsIGFuZCB0aGUgYmluYXJ5IGZvcm1hdCBmb3IKLWEgZmxvYXRpbmcgcG9pbnQgdHlwZSAoZmxvYXQsIGRvdWJsZSBvciBsb25nIGRvdWJsZSkgY2FuIGJlIGRldGVybWluZWQKLWF0IGNvbXBpbGUgdGltZSwgdGhlbiB0aGUgZm9sbG93aW5nIGFsZ29yaXRobSBpcyB1c2VkOgotCi0gICAgICAgIElmIGFsbCBleHBvbmVudCBiaXRzLCB0aGUgZmxhZyBiaXQgKGlmIHRoZXJlIGlzIG9uZSksCi0gICAgICAgIGFuZCBhbGwgc2lnbmlmaWNhbmQgYml0cyBhcmUgMCwgdGhlbiB0aGUgbnVtYmVyIGlzIHplcm8uCi0KLSAgICAgICAgSWYgYWxsIGV4cG9uZW50IGJpdHMgYW5kIHRoZSBmbGFnIGJpdCAoaWYgdGhlcmUgaXMgb25lKSBhcmUgMCwKLSAgICAgICAgYW5kIGF0IGxlYXN0IG9uZSBzaWduaWZpY2FuZCBiaXQgaXMgMSwgdGhlbiB0aGUgbnVtYmVyIGlzIHN1Ym5vcm1hbC4KLQotICAgICAgICBJZiBhbGwgZXhwb25lbnQgYml0cyBhcmUgMSBhbmQgYWxsIHNpZ25pZmljYW5kIGJpdHMgYXJlIDAsCi0gICAgICAgIHRoZW4gdGhlIG51bWJlciBpcyBpbmZpbml0eS4KLQotICAgICAgICBJZiBhbGwgZXhwb25lbnQgYml0cyBhcmUgMSBhbmQgYXQgbGVhc3Qgb25lIHNpZ25pZmljYW5kIGJpdCBpcyAxLAotICAgICAgICB0aGVuIHRoZSBudW1iZXIgaXMgYSBub3QtYS1udW1iZXIuCi0KLSAgICAgICAgT3RoZXJ3aXNlIHRoZSBudW1iZXIgaXMgbm9ybWFsLgotCi0gICAgICAgIFRoaXMgYWxnb3JpdGhtIHdvcmtzIGZvciB0aGUgSUVFRSA3NTQgcmVwcmVzZW50YXRpb24sCi0gICAgICAgIGFuZCBhbHNvIGZvciBzZXZlcmFsIG5vbiBJRUVFIDc1NCBmb3JtYXRzLgotCi0gICAgTW9zdCBmb3JtYXRzIGhhdmUgdGhlIHN0cnVjdHVyZQotICAgICAgICBzaWduIGJpdCArIGV4cG9uZW50IGJpdHMgKyBzaWduaWZpY2FuZCBiaXRzLgotCi0gICAgQSBmZXcgaGF2ZSB0aGUgc3RydWN0dXJlCi0gICAgICAgIHNpZ24gYml0ICsgZXhwb25lbnQgYml0cyArIGZsYWcgYml0ICsgc2lnbmlmaWNhbmQgYml0cy4KLSAgICBUaGUgZmxhZyBiaXQgaXMgMCBmb3IgemVybyBhbmQgc3Vibm9ybWFsIG51bWJlcnMsCi0gICAgICAgIGFuZCAxIGZvciBub3JtYWwgbnVtYmVycyBhbmQgTmFOLgotICAgICAgICBJdCBpcyAwIChNb3Rvcm9sYSA2OEspIG9yIDEgKEludGVsKSBmb3IgaW5maW5pdHkuCi0KLSAgICBUbyBnZXQgdGhlIGJpdHMsIHRoZSBmb3VyIG9yIGVpZ2h0IG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIGNvcGllZAotICAgIGludG8gYW4gdWludDMyX3Qgb3IgdWludDY0X3QgYW5kIGJpdCBtYXNrcyBhcmUgYXBwbGllZC4KLSAgICBUaGlzIGNvdmVycyBhbGwgdGhlIGV4cG9uZW50IGJpdHMgYW5kIHRoZSBmbGFnIGJpdCAoaWYgdGhlcmUgaXMgb25lKSwKLSAgICBidXQgbm90IGFsd2F5cyBhbGwgdGhlIHNpZ25pZmljYW5kIGJpdHMuCi0gICAgU29tZSBvZiB0aGUgZnVuY3Rpb25zIGJlbG93IGhhdmUgdHdvIGltcGxlbWVudGF0aW9ucywKLSAgICBkZXBlbmRpbmcgb24gd2hldGhlciBhbGwgdGhlIHNpZ25pZmljYW5kIGJpdHMgYXJlIGNvcGllZCBvciBub3QuCi0KLTMuIElmIHRoZSBwbGF0Zm9ybSBpcyBub3QgQzk5IGNvbXBsaWFudCwgYW5kIHRoZSBiaW5hcnkgZm9ybWF0IGZvcgotYSBmbG9hdGluZyBwb2ludCB0eXBlIChmbG9hdCwgZG91YmxlIG9yIGxvbmcgZG91YmxlKSBjYW4gbm90IGJlIGRldGVybWluZWQKLWF0IGNvbXBpbGUgdGltZSwgdGhlbiBjb21wYXJpc29uIHdpdGggc3RkOjpudW1lcmljX2xpbWl0cyB2YWx1ZXMKLWlzIHVzZWQuCi0KLSovCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKLSNpbmNsdWRlIDxmbG9hdC5oPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotICBuYW1lc3BhY2Ugc3RkeyB1c2luZyA6OmFiczsgdXNpbmcgOjpmYWJzOyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0vLwotLy8gVGhpcyBtdXN0IG5vdCBiZSBsb2NhdGVkIGluIGFueSBuYW1lc3BhY2UgdW5kZXIgbmRuYm9vc3Q6Om1hdGgKLS8vIG90aGVyd2lzZSB3ZSBjYW4gZ2V0IGludG8gYW4gaW5maW5pdGUgbG9vcCBpZiBpc25hbiBpcwotLy8gYSAjZGVmaW5lIGZvciAiaXNuYW4iICEKLS8vCi1uYW1lc3BhY2UgbWF0aF9kZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MDApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgYm9vbCBpc19uYW5faGVscGVyKFQgdCwgY29uc3QgbmRuYm9vc3Q6OnRydWVfdHlwZSYpCi17Ci0jaWZkZWYgaXNuYW4KLSAgIHJldHVybiBpc25hbih0KTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTUFUSF9ESVNBQkxFX1NURF9GUENMQVNTSUZZKSB8fCAhZGVmaW5lZChORE5CT09TVF9IQVNfRlBDTEFTU0lGWSkKLSAgICh2b2lkKXQ7Ci0gICByZXR1cm4gZmFsc2U7Ci0jZWxzZSAvLyBORE5CT09TVF9IQVNfRlBDTEFTU0lGWQotICAgcmV0dXJuIChORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWCBmcGNsYXNzaWZ5KHQpID09IChpbnQpRlBfTkFOKTsKLSNlbmRpZgotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBib29sIGlzX25hbl9oZWxwZXIoVCwgY29uc3QgbmRuYm9vc3Q6OmZhbHNlX3R5cGUmKQotewotICAgcmV0dXJuIGZhbHNlOwotfQotCi19Ci0KLW5hbWVzcGFjZSBtYXRoewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWZkZWYgTkROQk9PU1RfTUFUSF9VU0VfU1REX0ZQQ0xBU1NJRlkKLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGludCBmcGNsYXNzaWZ5X2ltcCBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB0LCBjb25zdCBuYXRpdmVfdGFnJikKLXsKLSAgIHJldHVybiAoc3RkOjpmcGNsYXNzaWZ5KSh0KTsKLX0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBpbnQgZnBjbGFzc2lmeV9pbXAgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgdCwgY29uc3QgZ2VuZXJpY190YWc8dHJ1ZT4mKQotewotICAgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKHQpOwotCi0gICAvLyB3aGVuZXZlciBwb3NzaWJsZSBjaGVjayBmb3IgTmFuJ3MgZmlyc3Q6Ci0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfRlBDTEFTU0lGWSkgICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfRElTQUJMRV9TVERfRlBDTEFTU0lGWSkKLSAgIGlmKDo6bmRuYm9vc3Q6Om1hdGhfZGV0YWlsOjppc19uYW5faGVscGVyKHQsIDo6bmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+KCkpKQotICAgICAgcmV0dXJuIEZQX05BTjsKLSNlbGlmIGRlZmluZWQoaXNuYW4pCi0gICBpZihuZG5ib29zdDo6bWF0aF9kZXRhaWw6OmlzX25hbl9oZWxwZXIodCwgOjpuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD4oKSkpCi0gICAgICByZXR1cm4gRlBfTkFOOwotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0gICBpZig6Ol9pc25hbihuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnJlYWxfY2FzdDxkb3VibGU+KHQpKSkKLSAgICAgIHJldHVybiBGUF9OQU47Ci0jZW5kaWYKLSAgIC8vIHN0ZDo6ZmFicyBicm9rZW4gb24gYSBmZXcgc3lzdGVtcyBlc3BlY2lhbGx5IGZvciBsb25nIGxvbmchISEhCi0gICBUIGF0ID0gKHQgPCBUKDApKSA/IC10IDogdDsKLQotICAgLy8gVXNlIGEgcHJvY2VzcyBvZiBleGNsdXNpb24gdG8gZmlndXJlIG91dAotICAgLy8gd2hhdCBraW5kIG9mIHR5cGUgd2UgaGF2ZSwgdGhpcyByZWxpZXMgb24KLSAgIC8vIElFRUUgY29uZm9ybWluZyByZWFscyB0aGF0IHdpbGwgdHJlYXQKLSAgIC8vIE5hbidzIGFzIHVub3JkZXJlZC4gIFNvbWUgY29tcGlsZXJzCi0gICAvLyBkb24ndCBkbyB0aGlzIG9uY2Ugb3B0aW1pc2F0aW9ucyBhcmUKLSAgIC8vIHR1cm5lZCBvbiwgaGVuY2UgdGhlIGNoZWNrIGZvciBuYW4ncyBhYm92ZS4KLSAgIGlmKGF0IDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCkpCi0gICB7Ci0gICAgICBpZihhdCA+PSAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKSgpKQotICAgICAgICAgcmV0dXJuIEZQX05PUk1BTDsKLSAgICAgIHJldHVybiAoYXQgIT0gMCkgPyBGUF9TVUJOT1JNQUwgOiBGUF9aRVJPOwotICAgfQotICAgZWxzZSBpZihhdCA+IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCkpCi0gICAgICByZXR1cm4gRlBfSU5GSU5JVEU7Ci0gICByZXR1cm4gRlBfTkFOOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBpbnQgZnBjbGFzc2lmeV9pbXAgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgdCwgY29uc3QgZ2VuZXJpY190YWc8ZmFsc2U+JikKLXsKLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgaWYoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpCi0gICAgICByZXR1cm4gZnBjbGFzc2lmeV9pbXAodCwgZ2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci0jZW5kaWYKLSAgIC8vCi0gICAvLyBBbiB1bmtub3duIHR5cGUgd2l0aCBubyBudW1lcmljX2xpbWl0cyBzdXBwb3J0LAotICAgLy8gc28gd2hhdCBhcmUgd2Ugc3VwcG9zZWQgdG8gZG8gd2UgZG8gaGVyZT8KLSAgIC8vCi0gICBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUodCk7Ci0KLSAgIHJldHVybiB0ID09IDAgPyBGUF9aRVJPIDogRlBfTk9STUFMOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW50IGZwY2xhc3NpZnlfaW1wIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHgsIGllZWVfY29weV9hbGxfYml0c190YWcpCi17Ci0gICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLQotICAgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKHgpOwotCi0gICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKGEpOwotICAgYSAmPSB0cmFpdHM6OmV4cG9uZW50IHwgdHJhaXRzOjpmbGFnIHwgdHJhaXRzOjpzaWduaWZpY2FuZDsKLSAgIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9WQVJJQUJMRSgodHJhaXRzOjpleHBvbmVudCB8IHRyYWl0czo6ZmxhZyB8IHRyYWl0czo6c2lnbmlmaWNhbmQpKTsKLSAgIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9WQVJJQUJMRShhKTsKLQotICAgaWYoYSA8PSB0cmFpdHM6OnNpZ25pZmljYW5kKSB7Ci0gICAgICBpZihhID09IDApCi0gICAgICAgICByZXR1cm4gRlBfWkVSTzsKLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBGUF9TVUJOT1JNQUw7Ci0gICB9Ci0KLSAgIGlmKGEgPCB0cmFpdHM6OmV4cG9uZW50KSByZXR1cm4gRlBfTk9STUFMOwotCi0gICBhICY9IHRyYWl0czo6c2lnbmlmaWNhbmQ7Ci0gICBpZihhID09IDApIHJldHVybiBGUF9JTkZJTklURTsKLQotICAgcmV0dXJuIEZQX05BTjsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWludCBmcGNsYXNzaWZ5X2ltcCBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB4LCBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZykKLXsKLSAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotCi0gICBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUoeCk7Ci0KLSAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0gICBhICY9IHRyYWl0czo6ZXhwb25lbnQgfCB0cmFpdHM6OmZsYWcgfCB0cmFpdHM6OnNpZ25pZmljYW5kOwotCi0gICBpZihhIDw9IHRyYWl0czo6c2lnbmlmaWNhbmQpIHsKLSAgICAgIGlmKHggPT0gMCkKLSAgICAgICAgIHJldHVybiBGUF9aRVJPOwotICAgICAgZWxzZQotICAgICAgICAgcmV0dXJuIEZQX1NVQk5PUk1BTDsKLSAgIH0KLQotICAgaWYoYSA8IHRyYWl0czo6ZXhwb25lbnQpIHJldHVybiBGUF9OT1JNQUw7Ci0KLSAgIGEgJj0gdHJhaXRzOjpzaWduaWZpY2FuZDsKLSAgIHRyYWl0czo6c2V0X2JpdHMoeCxhKTsKLSAgIGlmKHggPT0gMCkgcmV0dXJuIEZQX0lORklOSVRFOwotCi0gICByZXR1cm4gRlBfTkFOOwotfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWSkgJiYgKGRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19OQVRJVkVfTE9OR19ET1VCTEVfRlBfQ0xBU1NJRlkpIHx8IGRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUykpCi1pbmxpbmUgaW50IGZwY2xhc3NpZnlfaW1wIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChsb25nIGRvdWJsZSB0LCBjb25zdCBuYXRpdmVfdGFnJikKLXsKLSAgIHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpmcGNsYXNzaWZ5X2ltcCh0LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLX0KLSNlbmRpZgotCi19ICAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGludCBmcGNsYXNzaWZ5IE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHQpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0jaWZkZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgIGlmKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkICYmIGRldGFpbDo6aXNfZ2VuZXJpY190YWdfZmFsc2Uoc3RhdGljX2Nhc3Q8bWV0aG9kKj4oMCkpKQotICAgICAgcmV0dXJuIGRldGFpbDo6ZnBjbGFzc2lmeV9pbXAoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4odCksIGRldGFpbDo6Z2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci0gICByZXR1cm4gZGV0YWlsOjpmcGNsYXNzaWZ5X2ltcChzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPih0KSwgbWV0aG9kKCkpOwotI2Vsc2UKLSAgIHJldHVybiBkZXRhaWw6OmZwY2xhc3NpZnlfaW1wKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHQpLCBtZXRob2QoKSk7Ci0jZW5kaWYKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLXRlbXBsYXRlIDw+Ci1pbmxpbmUgaW50IGZwY2xhc3NpZnk8bG9uZyBkb3VibGU+IE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChsb25nIGRvdWJsZSB0KQotewotICAgdHlwZWRlZiBkZXRhaWw6OmZwX3RyYWl0czxsb25nIGRvdWJsZT46OnR5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICB0eXBlZGVmIGxvbmcgZG91YmxlIHZhbHVlX3R5cGU7Ci0jaWZkZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgIGlmKHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBkb3VibGU+Ojppc19zcGVjaWFsaXplZCAmJiBkZXRhaWw6OmlzX2dlbmVyaWNfdGFnX2ZhbHNlKHN0YXRpY19jYXN0PG1ldGhvZCo+KDApKSkKLSAgICAgIHJldHVybiBkZXRhaWw6OmZwY2xhc3NpZnlfaW1wKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHQpLCBkZXRhaWw6OmdlbmVyaWNfdGFnPHRydWU+KCkpOwotICAgcmV0dXJuIGRldGFpbDo6ZnBjbGFzc2lmeV9pbXAoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4odCksIG1ldGhvZCgpKTsKLSNlbHNlCi0gICByZXR1cm4gZGV0YWlsOjpmcGNsYXNzaWZ5X2ltcChzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPih0KSwgbWV0aG9kKCkpOwotI2VuZGlmCi19Ci0jZW5kaWYKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNmaW5pdGVfaW1wbChUIHgsIG5hdGl2ZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6OmlzZmluaXRlKSh4KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNmaW5pdGVfaW1wbChUIHgsIGdlbmVyaWNfdGFnPHRydWU+IGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHJldHVybiB4ID49IC0oc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KSgpCi0gICAgICAgICAgICAmJiB4IDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2Zpbml0ZV9pbXBsKFQgeCwgZ2VuZXJpY190YWc8ZmFsc2U+IGNvbnN0JikKLSAgICB7Ci0jaWZkZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgICAgIGlmKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkKQotICAgICAgICAgcmV0dXJuIGlzZmluaXRlX2ltcGwoeCwgZ2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci0jZW5kaWYKLSAgICAgICAodm9pZCl4OyAvLyB3YXJuaW5nIHN1cHJlc3Npb24uCi0gICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2Zpbml0ZV9pbXBsKFQgeCwgaWVlZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhICY9IHRyYWl0czo6ZXhwb25lbnQ7Ci0gICAgICAgIHJldHVybiBhICE9IHRyYWl0czo6ZXhwb25lbnQ7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWSkgJiYgZGVmaW5lZChORE5CT09TVF9NQVRIX05PX05BVElWRV9MT05HX0RPVUJMRV9GUF9DTEFTU0lGWSkKLWlubGluZSBib29sIGlzZmluaXRlX2ltcGwgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKGxvbmcgZG91YmxlIHQsIGNvbnN0IG5hdGl2ZV90YWcmKQotewotICAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmlzZmluaXRlX2ltcGwodCwgZ2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci19Ci0jZW5kaWYKLQotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIGJvb2wgKGlzZmluaXRlKShUIHgpCi17IC8vITwgXGJyaWVmIHJldHVybiB0cnVlIGlmIGZsb2F0aW5nLXBvaW50IHR5cGUgdCBpcyBmaW5pdGUuCi0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgLy8gdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnR5cGUgZnBfdGFnOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc2Zpbml0ZV9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCAoaXNmaW5pdGUpKGxvbmcgZG91YmxlIHgpCi17IC8vITwgXGJyaWVmIHJldHVybiB0cnVlIGlmIGZsb2F0aW5nLXBvaW50IHR5cGUgdCBpcyBmaW5pdGUuCi0gICB0eXBlZGVmIGRldGFpbDo6ZnBfdHJhaXRzPGxvbmcgZG91YmxlPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PGxvbmcgZG91YmxlPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIGxvbmcgZG91YmxlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc2Zpbml0ZV9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNub3JtYWxfaW1wbChUIHgsIG5hdGl2ZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6Omlzbm9ybWFsKSh4KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNub3JtYWxfaW1wbChUIHgsIGdlbmVyaWNfdGFnPHRydWU+IGNvbnN0JikKLSAgICB7Ci0gICAgICAgIGlmKHggPCAwKSB4ID0gLXg7Ci0gICAgICAgIHJldHVybiB4ID49IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4pKCkKLSAgICAgICAgICAgICYmIHggPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBib29sIGlzbm9ybWFsX2ltcGwoVCB4LCBnZW5lcmljX3RhZzxmYWxzZT4gY29uc3QmKQotICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgICAgaWYoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpCi0gICAgICAgICByZXR1cm4gaXNub3JtYWxfaW1wbCh4LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLSNlbmRpZgotICAgICAgIHJldHVybiAhKHggPT0gMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc25vcm1hbF9pbXBsKFQgeCwgaWVlZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhICY9IHRyYWl0czo6ZXhwb25lbnQgfCB0cmFpdHM6OmZsYWc7Ci0gICAgICAgIHJldHVybiAoYSAhPSAwKSAmJiAoYSA8IHRyYWl0czo6ZXhwb25lbnQpOwotICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTUFUSF9VU0VfU1REX0ZQQ0xBU1NJRlkpICYmIGRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19OQVRJVkVfTE9OR19ET1VCTEVfRlBfQ0xBU1NJRlkpCi1pbmxpbmUgYm9vbCBpc25vcm1hbF9pbXBsIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChsb25nIGRvdWJsZSB0LCBjb25zdCBuYXRpdmVfdGFnJikKLXsKLSAgIHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjppc25vcm1hbF9pbXBsKHQsIGdlbmVyaWNfdGFnPHRydWU+KCkpOwotfQotI2VuZGlmCi0KLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBib29sIChpc25vcm1hbCkoVCB4KQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnR5cGUgZnBfdGFnOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc25vcm1hbF9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCAoaXNub3JtYWwpKGxvbmcgZG91YmxlIHgpCi17Ci0gICB0eXBlZGVmIGRldGFpbDo6ZnBfdHJhaXRzPGxvbmcgZG91YmxlPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PGxvbmcgZG91YmxlPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIGxvbmcgZG91YmxlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc25vcm1hbF9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNpbmZfaW1wbChUIHgsIG5hdGl2ZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6OmlzaW5mKSh4KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNpbmZfaW1wbChUIHgsIGdlbmVyaWNfdGFnPHRydWU+IGNvbnN0JikKLSAgICB7Ci0gICAgICAgICh2b2lkKXg7IC8vIGluIGNhc2UgdGhlIGNvbXBpbGVyIHRoaW5rcyB0aGF0IHggaXMgdW51c2VkIGJlY2F1c2Ugc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aGFzX2luZmluaXR5IGlzIGZhbHNlCi0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpoYXNfaW5maW5pdHkKLSAgICAgICAgICAgICYmICggeCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpCi0gICAgICAgICAgICAgICAgIHx8IHggPT0gLXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNpbmZfaW1wbChUIHgsIGdlbmVyaWNfdGFnPGZhbHNlPiBjb25zdCYpCi0gICAgewotI2lmZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0gICAgICBpZihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCkKLSAgICAgICAgIHJldHVybiBpc2luZl9pbXBsKHgsIGdlbmVyaWNfdGFnPHRydWU+KCkpOwotI2VuZGlmCi0gICAgICAgICh2b2lkKXg7IC8vIHdhcm5pbmcgc3VwcmVzc2lvbi4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNpbmZfaW1wbChUIHgsIGllZWVfY29weV9hbGxfYml0c190YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhICY9IHRyYWl0czo6ZXhwb25lbnQgfCB0cmFpdHM6OnNpZ25pZmljYW5kOwotICAgICAgICByZXR1cm4gYSA9PSB0cmFpdHM6OmV4cG9uZW50OwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNpbmZfaW1wbChUIHgsIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotCi0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICAgICAgIHRyYWl0czo6Z2V0X2JpdHMoeCxhKTsKLSAgICAgICAgYSAmPSB0cmFpdHM6OmV4cG9uZW50IHwgdHJhaXRzOjpzaWduaWZpY2FuZDsKLSAgICAgICAgaWYoYSAhPSB0cmFpdHM6OmV4cG9uZW50KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHRyYWl0czo6c2V0X2JpdHMoeCwwKTsKLSAgICAgICAgcmV0dXJuIHggPT0gMDsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZKSAmJiBkZWZpbmVkKE5ETkJPT1NUX01BVEhfTk9fTkFUSVZFX0xPTkdfRE9VQkxFX0ZQX0NMQVNTSUZZKQotaW5saW5lIGJvb2wgaXNpbmZfaW1wbCBORE5CT09TVF9OT19NQUNST19FWFBBTkQobG9uZyBkb3VibGUgdCwgY29uc3QgbmF0aXZlX3RhZyYpCi17Ci0gICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6aXNpbmZfaW1wbCh0LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLX0KLSNlbmRpZgotCi19ICAgLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIGJvb2wgKGlzaW5mKShUIHgpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgLy8gdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnR5cGUgZnBfdGFnOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc2luZl9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCAoaXNpbmYpKGxvbmcgZG91YmxlIHgpCi17Ci0gICB0eXBlZGVmIGRldGFpbDo6ZnBfdHJhaXRzPGxvbmcgZG91YmxlPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PGxvbmcgZG91YmxlPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIGxvbmcgZG91YmxlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc2luZl9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNuYW5faW1wbChUIHgsIG5hdGl2ZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6OmlzbmFuKSh4KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNuYW5faW1wbChUIHgsIGdlbmVyaWNfdGFnPHRydWU+IGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpoYXNfaW5maW5pdHkKLSAgICAgICAgICAgID8gISh4IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkpCi0gICAgICAgICAgICA6IHggIT0geDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBib29sIGlzbmFuX2ltcGwoVCB4LCBnZW5lcmljX3RhZzxmYWxzZT4gY29uc3QmKQotICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgICAgaWYoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpCi0gICAgICAgICByZXR1cm4gaXNuYW5faW1wbCh4LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLSNlbmRpZgotICAgICAgICAodm9pZCl4OyAvLyB3YXJuaW5nIHN1cHJlc3Npb24KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNuYW5faW1wbChUIHgsIGllZWVfY29weV9hbGxfYml0c190YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhICY9IHRyYWl0czo6ZXhwb25lbnQgfCB0cmFpdHM6OnNpZ25pZmljYW5kOwotICAgICAgICByZXR1cm4gYSA+IHRyYWl0czo6ZXhwb25lbnQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc25hbl9pbXBsKFQgeCwgaWVlZV9jb3B5X2xlYWRpbmdfYml0c190YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotCi0gICAgICAgIGEgJj0gdHJhaXRzOjpleHBvbmVudCB8IHRyYWl0czo6c2lnbmlmaWNhbmQ7Ci0gICAgICAgIGlmKGEgPCB0cmFpdHM6OmV4cG9uZW50KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGEgJj0gdHJhaXRzOjpzaWduaWZpY2FuZDsKLSAgICAgICAgdHJhaXRzOjpzZXRfYml0cyh4LGEpOwotICAgICAgICByZXR1cm4geCAhPSAwOwotICAgIH0KLQotfSAgIC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBib29sIChpc25hbikoVCB4KQoteyAvLyE8IFxicmllZiByZXR1cm4gdHJ1ZSBpZiBmbG9hdGluZy1wb2ludCB0eXBlIHQgaXMgTmFOIChOb3QgQSBOdW1iZXIpLgotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIC8vIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp0eXBlIGZwX3RhZzsKLSAgIHJldHVybiBkZXRhaWw6OmlzbmFuX2ltcGwoeCwgbWV0aG9kKCkpOwotfQotCi0jaWZkZWYgaXNuYW4KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzbmFuIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORDxmbG9hdD4oZmxvYXQgdCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoX2RldGFpbDo6aXNfbmFuX2hlbHBlcih0LCBuZG5ib29zdDo6dHJ1ZV90eXBlKCkpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc25hbiBORE5CT09TVF9OT19NQUNST19FWFBBTkQ8ZG91YmxlPihkb3VibGUgdCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoX2RldGFpbDo6aXNfbmFuX2hlbHBlcih0LCBuZG5ib29zdDo6dHJ1ZV90eXBlKCkpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc25hbiBORE5CT09TVF9OT19NQUNST19FWFBBTkQ8bG9uZyBkb3VibGU+KGxvbmcgZG91YmxlIHQpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aF9kZXRhaWw6OmlzX25hbl9oZWxwZXIodCwgbmRuYm9vc3Q6OnRydWVfdHlwZSgpKTsgfQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TKQotdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgKGlzbmFuKShsb25nIGRvdWJsZSB4KQoteyAvLyE8IFxicmllZiByZXR1cm4gdHJ1ZSBpZiBmbG9hdGluZy1wb2ludCB0eXBlIHQgaXMgTmFOIChOb3QgQSBOdW1iZXIpLgotICAgdHlwZWRlZiBkZXRhaWw6OmZwX3RyYWl0czxsb25nIGRvdWJsZT46OnR5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxsb25nIGRvdWJsZT46OnR5cGUgZnBfdGFnOwotICAgcmV0dXJuIGRldGFpbDo6aXNuYW5faW1wbCh4LCBtZXRob2QoKSk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbWF0aAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfRlBDTEFTU0lGWV9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL21hdGhfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9tYXRoX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZTE4NjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL21hdGhfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MDggKzAsMCBAQAotLy8gbWF0aF9md2QuaHBwCi0KLS8vIFRPRE8gcmV2aXNlIGNvbXBsZXRlbHkgZm9yIG5ldyBkaXN0cmlidXRpb24gY2xhc3Nlcy4KLQotLy8gQ29weXJpZ2h0IFBhdWwgQS4gQnJpc3RvdyAyMDA2LgotLy8gQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA2LgotCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotLy8gb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIE9tbmlidXMgbGlzdCBvZiBmb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiBtYXRoIHNwZWNpYWwgZnVuY3Rpb25zLgotCi0vLyBJVCA9IEludGVnZXIgdHlwZS4KLS8vIFJUID0gUmVhbCB0eXBlIChidWlsdC1pbiBmbG9hdGluZy1wb2ludCB0eXBlcywgZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3VibGUpICYgVXNlciBEZWZpbmVkIFR5cGVzCi0vLyBBVCA9IEludGVnZXIgb3IgUmVhbCB0eXBlCi0KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9TUEVDSUFMX01BVEhfRldEX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1NQRUNJQUxfTUFUSF9GV0RfSFBQCi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZGV0YWlsL3JvdW5kX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC90b29scy9wcm9tb3Rpb24uaHBwPiAvLyBmb3IgYXJndW1lbnQgcHJvbW90aW9uLgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvcG9saWNpZXMvcG9saWN5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY29tcGFyaXNvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9jb21wbGV4LmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9OT19NQUNST19FWFBBTkQgLyoqLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgIG5hbWVzcGFjZSBtYXRoCi0gICB7IC8vIE1hdGggZnVuY3Rpb25zIChpbiByb3VnaGx5IGFscGhhYmV0aWMgb3JkZXIpLgotCi0gICAvLyBCZXRhIGZ1bmN0aW9ucy4KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlCi0gICAgICAgICBiZXRhKFJUMSBhLCBSVDIgYik7IC8vIEJldGEgZnVuY3Rpb24gKDIgYXJndW1lbnRzKS4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBBPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgQT46OnR5cGUKLSAgICAgICAgIGJldGEoUlQxIGEsIFJUMiBiLCBBIHgpOyAvLyBCZXRhIGZ1bmN0aW9uICgzIGFyZ3VtZW50cykuCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBiZXRhKFJUMSBhLCBSVDIgYiwgUlQzIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsgLy8gQmV0YSBmdW5jdGlvbiAoMyBhcmd1bWVudHMpLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGJldGFjKFJUMSBhLCBSVDIgYiwgUlQzIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgYmV0YWMoUlQxIGEsIFJUMiBiLCBSVDMgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhKFJUMSBhLCBSVDIgYiwgUlQzIHgpOyAvLyBJbmNvbXBsZXRlIGJldGEgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YShSVDEgYSwgUlQyIGIsIFJUMyB4LCBjb25zdCBQb2xpY3kmIHBvbCk7IC8vIEluY29tcGxldGUgYmV0YSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YWMoUlQxIGEsIFJUMiBiLCBSVDMgeCk7IC8vIEluY29tcGxldGUgYmV0YSBjb21wbGVtZW50IGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFjKFJUMSBhLCBSVDIgYiwgUlQzIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGNvbXBsZW1lbnQgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUND4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMywgVDQ+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9pbnYoVDEgYSwgVDIgYiwgVDMgcCwgVDQqIHB5KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZQotICAgICAgICAgaWJldGFfaW52KFQxIGEsIFQyIGIsIFQzIHAsIFQ0KiBweSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhX2ludihSVDEgYSwgUlQyIGIsIFJUMyBwKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9pbnYoUlQxIGEsIFJUMiBiLCBSVDMgcCwgY29uc3QgUG9saWN5Jik7IC8vIEluY29tcGxldGUgYmV0YSBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhX2ludmEoUlQxIGEsIFJUMiBiLCBSVDMgcCk7IC8vIEluY29tcGxldGUgYmV0YSBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFfaW52YShSVDEgYSwgUlQyIGIsIFJUMyBwLCBjb25zdCBQb2xpY3kmKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFfaW52YihSVDEgYSwgUlQyIGIsIFJUMyBwKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9pbnZiKFJUMSBhLCBSVDIgYiwgUlQzIHAsIGNvbnN0IFBvbGljeSYpOyAvLyBJbmNvbXBsZXRlIGJldGEgaW52ZXJzZSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzLCBUND46OnR5cGUKLSAgICAgICAgIGliZXRhY19pbnYoVDEgYSwgVDIgYiwgVDMgcSwgVDQqIHB5KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZQotICAgICAgICAgaWJldGFjX2ludihUMSBhLCBUMiBiLCBUMyBxLCBUNCogcHksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YWNfaW52KFJUMSBhLCBSVDIgYiwgUlQzIHEpOyAvLyBJbmNvbXBsZXRlIGJldGEgY29tcGxlbWVudCBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFjX2ludihSVDEgYSwgUlQyIGIsIFJUMyBxLCBjb25zdCBQb2xpY3kmKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGNvbXBsZW1lbnQgaW52ZXJzZSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YWNfaW52YShSVDEgYSwgUlQyIGIsIFJUMyBxKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGNvbXBsZW1lbnQgaW52ZXJzZSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDMsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhY19pbnZhKFJUMSBhLCBSVDIgYiwgUlQzIHEsIGNvbnN0IFBvbGljeSYpOyAvLyBJbmNvbXBsZXRlIGJldGEgY29tcGxlbWVudCBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhY19pbnZiKFJUMSBhLCBSVDIgYiwgUlQzIHEpOyAvLyBJbmNvbXBsZXRlIGJldGEgY29tcGxlbWVudCBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFjX2ludmIoUlQxIGEsIFJUMiBiLCBSVDMgcSwgY29uc3QgUG9saWN5Jik7IC8vIEluY29tcGxldGUgYmV0YSBjb21wbGVtZW50IGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFfZGVyaXZhdGl2ZShSVDEgYSwgUlQyIGIsIFJUMyB4KTsgIC8vIGRlcml2YXRpdmUgb2YgaW5jb21wbGV0ZSBiZXRhCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9kZXJpdmF0aXZlKFJUMSBhLCBSVDIgYiwgUlQzIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsgIC8vIGRlcml2YXRpdmUgb2YgaW5jb21wbGV0ZSBiZXRhCi0KLSAgIC8vIGVyZiAmIGVyZmMgZXJyb3IgZnVuY3Rpb25zLgotICAgdGVtcGxhdGUgPGNsYXNzIFJUPiAvLyBFcnJvciBmdW5jdGlvbi4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZihSVCB6KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVCwgY2xhc3MgUG9saWN5PiAvLyBFcnJvciBmdW5jdGlvbi4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZihSVCB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUPi8vIEVycm9yIGZ1bmN0aW9uIGNvbXBsZW1lbnQuCi0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZjKFJUIHopOwotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ly8gRXJyb3IgZnVuY3Rpb24gY29tcGxlbWVudC4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZmMoUlQgeiwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4vLyBFcnJvciBmdW5jdGlvbiBpbnZlcnNlLgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmX2ludihSVCB6KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVCwgY2xhc3MgUG9saWN5Pi8vIEVycm9yIGZ1bmN0aW9uIGludmVyc2UuCi0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZfaW52KFJUIHosIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUPi8vIEVycm9yIGZ1bmN0aW9uIGNvbXBsZW1lbnQgaW52ZXJzZS4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZmNfaW52KFJUIHopOwotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ly8gRXJyb3IgZnVuY3Rpb24gY29tcGxlbWVudCBpbnZlcnNlLgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmY19pbnYoUlQgeiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICAvLyBQb2x5bm9taWFsczoKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfbmV4dCh1bnNpZ25lZCBsLCBUMSB4LCBUMiBQbCwgVDMgUGxtMSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfcChpbnQgbCwgVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgICAgIGxlZ2VuZHJlX3AoaW50IGwsIFQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgICAgIGxlZ2VuZHJlX3EodW5zaWduZWQgbCwgVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgICAgIGxlZ2VuZHJlX3EodW5zaWduZWQgbCwgVCB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfbmV4dCh1bnNpZ25lZCBsLCB1bnNpZ25lZCBtLCBUMSB4LCBUMiBQbCwgVDMgUGxtMSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfcChpbnQgbCwgaW50IG0sIFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlCi0gICAgICAgICBsZWdlbmRyZV9wKGludCBsLCBpbnQgbSwgVCB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgICAgbGFndWVycmVfbmV4dCh1bnNpZ25lZCBuLCBUMSB4LCBUMiBMbiwgVDMgTG5tMSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgbGFndWVycmVfbmV4dCh1bnNpZ25lZCBuLCB1bnNpZ25lZCBsLCBUMSB4LCBUMiBQbCwgVDMgUGxtMSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZQotICAgICAgbGFndWVycmUodW5zaWduZWQgbiwgVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgIGxhZ3VlcnJlKHVuc2lnbmVkIG4sIHVuc2lnbmVkIG0sIFQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgc3RydWN0IGxhZ3VlcnJlX3Jlc3VsdAotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIHBvbGljaWVzOjppc19wb2xpY3k8VDI+LAotICAgICAgICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMT46OnR5cGUsCi0gICAgICAgICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQyPjo6dHlwZQotICAgICAgPjo6dHlwZSB0eXBlOwotICAgfTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIGxhZ3VlcnJlX3Jlc3VsdDxUMSwgVDI+Ojp0eXBlCi0gICAgICBsYWd1ZXJyZSh1bnNpZ25lZCBuLCBUMSBtLCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlCi0gICAgICBoZXJtaXRlKHVuc2lnbmVkIG4sIFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlCi0gICAgICBoZXJtaXRlKHVuc2lnbmVkIG4sIFQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMz46OnR5cGUKLSAgICAgIGhlcm1pdGVfbmV4dCh1bnNpZ25lZCBuLCBUMSB4LCBUMiBIbiwgVDMgSG5tMSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlPgotICAgICAgICAgc3BoZXJpY2FsX2hhcm1vbmljKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZT4KLSAgICAgIHNwaGVyaWNhbF9oYXJtb25pYyh1bnNpZ25lZCBuLCBpbnQgbSwgVDEgdGhldGEsIFQyIHBoaSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBzcGhlcmljYWxfaGFybW9uaWNfcih1bnNpZ25lZCBuLCBpbnQgbSwgVDEgdGhldGEsIFQyIHBoaSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgc3BoZXJpY2FsX2hhcm1vbmljX3IodW5zaWduZWQgbiwgaW50IG0sIFQxIHRoZXRhLCBUMiBwaGksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgICAgc3BoZXJpY2FsX2hhcm1vbmljX2kodW5zaWduZWQgbiwgaW50IG0sIFQxIHRoZXRhLCBUMiBwaGkpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUKLSAgICAgIHNwaGVyaWNhbF9oYXJtb25pY19pKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIC8vIEVsbGlwdGljIGludGVncmFsczoKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgICAgZWxsaW50X3JmKFQxIHgsIFQyIHksIFQzIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgICAgZWxsaW50X3JmKFQxIHgsIFQyIHksIFQzIHosIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlCi0gICAgICAgICBlbGxpbnRfcmQoVDEgeCwgVDIgeSwgVDMgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlCi0gICAgICAgICBlbGxpbnRfcmQoVDEgeCwgVDIgeSwgVDMgeiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBlbGxpbnRfcmMoVDEgeCwgVDIgeSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgICAgZWxsaW50X3JjKFQxIHgsIFQyIHksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzLCBUND46OnR5cGUKLSAgICAgICAgIGVsbGludF9yaihUMSB4LCBUMiB5LCBUMyB6LCBUNCBwKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZQotICAgICAgICAgZWxsaW50X3JqKFQxIHgsIFQyIHksIFQzIHosIFQ0IHAsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGVsbGludF8yKFQgayk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZWxsaW50XzIoVDEgaywgVDIgcGhpKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGVsbGludF8yKFQxIGssIFQyIHBoaSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZWxsaW50XzEoVCBrKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBlbGxpbnRfMShUMSBrLCBUMiBwaGkpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZWxsaW50XzEoVDEgaywgVDIgcGhpLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIG5hbWVzcGFjZSBkZXRhaWx7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWPgotICAgc3RydWN0IGVsbGludF8zX3Jlc3VsdAotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIHBvbGljaWVzOjppc19wb2xpY3k8Vj4sCi0gICAgICAgICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlLAotICAgICAgICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVLCBWPjo6dHlwZQotICAgICAgPjo6dHlwZSB0eXBlOwotICAgfTsKLQotICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmVsbGludF8zX3Jlc3VsdDxUMSwgVDIsIFQzPjo6dHlwZSBlbGxpbnRfMyhUMSBrLCBUMiB2LCBUMyBwaGkpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZSBlbGxpbnRfMyhUMSBrLCBUMiB2LCBUMyBwaGksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBlbGxpbnRfMyhUMSBrLCBUMiB2KTsKLQotICAgLy8gRmFjdG9yaWFsIGZ1bmN0aW9ucy4KLSAgIC8vIE5vdGU6IG5vdCBmb3IgaW50ZWdyYWwgdHlwZXMsIGF0IHByZXNlbnQuCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICBzdHJ1Y3QgbWF4X2ZhY3RvcmlhbDsKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIFJUIGZhY3RvcmlhbCh1bnNpZ25lZCBpbnQpOwotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICBSVCBmYWN0b3JpYWwodW5zaWduZWQgaW50LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICBSVCB1bmNoZWNrZWRfZmFjdG9yaWFsKHVuc2lnbmVkIGludCBORE5CT09TVF9NQVRIX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKFJUKSk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICBSVCBkb3VibGVfZmFjdG9yaWFsKHVuc2lnbmVkIGkpOwotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICBSVCBkb3VibGVfZmFjdG9yaWFsKHVuc2lnbmVkIGksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZmFsbGluZ19mYWN0b3JpYWwoUlQgeCwgdW5zaWduZWQgbik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZmFsbGluZ19mYWN0b3JpYWwoUlQgeCwgdW5zaWduZWQgbiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSByaXNpbmdfZmFjdG9yaWFsKFJUIHgsIGludCBuKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSByaXNpbmdfZmFjdG9yaWFsKFJUIHgsIGludCBuLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIC8vIEdhbW1hIGZ1bmN0aW9ucy4KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIHRnYW1tYShSVCB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgdGdhbW1hMXBtMShSVCB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSB0Z2FtbWExcG0xKFJUIHosIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgdGdhbW1hKFJUMSBhLCBSVDIgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgdGdhbW1hKFJUMSBhLCBSVDIgeiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBsZ2FtbWEoUlQgeiwgaW50KiBzaWduKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBsZ2FtbWEoUlQgeiwgaW50KiBzaWduLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGxnYW1tYShSVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBsZ2FtbWEoUlQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSB0Z2FtbWFfbG93ZXIoUlQxIGEsIFJUMiB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSB0Z2FtbWFfbG93ZXIoUlQxIGEsIFJUMiB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgZ2FtbWFfcShSVDEgYSwgUlQyIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIGdhbW1hX3EoUlQxIGEsIFJUMiB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgZ2FtbWFfcChSVDEgYSwgUlQyIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIGdhbW1hX3AoUlQxIGEsIFJUMiB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSB0Z2FtbWFfZGVsdGFfcmF0aW8oVDEgeiwgVDIgZGVsdGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgdGdhbW1hX2RlbHRhX3JhdGlvKFQxIHosIFQyIGRlbHRhLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSB0Z2FtbWFfcmF0aW8oVDEgYSwgVDIgYik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSB0Z2FtbWFfcmF0aW8oVDEgYSwgVDIgYiwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcF9kZXJpdmF0aXZlKFQxIGEsIFQyIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcF9kZXJpdmF0aXZlKFQxIGEsIFQyIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICAvLyBnYW1tYSBpbnZlcnNlLgotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9wX2ludihUMSBhLCBUMiBwKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3BfaW52YShUMSBhLCBUMiBwLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9wX2ludmEoVDEgYSwgVDIgcCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9wX2ludihUMSBhLCBUMiBwLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9xX2ludihUMSBhLCBUMiBxKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3FfaW52KFQxIGEsIFQyIHEsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3FfaW52YShUMSBhLCBUMiBxKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3FfaW52YShUMSBhLCBUMiBxLCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gZGlnYW1tYToKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBkaWdhbW1hKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGRpZ2FtbWEoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gSHlwb3RlbnVzZSBmdW5jdGlvbiBzcXJ0KHggXiAyICsgeSBeIDIpLgotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgICAgaHlwb3QoVDEgeCwgVDIgeSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgICAgaHlwb3QoVDEgeCwgVDIgeSwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIGNicnQgLSBjdWJlIHJvb3QuCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBjYnJ0KFJUIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGNicnQoUlQgeiwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIGxvZzFwIGlzIGxvZyh4ICsgMSkKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBsb2cxcChUKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgbG9nMXAoVCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIGxvZzFwbXggaXMgbG9nKHggKyAxKSAtIHgKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBsb2cxcG14KFQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBsb2cxcG14KFQsIGNvbnN0IFBvbGljeSYpOwotCi0gICAvLyBFeHAgKHgpIG1pbnVzIDEgZnVuY3Rpb25zLgotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGV4cG0xKFQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBleHBtMShULCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gUG93ZXIgLSAxCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBwb3dtMShjb25zdCBUMSBhLCBjb25zdCBUMiB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBwb3dtMShjb25zdCBUMSBhLCBjb25zdCBUMiB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gc3FydCgxK3gpIC0gMQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNxcnQxcG0xKGNvbnN0IFQmIHZhbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNxcnQxcG0xKGNvbnN0IFQmIHZhbCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIHNpbnVzIGNhcmRpbmFsczoKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBzaW5jX3BpKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbmNfcGkoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbmhjX3BpKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbmhjX3BpKFQgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIGludmVyc2UgaHlwZXJib2xpY3M6Ci0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhc2luaChUIHgpOwotCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFzaW5oKFQgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFjb3NoKFQgeCk7Ci0KLSAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWNvc2goVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYXRhbmgoVCB4KTsKLQotICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhdGFuaChUIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICBuYW1lc3BhY2UgZGV0YWlsewotCi0gICAgICB0eXBlZGVmIG1wbDo6aW50XzwwPiBiZXNzZWxfbm9faW50X3RhZzsgICAgICAvLyBObyBpbnRlZ2VyIG9wdGltaXNhdGlvbiBwb3NzaWJsZS4KLSAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDE+IGJlc3NlbF9tYXliZV9pbnRfdGFnOyAgIC8vIE1heWJlIGludGVnZXIgb3B0aW1pc2F0aW9uLgotICAgICAgdHlwZWRlZiBtcGw6OmludF88Mj4gYmVzc2VsX2ludF90YWc7ICAgICAgICAgLy8gRGVmaW5pdGUgaW50ZWdlciBvcHRpbWlzdGFpb24uCi0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgICAgIHN0cnVjdCBiZXNzZWxfdHJhaXRzCi0gICAgICB7Ci0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8Ci0gICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgID46OnR5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcG9saWNpZXM6OnByZWNpc2lvbjxyZXN1bHRfdHlwZSwgUG9saWN5Pjo6dHlwZSBwcmVjaXNpb25fdHlwZTsKLQotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgIG1wbDo6b3JfPAotICAgICAgICAgICAgICAgbXBsOjpsZXNzX2VxdWFsPHByZWNpc2lvbl90eXBlLCBtcGw6OmludF88MD4gPiwKLSAgICAgICAgICAgICAgIG1wbDo6Z3JlYXRlcjxwcmVjaXNpb25fdHlwZSwgbXBsOjppbnRfPDY0PiA+ID4sCi0gICAgICAgICAgICBiZXNzZWxfbm9faW50X3RhZywKLSAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgaXNfaW50ZWdyYWw8VDE+LAotICAgICAgICAgICAgICAgYmVzc2VsX2ludF90YWcsCi0gICAgICAgICAgICAgICBiZXNzZWxfbWF5YmVfaW50X3RhZwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgPjo6dHlwZSBvcHRpbWlzYXRpb25fdGFnOwotICAgICAgfTsKLSAgIH0gLy8gZGV0YWlsCi0KLSAgIC8vIEJlc3NlbCBmdW5jdGlvbnM6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2ooVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlIGN5bF9iZXNzZWxfaihUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBzcGhfYmVzc2VsKHVuc2lnbmVkIHYsIFQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGUgc3BoX2Jlc3NlbCh1bnNpZ25lZCB2LCBUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2koVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlIGN5bF9iZXNzZWxfaShUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5Pjo6cmVzdWx0X3R5cGUgY3lsX2Jlc3NlbF9rKFQxIHYsIFQyIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIHBvbGljaWVzOjpwb2xpY3k8PiA+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2soVDEgdiwgVDIgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeT46OnJlc3VsdF90eXBlIGN5bF9uZXVtYW5uKFQxIHYsIFQyIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIHBvbGljaWVzOjpwb2xpY3k8PiA+OjpyZXN1bHRfdHlwZSBjeWxfbmV1bWFubihUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBzcGhfbmV1bWFubih1bnNpZ25lZCB2LCBUIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VCwgVCwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlIHNwaF9uZXVtYW5uKHVuc2lnbmVkIHYsIFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VCwgVCwgUG9saWN5Pjo6cmVzdWx0X3R5cGUgY3lsX2Jlc3NlbF9qX3plcm8oVCB2LCBpbnQgbSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGUgY3lsX2Jlc3NlbF9qX3plcm8oVCB2LCBpbnQgbSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLSAgIE91dHB1dEl0ZXJhdG9yIGN5bF9iZXNzZWxfal96ZXJvKFQgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0X2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dF9pdCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUG9saWN5PgotICAgT3V0cHV0SXRlcmF0b3IgY3lsX2Jlc3NlbF9qX3plcm8oVCB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlcl9vZl96ZXJvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBjeWxfbmV1bWFubl96ZXJvKFQgdiwgaW50IG0sIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VCwgVCwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlIGN5bF9uZXVtYW5uX3plcm8oVCB2LCBpbnQgbSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLSAgIE91dHB1dEl0ZXJhdG9yIGN5bF9uZXVtYW5uX3plcm8oVCB2LAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydF9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBQb2xpY3k+Ci0gICBPdXRwdXRJdGVyYXRvciBjeWxfbmV1bWFubl96ZXJvKFQgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLAotICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dF9pdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGU+IGN5bF9oYW5rZWxfMShUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeT46OnJlc3VsdF90eXBlPiBjeWxfaGFua2VsXzEoVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5Pjo6cmVzdWx0X3R5cGU+IGN5bF9oYW5rZWxfMihUMSB2LCBUMiB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlPiBjeWxfaGFua2VsXzIoVDEgdiwgVDIgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3k+OjpyZXN1bHRfdHlwZT4gc3BoX2hhbmtlbF8xKFQxIHYsIFQyIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGU+IHNwaF9oYW5rZWxfMShUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeT46OnJlc3VsdF90eXBlPiBzcGhfaGFua2VsXzIoVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIHBvbGljaWVzOjpwb2xpY3k8PiA+OjpyZXN1bHRfdHlwZT4gc3BoX2hhbmtlbF8yKFQxIHYsIFQyIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2FpKFQgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2FpKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFpcnlfYmkoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFpcnlfYmkoVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9haV9wcmltZShUIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9haV9wcmltZShUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2JpX3ByaW1lKFQgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2JpX3ByaW1lKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgVCBhaXJ5X2FpX3plcm8odW5zaWduZWQgbSk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgVCBhaXJ5X2FpX3plcm8odW5zaWduZWQgbSwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLSAgIE91dHB1dEl0ZXJhdG9yIGFpcnlfYWlfemVybygKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0X2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLAotICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUG9saWN5PgotICAgT3V0cHV0SXRlcmF0b3IgYWlyeV9haV96ZXJvKAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsCi0gICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBvdXRfaXQsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBUIGFpcnlfYmlfemVybyh1bnNpZ25lZCBtKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBUIGFpcnlfYmlfemVybyh1bnNpZ25lZCBtLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotICAgT3V0cHV0SXRlcmF0b3IgYWlyeV9iaV96ZXJvKAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsCi0gICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBvdXRfaXQpOwotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBQb2xpY3k+Ci0gICBPdXRwdXRJdGVyYXRvciBhaXJ5X2JpX3plcm8oCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydF9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlcl9vZl96ZXJvcywKLSAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dF9pdCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBzaW5fcGkoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbl9waShUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBjb3NfcGkoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGNvc19waShUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGludCBmcGNsYXNzaWZ5IE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGJvb2wgaXNmaW5pdGUgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgYm9vbCBpc2luZiBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB0KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBib29sIGlzbmFuIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGJvb2wgaXNub3JtYWwgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgdCk7Ci0KLSAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICBpbnQgc2lnbmJpdCBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpbnQgc2lnbiBORE5CT09TVF9OT19NQUNST19FWFBBTkQoY29uc3QgVCYgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBjb3B5c2lnbiBORE5CT09TVF9OT19NQUNST19FWFBBTkQoY29uc3QgVCYgeCwgY29uc3QgVSYgeSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBjaGFuZ2VzaWduIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChjb25zdCBUJiB6KTsKLQotICAgLy8gRXhwb25lbnRpYWwgaW50ZWdyYWxzOgotICAgbmFtZXNwYWNlIGRldGFpbHsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICBzdHJ1Y3QgZXhwaW50X3Jlc3VsdAotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIHBvbGljaWVzOjppc19wb2xpY3k8VT4sCi0gICAgICAgICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlLAotICAgICAgICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxVPjo6dHlwZQotICAgICAgPjo6dHlwZSB0eXBlOwotICAgfTsKLQotICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGV4cGludCh1bnNpZ25lZCBuLCBUIHosIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6ZXhwaW50X3Jlc3VsdDxULCBVPjo6dHlwZSBleHBpbnQoVCBjb25zdCB6LCBVIGNvbnN0IHUpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZXhwaW50KFQgeik7Ci0KLSAgIC8vIFpldGE6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSB6ZXRhKFQgcywgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIE93ZW4ncyBUIGZ1bmN0aW9uOgotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIG93ZW5zX3QoVDEgaCwgVDIgYSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIG93ZW5zX3QoVDEgaCwgVDIgYSk7Ci0KLSAgIC8vIEphY29iaSBGdW5jdGlvbnM6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgViwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVLCBWPjo6dHlwZSBqYWNvYmlfZWxsaXB0aWMoVCBrLCBVIHRoZXRhLCBWKiBwY24sIFYqIHBkbiwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVLCBWPjo6dHlwZSBqYWNvYmlfZWxsaXB0aWMoVCBrLCBVIHRoZXRhLCBWKiBwY24gPSAwLCBWKiBwZG4gPSAwKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NuKFUgaywgVCB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NuKFUgaywgVCB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9jbihUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9jbihUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfZG4oVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfZG4oVCBrLCBVIHRoZXRhKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NkKFQgaywgVSB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NkKFQgaywgVSB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9kYyhUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9kYyhUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbnMoVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbnMoVCBrLCBVIHRoZXRhKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NkKFQgaywgVSB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NkKFQgaywgVSB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9kcyhUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9kcyhUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbmMoVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbmMoVCBrLCBVIHRoZXRhKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX25kKFQgaywgVSB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX25kKFQgaywgVSB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9zYyhUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9zYyhUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfY3MoVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfY3MoVCBrLCBVIHRoZXRhKTsKLQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgemV0YShUIHMpOwotCi0gICAvLyBwb3c6Ci0gICB0ZW1wbGF0ZSA8aW50IE4sIHR5cGVuYW1lIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcG93KFQgYmFzZSwgY29uc3QgUG9saWN5JiBwb2xpY3kpOwotCi0gICB0ZW1wbGF0ZSA8aW50IE4sIHR5cGVuYW1lIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHBvdyhUIGJhc2UpOwotCi0gICAvLyBuZXh0OgotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgbmV4dGFmdGVyKGNvbnN0IFQmLCBjb25zdCBVJiwgY29uc3QgUG9saWN5Jik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgbmV4dGFmdGVyKGNvbnN0IFQmLCBjb25zdCBVJik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBmbG9hdF9uZXh0KGNvbnN0IFQmLCBjb25zdCBQb2xpY3kmKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBmbG9hdF9uZXh0KGNvbnN0IFQmKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGZsb2F0X3ByaW9yKGNvbnN0IFQmLCBjb25zdCBQb2xpY3kmKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBmbG9hdF9wcmlvcihjb25zdCBUJik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBmbG9hdF9kaXN0YW5jZShjb25zdCBUJiwgY29uc3QgVSYsIGNvbnN0IFBvbGljeSYpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGZsb2F0X2Rpc3RhbmNlKGNvbnN0IFQmLCBjb25zdCBVJik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBmbG9hdF9hZHZhbmNlKFQgdmFsLCBpbnQgZGlzdGFuY2UsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBmbG9hdF9hZHZhbmNlKGNvbnN0IFQmIHZhbCwgaW50IGRpc3RhbmNlKTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIG1hdGgKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfREVUQUlMX0xMX0ZVTkMoUG9saWN5KVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBUIG1vZGYoY29uc3QgVCYgdiwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKiBpcGFydCl7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjptb2RmOyByZXR1cm4gbW9kZih2LCBpcGFydCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBsbHRydW5jKGNvbnN0IFQmIHYpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6bGx0cnVuYzsgcmV0dXJuIGxsdHJ1bmModiwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBsbHJvdW5kKGNvbnN0IFQmIHYpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6bGxyb3VuZDsgcmV0dXJuIGxscm91bmQodiwgUG9saWN5KCkpOyB9XAotCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9NQVRIX0RFVEFJTF9MTF9GVU5DKFBvbGljeSkKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfREVDTEFSRV9TUEVDSUFMX0ZVTkNUSU9OUyhQb2xpY3kpXAotICAgXAotICAgTkROQk9PU1RfTUFUSF9ERVRBSUxfTExfRlVOQyhQb2xpY3kpXAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgXAotICAgYmV0YShSVDEgYSwgUlQyIGIpIHsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmJldGEoYSwgYiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBBPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgQT46OnR5cGUgXAotICAgYmV0YShSVDEgYSwgUlQyIGIsIEEgeCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpiZXRhKGEsIGIsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZSBcCi0gICBiZXRhYyhSVDEgYSwgUlQyIGIsIFJUMyB4KSB7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpiZXRhYyhhLCBiLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUgXAotICAgaWJldGEoUlQxIGEsIFJUMiBiLCBSVDMgeCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjppYmV0YShhLCBiLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUgXAotICAgaWJldGFjKFJUMSBhLCBSVDIgYiwgUlQzIHgpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFjKGEsIGIsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUND5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMywgVDQ+Ojp0eXBlICBcCi0gICBpYmV0YV9pbnYoVDEgYSwgVDIgYiwgVDMgcCwgVDQqIHB5KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhX2ludihhLCBiLCBwLCBweSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlIFwKLSAgIGliZXRhX2ludihSVDEgYSwgUlQyIGIsIFJUMyBwKXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhX2ludihhLCBiLCBwLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZSBcCi0gICBpYmV0YWNfaW52KFQxIGEsIFQyIGIsIFQzIHEsIFQ0KiBweSl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjppYmV0YWNfaW52KGEsIGIsIHEsIHB5LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUgXAotICAgaWJldGFfaW52YShSVDEgYSwgUlQyIGIsIFJUMyBwKXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhX2ludmEoYSwgYiwgcCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlIFwKLSAgIGliZXRhY19pbnZhKFQxIGEsIFQyIGIsIFQzIHEpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFjX2ludmEoYSwgYiwgcSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlIFwKLSAgIGliZXRhX2ludmIoUlQxIGEsIFJUMiBiLCBSVDMgcCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjppYmV0YV9pbnZiKGEsIGIsIHAsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZSBcCi0gICBpYmV0YWNfaW52YihUMSBhLCBUMiBiLCBUMyBxKXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhY19pbnZiKGEsIGIsIHEsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZSBcCi0gICBpYmV0YWNfaW52KFJUMSBhLCBSVDIgYiwgUlQzIHEpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFjX2ludihhLCBiLCBxLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUgXAotICAgaWJldGFfZGVyaXZhdGl2ZShSVDEgYSwgUlQyIGIsIFJUMyB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhX2Rlcml2YXRpdmUoYSwgYiwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmKFJUIHopIHsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmVyZih6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZjKFJUIHopeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6ZXJmYyh6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZfaW52KFJUIHopIHsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmVyZl9pbnYoeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmY19pbnYoUlQgeil7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjplcmZjX2ludih6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6bGVnZW5kcmVfbmV4dDtcCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgXAotICAgbGVnZW5kcmVfcChpbnQgbCwgVCB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmxlZ2VuZHJlX3AobCwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIFwKLSAgIGxlZ2VuZHJlX3EodW5zaWduZWQgbCwgVCB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmxlZ2VuZHJlX3EobCwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdXNpbmcgOjpuZG5ib29zdDo6bWF0aDo6bGVnZW5kcmVfbmV4dDtcCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgXAotICAgbGVnZW5kcmVfcChpbnQgbCwgaW50IG0sIFQgeCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpsZWdlbmRyZV9wKGwsIG0sIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHVzaW5nIDo6bmRuYm9vc3Q6Om1hdGg6OmxhZ3VlcnJlX25leHQ7XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIFwKLSAgIGxhZ3VlcnJlKHVuc2lnbmVkIG4sIFQgeCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpsYWd1ZXJyZShuLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6bGFndWVycmVfcmVzdWx0PFQxLCBUMj46OnR5cGUgXAotICAgbGFndWVycmUodW5zaWduZWQgbiwgVDEgbSwgVDIgeCkgeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6bGFndWVycmUobiwgbSwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIFwKLSAgIGhlcm1pdGUodW5zaWduZWQgbiwgVCB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6Omhlcm1pdGUobiwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Omhlcm1pdGVfbmV4dDtcCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZT4gXAotICAgc3BoZXJpY2FsX2hhcm1vbmljKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhlcmljYWxfaGFybW9uaWMobiwgbSwgdGhldGEsIHBoaSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBcCi0gICBzcGhlcmljYWxfaGFybW9uaWNfcih1bnNpZ25lZCBuLCBpbnQgbSwgVDEgdGhldGEsIFQyIHBoaSl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpzcGhlcmljYWxfaGFybW9uaWNfcihuLCBtLCB0aGV0YSwgcGhpLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIFwKLSAgIHNwaGVyaWNhbF9oYXJtb25pY19pKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhlcmljYWxfaGFybW9uaWNfaShuLCBtLCB0aGV0YSwgcGhpLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgXAotICAgICAgc3BoZXJpY2FsX2hhcm1vbmljX2kodW5zaWduZWQgbiwgaW50IG0sIFQxIHRoZXRhLCBUMiBwaGksIGNvbnN0IFBvbGljeSYgcG9sKTtcCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMz46OnR5cGUgXAotICAgZWxsaW50X3JmKFQxIHgsIFQyIHksIFQzIHopeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6ZWxsaW50X3JmKHgsIHksIHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZSBcCi0gICBlbGxpbnRfcmQoVDEgeCwgVDIgeSwgVDMgeil7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjplbGxpbnRfcmQoeCwgeSwgeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBcCi0gICBlbGxpbnRfcmMoVDEgeCwgVDIgeSl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjplbGxpbnRfcmMoeCwgeSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzLCBUND46OnR5cGUgXAotICAgZWxsaW50X3JqKFQxIHgsIFQyIHksIFQzIHosIFQ0IHApeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmVsbGludF9yaih4LCB5LCB6LCBwLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZWxsaW50XzIoVCBrKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjplbGxpbnRfMihrLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGVsbGludF8yKFQxIGssIFQyIHBoaSl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZWxsaW50XzIoaywgcGhpLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZWxsaW50XzEoVCBrKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjplbGxpbnRfMShrLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGVsbGludF8xKFQxIGssIFQyIHBoaSl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZWxsaW50XzEoaywgcGhpLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMz46OnR5cGUgZWxsaW50XzMoVDEgaywgVDIgdiwgVDMgcGhpKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjplbGxpbnRfMyhrLCB2LCBwaGksIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZWxsaW50XzMoVDEgaywgVDIgdil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZWxsaW50XzMoaywgdiwgUG9saWN5KCkpOyB9XAotXAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Om1heF9mYWN0b3JpYWw7XAotICAgdGVtcGxhdGUgPGNsYXNzIFJUPlwKLSAgIGlubGluZSBSVCBmYWN0b3JpYWwodW5zaWduZWQgaW50IGkpIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpmYWN0b3JpYWw8UlQ+KGksIFBvbGljeSgpKTsgfVwKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjp1bmNoZWNrZWRfZmFjdG9yaWFsO1wKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgUlQgZG91YmxlX2ZhY3RvcmlhbCh1bnNpZ25lZCBpKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpkb3VibGVfZmFjdG9yaWFsPFJUPihpLCBQb2xpY3koKSk7IH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBmYWxsaW5nX2ZhY3RvcmlhbChSVCB4LCB1bnNpZ25lZCBuKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpmYWxsaW5nX2ZhY3RvcmlhbCh4LCBuLCBQb2xpY3koKSk7IH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSByaXNpbmdfZmFjdG9yaWFsKFJUIHgsIHVuc2lnbmVkIG4peyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnJpc2luZ19mYWN0b3JpYWwoeCwgbiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgdGdhbW1hKFJUIHopeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnRnYW1tYSh6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSB0Z2FtbWExcG0xKFJUIHopeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnRnYW1tYTFwbTEoeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgdGdhbW1hKFJUMSBhLCBSVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6dGdhbW1hKGEsIHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGxnYW1tYShSVCB6LCBpbnQqIHNpZ24peyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmxnYW1tYSh6LCBzaWduLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBsZ2FtbWEoUlQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6bGdhbW1hKHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIHRnYW1tYV9sb3dlcihSVDEgYSwgUlQyIHopeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnRnYW1tYV9sb3dlcihhLCB6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSBnYW1tYV9xKFJUMSBhLCBSVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Z2FtbWFfcShhLCB6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSBnYW1tYV9wKFJUMSBhLCBSVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Z2FtbWFfcChhLCB6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIHRnYW1tYV9kZWx0YV9yYXRpbyhUMSB6LCBUMiBkZWx0YSl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6dGdhbW1hX2RlbHRhX3JhdGlvKHosIGRlbHRhLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIHRnYW1tYV9yYXRpbyhUMSBhLCBUMiBiKSB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6dGdhbW1hX3JhdGlvKGEsIGIsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcF9kZXJpdmF0aXZlKFQxIGEsIFQyIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmdhbW1hX3BfZGVyaXZhdGl2ZShhLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3BfaW52KFQxIGEsIFQyIHApeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmdhbW1hX3BfaW52KGEsIHAsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcF9pbnZhKFQxIGEsIFQyIHApeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmdhbW1hX3BfaW52YShhLCBwLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3FfaW52KFQxIGEsIFQyIHEpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmdhbW1hX3FfaW52KGEsIHEsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcV9pbnZhKFQxIGEsIFQyIHEpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmdhbW1hX3FfaW52YShhLCBxLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZGlnYW1tYShUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmRpZ2FtbWEoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBcCi0gICBoeXBvdChUMSB4LCBUMiB5KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpoeXBvdCh4LCB5LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBjYnJ0KFJUIHopeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmNicnQoeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGxvZzFwKFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6bG9nMXAoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGxvZzFwbXgoVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpsb2cxcG14KHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBleHBtMShUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmV4cG0xKHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgXAotICAgcG93bTEoY29uc3QgVDEgYSwgY29uc3QgVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6cG93bTEoYSwgeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNxcnQxcG0xKGNvbnN0IFQmIHZhbCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6c3FydDFwbTEodmFsLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc2luY19waShUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnNpbmNfcGkoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbmhjX3BpKFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6c2luaGNfcGkoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGU8dHlwZW5hbWUgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYXNpbmgoY29uc3QgVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphc2luaCh4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhY29zaChjb25zdCBUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFjb3NoKHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGF0YW5oKGNvbnN0IFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6YXRhbmgoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2ooVDEgdiwgVDIgeClcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Y3lsX2Jlc3NlbF9qKHYsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBzcGhfYmVzc2VsKHVuc2lnbmVkIHYsIFQgeClcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6c3BoX2Jlc3NlbCh2LCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5ID46OnJlc3VsdF90eXBlIFwKLSAgIGN5bF9iZXNzZWxfaShUMSB2LCBUMiB4KSB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Y3lsX2Jlc3NlbF9pKHYsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3kgPjo6cmVzdWx0X3R5cGUgXAotICAgY3lsX2Jlc3NlbF9rKFQxIHYsIFQyIHgpIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfYmVzc2VsX2sodiwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBcCi0gICBjeWxfbmV1bWFubihUMSB2LCBUMiB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfbmV1bWFubih2LCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3kgPjo6cmVzdWx0X3R5cGUgXAotICAgc3BoX25ldW1hbm4odW5zaWduZWQgdiwgVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhfbmV1bWFubih2LCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3kgPjo6cmVzdWx0X3R5cGUgY3lsX2Jlc3NlbF9qX3plcm8oVCB2LCBpbnQgbSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Y3lsX2Jlc3NlbF9qX3plcm8odiwgbSwgUG9saWN5KCkpOyB9XAotXAotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBUPlwKLSAgIGlubGluZSB2b2lkIGN5bF9iZXNzZWxfal96ZXJvKFQgdixcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfaW5kZXgsXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dF9pdClcCi0gICB7IG5kbmJvb3N0OjptYXRoOjpjeWxfYmVzc2VsX2pfemVybyh2LCBzdGFydF9pbmRleCwgbnVtYmVyX29mX3plcm9zLCBvdXRfaXQsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBjeWxfbmV1bWFubl96ZXJvKFQgdiwgaW50IG0pXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmN5bF9uZXVtYW5uX3plcm8odiwgbSwgUG9saWN5KCkpOyB9XAotXAotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBUPlwKLSAgIGlubGluZSB2b2lkIGN5bF9uZXVtYW5uX3plcm8oVCB2LFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0X2luZGV4LFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0KVwKLSAgIHsgbmRuYm9vc3Q6Om1hdGg6OmN5bF9uZXVtYW5uX3plcm8odiwgc3RhcnRfaW5kZXgsIG51bWJlcl9vZl96ZXJvcywgb3V0X2l0LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc2luX3BpKFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6c2luX3BpKHgpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGNvc19waShUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmNvc19waSh4KTsgfVwKLVwKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjpmcGNsYXNzaWZ5O1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjppc2Zpbml0ZTtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6aXNpbmY7XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OmlzbmFuO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjppc25vcm1hbDtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6c2lnbmJpdDtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6c2lnbjtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6Y29weXNpZ247XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OmNoYW5nZXNpZ247XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQsVT46OnR5cGUgZXhwaW50KFQgY29uc3QmIHosIFUgY29uc3QmIHUpXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmV4cGludCh6LCB1LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZXhwaW50KFQgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZXhwaW50KHosIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSB6ZXRhKFQgcyl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6emV0YShzLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgVCByb3VuZChjb25zdCBUJiB2KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OnJvdW5kOyByZXR1cm4gcm91bmQodiwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIGludCBpcm91bmQoY29uc3QgVCYgdil7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjppcm91bmQ7IHJldHVybiBpcm91bmQodiwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIGxvbmcgbHJvdW5kKGNvbnN0IFQmIHYpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6bHJvdW5kOyByZXR1cm4gbHJvdW5kKHYsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBUIHRydW5jKGNvbnN0IFQmIHYpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6dHJ1bmM7IHJldHVybiB0cnVuYyh2LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgaW50IGl0cnVuYyhjb25zdCBUJiB2KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Oml0cnVuYzsgcmV0dXJuIGl0cnVuYyh2LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgbG9uZyBsdHJ1bmMoY29uc3QgVCYgdil7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjpsdHJ1bmM7IHJldHVybiBsdHJ1bmModiwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIFQgbW9kZihjb25zdCBUJiB2LCBUKiBpcGFydCl7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjptb2RmOyByZXR1cm4gbW9kZih2LCBpcGFydCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIFQgbW9kZihjb25zdCBUJiB2LCBpbnQqIGlwYXJ0KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Om1vZGY7IHJldHVybiBtb2RmKHYsIGlwYXJ0LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgVCBtb2RmKGNvbnN0IFQmIHYsIGxvbmcqIGlwYXJ0KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Om1vZGY7IHJldHVybiBtb2RmKHYsIGlwYXJ0LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8aW50IE4sIGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHBvdyhUIHYpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnBvdzxOPih2LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gVCBuZXh0YWZ0ZXIoY29uc3QgVCYgYSwgY29uc3QgVCYgYil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6bmV4dGFmdGVyKGEsIGIsIFBvbGljeSgpKTsgfVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBUIGZsb2F0X25leHQoY29uc3QgVCYgYSl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZmxvYXRfbmV4dChhLCBQb2xpY3koKSk7IH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gVCBmbG9hdF9wcmlvcihjb25zdCBUJiBhKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpmbG9hdF9wcmlvcihhLCBQb2xpY3koKSk7IH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gVCBmbG9hdF9kaXN0YW5jZShjb25zdCBUJiBhLCBjb25zdCBUJiBiKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpmbG9hdF9kaXN0YW5jZShhLCBiLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSBvd2Vuc190KFJUMSBhLCBSVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6b3dlbnNfdChhLCB6LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeSA+OjpyZXN1bHRfdHlwZT4gY3lsX2hhbmtlbF8xKFQxIHYsIFQyIHgpXAotICAgeyAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfaGFua2VsXzEodiwgeCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgc3RkOjpjb21wbGV4PHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3kgPjo6cmVzdWx0X3R5cGU+IGN5bF9oYW5rZWxfMihUMSB2LCBUMiB4KVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfaGFua2VsXzIodiwgeCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgc3RkOjpjb21wbGV4PHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3kgPjo6cmVzdWx0X3R5cGU+IHNwaF9oYW5rZWxfMShUMSB2LCBUMiB4KVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhfaGFua2VsXzEodiwgeCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgc3RkOjpjb21wbGV4PHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3kgPjo6cmVzdWx0X3R5cGU+IHNwaF9oYW5rZWxfMihUMSB2LCBUMiB4KVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhfaGFua2VsXzIodiwgeCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGphY29iaV9lbGxpcHRpYyhUIGssIFQgdGhldGEsIFQqIHBjbiwgVCogcGRuKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfZWxsaXB0aWMoaywgdGhldGEsIHBjbiwgcGRuLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NuKFUgaywgVCB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX3NuKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NuKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2NuKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2RuKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2RuKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NkKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2NkKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2RjKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2RjKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX25zKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX25zKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NkKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX3NkKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2RzKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2RzKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX25jKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX25jKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX25kKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX25kKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NjKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX3NjKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NzKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2NzKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9haShUIHgpXAotICAgeyAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphaXJ5X2FpKHgsIFBvbGljeSgpKTsgIH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9iaShUIHgpXAotICAgeyAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphaXJ5X2JpKHgsIFBvbGljeSgpKTsgIH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9haV9wcmltZShUIHgpXAotICAgeyAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphaXJ5X2FpX3ByaW1lKHgsIFBvbGljeSgpKTsgIH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9iaV9wcmltZShUIHgpXAotICAgeyAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphaXJ5X2JpX3ByaW1lKHgsIFBvbGljeSgpKTsgIH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgVCBhaXJ5X2FpX3plcm8oaW50IG0pXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFpcnlfYWlfemVybzxUPihtLCBQb2xpY3koKSk7IH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgT3V0cHV0SXRlcmF0b3I+XAotICAgT3V0cHV0SXRlcmF0b3IgYWlyeV9haV96ZXJvKGludCBzdGFydF9pbmRleCwgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLCBPdXRwdXRJdGVyYXRvciBvdXRfaXQpXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFpcnlfYWlfemVybzxUPihzdGFydF9pbmRleCwgbnVtYmVyX29mX3plcm9zLCBvdXRfaXQsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBUIGFpcnlfYmlfemVybyhpbnQgbSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6YWlyeV9iaV96ZXJvPFQ+KG0sIFBvbGljeSgpKTsgfVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBPdXRwdXRJdGVyYXRvcj5cCi0gICBPdXRwdXRJdGVyYXRvciBhaXJ5X2JpX3plcm8oaW50IHN0YXJ0X2luZGV4LCB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsIE91dHB1dEl0ZXJhdG9yIG91dF9pdClcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6YWlyeV9iaV96ZXJvPFQ+KHN0YXJ0X2luZGV4LCBudW1iZXJfb2ZfemVyb3MsIG91dF9pdCwgUG9saWN5KCkpOyB9XAotICAgXAotCi0KLQotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NQVRIX1NQRUNJQUxfTUFUSF9GV0RfSFBQCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGZiZDllLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9zaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNi4KLS8vICAoQykgQ29weXJpZ2h0IEpvaGFuIFJhZGUgMjAwNi4KLS8vICAoQykgQ29weXJpZ2h0IFBhdWwgQS4gQnJpc3RvdyAyMDExIChhZGRlZCBjaGFuZ2VzaWduKS4KLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9UT09MU19TSUdOX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1RPT0xTX1NJR05fSFBQCi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvdG9vbHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL21hdGhfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9mcF90cmFpdHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSBtYXRoeyAKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgLy8gc2lnbmJpdAotCi0jaWZkZWYgTkROQk9PU1RfTUFUSF9VU0VfU1REX0ZQQ0xBU1NJRlkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiAKLSAgICBpbmxpbmUgaW50IHNpZ25iaXRfaW1wbChUIHgsIG5hdGl2ZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6OnNpZ25iaXQpKHgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gCi0gICAgaW5saW5lIGludCBzaWduYml0X2ltcGwoVCB4LCBnZW5lcmljX3RhZzx0cnVlPiBjb25zdCYpCi0gICAgewotICAgICAgICByZXR1cm4geCA8IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gCi0gICAgaW5saW5lIGludCBzaWduYml0X2ltcGwoVCB4LCBnZW5lcmljX3RhZzxmYWxzZT4gY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHggPCAwOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IAotICAgIGlubGluZSBpbnQgc2lnbmJpdF9pbXBsKFQgeCwgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLQotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgICAgICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0gICAgICAgIHJldHVybiBhICYgdHJhaXRzOjpzaWduID8gMSA6IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gCi0gICAgaW5saW5lIGludCBzaWduYml0X2ltcGwoVCB4LCBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLQotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgICAgICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0KLSAgICAgICAgcmV0dXJuIGEgJiB0cmFpdHM6OnNpZ24gPyAxIDogMDsKLSAgICB9Ci0KLSAgICAvLyBDaGFuZ2VzaWduCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBUIChjaGFuZ2VzaWduX2ltcGwpKFQgeCwgZ2VuZXJpY190YWc8dHJ1ZT4gY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIC14OwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIFQgKGNoYW5nZXNpZ25faW1wbCkoVCB4LCBnZW5lcmljX3RhZzxmYWxzZT4gY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIC14OwotICAgIH0KLQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgVCBjaGFuZ2VzaWduX2ltcGwoVCB4LCBpZWVlX2NvcHlfYWxsX2JpdHNfdGFnIGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnNpZ25fY2hhbmdlX3R5cGUgdHJhaXRzOwotCi0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICAgICAgIHRyYWl0czo6Z2V0X2JpdHMoeCxhKTsKLSAgICAgICAgYSBePSB0cmFpdHM6OnNpZ247Ci0gICAgICAgIHRyYWl0czo6c2V0X2JpdHMoeCxhKTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgVCAoY2hhbmdlc2lnbl9pbXBsKShUIHgsIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnNpZ25fY2hhbmdlX3R5cGUgdHJhaXRzOwotCi0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICAgICAgIHRyYWl0czo6Z2V0X2JpdHMoeCxhKTsKLSAgICAgICAgYSBePSB0cmFpdHM6OnNpZ247Ci0gICAgICAgIHRyYWl0czo6c2V0X2JpdHMoeCxhKTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0KLX0gICAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGludCAoc2lnbmJpdCkoVCB4KQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICAvLyB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxUPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjpzaWduYml0X2ltcGwoc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGludCBzaWduIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChjb25zdCBUJiB6KQotewotICAgcmV0dXJuICh6ID09IDApID8gMCA6IChuZG5ib29zdDo6bWF0aDo6c2lnbmJpdCkoeikgPyAtMSA6IDE7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIChjaGFuZ2VzaWduKShjb25zdCBUJiB4KQoteyAvLyE8IFxicmllZiByZXR1cm4gdW5jaGFuZ2VkIGJpbmFyeSBwYXR0ZXJuIG9mIHgsIGV4Y2VwdCBmb3IgY2hhbmdlIG9mIHNpZ24gYml0LiAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmcF90cmFpdHM8VD46OnNpZ25fY2hhbmdlX3R5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICAvLyB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxUPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgIHJldHVybiBkZXRhaWw6OmNoYW5nZXNpZ25faW1wbChzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oeCksIG1ldGhvZCgpKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci1pbmxpbmUgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSAKLSAgIGNvcHlzaWduIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChjb25zdCBUJiB4LCBjb25zdCBVJiB5KQotewotICAgTkROQk9PU1RfTUFUSF9TVERfVVNJTkcKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgIHJldHVybiAobmRuYm9vc3Q6Om1hdGg6OnNpZ25iaXQpKHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPih4KSkgIT0gKG5kbmJvb3N0OjptYXRoOjpzaWduYml0KShzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oeSkpIAotICAgICAgPyAobmRuYm9vc3Q6Om1hdGg6OmNoYW5nZXNpZ24pKHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPih4KSkgOiBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oeCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG1hdGgKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfVE9PTFNfU0lHTl9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2YwM2E1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUyICswLDAgQEAKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYtNyBKb2huIE1hZGRvY2sKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfVE9PTFNfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1RPT0xTX0NPTkZJR19IUFAKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4gLy8gZm9yIG5kbmJvb3N0Ojp1aW50bWF4X3QKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gZm9yIG1pbiBhbmQgbWF4Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9jbWF0aC5ocHA+Ci0jaW5jbHVkZSA8Y2xpbWl0cz4KLSNpbmNsdWRlIDxjZmxvYXQ+Ci0jaWYgKGRlZmluZWQobWFjaW50b3NoKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FQUExFX0NDX18pKQotIyAgaW5jbHVkZSA8bWF0aC5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3Rvb2xzL3VzZXIuaHBwPgotCi0jaWYgKGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKSBcCi0gICB8fCAoZGVmaW5lZChfX2hwcGEpICYmICFkZWZpbmVkKF9fT3BlbkJTRF9fKSkgfHwgKGRlZmluZWQoX19OT19MT05HX0RPVUJMRV9NQVRIKSAmJiAoREJMX01BTlRfRElHICE9IExEQkxfTUFOVF9ESUcpKSkgXAotICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi0jZW5kaWYKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgyKSkKLS8vCi0vLyBCb3JsYW5kIHBvc3QgNS44LjIgdXNlcyBEaW5rdW13YXJlJ3Mgc3RkIEMgbGliIHdoaWNoCi0vLyBkb2Vzbid0IGhhdmUgdHJ1ZSBsb25nIGRvdWJsZSBwcmVjaXNpb24uICBFYXJsaWVyCi0vLyB2ZXJzaW9ucyBhcmUgcHJvYmxlbWF0aWMgdG9vOgotLy8KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX05PX1JFQUxfQ09OQ0VQVF9URVNUUwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0NPTlRST0xfRlAgX2NvbnRyb2w4NyhNQ1dfRU0sTUNXX0VNKQotIyAgaW5jbHVkZSA8ZmxvYXQuaD4KLSNlbmRpZgotI2lmZGVmIF9fSUJNQ1BQX18KLS8vCi0vLyBGb3IgcmVhc29ucyBJIGRvbid0IHVuc2Vyc3RhbmQsIHRoZSB0ZXN0cyB3aXRoIElNQidzIGNvbXBpbGVyIGFsbAotLy8gcGFzcyBhdCBsb25nIGRvdWJsZSBwcmVjaXNpb24sIGJ1dCBmYWlsIHdpdGggcmVhbF9jb25jZXB0LCB0aG9zZSB0ZXN0cwotLy8gYXJlIGRpc2FibGVkIGZvciBub3cuICAoSk0gMjAxMikuCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9OT19SRUFMX0NPTkNFUFRfVEVTVFMKLSNlbmRpZgotI2lmIChkZWZpbmVkKG1hY2ludG9zaCkgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19BUFBMRV9DQ19fKSkgJiYgKChMREJMX01BTlRfRElHID09IDEwNikgfHwgKF9fTERCTF9NQU5UX0RJR19fID09IDEwNikpICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMpCi0vLwotLy8gRGFyd2luJ3MgcmF0aGVyIHN0cmFuZ2UgImRvdWJsZSBkb3VibGUiIGlzIHJhdGhlciBoYXJkIHRvCi0vLyBzdXBwb3J0LCBpdCBzaG91bGQgYmUgcG9zc2libGUgZ2l2ZW4gZW5vdWdoIGVmZm9ydCB0aG91Z2guLi4KLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotI2VuZGlmCi0jaWYgZGVmaW5lZCh1bml4KSAmJiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmIChfX0lOVEVMX0NPTVBJTEVSIDw9IDEwMDApICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMpCi0vLwotLy8gSW50ZWwgY29tcGlsZXIgcHJpb3IgdG8gdmVyc2lvbiAxMCBoYXMgc3BvcmFkaWMgcHJvYmxlbXMKLS8vIGNhbGxpbmcgdGhlIGxvbmcgZG91YmxlIG92ZXJsb2FkcyBvZiB0aGUgc3RkIGxpYiBtYXRoIGZ1bmN0aW9uczoKLS8vIGNhbGxpbmcgOjpwb3dsIGlzIE9LLCBidXQgc3RkOjpwb3cobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKSAKLS8vIG1heSBzZWdmYXVsdCBkZXBlbmRpbmcgdXBvbiB0aGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50cyBwYXNzZWQgCi0vLyBhbmQgdGhlIHNwZWNpZmljIExpbnV4IGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBXZSdsbCBiZSBjb25zZXJ2YXRpdmUgYW5kIGRpc2FibGUgbG9uZyBkb3VibGUgc3VwcG9ydCBmb3IgdGhpcyBjb21waWxlci4KLS8vCi0vLyBDb21tZW50IG91dCB0aGlzICNkZWZpbmUgYW5kIHRyeSBidWlsZGluZyB0aGUgdGVzdHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIKLS8vIHlvdXIgSW50ZWwgY29tcGlsZXIgdmVyc2lvbiBoYXMgdGhpcyBpc3N1ZSBvciBub3QuCi0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLSNlbmRpZgotI2lmIGRlZmluZWQodW5peCkgJiYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotLy8KLS8vIEludGVsIGNvbXBpbGVyIGhhcyBzcG9yYWRpYyBpc3N1ZXMgY29tcGlsaW5nIHN0ZDo6ZnBjbGFzc2lmeSBkZXBlbmRpbmcgb24KLS8vIHRoZSBleGFjdCBPUyB2ZXJzaW9uIHVzZWQuICBVc2Ugb3VyIG93biBjb2RlIGZvciB0aGlzIGFzIHdlIGtub3cgaXQgd29ya3MKLS8vIHdlbGwgb24gSW50ZWwgcHJvY2Vzc29yczoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRElTQUJMRV9TVERfRlBDTEFTU0lGWQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmICFkZWZpbmVkKF9XSU4zMl9XQ0UpCi0gICAvLyBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LCBvdXIgdGVzdHMgZG9uJ3Qgc3VwcG9ydCBoYXJkd2FyZSBleGNlcHRpb25zOgotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQ09OVFJPTF9GUCBfY29udHJvbDg3KE1DV19FTSxNQ1dfRU0pCi0jZW5kaWYKLQotI2lmZGVmIF9fSUJNQ1BQX18KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX05PX0RFRFVDRURfRlVOQ1RJT05fUE9JTlRFUlMKLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoX19TVERDX1ZFUlNJT05fXykgJiYgKF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxKSkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1VTRV9DOTkKLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoX19ocHV4KSAmJiAhZGVmaW5lZChfX2hwcGEpKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfVVNFX0M5OQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9HTElCQ1hYX1VTRV9DOTkpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9VU0VfQzk5Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1VTRV9DOTkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSFBfYUNDKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0lOVEVMKSBcCi0gIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fTkFUSVZFX0xPTkdfRE9VQkxFX0ZQX0NMQVNTSUZZKSBcCi0gIHx8IChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9NQVRIX1VTRV9DOTkpKVwKLSAgfHwgZGVmaW5lZChORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fTkFUSVZFX0xPTkdfRE9VQkxFX0ZQX0NMQVNTSUZZCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fRVhQTElDSVRfRlVOQ1RJT05fVEVNUExBVEVfQVJHVU1FTlRTKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8PSAweDU5MCkKLQotIyAgaW5jbHVkZSAibmRuYm9vc3QvdHlwZS5ocHAiCi0jICBpbmNsdWRlICJuZG5ib29zdC9ub25fdHlwZS5ocHAiCi0KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkgICAgICAgICBuZG5ib29zdDo6dHlwZTx0PiogPSAwCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkgICAgbmRuYm9vc3Q6OnR5cGU8dD4qCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KSAgbmRuYm9vc3Q6Om5vbl90eXBlPHQsIHY+KiA9IDAKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFX1NQRUModCwgdikgIG5kbmJvb3N0Ojpub25fdHlwZTx0LCB2PioKLQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkgICAgICAgICBcCi0gICAgICAgICAgICAgLCBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkgICAgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KSAgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFX1NQRUModCwgdikgIFwKLSAgICAgICAgICAgICAsIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KQotCi0jZWxzZQotCi0vLyBubyB3b3JrYXJvdW5kIG5lZWRlZDogZXhwYW5kIHRvIG5vdGhpbmcKLQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRV9TUEVDKHQpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KQotCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEVfU1BFQyh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KQotCi0KLSNlbmRpZiAvLyBkZWZpbmVkIE5ETkJPT1NUX05PX0VYUExJQ0lUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1VNRU5UUwotCi0jaWYgKGRlZmluZWQoX19TVU5QUk9fQ0MpIHx8IGRlZmluZWQoX19ocHBhKSB8fCBkZWZpbmVkKF9fR05VQ19fKSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTUFUSF9TTUFMTF9DT05TVEFOVCkKLS8vIFN1bidzIGNvbXBpbGVyIGVtaXRzIGEgaGFyZCBlcnJvciBpZiBhIGNvbnN0YW50IHVuZGVyZmxvd3MsCi0vLyBhcyBkb2VzIGFDQyBvbiBQQS1SSVNDLCB3aGlsZSBnY2MgaXNzdWVzIGEgbGFyZ2UgbnVtYmVyIG9mIHdhcm5pbmdzOgotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfU01BTExfQ09OU1RBTlQoeCkgMAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1NNQUxMX0NPTlNUQU5UKHgpIHgKLSNlbmRpZgotCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTQwMCkKLS8vCi0vLyBEZWZpbmUgaWYgY29uc3RhbnRzIHRvbyBsYXJnZSBmb3IgYSBmbG9hdCBjYXVzZSAiYmFkIgotLy8gdmFsdWVzIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YSwgcmF0aGVyIHRoYW4gaW5maW5pdHkKLS8vIG9yIGEgc3VpdGFibHkgbGFyZ2UgdmFsdWUuCi0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQlVHR1lfTEFSR0VfRkxPQVRfQ09OU1RBTlRTCi0jZW5kaWYKLS8vCi0vLyBUdW5lIHBlcmZvcm1hbmNlIG9wdGlvbnMgZm9yIHNwZWNpZmljIGNvbXBpbGVyczoKLS8vCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfUE9MWV9NRVRIT0QgMgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9JTlRFTCkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1BPTFlfTUVUSE9EIDIKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1JBVElPTkFMX01FVEhPRCAyCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfUE9MWV9NRVRIT0QgMwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfUkFUSU9OQUxfTUVUSE9EIDMKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOVF9UQUJMRV9UWVBFKFJULCBJVCkgUlQKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOVF9WQUxVRV9TVUZGSVgoUlYsIFNVRikgUlYjIy4wTAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0xPTkdfTE9ORykgJiYgIWRlZmluZWQoTkROQk9PU1RfTUFUSF9JTlRfVEFCTEVfVFlQRSkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOVF9UQUJMRV9UWVBFKFJULCBJVCkgUlQKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOVF9WQUxVRV9TVUZGSVgoUlYsIFNVRikgUlYjIy4wTAotI2VuZGlmCi0KLS8vCi0vLyBUaGUgbWF4aW11bSBvcmRlciBvZiBwb2x5bm9taWFsIHRoYXQgd2lsbCBiZSBldmFsdWF0ZWQgCi0vLyB2aWEgYW4gdW5yb2xsZWQgc3BlY2lhbGlzYXRpb246Ci0vLwotI2lmbmRlZiBORE5CT09TVF9NQVRIX01BWF9QT0xZX09SREVSCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9NQVhfUE9MWV9PUkRFUiAxNwotI2VuZGlmIAotLy8KLS8vIFNldCB0aGUgbWV0aG9kIHVzZWQgdG8gZXZhbHVhdGUgcG9seW5vbWlhbHMgYW5kIHJhdGlvbmFsczoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfUE9MWV9NRVRIT0QKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1BPTFlfTUVUSE9EIDEKLSNlbmRpZiAKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9SQVRJT05BTF9NRVRIT0QKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1JBVElPTkFMX01FVEhPRCAwCi0jZW5kaWYgCi0vLwotLy8gZGVjaWRlIHdoZXRoZXIgdG8gc3RvcmUgY29uc3RhbnRzIGFzIGludGVnZXJzIG9yIHJlYWxzOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9JTlRfVEFCTEVfVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5UX1RBQkxFX1RZUEUoUlQsIElUKSBJVAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfSU5UX1ZBTFVFX1NVRkZJWAotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5UX1ZBTFVFX1NVRkZJWChSViwgU1VGKSBSViMjU1VGCi0jZW5kaWYKLS8vCi0vLyBUZXN0IHdoZXRoZXIgdG8gc3VwcG9ydCBfX2Zsb2F0MTI4OgotLy8KLSNpZiBkZWZpbmVkKF9HTElCQ1hYX1VTRV9GTE9BVDEyOCkgJiYgZGVmaW5lZChORE5CT09TVF9HQ0MpICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykKLS8vCi0vLyBPbmx5IGVuYWJsZSB0aGlzIHdoZW4gdGhlIGNvbXBpbGVyIHJlYWxseSBpcyBHQ0MgYXMgY2xhbmcgYW5kIHByb2JhYmx5IAotLy8gaW50ZWwgdG9vIGRvbid0IHN1cHBvcnQgX19mbG9hdDEyOCB5ZXQgOi0oCi0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfVVNFX0ZMT0FUMTI4Ci0jZW5kaWYKLS8vCi0vLyBDaGVjayBmb3IgV2luQ0Ugd2l0aCBubyBpb3N0cmVhbSBzdXBwb3J0OgotLy8KLSNpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fTEVYSUNBTF9DQVNUCi0jZW5kaWYKLQotLy8KLS8vIEhlbHBlciBtYWNybyBmb3IgY29udHJvbGxpbmcgdGhlIEZQIGJlaGF2aW91cjoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfQ09OVFJPTF9GUAotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQ09OVFJPTF9GUAotI2VuZGlmCi0vLwotLy8gSGVscGVyIG1hY3JvIGZvciB1c2luZyBzdGF0ZW1lbnRzOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9TVERfVVNJTkdfQ09SRSBcCi0gICB1c2luZyBzdGQ6OmFicztcCi0gICB1c2luZyBzdGQ6OmFjb3M7XAotICAgdXNpbmcgc3RkOjpjb3M7XAotICAgdXNpbmcgc3RkOjpmbW9kO1wKLSAgIHVzaW5nIHN0ZDo6bW9kZjtcCi0gICB1c2luZyBzdGQ6OnRhbjtcCi0gICB1c2luZyBzdGQ6OmFzaW47XAotICAgdXNpbmcgc3RkOjpjb3NoO1wKLSAgIHVzaW5nIHN0ZDo6ZnJleHA7XAotICAgdXNpbmcgc3RkOjpwb3c7XAotICAgdXNpbmcgc3RkOjp0YW5oO1wKLSAgIHVzaW5nIHN0ZDo6YXRhbjtcCi0gICB1c2luZyBzdGQ6OmV4cDtcCi0gICB1c2luZyBzdGQ6OmxkZXhwO1wKLSAgIHVzaW5nIHN0ZDo6c2luO1wKLSAgIHVzaW5nIHN0ZDo6YXRhbjI7XAotICAgdXNpbmcgc3RkOjpmYWJzO1wKLSAgIHVzaW5nIHN0ZDo6bG9nO1wKLSAgIHVzaW5nIHN0ZDo6c2luaDtcCi0gICB1c2luZyBzdGQ6OmNlaWw7XAotICAgdXNpbmcgc3RkOjpmbG9vcjtcCi0gICB1c2luZyBzdGQ6OmxvZzEwO1wKLSAgIHVzaW5nIHN0ZDo6c3FydDsKLQotI2RlZmluZSBORE5CT09TVF9NQVRIX1NURF9VU0lORyBORE5CT09TVF9NQVRIX1NURF9VU0lOR19DT1JFCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIG1hdGh7Ci1uYW1lc3BhY2UgdG9vbHMKLXsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgVCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04oVCBhLCBUIGIsIFQgYykKLXsKLSAgIHJldHVybiAoc3RkOjptYXgpKChzdGQ6Om1heCkoYSwgYiksIGMpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBUIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihUIGEsIFQgYiwgVCBjLCBUIGQpCi17Ci0gICByZXR1cm4gKHN0ZDo6bWF4KSgoc3RkOjptYXgpKGEsIGIpLCAoc3RkOjptYXgpKGMsIGQpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdG9vbHMKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci12b2lkIHN1cHByZXNzX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGNvbnN0IFQmKQotewotfQotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QgbmFtZXNwYWNlIG1hdGgKLQotI2lmICgoZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pKSB8fCBkZWZpbmVkKF9fUU5YX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZFTlZfSCkKLQotICAgI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9mZW52LmhwcD4KLQotIyAgaWZkZWYgRkVfQUxMX0VYQ0VQVAotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSBtYXRoewotICAgbmFtZXNwYWNlIGRldGFpbAotICAgewotICAgc3RydWN0IGZwdV9ndWFyZAotICAgewotICAgICAgZnB1X2d1YXJkKCkKLSAgICAgIHsKLSAgICAgICAgIGZlZ2V0ZXhjZXB0ZmxhZygmbV9mbGFncywgRkVfQUxMX0VYQ0VQVCk7Ci0gICAgICAgICBmZWNsZWFyZXhjZXB0KEZFX0FMTF9FWENFUFQpOwotICAgICAgfQotICAgICAgfmZwdV9ndWFyZCgpCi0gICAgICB7Ci0gICAgICAgICBmZXNldGV4Y2VwdGZsYWcoJm1fZmxhZ3MsIEZFX0FMTF9FWENFUFQpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIGZleGNlcHRfdCBtX2ZsYWdzOwotICAgfTsKLQotICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICB9fSAvLyBuYW1lc3BhY2VzCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZQVV9FWENFUFRJT05fR1VBUkQgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6ZnB1X2d1YXJkIGxvY2FsX2d1YXJkX29iamVjdDsKLSMgICAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9GUFUgZG97IGZleGNlcHRfdCBjcHVfZmxhZ3M7IGZlZ2V0ZXhjZXB0ZmxhZygmY3B1X2ZsYWdzLCBGRV9BTExfRVhDRVBUKTsgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKGNwdV9mbGFncyk7IH0gd2hpbGUoMCk7IAotCi0jICBlbHNlCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZQVV9FWENFUFRJT05fR1VBUkQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9GUFUKLQotIyAgZW5kaWYKLQotI2Vsc2UgLy8gQWxsIG90aGVyIHBsYXRmb3Jtcy4KLSMgIGRlZmluZSBORE5CT09TVF9GUFVfRVhDRVBUSU9OX0dVQVJECi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX0ZQVQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlQKLQotIyAgaW5jbHVkZSA8aW9zdHJlYW0+Ci0jICBpbmNsdWRlIDxpb21hbmlwPgotIyAgaW5jbHVkZSA8dHlwZWluZm8+Ci0KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfQ09ERSh4KSBcCi0gICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpzZXRwcmVjaXNpb24oMzUpIDw8IF9fRklMRV9fIDw8ICI6IiA8PCBfX0xJTkVfXyA8PCAiICIgPDwgeCA8PCBzdGQ6OmVuZGw7Ci0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKG5hbWUpIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9DT0RFKE5ETkJPT1NUX1NUUklOR0laRShuYW1lKSA8PCAiID0gIiA8PCBuYW1lKQotCi0jZWxzZQotCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX0NPREUoeCkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUobmFtZSkKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NQVRIX1RPT0xTX0NPTkZJR19IUFAKLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvcHJvbW90aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9wcm9tb3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzFmZWE5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9wcm9tb3Rpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8vIGJvb3N0XG1hdGhcdG9vbHNccHJvbW90aW9uLmhwcAotCi0vLyBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDYuCi0vLyBDb3B5cmlnaHQgUGF1bCBBLiBCcmlzdG93IDIwMDYuCi0KLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0vLyBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gUHJvbW90ZSBhcmd1bWVudHMgZnVuY3Rpb25zIHRvIGFsbG93IG1hdGggZnVuY3Rpb25zIHRvIGhhdmUgYXJndW1lbnRzCi0vLyBwcm92aWRlZCBhcyBpbnRlZ2VyIE9SIHJlYWwgKGZsb2F0aW5nLXBvaW50LCBidWlsdC1pbiBvciBVRFQpCi0vLyAoY2FsbGVkIEFyaXRobWV0aWNUeXBlIGluIGZ1bmN0aW9ucyB0aGF0IHVzZSBwcm9tb3Rpb24pCi0vLyB0aGF0IGhlbHAgdG8gcmVkdWNlIHRoZSByaXNrIG9mIGNyZWF0aW5nIG11bHRpcGxlIGluc3RhbnRpYXRpb25zLgotLy8gQWxsb3dzIGNyZWF0aW9uIG9mIGFuIGlubGluZSB3cmFwcGVyIHRoYXQgZm9yd2FyZHMgdG8gYSBmb28oUlQsIFJUKSBmdW5jdGlvbiwKLS8vIHNvIHlvdSBuZXZlciBnZXQgdG8gaW5zdGFudGlhdGUgYW55IG1peGVkIGZvbyhSVCwgSVQpIGZ1bmN0aW9ucy4KLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX1BST01PVElPTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9QUk9NT1RJT05fSFBQCi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gQm9vc3QgdHlwZSB0cmFpdHM6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC90b29scy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0aW5nX3BvaW50LmhwcD4gLy8gZm9yIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDsKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+IC8vIGZvciBuZG5ib29zdDo6aXNfaW50ZWdyYWwKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+IC8vIGZvciBuZG5ib29zdDo6aXNfY29udmVydGlibGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4vLyBmb3IgbmRuYm9vc3Q6OmlzX3NhbWUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPi8vIGZvciBuZG5ib29zdDo6cmVtb3ZlX2N2Ci0vLyBCb29zdCBUZW1wbGF0ZSBtZXRhIHByb2dyYW1taW5nOgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+IC8vIGZvciBuZG5ib29zdDo6bXBsOjppZl9jLgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPiAvLyBmb3IgbmRuYm9vc3Q6Om1wbDo6aWZfYy4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPiAvLyBmb3IgbmRuYm9vc3Q6Om1wbDo6aWZfYy4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4gLy8gZm9yIG5kbmJvb3N0OjptcGw6OmlmX2MuCi0KLSNpZmRlZiBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIG5hbWVzcGFjZSBtYXRoCi0gIHsKLSAgICBuYW1lc3BhY2UgdG9vbHMKLSAgICB7Ci0gICAgICAvLyBJZiBlaXRoZXIgVDEgb3IgVDIgaXMgYW4gaW50ZWdlciB0eXBlLAotICAgICAgLy8gcHJldGVuZCBpdCB3YXMgYSBkb3VibGUgKGZvciB0aGUgcHVycG9zZXMgb2YgZnVydGhlciBhbmFseXNpcykuCi0gICAgICAvLyBUaGVuIHBpY2sgdGhlIHdpZGVyIG9mIHRoZSB0d28gZmxvYXRpbmctcG9pbnQgdHlwZXMKLSAgICAgIC8vIGFzIHRoZSBhY3R1YWwgc2lnbmF0dXJlIHRvIGZvcndhcmQgdG8uCi0gICAgICAvLyBGb3IgZXhhbXBsZToKLSAgICAgIC8vIGZvbyhpbnQsIHNob3J0KSAtPiBkb3VibGUgZm9vKGRvdWJsZSwgZG91YmxlKTsKLSAgICAgIC8vIGZvbyhpbnQsIGZsb2F0KSAtPiBkb3VibGUgZm9vKGRvdWJsZSwgZG91YmxlKTsKLSAgICAgIC8vIE5vdGU6IE5PVCBmbG9hdCBmb28oZmxvYXQsIGZsb2F0KQotICAgICAgLy8gZm9vKGludCwgZG91YmxlKSAtPiBmb28oZG91YmxlLCBkb3VibGUpOwotICAgICAgLy8gZm9vKGRvdWJsZSwgZmxvYXQpIC0+IGRvdWJsZSBmb28oZG91YmxlLCBkb3VibGUpOwotICAgICAgLy8gZm9vKGRvdWJsZSwgZmxvYXQpIC0+IGRvdWJsZSBmb28oZG91YmxlLCBkb3VibGUpOwotICAgICAgLy8gZm9vKGFueS1pbnQtb3ItZmxvYXQtdHlwZSwgbG9uZyBkb3VibGUpIC0+IGZvbyhsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOwotICAgICAgLy8gYnV0IE9OTFkgZmxvYXQgZm9vKGZsb2F0LCBmbG9hdCkgaXMgdW5jaGFuZ2VkLgotICAgICAgLy8gU28gdGhlIG9ubHkgd2F5IHRvIGdldCBhbiBlbnRpcmVseSBmbG9hdCB2ZXJzaW9uIGlzIHRvIGNhbGwgZm9vKDEuRiwgMi5GKSwKLSAgICAgIC8vIEJ1dCBzaW5jZSBtb3N0IChhbGw/KSB0aGUgbWF0aCBmdW5jdGlvbnMgY29udmVydCB0byBkb3VibGUgaW50ZXJuYWxseSwKLSAgICAgIC8vIHByb2JhYmx5IHRoZXJlIHdvdWxkIG5vdCBiZSB0aGUgaG9wZWQtZm9yIGdhaW4gYnkgdXNpbmcgZmxvYXQgaGVyZS4KLQotICAgICAgLy8gVGhpcyBmb2xsb3dzIHRoZSBDLWNvbXBhdGlibGUgY29udmVyc2lvbiBydWxlcyBvZiBwb3csIGV0YwotICAgICAgLy8gd2hlcmUgcG93KGludCwgZmxvYXQpIGlzIGNvbnZlcnRlZCB0byBwb3coZG91YmxlLCBkb3VibGUpLgotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgIHN0cnVjdCBwcm9tb3RlX2FyZwotICAgICAgeyAvLyBJZiBUIGlzIGludGVncmFsIHR5cGUsIHRoZW4gcHJvbW90ZSB0byBkb3VibGUuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88aXNfaW50ZWdyYWw8VD4sIGRvdWJsZSwgVD46OnR5cGUgdHlwZTsKLSAgICAgIH07Ci0gICAgICAvLyBUaGVzZSBmdWxsIHNwZWNpYWxpc2F0aW9ucyByZWR1Y2UgbXBsOjppZl8gdXNhZ2UgYW5kIHNwZWVkIHVwCi0gICAgICAvLyBjb21waWxhdGlvbjoKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZzxmbG9hdD4geyB0eXBlZGVmIGZsb2F0IHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmc8ZG91YmxlPnsgdHlwZWRlZiBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZzxsb25nIGRvdWJsZT4geyB0eXBlZGVmIGxvbmcgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmc8aW50PiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgICAgc3RydWN0IHByb21vdGVfYXJnc18yCi0gICAgICB7IC8vIFByb21vdGUsIGlmIG5lY2Vzc2FyeSwgJiBwaWNrIHRoZSB3aWRlciBvZiB0aGUgdHdvIGZsb2F0aW5nLXBvaW50IHR5cGVzLgotICAgICAgICAvLyBmb3IgYm90aCBwYXJhbWV0ZXIgdHlwZXMsIGlmIGludGVncmFsIHByb21vdGUgdG8gZG91YmxlLgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByb21vdGVfYXJnPFQxPjo6dHlwZSBUMVA7IC8vIFQxIHBlcmhhcHMgcHJvbW90ZWQuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJvbW90ZV9hcmc8VDI+Ojp0eXBlIFQyUDsgLy8gVDIgcGVyaGFwcyBwcm9tb3RlZC4KLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6YW5kXzxpc19mbG9hdGluZ19wb2ludDxUMVA+LCBpc19mbG9hdGluZ19wb2ludDxUMlA+ID46OnR5cGUsIC8vIGJvdGggVDFQIGFuZCBUMlAgYXJlIGZsb2F0aW5nLXBvaW50PwotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPCB0eXBlbmFtZSBtcGw6Om9yXzxpc19zYW1lPGxvbmcgZG91YmxlLCBUMVA+LCBpc19zYW1lPGxvbmcgZG91YmxlLCBUMlA+ID46OnR5cGUsIC8vIGVpdGhlciBsb25nIGRvdWJsZT8KLSAgICAgICAgICAgIGxvbmcgZG91YmxlLCAvLyB0aGVuIHJlc3VsdCB0eXBlIGlzIGxvbmcgZG91YmxlLgotICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88IHR5cGVuYW1lIG1wbDo6b3JfPGlzX3NhbWU8ZG91YmxlLCBUMVA+LCBpc19zYW1lPGRvdWJsZSwgVDJQPiA+Ojp0eXBlLCAvLyBlaXRoZXIgZG91YmxlPwotICAgICAgICAgICAgZG91YmxlLCAvLyByZXN1bHQgdHlwZSBpcyBkb3VibGUuCi0gICAgICAgICAgZmxvYXQgLy8gZWxzZSByZXN1bHQgdHlwZSBpcyBmbG9hdC4KLSAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPjo6dHlwZSwKLSAgICAgICAgICAvLyBlbHNlIG9uZSBvciB0aGUgb3RoZXIgaXMgYSB1c2VyLWRlZmluZWQgdHlwZToKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwgdHlwZW5hbWUgbXBsOjphbmRfPG1wbDo6bm90Xzxpc19mbG9hdGluZ19wb2ludDxUMlA+ID4sIDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPFQxUCwgVDJQPiA+LCBUMlAsIFQxUD46OnR5cGU+Ojp0eXBlIHR5cGU7Ci0gICAgICB9OyAvLyBwcm9tb3RlX2FyZzIKLSAgICAgIC8vIFRoZXNlIGZ1bGwgc3BlY2lhbGlzYXRpb25zIHJlZHVjZSBtcGw6OmlmXyB1c2FnZSBhbmQgc3BlZWQgdXAKLSAgICAgIC8vIGNvbXBpbGF0aW9uOgotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGZsb2F0LCBmbG9hdD4geyB0eXBlZGVmIGZsb2F0IHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8ZG91YmxlLCBkb3VibGU+eyB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZT4geyB0eXBlZGVmIGxvbmcgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8aW50LCBpbnQ+IHsgIHR5cGVkZWYgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8aW50LCBmbG9hdD4geyAgdHlwZWRlZiBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxmbG9hdCwgaW50PiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGludCwgZG91YmxlPiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGRvdWJsZSwgaW50PiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGludCwgbG9uZyBkb3VibGU+IHsgIHR5cGVkZWYgbG9uZyBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxsb25nIGRvdWJsZSwgaW50PiB7ICB0eXBlZGVmIGxvbmcgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8ZmxvYXQsIGRvdWJsZT4geyAgdHlwZWRlZiBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxkb3VibGUsIGZsb2F0PiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGZsb2F0LCBsb25nIGRvdWJsZT4geyAgdHlwZWRlZiBsb25nIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGxvbmcgZG91YmxlLCBmbG9hdD4geyAgdHlwZWRlZiBsb25nIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGRvdWJsZSwgbG9uZyBkb3VibGU+IHsgIHR5cGVkZWYgbG9uZyBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxsb25nIGRvdWJsZSwgZG91YmxlPiB7ICB0eXBlZGVmIGxvbmcgZG91YmxlIHR5cGU7IH07Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI9ZmxvYXQsIGNsYXNzIFQzPWZsb2F0LCBjbGFzcyBUND1mbG9hdCwgY2xhc3MgVDU9ZmxvYXQsIGNsYXNzIFQ2PWZsb2F0PgotICAgICAgc3RydWN0IHByb21vdGVfYXJncwotICAgICAgewotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcm9tb3RlX2FyZ3NfMjwKLSAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUMT46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSBwcm9tb3RlX2FyZ3NfMjwKLSAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUMj46OnR5cGUsCi0gICAgICAgICAgICAgICB0eXBlbmFtZSBwcm9tb3RlX2FyZ3NfMjwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUMz46OnR5cGUsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBwcm9tb3RlX2FyZ3NfMjwKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUND46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBwcm9tb3RlX2FyZ3NfMjwKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUNT46OnR5cGUsIHR5cGVuYW1lIHJlbW92ZV9jdjxUNj46OnR5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgID46OnR5cGUgdHlwZTsKLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLSAgICAgICAgIC8vCi0gICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IHVzZSBvZiBsb25nIGRvdWJsZSBpZiBpdCdzIG5vdCBzdXBwb3J0ZWQ6Ci0gICAgICAgICAvLwotICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoMCA9PSA6Om5kbmJvb3N0Ojppc19zYW1lPHR5cGUsIGxvbmcgZG91YmxlPjo6dmFsdWUpKTsKLSNlbmRpZgotICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIHRvb2xzCi0gIH0gLy8gbmFtZXNwYWNlIG1hdGgKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NQVRIX1BST01PVElPTl9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3Rvb2xzL3JlYWxfY2FzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvcmVhbF9jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGExNDYxMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvcmVhbF9jYXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vICBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDYuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX1RPT0xTX1JFQUxfQ0FTVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9UT09MU19SRUFMX0NBU1RfSFBQCi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgbWF0aAotewotICBuYW1lc3BhY2UgdG9vbHMKLSAgewotICAgIHRlbXBsYXRlIDxjbGFzcyBUbywgY2xhc3MgVD4KLSAgICBpbmxpbmUgVG8gcmVhbF9jYXN0KFQgdCkKLSAgICB7Ci0gICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRvPih0KTsKLSAgICB9Ci0gIH0gLy8gbmFtZXNwYWNlIHRvb2xzCi19IC8vIG5hbWVzcGFjZSBtYXRoCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTUFUSF9UT09MU19SRUFMX0NBU1RfSFBQCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvdXNlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvdXNlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MjI0NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3Rvb2xzL3VzZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA3LgotLy8gQ29weXJpZ2h0IFBhdWwgQS4gQnJpc3RvdyAyMDA3LgotCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotLy8gb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9UT09MU19VU0VSX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1RPT0xTX1VTRVJfSFBQCi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gVGhpcyBmaWxlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUgdXNlciB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgcG9saWNpZXMuCi0vLyBTZWUgIkNoYW5naW5nIHRoZSBQb2xpY3kgRGVmYXVsdHMiIGluIGRvY3VtZW50YXRpb24uCi0KLS8vIGRlZmluZSB0aGlzIGlmIHRoZSBwbGF0Zm9ybSBoYXMgbm8gbG9uZyBkb3VibGUgZnVuY3Rpb25zLAotLy8gb3IgaWYgdGhlIGxvbmcgZG91YmxlIHZlcnNpb25zIGhhdmUgb25seSBkb3VibGUgcHJlY2lzaW9uOgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotLy8KLS8vIFBlcmZvcm1hbmNlIHR1bmluZyBvcHRpb25zOgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9QT0xZX01FVEhPRCAzCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfUkFUSU9OQUxfTUVUSE9EIDMKLS8vCi0vLyBUaGUgbWF4aW11bSBvcmRlciBvZiBwb2x5bm9taWFsIHRoYXQgd2lsbCBiZSBldmFsdWF0ZWQKLS8vIHZpYSBhbiB1bnJvbGxlZCBzcGVjaWFsaXNhdGlvbjoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfTUFYX1BPTFlfT1JERVIgMTcKLS8vCi0vLyBkZWNpZGUgd2hldGhlciB0byBzdG9yZSBjb25zdGFudHMgYXMgaW50ZWdlcnMgb3IgcmVhbHM6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0lOVF9UQUJMRV9UWVBFKFJULCBJVCkgSVQKLQotLy8KLS8vIERlZmF1bHQgcG9saWNpZXMgZm9sbG93OgotLy8KLS8vIERvbWFpbiBlcnJvcnM6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0RPTUFJTl9FUlJPUl9QT0xJQ1kgdGhyb3dfb25fZXJyb3IKLS8vCi0vLyBQb2xlIGVycm9yczoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfUE9MRV9FUlJPUl9QT0xJQ1kgdGhyb3dfb25fZXJyb3IKLS8vCi0vLyBPdmVyZmxvdyBFcnJvcnM6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX09WRVJGTE9XX0VSUk9SX1BPTElDWSB0aHJvd19vbl9lcnJvcgotLy8KLS8vIEludGVybmFsIEV2YWx1YXRpb24gRXJyb3JzOgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9FVkFMVUFUSU9OX0VSUk9SX1BPTElDWSB0aHJvd19vbl9lcnJvcgotLy8KLS8vIFVuZGVyZm93OgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9VTkRFUkZMT1dfRVJST1JfUE9MSUNZIGlnbm9yZV9lcnJvcgotLy8KLS8vIERlbm9ybXM6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0RFTk9STV9FUlJPUl9QT0xJQ1kgaWdub3JlX2Vycm9yCi0vLwotLy8gTWF4IGRpZ2l0cyB0byB1c2UgZm9yIGludGVybmFsIGNhbGN1bGF0aW9uczoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfRElHSVRTMTBfUE9MSUNZIDAKLS8vCi0vLyBQcm9tb3RlIGZsb2F0cyB0byBkb3VibGVzIGludGVybmFsbHk/Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX1BST01PVEVfRkxPQVRfUE9MSUNZIHRydWUKLS8vCi0vLyBQcm9tb3RlIGRvdWJsZXMgdG8gbG9uZyBkb3VibGUgaW50ZXJuYWxseToKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfUFJPTU9URV9ET1VCTEVfUE9MSUNZIHRydWUKLS8vCi0vLyBXaGF0IGRvIGRpc2NyZXRlIHF1YW50aWxlcyByZXR1cm4/Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0RJU0NSRVRFX1FVQU5USUxFX1BPTElDWSBpbnRlZ2VyX3JvdW5kX291dHdhcmRzCi0vLwotLy8gSWYgYSBmdW5jdGlvbiBpcyBtYXRoZW1hdGljYWxseSB1bmRlZmluZWQKLS8vIChmb3IgZXhhbXBsZSB0aGUgQ2F1Y2h5IGRpc3RyaWJ1dGlvbiBoYXMgbm8gbWVhbiksCi0vLyB0aGVuIGRvIHdlIHN0b3AgdGhlIGNvZGUgZnJvbSBjb21waWxpbmc/Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0FTU0VSVF9VTkRFRklORURfUE9MSUNZIHRydWUKLS8vCi0vLyBNYXhpbXVtIHNlcmllcyBpdGVyc3Rpb25zIHBlcm1pdHRlZDoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfTUFYX1NFUklFU19JVEVSQVRJT05fUE9MSUNZIDEwMDAwMDAKLS8vCi0vLyBNYXhpbXVtIHJvb3QgZmluZGluZyBzdGVwcyBwZXJtaXR0ZWQ6Ci0vLwotLy8gZGVmaW5lIE5ETkJPT1NUX01BVEhfTUFYX1JPT1RfSVRFUkFUSU9OX1BPTElDWSAyMDAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfVE9PTFNfVVNFUl9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21lbV9mbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21lbV9mbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZDY0MTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tZW1fZm4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9NRU1fRk5fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbWVtX2ZuLmhwcCAtIGEgZ2VuZXJhbGl6YXRpb24gb2Ygc3RkOjptZW1fZnVuW19yZWZdCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvbWVtX2ZuLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm4uaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9NRU1fRk5fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21lbW9yeV9vcmRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21lbW9yeV9vcmRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOGY4NTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tZW1vcnlfb3JkZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9NRU1PUllfT1JERVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01FTU9SWV9PUkRFUl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBuZG5ib29zdC9tZW1vcnlfb3JkZXIuaHBwCi0vLwotLy8gIERlZmluZXMgZW51bSBuZG5ib29zdDo6bWVtb3J5X29yZGVyIHBlciB0aGUgQysrMHggd29ya2luZyBkcmFmdAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDkgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8KLS8vIEVudW0gdmFsdWVzIGFyZSBjaG9zZW4gc28gdGhhdCBjb2RlIHRoYXQgbmVlZHMgdG8gaW5zZXJ0Ci0vLyBhIHRyYWlsaW5nIGZlbmNlIGZvciBhY3F1aXJlIHNlbWFudGljcyBjYW4gdXNlIGEgc2luZ2xlCi0vLyB0ZXN0IHN1Y2ggYXM6Ci0vLwotLy8gaWYoIG1vICYgbWVtb3J5X29yZGVyX2FjcXVpcmUgKSB7IC4uLmZlbmNlLi4uIH0KLS8vCi0vLyBGb3IgbGVhZGluZyBmZW5jZXMgb25lIGNhbiB1c2U6Ci0vLwotLy8gaWYoIG1vICYgbWVtb3J5X29yZGVyX3JlbGVhc2UgKSB7IC4uLmZlbmNlLi4uIH0KLS8vCi0vLyBBcmNoaXRlY3R1cmVzIHN1Y2ggYXMgQWxwaGEgdGhhdCBuZWVkIGEgZmVuY2Ugb24gY29uc3VtZQotLy8gY2FuIHVzZToKLS8vCi0vLyBpZiggbW8gJiAoIG1lbW9yeV9vcmRlcl9hY3F1aXJlIHwgbWVtb3J5X29yZGVyX2NvbnN1bWUgKSApIHsgLi4uZmVuY2UuLi4gfQotLy8KLQotZW51bSBtZW1vcnlfb3JkZXIKLXsKLSAgICBtZW1vcnlfb3JkZXJfcmVsYXhlZCA9IDAsCi0gICAgbWVtb3J5X29yZGVyX2FjcXVpcmUgPSAxLAotICAgIG1lbW9yeV9vcmRlcl9yZWxlYXNlID0gMiwKLSAgICBtZW1vcnlfb3JkZXJfYWNxX3JlbCA9IDMsIC8vIGFjcXVpcmUgfCByZWxlYXNlCi0gICAgbWVtb3J5X29yZGVyX3NlcV9jc3QgPSA3LCAvLyBhY3FfcmVsIHwgNAotICAgIG1lbW9yeV9vcmRlcl9jb25zdW1lID0gOAotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTUVNT1JZX09SREVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2FsZ29yaXRobS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvYWxnb3JpdGhtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZkMTkxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvYWxnb3JpdGhtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NSArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAxMi0yMDEyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21vdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vISBcZmlsZQotCi0jaWZuZGVmIE5ETkJPT1NUX01PVkVfQUxHT1JJVEhNX0hQUAotI2RlZmluZSBORE5CT09TVF9NT1ZFX0FMR09SSVRITV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL3V0aWxpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvYWxnb3JpdGhtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvbm9fZXhjZXB0aW9uc19zdXBwb3J0LmhwcD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gLy9jb3B5LCBjb3B5X2JhY2t3YXJkCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAvL3VuaW5pdGlhbGl6ZWRfY29weQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX1VTRV9TVEFOREFSRF9MSUJSQVJZX01PVkUpCi0KLSAgIC8vISA8Yj5FZmZlY3RzPC9iPjogTW92ZXMgZWxlbWVudHMgaW4gdGhlIHJhbmdlIFtmaXJzdCxsYXN0KSBpbnRvIHRoZSByYW5nZSBbcmVzdWx0LHJlc3VsdCArIChsYXN0IC0KLSAgIC8vISAgIGZpcnN0KSkgc3RhcnRpbmcgZnJvbSBmaXJzdCBhbmQgcHJvY2VlZGluZyB0byBsYXN0LiBGb3IgZWFjaCBub24tbmVnYXRpdmUgaW50ZWdlciBuIDwgKGxhc3QtZmlyc3QpLAotICAgLy8hICAgcGVyZm9ybXMgKihyZXN1bHQgKyBuKSA9IDo6bmRuYm9vc3Q6Om1vdmUgKCooZmlyc3QgKyBuKSkuCi0gICAvLyEKLSAgIC8vISA8Yj5FZmZlY3RzPC9iPjogcmVzdWx0ICsgKGxhc3QgLSBmaXJzdCkuCi0gICAvLyEKLSAgIC8vISA8Yj5SZXF1aXJlczwvYj46IHJlc3VsdCBzaGFsbCBub3QgYmUgaW4gdGhlIHJhbmdlIFtmaXJzdCxsYXN0KS4KLSAgIC8vIQotICAgLy8hIDxiPkNvbXBsZXhpdHk8L2I+OiBFeGFjdGx5IGxhc3QgLSBmaXJzdCBtb3ZlIGFzc2lnbm1lbnRzLgotICAgdGVtcGxhdGUgPHR5cGVuYW1lIEksIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLSAgICAgICAgICAgIHR5cGVuYW1lIE8+IC8vIE8gbW9kZWxzIE91dHB1dEl0ZXJhdG9yCi0gICBPIG1vdmUoSSBmLCBJIGwsIE8gcmVzdWx0KQotICAgewotICAgICAgd2hpbGUgKGYgIT0gbCkgewotICAgICAgICAgKnJlc3VsdCA9IDo6bmRuYm9vc3Q6Om1vdmUoKmYpOwotICAgICAgICAgKytmOyArK3Jlc3VsdDsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgLy8KLSAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfYmFja3dhcmQKLSAgIC8vCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgLy8hIDxiPkVmZmVjdHM8L2I+OiBNb3ZlcyBlbGVtZW50cyBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpIGludG8gdGhlIHJhbmdlCi0gICAvLyEgICBbcmVzdWx0IC0gKGxhc3QtZmlyc3QpLHJlc3VsdCkgc3RhcnRpbmcgZnJvbSBsYXN0IC0gMSBhbmQgcHJvY2VlZGluZyB0bwotICAgLy8hICAgZmlyc3QuIEZvciBlYWNoIHBvc2l0aXZlIGludGVnZXIgbiA8PSAobGFzdCAtIGZpcnN0KSwKLSAgIC8vISAgIHBlcmZvcm1zICoocmVzdWx0IC0gbikgPSA6Om5kbmJvb3N0Ojptb3ZlKCoobGFzdCAtIG4pKS4KLSAgIC8vIQotICAgLy8hIDxiPlJlcXVpcmVzPC9iPjogcmVzdWx0IHNoYWxsIG5vdCBiZSBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpLgotICAgLy8hCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IHJlc3VsdCAtIChsYXN0IC0gZmlyc3QpLgotICAgLy8hCi0gICAvLyEgPGI+Q29tcGxleGl0eTwvYj46IEV4YWN0bHkgbGFzdCAtIGZpcnN0IGFzc2lnbm1lbnRzLgotICAgdGVtcGxhdGUgPHR5cGVuYW1lIEksIC8vIEkgbW9kZWxzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcgotICAgdHlwZW5hbWUgTz4gLy8gTyBtb2RlbHMgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yCi0gICBPIG1vdmVfYmFja3dhcmQoSSBmLCBJIGwsIE8gcmVzdWx0KQotICAgewotICAgICAgd2hpbGUgKGYgIT0gbCkgewotICAgICAgICAgLS1sOyAtLXJlc3VsdDsKLSAgICAgICAgICpyZXN1bHQgPSA6Om5kbmJvb3N0Ojptb3ZlKCpsKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0KLSNlbHNlCi0KLSAgIHVzaW5nIDo6c3RkOjptb3ZlX2JhY2t3YXJkOwotCi0jZW5kaWYgICAvLyFkZWZpbmVkKE5ETkJPT1NUX01PVkVfVVNFX1NUQU5EQVJEX0xJQlJBUllfTU9WRSkKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pbml0aWFsaXplZF9tb3ZlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vISA8Yj5FZmZlY3RzPC9iPjoKLS8vISAgIFxjb2RlCi0vLyEgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytyZXN1bHQsICsrZmlyc3QpCi0vLyEgICAgICBuZXcgKHN0YXRpY19jYXN0PHZvaWQqPigmKnJlc3VsdCkpCi0vLyEgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZShuZG5ib29zdDo6bW92ZSgqZmlyc3QpKTsKLS8vISAgIFxlbmRjb2RlCi0vLyEKLS8vISA8Yj5SZXR1cm5zPC9iPjogcmVzdWx0Ci10ZW1wbGF0ZQotICAgPHR5cGVuYW1lIEksIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLSAgICB0eXBlbmFtZSBGPiAvLyBGIG1vZGVscyBGb3J3YXJkSXRlcmF0b3IKLUYgdW5pbml0aWFsaXplZF9tb3ZlKEkgZiwgSSBsLCBGIHIKLSAgIC8vLyBAY29uZAotLy8gICAsdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZjxoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJPjo6dmFsdWVfdHlwZT4gPjo6dHlwZSogPSAwCi0gICAvLy8gQGVuZGNvbmQKLSAgICkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8ST46OnZhbHVlX3R5cGUgaW5wdXRfdmFsdWVfdHlwZTsKLQotICAgRiBiYWNrID0gcjsKLSAgIE5ETkJPT1NUX1RSWXsKLSAgICAgIHdoaWxlIChmICE9IGwpIHsKLSAgICAgICAgIHZvaWQgKiBjb25zdCBhZGRyID0gc3RhdGljX2Nhc3Q8dm9pZCo+KDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjphZGRyZXNzb2YoKnIpKTsKLSAgICAgICAgIDo6bmV3KGFkZHIpIGlucHV0X3ZhbHVlX3R5cGUoOjpuZG5ib29zdDo6bW92ZSgqZikpOwotICAgICAgICAgKytmOyArK3I7Ci0gICAgICB9Ci0gICB9Ci0gICBORE5CT09TVF9DQVRDSCguLi4pewotCSAgIGZvciAoOyBiYWNrICE9IHI7ICsrYmFjayl7Ci0gICAgICAgICBiYWNrLT5+aW5wdXRfdmFsdWVfdHlwZSgpOwotICAgICAgfQotCSAgIE5ETkJPT1NUX1JFVEhST1c7Ci0gICB9Ci0gICBORE5CT09TVF9DQVRDSF9FTkQKLSAgIHJldHVybiByOwotfQotCi0vLy8gQGNvbmQKLS8qCi10ZW1wbGF0ZQotICAgPHR5cGVuYW1lIEksICAgLy8gSSBtb2RlbHMgSW5wdXRJdGVyYXRvcgotICAgIHR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1GIHVuaW5pdGlhbGl6ZWRfbW92ZShJIGYsIEkgbCwgRiByLAotICAgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRpc2FibGVfaWY8aGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8dHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8ST46OnZhbHVlX3R5cGU+ID46OnR5cGUqID0gMCkKLXsKLSAgIHJldHVybiBzdGQ6OnVuaW5pdGlhbGl6ZWRfY29weShmLCBsLCByKTsKLX0KLSovCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW5pdGlhbGl6ZWRfY29weV9vcl9tb3ZlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLXRlbXBsYXRlCi08dHlwZW5hbWUgSSwgICAvLyBJIG1vZGVscyBJbnB1dEl0ZXJhdG9yCi10eXBlbmFtZSBGPiAgIC8vIEYgbW9kZWxzIEZvcndhcmRJdGVyYXRvcgotaW5saW5lIEYgdW5pbml0aWFsaXplZF9tb3ZlX21vdmVfaXRlcmF0b3IoSSBmLCBJIGwsIEYgcgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICx0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmPCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx0eXBlbmFtZSBJOjp2YWx1ZV90eXBlPiA+Ojp0eXBlKiA9IDAKLSkKLXsKLSAgIHJldHVybiA6Om5kbmJvb3N0Ojp1bmluaXRpYWxpemVkX21vdmUoZiwgbCwgcik7Ci19Ci0vKgotdGVtcGxhdGUKLTx0eXBlbmFtZSBJLCAgIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLXR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1GIHVuaW5pdGlhbGl6ZWRfbW92ZV9tb3ZlX2l0ZXJhdG9yKEkgZiwgSSBsLCBGIHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkaXNhYmxlX2lmPCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx0eXBlbmFtZSBJOjp2YWx1ZV90eXBlPiA+Ojp0eXBlKiA9IDApCi17Ci0gICByZXR1cm4gc3RkOjp1bmluaXRpYWxpemVkX2NvcHkoZi5iYXNlKCksIGwuYmFzZSgpLCByKTsKLX0KLSovCi19ICAvL25hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLXRlbXBsYXRlCi08dHlwZW5hbWUgSSwgICAvLyBJIG1vZGVscyBJbnB1dEl0ZXJhdG9yCi10eXBlbmFtZSBGPiAgIC8vIEYgbW9kZWxzIEZvcndhcmRJdGVyYXRvcgotaW5saW5lIEYgdW5pbml0aWFsaXplZF9jb3B5X29yX21vdmUoSSBmLCBJIGwsIEYgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZjwgbW92ZV9kZXRhaWw6OmlzX21vdmVfaXRlcmF0b3I8ST4gPjo6dHlwZSogPSAwKQotewotICAgcmV0dXJuIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjp1bmluaXRpYWxpemVkX21vdmVfbW92ZV9pdGVyYXRvcihmLCBsLCByKTsKLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weV9vcl9tb3ZlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLXRlbXBsYXRlCi08dHlwZW5hbWUgSSwgICAvLyBJIG1vZGVscyBJbnB1dEl0ZXJhdG9yCi10eXBlbmFtZSBGPiAgIC8vIEYgbW9kZWxzIEZvcndhcmRJdGVyYXRvcgotaW5saW5lIEYgbW92ZV9tb3ZlX2l0ZXJhdG9yKEkgZiwgSSBsLCBGIHIKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZjwgaGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8dHlwZW5hbWUgSTo6dmFsdWVfdHlwZT4gPjo6dHlwZSogPSAwCi0pCi17Ci0gICByZXR1cm4gOjpuZG5ib29zdDo6bW92ZShmLCBsLCByKTsKLX0KLS8qCi10ZW1wbGF0ZQotPHR5cGVuYW1lIEksICAgLy8gSSBtb2RlbHMgSW5wdXRJdGVyYXRvcgotdHlwZW5hbWUgRj4gICAvLyBGIG1vZGVscyBGb3J3YXJkSXRlcmF0b3IKLUYgbW92ZV9tb3ZlX2l0ZXJhdG9yKEkgZiwgSSBsLCBGIHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkaXNhYmxlX2lmPCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx0eXBlbmFtZSBJOjp2YWx1ZV90eXBlPiA+Ojp0eXBlKiA9IDApCi17Ci0gICByZXR1cm4gc3RkOjpjb3B5KGYuYmFzZSgpLCBsLmJhc2UoKSwgcik7Ci19Ci0qLwotCi19ICAvL25hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLXRlbXBsYXRlCi08dHlwZW5hbWUgSSwgICAvLyBJIG1vZGVscyBJbnB1dEl0ZXJhdG9yCi10eXBlbmFtZSBGPiAgIC8vIEYgbW9kZWxzIEZvcndhcmRJdGVyYXRvcgotaW5saW5lIEYgY29weV9vcl9tb3ZlKEkgZiwgSSBsLCBGIHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjplbmFibGVfaWY8IG1vdmVfZGV0YWlsOjppc19tb3ZlX2l0ZXJhdG9yPEk+ID46OnR5cGUqID0gMCkKLXsKLSAgIHJldHVybiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6bW92ZV9tb3ZlX2l0ZXJhdG9yKGYsIGwsIHIpOwotfQotCi0vLy8gQGVuZGNvbmQKLQotLy8hIDxiPkVmZmVjdHM8L2I+OgotLy8hICAgXGNvZGUKLS8vISAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK3Jlc3VsdCwgKytmaXJzdCkKLS8vISAgICAgIG5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KCYqcmVzdWx0KSkKLS8vISAgICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlKCpmaXJzdCk7Ci0vLyEgICBcZW5kY29kZQotLy8hCi0vLyEgPGI+UmV0dXJuczwvYj46IHJlc3VsdAotLy8hCi0vLyEgPGI+Tm90ZTwvYj46IFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYmVjYXVzZQotLy8hICAgPGk+c3RkOjp1bmluaXRpYWxpemVkX2NvcHk8L2k+IGZyb20gc29tZSBTVEwgaW1wbGVtZW50YXRpb25zCi0vLyEgICAgaXMgbm90IGNvbXBhdGlibGUgd2l0aCA8aT5tb3ZlX2l0ZXJhdG9yPC9pPgotdGVtcGxhdGUKLTx0eXBlbmFtZSBJLCAgIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLXR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1pbmxpbmUgRiB1bmluaXRpYWxpemVkX2NvcHlfb3JfbW92ZShJIGYsIEkgbCwgRiByCi0gICAvLy8gQGNvbmQKLSAgICx0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGlzYWJsZV9pZjwgbW92ZV9kZXRhaWw6OmlzX21vdmVfaXRlcmF0b3I8ST4gPjo6dHlwZSogPSAwCi0gICAvLy8gQGVuZGNvbmQKLSAgICkKLXsKLSAgIHJldHVybiBzdGQ6OnVuaW5pdGlhbGl6ZWRfY29weShmLCBsLCByKTsKLX0KLQotLy8hIDxiPkVmZmVjdHM8L2I+OgotLy8hICAgXGNvZGUKLS8vISAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK3Jlc3VsdCwgKytmaXJzdCkKLS8vISAgICAgICpyZXN1bHQgPSAqZmlyc3Q7Ci0vLyEgICBcZW5kY29kZQotLy8hCi0vLyEgPGI+UmV0dXJuczwvYj46IHJlc3VsdAotLy8hCi0vLyEgPGI+Tm90ZTwvYj46IFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYmVjYXVzZQotLy8hICAgPGk+c3RkOjp1bmluaXRpYWxpemVkX2NvcHk8L2k+IGZyb20gc29tZSBTVEwgaW1wbGVtZW50YXRpb25zCi0vLyEgICAgaXMgbm90IGNvbXBhdGlibGUgd2l0aCA8aT5tb3ZlX2l0ZXJhdG9yPC9pPgotdGVtcGxhdGUKLTx0eXBlbmFtZSBJLCAgIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLXR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1pbmxpbmUgRiBjb3B5X29yX21vdmUoSSBmLCBJIGwsIEYgcgotICAgLy8vIEBjb25kCi0gICAsdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRpc2FibGVfaWY8IG1vdmVfZGV0YWlsOjppc19tb3ZlX2l0ZXJhdG9yPEk+ID46OnR5cGUqID0gMAotICAgLy8vIEBlbmRjb25kCi0gICApCi17Ci0gICByZXR1cm4gc3RkOjpjb3B5KGYsIGwsIHIpOwotfQotCi19ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vI2lmbmRlZiBORE5CT09TVF9NT1ZFX01PVkVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvY29yZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvY29yZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMzcxNzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2NvcmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMyICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDEyLTIwMTIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbW92ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8hIFxmaWxlIGNvcmUuaHBwCi0vLyEgVGhpcyBoZWFkZXIgaW1wbGVtZW50cyBtYWNyb3MgdG8gZGVmaW5lIG1vdmFibGUgY2xhc3NlcyBhbmQKLS8vISBtb3ZlLWF3YXJlIGZ1bmN0aW9ucwotCi0jaWZuZGVmIE5ETkJPT1NUX01PVkVfQ09SRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTU9WRV9DT1JFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0gICAjZGVmaW5lIE5ETkJPT1NUX01PVkVfSU1QTF9OT19DT1BZX0NUT1JfT1JfQVNTSUdOKFRZUEUpIFwKLSAgICAgIHByaXZhdGU6XAotICAgICAgVFlQRShUWVBFICYpO1wKLSAgICAgIFRZUEUmIG9wZXJhdG9yPShUWVBFICYpO1wKLSAgIC8vCi0jZWxzZQotICAgI2RlZmluZSBORE5CT09TVF9NT1ZFX0lNUExfTk9fQ09QWV9DVE9SX09SX0FTU0lHTihUWVBFKSBcCi0gICAgICBwdWJsaWM6XAotICAgICAgVFlQRShUWVBFIGNvbnN0ICYpID0gZGVsZXRlO1wKLSAgICAgIFRZUEUmIG9wZXJhdG9yPShUWVBFIGNvbnN0ICYpID0gZGVsZXRlO1wKLSAgICAgIHByaXZhdGU6XAotICAgLy8KLSNlbmRpZiAgIC8vTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotCi0gICAjaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvbWV0YV91dGlscy5ocHA+Ci0KLSAgIC8vTW92ZSBlbXVsYXRpb24gcnYgYnJlYWtzIHN0YW5kYXJkIGFsaWFzaW5nIHJ1bGVzIHNvIGFkZCB3b3JrYXJvdW5kcyBmb3Igc29tZSBjb21waWxlcnMKLSAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLSAgICAgICNkZWZpbmUgTkROQk9PU1RfTU9WRV9BVFRSSUJVVEVfTUFZX0FMSUFTIF9fYXR0cmlidXRlX18oKF9fbWF5X2FsaWFzX18pKQotICAgI2Vsc2UKLSAgICAgICNkZWZpbmUgTkROQk9PU1RfTU9WRV9BVFRSSUJVVEVfTUFZX0FMSUFTCi0gICAjZW5kaWYKLQotICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAvLwotICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ2Ci0gICAvLwotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGNsYXNzIHJ2Ci0gICAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aWZfYwotICAgICAgICAgPCA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aXNfY2xhc3Nfb3JfdW5pb248VD46OnZhbHVlCi0gICAgICAgICAsIFQKLSAgICAgICAgICwgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVtcHR5Ci0gICAgICAgICA+Ojp0eXBlCi0gICB7Ci0gICAgICBydigpOwotICAgICAgfnJ2KCk7Ci0gICAgICBydihydiBjb25zdCYpOwotICAgICAgdm9pZCBvcGVyYXRvcj0ocnYgY29uc3QmKTsKLSAgIH0gTkROQk9PU1RfTU9WRV9BVFRSSUJVVEVfTUFZX0FMSUFTOwotCi0KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgLy8KLSAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfZGV0YWlsOjppc19ydgotICAgLy8KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICBuYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCBpc19ydgotICAgICAgOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+Ci0gICB7fTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgaXNfcnY8IHJ2PFQ+ID4KLSAgICAgIDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+Ci0gICB7fTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgaXNfcnY8IGNvbnN0IHJ2PFQ+ID4KLSAgICAgIDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+Ci0gICB7fTsKLQotICAgfSAgLy9uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgIC8vCi0gICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZAotICAgLy8KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgIHN0cnVjdCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZAotICAgICAgOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aXNfY29udmVydGlibGU8IFQsIDo6bmRuYm9vc3Q6OnJ2PFQ+JiA+Ci0gICB7fTsKLQotICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgIHN0cnVjdCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDxUJj4KLSAgICAgIDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIGZhbHNlPgotICAge307Ci0KLSAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgaGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8IDo6bmRuYm9vc3Q6OnJ2PFQ+ID4KLSAgICAgIDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIGZhbHNlPgotICAge307Ci0KLSAgIH0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgI2RlZmluZSBORE5CT09TVF9SVl9SRUYoVFlQRSlcCi0gICAgICA6Om5kbmJvb3N0OjpydjwgVFlQRSA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl8yX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMilcCi0gICAgICA6Om5kbmJvb3N0OjpydjwgVFlQRTxBUkcxLCBBUkcyPiA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl8zX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMiwgQVJHMylcCi0gICAgICA6Om5kbmJvb3N0OjpydjwgVFlQRTxBUkcxLCBBUkcyLCBBUkczPiA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl9CRUdcCi0gICAgICA6Om5kbmJvb3N0OjpydjwgICBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl9FTkRcCi0gICAgICA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0ZXRF9SRUYoVFlQRSlcCi0gICAgICBjb25zdCBUWVBFICYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUYoVFlQRSlcCi0gICAgICBjb25zdCA6Om5kbmJvb3N0OjpydjwgVFlQRSA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl9CRUcgXAotICAgICAgY29uc3QgOjpuZG5ib29zdDo6cnY8ICBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl9FTkQgXAotICAgICAgPiYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUZfMl9URU1QTF9BUkdTKFRZUEUsIEFSRzEsIEFSRzIpXAotICAgICAgY29uc3QgOjpuZG5ib29zdDo6cnY8IFRZUEU8QVJHMSwgQVJHMj4gPiYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUZfM19URU1QTF9BUkdTKFRZUEUsIEFSRzEsIEFSRzIsIEFSRzMpXAotICAgICAgY29uc3QgOjpuZG5ib29zdDo6cnY8IFRZUEU8QVJHMSwgQVJHMiwgQVJHMz4gPiYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DQVRDSF9DT05TVF9STFZBTFVFKFRZUEUpXAotICAgICAgY29uc3QgOjpuZG5ib29zdDo6cnY8IFRZUEUgPiYgXAotICAgLy8KLQotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAvLwotICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfTU9WQUJMRV9CVVRfTk9UX0NPUFlBQkxFCi0gICAvLwotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAjZGVmaW5lIE5ETkJPT1NUX01PVkFCTEVfQlVUX05PVF9DT1BZQUJMRShUWVBFKVwKLSAgICAgIE5ETkJPT1NUX01PVkVfSU1QTF9OT19DT1BZX0NUT1JfT1JfQVNTSUdOKFRZUEUpXAotICAgICAgcHVibGljOlwKLSAgICAgIG9wZXJhdG9yIDo6bmRuYm9vc3Q6OnJ2PFRZUEU+JigpIFwKLSAgICAgIHsgIHJldHVybiAqc3RhdGljX2Nhc3Q8IDo6bmRuYm9vc3Q6OnJ2PFRZUEU+KiA+KHRoaXMpOyAgfVwKLSAgICAgIG9wZXJhdG9yIGNvbnN0IDo6bmRuYm9vc3Q6OnJ2PFRZUEU+JigpIGNvbnN0IFwKLSAgICAgIHsgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgOjpuZG5ib29zdDo6cnY8VFlQRT4qID4odGhpcyk7ICB9XAotICAgICAgcHJpdmF0ZTpcCi0gICAvLwotCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgIC8vCi0gICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9DT1BZQUJMRV9BTkRfTU9WQUJMRQotICAgLy8KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFKFRZUEUpXAotICAgICAgcHVibGljOlwKLSAgICAgIFRZUEUmIG9wZXJhdG9yPShUWVBFICZ0KVwKLSAgICAgIHsgIHRoaXMtPm9wZXJhdG9yPShzdGF0aWNfY2FzdDxjb25zdCA6Om5kbmJvb3N0OjpydjxUWVBFPiAmPihjb25zdF9jYXN0PGNvbnN0IFRZUEUgJj4odCkpKTsgcmV0dXJuICp0aGlzO31cCi0gICAgICBwdWJsaWM6XAotICAgICAgb3BlcmF0b3IgOjpuZG5ib29zdDo6cnY8VFlQRT4mKCkgXAotICAgICAgeyAgcmV0dXJuICpzdGF0aWNfY2FzdDwgOjpuZG5ib29zdDo6cnY8VFlQRT4qID4odGhpcyk7ICB9XAotICAgICAgb3BlcmF0b3IgY29uc3QgOjpuZG5ib29zdDo6cnY8VFlQRT4mKCkgY29uc3QgXAotICAgICAgeyAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCA6Om5kbmJvb3N0OjpydjxUWVBFPiogPih0aGlzKTsgIH1cCi0gICAgICBwcml2YXRlOlwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEVfQUxUKFRZUEUpXAotICAgICAgcHVibGljOlwKLSAgICAgIG9wZXJhdG9yIDo6bmRuYm9vc3Q6OnJ2PFRZUEU+JigpIFwKLSAgICAgIHsgIHJldHVybiAqc3RhdGljX2Nhc3Q8IDo6bmRuYm9vc3Q6OnJ2PFRZUEU+KiA+KHRoaXMpOyAgfVwKLSAgICAgIG9wZXJhdG9yIGNvbnN0IDo6bmRuYm9vc3Q6OnJ2PFRZUEU+JigpIGNvbnN0IFwKLSAgICAgIHsgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgOjpuZG5ib29zdDo6cnY8VFlQRT4qID4odGhpcyk7ICB9XAotICAgICAgcHJpdmF0ZTpcCi0gICAvLwotCi0jZWxzZSAgICAvL05ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0KLSAgIC8vQ29tcGlsZXIgd29ya2Fyb3VuZCBkZXRlY3Rpb24KLSAgICNpZiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLSAgICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fIDwgNSkgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgLy9QcmUtc3RhbmRhcmQgcnZhbHVlIGJpbmRpbmcgcnVsZXMKLSAgICAgICAgICNkZWZpbmUgTkROQk9PU1RfTU9WRV9PTERfUlZBTFVFX1JFRl9CSU5ESU5HX1JVTEVTCi0gICAgICAjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPT0gMTYwMCkKLSAgICAgICAgIC8vU3RhbmRhcmQgcnZhbHVlIGJpbmRpbmcgcnVsZXMgYnV0IHdpdGggc29tZSBidWdzCi0gICAgICAgICAjZGVmaW5lIE5ETkJPT1NUX01PVkVfTVNWQ18xMF9NRU1CRVJfUlZBTFVFX1JFRl9CVUcKLSAgICAgICAgIC8vVXNlIHN0YW5kYXJkIGxpYnJhcnkgZm9yIE1TVkMgdG8gYXZvaWQgbmFtZXNwYWNlIGlzc3VlcyBhcwotICAgICAgICAgLy9zb21lIG1vdmUgY2FsbHMgaW4gdGhlIFNUTCBhcmUgbm90IGZ1bGx5IHF1YWxpZmllZC4KLSAgICAgICAgIC8vI2RlZmluZSBORE5CT09TVF9NT1ZFX1VTRV9TVEFOREFSRF9MSUJSQVJZX01PVkUKLSAgICAgICNlbmRpZgotICAgI2VuZGlmCi0KLSAgIC8vISBUaGlzIG1hY3JvIG1hcmtzIGEgdHlwZSBhcyBtb3ZhYmxlIGJ1dCBub3QgY29weWFibGUsIGRpc2FibGluZyBjb3B5IGNvbnN0cnVjdGlvbgotICAgLy8hIGFuZCBhc3NpZ25tZW50LiBUaGUgdXNlciB3aWxsIG5lZWQgdG8gd3JpdGUgYSBtb3ZlIGNvbnN0cnVjdG9yL2Fzc2lnbm1lbnQgYXMgZXhwbGFpbmVkCi0gICAvLyEgaW4gdGhlIGRvY3VtZW50YXRpb24gdG8gZnVsbHkgd3JpdGUgYSBtb3ZhYmxlIGJ1dCBub3QgY29weWFibGUgY2xhc3MuCi0gICAjZGVmaW5lIE5ETkJPT1NUX01PVkFCTEVfQlVUX05PVF9DT1BZQUJMRShUWVBFKVwKLSAgICAgIE5ETkJPT1NUX01PVkVfSU1QTF9OT19DT1BZX0NUT1JfT1JfQVNTSUdOKFRZUEUpXAotICAgICAgcHVibGljOlwKLSAgICAgIHR5cGVkZWYgaW50IGJvb3N0X21vdmVfZW11bGF0aW9uX3Q7XAotICAgLy8KLQotICAgLy8hIFRoaXMgbWFjcm8gbWFya3MgYSB0eXBlIGFzIGNvcHlhYmxlIGFuZCBtb3ZhYmxlLgotICAgLy8hIFRoZSB1c2VyIHdpbGwgbmVlZCB0byB3cml0ZSBhIG1vdmUgY29uc3RydWN0b3IvYXNzaWdubWVudCBhbmQgYSBjb3B5IGFzc2lnbm1lbnQKLSAgIC8vISBhcyBleHBsYWluZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gdG8gZnVsbHkgd3JpdGUgYSBjb3B5YWJsZSBhbmQgbW92YWJsZSBjbGFzcy4KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUoVFlQRSlcCi0gICAvLwotCi0gICAjaWYgIWRlZmluZWQoTkROQk9PU1RfTU9WRV9ET1hZR0VOX0lOVk9LRUQpCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFX0FMVChUWVBFKVwKLSAgIC8vCi0gICAjZW5kaWYgICAvLyNpZiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLQotICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgLy8hVGhpcyB0cmFpdCB5aWVsZHMgdG8gYSBjb21waWxlLXRpbWUgdHJ1ZSBib29sZWFuIGlmIFQgd2FzIG1hcmtlZCBhcwotICAgLy8hTkROQk9PU1RfTU9WQUJMRV9CVVRfTk9UX0NPUFlBQkxFIG9yIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFIGFuZAotICAgLy8hcnZhbHVlIHJlZmVyZW5jZXMgYXJlIG5vdCBhdmFpbGFibGUgb24gdGhlIHBsYXRmb3JtLiBGYWxzZSBvdGhlcndpc2UuCi0gICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgc3RydWN0IGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkCi0gICB7Ci0gICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOwotICAgfTsKLQotICAgfSAgLy9uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSAgIC8vIVRoaXMgbWFjcm8gaXMgdXNlZCB0byBhY2hpZXZlIHBvcnRhYmxlIHN5bnRheCBpbiBtb3ZlCi0gICAvLyFjb25zdHJ1Y3RvcnMgYW5kIGFzc2lnbm1lbnRzIGZvciBjbGFzc2VzIG1hcmtlZCBhcwotICAgLy8hTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUgb3IgTkROQk9PU1RfTU9WQUJMRV9CVVRfTk9UX0NPUFlBQkxFCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRihUWVBFKVwKLSAgICAgIFRZUEUgJiYgXAotICAgLy8KLQotICAgLy8hVGhpcyBtYWNybyBpcyB1c2VkIHRvIGFjaGlldmUgcG9ydGFibGUgc3ludGF4IGluIG1vdmUKLSAgIC8vIWNvbnN0cnVjdG9ycyBhbmQgYXNzaWdubWVudHMgZm9yIHRlbXBsYXRlIGNsYXNzZXMgbWFya2VkIGFzCi0gICAvLyFORE5CT09TVF9DT1BZQUJMRV9BTkRfTU9WQUJMRSBvciBORE5CT09TVF9NT1ZBQkxFX0JVVF9OT1RfQ09QWUFCTEUuCi0gICAvLyFBcyBtYWNyb3MgaGF2ZSBwcm9ibGVtcyB3aXRoIGNvbW1hLXNlcGFyYXRkIHRlbXBsYXRlIGFyZ3VtZW50cywKLSAgIC8vIXRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBtdXN0IGJlIHByZWNlZGVkIHdpdGggTkROQk9PU1RfUlZfUkVGX1NUQVJUCi0gICAvLyFhbmQgZW5kZWQgd2l0aCBORE5CT09TVF9SVl9SRUZfRU5ECi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl9CRUdcCi0gICAgICAgICBcCi0gICAvLwotCi0gICAvLyFUaGlzIG1hY3JvIGlzIHVzZWQgdG8gYWNoaWV2ZSBwb3J0YWJsZSBzeW50YXggaW4gbW92ZQotICAgLy8hY29uc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50cyBmb3IgdGVtcGxhdGUgY2xhc3NlcyBtYXJrZWQgYXMKLSAgIC8vIU5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFIG9yIE5ETkJPT1NUX01PVkFCTEVfQlVUX05PVF9DT1BZQUJMRS4KLSAgIC8vIUFzIG1hY3JvcyBoYXZlIHByb2JsZW1zIHdpdGggY29tbWEtc2VwYXJhdGQgdGVtcGxhdGUgYXJndW1lbnRzLAotICAgLy8hdGhlIHRlbXBsYXRlIGFyZ3VtZW50IG11c3QgYmUgcHJlY2VkZWQgd2l0aCBORE5CT09TVF9SVl9SRUZfU1RBUlQKLSAgIC8vIWFuZCBlbmRlZCB3aXRoIE5ETkJPT1NUX1JWX1JFRl9FTkQKLSAgICNkZWZpbmUgTkROQk9PU1RfUlZfUkVGX0VORFwKLSAgICAgICYmIFwKLQotICAgLy8hVGhpcyBtYWNybyBpcyB1c2VkIHRvIGFjaGlldmUgcG9ydGFibGUgc3ludGF4IGluIGNvcHkKLSAgIC8vIWFzc2lnbm1lbnQgZm9yIGNsYXNzZXMgbWFya2VkIGFzIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFLgotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUYoVFlQRSlcCi0gICAgICBjb25zdCBUWVBFICYgXAotICAgLy8KLQotICAgLy8hIFRoaXMgbWFjcm8gaXMgdXNlZCB0byBpbXBsZW1lbnQgcG9ydGFibGUgcGVyZmVjdCBmb3J3YXJkaW5nCi0gICAvLyEgYXMgZXhwbGFpbmVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgotICAgI2RlZmluZSBORE5CT09TVF9GV0RfUkVGKFRZUEUpXAotICAgICAgVFlQRSAmJiBcCi0gICAvLwotCi0gICAjaWYgIWRlZmluZWQoTkROQk9PU1RfTU9WRV9ET1hZR0VOX0lOVk9LRUQpCi0gICAvLy8gQGNvbmQKLQotICAgI2RlZmluZSBORE5CT09TVF9SVl9SRUZfMl9URU1QTF9BUkdTKFRZUEUsIEFSRzEsIEFSRzIpXAotICAgICAgVFlQRTxBUkcxLCBBUkcyPiAmJiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl8zX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMiwgQVJHMylcCi0gICAgICBUWVBFPEFSRzEsIEFSRzIsIEFSRzM+ICYmIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWV9BU1NJR05fUkVGX0JFRyBcCi0gICAgICBjb25zdCBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl9FTkQgXAotICAgICAgJiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl8yX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMilcCi0gICAgICBjb25zdCBUWVBFPEFSRzEsIEFSRzI+ICYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUZfM19URU1QTF9BUkdTKFRZUEUsIEFSRzEsIEFSRzIsIEFSRzMpXAotICAgICAgY29uc3QgVFlQRTxBUkcxLCBBUkcyLCBBUkczPiYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DQVRDSF9DT05TVF9STFZBTFVFKFRZUEUpXAotICAgICAgY29uc3QgVFlQRSAmIFwKLSAgIC8vCi0KLSAgIC8vLyBAZW5kY29uZAotCi0gICAjZW5kaWYgICAvLyNpZiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLQotI2VuZGlmICAgLy9ORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSNlbmRpZiAvLyNpZm5kZWYgTkROQk9PU1RfTU9WRV9DT1JFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODk4ZGQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDEyLTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tb3ZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0gICAjaWZuZGVmIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQotICAgICAgI2RlZmluZSAgTkROQk9PU1RfTU9WRV9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQotICAgICAgI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUKLSAgICNlbmRpZgotICAgI2lmbmRlZiBfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUwotICAgICAgI2RlZmluZSAgTkROQk9PU1RfTU9WRV9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTCi0gICAgICAjZGVmaW5lIF9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTCi0gICAjZW5kaWYKLSAgICNwcmFnbWEgd2FybmluZyAocHVzaCkKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ5OTYpIC8vICJmdW5jdGlvbiI6IHdhcyBkZWNsYXJlZCBkZXByZWNhdGVkCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmJhNzMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAxMi0yMDEyLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29udGFpbmVyIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotI2lmIGRlZmluZWQgTkROQk9PU1RfTVNWQwotICAgI3ByYWdtYSB3YXJuaW5nIChwb3ApCi0gICAjaWZkZWYgTkROQk9PU1RfTU9WRV9ERVRBSUxfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUKLSAgICAgICN1bmRlZiBORE5CT09TVF9NT1ZFX0RFVEFJTF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQotICAgICAgI3VuZGVmIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQotICAgI2VuZGlmCi0gICAjaWZuZGVmIE5ETkJPT1NUX01PVkVfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUwotICAgICAgI3VuZGVmICBORE5CT09TVF9NT1ZFX1NDTF9TRUNVUkVfTk9fV0FSTklOR1MKLSAgICAgICN1bmRlZiBfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUwotICAgI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvbWV0YV91dGlscy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvZGV0YWlsL21ldGFfdXRpbHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODIzYzIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvbWV0YV91dGlscy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMTItMjAxMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tb3ZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgXGZpbGUKLQotI2lmbmRlZiBORE5CT09TVF9NT1ZFX0RFVEFJTF9NRVRBX1VUSUxTX0hQUAotI2RlZmluZSBORE5CT09TVF9NT1ZFX0RFVEFJTF9NRVRBX1VUSUxTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLQotLy9TbWFsbCBtZXRhLXR5cGV0cmFpdHMgdG8gc3VwcG9ydCBtb3ZlCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi0vL2lmXwotdGVtcGxhdGU8Ym9vbCBDLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgaWZfYwotewotICAgdHlwZWRlZiBUMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IGlmX2M8ZmFsc2UsVDEsVDI+Ci17Ci0gICB0eXBlZGVmIFQyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotc3RydWN0IGlmXwotewotICAgdHlwZWRlZiB0eXBlbmFtZSBpZl9jPDAgIT0gVDE6OnZhbHVlLCBUMiwgVDM+Ojp0eXBlIHR5cGU7Ci19OwotCi0vL2VuYWJsZV9pZl8KLXRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSB2b2lkPgotc3RydWN0IGVuYWJsZV9pZl9jCi17Ci0gICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGVuYWJsZV9pZl9jPGZhbHNlLCBUPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSB2b2lkPgotc3RydWN0IGVuYWJsZV9pZiA6IHB1YmxpYyBlbmFibGVfaWZfYzxDb25kOjp2YWx1ZSwgVD4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBDb25kLCBjbGFzcyBUID0gdm9pZD4KLXN0cnVjdCBkaXNhYmxlX2lmIDogcHVibGljIGVuYWJsZV9pZl9jPCFDb25kOjp2YWx1ZSwgVD4ge307Ci0KLS8vaW50ZWdyYWxfY29uc3RhbnQKLXRlbXBsYXRlPGNsYXNzIFQsIFQgdj4KLXN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudAotewotICAgc3RhdGljIGNvbnN0IFQgdmFsdWUgPSB2OwotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PFQsIHY+IHR5cGU7Ci19OwotCi0vL2lkZW50aXR5Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpZGVudGl0eQotewotICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0vL2lzX2NvbnZlcnRpYmxlCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLWNsYXNzIGlzX2NvbnZlcnRpYmxlCi17Ci0gICB0eXBlZGVmIGNoYXIgdHJ1ZV90OwotICAgY2xhc3MgZmFsc2VfdCB7IGNoYXIgZHVtbXlbMl07IH07Ci0gICBzdGF0aWMgdHJ1ZV90IGRpc3BhdGNoKFUpOwotICAgc3RhdGljIGZhbHNlX3QgZGlzcGF0Y2goLi4uKTsKLSAgIHN0YXRpYyBUICZ0cmlnZ2VyKCk7Ci0gICBwdWJsaWM6Ci0gICBlbnVtIHsgdmFsdWUgPSBzaXplb2YoZGlzcGF0Y2godHJpZ2dlcigpKSkgPT0gc2l6ZW9mKHRydWVfdCkgfTsKLX07Ci0KLS8vYW5kXyBub3RfCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29uZGl0aW9uMSwgdHlwZW5hbWUgQ29uZGl0aW9uMiwgdHlwZW5hbWUgQ29uZGl0aW9uMyA9IGludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+ID4KLXN0cnVjdCBhbmRfCi0gICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBDb25kaXRpb24xOjp2YWx1ZSAmJiBDb25kaXRpb24yOjp2YWx1ZSAmJiBDb25kaXRpb24zOjp2YWx1ZT4KLXt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQm9vbGVhbj4KLXN0cnVjdCBub3RfCi0gICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCAhQm9vbGVhbjo6dmFsdWU+Ci17fTsKLQotLy9pc19sdmFsdWVfcmVmZXJlbmNlCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGlzX2x2YWx1ZV9yZWZlcmVuY2UKLSAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIGZhbHNlPgote307Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfbHZhbHVlX3JlZmVyZW5jZTxUJj4KLSAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+Ci17fTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBpc19jbGFzc19vcl91bmlvbgotewotICAgc3RydWN0IHR3b2NoYXIgeyBjaGFyIF9bMl07IH07Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KLSAgIHN0YXRpYyBjaGFyIGlzX2NsYXNzX29yX3VuaW9uX3Rlc3Rlcih2b2lkKFU6OiopKHZvaWQpKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgc3RhdGljIHR3b2NoYXIgaXNfY2xhc3Nfb3JfdW5pb25fdGVzdGVyKC4uLik7Ci0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihpc19jbGFzc19vcl91bmlvbl90ZXN0ZXI8VD4oMCkpID09IHNpemVvZihjaGFyKTsKLX07Ci0KLXN0cnVjdCBlbXB0eXt9OwotCi0vL2FkZHJlc3NvZgotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZHJfaW1wbF9yZWYKLXsKLSAgIFQgJiB2XzsKLSAgIGlubGluZSBhZGRyX2ltcGxfcmVmKCBUICYgdiApOiB2XyggdiApIHt9Ci0gICBpbmxpbmUgb3BlcmF0b3IgVCYgKCkgY29uc3QgeyByZXR1cm4gdl87IH0KLQotICAgcHJpdmF0ZToKLSAgIGFkZHJfaW1wbF9yZWYgJiBvcGVyYXRvcj0oY29uc3QgYWRkcl9pbXBsX3JlZiAmKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRyZXNzb2ZfaW1wbAotewotICAgc3RhdGljIGlubGluZSBUICogZiggVCAmIHYsIGxvbmcgKQotICAgewotICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KAotICAgICAgICAgJmNvbnN0X2Nhc3Q8Y2hhciY+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9sYXRpbGUgY2hhciAmPih2KSkpOwotICAgfQotCi0gICBzdGF0aWMgaW5saW5lIFQgKiBmKCBUICogdiwgaW50ICkKLSAgIHsgIHJldHVybiB2OyAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBUICogYWRkcmVzc29mKCBUICYgdiApCi17Ci0gICByZXR1cm4gOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmFkZHJlc3NvZl9pbXBsPFQ+OjpmCi0gICAgICAoIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjphZGRyX2ltcGxfcmVmPFQ+KCB2ICksIDAgKTsKLX0KLQotfSAgLy9uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotfSAgLy9uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSNlbmRpZiAvLyNpZm5kZWYgTkROQk9PU1RfTU9WRV9ERVRBSUxfTUVUQV9VVElMU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWQxYTg0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTggKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMTItMjAxMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tb3ZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgXGZpbGUKLQotI2lmbmRlZiBORE5CT09TVF9NT1ZFX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9NT1ZFX0lURVJBVE9SX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL3V0aWxpdHkuaHBwPgotI2luY2x1ZGUgPGl0ZXJhdG9yPiAgLy9zdGQ6Oml0ZXJhdG9yCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfaXRlcmF0b3IKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8hIENsYXNzIHRlbXBsYXRlIG1vdmVfaXRlcmF0b3IgaXMgYW4gaXRlcmF0b3IgYWRhcHRvciB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yCi0vLyEgYXMgdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IgZXhjZXB0IHRoYXQgaXRzIGRlcmVmZXJlbmNlIG9wZXJhdG9yIGltcGxpY2l0bHkKLS8vISBjb252ZXJ0cyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IncyBkZXJlZmVyZW5jZSBvcGVyYXRvcgotLy8hIHRvIGFuIHJ2YWx1ZSByZWZlcmVuY2UuIFNvbWUgZ2VuZXJpYyBhbGdvcml0aG1zIGNhbiBiZSBjYWxsZWQgd2l0aCBtb3ZlCi0vLyEgaXRlcmF0b3JzIHRvIHJlcGxhY2UgY29weWluZyB3aXRoIG1vdmluZy4KLXRlbXBsYXRlIDxjbGFzcyBJdD4KLWNsYXNzIG1vdmVfaXRlcmF0b3IKLXsKLSAgIHB1YmxpYzoKLSAgIHR5cGVkZWYgSXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPGl0ZXJhdG9yX3R5cGU+Ojp2YWx1ZV90eXBlICAgICAgICB2YWx1ZV90eXBlOwotICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSB8fCBkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotICAgdHlwZWRlZiB2YWx1ZV90eXBlICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgI2Vsc2UKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmlmXwotICAgICAgPCA6Om5kbmJvb3N0OjpoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx2YWx1ZV90eXBlPgotICAgICAgLCA6Om5kbmJvb3N0Ojpydjx2YWx1ZV90eXBlPiYKLSAgICAgICwgdmFsdWVfdHlwZSAmID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgICNlbmRpZgotICAgdHlwZWRlZiBJdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8aXRlcmF0b3JfdHlwZT46OmRpZmZlcmVuY2VfdHlwZSAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8aXRlcmF0b3JfdHlwZT46Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICBtb3ZlX2l0ZXJhdG9yKCkKLSAgIHt9Ci0KLSAgIGV4cGxpY2l0IG1vdmVfaXRlcmF0b3IoSXQgaSkKLSAgICAgIDogIG1faXQoaSkKLSAgIHt9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgbW92ZV9pdGVyYXRvcihjb25zdCBtb3ZlX2l0ZXJhdG9yPFU+JiB1KQotICAgICAgOiAgbV9pdCh1LmJhc2UoKSkKLSAgIHt9Ci0KLSAgIGl0ZXJhdG9yX3R5cGUgYmFzZSgpIGNvbnN0Ci0gICB7ICByZXR1cm4gbV9pdDsgICB9Ci0KLSAgIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdAotICAgewotICAgICAgI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpIHx8IGRlZmluZWQoTkROQk9PU1RfTU9WRV9PTERfUlZBTFVFX1JFRl9CSU5ESU5HX1JVTEVTKQotICAgICAgcmV0dXJuICptX2l0OwotICAgICAgI2Vsc2UKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0Ojptb3ZlKCptX2l0KTsKLSAgICAgICNlbmRpZgotICAgfQotCi0gICBwb2ludGVyICAgb3BlcmF0b3ItPigpIGNvbnN0Ci0gICB7ICByZXR1cm4gbV9pdDsgICB9Ci0KLSAgIG1vdmVfaXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgeyAgKyttX2l0OyByZXR1cm4gKnRoaXM7ICAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yPGl0ZXJhdG9yX3R5cGU+ICBvcGVyYXRvcisrKGludCkKLSAgIHsgIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4gdG1wKCp0aGlzKTsgKysoKnRoaXMpOyByZXR1cm4gdG1wOyAgIH0KLQotICAgbW92ZV9pdGVyYXRvciYgb3BlcmF0b3ItLSgpCi0gICB7ICAtLW1faXQ7IHJldHVybiAqdGhpczsgICB9Ci0KLSAgIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4gIG9wZXJhdG9yLS0oaW50KQotICAgeyAgbW92ZV9pdGVyYXRvcjxpdGVyYXRvcl90eXBlPiB0bXAoKnRoaXMpOyAtLSgqdGhpcyk7IHJldHVybiB0bXA7ICAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yPGl0ZXJhdG9yX3R5cGU+ICBvcGVyYXRvcisgKGRpZmZlcmVuY2VfdHlwZSBuKSBjb25zdAotICAgeyAgcmV0dXJuIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4obV9pdCArIG4pOyAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yJiBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBuKQotICAgeyAgbV9pdCArPSBuOyByZXR1cm4gKnRoaXM7ICAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yPGl0ZXJhdG9yX3R5cGU+ICBvcGVyYXRvci0gKGRpZmZlcmVuY2VfdHlwZSBuKSBjb25zdAotICAgeyAgcmV0dXJuIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4obV9pdCAtIG4pOyAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yJiBvcGVyYXRvci09KGRpZmZlcmVuY2VfdHlwZSBuKQotICAgeyAgbV9pdCAtPSBuOyByZXR1cm4gKnRoaXM7ICAgfQotCi0gICByZWZlcmVuY2Ugb3BlcmF0b3JbXShkaWZmZXJlbmNlX3R5cGUgbikgY29uc3QKLSAgIHsKLSAgICAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSB8fCBkZWZpbmVkKE5ETkJPT1NUX01PVkVfT0xEX1JWQUxVRV9SRUZfQklORElOR19SVUxFUykKLSAgICAgIHJldHVybiBtX2l0W25dOwotICAgICAgI2Vsc2UKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0Ojptb3ZlKG1faXRbbl0pOwotICAgICAgI2VuZGlmCi0gICB9Ci0KLSAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgbW92ZV9pdGVyYXRvciYgeCwgY29uc3QgbW92ZV9pdGVyYXRvciYgeSkKLSAgIHsgIHJldHVybiB4LmJhc2UoKSA9PSB5LmJhc2UoKTsgIH0KLQotICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBtb3ZlX2l0ZXJhdG9yJiB4LCBjb25zdCBtb3ZlX2l0ZXJhdG9yJiB5KQotICAgeyAgcmV0dXJuIHguYmFzZSgpICE9IHkuYmFzZSgpOyAgfQotCi0gICBmcmllbmQgYm9vbCBvcGVyYXRvcjwgKGNvbnN0IG1vdmVfaXRlcmF0b3ImIHgsIGNvbnN0IG1vdmVfaXRlcmF0b3ImIHkpCi0gICB7ICByZXR1cm4geC5iYXNlKCkgPCB5LmJhc2UoKTsgICB9Ci0KLSAgIGZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgbW92ZV9pdGVyYXRvciYgeCwgY29uc3QgbW92ZV9pdGVyYXRvciYgeSkKLSAgIHsgIHJldHVybiB4LmJhc2UoKSA8PSB5LmJhc2UoKTsgIH0KLQotICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+IChjb25zdCBtb3ZlX2l0ZXJhdG9yJiB4LCBjb25zdCBtb3ZlX2l0ZXJhdG9yJiB5KQotICAgeyAgcmV0dXJuIHguYmFzZSgpID4geS5iYXNlKCk7ICB9Ci0KLSAgIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oY29uc3QgbW92ZV9pdGVyYXRvciYgeCwgY29uc3QgbW92ZV9pdGVyYXRvciYgeSkKLSAgIHsgIHJldHVybiB4LmJhc2UoKSA+PSB5LmJhc2UoKTsgIH0KLQotICAgZnJpZW5kIGRpZmZlcmVuY2VfdHlwZSBvcGVyYXRvci0oY29uc3QgbW92ZV9pdGVyYXRvciYgeCwgY29uc3QgbW92ZV9pdGVyYXRvciYgeSkKLSAgIHsgIHJldHVybiB4LmJhc2UoKSAtIHkuYmFzZSgpOyAgIH0KLQotICAgZnJpZW5kIG1vdmVfaXRlcmF0b3Igb3BlcmF0b3IrKGRpZmZlcmVuY2VfdHlwZSBuLCBjb25zdCBtb3ZlX2l0ZXJhdG9yJiB4KQotICAgeyAgcmV0dXJuIG1vdmVfaXRlcmF0b3IoeC5iYXNlKCkgKyBuKTsgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICBJdCBtX2l0OwotfTsKLQotLy9pc19tb3ZlX2l0ZXJhdG9yCi1uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLXN0cnVjdCBpc19tb3ZlX2l0ZXJhdG9yCi0gICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+Ci17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLXN0cnVjdCBpc19tb3ZlX2l0ZXJhdG9yPCA6Om5kbmJvb3N0Ojptb3ZlX2l0ZXJhdG9yPEk+ID4KLSAgIDogcHVibGljIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCB0cnVlPgotewotfTsKLQotfSAgLy9uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlX2l0ZXJhdG9yCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIQotLy8hIDxiPlJldHVybnM8L2I+OiBtb3ZlX2l0ZXJhdG9yPEl0PihpKS4KLXRlbXBsYXRlPGNsYXNzIEl0PgotaW5saW5lIG1vdmVfaXRlcmF0b3I8SXQ+IG1ha2VfbW92ZV9pdGVyYXRvcihjb25zdCBJdCAmaXQpCi17ICByZXR1cm4gbW92ZV9pdGVyYXRvcjxJdD4oaXQpOyB9Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3IKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCi0vLyEgQSBtb3ZlIGluc2VydCBpdGVyYXRvciB0aGF0IG1vdmUgY29uc3RydWN0cyBlbGVtZW50cyBhdCB0aGUKLS8vISBiYWNrIG9mIGEgY29udGFpbmVyCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4gLy8gQyBtb2RlbHMgQ29udGFpbmVyCi1jbGFzcyBiYWNrX21vdmVfaW5zZXJ0X2l0ZXJhdG9yCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4KLXsKLSAgIEMqIGNvbnRhaW5lcl9tOwotCi0gICBwdWJsaWM6Ci0gICB0eXBlZGVmIEMgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIEM6OnJlZmVyZW5jZSAgICByZWZlcmVuY2U7Ci0KLSAgIGV4cGxpY2l0IGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3IoQyYgeCkgOiBjb250YWluZXJfbSgmeCkgeyB9Ci0KLSAgIGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yPShyZWZlcmVuY2UgeCkKLSAgIHsgY29udGFpbmVyX20tPnB1c2hfYmFjayhuZG5ib29zdDo6bW92ZSh4KSk7IHJldHVybiAqdGhpczsgfQotCi0gICBiYWNrX21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcj0oTkROQk9PU1RfUlZfUkVGKHZhbHVlX3R5cGUpIHgpCi0gICB7ICByZWZlcmVuY2UgcnggPSB4OyByZXR1cm4gdGhpcy0+b3BlcmF0b3I9KHJ4KTsgIH0KLQotICAgYmFja19tb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3IqKCkgICAgIHsgcmV0dXJuICp0aGlzOyB9Ci0gICBiYWNrX21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQotfTsKLQotLy8hCi0vLyEgPGI+UmV0dXJuczwvYj46IGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3I8Qz4oeCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4gLy8gQyBtb2RlbHMgQ29udGFpbmVyCi1pbmxpbmUgYmFja19tb3ZlX2luc2VydF9pdGVyYXRvcjxDPiBiYWNrX21vdmVfaW5zZXJ0ZXIoQyYgeCkKLXsKLSAgIHJldHVybiBiYWNrX21vdmVfaW5zZXJ0X2l0ZXJhdG9yPEM+KHgpOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvcgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgQSBtb3ZlIGluc2VydCBpdGVyYXRvciB0aGF0IG1vdmUgY29uc3RydWN0cyBlbGVtZW50cyBpbnQgdGhlCi0vLyEgZnJvbnQgb2YgYSBjb250YWluZXIKLXRlbXBsYXRlIDx0eXBlbmFtZSBDPiAvLyBDIG1vZGVscyBDb250YWluZXIKLWNsYXNzIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4KLXsKLSAgIEMqIGNvbnRhaW5lcl9tOwotCi1wdWJsaWM6Ci0gICB0eXBlZGVmIEMgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIEM6OnJlZmVyZW5jZSAgICByZWZlcmVuY2U7Ci0KLSAgIGV4cGxpY2l0IGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yKEMmIHgpIDogY29udGFpbmVyX20oJngpIHsgfQotCi0gICBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3I9KHJlZmVyZW5jZSB4KQotICAgeyBjb250YWluZXJfbS0+cHVzaF9mcm9udChuZG5ib29zdDo6bW92ZSh4KSk7IHJldHVybiAqdGhpczsgfQotCi0gICBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3I9KE5ETkJPT1NUX1JWX1JFRih2YWx1ZV90eXBlKSB4KQotICAgeyAgcmVmZXJlbmNlIHJ4ID0geDsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yPShyeCk7ICB9Ci0KLSAgIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvciooKSAgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KLX07Ci0KLS8vIQotLy8hIDxiPlJldHVybnM8L2I+OiBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvcjxDPih4KS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDPiAvLyBDIG1vZGVscyBDb250YWluZXIKLWlubGluZSBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvcjxDPiBmcm9udF9tb3ZlX2luc2VydGVyKEMmIHgpCi17Ci0gICByZXR1cm4gZnJvbnRfbW92ZV9pbnNlcnRfaXRlcmF0b3I8Qz4oeCk7Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydF9tb3ZlX2l0ZXJhdG9yCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4gLy8gQyBtb2RlbHMgQ29udGFpbmVyCi1jbGFzcyBtb3ZlX2luc2VydF9pdGVyYXRvcgotICAgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQ+Ci17Ci0gICBDKiBjb250YWluZXJfbTsKLSAgIHR5cGVuYW1lIEM6Oml0ZXJhdG9yIHBvc187Ci0KLSAgIHB1YmxpYzoKLSAgIHR5cGVkZWYgQyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6cmVmZXJlbmNlICAgIHJlZmVyZW5jZTsKLQotICAgZXhwbGljaXQgbW92ZV9pbnNlcnRfaXRlcmF0b3IoQyYgeCwgdHlwZW5hbWUgQzo6aXRlcmF0b3IgcG9zKQotICAgICAgOiBjb250YWluZXJfbSgmeCksIHBvc18ocG9zKQotICAge30KLQotICAgbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yPShyZWZlcmVuY2UgeCkKLSAgIHsKLSAgICAgIHBvc18gPSBjb250YWluZXJfbS0+aW5zZXJ0KHBvc18sIDo6bmRuYm9vc3Q6Om1vdmUoeCkpOwotICAgICAgKytwb3NfOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotCi0gICBtb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3I9KE5ETkJPT1NUX1JWX1JFRih2YWx1ZV90eXBlKSB4KQotICAgeyAgcmVmZXJlbmNlIHJ4ID0geDsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yPShyeCk7ICB9Ci0KLSAgIG1vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvciooKSAgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIG1vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIG1vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KLX07Ci0KLS8vIQotLy8hIDxiPlJldHVybnM8L2I+OiBtb3ZlX2luc2VydF9pdGVyYXRvcjxDPih4LCBpdCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4gLy8gQyBtb2RlbHMgQ29udGFpbmVyCi1pbmxpbmUgbW92ZV9pbnNlcnRfaXRlcmF0b3I8Qz4gbW92ZV9pbnNlcnRlcihDJiB4LCB0eXBlbmFtZSBDOjppdGVyYXRvciBpdCkKLXsKLSAgIHJldHVybiBtb3ZlX2luc2VydF9pdGVyYXRvcjxDPih4LCBpdCk7Ci19Ci0KLX0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8jaWZuZGVmIE5ETkJPT1NUX01PVkVfSVRFUkFUT1JfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvbW92ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvbW92ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyN2I2ZDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL21vdmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcywgVmljZW50ZSBCb3RldCAyMDA5LgotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMDktMjAxMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tb3ZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgXGZpbGUgbW92ZS5ocHAKLS8vISBBIGdlbmVyYWwgbGlicmFyeSBoZWFkZXIgdGhhdCBpbmNsdWRlcwotLy8hIHRoZSByZXN0IG9mIHRvcC1sZXZlbCBoZWFkZXJzLgotCi0jaWZuZGVmIE5ETkJPT1NUX01PVkVfTU9WRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTU9WRV9NT1ZFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL3V0aWxpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2FsZ29yaXRobS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSNlbmRpZiAvLyNpZm5kZWYgTkROQk9PU1RfTU9WRV9NT1ZFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyNWZkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAwOS0yMDEyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21vdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vISBcZmlsZQotCi0jaWZuZGVmIE5ETkJPT1NUX01PVkVfTU9WRV9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01PVkVfTU9WRV9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL21ldGFfdXRpbHMuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9jb3JlLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyEgSWYgdGhpcyB0cmFpdCB5aWVsZHMgdG8gdHJ1ZQotLy8hICg8aT5oYXNfdHJpdmlhbF9kZXN0cnVjdG9yX2FmdGVyX21vdmUgJmx0O1QmZ3Q7Ojp2YWx1ZSA9PSB0cnVlPC9pPikKLS8vISBtZWFucyB0aGF0IGlmIFQgaXMgdXNlZCBhcyBhcmd1bWVudCBvZiBhIG1vdmUgY29uc3RydWN0aW9uL2Fzc2lnbm1lbnQsCi0vLyEgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIFQncyBkZXN0cnVjdG9yLgotLy8hIFRoaXMgb3B0aW1pemF0aW9uIHRpcGljYWxseSBpcyB1c2VkIHRvIGltcHJvdmUgY29udGFpbmVycycgcGVyZm9ybWFuY2UuCi0vLyEKLS8vISBCeSBkZWZhdWx0IHRoaXMgdHJhaXQgaXMgdHJ1ZSBpZiB0aGUgdHlwZSBoYXMgdHJpdmlhbCBkZXN0cnVjdG9yLAotLy8hIGV2ZXJ5IGNsYXNzIHNob3VsZCBzcGVjaWFsaXplIHRoaXMgdHJhaXQgaWYgaXQgd2FudHMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZQotLy8hIHdoZW4gaW5zZXJ0ZWQgaW4gY29udGFpbmVycy4KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3JfYWZ0ZXJfbW92ZQotICAgOiA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ci17fTsKLQotLy8hIEJ5IGRlZmF1bHQgdGhpcyB0cmFpdHMgcmV0dXJucyBmYWxzZS4gQ2xhc3NlcyB3aXRoIG5vbi10aHJvd2luZyBtb3ZlIGNvbnN0cnVjdG9yCi0vLyEgYW5kIGFzc2lnbm1lbnQgY2FuIHNwZWNpYWxpemUgdGhpcyB0cmFpdCB0byBvYnRhaW4gc29tZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBoYXNfbm90aHJvd19tb3ZlCi0gICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+Ci17fTsKLQotbmFtZXNwYWNlIG1vdmVfZGV0YWlsIHsKLQotLy8gQ29kZSBmcm9tIEplZmZyZXkgTGVlIEhlbGxydW5nLCBtYW55IHRoYW5rcwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVD4gc3RydWN0IGZvcndhcmRfdHlwZSB7IHR5cGVkZWYgVCB0eXBlOyB9OwotI2Vsc2UgLy8gI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgdGVtcGxhdGU8IGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgZm9yd2FyZF90eXBlCi0gICB7IHR5cGVkZWYgY29uc3QgVCAmdHlwZTsgfTsKLQotICAgdGVtcGxhdGU8IGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgZm9yd2FyZF90eXBlPCBuZG5ib29zdDo6cnY8VD4gPgotICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGlzX3J2YWx1ZV9yZWZlcmVuY2UgOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+IHsgfTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGlzX3J2YWx1ZV9yZWZlcmVuY2U8IFQmJiA+IDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+IHsgfTsKLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGlzX3J2YWx1ZV9yZWZlcmVuY2U8IG5kbmJvb3N0OjpydjxUPiYgPgotICAgICAgOiAgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+Ci0gICB7fTsKLQotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgaXNfcnZhbHVlX3JlZmVyZW5jZTwgY29uc3QgbmRuYm9vc3Q6OnJ2PFQ+JiA+Ci0gICAgICA6IDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCB0cnVlPgotICAge307Ci0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZSB7IHR5cGVkZWYgVCYmIHR5cGU7IH07Ci0jZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICBuYW1lc3BhY2UgZGV0YWlsX2FkZF9ydmFsdWVfcmVmZXJlbmNlCi0gICB7Ci0gICAgICB0ZW1wbGF0ZTwgY2xhc3MgVAotICAgICAgICAgICAgICAsIGJvb2wgZW11bGF0aW9uID0gOjpuZG5ib29zdDo6aGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8VD46OnZhbHVlCi0gICAgICAgICAgICAgICwgYm9vbCBydiAgICAgICAgPSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aXNfcnY8VD46OnZhbHVlICA+Ci0gICAgICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaW1wbCB7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi0gICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgYm9vbCBlbXVsYXRpb24+Ci0gICAgICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaW1wbDwgVCwgZW11bGF0aW9uLCB0cnVlID4geyB0eXBlZGVmIFQgJiB0eXBlOyB9OwotCi0gICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgYm9vbCBydiA+Ci0gICAgICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaW1wbDwgVCwgdHJ1ZSwgcnYgPiB7IHR5cGVkZWYgOjpuZG5ib29zdDo6cnY8VD4mIHR5cGU7IH07Ci0gICB9IC8vIG5hbWVzcGFjZSBkZXRhaWxfYWRkX3J2YWx1ZV9yZWZlcmVuY2UKLQotICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgc3RydWN0IGFkZF9ydmFsdWVfcmVmZXJlbmNlCi0gICAgICA6IGRldGFpbF9hZGRfcnZhbHVlX3JlZmVyZW5jZTo6YWRkX3J2YWx1ZV9yZWZlcmVuY2VfaW1wbDxUPgotICAgeyB9OwotCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8VCAmPgotICAgeyAgdHlwZWRlZiBUICYgdHlwZTsgfTsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2UgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2U8IFQmJiA+ICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmZXJlbmNlPCBydjxUPiA+ICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZmVyZW5jZTwgY29uc3QgcnY8VD4gPiAgICAgICAgICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2U8IHZvbGF0aWxlIHJ2PFQ+ID4gICAgICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmZXJlbmNlPCBjb25zdCB2b2xhdGlsZSBydjxUPiA+IHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZmVyZW5jZTwgcnY8VD4mID4gICAgICAgICAgICAgICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2U8IGNvbnN0IHJ2PFQ+JiA+ICAgICAgICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmZXJlbmNlPCB2b2xhdGlsZSBydjxUPiYgPiAgICAgIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZmVyZW5jZTwgY29uc3Qgdm9sYXRpbGUgcnY8VD4mID57IHR5cGVkZWYgVCB0eXBlOyB9OwotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSBuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmFkZF9ydmFsdWVfcmVmZXJlbmNlPFQ+Ojp0eXBlIGRlY2x2YWwoKTsKLQotfSAgLy9tb3ZlX2RldGFpbCB7Ci0KLS8vIElkZWFzIGZyb20gQm9vc3QuTW92ZSByZXZpZXcsIEplZmZyZXkgTGVlIEhlbGxydW5nOgotLy8KLS8vLSBUeXBlVHJhaXRzIG1ldGFmdW5jdGlvbnMgaXNfbHZhbHVlX3JlZmVyZW5jZSwgYWRkX2x2YWx1ZV9yZWZlcmVuY2UsIGFuZCByZW1vdmVfbHZhbHVlX3JlZmVyZW5jZSA/Ci0vLyAgUGVyaGFwcyBhZGRfcmVmZXJlbmNlIGFuZCByZW1vdmVfcmVmZXJlbmNlIGNhbiBiZSBtb2RpZmllZCBzbyB0aGF0IHRoZXkgYmVoYXZlIHdydCBlbXVsYXRlZCBydmFsdWUKLS8vICByZWZlcmVuY2VzIHRoZSBzYW1lIGFzIHdydCByZWFsIHJ2YWx1ZSByZWZlcmVuY2VzLCBpLmUuLCBhZGRfcmVmZXJlbmNlPCBydjxUPiYgPiAtPiBUJiByYXRoZXIgdGhhbgotLy8gIHJ2PFQ+JiAoc2luY2UgVCYmICYgLT4gVCYpLgotLy8KLS8vLSBBZGQnbCBUeXBlVHJhaXRzIGhhc19bdHJpdmlhbF9dbW92ZV97Y29uc3RydWN0b3IsYXNzaWdufS4uLj8KLS8vCi0vLy0gQW4gYXNfbHZhbHVlKFQmIHgpIGZ1bmN0aW9uLCB3aGljaCBhbW91bnRzIHRvIGFuIGlkZW50aXR5IG9wZXJhdGlvbiBpbiBDKysweCwgYnV0IHN0cmlwcyBlbXVsYXRlZAotLy8gIHJ2YWx1ZSByZWZlcmVuY2VzIGluIEMrKzAzLiAgVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgImFjY2lkZW50YWwgbW92ZXMiLgotCi0KLX0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8jaWZuZGVmIE5ETkJPT1NUX01PVkVfTU9WRV9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvdXRpbGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvdXRpbGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYzkxOWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL3V0aWxpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDEyLTIwMTIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbW92ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8hIFxmaWxlCi0KLSNpZm5kZWYgTkROQk9PU1RfTU9WRV9NT1ZFX1VUSUxJVFlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01PVkVfTU9WRV9VVElMSVRZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2NvcmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL21ldGFfdXRpbHMuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTU9WRV9ET1hZR0VOX0lOVk9LRUQpCi0KLSAgIG5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgZW5hYmxlX21vdmVfdXRpbGl0eV9lbXVsYXRpb24KLSAgIHsKLSAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKLSAgIH07Ci0gICAgCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgIC8vCi0gICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKCkKLSAgIC8vCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpbmxpbmUgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZl9jCi0gICAgICA8IGVuYWJsZV9tb3ZlX3V0aWxpdHlfZW11bGF0aW9uPFQ+Ojp2YWx1ZSAmJiAhaGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8VD46OnZhbHVlLCBUJj46OnR5cGUKLSAgICAgICAgIG1vdmUoVCYgeCkKLSAgIHsKLSAgICAgIHJldHVybiB4OwotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGlubGluZSB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmX2MKLSAgICAgIDwgZW5hYmxlX21vdmVfdXRpbGl0eV9lbXVsYXRpb248VD46OnZhbHVlICYmIGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkPFQ+Ojp2YWx1ZSwgcnY8VD4mPjo6dHlwZQotICAgICAgICAgbW92ZShUJiB4KQotICAgewotICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxydjxUPiogPig6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6YWRkcmVzc29mKHgpKTsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpbmxpbmUgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZl9jCi0gICAgICA8IGVuYWJsZV9tb3ZlX3V0aWxpdHlfZW11bGF0aW9uPFQ+Ojp2YWx1ZSAmJiBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDxUPjo6dmFsdWUsIHJ2PFQ+Jj46OnR5cGUKLSAgICAgICAgIG1vdmUocnY8VD4mIHgpCi0gICB7Ci0gICAgICByZXR1cm4geDsKLSAgIH0KLQotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAvLwotICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZCgpCi0gICAvLwotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgaW5saW5lIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjplbmFibGVfaWZfYwotICAgICAgPCBlbmFibGVfbW92ZV91dGlsaXR5X2VtdWxhdGlvbjxUPjo6dmFsdWUgJiYgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmlzX3J2PFQ+Ojp2YWx1ZSwgVCAmPjo6dHlwZQotICAgICAgICAgZm9yd2FyZChjb25zdCB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aWRlbnRpdHk8VD46OnR5cGUgJngpCi0gICB7Ci0gICAgICByZXR1cm4gY29uc3RfY2FzdDxUJj4oeCk7Ci0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgaW5saW5lIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjplbmFibGVfaWZfYwotICAgICAgPCBlbmFibGVfbW92ZV91dGlsaXR5X2VtdWxhdGlvbjxUPjo6dmFsdWUgJiYgITo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppc19ydjxUPjo6dmFsdWUsIGNvbnN0IFQgJj46OnR5cGUKLSAgICAgIGZvcndhcmQoY29uc3QgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmlkZW50aXR5PFQ+Ojp0eXBlICZ4KQotICAgewotICAgICAgcmV0dXJuIHg7Ci0gICB9Ci0KLSAgIH0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbHNlICAgIC8vI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotCi0gICAjaWYgZGVmaW5lZChORE5CT09TVF9NT1ZFX1VTRV9TVEFOREFSRF9MSUJSQVJZX01PVkUpCi0gICAgICAjaW5jbHVkZSA8dXRpbGl0eT4KLQotICAgICAgbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0gICAgICB1c2luZyA6OnN0ZDo6bW92ZTsKLSAgICAgIHVzaW5nIDo6c3RkOjpmb3J3YXJkOwotCi0gICAgICB9ICAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0gICAjZWxzZSAvLyFORE5CT09TVF9NT1ZFX1VTRV9TVEFOREFSRF9MSUJSQVJZX01PVkUKLQotICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0gICAgICBuYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gICAgICAvLyEgVGhpcyB0cmFpdCdzIGludGVybmFsIGJvb2xlYW4gYHZhbHVlYCBpcyBmYWxzZSBpbiBjb21waWxlcnMgd2l0aCBydmFsdWUgcmVmZXJlbmNlcwotICAgICAgLy8hIGFuZCB0cnVlIGluIGNvbXBpbGVycyB3aXRob3V0IHJ2YWx1ZSByZWZlcmVuY2VzLgotICAgICAgLy8hCi0gICAgICAvLyEgQSB1c2VyIGNhbiBzcGVjaWFsaXplIHRoaXMgdHJhaXQgZm9yIGEgdHlwZSBUIHRvIGZhbHNlIHRvIFNGSU5BRSBvdXQgYG1vdmVgIGFuZCBgZm9yd2FyZGAKLSAgICAgIC8vISBzbyB0aGF0IHRoZSB1c2VyIGNhbiBkZWZpbmUgYSBkaWZmZXJlbnQgbW92ZSBlbXVsYXRpb24gZm9yIHRoYXQgdHlwZSBpbiBuYW1lc3BhY2UgbmRuYm9vc3QKLSAgICAgIC8vISAoZS5nLiBhbm90aGVyIEJvb3N0IGxpYnJhcnkgZm9yIGl0cyB0eXBlcykgYW5kIGF2b2lkIGFueSBvdmVybG9hZCBhbWJpZ3VpdHkuCi0gICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgICAgc3RydWN0IGVuYWJsZV9tb3ZlX3V0aWxpdHlfZW11bGF0aW9uCi0gICAgICB7Ci0gICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOwotICAgICAgfTsKLQotICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAvLwotICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZQotICAgICAgLy8KLSAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAjaWYgZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLSAgICAgICAgIC8vISBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGEgd2F5IHRvIGNvbnZlcnQgYSByZWZlcmVuY2UgaW50byBhIHJ2YWx1ZSByZWZlcmVuY2UKLSAgICAgICAgIC8vISBpbiBjb21waWxlcnMgd2l0aCBydmFsdWUgcmVmZXJlbmNlcy4gRm9yIG90aGVyIGNvbXBpbGVycyBjb252ZXJ0cyBUICYgaW50bwotICAgICAgICAgLy8hIDxpPjo6bmRuYm9vc3Q6OnJ2PFQ+ICY8L2k+IHNvIHRoYXQgbW92ZSBlbXVsYXRpb24gaXMgYWN0aXZhdGVkLgotICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICBydmFsdWVfcmVmZXJlbmNlIG1vdmUgKGlucHV0X3JlZmVyZW5jZSk7Ci0KLSAgICAgICNlbGlmIGRlZmluZWQoTkROQk9PU1RfTU9WRV9PTERfUlZBTFVFX1JFRl9CSU5ESU5HX1JVTEVTKQotCi0gICAgICAgICAvL09sZCBtb3ZlIGFwcHJvYWNoLCBsdmFsdWVzIGNvdWxkIGJpbmQgdG8gcnZhbHVlIHJlZmVyZW5jZXMKLSAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgaW5saW5lIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgJiYgbW92ZShUJiYgdCkKLSAgICAgICAgIHsgIHJldHVybiB0OyAgIH0KLQotICAgICAgI2Vsc2UgLy9ORE5CT09TVF9NT1ZFX09MRF9SVkFMVUVfUkVGX0JJTkRJTkdfUlVMRVMKLQotICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICBpbmxpbmUgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSAmJiBtb3ZlKFQmJiB0KQotICAgICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSAmJj4odCk7IH0KLQotICAgICAgI2VuZGlmICAgLy9ORE5CT09TVF9NT1ZFX09MRF9SVkFMVUVfUkVGX0JJTkRJTkdfUlVMRVMKLQotICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAvLwotICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZAotICAgICAgLy8KLSAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KLSAgICAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotICAgICAgICAgLy8hIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgbGltaXRlZCBmb3JtIG9mIGZvcndhcmRpbmcgdGhhdCBpcyB1c3VhbGx5IGVub3VnaCBmb3IKLSAgICAgICAgIC8vISBpbi1wbGFjZSBjb25zdHJ1Y3Rpb24gYW5kIGF2b2lkcyB0aGUgZXhwb25lbnRpYWwgb3ZlcmxvYWRpbmcgZm9yCi0gICAgICAgICAvLyEgYWNoaWV2ZSB0aGUgbGltaXRlZCBmb3J3YXJkaW5nIGluIEMrKzAzLgotICAgICAgICAgLy8hCi0gICAgICAgICAvLyEgRm9yIGNvbXBpbGVycyB3aXRoIHJ2YWx1ZSByZWZlcmVuY2VzIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgcGVyZmVjdCBmb3J3YXJkaW5nLgotICAgICAgICAgLy8hCi0gICAgICAgICAvLyEgT3RoZXJ3aXNlOgotICAgICAgICAgLy8hICogSWYgaW5wdXRfcmVmZXJlbmNlIGJpbmRzIHRvIGNvbnN0IDo6bmRuYm9vc3Q6OnJ2PFQ+ICYgdGhlbiBpdCBvdXRwdXRfcmVmZXJlbmNlIGlzCi0gICAgICAgICAvLyEgICA6Om5kbmJvb3N0OjpydjxUPiAmCi0gICAgICAgICAvLyEKLSAgICAgICAgIC8vISAqIEVsc2UsIG91dHB1dF9yZWZlcmVuY2UgaXMgZXF1YWwgdG8gaW5wdXRfcmVmZXJlbmNlLgotICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IG91dHB1dF9yZWZlcmVuY2UgZm9yd2FyZChpbnB1dF9yZWZlcmVuY2UpOwotICAgICAgI2VsaWYgZGVmaW5lZChORE5CT09TVF9NT1ZFX09MRF9SVkFMVUVfUkVGX0JJTkRJTkdfUlVMRVMpCi0KLSAgICAgICAgIC8vT2xkIG1vdmUgYXBwcm9hY2gsIGx2YWx1ZXMgY291bGQgYmluZCB0byBydmFsdWUgcmVmZXJlbmNlcwotCi0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgIGlubGluZSBUJiYgZm9yd2FyZCAodHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmlkZW50aXR5PFQ+Ojp0eXBlJiYgdCkKLSAgICAgICAgIHsgIHJldHVybiB0OyAgIH0KLQotICAgICAgI2Vsc2UgLy9PbGQgbW92ZQotCi0gICAgICAgICAvL0ltcGxlbWVudGF0aW9uICM1IGZyb20gTjI5NTEsIHRoYW5rcyB0byBIb3dhcmQgSGlubmFudAotCi0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgICAgICAgIGlubGluZSBUJiYgZm9yd2FyZChVJiYgdAotICAgICAgICAgICAgICwgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgbW92ZV9kZXRhaWw6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlID8gbW92ZV9kZXRhaWw6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VT46OnZhbHVlIDogdHJ1ZT46OnR5cGUgKiA9IDAvKgotICAgICAgICAgICAgICwgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgbW92ZV9kZXRhaWw6OmlzX2NvbnZlcnRpYmxlCi0gICAgICAgICAgICAgICAgICA8dHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSosIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUqPjo6dmFsdWU+Ojp0eXBlICogPSAwKi8pCi0gICAgICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxUJiY+KHQpOyAgIH0KLQotICAgICAgI2VuZGlmICAgLy9ORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRAotCi0gICAgICB9ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgICNlbmRpZiAgIC8vI2lmIGRlZmluZWQoTkROQk9PU1RfTU9WRV9VU0VfU1RBTkRBUkRfTElCUkFSWV9NT1ZFKQotCi0jZW5kaWYgICAvL05ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vI2lmbmRlZiBORE5CT09TVF9NT1ZFX01PVkVfVVRJTElUWV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL08xX3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvTzFfc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2YTQ2MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvTzFfc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX08xX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9PMV9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogTzFfc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vTzFfc2l6ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyByZXR1cm5zIHNlcXVlbmNlIHNpemUgaWYgaXQncyBhbiBPKDEpIG9wZXJhdGlvbjsgb3RoZXJ3aXNlIHJldHVybnMgLTEKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3QgTzFfc2l6ZQotICAgIDogTzFfc2l6ZV9pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgTzFfc2l6ZSwgKFNlcXVlbmNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBPMV9zaXplKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX08xX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhOTc4NjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvTzFfc2l6ZV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9PMV9TSVpFX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX08xX1NJWkVfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogTzFfc2l6ZV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IE8xX3NpemVfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBPMV9zaXplOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX08xX1NJWkVfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYWR2YW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hZHZhbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQwMDgzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hZHZhbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQURWQU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FEVkFOQ0VfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhZHZhbmNlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FkdmFuY2VfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGVzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25lZ2F0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIGZvcndhcmQvYmlkaXJlY3Rpb25hbCBpdGVyYXRvcnMKLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGFkdmFuY2VfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsZXNzPCBOLGxvbmdfPDA+ID46OnR5cGUgYmFja3dhcmRfOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwgYmFja3dhcmRfLCBuZWdhdGU8Tj4sIE4gPjo6dHlwZSBvZmZzZXRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBiYWNrd2FyZF8KLSAgICAgICAgICAgICwgYXV4OjphZHZhbmNlX2JhY2t3YXJkPCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQob2Zmc2V0Xyk6OnZhbHVlID4KLSAgICAgICAgICAgICwgYXV4OjphZHZhbmNlX2ZvcndhcmQ8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChvZmZzZXRfKTo6dmFsdWUgPgotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPGZfLEl0ZXJhdG9yPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShJdGVyYXRvcikKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTikKLSAgICA+Ci1zdHJ1Y3QgYWR2YW5jZQotICAgIDogYWR2YW5jZV9pbXBsPCB0eXBlbmFtZSB0YWc8SXRlcmF0b3I+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTxJdGVyYXRvcixOPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikKLSAgICA+Ci1zdHJ1Y3QgYWR2YW5jZV9jCi0gICAgOiBhZHZhbmNlX2ltcGw8IHR5cGVuYW1lIHRhZzxJdGVyYXRvcj46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PEl0ZXJhdG9yLGxvbmdfPE4+ID4KLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBhZHZhbmNlKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FEVkFOQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hZHZhbmNlX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hZHZhbmNlX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMjU4NjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYWR2YW5jZV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BRFZBTkNFX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FEVkFOQ0VfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWR2YW5jZV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORChhZHZhbmNlKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGFkdmFuY2VfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhZHZhbmNlOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FEVkFOQ0VfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYWx3YXlzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Fsd2F5cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYmE2NDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYWx3YXlzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQUxXQVlTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQUxXQVlTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWx3YXlzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXR5X3NwZWMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFZhbHVlID4gc3RydWN0IGFsd2F5cwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQKLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX05FU1RFRF9ERUZfUEFSQU1TX1RBSUwoMSwgdHlwZW5hbWUgVCwgbmEpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVmFsdWUgdHlwZTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGFsd2F5cykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BTFdBWVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JjOWQ0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uZXN0ZWRfdHlwZV93a25kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLS8vIGFndXJ0LCAxOS9tYXkvMDQ6IHdvcmthcm91bmQgYSBjb25mbGljdCB3aXRoIDxpc282NDYuaD4gaGVhZGVyJ3MgCi0vLyAnb3InIGFuZCAnYW5kJyBtYWNyb3MsIHNlZSBodHRwOi8vdGlueXVybC5jb20vM2V0Njk7ICdkZWZpbmVkKGFuZCknCi0vLyBoYXMgdG8gYmUgY2hlY2tlZCBpbiBhIHNlcGFyYXRlIGNvbmRpdGlvbiwgb3RoZXJ3aXNlIEdDQyBjb21wbGFpbnMgCi0vLyBhYm91dCAnYW5kJyBiZWluZyBhbiBhbHRlcm5hdGl2ZSB0b2tlbgotI2lmIGRlZmluZWQoX01TQ19WRVIpIAotI2lmbmRlZiBfX0dDQ1hNTF9fCi0jaWYgZGVmaW5lZChhbmQpIAotIyAgIHByYWdtYSBwdXNoX21hY3JvKCJhbmQiKQotIyAgIHVuZGVmIGFuZAotIyAgIGRlZmluZSBhbmQoeCkKLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBhbmQuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNpZm5kZWYgX19HQ0NYTUxfXwotI2lmIGRlZmluZWQoYW5kKSAKLSMgICBwcmFnbWEgcG9wX21hY3JvKCJhbmQiKQotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jZWxzZQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIGFuZF8KLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX1ZBTFVFMSBmYWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfVkFMVUUyIHRydWUKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sb2dpY2FsX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmQ2NjEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FQUExZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVBQTFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcHBseS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9sYW1iZGEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGFwcGx5LmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcnRpYWxfc3BlY19wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWV9QQVJBTVMocGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX0RFRl9QQVJBTVMocGFyYW0sIHZhbHVlKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICAsIHZhbHVlIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWV9OX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX05fUEFSVElBTF9TUEVDX1BBUkFNUyhuLCBwYXJhbSwgZGVmKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJUSUFMX1NQRUNfUEFSQU1TKG4sIHBhcmFtLCBkZWYpIFwKLSAgICAvKiovCi0gICAgCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWV9OX1NQRUNfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0VOVU0oTkROQk9PU1RfUFBfSU5DKG4pLCBwYXJhbSkgXAotICAgIC8qKi8KLQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUpCi0vLyByZWFsIEMrKyB2ZXJzaW9uIGlzIGFscmVhZHkgdGFrZW4gY2FyZSBvZgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotbmFtZXNwYWNlIGF1eCB7Ci0vLyBhcHBseV9jb3VudF9hcmdzCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BSRUZJWCBhcHBseQotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19ERUZBVUxUIG5hCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0FSSVRZIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb3VudF9hcmdzLmhwcD4KLX0KLQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9BUFBMWV9ERUZfUEFSQU1TKHR5cGVuYW1lIFQsIG5hKQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXV4OjphcHBseV9jaG9vc2VyPCAKLSAgICAgICAgICBhdXg6OmFwcGx5X2NvdW50X2FyZ3M8IEFVWDc3ODA3Nl9BUFBMWV9QQVJBTVMoVCkgPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgRiwgQVVYNzc4MDc2X0FQUExZX1BBUkFNUyhUKSA+Ojp0eXBlCi17Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9OX1NQRUNfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZX05fUEFSVElBTF9TUEVDX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9OX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9ERUZfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZX1BBUkFNUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BUFBMWV9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAxCi0KLS8vIEZvciBnY2MgNC40IGNvbXBhdGFiaWxpdHksIHdlIG11c3QgaW5jbHVkZSB0aGUKLS8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCB0ZXN0IGluc2lkZSBhbiAjZWxzZSBjbGF1c2UuCi0jZWxzZSAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLSNpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0KLSMgICBkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseSxpXykKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgOiBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXyk8IAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIFQpCi0gICAgICAgID4KLXsKLSNlbHNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXyk8IAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIFQpCi0gICAgICAgID46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgTkROQk9PU1RfUFBfSU5DKGlfKQotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChhcHBseSxpXykKLSAgICAgICAgLCAoRiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sVCkpCi0gICAgICAgICkKLX07Ci0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseSxpXyk8QVVYNzc4MDc2X0FQUExZX05fU1BFQ19QQVJBTVMoaV8sIGludCk+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0jZW5kaWYKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUpCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotI2lmIGlfID09IE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogTkROQk9PU1RfUFBfQ0FUKGFwcGx5LGlfKTwgRiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIFQpID4KLXsKLX07Ci0jZWxzZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYgQVVYNzc4MDc2X0FQUExZX05fUEFSVElBTF9TUEVDX1BBUkFNUyhpXywgVCwgbmEpID4KLSAgICA6IE5ETkJPT1NUX1BQX0NBVChhcHBseSxpXyk8IEYgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TKGlfLCBUKSA+Ci17Ci19OwotI2VuZGlmCi0KLSMgICBlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUpCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8aV8+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0FQUExZX1BBUkFNUyh0eXBlbmFtZSBUKQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGFwcGx5LGlfKTwKLSAgICAgICAgICAgICAgRiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIFQpCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotI2VuZGlmCi0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19BUFBMWV9URU1QTEFURQotCi0jICAgdW5kZWYgaV8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ3N2UwNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVBQTFlfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVBQTFlfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXBwbHlfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGFwcGx5X2Z3ZC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLS8vIGFndXJ0LCAxNS9qYW4vMDI6IHRvcC1sZXZlbCAnYXBwbHknIHRlbXBsYXRlIGdpdmVzIGFuIElDRSBvbiBNU1ZDCi0vLyAoZm9yIGtub3duIHJlYXNvbnMpCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gbG9jYWwgbWFjcm8sICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVBQTFlfREVGX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICwgdmFsdWUgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICAvKiovCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0FQUExZX1RFTVBMQVRFKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLS8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0FQUExZX0RFRl9QQVJBTVModHlwZW5hbWUgVCwgbmEpCi0gICAgPgotc3RydWN0IGFwcGx5OwotI2Vsc2UKLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IE5ETkJPT1NUX0FVWF9OVFRQX0RFQ0woaW50LCBhcml0eV8pID4gc3RydWN0IGFwcGx5X2Nob29zZXI7Ci19Ci0jZW5kaWYKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQVBQTFlfREVGX1BBUkFNUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BUFBMWV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5LGlfKTsKLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTdjMDQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVBQTFlfV1JBUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FQUExZX1dSQVBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcHBseV93cmFwLmhwcCA0OTI3MiAyMDA4LTEwLTExIDA2OjUwOjQ2WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6NTA6NDYgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNzIgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX2FwcGx5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19uZXZlcl90cnVlLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgYXBwbHlfd3JhcC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2FkZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2JjYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2FuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBsb2NhbCBtYWNyb3MsICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1NQRUNfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0VOVU0oTkROQk9PU1RfUFBfSU5DKG4pLCBwYXJhbSkgXAotICAgIC8qKi8KLQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVBQTFlfV1JBUF9TUEVDX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BUFBMWV9XUkFQX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDEKLQotLy8gRm9yIGdjYyA0LjQgY29tcGF0YWJpbGl0eSwgd2UgbXVzdCBpbmNsdWRlIHRoZQotLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIIHRlc3QgaW5zaWRlIGFuICNlbHNlIGNsYXVzZS4KLSNlbHNlIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotI2lmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDEKLQotIyAgIGRlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotLy8gTVNWQyB2ZXJzaW9uCi0KLSNkZWZpbmUgQVVYNzc4MDc2X01TVkNfRFRXX05BTUUgTkROQk9PU1RfUFBfQ0FUKG1zdmNfYXBwbHksaV8pCi0jZGVmaW5lIEFVWDc3ODA3Nl9NU1ZDX0RUV19PUklHSU5BTF9OQU1FIGFwcGx5Ci0jZGVmaW5lIEFVWDc3ODA3Nl9NU1ZDX0RUV19BUklUWSBpXwotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfZHR3LmhwcD4KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwLGlfKQotewotICAgIC8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIHZjNgotICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKG1zdmNfYXBwbHksaV8pPEY+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotIyAgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLS8vIE1XQ1cvQm9ybGFuZCB2ZXJzaW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXBfaW1wbCxpXyk7Ci0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSAtIGlfLCA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwLGlfKQotICAgIDogTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXBfaW1wbCxpXyk8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PEYsaV8+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotIyAgIGVsc2UKLS8vIElTTzk4IEMrKywgd2l0aCBtaW5vciBjb25jZXNzaW9uIHRvIHZjNwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSNpZiBpXyA9PSAwCi0gICAgLCB0eXBlbmFtZSBoYXNfYXBwbHlfID0gdHlwZW5hbWUgYXV4OjpoYXNfYXBwbHk8Rj46OnR5cGUKLSNlbmRpZgotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXykKLS8vIG1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNy4wCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIFQpID4KLXsKLSNlbHNlCi17ICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIFQpCi0gICAgICAgID46OnR5cGUgdHlwZTsKLSNlbmRpZgotfTsKLQotI2lmIGlfID09IDAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXyk8Rix0cnVlXz4KLSAgICA6IEY6OmFwcGx5Ci17Ci19OwotI2VuZGlmCi0KLSMgICBlbmRpZiAvLyB3b3JrYXJvdW5kcwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykKLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXAsaV8pPEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1NQRUNfUEFSQU1TKGlfLCBpbnQpPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotI2VuZGlmCi0KLSMgICB1bmRlZiBpXwotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDIKLQotI2VsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMgotCi0jICAgZGVmaW5lIGpfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKQotCi0jaWYgaV8gPT0gMCAmJiBqXyA9PSAwIFwKLSAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQkNDNTkwX1dPUktBUk9VTkRTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfQVBQTFkpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCBib29sIEZfaGFzX2FwcGx5ID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwX2JjYiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwgbmEgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDBfYmNiPCBGLCB0cnVlID4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6YXBwbHkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBORE5CT09TVF9QUF9DT01NQV9JRihpXykgQVVYNzc4MDc2X0FQUExZX1dSQVBfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcF9pbXBsLGlfKTwKLSAgICAgICAgICBORE5CT09TVF9NUExfUFBfQUREKGlfLCBqXykKLSAgICAgICAgLCBGCi0gICAgICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIFQpCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGFwcGx5X3dyYXBfaW1wbDBfYmNiPCBGLCBhdXg6Omhhc19hcHBseTwgRiA+Ojp2YWx1ZSA+Ojp0eXBlIHR5cGU7Ci19OwotI2Vsc2UKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwX2ltcGwsaV8pPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9BREQoaV8sIGpfKQotICAgICAgICAsIEYKLSAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgQVVYNzc4MDc2X0FQUExZX1dSQVBfUEFSQU1TKGlfLCBUKQotI2lmIGlfID09IDAgJiYgal8gPT0gMAotLy8vIHNpbmNlIHRoZSBkZWZhdWx0cyBhcmUgImxvc3QiLCB3ZSBoYXZlIHRvIHBhc3MgKnNvbWV0aGluZyogZXZlbiBmb3IgbnVsbGFyeQotLy8vIG1ldGFmdW5jdGlvbiBjbGFzc2VzCi0gICAgICAgIG5hCi0jZWxzZQotICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9BTkQoaV8sIGpfKSkgTkROQk9PU1RfTVBMX1BQX0VOVU0oal8sIG5hKQotI2VuZGlmCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0jICAgdW5kZWYgal8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQwMTY0YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVJHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVJHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXJnLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXJnX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX2Fzc2VydC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdHlfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJnX3R5cGVkZWYuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBhcmcuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLS8vIGxvY2FsIG1hY3JvLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVJHX05fREVGQVVMVF9QQVJBTVMocGFyYW0sdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICwgdmFsdWUgXAotICAgICAgICApIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVJHX05fREVGQVVMVF9QQVJBTVMocGFyYW0sdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL2FyZy5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVJHX05fREVGQVVMVF9QQVJBTVMKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BUkdfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGlfID4gMAotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8aV8+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBpXyk7Ci0gICAgdHlwZWRlZiBhcmc8TkROQk9PU1RfUFBfSU5DKGlfKT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIEFVWDc3ODA3Nl9BUkdfTl9ERUZBVUxUX1BBUkFNUyh0eXBlbmFtZSBVLCBuYSkKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoVSxpXykgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8LTE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICBBVVg3NzgwNzZfQVJHX05fREVGQVVMVF9QQVJBTVModHlwZW5hbWUgVSwgbmEpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi0jZW5kaWYgLy8gaV8gPiAwCi0KLSN1bmRlZiBpXwotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXJnX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hcmdfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRjOGVlMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcmdfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVJHX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FSR19GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcmdfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPiBzdHJ1Y3QgYXJnOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGFyZykKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BUkdfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXNzZXJ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Fzc2VydC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZDVkZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXNzZXJ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FTU0VSVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA2Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFzc2VydC5ocHAgODQ0NDIgMjAxMy0wNS0yMyAxNDozODoyMlogc3RldmVuX3dhdGFuYWJlICQKLS8vICREYXRlOiAyMDEzLTA1LTIzIDA3OjM4OjIyIC0wNzAwIChUaHUsIDIzIE1heSAyMDEzKSAkCi0vLyAkUmV2aXNpb246IDg0NDQyICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25lc3RlZF90eXBlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9udHRwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3BwX2NvdW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gbWFrZSBzdXJlICdzaXplX3QnIGlzIHBsYWNlZCBpbnRvICdzdGQnCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTcwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkgXAotICAgIHx8IChORE5CT09TVF9NUExfQ0ZHX0dDQyAhPSAwKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCA8PSA2MDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX1VTRV9SRUxBVElPTl9OQU1FUwotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDwgMHgzMjAyKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9CUk9LRU5fUE9JTlRFUl9UT19QT0lOVEVSX1RPX01FTUJFUgotI2VuZGlmCi0KLS8vIGFndXJ0LCAxMC9ub3YvMDY6IHVzZSBlbnVtcyBmb3IgQm9ybGFuZCAod2hpY2ggY2Fubm90IGNvcGUgd2l0aCBzdGF0aWMgY29uc3RhbnRzKSAKLS8vIGFuZCBHQ0MgKHdoaWNoIGlzc3VlcyAidW51c2VkIHZhcmlhYmxlIiB3YXJuaW5ncyB3aGVuIHN0YXRpYyBjb25zdGFudHMgYXJlIHVzZWQgCi0vLyBhdCBhIGZ1bmN0aW9uIHNjb3BlKQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSBcCi0gICAgfHwgKE5ETkJPT1NUX01QTF9DRkdfR0NDICE9IDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKFQsIGV4cHIpIGVudW0geyBleHByIH0KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKFQsIGV4cHIpIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCBleHByKQotI2VuZGlmCi0KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi1zdHJ1Y3QgZmFpbGVkIHt9OwotCi0vLyBhZ3VydCwgMjQvYXVnLzA0OiBNU1ZDIDcuMSB3b3JrYXJvdW5kIGhlcmUgYW5kIGJlbG93OiByZXR1cm4vYWNjZXB0IAotLy8gJ2Fzc2VydDxmYWxzZT4nIGJ5IHJlZmVyZW5jZTsgY2FuJ3QgYXBwbHkgaXQgdW5jb25kaXRpb25hbGx5IC0tIGFwcGFyZW50bHkgaXQKLS8vIGRlZ3JhZGVzIHRoZSBxdWFsaXR5IG9mIEdDQyBkaWFnbm9zdGljcwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMxMCkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FTU0VSVF9BUkcoeCkgeCYKLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BU1NFUlRfQVJHKHgpIHgKLSNlbmRpZgotCi10ZW1wbGF0ZTwgYm9vbCBDID4gIHN0cnVjdCBhc3NlcnQgICAgICAgIHsgdHlwZWRlZiB2b2lkKiB0eXBlOyB9OwotdGVtcGxhdGU8PiAgICAgICAgICBzdHJ1Y3QgYXNzZXJ0PGZhbHNlPiB7IHR5cGVkZWYgQVVYNzc4MDc2X0FTU0VSVF9BUkcoYXNzZXJ0KSB0eXBlOyB9OwotCi10ZW1wbGF0ZTwgYm9vbCBDID4KLWludCBhc3NlcnRpb25fZmFpbGVkKCB0eXBlbmFtZSBhc3NlcnQ8Qz46OnR5cGUgKTsKLQotdGVtcGxhdGU8IGJvb2wgQyA+Ci1zdHJ1Y3QgYXNzZXJ0aW9uCi17Ci0gICAgc3RhdGljIGludCBmYWlsZWQoIGFzc2VydDxmYWxzZT4gKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhc3NlcnRpb248dHJ1ZT4KLXsKLSAgICBzdGF0aWMgaW50IGZhaWxlZCggdm9pZCogKTsKLX07Ci0KLXN0cnVjdCBhc3NlcnRfCi17Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEgPiBzdHJ1Y3QgdHlwZXMge307Ci0jZW5kaWYKLSAgICBzdGF0aWMgYXNzZXJ0XyBjb25zdCBhcmc7Ci0gICAgZW51bSByZWxhdGlvbnMgeyBlcXVhbCA9IDEsIG5vdF9lcXVhbCwgZ3JlYXRlciwgZ3JlYXRlcl9lcXVhbCwgbGVzcywgbGVzc19lcXVhbCB9OwotfTsKLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19BU1NFUlRfVVNFX1JFTEFUSU9OX05BTUVTKQotCi1ib29sIG9wZXJhdG9yPT0oIGZhaWxlZCwgZmFpbGVkICk7Ci1ib29sIG9wZXJhdG9yIT0oIGZhaWxlZCwgZmFpbGVkICk7Ci1ib29sIG9wZXJhdG9yPiggZmFpbGVkLCBmYWlsZWQgKTsKLWJvb2wgb3BlcmF0b3I+PSggZmFpbGVkLCBmYWlsZWQgKTsKLWJvb2wgb3BlcmF0b3I8KCBmYWlsZWQsIGZhaWxlZCApOwotYm9vbCBvcGVyYXRvcjw9KCBmYWlsZWQsIGZhaWxlZCApOwotCi0jaWYgZGVmaW5lZChfX0VER19WRVJTSU9OX18pCi10ZW1wbGF0ZTwgYm9vbCAoKikoZmFpbGVkLCBmYWlsZWQpLCBsb25nIHgsIGxvbmcgeSA+IHN0cnVjdCBhc3NlcnRfcmVsYXRpb24ge307Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX1JFTEFUSU9OKHgsIHksIHIpIGFzc2VydF9yZWxhdGlvbjxyLHgseT4KLSNlbHNlCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgeCksIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIHkpLCBib29sICgqKShmYWlsZWQsIGZhaWxlZCkgPiAKLXN0cnVjdCBhc3NlcnRfcmVsYXRpb24ge307Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX1JFTEFUSU9OKHgsIHksIHIpIGFzc2VydF9yZWxhdGlvbjx4LHkscj4KLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9VU0VfUkVMQVRJT05fTkFNRVMKLQotbmRuYm9vc3Q6Om1wbDo6YXV4Ojp3ZWlnaHRlZF90YWc8MT46OnR5cGUgb3BlcmF0b3I9PSggYXNzZXJ0XywgYXNzZXJ0XyApOwotbmRuYm9vc3Q6Om1wbDo6YXV4Ojp3ZWlnaHRlZF90YWc8Mj46OnR5cGUgb3BlcmF0b3IhPSggYXNzZXJ0XywgYXNzZXJ0XyApOwotbmRuYm9vc3Q6Om1wbDo6YXV4Ojp3ZWlnaHRlZF90YWc8Mz46OnR5cGUgb3BlcmF0b3I+KCAgYXNzZXJ0XywgYXNzZXJ0XyApOwotbmRuYm9vc3Q6Om1wbDo6YXV4Ojp3ZWlnaHRlZF90YWc8ND46OnR5cGUgb3BlcmF0b3I+PSggYXNzZXJ0XywgYXNzZXJ0XyApOwotbmRuYm9vc3Q6Om1wbDo6YXV4Ojp3ZWlnaHRlZF90YWc8NT46OnR5cGUgb3BlcmF0b3I8KCBhc3NlcnRfLCBhc3NlcnRfICk7Ci1uZG5ib29zdDo6bXBsOjphdXg6OndlaWdodGVkX3RhZzw2Pjo6dHlwZSBvcGVyYXRvcjw9KCBhc3NlcnRfLCBhc3NlcnRfICk7Ci0KLXRlbXBsYXRlPCBhc3NlcnRfOjpyZWxhdGlvbnMgciwgbG9uZyB4LCBsb25nIHkgPiBzdHJ1Y3QgYXNzZXJ0X3JlbGF0aW9uIHt9OwotCi0jZW5kaWYgCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE3MDApCi0KLXRlbXBsYXRlPGNsYXNzIFByZWQ+Ci1zdHJ1Y3QgZXh0cmFjdF9hc3NlcnRfcHJlZDsKLQotdGVtcGxhdGU8Y2xhc3MgUHJlZD4KLXN0cnVjdCBleHRyYWN0X2Fzc2VydF9wcmVkPHZvaWQoUHJlZCk+IHsgdHlwZWRlZiBQcmVkIHR5cGU7IH07Ci0KLXRlbXBsYXRlPGNsYXNzIFByZWQ+Ci1zdHJ1Y3QgZXZhbF9hc3NlcnQgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZXh0cmFjdF9hc3NlcnRfcHJlZDxQcmVkPjo6dHlwZSBQOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6dHlwZSBwX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjptcGw6OmlmX2M8cF90eXBlOjp2YWx1ZSwKLSAgICAgICAgQVVYNzc4MDc2X0FTU0VSVF9BUkcoYXNzZXJ0PGZhbHNlPiksCi0gICAgICAgIGZhaWxlZCAqKioqKioqKioqKiogUDo6KioqKioqKioqKioqCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUHJlZD4KLXN0cnVjdCBldmFsX2Fzc2VydF9ub3QgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZXh0cmFjdF9hc3NlcnRfcHJlZDxQcmVkPjo6dHlwZSBQOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6dHlwZSBwX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjptcGw6OmlmX2M8IXBfdHlwZTo6dmFsdWUsCi0gICAgICAgIEFVWDc3ODA3Nl9BU1NFUlRfQVJHKGFzc2VydDxmYWxzZT4pLAotICAgICAgICBmYWlsZWQgKioqKioqKioqKioqIDo6bmRuYm9vc3Q6Om1wbDo6bm90XzxQPjo6KioqKioqKioqKioqCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotVCBtYWtlX2Fzc2VydF9hcmcoKTsKLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19BU1NFUlRfQlJPS0VOX1BPSU5URVJfVE9fUE9JTlRFUl9UT19NRU1CRVIpCi0KLXRlbXBsYXRlPCBib29sID4gc3RydWN0IGFzc2VydF9hcmdfcHJlZF9pbXBsIHsgdHlwZWRlZiBpbnQgdHlwZTsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IGFzc2VydF9hcmdfcHJlZF9pbXBsPHRydWU+IHsgdHlwZWRlZiB2b2lkKiB0eXBlOyB9OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+IHN0cnVjdCBhc3NlcnRfYXJnX3ByZWQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFA6OnR5cGUgcF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXNzZXJ0X2FyZ19wcmVkX2ltcGw8IHBfdHlwZTo6dmFsdWUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFAgPiBzdHJ1Y3QgYXNzZXJ0X2FyZ19wcmVkX25vdAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6dHlwZSBwX3R5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIGJvb2wsIHAgPSAhcF90eXBlOjp2YWx1ZSApOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXNzZXJ0X2FyZ19wcmVkX2ltcGw8cD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4KLWZhaWxlZCAqKioqKioqKioqKiogKFByZWQ6OioqKioqKioqKioqKiAKLSAgICAgIGFzc2VydF9hcmcoIHZvaWQgKCopKFByZWQpLCB0eXBlbmFtZSBhc3NlcnRfYXJnX3ByZWQ8UHJlZD46OnR5cGUgKQotICAgICk7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4KLWZhaWxlZCAqKioqKioqKioqKiogKG5kbmJvb3N0OjptcGw6Om5vdF88UHJlZD46OioqKioqKioqKioqKiAKLSAgICAgIGFzc2VydF9ub3RfYXJnKCB2b2lkICgqKShQcmVkKSwgdHlwZW5hbWUgYXNzZXJ0X2FyZ19wcmVkX25vdDxQcmVkPjo6dHlwZSApCi0gICAgKTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWQgPgotQVVYNzc4MDc2X0FTU0VSVF9BUkcoYXNzZXJ0PGZhbHNlPikKLWFzc2VydF9hcmcoIHZvaWQgKCopKFByZWQpLCB0eXBlbmFtZSBhc3NlcnRfYXJnX3ByZWRfbm90PFByZWQ+Ojp0eXBlICk7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4KLUFVWDc3ODA3Nl9BU1NFUlRfQVJHKGFzc2VydDxmYWxzZT4pCi1hc3NlcnRfbm90X2FyZyggdm9pZCAoKikoUHJlZCksIHR5cGVuYW1lIGFzc2VydF9hcmdfcHJlZDxQcmVkPjo6dHlwZSApOwotCi0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX0JST0tFTl9QT0lOVEVSX1RPX1BPSU5URVJfVE9fTUVNQkVSCi0gICAgICAgIAotdGVtcGxhdGU8IGJvb2wgYywgdHlwZW5hbWUgUHJlZCA+IHN0cnVjdCBhc3NlcnRfYXJnX3R5cGVfaW1wbAotewotICAgIHR5cGVkZWYgZmFpbGVkICAgICAgKioqKioqKioqKioqIFByZWQ6OiogbXdjdzgzX3drbmQ7Ci0gICAgdHlwZWRlZiBtd2N3ODNfd2tuZCAqKioqKioqKioqKioqIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZCA+IHN0cnVjdCBhc3NlcnRfYXJnX3R5cGVfaW1wbDx0cnVlLFByZWQ+Ci17Ci0gICAgdHlwZWRlZiBBVVg3NzgwNzZfQVNTRVJUX0FSRyhhc3NlcnQ8ZmFsc2U+KSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWQgPiBzdHJ1Y3QgYXNzZXJ0X2FyZ190eXBlCi0gICAgOiBhc3NlcnRfYXJnX3R5cGVfaW1wbDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChQcmVkKSk6OnZhbHVlLCBQcmVkID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4KLXR5cGVuYW1lIGFzc2VydF9hcmdfdHlwZTxQcmVkPjo6dHlwZSAKLWFzc2VydF9hcmcodm9pZCAoKikoUHJlZCksIGludCk7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4KLXR5cGVuYW1lIGFzc2VydF9hcmdfdHlwZTwgbmRuYm9vc3Q6Om1wbDo6bm90XzxQcmVkPiA+Ojp0eXBlIAotYXNzZXJ0X25vdF9hcmcodm9pZCAoKikoUHJlZCksIGludCk7Ci0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9VU0VfUkVMQVRJT05fTkFNRVMpCi10ZW1wbGF0ZTwgbG9uZyB4LCBsb25nIHksIGJvb2wgKCpyKShmYWlsZWQsIGZhaWxlZCkgPgotdHlwZW5hbWUgYXNzZXJ0X2FyZ190eXBlX2ltcGw8IGZhbHNlLE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX1JFTEFUSU9OKHgseSxyKSA+Ojp0eXBlCi1hc3NlcnRfcmVsX2FyZyggTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfUkVMQVRJT04oeCx5LHIpICk7Ci0jICAgZWxzZQotdGVtcGxhdGU8IGFzc2VydF86OnJlbGF0aW9ucyByLCBsb25nIHgsIGxvbmcgeSA+Ci10eXBlbmFtZSBhc3NlcnRfYXJnX3R5cGVfaW1wbDwgZmFsc2UsYXNzZXJ0X3JlbGF0aW9uPHIseCx5PiA+Ojp0eXBlCi1hc3NlcnRfcmVsX2FyZyggYXNzZXJ0X3JlbGF0aW9uPHIseCx5PiApOwotIyAgIGVuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9CUk9LRU5fUE9JTlRFUl9UT19QT0lOVEVSX1RPX01FTUJFUgotCi0jdW5kZWYgQVVYNzc4MDc2X0FTU0VSVF9BUkcKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTcwMCkKLQotLy8gTkROQk9PU1RfTVBMX0FTU0VSVCgocHJlZDx4LC4uLj4pKQotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlQocHJlZCkgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpKSA9IHNpemVvZiggXAotICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbl9mYWlsZWQ8ZmFsc2U+KCBcCi0gICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6Om1ha2VfYXNzZXJ0X2FyZzwgXAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6Om1wbDo6ZXZhbF9hc3NlcnQ8dm9pZCBwcmVkPjo6dHlwZSBcCi0gICAgICAgICAgICAgICAgPigpIFwKLSAgICAgICAgICAgICkgXAotICAgICAgICApIFwKLSAgICApIFwKLS8qKi8KLQotLy8gTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QoKHByZWQ8eCwuLi4+KSkKLQotI2RlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX05PVChwcmVkKSBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggXAotICAgICAgc3RkOjpzaXplX3QgXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRpb25faW5fbGluZV8sTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKCkpID0gc2l6ZW9mKCBcCi0gICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uX2ZhaWxlZDxmYWxzZT4oIFwKLSAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6bWFrZV9hc3NlcnRfYXJnPCBcCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6bXBsOjpldmFsX2Fzc2VydF9ub3Q8dm9pZCBwcmVkPjo6dHlwZSBcCi0gICAgICAgICAgICAgICAgPigpIFwKLSAgICAgICAgICAgICkgXAotICAgICAgICApIFwKLSAgICApIFwKLS8qKi8KLQotI2Vsc2UKLQotLy8gTkROQk9PU1RfTVBMX0FTU0VSVCgocHJlZDx4LC4uLj4pKQotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlQocHJlZCkgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpKSA9IHNpemVvZiggXAotICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbl9mYWlsZWQ8ZmFsc2U+KCBcCi0gICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydF9hcmcoICh2b2lkICgqKSBwcmVkKTAsIDEgKSBcCi0gICAgICAgICAgICApIFwKLSAgICAgICAgKSBcCi0gICAgKSBcCi0vKiovCi0KLS8vIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKChwcmVkPHgsLi4uPikpCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKHByZWQpIFwKLWVudW0geyBcCi0gICAgICBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSkgPSBzaXplb2YoIFwKLSAgICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRpb248ZmFsc2U+OjpmYWlsZWQoIFwKLSAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0X25vdF9hcmcoICh2b2lkICgqKSBwcmVkKTAsIDEgKSBcCi0gICAgICAgICAgICApIFwKLSAgICAgICAgKSBcCi19XAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QocHJlZCkgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpKSA9IHNpemVvZiggXAotICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbl9mYWlsZWQ8ZmFsc2U+KCBcCi0gICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydF9ub3RfYXJnKCAodm9pZCAoKikgcHJlZCkwLCAxICkgXAotICAgICAgICAgICAgKSBcCi0gICAgICAgICkgXAotICAgKSBcCi0vKiovCi0jZW5kaWYKLQotI2VuZGlmCi0KLS8vIE5ETkJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oeCwgPT18IT18PD18PHw+PXw+LCB5KQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9VU0VfUkVMQVRJT05fTkFNRVMpCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9CUk9LRU5fUE9JTlRFUl9UT19QT0lOVEVSX1RPX01FTUJFUikKLS8vIGFndXJ0LCA5L25vdi8wNjogJ2VudW0nIGJlbG93IGlzIGEgd29ya2Fyb3VuZCBmb3IgZ2NjIDQuMC40LzQuMS4xIGJ1Z3MgIzI5NTIyIGFuZCAjMjk1MTgKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTl9JTVBMKGNvdW50ZXIsIHgsIHJlbCwgeSkgICAgICBcCi1lbnVtIHsgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfcmVsX3ZhbHVlLGNvdW50ZXIpID0gKHggcmVsIHkpIH07IFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBcCi0gICAgICBzdGQ6OnNpemVfdCBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxjb3VudGVyKSA9IHNpemVvZiggXAotICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRpb25fZmFpbGVkPE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X3JlbF92YWx1ZSxjb3VudGVyKT4oIFwKLSAgICAgICAgICAgIChuZG5ib29zdDo6bXBsOjpmYWlsZWQgKioqKioqKioqKioqICggbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0X3JlbGF0aW9uPCBcCi0gICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRfOjpyZWxhdGlvbnMoIHNpemVvZiggXAotICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydF86OmFyZyByZWwgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0Xzo6YXJnIFwKLSAgICAgICAgICAgICAgICAgICAgKSApIFwKLSAgICAgICAgICAgICAgICAsIHggXAotICAgICAgICAgICAgICAgICwgeSBcCi0gICAgICAgICAgICAgICAgPjo6KioqKioqKioqKioqKSkgMCApIFwKLSAgICAgICAgKSBcCi0gICAgKSBcCi0vKiovCi0jICAgZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OX0lNUEwoY291bnRlciwgeCwgcmVsLCB5KSAgICBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggXAotICAgICAgc3RkOjpzaXplX3QgXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfcmVsLGNvdW50ZXIpID0gc2l6ZW9mKCBcCi0gICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0Xzo6YXJnIHJlbCBuZG5ib29zdDo6bXBsOjphc3NlcnRfOjphcmcgXAotICAgICAgICApIFwKLSAgICApOyBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggYm9vbCwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfcmVsX3ZhbHVlLGNvdW50ZXIpID0gKHggcmVsIHkpICk7IFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBcCi0gICAgICBzdGQ6OnNpemVfdCBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxjb3VudGVyKSA9IHNpemVvZiggXAotICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRpb25fZmFpbGVkPE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X3JlbF92YWx1ZSxjb3VudGVyKT4oIFwKLSAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0X3JlbF9hcmcoIG5kbmJvb3N0OjptcGw6OmFzc2VydF9yZWxhdGlvbjwgXAotICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0Xzo6cmVsYXRpb25zKE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X3JlbCxjb3VudGVyKSkgXAotICAgICAgICAgICAgICAgICwgeCBcCi0gICAgICAgICAgICAgICAgLCB5IFwKLSAgICAgICAgICAgICAgICA+KCkgKSBcCi0gICAgICAgICAgICApIFwKLSAgICAgICAgKSBcCi0gICAgKSBcCi0vKiovCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OKHgsIHJlbCwgeSkgXAotTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTl9JTVBMKE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpLCB4LCByZWwsIHkpIFwKLS8qKi8KLQotI2Vsc2UgLy8gIU5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX1VTRV9SRUxBVElPTl9OQU1FUwotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9CUk9LRU5fUE9JTlRFUl9UT19QT0lOVEVSX1RPX01FTUJFUikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTih4LCByZWwsIHkpIFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBcCi0gICAgICBzdGQ6OnNpemVfdCBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSkgPSBzaXplb2YoIFwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uX2ZhaWxlZDwoeCByZWwgeSk+KCBuZG5ib29zdDo6bXBsOjphc3NlcnRfcmVsX2FyZyggXAotICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjpORE5CT09TVF9NUExfQVVYX0FTU0VSVF9SRUxBVElPTih4LHksKCZuZG5ib29zdDo6bXBsOjpvcGVyYXRvciByZWwpKSgpIFwKLSAgICAgICAgICAgICkgKSBcCi0gICAgICAgICkgXAotICAgICkgXAotLyoqLwotIyAgIGVsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTih4LCByZWwsIHkpIFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBcCi0gICAgICBzdGQ6OnNpemVfdCBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSkgPSBzaXplb2YoIFwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uX2ZhaWxlZDwoeCByZWwgeSk+KCAobmRuYm9vc3Q6Om1wbDo6ZmFpbGVkICoqKioqKioqKioqKiAoIFwKLSAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6Ok5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX1JFTEFUSU9OKHgseSwoJm5kbmJvb3N0OjptcGw6Om9wZXJhdG9yIHJlbCkpOjoqKioqKioqKioqKiopKTAgKSBcCi0gICAgICAgICkgXAotICAgICkgXAotLyoqLwotIyAgIGVuZGlmCi0KLSNlbmRpZgotCi0KLS8vIE5ETkJPT1NUX01QTF9BU1NFUlRfTVNHKCAocHJlZDx4LC4uLj46OnZhbHVlKSwgVVNFUl9QUk9WSURFRF9NRVNTQUdFLCAodHlwZXM8eCwuLi4+KSApIAotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMjAyKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9NU0dfSU1QTCggY291bnRlciwgYywgbXNnLCB0eXBlc18gKSBcCi1zdHJ1Y3QgbXNnOyBcCi10eXBlZGVmIHN0cnVjdCBORE5CT09TVF9QUF9DQVQobXNnLGNvdW50ZXIpIDogbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0XyBcCi17IFwKLSAgICB1c2luZyBuZG5ib29zdDo6bXBsOjphc3NlcnRfOjp0eXBlczsgXAotICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjpmYWlsZWQgKioqKioqKioqKioqIChtc2c6OioqKioqKioqKioqKiBhc3NlcnRfYXJnKCkpIHR5cGVzXyBcCi0gICAgeyByZXR1cm4gMDsgfSBcCi19IE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X2FyZyxjb3VudGVyKTsgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLGNvdW50ZXIpID0gc2l6ZW9mKCBcCi0gICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbjwoYyk+OjpmYWlsZWQoIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X2FyZyxjb3VudGVyKTo6YXNzZXJ0X2FyZygpICkgXAotICAgICAgICApIFwKLSAgICApIFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlRfTVNHX0lNUEwoIGNvdW50ZXIsIGMsIG1zZywgdHlwZXNfICkgIFwKLXN0cnVjdCBtc2c7IFwKLXR5cGVkZWYgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChtc2csY291bnRlcikgOiBuZG5ib29zdDo6bXBsOjphc3NlcnRfIFwKLXsgXAotICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjpmYWlsZWQgKioqKioqKioqKioqIChtc2c6OioqKioqKioqKioqKiBhc3NlcnRfYXJnKCkpIHR5cGVzXyBcCi0gICAgeyByZXR1cm4gMDsgfSBcCi19IE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X2FyZyxjb3VudGVyKTsgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLGNvdW50ZXIpID0gc2l6ZW9mKCBcCi0gICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbl9mYWlsZWQ8KGMpPiggTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfYXJnLGNvdW50ZXIpOjphc3NlcnRfYXJnKCkgKSBcCi0gICAgICAgICkgXAotICAgICkgXAotLyoqLwotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9NU0coIGMsIG1zZywgdHlwZXNfICkgXAotTkROQk9PU1RfTVBMX0FTU0VSVF9NU0dfSU1QTCggTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKCksIGMsIG1zZywgdHlwZXNfICkgXAotLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FTU0VSVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNkODk2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2F0X2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTikKLSAgICA+Ci1zdHJ1Y3QgYXQKLSAgICA6IGF0X2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSxOID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsYXQsKFNlcXVlbmNlLE4pKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikKLSAgICA+Ci1zdHJ1Y3QgYXRfYwotICAgIDogYXRfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlLG1wbDo6bG9uZ188Tj4gPgotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGF0KQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F0X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhODAyZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVRfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXRfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBhdF9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBOID4gc3RydWN0IGF0OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FUX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vTzFfc2l6ZV9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vTzFfc2l6ZV9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVkYTkyYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL08xX3NpemVfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX08xX1NJWkVfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX08xX1NJWkVfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IE8xX3NpemVfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIHJldHVybnMgJ1NlcXVlbmNlOjpzaXplJyBpZiBzZXF1ZW5jZSBoYXMgYSAnc2l6ZScKLS8vIG1lbWJlciwgYW5kIC0xIG90aGVyd2lzZTsgY29ucmV0ZSBzZXF1ZW5jZXMgbWlnaHQgb3ZlcnJpZGUgaXQgYnkgCi0vLyBzcGVjaWFsaXppbmcgZWl0aGVyIHRoZSAnTzFfc2l6ZV9pbXBsJyBvciB0aGUgcHJpbWFyeSAnTzFfc2l6ZScgdGVtcGxhdGUKLQotIyAgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKQotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBPMV9zaXplX2ltcGwKLSAgICA6IFNlcXVlbmNlOjpzaXplCi17Ci19OwotfQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBPMV9zaXplX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGlmXzwKLSAgICAgICAgICAgICAgYXV4OjpoYXNfc2l6ZTxTZXF1ZW5jZT4KLSAgICAgICAgICAgICwgYXV4OjpPMV9zaXplX2ltcGw8U2VxdWVuY2U+Ci0gICAgICAgICAgICAsIGxvbmdfPC0xPgotICAgICAgICAgICAgPjo6dHlwZQotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgYXV4OjpoYXNfc2l6ZTxTZXF1ZW5jZT4KLSAgICAgICAgICAgICwgYXV4OjpPMV9zaXplX2ltcGw8U2VxdWVuY2U+Ci0gICAgICAgICAgICAsIGxvbmdfPC0xPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChsb25nLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgIChpZl88Ci0gICAgICAgICAgICAgICAgICBhdXg6Omhhc19zaXplPFNlcXVlbmNlPgotICAgICAgICAgICAgICAgICwgYXV4OjpPMV9zaXplX2ltcGw8U2VxdWVuY2U+Ci0gICAgICAgICAgICAgICAgLCBsb25nXzwtMT4KLSAgICAgICAgICAgICAgICA+Ojp0eXBlOjp2YWx1ZSkKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotIyAgIGVsc2UgLy8gTkROQk9PU1RfTVNWQwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBPMV9zaXplX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwtMT4KLSAgICAgICAgewotICAgICAgICB9OwotfTsKLQotIyAgIGVuZGlmCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTzFfU0laRV9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUzYzRhNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWRsX2JhcnJpZXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYWRsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0FETF9CQVJSSUVSX05BTUVTUEFDRSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRSBuZG5ib29zdF9tcGxfCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4gbmFtZXNwYWNlIG5kbmJvb3N0X21wbF8gewotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRSB9Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTCh0eXBlKSBcCi0gICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IFwKLSAgICB1c2luZyA6Ok5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjp0eXBlOyBcCi0gICAgfSB9IFwKLS8qKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi1uYW1lc3BhY2UgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0UgeyBuYW1lc3BhY2UgYXV4IHt9IH0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyB1c2luZyBuYW1lc3BhY2UgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U7IAotbmFtZXNwYWNlIGF1eCB7IHVzaW5nIG5hbWVzcGFjZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6YXV4OyB9Ci19fQotI2VuZGlmCi0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fQURMX0JBUlJJRVJfTkFNRVNQQUNFCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0UgbmRuYm9vc3Q6Om1wbAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRSB9fQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0wodHlwZSkgLyoqLwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU2MjlmMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYNzc4MDc2X0FEVkFOQ0VfQkFDS1dBUkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVg3NzgwNzZfQURWQU5DRV9CQUNLV0FSRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFkdmFuY2VfYmFja3dhcmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9wcmlvci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBhZHZhbmNlX2JhY2t3YXJkLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvdW5yb2xsaW5nLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKSA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcsIDxuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vIGltcGxlbWVudGF0aW9uIGZvciBOIHRoYXQgZXhjZWVkcyBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikgPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8TkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORz4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVg3NzgwNzZfQURWQU5DRV9CQUNLV0FSRF9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAxCi0KLS8vIEZvciBnY2MgNC40IGNvbXBhdGFiaWxpdHksIHdlIG11c3QgaW5jbHVkZSB0aGUKLS8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCB0ZXN0IGluc2lkZSBhbiAjZWxzZSBjbGF1c2UuCi0jZWxzZSAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLSNpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0KLSNpZiBpXyA+IDAKLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yIFwKLSAgICAoMywoMSwgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpLCA8bmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotI2VuZGlmCi0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlcixORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkpIHR5cGU7Ci0gICAgfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotI2VuZGlmCi19OwotCi0jdW5kZWYgaV8KLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAyCi0KLSNlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDIKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl8wIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMikpKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl8xIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKSkKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPEFVWDc3ODA3Nl9JVEVSXzA+Ojp0eXBlIEFVWDc3ODA3Nl9JVEVSXzE7Ci0gICAgICAgIAotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JVEVSXzEKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVRFUl8wCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTFhMjZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9BRFZBTkNFX0ZPUldBUkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURWQU5DRV9GT1JXQVJEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWR2YW5jZV9mb3J3YXJkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBhZHZhbmNlX2ZvcndhcmQuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HLCA8bmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vIGltcGxlbWVudGF0aW9uIGZvciBOIHRoYXQgZXhjZWVkcyBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikgPiAKLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDxORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HPgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0FEVkFOQ0VfRk9SV0FSRF9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAxCi0KLS8vIEZvciBnY2MgNC40IGNvbXBhdGFiaWxpdHksIHdlIG11c3QgaW5jbHVkZSB0aGUKLS8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCB0ZXN0IGluc2lkZSBhbiAjZWxzZSBjbGF1c2UuCi0jZWxzZSAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLSNpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPCBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLQotI2lmIGlfID4gMAotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIgXAotICAgICgzLCgxLCBpXywgPG5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotI2VuZGlmCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsaV8pIHR5cGU7Ci0gICAgfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotI2VuZGlmCi19OwotCi0jdW5kZWYgaV8KLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAyCi0KLSNlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDIKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl8wIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMikpKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl8xIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKSkKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8QVVYNzc4MDc2X0lURVJfMD46OnR5cGUgQVVYNzc4MDc2X0lURVJfMTsKLSAgICAgICAgCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lURVJfMQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JVEVSXzAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyZ190eXBlZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJnX3R5cGVkZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDlhOTRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJnX3R5cGVkZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcmdfdHlwZWRlZi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotICAgIAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKFQsIG5hbWUpIHR5cGVkZWYgVCBuYW1lOwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYoVCwgbmFtZSkgLyoqLwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXRobWV0aWNfb3AuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hcml0aG1ldGljX29wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE3ZDNhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXRobWV0aWNfb3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcml0aG1ldGljX29wLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFyZ2VzdF9pbnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChBVVg3NzgwNzZfT1BfUFJFRklYKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfUFJFRklYIEFVWDc3ODA3Nl9PUF9OQU1FCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfb3AuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIEFVWDc3ODA3Nl9PUF9QUkVGSVguaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDKQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9QUkVGSVgsX3drbmQpCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlID0gKG4xIEFVWDc3ODA3Nl9PUF9UT0tFTiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzxULHZhbHVlPiB0eXBlOwotfTsKLX0KLSNlbmRpZgotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX0lNUExfTkFNRTxpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfVkFMVUVfQVJJVEhNRVRJQykKLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBBVVg3NzgwNzZfT1BfVE9LRU4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0jZWxzZQotICAgICAgICA6IGF1eDo6TkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9QUkVGSVgsX3drbmQpPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0jZW5kaWYKLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSN1bmRlZiBBVVg3NzgwNzZfT1BfVEFHX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X09QX0FSSVRZCi0jdW5kZWYgQVVYNzc4MDc2X09QX1BSRUZJWAotI3VuZGVmIEFVWDc3ODA3Nl9PUF9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X09QX1RPS0VOCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjhmNTY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQVJJVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVJJVFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcml0eS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8gYWd1cnQsIDE1L21hci8wMjogaXQncyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhlIHRlbXBsYXRlIHNvIHRoYXQgaXQgd2lsbCAKLS8vICJqdXN0IHdvcmsiIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc3BlY2lhbGl6YXRpb24sIGJ1dCBub3Qgb24gdGhlIGNvbXBpbGVycwotLy8gdGhhdCByZXF1aXJlIHRoZSBhcml0eSB3b3JrYXJvdW5kIGluIHRoZSBmaXJzdCBwbGFjZQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPgotc3RydWN0IGFyaXR5Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBOKTsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQVJJVFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXR5X3NwZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hcml0eV9zcGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjEwZWUxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXR5X3NwZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXJpdHlfc3BlYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoaSx0eXBlLG5hbWUpIFwKLW5hbWVzcGFjZSBhdXggeyBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGUgVCkgPiBcCi1zdHJ1Y3QgYXJpdHk8IFwKLSAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxUKSA+IFwKLSAgICAsIE4gXAotICAgID4gXAoteyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCBcCi0gICAgICAgICwgdmFsdWUgPSBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgKTsgXAotfTsgXAotfSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQyhpLHR5cGUsbmFtZSkgLyoqLwotI2VuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKGksbmFtZSkgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKGksdHlwZW5hbWUsbmFtZSkgXAotLyoqLwotCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKGksIG5hbWUpIFwKLW5hbWVzcGFjZSBhdXggeyBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGVuYW1lIFQpID4gXAotc3RydWN0IHRlbXBsYXRlX2FyaXR5PCBuYW1lPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxUKT4gPiBcCi0gICAgOiBpbnRfPGk+IFwKLXsgXAotfTsgXAotfSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoaSwgbmFtZSkgLyoqLwotI2VuZGlmCi0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2F0X2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDI4NzMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9BVF9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0FUX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhdF9pbXBsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FkdmFuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb247IGNvbnJldGUgc2VxdWVuY2VzIG1pZ2h0IG92ZXJyaWRlIGl0IGJ5IAotLy8gc3BlY2lhbGl6aW5nIGVpdGhlciB0aGUgJ2F0X2ltcGwnIG9yIHRoZSBwcmltYXJ5ICdhdCcgdGVtcGxhdGUKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgYXRfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhZHZhbmNlPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiZWdpbjxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgICwgTgotICAgICAgICAgICAgPjo6dHlwZSBpdGVyXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRlcmVmPGl0ZXJfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDIsIGF0X2ltcGwpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0FUX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2JlZ2luX2VuZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYmVnaW5fZW5kX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTU2N2FjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYmVnaW5fZW5kX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0JFR0lOX0VORF9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0JFR0lOX0VORF9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiZWdpbl9lbmRfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotCi1uYW1lc3BhY2UgYXV4IHsgCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IAotc3RydWN0IGJlZ2luX3R5cGUgCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OmJlZ2luIHR5cGU7IAotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IAotc3RydWN0IGVuZF90eXBlCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OmVuZCB0eXBlOyAKLX07Ci0KLX0KLQotLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbjsgY29ucmV0ZSBzZXF1ZW5jZXMgbWlnaHQgb3ZlcnJpZGUgaXQgYnkgCi0vLyBzcGVjaWFsaXppbmcgZWl0aGVyIHRoZSAnYmVnaW5faW1wbC9lbmRfaW1wbCcgb3IgdGhlIHByaW1hcnkgCi0vLyAnYmVnaW4vZW5kJyB0ZW1wbGF0ZXMKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgYmVnaW5faW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPGF1eDo6aGFzX2JlZ2luPFNlcXVlbmNlLCB0cnVlXz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXg6OmJlZ2luX3R5cGU8U2VxdWVuY2U+LCB2b2lkXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgZW5kX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjxhdXg6Omhhc19iZWdpbjxTZXF1ZW5jZSwgdHJ1ZV8+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV4OjplbmRfdHlwZTxTZXF1ZW5jZT4sIHZvaWRfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi0vLyBzcGVjaWFsaXplICdiZWdpbl90cmFpdC9lbmRfdHJhaXQnIGZvciB0d28gcHJlLWRlZmluZWQgdGFncwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JTVBMX1NQRUMobmFtZSwgdGFnLCByZXN1bHQpIFwKLXRlbXBsYXRlPD4gXAotc3RydWN0IG5hbWUjI19pbXBsPHRhZz4gXAoteyBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IGFwcGx5IFwKLSAgICB7IFwKLSAgICAgICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotICAgIH07IFwKLX07IFwKLS8qKi8KLQotLy8gYSBzZXF1ZW5jZSB3aXRoIG5lc3RlZCAnYmVnaW4vZW5kJyB0eXBlZGVmczsganVzdCBxdWVyeSB0aGVtCi1BVVg3NzgwNzZfSU1QTF9TUEVDKGJlZ2luLCBuZXN0ZWRfYmVnaW5fZW5kX3RhZywgdHlwZW5hbWUgU2VxdWVuY2U6OmJlZ2luKQotQVVYNzc4MDc2X0lNUExfU1BFQyhlbmQsIG5lc3RlZF9iZWdpbl9lbmRfdGFnLCB0eXBlbmFtZSBTZXF1ZW5jZTo6ZW5kKQotCi0vLyBpZiBhIHR5cGUgJ1QnIGRvZXMgbm90IGNvbnRhaW4gJ2JlZ2luL2VuZCcgb3IgJ3RhZycgbWVtYmVycyAKLS8vIGFuZCBkb2Vzbid0IHNwZWNpYWxpemUgZWl0aGVyICdiZWdpbi9lbmQnIG9yICdiZWdpbl9pbXBsL2VuZF9pbXBsJyAKLS8vIHRlbXBsYXRlcywgdGhlbiB3ZSBlbmQgdXAgaGVyZQotQVVYNzc4MDc2X0lNUExfU1BFQyhiZWdpbiwgbm9uX3NlcXVlbmNlX3RhZywgdm9pZF8pCi1BVVg3NzgwNzZfSU1QTF9TUEVDKGVuZCwgbm9uX3NlcXVlbmNlX3RhZywgdm9pZF8pCi1BVVg3NzgwNzZfSU1QTF9TUEVDKGJlZ2luLCBuYSwgdm9pZF8pCi1BVVg3NzgwNzZfSU1QTF9TUEVDKGVuZCwgbmEsIHZvaWRfKQotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lNUExfU1BFQwotCi0KLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUNfSU1QTCgxLGJlZ2luX2ltcGwpCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDX0lNUEwoMSxlbmRfaW1wbCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQkVHSU5fRU5EX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NsZWFyX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jbGVhcl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFlNTU2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NsZWFyX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ0xFQVJfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DTEVBUl9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY2xlYXJfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jbGVhcl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uOyB0aGUgZGVmaW5pdGlvbiBpcyBuZWVkZWQgdG8gbWFrZSBNU1ZDIGhhcHB5Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGNsZWFyX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYXBwbHk7Ci19OwotCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDEsIGNsZWFyX2ltcGwpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NMRUFSX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbW1vbl9uYW1lX3drbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0YTcxYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbW1vbl9uYW1lX3drbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY29tbW9uX25hbWVfd2tuZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NTYxKQotLy8gYWd1cnQsIDEyL25vdi8wMjogdG8gc3VwcHJlc3MgdGhlIGJvZ3VzICJDYW5ub3QgaGF2ZSBib3RoIGEgdGVtcGxhdGUgY2xhc3MgCi0vLyBhbmQgZnVuY3Rpb24gbmFtZWQgJ3h4eCciIGRpYWdub3N0aWMKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EKG5hbWUpIFwKLW5hbWVzcGFjZSBuYW1lXyMjd2tuZCB7IFwKLXRlbXBsYXRlPCB0eXBlbmFtZSA+IHZvaWQgbmFtZSgpOyBcCi19IFwKLS8qKi8KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQobmFtZSkgLyoqLwotCi0jZW5kaWYgLy8gX19CT1JMQU5EQ19fCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JlZDZhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb21wYXJpc29uX29wLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9PUF9QUkVGSVgpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9QUkVGSVggQVVYNzc4MDc2X09QX05BTUUKLSNlbmRpZgotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9BUklUWSAyCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udW1lcmljX29wLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBBVVg3NzgwNzZfT1BfUFJFRklYLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBNU1ZDIHdvcmthcm91bmQ6IGltcGxlbWVudCBsZXNzIGluIHRlcm1zIG9mIGdyZWF0ZXIKLSNpZiAwIEFVWDc3ODA3Nl9PUF9UT0tFTiAxICYmICEoMSBBVVg3NzgwNzZfT1BfVE9LRU4gMCkgJiYgISgwIEFVWDc3ODA3Nl9PUF9UT0tFTiAwKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1AoTjEsIE4yKSBcCi0gICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QKE4xLCBOMikgXAotICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgXAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9UT0tFTiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSBcCi0gICAgICAgICkgXAotLyoqLwotI2VuZGlmCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDKQotICAgICAgICA6IGJvb2xfPCBBVVg3NzgwNzZfT1AoTjEsIE4yKSA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IEFVWDc3ODA3Nl9PUChOMSwgTjIpKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi0jdW5kZWYgQVVYNzc4MDc2X09QCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSN1bmRlZiBBVVg3NzgwNzZfT1BfVEFHX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X09QX0FSSVRZCi0jdW5kZWYgQVVYNzc4MDc2X09QX1BSRUZJWAotI3VuZGVmIEFVWDc3ODA3Nl9PUF9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X09QX1RPS0VOCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9hZGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYWRsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU3OTRkNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9hZGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0FETF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQURMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWRsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2djYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0vLyBhZ3VydCwgMjUvYXByLzA0OiB0ZWNobmljYWxseSwgdGhlIEFETCB3b3JrYXJvdW5kIGlzIG9ubHkgbmVlZGVkIGZvciBHQ0MsCi0vLyBidXQgcHV0dGluZyBldmVyeXRoaW5nIGV4cGVjdCBwdWJsaWMsIHVzZXItc3BlY2lhbGl6YWJsZSBtZXRhZnVuY3Rpb25zIGludG8KLS8vIGEgc2VwYXJhdGUgZ2xvYmFsIG5hbWVzcGFjZSBoYXMgYSBuaWNlIHNpZGUgZWZmZWN0IG9mIHJlZHVjaW5nIHRoZSBsZW5ndGggCi0vLyBvZiB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIHN5bWJvbHMsIHNvIHdlIGFwcGx5IHRoZSB3b3JrYXJvdW5kIG9uIGFsbCAKLS8vIHBsYXRmb3JtcyB0aGF0IGNhbiBoYW5kbGUgaXQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQURMX0JBUlJJRVJfTkFNRVNQQUNFKSBcCi0gICAgJiYgKCAgIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDE0MDApKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDIpKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04sIE5ETkJPT1NUX1RFU1RFRF9BVCg4MTApKSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0FETF9CQVJSSUVSX05BTUVTUEFDRQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0FETF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2FycmF5cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9hcnJheXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzFhZjM0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2FycmF5cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQVJSQVlTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19BUlJBWVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcnJheXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERVBFTkRFTlRfQVJSQVlfVFlQRVMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKSBcCi0gICAgJiYgKCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fREVQRU5ERU5UX0FSUkFZX1RZUEVTCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQVJSQVlTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmNjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2JjYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMzU1NzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmNjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19CQ0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0JDQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiY2MuaHBwIDQ5MjcyIDIwMDgtMTAtMTEgMDY6NTA6NDZaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwNC0wOS0wMiAxMDo0MTozNyAtMDUwMCAoVGh1LCAwMiBTZXAgMjAwNCkgJAotLy8gJFJldmlzaW9uOiAyNDg3NCAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JDQzU5MF9XT1JLQVJPVU5EUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1OTApIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0JDQzU5MF9XT1JLQVJPVU5EUwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0JDQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2OGQ1ODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQklORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQklORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiaW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQklORF9URU1QTEFURSkgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoICAgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0JJTkRfVEVNUExBVEUKLQotI2VuZGlmCi0KLS8vI2RlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQklORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2NvbXBpbGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2NvbXBpbGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ2ZTczYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jb21waWxlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQ09NUElMRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0NPTVBJTEVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY29tcGlsZXIuaHBwIDUzMTg5IDIwMDktMDUtMjIgMjA6MDc6NTVaIGhrYWlzZXIgJAotLy8gJERhdGU6IDIwMDktMDUtMjIgMTM6MDc6NTUgLTA3MDAgKEZyaSwgMjIgTWF5IDIwMDkpICQKLS8vICRSZXZpc2lvbjogNTMxODkgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgbXN2YzYwCi0KLSMgICBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSIG1zdmM3MAotCi0jICAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01QTF9DRkdfR0NDLCBORE5CT09TVF9URVNURURfQVQoMHgwMzA0KSkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSIGdjYwotCi0jICAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLSMgICAgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiBiY2M1NTEKLSMgICAgICAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1OTApCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgYmNjCi0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiBiY2NfcHJlNTkwCi0jICAgICAgIGVuZGlmCi0KLSMgICBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSIGRtYwotCi0jICAgZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pCi0jICAgICAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgbXdjdwotIyAgICAgICBlbHNlCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgcGxhaW4KLSMgICAgICAgZW5kaWYKLQotIyAgIGVsaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgbm9fY3RwcwotCi0jICAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVEVNUExBVEVfVEVNUExBVEVfUEFSQU1FVEVSUykKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSIG5vX3R0cAotCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgcGxhaW4KLSMgICBlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0NPTVBJTEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhNTBhMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19DVFBTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19DVFBTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY3Rwcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19OT05UWVBFX1RFTVBMQVRFX1BBUlRJQUxfU1BFQykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDU4MikKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDCi0KLSNlbmRpZgotCi0vLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OIGlzIGRlZmluZWQgaW4gPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19DVFBTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZG1jX2FtYmlndW91c19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2RtY19hbWJpZ3VvdXNfY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxOTYyNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZG1jX2FtYmlndW91c19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19ETUNfQU1CSUdVT1VTX0NUUFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0RNQ19BTUJJR1VPVVNfQ1RQU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBkbWNfYW1iaWd1b3VzX2N0cHMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0RNQ19BTUJJR1VPVVNfQ1RQUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19ETUNfQU1CSUdVT1VTX0NUUFMKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19ETUNfQU1CSUdVT1VTX0NUUFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3NWE5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0RUUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfRFRQX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZHRwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0vLyBNV0NXIDcueC04LjAgImxvc3RzIiBkZWZhdWx0IHRlbXBsYXRlIHBhcmFtZXRlcnMgb2YgbmVzdGVkIGNsYXNzIAotLy8gdGVtcGxhdGVzIHdoZW4gdGhlaXIgb3duZXIgY2xhc3NlcyBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byBvdGhlciAKLS8vIHRlbXBsYXRlczsgQm9ybGFuZCA1LjUuMSAiZm9yZ2V0cyIgdGhlbSBmcm9tIHRoZSB2ZXJ5IGJlZ2lubmluZyAoaWYgCi0vLyB0aGUgb3duZXIgY2xhc3MgaXMgYSBjbGFzcyB0ZW1wbGF0ZSksIGFuZCBCb3JsYW5kIDUuNiBpc24ndCBldmVuCi0vLyBhYmxlIHRvIGNvbXBpbGUgYSBkZWZpbml0aW9uIG9mIG5lc3RlZCBjbGFzcyB0ZW1wbGF0ZSB3aXRoIERUUAotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTCi0KLSNlbmRpZgotCi0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoICAgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8PSAweDMwMDEpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpIFwKLSAgICAgICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKSBcCi0gICAgICAgICkKLSAgICAgICAgCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfRFRQX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlODkwMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19FVElfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0VUSV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGV0aS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIGZsYWdzIGZvciBNU1ZDIDYuNSdzIHNvLWNhbGxlZCAiZWFybHkgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiBidWciCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcKLQotI2VuZGlmCi0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19NU1ZDXzcwX0VUSV9CVUcKLQotI2VuZGlmCi0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpIFwKLSAgICAgICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRykgXAotICAgICAgICApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19FVElfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTdlNWVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0ZPUldBUkRJTkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0ZPUldBUkRJTkdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZm9yd2FyZGluZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0ZPUldBUkRJTkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk2NDRjMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0dDQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfR0NDX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGdjYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19HQ0MgKChfX0dOVUNfXyA8PCA4KSB8IF9fR05VQ19NSU5PUl9fKQotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19HQ0MgMAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19HQ0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaGFzX2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhkZDE2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0hBU19BUFBMWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSEFTX0FQUExZX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc19hcHBseS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfeHh4LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfQVBQTFkpIFwKLSAgICAmJiAoICAgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFgpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDwgMzAwKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDIpKSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0hBU19BUFBMWQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0hBU19BUFBMWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2hhc194eHguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaGFzX3h4eC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmOWExMTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaGFzX3h4eC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSEFTX1hYWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSEFTX1hYWF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc194eHguaHBwIDYzNTE4IDIwMTAtMDctMDIgMDg6MzI6MDNaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAxMC0wNy0wMiAwMTozMjowMyAtMDcwMCAoRnJpLCAwMiBKdWwgMjAxMCkgJAotLy8gJFJldmlzaW9uOiA2MzUxOCAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0vLyBhZ3VydCwgMTEvamFuLzAzOiBzaWduYWxzIGEgc3R1Yi1vbmx5ICdoYXNfeHh4JyBpbXBsZW1lbnRhdGlvbgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYKSBcCi0gICAgJiYgKCAgIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTikgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8PSAyKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkgXAotICAgICAgICApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWF9URU1QTEFURQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0hBU19YWFhfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyNWJmMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWdyYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0lOVEVHUkFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19JTlRFR1JBTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRlZ3JhbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JDQ19JTlRFR1JBTF9DT05TVEFOVFMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19CQ0NfSU5URUdSQUxfQ09OU1RBTlRTCi0KLSNlbmRpZgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfVkFMVUVfQVJJVEhNRVRJQykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSU5URUdSQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5N2FiNmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0lOVEVMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19JTlRFTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRlbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotCi0vLyBORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiBpcyBkZWZpbmVkIGhlcmU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0lOVEVMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2ZTFiYmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19MQU1CREFfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0xBTUJEQV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhbWJkYS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotLy8gYWd1cnQsIDE1L2phbi8wMjogZnVsbC1mbGVkZ2VkIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIGJvdGggCi0vLyB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIF9hbmRfIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkgXAotICAgICYmICggICBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVEVNUExBVEVfVEVNUExBVEVfUEFSQU1FVEVSUykgXAotICAgICAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVAotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0xBTUJEQV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmN2ZjYWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfTVNWQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfTVNWQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG1zdmMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLQotLy8gTkROQk9PU1RfTVNWQyBpcyBkZWZpbmVkIGhlcmU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX01TVkNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjX3R5cGVuYW1lLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmNfdHlwZW5hbWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzA2YTk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmNfdHlwZW5hbWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX01TVkNfVFlQRU5BTUVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX01TVkNfVFlQRU5BTUVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBtc3ZjX3R5cGVuYW1lLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVNWQ19UWVBFTkFNRQotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVNWQ19UWVBFTkFNRSB0eXBlbmFtZQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19NU1ZDX1RZUEVOQU1FX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbnR0cC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9udHRwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM3NDAxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9udHRwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19OVFRQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19OVFRQX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnR0cC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIE1TVkMgNi41IElDRS1zIG9uIHRoZSBjb2RlIGFzIHNpbXBsZSBhcyB0aGlzIChzZWUgImF1eF8vbnR0cF9kZWNsLmhwcCIKLS8vIGZvciBhIHdvcmthcm91bmQpOgotLy8KLS8vICAgIG5hbWVzcGFjZSBzdGQgewotLy8gICAgdGVtcGxhdGU8IHR5cGVuYW1lIENoYXIgPiBzdHJ1Y3Qgc3RyaW5nOwotLy8gICAgfQotLy8KLS8vICAgIHZvaWQgZm9vKHN0ZDo6c3RyaW5nPGNoYXI+KTsKLS8vCi0vLyAgICBuYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLS8vICAgIHRlbXBsYXRlPCBpbnQgPiBzdHJ1Y3QgYXJnOwotLy8gICAgfX0KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTlRUUF9CVUcpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OVFRQX0JVRwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX05UVFBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL292ZXJsb2FkX3Jlc29sdXRpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGFiNWYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL292ZXJsb2FkX3Jlc29sdXRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBvdmVybG9hZF9yZXNvbHV0aW9uLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoICAgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg1OTApIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8IDB4MzAwMSkgXAotICAgICAgICApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcF9jb3VudGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3BwX2NvdW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWYzYWM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3BwX2NvdW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1BQX0NPVU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1BQX0NPVU5URVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHBfY291bnRlci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUikKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jICAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxMzAwKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKCkgX19DT1VOVEVSX18KLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSBfX0xJTkVfXwotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1BQX0NPVU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI1ZTZiYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1BSRVBST0NFU1NPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfUFJFUFJPQ0VTU09SX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHJlcHJvY2Vzc29yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fUFBfTUFDUk9fRVhQQU5TSU9OKSBcCi0gICAgJiYgKCAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NTgyKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDUwMikpIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX1BQX01BQ1JPX0VYUEFOU0lPTgotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTkVFRFNfVE9LRU5fUEFTVElOR19PUF9GT1JfVE9LRU5TX0pVWFRBUE9TSU5HKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotIyAgIGRlZmluZSBORE5CT09TVF9ORUVEU19UT0tFTl9QQVNUSU5HX09QX0ZPUl9UT0tFTlNfSlVYVEFQT1NJTkcKLSNlbmRpZgotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19QUkVQUk9DRVNTT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQyMWI4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1NUQVRJQ19DT05TVEFOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfU1RBVElDX0NPTlNUQU5UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc3RhdGljX2NvbnN0YW50LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLS8vIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCBpcyBkZWZpbmVkIGhlcmU6Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNlbHNlCi0vLyB1bmRlZiB0aGUgbWFjcm8gZm9yIHRoZSBwcmVwcm9jZXNzaW5nIG1vZGUKLSMgICB1bmRlZiBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfU1RBVElDX0NPTlNUQU5UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R0cC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkYTk1NjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19UVFBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1RUUF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHR0cC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNRVRFUlMpIFwKLSAgICAmJiAoIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfVEVNUExBVEVTKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCggMHg1OTApICkgXAotICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNRVRFUlMKLQotI2VuZGlmCi0KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoICAgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NUExfQ0ZHX0dDQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDMwMikpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1RUUF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzJiNzE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfVFlQRU9GX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19UWVBFT0ZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0eXBlb2YuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfSEFTX1RZUEVPRikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoICAgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0dDQykgJiYgTkROQk9PU1RfTVBMX0NGR19HQ0MgPj0gMHgwMzAyIFwKLSAgICAgICAgfHwgZGVmaW5lZChfX01XRVJLU19fKSAmJiBfX01XRVJLU19fID49IDB4MzAwMCBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0hBU19UWVBFT0YKLQotI2VuZGlmCi0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfSEFTX1RZUEVPRikKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19UWVBFT0ZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjgxMGU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1VTRV9QUkVQUk9DRVNTRURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1VTRV9QUkVQUk9DRVNTRURfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB1c2VfcHJlcHJvY2Vzc2VkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1VTRV9QUkVQUk9DRVNTRURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODBlYWJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1dPUktBUk9VTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1dPUktBUk9VTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB3b3JrYXJvdW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfV09SS0FST1VORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29udGFpbnNfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbnRhaW5zX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjVlZDBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29udGFpbnNfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05UQUlOU19JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTlRBSU5TX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY29udGFpbnNfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jb250YWluc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9maW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgY29udGFpbnNfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogbm90XzwgaXNfc2FtZTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZmluZDxTZXF1ZW5jZSxUPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBlbmQ8U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICAgICA+ID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBub3RfPCBpc19zYW1lPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmaW5kPFNlcXVlbmNlLFQ+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgID4gPiB0eXBlOwotCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgICAgICAobm90XzwgaXNfc2FtZTwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGZpbmQ8U2VxdWVuY2UsVD46OnR5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgICAgICA+ID46OnZhbHVlKQotICAgICAgICAgICAgKTsKLSNlbmRpZgotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDIsY29udGFpbnNfaW1wbCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09OVEFJTlNfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY291bnRfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvdW50X2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGU2Mzc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY291bnRfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb3VudF9hcmdzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2V4cHJfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1fTkFNRSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1fTkFNRSBUCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1RFTVBMQVRFX1BBUkFNKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19URU1QTEFURV9QQVJBTSB0eXBlbmFtZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19QQVJBTV9OQU1FCi0jZW5kaWYKLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1VTRV9TVEFOREFSRF9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUkVQRUFUIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1TKHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyggXAotICAgICAgICAgIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19SRVBFQVQgTkROQk9PU1RfUFBfUkVQRUFUCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BBUkFNUyhwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9JTkMoQVVYNzc4MDc2X0NPVU5UX0FSR1NfQVJJVFkpIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1VTRV9TVEFOREFSRF9QUF9QUklNSVRJVkVTCi0KLQotI2RlZmluZSBBVVg3NzgwNzZfSVNfQVJHX1RFTVBMQVRFX05BTUUgXAotICAgIE5ETkJPT1NUX1BQX0NBVChpc18sTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BSRUZJWCxfYXJnKSkgXAotLyoqLwotCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0ZVTkModW51c2VkLCBpLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0VYUFJfSUYoaSwgKykgXAotICAgIEFVWDc3ODA3Nl9JU19BUkdfVEVNUExBVEVfTkFNRTxORE5CT09TVF9QUF9DQVQocGFyYW0sTkROQk9PU1RfUFBfSU5DKGkpKT46OnZhbHVlIFwKLS8qKi8KLQotLy8gaXNfPHh4eD5fYXJnCi10ZW1wbGF0ZTwgQVVYNzc4MDc2X0NPVU5UX0FSR1NfVEVNUExBVEVfUEFSQU0gPgotc3RydWN0IEFVWDc3ODA3Nl9JU19BUkdfVEVNUExBVEVfTkFNRQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFVWDc3ODA3Nl9JU19BUkdfVEVNUExBVEVfTkFNRTxBVVg3NzgwNzZfQ09VTlRfQVJHU19ERUZBVUxUPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLS8vIDx4eHg+X2NvdW50X2FyZ3MKLXRlbXBsYXRlPAotICAgICAgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1TKEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1RFTVBMQVRFX1BBUkFNKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0NPVU5UX0FSR1NfUFJFRklYLF9jb3VudF9hcmdzKQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gQVVYNzc4MDc2X0NPVU5UX0FSR1NfUkVQRUFUKAotICAgICAgICAgIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0FSSVRZCi0gICAgICAgICwgQVVYNzc4MDc2X0NPVU5UX0FSR1NfRlVOQwotICAgICAgICAsIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BBUkFNX05BTUUKLSAgICAgICAgKSk7Ci19OwotCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfRlVOQwotI3VuZGVmIEFVWDc3ODA3Nl9JU19BUkdfVEVNUExBVEVfTkFNRQotI3VuZGVmIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BBUkFNUwotI3VuZGVmIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1JFUEVBVAotCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfQVJJVFkKLSN1bmRlZiBBVVg3NzgwNzZfQ09VTlRfQVJHU19ERUZBVUxUCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUFJFRklYCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfVVNFX1NUQU5EQVJEX1BQX1BSSU1JVElWRVMKLSN1bmRlZiBBVVg3NzgwNzZfQ09VTlRfQVJHU19URU1QTEFURV9QQVJBTQotI3VuZGVmIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BBUkFNX05BTUUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZmluZF9pZl9wcmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZmluZF9pZl9wcmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YyYjNjMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2ZpbmRfaWZfcHJlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9GSU5EX0lGX1BSRURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfRklORF9JRl9QUkVEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2FwcGx5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZGljYXRlID4KLXN0cnVjdCBmaW5kX2lmX3ByZWQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBub3RfPCBhdXg6Oml0ZXJfYXBwbHkxPFByZWRpY2F0ZSxJdGVyYXRvcj4gPiB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfRklORF9JRl9QUkVEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTdkMzRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9GT0xEX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmb2xkX2ltcGwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgZW5kaWYKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgZm9sZF9pbXBsLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKGl0ZXIpIHR5cGVuYW1lIGRlcmVmPGl0ZXI+Ojp0eXBlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVggZm9sZAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbF9ib2R5LmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsX2JvZHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGxfYm9keS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YzRiOWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGxfYm9keS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjUgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmb2xkX2ltcGxfYm9keS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvdW5yb2xsaW5nLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lURVJfRk9MRF9TVEVQKHVudXNlZCwgaSwgdW51c2VkMikgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBcCi0gICAgICAgICAgRm9yd2FyZE9wIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoc3RhdGUsaSkgXAotICAgICAgICAsIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoTkROQk9PU1RfUFBfQ0FUKGl0ZXIsaSkpIFwKLSAgICAgICAgPjo6dHlwZSBORE5CT09TVF9QUF9DQVQoc3RhdGUsTkROQk9PU1RfUFBfSU5DKGkpKTsgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PE5ETkJPT1NUX1BQX0NBVChpdGVyLGkpPjo6dHlwZSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0lOQyhpKSk7IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfaW1wbCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfY2h1bmspIFwKLSAgICAvKiovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKQotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLSMgICBpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORywgPG5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbF9ib2R5LmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vIGltcGxlbWVudGF0aW9uIGZvciBOIHRoYXQgZXhjZWVkcyBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikKLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUKLXsKLSAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwKLSAgICAgICAgICAoIChOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykgPCAwID8gMCA6IE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotICAgICAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi0vLyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBmb3Igc2VxdWVuY2VzIG9mIHVua25vd24gc2l6ZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wPgotICAgIDogQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoRmlyc3QpPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotIyAgIGVsc2UgLy8gTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0KLS8vIEJvcmxhbmQgaGF2ZSBzb21lIHNlcmlvdXMgcHJvYmxlbXMgd2l0aCB0aGUgdW5yb2xsZWQgdmVyc2lvbiwgc28KLS8vIHdlIGFsd2F5cyB1c2UgYSBiYXNpYyBpbXBsZW1lbnRhdGlvbgotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FCi17Ci0gICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChGaXJzdCk+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHN0YXRlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikKLSAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8TixMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHN0YXRlIHR5cGU7Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0gCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4KLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FOwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcsIDxuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGxfYm9keS5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0vLyBpbXBsZW1lbnRhdGlvbiBmb3IgTiB0aGF0IGV4Y2VlZHMgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPiAKLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgICAgICwgRmlyc3QKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBTdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gY2h1bmtfOwotCi0gICAgICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPAotICAgICAgICAgICAgICAoIChOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykgPCAwID8gMCA6IE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HICkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotLy8gZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gZm9yIHNlcXVlbmNlcyBvZiB1bmtub3duIHNpemUKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfbnVsbF9zdGVwKQotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8PiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FPC0xPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4gCi0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPEZpcnN0LExhc3Q+Ojp0eXBlCi0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9udWxsX3N0ZXApPExhc3QsU3RhdGU+Ci0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKTxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcD4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88aW50LGludCxpbnQsaW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKQotewotICAgIC8vIGNhbid0IGluaGVyaXQgaGVyZSAtIGl0IGJyZWFrcyBNU1ZDIDcuMAotICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTwtMT46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoRmlyc3QpPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikKLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUKLSAgICA6IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wPgotewotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfX19Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUKLSMgICB1bmRlZiBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lURVJfRk9MRF9TVEVQCi0KLSN1bmRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX09QCi0jdW5kZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBuXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPG5fLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0KLSAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKG5fLCBBVVg3NzgwNzZfSVRFUl9GT0xEX1NURVAsIHVudXNlZCkKLQotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHN0YXRlLG5fKSBzdGF0ZTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLG5fKSBpdGVyYXRvcjsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPD4gc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8bl8+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLQotICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKG5fLCBBVVg3NzgwNzZfSVRFUl9GT0xEX1NURVAsIHVudXNlZCkKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChzdGF0ZSxuXykgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsbl8pIGl0ZXJhdG9yOwotICAgIH07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88aW50LGludCxpbnQsaW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0jZW5kaWYKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSMgICB1bmRlZiBuXwotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTMyODRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzU0ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0ZVTExfTEFNQkRBX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0ZVTExfTEFNQkRBX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZnVsbF9sYW1iZGEuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9sYW1iZGFfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9wcm90ZWN0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvcXVvdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hcmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50X2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgZnVsbF9sYW1iZGEuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2RtY19hbWJpZ3VvdXNfY3Rwcy5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHBhcmFtKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHBhcmFtKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUklUWV9QQVJBTShwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX0FSSVRZX1BBUkFNKHBhcmFtKSBcCi0gICAgLyoqLwotCi0KLSNkZWZpbmUgbl8gTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKG5fLGJvb2wgQyxmYWxzZSkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgTkROQk9PU1RfTVBMX1BQX0VOVU0obl8sZmFsc2UpID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0jdW5kZWYgbl8KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICBBVVg3NzgwNzZfQVJJVFlfUEFSQU0odHlwZW5hbWUgQXJpdHkpCi0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPixUYWcgQVVYNzc4MDc2X0FSSVRZX1BBUkFNKGludF88LTE+KSA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsgCi19OwotCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgPG5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sVGFnIEFVWDc3ODA3Nl9BUklUWV9QQVJBTShpbnRfPDE+KSA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBUKQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPEYsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFQpPgotICAgICAgICAsIFRhZwotICAgICAgICBBVVg3NzgwNzZfQVJJVFlfUEFSQU0oaW50XzxORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSk+KQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPEYsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhUKT4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8RixUYWcxLEFyaXR5PgotICAgICAgICAsIFRhZzIKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwgcXVvdGUxPGF1eDo6dGVtcGxhdGVfYXJpdHk+LCB0eXBlbmFtZSBsMTo6cmVzdWx0XyA+IGFyaXR5XzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgaWZfPGlzX2xlLGFyaXR5XyxBcml0eT46OnR5cGUsVGFnMiA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyLCBsMz4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRE1DX0FNQklHVU9VU19DVFBTKQotCi0vLy8gd29ya2Fyb3VuZCBmb3IgTVdDVyA4LjMrL0VERyA8IDMwMywgbGVhZHMgdG8gYW1iaWd1aXR5IG9uIERpZ2l0YWwgTWFycwotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcxLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mjxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMj4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FSSVRZX1BBUkFNCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfTEFNQkRBX1BBUkFNUwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLSNlbHNlCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDMsIGxhbWJkYSkKLSNlbmRpZgotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfRlVMTF9MQU1CREFfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbiwgZGVwdGggPT0gMQotCi0vLyBGb3IgZ2NjIDQuNCBjb21wYXRhYmlsaXR5LCB3ZSBtdXN0IGluY2x1ZGUgdGhlCi0vLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEggdGVzdCBpbnNpZGUgYW4gI2Vsc2UgY2xhdXNlLgotI2Vsc2UgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0jaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGlfID4gMAotCi1uYW1lc3BhY2UgYXV4IHsKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfUkVTVUxUKHVudXNlZCwgaV8sIFQpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChULCBORE5CT09TVF9QUF9JTkMoaV8pKTo6cmVzdWx0XyBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9UWVBFKHVudXNlZCwgaV8sIFQpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChULCBORE5CT09TVF9QUF9JTkMoaV8pKTo6dHlwZSBcCi0gICAgLyoqLwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCB0eXBlbmFtZSBQKSA+IGNsYXNzIEYKLSAgICAsIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCB0eXBlbmFtZSBMKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQobGVfcmVzdWx0LGlfKQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfVFlQRSwgTCkKLSAgICAgICAgPiByZXN1bHRfOwotICAgIAotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCBBVVg3NzgwNzZfTEFNQkRBX1BBUkFNUyhpXywgdHlwZW5hbWUgUCkgPiBjbGFzcyBGCi0gICAgLCBBVVg3NzgwNzZfTEFNQkRBX1BBUkFNUyhpXywgdHlwZW5hbWUgTCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGxlX3Jlc3VsdCxpXyk8IHRydWVfLFRhZyxGLEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCBMKSA+Ci17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8Ci0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKHF1b3RlLGlfKTxGLFRhZz4KLSAgICAgICAgLCBORE5CT09TVF9NUExfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfUkVTVUxULCBMKQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9UWVBFCi0jICAgdW5kZWYgQVVYNzc4MDc2X1JFU1VMVAotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9MQU1CREFfVFlQRURFRih1bnVzZWQsIGlfLCBUKSBcCi0gICAgdHlwZWRlZiBsYW1iZGE8IE5ETkJPT1NUX1BQX0NBVChULCBORE5CT09TVF9QUF9JTkMoaV8pKSwgVGFnID4gXAotICAgICAgICBORE5CT09TVF9QUF9DQVQobCxORE5CT09TVF9QUF9JTkMoaV8pKTsgXAotLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JU19MRV9UWVBFREVGKHVudXNlZCwgaV8sIHVudXNlZDIpIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChsLE5ETkJPT1NUX1BQX0lOQyhpXykpOjppc19sZSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChpc19sZSxORE5CT09TVF9QUF9JTkMoaV8pKTsgXAotLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JU19MQU1CREFfRVhQUih1bnVzZWQsIGlfLCB1bnVzZWQyKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIFwKLSAgICBORE5CT09TVF9QUF9DQVQoaXNfbGUsTkROQk9PU1RfUFBfSU5DKGlfKSk6OnZhbHVlIFwKLS8qKi8KLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIHR5cGVuYW1lIFApID4gY2xhc3MgRgotICAgICwgQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPCAKLSAgICAgICAgICBGPEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCBUKT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgQVVYNzc4MDc2X0FSSVRZX1BBUkFNKGludF88aV8+KQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X0xBTUJEQV9UWVBFREVGLCBUKQotICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9JU19MRV9UWVBFREVGLCB1bnVzZWQpCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9JU19MQU1CREFfRVhQUiwgdW51c2VkKQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6Ok5ETkJPT1NUX1BQX0NBVChsZV9yZXN1bHQsaV8pPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCBsKQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfSVNfTEFNQkRBX0VYUFIKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVNfTEVfVFlQRURFRgotIyAgIHVuZGVmIEFVWDc3ODA3Nl9MQU1CREFfVFlQRURFRgotCi0jZW5kaWYgLy8gaV8gPiAwCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIFQpPgotICAgICAgICAsIFRhZwotICAgICAgICBBVVg3NzgwNzZfQVJJVFlfUEFSQU0oaW50XzxORE5CT09TVF9QUF9JTkMoaV8pPikKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPAotICAgICAgICAgIEYKLSAgICAgICAgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIFQpCi0gICAgICAgID4gcmVzdWx0XzsKLSAgICAgICAgCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0jdW5kZWYgaV8KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjkwMTFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0hBU19BUFBMWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9IQVNfQVBQTFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX2FwcGx5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2hhc194eHguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfYXBwbHkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfQVBQTFkpCi1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYoaGFzX2FwcGx5LCBhcHBseSwgZmFsc2UpCi0jZWxzZQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IGZhbHNlXyA+Ci1zdHJ1Y3QgaGFzX2FwcGx5Ci0gICAgOiBmYWxsYmFja18KLXsKLX07Ci0jZW5kaWYKLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9IQVNfQVBQTFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19iZWdpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19iZWdpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYzE3M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfYmVnaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSEFTX0JFR0lOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0hBU19CRUdJTl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc19iZWdpbi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKGhhc19iZWdpbiwgYmVnaW4sIHRydWUpCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfSEFTX0JFR0lOX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfcmViaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3JlYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwYjY2ZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfcmViaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0hBU19SRUJJTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSEFTX1JFQklORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc19yZWJpbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjQ0KSAmJiAhZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19pc19jbGFzcy5ocHA+Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyNDQpICYmICFkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKQotCi1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYoaGFzX3JlYmluZCwgcmViaW5kLCBmYWxzZSkKLQotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRihoYXNfcmViaW5kX2ltcGwsIHJlYmluZCwgZmFsc2UpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBoYXNfcmViaW5kCi0gICAgOiBpZl88IAotICAgICAgICAgIG1zdmNfaXNfY2xhc3M8VD4KLSAgICAgICAgLCBoYXNfcmViaW5kX2ltcGw8VD4KLSAgICAgICAgLCBib29sXzxmYWxzZT4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotI2Vsc2UgLy8gdGhlIHJlc3QKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaGFzX3JlYmluZF90YWcge307Ci1ub190YWcgb3BlcmF0b3J8KGhhc19yZWJpbmRfdGFnPGludD4sIHZvaWQgY29uc3Qgdm9sYXRpbGUqKTsKLQotIyAgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBoYXNfcmViaW5kCi17Ci0gICAgc3RhdGljIGhhc19yZWJpbmRfdGFnPFQ+KiBnZXQoKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICBzaXplb2YoaGFzX3JlYmluZF90YWc8aW50PigpIHwgZ2V0KCkpID09IHNpemVvZih5ZXNfdGFnKQotICAgICAgICApOwotfTsKLSMgICBlbHNlIC8vIF9fQk9STEFORENfXwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGhhc19yZWJpbmRfaW1wbAotewotICAgIHN0YXRpYyBUKiBnZXQoKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICBzaXplb2YoaGFzX3JlYmluZF90YWc8aW50PigpIHwgZ2V0KCkpID09IHNpemVvZih5ZXNfdGFnKQotICAgICAgICApOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGhhc19yZWJpbmQKLSAgICA6IGlmXzwgCi0gICAgICAgICAgaXNfY2xhc3M8VD4KLSAgICAgICAgLCBoYXNfcmViaW5kX2ltcGw8VD4KLSAgICAgICAgLCBib29sXzxmYWxzZT4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLSMgICBlbmRpZiAvLyBfX0JPUkxBTkRDX18KLQotI2VuZGlmCi0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9IQVNfUkVCSU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE1ZTkzMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0hBU19TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0hBU19TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX3NpemUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihzaXplKQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0hBU19TSVpFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfdGFnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3RhZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNjA4NjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfdGFnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0hBU19UQUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSEFTX1RBR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc190YWcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRihoYXNfdGFnLCB0YWcsIGZhbHNlKQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0hBU19UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc190eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTVmZTIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSEFTX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSEFTX1RZUEVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBoYXNfdHlwZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKGhhc190eXBlLCB0eXBlLCB0cnVlKQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0hBU19UWVBFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM1NzAzMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY29tcGlsZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05FRURTX1RPS0VOX1BBU1RJTkdfT1BfRk9SX1RPS0VOU19KVVhUQVBPU0lORykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1BSRVBST0NFU1NFRF9IRUFERVIgXAotICAgIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSL05ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9QUkVQUk9DRVNTRURfSEVBREVSIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIsLykjI05ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIFwKLS8qKi8KLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNzAwKSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lOQ0xVREVfU1RSSU5HIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvQVVYNzc4MDc2X1BSRVBST0NFU1NFRF9IRUFERVIpCi0jICAgaW5jbHVkZSBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSMgICB1bmRlZiBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSNlbHNlCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9TVFJJTkdJWkUobmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL0FVWDc3ODA3Nl9QUkVQUk9DRVNTRURfSEVBREVSKQotI2VuZGlmCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfUFJFUFJPQ0VTU0VEX0hFQURFUgotCi0jdW5kZWYgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW5zZXJ0ZXJfYWxnb3JpdGhtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW5zZXJ0ZXJfYWxnb3JpdGhtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E3NTk3OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2luc2VydGVyX2FsZ29yaXRobS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSU5TRVJURVJfQUxHT1JJVEhNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0lOU0VSVEVSX0FMR09SSVRITV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGluc2VydGVyX2FsZ29yaXRobS5ocHAgNTU2NDggMjAwOS0wOC0xOCAwNToxNjo1M1ogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA5LTA4LTE3IDIyOjE2OjUzIC0wNzAwIChNb24sIDE3IEF1ZyAyMDA5KSAkCi0vLyAkUmV2aXNpb246IDU1NjQ4ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iYWNrX2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZnJvbnRfaW5zZXJ0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2Zyb250LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmFja19pbnNlcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Zyb250X2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY2xlYXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSU5TRVJURVJfQUxHT1JJVEhNX0RFRihhcml0eSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EKG5hbWUpIFwKLXRlbXBsYXRlPCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoYXJpdHksIHR5cGVuYW1lIFAsIG5hKSBcCi0gICAgPiBcCi1zdHJ1Y3QgbmFtZSBcCi0gICAgOiBhdXg6Om5hbWUjI19pbXBsPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoYXJpdHksIFApPiBcCi17IFwKLX07IFwKLVwKLXRlbXBsYXRlPCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIHR5cGVuYW1lIFApIFwKLSAgICA+IFwKLXN0cnVjdCBuYW1lPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApLG5hID4gXAotICAgIDogaWZfPCBoYXNfcHVzaF9iYWNrPCB0eXBlbmFtZSBjbGVhcjxQMT46OnR5cGU+IFwKLSAgICAgICAgLCBhdXg6Om5hbWUjI19pbXBsPCBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCkgXAotICAgICAgICAgICAgLCBiYWNrX2luc2VydGVyPCB0eXBlbmFtZSBjbGVhcjxQMT46OnR5cGUgPiBcCi0gICAgICAgICAgICA+IFwKLSAgICAgICAgLCBhdXg6OnJldmVyc2VfIyNuYW1lIyNfaW1wbDwgXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApIFwKLSAgICAgICAgICAgICwgZnJvbnRfaW5zZXJ0ZXI8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZSA+IFwKLSAgICAgICAgICAgID4gXAotICAgICAgICA+Ojp0eXBlIFwKLXsgXAotfTsgXAotXAotdGVtcGxhdGU8IFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhhcml0eSwgdHlwZW5hbWUgUCwgbmEpIFwKLSAgICA+IFwKLXN0cnVjdCByZXZlcnNlXyMjbmFtZSBcCi0gICAgOiBhdXg6OnJldmVyc2VfIyNuYW1lIyNfaW1wbDxORE5CT09TVF9NUExfUFBfUEFSQU1TKGFyaXR5LCBQKT4gXAoteyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgXAotICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCB0eXBlbmFtZSBQKSBcCi0gICAgPiBcCi1zdHJ1Y3QgcmV2ZXJzZV8jI25hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCksbmEgPiBcCi0gICAgOiBpZl88IGhhc19wdXNoX2JhY2s8UDE+IFwKLSAgICAgICAgLCBhdXg6OnJldmVyc2VfIyNuYW1lIyNfaW1wbDwgXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApIFwKLSAgICAgICAgICAgICwgYmFja19pbnNlcnRlcjwgdHlwZW5hbWUgY2xlYXI8UDE+Ojp0eXBlID4gXAotICAgICAgICAgICAgPiBcCi0gICAgICAgICwgYXV4OjpuYW1lIyNfaW1wbDwgXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApIFwKLSAgICAgICAgICAgICwgZnJvbnRfaW5zZXJ0ZXI8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZSA+IFwKLSAgICAgICAgICAgID4gXAotICAgICAgICA+Ojp0eXBlIFwKLXsgXAotfTsgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKGFyaXR5LCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoYXJpdHksIHJldmVyc2VfIyNuYW1lKSBcCi0vKiovCi0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9JTlNFUlRFUl9BTEdPUklUSE1fREVGKGFyaXR5LCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQobmFtZSkgXAotdGVtcGxhdGU8IFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgdHlwZW5hbWUgUCkgXAotICAgID4gXAotc3RydWN0IGRlZl8jI25hbWUjI19pbXBsIFwKLSAgICA6IGlmXzwgaGFzX3B1c2hfYmFjazxQMT4gXAotICAgICAgICAsIGF1eDo6bmFtZSMjX2ltcGw8IFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKSBcCi0gICAgICAgICAgICAsIGJhY2tfaW5zZXJ0ZXI8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZSA+IFwKLSAgICAgICAgICAgID4gXAotICAgICAgICAsIGF1eDo6cmV2ZXJzZV8jI25hbWUjI19pbXBsPCBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCkgXAotICAgICAgICAgICAgLCBmcm9udF9pbnNlcnRlcjwgdHlwZW5hbWUgY2xlYXI8UDE+Ojp0eXBlID4gXAotICAgICAgICAgICAgPiBcCi0gICAgICAgID46OnR5cGUgXAoteyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgXAotICAgICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKGFyaXR5LCB0eXBlbmFtZSBQLCBuYSkgXAotICAgID4gXAotc3RydWN0IG5hbWUgXAoteyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPCBcCi0gICAgICAgICAgaXNfbmE8TkROQk9PU1RfUFBfQ0FUKFAsIGFyaXR5KT4gXAotICAgICAgICAsIGRlZl8jI25hbWUjI19pbXBsPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCk+IFwKLSAgICAgICAgLCBhdXg6Om5hbWUjI19pbXBsPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoYXJpdHksIFApPiBcCi0gICAgICAgID46OnR5cGUgdHlwZTsgXAotfTsgXAotXAotdGVtcGxhdGU8IFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgdHlwZW5hbWUgUCkgXAotICAgID4gXAotc3RydWN0IGRlZl9yZXZlcnNlXyMjbmFtZSMjX2ltcGwgXAotICAgIDogaWZfPCBoYXNfcHVzaF9iYWNrPFAxPiBcCi0gICAgICAgICwgYXV4OjpyZXZlcnNlXyMjbmFtZSMjX2ltcGw8IFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKSBcCi0gICAgICAgICAgICAsIGJhY2tfaW5zZXJ0ZXI8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZSA+IFwKLSAgICAgICAgICAgID4gXAotICAgICAgICAsIGF1eDo6bmFtZSMjX2ltcGw8IFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKSBcCi0gICAgICAgICAgICAsIGZyb250X2luc2VydGVyPCB0eXBlbmFtZSBjbGVhcjxQMT46OnR5cGUgPiBcCi0gICAgICAgICAgICA+IFwKLSAgICAgICAgPjo6dHlwZSBcCi17IFwKLX07IFwKLXRlbXBsYXRlPCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoYXJpdHksIHR5cGVuYW1lIFAsIG5hKSBcCi0gICAgPiBcCi1zdHJ1Y3QgcmV2ZXJzZV8jI25hbWUgXAoteyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPCBcCi0gICAgICAgICAgaXNfbmE8TkROQk9PU1RfUFBfQ0FUKFAsIGFyaXR5KT4gXAotICAgICAgICAsIGRlZl9yZXZlcnNlXyMjbmFtZSMjX2ltcGw8TkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKT4gXAotICAgICAgICAsIGF1eDo6cmV2ZXJzZV8jI25hbWUjI19pbXBsPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoYXJpdHksIFApPiBcCi0gICAgICAgID46OnR5cGUgdHlwZTsgXAotfTsgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKGFyaXR5LCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoYXJpdHksIHJldmVyc2VfIyNuYW1lKSBcCi0vKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0lOU0VSVEVSX0FMR09SSVRITV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW50ZWdyYWxfd3JhcHBlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2ludGVncmFsX3dyYXBwZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjI4MzRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW50ZWdyYWxfd3JhcHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRlZ3JhbF93cmFwcGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OIQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2NfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9zdGF0aWNfY2FzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotI2lmICFkZWZpbmVkKEFVWF9XUkFQUEVSX05BTUUpCi0jICAgZGVmaW5lIEFVWF9XUkFQUEVSX05BTUUgTkROQk9PU1RfUFBfQ0FUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsXykKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYX1dSQVBQRVJfUEFSQU1TKQotIyAgIGRlZmluZSBBVVhfV1JBUFBFUl9QQVJBTVMoTikgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSwgTikKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYX1dSQVBQRVJfSU5TVCkKLSMgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MjQwNykKLSMgICAgICAgZGVmaW5lIEFVWF9XUkFQUEVSX0lOU1QodmFsdWUpIEFVWF9XUkFQUEVSX05BTUU8IHZhbHVlID4KLSMgICBlbHNlIAotIyAgICAgICBkZWZpbmUgQVVYX1dSQVBQRVJfSU5TVCh2YWx1ZSkgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6OkFVWF9XUkFQUEVSX05BTUU8IHZhbHVlID4KLSMgICBlbmRpZgotI2VuZGlmCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IEFVWF9XUkFQUEVSX1BBUkFNUyhOKSA+Ci1zdHJ1Y3QgQVVYX1dSQVBQRVJfTkFNRQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChBVVhfV1JBUFBFUl9WQUxVRV9UWVBFLCB2YWx1ZSA9IE4pOwotLy8gYWd1cnQsIDA4L21hci8wMzogU0dJIE1JUFNwcm8gQysrIHdvcmthcm91bmQsIGhhdmUgdG8gI2lmZGVmIGJlY2F1c2Ugc29tZSAKLS8vIG90aGVyIGNvbXBpbGVycyAoZS5nLiBNU1ZDKSBhcmUgbm90IHBhcnRpY3VsYXJ5IGhhcHB5IGFib3V0IGl0Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLSAgICB0eXBlZGVmIHN0cnVjdCBBVVhfV1JBUFBFUl9OQU1FIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgQVVYX1dSQVBQRVJfTkFNRSB0eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9WQUxVRV9UWVBFIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jX3RhZyB0YWc7Ci0KLS8vIGhhdmUgdG8gI2lmZGVmIGhlcmU6IHNvbWUgY29tcGlsZXJzIGRvbid0IGxpa2UgdGhlICdOICsgMScgZm9ybSAoTVNWQyksCi0vLyB3aGlsZSBzb21lIG90aGVyIGRvbid0IGxpa2UgJ3ZhbHVlICsgMScgKEJvcmxhbmQpLCBhbmQgc29tZSBkb24ndCBsaWtlCi0vLyBlaXRoZXIKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjQzKQotIHByaXZhdGU6Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsIG5leHRfdmFsdWUgPSBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsIChOICsgMSkpKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSwgcHJpb3JfdmFsdWUgPSBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsIChOIC0gMSkpKTsKLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9JTlNUKG5leHRfdmFsdWUpIG5leHQ7Ci0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9JTlNUKHByaW9yX3ZhbHVlKSBwcmlvcjsKLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjEpKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNTAyKSkgXAotICAgIHx8IChORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8PSA1MzgwMCkgJiYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19ocHhzdGQ5OCwgIT0gMSkpKQotICAgIHR5cGVkZWYgQVVYX1dSQVBQRVJfSU5TVCggTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChBVVhfV1JBUFBFUl9WQUxVRV9UWVBFLCAoTiArIDEpKSApIG5leHQ7Ci0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9JTlNUKCBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsIChOIC0gMSkpICkgcHJpb3I7Ci0jZWxzZQotICAgIHR5cGVkZWYgQVVYX1dSQVBQRVJfSU5TVCggTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChBVVhfV1JBUFBFUl9WQUxVRV9UWVBFLCAodmFsdWUgKyAxKSkgKSBuZXh0OwotICAgIHR5cGVkZWYgQVVYX1dSQVBQRVJfSU5TVCggTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChBVVhfV1JBUFBFUl9WQUxVRV9UWVBFLCAodmFsdWUgLSAxKSkgKSBwcmlvcjsKLSNlbmRpZgotCi0gICAgLy8gZW5hYmxlcyB1bmlmb3JtIGZ1bmN0aW9uIGNhbGwgc3ludGF4IGZvciBmYW1pbGllcyBvZiBvdmVybG9hZGVkIAotICAgIC8vIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBvYmplY3RzIG9mIGJvdGggYXJpdGhtZXRpYyAoJ2ludCcsICdsb25nJywKLSAgICAvLyAnZG91YmxlJywgZXRjLikgYW5kIHdyYXBwZWQgaW50ZWdyYWwgdHlwZXMgKGZvciBhbiBleGFtcGxlLCBzZWUgCi0gICAgLy8gIm1wbC9leGFtcGxlL3Bvd2VyLmNwcCIpCi0gICAgb3BlcmF0b3IgQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEU+KHRoaXMtPnZhbHVlKTsgfSAKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikKLXRlbXBsYXRlPCBBVVhfV1JBUFBFUl9QQVJBTVMoTikgPgotQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSBjb25zdCBBVVhfV1JBUFBFUl9JTlNUKE4pOjp2YWx1ZTsKLSNlbmRpZgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi0jdW5kZWYgQVVYX1dSQVBQRVJfTkFNRQotI3VuZGVmIEFVWF9XUkFQUEVSX1BBUkFNUwotI3VuZGVmIEFVWF9XUkFQUEVSX0lOU1QKLSN1bmRlZiBBVVhfV1JBUFBFUl9WQUxVRV9UWVBFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2lzX21zdmNfZXRpX2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2lzX21zdmNfZXRpX2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YTkzZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pc19tc3ZjX2V0aV9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSVNfTVNWQ19FVElfQVJHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0lTX01TVkNfRVRJX0FSR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGlzX21zdmNfZXRpX2FyZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbXN2Y19ldGlfYXJnCi17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHCi0KLXN0cnVjdCBldGlfaW50X2NvbnZlcnRpYmxlCi17Ci0gICAgZXRpX2ludF9jb252ZXJ0aWJsZShpbnQpOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX21zdmNfZXRpX2FyZwoteyAKLSAgICBzdGF0aWMgbm9fdGFnIHRlc3QoLi4uKTsKLSAgICBzdGF0aWMgeWVzX3RhZyB0ZXN0KGV0aV9pbnRfY29udmVydGlibGUpOwotICAgIHN0YXRpYyBUJiBnZXQoKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgIHNpemVvZih0ZXN0KGdldCgpKSkgPT0gc2l6ZW9mKHllc190YWcpCi0gICAgICAgICk7Ci19OwotCi0jZW5kaWYKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX21zdmNfZXRpX2FyZzxpbnQ+Ci17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHCi0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9JU19NU1ZDX0VUSV9BUkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2l0ZXJfYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIzYjdmZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2l0ZXJfYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JVEVSX0FQUExZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSVRFUl9BUFBMWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJfYXBwbHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBJdGVyYXRvcgotICAgID4KLXN0cnVjdCBpdGVyX2FwcGx5MQotICAgIDogYXBwbHkxPCBGLHR5cGVuYW1lIGRlcmVmPEl0ZXJhdG9yPjo6dHlwZSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yMQotICAgICwgdHlwZW5hbWUgSXRlcmF0b3IyCi0gICAgPgotc3RydWN0IGl0ZXJfYXBwbHkyCi0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEl0ZXJhdG9yMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxJdGVyYXRvcjI+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lURVJfQVBQTFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2Q5M2JlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0lURVJfRk9MRF9JRl9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0lURVJfRk9MRF9JRl9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlcl9mb2xkX2lmX2ltcGwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgaXRlcl9mb2xkX2lmX2ltcGwuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8U3RhdGVPcCxTdGF0ZSxJdGVyYXRvcj46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotLy8gYWd1cnQsIDI1L2p1bi8wMjogTVNWQyA2LjUgd29ya2Fyb3VuZCwgaGFkIHRvIGdldCByaWQgb2YgaW5oZXJpdGFuY2UgCi0vLyBoZXJlIGFuZCBpbiAnaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAnLCBiZWNhdXNlIHNvbWV0aW1lcyBpdCBpbnRlcmZlcmVkIAotLy8gd2l0aCB0aGUgImVhcmx5IHRlbXBsYXRlIGluc3RhbnRpYXRpb24gYnVnIiBpbiBfcmVhbGx5XyB1Z2x5IHdheXMKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8UHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8UHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0KLSMgICBkZWZpbmUgQVVYX0lURVJfRk9MRF9GT1JXQVJEX1NURVAodW51c2VkLCBpLCB1bnVzZWQyKSBcCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCBcCi0gICAgICAgICAgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGZvcndhcmRfc3RlcCxpKTo6aXRlcmF0b3IgXAotICAgICAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChmb3J3YXJkX3N0ZXAsaSk6OnN0YXRlIFwKLSAgICAgICAgLCBGb3J3YXJkT3AgXAotICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUgXAotICAgICAgICA+IE5ETkJPT1NUX1BQX0NBVChmb3J3YXJkX3N0ZXAsIE5ETkJPT1NUX1BQX0lOQyhpKSk7IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYX0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQX0ZVTkMoaSkgXAotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IFwKLSAgICAgICAgICB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoZm9yd2FyZF9zdGVwLE5ETkJPT1NUX1BQX0RFQyhpKSk6Oml0ZXJhdG9yIFwKLSAgICAgICAgLCB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoYmFja3dhcmRfc3RlcCxpKTo6c3RhdGUgXAotICAgICAgICAsIEJhY2t3YXJkT3AgXAotICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlIFwKLSAgICAgICAgPiBORE5CT09TVF9QUF9DQVQoYmFja3dhcmRfc3RlcCxORE5CT09TVF9QUF9ERUMoaSkpOyBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWF9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUCh1bnVzZWQsIGksIHVudXNlZDIpIFwKLSAgICBBVVhfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVBfRlVOQyggXAotICAgICAgICBORE5CT09TVF9QUF9TVUJfRCgxLE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcsaSkgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYX0xBU1RfRk9SV0FSRF9TVEVQIFwKLSAgICBORE5CT09TVF9QUF9DQVQoZm9yd2FyZF9zdGVwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWF9MQVNUX0JBQ0tXQVJEX1NURVAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChiYWNrd2FyZF9zdGVwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKSBcCi0gICAgLyoqLwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPEl0ZXJhdG9yLFN0YXRlPiBmb3J3YXJkX3N0ZXAwOwotICAgIE5ETkJPT1NUX1BQX1JFUEVBVCgKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICwgQVVYX0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLSAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgKQotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIEFVWF9MQVNUX0ZPUldBUkRfU1RFUDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgQVVYX0xBU1RfRk9SV0FSRF9TVEVQOjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBBVVhfTEFTVF9GT1JXQVJEX1NURVA6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBBVVhfTEFTVF9GT1JXQVJEX1NURVA6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIEFVWF9MQVNUX0ZPUldBUkRfU1RFUDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBBVVhfTEFTVF9CQUNLV0FSRF9TVEVQOwotCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgLCBBVVhfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVAKLSAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgKQotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYX0xBU1RfQkFDS1dBUkRfU1RFUDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi0jICAgdW5kZWYgQVVYX0xBU1RfQkFDS1dBUkRfU1RFUAotIyAgIHVuZGVmIEFVWF9MQVNUX0ZPUldBUkRfU1RFUAotIyAgIHVuZGVmIEFVWF9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotIyAgIHVuZGVmIEFVWF9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUF9GVU5DCi0jICAgdW5kZWYgQVVYX0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9JVEVSX0ZPTERfSUZfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNTQxMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9JVEVSX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9JVEVSX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJfZm9sZF9pbXBsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBlbmRpZgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBpdGVyX2ZvbGRfaW1wbC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChpdGVyKSBpdGVyCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVggaXRlcl9mb2xkCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsX2JvZHkuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfSVRFUl9GT0xEX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2OTQyNWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfYXJpdHlfcGFyYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX0FSSVRZX1BBUkFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhbWJkYV9hcml0eV9wYXJhbS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTShwYXJhbSkgICAgCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTShwYXJhbSkgLCBwYXJhbQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYTQ3MTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX05PX0NUUFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX05PX0NUUFNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsYW1iZGFfbm9fY3Rwcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pc19wbGFjZWhvbGRlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsYW1iZGFfbm9fY3Rwcy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHBhcmFtKSBcCi0gICAgLyoqLwotCi1uYW1lc3BhY2UgYXV4IHsKLQotI2RlZmluZSBuXyBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhuXyxib29sIEMsZmFsc2UpCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IE5ETkJPT1NUX01QTF9QUF9FTlVNKG5fLGZhbHNlKSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0jdW5kZWYgbl8KLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfTk9fQ1RQU19IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAxCi0KLSNlbHNlCi0KLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0xBTUJEQV9UWVBFREVGKHVudXNlZCwgaV8sIEYpIFwKLSAgICB0eXBlZGVmIGxhbWJkYTwgXAotICAgICAgICAgIHR5cGVuYW1lIEY6Ok5ETkJPT1NUX1BQX0NBVChhcmcsTkROQk9PU1RfUFBfSU5DKGlfKSkgXAotICAgICAgICAsIFRhZyBcCi0gICAgICAgICwgZmFsc2VfIFwKLSAgICAgICAgPiBORE5CT09TVF9QUF9DQVQobCxORE5CT09TVF9QUF9JTkMoaV8pKTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVNfTEVfVFlQRURFRih1bnVzZWQsIGlfLCB1bnVzZWQyKSBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQobCxORE5CT09TVF9QUF9JTkMoaV8pKTo6aXNfbGUgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoaXNfbGUsTkROQk9PU1RfUFBfSU5DKGlfKSk7IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lTX0xBTUJEQV9FWFBSKHVudXNlZCwgaV8sIHVudXNlZDIpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKE5ETkJPT1NUX1BQX0NBVChpc19sZSxORE5CT09TVF9QUF9JTkMoaV8pKSk6OnZhbHVlIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0xBTUJEQV9SRVNVTFQodW51c2VkLCBpXywgdW51c2VkMikgXAotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGwsTkROQk9PU1RfUFBfSU5DKGlfKSk6OnR5cGUgXAotICAgIC8qKi8KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9MQU1CREFfVFlQRURFRiwgRikKLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X0lTX0xFX1RZUEVERUYsIHVudXNlZCkKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfSVNfTEFNQkRBX0VYUFIsIHVudXNlZCkKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X0xBTUJEQV9SRVNVTFQsIHVudXNlZCkKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLSAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0xBTUJEQV9SRVNVTFQKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVNfTEFNQkRBX0VYUFIKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVNfTEVfVFlQRURFRgotIyAgIHVuZGVmIEFVWDc3ODA3Nl9MQU1CREFfVFlQRURFRgotCi0jdW5kZWYgaV8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3BlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zcGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQyNWEzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zcGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TUEVDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TUEVDX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDcKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGFtYmRhX3NwZWMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfYXJpdHlfcGFyYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKGksIG5hbWUpIFwKLXRlbXBsYXRlPCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIHR5cGVuYW1lIFQpIFwKLSAgICAsIHR5cGVuYW1lIFRhZyBcCi0gICAgPiBcCi1zdHJ1Y3QgbGFtYmRhPCBcCi0gICAgICBuYW1lPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIFQpID4gXAotICAgICwgVGFnIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTShpbnRfPGk+KSBcCi0gICAgPiBcCi17IFwKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsgXAotICAgIHR5cGVkZWYgbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCBUKSA+IHJlc3VsdF87IFwKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsgXAotfTsgXAotLyoqLwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKGksIG5hbWUpIC8qKi8KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TUEVDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEwOGY5OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhbWJkYV9zdXBwb3J0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKGksIG5hbWUsIHBhcmFtcykgLyoqLwotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKGksbmFtZSxwYXJhbXMpIC8qKi8KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvdG9fbGlzdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9yX2VhY2hfaS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9BUkdfVFlQRURFRl9GVU5DKFIsdHlwZWRlZl8saSxwYXJhbSkgXAotICAgIHR5cGVkZWZfIHBhcmFtIE5ETkJPT1NUX1BQX0NBVChhcmcsTkROQk9PU1RfUFBfSU5DKGkpKTsgXAotICAgIC8qKi8KLQotLy8gYWd1cnQsIDA3L21hci8wMzogcmVzdG9yZSBhbiBvbGQgcmV2aXNpb24gZm9yIHRoZSBzYWtlIG9mIFNHSSBNSVBTcHJvIEMrKwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpIAotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgdHlwZWRlZiBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6aW50XzxpPiBhcml0eTsgXAotICAgIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SKCBcCi0gICAgICAgICAgMSBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9BUkdfVFlQRURFRl9GVU5DIFwKLSAgICAgICAgLCB0eXBlZGVmIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKGkscGFyYW1zKSBcCi0gICAgICAgICkgXAotICAgIHN0cnVjdCByZWJpbmQgXAotICAgIHsgXAotICAgICAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGVuYW1lIFUpID4gc3RydWN0IGFwcGx5IFwKLSAgICAgICAgICAgIDogbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLFUpID4gXAotICAgICAgICB7IFwKLSAgICAgICAgfTsgXAotICAgIH07IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKGksIG5hbWUsIHBhcmFtcykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgLyoqLwotCi0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjQ0KSAmJiAhZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikKLS8vIGFndXJ0LCAxOC9qYW4vMDM6IG9sZCBFREctYmFzZWQgY29tcGlsZXJzIGFjdHVhbGx5IGVuZm9yY2UgMTEuNCBwYXJhIDkKLS8vIChpbiBzdHJpY3QgbW9kZSksIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgCi0vLyBNU1ZDLW9wdGltaXplZCBpbXBsZW1lbnRhdGlvbgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQyhpLCBuYW1lLCBwYXJhbXMpIFwKLSAgICB0eXBlZGVmIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjppbnRfPGk+IGFyaXR5OyBcCi0gICAgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1IoIFwKLSAgICAgICAgICAxIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX0FSR19UWVBFREVGX0ZVTkMgXAotICAgICAgICAsIHR5cGVkZWYgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1QoaSxwYXJhbXMpIFwKLSAgICAgICAgKSBcCi0gICAgc3RydWN0IHJlYmluZDsgXAotLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKGksIG5hbWUsIHBhcmFtcykgXAotfTsgXAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSx0eXBlbmFtZSBUKSA+IFwKLXN0cnVjdCBuYW1lPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxUKT46OnJlYmluZCBcCi17IFwKLSAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGVuYW1lIFUpID4gc3RydWN0IGFwcGx5IFwKLSAgICAgICAgOiBuYW1lPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksVSkgPiBcCi0gICAgeyBcCi0gICAgfTsgXAotLyoqLwotCi0jZWxzZSAvLyBfX0VER19WRVJTSU9OX18KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaGFzX3JlYmluZF90YWc7Ci19fX0KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgdHlwZWRlZiBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6aW50XzxpPiBhcml0eTsgXAotICAgIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SKCBcCi0gICAgICAgICAgMSBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9BUkdfVFlQRURFRl9GVU5DIFwKLSAgICAgICAgLCB0eXBlZGVmIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKGkscGFyYW1zKSBcCi0gICAgICAgICkgXAotICAgIGZyaWVuZCBjbGFzcyBORE5CT09TVF9QUF9DQVQobmFtZSxfcmViaW5kKTsgXAotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKG5hbWUsX3JlYmluZCkgcmViaW5kOyBcCi0vKiovCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IQVNfUkVCSU5EKGksIG5hbWUsIHBhcmFtcykgXAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSx0eXBlbmFtZSBUKSA+IFwKLTo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnIG9wZXJhdG9yfCggXAotICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmRfdGFnPGludD4gXAotICAgICwgbmFtZTxORE5CT09TVF9NUExfUFBfUEFSQU1TKGksVCk+KiBcCi0gICAgKTsgXAotOjpuZG5ib29zdDo6bXBsOjphdXg6Om5vX3RhZyBvcGVyYXRvcnwoIFwKLSAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kX3RhZzxpbnQ+IFwKLSAgICAsIG5hbWU8IE5ETkJPT1NUX01QTF9QUF9FTlVNKGksOjpuZG5ib29zdDo6bXBsOjpuYSkgPiogXAotICAgICk7IFwKLS8qKi8KLSNlbGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IQVNfUkVCSU5EKGksIG5hbWUsIHBhcmFtcykgXAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSx0eXBlbmFtZSBUKSA+IFwKLTo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnIG9wZXJhdG9yfCggXAotICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmRfdGFnPGludD4gXAotICAgICwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmRfdGFnPCBuYW1lPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxUKT4gPiogXAotICAgICk7IFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfSEFTX1JFQklORChpLCBuYW1lLCBwYXJhbXMpIC8qKi8KLSNlbmRpZgotCi0jICAgaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKGksIG5hbWUsIHBhcmFtcykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQyhpLCBuYW1lLCBwYXJhbXMpIFwKLX07IFwKLU5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfSEFTX1JFQklORChpLCBuYW1lLCBwYXJhbXMpIFwKLWNsYXNzIE5ETkJPT1NUX1BQX0NBVChuYW1lLF9yZWJpbmQpIFwKLXsgXAotIHB1YmxpYzogXAotICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksdHlwZW5hbWUgVSkgPiBzdHJ1Y3QgYXBwbHkgXAotICAgICAgICA6IG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxVKSA+IFwKLSAgICB7IFwKLSAgICB9OyBcCi0vKiovCi0jICAgZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKGksIG5hbWUsIHBhcmFtcykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQyhpLCBuYW1lLCBwYXJhbXMpIFwKLX07IFwKLU5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfSEFTX1JFQklORChpLCBuYW1lLCBwYXJhbXMpIFwKLWNsYXNzIE5ETkJPT1NUX1BQX0NBVChuYW1lLF9yZWJpbmQpIFwKLXsgXAotIHB1YmxpYzogXAotICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksdHlwZW5hbWUgVSkgPiBzdHJ1Y3QgYXBwbHkgXAotICAgIHsgXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxVKSA+Ojp0eXBlIHR5cGU7IFwKLSAgICB9OyBcCi0vKiovCi0jICAgZW5kaWYgLy8gX19CT1JMQU5EQ19fCi0KLSNlbmRpZiAvLyBfX0VER19WRVJTSU9OX18KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbGFyZ2VzdF9pbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYXJnZXN0X2ludC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNjY4Y2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYXJnZXN0X2ludC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9MQVJHRVNUX0lOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQVJHRVNUX0lOVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhcmdlc3RfaW50LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazxib29sPiAgICAgICAgICAgOiBpbnRfPDE+IHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazxzaWduZWQgY2hhcj4gICAgOiBpbnRfPDI+IHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazxjaGFyPiAgICAgICAgICAgOiBpbnRfPDM+IHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazx1bnNpZ25lZCBjaGFyPiAgOiBpbnRfPDQ+IHt9OwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazx3Y2hhcl90PiAgICAgICAgOiBpbnRfPDU+IHt9OwotI2VuZGlmCi10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHNob3J0PiAgICAgICAgICA6IGludF88Nj4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHVuc2lnbmVkIHNob3J0PiA6IGludF88Nz4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPGludD4gICAgICAgICAgICA6IGludF88OD4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHVuc2lnbmVkIGludD4gICA6IGludF88OT4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPGxvbmc+ICAgICAgICAgICA6IGludF88MTA+IHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazx1bnNpZ25lZCBsb25nPiAgOiBpbnRfPDExPiB7fTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLXRlbXBsYXRlPD4gc3RydWN0IGludGVncmFsX3Jhbms8bG9uZ19sb25nX3R5cGU+IDogaW50XzwxMj4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHVsb25nX2xvbmdfdHlwZT46IGludF88MTM+IHt9OwotI2VuZGlmCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgbGFyZ2VzdF9pbnQKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDKQotICAgIDogaWZfYzwgCi0gICAgICAgICAgKCBpbnRlZ3JhbF9yYW5rPFQxPjo6dmFsdWUgPj0gaW50ZWdyYWxfcmFuazxUMj46OnZhbHVlICkKLSAgICAgICAgLCBUMQotICAgICAgICAsIFQyCi0gICAgICAgID4KLXsKLSNlbHNlCi17Ci0gICAgZW51bSB7IHJhbmsxID0gaW50ZWdyYWxfcmFuazxUMT46OnZhbHVlIH07Ci0gICAgZW51bSB7IHJhbmsyID0gaW50ZWdyYWxfcmFuazxUMj46OnZhbHVlIH07Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl9jPCAocmFuazEgPj0gcmFuazIpLFQxLFQyID46OnR5cGUgdHlwZTsKLSNlbmRpZgotfTsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0xBUkdFU1RfSU5UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sb2dpY2FsX29wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbG9naWNhbF9vcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMDZjYzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sb2dpY2FsX29wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsb2dpY2FsX29wLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OIQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZXh0X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9zdWIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1BBUkFNUyhwYXJhbSwgc3ViKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyggXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9TVUIoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgc3ViKSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NISUZURURfUEFSQU1TKHBhcmFtLCBzdWIpIFwKLSAgICBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUyggXAotICAgICAgICAgIDIsIE5ETkJPT1NUX01QTF9QUF9TVUIoTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkpLCBzdWIpIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU1BFQ19QQVJBTVMocGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfRU5VTSggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLW5hbWVzcGFjZSBhdXggewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IGJvb2wgQ18sIEFVWDc3ODA3Nl9QQVJBTVModHlwZW5hbWUgVCwgMSkgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSxpbXBsKQotICAgIDogTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTEsXykKLXsKLX07Ci0KLXRlbXBsYXRlPCBBVVg3NzgwNzZfUEFSQU1TKHR5cGVuYW1lIFQsIDEpID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8IEFVWDc3ODA3Nl9PUF9WQUxVRTIsQVVYNzc4MDc2X1BBUkFNUyhULCAxKSA+Ci0gICAgOiBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBBVVg3NzgwNzZfU0hJRlRFRF9QQVJBTVMoVCwgMSkKLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9OQU1FLGltcGwpPAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9WQUxVRTIKLSAgICAgICAgLCBBVVg3NzgwNzZfU1BFQ19QQVJBTVMoTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTIsXykpCi0gICAgICAgID4KLSAgICA6IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfVkFMVUUyLF8pCi17Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCkKLXsKLSAgICB0ZW1wbGF0ZTwgQVVYNzc4MDc2X1BBUkFNUyh0eXBlbmFtZSBULCAxKSA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTEsXykKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSxpbXBsKTxBVVg3NzgwNzZfT1BfVkFMVUUyPgotewotICAgIHRlbXBsYXRlPCBBVVg3NzgwNzZfUEFSQU1TKHR5cGVuYW1lIFQsIDEpID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8IAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgQVVYNzc4MDc2X1NISUZURURfUEFSQU1TKFQsMSksTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTIsXykgPgotICAgIHsKLSAgICB9OwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88QVVYNzc4MDc2X1NQRUNfUEFSQU1TKE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfVkFMVUUyLF8pKT4KLSAgICAgICAgOiBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKQotICAgIHsKLSAgICB9OwotfTsKLSNlbHNlCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9OQU1FLGltcGwpPEFVWDc3ODA3Nl9PUF9WQUxVRTI+Ci0gICAgOjpyZXN1bHRfPCBBVVg3NzgwNzZfU1BFQ19QQVJBTVMoTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTIsXykpID4KLSAgICAgICAgOiBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKQotewotfTsKLSNlbmRpZiAvLyBORE5CT09TVF9NU1ZDID09IDEzMDAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTCgyLCB0eXBlbmFtZSBULCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKSkKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX05BTUUKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgIDogYXV4OjpORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBBVVg3NzgwNzZfU0hJRlRFRF9QQVJBTVMoVCwwKQotICAgICAgICA+Ci0jZWxzZQotICAgIDogYXV4OjpORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8IAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEFVWDc3ODA3Nl9TSElGVEVEX1BBUkFNUyhULDApID4KLSNlbmRpZgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotICAgICAgICAsIEFVWDc3ODA3Nl9PUF9OQU1FCi0gICAgICAgICwgKEFVWDc3ODA3Nl9QQVJBTVMoVCwgMCkpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZCi0gICAgLCBBVVg3NzgwNzZfT1BfTkFNRQotICAgICkKLQotfX0KLQotI3VuZGVmIEFVWDc3ODA3Nl9TUEVDX1BBUkFNUwotI3VuZGVmIEFVWDc3ODA3Nl9TSElGVEVEX1BBUkFNUwotI3VuZGVmIEFVWDc3ODA3Nl9QQVJBTVMKLSN1bmRlZiBBVVg3NzgwNzZfT1BfTkFNRQotI3VuZGVmIEFVWDc3ODA3Nl9PUF9WQUxVRTEKLSN1bmRlZiBBVVg3NzgwNzZfT1BfVkFMVUUyCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfZHR3LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19kdHcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWNkMDYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19kdHcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbXN2Y19kdHcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04hCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLSNkZWZpbmUgQVVYNzc4MDc2X0RUV19QQVJBTVMocGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKEFVWDc3ODA3Nl9NU1ZDX0RUV19BUklUWSwgcGFyYW0pIFwKLS8qKi8KLQotI2RlZmluZSBBVVg3NzgwNzZfRFRXX09SSUdJTkFMX05BTUUgXAotICAgIEFVWDc3ODA3Nl9NU1ZDX0RUV19PUklHSU5BTF9OQU1FIFwKLS8qKi8KLQotLy8gd2FybmluZzogbm90IGEgd2VsbC1mb3JtZWQgQysrCi0vLyB3b3JrYXJvdW5kIGZvciBNU1ZDIDYuNSdzICJkZXBlbmRlbnQgdGVtcGxhdGUgdHlwZWRlZiBidWciCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGPgotc3RydWN0IEFVWDc3ODA3Nl9NU1ZDX0RUV19OQU1FCi17Ci0gICAgdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgZl8gOiBGIHt9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGZfPHRydWU+Ci0gICAgewotI2lmIEFVWDc3ODA3Nl9NU1ZDX0RUV19BUklUWSA+IDAKLSAgICAgICAgdGVtcGxhdGU8IEFVWDc3ODA3Nl9EVFdfUEFSQU1TKHR5cGVuYW1lIFApID4gc3RydWN0IEFVWDc3ODA3Nl9EVFdfT1JJR0lOQUxfTkFNRQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgQVVYNzc4MDc2X0RUV19QQVJBTVModHlwZW5hbWUgVCkgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZfPCBhdXg6Om1zdmNfbmV2ZXJfdHJ1ZTxGPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBBVVg3NzgwNzZfRFRXX09SSUdJTkFMX05BTUU8IEFVWDc3ODA3Nl9EVFdfUEFSQU1TKFQpID4KLSAgICB7Ci0gICAgfTsKLSNlbHNlCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID0gaW50ID4gc3RydWN0IEFVWDc3ODA3Nl9EVFdfT1JJR0lOQUxfTkFNRQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA9IGludCA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZl88IGF1eDo6bXN2Y19uZXZlcl90cnVlPEY+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIEFVWDc3ODA3Nl9EVFdfT1JJR0lOQUxfTkFNRTw+Ci0gICAgewotICAgIH07Ci0jZW5kaWYKLX07Ci0KLSN1bmRlZiBBVVg3NzgwNzZfRFRXX09SSUdJTkFMX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfRFRXX1BBUkFNUwotCi0jdW5kZWYgQVVYNzc4MDc2X01TVkNfRFRXX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfTVNWQ19EVFdfT1JJR0lOQUxfTkFNRQotI3VuZGVmIEFVWDc3ODA3Nl9NU1ZDX0RUV19BUklUWQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19ldGlfYmFzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmNTMxM2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX01TVkNfRVRJX0JBU0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19FVElfQkFTRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG1zdmNfZXRpX2Jhc2UuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pc19tc3ZjX2V0aV9hcmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRykKLQotdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgbXN2Y19ldGlfYmFzZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtc3ZjX2V0aV9iYXNlX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLSAgICAgICAgdHlwZWRlZiByZXN1bHRfIGZpcnN0OwotICAgICAgICB0eXBlZGVmIHJlc3VsdF8gc2Vjb25kOwotICAgICAgICB0eXBlZGVmIHJlc3VsdF8gdGFnOwotICAgICAgICBlbnVtIHsgdmFsdWUgPSAwIH07Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1zdmNfZXRpX2Jhc2UKLSAgICA6IG1zdmNfZXRpX2Jhc2VfaW1wbDwgaXNfbXN2Y19ldGlfYXJnPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotI2Vsc2UgLy8gIU5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1zdmNfZXRpX2Jhc2UKLSAgICA6IFQKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01QTF9DRkdfR0NDLCBORE5CT09TVF9URVNURURfQVQoMHgwMzA0KSkKLSAgICBtc3ZjX2V0aV9iYXNlKCk7Ci0jZW5kaWYKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNlbmRpZiAKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbXN2Y19ldGlfYmFzZTxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBtc3ZjX2V0aV9iYXNlIHR5cGU7Ci0gICAgdHlwZWRlZiBtc3ZjX2V0aV9iYXNlIGZpcnN0OwotICAgIHR5cGVkZWYgbXN2Y19ldGlfYmFzZSBzZWNvbmQ7Ci0gICAgdHlwZWRlZiBtc3ZjX2V0aV9iYXNlIHRhZzsKLSAgICBlbnVtIHsgdmFsdWUgPSAwIH07Ci19OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19FVElfQkFTRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19pc19jbGFzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfaXNfY2xhc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDdmN2Q2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19pc19jbGFzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX0lTX0NMQVNTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX01TVkNfSVNfQ0xBU1NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBtc3ZjX2lzX2NsYXNzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19jbGFzc19oZWxwZXIKLXsKLSAgICB0eXBlZGVmIGludCAoVDo6KiB0eXBlKSgpOwotfTsKLQotLy8gTVNWQyA2Lngtc3BlY2lmaWMgbGlnaHR3ZWlnaHQgJ2lzX2NsYXNzJyBpbXBsZW1lbnRhdGlvbjsgCi0vLyBEaXN0aW5ndWlzaGluZyBmZWF0dXJlOiBkb2VzIG5vdCBpbnN0YW50aWF0ZSB0aGUgdHlwZSBiZWluZyB0ZXN0ZWQuCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgbXN2Y19pc19jbGFzc19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIHllc190YWcgIHRlc3QodHlwZV93cmFwcGVyPFU+KiwgLyp0eXBlbmFtZSovIGlzX2NsYXNzX2hlbHBlcjxVPjo6dHlwZSA9IDApOwotICAgIHN0YXRpYyBub190YWcgICB0ZXN0KHZvaWQgY29uc3Qgdm9sYXRpbGUqLCAuLi4pOwotCi0gICAgZW51bSB7IHZhbHVlID0gc2l6ZW9mKHRlc3QoKHR5cGVfd3JhcHBlcjxUPiopMCkpID09IHNpemVvZih5ZXNfdGFnKSB9OwotICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci19OwotCi0vLyBhZ3VydCwgMTcvc2VwLzA0OiBoYXZlIHRvIGNoZWNrIGZvciAnaXNfcmVmZXJlbmNlJyB1cGZyb250IHRvIGF2b2lkIElDRXMgaW4KLS8vIGNvbXBsZXggbWV0YXByb2dyYW1zCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgbXN2Y19pc19jbGFzcwotICAgIDogaWZfPAotICAgICAgICAgIGlzX3JlZmVyZW5jZTxUPgotICAgICAgICAsIGZhbHNlXwotICAgICAgICAsIG1zdmNfaXNfY2xhc3NfaW1wbDxUPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19JU19DTEFTU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19uZXZlcl90cnVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19uZXZlcl90cnVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjllMmUwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfbmV2ZXJfdHJ1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX05FVkVSX1RSVUVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19ORVZFUl9UUlVFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbXN2Y19uZXZlcl90cnVlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgbXN2Y19uZXZlcl90cnVlCi17Ci0gICAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVNWQwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX05FVkVSX1RSVUVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZThmYzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX01TVkNfVFlQRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG1zdmNfdHlwZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2lzX21zdmNfZXRpX2FyZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzcwX0VUSV9CVUcpCi0KLXRlbXBsYXRlPCBib29sID4gc3RydWN0IG1zdmNfdHlwZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1zdmNfdHlwZV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1zdmNfdHlwZQotICAgIDogbXN2Y190eXBlX2ltcGw8IGlzX21zdmNfZXRpX2FyZzxUPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1zdmNfdHlwZSAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1zdmNfdHlwZTxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19UWVBFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI5ZjgxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX05BX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbmEuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX25hCi0gICAgOiBmYWxzZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyBmYWxzZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbmE8bmE+Ci0gICAgOiB0cnVlXwotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHVzaW5nIHRydWVfOjp2YWx1ZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX25vdF9uYQotICAgIDogdHJ1ZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyB0cnVlXzo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19ub3RfbmE8bmE+Ci0gICAgOiBmYWxzZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyBmYWxzZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBVID4gc3RydWN0IGlmX25hCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+IHN0cnVjdCBpZl9uYTxuYSxVPgotewotICAgIHR5cGVkZWYgVSB0eXBlOwotfTsKLSNlbHNlCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpZl9uYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpZl9uYV9pbXBsPG5hPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUgPiBzdHJ1Y3QgaWZfbmEKLSAgICA6IGlmX25hX2ltcGw8VD46OnRlbXBsYXRlIGFwcGx5PFU+Ci17Ci19OwotI2VuZGlmCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX05BX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9hc3NlcnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9hc3NlcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDc1YzRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmFfYXNzZXJ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX05BX0FTU0VSVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9BU1NFUlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuYV9hc3NlcnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9NU0NfRlVMTF9WRVIsIDw9IDE0MDA1MDYwMSkgICAgXAotICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjQzKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hc3NlcnQuaHBwPgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEoeCkgXAotICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKChuZG5ib29zdDo6bXBsOjppc19uYTx0eXBlPikpIFwKLS8qKi8KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh4KSBcCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghbmRuYm9vc3Q6Om1wbDo6aXNfbmE8eD46OnZhbHVlKSBcCi0vKiovCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTkFfQVNTRVJUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRlNDMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmFfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX05BX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuYV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotLy8gbi5hLiA9PSBub3QgYXZhaWxhYmxlCi1zdHJ1Y3QgbmEKLXsKLSAgICB0eXBlZGVmIG5hIHR5cGU7Ci0gICAgZW51bSB7IHZhbHVlID0gMCB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTChuYSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTkFfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkMDNmNGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuYV9zcGVjLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGFtYmRhX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHlfZndkLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZfcGFyYW1zX3RhaWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHA+Ci0KLQotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0VOVU0oaSwgbmEpIFwKLS8qKi8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWShpLCBuYW1lKSBcCi1uYW1lc3BhY2UgYXV4IHsgXAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPiBcCi1zdHJ1Y3QgYXJpdHk8IFwKLSAgICAgICAgICBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IFwKLSAgICAgICAgLCBOIFwKLSAgICAgICAgPiBcCi0gICAgOiBpbnRfPCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZID4gXAoteyBcCi19OyBcCi19IFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWShpLCBuYW1lKSAvKiovCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTUFJTihpLCBuYW1lKSBcCi10ZW1wbGF0ZTw+IFwKLXN0cnVjdCBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IFwKLXsgXAotICAgIHRlbXBsYXRlPCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCB0eXBlbmFtZSBUKSBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9ORVNURURfREVGX1BBUkFNU19UQUlMKGksIHR5cGVuYW1lIFQsIG5hKSBcCi0gICAgICAgID4gXAotICAgIHN0cnVjdCBhcHBseSBcCi0gICAgICAgIDogbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCBUKSA+IFwKLSAgICB7IFwKLSAgICB9OyBcCi19OyBcCi0vKiovCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQShpLCBuYW1lKSBcCi10ZW1wbGF0ZTw+IFwKLXN0cnVjdCBsYW1iZGE8IFwKLSAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gXAotICAgICwgdm9pZF8gXAotICAgICwgdHJ1ZV8gXAotICAgID4gXAoteyBcCi0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7IFwKLSAgICB0eXBlZGVmIG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gdHlwZTsgXAotfTsgXAotdGVtcGxhdGU8PiBcCi1zdHJ1Y3QgbGFtYmRhPCBcCi0gICAgICBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IFwKLSAgICAsIHZvaWRfIFwKLSAgICAsIGZhbHNlXyBcCi0gICAgPiBcCi17IFwKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsgXAotICAgIHR5cGVkZWYgbmFtZTwgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTVMoaSkgPiB0eXBlOyBcCi19OyBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKGksIG5hbWUpIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBcCi1zdHJ1Y3QgbGFtYmRhPCBcCi0gICAgICBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IFwKLSAgICAsIFRhZyBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfQVJJVFlfUEFSQU0oaW50XzwtMT4pIFwKLSAgICA+IFwKLXsgXAotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOyBcCi0gICAgdHlwZWRlZiBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IHJlc3VsdF87IFwKLSAgICB0eXBlZGVmIG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gdHlwZTsgXAotfTsgXAotLyoqLwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORykgXAotICAgIHx8IGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKSBcCi0gICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKGksIGosIG5hbWUpIFwKLW5hbWVzcGFjZSBhdXggeyBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhqLCB0eXBlbmFtZSBUKSA+IFwKLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eTwgXAotICAgICAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaiwgVCkgPiBcCi0gICAgICAgID4gXAotICAgIDogaW50XzxqPiBcCi17IFwKLX07IFwKLVwKLXRlbXBsYXRlPD4gXAotc3RydWN0IHRlbXBsYXRlX2FyaXR5PCBcCi0gICAgICAgICAgbmFtZTwgTkROQk9PU1RfTVBMX1BQX0VOVU0oaSwgbmEpID4gXAotICAgICAgICA+IFwKLSAgICA6IGludF88LTE+IFwKLXsgXAotfTsgXAotfSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoaSwgaiwgbmFtZSkgLyoqLwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfRVRJKGksIG5hbWUpIFwKLXRlbXBsYXRlPD4gXAotc3RydWN0IG5hbWU8IE5ETkJPT1NUX01QTF9QUF9FTlVNKGksIGludCkgPiBcCi17IFwKLSAgICB0eXBlZGVmIGludCB0eXBlOyBcCi0gICAgZW51bSB7IHZhbHVlID0gMCB9OyBcCi19OyBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfRVRJKGksIG5hbWUpIC8qKi8KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0ocGFyYW0pIHBhcmFtID0gbmEKLQotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTk9fRVRJKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19NQUlOKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWShpLCBpLCBuYW1lKSBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19OT19FVEkoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0VUSShpLCBuYW1lKSBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMihpLCBqLCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTUFJTihpLCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfRVRJKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWShpLCBqLCBuYW1lKSBcCi0vKiovCi0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25lc3RlZF90eXBlX3drbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzY2YTg3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuZXN0ZWRfdHlwZV93a25kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2djYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NUExfQ0ZHX0dDQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDMwMikpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTYxKSkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDUzMCkpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5lc3RlZF90eXBlX3drbmQKLSAgICA6IFQ6OnR5cGUKLXsKLX07Ci19fX0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQpIFwKLSAgICBhdXg6Om5lc3RlZF90eXBlX3drbmQ8VD4gXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQpIFwKLSAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6bmVzdGVkX3R5cGVfd2tuZDxUPiBcCi0vKiovCi0jZW5kaWYKLQotI2Vsc2UgLy8gIU5ETkJPT1NUX01QTF9DRkdfR0NDIGV0IGFsLgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUKSBUOjp0eXBlCi0KLSNlbmRpZiAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDViNjRhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0xfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnR0cF9kZWNsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL250dHAuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05UVFBfQlVHKQotCi10eXBlZGVmIGJvb2wgICAgICAgIF9tcGxfbnR0cF9ib29sOwotdHlwZWRlZiBpbnQgICAgICAgICBfbXBsX250dHBfaW50OwotdHlwZWRlZiB1bnNpZ25lZCAgICBfbXBsX250dHBfdW5zaWduZWQ7Ci10eXBlZGVmIGxvbmcgICAgICAgIF9tcGxfbnR0cF9sb25nOwotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKFQsIHgpIE5ETkJPT1NUX1BQX0NBVChfbXBsX250dHBfLFQpIHggLyoqLwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKFQsIHgpIFQgeCAvKiovCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0xfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfY2FzdF91dGlscy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfY2FzdF91dGlscy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMjFmZWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9udW1lcmljX2Nhc3RfdXRpbHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG51bWVyaWNfY2FzdF91dGlscy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9udW1lcmljX2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGNhc3Qxc3RfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGFwcGx5X3dyYXAyPCAKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhcHBseV93cmFwMTwgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1Q8VGFnMSxUYWcyPixOMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4yCi0gICAgICAgICAgICA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwgCi0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXBwbHlfd3JhcDE8IE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUPFRhZzEsVGFnMj4sTjEgPjo6dHlwZQotICAgICAgICAgICAgLCBOMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBjYXN0Mm5kX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykKLSAgICAgICAgOiBhcHBseV93cmFwMjwgCi0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgTjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXBwbHlfd3JhcDE8IE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUPFRhZzIsVGFnMT4sTjIgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPCAKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCBOMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhcHBseV93cmFwMTwgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1Q8VGFnMixUYWcxPixOMiA+Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19vcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfb3AuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2JmNTY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19vcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTUgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OIQotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnVtZXJpY19vcC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL251bWVyaWNfY2FzdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3RhZy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19jYXN0X3V0aWxzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfZXRpX2Jhc2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcnRpYWxfc3BlY19wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZfcGFyYW1zX3RhaWwuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9leHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2FkZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9PUF9BUklUWSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX0FSSVRZIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X09QX0lNUExfTkFNRSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX0lNUExfTkFNRSBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1BSRUZJWCxfaW1wbCkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X09QX1RBR19OQU1FKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfVEFHX05BTUUgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9QUkVGSVgsX3RhZykKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlIAotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUgCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUUKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSNlbHNlCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUUKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLSNlbmRpZgotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPFRhZzEsVGFnMT4sVGFnMSxUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgQVVYNzc4MDc2X09QX0lNUExfTkFNRTxUYWcyLFRhZzI+LFRhZzEsVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPG5hLG5hPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkgCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPG5hLFRhZz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5IAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUU8VGFnLG5hPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkgCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLX07Ci0jZWxzZQotdGVtcGxhdGU8PiBzdHJ1Y3QgQVVYNzc4MDc2X09QX0lNUExfTkFNRTxuYSxpbnRlZ3JhbF9jX3RhZz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5IAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPGludGVncmFsX2NfdGFnLG5hPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkgCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLX07Ci0jZW5kaWYKLQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxMzAwKQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgQVVYNzc4MDc2X09QX1RBR19OQU1FCi0gICAgOiB0YWc8VCxuYT4KLXsKLX07Ci0jZWxzZQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgQVVYNzc4MDc2X09QX1RBR19OQU1FCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0jZW5kaWYKLQotCi0jaWYgQVVYNzc4MDc2X09QX0FSSVRZICE9IDIKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX1JJR0hUX09QRVJBTkQodW51c2VkLCBpLCBOKSAsIE5ETkJPT1NUX1BQX0NBVChOLCBORE5CT09TVF9NUExfUFBfQUREKGksIDIpKT4KLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX05fQ0FMTFMoaSwgTikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoIE5ETkJPT1NUX1BQX0RFQyhpKSwgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF9JREVOVElUWV9GVU5DLCBBVVg3NzgwNzZfT1BfTkFNRTwgKSBcCi0gICAgTjEgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCggTkROQk9PU1RfTVBMX1BQX1NVQihpLCAxKSwgQVVYNzc4MDc2X09QX1JJR0hUX09QRVJBTkQsIE4gKSBcCi0vKiovCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTCgyLCB0eXBlbmFtZSBOLCBuYSkKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX05BTUUKLSAgICA6IEFVWDc3ODA3Nl9PUF9OX0NBTExTKEFVWDc3ODA3Nl9PUF9BUklUWSwgTikKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9BUklUWQotICAgICAgICAsIEFVWDc3ODA3Nl9PUF9OQU1FCi0gICAgICAgICwgKCBORE5CT09TVF9NUExfUFBfUEFSQU1TKEFVWDc3ODA3Nl9PUF9BUklUWSwgTikgKQotICAgICAgICApCi19OwotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKCBORE5CT09TVF9QUF9ERUMoQVVYNzc4MDc2X09QX0FSSVRZKSwgMiwgPG5kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfb3AuaHBwPiApKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfT1BfTl9DQUxMUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9PUF9SSUdIVF9PUEVSQU5ECi0KLSMgICBlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsMik7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTCgyLCB0eXBlbmFtZSBOLCBuYSkKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX05BTUUKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGlmXzwKLSNlbHNlCi0gICAgOiBpZl88Ci0jZW5kaWYKLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsMik8TjEsTjI+Ci0gICAgICAgICwgQVVYNzc4MDc2X09QX05BTUU8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSwyKTxOMSxOMj4KLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoMywgTkROQk9PU1RfUFBfSU5DKEFVWDc3ODA3Nl9PUF9BUklUWSksIE4pCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0gICAgPgotI2VuZGlmCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICBBVVg3NzgwNzZfT1BfQVJJVFkKLSAgICAgICAgLCBBVVg3NzgwNzZfT1BfTkFNRQotICAgICAgICAsICggTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhBVVg3NzgwNzZfT1BfQVJJVFksIE4pICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSwyKQotCi0jZW5kaWYKLQotI2Vsc2UgLy8gQVVYNzc4MDc2X09QX0FSSVRZID09IDIKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9PUF9OQU1FCi0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0gICAgOiBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPAotICAgICAgICAgIHR5cGVuYW1lIEFVWDc3ODA3Nl9PUF9UQUdfTkFNRTxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBBVVg3NzgwNzZfT1BfVEFHX05BTUU8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PE4xLE4yPjo6dHlwZQotI2Vsc2UKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgQVVYNzc4MDc2X09QX0lNUExfTkFNRTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgQVVYNzc4MDc2X09QX1RBR19OQU1FPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBBVVg3NzgwNzZfT1BfVEFHX05BTUU8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLSNlbmRpZgotewotI2lmIEFVWDc3ODA3Nl9PUF9BUklUWSAhPSAyCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICBBVVg3NzgwNzZfT1BfQVJJVFkKLSAgICAgICAgLCBBVVg3NzgwNzZfT1BfTkFNRQotICAgICAgICAsICggTkROQk9PU1RfTVBMX1BQX1BBUlRJQUxfU1BFQ19QQVJBTVMoMiwgTiwgbmEpICkKLSAgICAgICAgKQotIyAgIGVsc2UKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSwyKSwgKE4xLCBOMikpCi0jICAgZW5kaWYKLQotI2Vsc2UKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIEFVWDc3ODA3Nl9PUF9OQU1FLCAoTjEsIE4yKSkKLSNlbmRpZgotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCBBVVg3NzgwNzZfT1BfQVJJVFksIEFVWDc3ODA3Nl9PUF9OQU1FKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDEKLQotLy8gRm9yIGdjYyA0LjQgY29tcGF0YWJpbGl0eSwgd2UgbXVzdCBpbmNsdWRlIHRoZQotLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIIHRlc3QgaW5zaWRlIGFuICNlbHNlIGNsYXVzZS4KLSNlbHNlIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotI2lmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDEKLQotIyAgIGRlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCB0eXBlbmFtZSBOKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfT1BfTkFNRTxORE5CT09TVF9NUExfUFBfUEFSVElBTF9TUEVDX1BBUkFNUyhpXywgTiwgbmEpPgotI2lmIGlfICE9IDIKLSAgICA6IEFVWDc3ODA3Nl9PUF9OX0NBTExTKGlfLCBOKQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICBBVVg3NzgwNzZfT1BfQVJJVFkKLSAgICAgICAgLCBBVVg3NzgwNzZfT1BfTkFNRQotICAgICAgICAsICggTkROQk9PU1RfTVBMX1BQX1BBUlRJQUxfU1BFQ19QQVJBTVMoaV8sIE4sIG5hKSApCi0gICAgICAgICkKLX07Ci0jZW5kaWYKLQotIyAgIHVuZGVmIGlfCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQ4MDljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjMzMWRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWNkN2ZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTUzNzdjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGFwcGx5MzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGFwcGx5NDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXBwbHk1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNjcxZDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVjNjM5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIGJvb2wgRl9oYXNfYXBwbHkgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDBfYmNiIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PG5hPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDBfYmNiPCBGLHRydWUgPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjphcHBseSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMAotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgYXBwbHlfd3JhcF9pbXBsMF9iY2I8IEYsIGF1eDo6aGFzX2FwcGx5PEY+Ojp2YWx1ZSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAxCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDAgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAxCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0gICAgOiBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwxID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgICwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0gICAgOiBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwyID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotICAgIDogYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMyA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotICAgIDogYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsNCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNTwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNCwgVDUKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotICAgIDogYXBwbHlfd3JhcF9pbXBsNTwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsNSA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjljMDE3YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJhNGNhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNTc1NGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNWQ1NTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEzZjg0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDgyODkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgfCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGNkZDIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdHhvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIF4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNWQ4YTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYzU4MGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJkaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMTU5YzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJlcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLQotICAgIDogZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJiNGJlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ3MWYxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJmdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sVGFnLCBpbnRfPCAtMSA+ID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88MT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDI+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88ND4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88ND4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw1PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88NT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDY+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LFRhZywgaW50XzwxPiA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Nj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSxBcml0eSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwgcXVvdGUxPGF1eDo6dGVtcGxhdGVfYXJpdHk+LCB0eXBlbmFtZSBsMTo6cmVzdWx0XyA+IGFyaXR5XzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgaWZfPCBpc19sZSxhcml0eV8sQXJpdHkgPjo6dHlwZSwgVGFnMiA+IGwzOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyLCBsMz4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMywgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MDg4NTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImdyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzU4NjI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZTE4OTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJpbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogVDEsIFQyCi17Ci0gICAgdHlwZWRlZiBpbmhlcml0MiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpbmhlcml0MjwgVDEsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKFQxLCBlbXB0eV9iYXNlKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsVDIgPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBUMikpCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBlbXB0eV9iYXNlIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgZW1wdHlfYmFzZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDllMzE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIml0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE1NWRhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJpdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyODdhMWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmOWExMGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQ3MjZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJsZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ZWRiY2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJsaXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3Q7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QwPCAgPgotewotICAgIHR5cGVkZWYgbGlzdDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGxpc3QyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWJiMzZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJsaXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogbGlzdDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2Zjg5NjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm1hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXA7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMDwgID4KLXsKLSAgICB0eXBlZGVmIG1hcDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcAotICAgIDogbWFwMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAwNmUyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJtaW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDA5Zjg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0KLSAgICA6IG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQwNmE0Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLQotICAgIDogbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJjMTlkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsPCBmYWxzZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIGZhbHNlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDwKLSAgICAgICAgICBmYWxzZQotICAgICAgICAsIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXwotICAgICAgICA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzE3NjFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJwbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YmQ2MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJwbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogcGx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICsgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MmI5MzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAicXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBib29sIGhhc190eXBlXyA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbAotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbDwgVCxmYWxzZSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8VTE+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8VTE+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMiA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQsVTUgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmE0MzhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInJldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjOTgwOWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJyZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYzQ0ZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDcyNDliNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJzZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogc2V0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNTA1MjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZGI5MzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJzaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDlmMGYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88IC0xID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDBjMDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInRpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQwYzMyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInVucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwKLSAgICAgICAgICAgICAgc2l6ZTxBcmdzPjo6dmFsdWUKLSAgICAgICAgICAgICwgRgotICAgICAgICAgICAgLCBBcmdzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YWI4NjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3I7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA3YmZkOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ2ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxYjk1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGY3MmIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjYzk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMDM5MDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMAotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLS8vLyBzaW5jZSB0aGUgZGVmYXVsdHMgYXJlICJsb3N0Iiwgd2UgaGF2ZSB0byBwYXNzICpzb21ldGhpbmcqIGV2ZW4gZm9yIG51bGxhcnkKLS8vLyBtZXRhZnVuY3Rpb24gY2xhc3NlcwotICAgICAgICBuYQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAxCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDAgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAxCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0gICAgOiBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwxID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgICwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0gICAgOiBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwyID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotICAgIDogYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMyA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotICAgIDogYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsNCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNTwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNCwgVDUKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotICAgIDogYXBwbHlfd3JhcF9pbXBsNTwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsNSA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTE5OTI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1Mzk2ZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8IC0xID4sIEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMWI2ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOGNjNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTgyNDdiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMjc2YjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXR4b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBeIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxZjY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzQ0MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ1NTg4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0KLSAgICA6IGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGNkNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBmb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWNiZDlmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sVGFnLCBpbnRfPCAtMSA+ID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88MT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDI+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88ND4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88ND4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw1PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88NT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDY+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LFRhZywgaW50XzwxPiA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Nj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSxBcml0eSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwgcXVvdGUxPGF1eDo6dGVtcGxhdGVfYXJpdHk+LCB0eXBlbmFtZSBsMTo6cmVzdWx0XyA+IGFyaXR5XzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgaWZfPCBpc19sZSxhcml0eV8sQXJpdHkgPjo6dHlwZSwgVGFnMiA+IGwzOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyLCBsMz4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMywgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3ZWI0YTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YmQ0MTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0KLSAgICA6IGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTdmMzEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogVDEsIFQyCi17Ci0gICAgdHlwZWRlZiBpbmhlcml0MiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpbmhlcml0MjwgVDEsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKFQxLCBlbXB0eV9iYXNlKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsVDIgPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBUMikpCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBlbXB0eV9iYXNlIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgZW1wdHlfYmFzZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzA4YjMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGI4ZWViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2QxNDFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjOGM0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MDwgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBsaXN0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQzZjM4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogbGlzdDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRmMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAwPCAgPgotewotICAgIHR5cGVkZWYgbWFwMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBtYXAyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTRmZGE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IG1pbnVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAtIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U4OTY5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0KLSAgICA6IG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRlMWUxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWU4ZWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbAotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbDwgZmFsc2UsVDEsVDIsVDMsVDQgPgotICAgIDogb3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCBmYWxzZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8Ci0gICAgICAgICAgZmFsc2UKLSAgICAgICAgLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8KLSAgICAgICAgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOGIyY2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U3N2ZiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNmMxNzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3Y2M2ODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzRjYTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmMmZkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBzZXQyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk2NGZiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2E1ZmUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTA1NzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogbXBsOjppbnRfPCAtMSA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBGOjphcml0eQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci0gICAgOiB0ZW1wbGF0ZV9hcml0eV9pbXBsPCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZDxGPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rj4KLXsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE1NWZlZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwNDllYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgaW50IHNpemUsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAwLEYsQXJncyA+Ci0gICAgOiBhcHBseTA8Ci0gICAgICAgICAgRgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMSxGLEFyZ3MgPgotICAgIDogYXBwbHkxPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMixGLEFyZ3MgPgotICAgIDogYXBwbHkyPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDMsRixBcmdzID4KLSAgICA6IGFwcGx5MzwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDQsRixBcmdzID4KLSAgICA6IGFwcGx5NDwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA1LEYsQXJncyA+Ci0gICAgOiBhcHBseTU8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp1bnBhY2tfYXJnc19pbXBsPAotICAgICAgICAgICAgICBzaXplPEFyZ3M+Ojp2YWx1ZQotICAgICAgICAgICAgLCBGCi0gICAgICAgICAgICAsIEFyZ3MKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2NzU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZmJkYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU0ODA5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIzMzFkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVjZDdmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbAotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsPCB0cnVlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IGFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIHRydWVfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDwKLSAgICAgICAgICB0cnVlCi0gICAgICAgICwgdHJ1ZV8sIHRydWVfLCB0cnVlXywgdHJ1ZV8KLSAgICAgICAgPgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1Mzc3Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjY3MWQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBhcHBseTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4YWJhMzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAwCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotLy8vIHNpbmNlIHRoZSBkZWZhdWx0cyBhcmUgImxvc3QiLCB3ZSBoYXZlIHRvIHBhc3MgKnNvbWV0aGluZyogZXZlbiBmb3IgbnVsbGFyeQotLy8vIG1ldGFmdW5jdGlvbiBjbGFzc2VzCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotICAgIDogYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDEgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMgotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDIgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0gICAgOiBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwzID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0gICAgOiBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw0ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0LCBUNQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0gICAgOiBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw1ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YzAxN2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYTRjYTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwMCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTU3NTRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8IC0xID4sIEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTVkNTU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhM2Y4NDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdGFuZF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA4Mjg5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhjZGQyMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzVkOGExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJkZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZTsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWM1ODBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImRpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTE1OWMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImVxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYjRiZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJmb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBmb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NzFmMTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImZ1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPixUYWcsIGludF88IC0xID4gPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDE+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwyPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw0PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw0PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDU+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw1PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Nj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sVGFnLCBpbnRfPDE+ID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw2PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxLEFyaXR5ID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPCBxdW90ZTE8YXV4Ojp0ZW1wbGF0ZV9hcml0eT4sIHR5cGVuYW1lIGwxOjpyZXN1bHRfID4gYXJpdHlfOwotICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBpZl88IGlzX2xlLGFyaXR5XyxBcml0eSA+Ojp0eXBlLCBUYWcyID4gbDM7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDIsIGwzPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAzLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjA4ODUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc1ODYyOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImdyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2UxODk0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImluaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBUMSwgVDIKLXsKLSAgICB0eXBlZGVmIGluaGVyaXQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGluaGVyaXQyPCBUMSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoVDEsIGVtcHR5X2Jhc2UpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxUMiA+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIGVtcHR5X2Jhc2UgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBlbXB0eV9iYXNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ5ZTMxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNTVkYTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIml0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mjg3YTFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJsYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjlhMTBiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU0NzI2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGVkYmNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFiYjM2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBsaXN0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmY4OTY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAwPCAgPgotewotICAgIHR5cGVkZWYgbWFwMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBtYXAyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMDZlMjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm1pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAwOWY4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJtb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MDZhNDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm5vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYzE5ZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAib3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGwKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGw8IGZhbHNlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPAotICAgICAgICAgIGZhbHNlCi0gICAgICAgICwgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfCi0gICAgICAgID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMxNzYxZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInBsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGJkNjMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInBsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjlkMThiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJxdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmE0MzhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJyZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjOTgwOWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAicmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYzQ0ZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJzZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3Qgc2V0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBzZXQwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IHNldDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDcyNDliNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAic2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IHNldDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNTA1MjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJzaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZGI5MzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAic2hpZnRfcmlnaHQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0KLSAgICA6IHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X3JpZ2h0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPj4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDlmMGYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInRlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogbXBsOjppbnRfPCAtMSA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBGOjphcml0eQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci0gICAgOiB0ZW1wbGF0ZV9hcml0eV9pbXBsPCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZDxGPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rj4KLXsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDBjMDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ0aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICogTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQwYzMyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ1bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBpbnQgc2l6ZSwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDAsRixBcmdzID4KLSAgICA6IGFwcGx5MDwKLSAgICAgICAgICBGCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAxLEYsQXJncyA+Ci0gICAgOiBhcHBseTE8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAyLEYsQXJncyA+Ci0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMyxGLEFyZ3MgPgotICAgIDogYXBwbHkzPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNCxGLEFyZ3MgPgotICAgIDogYXBwbHk0PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDUsRixBcmdzID4KLSAgICA6IGFwcGx5NTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnVucGFja19hcmdzX2ltcGw8Ci0gICAgICAgICAgICAgIHNpemU8QXJncz46OnZhbHVlCi0gICAgICAgICAgICAsIEYKLSAgICAgICAgICAgICwgQXJncwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YWI4NjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ2ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA3YmZkOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxX2M8IFQsIFQoQzApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwgVCwgVChDMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FkdmFuY2VfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhNWFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMWI5NWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsCi0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGw8IHRydWUsVDEsVDIsVDMsVDQgPgotICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgdHJ1ZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFuZF9pbXBsPAotICAgICAgICAgIHRydWUKLSAgICAgICAgLCB0cnVlXywgdHJ1ZV8sIHRydWVfLCB0cnVlXwotICAgICAgICA+Ci0gICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFuZF8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmNzJiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGFwcGx5MzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGFwcGx5NDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXBwbHk1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjY2M5NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBhcHBseTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzkwMjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotCi0gICAgLCB0eXBlbmFtZSBoYXNfYXBwbHlfID0gdHlwZW5hbWUgYXV4OjpoYXNfYXBwbHk8Rj46OnR5cGUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCBhcHBseV93cmFwMDwgRix0cnVlXyA+Ci0gICAgOiBGOjphcHBseQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PFQxPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2VmM2ZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwNiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotLy8vIGlmXy9ldmFsX2lmIHNwZWNpYWxpemF0aW9ucwotdGVtcGxhdGU8IHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGlmXzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGlmXyxUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NmY2M2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTE1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8IC0xID4sIEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBiaW5kMzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDUsbjUgPiByNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6dHlwZSBhNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6bmV4dCBuNjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotLy8vIGlmXy9ldmFsX2lmIHNwZWNpYWxpemF0aW9ucwotdGVtcGxhdGU8IHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGlmXzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGlmXyxUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJlZWViOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgaW50IGR1bW15XyA9IDAKLSAgICA+Ci1zdHJ1Y3QgYmluZDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBpbnQgZHVtbXlfID0gMAotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgaW50IGR1bW15XyA9IDAKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCBpbnQgZHVtbXlfID0gMAotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCBpbnQgZHVtbXlfID0gMAotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgaW50IGR1bW15XyA9IDAKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCBpbnQgZHVtbXlfID0gMAotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q4Y2M1Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdGFuZF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ODI0N2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIHwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYyNzZiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0eG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdHhvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIF4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzFmNjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZTsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjNDQzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGRpdmlkZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBkaXZpZGVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAvIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDU1ODg1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLQotICAgIDogZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0Y2Q0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMWViNTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgCi0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMDxGPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDI8IHRydWVfLFRhZyxGLEwxLEwyID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIHF1b3RlMjwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MzwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDUKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlLCB0eXBlbmFtZSBMNTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDU8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0LEw1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIHF1b3RlNTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XywgdHlwZW5hbWUgTDU6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdlYjRhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLQotICAgIDogZ3JlYXRlcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlciwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzViZDQxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5N2YzMTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBUMSwgVDIKLXsKLSAgICB0eXBlZGVmIGluaGVyaXQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGluaGVyaXQyPCBUMSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoVDEsIGVtcHR5X2Jhc2UpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxUMiA+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIGVtcHR5X2Jhc2UgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBlbXB0eV9iYXNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMDhiMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmNWY2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0YjhlZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZDE0MWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0KLSAgICA6IGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3NfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2M4YzQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3Q7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QwPCAgPgotewotICAgIHR5cGVkZWYgbGlzdDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGxpc3QyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDNmMzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBsaXN0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk3NGYyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBtYXAwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IG1hcDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1NGZkYTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTg5NjkxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGUxZTE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0KLSAgICA6IG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZThlZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsPCBmYWxzZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIGZhbHNlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDwKLSAgICAgICAgICBmYWxzZQotICAgICAgICAsIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXwotICAgICAgICA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ4YjJjZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHBsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICArIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2U3OWVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBib29sIGhhc190eXBlXyA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbAotICAgIDogVAotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IHF1b3RlX2ltcGw8IFQsZmFsc2UgPgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTEKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8VTE+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8VTE+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCxVNSA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0LFU1ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkM2FkNzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2JmNTA4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzRjYTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmMmZkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBzZXQyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk2NGZiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2E1ZmUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2I0MmFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTU1ZmVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHRpbWVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAqIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWMzMWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBpbnQgc2l6ZSwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDAsRixBcmdzID4KLSAgICA6IGFwcGx5MDwKLSAgICAgICAgICBGCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAxLEYsQXJncyA+Ci0gICAgOiBhcHBseTE8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAyLEYsQXJncyA+Ci0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMyxGLEFyZ3MgPgotICAgIDogYXBwbHkzPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNCxGLEFyZ3MgPgotICAgIDogYXBwbHk0PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDUsRixBcmdzID4KLSAgICA6IGFwcGx5NTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSxGLCBBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNjc1ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcjsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmZiZGI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxX2M8IFQsIFQoQzApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwgVCwgVChDMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FkdmFuY2VfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhNWFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMWI5NWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsCi0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGw8IHRydWUsVDEsVDIsVDMsVDQgPgotICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgdHJ1ZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFuZF9pbXBsPAotICAgICAgICAgIHRydWUKLSAgICAgICAgLCB0cnVlXywgdHJ1ZV8sIHRydWVfLCB0cnVlXwotICAgICAgICA+Ci0gICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFuZF8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmNzJiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGFwcGx5MzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGFwcGx5NDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXBwbHk1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjY2M5NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBhcHBseTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzkwMjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotCi0gICAgLCB0eXBlbmFtZSBoYXNfYXBwbHlfID0gdHlwZW5hbWUgYXV4OjpoYXNfYXBwbHk8Rj46OnR5cGUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCBhcHBseV93cmFwMDwgRix0cnVlXyA+Ci0gICAgOiBGOjphcHBseQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PFQxPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTBiZjczLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotLy8vIGlmXy9ldmFsX2lmIHNwZWNpYWxpemF0aW9ucwotdGVtcGxhdGU8IHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGlmXzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGlmXyxUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgZXZhbF9pZjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGV2YWxfaWYsVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVjZmM2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi17Ci0gICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmc8IGFyZzwgLTEgPiwgQXJnID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFyZzo6bmV4dCBuZXh0OwotICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBldmFsX2lmOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgZXZhbF9pZixUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMDQ2ZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYmluZDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q4Y2M1Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdGFuZF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ODI0N2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIHwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYyNzZiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0eG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdHhvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIF4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzFmNjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZTsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjNDQzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGRpdmlkZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBkaXZpZGVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAvIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDU1ODg1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLQotICAgIDogZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0Y2Q0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhY2JkOWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPixUYWcsIGludF88IC0xID4gPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDE+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwyPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw0PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw0PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDU+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw1PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Nj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sVGFnLCBpbnRfPDE+ID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw2PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxLEFyaXR5ID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPCBxdW90ZTE8YXV4Ojp0ZW1wbGF0ZV9hcml0eT4sIHR5cGVuYW1lIGwxOjpyZXN1bHRfID4gYXJpdHlfOwotICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBpZl88IGlzX2xlLGFyaXR5XyxBcml0eSA+Ojp0eXBlLCBUYWcyID4gbDM7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDIsIGwzPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAzLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdlYjRhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLQotICAgIDogZ3JlYXRlcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlciwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzViZDQxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5N2YzMTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBUMSwgVDIKLXsKLSAgICB0eXBlZGVmIGluaGVyaXQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGluaGVyaXQyPCBUMSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoVDEsIGVtcHR5X2Jhc2UpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxUMiA+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIGVtcHR5X2Jhc2UgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBlbXB0eV9iYXNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMDhiMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmNWY2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0YjhlZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZDE0MWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0KLSAgICA6IGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3NfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2M4YzQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3Q7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QwPCAgPgotewotICAgIHR5cGVkZWYgbGlzdDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGxpc3QyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDNmMzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBsaXN0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk3NGYyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBtYXAwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IG1hcDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1NGZkYTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTg5NjkxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGUxZTE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0KLSAgICA6IG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZThlZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsPCBmYWxzZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIGZhbHNlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDwKLSAgICAgICAgICBmYWxzZQotICAgICAgICAsIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXwotICAgICAgICA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ4YjJjZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHBsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICArIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGJiM2E0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBib29sIGhhc190eXBlXyA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IHF1b3RlX2ltcGw8IFQsZmFsc2UgPgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTEKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8VTE+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8VTE+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCxVNSA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0LFU1ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkM2FkNzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2JmNTA4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzRjYTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmMmZkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBzZXQyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk2NGZiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2E1ZmUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmJhMGFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4gc3RydWN0IGFyaXR5X3RhZwotewotICAgIHR5cGVkZWYgY2hhciAoJnR5cGUpW04gKyAxXTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IEMxLCBpbnQgQzIsIGludCBDMywgaW50IEM0LCBpbnQgQzUsIGludCBDNgotICAgID4KLXN0cnVjdCBtYXhfYXJpdHkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgKCBDNiA+IDAgPyBDNiA6ICggQzUgPiAwID8gQzUgOiAoIEM0ID4gMCA/IEM0IDogKCBDMyA+IDAgPyBDMyA6ICggQzIgPiAwID8gQzIgOiAoIEMxID4gMCA/IEMxIDogLTEgKSApICkgKSApICkKLSAgICAgICAgKTsKLX07Ci0KLWFyaXR5X3RhZzwwPjo6dHlwZSBhcml0eV9oZWxwZXIoLi4uKTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgID4KLXR5cGVuYW1lIGFyaXR5X3RhZzwxPjo6dHlwZQotYXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjwgRjxUMT4gPiwgYXJpdHlfdGFnPDE+KTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotdHlwZW5hbWUgYXJpdHlfdGFnPDI+Ojp0eXBlCi1hcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPCBGPCBUMSxUMiA+ID4sIGFyaXR5X3RhZzwyPik7Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotdHlwZW5hbWUgYXJpdHlfdGFnPDM+Ojp0eXBlCi1hcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPCBGPCBUMSxUMixUMyA+ID4sIGFyaXR5X3RhZzwzPik7Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci10eXBlbmFtZSBhcml0eV90YWc8ND46OnR5cGUKLWFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8IEY8IFQxLFQyLFQzLFQ0ID4gPiwgYXJpdHlfdGFnPDQ+KTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgID4KLXR5cGVuYW1lIGFyaXR5X3RhZzw1Pjo6dHlwZQotYXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjwgRjwgVDEsVDIsVDMsVDQsVDUgPiA+LCBhcml0eV90YWc8NT4pOwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIFA2Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYKLSAgICA+Ci10eXBlbmFtZSBhcml0eV90YWc8Nj46OnR5cGUKLWFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8IEY8IFQxLFQyLFQzLFQ0LFQ1LFQ2ID4gPiwgYXJpdHlfdGFnPDY+KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCBpbnQgTiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8Rj4oKSwgYXJpdHlfdGFnPE4+KCkpKSAtIDEKLSAgICAgICAgKTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9ICgKLSAgICAgICAgICBtYXhfYXJpdHk8IHRlbXBsYXRlX2FyaXR5X2ltcGw8IEYsMSA+Ojp2YWx1ZSwgdGVtcGxhdGVfYXJpdHlfaW1wbDwgRiwyID46OnZhbHVlLCB0ZW1wbGF0ZV9hcml0eV9pbXBsPCBGLDMgPjo6dmFsdWUsIHRlbXBsYXRlX2FyaXR5X2ltcGw8IEYsNCA+Ojp2YWx1ZSwgdGVtcGxhdGVfYXJpdHlfaW1wbDwgRiw1ID46OnZhbHVlLCB0ZW1wbGF0ZV9hcml0eV9pbXBsPCBGLDYgPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgKSk7Ci0gICAgdHlwZWRlZiBtcGw6OmludF88dmFsdWU+IHR5cGU7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTU1ZmVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHRpbWVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAqIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWMzMWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBpbnQgc2l6ZSwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDAsRixBcmdzID4KLSAgICA6IGFwcGx5MDwKLSAgICAgICAgICBGCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAxLEYsQXJncyA+Ci0gICAgOiBhcHBseTE8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAyLEYsQXJncyA+Ci0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMyxGLEFyZ3MgPgotICAgIDogYXBwbHkzPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNCxGLEFyZ3MgPgotICAgIDogYXBwbHk0PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDUsRixBcmdzID4KLSAgICA6IGFwcGx5NTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSxGLCBBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNjc1ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcjsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmZiZGI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxX2M8IFQsIFQoQzApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwgVCwgVChDMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzYxMmExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODUyMDc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjliOTQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IGFuZF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhbmRfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGFuZF9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsdHJ1ZV8gPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFuZF9pbXBsPHRydWU+Ci0gICAgOjpyZXN1bHRfPCB0cnVlXyx0cnVlXyx0cnVlXyx0cnVlXyA+Ci0gICAgICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsVDUgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDVjNDcyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTA8aW50PgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkxPCBpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5MjwgaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkzPCBpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHk0PCBpbnQsaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5NTwgaW50LGludCxpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmE5YTc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MTU3ZDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGPgotc3RydWN0IG1zdmNfYXBwbHkwCi17Ci0gICAgdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgZl8gOiBGIHt9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGZfPHRydWU+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUCAgPSBpbnQgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgID0gaW50ID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmXzwgYXV4Ojptc3ZjX25ldmVyX3RydWU8Rj46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8PgotICAgIHsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfYXBwbHkwPEY+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDA8aW50PgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRj4KLXN0cnVjdCBtc3ZjX2FwcGx5MQotewotICAgIHRlbXBsYXRlPCBib29sID4gc3RydWN0IGZfIDogRiB7fTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBmXzx0cnVlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZl88IGF1eDo6bXN2Y19uZXZlcl90cnVlPEY+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PFQxPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19hcHBseTE8Rj46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgVDEKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwMTwgaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGPgotc3RydWN0IG1zdmNfYXBwbHkyCi17Ci0gICAgdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgZl8gOiBGIHt9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGZfPHRydWU+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZfPCBhdXg6Om1zdmNfbmV2ZXJfdHJ1ZTxGPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfYXBwbHkyPEY+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIFQxLCBUMgotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAyPCBpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGPgotc3RydWN0IG1zdmNfYXBwbHkzCi17Ci0gICAgdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgZl8gOiBGIHt9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGZfPHRydWU+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZl88IGF1eDo6bXN2Y19uZXZlcl90cnVlPEY+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfYXBwbHkzPEY+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwMzwgaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgbXN2Y19hcHBseTQKLXsKLSAgICB0ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBmXyA6IEYge307Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZl88dHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAgICAgPgotICAgICAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZl88IGF1eDo6bXN2Y19uZXZlcl90cnVlPEY+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2FwcGx5NDxGPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXA0PCBpbnQsaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgbXN2Y19hcHBseTUKLXsKLSAgICB0ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBmXyA6IEYge307Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZl88dHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICAgICAgPgotICAgICAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmXzwgYXV4Ojptc3ZjX25ldmVyX3RydWU8Rj46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2FwcGx5NTxGPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwNTwgaW50LGludCxpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0OTRhMjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLSAgICA6IHJlc29sdmVfYXJnX2ltcGw8IGlzX2JpbmRfdGVtcGxhdGU8VD46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxVMSxVMixVMyxVNCxVNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgaW50IGFyaXR5XyA+IHN0cnVjdCBiaW5kX2Nob29zZXI7Ci0KLWF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKC4uLik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IGF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKHByb3RlY3Q8VD4qKTsKLQotdGVtcGxhdGU8IGludCBOID4KLWF1eDo6eWVzX3RhZyBpc19iaW5kX2hlbHBlcihhcmc8Tj4qKTsKLQotdGVtcGxhdGU8IGJvb2wgaXNfcmVmXyAgPSB0cnVlID4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgIHNpemVvZihhdXg6OmlzX2JpbmRfaGVscGVyKHN0YXRpY19jYXN0PFQqPigwKSkpCi0gICAgICAgICAgICAgICAgPT0gc2l6ZW9mKGF1eDo6eWVzX3RhZykKLSAgICAgICAgICAgICk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGUKLSAgICA6IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19yZWZlcmVuY2VfaW1wbDxUPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMDxGPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMTwgRixUMSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMjwgRixUMSxUMiA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDM8IEYsVDEsVDIsVDMgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmEyYjI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgLCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotICAgIDogcmVzb2x2ZV9hcmdfaW1wbDwgaXNfYmluZF90ZW1wbGF0ZTxUPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFUxLFUyLFUzLFU0LFU1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJnID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsPCBhcmc8IC0xID4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PEFyZz46OnR5cGUgbmV4dDsKLSAgICAgICAgdHlwZWRlZiBBcmcgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZyA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotICAgIDogcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsPFQ+Ojp0ZW1wbGF0ZSByZXN1bHRfPEFyZz4KLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgYXJpdHlfID4gc3RydWN0IGJpbmRfY2hvb3NlcjsKLQotYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIoLi4uKTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIocHJvdGVjdDxUPiopOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGFyZzxOPiopOwotCi10ZW1wbGF0ZTwgYm9vbCBpc19yZWZfICA9IHRydWUgPgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgc2l6ZW9mKGF1eDo6aXNfYmluZF9oZWxwZXIoc3RhdGljX2Nhc3Q8VCo+KDApKSkKLSAgICAgICAgICAgICAgICA9PSBzaXplb2YoYXV4Ojp5ZXNfdGFnKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZQotICAgIDogaXNfYmluZF90ZW1wbGF0ZV9pbXBsPCA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMDxGPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMTwgRixUMSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQyPCBGLFQxLFQyID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDM8IEYsVDEsVDIsVDMgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDUsbjUgPiByNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6dHlwZSBhNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNTo6bmV4dCBuNjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMWI2ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZWIxNDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdGFuZF8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGJpdGFuZF8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0YW5kXzwKLSAgICAgICAgICAgICAgYml0YW5kXzI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBiaXRhbmRfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXRhbmRfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdGFuZF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAmIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0YW5kX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2Y1YTAwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBiaXRvcl8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0b3JfMjwgTjEsTjIgPgotICAgICAgICAsIGJpdG9yXzwKLSAgICAgICAgICAgICAgYml0b3JfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBiaXRvcl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXRvcl8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXRvcl93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSB8IG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXRvcl93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGNmN2M1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBiaXR4b3JfMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXR4b3JfMjwgTjEsTjIgPgotICAgICAgICAsIGJpdHhvcl88Ci0gICAgICAgICAgICAgIGJpdHhvcl8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgYml0eG9yX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgYml0eG9yXzIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXR4b3Jfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgXiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdHhvcl93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5N2Q4Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2RlcXVlX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19kZXF1ZV9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWVfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19kZXF1ZV9hcmc8VDE+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ1Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDc+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUOT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTE+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDEzPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxNT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTc+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE5Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6ZGVxdWVfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6ZGVxdWVfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IGF1eDo6ZGVxdWVfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6ZGVxdWVfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY2MzFhZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgZGl2aWRlczI8IE4xLE4yID4KLSAgICAgICAgLCBkaXZpZGVzPAotICAgICAgICAgICAgICBkaXZpZGVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGRpdmlkZXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGRpdmlkZXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGRpdmlkZXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBkaXZpZGVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgZGl2aWRlc193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAvIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmRpdmlkZXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYTJjYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPT0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjYTBjNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBmb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgICAgIDQKLSAgICAgICAgICAgICwgRmlyc3QKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBTdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gY2h1bmtfOwotCi0gICAgICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIGZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi0gICAgOiBmb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhOTcxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDE8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQxPCBGLFQxID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MwotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzPCB0cnVlXyxUYWcsRixMMSxMMixMMyA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBxdW90ZTM8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NDwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNAotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWwgY2FzZSBmb3IgJ3Byb3RlY3QnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IG1wbDo6cHJvdGVjdDxUPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIE1XQ1cgOC4zKy9FREcgPCAzMDMsIGxlYWRzIHRvIGFtYmlndWl0eSBvbiBEaWdpdGFsIE1hcnMKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcxLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mjxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMj4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA4MzRjZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2NhMGMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2IwYTQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQzEsIGJvb2wgQzIgPgotc3RydWN0IGluaGVyaXQyX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMSwgVDIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRGVyaXZlZCB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IGZhbHNlLHRydWUgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQxCi0gICAgewotICAgICAgICB0eXBlZGVmIFQxIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgdHJ1ZSxmYWxzZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDIgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCB0cnVlLHRydWUgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMSB0eXBlXzsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBhdXg6OmluaGVyaXQyX2ltcGw8Ci0gICAgICAgICAgaXNfZW1wdHlfYmFzZTxUMT46OnZhbHVlCi0gICAgICAgICwgaXNfZW1wdHlfYmFzZTxUMj46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IGluaGVyaXQyPCBUMSxUMiA+LFQxLCBUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbmhlcml0Mjo6dHlwZV8gdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGluaGVyaXQyLCAoVDEsIFQyKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NTMxNzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgNAotICAgICAgICAgICAgLCBGaXJzdAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIFN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBjaHVua187Ci0KLSAgICAgICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCBpdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgaXRlcl9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLSAgICA6IGl0ZXJfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWI2ZDEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGxlc3NfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPgotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYzJhM2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMTllNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBsaXN0X2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsaXN0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19saXN0X2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19saXN0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBsaXN0X2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbGlzdF9hcmc8VDE+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDM+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDU+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDc+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDk+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxMT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDEzPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTU+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxNz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Omxpc3RfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBhdXg6Omxpc3RfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVkN2Y3ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc19saXN0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2xpc3RfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IGxpc3RfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2xpc3RfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMzPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDNT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM5Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzExPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGF1eDo6bGlzdF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUxNzRjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBtYXBfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbWFwMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX21hcF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbWFwX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBtYXBfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19tYXBfYXJnPFQxPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMz46OnZhbHVlICsgaXNfbWFwX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDU+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ3Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUOT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxMT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxMz46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxNT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxNz46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxOT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bWFwX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1hcF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IGF1eDo6bWFwX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1hcF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllM2E5MDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1pbnVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgbWludXMyPCBOMSxOMiA+Ci0gICAgICAgICwgbWludXM8Ci0gICAgICAgICAgICAgIG1pbnVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbWludXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbWludXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IG1pbnVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIC0gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6Om1pbnVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE4NWViZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgbW9kdWx1c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAlIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6Om1vZHVsdXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdiMGExMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMjNiOGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IG9yX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiB0cnVlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgb3JfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBvcl9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsZmFsc2VfID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPGZhbHNlPgotICAgIDo6cmVzdWx0XzwgZmFsc2VfLGZhbHNlXyxmYWxzZV8sZmFsc2VfID4KLSAgICAgICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LFQ1ID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5Nzc5NGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHBsdXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIHBsdXMyPCBOMSxOMiA+Ci0gICAgICAgICwgcGx1czwKLSAgICAgICAgICAgICAgcGx1czI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBwbHVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBwbHVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IHBsdXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgKyBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpwbHVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTc3ZmJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNlM2NkZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ0MTdmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NGQ1M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHNldDA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19zZXRfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3NldF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfc2V0X2FyZzxUMT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDM+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ1Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUNz46OnZhbHVlICsgaXNfc2V0X2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDk+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTE+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTM+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTU+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTc+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTk+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnNldF9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBhdXg6OnNldF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjVmMmFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBzZXRfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8Ci0gICAgICAgICAgICAgIFQsIEMwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIEMgPgotc3RydWN0IGlzX3NldF9jX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19zZXRfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IHNldF9jX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfc2V0X2NfYXJnPEMxPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzM+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDNT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM3Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8Qzk+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzExPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxMz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTU+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxOT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpzZXRfY19jb3VudF9hcmdzPAotICAgICAgICAgIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogYXV4OjpzZXRfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODE5OTlhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X2xlZnQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTaGlmdCwgVCBuLCBTaGlmdCBzID4KLXN0cnVjdCBzaGlmdF9sZWZ0X3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4gPDwgcykpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6c2hpZnRfbGVmdF93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgTjo6dmFsdWUKLSAgICAgICAgICAgICwgUzo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGI2MGE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfcmlnaHQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTaGlmdCwgVCBuLCBTaGlmdCBzID4KLXN0cnVjdCBzaGlmdF9yaWdodF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuID4+IHMpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpzaGlmdF9yaWdodF93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgTjo6dmFsdWUKLSAgICAgICAgICAgICwgUzo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzFkYmE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogbXBsOjppbnRfPCAtMSA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBGOjphcml0eQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci0gICAgOiB0ZW1wbGF0ZV9hcml0eV9pbXBsPCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZDxGPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eTxpbnQ+Ci0gICAgOiBtcGw6OmludF88IC0xID4KLXsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJlY2I2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgdGltZXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCB0aW1lczI8IE4xLE4yID4KLSAgICAgICAgLCB0aW1lczwKLSAgICAgICAgICAgICAgdGltZXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICB0aW1lc19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCB0aW1lczIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgdGltZXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgKiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6dGltZXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZGI0NmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHNpemUpID4gc3RydWN0IHVucGFja19hcmdzX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MDwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkxPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTI8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTM8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTQ8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDw1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHk1PAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwgc2l6ZTxBcmdzPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgRixBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYjY3MDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc192ZWN0b3JfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3ZlY3Rvcl9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfdmVjdG9yX2FyZzxUMT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQ1Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUNz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiBhdXg6OnZlY3Rvcl9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjU0YzZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIEMgPgotc3RydWN0IGlzX3ZlY3Rvcl9jX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc192ZWN0b3JfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfdmVjdG9yX2NfYXJnPEMxPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDNT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEM2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEM3Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8Qzk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzExPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxMz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxOT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2NfaW1wbAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfY19jb3VudF9hcmdzPAotICAgICAgICAgIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogYXV4Ojp2ZWN0b3JfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FkdmFuY2VfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhNWFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkYTZmMzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3QgYW5kX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFuZF9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCx0cnVlXyA+Ci0gICAgewotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCB0cnVlXyx0cnVlXyx0cnVlXyx0cnVlXyA+Ci0gICAgICAgIDogdHJ1ZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsVDUgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODFmZGRjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkwPGludD4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotICAgIDogYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTE8IGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5MjwgaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5MzwgaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotICAgIDogYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTQ8IGludCxpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5NTwgaW50LGludCxpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmE5YTc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZDJmMDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotCi0gICAgLCB0eXBlbmFtZSBoYXNfYXBwbHlfID0gdHlwZW5hbWUgYXV4OjpoYXNfYXBwbHk8Rj46OnR5cGUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwMDxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMQotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIFQxCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwMTwgaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICBUMSwgVDIKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAyPCBpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDM8IGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwNDwgaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDUKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXA1PCBpbnQsaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwyPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDIpOwotICAgIHR5cGVkZWYgYXJnPDM+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNCB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw1PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDUpOwotICAgIHR5cGVkZWYgYXJnPDY+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ5NGEyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYmFzaWNfYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgLCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotICAgIDogcmVzb2x2ZV9hcmdfaW1wbDwgaXNfYmluZF90ZW1wbGF0ZTxUPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFUxLFUyLFUzLFU0LFU1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgYXJpdHlfID4gc3RydWN0IGJpbmRfY2hvb3NlcjsKLQotYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIoLi4uKTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIocHJvdGVjdDxUPiopOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGFyZzxOPiopOwotCi10ZW1wbGF0ZTwgYm9vbCBpc19yZWZfICA9IHRydWUgPgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgc2l6ZW9mKGF1eDo6aXNfYmluZF9oZWxwZXIoc3RhdGljX2Nhc3Q8VCo+KDApKSkKLSAgICAgICAgICAgICAgICA9PSBzaXplb2YoYXV4Ojp5ZXNfdGFnKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZQotICAgIDogaXNfYmluZF90ZW1wbGF0ZV9pbXBsPCA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQwPEY+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQxPCBGLFQxID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQyPCBGLFQxLFQyID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMzwgRixUMSxUMixUMyA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYTJiMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAsIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi0gICAgOiByZXNvbHZlX2FyZ19pbXBsPCBpc19iaW5kX3RlbXBsYXRlPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVTEsVTIsVTMsVTQsVTUgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8IGFyZzwgLTEgPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8QXJnPjo6dHlwZSBuZXh0OwotICAgICAgICB0eXBlZGVmIEFyZyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi0gICAgOiByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8VD46OnRlbXBsYXRlIHJlc3VsdF88QXJnPgotewotfTsKLQotdGVtcGxhdGU8IGludCBhcml0eV8gPiBzdHJ1Y3QgYmluZF9jaG9vc2VyOwotCi1hdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlciguLi4pOwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBhdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlcihwcm90ZWN0PFQ+Kik7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gID0gdHJ1ZSA+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICBzaXplb2YoYXV4Ojppc19iaW5kX2hlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKQotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQwPEY+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQxPCBGLFQxID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDI8IEYsVDEsVDIgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMzwgRixUMSxUMixUMyA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmQxYjZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNkZmFjOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBiaXRhbmRfMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGJpdGFuZF8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0YW5kXzwKLSAgICAgICAgICAgICAgYml0YW5kXzI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLSAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBiaXRhbmRfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXRhbmRfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdGFuZF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAmIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0YW5kX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWViNmJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdG9yXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGJpdG9yXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXRvcl88Ci0gICAgICAgICAgICAgIGJpdG9yXzI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLSAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgYml0b3JfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYml0b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgYml0b3JfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0b3Jfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgfCBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0b3Jfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwODlhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0eG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBiaXR4b3JfMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGJpdHhvcl8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0eG9yXzwKLSAgICAgICAgICAgICAgYml0eG9yXzI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLSAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBiaXR4b3JfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXR4b3JfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdHhvcl93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSBeIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0eG9yX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDk3ZDgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfZGVxdWVfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2RlcXVlX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBkZXF1ZV9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2RlcXVlX2FyZzxUMT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQzPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDU+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUNz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ5Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxMT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE1Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxNz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWVfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpkZXF1ZV9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpkZXF1ZV9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogYXV4OjpkZXF1ZV9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpkZXF1ZV9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGY0OWM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGRpdmlkZXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgZGl2aWRlczI8IE4xLE4yID4KLSAgICAgICAgLCBkaXZpZGVzPAotICAgICAgICAgICAgICBkaXZpZGVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGRpdmlkZXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGRpdmlkZXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGRpdmlkZXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBkaXZpZGVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgZGl2aWRlc193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAvIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmRpdmlkZXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzOWY0N2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA9PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGNhY2U0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICAgICA0Ci0gICAgICAgICAgICAsIEZpcnN0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgU3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IGNodW5rXzsKLQotICAgICAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IGZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCBmb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIGZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiBmb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLSAgICA6IGZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGE5NzFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgIAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIFQgcmVzdWx0XzsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotdGVtcGxhdGU8IGludCBOLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgYXJnPE4+LCBUYWcgPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDA8Ci0gICAgICAgICAgRgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxPCB0cnVlXyxUYWcsRixMMSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBxdW90ZTE8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjxUMT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MjwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMjwgRixUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBxdW90ZTQ8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ1LFRhZyA+IGw1OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgLCBpc19sZTU6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNCwgbDUKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LCBUYWcgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PFQ+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbGl6YXRpb25zIGZvciB0aGUgbWFpbiAnYmluZCcgZm9ybQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgTVdDVyA4LjMrL0VERyA8IDMwMywgbGVhZHMgdG8gYW1iaWd1aXR5IG9uIERpZ2l0YWwgTWFycwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZzEsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWNjMzA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZ3JlYXRlcl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlciwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU3MDI3NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2IwYTQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQzEsIGJvb2wgQzIgPgotc3RydWN0IGluaGVyaXQyX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMSwgVDIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRGVyaXZlZCB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IGZhbHNlLHRydWUgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQxCi0gICAgewotICAgICAgICB0eXBlZGVmIFQxIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgdHJ1ZSxmYWxzZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDIgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCB0cnVlLHRydWUgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMSB0eXBlXzsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBhdXg6OmluaGVyaXQyX2ltcGw8Ci0gICAgICAgICAgaXNfZW1wdHlfYmFzZTxUMT46OnZhbHVlCi0gICAgICAgICwgaXNfZW1wdHlfYmFzZTxUMj46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IGluaGVyaXQyPCBUMSxUMiA+LFQxLCBUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbmhlcml0Mjo6dHlwZV8gdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGluaGVyaXQyLCAoVDEsIFQyKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxYTQ1ZmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICA0Ci0gICAgICAgICAgICAsIEZpcnN0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgU3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IGNodW5rXzsKLQotICAgICAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIGl0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCBpdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLSAgICA6IGl0ZXJfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTU4OTUzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbGVzc19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg5MDQ0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3NfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjE5ZTYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGlzdDA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbGlzdF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbGlzdF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2xpc3RfYXJnPFQxPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQzPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQ1Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQ3Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQ5Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTE+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxMz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE1Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTc+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxOT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3RfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpsaXN0X2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogYXV4OjpsaXN0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZDdmN2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8Ci0gICAgICAgICAgICAgIFQsIEMwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfbGlzdF9jX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19saXN0X2NfYXJnPExPTkdfTUFYPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICAsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICAsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5LCBsb25nIEMyMAotICAgID4KLXN0cnVjdCBsaXN0X2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19saXN0X2NfYXJnPEMxPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzU+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM3Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDOT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxMT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxMz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxNT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxNz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxOT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Omxpc3RfY19jb3VudF9hcmdzPAotICAgICAgICAgIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2NfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBhdXg6Omxpc3RfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MTc0YzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIG1hcDA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19tYXBfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX21hcF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgbWFwX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbWFwX2FyZzxUMT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDM+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ1Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUNz46OnZhbHVlICsgaXNfbWFwX2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDk+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTE+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTU+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTc+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Om1hcF9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjptYXBfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBhdXg6Om1hcF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjptYXBfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGMyN2FhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1pbnVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBtaW51czI8IE4xLE4yID4KLSAgICAgICAgLCBtaW51czwKLSAgICAgICAgICAgICAgbWludXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi0gICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBtaW51c19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtaW51czIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgbWludXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgLSBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6bWludXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTJhMjA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbW9kdWx1c19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IG1vZHVsdXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgJSBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4Ojptb2R1bHVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NjE4MDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NDQ2NTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IG9yX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiB0cnVlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgb3JfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBvcl9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsZmFsc2VfID4KLSAgICB7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGZhbHNlXyxmYWxzZV8sZmFsc2VfLGZhbHNlXyA+Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxUNSA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjhjY2I3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHBsdXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgcGx1czI8IE4xLE4yID4KLSAgICAgICAgLCBwbHVzPAotICAgICAgICAgICAgICBwbHVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHBsdXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHBsdXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgcGx1c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSArIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnBsdXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNTk4Y2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPCBib29sID4gc3RydWN0IHF1b3RlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVAotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcXVvdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTEKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8VTE+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjxVMT4gPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTIKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMiA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IFUxLFUyLFUzID4gPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0ID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBVMSxVMixVMyxVNCA+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgICwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IFUxLFUyLFUzLFU0LFU1ID4gPgotCi0gICAgewotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM2YzE3My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdjYzY4OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NGQ1M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHNldDA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19zZXRfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3NldF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfc2V0X2FyZzxUMT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDM+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ1Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUNz46OnZhbHVlICsgaXNfc2V0X2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDk+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTE+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTM+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTU+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTc+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTk+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnNldF9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBhdXg6OnNldF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjVmMmFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBzZXRfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8Ci0gICAgICAgICAgICAgIFQsIEMwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIEMgPgotc3RydWN0IGlzX3NldF9jX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19zZXRfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IHNldF9jX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfc2V0X2NfYXJnPEMxPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzM+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDNT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM3Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8Qzk+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzExPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxMz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTU+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxOT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpzZXRfY19jb3VudF9hcmdzPAotICAgICAgICAgIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogYXV4OjpzZXRfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjMyZWQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNoaWZ0LCBUIG4sIFNoaWZ0IHMgPgotc3RydWN0IHNoaWZ0X2xlZnRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobiA8PCBzKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpzaGlmdF9sZWZ0X3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCBOOjp2YWx1ZQotICAgICAgICAgICAgLCBTOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNDM4MDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU2hpZnQsIFQgbiwgU2hpZnQgcyA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobiA+PiBzKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6c2hpZnRfcmlnaHRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIE46OnZhbHVlCi0gICAgICAgICAgICAsIFM6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMxZGJhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG1wbDo6aW50XzwgLTEgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogRjo6YXJpdHkKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotICAgIDogdGVtcGxhdGVfYXJpdHlfaW1wbDwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmQ8Rj46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHk8aW50PgotICAgIDogbXBsOjppbnRfPCAtMSA+Ci17Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMmYyNjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgdGltZXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIHRpbWVzMjwgTjEsTjIgPgotICAgICAgICAsIHRpbWVzPAotICAgICAgICAgICAgICB0aW1lczI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLSAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHRpbWVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHRpbWVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCB0aW1lc193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAqIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4Ojp0aW1lc193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNkYjQ2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgc2l6ZSkgPiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkwPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTE8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MjwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MzwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5NDwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTU8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBGLEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNiNjcwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3ZlY3Rvcl9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc192ZWN0b3JfYXJnPFQxPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQ3Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUOT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxMT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxMz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxNT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxNz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxOT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IGF1eDo6dmVjdG9yX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NTRjNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3ZlY3Rvcl9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc192ZWN0b3JfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEM1Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDOT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzEzPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxNT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiBhdXg6OnZlY3Rvcl9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwYzgyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FkdmFuY2VfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTVhZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzFiOTVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZjcyYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2NjOTRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQwMzkwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMAotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLS8vLyBzaW5jZSB0aGUgZGVmYXVsdHMgYXJlICJsb3N0Iiwgd2UgaGF2ZSB0byBwYXNzICpzb21ldGhpbmcqIGV2ZW4gZm9yIG51bGxhcnkKLS8vLyBtZXRhZnVuY3Rpb24gY2xhc3NlcwotICAgICAgICBuYQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAxCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDAgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAxCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0gICAgOiBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwxID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgICwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0gICAgOiBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwyID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotICAgIDogYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMyA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotICAgIDogYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsNCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNTwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNCwgVDUKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotICAgIDogYXBwbHlfd3JhcF9pbXBsNTwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsNSA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMGJmNzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotLy8vIGlmXy9ldmFsX2lmIHNwZWNpYWxpemF0aW9ucwotdGVtcGxhdGU8IHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGlmXzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGlmXyxUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgZXZhbF9pZjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGV2YWxfaWYsVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWNmYzY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi17Ci0gICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmc8IGFyZzwgLTEgPiwgQXJnID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFyZzo6bmV4dCBuZXh0OwotICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBldmFsX2lmOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgZXZhbF9pZixUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwNDZlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYmluZDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDhjYzVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdGFuZF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk4MjQ3Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIHwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI3NmI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0eG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdHhvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIF4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWY2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZTsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmM0NDMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGRpdmlkZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBkaXZpZGVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAvIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NTU4ODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLQotICAgIDogZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTRjZDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhOTcxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgCi0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMDxGPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDI8IHRydWVfLFRhZyxGLEwxLEwyID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIHF1b3RlMjwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MzwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDUKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlLCB0eXBlbmFtZSBMNTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDU8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0LEw1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIHF1b3RlNTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XywgdHlwZW5hbWUgTDU6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBNV0NXIDguMysvRURHIDwgMzAzLCBsZWFkcyB0byBhbWJpZ3VpdHkgb24gRGlnaXRhbCBNYXJzCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnMSwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgbGFtYmRhPCBGLFRhZzEgPgotICAgICAgICAsIFRhZzIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDI+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdlYjRhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzViZDQxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0KLSAgICA6IGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5N2YzMTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogVDEsIFQyCi17Ci0gICAgdHlwZWRlZiBpbmhlcml0MiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpbmhlcml0MjwgVDEsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKFQxLCBlbXB0eV9iYXNlKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsVDIgPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBUMikpCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBlbXB0eV9iYXNlIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgZW1wdHlfYmFzZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMDhiMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmNWY2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0YjhlZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZDE0MWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2M4YzQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MDwgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBsaXN0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDNmMzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogbGlzdDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk3NGYyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAwPCAgPgotewotICAgIHR5cGVkZWYgbWFwMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBtYXAyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1NGZkYTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IG1pbnVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAtIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTg5NjkxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0KLSAgICA6IG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGUxZTE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZThlZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbAotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbDwgZmFsc2UsVDEsVDIsVDMsVDQgPgotICAgIDogb3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCBmYWxzZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8Ci0gICAgICAgICAgZmFsc2UKLSAgICAgICAgLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8KLSAgICAgICAgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ4YjJjZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2U3OWVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgYm9vbCBoYXNfdHlwZV8gPgotc3RydWN0IHF1b3RlX2ltcGwKLSAgICA6IFQKLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBxdW90ZV9pbXBsPCBULGZhbHNlID4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUxCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPFUxPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPFUxPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTIKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMiA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgICwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQsVTUgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkM2FkNzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2JmNTA4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzRjYTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3Qgc2V0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBzZXQwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IHNldDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmMmZkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogc2V0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk2NGZiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0KLSAgICA6IHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X2xlZnQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2E1ZmUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfcmlnaHQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0KLSAgICA6IHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X3JpZ2h0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPj4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2I0MmFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTU1ZmVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWMzMWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgaW50IHNpemUsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAwLEYsQXJncyA+Ci0gICAgOiBhcHBseTA8Ci0gICAgICAgICAgRgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMSxGLEFyZ3MgPgotICAgIDogYXBwbHkxPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMixGLEFyZ3MgPgotICAgIDogYXBwbHkyPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDMsRixBcmdzID4KLSAgICA6IGFwcGx5MzwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDQsRixBcmdzID4KLSAgICA6IGFwcGx5NDwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA1LEYsQXJncyA+Ci0gICAgOiBhcHBseTU8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwgc2l6ZTxBcmdzPjo6dmFsdWUsRiwgQXJncyA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNjc1ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3I7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmZiZGI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMV9jPCBULCBUKEMwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8IFQsIFQoQzApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhNWFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2OWI5NDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IGFuZF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhbmRfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGFuZF9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsdHJ1ZV8gPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFuZF9pbXBsPHRydWU+Ci0gICAgOjpyZXN1bHRfPCB0cnVlXyx0cnVlXyx0cnVlXyx0cnVlXyA+Ci0gICAgICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsVDUgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNjBlMGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5MDwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotICAgIDogYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkxPAotICAgICAgICAgICAgICBGLCBUMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLSAgICA6IGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgYXBwbHkyCi0gICAgICAgICwgKEYsIFQxLCBUMikKLSAgICAgICAgKQotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkyPAotICAgICAgICAgICAgICBGLCBUMSwgVDIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5MzwKLSAgICAgICAgICAgICAgRiwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotICAgIDogYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHk0PAotICAgICAgICAgICAgICBGLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLSAgICA6IGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgYXBwbHk1Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHk1PAotICAgICAgICAgICAgICBGLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfYXBwbHlfYXJnCi17Ci0gICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgID0gdHJ1ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19hcHBseV9hcmc8bmE+Ci17Ci0gICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgID0gZmFsc2U7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV9jb3VudF9hcmdzCi17Ci0gICAgc3RhdGljIGludCBjb25zdCB2YWx1ZSAgPSBpc19hcHBseV9hcmc8VDE+Ojp2YWx1ZSArIGlzX2FwcGx5X2FyZzxUMj46OnZhbHVlICsgaXNfYXBwbHlfYXJnPFQzPjo6dmFsdWUgKyBpc19hcHBseV9hcmc8VDQ+Ojp2YWx1ZSArIGlzX2FwcGx5X2FyZzxUNT46OnZhbHVlOwotCi19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXV4OjphcHBseV9jaG9vc2VyPAotICAgICAgICAgIGF1eDo6YXBwbHlfY291bnRfYXJnczwgVDEsVDIsVDMsVDQsVDUgPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgRixUMSxUMixUMyxUNCxUNSA+Ojp0eXBlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmNTI4OGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBORE5CT09TVF9BVVhfTlRUUF9ERUNMKGludCwgYXJpdHlfKSA+IHN0cnVjdCBhcHBseV9jaG9vc2VyOwotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVjYmQ1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0KLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PFQxPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjOTYyZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAsIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi0gICAgOiByZXNvbHZlX2FyZ19pbXBsPCBpc19iaW5kX3RlbXBsYXRlPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVTEsVTIsVTMsVTQsVTUgPgotewotfTsKLQotdGVtcGxhdGU8IGludCBhcml0eV8gPiBzdHJ1Y3QgYmluZF9jaG9vc2VyOwotCi1hdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlciguLi4pOwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBhdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlcihwcm90ZWN0PFQ+Kik7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGFyZzxOPiopOwotCi10ZW1wbGF0ZTwgYm9vbCBpc19yZWZfICA9IHRydWUgPgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgc2l6ZW9mKGF1eDo6aXNfYmluZF9oZWxwZXIoc3RhdGljX2Nhc3Q8VCo+KDApKSkKLSAgICAgICAgICAgICAgICA9PSBzaXplb2YoYXV4Ojp5ZXNfdGFnKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZQotICAgIDogaXNfYmluZF90ZW1wbGF0ZV9pbXBsPCA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQwPEY+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDA8Rj4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQxPCBGLFQxID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDI8IEYsVDEsVDIgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDM8IEYsVDEsVDIsVDMgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2JpbmRfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfYmluZF9hcmc8VDE+Ojp2YWx1ZSArIGlzX2JpbmRfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfYmluZF9hcmc8VDM+Ojp2YWx1ZSArIGlzX2JpbmRfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfYmluZF9hcmc8VDU+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGF1eDo6YmluZF9jaG9vc2VyPAotICAgICAgICAgIGF1eDo6YmluZF9jb3VudF9hcmdzPCBUMSxUMixUMyxUNCxUNSA+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBGLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygKLSAgICAgIDYKLSAgICAsIGJpbmQKLSAgICApCi0KLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygKLSAgICAgIDYKLSAgICAsIGJpbmQKLSAgICApCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk1MjUxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAsIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi0gICAgOiByZXNvbHZlX2FyZ19pbXBsPCBpc19iaW5kX3RlbXBsYXRlPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVTEsVTIsVTMsVTQsVTUgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8IGFyZzwgLTEgPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8QXJnPjo6dHlwZSBuZXh0OwotICAgICAgICB0eXBlZGVmIEFyZyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi0gICAgOiByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8VD46OnRlbXBsYXRlIHJlc3VsdF88QXJnPgotewotfTsKLQotdGVtcGxhdGU8IGludCBhcml0eV8gPiBzdHJ1Y3QgYmluZF9jaG9vc2VyOwotCi1hdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlciguLi4pOwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBhdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlcihwcm90ZWN0PFQ+Kik7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGFyZzxOPiopOwotCi10ZW1wbGF0ZTwgYm9vbCBpc19yZWZfICA9IHRydWUgPgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgc2l6ZW9mKGF1eDo6aXNfYmluZF9oZWxwZXIoc3RhdGljX2Nhc3Q8VCo+KDApKSkKLSAgICAgICAgICAgICAgICA9PSBzaXplb2YoYXV4Ojp5ZXNfdGFnKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZQotICAgIDogaXNfYmluZF90ZW1wbGF0ZV9pbXBsPCA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMDxGPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQwPEY+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMTwgRixUMSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDI8IEYsVDEsVDIgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQzPCBGLFQxLFQyLFQzID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2JpbmRfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfYmluZF9hcmc8VDE+Ojp2YWx1ZSArIGlzX2JpbmRfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfYmluZF9hcmc8VDM+Ojp2YWx1ZSArIGlzX2JpbmRfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfYmluZF9hcmc8VDU+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGF1eDo6YmluZF9jaG9vc2VyPAotICAgICAgICAgIGF1eDo6YmluZF9jb3VudF9hcmdzPCBUMSxUMixUMyxUNCxUNSA+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBGLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygKLSAgICAgIDYKLSAgICAsIGJpbmQKLSAgICApCi0KLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygKLSAgICAgIDYKLSAgICAsIGJpbmQKLSAgICApCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTA0NmVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBiaW5kOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYTJlMDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdGFuZF8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGJpdGFuZF8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0YW5kXzwKLSAgICAgICAgICAgICAgYml0YW5kXzI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfMgotICAgIDogYml0YW5kX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgYml0YW5kXzIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWM5MjNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBiaXRvcl8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0b3JfMjwgTjEsTjIgPgotICAgICAgICAsIGJpdG9yXzwKLSAgICAgICAgICAgICAgYml0b3JfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfMgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgYml0b3JfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgfCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkNDg3MTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdHhvcl8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGJpdHhvcl8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0eG9yXzwKLSAgICAgICAgICAgICAgYml0eG9yXzI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfMgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgYml0eG9yXzIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDk3ZDgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2RlcXVlX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19kZXF1ZV9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWVfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19kZXF1ZV9hcmc8VDE+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ1Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDc+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUOT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTE+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDEzPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxNT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTc+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE5Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6ZGVxdWVfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6ZGVxdWVfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IGF1eDo6ZGVxdWVfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6ZGVxdWVfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTk4YmEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBkaXZpZGVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBkaXZpZGVzMjwgTjEsTjIgPgotICAgICAgICAsIGRpdmlkZXM8Ci0gICAgICAgICAgICAgIGRpdmlkZXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczIKLSAgICA6IGRpdmlkZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGRpdmlkZXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBkaXZpZGVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAvIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZTZkMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLQotICAgIDogZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGNhY2U0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBmb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBmb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgNAotICAgICAgICAgICAgLCBGaXJzdAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIFN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBjaHVua187Ci0KLSAgICAgICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBmb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCBmb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi0gICAgOiBmb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGE5NzFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDE8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQxPCBGLFQxID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MwotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzPCB0cnVlXyxUYWcsRixMMSxMMixMMyA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBxdW90ZTM8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NDwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNAotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWwgY2FzZSBmb3IgJ3Byb3RlY3QnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IG1wbDo6cHJvdGVjdDxUPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIE1XQ1cgOC4zKy9FREcgPCAzMDMsIGxlYWRzIHRvIGFtYmlndWl0eSBvbiBEaWdpdGFsIE1hcnMKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcxLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mjxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMj4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmViNjFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLQotICAgIDogZ3JlYXRlcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlciwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWI0NDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NiMGE0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDMSwgYm9vbCBDMiA+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQxLCBUMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBEZXJpdmVkIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgZmFsc2UsdHJ1ZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDEKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCB0cnVlLGZhbHNlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMiB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IHRydWUsdHJ1ZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQxIHR5cGVfOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IGF1eDo6aW5oZXJpdDJfaW1wbDwKLSAgICAgICAgICBpc19lbXB0eV9iYXNlPFQxPjo6dmFsdWUKLSAgICAgICAgLCBpc19lbXB0eV9iYXNlPFQyPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgaW5oZXJpdDI8IFQxLFQyID4sVDEsIFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGluaGVyaXQyOjp0eXBlXyB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWE0NWZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgIDQKLSAgICAgICAgICAgICwgRmlyc3QKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBTdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gY2h1bmtfOwotCi0gICAgICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgaXRlcl9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIGl0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotICAgIDogaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY1ZjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJlODYwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdiMTlhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0KLSAgICA6IGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3NfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMTllNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGlzdDA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbGlzdF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbGlzdF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2xpc3RfYXJnPFQxPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQzPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQ1Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQ3Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQ5Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTE+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxMz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE1Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTc+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxOT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3RfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpsaXN0X2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogYXV4OjpsaXN0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVkN2Y3ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8Ci0gICAgICAgICAgICAgIFQsIEMwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfbGlzdF9jX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19saXN0X2NfYXJnPExPTkdfTUFYPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICAsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICAsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5LCBsb25nIEMyMAotICAgID4KLXN0cnVjdCBsaXN0X2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19saXN0X2NfYXJnPEMxPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzU+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM3Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDOT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxMT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxMz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxNT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxNz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMxOT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Omxpc3RfY19jb3VudF9hcmdzPAotICAgICAgICAgIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2NfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBhdXg6Omxpc3RfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUxNzRjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIG1hcDA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19tYXBfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX21hcF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgbWFwX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbWFwX2FyZzxUMT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDM+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ1Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUNz46OnZhbHVlICsgaXNfbWFwX2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDk+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTE+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTU+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTc+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Om1hcF9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjptYXBfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBhdXg6Om1hcF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjptYXBfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNGQ2NjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1pbnVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgbWludXMyPCBOMSxOMiA+Ci0gICAgICAgICwgbWludXM8Ci0gICAgICAgICAgICAgIG1pbnVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czIKLSAgICA6IG1pbnVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1pbnVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAtIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjJlN2FiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0KLSAgICA6IG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjkxMDlmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMjNiOGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBvcl9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogdHJ1ZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG9yX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogb3JfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LGZhbHNlXyA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDxmYWxzZT4KLSAgICA6OnJlc3VsdF88IGZhbHNlXyxmYWxzZV8sZmFsc2VfLGZhbHNlXyA+Ci0gICAgICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxUNSA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNzJlYWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHBsdXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIHBsdXMyPCBOMSxOMiA+Ci0gICAgICAgICwgcGx1czwKLSAgICAgICAgICAgICAgcGx1czI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzMgotICAgIDogcGx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgcGx1czIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICsgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI1OThjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPCBib29sID4gc3RydWN0IHF1b3RlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVAotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcXVvdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTEKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8VTE+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjxVMT4gPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTIKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMiA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IFUxLFUyLFUzID4gPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0ID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBVMSxVMixVMyxVNCA+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgICwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IFUxLFUyLFUzLFU0LFU1ID4gPgotCi0gICAgewotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzZjMTczLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2NjNjg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg0ZDUzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHNldDA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19zZXRfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3NldF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfc2V0X2FyZzxUMT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDM+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ1Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUNz46OnZhbHVlICsgaXNfc2V0X2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDk+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTE+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTM+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTU+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTc+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMTk+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnNldF9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBhdXg6OnNldF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNWYyYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBzZXRfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8Ci0gICAgICAgICAgICAgIFQsIEMwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIEMgPgotc3RydWN0IGlzX3NldF9jX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19zZXRfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IHNldF9jX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfc2V0X2NfYXJnPEMxPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzM+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDNT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM3Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8Qzk+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzExPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxMz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTU+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxOT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpzZXRfY19jb3VudF9hcmdzPAotICAgICAgICAgIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogYXV4OjpzZXRfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpzZXRfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNTY3NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThkYzBkYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgID4+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUwNTc4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88IC0xID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjOTllNjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHRpbWVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgdGltZXMyPCBOMSxOMiA+Ci0gICAgICAgICwgdGltZXM8Ci0gICAgICAgICAgICAgIHRpbWVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczIKLSAgICA6IHRpbWVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHRpbWVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAqIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZGI0NmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBzaXplKSA+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHk7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTA8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MTwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkyPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkzPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHk0PAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8NT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5NTwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IEYsQXJncyA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYjY3MDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc192ZWN0b3JfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3ZlY3Rvcl9hcmc8VDE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQzPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUNT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQ5Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDExPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDEzPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDE1Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDE3Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDE5Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfaW1wbAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogYXV4Ojp2ZWN0b3JfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjU0YzZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPAotICAgICAgICAgICAgICBULCBUKEMwKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc192ZWN0b3JfY19hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2NfYXJnPExPTkdfTUFYPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICAsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICAsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5LCBsb25nIEMyMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3ZlY3Rvcl9jX2FyZzxDMT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMzPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDNz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEM4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEM5Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxMT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxNz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX2NfY291bnRfYXJnczwKLSAgICAgICAgICBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2NfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IGF1eDo6dmVjdG9yX2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hZHZhbmNlX2JhY2t3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwYzgyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTVhZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzFiOTVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbAotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsPCB0cnVlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IGFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIHRydWVfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDwKLSAgICAgICAgICB0cnVlCi0gICAgICAgICwgdHJ1ZV8sIHRydWVfLCB0cnVlXywgdHJ1ZV8KLSAgICAgICAgPgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZjcyYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotICAgIDogYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLSAgICA6IGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgYXBwbHkyCi0gICAgICAgICwgKEYsIFQxLCBUMikKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYXBwbHkyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBhcHBseTM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotICAgIDogYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBhcHBseTQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLSAgICA6IGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgYXBwbHk1Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkKLSAgICA6IGFwcGx5NTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2NjOTRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM5MDIwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLQotICAgICwgdHlwZW5hbWUgaGFzX2FwcGx5XyA9IHR5cGVuYW1lIGF1eDo6aGFzX2FwcGx5PEY+Ojp0eXBlCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8ICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDA8IEYsdHJ1ZV8gPgotICAgIDogRjo6YXBwbHkKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTxUMT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDUKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwyPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDIpOwotICAgIHR5cGVkZWYgYXJnPDM+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNCB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw1PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDUpOwotICAgIHR5cGVkZWYgYXJnPDY+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmNGM0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYmFzaWNfYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kPCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGJpbmQxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBiaW5kMzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDIzNDQ2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NjYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi17Ci0gICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmc8IGFyZzwgLTEgPiwgQXJnID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFyZzo6bmV4dCBuZXh0OwotICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwNDZlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBiaW5kOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDU0MmI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0YW5kX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXRhbmRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgJiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdGFuZF93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ4ODRkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0b3Jfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgfCBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0b3Jfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM5MmUyYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0eG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdHhvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0eG9yX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIF4gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXR4b3Jfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzFmNjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZTsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYxZTA0Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGRpdmlkZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBkaXZpZGVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgZGl2aWRlc193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAvIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmRpdmlkZXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZjFlMmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID09Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGNkNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBmb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGE5NzFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgIAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIFQgcmVzdWx0XzsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotdGVtcGxhdGU8IGludCBOLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgYXJnPE4+LCBUYWcgPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDA8Ci0gICAgICAgICAgRgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxPCB0cnVlXyxUYWcsRixMMSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBxdW90ZTE8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjxUMT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MjwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMjwgRixUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBxdW90ZTQ8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ1LFRhZyA+IGw1OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgLCBpc19sZTU6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNCwgbDUKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LCBUYWcgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PFQ+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbGl6YXRpb25zIGZvciB0aGUgbWFpbiAnYmluZCcgZm9ybQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgTVdDVyA4LjMrL0VERyA8IDMwMywgbGVhZHMgdG8gYW1iaWd1aXR5IG9uIERpZ2l0YWwgTWFycwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZzEsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmExYjMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2VhNmNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3ZjMxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IFQxLCBUMgotewotICAgIHR5cGVkZWYgaW5oZXJpdDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGluaGVyaXQyLCAoVDEsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IFQxLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChUMSwgZW1wdHlfYmFzZSkpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLFQyID4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgVDIpKQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgZW1wdHlfYmFzZSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIGVtcHR5X2Jhc2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwOGIzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY1ZjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE2ZjA4OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLQotICAgIDogbGVzc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2EwNmY5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzhjNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0M2YzOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGxpc3QyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTc0ZjI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXA7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMDwgID4KLXsKLSAgICB0eXBlZGVmIG1hcDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcAotICAgIDogbWFwMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVjY2M4Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgbWludXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgLSBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6bWludXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjY2YWI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IG1vZHVsdXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgJSBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4Ojptb2R1bHVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MDFiNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLQotICAgIDogbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlOGVkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGwKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGw8IGZhbHNlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPAotICAgICAgICAgIGZhbHNlCi0gICAgICAgICwgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfCi0gICAgICAgID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjYxYmIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogcGx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBwbHVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICsgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6cGx1c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U3N2ZiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkM2FkNzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2JmNTA4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzRjYTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmMmZkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBzZXQyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjOWU2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0KLSAgICA6IHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X2xlZnQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTaGlmdCwgVCBuLCBTaGlmdCBzID4KLXN0cnVjdCBzaGlmdF9sZWZ0X3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4gPDwgcykpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6c2hpZnRfbGVmdF93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgTjo6dmFsdWUKLSAgICAgICAgICAgICwgUzo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmI5MTZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfcmlnaHQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0KLSAgICA6IHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X3JpZ2h0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNoaWZ0LCBUIG4sIFNoaWZ0IHMgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4gPj4gcykpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnNoaWZ0X3JpZ2h0X3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCBOOjp2YWx1ZQotICAgICAgICAgICAgLCBTOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MDU3OGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88IC0xID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTU0MDc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHRpbWVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCB0aW1lc193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAqIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4Ojp0aW1lc193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjMzFhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgaW50IHNpemUsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAwLEYsQXJncyA+Ci0gICAgOiBhcHBseTA8Ci0gICAgICAgICAgRgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMSxGLEFyZ3MgPgotICAgIDogYXBwbHkxPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMixGLEFyZ3MgPgotICAgIDogYXBwbHkyPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDMsRixBcmdzID4KLSAgICA6IGFwcGx5MzwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDQsRixBcmdzID4KLSAgICA6IGFwcGx5NDwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA1LEYsQXJncyA+Ci0gICAgOiBhcHBseTU8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwgc2l6ZTxBcmdzPjo6dmFsdWUsRiwgQXJncyA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjY3NTg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3I7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJmYmRiNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMV9jPCBULCBUKEMwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8IFQsIFQoQzApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8IFQsIFQoQzApLCBUKEMxKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FkdmFuY2VfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgwOTI3NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbAotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsPCB0cnVlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IGFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIHRydWVfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDwKLSAgICAgICAgICB0cnVlCi0gICAgICAgICwgdHJ1ZV8sIHRydWVfLCB0cnVlXywgdHJ1ZV8KLSAgICAgICAgPgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjBlYzQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotICAgIDogYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLSAgICA6IGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBhcHBseTM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotICAgIDogYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBhcHBseTQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLSAgICA6IGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXBwbHk1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2NjOTRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBhcHBseTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM5MDIwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotCi0gICAgLCB0eXBlbmFtZSBoYXNfYXBwbHlfID0gdHlwZW5hbWUgYXV4OjpoYXNfYXBwbHk8Rj46OnR5cGUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCBhcHBseV93cmFwMDwgRix0cnVlXyA+Ci0gICAgOiBGOjphcHBseQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PFQxPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUwYmY3My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotLy8vIGlmXy9ldmFsX2lmIHNwZWNpYWxpemF0aW9ucwotdGVtcGxhdGU8IHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGlmXzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGlmXyxUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gY2xhc3MgRiwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgZXZhbF9pZjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM8Ci0gICAgICBxdW90ZTM8IGV2YWxfaWYsVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1Y2ZjNjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi17Ci0gICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmc8IGFyZzwgLTEgPiwgQXJnID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFyZzo6bmV4dCBuZXh0OwotICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBldmFsX2lmOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgZXZhbF9pZixUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTA0NmVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYmluZDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNTBiYmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0YW5kX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMDJhMzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgfCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEyZThhNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXR4b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBeIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWY2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2Y2ZTIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGRpdmlkZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBkaXZpZGVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAvIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA3MGEwOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLQotICAgIDogZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTRjZDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBmb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhOTcxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgIAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIFQgcmVzdWx0XzsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotdGVtcGxhdGU8IGludCBOLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgYXJnPE4+LCBUYWcgPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDA8Ci0gICAgICAgICAgRgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxPCB0cnVlXyxUYWcsRixMMSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBxdW90ZTE8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjxUMT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MjwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMjwgRixUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBxdW90ZTQ8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ1LFRhZyA+IGw1OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgLCBpc19sZTU6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNCwgbDUKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LCBUYWcgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PFQ+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbGl6YXRpb25zIGZvciB0aGUgbWFpbiAnYmluZCcgZm9ybQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgTVdDVyA4LjMrL0VERyA8IDMwMywgbGVhZHMgdG8gYW1iaWd1aXR5IG9uIERpZ2l0YWwgTWFycwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZzEsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRhMzVkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2I0MDM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0KLSAgICA6IGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzczMDEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBUMSwgVDIKLXsKLSAgICB0eXBlZGVmIGluaGVyaXQyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGluaGVyaXQyPCBUMSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoVDEsIGVtcHR5X2Jhc2UpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxUMiA+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIGVtcHR5X2Jhc2UgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBlbXB0eV9iYXNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzA4YjMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NDAyOGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZWRkMGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLQotICAgIDogbGVzc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM4YWY5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjOGM0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3Q7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QwPCAgPgotewotICAgIHR5cGVkZWYgbGlzdDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGxpc3QyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQzZjM4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBsaXN0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRmMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBtYXAwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IG1hcDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTgyZmIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IG1pbnVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAtIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MTQzZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAlIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjExNWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLQotICAgIDogbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxY2UzZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGwKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGw8IGZhbHNlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPAotICAgICAgICAgIGZhbHNlCi0gICAgICAgICwgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfCi0gICAgICAgID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlN2ZlNzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogcGx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICsgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2U3OWVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGJvb2wgaGFzX3R5cGVfID4KLXN0cnVjdCBxdW90ZV9pbXBsCi0gICAgOiBUCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbDwgVCxmYWxzZSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjxVMT4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUyCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMiA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICAsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0LFU1ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkM2FkNzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2JmNTA4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzRjYTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQwPCAgPgotewotICAgIHR5cGVkZWYgc2V0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBzZXQyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmMmZkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IHNldDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M0ZDM4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNjA4YzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfcmlnaHQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0KLSAgICA6IHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgID4+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2I0MmFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWU4NTNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHRpbWVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAqIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjMzFhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBpbnQgc2l6ZSwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDAsRixBcmdzID4KLSAgICA6IGFwcGx5MDwKLSAgICAgICAgICBGCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAxLEYsQXJncyA+Ci0gICAgOiBhcHBseTE8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAyLEYsQXJncyA+Ci0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMyxGLEFyZ3MgPgotICAgIDogYXBwbHkzPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNCxGLEFyZ3MgPgotICAgIDogYXBwbHk0PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDUsRixBcmdzID4KLSAgICA6IGFwcGx5NTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSxGLCBBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjY3NTg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcjsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJmYmRiNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxX2M8IFQsIFQoQzApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwgVCwgVChDMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvYWRkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2FkZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MGI3MDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvYWRkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9BRERfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0FERF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFkZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci90dXBsZS5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX1BQX01BQ1JPX0VYUEFOU0lPTikKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREKGksaikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9BRERfREVMQVkoaSxqKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfREVMQVkoaSxqKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXyMjaSxORE5CT09TVF9NUExfUFBfQUREXyMjaikgXAotICAgIC8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BREQoaSxqKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0FERF9ERUxBWShpLGopIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF9ERUxBWShpLGopIFwKLSAgICBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8jI2kgTkROQk9PU1RfTVBMX1BQX0FERF8jI2ogXAotICAgIC8qKi8KLSNlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfMCAoMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF8xICgxLDIsMyw0LDUsNiw3LDgsOSwxMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzIgKDIsMyw0LDUsNiw3LDgsOSwxMCwwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfMyAoMyw0LDUsNiw3LDgsOSwxMCwwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF80ICg0LDUsNiw3LDgsOSwxMCwwLDAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzUgKDUsNiw3LDgsOSwxMCwwLDAsMCwwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfNiAoNiw3LDgsOSwxMCwwLDAsMCwwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF83ICg3LDgsOSwxMCwwLDAsMCwwLDAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzggKDgsOSwxMCwwLDAsMCwwLDAsMCwwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfOSAoOSwxMCwwLDAsMCwwLDAsMCwwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF8xMCAoMTAsMCwwLDAsMCwwLDAsMCwwLDAsMCkKLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERChpLGopIFwKLSAgICBORE5CT09TVF9QUF9BREQoaSxqKSBcCi0gICAgLyoqLwotICAgIAotI2VuZGlmIAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfQUREX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmX3BhcmFtc190YWlsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NTM2ZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmX3BhcmFtc190YWlsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfREVGX1BBUkFNU19UQUlMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9ERUZfUEFSQU1TX1RBSUxfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBkZWZfcGFyYW1zX3RhaWwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbXB0eS5ocHA+Ci0KLS8vIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUwoMSxULHZhbHVlKTogLCBUMSA9IHZhbHVlLCAuLiwgVG4gPSB2YWx1ZQotLy8gTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTCgyLFQsdmFsdWUpOiAsIFQyID0gdmFsdWUsIC4uLCBUbiA9IHZhbHVlCi0vLyBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMKG4sVCx2YWx1ZSk6IDxub3RoaW5nPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9maWx0ZXJfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3Ivc3ViLmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMX0lNUEwoaSwgcGFyYW0sIHZhbHVlX2Z1bmMpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMX0RFTEFZXzEoIFwKLSAgICAgICAgICBpIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfUFBfU1VCKE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksaSkgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgLCB2YWx1ZV9mdW5jIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfREVMQVlfMShpLCBuLCBwYXJhbSwgdmFsdWVfZnVuYykgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfREVMQVlfMihpLG4scGFyYW0sdmFsdWVfZnVuYykgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMX0RFTEFZXzIoaSwgbiwgcGFyYW0sIHZhbHVlX2Z1bmMpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9BTkQoaSxuKSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfIyNpKG4scGFyYW0sdmFsdWVfZnVuYykgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzAoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyMxIHYoKSxwIyMyIHYoKSxwIyMzIHYoKSxwIyM0IHYoKSxwIyM1IHYoKSxwIyM2IHYoKSxwIyM3IHYoKSxwIyM4IHYoKSxwIyM5IHYoKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF8xKGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjMiB2KCkscCMjMyB2KCkscCMjNCB2KCkscCMjNSB2KCkscCMjNiB2KCkscCMjNyB2KCkscCMjOCB2KCkscCMjOSB2KCkscDEpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfMihpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzMgdigpLHAjIzQgdigpLHAjIzUgdigpLHAjIzYgdigpLHAjIzcgdigpLHAjIzggdigpLHAjIzkgdigpLHAxLHAyKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzMoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM0IHYoKSxwIyM1IHYoKSxwIyM2IHYoKSxwIyM3IHYoKSxwIyM4IHYoKSxwIyM5IHYoKSxwMSxwMixwMykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF80KGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjNSB2KCkscCMjNiB2KCkscCMjNyB2KCkscCMjOCB2KCkscCMjOSB2KCkscDEscDIscDMscDQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfNShpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzYgdigpLHAjIzcgdigpLHAjIzggdigpLHAjIzkgdigpLHAxLHAyLHAzLHA0LHA1KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzYoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM3IHYoKSxwIyM4IHYoKSxwIyM5IHYoKSxwMSxwMixwMyxwNCxwNSxwNikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF83KGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjOCB2KCkscCMjOSB2KCkscDEscDIscDMscDQscDUscDYscDcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfOChpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzkgdigpLHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzkoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkKLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FVWF9UQUlMX1BBUkFNX0ZVTkModW51c2VkLCBpLCBvcCkgXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCBvcCkgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX0FERF9EKDEsIGksIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIG9wKSkpIFwKLSAgICAgICAgKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIG9wKSgpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9JTVBMKGksIHBhcmFtLCB2YWx1ZV9mdW5jKSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfU1VCX0QoMSwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgaSkgXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9BVVhfVEFJTF9QQVJBTV9GVU5DIFwKLSAgICAgICAgLCAoaSwgcGFyYW0sIHZhbHVlX2Z1bmMpIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTChpLCBwYXJhbSwgdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMX0lNUEwoaSwgcGFyYW0sIE5ETkJPT1NUX1BQX0lERU5USVRZKD12YWx1ZSkpIFwKLSAgICAvKiovCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfTkVTVEVEX0RFRl9QQVJBTVNfVEFJTChpLCBwYXJhbSwgdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMX0lNUEwoaSwgcGFyYW0sIE5ETkJPT1NUX1BQX0lERU5USVRZKD12YWx1ZSkpIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfTkVTVEVEX0RFRl9QQVJBTVNfVEFJTChpLCBwYXJhbSwgdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMX0lNUEwoaSwgcGFyYW0sIE5ETkJPT1NUX1BQX0VNUFRZKSBcCi0gICAgLyoqLwotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9ERUZfUEFSQU1TX1RBSUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MjMzZjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0RFRkFVTFRfUEFSQU1TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9ERUZBVUxUX1BBUkFNU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGRlZmF1bHRfcGFyYW1zLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLS8vIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUygwLFQsaW50KTogPG5vdGhpbmc+Ci0vLyBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoMSxULGludCk6IFQxID0gaW50Ci0vLyBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoMixULGludCk6IFQxID0gaW50LCBUMiA9IGludAotLy8gTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKG4sVCxpbnQpOiBUMSA9IGludCwgVDIgPSBpbnQsIC4uLCBUbiA9IGludAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhuLHAsdikgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfLG4pKHAsdikgXAotICAgIC8qKi8KLSAgICAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXzAocCx2KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfMShwLHYpIHAjIzE9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfMihwLHYpIHAjIzE9dixwIyMyPXYKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXzMocCx2KSBwIyMxPXYscCMjMj12LHAjIzM9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfNChwLHYpIHAjIzE9dixwIyMyPXYscCMjMz12LHAjIzQ9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfNShwLHYpIHAjIzE9dixwIyMyPXYscCMjMz12LHAjIzQ9dixwIyM1PXYKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXzYocCx2KSBwIyMxPXYscCMjMj12LHAjIzM9dixwIyM0PXYscCMjNT12LHAjIzY9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfNyhwLHYpIHAjIzE9dixwIyMyPXYscCMjMz12LHAjIzQ9dixwIyM1PXYscCMjNj12LHAjIzc9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfOChwLHYpIHAjIzE9dixwIyMyPXYscCMjMz12LHAjIzQ9dixwIyM1PXYscCMjNj12LHAjIzc9dixwIyM4PXYKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TXzkocCx2KSBwIyMxPXYscCMjMj12LHAjIzM9dixwIyM0PXYscCMjNT12LHAjIzY9dixwIyM3PXYscCMjOD12LHAjIzk9dgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FVWF9ERUZBVUxUX1BBUkFNX0ZVTkModW51c2VkLCBpLCBwdikgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGkpIFwKLSAgICBORE5CT09TVF9QUF9DQVQoIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwwLHB2KSwgTkROQk9PU1RfUFBfSU5DKGkpICkgXAotICAgICAgICA9IE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwxLHB2KSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhuLCBwYXJhbSwgdmFsdWUpIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICBuIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfUFBfQVVYX0RFRkFVTFRfUEFSQU1fRlVOQyBcCi0gICAgICAgICwgKHBhcmFtLHZhbHVlKSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9ERUZBVUxUX1BBUkFNU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1YTE2NDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRU5VTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRU5VTV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGVudW0uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotLy8gTkROQk9PU1RfTVBMX1BQX0VOVU0oMCxpbnQpOiA8bm90aGluZz4KLS8vIE5ETkJPT1NUX01QTF9QUF9FTlVNKDEsaW50KTogaW50Ci0vLyBORE5CT09TVF9NUExfUFBfRU5VTSgyLGludCk6IGludCwgaW50Ci0vLyBORE5CT09TVF9NUExfUFBfRU5VTShuLGludCk6IGludCwgaW50LCAuLiwgaW50Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU0obiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfTVBMX1BQX0VOVU1fLG4pKHBhcmFtKSBcCi0gICAgLyoqLwotICAgIAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTV8wKHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzEocCkgcAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTV8yKHApIHAscAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTV8zKHApIHAscCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzQocCkgcCxwLHAscAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTV81KHApIHAscCxwLHAscAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTV82KHApIHAscCxwLHAscCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzcocCkgcCxwLHAscCxwLHAscAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTV84KHApIHAscCxwLHAscCxwLHAscAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTV85KHApIHAscCxwLHAscCxwLHAscCxwCi0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BVVhfRU5VTV9GVU5DKHVudXNlZCwgaSwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpKSBwYXJhbSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgbiBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX1BQX0FVWF9FTlVNX0ZVTkMgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0VOVU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9leHRfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2V4dF9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODllNDk0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2V4dF9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0VYVF9QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0VYVF9QQVJBTVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBleHRfcGFyYW1zLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLS8vIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKDIsMixUKTogPG5vdGhpbmc+Ci0vLyBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUygyLDMsVCk6IFQyCi0vLyBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUygyLDQsVCk6IFQyLCBUMwotLy8gTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoMixuLFQpOiBUMiwgVDMsIC4uLCBUbi0xCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2ZpbHRlcl9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9zdWIuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKGksaixwKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfREVMQVlfMShpLE5ETkJPT1NUX01QTF9QUF9TVUIoaixpKSxwKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TX0RFTEFZXzEoaSxuLHApIFwKLSAgICBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU19ERUxBWV8yKGksbixwKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TX0RFTEFZXzIoaSxuLHApIFwKLSAgICBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU18jI2kobixwKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzEoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjMSxwIyMyLHAjIzMscCMjNCxwIyM1LHAjIzYscCMjNyxwIyM4LHAjIzkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzIoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjMixwIyMzLHAjIzQscCMjNSxwIyM2LHAjIzcscCMjOCxwIyM5LHAxKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU18zKGkscCkgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzMscCMjNCxwIyM1LHAjIzYscCMjNyxwIyM4LHAjIzkscDEscDIpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzQoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjNCxwIyM1LHAjIzYscCMjNyxwIyM4LHAjIzkscDEscDIscDMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzUoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjNSxwIyM2LHAjIzcscCMjOCxwIyM5LHAxLHAyLHAzLHA0KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU182KGkscCkgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzYscCMjNyxwIyM4LHAjIzkscDEscDIscDMscDQscDUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzcoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjNyxwIyM4LHAjIzkscDEscDIscDMscDQscDUscDYpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzgoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjOCxwIyM5LHAxLHAyLHAzLHA0LHA1LHA2LHA3KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU185KGkscCkgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzkscDEscDIscDMscDQscDUscDYscDcscDgpCi0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FVWF9FWFRfUEFSQU1fRlVOQyh1bnVzZWQsIGksIG9wKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaSkgXAotICAgIE5ETkJPT1NUX1BQX0NBVCggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwxLG9wKSBcCi0gICAgICAgICwgTkROQk9PU1RfUFBfQUREX0QoMSwgaSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLDAsb3ApKSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUyhpLCBqLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX1NVQl9EKDEsaixpKSBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX1BQX0FVWF9FWFRfUEFSQU1fRlVOQyBcCi0gICAgICAgICwgKGkscGFyYW0pIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0VYVF9QQVJBTVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9maWx0ZXJfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2ZpbHRlcl9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTc1MTA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2ZpbHRlcl9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0ZJTFRFUl9QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0ZJTFRFUl9QQVJBTVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmaWx0ZXJfcGFyYW1zLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzAocDEscDIscDMscDQscDUscDYscDcscDgscDkpIAotI2RlZmluZSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18xKHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KSBwMQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18yKHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KSBwMSxwMgotI2RlZmluZSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18zKHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KSBwMSxwMixwMwotI2RlZmluZSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU180KHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KSBwMSxwMixwMyxwNAotI2RlZmluZSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU181KHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KSBwMSxwMixwMyxwNCxwNQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU182KHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KSBwMSxwMixwMyxwNCxwNSxwNgotI2RlZmluZSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU183KHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KSBwMSxwMixwMyxwNCxwNSxwNixwNwotI2RlZmluZSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU184KHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KSBwMSxwMixwMyxwNCxwNSxwNixwNyxwOAotI2RlZmluZSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU185KHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KSBwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRklMVEVSX1BBUkFNU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGQ2YzY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUEFSQU1TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9QQVJBTVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwYXJhbXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotLy8gTkROQk9PU1RfTVBMX1BQX1BBUkFNUygwLFQpOiA8bm90aGluZz4KLS8vIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoMSxUKTogVDEKLS8vIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoMixUKTogVDEsIFQyCi0vLyBORE5CT09TVF9NUExfUFBfUEFSQU1TKG4sVCk6IFQxLCBUMiwgLi4sIFRuCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhuLHApIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfTVBMX1BQX1BBUkFNU18sbikocCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzAocCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNU18xKHApIHAjIzEKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNU18yKHApIHAjIzEscCMjMgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzMocCkgcCMjMSxwIyMyLHAjIzMKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNU180KHApIHAjIzEscCMjMixwIyMzLHAjIzQKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNU181KHApIHAjIzEscCMjMixwIyMzLHAjIzQscCMjNQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzYocCkgcCMjMSxwIyMyLHAjIzMscCMjNCxwIyM1LHAjIzYKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNU183KHApIHAjIzEscCMjMixwIyMzLHAjIzQscCMjNSxwIyM2LHAjIzcKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNU184KHApIHAjIzEscCMjMixwIyMzLHAjIzQscCMjNSxwIyM2LHAjIzcscCMjOAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzkocCkgcCMjMSxwIyMyLHAjIzMscCMjNCxwIyM1LHAjIzYscCMjNyxwIyM4LHAjIzkKLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FVWF9QQVJBTV9GVU5DKHVudXNlZCwgaSwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKHBhcmFtLCBORE5CT09TVF9QUF9JTkMoaSkpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgIG4gXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9BVVhfUEFSQU1fRlVOQyBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZiAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1BBUkFNU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcnRpYWxfc3BlY19wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFydGlhbF9zcGVjX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExYjYzYTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFydGlhbF9zcGVjX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUEFSVElBTF9TUEVDX1BBUkFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUEFSVElBTF9TUEVDX1BBUkFNU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBhcnRpYWxfc3BlY19wYXJhbXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfUEFSVElBTF9TUEVDX1BBUkFNUyhuLCBwYXJhbSwgZGVmKSBcCi1ORE5CT09TVF9NUExfUFBfUEFSQU1TKG4sIHBhcmFtKSBcCi1ORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9NUExfUFBfU1VCKE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksbikpIFwKLU5ETkJPT1NUX01QTF9QUF9FTlVNKCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfU1VCKE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksbikgXAotICAgICwgZGVmIFwKLSAgICApIFwKLS8qKi8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1BBUlRJQUxfU1BFQ19QQVJBTVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yYW5nZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yYW5nZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjNTM2ZDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmFuZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1JBTkdFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9SQU5HRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHJhbmdlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zdWJzZXEuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SQU5HRShmaXJzdCwgbGVuZ3RoKSBcCi0gICAgTkROQk9PU1RfUFBfU0VRX1NVQlNFUSgoMCkoMSkoMikoMykoNCkoNSkoNikoNykoOCkoOSksIGZpcnN0LCBsZW5ndGgpIFwKLS8qKi8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1JBTkdFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2OGEyMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9SRVBFQVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1JFUEVBVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHJlcGVhdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19PV05fUFBfUFJJTUlUSVZFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQobixmLHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfLG4pKGYscGFyYW0pIFwKLSAgICAvKiovCi0gICAgCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfMChmLHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfMShmLHApIGYoMCwwLHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfMihmLHApIGYoMCwwLHApIGYoMCwxLHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfMyhmLHApIGYoMCwwLHApIGYoMCwxLHApIGYoMCwyLHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfNChmLHApIGYoMCwwLHApIGYoMCwxLHApIGYoMCwyLHApIGYoMCwzLHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfNShmLHApIGYoMCwwLHApIGYoMCwxLHApIGYoMCwyLHApIGYoMCwzLHApIGYoMCw0LHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfNihmLHApIGYoMCwwLHApIGYoMCwxLHApIGYoMCwyLHApIGYoMCwzLHApIGYoMCw0LHApIGYoMCw1LHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfNyhmLHApIGYoMCwwLHApIGYoMCwxLHApIGYoMCwyLHApIGYoMCwzLHApIGYoMCw0LHApIGYoMCw1LHApIGYoMCw2LHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfOChmLHApIGYoMCwwLHApIGYoMCwxLHApIGYoMCwyLHApIGYoMCwzLHApIGYoMCw0LHApIGYoMCw1LHApIGYoMCw2LHApIGYoMCw3LHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfOShmLHApIGYoMCwwLHApIGYoMCwxLHApIGYoMCwyLHApIGYoMCwzLHApIGYoMCw0LHApIGYoMCw1LHApIGYoMCw2LHApIGYoMCw3LHApIGYoMCw4LHApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfMTAoZixwKSBmKDAsMCxwKSBmKDAsMSxwKSBmKDAsMixwKSBmKDAsMyxwKSBmKDAsNCxwKSBmKDAsNSxwKSBmKDAsNixwKSBmKDAsNyxwKSBmKDAsOCxwKSBmKDAsOSxwKQotCi0jZWxzZSAKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQobixmLHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKG4sZixwYXJhbSkgXAotICAgIC8qKi8KLQotI2VuZGlmIAotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9SRVBFQVRfSURFTlRJVFlfRlVOQyh1bnVzZWQxLCB1bnVzZWQyLCB4KSB4Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9SRVBFQVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9zdWIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3Ivc3ViLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE5NDgyYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9zdWIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1NVQl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfU1VCX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc3ViLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3R1cGxlLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fUFBfTUFDUk9fRVhQQU5TSU9OKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUIoaSxqKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1NVQl9ERUxBWShpLGopIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl9ERUxBWShpLGopIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fIyNpLE5ETkJPT1NUX01QTF9QUF9TVUJfIyNqKSBcCi0gICAgLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQihpLGopIFwKLSAgICBORE5CT09TVF9NUExfUFBfU1VCX0RFTEFZKGksaikgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCX0RFTEFZKGksaikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXyMjaSBORE5CT09TVF9NUExfUFBfU1VCXyMjaiBcCi0gICAgLyoqLwotI2VuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl8wICgwLDEsMiwzLDQsNSw2LDcsOCw5LDEwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzEgKDAsMCwxLDIsMyw0LDUsNiw3LDgsOSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl8yICgwLDAsMCwxLDIsMyw0LDUsNiw3LDgpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfMyAoMCwwLDAsMCwxLDIsMyw0LDUsNiw3KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzQgKDAsMCwwLDAsMCwxLDIsMyw0LDUsNikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl81ICgwLDAsMCwwLDAsMCwxLDIsMyw0LDUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfNiAoMCwwLDAsMCwwLDAsMCwxLDIsMyw0KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzcgKDAsMCwwLDAsMCwwLDAsMCwxLDIsMykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl84ICgwLDAsMCwwLDAsMCwwLDAsMCwxLDIpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfOSAoMCwwLDAsMCwwLDAsMCwwLDAsMCwxKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzEwICgwLDAsMCwwLDAsMCwwLDAsMCwwLDApCi0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUIoaSxqKSBcCi0gICAgTkROQk9PU1RfUFBfU1VCKGksaikgXAotICAgIC8qKi8KLSAgICAKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfU1VCX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvdHVwbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvdHVwbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmIzNjlkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3R1cGxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9UVVBMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfVFVQTEVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0dXBsZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8wKGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTAKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fMShlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGUxCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzIoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlMgotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8zKGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTMKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fNChlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGU0Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzUoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlNQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV82KGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTYKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fNyhlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGU3Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzgoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlOAotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV85KGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTkKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fMTAoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlMTAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1RVUExFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wdXNoX2JhY2tfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3B1c2hfYmFja19pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U4MWRlOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3B1c2hfYmFja19pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BVU0hfQkFDS19JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BVU0hfQkFDS19JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9iYWNrX2ltcGwuaHBwIDU1Njc5IDIwMDktMDgtMjAgMDc6NTA6MTZaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOS0wOC0yMCAwMDo1MDoxNiAtMDcwMCAoVGh1LCAyMCBBdWcgMjAwOSkgJAotLy8gJFJldmlzaW9uOiA1NTY3OSAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1zdHJ1Y3QgaGFzX3B1c2hfYmFja19hcmcge307Ci0KLS8vIGFndXJ0IDA1L2ZlYi8wNDogbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbjsgdGhlIHN0dWIgZGVmaW5pdGlvbiBpcyBuZWVkZWQgCi0vLyB0byBlbmFibGUgdGhlIGRlZmF1bHQgJ2hhc19wdXNoX2JhY2snIGltcGxlbWVudGF0aW9uIGJlbG93Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgLy8gc2hvdWxkIGJlIGluc3RhbnRpYXRlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mICdoYXNfcHVzaF9iYWNrX2ltcGwnOwotICAgICAgICAvLyBpZiB5b3UndmUgZ290IGFuIGFzc2VydCBoZXJlLCB5b3UgYXJlIHJlcXVlc3RpbmcgYSAncHVzaF9iYWNrJyAKLSAgICAgICAgLy8gc3BlY2lhbGl6YXRpb24gdGhhdCBkb2Vzbid0IGV4aXN0LgotICAgICAgICBORE5CT09TVF9NUExfQVNTRVJUX01TRygKLSAgICAgICAgICAgICAgKCBuZG5ib29zdDo6aXNfc2FtZTwgVCwgaGFzX3B1c2hfYmFja19hcmcgPjo6dmFsdWUgKQotICAgICAgICAgICAgLCBSRVFVRVNURURfUFVTSF9CQUNLX1NQRUNJQUxJWkFUSU9OX0ZPUl9TRVFVRU5DRV9ET0VTX05PVF9FWElTVAotICAgICAgICAgICAgLCAoIFNlcXVlbmNlICkKLSAgICAgICAgICAgICk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGhhc19wdXNoX2JhY2tfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXEgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGF1eDo6aGFzX3R5cGU8IHB1c2hfYmFjazwgU2VxLCBoYXNfcHVzaF9iYWNrX2FyZyA+ID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhdXg6Omhhc190eXBlPCBwdXNoX2JhY2s8IFNlcSwgaGFzX3B1c2hfYmFja19hcmcgPiA+IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgICAgICAoYXV4OjpoYXNfdHlwZTwgcHVzaF9iYWNrPCBTZXEsIGhhc19wdXNoX2JhY2tfYXJnID4gPjo6dmFsdWUpCi0gICAgICAgICAgICApOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoMiwgcHVzaF9iYWNrX2ltcGwpCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDEsIGhhc19wdXNoX2JhY2tfaW1wbCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFVTSF9CQUNLX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3B1c2hfZnJvbnRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3B1c2hfZnJvbnRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYTg3NDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wdXNoX2Zyb250X2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFVTSF9GUk9OVF9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BVU0hfRlJPTlRfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfZnJvbnRfaW1wbC5ocHAgNTU2NzkgMjAwOS0wOC0yMCAwNzo1MDoxNlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA5LTA4LTIwIDAwOjUwOjE2IC0wNzAwIChUaHUsIDIwIEF1ZyAyMDA5KSAkCi0vLyAkUmV2aXNpb246IDU1Njc5ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1zdHJ1Y3QgaGFzX3B1c2hfZnJvbnRfYXJnIHt9OwotCi0vLyBhZ3VydCAwNS9mZWIvMDQ6IG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb247IHRoZSBzdHViIGRlZmluaXRpb24gaXMgbmVlZGVkIAotLy8gdG8gZW5hYmxlIHRoZSBkZWZhdWx0ICdoYXNfcHVzaF9mcm9udCcgaW1wbGVtZW50YXRpb24gYmVsb3cKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICAvLyBzaG91bGQgYmUgaW5zdGFudGlhdGVkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgJ2hhc19wdXNoX2Zyb250X2ltcGwnOwotICAgICAgICAvLyBpZiB5b3UndmUgZ290IGFuIGFzc2VydCBoZXJlLCB5b3UgYXJlIHJlcXVlc3RpbmcgYSAncHVzaF9mcm9udCcgCi0gICAgICAgIC8vIHNwZWNpYWxpemF0aW9uIHRoYXQgZG9lc24ndCBleGlzdC4KLSAgICAgICAgTkROQk9PU1RfTVBMX0FTU0VSVF9NU0coCi0gICAgICAgICAgICAgICggbmRuYm9vc3Q6OmlzX3NhbWU8IFQsIGhhc19wdXNoX2Zyb250X2FyZyA+Ojp2YWx1ZSApCi0gICAgICAgICAgICAsIFJFUVVFU1RFRF9QVVNIX0ZST05UX1NQRUNJQUxJWkFUSU9OX0ZPUl9TRVFVRU5DRV9ET0VTX05PVF9FWElTVAotICAgICAgICAgICAgLCAoIFNlcXVlbmNlICkKLSAgICAgICAgICAgICk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGhhc19wdXNoX2Zyb250X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykKLSAgICAgICAgOiBhdXg6Omhhc190eXBlPCBwdXNoX2Zyb250PCBTZXEsIGhhc19wdXNoX2Zyb250X2FyZyA+ID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhdXg6Omhhc190eXBlPCBwdXNoX2Zyb250PCBTZXEsIGhhc19wdXNoX2Zyb250X2FyZyA+ID4gdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgICAgIChhdXg6Omhhc190eXBlPCBwdXNoX2Zyb250PCBTZXEsIGhhc19wdXNoX2Zyb250X2FyZyA+ID46OnZhbHVlKQotICAgICAgICAgICAgKTsKLSNlbmRpZgotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDIsIHB1c2hfZnJvbnRfaW1wbCkKLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoMSwgaGFzX3B1c2hfZnJvbnRfaW1wbCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFVTSF9GUk9OVF9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg2NDljMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1JFVkVSU0VfRk9MRF9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1JFVkVSU0VfRk9MRF9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvZGVyZWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgIHx8IGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19OT05UWVBFX1RFTVBMQVRFX1BBUlRJQUxfU1BFQykKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgZW5kaWYKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoaXRlcikgdHlwZW5hbWUgZGVyZWY8aXRlcj46OnR5cGUKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCByZXZlcnNlX2ZvbGQKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbF9ib2R5LmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1JFVkVSU0VfRk9MRF9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbF9ib2R5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGxfYm9keS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYTZlZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbF9ib2R5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxMiArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04hCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiByZXZlcnNlX2ZvbGRfaW1wbF9ib2R5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lURVJfRk9MRF9GT1JXQVJEX1NURVAodW51c2VkLCBuXywgdW51c2VkMikgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBcCi0gICAgICAgICAgRm9yd2FyZE9wIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoZndkX3N0YXRlLG5fKSBcCi0gICAgICAgICwgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChORE5CT09TVF9QUF9DQVQoaXRlcixuXykpIFwKLSAgICAgICAgPjo6dHlwZSBORE5CT09TVF9QUF9DQVQoZndkX3N0YXRlLE5ETkJPT1NUX1BQX0lOQyhuXykpOyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8TkROQk9PU1RfUFBfQ0FUKGl0ZXIsbl8pPjo6dHlwZSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0lOQyhuXykpOyBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUF9GVU5DKG5fKSBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFwKLSAgICAgICAgICBCYWNrd2FyZE9wIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoYmt3ZF9zdGF0ZSxuXykgXAotICAgICAgICAsIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfUFBfREVDKG5fKSkpIFwKLSAgICAgICAgPjo6dHlwZSBORE5CT09TVF9QUF9DQVQoYmt3ZF9zdGF0ZSxORE5CT09TVF9QUF9ERUMobl8pKTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVAodW51c2VkLCBuXywgaikgXAotICAgIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUF9GVU5DKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfU1VCX0QoMSxqLG5fKSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRklSU1RfQkFDS1dBUkRfU1RBVEVfVFlQRURFRihuXykgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBORE5CT09TVF9QUF9DQVQoYmt3ZF9zdGF0ZSxuXyk7Ci0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX2ltcGwpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX2NodW5rKSBcCi0gICAgLyoqLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTk9OVFlQRV9URU1QTEFURV9QQVJUSUFMX1NQRUMpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORywgPG5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotLy8gaW1wbGVtZW50YXRpb24gZm9yIE4gdGhhdCBleGNlZWRzIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikKLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLQotICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfRk9SV0FSRF9TVEVQCi0gICAgICAgICwgdW51c2VkCi0gICAgICAgICkKLQotICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPAotICAgICAgICAgICggKE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKSA8IDAgPyAwIDogTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcgKQotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChmd2Rfc3RhdGUsTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotICAgICAgICAKLSAgICBBVVg3NzgwNzZfRklSU1RfQkFDS1dBUkRfU1RBVEVfVFlQRURFRihORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKQotCi0gICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQCi0gICAgICAgICwgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICApCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLS8vIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGZvciBzZXF1ZW5jZXMgb2YgdW5rbm93biBzaXplCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8LTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcD4KLXsKLSAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSxBVVg3NzgwNzZfRk9MRF9JTVBMX09QKEZpcnN0KT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChGaXJzdCkKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8LTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikgPgotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORywgPG5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotLy8gaW1wbGVtZW50YXRpb24gZm9yIE4gdGhhdCBleGNlZWRzIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKSA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPiAKLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotCi0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLSAgICAgICAgICAgICwgdW51c2VkCi0gICAgICAgICAgICApCi0KLSAgICAgICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8Ci0gICAgICAgICAgICAgICggKE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKSA8IDAgPyAwIDogTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcgKQotICAgICAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoaXRlcixORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKQotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChmd2Rfc3RhdGUsTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotICAgICAgICAgICAgCi0gICAgICAgIEFVWDc3ODA3Nl9GSVJTVF9CQUNLV0FSRF9TVEFURV9UWVBFREVGKE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpCi0KLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAgICAgLCBBVVg3NzgwNzZfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVAKLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAgICAgKQotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotLy8gZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gZm9yIHNlcXVlbmNlcyBvZiB1bmtub3duIHNpemUKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfbnVsbF9zdGVwKQotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8PiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FPC0xPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+IAotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTxGaXJzdCxMYXN0Pjo6dHlwZQotICAgICAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfbnVsbF9zdGVwKTxMYXN0LFN0YXRlPgotICAgICAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfc3RlcCk8Rmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcD4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88aW50LGludCxpbnQsaW50LGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfc3RlcCkKLXsKLSAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8LTE+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSxBVVg3NzgwNzZfRk9MRF9JTVBMX09QKEZpcnN0KT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChGaXJzdCkKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKQotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRQotICAgIDogQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcD4KLXsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX19fQotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0ZJUlNUX0JBQ0tXQVJEX1NUQVRFX1RZUEVERUYKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVAKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVBfRlVOQwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JVEVSX0ZPTERfRk9SV0FSRF9TVEVQCi0KLSN1bmRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX09QCi0jdW5kZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBuXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTxuXyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotCi0gICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICBuXwotICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfRk9SV0FSRF9TVEVQCi0gICAgICAgICwgdW51c2VkCi0gICAgICAgICkKLQotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGZ3ZF9zdGF0ZSxuXykgTkROQk9PU1RfUFBfQ0FUKGJrd2Rfc3RhdGUsbl8pOwotCi0gICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICBuXwotICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotICAgICAgICAsIG5fCi0gICAgICAgICkKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlcixuXykgaXRlcmF0b3I7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FPG5fPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLQotICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgICAgICBuXwotICAgICAgICAgICAgLCBBVVg3NzgwNzZfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUAotICAgICAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgICAgICkKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChmd2Rfc3RhdGUsbl8pIE5ETkJPT1NUX1BQX0NBVChia3dkX3N0YXRlLG5fKTsKLQotICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgICAgICBuXwotICAgICAgICAgICAgLCBBVVg3NzgwNzZfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVAKLSAgICAgICAgICAgICwgbl8KLSAgICAgICAgICAgICkKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLG5fKSBpdGVyYXRvcjsKLSAgICB9OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykKLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPGludCxpbnQsaW50LGludCxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLSNlbmRpZgotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotIyAgIHVuZGVmIG5fCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vc2VxdWVuY2Vfd3JhcHBlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3NlcXVlbmNlX3dyYXBwZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmEyNzU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vc2VxdWVuY2Vfd3JhcHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzZXF1ZW5jZV93cmFwcGVyLmhwcCA0OTI3MSAyMDA4LTEwLTExIDA2OjQ2OjAwWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6NDY6MDAgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNzEgJAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXNfd2l0aF9hX2RlZmF1bHQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIHVuZGVmIExPTkdfTUFYCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiAhZGVmaW5lZChBVVg3NzgwNzZfU0VRVUVOQ0VfQkFTRV9OQU1FKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfQkFTRV9OQU1FIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9TRVFVRU5DRV9JTlRFR1JBTF9XUkFQUEVSKQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTV9OQU1FIFQKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNIHR5cGVuYW1lIFQKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQgbmEKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKG4pIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X1NFUVVFTkNFX0JBU0VfTkFNRSxuKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTVMoKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoIFwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQgXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfQVJHUygpIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyggXAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBcCi0gICAgICAgICwgVCBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVF9QQVJBTVMoKSBcCi0gICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1dJVEhfQV9ERUZBVUxUKCBcCi0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0gXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUkFNUyhuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MobikgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFQpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSVElBTF9TUEVDX0FSR1MobikgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFQpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTSggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX1NVQl9EKDEsQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlULG4pIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMiBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSNlbHNlIC8vIEFVWDc3ODA3Nl9TRVFVRU5DRV9JTlRFR1JBTF9XUkFQUEVSCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNX05BTUUgQwotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0gTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgQykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQgTE9OR19NQVgKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1TKCkgXAotICAgIHR5cGVuYW1lIFQsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKCBcCi0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0FSR1MoKSBcCi0gICAgVCwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoIFwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQgXAotICAgICAgICAsIEMgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFRfUEFSQU1TKCkgXAotICAgIHR5cGVuYW1lIFQsIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVCggXAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVCBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJBTVMobikgXAotICAgIHR5cGVuYW1lIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSkgXAotICAgIC8qKi8KLQotIyAgIGlmICFkZWZpbmVkKEFVWDc3ODA3Nl9TRVFVRU5DRV9DT05WRVJUX0NOX1RPKQotIyAgICAgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0NPTlZFUlRfQ05fVE8oeixuLFRBUkdFVCkgTkROQk9PU1RfUFBfQ0FUKEMsbikKLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MobikgXAotICAgIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX1BQX0VOVU0obixBVVg3NzgwNzZfU0VRVUVOQ0VfQ09OVkVSVF9DTl9UTyxUKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUlRJQUxfU1BFQ19BUkdTKG4pIFwKLSAgICBULCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBDKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX1BQX0VOVU0oIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9TVUJfRCgxLEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCxuKSBcCi0gICAgICAgICwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIgXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jZW5kaWYgLy8gQVVYNzc4MDc2X1NFUVVFTkNFX0lOVEVHUkFMX1dSQVBQRVIKLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLS8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPAotICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFRfUEFSQU1TKCkKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUU7Ci0jZWxzZQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+IAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSxfY2hvb3Nlcik7Ci19Ci0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQsIDxuZG5ib29zdC9tcGwvYXV4Xy9zZXF1ZW5jZV93cmFwcGVyLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vIHJlYWwgQysrIHZlcnNpb24gaXMgYWxyZWFkeSB0YWtlbiBjYXJlIG9mCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi1uYW1lc3BhY2UgYXV4IHsKLS8vID8/P19jb3VudF9hcmdzCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BSRUZJWCAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0RFRkFVTFQgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BBUkFNX05BTUUgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTV9OQU1FCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1RFTVBMQVRFX1BBUkFNIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTQotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19BUklUWSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfVVNFX1NUQU5EQVJEX1BQX1BSSU1JVElWRVMKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb3VudF9hcmdzLmhwcD4KLQotdGVtcGxhdGU8Ci0gICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1TKCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FLF9pbXBsKQotewotICAgIHR5cGVkZWYgYXV4OjpORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUsX2NvdW50X2FyZ3MpPAotICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCwgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNX05BTUUpCi0gICAgICAgID4gYXJnX251bV87Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Ok5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSxfY2hvb3Nlcik8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgQVVYNzc4MDc2X1NFUVVFTkNFX0FSR1MoKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVF9QQVJBTVMoKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRQotICAgIDogYXV4OjpORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUsX2ltcGwpPAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9BUkdTKCkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUsX2ltcGwpPAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9BUkdTKCkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUlRJQUxfU1BFQ19BUkdTCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9DT05WRVJUX0NOX1RPCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFRfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX0FSR1MKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTgotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNX05BTUUKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfQkFTRV9OQU1FCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfSU5URUdSQUxfV1JBUFBFUgotCi19fQotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi0jaWYgaV8gPT0gQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi10ZW1wbGF0ZTwKLSAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUkFNUyhpXykKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUKLSAgICA6IEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04oaV8pPCBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKGlfKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKGlfKTwgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhpXykgPjo6dHlwZSB0eXBlOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8Ci0gICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJBTVMoaV8pCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FPCBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJUSUFMX1NQRUNfQVJHUyhpXykgPgotICAgIDogQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTihpXyk8IEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MoaV8pID4KLXsKLSNpZiBpXyA+IDAgfHwgZGVmaW5lZChBVVg3NzgwNzZfU0VRVUVOQ0VfSU5URUdSQUxfV1JBUFBFUikKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04oaV8pPCBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKGlfKSA+Ojp0eXBlIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTihpXyk8IEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MoaV8pID46OnR5cGUgdHlwZTsKLSNlbmRpZgotfTsKLQotI2VuZGlmIC8vIGlfID09IEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVAotCi0jICAgZWxzZQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSxfY2hvb3Nlcik8aV8+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNUygpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSNpZiBpXyA+IDAgfHwgZGVmaW5lZChBVVg3NzgwNzZfU0VRVUVOQ0VfSU5URUdSQUxfV1JBUFBFUikKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKGlfKTwKLSAgICAgICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhpXykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSNlbHNlCi0gICAgICAgIHR5cGVkZWYgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTihpXyk8Ci0gICAgICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MoaV8pCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSN1bmRlZiBpXwotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zaXplX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zaXplX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmIxNmZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vc2l6ZV9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1NJWkVfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9TSVpFX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzaXplX2ltcGwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2l6ZV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kaXN0YW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uOyBjb25yZXRlIHNlcXVlbmNlcyBtaWdodCBvdmVycmlkZSBpdCBieSAKLS8vIHNwZWNpYWxpemluZyBlaXRoZXIgdGhlICdzaXplX2ltcGwnIG9yIHRoZSBwcmltYXJ5ICdzaXplJyB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBzaXplX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2MSkpCi0gICAgICAgIDogZGlzdGFuY2U8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBlbmQ8U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGlzdGFuY2U8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBlbmQ8U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQygxLCBzaXplX2ltcGwpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1NJWkVfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vc3RhdGljX2Nhc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zdGF0aWNfY2FzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzMTIxZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zdGF0aWNfY2FzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHN0YXRpY19jYXN0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2MSkpIFwKLSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChULCBleHByKSAoVCkoZXhwcikKLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1QoVCwgZXhwcikgc3RhdGljX2Nhc3Q8VD4oZXhwcikKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NzMwODAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0ZW1wbGF0ZV9hcml0eS5ocHAgNjE1ODQgMjAxMC0wNC0yNiAxODo0ODoyNlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDEwLTA0LTI2IDExOjQ4OjI2IC0wNzAwIChNb24sIDI2IEFwciAyMDEwKSAkCi0vLyAkUmV2aXNpb246IDYxNTg0ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORykKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSMgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3JlYmluZC5ocHA+Ci0jICAgZW5kaWYKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdGVtcGxhdGVfYXJpdHkuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JhbmdlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb2xkX2xlZnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUklUWSBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+IHN0cnVjdCBhcml0eV90YWcKLXsKLSAgICB0eXBlZGVmIGNoYXIgKCZ0eXBlKVtOICsgMV07Ci19OwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9NQVhfQVJJVFlfT1AodW51c2VkLCBzdGF0ZSwgaV8pIFwKLSAgICAoIE5ETkJPT1NUX1BQX0NBVChDLGlfKSA+IDAgPyBORE5CT09TVF9QUF9DQVQoQyxpXykgOiBzdGF0ZSApIFwKLS8qKi8KLQotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKEFVWDc3ODA3Nl9BUklUWSwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBDKSkKLSAgICA+Ci1zdHJ1Y3QgbWF4X2FyaXR5Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAKLSAgICAgICAgICBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUKAotICAgICAgICAgICAgICBBVVg3NzgwNzZfTUFYX0FSSVRZX09QCi0gICAgICAgICAgICAsIC0xCi0gICAgICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9SQU5HRSgxLCBBVVg3NzgwNzZfQVJJVFkpCi0gICAgICAgICAgICApCi0gICAgICAgICk7Ci19OwotCi0jICAgdW5kZWYgQVVYNzc4MDc2X01BWF9BUklUWV9PUAotCi1hcml0eV90YWc8MD46OnR5cGUgYXJpdHlfaGVscGVyKC4uLik7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUyAoMSwgQVVYNzc4MDc2X0FSSVRZKQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xIDxuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IAotICAgICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjxGPigpLGFyaXR5X3RhZzxOPigpKSkgLSAxCi0gICAgICAgICk7Ci19OwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9URU1QTEFURV9BUklUWV9JTVBMX0lOVk9DQVRJT04odW51c2VkLCBpXywgRikgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSB0ZW1wbGF0ZV9hcml0eV9pbXBsPEYsTkROQk9PU1RfUFBfSU5DKGlfKT46OnZhbHVlIFwKLS8qKi8KLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAoCi0gICAgICAgICAgbWF4X2FyaXR5PCBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgICAgICBBVVg3NzgwNzZfQVJJVFkKLSAgICAgICAgICAgICwgQVVYNzc4MDc2X1RFTVBMQVRFX0FSSVRZX0lNUExfSU5WT0NBVElPTgotICAgICAgICAgICAgLCBGCi0gICAgICAgICAgICApID46OnZhbHVlCi0gICAgICAgICkpOwotICAgICAgICAKLSAgICB0eXBlZGVmIG1wbDo6aW50Xzx2YWx1ZT4gdHlwZTsKLX07Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfVEVNUExBVEVfQVJJVFlfSU1QTF9JTlZPQ0FUSU9OCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVJJVFkKLQotfX19Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX0VYVEVOREVEX1RFTVBMQVRFX1BBUkFNRVRFUlNfTUFUQ0hJTkcKLSMgICBlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogbXBsOjppbnRfPC0xPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogRjo6YXJpdHkKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotICAgIDogdGVtcGxhdGVfYXJpdHlfaW1wbDwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmQ8Rj46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEY+Ci17Ci19OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykKLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eTxpbnQ+Ci0gICAgOiBtcGw6OmludF88LTE+Ci17Ci19OwotI2VuZGlmCi0KLX19fQotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCB0eXBlbmFtZSBQKSA+IGNsYXNzIEYKLSAgICAsIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotdHlwZW5hbWUgYXJpdHlfdGFnPGlfPjo6dHlwZQotYXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjwgRjxORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCBUKT4gPiwgYXJpdHlfdGFnPGlfPik7Ci0KLSN1bmRlZiBpXwotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjRiZDk5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0ZW1wbGF0ZV9hcml0eV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgdGVtcGxhdGVfYXJpdHk7Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMjFkZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfVFJBSVRTX0xBTUJEQV9TUEVDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1RSQUlUU19MQU1CREFfU1BFQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHRyYWl0c19sYW1iZGFfc3BlYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWdfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQ19JTVBMKGksIHRyYWl0KSAvKiovCi0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUNfSU1QTChpLCB0cmFpdCkgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8dm9pZF8+IFwKLXsgXAotICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIHR5cGVuYW1lIFQpID4gc3RydWN0IGFwcGx5IFwKLSAgICB7IFwKLSAgICB9OyBcCi19OyBcCi0vKiovCi0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQ19JTVBMKGksIHRyYWl0KSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDx2b2lkXz4gXAoteyBcCi0gICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSwgdHlwZW5hbWUgVCkgPiBzdHJ1Y3QgYXBwbHkgXAotICAgIHsgXAotICAgIH07IFwKLX07IFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PGludD4gXAoteyBcCi0gICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSwgdHlwZW5hbWUgVCkgPiBzdHJ1Y3QgYXBwbHkgXAotICAgIHsgXAotICAgICAgICB0eXBlZGVmIGludCB0eXBlOyBcCi0gICAgfTsgXAotfTsgXAotLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUCi0KLQotI2RlZmluZSBORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKGksIHRyYWl0KSBcCi0gICAgTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQ19JTVBMKGksIHRyYWl0KSBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8bm9uX3NlcXVlbmNlX3RhZz4ge307IFwKLS8qKi8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfVFJBSVRTX0xBTUJEQV9TUEVDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWFmNTRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1RZUEVfV1JBUFBFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9UWVBFX1dSQVBQRVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDAtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0eXBlX3dyYXBwZXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdHlwZV93cmFwcGVyCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLS8vIGFndXJ0IDA4L21heS8wMzogYSBjb21wbGljYXRlZCB3YXkgdG8gZXh0cmFjdCB0aGUgd3JhcHBlZCB0eXBlOyBuZWVkIGl0IAotLy8gbW9zdGx5IGZvciB0aGUgc2FrZSBvZiBHQ0MgKDMuMi54KSwgd2hpY2ggSUNFcyBpZiB5b3UgdHJ5IHRvIGV4dHJhY3QgdGhlIAotLy8gbmVzdGVkICd0eXBlJyBmcm9tICd0eXBlX3dyYXBwZXI8VD4nIHdoZW4gdGhlIGxhdHRlciB3YXMgdGhlIHJlc3VsdCBvZiBhCi0vLyAndHlwZW9mJyBleHByZXNzaW9uCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB3cmFwcGVkX3R5cGU7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHdyYXBwZWRfdHlwZTwgdHlwZV93cmFwcGVyPFQ+ID4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0jZWxzZQotdGVtcGxhdGU8IHR5cGVuYW1lIFcgPiBzdHJ1Y3Qgd3JhcHBlZF90eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBXOjp0eXBlIHR5cGU7Ci19OwotI2VuZGlmCi0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9UWVBFX1dSQVBQRVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3Vud3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3Vud3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MmQ4YzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy91bndyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfVU5XUkFQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1VOV1JBUF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQgMjAwMSwgMjAwMgotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdW53cmFwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1pbmxpbmUKLUYmIHVud3JhcChGJiBmLCBsb25nKQotewotICAgIHJldHVybiBmOwotfQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1pbmxpbmUKLUYmCi11bndyYXAocmVmZXJlbmNlX3dyYXBwZXI8Rj4mIGYsIGludCkKLXsKLSAgICByZXR1cm4gZjsKLX0KLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotaW5saW5lCi1GJgotdW53cmFwKHJlZmVyZW5jZV93cmFwcGVyPEY+IGNvbnN0JiBmLCBpbnQpCi17Ci0gICAgcmV0dXJuIGY7Ci19Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9VTldSQVBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIwM2JhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmFsdWVfd2tuZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3N0YXRpY19jYXN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CQ0NfSU5URUdSQUxfQ09OU1RBTlRTKSBcCi0gICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgQ18gPiBzdHJ1Y3QgdmFsdWVfd2tuZAotICAgIDogQ18KLXsKLX07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotdGVtcGxhdGU8PiBzdHJ1Y3QgdmFsdWVfd2tuZDxpbnQ+Ci0gICAgOiBpbnRfPDE+Ci17Ci0gICAgdXNpbmcgaW50XzwxPjo6dmFsdWU7Ci19OwotI2VuZGlmCi19fX0KLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChDKSBcCi0gICAgOjpORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6YXV4Ojp2YWx1ZV93a25kPCBDID4gXAotLyoqLwotIyAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoQykgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKEMpCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoQykgQwotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChDKSBcCi0gICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OnZhbHVlX3drbmQ8IEMgPiBcCi0vKiovCi0jZW5kaWYKLQotI2Vsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19CQ0NfSU5URUdSQUxfQ09OU1RBTlRTCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKEMpIEMKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoQykgQwotCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoVCwgQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1QoVCwgQzo6dmFsdWUpIFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoVCwgQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChDKTo6dmFsdWUgXAotLyoqLwotI2VuZGlmCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB2YWx1ZV90eXBlX3drbmQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGUgdHlwZTsKLX07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKQotdGVtcGxhdGU8PiBzdHJ1Y3QgdmFsdWVfdHlwZV93a25kPGludD4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLSNlbmRpZgotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQyMjI2Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9ZRVNfTk9fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfWUVTX05PX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogeWVzX25vLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYXJyYXlzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdHlwZWRlZiBjaGFyICgmbm9fdGFnKVsxXTsKLXR5cGVkZWYgY2hhciAoJnllc190YWcpWzJdOwotCi10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCB5ZXNfbm9fdGFnCi17Ci0gICAgdHlwZWRlZiBub190YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHllc19ub190YWc8dHJ1ZT4KLXsKLSAgICB0eXBlZGVmIHllc190YWcgdHlwZTsKLX07Ci0KLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG4pID4gc3RydWN0IHdlaWdodGVkX3RhZwotewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB0eXBlZGVmIGNoYXIgKCZ0eXBlKVtuXTsKLSNlbHNlCi0gICAgY2hhciBidWZbbl07Ci0gICAgdHlwZWRlZiB3ZWlnaHRlZF90YWcgdHlwZTsKLSNlbmRpZgotfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERVBFTkRFTlRfQVJSQVlfVFlQRVMpCi10ZW1wbGF0ZTw+IHN0cnVjdCB3ZWlnaHRlZF90YWc8MD4KLXsKLSAgICB0eXBlZGVmIGNoYXIgKCZ0eXBlKVsxXTsKLX07Ci0jZW5kaWYKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1lFU19OT19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JhY2tfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JhY2tfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRkODVlNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iYWNrX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0JBQ0tfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQkFDS19GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiYWNrX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYmFja19pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IGJhY2s7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQkFDS19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iYWNrX2luc2VydGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JhY2tfaW5zZXJ0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWY2YzEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JhY2tfaW5zZXJ0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9CQUNLX0lOU0VSVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQkFDS19JTlNFUlRFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJhY2tfaW5zZXJ0ZXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW5zZXJ0ZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICA+Ci1zdHJ1Y3QgYmFja19pbnNlcnRlcgotICAgIDogaW5zZXJ0ZXI8IFNlcXVlbmNlLHB1c2hfYmFjazw+ID4KLXsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQkFDS19JTlNFUlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTk5MWY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0JFR0lOX0VORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JFR0lOX0VORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJlZ2luX2VuZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9iZWdpbl9lbmRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gYWd1cnQsIDEzL3NlcC8wMjogc3dpdGNoZWQgZnJvbSBpbmhlcml0YW5jZSB0byB0eXBlZGVmOyBNU1ZDIGlzIG1vcmUKLS8vIGhhcHB5IHRoaXMgd2F5IChsZXNzIEVUSS1yZWxhdGVkIGVycm9ycyksIGFuZCBpdCBkb2Vzbid0IGFmZmVjdCAKLS8vIGFueXRoaW5nIGVsc2UKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3QgYmVnaW4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgdGFnXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJlZ2luX2ltcGw8IHRhZ18gPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSA+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsYmVnaW4sKFNlcXVlbmNlKSkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3QgZW5kCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlIHRhZ187Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBlbmRfaW1wbDwgdGFnXyA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxlbmQsKFNlcXVlbmNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBiZWdpbikKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBlbmQpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQkVHSU5fRU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmVnaW5fZW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU0ODZhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQkVHSU5fRU5EX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JFR0lOX0VORF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiZWdpbl9lbmRfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiZWdpbl9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlbmRfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IGJlZ2luOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IGVuZDsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CRUdJTl9FTkRfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIzMGExNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1MSArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0JJTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CSU5EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJpbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9wcm90ZWN0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXR5X3NwZWMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcD4KLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgZW5kaWYgCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9iaW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQpCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBiYXNpY19iaW5kLmhwcAotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGJpbmQuaHBwCi0jICAgZW5kaWYKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZfcGFyYW1zX3RhaWwuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJ0aWFsX3NwZWNfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZXh0X3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9hZGQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kbWNfYW1iaWd1b3VzX2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBsb2NhbCBtYWNyb3MsICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVBQTFkgXAotICAgIE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwLE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkpIFwKLSAgICAvKiovCi0KLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRE1DX0FNQklHVU9VU19DVFBTKQotIyAgICAgICBkZWZpbmUgQVVYNzc4MDc2X0RNQ19QQVJBTSgpICwgaW50IGR1bW15XwotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyggXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX0RFRkFVTFRfUEFSQU1TKHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyggXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkgXAotICAgICAgICAsIHBhcmFtIFwKLSAgICAgICAgLCB2YWx1ZSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0JJTkRfTl9TUEVDX1BBUkFNUyhuLCBwYXJhbSwgZGVmKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJUSUFMX1NQRUNfUEFSQU1TKG4sIHBhcmFtLCBkZWYpIFwKLSAgICAvKiovCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9ORVNURURfREVGQVVMVF9QQVJBTVMocGFyYW0sIHZhbHVlKSBcCi0gICAgQVVYNzc4MDc2X0JJTkRfREVGQVVMVF9QQVJBTVMocGFyYW0sIHZhbHVlKSBcCi0gICAgLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0JJTkRfTkVTVEVEX0RFRkFVTFRfUEFSQU1TKHBhcmFtLCB2YWx1ZSkgXAotICAgIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhwYXJhbSkgXAotICAgIC8qKi8KLSNlbmRpZgotCi1uYW1lc3BhY2UgYXV4IHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpCi0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8LTE+LEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUCi0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpCi0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPixBVVg3NzgwNzZfQklORF9QQVJBTVMoVSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X0FQUExZPG1wbDo6YXJnPE4+LCBBVVg3NzgwNzZfQklORF9QQVJBTVMoVSk+Ojp0eXBlIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFKQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVCksIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBVKQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPEYsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFQpPixBVVg3NzgwNzZfQklORF9QQVJBTVMoVSkgPgotewotICAgIHR5cGVkZWYgYmluZDxGLEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhUKT4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBVVg3NzgwNzZfQVBQTFk8Zl8sIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKT46OnR5cGUgdHlwZTsKLX07Ci0jZW5kaWYKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0vLyBhZ3VydCwgMTUvamFuLzAyOiBpdCdzIG5vdCBhIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBmdW5jdGlvbiBjbGFzcywgYW5kIAotLy8gTVNWQzYuNSBoYXMgcHJvYmxlbXMgd2l0aCAnYXBwbHknIG5hbWUgaGVyZSAodGhlIGNvZGUgY29tcGlsZXMsIGJ1dCBkb2Vzbid0Ci0vLyB3b3JrKSwgc28gSSB3ZW50IHdpdGggdGhlICdyZXN1bHRfJyBoZXJlLCBhbmQgaW4gYWxsIG90aGVyIHNpbWlsYXIgY2FzZXMKLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBVKSA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiAKLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBVKSA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9BUFBMWTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgLCBBVVg3NzgwNzZfQklORF9QQVJBTVMoVSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotLy8gZm9yICdyZXNvbHZlX2JpbmRfYXJnJwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZTsKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgVCwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpCi0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLSAgICA6IHJlc29sdmVfYXJnX2ltcGw8IGlzX2JpbmRfdGVtcGxhdGU8VD46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxBVVg3NzgwNzZfQklORF9QQVJBTVMoVSkgPgotewotfTsKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IAotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gCi1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsPCBhcmc8LTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJnID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxBcmc+Ojp0eXBlIG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcgPiAKLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi0gICAgOiByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8VD46OnRlbXBsYXRlIHJlc3VsdF88QXJnPgotewotfTsKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUCi0KLS8vIGFndXJ0LCAxMC9tYXIvMDI6IHRoZSBmb3J3YXJkIGRlY2xhcmF0aW9uIGhhcyB0byBhcHBlYXIgYmVmb3JlIGFueSBvZgotLy8gJ2lzX2JpbmRfaGVscGVyJyBvdmVybG9hZHMsIG90aGVyd2lzZSBNU1ZDNi41IGlzc3VlcyBhbiBJQ0Ugb24gaXQKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIGFyaXR5XykgPiBzdHJ1Y3QgYmluZF9jaG9vc2VyOwotCi1hdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlciguLi4pOwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBhdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlcihwcm90ZWN0PFQ+Kik7Ci0KLS8vIG92ZXJsb2FkIGZvciAibWFpbiIgZm9ybQotLy8gYWd1cnQsIDE1L21hci8wMjogTVNWQyA2LjUgZmFpbHMgdG8gcHJvcGVybHkgcmVzb2x2ZSB0aGUgb3ZlcmxvYWQgCi0vLyBpbiBjYXNlIGlmIHdlIHVzZSAnYXV4Ojp0eXBlX3dyYXBwZXI8IGJpbmQ8Li4uPiA+JyBoZXJlLCBhbmQgYWxsIAotLy8gJ2JpbmQnIGluc3RhbnRpYXRpb25zIGZvcm0gYSBjb21wbGV0ZSB0eXBlIGFueXdheQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQklORF9URU1QTEFURSkKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFQpCi0gICAgPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGJpbmQ8RixBVVg3NzgwNzZfQklORF9QQVJBTVMoVCk+Kik7Ci0jZW5kaWYKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGFyZzxOPiopOwotCi10ZW1wbGF0ZTwgYm9vbCBpc19yZWZfID0gdHJ1ZSA+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgICAgICBzaXplb2YoYXV4Ojppc19iaW5kX2hlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKSAKLSAgICAgICAgICAgICAgICA9PSBzaXplb2YoYXV4Ojp5ZXNfdGFnKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZQotICAgIDogaXNfYmluZF90ZW1wbGF0ZV9pbXBsPCA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNRVRFUlMpCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TUEVDX05BTUUgaWZfCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSAoMywoMywgMywgPG5kbmJvb3N0L21wbC9iaW5kLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0RNQ19BTUJJR1VPVVNfQ1RQUykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NQRUNfTkFNRSBldmFsX2lmCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSAoMywoMywgMywgPG5kbmJvb3N0L21wbC9iaW5kLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0jZW5kaWYKLSNlbmRpZgotCi0vLyByZWFsIEMrKyB2ZXJzaW9uIGlzIGFscmVhZHkgdGFrZW4gY2FyZSBvZgotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQklORF9URU1QTEFURSkKLQotbmFtZXNwYWNlIGF1eCB7Ci0vLyBhcHBseV9jb3VudF9hcmdzCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BSRUZJWCBiaW5kCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0RFRkFVTFQgbmEKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfQVJJVFkgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvdW50X2FyZ3MuaHBwPgotfQotCi0vLyBiaW5kCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBUKSBBVVg3NzgwNzZfRE1DX1BBUkFNKCkKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYXV4OjpiaW5kX2Nob29zZXI8Ci0gICAgICAgICAgYXV4OjpiaW5kX2NvdW50X2FyZ3M8QVVYNzc4MDc2X0JJTkRfUEFSQU1TKFQpPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgRixBVVg3NzgwNzZfQklORF9QQVJBTVMoVCkgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKAotICAgICAgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkpCi0gICAgLCBiaW5kCi0gICAgKQotCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoCi0gICAgICBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSkKLSAgICAsIGJpbmQKLSAgICApCi0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9CSU5EX05FU1RFRF9ERUZBVUxUX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9CSU5EX05fU1BFQ19QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9CSU5EX0RFRkFVTFRfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0RNQ19QQVJBTQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CSU5EX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDEKLQotLy8gRm9yIGdjYyA0LjQgY29tcGF0YWJpbGl0eSwgd2UgbXVzdCBpbmNsdWRlIHRoZQotLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIIHRlc3QgaW5zaWRlIGFuICNlbHNlIGNsYXVzZS4KLSNlbHNlIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotI2lmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDEKLQotIyAgIGRlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGRlZmluZWQoQVVYNzc4MDc2X1NQRUNfTkFNRSkKLQotLy8gbGF6eSBtZXRhZnVuY3Rpb24gc3BlY2lhbGl6YXRpb24KLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChxdW90ZSxpXyk7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKSA+IHN0cnVjdCBBVVg3NzgwNzZfU1BFQ19OQU1FOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZyBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPCAKLSAgICAgIE5ETkJPT1NUX1BQX0NBVChxdW90ZSxpXyk8QVVYNzc4MDc2X1NQRUNfTkFNRSxUYWc+Ci0gICAgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sVCkKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgQVVYNzc4MDc2X0JJTkRfTkVTVEVEX0RFRkFVTFRfUEFSQU1TKHR5cGVuYW1lIFUsIG5hKQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yICgzLCgxLCBpXywgPG5kbmJvb3N0L21wbC9iaW5kLmhwcD4pKQotIyAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X1NQRUNfTkFNRTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoMiwgTkROQk9PU1RfUFBfSU5DKGlfKSwgdCkKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLSN1bmRlZiBBVVg3NzgwNzZfU1BFQ19OQU1FCi0KLSNlbHNlIC8vIEFVWDc3ODA3Nl9TUEVDX05BTUUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKSBBVVg3NzgwNzZfRE1DX1BBUkFNKCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgQVVYNzc4MDc2X0JJTkRfTkVTVEVEX0RFRkFVTFRfUEFSQU1TKHR5cGVuYW1lIFUsIG5hKQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUKQotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPGEwLEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKT46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotIyAgIGVsc2UKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8RixBVVg3NzgwNzZfQklORF9QQVJBTVMoVSk+Ojp0eXBlIGZfOwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQKLQotIyAgIGlmIGlfID4gMAotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yICgzLCgxLCBpXywgPG5kbmJvb3N0L21wbC9iaW5kLmhwcD4pKQotIyAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotIyAgIGVuZGlmCi0KLSAgICAgcHVibGljOgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUkcodW51c2VkLCBpXywgdCkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBcCi0gICAgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKHQsTkROQk9PU1RfUFBfSU5DKGlfKSk6OnR5cGUgXAotLyoqLwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXAsaV8pPAotICAgICAgICAgICAgICBmXyAKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBORE5CT09TVF9NUExfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfQVJHLCB0KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FSRwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgdHlwZW5hbWUgVCksIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBVKQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sVCk+LEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKQotICAgID4KLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTxGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLFQpPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9BUFBMWTxmXywgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpPjo6dHlwZSB0eXBlOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sVCk+Kik7Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoTkROQk9PU1RfUFBfSU5DKGlfKSwgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKE5ETkJPT1NUX1BQX0lOQyhpXyksIE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKSkKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQklORF9URU1QTEFURSkKLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgIAotI2lmIGlfID09IE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8RiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXyxUKSA+Ci17Ci19OwotI2Vsc2UKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkgQVVYNzc4MDc2X0RNQ19QQVJBTSgpCi0gICAgPgotc3RydWN0IGJpbmQ8IEYgQVVYNzc4MDc2X0JJTkRfTl9TUEVDX1BBUkFNUyhpXywgVCwgbmEpID4KLSAgICA6IE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTxGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLFQpID4KLXsKLX07Ci0jZW5kaWYKLQotIyAgIGVsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjxpXz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVCkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTwgRiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXyxUKSA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fQklORF9URU1QTEFURQotCi0jZW5kaWYgLy8gQVVYNzc4MDc2X1NQRUNfTkFNRQotCi0jICAgdW5kZWYgaV8KLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAyCi0KLSNlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDIKLQotIyAgIGRlZmluZSBqXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMikKLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVCkKLQotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgTkROQk9PU1RfUFBfQ0FUKFQsal8pLE5ETkJPT1NUX1BQX0NBVChuLGpfKSA+IE5ETkJPT1NUX1BQX0NBVChyLGpfKTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQocixqXyk6OnR5cGUgTkROQk9PU1RfUFBfQ0FUKGEsal8pOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChyLGpfKTo6bmV4dCBORE5CT09TVF9QUF9DQVQobixORE5CT09TVF9QUF9JTkMoal8pKTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8TkROQk9PU1RfUFBfQ0FUKGEsal8pLCBBVVg3NzgwNzZfQklORF9QQVJBTVMoVSk+IE5ETkJPT1NUX1BQX0NBVCh0LGpfKTsKLSAgICAgICAgLy8vCi0jICAgZWxzZQotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgTkROQk9PU1RfUFBfQ0FUKFQsal8pLEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKT4gTkROQk9PU1RfUFBfQ0FUKHQsal8pOwotCi0jICAgZW5kaWYKLSMgICB1bmRlZiBqXwotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkKLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg5YmNjNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0JJTkRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQklORF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiaW5kX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmluZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgYmluZF9md2QuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZG1jX2FtYmlndW91c19jdHBzLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19ETUNfQU1CSUdVT1VTX0NUUFMpCi0jICAgICAgIGRlZmluZSBBVVg3NzgwNzZfRE1DX1BBUkFNKCkgLCBpbnQgZHVtbXlfID0gMAotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0JJTkRfREVGQVVMVF9QQVJBTVMocGFyYW0sIHZhbHVlKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICAsIHZhbHVlIFwKLSAgICAgICAgKSBcCi0gICAgQVVYNzc4MDc2X0RNQ19QQVJBTSgpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihuKSBORE5CT09TVF9NUExfUFBfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgQVVYNzc4MDc2X0RNQ19QQVJBTSgpIFwKLSAgICAvKiovCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0JJTkRfVEVNUExBVEUpCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9CSU5EX0RFRkFVTFRfUEFSQU1TKHR5cGVuYW1lIFQsIG5hKQotICAgID4KLXN0cnVjdCBiaW5kOwotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgPG5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9ERUZBVUxUX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9ETUNfUEFSQU0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JJTkRfRldEX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pOwotCi0jdW5kZWYgaV8KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Jvb2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYm9vbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiZTcwMzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYm9vbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0JPT0xfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CT09MX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYm9vbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2NfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBib29sXwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IENfKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2NfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGJvb2xfIHR5cGU7Ci0gICAgdHlwZWRlZiBib29sIHZhbHVlX3R5cGU7Ci0gICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnZhbHVlOyB9Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04pCi10ZW1wbGF0ZTwgYm9vbCBDXyA+Ci1ib29sIGNvbnN0IGJvb2xfPENfPjo6dmFsdWU7Ci0jZW5kaWYKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CT09MX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYm9vbF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYm9vbF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjVjYWM0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Jvb2xfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQk9PTF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CT09MX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJvb2xfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IGJvb2xfOwotCi0vLyBzaG9yY3V0cwotdHlwZWRlZiBib29sXzx0cnVlPiB0cnVlXzsKLXR5cGVkZWYgYm9vbF88ZmFsc2U+IGZhbHNlXzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGJvb2xfKQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKHRydWVfKQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGZhbHNlXykKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CT09MX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NsZWFyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NsZWFyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFiNDlhMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jbGVhci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0NMRUFSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQ0xFQVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjbGVhci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jbGVhcl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NsZWFyX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3QgY2xlYXIKLSAgICA6IGNsZWFyX2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGNsZWFyLChTZXF1ZW5jZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgY2xlYXIpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0xFQVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jbGVhcl9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvY2xlYXJfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQwZGFmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jbGVhcl9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9DTEVBUl9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9DTEVBUl9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjbGVhcl9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGNsZWFyX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgY2xlYXI7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0xFQVJfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29tcGFyaXNvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9jb21wYXJpc29uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFmYWQxZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jb21wYXJpc29uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQ09NUEFSSVNPTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0NPTVBBUklTT05fSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb21wYXJpc29uLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGVzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ09NUEFSSVNPTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbnRhaW5zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbnRhaW5zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM5NWU4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jb250YWlucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0NPTlRBSU5TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQ09OVEFJTlNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY29udGFpbnMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY29udGFpbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb250YWluc19pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IGNvbnRhaW5zCi0gICAgOiBjb250YWluc19pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UsVCA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGNvbnRhaW5zLChTZXF1ZW5jZSxUKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBjb250YWlucykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DT05UQUlOU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbnRhaW5zX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9jb250YWluc19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjRjMmRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbnRhaW5zX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0NPTlRBSU5TX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0NPTlRBSU5TX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb250YWluc19md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGNvbnRhaW5zX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgY29udGFpbnM7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ09OVEFJTlNfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29weS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9jb3B5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNlMTZjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jb3B5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQ09QWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0NPUFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb3B5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ZvbGQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9yZXZlcnNlX2ZvbGQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luc2VydGVyX2FsZ29yaXRobS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXIKLSAgICA+Ci1zdHJ1Y3QgY29weV9pbXBsCi0gICAgOiBmb2xkPCAKLSAgICAgICAgICBTZXF1ZW5jZQotICAgICAgICAsIHR5cGVuYW1lIEluc2VydGVyOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEluc2VydGVyOjpvcGVyYXRpb24KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXIKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9jb3B5X2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZDwKLSAgICAgICAgICBTZXF1ZW5jZQotICAgICAgICAsIHR5cGVuYW1lIEluc2VydGVyOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEluc2VydGVyOjpvcGVyYXRpb24KLSAgICAgICAgPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfSU5TRVJURVJfQUxHT1JJVEhNX0RFRigyLCBjb3B5KQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NPUFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9kZXJlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9kZXJlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ZmMyYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGVyZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9ERVJFRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0RFUkVGX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZGVyZWYuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShJdGVyYXRvcikKLSAgICA+Ci1zdHJ1Y3QgZGVyZWYKLXsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRykKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjp0eXBlIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojptc3ZjX3R5cGU8SXRlcmF0b3I+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsZGVyZWYsKEl0ZXJhdG9yKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBkZXJlZikKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9ERVJFRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Rpc3RhbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Rpc3RhbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUzNjBmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9kaXN0YW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0RJU1RBTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRElTVEFOQ0VfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBkaXN0YW5jZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kaXN0YW5jZV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pdGVyX2ZvbGQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19ldGlfYmFzZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBmb3J3YXJkL2JpZGlyZWN0aW9uYWwgaXRlcmF0b3JzCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpc3RhbmNlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIExhc3QgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaXRlcl9mb2xkPAotICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGaXJzdCxMYXN0PgotICAgICAgICAgICAgLCBtcGw6OmxvbmdfPDA+Ci0gICAgICAgICAgICAsIG5leHQ8PgotICAgICAgICAgICAgPjo6dHlwZSA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkPAotICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGaXJzdCxMYXN0PgotICAgICAgICAgICAgLCBtcGw6OmxvbmdfPDA+Ci0gICAgICAgICAgICAsIG5leHQ8PgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgICAKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGxvbmcsIHZhbHVlID0KLSAgICAgICAgICAgICAgKGl0ZXJfZm9sZDwKLSAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZpcnN0LExhc3Q+Ci0gICAgICAgICAgICAgICAgLCBtcGw6OmxvbmdfPDA+Ci0gICAgICAgICAgICAgICAgLCBuZXh0PD4KLSAgICAgICAgICAgICAgICA+Ojp0eXBlOjp2YWx1ZSkKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEZpcnN0KQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShMYXN0KQotICAgID4KLXN0cnVjdCBkaXN0YW5jZQotICAgIDogZGlzdGFuY2VfaW1wbDwgdHlwZW5hbWUgdGFnPEZpcnN0Pjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8Rmlyc3QsIExhc3Q+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBkaXN0YW5jZSwgKEZpcnN0LCBMYXN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBkaXN0YW5jZSkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9ESVNUQU5DRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Rpc3RhbmNlX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9kaXN0YW5jZV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTNlOWIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Rpc3RhbmNlX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0RJU1RBTkNFX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0RJU1RBTkNFX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGRpc3RhbmNlX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbW1vbl9uYW1lX3drbmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EKGRpc3RhbmNlKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpc3RhbmNlX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIExhc3QgPiBzdHJ1Y3QgZGlzdGFuY2U7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRElTVEFOQ0VfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZW1wdHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2VtcHR5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MTI4MTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZW1wdHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRU1QVFlfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRU1QVFlfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZW1wdHlfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlbXB0eV9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IGVtcHR5OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0VNUFRZX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZhMGFlNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRVFVQUxfVE9fSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBlcXVhbF90by5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSBlcXVhbF90bwotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gPT0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9FUVVBTF9UT19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZXZhbF9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMzJmYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZXZhbF9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0VWQUxfSUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9FVkFMX0lGX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZXZhbF9pZi5ocHAgNjE5MjEgMjAxMC0wNS0xMSAyMTozMzoyNFogbmVpbGdyb3ZlcyAkCi0vLyAkRGF0ZTogMjAxMC0wNS0xMSAxNDozMzoyNCAtMDcwMCAoVHVlLCAxMSBNYXkgMjAxMCkgJAotLy8gJFJldmlzaW9uOiA2MTkyMSAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2djYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEMpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEYxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShGMikKLSAgICA+Ci1zdHJ1Y3QgZXZhbF9pZgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgXAotICAgICB8fCAoIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVBMX0NGR19HQ0MsID49IDB4MDMwMCkgXAotICAgICAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01QTF9DRkdfR0NDLCBORE5CT09TVF9URVNURURfQVQoMHgwMzA0KSkgXAotICAgICAgICApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88QyxGMSxGMj46OnR5cGUgZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgICA6IGlmXzxDLEYxLEYyPjo6dHlwZQotewotI2VuZGlmCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLGV2YWxfaWYsKEMsRjEsRjIpKQotfTsKLQotLy8gKGFsbW9zdCkgY29weSAmIHBhc3RlIGluIG9yZGVyIHRvIHNhdmUgb25lIG1vcmUgCi0vLyByZWN1cnNpdmVseSBuZXN0ZWQgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiB0byB1c2VyCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQwotICAgICwgdHlwZW5hbWUgRjEKLSAgICAsIHR5cGVuYW1lIEYyCi0gICAgPgotc3RydWN0IGV2YWxfaWZfYwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgXAotICAgICB8fCAoIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVBMX0NGR19HQ0MsID49IDB4MDMwMCkgXAotICAgICAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01QTF9DRkdfR0NDLCBORE5CT09TVF9URVNURURfQVQoMHgwMzA0KSkgXAotICAgICAgICApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl9jPEMsRjEsRjI+Ojp0eXBlIGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSNlbHNlCi0gICAgOiBpZl9jPEMsRjEsRjI+Ojp0eXBlCi17Ci0jZW5kaWYKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBldmFsX2lmKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0VWQUxfSUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9maW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ZpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTFjMWVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ZpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9GSU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRklORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZpbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZmluZF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NhbWVfYXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgZmluZAotICAgIDogZmluZF9pZjwgU2VxdWVuY2Usc2FtZV9hczxUPiA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGZpbmQsKFNlcXVlbmNlLFQpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGZpbmQpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRklORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ZpbmRfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZmluZF9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZjNhYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZmluZF9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0ZJTkRfSUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9GSU5EX0lGX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZmluZF9pZi5ocHAgNDkyNzQgMjAwOC0xMC0xMSAwNzoyMjowNVogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTExIDAwOjIyOjA1IC0wNzAwIChTYXQsIDExIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5Mjc0ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2ZpbmRfaWZfcHJlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FyZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJfZm9sZF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29tbW9uX25hbWVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EKGZpbmRfaWYpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oUHJlZGljYXRlKQotICAgID4KLXN0cnVjdCBmaW5kX2lmCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWY8Ci0gICAgICAgICAgU2VxdWVuY2UKLSAgICAgICAgLCB2b2lkCi0gICAgICAgICwgbXBsOjphcmc8MT4gLy8gaWdub3JlCi0gICAgICAgICwgcHJvdGVjdDwgYXV4OjpmaW5kX2lmX3ByZWQ8UHJlZGljYXRlPiA+Ci0gICAgICAgID46OnR5cGUgcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2Vjb25kPHJlc3VsdF8+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsZmluZF9pZiwoU2VxdWVuY2UsUHJlZGljYXRlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLGZpbmRfaWYpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRklORF9JRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ZvbGQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZm9sZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZWE1NjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZm9sZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0ZPTERfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9GT0xEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZm9sZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU3RhdGUpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEZvcndhcmRPcCkKLSAgICA+Ci1zdHJ1Y3QgZm9sZAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojpmb2xkX2ltcGw8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjpPMV9zaXplPFNlcXVlbmNlPjo6dmFsdWUKLSAgICAgICAgLCB0eXBlbmFtZSBiZWdpbjxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlbmQ8U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPjo6c3RhdGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMyxmb2xkLChTZXF1ZW5jZSxTdGF0ZSxGb3J3YXJkT3ApKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGZvbGQpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRk9MRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zvcl9lYWNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zvcl9lYWNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI3MjYzMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mb3JfZWFjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9GT1JfRUFDSF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0ZPUl9FQUNIX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZm9yX2VhY2guaHBwIDU1NjQ4IDIwMDktMDgtMTggMDU6MTY6NTNaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOS0wOC0xNyAyMjoxNjo1MyAtMDcwMCAoTW9uLCAxNyBBdWcgMjAwOSkgJAotLy8gJFJldmlzaW9uOiA1NTY0OCAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaXNfc2VxdWVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZGVyZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdW53cmFwLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvdmFsdWVfaW5pdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgZG9uZSA9IHRydWUgPgotc3RydWN0IGZvcl9lYWNoX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIExhc3RJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFRyYW5zZm9ybUZ1bmMKLSAgICAgICAgLCB0eXBlbmFtZSBGCi0gICAgICAgID4KLSAgICBzdGF0aWMgdm9pZCBleGVjdXRlKAotICAgICAgICAgIEl0ZXJhdG9yKgotICAgICAgICAsIExhc3RJdGVyYXRvcioKLSAgICAgICAgLCBUcmFuc2Zvcm1GdW5jKgotICAgICAgICAsIEYKLSAgICAgICAgKQotICAgIHsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZm9yX2VhY2hfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIExhc3RJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFRyYW5zZm9ybUZ1bmMKLSAgICAgICAgLCB0eXBlbmFtZSBGCi0gICAgICAgID4KLSAgICBzdGF0aWMgdm9pZCBleGVjdXRlKAotICAgICAgICAgIEl0ZXJhdG9yKgotICAgICAgICAsIExhc3RJdGVyYXRvcioKLSAgICAgICAgLCBUcmFuc2Zvcm1GdW5jKiAKLSAgICAgICAgLCBGIGYKLSAgICAgICAgKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXJlZjxJdGVyYXRvcj46OnR5cGUgaXRlbTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTE8VHJhbnNmb3JtRnVuYyxpdGVtPjo6dHlwZSBhcmc7Ci0gICAgCi0gICAgICAgIC8vIGR3YSAyMDAyLzkvMTAgLS0gbWFrZSBzdXJlIG5vdCB0byBpbnZva2UgdW5kZWZpbmVkIGJlaGF2aW9yCi0gICAgICAgIC8vIHdoZW4gd2UgcGFzcyBhcmcuCi0gICAgICAgIHZhbHVlX2luaXRpYWxpemVkPGFyZz4geDsKLSAgICAgICAgYXV4Ojp1bndyYXAoZiwgMCkobmRuYm9vc3Q6OmdldCh4KSk7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxJdGVyYXRvcj46OnR5cGUgaXRlcjsKLSAgICAgICAgZm9yX2VhY2hfaW1wbDxuZG5ib29zdDo6aXNfc2FtZTxpdGVyLExhc3RJdGVyYXRvcj46OnZhbHVlPgotICAgICAgICAgICAgOjpleGVjdXRlKCBzdGF0aWNfY2FzdDxpdGVyKj4oMCksIHN0YXRpY19jYXN0PExhc3RJdGVyYXRvcio+KDApLCBzdGF0aWNfY2FzdDxUcmFuc2Zvcm1GdW5jKj4oMCksIGYpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi0vLyBhZ3VydCwgMTcvbWFyLzAyOiBwb2ludGVyIGRlZmF1bHQgcGFyYW1ldGVycyBhcmUgbmVjZXNzYXJ5IHRvIHdvcmthcm91bmQgCi0vLyBNU1ZDIDYuNSBmdW5jdGlvbiB0ZW1wbGF0ZSBzaWduYXR1cmUncyBtYW5nbGluZyBidWcKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICAsIHR5cGVuYW1lIFRyYW5zZm9ybU9wCi0gICAgLCB0eXBlbmFtZSBGCi0gICAgPgotaW5saW5lCi12b2lkIGZvcl9lYWNoKEYgZiwgU2VxdWVuY2UqID0gMCwgVHJhbnNmb3JtT3AqID0gMCkKLXsKLSAgICBORE5CT09TVF9NUExfQVNTRVJUKCggaXNfc2VxdWVuY2U8U2VxdWVuY2U+ICkpOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBiZWdpbjxTZXF1ZW5jZT46OnR5cGUgZmlyc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBlbmQ8U2VxdWVuY2U+Ojp0eXBlIGxhc3Q7Ci0KLSAgICBhdXg6OmZvcl9lYWNoX2ltcGw8IG5kbmJvb3N0Ojppc19zYW1lPGZpcnN0LGxhc3Q+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6ZXhlY3V0ZShzdGF0aWNfY2FzdDxmaXJzdCo+KDApLCBzdGF0aWNfY2FzdDxsYXN0Kj4oMCksIHN0YXRpY19jYXN0PFRyYW5zZm9ybU9wKj4oMCksIGYpOwotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCB0eXBlbmFtZSBGCi0gICAgPgotaW5saW5lCi12b2lkIGZvcl9lYWNoKEYgZiwgU2VxdWVuY2UqID0gMCkKLXsKLSAgICBmb3JfZWFjaDxTZXF1ZW5jZSwgaWRlbnRpdHk8PiA+KGYpOwotfQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0ZPUl9FQUNIX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZnJvbnRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zyb250X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0N2M2ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZnJvbnRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRlJPTlRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRlJPTlRfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZnJvbnRfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBmcm9udF9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IGZyb250OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0ZST05UX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zyb250X2luc2VydGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zyb250X2luc2VydGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUwNjFjNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mcm9udF9pbnNlcnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0ZST05UX0lOU0VSVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRlJPTlRfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmcm9udF9pbnNlcnRlci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2Zyb250LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW5zZXJ0ZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgID4KLXN0cnVjdCBmcm9udF9pbnNlcnRlcgotICAgIDogaW5zZXJ0ZXI8IFNlcXVlbmNlLHB1c2hfZnJvbnQ8PiA+Ci17Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0ZST05UX0lOU0VSVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9ncmVhdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q2MTQ0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfR1JFQVRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0dSRUFURVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBncmVhdGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIGdyZWF0ZXIKLSNkZWZpbmUgQVVYNzc4MDc2X09QX1RPS0VOID4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9HUkVBVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QwYThlOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfR1JFQVRFUl9FUVVBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0dSRUFURVJfRVFVQUxfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBncmVhdGVyX2VxdWFsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIGdyZWF0ZXJfZXF1YWwKLSNkZWZpbmUgQVVYNzc4MDc2X09QX1RPS0VOID49Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29tcGFyaXNvbl9vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfR1JFQVRFUl9FUVVBTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2hhc194eHguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaGFzX3h4eC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ODU2MDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaGFzX3h4eC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NDAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9IQVNfWFhYX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA2Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi0yMDAzCi0vLyBDb3B5cmlnaHQgRGFuaWVsIFdhbGtlciAyMDA3Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc194eHguaHBwIDY0MTQ2IDIwMTAtMDctMTkgMDA6NDY6MzFaIGRqd2Fsa2VyICQKLS8vICREYXRlOiAyMDEwLTA3LTE4IDE3OjQ2OjMxIC0wNzAwIChTdW4sIDE4IEp1bCAyMDEwKSAkCi0vLyAkUmV2aXNpb246IDY0MTQ2ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2djYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2hhc194eHguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjX3R5cGVuYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2VsZW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1OTApICkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFgpCi0KLSMgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0KLS8vIGFndXJ0LCAxMS9zZXAvMDI6IE1TVkMtc3BlY2lmaWMgdmVyc2lvbiAoPCA3LjEpLCBiYXNlZCBvbiBhIFVTRU5FVCAKLS8vIG5ld3Nncm91cCdzIHBvc3RpbmcgYnkgSm9obiBNYWRzZW4gKGNvbXAubGFuZy5jKysubW9kZXJhdGVkLCAKLS8vIDE5OTktMTEtMTIgMTk6MTc6MDYgR01UKTsgdGhlIGNvZGUgaXMgX25vdF8gc3RhbmRhcmQtY29uZm9ybWluZywgYnV0IAotLy8gaXQgd29ya3Mgd2F5IG1vcmUgcmVsaWFibHkgdGhhbiB0aGUgU0ZJTkFFLWJhc2VkIGltcGxlbWVudGF0aW9uCi0KLS8vIE1vZGlmaWVkIGR3YSA4L09jdC8wMiB0byBoYW5kbGUgcmVmZXJlbmNlIHR5cGVzLgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotc3RydWN0IGhhc194eHhfdGFnOwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotdGVtcGxhdGU8IHR5cGVuYW1lIFUgPiBzdHJ1Y3QgbXN2Y19pbmNvbXBsZXRlX2FycmF5Ci17Ci0gICAgdHlwZWRlZiBjaGFyICgmdHlwZSlbc2l6ZW9mKFUpICsgMV07Ci19OwotI2VuZGlmCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBtc3ZjX2lzX2luY29tcGxldGUKLXsKLSAgICAvLyBNU1ZDIGlzIGNhcGFibGUgb2Ygc29tZSBraW5kcyBvZiBTRklOQUUuICBJZiBVIGlzIGFuIGluY29tcGxldGUKLSAgICAvLyB0eXBlLCBpdCB3b24ndCBwaWNrIHRoZSBzZWNvbmQgb3ZlcmxvYWQKLSAgICBzdGF0aWMgY2hhciB0ZXN0ZXIoLi4uKTsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+Ci0gICAgc3RhdGljIHR5cGVuYW1lIG1zdmNfaW5jb21wbGV0ZV9hcnJheTxVPjo6dHlwZSB0ZXN0ZXIodHlwZV93cmFwcGVyPFU+KTsKLSNlbHNlCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPgotICAgIHN0YXRpYyBjaGFyICgmIHRlc3Rlcih0eXBlX3dyYXBwZXI8VT4pIClbc2l6ZW9mKFUpKzFdOwotI2VuZGlmIAotICAgIAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgIHNpemVvZih0ZXN0ZXIodHlwZV93cmFwcGVyPFQ+KCkpKSA9PSAxCi0gICAgICAgICk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbXN2Y19pc19pbmNvbXBsZXRlPGludD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi19fX0KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUZfKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIG5hbWUgPSA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3h4eF90YWcgPiBcCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHRyYWl0LF9pbXBsKSA6IFQgXAoteyBcCi0gICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmF1eDo6bm9fdGFnIFwKLSAgICB0ZXN0KHZvaWQoKikoOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc194eHhfdGFnKSk7IFwKLSAgICBcCi0gICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmF1eDo6eWVzX3RhZyB0ZXN0KC4uLik7IFwKLSAgICBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gXAotICAgICAgICAgIHNpemVvZih0ZXN0KHN0YXRpY19jYXN0PHZvaWQoKikobmFtZSk+KDApKSkgXAotICAgICAgICAgICAgIT0gc2l6ZW9mKG5kbmJvb3N0OjptcGw6OmF1eDo6bm9fdGFnKSBcCi0gICAgICAgICk7IFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPHZhbHVlPiB0eXBlOyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgZmFsbGJhY2tfID0gbmRuYm9vc3Q6Om1wbDo6Ym9vbF88ZGVmYXVsdF8+ID4gXAotc3RydWN0IHRyYWl0IFwKLSAgICA6IG5kbmJvb3N0OjptcGw6OmlmX2M8IFwKLSAgICAgICAgICBuZG5ib29zdDo6bXBsOjphdXg6Om1zdmNfaXNfaW5jb21wbGV0ZTxUPjo6dmFsdWUgXAotICAgICAgICAsIG5kbmJvb3N0OjptcGw6OmJvb2xfPGZhbHNlPiBcCi0gICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKHRyYWl0LF9pbXBsKTxUPiBcCi0gICAgICAgID46OnR5cGUgXAoteyBcCi19OyBcCi1cCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgdm9pZCkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIGJvb2wpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBjaGFyKSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgc2lnbmVkIGNoYXIpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCB1bnNpZ25lZCBjaGFyKSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgc2lnbmVkIHNob3J0KSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgdW5zaWduZWQgc2hvcnQpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBzaWduZWQgaW50KSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgdW5zaWduZWQgaW50KSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgc2lnbmVkIGxvbmcpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCB1bnNpZ25lZCBsb25nKSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgZmxvYXQpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBkb3VibGUpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBsb25nIGRvdWJsZSkgXAotLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBUKSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDxUPiBcCi17IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7IFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPGZhbHNlPiB0eXBlOyBcCi19OyBcCi0vKiovCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKHRyYWl0LCBuYW1lLCB1bnVzZWQpIFwKLSAgICBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUZfKHRyYWl0LCBuYW1lLCB1bnVzZWQpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgd2NoYXJfdCkgXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKHRyYWl0LCBuYW1lLCB1bnVzZWQpIFwKLSAgICBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUZfKHRyYWl0LCBuYW1lLCB1bnVzZWQpIFwKLS8qKi8KLSNlbmRpZgotCi0KLS8vIFNGSU5BRS1iYXNlZCBpbXBsZW1lbnRhdGlvbnMgYmVsb3cgYXJlIGRlcml2ZWQgZnJvbSBhIFVTRU5FVCBuZXdzZ3JvdXAncyAKLS8vIHBvc3RpbmcgYnkgUmFuaSBTaGFyb25pIChjb21wLmxhbmcuYysrLm1vZGVyYXRlZCwgMjAwMi0wMy0xNyAwNzo0NTowOSBQU1QpCi0KLSMgICBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDE0MDApKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIDw9IDcwMCkKLQotLy8gTVNWQyA3LjErICYgVkFDUFAKLQotLy8gYWd1cnQsIDE1L2p1bi8wNTogcmVwbGFjZSBvdmVybG9hZC1iYXNlZCBTRklOQUUgaW1wbGVtZW50YXRpb24gd2l0aCBTRklOQUUKLS8vIGFwcGxpZWQgdG8gcGFydGlhbCBzcGVjaWFsaXphdGlvbiB0byBmaXggc29tZSBhcHBhcmVudGx5IHJhbmRvbSBmYWlsdXJlcyAKLS8vICh0aGFua3MgdG8gRGFuaWVsIFdhbGxpbiBmb3IgcmVzZWFyY2hpbmcgdGhpcyEpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBcCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHRyYWl0LCBfbXN2Y19zZmluYWVfaGVscGVyKSBcCi17IFwKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsgXAotfTtcCi1cCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVSA9IHZvaWQgPiBcCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHRyYWl0LF9pbXBsXykgXAoteyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOyBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpib29sXzx2YWx1ZT4gdHlwZTsgXAotfTsgXAotXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBcCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHRyYWl0LF9pbXBsXyk8IFwKLSAgICAgIFQgXAotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKHRyYWl0LCBfbXN2Y19zZmluYWVfaGVscGVyKTwgdHlwZW5hbWUgVDo6bmFtZSA+Ojp0eXBlIFwKLSAgICA+IFwKLXsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpib29sXzx2YWx1ZT4gdHlwZTsgXAotfTsgXAotXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPGRlZmF1bHRfPiA+IFwKLXN0cnVjdCB0cmFpdCBcCi0gICAgOiBORE5CT09TVF9QUF9DQVQodHJhaXQsX2ltcGxfKTxUPiBcCi17IFwKLX07IFwKLS8qKi8KLQotIyAgIGVsaWYgTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1OTApICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9CQ0JfREVGKHRyYWl0LCB0cmFpdF90ZXN0ZXIsIG5hbWUsIGRlZmF1bHRfKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgYm9vbCBJU19DTEFTUyA+IFwKLXN0cnVjdCB0cmFpdF90ZXN0ZXIgXAoteyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCAgdmFsdWUgPSBmYWxzZSApOyBcCi19OyBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IFwKLXN0cnVjdCB0cmFpdF90ZXN0ZXI8IFQsIHRydWUgPiBcCi17IFwKLSAgICBzdHJ1Y3QgdHJhaXRfdGVzdGVyX2ltcGwgXAotICAgIHsgXAotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIFUgPiBcCi0gICAgICAgIHN0YXRpYyBpbnQgIHJlc29sdmUoIG5kbmJvb3N0OjptcGw6OmF1eDo6dHlwZV93cmFwcGVyPFU+IGNvbnN0IHZvbGF0aWxlICogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjx0eXBlbmFtZSBVOjpuYW1lID4qID0gMCApOyBcCi0gICAgICAgIHN0YXRpYyBjaGFyIHJlc29sdmUoIC4uLiApOyBcCi0gICAgfTsgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp0eXBlX3dyYXBwZXI8VD4gdF87IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIHZhbHVlID0gKCBzaXplb2YoIHRyYWl0X3Rlc3Rlcl9pbXBsOjpyZXNvbHZlKCBzdGF0aWNfY2FzdDwgdF8gKiA+KDApICkgKSA9PSBzaXplb2YoaW50KSApICk7IFwKLX07IFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBmYWxsYmFja18gPSBuZG5ib29zdDo6bXBsOjpib29sXzxkZWZhdWx0Xz4gPiBcCi1zdHJ1Y3QgdHJhaXQgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgdmFsdWUgPSAodHJhaXRfdGVzdGVyPCBULCBuZG5ib29zdDo6aXNfY2xhc3M8IFQgPjo6dmFsdWUgPjo6dmFsdWUpICk7ICAgICBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpib29sXzwgdHJhaXQ8IFQsIGZhbGxiYWNrXyA+Ojp2YWx1ZSA+IHR5cGU7IFwKLX07Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotICAgIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0JDQl9ERUYoIHRyYWl0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9QUF9DQVQodHJhaXQsX3Rlc3RlcikgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbmFtZSAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgZGVmYXVsdF8gKSBcCi0vKiovCi0KLSMgICBlbHNlIC8vIG90aGVyIFNGSU5BRS1jYXBhYmxlIGNvbXBpbGVycwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRih0cmFpdCwgbmFtZSwgZGVmYXVsdF8pIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBmYWxsYmFja18gPSBuZG5ib29zdDo6bXBsOjpib29sXzxkZWZhdWx0Xz4gPiBcCi1zdHJ1Y3QgdHJhaXQgXAoteyBcCi0gICAgc3RydWN0IGdjY18zXzJfd2tuZCBcCi0gICAgeyBcCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVID4gXAotICAgICAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnIHRlc3QoIFwKLSAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp0eXBlX3dyYXBwZXI8VT4gY29uc3Qgdm9sYXRpbGUqIFwKLSAgICAgICAgICAgICwgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp0eXBlX3dyYXBwZXI8TkROQk9PU1RfTVNWQ19UWVBFTkFNRSBVOjpuYW1lPiogPSAwIFwKLSAgICAgICAgICAgICk7IFwKLSAgICBcCi0gICAgICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjphdXg6Om5vX3RhZyB0ZXN0KC4uLik7IFwKLSAgICB9OyBcCi0gICAgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp0eXBlX3dyYXBwZXI8VD4gdF87IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBcCi0gICAgICAgICAgc2l6ZW9mKGdjY18zXzJfd2tuZDo6dGVzdChzdGF0aWNfY2FzdDx0Xyo+KDApKSkgXAotICAgICAgICAgICAgPT0gc2l6ZW9mKG5kbmJvb3N0OjptcGw6OmF1eDo6eWVzX3RhZykgXAotICAgICAgICApOyBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpib29sXzx2YWx1ZT4gdHlwZTsgXAotfTsgXAotLyoqLwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotCi0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWAotCi0vLyBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRih0cmFpdCwgbmFtZSwgZGVmYXVsdF8pIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBmYWxsYmFja18gPSBuZG5ib29zdDo6bXBsOjpib29sXzxkZWZhdWx0Xz4gPiBcCi1zdHJ1Y3QgdHJhaXQgXAoteyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsbGJhY2tfOjp2YWx1ZSk7IFwKLSAgICB0eXBlZGVmIGZhbGxiYWNrXyB0eXBlOyBcCi19OyBcCi0vKiovCi0KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihuYW1lKSBcCi0gICAgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKE5ETkJPT1NUX1BQX0NBVChoYXNfLG5hbWUpLCBuYW1lLCBmYWxzZSkgXAotLyoqLwotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFhfVEVNUExBVEUpCi0KLS8vIENyZWF0ZSBhIGJvb2xlYW4gTWV0YWZ1bmN0aW9uIHRvIGRldGVjdCBhIG5lc3RlZCB0ZW1wbGF0ZQotLy8gbWVtYmVyLiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIGEgVVNFTkVUIG5ld3Nncm91cCdzCi0vLyBwb3N0aW5nIGJ5IEFsZWtzZXkgR3VydG92b3kgKGNvbXAubGFuZy5jKysubW9kZXJhdGVkLCAyMDAyLTAzLTE5KSwKLS8vIFJhbmkgU2hhcm9uaSdzIFVTRU5FVCBwb3N0aW5nIGNpdGVkIGFib3ZlLCB0aGUgbm9uLXRlbXBsYXRlIGhhc194eHgKLS8vIGltcGxlbWVudGF0aW9ucyBhYm92ZSwgYW5kIGRpc2N1c3Npb24gb24gdGhlIEJvb3N0IG1haWxpbmcgbGlzdC4KLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9IQVNfWFhYX05PX1dSQVBQRURfVFlQRVMpCi0jICAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDE0MDApCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9OT19XUkFQUEVEX1RZUEVTIDEKLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9IQVNfWFhYX05PX0VYUExJQ0lUX1RFU1RfRlVOQ1RJT04pCi0jICAgICBpZiAoZGVmaW5lZChORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMpKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fRVhQTElDSVRfVEVTVF9GVU5DVElPTiAxCi0jICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfSEFTX1hYWF9ORUVEU19URU1QTEFURV9TRklOQUUpCi0jICAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDE0MDApCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9ORUVEU19URU1QTEFURV9TRklOQUUgMQotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0vLyBOT1RFOiBNYW55IGludGVybmFsIGltcGxlbWVudGF0aW9uIG1hY3JvcyB0YWtlIGEgQm9vc3QuUHJlcHJvY2Vzc29yCi0vLyBhcnJheSBhcmd1bWVudCBjYWxsZWQgYXJncyB3aGljaCBpcyBvZiB0aGUgZm9sbG93aW5nIGZvcm0uCi0vLyAgICAgICAgICAgKCA0LCAoIHRyYWl0LCBuYW1lLCBtYXhfYXJpdHksIGRlZmF1bHRfICkgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fTkFNRShhcmdzKSBcCi0gICAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgwLCBhcmdzKSAsIF9pbnRyb3NwZWN0KSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FKGFyZ3MsIG4pIFwKLSAgICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgwLCBhcmdzKSAsIF9zdWJzdGl0dXRlKSwgbikgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSBcCi0gICAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgwLCBhcmdzKSAsIF90ZXN0KSBcCi0gICAgLyoqLwotCi0vLyBUaGFua3MgdG8gR3VpbGxhdW1lIE1lbHF1aW9uZCBmb3IgcG9pbnRpbmcgb3V0IHRoZSBuZWVkIGZvciB0aGUKLS8vICJzdWJzdGl0dXRlIiB0ZW1wbGF0ZSBhcyBhbiBhcmd1bWVudCB0byB0aGUgb3ZlcmxvYWRlZCB0ZXN0Ci0vLyBmdW5jdGlvbnMgdG8gZ2V0IFNGSU5BRSB0byB3b3JrIGZvciBtZW1iZXIgdGVtcGxhdGVzIHdpdGggdGhlCi0vLyBjb3JyZWN0IG5hbWUgYnV0IGRpZmZlcmVudCBudW1iZXIgb2YgYXJndW1lbnRzLgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9NVUxUSV9TVUJTVElUVVRFKHosIG4sIGFyZ3MpIFwKLSAgICAgIHRlbXBsYXRlPCBcCi0gICAgICAgICAgdGVtcGxhdGU8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSwgdHlwZW5hbWUgVikgPiBjbGFzcyBWIFwKLSAgICAgICA+IFwKLSAgICAgIHN0cnVjdCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRShhcmdzLCBuKSB7IFwKLSAgICAgIH07IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfU1VCU1RJVFVURShhcmdzLCBzdWJzdGl0dXRlX21hY3JvKSBcCi0gICAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIGFyZ3MpIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9NVUxUSV9TVUJTVElUVVRFIFwKLSAgICAgICAgLCBhcmdzIFwKLSAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGlmICFORE5CT09TVF9NUExfSEFTX1hYWF9OT19FWFBMSUNJVF9URVNUX0ZVTkNUSU9OCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfUkVKRUNUKGFyZ3MsIG1lbWJlcl9tYWNybykgXAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgViA+IFwKLSAgICAgICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmF1eDo6bm9fdGFnIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykoLi4uKTsgXAotICAgICAgLyoqLwotIyAgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9SRUpFQ1QoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjphdXg6Om5vX3RhZyBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpKC4uLik7IFwKLSAgICAgIC8qKi8KLSMgICBlbmRpZgotCi0jICAgaWYgIU5ETkJPT1NUX01QTF9IQVNfWFhYX05PX1dSQVBQRURfVFlQRVMKLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9NVUxUSV9BQ0NFUFQoeiwgbiwgYXJncykgXAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgViA+IFwKLSAgICAgICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmF1eDo6eWVzX3RhZyBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpKCBcCi0gICAgICAgICAgICBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjwgViA+IGNvbnN0IHZvbGF0aWxlKiBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRShhcmdzLCBuKSA8IFwKLSAgICAgICAgICAgICAgICBWOjp0ZW1wbGF0ZSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDEsIGFyZ3MpIFwKLSAgICAgICAgICAgID4qID0gMCBcCi0gICAgICAgICk7IFwKLSAgICAgIC8qKi8KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9BQ0NFUFQoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgyLCBhcmdzKSBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9NVUxUSV9BQ0NFUFQgXAotICAgICAgICAgICwgYXJncyBcCi0gICAgICAgICkgXAotICAgICAgLyoqLwotIyAgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9BQ0NFUFQoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWID4gXAotICAgICAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykoIFwKLSAgICAgICAgICAgIFYgY29uc3Qgdm9sYXRpbGUqIFwKLSAgICAgICAgICAsIG1lbWJlcl9tYWNybyhhcmdzLCBWLCBUKSogPSAwIFwKLSAgICAgICAgKTsgXAotICAgICAgLyoqLwotIyAgIGVuZGlmCi0KLSMgICBpZiAhTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fRVhQTElDSVRfVEVTVF9GVU5DVElPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1RFU1QoYXJncykgXAotICAgICAgICAgIHNpemVvZihORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKTwgVSA+KDApKSBcCi0gICAgICAgICAgICAgID09IHNpemVvZihuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcpIFwKLSAgICAgIC8qKi8KLSMgICBlbHNlCi0jICAgICBpZiAhTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fV1JBUFBFRF9UWVBFUwotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVTVChhcmdzKSBcCi0gICAgICAgICAgc2l6ZW9mKCBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpKCBcCi0gICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp0eXBlX3dyYXBwZXI8IFUgPiogPigwKSBcCi0gICAgICAgICAgICAgICkgXAotICAgICAgICAgICkgPT0gc2l6ZW9mKG5kbmJvb3N0OjptcGw6OmF1eDo6eWVzX3RhZykgXAotICAgICAgICAvKiovCi0jICAgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URVNUKGFyZ3MpIFwKLSAgICAgICAgICBzaXplb2YoIFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykoIFwKLSAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PCBVKiA+KDApIFwKLSAgICAgICAgICAgICAgKSBcCi0gICAgICAgICAgKSA9PSBzaXplb2YobmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnKSBcCi0gICAgICAgIC8qKi8KLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUKCBcCi0gICAgICAgICAgICAgICBhcmdzLCBzdWJzdGl0dXRlX21hY3JvLCBtZW1iZXJfbWFjcm8gXAotICAgICAgICAgICApIFwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVID4gXAotICAgICAgc3RydWN0IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fTkFNRShhcmdzKSB7IFwKLSAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9TVUJTVElUVVRFKGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8pIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9SRUpFQ1QoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfQUNDRVBUKGFyZ3MsIG1lbWJlcl9tYWNybykgXAotICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggXAotICAgICAgICAgICAgICBib29sLCB2YWx1ZSA9IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1RFU1QoYXJncykgXAotICAgICAgICAgICk7IFwKLSAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPCB2YWx1ZSA+IHR5cGU7IFwKLSAgICAgIH07IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU1QTEVNRU5UQVRJT04oIFwKLSAgICAgICAgICAgICAgIGFyZ3MsIGludHJvc3BlY3RfbWFjcm8sIHN1YnN0aXR1dGVfbWFjcm8sIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICAgICkgXAotICAgICAgdGVtcGxhdGU8IFwKLSAgICAgICAgICB0eXBlbmFtZSBUIFwKLSAgICAgICAgLCB0eXBlbmFtZSBmYWxsYmFja18gXAotICAgICAgICAgICAgICA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPCBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDMsIGFyZ3MpID4gXAotICAgICAgPiBcCi0gICAgICBjbGFzcyBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIGFyZ3MpIHsgXAotICAgICAgICAgIGludHJvc3BlY3RfbWFjcm8oYXJncywgc3Vic3RpdHV0ZV9tYWNybywgbWVtYmVyX21hY3JvKSBcCi0gICAgICBwdWJsaWM6IFwKLSAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSBcCi0gICAgICAgICAgICAgID0gTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9OQU1FKGFyZ3MpPCBUID46OnZhbHVlOyBcCi0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX05BTUUoYXJncyk8IFwKLSAgICAgICAgICAgICAgVCBcCi0gICAgICAgICAgPjo6dHlwZSB0eXBlOyBcCi0gICAgICB9OyBcCi0gICAgLyoqLwotCi0vLyBORE5CT09TVF9NUExfSEFTX01FTUJFUl9XSVRIX0ZVTkNUSU9OX1NGSU5BRSBleHBhbmRzIHRvIHRoZSBmdWxsCi0vLyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZnVuY3Rpb24tYmFzZWQgbWV0YWZ1bmN0aW9uLiBDb21waWxlIHdpdGggLUUKLS8vIHRvIHNlZSB0aGUgcHJlcHJvY2Vzc29yIG91dHB1dCBmb3IgdGhpcyBtYWNyby4KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfV0lUSF9GVU5DVElPTl9TRklOQUUoIFwKLSAgICAgICAgICAgICAgIGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8sIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICAgICkgXAotICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU1QTEVNRU5UQVRJT04oIFwKLSAgICAgICAgICBhcmdzIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUIFwKLSAgICAgICAgLCBzdWJzdGl0dXRlX21hY3JvIFwKLSAgICAgICAgLCBtZW1iZXJfbWFjcm8gXAotICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgaWYgTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfVEVNUExBVEVfU0ZJTkFFCi0KLSMgICAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX05BTUVTUEFDRV9MRVZFTF9TVUJTVElUVVRFKQotIyAgICAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDE0MDApCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX05BTUVTUEFDRV9MRVZFTF9TVUJTVElUVVRFIDEKLSMgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0KLSMgICAgIGlmICFORE5CT09TVF9NUExfSEFTX1hYWF9ORUVEU19OQU1FU1BBQ0VfTEVWRUxfU1VCU1RJVFVURQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUVfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgICBhcmdzLCBuIFwKLSAgICAgICAgICAgICAgICkgXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FKGFyZ3MsIG4pIFwKLSAgICAgICAgLyoqLwotIyAgICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUVfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgICBhcmdzLCBuIFwKLSAgICAgICAgICAgICAgICkgXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVCggXAotICAgICAgICAgICAgICBib29zdF9tcGxfaGFzX3h4eF8gXAotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRShhcmdzLCBuKSBcCi0gICAgICAgICAgKSBcCi0gICAgICAgIC8qKi8KLSMgICAgIGVuZGlmCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfVEFHX05BTUUoIFwKLSAgICAgICAgICAgICAgICAgYXJncyBcCi0gICAgICAgICAgICAgKSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVCggXAotICAgICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUVfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICBhcmdzLCAwIFwKLSAgICAgICAgICAgICkgXAotICAgICAgICAgICwgX3RhZyBcCi0gICAgICAgICkgXAotICAgICAgLyoqLwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfU1VCU1RJVFVURV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICB6LCBuLCBhcmdzIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgdGVtcGxhdGU8IFwKLSAgICAgICAgICAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCB0eXBlbmFtZSBVKSA+IGNsYXNzIFUgXAotICAgICAgICA+IFwKLSAgICAgICAgc3RydWN0IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgYXJncywgbiBcCi0gICAgICAgICAgICAgICApIHsgXAotICAgICAgICAgICAgdHlwZWRlZiBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX1RBR19OQU1FKGFyZ3MpIFwKLSAgICAgICAgICAgICAgICB0eXBlOyBcCi0gICAgICAgIH07IFwKLSAgICAgIC8qKi8KLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1NVQlNUSVRVVEVfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgYXJncywgc3Vic3RpdHV0ZV9tYWNybyBcCi0gICAgICAgICAgICAgKSBcCi0gICAgICAgIHR5cGVkZWYgdm9pZCBcCi0gICAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfVEFHX05BTUUoYXJncyk7IFwKLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIGFyZ3MpIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX1NVQlNUSVRVVEVfV0lUSF9URU1QTEFURV9TRklOQUUgXAotICAgICAgICAgICwgYXJncyBcCi0gICAgICAgICkgXAotICAgICAgLyoqLwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfUkVKRUNUX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgIGFyZ3MsIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICAgICAgKSBcCi0gICAgICAgIHRlbXBsYXRlPCBcCi0gICAgICAgICAgICB0eXBlbmFtZSBVIFwKLSAgICAgICAgICAsIHR5cGVuYW1lIFYgXAotICAgICAgICAgICAgICAgID0gTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX1RBR19OQU1FKGFyZ3MpIFwKLSAgICAgICAgPiBcCi0gICAgICAgIHN0cnVjdCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSB7IFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsgXAotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpib29sXzwgdmFsdWUgPiB0eXBlOyBcCi0gICAgICAgIH07IFwKLSAgICAgIC8qKi8KLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX0FDQ0VQVF9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICB6LCBuLCBhcmdzIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPiBcCi0gICAgICAgIHN0cnVjdCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKTwgXAotICAgICAgICAgICAgVSBcCi0gICAgICAgICAgLCB0eXBlbmFtZSBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUVfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgICAgYXJncywgbiBcCi0gICAgICAgICAgICAgICAgKTwgXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9NU1ZDX1RZUEVOQU1FIFU6Ok5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMSwgYXJncyk8ID4gXAotICAgICAgICAgICAgICAgID46OnR5cGUgXAotICAgICAgICA+IHsgXAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IFwKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IHZhbHVlID4gdHlwZTsgXAotICAgICAgICB9OyBcCi0gICAgICAvKiovCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9BQ0NFUFRfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgYXJncywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIGFyZ3MpIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX0FDQ0VQVF9XSVRIX1RFTVBMQVRFX1NGSU5BRSBcCi0gICAgICAgICAgLCBhcmdzIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgIGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8sIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICAgICAgKSBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1JFSkVDVF9XSVRIX1RFTVBMQVRFX1NGSU5BRShhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfQUNDRVBUX1dJVEhfVEVNUExBVEVfU0ZJTkFFKGFyZ3MsIG1lbWJlcl9tYWNybykgXAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+IFwKLSAgICAgICAgc3RydWN0IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fTkFNRShhcmdzKSBcCi0gICAgICAgICAgICA6IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpPCBVID4geyBcCi0gICAgICAgIH07IFwKLSAgICAgIC8qKi8KLSAKLS8vIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfVEVNUExBVEVfU0ZJTkFFIGV4cGFuZHMgdG8gdGhlIGZ1bGwKLS8vIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0ZW1wbGF0ZS1iYXNlZCBtZXRhZnVuY3Rpb24uIENvbXBpbGUgd2l0aCAtRQotLy8gdG8gc2VlIHRoZSBwcmVwcm9jZXNzb3Igb3V0cHV0IGZvciB0aGlzIG1hY3JvLgotLy8KLS8vIE5vdGUgdGhhdCBpZiBORE5CT09TVF9NUExfSEFTX1hYWF9ORUVEU19OQU1FU1BBQ0VfTEVWRUxfU1VCU1RJVFVURSBpcwotLy8gZGVmaW5lZCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9TVUJTVElUVVRFX1dJVEhfVEVNUExBVEVfU0ZJTkFFIG5lZWRzCi0vLyB0byBiZSBleHBhbmRlZCBhdCBuYW1lc3BhY2UgbGV2ZWwgYmVmb3JlCi0vLyBORE5CT09TVF9NUExfSEFTX01FTUJFUl9XSVRIX1RFTVBMQVRFX1NGSU5BRSBjYW4gYmUgdXNlZC4KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICBhcmdzLCBzdWJzdGl0dXRlX21hY3JvLCBtZW1iZXJfbWFjcm8gXAotICAgICAgICAgICAgICkgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9TVUJTVElUVVRFX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICBhcmdzLCBzdWJzdGl0dXRlX21hY3JvIFwKLSAgICAgICAgKSBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lNUExFTUVOVEFUSU9OKCBcCi0gICAgICAgICAgICBhcmdzIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RfV0lUSF9URU1QTEFURV9TRklOQUUgXAotICAgICAgICAgICwgc3Vic3RpdHV0ZV9tYWNybyBcCi0gICAgICAgICAgLCBtZW1iZXJfbWFjcm8gXAotICAgICAgICApIFwKLSAgICAgIC8qKi8KLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX1RFTVBMQVRFX1NGSU5BRQotCi0vLyBOb3RlOiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0aGUgcGFyYW1ldGVyIGFuZCBhY2Nlc3MgbWFjcm9zCi0vLyBhcmUgbm8gbG9uZ2VyIGV4cGFuZGVkLgotIyAgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDE0MDApCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVEVNUExBVEVfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9XSVRIX0ZVTkNUSU9OX1NGSU5BRSggXAotICAgICAgICAgICAgKCA0LCAoIHRyYWl0LCBuYW1lLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCBkZWZhdWx0XyApICkgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVNUExBVEVfU1VCU1RJVFVURV9QQVJBTUVURVIgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVNUExBVEVfQUNDRVNTIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0jICAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RFTVBMQVRFX05BTUVEX0RFRih0cmFpdCwgbmFtZSwgZGVmYXVsdF8pIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICggNCwgKCB0cmFpdCwgbmFtZSwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgZGVmYXVsdF8gKSApIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1RFTVBMQVRFX1NVQlNUSVRVVEVfUEFSQU1FVEVSIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1RFTVBMQVRFX0FDQ0VTUyBcCi0gICAgICAgICkgXAotICAgICAgLyoqLwotIyAgIGVuZGlmCi0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWF9URU1QTEFURQotCi0vLyBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RFTVBMQVRFX05BTUVEX0RFRih0cmFpdCwgbmFtZSwgZGVmYXVsdF8pIFwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUIFwKLSAgICAgICAgICAgICAgLCB0eXBlbmFtZSBmYWxsYmFja18gPSBuZG5ib29zdDo6bXBsOjpib29sXzwgZGVmYXVsdF8gPiA+IFwKLSAgICAgIHN0cnVjdCB0cmFpdCB7IFwKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxsYmFja186OnZhbHVlKTsgXAotICAgICAgICAgIHR5cGVkZWYgZmFsbGJhY2tfIHR5cGU7IFwKLSAgICAgIH07IFwKLSAgICAvKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFhfVEVNUExBVEUKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9URU1QTEFURV9ERUYobmFtZSkgXAotICAgICAgTkROQk9PU1RfTVBMX0hBU19YWFhfVEVNUExBVEVfTkFNRURfREVGKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGhhc18sIG5hbWUpLCBuYW1lLCBmYWxzZSBcCi0gICAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSEFTX1hYWF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU5MjA3Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pZGVudGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lERU5USVRZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSURFTlRJVFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpZGVudGl0eS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBpZGVudGl0eQotewotICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgaWRlbnRpdHksIChUKSkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBtYWtlX2lkZW50aXR5Ci17Ci0gICAgdHlwZWRlZiBpZGVudGl0eTxUPiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgbWFrZV9pZGVudGl0eSwgKFQpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX05PX0VUSSgxLCBpZGVudGl0eSkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19OT19FVEkoMSwgbWFrZV9pZGVudGl0eSkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JREVOVElUWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc0YmU1Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lGX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaWYuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9zdGF0aWNfY2FzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQwotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGlmX2MKLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBpZl9jPGZhbHNlLFQxLFQyPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLX07Ci0KLS8vIGFndXJ0LCAwNS9zZXAvMDQ6IG5vbmRlc2NyaXB0aXZlIHBhcmFtZXRlciBuYW1lcyBmb3IgdGhlIHNha2Ugb2YgRGlnaXRhbE1hcnMKLS8vIChhbmQgcG9zc2libHkgTVdDVyA8IDguMCk7IHNlZSBodHRwOi8vYXJ0aWNsZS5nbWFuZS5vcmcvZ21hbmUuY29tcC5saWIuYm9vc3QuZGV2ZWwvMTA4OTU5Ci10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMykKLSAgICA+Ci1zdHJ1Y3QgaWZfCi17Ci0gcHJpdmF0ZToKLSAgICAvLyBhZ3VydCwgMDIvamFuLzAzOiB0d28tc3RlcCAndHlwZScgZGVmaW5pdGlvbiBmb3IgdGhlIHNha2Ugb2YgYUNDIAotICAgIHR5cGVkZWYgaWZfYzwKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQkNDX0lOVEVHUkFMX0NPTlNUQU5UUykKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDEpOjp2YWx1ZQotI2Vsc2UKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKGJvb2wsIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChUMSk6OnZhbHVlKQotI2VuZGlmCi0gICAgICAgICwgVDIKLSAgICAgICAgLCBUMwotICAgICAgICA+IGFsbW9zdF90eXBlXzsKLSAKLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhbG1vc3RfdHlwZV86OnR5cGUgdHlwZTsKLSAgICAKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsaWZfLChUMSxUMixUMykpCi19OwotCi0jZWxzZQotCi0vLyBubyBwYXJ0aWFsIGNsYXNzIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDID4KLXN0cnVjdCBpZl9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpZl9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsgCi0gICAgICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDXwotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGlmX2MKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6aWZfaW1wbDwgQ18gPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VDEsVDI+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLyAoYWxtb3N0KSBjb3B5ICYgcGFzdGUgaW4gb3JkZXIgdG8gc2F2ZSBvbmUgbW9yZSAKLS8vIHJlY3Vyc2l2ZWx5IG5lc3RlZCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIHRvIHVzZXIKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShDXykKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpZl8KLXsKLSAgICBlbnVtIHsgbXN2Y193a25kXyA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKENfKTo6dmFsdWUgfTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjppZl9pbXBsPCBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKGJvb2wsIG1zdmNfd2tuZF8pID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQxLFQyPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLGlmXywoQ18sVDEsVDIpKQotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGlmXykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2luc2VydGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2luc2VydGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JjZWJhMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnNlcnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lOU0VSVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnNlcnRlci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICAsIHR5cGVuYW1lIE9wZXJhdGlvbgotICAgID4KLXN0cnVjdCBpbnNlcnRlcgotewotICAgIHR5cGVkZWYgU2VxdWVuY2UgICAgc3RhdGU7Ci0gICAgdHlwZWRlZiBPcGVyYXRpb24gICBvcGVyYXRpb247Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lOU0VSVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ZjY5OTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSU5UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW50LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludF9md2QuaHBwPgotCi0jZGVmaW5lIEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUgaW50Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW50ZWdyYWxfd3JhcHBlci5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSU5UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIzMDI0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSU5UX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lOVF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPiBzdHJ1Y3QgaW50XzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTChpbnRfKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lOVF9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzlmYTkxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSU5URUdSQUxfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA2Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGludGVncmFsX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfY19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8PSA1MzgwMCkKLS8vIHRoZSB0eXBlIG9mIG5vbi10eXBlIHRlbXBsYXRlIGFyZ3VtZW50cyBtYXkgbm90IGRlcGVuZCBvbiB0ZW1wbGF0ZSBhcmd1bWVudHMKLSMgICBkZWZpbmUgQVVYX1dSQVBQRVJfUEFSQU1TKE4pIHR5cGVuYW1lIFQsIGxvbmcgTgotI2Vsc2UKLSMgICBkZWZpbmUgQVVYX1dSQVBQRVJfUEFSQU1TKE4pIHR5cGVuYW1lIFQsIFQgTgotI2VuZGlmCi0KLSNkZWZpbmUgQVVYX1dSQVBQRVJfTkFNRSBpbnRlZ3JhbF9jCi0jZGVmaW5lIEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUgVAotI2RlZmluZSBBVVhfV1JBUFBFUl9JTlNUKHZhbHVlKSBBVVhfV1JBUFBFUl9OQU1FPCBULCB2YWx1ZSA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW50ZWdyYWxfd3JhcHBlci5ocHA+Ci0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTUxKQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotLy8gJ2Jvb2wnIGNvbnN0YW50IGRvZXNuJ3QgaGF2ZSAnbmV4dCcvJ3ByaW9yJyBtZW1iZXJzCi10ZW1wbGF0ZTwgYm9vbCBDID4KLXN0cnVjdCBpbnRlZ3JhbF9jPGJvb2wsIEM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gQyk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jX3RhZyB0YWc7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBib29sIHZhbHVlX3R5cGU7Ci0gICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnZhbHVlOyB9Ci19OwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlYWVjNjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfY19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW50ZWdyYWxfY19md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8PSA1MzgwMCkKLS8vIHRoZSB0eXBlIG9mIG5vbi10eXBlIHRlbXBsYXRlIGFyZ3VtZW50cyBtYXkgbm90IGRlcGVuZCBvbiB0ZW1wbGF0ZSBhcmd1bWVudHMKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBsb25nIE4gPiBzdHJ1Y3QgaW50ZWdyYWxfYzsKLSNlbHNlCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBOID4gc3RydWN0IGludGVncmFsX2M7Ci0jZW5kaWYKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTChpbnRlZ3JhbF9jKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfY190YWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfY190YWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWQyYWE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2NfdGFnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSU5URUdSQUxfQ19UQUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX1RBR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRlZ3JhbF9jX3RhZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi1zdHJ1Y3QgaW50ZWdyYWxfY190YWcgeyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOyB9OwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTChpbnRlZ3JhbF9jX3RhZykKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX1RBR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lzX3BsYWNlaG9sZGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lzX3BsYWNlaG9sZGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNmOTY1My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pc19wbGFjZWhvbGRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lTX1BMQUNFSE9MREVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSVNfUExBQ0VIT0xERVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpc19wbGFjZWhvbGRlci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcmdfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19wbGFjZWhvbGRlcgotICAgIDogYm9vbF88ZmFsc2U+Ci17Ci19OwotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+Ci1zdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8IGFyZzxOPiA+Ci0gICAgOiBib29sXzx0cnVlPgotewotfTsKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLWF1eDo6bm9fdGFnIGlzX3BsYWNlaG9sZGVyX2hlbHBlciguLi4pOwotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+Ci1hdXg6Onllc190YWcgaXNfcGxhY2Vob2xkZXJfaGVscGVyKGF1eDo6dHlwZV93cmFwcGVyPCBhcmc8Tj4gPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3BsYWNlaG9sZGVyCi17Ci0gICAgc3RhdGljIGF1eDo6dHlwZV93cmFwcGVyPFQ+KiBnZXQoKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICBzaXplb2YoYXV4Ojppc19wbGFjZWhvbGRlcl9oZWxwZXIoZ2V0KCkpKSA9PSBzaXplb2YoYXV4Ojp5ZXNfdGFnKQotICAgICAgICApOwotICAgIAotICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lTX1BMQUNFSE9MREVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXNfc2VxdWVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXNfc2VxdWVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDExMWJmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lzX3NlcXVlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lTX1NFUVVFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSVNfU0VRVUVOQ0VfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpc19zZXF1ZW5jZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWdfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfaXNfY2xhc3MuaHBwPgotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotLy8gYWd1cnQsIDExL2p1bi8wMzogCi0vLyBNU1ZDIDYuNS83LjAgZmFpbHMgaWYgJ2hhc19iZWdpbicgaXMgaW5zdGFudGlhdGVkIG9uIGEgY2xhc3MgdHlwZSB0aGF0IGhhcyBhCi0vLyAnYmVnaW4nIG1lbWJlciB0aGF0IGRvZXNuJ3QgbmFtZSBhIHR5cGU7IGUuZy4gJ2hhc19iZWdpbjwgc3RkOjp2ZWN0b3I8aW50PiA+JwotLy8gd291bGQgZmFpbDsgcmVxdWlyaW5nICdUJyB0byBoYXZlIF9ib3RoXyAndGFnJyBhbmQgJ2JlZ2luJyBtZW1iZXJzIHdvcmthcm91bmRzCi0vLyB0aGUgaXNzdWUgZm9yIG1vc3QgcmVhbC13b3JsZCBjYXNlcwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfc2VxdWVuY2VfaW1wbAotICAgIDogYW5kXzwKLSAgICAgICAgICBpZGVudGl0eTwgYXV4OjpoYXNfdGFnPFQ+ID4KLSAgICAgICAgLCBpZGVudGl0eTwgYXV4OjpoYXNfYmVnaW48VD4gPgotICAgICAgICA+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLSAgICAgICAgCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgaXNfc2VxdWVuY2UKLSAgICA6IGlmXzwKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICBhdXg6Om1zdmNfaXNfY2xhc3M8VD4gCi0jZWxzZQotICAgICAgICAgIG5kbmJvb3N0Ojppc19jbGFzczxUPiAKLSNlbmRpZgotICAgICAgICAsIGF1eDo6aXNfc2VxdWVuY2VfaW1wbDxUPgotICAgICAgICAsIGJvb2xfPGZhbHNlPgotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLCBpc19zZXF1ZW5jZSwgKFQpKQotfTsKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFgpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBpc19zZXF1ZW5jZQotICAgIDogYm9vbF88ZmFsc2U+Ci17Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgaXNfc2VxdWVuY2UKLSAgICA6IG5vdF88IGlzX3NhbWU8IHR5cGVuYW1lIGJlZ2luPFQ+Ojp0eXBlLCB2b2lkXyA+ID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsIGlzX3NlcXVlbmNlLCAoVCkpCi19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVNWQwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykKLXRlbXBsYXRlPD4gc3RydWN0IGlzX3NlcXVlbmNlPGludD4KLSAgICA6IGJvb2xfPGZhbHNlPgotewotfTsKLSNlbmRpZgotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTk9fRVRJKDEsIGlzX3NlcXVlbmNlKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lTX1NFUVVFTkNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcl9mb2xkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJfZm9sZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NDgwYjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcl9mb2xkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSVRFUl9GT0xEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSVRFUl9GT0xEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlcl9mb2xkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL08xX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sYW1iZGEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFN0YXRlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShGb3J3YXJkT3ApCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjppdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6Ok8xX3NpemU8U2VxdWVuY2U+Ojp2YWx1ZQotICAgICAgICAsIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGxhbWJkYTxGb3J3YXJkT3A+Ojp0eXBlCi0gICAgICAgID46OnN0YXRlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsaXRlcl9mb2xkLChTZXF1ZW5jZSxTdGF0ZSxGb3J3YXJkT3ApKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGl0ZXJfZm9sZCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JVEVSX0ZPTERfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyX2ZvbGRfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcl9mb2xkX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRmODc2NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyX2ZvbGRfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSVRFUl9GT0xEX0lGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSVRFUl9GT0xEX0lGX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAzLTIwMDQKLS8vIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlcl9mb2xkX2lmLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvZ2ljYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbHdheXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wYWlyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkaWNhdGUsIHR5cGVuYW1lIExhc3RJdGVyYXRvciA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3ByZWQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU3RhdGUsIHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykKLSAgICAgICAgOiBhbmRfPAotICAgICAgICAgICAgICBub3RfPCBpc19zYW1lPEl0ZXJhdG9yLExhc3RJdGVyYXRvcj4gPgotICAgICAgICAgICAgLCBhcHBseTE8UHJlZGljYXRlLEl0ZXJhdG9yPgotICAgICAgICAgICAgPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIGFuZF88Ci0gICAgICAgICAgICAgIG5vdF88IGlzX3NhbWU8SXRlcmF0b3IsTGFzdEl0ZXJhdG9yPiA+Ci0gICAgICAgICAgICAsIGFwcGx5MTxQcmVkaWNhdGUsSXRlcmF0b3I+Ci0gICAgICAgICAgICA+IHR5cGU7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU3RhdGUpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEZvcndhcmRPcCkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRm9yd2FyZFByZWRpY2F0ZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oQmFja3dhcmRPcCkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oQmFja3dhcmRQcmVkaWNhdGUpCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZgotewotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBiZWdpbjxTZXF1ZW5jZT46OnR5cGUgZmlyc3RfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZW5kPFNlcXVlbmNlPjo6dHlwZSBsYXN0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICBpc19uYTxCYWNrd2FyZFByZWRpY2F0ZT4KLSAgICAgICAgLCBpZl88IGlzX25hPEJhY2t3YXJkT3A+LCBhbHdheXM8ZmFsc2VfPiwgYWx3YXlzPHRydWVfPiA+Ci0gICAgICAgICwgaWRlbnRpdHk8QmFja3dhcmRQcmVkaWNhdGU+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfcHJlZF87Ci0KLS8vIGN3cHJvOCBkb2Vzbid0IGxpa2UgJ2N1dC1vZmYnIHR5cGUgaGVyZSAodXNlIHR5cGVkZWYgaW5zdGVhZCkKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpCi0gICAgc3RydWN0IHJlc3VsdF8gOgotI2Vsc2UKLSAgICB0eXBlZGVmCi0jZW5kaWYKLSAgICAgICAgYXV4OjppdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICBmaXJzdF8KLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAsIHByb3RlY3Q8IGF1eDo6aXRlcl9mb2xkX2lmX3ByZWQ8IEZvcndhcmRQcmVkaWNhdGUsbGFzdF8gPiA+Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIGJhY2t3YXJkX3ByZWRfCi0gICAgICAgID4KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpCi0gICAgeyB9OwotI2Vsc2UKLSAgICByZXN1bHRfOwotI2VuZGlmCi0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgcGFpcjwKLSAgICAgICAgICB0eXBlbmFtZSByZXN1bHRfOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIHJlc3VsdF86Oml0ZXJhdG9yCi0gICAgICAgID4gdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGl0ZXJfZm9sZF9pZgotICAgICAgICAsIChTZXF1ZW5jZSxTdGF0ZSxGb3J3YXJkT3AsRm9yd2FyZFByZWRpY2F0ZSxCYWNrd2FyZE9wLEJhY2t3YXJkUHJlZGljYXRlKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNiwgaXRlcl9mb2xkX2lmKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lURVJfRk9MRF9JRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3JhbmdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3JhbmdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M4Y2M4OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyYXRvcl9yYW5nZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lURVJBVE9SX1JBTkdFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSVRFUkFUT1JfUkFOR0VfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVyYXRvcl9yYW5nZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXN0cnVjdCBpdGVyYXRvcl9yYW5nZV90YWc7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShGaXJzdCkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTGFzdCkKLSAgICA+Ci1zdHJ1Y3QgaXRlcmF0b3JfcmFuZ2UKLXsKLSAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlX3RhZyB0YWc7Ci0gICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZSB0eXBlOwotICAgIHR5cGVkZWYgRmlyc3QgYmVnaW47Ci0gICAgdHlwZWRlZiBMYXN0IGVuZDsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixpdGVyYXRvcl9yYW5nZSwoRmlyc3QsTGFzdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaXRlcmF0b3JfcmFuZ2UpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSVRFUkFUT1JfUkFOR0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyYXRvcl90YWdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3RhZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODZhYjY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3RhZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JVEVSQVRPUl9UQUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JVEVSQVRPUl9UQUdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVyYXRvcl90YWdzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1zdHJ1Y3QgZm9yd2FyZF9pdGVyYXRvcl90YWcgICAgICAgOiBpbnRfPDA+IHsgdHlwZWRlZiBmb3J3YXJkX2l0ZXJhdG9yX3RhZyB0eXBlOyB9Owotc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIDogaW50XzwxPiB7IHR5cGVkZWYgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgdHlwZTsgfTsKLXN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyA6IGludF88Mj4geyB0eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIHR5cGU7IH07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSVRFUkFUT1JfVEFHX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2MTc1NDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTEFNQkRBX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTEFNQkRBX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGFtYmRhLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iaW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHA+Ci0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fSU1QTElDSVRfTUVUQUZVTkNUSU9OUwotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTEFNQkRBX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGFtYmRhX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9sYW1iZGFfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZiOTRkOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sYW1iZGFfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTEFNQkRBX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xBTUJEQV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsYW1iZGFfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfYXJpdHlfcGFyYW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5X2Z3ZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBUID0gbmEKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfQVJJVFlfUEFSQU0oCi0gICAgICAgICAgdHlwZW5hbWUgQXJpdHkgPSBpbnRfPCBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp2YWx1ZSA+Ci0gICAgICAgICkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhOwotCi19fQotCi0jZWxzZSAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIFQgPSBuYQotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICAsIHR5cGVuYW1lIFByb3RlY3QgPSB0cnVlXwotICAgID4gCi1zdHJ1Y3QgbGFtYmRhOwotCi19fQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MQU1CREFfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ0MzFmNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTEVTU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xFU1NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsZXNzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIGxlc3MKLSNkZWZpbmUgQVVYNzc4MDc2X09QX1RPS0VOIDwKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MRVNTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc1OGEzZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTEVTU19FUVVBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xFU1NfRVFVQUxfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsZXNzX2VxdWFsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIGxlc3NfZXF1YWwKLSNkZWZpbmUgQVVYNzc4MDc2X09QX1RPS0VOIDw9Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29tcGFyaXNvbl9vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTEVTU19FUVVBTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzk2NTBiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJTUlUU19BUklUWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJTUlUU19BUklUWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFyaXR5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSA1Ci0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSU1JVFNfQVJJVFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMzdlYTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSU1JVFNfTElTVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJTUlUU19MSVNUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9MSU1JVF9MSVNUX1NJWkUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9MSU1JVF9MSVNUX1NJWkUgMjAKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJTUlUU19MSVNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL3Vucm9sbGluZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvdW5yb2xsaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRmNTUwMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvdW5yb2xsaW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElNSVRTX1VOUk9MTElOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJTUlUU19VTlJPTExJTkdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB1bnJvbGxpbmcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HIDQKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJTUlUU19VTlJPTExJTkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjdiMjU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSU1JVFNfVkVDVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElNSVRTX1ZFQ1RPUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3Rvci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0xJTUlUX1ZFQ1RPUl9TSVpFIDIwCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSU1JVFNfVkVDVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM0YzgyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2xpc3QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zdHJpbmdpemUuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTkVFRFNfVE9LRU5fUEFTVElOR19PUF9GT1JfVE9LRU5TX0pVWFRBUE9TSU5HKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfTElTVF9IRUFERVIgXAotICAgIE5ETkJPT1NUX1BQX0NBVChsaXN0LE5ETkJPT1NUX01QTF9MSU1JVF9MSVNUX1NJWkUpLmhwcCBcCi0gICAgLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0xJU1RfSEVBREVSIFwKLSAgICBORE5CT09TVF9QUF9DQVQobGlzdCxORE5CT09TVF9NUExfTElNSVRfTElTVF9TSVpFKSMjLmhwcCBcCi0gICAgLyoqLwotI2VuZGlmCi0KLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvbGlzdC9BVVg3NzgwNzZfTElTVF9IRUFERVIpCi0jICAgdW5kZWYgQVVYNzc4MDc2X0xJU1RfSEVBREVSCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3QuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9saXN0LmhwcD4KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSBsaXN0Ci0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBORE5CT09TVF9NUExfTElNSVRfTElTVF9TSVpFCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vc2VxdWVuY2Vfd3JhcHBlci5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vTzFfc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vTzFfc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwMWE0MDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL08xX3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9PMV9TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfTzFfU0laRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IE8xX3NpemUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvTzFfc2l6ZV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBMaXN0ID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogTGlzdDo6c2l6ZQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9PMV9TSVpFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2JlZ2luX2VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vYmVnaW5fZW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgxZWNlOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vYmVnaW5fZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfQkVHSU5fRU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfQkVHSU5fRU5EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmVnaW5fZW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZW0uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJlZ2luX2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBMaXN0ID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGxfaXRlcjx0eXBlbmFtZSBMaXN0Ojp0eXBlPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW5kX2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsX2l0ZXI8bF9lbmQ+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfQkVHSU5fRU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2NsZWFyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9jbGVhci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NmNhNTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2NsZWFyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfQ0xFQVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9DTEVBUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNsZWFyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbF9lbmQgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9DTEVBUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9lbXB0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vZW1wdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGQ5ZjMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9lbXB0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0VNUFRZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfRU1QVFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBlbXB0eS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9lbXB0eV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IG5vdF88dHlwZW5hbWUgTGlzdDo6c2l6ZT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfRU1QVFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vZnJvbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2Zyb250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVlMWRkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vZnJvbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9GUk9OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0ZST05UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTGlzdDo6aXRlbSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX0ZST05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZWVhOGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA2Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGluY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OIQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3N0cmluZ2l6ZS5ocHA+Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0hFQURFUiBcCi0gICAgYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgXAotLyoqLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNzAwKSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lOQ0xVREVfU1RSSU5HIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvbGlzdC9BVVg3NzgwNzZfSEVBREVSKQotIyAgIGluY2x1ZGUgQVVYNzc4MDc2X0lOQ0xVREVfU1RSSU5HCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lOQ0xVREVfU1RSSU5HCi0jZWxzZQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfU1RSSU5HSVpFKG5kbmJvb3N0L21wbC9saXN0L0FVWDc3ODA3Nl9IRUFERVIpCi0jZW5kaWYKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9IRUFERVIKLQotI3VuZGVmIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MzUyOWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9OT0RFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfTk9ERV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZW0uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNpemUKLSAgICAsIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIE5leHQKLSAgICA+Ci1zdHJ1Y3QgbF9pdGVtCi17Ci0vLyBhZ3VydCwgMTcvanVsLzAzOiB0byBmYWNpbGl0YXRlIHRoZSBkZWZpY2llbnQgJ2lzX3NlcXVlbmNlJyBpbXBsZW1lbnRhdGlvbiAKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgdHlwZWRlZiBpbnQgYmVnaW47Ci0jZW5kaWYKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF90YWcgdGFnOwotICAgIHR5cGVkZWYgbF9pdGVtIHR5cGU7Ci0KLSAgICB0eXBlZGVmIFNpemUgc2l6ZTsKLSAgICB0eXBlZGVmIFQgaXRlbTsKLSAgICB0eXBlZGVmIE5leHQgbmV4dDsKLX07Ci0KLXN0cnVjdCBsX2VuZAotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICB0eXBlZGVmIGludCBiZWdpbjsKLSNlbmRpZgotICAgIHR5cGVkZWYgYXV4OjpsaXN0X3RhZyB0YWc7Ci0gICAgdHlwZWRlZiBsX2VuZCB0eXBlOwotICAgIHR5cGVkZWYgbG9uZ188MD4gc2l6ZTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfTk9ERV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTRhMjdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0lURVJBVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfSVRFUkFUT1JfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVyYXRvci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pdGVyYXRvcl90YWdzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2RlcmVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBOb2RlID4KLXN0cnVjdCBsX2l0ZXIKLXsKLSAgICB0eXBlZGVmIGF1eDo6bF9pdGVyX3RhZyB0YWc7Ci0gICAgdHlwZWRlZiBmb3J3YXJkX2l0ZXJhdG9yX3RhZyBjYXRlZ29yeTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBOb2RlID4KLXN0cnVjdCBkZXJlZjwgbF9pdGVyPE5vZGU+ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6Oml0ZW0gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBOb2RlID4KLXN0cnVjdCBuZXh0PCBsX2l0ZXI8Tm9kZT4gPgotewotICAgIHR5cGVkZWYgbF9pdGVyPCB0eXBlbmFtZSBOb2RlOjpuZXh0ID4gdHlwZTsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotdGVtcGxhdGU8IHR5cGVuYW1lIE5vZGUgPgotc3RydWN0IGxfaXRlcgotewotICAgIHR5cGVkZWYgYXV4OjpsX2l0ZXJfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGZvcndhcmRfaXRlcmF0b3JfdGFnIGNhdGVnb3J5OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6aXRlbSB0eXBlOwotICAgIHR5cGVkZWYgbF9pdGVyPCB0eXBlbmFtZSBtcGw6Om5leHQ8Tm9kZT46OnR5cGUgPiBuZXh0OwotfTsKLQotI2VuZGlmCi0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbF9pdGVyPGxfZW5kPgotewotICAgIHR5cGVkZWYgYXV4OjpsX2l0ZXJfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGZvcndhcmRfaXRlcmF0b3JfdGFnIGNhdGVnb3J5OwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgICB0eXBlZGVmIG5hIHR5cGU7Ci0gICAgdHlwZWRlZiBsX2l0ZXIgbmV4dDsKLSNlbmRpZgotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgbF9pdGVyKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX0lURVJBVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1YzY0MmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMC0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnVtYmVyZWQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jZGVmaW5lIGkgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLSNpZiBpID09IDEKLQotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhpLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBsaXN0MQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsX2VuZAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MSB0eXBlOwotfTsKLQotI2Vsc2UKLQotIyAgIGRlZmluZSBNUExfQVVYX0xJU1RfVEFJTChsaXN0LCBpLCBUKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKGxpc3QsTkROQk9PU1RfUFBfREVDKGkpKTwgXAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhpLCBUKSBcCi0gICAgPiBcCi0gICAgLyoqLwotICAgIAotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhpLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQobGlzdCxpKQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPGk+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBNUExfQVVYX0xJU1RfVEFJTChsaXN0LGksVCkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGxpc3QsaSkgdHlwZTsKLX07Ci0KLSMgICB1bmRlZiBNUExfQVVYX0xJU1RfVEFJTAotCi0jZW5kaWYgLy8gaSA9PSAxCi0KLSN1bmRlZiBpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM4ZmQ2My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG51bWJlcmVkX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jZGVmaW5lIGkgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLSNpZiBpID09IDEKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhpLCBUIEMpCi0gICAgPgotc3RydWN0IGxpc3QxX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxPgotICAgICAgICAsIGludGVncmFsX2M8VCxDMD4KLSAgICAgICAgLCBsX2VuZAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE1QTF9BVVhfTElTVF9DX1RBSUwobGlzdCwgaSwgQykgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQobGlzdCxORE5CT09TVF9QUF9ERUMoaSkpLF9jKTxULCBcCi0gICAgICBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKGksIEMpIFwKLSAgICA+IFwKLSAgICAvKiovCi0gICAgCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksIFQgQykKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChsaXN0LGkpLF9jKQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPGk+Ci0gICAgICAgICwgaW50ZWdyYWxfYzxULEMwPgotICAgICAgICAsIE1QTF9BVVhfTElTVF9DX1RBSUwobGlzdCxpLEMpCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQobGlzdCxpKSxfYykgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLSMgICB1bmRlZiBNUExfQVVYX0xJU1RfQ19UQUlMCi0KLSNlbmRpZiAvLyBpID09IDEKLQotI3VuZGVmIGkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3BvcF9mcm9udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcG9wX2Zyb250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhkNzQ0NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcG9wX2Zyb250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfUE9QX0ZST05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfUE9QX0ZST05UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcG9wX2Zyb250LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BvcF9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBMaXN0ID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxMaXN0Pjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BPUF9GUk9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDEwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDEwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU4ZWRiMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QxMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0MTAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDEKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbF9lbmQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGxpc3QyCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mj4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxPFQxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGxpc3QzCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mz4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyPCBUMSxUMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGxpc3Q0Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188ND4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QzPCBUMSxUMixUMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBsaXN0NQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDU+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NDwgVDEsVDIsVDMsVDQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGxpc3Q2Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Nj4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q1PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGxpc3Q3Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Nz4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q2PCBUMSxUMixUMyxUNCxUNSxUNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBsaXN0OAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDg+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0NzwgVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0OCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGxpc3Q5Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188OT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q4PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGxpc3QxMAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDEwPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDk8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QxMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZjMDU4Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QxMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3QxMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDFfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbF9lbmQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxCi0gICAgPgotc3RydWN0IGxpc3QyX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxX2M8IFQsQzEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0Ml9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDNfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDJfYzwgVCxDMSxDMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMwotICAgID4KLXN0cnVjdCBsaXN0NF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188ND4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0M19jPCBULEMxLEMyLEMzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0Ci0gICAgPgotc3RydWN0IGxpc3Q1X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw1PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0X2M8IFQsQzEsQzIsQzMsQzQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDZfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDY+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDVfYzwgVCxDMSxDMixDMyxDNCxDNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNgotICAgID4KLXN0cnVjdCBsaXN0N19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Nz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0Nl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3Ci0gICAgPgotc3RydWN0IGxpc3Q4X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw4PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q3X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0OF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDlfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDk+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDhfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOQotICAgID4KLXN0cnVjdCBsaXN0MTBfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDEwPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q5X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDIwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDIwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI2NDI5NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QyMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0MjAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBsaXN0MTEKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxMT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxMDwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDExIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBsaXN0MTIKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxMj4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxMTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBsaXN0MTMKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxMz4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxMjwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBsaXN0MTQKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxND4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxMzwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBsaXN0MTUKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxNT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxNDwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBsaXN0MTYKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxNj4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxNTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBsaXN0MTcKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxNz4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxNjwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBsaXN0MTgKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxOD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxNzwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBsaXN0MTkKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxOT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxODwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0MjAKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyMD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QxOTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDIwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MjBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QyMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMzNGRlZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QyMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3QyMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgPgotc3RydWN0IGxpc3QxMV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTE+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDEwX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDExX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExCi0gICAgPgotc3RydWN0IGxpc3QxMl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTI+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDExX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDEzX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxMz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTJfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzCi0gICAgPgotc3RydWN0IGxpc3QxNF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTQ+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDEzX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0Ci0gICAgPgotc3RydWN0IGxpc3QxNV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTU+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDE0X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE2X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxNj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTVfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2Ci0gICAgPgotc3RydWN0IGxpc3QxN19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTc+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDE2X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3Ci0gICAgPgotc3RydWN0IGxpc3QxOF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTg+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDE3X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE5X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxOT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MThfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5Ci0gICAgPgotc3RydWN0IGxpc3QyMF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDE5X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDIwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QzMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QzMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZGNhYzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBsaXN0MjEKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyMT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyMDwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMQotICAgID4KLXN0cnVjdCBsaXN0MjIKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyMj4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyMTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMgotICAgID4KLXN0cnVjdCBsaXN0MjMKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyMz4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyMjwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDIzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMwotICAgID4KLXN0cnVjdCBsaXN0MjQKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyND4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyMzwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgID4KLXN0cnVjdCBsaXN0MjUKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyNT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyNDwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNQotICAgID4KLXN0cnVjdCBsaXN0MjYKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyNj4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyNTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNgotICAgID4KLXN0cnVjdCBsaXN0MjcKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyNz4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyNjwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNwotICAgID4KLXN0cnVjdCBsaXN0MjgKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyOD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyNzwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOAotICAgID4KLXN0cnVjdCBsaXN0MjkKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyOT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyODwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgID4KLXN0cnVjdCBsaXN0MzAKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzMD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3QyOTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzMCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDMwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MzBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzOTgxNTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MzBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0MzBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIxX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyMT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MjBfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDIxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMQotICAgID4KLXN0cnVjdCBsaXN0MjJfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIyPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyMV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDIyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIzX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyMz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MjJfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI0X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyND4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MjNfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNAotICAgID4KLXN0cnVjdCBsaXN0MjVfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI1PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyNF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI2X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyNj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MjVfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI3X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyNz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MjZfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNwotICAgID4KLXN0cnVjdCBsaXN0MjhfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI4PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyN19jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDI5X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyOT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MjhfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMwX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzMD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MjlfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q0MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q0MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMGFlOTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NDAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwCi0gICAgPgotc3RydWN0IGxpc3QzMQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDMxPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDMwPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxCi0gICAgPgotc3RydWN0IGxpc3QzMgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDMyPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDMxPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyCi0gICAgPgotc3RydWN0IGxpc3QzMwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDMzPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDMyPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzCi0gICAgPgotc3RydWN0IGxpc3QzNAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM0PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDMzPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgPgotc3RydWN0IGxpc3QzNQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM1PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDM0PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1Ci0gICAgPgotc3RydWN0IGxpc3QzNgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM2PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDM1PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2Ci0gICAgPgotc3RydWN0IGxpc3QzNwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM3PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDM2PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3Ci0gICAgPgotc3RydWN0IGxpc3QzOAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM4PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDM3PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4Ci0gICAgPgotc3RydWN0IGxpc3QzOQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM5PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDM4PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgPgotc3RydWN0IGxpc3Q0MAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQwPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDM5PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0MCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDQwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NDBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4ZWQ2NDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NDBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0NDBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgPgotc3RydWN0IGxpc3QzMV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzE+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDMwX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMQotICAgID4KLXN0cnVjdCBsaXN0MzJfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDMyPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzMV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMgotICAgID4KLXN0cnVjdCBsaXN0MzNfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDMzPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzMl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzCi0gICAgPgotc3RydWN0IGxpc3QzNF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzQ+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDMzX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNAotICAgID4KLXN0cnVjdCBsaXN0MzVfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM1PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzNF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNQotICAgID4KLXN0cnVjdCBsaXN0MzZfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM2PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzNV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2Ci0gICAgPgotc3RydWN0IGxpc3QzN19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzc+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDM2X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNwotICAgID4KLXN0cnVjdCBsaXN0MzhfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM4PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzN19jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOAotICAgID4KLXN0cnVjdCBsaXN0MzlfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDM5PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzOF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5Ci0gICAgPgotc3RydWN0IGxpc3Q0MF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDM5X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDUwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDUwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI4ZmRhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q1MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0NTAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MAotICAgID4KLXN0cnVjdCBsaXN0NDEKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0MT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0MDwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MQotICAgID4KLXN0cnVjdCBsaXN0NDIKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0Mj4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0MTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0MiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MgotICAgID4KLXN0cnVjdCBsaXN0NDMKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0Mz4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0MjwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MwotICAgID4KLXN0cnVjdCBsaXN0NDQKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0ND4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0MzwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgID4KLXN0cnVjdCBsaXN0NDUKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0NT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0NDwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0NSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NQotICAgID4KLXN0cnVjdCBsaXN0NDYKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0Nj4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0NTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCxUNDUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NgotICAgID4KLXN0cnVjdCBsaXN0NDcKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0Nz4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0NjwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCxUNDUsVDQ2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NwotICAgID4KLXN0cnVjdCBsaXN0NDgKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0OD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0NzwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCxUNDUsVDQ2LFQ0NyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0OCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OAotICAgID4KLXN0cnVjdCBsaXN0NDkKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0OT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0ODwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCxUNDUsVDQ2LFQ0NyxUNDggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OQotICAgID4KLXN0cnVjdCBsaXN0NTAKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw1MD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0OTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCxUNDUsVDQ2LFQ0NyxUNDgsVDQ5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDUwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q1MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBmNjE5ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q1MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3Q1MF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgPgotc3RydWN0IGxpc3Q0MV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDE+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDQwX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxCi0gICAgPgotc3RydWN0IGxpc3Q0Ml9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDI+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDQxX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0Ml9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQzX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0Mz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDJfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0M19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzCi0gICAgPgotc3RydWN0IGxpc3Q0NF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDQ+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDQzX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0Ci0gICAgPgotc3RydWN0IGxpc3Q0NV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDU+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDQ0X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0NV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ2X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0Nj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDVfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0Nl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2Ci0gICAgPgotc3RydWN0IGxpc3Q0N19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDc+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDQ2X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUsQzQ2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3Ci0gICAgPgotc3RydWN0IGxpc3Q0OF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDg+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDQ3X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUsQzQ2LEM0NyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0OF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NywgVCBDNDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ5X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0OT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDhfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYsQzQ3LEM0OCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0OV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NywgVCBDNDgsIFQgQzQ5Ci0gICAgPgotc3RydWN0IGxpc3Q1MF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NTA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDQ5X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUsQzQ2LEM0NyxDNDgsQzQ5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDUwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHVzaF9iYWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wdXNoX2JhY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODI3NThjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wdXNoX2JhY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2JhY2suaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgaGFzX3B1c2hfYmFja19pbXBsOwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaGFzX3B1c2hfYmFja19pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wdXNoX2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wdXNoX2Zyb250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjIzMzg4Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHVzaF9mcm9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QVVNIX0ZST05UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9mcm9udC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbF9pdGVtPAotICAgICAgICAgICAgICB0eXBlbmFtZSBuZXh0PHR5cGVuYW1lIExpc3Q6OnNpemU+Ojp0eXBlCi0gICAgICAgICAgICAsIFQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgTGlzdDo6dHlwZQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlOWM1ZDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfU0laRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNpemUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2l6ZV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBMaXN0ID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogTGlzdDo6c2l6ZQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9TSVpFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVhNTNjMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfVEFHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfVEFHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdGFnLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXN0cnVjdCBsaXN0X3RhZzsKLXN0cnVjdCBsX2l0ZXJfdGFnOwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmFlOTM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vcG9wX2Zyb250LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9mcm9udC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9jbGVhci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9PMV9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZW0uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIER1bW15ID0gbmEgPiBzdHJ1Y3QgbGlzdDA7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxpc3QwPG5hPgotICAgIDogbF9lbmQKLXsKLSAgICB0eXBlZGVmIGxfZW5kIHR5cGU7Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc2MWNhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0MF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxpc3QwX2MKLSAgICA6IGxfZW5kCi17Ci0gICAgdHlwZWRlZiBsX2VuZCB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QxMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QxMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4Y2M3MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QxMF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDEwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDEwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3QxMC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMSwgMTAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMTBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QxMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTk3NWNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QxMF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMTBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QxMF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MF9jLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDEwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDEsIDEwLCA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMTBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgxN2U1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QyMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDIwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMjBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0MjAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QxMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3QyMC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMTEsIDIwLCA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDIwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MjBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QyMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI2N2I1Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QyMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUMjBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDIwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0MjBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwX2MuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0MjBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMTEsIDIwLCA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMjBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdjNzNhMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QzMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDMwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMzBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0MzAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QyMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3QzMC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMjEsIDMwLCA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDMwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MzBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QzMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU4NjVmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QzMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUMzBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDMwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0MzBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwX2MuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0MzBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMjEsIDMwLCA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMzBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFhMWRlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDQwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUNDBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0NDAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QzMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3Q0MC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMzEsIDQwLCA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDQwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NDBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUxNGMzYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q0MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUNDBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDQwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0NDBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwX2MuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0NDBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMzEsIDQwLCA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUNDBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJkMDBiNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q1MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDUwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUNTBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0NTAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3Q0MC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3Q1MC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoNDEsIDUwLCA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDUwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q1MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc4NGRiNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q1MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUNTBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDUwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0NTBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwX2MuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0NTBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoNDEsIDUwLCA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUNTBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xvZ2ljYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9naWNhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjNDM2YzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9naWNhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xPR0lDQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MT0dJQ0FMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbG9naWNhbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTE9HSUNBTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xvbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9uZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNzBiNDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9uZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xPTkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MT05HX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbG9uZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nX2Z3ZC5ocHA+Ci0KLSNkZWZpbmUgQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSBsb25nCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW50ZWdyYWxfd3JhcHBlci5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTE9OR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xvbmdfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xvbmdfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRjZGFkYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sb25nX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xPTkdfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTE9OR19GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsb25nX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKSA+IHN0cnVjdCBsb25nXzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTChsb25nXykKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MT05HX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc2NWNiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX01JTlVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTUlOVVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBtaW51cy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSBtaW51cwotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXRobWV0aWNfb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX01JTlVTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbXVsdGlwbGllcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9tdWx0aXBsaWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIwNmQ3Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9tdWx0aXBsaWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTVVMVElQTElFU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX01VTFRJUExJRVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBtdWx0aXBsaWVzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3RpbWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLS8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaGVhZGVyLCBkZXByZWNhdGVkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX0FSSVRZIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9BUklUWSAyCi0jZW5kaWYKLQotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoQVVYNzc4MDc2X09QX0FSSVRZLCB0eXBlbmFtZSBOLCBuYSkKLSAgICA+Ci1zdHJ1Y3QgbXVsdGlwbGllcwotICAgIDogdGltZXM8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoQVVYNzc4MDc2X09QX0FSSVRZLCBOKSA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICBBVVg3NzgwNzZfT1BfQVJJVFkKLSAgICAgICAgLCBtdWx0aXBsaWVzCi0gICAgICAgICwgKCBORE5CT09TVF9NUExfUFBfUEFSQU1TKEFVWDc3ODA3Nl9PUF9BUklUWSwgTikgKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoQVVYNzc4MDc2X09QX0FSSVRZLCBtdWx0aXBsaWVzKQotCi0jdW5kZWYgQVVYNzc4MDc2X09QX0FSSVRZCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTVVMVElQTElFU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25lZ2F0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9uZWdhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGI5YWNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25lZ2F0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX05FR0FURV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX05FR0FURV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG5lZ2F0ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbmVnYXRlX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5lZ2F0ZV90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4pCi0gICAgPgotc3RydWN0IG5lZ2F0ZQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKQotICAgIDogbmVnYXRlX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbmVnYXRlX3RhZzxOPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTxOPjo6dHlwZQotI2Vsc2UKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgbmVnYXRlX2ltcGw8IHR5cGVuYW1lIG5lZ2F0ZV90YWc8Tj46OnR5cGUgPgotICAgICAgICAsIE4KLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0jZW5kaWYKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsIG5lZ2F0ZSwgKE4pKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIG5lZ2F0ZSkKLQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDKQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuID4gc3RydWN0IG5lZ2F0ZV93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlID0gLW4pOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzxULHZhbHVlPiB0eXBlOwotfTsKLX0KLSNlbmRpZgotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbmVnYXRlX2ltcGw8aW50ZWdyYWxfY190YWc+Ci17Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDKQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpuZWdhdGVfd2tuZDwgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZSwgTjo6dmFsdWUgPgotI2Vsc2UKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGludGVncmFsX2M8IHR5cGVuYW1lIE46OnZhbHVlX3R5cGUsICgtTjo6dmFsdWUpID4KLSNlbmRpZiAgICAKLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTkVHQVRFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmV4dC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9uZXh0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTljNGM5OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9uZXh0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTkVYVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX05FWFRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbmV4dC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9ORVhUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE5MDJjNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTkVYVF9QUklPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX05FWFRfUFJJT1JfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuZXh0X3ByaW9yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29tbW9uX25hbWVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EKG5leHQpCi1ORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQocHJpb3IpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBuZXh0Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpuZXh0IHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLG5leHQsKFQpKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IHByaW9yCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpwcmlvciB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxwcmlvciwoVCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgbmV4dCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBwcmlvcikKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9ORVhUX1BSSU9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbm90LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25vdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MTJhOTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbm90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTk9UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTk9UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbm90LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBDXykgPiAvLyAnbG9uZycgaXMgaW50ZW50aW9uYWwgaGVyZQotc3RydWN0IG5vdF9pbXBsCi0gICAgOiBib29sXzwhQ18+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3Qgbm90XwotICAgIDogYXV4Ojpub3RfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVCk6OnZhbHVlCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsbm90XywoVCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSxub3RfKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX05PVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzRhZjhhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX05PVF9FUVVBTF9UT19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX05PVF9FUVVBTF9UT19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG5vdF9lcXVhbF90by5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSBub3RfZXF1YWxfdG8KLSNkZWZpbmUgQVVYNzc4MDc2X09QX1RPS0VOICE9Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29tcGFyaXNvbl9vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTk9UX0VRVUFMX1RPX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbnVtZXJpY19jYXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL251bWVyaWNfY2FzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiZjRhYmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbnVtZXJpY19jYXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTlVNRVJJQ19DQVNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTlVNRVJJQ19DQVNUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAzLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG51bWVyaWNfY2FzdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIGFndXJ0IDIxL3NlcC8wNDogcG9ydGFiaWxpdHkgbWFjcm8gZm9yIHRoZSBzYWtlIG9mIE1TVkMgNi54LTcuMDsKLS8vIHJlc29sdmVzIGNvbmZsaWN0cyB3aXRoICduZG5ib29zdDo6bnVtZXJpY19jYXN0JyBmdW5jdGlvbiB0ZW1wbGF0ZS4KLS8vIHVzZSBpdCBpbiB5b3VyIG93biBjb2RlIF9vbmx5XyBpZiB5b3UgY2FyZSBhYm91dCBjb21wYXRpYmlsaXR5IHdpdGgKLS8vIHRoZXNlIG91dGRhdGVkIGNvbXBpbGVycyEKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApICkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1QgbnVtZXJpY19jYXN0XwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1QgbnVtZXJpY19jYXN0Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb247IHRoZSBkZWZpbml0aW9uIGlzIG5lZWRlZCB0byBtYWtlIE1TVkMgaGFwcHkKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFNvdXJjZVRhZywgdHlwZW5hbWUgVGFyZ2V0VGFnID4gc3RydWN0IE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHk7Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX05VTUVSSUNfQ0FTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM1ZGI0ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX09SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfT1JfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBvci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25lc3RlZF90eXBlX3drbmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0KLS8vIGFndXJ0LCAxOS9tYXkvMDQ6IHdvcmthcm91bmQgYSBjb25mbGljdCB3aXRoIDxpc282NDYuaD4gaGVhZGVyJ3MgCi0vLyAnb3InIGFuZCAnYW5kJyBtYWNyb3MsIHNlZSBodHRwOi8vdGlueXVybC5jb20vM2V0Njk7ICdkZWZpbmVkKG9yKScKLS8vIGhhcyB0byBiZSBjaGVja2VkIGluIGEgc2VwYXJhdGUgY29uZGl0aW9uLCBvdGhlcndpc2UgR0NDIGNvbXBsYWlucyAKLS8vIGFib3V0ICdvcicgYmVpbmcgYW4gYWx0ZXJuYXRpdmUgdG9rZW4KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotI2lmbmRlZiBfX0dDQ1hNTF9fCi0jaWYgZGVmaW5lZChvcikKLSMgICBwcmFnbWEgcHVzaF9tYWNybygib3IiKQotIyAgIHVuZGVmIG9yCi0jICAgZGVmaW5lIG9yKHgpCi0jZW5kaWYKLSNlbmRpZgotI2VuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgb3IuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgCi0jaWZuZGVmIF9fR0NDWE1MX18KLSNpZiBkZWZpbmVkKG9yKQotIyAgIHByYWdtYSBwb3BfbWFjcm8oIm9yIikKLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYKLQotI2Vsc2UKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSBvcl8KLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX1ZBTFVFMSB0cnVlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9WQUxVRTIgZmFsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sb2dpY2FsX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wYWlyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BhaXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzI5NWM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BhaXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QQUlSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUEFJUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBhaXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBwYWlyCi17Ci0gICAgdHlwZWRlZiBwYWlyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMSBmaXJzdDsKLSAgICB0eXBlZGVmIFQyIHNlY29uZDsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixwYWlyLChUMSxUMikpCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oUCkKLSAgICA+Ci1zdHJ1Y3QgZmlyc3QKLXsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRykKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFA6OmZpcnN0IHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojptc3ZjX2V0aV9iYXNlPFA+OjpmaXJzdCB0eXBlOwotI2VuZGlmCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGZpcnN0LChQKSkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShQKQotICAgID4KLXN0cnVjdCBzZWNvbmQKLXsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRykKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFA6OnNlY29uZCB0eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bXN2Y19ldGlfYmFzZTxQPjo6c2Vjb25kIHR5cGU7Ci0jZW5kaWYKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsc2Vjb25kLChQKSkKLX07Ci0KLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX05PX0VUSSgyLCBwYWlyKQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGZpcnN0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIHNlY29uZCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QQUlSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0NDRkOGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BMQUNFSE9MREVSU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BMQUNFSE9MREVSU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBsYWNlaG9sZGVycy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXJnLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0FETF9CQVJSSUVSX05BTUVTUEFDRSkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0wodHlwZSkgXAotICAgICAgICB1c2luZyA6Ok5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjp0eXBlOyBcCi0gICAgICAgIC8qKi8KLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKHR5cGUpIC8qKi8KLSMgICBlbmRpZgotCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHBsYWNlaG9sZGVycy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotLy8gd2F0Y2ggb3V0IGZvciBHTlUgZ2V0dGV4dCB1c2Vycywgd2hvICNkZWZpbmUgXyh4KQotI2lmICFkZWZpbmVkKF8pIHx8IGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQpCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwtMT4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyAKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotI2VuZGlmCi0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMSwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSArIDEsIDxuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BMQUNFSE9MREVSU19IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLXR5cGVkZWYgYXJnPGlfPiBORE5CT09TVF9QUF9DQVQoXyxpXyk7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyAKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChORE5CT09TVF9QUF9DQVQoXyxpXykpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ok5ETkJPT1NUX1BQX0NBVChfLGlfKTsKLX0KLQotfX0KLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjY1Y2ZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QTFVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUExVU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBsdXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgcGx1cwotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gKwotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXRobWV0aWNfb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BMVVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wb3BfYmFja19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcG9wX2JhY2tfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlOTQ1MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wb3BfYmFja19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QT1BfQkFDS19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QT1BfQkFDS19GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwb3BfYmFja19md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBvcF9iYWNrX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgcG9wX2JhY2s7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUE9QX0JBQ0tfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcG9wX2Zyb250X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wb3BfZnJvbnRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQxMjA1Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wb3BfZnJvbnRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUE9QX0ZST05UX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BPUF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwb3BfZnJvbnRfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwb3BfZnJvbnRfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBwb3BfZnJvbnQ7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUE9QX0ZST05UX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ByaW9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ByaW9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU4ODBlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wcmlvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BSSU9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUFJJT1JfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHJpb3IuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUFJJT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wcm90ZWN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmQ0YzQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QUk9URUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUFJPVEVDVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwcm90ZWN0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICAsIGludCBub3RfbGVfID0gMAotICAgID4KLXN0cnVjdCBwcm90ZWN0IDogVAotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA9PSAyMzgpCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3QgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiBwcm90ZWN0IHR5cGU7Ci0jZW5kaWYKLX07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKQotbmFtZXNwYWNlIGF1eCB7IAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTiksIHR5cGVuYW1lIFQgPgotc3RydWN0IGFyaXR5PCBwcm90ZWN0PFQ+LCBOID4gCi0gICAgOiBhcml0eTxULE4+Ci17IAotfTsKLX0gLy8gbmFtZXNwYWNlIGF1eAotI2VuZGlmCi0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19NQUlOKDEsIHByb3RlY3QpCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDEsIDEsIHByb3RlY3QpCi0jZW5kaWYKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QUk9URUNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9iYWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfYmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljZWE4OTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9iYWNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUFVTSF9CQUNLX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUFVTSF9CQUNLX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9iYWNrLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfYmFja19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3B1c2hfYmFja19pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IHB1c2hfYmFjawotICAgIDogcHVzaF9iYWNrX2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSxUID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIscHVzaF9iYWNrLChTZXF1ZW5jZSxUKSkKLX07Ci0KLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3QgaGFzX3B1c2hfYmFjawotICAgIDogaGFzX3B1c2hfYmFja19pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxoYXNfcHVzaF9iYWNrLChTZXF1ZW5jZSkpCi19OwotCi0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBwdXNoX2JhY2spCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgaGFzX3B1c2hfYmFjaykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2JhY2tfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfYmFja19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGUwZmYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfYmFja19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QVVNIX0JBQ0tfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUFVTSF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfYmFja19md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHB1c2hfYmFja19pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBUID4gc3RydWN0IHB1c2hfYmFjazsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QVVNIX0JBQ0tfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9mcm9udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2Zyb250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMzMTNjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2Zyb250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2Zyb250LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wdXNoX2Zyb250X2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgcHVzaF9mcm9udAotICAgIDogcHVzaF9mcm9udF9pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UsVCA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLHB1c2hfZnJvbnQsKFNlcXVlbmNlLFQpKQotfTsKLQotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBoYXNfcHVzaF9mcm9udAotICAgIDogaGFzX3B1c2hfZnJvbnRfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaGFzX3B1c2hfZnJvbnQsKFNlcXVlbmNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBwdXNoX2Zyb250KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGhhc19wdXNoX2Zyb250KQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2Zyb250X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2Zyb250X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0Mzk0ZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9mcm9udF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QVVNIX0ZST05UX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BVU0hfRlJPTlRfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9mcm9udF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHB1c2hfZnJvbnRfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwdXNoX2Zyb250OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BVU0hfRlJPTlRfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWI3ZDNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1FVT1RFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUVVPVEVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBxdW90ZS5ocHAgNDkyNzIgMjAwOC0xMC0xMSAwNjo1MDo0NlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjUwOjQ2IC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjcyICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc190eXBlLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2JjYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R0cC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVEVNUExBVEVfVEVNUExBVEVfUEFSQU1FVEVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQkNDNTkwX1dPUktBUk9VTkRTKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX1FVT1RFX1RFTVBMQVRFCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSU1QTElDSVRfTUVUQUZVTkNUSU9OUykgXAotICAgICYmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0lNUExJQ0lUX01FVEFGVU5DVElPTlMKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgcXVvdGUuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUVVPVEVfVEVNUExBVEUpCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGJvb2wgaGFzX3R5cGVfID4KLXN0cnVjdCBxdW90ZV9pbXBsCi0vLyBHQ0MgaGFzIGEgcHJvYmxlbSB3aXRoIG1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIHdoZW4gVCBpcyBhCi0vLyBzcGVjaWFsaXphdGlvbiBvZiBhIHRlbXBsYXRlIGNhbGxlZCAndHlwZScuCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg0KSkgXAotICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX01JTk9SX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgwKSkgXAotICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX1BBVENITEVWRUxfXywgTkROQk9PU1RfVEVTVEVEX0FUKDIpKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dHlwZSB0eXBlOwotfTsKLSMgZWxzZSAKLSAgICA6IFQKLXsKLX07Ci0jIGVuZGlmIAotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbDxULGZhbHNlPgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi10ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBxdW90ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHF1b3RlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZiAKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL3F1b3RlLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1FVT1RFX1RFTVBMQVRFCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1FVT1RFX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFApID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHF1b3RlLGlfKQotewotICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCB0eXBlbmFtZSBVKSA+IHN0cnVjdCBhcHBseQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CQ0M1OTBfV09SS0FST1VORFMpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIFUpID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgVSkgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIFUpID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgVSkgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotI2Vsc2UKLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCBVKSA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgVSkgPiA+Ci0gICAgewotICAgIH07Ci0jZW5kaWYKLX07Ci0KLSN1bmRlZiBpXwotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcmVtb3ZlX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3JlbW92ZV9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOTk3ZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcmVtb3ZlX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUkVNT1ZFX0lGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUkVNT1ZFX0lGX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAzLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcmVtb3ZlX2lmLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ZvbGQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9yZXZlcnNlX2ZvbGQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wcm90ZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGFtYmRhLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luc2VydGVyX2FsZ29yaXRobS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWQsIHR5cGVuYW1lIEluc2VydE9wID4gc3RydWN0IHJlbW92ZV9pZl9oZWxwZXIKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UsIHR5cGVuYW1lIFUgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXBwbHkxPFByZWQsVT46OnR5cGUKLSAgICAgICAgICAgICwgaWRlbnRpdHk8U2VxdWVuY2U+Ci0gICAgICAgICAgICAsIGFwcGx5MjxJbnNlcnRPcCxTZXF1ZW5jZSxVPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEluc2VydGVyCi0gICAgPgotc3RydWN0IHJlbW92ZV9pZl9pbXBsCi0gICAgOiBmb2xkPAotICAgICAgICAgIFNlcXVlbmNlCi0gICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6OnN0YXRlCi0gICAgICAgICwgcHJvdGVjdDwgYXV4OjpyZW1vdmVfaWZfaGVscGVyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8UHJlZGljYXRlPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBJbnNlcnRlcjo6b3BlcmF0aW9uCi0gICAgICAgICAgICA+ID4KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBJbnNlcnRlcgotICAgID4KLXN0cnVjdCByZXZlcnNlX3JlbW92ZV9pZl9pbXBsCi0gICAgOiByZXZlcnNlX2ZvbGQ8Ci0gICAgICAgICAgU2VxdWVuY2UKLSAgICAgICAgLCB0eXBlbmFtZSBJbnNlcnRlcjo6c3RhdGUKLSAgICAgICAgLCBwcm90ZWN0PCBhdXg6OnJlbW92ZV9pZl9oZWxwZXI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxQcmVkaWNhdGU+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIEluc2VydGVyOjpvcGVyYXRpb24KLSAgICAgICAgICAgID4gPgotICAgICAgICA+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9JTlNFUlRFUl9BTEdPUklUSE1fREVGKDMsIHJlbW92ZV9pZikKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9SRU1PVkVfSUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9yZXZlcnNlX2ZvbGQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcmV2ZXJzZV9mb2xkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc5MGE0My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9yZXZlcnNlX2ZvbGQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9SRVZFUlNFX0ZPTERfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9SRVZFUlNFX0ZPTERfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiByZXZlcnNlX2ZvbGQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvTzFfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FyZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTdGF0ZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oQmFja3dhcmRPcCkKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcCA9IGFyZzwxPgotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjpPMV9zaXplPFNlcXVlbmNlPjo6dmFsdWUKLSAgICAgICAgLCB0eXBlbmFtZSBiZWdpbjxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlbmQ8U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID46OnN0YXRlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMscmV2ZXJzZV9mb2xkLChTZXF1ZW5jZSxTdGF0ZSxCYWNrd2FyZE9wKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCByZXZlcnNlX2ZvbGQpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUkVWRVJTRV9GT0xEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2FtZV9hcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9zYW1lX2FzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDlmZGJjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zYW1lX2FzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfU0FNRV9BU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1NBTUVfQVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzYW1lX2FzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBzYW1lX2FzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykKLSAgICAgICAgOiBpc19zYW1lPFQxLFQyPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlzX3NhbWU8VDEsVDI+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBub3Rfc2FtZV9hcwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogbm90XzwgaXNfc2FtZTxUMSxUMj4gPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vdF88IGlzX3NhbWU8VDEsVDI+ID46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1NBTUVfQVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFjMWU3OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfU0VRVUVOQ0VfVEFHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfU0VRVUVOQ0VfVEFHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2VxdWVuY2VfdGFnLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZ19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc190YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc19iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaXNfbXN2Y19ldGlfYXJnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGFndXJ0LCAyNy9ub3YvMDI6IGhhdmUgdG8gdXNlIGEgc2ltcGxpc3RpYyAnc2VxdWVuY2VfdGFnJyBpbXBsZW1lbnRhdGlvbgotLy8gb24gTVNWQyB0byBhdm9pZCBkcmVhZGZ1bCAiaW50ZXJuYWwgc3RydWN0dXJlIG92ZXJmbG93IiBlcnJvcgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFgpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3Qgc2VxdWVuY2VfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6dGFnIHR5cGU7Ci19OwotCi0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0KLS8vIGFndXJ0LCAwNy9mZWIvMDM6IHdvcmthcm91bmQgZm9yIHdoYXQgc2VlbXMgdG8gYmUgTVNWQyA3LjAtc3BlY2lmaWMgRVRJIGlzc3VlCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3Qgc2VxdWVuY2VfdGFnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6dGFnIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXF1ZW5jZV90YWdfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3Qgc2VxdWVuY2VfdGFnCi0gICAgOiBhdXg6OnNlcXVlbmNlX3RhZ19pbXBsPCAhYXV4Ojppc19tc3ZjX2V0aV9hcmc8U2VxdWVuY2U+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxTZXF1ZW5jZT4KLXsKLX07Ci0KLSNlbHNlCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBoYXNfdGFnXywgYm9vbCBoYXNfYmVnaW5fID4KLXN0cnVjdCBzZXF1ZW5jZV90YWdfaW1wbAotewotICAgIC8vIGFndXJ0IDI0L25vdi8wMjogTVNWQyA2LjUgZ2V0cyBjb25mdXNlZCBpbiAnc2VxdWVuY2VfdGFnX2ltcGw8dHJ1ZT4nIAotICAgIC8vIHNwZWNpYWxpemF0aW9uIGJlbG93LCBpZiB3ZSBuYW1lIGl0ICdyZXN1bHRfJyBoZXJlCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHJlc3VsdDJfOwotfTsKLQotIyAgIGRlZmluZSBBVVhfQ0xBU1NfU0VRVUVOQ0VfVEFHX1NQRUMoaGFzX3RhZywgaGFzX2JlZ2luLCByZXN1bHRfdHlwZSkgXAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2VxdWVuY2VfdGFnX2ltcGw8aGFzX3RhZyxoYXNfYmVnaW4+IFwKLXsgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCByZXN1bHQyXyBcCi0gICAgeyBcCi0gICAgICAgIHR5cGVkZWYgcmVzdWx0X3R5cGUgdHlwZTsgXAotICAgIH07IFwKLX07IFwKLS8qKi8KLQotQVVYX0NMQVNTX1NFUVVFTkNFX1RBR19TUEVDKHRydWUsIHRydWUsIHR5cGVuYW1lIFNlcXVlbmNlOjp0YWcpCi1BVVhfQ0xBU1NfU0VRVUVOQ0VfVEFHX1NQRUModHJ1ZSwgZmFsc2UsIHR5cGVuYW1lIFNlcXVlbmNlOjp0YWcpCi1BVVhfQ0xBU1NfU0VRVUVOQ0VfVEFHX1NQRUMoZmFsc2UsIHRydWUsIG5lc3RlZF9iZWdpbl9lbmRfdGFnKQotQVVYX0NMQVNTX1NFUVVFTkNFX1RBR19TUEVDKGZhbHNlLCBmYWxzZSwgbm9uX3NlcXVlbmNlX3RhZykKLQotIyAgIHVuZGVmIEFVWF9DTEFTU19TRVFVRU5DRV9UQUdfU1BFQwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBzZXF1ZW5jZV90YWcKLSAgICA6IGF1eDo6c2VxdWVuY2VfdGFnX2ltcGw8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc190YWc8U2VxdWVuY2U+Ojp2YWx1ZQotICAgICAgICAsIDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfYmVnaW48U2VxdWVuY2U+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHQyXzxTZXF1ZW5jZT4KLXsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NU1ZDCi0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBzZXF1ZW5jZV90YWcpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfU0VRVUVOQ0VfVEFHX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWdfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUzYWVlMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWdfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfU0VRVUVOQ0VfVEFHX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1NFUVVFTkNFX1RBR19GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzZXF1ZW5jZV90YWdfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotc3RydWN0IG5lc3RlZF9iZWdpbl9lbmRfdGFnOwotc3RydWN0IG5vbl9zZXF1ZW5jZV90YWc7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBzZXF1ZW5jZV90YWc7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfU0VRVUVOQ0VfVEFHX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MTU0OWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vc2l6ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19ldGlfYmFzZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IHNpemUKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwKLSAgICAgICAgdHlwZW5hbWUgc2l6ZV9pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlID46OnR5cGUKLSAgICAgID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsIHNpemUsIChTZXF1ZW5jZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgc2l6ZSkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9TSVpFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDk0OGEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfU0laRV9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9TSVpFX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNpemVfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaXplX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3Qgc2l6ZTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9TSVpFX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzg2Njk5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1NJWkVfVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1NJWkVfVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNpemVfdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX3RfZndkLmhwcD4KLQotI2RlZmluZSBBVVhfV1JBUFBFUl9WQUxVRV9UWVBFIHN0ZDo6c2l6ZV90Ci0jZGVmaW5lIEFVWF9XUkFQUEVSX05BTUUgc2l6ZV90Ci0jZGVmaW5lIEFVWF9XUkFQUEVSX1BBUkFNUyhOKSBzdGQ6OnNpemVfdCBOCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbnRlZ3JhbF93cmFwcGVyLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9TSVpFX1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX3RfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfdF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWRjOTgxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfdF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TSVpFX1RfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfU0laRV9UX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNpemVfdF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gbWFrZSBzdXJlICdzaXplX3QnIGlzIHBsYWNlZCBpbnRvICdzdGQnCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi10ZW1wbGF0ZTwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzaXplX3Q7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0woc2l6ZV90KQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1NJWkVfVF9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC90YWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdGFnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVlZDY5OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC90YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9UQUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9UQUdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdGFnLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGFnX2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLX0KLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIERlZmF1bHQgPSB2b2lkXyA+IHN0cnVjdCB0YWcKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykKLSAgICA6IGlmXzwgCi0gICAgICAgICAgYXV4OjpoYXNfdGFnPFQ+Ci0gICAgICAgICwgYXV4Ojp0YWdfaW1wbDxUPgotICAgICAgICAsIERlZmF1bHQKLSAgICAgICAgPjo6dHlwZQotewotI2Vsc2UKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8IAotICAgICAgICAgIGF1eDo6aGFzX3RhZzxUPgotICAgICAgICAsIGF1eDo6dGFnX2ltcGw8VD4KLSAgICAgICAgLCBEZWZhdWx0Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLQotI2VuZGlmCi19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1RBR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZmYTcwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1RJTUVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVElNRVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0aW1lcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSB0aW1lcwotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gKgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXRobWV0aWNfb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1RJTUVTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0OTJmMjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL3ZlY3Rvci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3N0cmluZ2l6ZS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9ORUVEU19UT0tFTl9QQVNUSU5HX09QX0ZPUl9UT0tFTlNfSlVYVEFQT1NJTkcpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9WRUNUT1JfSEVBREVSIFwKLSAgICBORE5CT09TVF9QUF9DQVQodmVjdG9yLCBORE5CT09TVF9NUExfTElNSVRfVkVDVE9SX1NJWkUpLmhwcCBcCi0gICAgLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1ZFQ1RPUl9IRUFERVIgXAotICAgIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsIE5ETkJPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRSkjIy5ocHAgXAotICAgIC8qKi8KLSNlbmRpZgotCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9TVFJJTkdJWkUobmRuYm9vc3QvbXBsL3ZlY3Rvci9BVVg3NzgwNzZfVkVDVE9SX0hFQURFUikKLSMgICB1bmRlZiBBVVg3NzgwNzZfVkVDVE9SX0hFQURFUgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3IuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy92ZWN0b3IuaHBwPgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FIHZlY3RvcgotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQgTkROQk9PU1RfTVBMX0xJTUlUX1ZFQ1RPUl9TSVpFCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vc2VxdWVuY2Vfd3JhcHBlci5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL08xX3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vTzFfc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYjBmODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vTzFfc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfTzFfU0laRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfTzFfU0laRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IE8xX3NpemUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvTzFfc2l6ZV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9taW51cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogVmVjdG9yOjpzaXplCi0gICAgewotICAgIH07Ci19OwotCi0jZWxzZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Tj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBtcGw6OmxvbmdfPE4+Ci0gICAgewotICAgIH07Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9PMV9TSVpFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTA3NzQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2F0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0FUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIGxvbmcgbl8gPgotc3RydWN0IHZfYXRfaW1wbAotewotICAgIHR5cGVkZWYgbG9uZ188IChWZWN0b3I6Omxvd2VyX2JvdW5kXzo6dmFsdWUgKyBuXykgPiBpbmRleF87Ci0gICAgdHlwZWRlZiBfX3R5cGVvZl9fKCBWZWN0b3I6Oml0ZW1fKGluZGV4XygpKSApIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIGxvbmcgbl8gPgotc3RydWN0IHZfYXQKLSAgICA6IGF1eDo6d3JhcHBlZF90eXBlPCB0eXBlbmFtZSB2X2F0X2ltcGw8VmVjdG9yLG5fPjo6dHlwZSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogdl9hdDwKLSAgICAgICAgICAgICAgVmVjdG9yCi0gICAgICAgICAgICAsIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNlbHNlCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19OT05UWVBFX1RFTVBMQVRFX1BBUlRJQUxfU1BFQykKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pID4gc3RydWN0IHZfYXQ7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykgPgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxuXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0gICAgICAgIDogdl9hdDwKLSAgICAgICAgICAgICAgVmVjdG9yCi0gICAgICAgICAgICAsIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2X2F0PAotICAgICAgICAgICAgICBWZWN0b3IKLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLSMgICBlbHNlCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pID4gc3RydWN0IHZfYXRfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWID4gc3RydWN0IHJlc3VsdF87Ci19OwotCi0vLyB0byB3b3JrIGFyb3VuZCBFVEksIGV0Yy4KLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwtMT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgViA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHZvaWRfIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pID4KLXN0cnVjdCB2X2F0Ci0gICAgOiBhdXg6OnZfYXRfaW1wbDxuXz46OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0FUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYmFjay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iYWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc5NDZhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iYWNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9CQUNLX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9CQUNLX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmFjay5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iYWNrX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiB2X2F0PAotICAgICAgICAgICAgICBWZWN0b3IKLSAgICAgICAgICAgICwgcHJpb3I8dHlwZW5hbWUgVmVjdG9yOjpzaXplPjo6dHlwZTo6dmFsdWUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNlbHNlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgbG9uZyBuXyA+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8bl8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9CQUNLX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYmVnaW5fZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JlZ2luX2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNGQwNjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYmVnaW5fZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0JFR0lOX0VORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJlZ2luX2VuZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZXJhdG9yLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiZWdpbl9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdl9pdGVyPFZlY3RvciwwPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW5kX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2X2l0ZXI8VmVjdG9yLFZlY3Rvcjo6c2l6ZTo6dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0JFR0lOX0VORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2NsZWFyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2NsZWFyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJiYzc4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9jbGVhci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQ0xFQVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0NMRUFSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY2xlYXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY2xlYXJfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdmVjdG9yMC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi0jZWxzZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPE4+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9DTEVBUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2VtcHR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2VtcHR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE3NzllMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9lbXB0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfRU1QVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0VNUFRZX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZW1wdHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZW1wdHlfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaXNfc2FtZTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjpsb3dlcl9ib3VuZF8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjp1cHBlcl9ib3VuZF8KLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiB0cnVlXwotICAgIHsKLSAgICB9OwotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxOPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfRU1QVFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9mcm9udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9mcm9udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMWI0YWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZnJvbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0ZST05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9GUk9OVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZyb250LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IHZfYXQ8VmVjdG9yLDA+Ci0gICAgewotICAgIH07Ci19OwotCi0jZWxzZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKSA+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPG5fPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0ZST05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDI3MGRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3N0cmluZ2l6ZS5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lOQ0xVREVfRElSIHR5cGVvZl9iYXNlZAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICB8fCBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTk9OVFlQRV9URU1QTEFURV9QQVJUSUFMX1NQRUMpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JTkNMVURFX0RJUiBub19jdHBzCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSU5DTFVERV9ESVIgcGxhaW4KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTkVFRFNfVE9LRU5fUEFTVElOR19PUF9GT1JfVE9LRU5TX0pVWFRBUE9TSU5HKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSEVBREVSIFwKLSAgICBBVVg3NzgwNzZfSU5DTFVERV9ESVIvTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0hFQURFUiBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9JTkNMVURFX0RJUiwvKSMjTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgXAotLyoqLwotI2VuZGlmCi0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDcwMCkpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JTkNMVURFX1NUUklORyBORE5CT09TVF9QUF9TVFJJTkdJWkUobmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9BVVg3NzgwNzZfSEVBREVSKQotIyAgIGluY2x1ZGUgQVVYNzc4MDc2X0lOQ0xVREVfU1RSSU5HCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lOQ0xVREVfU1RSSU5HCi0jZWxzZQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfU1RSSU5HSVpFKG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvQVVYNzc4MDc2X0hFQURFUikKLSNlbmRpZgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0hFQURFUgotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JTkNMVURFX0RJUgotCi0jdW5kZWYgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NThhYTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0lURU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0lURU1fSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVtLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEJhc2UKLSAgICAsIGludCBhdF9mcm9udCA9IDAKLSAgICA+Ci1zdHJ1Y3Qgdl9pdGVtCi0gICAgOiBCYXNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlOjp1cHBlcl9ib3VuZF8gaW5kZXhfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpbmRleF8+Ojp0eXBlIHVwcGVyX2JvdW5kXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8dHlwZW5hbWUgQmFzZTo6c2l6ZT46OnR5cGUgc2l6ZTsKLSAgICB0eXBlZGVmIEJhc2UgYmFzZTsKLSAgICB0eXBlZGVmIHZfaXRlbSB0eXBlOwotCi0gICAgLy8gYWd1cnQgMTAvc2VwLzA0OiBNV0NXIDw9IDkuMyB3b3JrYXJvdW5kIGhlcmUgYW5kIGJlbG93OyB0aGUgY29tcGlsZXIKLSAgICAvLyBicmVha3MgaWYgdXNpbmcgZGVjbGFyYXRpb24gY29tZXMgX2JlZm9yZV8gdGhlIG5ldyBvdmVybG9hZAotICAgIHN0YXRpYyBhdXg6OnR5cGVfd3JhcHBlcjxUPiBpdGVtXyhpbmRleF8pOwotICAgIHVzaW5nIEJhc2U6Oml0ZW1fOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBCYXNlCi0gICAgPgotc3RydWN0IHZfaXRlbTxULEJhc2UsMT4KLSAgICA6IEJhc2UKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPHR5cGVuYW1lIEJhc2U6Omxvd2VyX2JvdW5kXz46OnR5cGUgaW5kZXhfOwotICAgIHR5cGVkZWYgaW5kZXhfIGxvd2VyX2JvdW5kXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8dHlwZW5hbWUgQmFzZTo6c2l6ZT46OnR5cGUgc2l6ZTsKLSAgICB0eXBlZGVmIEJhc2UgYmFzZTsKLSAgICB0eXBlZGVmIHZfaXRlbSB0eXBlOwotCi0gICAgc3RhdGljIGF1eDo6dHlwZV93cmFwcGVyPFQ+IGl0ZW1fKGluZGV4Xyk7Ci0gICAgdXNpbmcgQmFzZTo6aXRlbV87Ci19OwotCi0vLyAiZXJhc3VyZSIgaXRlbQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgQmFzZQotICAgICwgaW50IGF0X2Zyb250Ci0gICAgPgotc3RydWN0IHZfbWFzawotICAgIDogQmFzZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8dHlwZW5hbWUgQmFzZTo6dXBwZXJfYm91bmRfPjo6dHlwZSBpbmRleF87Ci0gICAgdHlwZWRlZiBpbmRleF8gdXBwZXJfYm91bmRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8dHlwZW5hbWUgQmFzZTo6c2l6ZT46OnR5cGUgc2l6ZTsKLSAgICB0eXBlZGVmIEJhc2UgYmFzZTsKLSAgICB0eXBlZGVmIHZfbWFzayB0eXBlOwotCi0gICAgc3RhdGljIGF1eDo6dHlwZV93cmFwcGVyPHZvaWRfPiBpdGVtXyhpbmRleF8pOwotICAgIHVzaW5nIEJhc2U6Oml0ZW1fOwotfTsKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgQmFzZQotICAgID4KLXN0cnVjdCB2X21hc2s8QmFzZSwxPgotICAgIDogQmFzZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmFzZTo6bG93ZXJfYm91bmRfIGluZGV4XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aW5kZXhfPjo6dHlwZSBsb3dlcl9ib3VuZF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjx0eXBlbmFtZSBCYXNlOjpzaXplPjo6dHlwZSBzaXplOwotICAgIHR5cGVkZWYgQmFzZSBiYXNlOwotICAgIHR5cGVkZWYgdl9tYXNrIHR5cGU7Ci0KLSAgICBzdGF0aWMgYXV4Ojp0eXBlX3dyYXBwZXI8dm9pZF8+IGl0ZW1fKGluZGV4Xyk7Ci0gICAgdXNpbmcgQmFzZTo6aXRlbV87Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9JVEVNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTlkMGU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9WRUNUT1JfSVRFUkFUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVkVDVE9SX0lURVJBVE9SX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlcmF0b3IuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pdGVyYXRvcl90YWdzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcGx1cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL21pbnVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYWR2YW5jZV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kaXN0YW5jZV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVmVjdG9yCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykKLSAgICA+Ci1zdHJ1Y3Qgdl9pdGVyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZfaXRlcl90YWcgdGFnOwotICAgIHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2X2F0PFZlY3RvcixuXz46OnR5cGUgdHlwZTsKLQotICAgIHR5cGVkZWYgVmVjdG9yIHZlY3Rvcl87Ci0gICAgdHlwZWRlZiBtcGw6OmxvbmdfPG5fPiBwb3M7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICAgZW51bSB7IAotICAgICAgICAgIG5leHRfID0gbl8gKyAxCi0gICAgICAgICwgcHJpb3JfID0gbl8gLSAxCi0gICAgICAgICwgcG9zXyA9IG5fCi0gICAgfTsKLSAgICAKLSAgICB0eXBlZGVmIHZfaXRlcjxWZWN0b3IsbmV4dF8+IG5leHQ7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8VmVjdG9yLHByaW9yXz4gcHJpb3I7Ci0jZW5kaWYKLQotfTsKLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBWZWN0b3IKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKQotICAgID4KLXN0cnVjdCBuZXh0PCB2X2l0ZXI8VmVjdG9yLG5fPiA+Ci17Ci0gICAgdHlwZWRlZiB2X2l0ZXI8VmVjdG9yLChuXyArIDEpPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBWZWN0b3IKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKQotICAgID4KLXN0cnVjdCBwcmlvcjwgdl9pdGVyPFZlY3RvcixuXz4gPgotewotICAgIHR5cGVkZWYgdl9pdGVyPFZlY3Rvciwobl8gLSAxKT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVmVjdG9yCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykKLSAgICAsIHR5cGVuYW1lIERpc3RhbmNlCi0gICAgPgotc3RydWN0IGFkdmFuY2U8IHZfaXRlcjxWZWN0b3Isbl8+LERpc3RhbmNlPgotewotICAgIHR5cGVkZWYgdl9pdGVyPAotICAgICAgICAgIFZlY3RvcgotICAgICAgICAsIChuXyArIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQobG9uZywgRGlzdGFuY2UpKQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBWZWN0b3IKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbV8pCi0gICAgPiAKLXN0cnVjdCBkaXN0YW5jZTwgdl9pdGVyPFZlY3RvcixuXz4sIHZfaXRlcjxWZWN0b3IsbV8+ID4KLSAgICA6IG1wbDo6bG9uZ188KG1fIC0gbl8pPgotewotfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhZHZhbmNlX2ltcGw8YXV4Ojp2X2l0ZXJfdGFnPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgZW51bSB7IHBvc18gPSBJdGVyYXRvcjo6cG9zXywgbl8gPSBOOjp2YWx1ZSB9OwotICAgICAgICB0eXBlZGVmIHZfaXRlcjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3I6OnZlY3Rvcl8KLSAgICAgICAgICAgICwgKHBvc18gKyBuXykKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZGlzdGFuY2VfaW1wbDxhdXg6OnZfaXRlcl90YWc+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXIxLCB0eXBlbmFtZSBJdGVyMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgZW51bSB7IHBvczFfID0gSXRlcjE6OnBvc18sIHBvczJfID0gSXRlcjI6OnBvc18gfTsKLSAgICAgICAgdHlwZWRlZiBsb25nXzwoIHBvczJfIC0gcG9zMV8gKT4gdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGxvbmcsIHZhbHVlID0gKCBwb3MyXyAtIHBvczFfICkpOwotICAgIH07Ci19OwotCi0jZW5kaWYKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfVkVDVE9SX0lURVJBVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjU2ZTMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnVtYmVyZWQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1ZFQ1RPUl9UQUlMKHZlY3RvciwgaV8sIFQpIFwKLSAgICBORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKTwgXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGlfLCBUKSBcCi0gICAgICAgID4gXAotICAgIC8qKi8KLQotI2lmIGlfID4gMAotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXykKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBORE5CT09TVF9QUF9DQVQoVCxORE5CT09TVF9QUF9ERUMoaV8pKQotICAgICAgICAsIEFVWDc3ODA3Nl9WRUNUT1JfVEFJTCh2ZWN0b3IsTkROQk9PU1RfUFBfREVDKGlfKSxUKQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKSB0eXBlOwotfTsKLSNlbmRpZgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X1ZFQ1RPUl9UQUlMCi0KLSNlbHNlIC8vICJicnV0ZSBmb3JjZSIgaW1wbGVtZW50YXRpb24KLQotIyAgIGlmIGlfID4gMAotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPGlfPiB0YWc7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKSB0eXBlOwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9WRUNUT1JfSVRFTSh1bnVzZWQsIGlfLCB1bnVzZWQyKSBcCi0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoVCxpXykgTkROQk9PU1RfUFBfQ0FUKGl0ZW0saV8pOyBcCi0gICAgLyoqLwotCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfVkVDVE9SX0lURU0sIHVudXNlZCkKLSMgICB1bmRlZiBBVVg3NzgwNzZfVkVDVE9SX0lURU0KLSAgICB0eXBlZGVmIHZvaWRfIE5ETkJPT1NUX1BQX0NBVChpdGVtLGlfKTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChULE5ETkJPT1NUX1BQX0RFQyhpXykpIGJhY2s7Ci0KLSAgICAvLyBCb3JsYW5kIGZvcmNlcyB1cyB0byB1c2UgJ3R5cGUnIGhlcmUgKGluc3RlYWQgb2YgdGhlIGNsYXNzIG5hbWUpCi0gICAgdHlwZWRlZiB2X2l0ZXI8dHlwZSwwPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjx0eXBlLGlfPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8TkROQk9PU1RfUFBfREVDKGlfKT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXyk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKGlfKSkKLSAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGlfKSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtKQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixORE5CT09TVF9QUF9ERUMoaV8pKTwKLSAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhpXywgdHlwZW5hbWUgVmVjdG9yOjppdGVtKQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPE5ETkJPT1NUX1BQX0RFQyhpXyk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pPAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoaV8pLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0pCi0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhpXykpCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixORE5CT09TVF9QUF9ERUMoaV8pKTwKLSAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGlfKSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtKQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi0jICAgZW5kaWYgLy8gaV8gPiAwCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19OT05UWVBFX1RFTVBMQVRFX1BBUlRJQUxfU1BFQykKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8VixpXz4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Ok5ETkJPT1NUX1BQX0NBVChpdGVtLGlfKSB0eXBlOwotfTsKLQotIyAgIGVsc2UKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8aV8+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Ok5ETkJPT1NUX1BQX0NBVChpdGVtLGlfKSB0eXBlOwotICAgIH07Ci19OwotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLSNpZiBpXyA+IDAKLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0jZW5kaWYKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPGlfPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI3VuZGVmIGlfCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ZmQ5MDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnVtYmVyZWRfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfVkVDVE9SX1RBSUwodmVjdG9yLCBpXywgQykgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKSxfYyk8VCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGlfLCBDKSBcCi0gICAgICAgID4gXAotICAgIC8qKi8KLQotI2lmIGlfID4gMAotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhpXywgVCBDKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXyksX2MpCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzxULE5ETkJPT1NUX1BQX0NBVChDLE5ETkJPT1NUX1BQX0RFQyhpXykpPgotICAgICAgICAsIEFVWDc3ODA3Nl9WRUNUT1JfVEFJTCh2ZWN0b3IsTkROQk9PU1RfUFBfREVDKGlfKSxDKQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXyksX2MpIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotI2VuZGlmCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfVkVDVE9SX1RBSUwKLQotI2Vsc2UgLy8gImJydXRlIGZvcmNlIiBpbXBsZW1lbnRhdGlvbgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9WRUNUT1JfQ19QQVJBTV9GVU5DKHVudXNlZCwgaV8sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIFwKLSAgICBpbnRlZ3JhbF9jPFQsTkROQk9PU1RfUFBfQ0FUKHBhcmFtLGlfKT4gXAotICAgIC8qKi8KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhpXywgVCBDKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXyksX2MpCi0gICAgOiBORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKTwgTkROQk9PU1RfUFBfUkVQRUFUKGlfLEFVWDc3ODA3Nl9WRUNUT1JfQ19QQVJBTV9GVU5DLEMpID4KLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKSxfYykgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfVkVDVE9SX0NfUEFSQU1fRlVOQwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLSN1bmRlZiBpXwotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfYmFjay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfYmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNjAzYWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcG9wX2JhY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BPUF9CQUNLX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QT1BfQkFDS19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBvcF9iYWNrLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BvcF9iYWNrX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdl9tYXNrPFZlY3RvciwwPiB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QT1BfQkFDS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9mcm9udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTdiNTQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9mcm9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUE9QX0ZST05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QT1BfRlJPTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwb3BfZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcG9wX2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZfbWFzazxWZWN0b3IsMT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUE9QX0ZST05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjlhZTdmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjEwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwwPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDA+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDA+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE7Ci0gICAgdHlwZWRlZiBUMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDE+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yOwotICAgIHR5cGVkZWYgVDEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzsKLSAgICB0eXBlZGVmIFQyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTMgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ7Ci0gICAgdHlwZWRlZiBUMyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188ND4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTU7Ci0gICAgdHlwZWRlZiBUNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTUgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTY7Ci0gICAgdHlwZWRlZiBUNSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw2PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw2PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDc+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW03IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDc+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW04OwotICAgIHR5cGVkZWYgVDcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsOCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw4PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtOCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw4PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8OT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yOSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtOTsKLSAgICB0eXBlZGVmIFQ4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8OT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTkgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188OT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjEwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjEwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTEwOwotICAgIHR5cGVkZWYgVDkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xMCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDEwPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IxMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjEwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjVjOTNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjEwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMV9jCi0gICAgOiB2ZWN0b3IxPCBpbnRlZ3JhbF9jPCBULEMwID4gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMl9jCi0gICAgOiB2ZWN0b3IyPCBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzX2MKLSAgICA6IHZlY3RvcjM8IGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4gPgotewotICAgIHR5cGVkZWYgdmVjdG9yM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNF9jCi0gICAgOiB2ZWN0b3I0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3I1X2MKLSAgICA6IHZlY3RvcjU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjZfYwotICAgIDogdmVjdG9yNjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3I3X2MKLSAgICA6IHZlY3Rvcjc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM2PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3I4X2MKLSAgICA6IHZlY3Rvcjg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3I5X2MKLSAgICA6IHZlY3Rvcjk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjEwX2MKLSAgICA6IHZlY3RvcjEwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IyMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IyMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYjZkN2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDExPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjExPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTExIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTE+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjExPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDEyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTIgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxMj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjEzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjEzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTEzOwotICAgIHR5cGVkZWYgVDEyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDEzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTMgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxMz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE0OwotICAgIHR5cGVkZWYgVDEzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDE0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTQgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxND4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3IxNQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE1OwotICAgIHR5cGVkZWYgVDE0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTE1IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTU+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3IxNgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxNiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTY+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xNiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDE2PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3IxNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTE3IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTc+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxOD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxNyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxOCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDE4PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTggdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxOD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjE5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE5OwotICAgIHR5cGVkZWYgVDE4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDE5PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTkgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxOT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyMD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIwOwotICAgIHR5cGVkZWYgVDE5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDIwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjAgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyMD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMjBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IyMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxNGNjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IyMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxMV9jCi0gICAgOiB2ZWN0b3IxMTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzEwPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMl9jCi0gICAgOiB2ZWN0b3IxMjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyCi0gICAgPgotc3RydWN0IHZlY3RvcjEzX2MKLSAgICA6IHZlY3RvcjEzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzCi0gICAgPgotc3RydWN0IHZlY3RvcjE0X2MKLSAgICA6IHZlY3RvcjE0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzEzPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3IxNV9jCi0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3IxNl9jCi0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTdfYwotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzE2PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3IxOF9jCi0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTlfYwotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMF9jCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzE5PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDcwNWY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjMwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMjQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCB2ZWN0b3IyMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDIxPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIxOwotICAgIHR5cGVkZWYgVDIwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIxID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyMT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MjE+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDIyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyMiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yMiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDIyPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMgotICAgID4KLXN0cnVjdCB2ZWN0b3IyMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDIzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyMz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MjM+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyMyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyNCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDI0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjQgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyND4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgPgotc3RydWN0IHZlY3RvcjI1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI1OwotICAgIHR5cGVkZWYgVDI0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDI1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjUgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyNT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyNj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI2OwotICAgIHR5cGVkZWYgVDI1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDI2PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjYgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyNj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNgotICAgID4KLXN0cnVjdCB2ZWN0b3IyNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI3OwotICAgIHR5cGVkZWYgVDI2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyNz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTI3IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mjc+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNwotICAgID4KLXN0cnVjdCB2ZWN0b3IyOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyNyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyOCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Mjg+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yOCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI4PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOAotICAgID4KLXN0cnVjdCB2ZWN0b3IyOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMjggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyOT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTI5IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mjk+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzMD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQyOSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDMwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzAgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzMD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMzBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IzMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2IxMDQ0NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IzMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjFfYwotICAgIDogdmVjdG9yMjE8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMl9jCi0gICAgOiB2ZWN0b3IyMjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMgotICAgID4KLXN0cnVjdCB2ZWN0b3IyM19jCi0gICAgOiB2ZWN0b3IyMzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMyMj4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjRfYwotICAgIDogdmVjdG9yMjQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjVfYwotICAgIDogdmVjdG9yMjU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1Ci0gICAgPgotc3RydWN0IHZlY3RvcjI2X2MKLSAgICA6IHZlY3RvcjI2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMyNT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjdfYwotICAgIDogdmVjdG9yMjc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3Ci0gICAgPgotc3RydWN0IHZlY3RvcjI4X2MKLSAgICA6IHZlY3RvcjI4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjlfYwotICAgIDogdmVjdG9yMjk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMyOD4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzBfYwotICAgIDogdmVjdG9yMzA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I0MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I0MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MjA0NTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNDAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzMT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMxPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MzE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zMSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDMxPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MzI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zMiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDMyPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyCi0gICAgPgotc3RydWN0IHZlY3RvcjMzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDMzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzMgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzMz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzCi0gICAgPgotc3RydWN0IHZlY3RvcjM0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM0OwotICAgIHR5cGVkZWYgVDMzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTM0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MzQ+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjM1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDM1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzUgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzNT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNQotICAgID4KLXN0cnVjdCB2ZWN0b3IzNgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM2OwotICAgIHR5cGVkZWYgVDM1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MzY+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zNiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDM2PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzNz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Mzc+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zNyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDM3PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNwotICAgID4KLXN0cnVjdCB2ZWN0b3IzOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Mzg+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zOCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDM4PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjM5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mzk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUMzggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDM5PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzkgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzOT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjQwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQwOwotICAgIHR5cGVkZWYgVDM5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjQwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNDBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZDYyZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNDBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgID4KLXN0cnVjdCB2ZWN0b3IzMV9jCi0gICAgOiB2ZWN0b3IzMTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMl9jCi0gICAgOiB2ZWN0b3IzMjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzMT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzNfYwotICAgIDogdmVjdG9yMzM8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzRfYwotICAgIDogdmVjdG9yMzQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjM1X2MKLSAgICA6IHZlY3RvcjM1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzND4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzZfYwotICAgIDogdmVjdG9yMzY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjM3X2MKLSAgICA6IHZlY3RvcjM3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzhfYwotICAgIDogdmVjdG9yMzg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzNz4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzlfYwotICAgIDogdmVjdG9yMzk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MF9jCi0gICAgOiB2ZWN0b3I0MDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjUwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjUwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU2ZTVkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I1MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzY0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwCi0gICAgPgotc3RydWN0IHZlY3RvcjQxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQxIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDEgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0MT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQyOwotICAgIHR5cGVkZWYgVDQxIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00MiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQyPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Mz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00MyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQzPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MwotICAgID4KLXN0cnVjdCB2ZWN0b3I0NAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00NCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQ0PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQ1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDUgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0NT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0Nj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQ2IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDY+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NzsKLSAgICB0eXBlZGVmIFQ0NiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQ3PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDcgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0Nz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NwotICAgID4KLXN0cnVjdCB2ZWN0b3I0OAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ3IGl0ZW00NzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ4OwotICAgIHR5cGVkZWYgVDQ3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDg+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00OCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQ4PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0OT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ2IGl0ZW00NjsKLSAgICB0eXBlZGVmIFQ0NyBpdGVtNDc7Ci0gICAgdHlwZWRlZiBUNDggaXRlbTQ4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDk7Ci0gICAgdHlwZWRlZiBUNDggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0OTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDk+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00OSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQ5PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OQotICAgID4KLXN0cnVjdCB2ZWN0b3I1MAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDUwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I1MCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ3IGl0ZW00NzsKLSAgICB0eXBlZGVmIFQ0OCBpdGVtNDg7Ci0gICAgdHlwZWRlZiBUNDkgaXRlbTQ5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNTA7Ci0gICAgdHlwZWRlZiBUNDkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNTAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjUwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1MDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NTA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW01MCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDUwPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I1MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjUwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTVhNjM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjUwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgPgotc3RydWN0IHZlY3RvcjQxX2MKLSAgICA6IHZlY3RvcjQxPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzQwPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MQotICAgID4KLXN0cnVjdCB2ZWN0b3I0Ml9jCi0gICAgOiB2ZWN0b3I0MjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MgotICAgID4KLXN0cnVjdCB2ZWN0b3I0M19jCi0gICAgOiB2ZWN0b3I0MzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDRfYwotICAgIDogdmVjdG9yNDQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzQzPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NAotICAgID4KLXN0cnVjdCB2ZWN0b3I0NV9jCi0gICAgOiB2ZWN0b3I0NTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDZfYwotICAgIDogdmVjdG9yNDY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NgotICAgID4KLXN0cnVjdCB2ZWN0b3I0N19jCi0gICAgOiB2ZWN0b3I0NzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzQ2PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0N19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NwotICAgID4KLXN0cnVjdCB2ZWN0b3I0OF9jCi0gICAgOiB2ZWN0b3I0ODwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQ2ID4sIGludGVncmFsX2M8IFQsQzQ3ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcsIFQgQzQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ5X2MKLSAgICA6IHZlY3RvcjQ5PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDYgPiwgaW50ZWdyYWxfYzwgVCxDNDcgPiwgaW50ZWdyYWxfYzwgVCxDNDggPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NywgVCBDNDgsIFQgQzQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjUwX2MKLSAgICA6IHZlY3RvcjUwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDYgPiwgaW50ZWdyYWxfYzwgVCxDNDcgPiwgaW50ZWdyYWxfYzwgVCxDNDggPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzQ5PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I1MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjEwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IxMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZmUzMmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjEwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTAgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE7Ci0gICAgdHlwZWRlZiBUMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjsKLSAgICB0eXBlZGVmIFQxIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zOwotICAgIHR5cGVkZWYgVDIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ7Ci0gICAgdHlwZWRlZiBUMyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW01OwotICAgIHR5cGVkZWYgVDQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Nj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNjsKLSAgICB0eXBlZGVmIFQ1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtODsKLSAgICB0eXBlZGVmIFQ3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW05OwotICAgIHR5cGVkZWYgVDggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjEwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjEwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTEwOwotICAgIHR5cGVkZWYgVDkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjEwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjEwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjVjOTNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IxMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwCi0gICAgPgotc3RydWN0IHZlY3RvcjFfYwotICAgIDogdmVjdG9yMTwgaW50ZWdyYWxfYzwgVCxDMCA+ID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxCi0gICAgPgotc3RydWN0IHZlY3RvcjJfYwotICAgIDogdmVjdG9yMjwgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yM19jCi0gICAgOiB2ZWN0b3IzPCBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+ID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzCi0gICAgPgotc3RydWN0IHZlY3RvcjRfYwotICAgIDogdmVjdG9yNDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMz4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNV9jCi0gICAgOiB2ZWN0b3I1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3I2X2MKLSAgICA6IHZlY3RvcjY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yN19jCi0gICAgOiB2ZWN0b3I3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNj4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOF9jCi0gICAgOiB2ZWN0b3I4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOV9jCi0gICAgOiB2ZWN0b3I5PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMF9jCi0gICAgOiB2ZWN0b3IxMDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjIwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IyMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0OTIwOWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjIwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNDQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTExOwotICAgIHR5cGVkZWYgVDEwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDExID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjExPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDEyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTEyOwotICAgIHR5cGVkZWYgVDExIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjExPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjEzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjEzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTEzOwotICAgIHR5cGVkZWYgVDEyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjE0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxMyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxNCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjE1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDE1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3IxNgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxNiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxNz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE3OwotICAgIHR5cGVkZWYgVDE2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3IxOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE4OwotICAgIHR5cGVkZWYgVDE3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjE5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE5OwotICAgIHR5cGVkZWYgVDE4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDE5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcjIwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQxOSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyMCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMjBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMjBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MTRjY2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjIwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgPgotc3RydWN0IHZlY3RvcjExX2MKLSAgICA6IHZlY3RvcjExPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjExX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExCi0gICAgPgotc3RydWN0IHZlY3RvcjEyX2MKLSAgICA6IHZlY3RvcjEyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTNfYwotICAgIDogdmVjdG9yMTM8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTRfYwotICAgIDogdmVjdG9yMTQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTM+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjE1X2MKLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjE2X2MKLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3IxN19jCi0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTY+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjE4X2MKLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3IxOV9jCi0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5Ci0gICAgPgotc3RydWN0IHZlY3RvcjIwX2MKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTk+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjMwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg4ZjVjYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHZlY3RvcjIxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIxIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDIxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDIyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyMiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyMz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIzOwotICAgIHR5cGVkZWYgVDIyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMwotICAgID4KLXN0cnVjdCB2ZWN0b3IyNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI0OwotICAgIHR5cGVkZWYgVDIzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgPgotc3RydWN0IHZlY3RvcjI1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI1OwotICAgIHR5cGVkZWYgVDI0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDI1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1Ci0gICAgPgotc3RydWN0IHZlY3RvcjI2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyNiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2Ci0gICAgPgotc3RydWN0IHZlY3RvcjI3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mjc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDI3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNwotICAgID4KLXN0cnVjdCB2ZWN0b3IyOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyNyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyOCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyOT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI5OwotICAgIHR5cGVkZWYgVDI4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyOTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTMwOwotICAgIHR5cGVkZWYgVDI5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjMwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjMwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjEwNDQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IzMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjFfYwotICAgIDogdmVjdG9yMjE8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMl9jCi0gICAgOiB2ZWN0b3IyMjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMgotICAgID4KLXN0cnVjdCB2ZWN0b3IyM19jCi0gICAgOiB2ZWN0b3IyMzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMyMj4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjRfYwotICAgIDogdmVjdG9yMjQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjVfYwotICAgIDogdmVjdG9yMjU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1Ci0gICAgPgotc3RydWN0IHZlY3RvcjI2X2MKLSAgICA6IHZlY3RvcjI2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMyNT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjdfYwotICAgIDogdmVjdG9yMjc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3Ci0gICAgPgotc3RydWN0IHZlY3RvcjI4X2MKLSAgICA6IHZlY3RvcjI4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjlfYwotICAgIDogdmVjdG9yMjk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMyOD4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzBfYwotICAgIDogdmVjdG9yMzA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjQwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdjNzUzZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNDAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc4NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzMT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMxPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzMj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTMyOwotICAgIHR5cGVkZWYgVDMxIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzMz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzCi0gICAgPgotc3RydWN0IHZlY3RvcjM0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM0OwotICAgIHR5cGVkZWYgVDMzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgID4KLXN0cnVjdCB2ZWN0b3IzNQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjM2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzNz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzOD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM4OwotICAgIHR5cGVkZWYgVDM3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzOT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQzOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjQwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQwOwotICAgIHR5cGVkZWYgVDM5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0MCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNDBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNDBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZDYyZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjQwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjgxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzFfYwotICAgIDogdmVjdG9yMzE8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzJfYwotICAgIDogdmVjdG9yMzI8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMzE+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyCi0gICAgPgotc3RydWN0IHZlY3RvcjMzX2MKLSAgICA6IHZlY3RvcjMzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzCi0gICAgPgotc3RydWN0IHZlY3RvcjM0X2MKLSAgICA6IHZlY3RvcjM0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNAotICAgID4KLXN0cnVjdCB2ZWN0b3IzNV9jCi0gICAgOiB2ZWN0b3IzNTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMzQ+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjM2X2MKLSAgICA6IHZlY3RvcjM2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNgotICAgID4KLXN0cnVjdCB2ZWN0b3IzN19jCi0gICAgOiB2ZWN0b3IzNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjM4X2MKLSAgICA6IHZlY3RvcjM4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMzc+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjM5X2MKLSAgICA6IHZlY3RvcjM5PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDBfYwotICAgIDogdmVjdG9yNDA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjUwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZkMmMzYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEwNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MAotICAgID4KLXN0cnVjdCB2ZWN0b3I0MQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQxPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQxPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0MSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxCi0gICAgPgotc3RydWN0IHZlY3RvcjQyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0MiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Mz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0ND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0NT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0NiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NgotICAgID4KLXN0cnVjdCB2ZWN0b3I0NwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDc7Ci0gICAgdHlwZWRlZiBUNDYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0NyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDcgaXRlbTQ3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDg7Ci0gICAgdHlwZWRlZiBUNDcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0OCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0OT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ2IGl0ZW00NjsKLSAgICB0eXBlZGVmIFQ0NyBpdGVtNDc7Ci0gICAgdHlwZWRlZiBUNDggaXRlbTQ4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDk7Ci0gICAgdHlwZWRlZiBUNDggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0OTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4LCB0eXBlbmFtZSBUNDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNTAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw1MD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNTAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ2IGl0ZW00NjsKLSAgICB0eXBlZGVmIFQ0NyBpdGVtNDc7Ci0gICAgdHlwZWRlZiBUNDggaXRlbTQ4OwotICAgIHR5cGVkZWYgVDQ5IGl0ZW00OTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTUwOwotICAgIHR5cGVkZWYgVDQ5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDUwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1MDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDUwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I1MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I1MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU1YTYzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDFfYwotICAgIDogdmVjdG9yNDE8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxCi0gICAgPgotc3RydWN0IHZlY3RvcjQyX2MKLSAgICA6IHZlY3RvcjQyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyCi0gICAgPgotc3RydWN0IHZlY3RvcjQzX2MKLSAgICA6IHZlY3RvcjQzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MwotICAgID4KLXN0cnVjdCB2ZWN0b3I0NF9jCi0gICAgOiB2ZWN0b3I0NDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDM+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ1X2MKLSAgICA6IHZlY3RvcjQ1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NQotICAgID4KLXN0cnVjdCB2ZWN0b3I0Nl9jCi0gICAgOiB2ZWN0b3I0NjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0Nl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ3X2MKLSAgICA6IHZlY3RvcjQ3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDY+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ4X2MKLSAgICA6IHZlY3RvcjQ4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDYgPiwgaW50ZWdyYWxfYzwgVCxDNDcgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NywgVCBDNDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDlfYwotICAgIDogdmVjdG9yNDk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0NiA+LCBpbnRlZ3JhbF9jPCBULEM0NyA+LCBpbnRlZ3JhbF9jPCBULEM0OCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OCwgVCBDNDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNTBfYwotICAgIDogdmVjdG9yNTA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0NiA+LCBpbnRlZ3JhbF9jPCBULEM0NyA+LCBpbnRlZ3JhbF9jPCBULEM0OCA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDk+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjUwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjEwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGY0YTIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDAKLSAgICAgICAgLCB2ZWN0b3IwPCAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCB2ZWN0b3IxPFQwPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyCi0gICAgICAgICwgdmVjdG9yMjwgVDAsVDEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjQKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMwotICAgICAgICAsIHZlY3RvcjM8IFQwLFQxLFQyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0Ci0gICAgICAgICwgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ1Ci0gICAgICAgICwgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjcKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNgotICAgICAgICAsIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ3Ci0gICAgICAgICwgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ4Ci0gICAgICAgICwgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjEwCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDkKLSAgICAgICAgLCB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IxMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYTE4MjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IxMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwCi0gICAgPgotc3RydWN0IHZlY3RvcjFfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIHZlY3RvcjBfYzxUPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxID4KLSAgICAgICAgLCB2ZWN0b3IxX2M8IFQsQzAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCB2ZWN0b3IyX2M8IFQsQzAsQzEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3I0X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzID4KLSAgICAgICAgLCB2ZWN0b3IzX2M8IFQsQzAsQzEsQzIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3I1X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0ID4KLSAgICAgICAgLCB2ZWN0b3I0X2M8IFQsQzAsQzEsQzIsQzMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3I2X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM1ID4KLSAgICAgICAgLCB2ZWN0b3I1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3I3X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCB2ZWN0b3I2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3I4X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM3ID4KLSAgICAgICAgLCB2ZWN0b3I3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3I5X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM4ID4KLSAgICAgICAgLCB2ZWN0b3I4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgdmVjdG9yOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IyMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMzRmMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IyMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTEKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMTAKLSAgICAgICAgLCB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTIKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMTEKLSAgICAgICAgLCB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTMKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMTIKLSAgICAgICAgLCB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTQKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMTMKLSAgICAgICAgLCB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTUKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMTQKLSAgICAgICAgLCB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTYKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMTUKLSAgICAgICAgLCB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTcKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMTYKLSAgICAgICAgLCB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTgKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMTcKLSAgICAgICAgLCB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTkKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMTgKLSAgICAgICAgLCB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjAKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMTkKLSAgICAgICAgLCB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMjBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjIwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTFlNzhlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMjBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTFfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzEwID4KLSAgICAgICAgLCB2ZWN0b3IxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTJfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzExID4KLSAgICAgICAgLCB2ZWN0b3IxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3IxM19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIHZlY3RvcjEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTRfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzEzID4KLSAgICAgICAgLCB2ZWN0b3IxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTVfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzE0ID4KLSAgICAgICAgLCB2ZWN0b3IxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3IxNl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIHZlY3RvcjE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTdfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzE2ID4KLSAgICAgICAgLCB2ZWN0b3IxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMThfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzE3ID4KLSAgICAgICAgLCB2ZWN0b3IxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3IxOV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIHZlY3RvcjE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjBfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzE5ID4KLSAgICAgICAgLCB2ZWN0b3IxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IzMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NmQ1ZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IzMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCB2ZWN0b3IyMQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyMAotICAgICAgICAsIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyMQotICAgICAgICAsIHZlY3RvcjIxPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMgotICAgID4KLXN0cnVjdCB2ZWN0b3IyMwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyMgotICAgICAgICAsIHZlY3RvcjIyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMwotICAgID4KLXN0cnVjdCB2ZWN0b3IyNAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyMwotICAgICAgICAsIHZlY3RvcjIzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgID4KLXN0cnVjdCB2ZWN0b3IyNQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyNAotICAgICAgICAsIHZlY3RvcjI0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNQotICAgID4KLXN0cnVjdCB2ZWN0b3IyNgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyNQotICAgICAgICAsIHZlY3RvcjI1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNgotICAgID4KLXN0cnVjdCB2ZWN0b3IyNwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyNgotICAgICAgICAsIHZlY3RvcjI2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNwotICAgID4KLXN0cnVjdCB2ZWN0b3IyOAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyNwotICAgICAgICAsIHZlY3RvcjI3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOAotICAgID4KLXN0cnVjdCB2ZWN0b3IyOQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyOAotICAgICAgICAsIHZlY3RvcjI4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQyOQotICAgICAgICAsIHZlY3RvcjI5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMzBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjMwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2ZhMjM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMzBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgPgotc3RydWN0IHZlY3RvcjIxX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyMCA+Ci0gICAgICAgICwgdmVjdG9yMjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjJfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCB2ZWN0b3IyMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyCi0gICAgPgotc3RydWN0IHZlY3RvcjIzX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyMiA+Ci0gICAgICAgICwgdmVjdG9yMjJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzCi0gICAgPgotc3RydWN0IHZlY3RvcjI0X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyMyA+Ci0gICAgICAgICwgdmVjdG9yMjNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjVfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCB2ZWN0b3IyNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1Ci0gICAgPgotc3RydWN0IHZlY3RvcjI2X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyNSA+Ci0gICAgICAgICwgdmVjdG9yMjVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2Ci0gICAgPgotc3RydWN0IHZlY3RvcjI3X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyNiA+Ci0gICAgICAgICwgdmVjdG9yMjZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjhfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCB2ZWN0b3IyN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4Ci0gICAgPgotc3RydWN0IHZlY3RvcjI5X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyOCA+Ci0gICAgICAgICwgdmVjdG9yMjhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5Ci0gICAgPgotc3RydWN0IHZlY3RvcjMwX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMyOSA+Ci0gICAgICAgICwgdmVjdG9yMjlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I0MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjQwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ExNDIzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjQwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzEKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMzAKLSAgICAgICAgLCB2ZWN0b3IzMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzIKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMzEKLSAgICAgICAgLCB2ZWN0b3IzMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzMKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMzIKLSAgICAgICAgLCB2ZWN0b3IzMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzQKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMzMKLSAgICAgICAgLCB2ZWN0b3IzMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzUKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMzQKLSAgICAgICAgLCB2ZWN0b3IzNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzYKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMzUKLSAgICAgICAgLCB2ZWN0b3IzNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzcKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMzYKLSAgICAgICAgLCB2ZWN0b3IzNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzgKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMzcKLSAgICAgICAgLCB2ZWN0b3IzNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzkKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMzgKLSAgICAgICAgLCB2ZWN0b3IzODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDAKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMzkKLSAgICAgICAgLCB2ZWN0b3IzOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I0MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNDBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNzQ4YTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I0MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgPgotc3RydWN0IHZlY3RvcjMxX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgdmVjdG9yMzBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMzEgPgotICAgICAgICAsIHZlY3RvcjMxX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzM19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMzIgPgotICAgICAgICAsIHZlY3RvcjMyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzCi0gICAgPgotc3RydWN0IHZlY3RvcjM0X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgdmVjdG9yMzNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNAotICAgID4KLXN0cnVjdCB2ZWN0b3IzNV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMzQgPgotICAgICAgICAsIHZlY3RvcjM0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNQotICAgID4KLXN0cnVjdCB2ZWN0b3IzNl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMzUgPgotICAgICAgICAsIHZlY3RvcjM1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjM3X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgdmVjdG9yMzZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNwotICAgID4KLXN0cnVjdCB2ZWN0b3IzOF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMzcgPgotICAgICAgICAsIHZlY3RvcjM3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOAotICAgID4KLXN0cnVjdCB2ZWN0b3IzOV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMzggPgotICAgICAgICAsIHZlY3RvcjM4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjQwX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgdmVjdG9yMzlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I1MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNmFlNjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I1MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDEKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNDAKLSAgICAgICAgLCB2ZWN0b3I0MDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDIKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNDEKLSAgICAgICAgLCB2ZWN0b3I0MTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDMKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNDIKLSAgICAgICAgLCB2ZWN0b3I0MjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDQKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNDMKLSAgICAgICAgLCB2ZWN0b3I0MzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDUKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNDQKLSAgICAgICAgLCB2ZWN0b3I0NDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDYKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNDUKLSAgICAgICAgLCB2ZWN0b3I0NTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ2IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDcKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNDYKLSAgICAgICAgLCB2ZWN0b3I0NjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCxUNDUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDgKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNDcKLSAgICAgICAgLCB2ZWN0b3I0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCxUNDUsVDQ2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDkKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNDgKLSAgICAgICAgLCB2ZWN0b3I0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCxUNDUsVDQ2LFQ0NyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4LCB0eXBlbmFtZSBUNDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNTAKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUNDkKLSAgICAgICAgLCB2ZWN0b3I0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQsVDI1LFQyNixUMjcsVDI4LFQyOSxUMzAsVDMxLFQzMixUMzMsVDM0LFQzNSxUMzYsVDM3LFQzOCxUMzksVDQwLFQ0MSxUNDIsVDQzLFQ0NCxUNDUsVDQ2LFQ0NyxUNDggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I1MCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjUwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjljNmExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDFfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQwID4KLSAgICAgICAgLCB2ZWN0b3I0MF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDJfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQxID4KLSAgICAgICAgLCB2ZWN0b3I0MV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MgotICAgID4KLXN0cnVjdCB2ZWN0b3I0M19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIHZlY3RvcjQyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDRfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQzID4KLSAgICAgICAgLCB2ZWN0b3I0M19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDVfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQ0ID4KLSAgICAgICAgLCB2ZWN0b3I0NF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NQotICAgID4KLXN0cnVjdCB2ZWN0b3I0Nl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDUgPgotICAgICAgICAsIHZlY3RvcjQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDdfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQ2ID4KLSAgICAgICAgLCB2ZWN0b3I0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDhfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQ3ID4KLSAgICAgICAgLCB2ZWN0b3I0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1LEM0NiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OAotICAgID4KLXN0cnVjdCB2ZWN0b3I0OV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDggPgotICAgICAgICAsIHZlY3RvcjQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUsQzQ2LEM0NyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OCwgVCBDNDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNTBfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQ5ID4KLSAgICAgICAgLCB2ZWN0b3I0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1LEM0NixDNDcsQzQ4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfYmFjay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wdXNoX2JhY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjFkOWIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfYmFjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUFVTSF9CQUNLX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2JhY2suaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZfaXRlbTxULFZlY3RvciwwPiB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wdXNoX2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjQzZmVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfZnJvbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2Zyb250LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZfaXRlbTxULFZlY3RvciwxPiB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QVVNIX0ZST05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM4N2FmYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL08xX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLSAgICA6IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLX07Ci0KLSNlbHNlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxOPiA+Ci0gICAgOiBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxOPiA+Ci17Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9TSVpFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZDUxZDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9UQUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1RBR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHRhZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotc3RydWN0IHZfaXRlcl90YWc7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLXN0cnVjdCB2ZWN0b3JfdGFnOwotI2Vsc2UKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKSA+IHN0cnVjdCB2ZWN0b3JfdGFnOwotI2VuZGlmCi0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfVEFHX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdmVjdG9yMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy92ZWN0b3IwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFhZGIxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy92ZWN0b3IwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9WRUNUT1IwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9WRUNUT1IwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIER1bW15ID0gbmEgPiBzdHJ1Y3QgdmVjdG9yMDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdmVjdG9yMDxuYT4KLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZyB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IwICAgICAgICAgdHlwZTsKLSAgICB0eXBlZGVmIGxvbmdfPDMyNzY4PiAgICBsb3dlcl9ib3VuZF87Ci0gICAgdHlwZWRlZiBsb3dlcl9ib3VuZF8gICAgdXBwZXJfYm91bmRfOwotICAgIHR5cGVkZWYgbG9uZ188MD4gICAgICAgIHNpemU7Ci0KLSAgICBzdGF0aWMgYXV4Ojp0eXBlX3dyYXBwZXI8dm9pZF8+IGl0ZW1fKC4uLik7Ci0jZWxzZQotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjAgdHlwZTsKLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0wOwotICAgIAotICAgIHR5cGVkZWYgdl9pdGVyPHZlY3RvcjA8PiwwPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IwPD4sMD4gZW5kOwotI2VuZGlmCi19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfVkVDVE9SMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUxMWI2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wdXNoX2Zyb250LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcG9wX2Zyb250LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9iYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcG9wX2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vY2xlYXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9PMV9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2VtcHR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdmVjdG9yMC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzZiYmFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdmVjdG9yMF9jCi0gICAgOiB2ZWN0b3IwPD4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkYjQ4Y2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjEwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjEwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMTAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjEwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCAxMCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IxMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FmZDFmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IxMF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjEwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IxMF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjBfYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjEwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDEsIDEwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMTBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjBhMGQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IyMF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IyMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjIwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yMjAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDExLCAyMCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IyMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyNGVkMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IyMF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IyMF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwX2MuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3IyMF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxMSwgMjAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IyMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlZTRlNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjMwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjMwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMzAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3IzMC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMjEsIDMwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjMwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2ExMGYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjMwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjMwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjBfYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjMwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMjEsIDMwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVVNFX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjMwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU1ZmZkNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNDBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNDBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3I0MC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjQwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgzMSwgNDAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNDBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNDdhMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNDBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yNDBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMF9jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yNDBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMzEsIDQwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNDBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmE5MTZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I1MF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I1MF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjUwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yNTAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDQxLCA1MCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I1MF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JkY2Y2NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I1MF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3I1MF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwX2MuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3I1MF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCg0MSwgNTAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I1MF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdm9pZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92b2lkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFhMjM3Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92b2lkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVk9JRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZPSURfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2b2lkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi0vLyAgW0pERyBGZWItNC0yMDAzXSBtYWRlIHZvaWRfIGEgY29tcGxldGUgdHlwZSB0byBhbGxvdyBpdCB0byBiZQotLy8gIGluc3RhbnRpYXRlZCBzbyB0aGF0IGl0IGNhbiBiZSBwYXNzZWQgaW4gYXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlCi0vLyAgdXNlZCB0byBzZWxlY3QgYW4gb3ZlcmxvYWRlZCBmdW5jdGlvbi4gUG9zc2libGUgdXNlIGluY2x1ZGVzIHNpZ25hbGluZwotLy8gIGEgemVybyBhcml0eSBmdW5jdG9yIGV2YWx1YXRpb24gY2FsbC4KLXN0cnVjdCB2b2lkXyB7IHR5cGVkZWYgdm9pZF8gdHlwZTsgfTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc192b2lkXwotICAgIDogZmFsc2VfCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdXNpbmcgZmFsc2VfOjp2YWx1ZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3ZvaWRfPHZvaWRfPgotICAgIDogdHJ1ZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyB0cnVlXzo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19ub3Rfdm9pZF8KLSAgICA6IHRydWVfCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdXNpbmcgdHJ1ZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbm90X3ZvaWRfPHZvaWRfPgotICAgIDogZmFsc2VfCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdXNpbmcgZmFsc2VfOjp2YWx1ZTsKLSNlbmRpZgotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGlzX3ZvaWRfKQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGlzX25vdF92b2lkXykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WT0lEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdm9pZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdm9pZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjJhNzZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZvaWRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVk9JRF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WT0lEX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZvaWRfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLXN0cnVjdCB2b2lkXzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTCh2b2lkXykKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WT0lEX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbmV4dF9wcmlvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L25leHRfcHJpb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTYwMjgwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbmV4dF9wcmlvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vLyAgQm9vc3QgbmV4dF9wcmlvci5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMgYW5kIERhbmllbCBXYWxrZXIgMTk5OS0yMDAzLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgMTMgRGVjIDIwMDMgIEFkZGVkIG5leHQoeCwgbikgYW5kIHByaW9yKHgsIG4pIChEYW5pZWwgV2Fsa2VyKQotCi0jaWZuZGVmIE5ETkJPT1NUX05FWFRfUFJJT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX05FWFRfUFJJT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gIEhlbHBlciBmdW5jdGlvbnMgZm9yIGNsYXNzZXMgbGlrZSBiaWRpcmVjdGlvbmFsIGl0ZXJhdG9ycyBub3Qgc3VwcG9ydGluZwotLy8gIG9wZXJhdG9yKyBhbmQgb3BlcmF0b3ItCi0vLwotLy8gIFVzYWdlOgotLy8gICAgY29uc3Qgc3RkOjpsaXN0PFQ+OjppdGVyYXRvciBwID0gZ2V0X3NvbWVfaXRlcmF0b3IoKTsKLS8vICAgIGNvbnN0IHN0ZDo6bGlzdDxUPjo6aXRlcmF0b3IgcHJldiA9IG5kbmJvb3N0OjpwcmlvcihwKTsKLS8vICAgIGNvbnN0IHN0ZDo6bGlzdDxUPjo6aXRlcmF0b3IgbmV4dCA9IG5kbmJvb3N0OjpuZXh0KHByZXYsIDIpOwotCi0vLyAgQ29udHJpYnV0ZWQgYnkgRGF2ZSBBYnJhaGFtcwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBUIG5leHQoVCB4KSB7IHJldHVybiArK3g7IH0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERpc3RhbmNlPgotaW5saW5lIFQgbmV4dChUIHgsIERpc3RhbmNlIG4pCi17Ci0gICAgc3RkOjphZHZhbmNlKHgsIG4pOwotICAgIHJldHVybiB4OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBUIHByaW9yKFQgeCkgeyByZXR1cm4gLS14OyB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEaXN0YW5jZT4KLWlubGluZSBUIHByaW9yKFQgeCwgRGlzdGFuY2UgbikKLXsKLSAgICBzdGQ6OmFkdmFuY2UoeCwgLW4pOwotICAgIHJldHVybiB4OwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX05FWFRfUFJJT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L25vbl90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvbm9uX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTUwYjFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvbm9uX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vICAgICAgICAgICAoQykgQ29weXJpZ2h0IEdlbm5hcm8gUHJvdGEgMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9OX1RZUEVfSFBQX0dQXzIwMDMwNDE3Ci0jZGVmaW5lIE5ETkJPT1NUX05PTl9UWVBFX0hQUF9HUF8yMDAzMDQxNwotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgLy8gSnVzdCBhIHNpbXBsZSAiZW52ZWxvcGUiIGZvciBub24tdHlwZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLiBVc2VmdWwKLSAgLy8gdG8gd29yayBhcm91bmQgc29tZSBNU1ZDIGRlZmljaWVuY2llcy4KLQotIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBUIG4+Ci0gc3RydWN0IG5vbl90eXBlIHsgfTsKLQotCi19Ci0KLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvbm9uY29weWFibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9ub25jb3B5YWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhZTlkMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9ub25jb3B5YWJsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vLyAgQm9vc3Qgbm9uY29weWFibGUuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDE5OTktMjAwMy4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5IGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX05PTkNPUFlBQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9OT05DT1BZQUJMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICBQcml2YXRlIGNvcHkgY29uc3RydWN0b3IgYW5kIGNvcHkgYXNzaWdubWVudCBlbnN1cmUgY2xhc3NlcyBkZXJpdmVkIGZyb20KLS8vICBjbGFzcyBub25jb3B5YWJsZSBjYW5ub3QgYmUgY29waWVkLgotCi0vLyAgQ29udHJpYnV0ZWQgYnkgRGF2ZSBBYnJhaGFtcwotCi1uYW1lc3BhY2Ugbm9uY29weWFibGVfICAvLyBwcm90ZWN0aW9uIGZyb20gdW5pbnRlbmRlZCBBREwKLXsKLSAgY2xhc3Mgbm9uY29weWFibGUKLSAgewotICAgcHJvdGVjdGVkOgotI2lmbmRlZiBORE5CT09TVF9OT19ERUZBVUxURURfRlVOQ1RJT05TCi0gICAgTkROQk9PU1RfQ09OU1RFWFBSIG5vbmNvcHlhYmxlKCkgPSBkZWZhdWx0OwotICAgIH5ub25jb3B5YWJsZSgpID0gZGVmYXVsdDsKLSNlbHNlCi0gICAgbm9uY29weWFibGUoKSB7fQotICAgICAgfm5vbmNvcHlhYmxlKCkge30KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19ERUxFVEVEX0ZVTkNUSU9OUwotICAgICAgICBub25jb3B5YWJsZSggY29uc3Qgbm9uY29weWFibGUmICkgPSBkZWxldGU7Ci0gICAgICAgIG5vbmNvcHlhYmxlJiBvcGVyYXRvcj0oIGNvbnN0IG5vbmNvcHlhYmxlJiApID0gZGVsZXRlOwotI2Vsc2UKLSAgICBwcml2YXRlOiAgLy8gZW1waGFzaXplIHRoZSBmb2xsb3dpbmcgbWVtYmVycyBhcmUgcHJpdmF0ZQotICAgICAgbm9uY29weWFibGUoIGNvbnN0IG5vbmNvcHlhYmxlJiApOwotICAgICAgbm9uY29weWFibGUmIG9wZXJhdG9yPSggY29uc3Qgbm9uY29weWFibGUmICk7Ci0jZW5kaWYKLSAgfTsKLX0KLQotdHlwZWRlZiBub25jb3B5YWJsZV86Om5vbmNvcHlhYmxlIG5vbmNvcHlhYmxlOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX05PTkNPUFlBQkxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9ub25lLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvbm9uZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0ZTE5MjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9ub25lLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05PTkVfMTdTRVAyMDAzX0hQUAotI2RlZmluZSBORE5CT09TVF9OT05FXzE3U0VQMjAwM19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L25vbmVfdC5ocHAiCi0KLS8vIE5PVEU6IEJvcmxhbmQgdXNlcnMgaGF2ZSB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIG91dHNpZGUgYW55IHByZWNvbXBpbGVkIGhlYWRlcnMKLS8vIChiY2M8PTUuNjQgY2Fubm90IGluY2x1ZGUgaW5zdGFuY2UgZGF0YSBpbiBhIHByZWNvbXBpbGVkIGhlYWRlcikKLS8vICAtLSAqIFRvIGJlIHZlcmlmaWVkLCBub3cgdGhhdCB0aGVyZSdzIG5vIHVubmFtZWQgbmFtZXNwYWNlCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5vbmVfdCBjb25zdCBub25lID0gKHN0YXRpY19jYXN0PG5vbmVfdD4oMCkpIDsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvbm9uZV90LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvbm9uZV90LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY4NDI4OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L25vbmVfdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05PTkVfVF8xN1NFUDIwMDNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05PTkVfVF8xN1NFUDIwMDNfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgeyBzdHJ1Y3Qgbm9uZV9oZWxwZXJ7fTsgfQotCi10eXBlZGVmIGludCBkZXRhaWw6Om5vbmVfaGVscGVyOjoqbm9uZV90IDsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2JvdW5kcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9ib3VuZHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTlkZTgxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2JvdW5kcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CT1VORFNfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQk9VTkRTXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvYm91bmRzLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgCi17Ci0KLXRlbXBsYXRlPGNsYXNzIE4+Ci1zdHJ1Y3QgYm91bmRzIDogYm91bmRzZGV0YWlsOjpnZXRfaW1wbDxOPjo6dHlwZQote30gOwotCi19IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY2FzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc5OWZjZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jYXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotLy8KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLwotLy8gICAgMTkgTm92IDIwMDEgU3ludGF0aWMgY2hhbmdlcyBhcyBzdWdnZXN0ZWQgYnkgRGFyaW4gQWRsZXIgKEZlcm5hbmRvIENhY2Npb2xhKQotLy8gICAgMDggTm92IDIwMDEgRml4ZXMgdG8gYWNjb21tb2RhdGUgTVNWQyAoRmVybmFuZG8gQ2FjY2lvbGEpCi0vLyAgICAwNCBOb3YgMjAwMSBGaXhlcyB0byBhY2NvbW1vZGF0ZSBnY2MyLjkyIChGZXJuYW5kbyBDYWNjaW9sYSkKLS8vICAgIDMwIE9jdCAyMDAxIFNvbWUgZml4ZXMgc3VnZ2VzdGVkIGJ5IERhcnlsZSBXYWxrZXIgKEZlcm5hbmRvIENhY2Npb2xhKQotLy8gICAgMjUgT2N0IDIwMDEgSW5pdGlhbCBib29zdGlmaWNhdGlvbiAoRmVybmFuZG8gQ2FjY2lvbGEpCi0vLyAgICAyMyBKYW4gMjAwNCBJbml0YWwgYWRkIHRvIGN2cyAocG9zdCByZXZpZXcpcwotLy8gICAgMjIgSnVuIDIwMTEgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lhbGl6aW5nIGNhc3QgcG9saWNpZXMgdmlhIG51bWVyaWNfY2FzdF90cmFpdHMgKEJyYW5kb24gS29obikuCi0vLwotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ0FTVF8yNU9DVDIwMDFfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DQVNUXzI1T0NUMjAwMV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgyKSkKLQotIyAgaW5jbHVkZTxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL29sZF9udW1lcmljX2Nhc3QuaHBwPgotCi0jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL251bWVyaWNfY2FzdF90cmFpdHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IAotICAgIGlubGluZSBUYXJnZXQgbnVtZXJpY19jYXN0KCBTb3VyY2UgYXJnICkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbnVtZXJpYzo6Y29udmVyc2lvbl90cmFpdHM8VGFyZ2V0LCBTb3VyY2U+ICAgY29udl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgbnVtZXJpYzo6bnVtZXJpY19jYXN0X3RyYWl0czxUYXJnZXQsIFNvdXJjZT4gY2FzdF90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZlcnRlcgotICAgICAgICAgICAgPAotICAgICAgICAgICAgICAgIFRhcmdldCwKLSAgICAgICAgICAgICAgICBTb3VyY2UsIAotICAgICAgICAgICAgICAgIGNvbnZfdHJhaXRzLAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNhc3RfdHJhaXRzOjpvdmVyZmxvd19wb2xpY3ksIAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNhc3RfdHJhaXRzOjpyb3VuZGluZ19wb2xpY3ksIAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpudW1lcmljOjpyYXdfY29udmVydGVyPCBjb252X3RyYWl0cyA+LAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNhc3RfdHJhaXRzOjpyYW5nZV9jaGVja2luZ19wb2xpY3kKLSAgICAgICAgICAgID4gY29udmVydGVyOwotICAgICAgICByZXR1cm4gY29udmVydGVyOjpjb252ZXJ0KGFyZyk7Ci0gICAgfQotICAgIAotICAgIHVzaW5nIG51bWVyaWM6OmJhZF9udW1lcmljX2Nhc3Q7Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJzaW9uX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJzaW9uX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMjVkOGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVyc2lvbl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ09OVkVSU0lPTl9UUkFJVFNfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NPTlZFUlNJT05fVFJBSVRTX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnNpb25fdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUz4KLXN0cnVjdCBjb252ZXJzaW9uX3RyYWl0cyAKLSAgICA6IGNvbnZkZXRhaWw6OmdldF9jb252ZXJzaW9uX3RyYWl0czxULFM+Ojp0eXBlIAotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNvbnZkZXRhaWw6OmdldF9jb252ZXJzaW9uX3RyYWl0czxULFM+Ojp0eXBlIGJhc2VfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV86OnRhcmdldF90eXBlICAgICB0YXJnZXRfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfOjpzb3VyY2VfdHlwZSAgICAgc291cmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlXzo6cmVzdWx0X3R5cGUgICAgIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV86OmFyZ3VtZW50X3R5cGUgICBhcmd1bWVudF90eXBlOwotI2VuZGlmCi19IDsKLQotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYwotCi0jZW5kaWYKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTc1MmZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DT05WRVJURVJfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NPTlZFUlRFUl9GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnNpb25fdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyX3BvbGljaWVzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvY29udmVydGVyLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgCi17Ci0KLXRlbXBsYXRlPGNsYXNzIFQsCi0gICAgICAgICBjbGFzcyBTLAotICAgICAgICAgY2xhc3MgVHJhaXRzICAgICAgICAgICA9IGNvbnZlcnNpb25fdHJhaXRzPFQsUz4sCi0gICAgICAgICBjbGFzcyBPdmVyZmxvd0hhbmRsZXIgID0gZGVmX292ZXJmbG93X2hhbmRsZXIsCi0gICAgICAgICBjbGFzcyBGbG9hdDJJbnRSb3VuZGVyID0gVHJ1bmM8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjpzb3VyY2VfdHlwZT4gICwKLSAgICAgICAgIGNsYXNzIFJhd0NvbnZlcnRlciAgICAgPSByYXdfY29udmVydGVyPFRyYWl0cz4sCi0gICAgICAgICBjbGFzcyBVc2VyUmFuZ2VDaGVja2VyID0gVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIKLSAgICAgICAgPgotc3RydWN0IGNvbnZlcnRlciA6IGNvbnZkZXRhaWw6OmdldF9jb252ZXJ0ZXJfaW1wbDxUcmFpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJmbG93SGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXQySW50Um91bmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmF3Q29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyUmFuZ2VDaGVja2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotewotICB0eXBlZGVmIFRyYWl0cyB0cmFpdHMgOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6cmVzdWx0X3R5cGUgICByZXN1bHRfdHlwZSAgIDsKLQotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpICggYXJndW1lbnRfdHlwZSBzICkgY29uc3QgeyByZXR1cm4gdGhpcy0+Y29udmVydChzKSA7IH0KLX0gOwotCi0KLQotdGVtcGxhdGU8Y2xhc3MgUywKLSAgICAgICAgIGNsYXNzIE92ZXJmbG93SGFuZGxlciAgPSBkZWZfb3ZlcmZsb3dfaGFuZGxlciwKLSAgICAgICAgIGNsYXNzIEZsb2F0MkludFJvdW5kZXIgPSBUcnVuYzxTPiAgLAotICAgICAgICAgY2xhc3MgVXNlclJhbmdlQ2hlY2tlciA9IFVzZUludGVybmFsUmFuZ2VDaGVja2VyCi0gICAgICAgID4KLXN0cnVjdCBtYWtlX2NvbnZlcnRlcl9mcm9tCi17Ci0gIHRlbXBsYXRlPGNsYXNzIFQsCi0gICAgICAgICAgIGNsYXNzIFRyYWl0cyAgICAgICA9IGNvbnZlcnNpb25fdHJhaXRzPFQsUz4sCi0gICAgICAgICAgIGNsYXNzIFJhd0NvbnZlcnRlciA9IHJhd19jb252ZXJ0ZXI8VHJhaXRzPgotICAgICAgICAgID4gCi0gIHN0cnVjdCB0bwotICB7Ci0gICAgdHlwZWRlZiBjb252ZXJ0ZXI8VCxTLFRyYWl0cyxPdmVyZmxvd0hhbmRsZXIsRmxvYXQySW50Um91bmRlcixSYXdDb252ZXJ0ZXIsVXNlclJhbmdlQ2hlY2tlcj4gdHlwZSA7Ci0gIH0gOwotCi19IDsKLQotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYwotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXJfcG9saWNpZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyX3BvbGljaWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFjOTc4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXJfcG9saWNpZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ09OVkVSVEVSX1BPTElDSUVTX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DT05WRVJURVJfUE9MSUNJRVNfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgPHR5cGVpbmZvPiAvLyBmb3Igc3RkOjpiYWRfY2FzdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9jbWF0aC5ocHA+IC8vIGZvciBzdGQ6OmZsb29yIGFuZCBzdGQ6OmNlaWwKLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2lmLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljCi17Ci0KLXRlbXBsYXRlPGNsYXNzIFM+Ci1zdHJ1Y3QgVHJ1bmMKLXsKLSAgdHlwZWRlZiBTIHNvdXJjZV90eXBlIDsKLQotICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPCBpc19hcml0aG1ldGljPFM+LFMsUyBjb25zdCY+Ojp0eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gIHN0YXRpYyBzb3VyY2VfdHlwZSBuZWFyYnlpbnQgKCBhcmd1bWVudF90eXBlIHMgKQotICB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi0gICAgdXNpbmcgc3RkOjpmbG9vciA7Ci0gICAgdXNpbmcgc3RkOjpjZWlsICA7Ci0jZW5kaWYKLQotICAgIHJldHVybiBzIDwgc3RhdGljX2Nhc3Q8Uz4oMCkgPyBjZWlsKHMpIDogZmxvb3IocykgOwotICB9Ci0KLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8IHN0ZDo6ZmxvYXRfcm91bmRfc3R5bGUsIHN0ZDo6cm91bmRfdG93YXJkX3plcm8+IHJvdW5kX3N0eWxlIDsKLX0gOwotCi0KLQotdGVtcGxhdGU8Y2xhc3MgUz4KLXN0cnVjdCBGbG9vcgotewotICB0eXBlZGVmIFMgc291cmNlX3R5cGUgOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88IGlzX2FyaXRobWV0aWM8Uz4sUyxTIGNvbnN0Jj46OnR5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLSAgICB1c2luZyBzdGQ6OmZsb29yIDsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZsb29yKHMpIDsKLSAgfQotCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPCBzdGQ6OmZsb2F0X3JvdW5kX3N0eWxlLCBzdGQ6OnJvdW5kX3Rvd2FyZF9uZWdfaW5maW5pdHk+IHJvdW5kX3N0eWxlIDsKLX0gOwotCi10ZW1wbGF0ZTxjbGFzcyBTPgotc3RydWN0IENlaWwKLXsKLSAgdHlwZWRlZiBTIHNvdXJjZV90eXBlIDsKLQotICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPCBpc19hcml0aG1ldGljPFM+LFMsUyBjb25zdCY+Ojp0eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gIHN0YXRpYyBzb3VyY2VfdHlwZSBuZWFyYnlpbnQgKCBhcmd1bWVudF90eXBlIHMgKQotICB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi0gICAgdXNpbmcgc3RkOjpjZWlsIDsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGNlaWwocykgOwotICB9Ci0KLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8IHN0ZDo6ZmxvYXRfcm91bmRfc3R5bGUsIHN0ZDo6cm91bmRfdG93YXJkX2luZmluaXR5PiByb3VuZF9zdHlsZSA7Ci19IDsKLQotdGVtcGxhdGU8Y2xhc3MgUz4KLXN0cnVjdCBSb3VuZEV2ZW4KLXsKLSAgdHlwZWRlZiBTIHNvdXJjZV90eXBlIDsKLQotICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPCBpc19hcml0aG1ldGljPFM+LFMsUyBjb25zdCY+Ojp0eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gIHN0YXRpYyBzb3VyY2VfdHlwZSBuZWFyYnlpbnQgKCBhcmd1bWVudF90eXBlIHMgKQotICB7Ci0gICAgLy8gQWxnb3JpdGhtIGNvbnRyaWJ1dGVkIGJ5IEd1aWxsYXVtZSBNZWxxdWlvbmQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotICAgIHVzaW5nIHN0ZDo6Zmxvb3IgOwotICAgIHVzaW5nIHN0ZDo6Y2VpbCAgOwotI2VuZGlmCi0KLSAgICAvLyBvbmx5IHdvcmtzIGluc2lkZSB0aGUgcmFuZ2Ugbm90IGF0IHRoZSBib3VuZGFyaWVzCi0gICAgUyBwcmV2ID0gZmxvb3Iocyk7Ci0gICAgUyBuZXh0ID0gY2VpbChzKTsKLQotICAgIFMgcnQgPSAocyAtIHByZXYpIC0gKG5leHQgLSBzKTsgLy8gcmVtYWluZGVyIHR5cGUKLQotICAgIFMgY29uc3QgemVybygwLjApOwotICAgIFMgY29uc3QgdHdvKDIuMCk7Ci0KLSAgICBpZiAoIHJ0IDwgemVybyApCi0gICAgICByZXR1cm4gcHJldjsKLSAgICBlbHNlIGlmICggcnQgPiB6ZXJvICkKLSAgICAgIHJldHVybiBuZXh0OwotICAgIGVsc2UKLSAgICB7Ci0gICAgICBib29sIGlzX3ByZXZfZXZlbiA9IHR3byAqIGZsb29yKHByZXYgLyB0d28pID09IHByZXYgOwotICAgICAgcmV0dXJuICggaXNfcHJldl9ldmVuID8gcHJldiA6IG5leHQgKSA7Ci0gICAgfQotICB9Ci0KLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8IHN0ZDo6ZmxvYXRfcm91bmRfc3R5bGUsIHN0ZDo6cm91bmRfdG9fbmVhcmVzdD4gcm91bmRfc3R5bGUgOwotfSA7Ci0KLQotZW51bSByYW5nZV9jaGVja19yZXN1bHQKLXsKLSAgY0luUmFuZ2UgICAgID0gMCAsCi0gIGNOZWdPdmVyZmxvdyA9IDEgLAotICBjUG9zT3ZlcmZsb3cgPSAyCi19IDsKLQotY2xhc3MgYmFkX251bWVyaWNfY2FzdCA6IHB1YmxpYyBzdGQ6OmJhZF9jYXN0Ci17Ci0gIHB1YmxpYzoKLQotICAgIHZpcnR1YWwgY29uc3QgY2hhciAqIHdoYXQoKSBjb25zdCB0aHJvdygpCi0gICAgICB7ICByZXR1cm4gImJhZCBudW1lcmljIGNvbnZlcnNpb246IG92ZXJmbG93IjsgfQotfTsKLQotY2xhc3MgbmVnYXRpdmVfb3ZlcmZsb3cgOiBwdWJsaWMgYmFkX251bWVyaWNfY2FzdAotewotICBwdWJsaWM6Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKiB3aGF0KCkgY29uc3QgdGhyb3coKQotICAgICAgeyAgcmV0dXJuICJiYWQgbnVtZXJpYyBjb252ZXJzaW9uOiBuZWdhdGl2ZSBvdmVyZmxvdyI7IH0KLX07Ci1jbGFzcyBwb3NpdGl2ZV9vdmVyZmxvdyA6IHB1YmxpYyBiYWRfbnVtZXJpY19jYXN0Ci17Ci0gIHB1YmxpYzoKLQotICAgIHZpcnR1YWwgY29uc3QgY2hhciAqIHdoYXQoKSBjb25zdCB0aHJvdygpCi0gICAgICB7IHJldHVybiAiYmFkIG51bWVyaWMgY29udmVyc2lvbjogcG9zaXRpdmUgb3ZlcmZsb3ciOyB9Ci19OwotCi1zdHJ1Y3QgZGVmX292ZXJmbG93X2hhbmRsZXIKLXsKLSAgdm9pZCBvcGVyYXRvcigpICggcmFuZ2VfY2hlY2tfcmVzdWx0IHIgKSAvLyB0aHJvdyhuZWdhdGl2ZV9vdmVyZmxvdyxwb3NpdGl2ZV9vdmVyZmxvdykKLSAgewotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAgaWYgKCByID09IGNOZWdPdmVyZmxvdyApCi0gICAgICB0aHJvdyBuZWdhdGl2ZV9vdmVyZmxvdygpIDsKLSAgICBlbHNlIGlmICggciA9PSBjUG9zT3ZlcmZsb3cgKQotICAgICAgICAgICB0aHJvdyBwb3NpdGl2ZV9vdmVyZmxvdygpIDsKLSNlbHNlCi0gICAgaWYgKCByID09IGNOZWdPdmVyZmxvdyApCi0gICAgICA6Om5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24obmVnYXRpdmVfb3ZlcmZsb3coKSkgOwotICAgIGVsc2UgaWYgKCByID09IGNQb3NPdmVyZmxvdyApCi0gICAgICAgICAgIDo6bmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihwb3NpdGl2ZV9vdmVyZmxvdygpKSA7Ci0jZW5kaWYKLSAgfQotfSA7Ci0KLXN0cnVjdCBzaWxlbnRfb3ZlcmZsb3dfaGFuZGxlcgotewotICB2b2lkIG9wZXJhdG9yKCkgKCByYW5nZV9jaGVja19yZXN1bHQgKSB7fSAvLyB0aHJvdygpCi19IDsKLQotdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotc3RydWN0IHJhd19jb252ZXJ0ZXIKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnJlc3VsdF90eXBlICAgcmVzdWx0X3R5cGUgICA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gIHN0YXRpYyByZXN1bHRfdHlwZSBsb3dfbGV2ZWxfY29udmVydCAoIGFyZ3VtZW50X3R5cGUgcyApIHsgcmV0dXJuIHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPihzKSA7IH0KLX0gOwotCi1zdHJ1Y3QgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIge30gOwotCi19IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2JvdW5kcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvYm91bmRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTlkMzIwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvYm91bmRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JPVU5EU19ERVRBSUxfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JPVU5EU19ERVRBSUxfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xpbWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaWYuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7IG5hbWVzcGFjZSBib3VuZHNkZXRhaWwKLXsKLSAgdGVtcGxhdGU8Y2xhc3MgTj4KLSAgY2xhc3MgSW50ZWdyYWwKLSAgewotICAgICAgdHlwZWRlZiBzdGQ6Om51bWVyaWNfbGltaXRzPE4+IGxpbWl0cyA7Ci0KLSAgICBwdWJsaWMgOgotICAgIAotICAgICAgc3RhdGljIE4gbG93ZXN0ICAoKSB7IHJldHVybiBsaW1pdHM6Om1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKTsgfQotICAgICAgc3RhdGljIE4gaGlnaGVzdCAoKSB7IHJldHVybiBsaW1pdHM6Om1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKTsgfQotICAgICAgc3RhdGljIE4gc21hbGxlc3QoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxOPigxKTsgfQotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBOPgotICBjbGFzcyBGbG9hdAotICB7Ci0gICAgICB0eXBlZGVmIHN0ZDo6bnVtZXJpY19saW1pdHM8Tj4gbGltaXRzIDsKLQotICAgIHB1YmxpYyA6Ci0gICAgCi0gICAgICBzdGF0aWMgTiBsb3dlc3QgICgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE4+KC1saW1pdHM6Om1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSkgOyB9Ci0gICAgICBzdGF0aWMgTiBoaWdoZXN0ICgpIHsgcmV0dXJuIGxpbWl0czo6bWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpOyB9Ci0gICAgICBzdGF0aWMgTiBzbWFsbGVzdCgpIHsgcmV0dXJuIGxpbWl0czo6bWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpOyB9Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIE4+Ci0gIHN0cnVjdCBnZXRfaW1wbAotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8Tj46OmlzX2ludGVnZXIgPiBpc19pbnQgOwotCi0gICAgdHlwZWRlZiBJbnRlZ3JhbDxOPiBpbXBsX2ludCAgIDsKLSAgICB0eXBlZGVmIEZsb2F0ICAgPE4+IGltcGxfZmxvYXQgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxpc19pbnQsaW1wbF9pbnQsaW1wbF9mbG9hdD46OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM6OmJvdW5kc2RldGFpbC4KLQotI2VuZGlmCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJzaW9uX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvY29udmVyc2lvbl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWZlMTA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJzaW9uX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfQ09OVkVSU0lPTl9UUkFJVFNfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9DT05WRVJTSU9OX1RSQUlUU19GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pbnRfZmxvYXRfbWl4dHVyZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9zaWduX21peHR1cmUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvdWR0X2J1aWx0aW5fbWl4dHVyZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pc19zdWJyYW5nZWQuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7IG5hbWVzcGFjZSBjb252ZGV0YWlsCi17Ci0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ29udmVyc2lvbiBUcmFpdHMgZm9yIFQgIT0gUwotICAvLwotICAvLyBUaGlzIGlzIGEgVklTSUJMRSBiYXNlIGNsYXNzIG9mIHRoZSB1c2VyLWxldmVsIGNvbnZlcnNpb25fdHJhaXRzPD4gY2xhc3MuCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gIHN0cnVjdCBub25fdHJpdmlhbF90cmFpdHNfaW1wbAotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfaW50X2Zsb2F0X21peHR1cmUgICA8VCxTPjo6dHlwZSBpbnRfZmxvYXRfbWl4dHVyZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfc2lnbl9taXh0dXJlICAgICAgICA8VCxTPjo6dHlwZSBzaWduX21peHR1cmUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X3VkdF9idWlsdGluX21peHR1cmUgPFQsUz46OnR5cGUgdWR0X2J1aWx0aW5fbWl4dHVyZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9pc19zdWJyYW5nZWQ8VCxTPjo6dHlwZSBzdWJyYW5nZWQgOwotCi0gICAgdHlwZWRlZiBtcGw6OmZhbHNlXyB0cml2aWFsIDsKLQotICAgIHR5cGVkZWYgVCB0YXJnZXRfdHlwZSA7Ci0gICAgdHlwZWRlZiBTIHNvdXJjZV90eXBlIDsKLSAgICB0eXBlZGVmIFQgcmVzdWx0X3R5cGUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwgaXNfYXJpdGhtZXRpYzxTPiwgUywgUyBjb25zdCY+Ojp0eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxzdWJyYW5nZWQsUyxUPjo6dHlwZSBzdXBlcnR5cGUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88c3VicmFuZ2VkLFQsUz46OnR5cGUgc3VidHlwZSAgIDsKLSAgfSA7Ci0KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vIEltcGxlbWVudGF0aW9uIG9mIHRoZSBDb252ZXJzaW9uIFRyYWl0cyBmb3IgVCA9PSBTCi0gIC8vCi0gIC8vIFRoaXMgaXMgYSBWSVNJQkxFIGJhc2UgY2xhc3Mgb2YgdGhlIHVzZXItbGV2ZWwgY29udmVyc2lvbl90cmFpdHM8PiBjbGFzcy4KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIHRlbXBsYXRlPGNsYXNzIE4+Ci0gIHN0cnVjdCB0cml2aWFsX3RyYWl0c19pbXBsCi0gIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9pbnRfZmxvYXRfbWl4dHVyZSAgPE4sTj46OnR5cGUgaW50X2Zsb2F0X21peHR1cmUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X3NpZ25fbWl4dHVyZSAgICAgICA8TixOPjo6dHlwZSBzaWduX21peHR1cmUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X3VkdF9idWlsdGluX21peHR1cmU8TixOPjo6dHlwZSB1ZHRfYnVpbHRpbl9taXh0dXJlIDsKLQotICAgIHR5cGVkZWYgbXBsOjpmYWxzZV8gc3VicmFuZ2VkIDsKLSAgICB0eXBlZGVmIG1wbDo6dHJ1ZV8gIHRyaXZpYWwgOwotCi0gICAgdHlwZWRlZiBOICAgICAgICB0YXJnZXRfdHlwZSA7Ci0gICAgdHlwZWRlZiBOICAgICAgICBzb3VyY2VfdHlwZSA7Ci0gICAgdHlwZWRlZiBOIGNvbnN0JiByZXN1bHRfdHlwZSA7Ci0gICAgdHlwZWRlZiBOIGNvbnN0JiBhcmd1bWVudF90eXBlIDsKLQotICAgIHR5cGVkZWYgTiBzdXBlcnR5cGUgOwotICAgIHR5cGVkZWYgTiBzdWJ0eXBlICA7Ci0KLSAgfSA7Ci0KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vIFRvcCBsZXZlbCBpbXBsZW1lbnRhdGlvbiBzZWxlY3Rvci4KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFM+Ci0gIHN0cnVjdCBnZXRfY29udmVyc2lvbl90cmFpdHMKLSAgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIHRhcmdldF90eXBlIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxTPjo6dHlwZSBzb3VyY2VfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlzX3NhbWU8dGFyZ2V0X3R5cGUsc291cmNlX3R5cGU+Ojp0eXBlIGlzX3RyaXZpYWwgOwotCi0gICAgdHlwZWRlZiB0cml2aWFsX3RyYWl0c19pbXBsICAgIDx0YXJnZXRfdHlwZT4gICAgICAgICAgICAgdHJpdmlhbF9pbXAgOwotICAgIHR5cGVkZWYgbm9uX3RyaXZpYWxfdHJhaXRzX2ltcGw8dGFyZ2V0X3R5cGUsc291cmNlX3R5cGU+IG5vbl90cml2aWFsX2ltcCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPGlzX3RyaXZpYWwsdHJpdmlhbF9pbXAsbm9uX3RyaXZpYWxfaW1wPjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmRldGFpbAotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvY29udmVydGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJ0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzA5OWVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJ0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjAyICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX0NPTlZFUlRFUl9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX0NPTlZFUlRFUl9GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJzaW9uX3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2JvdW5kcy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgeyBuYW1lc3BhY2UgY29udmRldGFpbAotewotICAvLyBJbnRlZ3JhbCBDb25zdGFudHMgcmVwcmVzZW50aW5nIHJvdW5kaW5nIG1vZGVzCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6ZmxvYXRfcm91bmRfc3R5bGUsIHN0ZDo6cm91bmRfdG93YXJkX3plcm8+ICAgICAgICAgcm91bmQyemVyb19jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b19uZWFyZXN0PiAgICAgICAgICByb3VuZDJuZWFyZXN0X2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OmZsb2F0X3JvdW5kX3N0eWxlLCBzdGQ6OnJvdW5kX3Rvd2FyZF9pbmZpbml0eT4gICAgIHJvdW5kMmluZl9jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b3dhcmRfbmVnX2luZmluaXR5PiByb3VuZDJuZWdfaW5mX2MgOwotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBmb3Jfcm91bmRfc3R5bGU8Um91bmRTdHlsZSxSb3VuZFRvWmVybyxSb3VuZFRvTmVhcmVzdCxSb3VuZFRvSW5mLFJvdW5kVG9OZWdJbmY+Ojp0eXBlCi0gIC8vCi0gIC8vIHtSb3VuZFN0eWxlfSBJbnRlZ3JhbCBDb25zdGFudCBzcGVjaWZ5aW5nIGEgcm91bmQgc3R5bGUgYXMgZGVjbGFyZWQgYWJvdmUuCi0gIC8vIHtSb3VuZFRvWmVybyxSb3VuZFRvTmVhcmVzdCxSb3VuZFRvSW5mLFJvdW5kVG9OZWdJbmZ9IGFyYml0cmFyeSB0eXBlcy4KLSAgLy8KLSAgLy8gU2VsZWN0cyBvbmUgb2YgdGhlIDQgdHlwZXMgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiBSb3VuZFN0eWxlLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBSb3VuZFN0eWxlLGNsYXNzIFJvdW5kVG9aZXJvLGNsYXNzIFJvdW5kVG9OZWFyZXN0LGNsYXNzIFJvdW5kVG9JbmYsY2xhc3MgUm91bmRUb05lZ0luZj4KLSAgc3RydWN0IGZvcl9yb3VuZF9zdHlsZQotICB7Ci0gICAgdHlwZWRlZiBjdF9zd2l0Y2g0PFJvdW5kU3R5bGUKLSAgICAgICAgICAgICAgICAgICAgICAgLCByb3VuZDJ6ZXJvX2MsIHJvdW5kMm5lYXJlc3RfYywgcm91bmQyaW5mX2MgLy8gcm91bmQybmVnX2luZl9jCi0gICAgICAgICAgICAgICAgICAgICAgICwgUm91bmRUb1plcm8gLCBSb3VuZFRvTmVhcmVzdCAsIFJvdW5kVG9JbmYgLCBSb3VuZFRvTmVnSW5mCi0gICAgICAgICAgICAgICAgICAgICAgPiBzZWxlY3RvciA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0eXBlIHR5cGUgOwotICB9IDsKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSBDaGVja2luZyBMb2dpYy4KLS8vCi0vLyBUaGUgcmFuZ2UgY2hlY2tpbmcgbG9naWMgaXMgYnVpbHQgdXAgYnkgY29tYmluaW5nIDEgb3IgMiBwcmVkaWNhdGVzLgotLy8gRWFjaCBwcmVkaWNhdGUgaXMgZW5jYXBzdWxhdGVkIGluIGEgdGVtcGxhdGUgY2xhc3MgYW5kIGV4cG9zZXMKLS8vIHRoZSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uICdhcHBseScuCi0vLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLSAgLy8gQmVjYXVzZSBhIHBhcnRpY3VsYXIgbG9naWMgY2FuIGNvbWJpbmUgZWl0aGVyIDEgb3IgdHdvIHByZWRpY2F0ZXMsIHRoZSBmb2xsb3dpbmcKLSAgLy8gdGFncyBhcmUgdXNlZCB0byBhbGxvdyB0aGUgcHJlZGljYXRlIGFwcGxpZXIgdG8gcmVjZWl2ZSAyIHByZWRzLCBidXQgb3B0aW1pemUgYXdheQotICAvLyBvbmUgb2YgdGhlbSBpZiBpdCBpcyAnbm9uLWFwcGxpY2FibGUnCi0gIHN0cnVjdCBub25fYXBwbGljYWJsZSB7IHR5cGVkZWYgbXBsOjpmYWxzZV8gZG9fYXBwbHkgOyB9IDsKLSAgc3RydWN0IGFwcGxpY2FibGUgICAgIHsgdHlwZWRlZiBtcGw6OnRydWVfICBkb19hcHBseSA7IH0gOwotCi0KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvLwotICAvLyAgICAgICAgICAgICAgICAgICAgICBSYW5nZSBDaGVja2luZyBMb2dpYyBpbXBsZW1lbnRhdGlvbnMuCi0gIC8vCi0gIC8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcywgY29sbGVjdGl2ZWxseSBuYW1lZCAnUHJlZGljYXRlcycsIGFyZSBpbnN0YW50aWF0ZWQgd2l0aGluCi0gIC8vIHRoZSBjb3JyZXNwb25kaW5nIHJhbmdlIGNoZWNrZXJzLgotICAvLyBUaGVpciBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uICdhcHBseScgaXMgY2FsbGVkIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCByYW5nZSBjaGVja2luZyBsb2dpYy4KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgLy8gcyA8IExvd2VzdChUKSA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlCi0gICAgLy8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gICAgc3RydWN0IExUX0xvVCA6IGFwcGxpY2FibGUKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dGFyZ2V0X3R5cGUgVCA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgUyA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBhcHBseSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzIDwgc3RhdGljX2Nhc3Q8Uz4oYm91bmRzPFQ+Ojpsb3dlc3QoKSkgPyBjTmVnT3ZlcmZsb3cgOiBjSW5SYW5nZSA7Ci0gICAgICB9Ci0gICAgfSA7Ci0KLSAgICAvLyBzIDwgMCA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlCi0gICAgLy8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gICAgc3RydWN0IExUX1plcm8gOiBhcHBsaWNhYmxlCi0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlIFMgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgYXBwbHkgKCBhcmd1bWVudF90eXBlIHMgKQotICAgICAgewotICAgICAgICByZXR1cm4gcyA8IHN0YXRpY19jYXN0PFM+KDApID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UgOwotICAgICAgfQotICAgIH0gOwotCi0gICAgLy8gcyA8PSBMb3dlc3QoVCktMSA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlCi0gICAgLy8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gICAgc3RydWN0IExFX1ByZXZMb1QgOiBhcHBsaWNhYmxlCi0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnRhcmdldF90eXBlIFQgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlIFMgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgYXBwbHkgKCBhcmd1bWVudF90eXBlIHMgKQotICAgICAgewotICAgICAgICByZXR1cm4gcyA8PSBzdGF0aWNfY2FzdDxTPihib3VuZHM8VD46Omxvd2VzdCgpKSAtIHN0YXRpY19jYXN0PFM+KDEuMCkKLSAgICAgICAgICAgICAgICAgPyBjTmVnT3ZlcmZsb3cgOiBjSW5SYW5nZSA7Ci0gICAgICB9Ci0gICAgfSA7Ci0KLSAgICAvLyBzIDwgTG93ZXN0KFQpLTAuNSA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlCi0gICAgLy8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gICAgc3RydWN0IExUX0hhbGZQcmV2TG9UIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPCBzdGF0aWNfY2FzdDxTPihib3VuZHM8VD46Omxvd2VzdCgpKSAtIHN0YXRpY19jYXN0PFM+KDAuNSkKLSAgICAgICAgICAgICAgICAgPyBjTmVnT3ZlcmZsb3cgOiBjSW5SYW5nZSA7Ci0gICAgICB9Ci0gICAgfSA7Ci0KLSAgICAvLyBzID4gSGlnaGVzdChUKSA/IGNQb3NPdmVyZmxvdyA6IGNJblJhbmdlCi0gICAgLy8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gICAgc3RydWN0IEdUX0hpVCA6IGFwcGxpY2FibGUKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dGFyZ2V0X3R5cGUgVCA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgUyA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBhcHBseSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzID4gc3RhdGljX2Nhc3Q8Uz4oYm91bmRzPFQ+OjpoaWdoZXN0KCkpCi0gICAgICAgICAgICAgICAgID8gY1Bvc092ZXJmbG93IDogY0luUmFuZ2UgOwotICAgICAgfQotICAgIH0gOwotCi0gICAgLy8gcyA+PSBMb3dlc3QoVCkgKyAxID8gY1Bvc092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgR0VfU3VjY0hpVCA6IGFwcGxpY2FibGUKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dGFyZ2V0X3R5cGUgVCA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgUyA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBhcHBseSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzID49IHN0YXRpY19jYXN0PFM+KGJvdW5kczxUPjo6aGlnaGVzdCgpKSArIHN0YXRpY19jYXN0PFM+KDEuMCkKLSAgICAgICAgICAgICAgICAgPyBjUG9zT3ZlcmZsb3cgOiBjSW5SYW5nZSA7Ci0gICAgICB9Ci0gICAgfSA7Ci0KLSAgICAvLyBzID49IExvd2VzdChUKSArIDAuNSA/IGNQb3NnT3ZlcmZsb3cgOiBjSW5SYW5nZQotICAgIC8vCi0gICAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICAgIHN0cnVjdCBHVF9IYWxmU3VjY0hpVCA6IGFwcGxpY2FibGUKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dGFyZ2V0X3R5cGUgVCA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgUyA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBhcHBseSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzID49IHN0YXRpY19jYXN0PFM+KGJvdW5kczxUPjo6aGlnaGVzdCgpKSArIHN0YXRpY19jYXN0PFM+KDAuNSkKLSAgICAgICAgICAgICAgICAgPyBjUG9zT3ZlcmZsb3cgOiBjSW5SYW5nZSA7Ci0gICAgICB9Ci0gICAgfSA7Ci0KLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vCi0gIC8vIFByZWRpY2F0ZSBDb21iaW5lci4KLSAgLy8KLSAgLy8gVGhpcyBoZWxwZXIgY2xhc3NlcyBhcmUgdXNlZCB0byBwb3NzaWJseSBjb21iaW5lIHRoZSByYW5nZSBjaGVja2luZyBsb2dpYwotICAvLyBpbmRpdmlkdWFsbHkgcGVyZm9ybWVkIGJ5IHRoZSBwcmVkaWNhdGVzCi0gIC8vCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi0gICAgLy8gQXBwbGllcyBib3RoIHByZWRpY2F0ZXM6IGZpcnN0ICdQcmVkQScsIGFuZCBpZiBpdCBlcXVhbHMgJ2NJblJhbmdlJywgJ1ByZWRCJwotICAgIHRlbXBsYXRlPGNsYXNzIFByZWRBLCBjbGFzcyBQcmVkQj4KLSAgICBzdHJ1Y3QgYXBwbHlCb3RoCi0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBQcmVkQTo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBhcHBseSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7Ci0gICAgICAgIHJhbmdlX2NoZWNrX3Jlc3VsdCByID0gUHJlZEE6OmFwcGx5KHMpIDsKLSAgICAgICAgaWYgKCByID09IGNJblJhbmdlICkKLSAgICAgICAgICByID0gUHJlZEI6OmFwcGx5KHMpOwotICAgICAgICByZXR1cm4gciA7Ci0gICAgICB9Ci0gICAgfSA7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBQcmVkQSwgY2xhc3MgUHJlZEI+Ci0gICAgc3RydWN0IGNvbWJpbmUKLSAgICB7Ci0gICAgICB0eXBlZGVmIGFwcGx5Qm90aDxQcmVkQSxQcmVkQj4gQm90aCA7Ci0gICAgICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgICAgTk5vbmUgOyAvLyAnTm9uZScgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIGluICgvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1guaCkKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBQcmVkQTo6ZG9fYXBwbHkgZG9fYXBwbHlBIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgUHJlZEI6OmRvX2FwcGx5IGRvX2FwcGx5QiA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZm9yX2JvdGg8ZG9fYXBwbHlBLCBkb19hcHBseUIsIEJvdGgsIFByZWRBLCBQcmVkQiwgTk5vbmU+Ojp0eXBlIHR5cGUgOwotICAgIH0gOwotCi0KLQotCi0KLQotCi0KLQotCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIENoZWNrZXIgY2xhc3Nlcy4KLS8vCi0vLyBUaGUgZm9sbG93aW5nIGNsYXNzZXMgYXJlIFZJU0lCTEUgYmFzZSBjbGFzc2VzIG9mIHRoZSB1c2VyLWxldmVsIGNvbnZlcnRlcjw+IGNsYXNzLgotLy8gVGhleSBzdXBwbHkgdGhlIG9wdGltaXplZCAnb3V0X29mX3JhbmdlKCknIGFuZCAndmFsaWRhdGVfcmFuZ2UoKScgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMKLS8vIHZpc2libGUgaW4gdGhlIHVzZXIgaW50ZXJmYWNlLgotLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAvLyBEdW1teSByYW5nZSBjaGVja2VyLgotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gIHN0cnVjdCBkdW1teV9yYW5nZV9jaGVja2VyCi0gIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgb3V0X29mX3JhbmdlICggYXJndW1lbnRfdHlwZSApIHsgcmV0dXJuIGNJblJhbmdlIDsgfQotICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlX3JhbmdlICggYXJndW1lbnRfdHlwZSApIHt9Ci0gIH0gOwotCi0gIC8vIEdlbmVyaWMgcmFuZ2UgY2hlY2tlci4KLSAgLy8KLSAgLy8gQWxsIHRoZSByYW5nZSBjaGVja2luZyBsb2dpYyBmb3IgYWxsIHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBvZiBzb3VyY2UgYW5kIHRhcmdldAotICAvLyBjYW4gYmUgYXJyYW5nZWQgaW4gdGVybXMgb2Ygb25lIG9yIHR3byBwcmVkaWNhdGVzLCB3aGljaCB0ZXN0IG92ZXJmbG93IG9uIGJvdGggbmVnL3BvcyAnc2lkZXMnCi0gIC8vIG9mIHRoZSByYW5nZXMuCi0gIC8vCi0gIC8vIFRoZXNlIHByZWRpY2F0ZXMgYXJlIGdpdmVuIGhlcmUgYXMgSXNOZWdPdmVyZmxvdyBhbmQgSXNQb3NPdmVyZmxvdy4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBJc05lZ092ZXJmbG93LCBjbGFzcyBJc1Bvc092ZXJmbG93LCBjbGFzcyBPdmVyZmxvd0hhbmRsZXI+Ci0gIHN0cnVjdCBnZW5lcmljX3JhbmdlX2NoZWNrZXIKLSAgewotICAgIHR5cGVkZWYgT3ZlcmZsb3dIYW5kbGVyIG92ZXJmbG93X2hhbmRsZXIgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IG91dF9vZl9yYW5nZSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjb21iaW5lPElzTmVnT3ZlcmZsb3csSXNQb3NPdmVyZmxvdz46OnR5cGUgUHJlZGljYXRlIDsKLQotICAgICAgcmV0dXJuIFByZWRpY2F0ZTo6YXBwbHkocyk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgdmFsaWRhdGVfcmFuZ2UgKCBhcmd1bWVudF90eXBlIHMgKQotICAgICAgeyBPdmVyZmxvd0hhbmRsZXIoKSggb3V0X29mX3JhbmdlKHMpICkgOyB9Ci0gIH0gOwotCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIFNlbGVjdG9ycyBmb3IgdGhlIG9wdGltaXplZCBSYW5nZSBDaGVja2VyIGNsYXNzLgotLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsY2xhc3MgT3ZlcmZsb3dIYW5kbGVyPgotICBzdHJ1Y3QgR2V0UkNfU2lnMlNpZ19vcl9VbnNpZzJVbnNpZwotICB7Ci0gICAgdHlwZWRlZiBkdW1teV9yYW5nZV9jaGVja2VyPFRyYWl0cz4gRHVtbXkgOwotCi0gICAgdHlwZWRlZiBMVF9Mb1Q8VHJhaXRzPiBQcmVkMSA7Ci0gICAgdHlwZWRlZiBHVF9IaVQ8VHJhaXRzPiBQcmVkMiA7Ci0KLSAgICB0eXBlZGVmIGdlbmVyaWNfcmFuZ2VfY2hlY2tlcjxUcmFpdHMsUHJlZDEsUHJlZDIsT3ZlcmZsb3dIYW5kbGVyPiBOb3JtYWwgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnN1YnJhbmdlZCBzdWJyYW5nZWQgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxzdWJyYW5nZWQsTm9ybWFsLER1bW15Pjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBPdmVyZmxvd0hhbmRsZXI+Ci0gIHN0cnVjdCBHZXRSQ19TaWcyVW5zaWcKLSAgewotICAgIHR5cGVkZWYgTFRfWmVybzxUcmFpdHM+IFByZWQxIDsKLSAgICB0eXBlZGVmIEdUX0hpVCA8VHJhaXRzPiBQcmVkMiA7Ci0KLSAgICB0eXBlZGVmIGdlbmVyaWNfcmFuZ2VfY2hlY2tlcjxUcmFpdHMsUHJlZDEsUHJlZDIsT3ZlcmZsb3dIYW5kbGVyPiBDaG9pY2VBIDsKLQotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMSxub25fYXBwbGljYWJsZSxPdmVyZmxvd0hhbmRsZXI+IENob2ljZUIgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnRhcmdldF90eXBlIFQgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3VicmFuZ2VkX1Vuc2lnMlNpZzxTLFQ+Ojp0eXBlIG9wb3NpdGVfc3VicmFuZ2VkIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpub3RfPG9wb3NpdGVfc3VicmFuZ2VkPjo6dHlwZSBwb3NpdGl2ZWx5X3N1YnJhbmdlZCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPHBvc2l0aXZlbHlfc3VicmFuZ2VkLENob2ljZUEsQ2hvaWNlQj46OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyPgotICBzdHJ1Y3QgR2V0UkNfVW5zaWcyU2lnCi0gIHsKLSAgICB0eXBlZGVmIEdUX0hpVDxUcmFpdHM+IFByZWQxIDsKLQotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxub25fYXBwbGljYWJsZSxQcmVkMSxPdmVyZmxvd0hhbmRsZXI+IHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsY2xhc3MgT3ZlcmZsb3dIYW5kbGVyPgotICBzdHJ1Y3QgR2V0UkNfSW50MkludAotICB7Ci0gICAgdHlwZWRlZiBHZXRSQ19TaWcyU2lnX29yX1Vuc2lnMlVuc2lnPFRyYWl0cyxPdmVyZmxvd0hhbmRsZXI+IFNpZzJTaWdRICAgICA7Ci0gICAgdHlwZWRlZiBHZXRSQ19TaWcyVW5zaWcgICAgICAgICAgICAgPFRyYWl0cyxPdmVyZmxvd0hhbmRsZXI+IFNpZzJVbnNpZ1EgICA7Ci0gICAgdHlwZWRlZiBHZXRSQ19VbnNpZzJTaWcgICAgICAgICAgICAgPFRyYWl0cyxPdmVyZmxvd0hhbmRsZXI+IFVuc2lnMlNpZ1EgICA7Ci0gICAgdHlwZWRlZiBTaWcyU2lnUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuc2lnMlVuc2lnUSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c2lnbl9taXh0dXJlIHNpZ25fbWl4dHVyZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBmb3Jfc2lnbl9taXh0dXJlPHNpZ25fbWl4dHVyZSxTaWcyU2lnUSxTaWcyVW5zaWdRLFVuc2lnMlNpZ1EsVW5zaWcyVW5zaWdRPjo6dHlwZQotICAgICAgICBzZWxlY3RvciA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0eXBlIHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gIHN0cnVjdCBHZXRSQ19JbnQyRmxvYXQKLSAgewotICAgIHR5cGVkZWYgZHVtbXlfcmFuZ2VfY2hlY2tlcjxUcmFpdHM+IHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIE92ZXJmbG93SGFuZGxlciwgY2xhc3MgRmxvYXQySW50Um91bmRlcj4KLSAgc3RydWN0IEdldFJDX0Zsb2F0MkludAotICB7Ci0gICAgdHlwZWRlZiBMRV9QcmV2TG9UICAgIDxUcmFpdHM+IFByZWQxIDsKLSAgICB0eXBlZGVmIEdFX1N1Y2NIaVQgICAgPFRyYWl0cz4gUHJlZDIgOwotICAgIHR5cGVkZWYgTFRfSGFsZlByZXZMb1Q8VHJhaXRzPiBQcmVkMyA7Ci0gICAgdHlwZWRlZiBHVF9IYWxmU3VjY0hpVDxUcmFpdHM+IFByZWQ0IDsKLSAgICB0eXBlZGVmIEdUX0hpVCAgICAgICAgPFRyYWl0cz4gUHJlZDUgOwotICAgIHR5cGVkZWYgTFRfTG9UICAgICAgICA8VHJhaXRzPiBQcmVkNiA7Ci0KLSAgICB0eXBlZGVmIGdlbmVyaWNfcmFuZ2VfY2hlY2tlcjxUcmFpdHMsUHJlZDEsUHJlZDIsT3ZlcmZsb3dIYW5kbGVyPiBUb1plcm8gICAgOwotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMyxQcmVkNCxPdmVyZmxvd0hhbmRsZXI+IFRvTmVhcmVzdCA7Ci0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLFByZWQxLFByZWQ1LE92ZXJmbG93SGFuZGxlcj4gVG9JbmYgICAgIDsKLSAgICB0eXBlZGVmIGdlbmVyaWNfcmFuZ2VfY2hlY2tlcjxUcmFpdHMsUHJlZDYsUHJlZDIsT3ZlcmZsb3dIYW5kbGVyPiBUb05lZ0luZiAgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBGbG9hdDJJbnRSb3VuZGVyOjpyb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGZvcl9yb3VuZF9zdHlsZTxyb3VuZF9zdHlsZSxUb1plcm8sVG9OZWFyZXN0LFRvSW5mLFRvTmVnSW5mPjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBPdmVyZmxvd0hhbmRsZXI+Ci0gIHN0cnVjdCBHZXRSQ19GbG9hdDJGbG9hdAotICB7Ci0gICAgdHlwZWRlZiBkdW1teV9yYW5nZV9jaGVja2VyPFRyYWl0cz4gRHVtbXkgOwotCi0gICAgdHlwZWRlZiBMVF9Mb1Q8VHJhaXRzPiBQcmVkMSA7Ci0gICAgdHlwZWRlZiBHVF9IaVQ8VHJhaXRzPiBQcmVkMiA7Ci0KLSAgICB0eXBlZGVmIGdlbmVyaWNfcmFuZ2VfY2hlY2tlcjxUcmFpdHMsUHJlZDEsUHJlZDIsT3ZlcmZsb3dIYW5kbGVyPiBOb3JtYWwgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnN1YnJhbmdlZCBzdWJyYW5nZWQgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxzdWJyYW5nZWQsTm9ybWFsLER1bW15Pjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBPdmVyZmxvd0hhbmRsZXIsIGNsYXNzIEZsb2F0MkludFJvdW5kZXI+Ci0gIHN0cnVjdCBHZXRSQ19CdWlsdEluMkJ1aWx0SW4KLSAgewotICAgIHR5cGVkZWYgR2V0UkNfSW50MkludDxUcmFpdHMsT3ZlcmZsb3dIYW5kbGVyPiAgICAgICAgICAgICAgICAgICAgSW50MkludFEgOwotICAgIHR5cGVkZWYgR2V0UkNfSW50MkZsb2F0PFRyYWl0cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MkZsb2F0USA7Ci0gICAgdHlwZWRlZiBHZXRSQ19GbG9hdDJJbnQ8VHJhaXRzLE92ZXJmbG93SGFuZGxlcixGbG9hdDJJbnRSb3VuZGVyPiBGbG9hdDJJbnRRIDsKLSAgICB0eXBlZGVmIEdldFJDX0Zsb2F0MkZsb2F0PFRyYWl0cyxPdmVyZmxvd0hhbmRsZXI+ICAgICAgICAgICAgICAgIEZsb2F0MkZsb2F0USA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6aW50X2Zsb2F0X21peHR1cmUgaW50X2Zsb2F0X21peHR1cmUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBmb3JfaW50X2Zsb2F0X21peHR1cmU8aW50X2Zsb2F0X21peHR1cmUsIEludDJJbnRRLCBJbnQyRmxvYXRRLCBGbG9hdDJJbnRRLCBGbG9hdDJGbG9hdFE+Ojp0eXBlIHNlbGVjdG9yIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyLCBjbGFzcyBGbG9hdDJJbnRSb3VuZGVyPgotICBzdHJ1Y3QgR2V0UkMKLSAgewotICAgIHR5cGVkZWYgR2V0UkNfQnVpbHRJbjJCdWlsdEluPFRyYWl0cyxPdmVyZmxvd0hhbmRsZXIsRmxvYXQySW50Um91bmRlcj4gQnVpbHRJbjJCdWlsdEluUSA7Ci0KLSAgICB0eXBlZGVmIGR1bW15X3JhbmdlX2NoZWNrZXI8VHJhaXRzPiBEdW1teSA7Ci0KLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8RHVtbXk+IER1bW15USA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dWR0X2J1aWx0aW5fbWl4dHVyZSB1ZHRfYnVpbHRpbl9taXh0dXJlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZm9yX3VkdF9idWlsdGluX21peHR1cmU8dWR0X2J1aWx0aW5fbWl4dHVyZSxCdWlsdEluMkJ1aWx0SW5RLER1bW15USxEdW1teVEsRHVtbXlRPjo6dHlwZSBzZWxlY3RvciA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0eXBlIHR5cGUgOwotICB9IDsKLQotCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnRlciBjbGFzc2VzLgotLy8KLS8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgVklTSUJMRSBiYXNlIGNsYXNzZXMgb2YgdGhlIHVzZXItbGV2ZWwgY29udmVydGVyPD4gY2xhc3MuCi0vLyBUaGV5IHN1cHBseSB0aGUgb3B0aW1pemVkICduZWFyYnlpbnQoKScgYW5kICdjb252ZXJ0KCknIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zCi0vLyB2aXNpYmxlIGluIHRoZSB1c2VyIGludGVyZmFjZS4KLS8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgLy8KLSAgLy8gVHJpdmlhbCBDb252ZXJ0ZXIgOiB1c2VkIHdoZW4gKGN2LXVucXVhbGlmaWVkKSBUID09IChjdi11bnF1YWxpZmllZCkgIFMKLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICBzdHJ1Y3QgdHJpdmlhbF9jb252ZXJ0ZXJfaW1wbCA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPCAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjpyZXN1bHRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHB1YmxpYyBkdW1teV9yYW5nZV9jaGVja2VyPFRyYWl0cz4KLSAgewotICAgIHR5cGVkZWYgVHJhaXRzIHRyYWl0cyA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgICBzb3VyY2VfdHlwZSAgIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6cmVzdWx0X3R5cGUgICByZXN1bHRfdHlwZSAgIDsKLQotICAgIHN0YXRpYyByZXN1bHRfdHlwZSBsb3dfbGV2ZWxfY29udmVydCAoIGFyZ3VtZW50X3R5cGUgcyApIHsgcmV0dXJuIHMgOyB9Ci0gICAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAgICAgICAgICggYXJndW1lbnRfdHlwZSBzICkgeyByZXR1cm4gcyA7IH0KLSAgICBzdGF0aWMgcmVzdWx0X3R5cGUgY29udmVydCAgICAgICAgICAgKCBhcmd1bWVudF90eXBlIHMgKSB7IHJldHVybiBzIDsgfQotICB9IDsKLQotCi0gIC8vCi0gIC8vIFJvdW5kaW5nIENvbnZlcnRlciA6IHVzZWQgZm9yIGZsb2F0IHRvIGludGVncmFsIGNvbnZlcnNpb25zLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsY2xhc3MgUmFuZ2VDaGVja2VyLGNsYXNzIFJhd0NvbnZlcnRlcixjbGFzcyBGbG9hdDJJbnRSb3VuZGVyPgotICBzdHJ1Y3Qgcm91bmRpbmdfY29udmVydGVyIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248ICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFRyYWl0czo6YXJndW1lbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFRyYWl0czo6cmVzdWx0X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscHVibGljIFJhbmdlQ2hlY2tlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscHVibGljIEZsb2F0MkludFJvdW5kZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHB1YmxpYyBSYXdDb252ZXJ0ZXIKLSAgewotICAgIHR5cGVkZWYgUmFuZ2VDaGVja2VyICAgICBSYW5nZUNoZWNrZXJCYXNlIDsKLSAgICB0eXBlZGVmIEZsb2F0MkludFJvdW5kZXIgRmxvYXQySW50Um91bmRlckJhc2UgOwotICAgIHR5cGVkZWYgUmF3Q29udmVydGVyICAgICBSYXdDb252ZXJ0ZXJCYXNlIDsKLQotICAgIHR5cGVkZWYgVHJhaXRzIHRyYWl0cyA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgICBzb3VyY2VfdHlwZSAgIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6cmVzdWx0X3R5cGUgICByZXN1bHRfdHlwZSAgIDsKLQotICAgIHN0YXRpYyByZXN1bHRfdHlwZSBjb252ZXJ0ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICB7Ci0gICAgICBSYW5nZUNoZWNrZXJCYXNlOjp2YWxpZGF0ZV9yYW5nZShzKTsKLSAgICAgIHNvdXJjZV90eXBlIHMxID0gRmxvYXQySW50Um91bmRlckJhc2U6Om5lYXJieWludChzKTsKLSAgICAgIHJldHVybiBSYXdDb252ZXJ0ZXJCYXNlOjpsb3dfbGV2ZWxfY29udmVydChzMSk7Ci0gICAgfQotICB9IDsKLQotCi0gIC8vCi0gIC8vIE5vbi1Sb3VuZGluZyBDb252ZXJ0ZXIgOiB1c2VkIGZvciBhbGwgb3RoZXIgY29udmVyc2lvbnMuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cyxjbGFzcyBSYW5nZUNoZWNrZXIsY2xhc3MgUmF3Q29udmVydGVyPgotICBzdHJ1Y3Qgbm9uX3JvdW5kaW5nX2NvbnZlcnRlciA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFRyYWl0czo6YXJndW1lbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFRyYWl0czo6cmVzdWx0X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHB1YmxpYyBSYW5nZUNoZWNrZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwdWJsaWMgUmF3Q29udmVydGVyCi0gIHsKLSAgICB0eXBlZGVmIFJhbmdlQ2hlY2tlciBSYW5nZUNoZWNrZXJCYXNlIDsKLSAgICB0eXBlZGVmIFJhd0NvbnZlcnRlciBSYXdDb252ZXJ0ZXJCYXNlIDsKLQotICAgIHR5cGVkZWYgVHJhaXRzIHRyYWl0cyA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgICBzb3VyY2VfdHlwZSAgIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6cmVzdWx0X3R5cGUgICByZXN1bHRfdHlwZSAgIDsKLQotICAgIHN0YXRpYyBzb3VyY2VfdHlwZSBuZWFyYnlpbnQgKCBhcmd1bWVudF90eXBlIHMgKSB7IHJldHVybiBzIDsgfQotCi0gICAgc3RhdGljIHJlc3VsdF90eXBlIGNvbnZlcnQgKCBhcmd1bWVudF90eXBlIHMgKQotICAgIHsKLSAgICAgIFJhbmdlQ2hlY2tlckJhc2U6OnZhbGlkYXRlX3JhbmdlKHMpOwotICAgICAgcmV0dXJuIFJhd0NvbnZlcnRlckJhc2U6Omxvd19sZXZlbF9jb252ZXJ0KHMpOwotICAgIH0KLSAgfSA7Ci0KLQotCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBTZWxlY3RvcnMgZm9yIHRoZSBvcHRpbWl6ZWQgQ29udmVydGVyIGNsYXNzLgotLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsY2xhc3MgT3ZlcmZsb3dIYW5kbGVyLGNsYXNzIEZsb2F0MkludFJvdW5kZXIsY2xhc3MgUmF3Q29udmVydGVyLCBjbGFzcyBVc2VyUmFuZ2VDaGVja2VyPgotICBzdHJ1Y3QgZ2V0X25vbl90cml2aWFsX2NvbnZlcnRlcgotICB7Ci0gICAgdHlwZWRlZiBHZXRSQzxUcmFpdHMsT3ZlcmZsb3dIYW5kbGVyLEZsb2F0MkludFJvdW5kZXI+IEludGVybmFsUmFuZ2VDaGVja2VyUSA7Ci0KLSAgICB0eXBlZGVmIGlzX3NhbWU8VXNlclJhbmdlQ2hlY2tlcixVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlcj4gdXNlX2ludGVybmFsX1JDIDsKLQotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxVc2VyUmFuZ2VDaGVja2VyPiBVc2VyUmFuZ2VDaGVja2VyUSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBtcGw6OmV2YWxfaWY8dXNlX2ludGVybmFsX1JDLEludGVybmFsUmFuZ2VDaGVja2VyUSxVc2VyUmFuZ2VDaGVja2VyUT46OnR5cGUKLSAgICAgICAgUmFuZ2VDaGVja2VyIDsKLQotICAgIHR5cGVkZWYgbm9uX3JvdW5kaW5nX2NvbnZlcnRlcjxUcmFpdHMsUmFuZ2VDaGVja2VyLFJhd0NvbnZlcnRlcj4gICAgICAgICAgICAgIE5vblJvdW5kaW5nIDsKLSAgICB0eXBlZGVmIHJvdW5kaW5nX2NvbnZlcnRlcjxUcmFpdHMsUmFuZ2VDaGVja2VyLFJhd0NvbnZlcnRlcixGbG9hdDJJbnRSb3VuZGVyPiBSb3VuZGluZyA7Ci0KLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8Tm9uUm91bmRpbmc+IE5vblJvdW5kaW5nUSA7Ci0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PFJvdW5kaW5nPiAgICBSb3VuZGluZ1EgICAgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmludF9mbG9hdF9taXh0dXJlIGludF9mbG9hdF9taXh0dXJlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGZvcl9pbnRfZmxvYXRfbWl4dHVyZTxpbnRfZmxvYXRfbWl4dHVyZSwgTm9uUm91bmRpbmdRLCBOb25Sb3VuZGluZ1EsIFJvdW5kaW5nUSwgTm9uUm91bmRpbmdRPjo6dHlwZQotICAgICAgICBzZWxlY3RvciA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0eXBlIHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTwgY2xhc3MgVHJhaXRzCi0gICAgICAgICAgICxjbGFzcyBPdmVyZmxvd0hhbmRsZXIKLSAgICAgICAgICAgLGNsYXNzIEZsb2F0MkludFJvdW5kZXIKLSAgICAgICAgICAgLGNsYXNzIFJhd0NvbnZlcnRlcgotICAgICAgICAgICAsY2xhc3MgVXNlclJhbmdlQ2hlY2tlcgotICAgICAgICAgID4KLSAgc3RydWN0IGdldF9jb252ZXJ0ZXJfaW1wbAotICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCggMHgwNTYxICkgKQotICAgIC8vIGJjYzU1IHByZWZlcnMgc29tZXRpbWVzIHRlbXBsYXRlIHBhcmFtZXRlcnMgdG8gYmUgZXhwbGljaXQgbG9jYWwgdHlwZXMuCi0gICAgLy8gKG5vdGljZSB0aGF0IGlzIGlzIGlsbGVnYWwgdG8gcmV1c2UgdGhlIG5hbWVzIGxpa2UgdGhpcykKLSAgICB0eXBlZGVmIFRyYWl0cyAgICAgICAgICAgVHJhaXRzIDsKLSAgICB0eXBlZGVmIE92ZXJmbG93SGFuZGxlciAgT3ZlcmZsb3dIYW5kbGVyIDsKLSAgICB0eXBlZGVmIEZsb2F0MkludFJvdW5kZXIgRmxvYXQySW50Um91bmRlciA7Ci0gICAgdHlwZWRlZiBSYXdDb252ZXJ0ZXIgICAgIFJhd0NvbnZlcnRlciA7Ci0gICAgdHlwZWRlZiBVc2VyUmFuZ2VDaGVja2VyIFVzZXJSYW5nZUNoZWNrZXIgOwotI2VuZGlmCi0KLSAgICB0eXBlZGVmIHRyaXZpYWxfY29udmVydGVyX2ltcGw8VHJhaXRzPiBUcml2aWFsIDsKLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHkgICAgICAgIDxUcml2aWFsPiBUcml2aWFsUSA7Ci0KLSAgICB0eXBlZGVmIGdldF9ub25fdHJpdmlhbF9jb252ZXJ0ZXI8IFRyYWl0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsT3ZlcmZsb3dIYW5kbGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxGbG9hdDJJbnRSb3VuZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxSYXdDb252ZXJ0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLFVzZXJSYW5nZUNoZWNrZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IE5vblRyaXZpYWxRIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0cml2aWFsIHRyaXZpYWwgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmV2YWxfaWY8dHJpdmlhbCxUcml2aWFsUSxOb25Ucml2aWFsUT46OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZkZXRhaWwKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2ludF9mbG9hdF9taXh0dXJlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pbnRfZmxvYXRfbWl4dHVyZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MWFjNDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2ludF9mbG9hdF9taXh0dXJlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9JTlRfRkxPQVRfTUlYVFVSRV9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX0lOVF9GTE9BVF9NSVhUVVJFX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xpbWl0cy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vaW50X2Zsb2F0X21peHR1cmVfZW51bS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgeyBuYW1lc3BhY2UgY29udmRldGFpbAotewotICAvLyBJbnRlZ3JhbCBDb25zdGFudHMgZm9yICdJbnRGbG9hdE1peHR1cmUnCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPGludF9mbG9hdF9taXh0dXJlX2VudW0sIGludGVncmFsX3RvX2ludGVncmFsPiBpbnQyaW50X2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxpbnRfZmxvYXRfbWl4dHVyZV9lbnVtLCBpbnRlZ3JhbF90b19mbG9hdD4gICAgaW50MmZsb2F0X2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxpbnRfZmxvYXRfbWl4dHVyZV9lbnVtLCBmbG9hdF90b19pbnRlZ3JhbD4gICAgZmxvYXQyaW50X2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxpbnRfZmxvYXRfbWl4dHVyZV9lbnVtLCBmbG9hdF90b19mbG9hdD4gICAgICAgZmxvYXQyZmxvYXRfYyA7Ci0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGdldF9pbnRfZmxvYXRfbWl4dHVyZTxULFM+Ojp0eXBlCi0gIC8vCi0gIC8vIFNlbGVjdHMgdGhlIGFwcHJvcHJpYXRlIEludC1GbG9hdCBNaXh0dXJlIEludGVncmFsIENvbnN0YW50IGZvciB0aGUgY29tYmluYXRpb24gVCxTLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gIHN0cnVjdCBnZXRfaW50X2Zsb2F0X21peHR1cmUKLSAgewotICAgIHR5cGVkZWYgbXBsOjpib29sXzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFM+Ojppc19pbnRlZ2VyID4gU19pbnQgOwotICAgIHR5cGVkZWYgbXBsOjpib29sXzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19pbnRlZ2VyID4gVF9pbnQgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgZm9yX2JvdGg8U19pbnQsIFRfaW50LCBpbnQyaW50X2MsIGludDJmbG9hdF9jLCBmbG9hdDJpbnRfYywgZmxvYXQyZmxvYXRfYz46OnR5cGUKLSAgICAgICAgdHlwZSA7Ci0gIH0gOwotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBmb3JfaW50X2Zsb2F0X21peHR1cmU8TWl4dHVyZSxpbnRfaW50LGludF9mbG9hdCxmbG9hdF9pbnQsZmxvYXRfZmxvYXQ+Ojp0eXBlCi0gIC8vCi0gIC8vIHtNaXh0dXJlfSBpcyBvbmUgb2YgdGhlIEludGVncmFsIENvbnN0YW50cyBmb3IgTWl4dHVyZSwgZGVjbGFyZWQgYWJvdmUuCi0gIC8vIHtpbnRfaW50LGludF9mbG9hdCxmbG9hdF9pbnQsZmxvYXRfZmxvYXR9IGFyZSBhcmlidHJhcnkgdHlwZXMuIChub3QgbWV0YWZ1bmN0aW9ucykKLSAgLy8KLSAgLy8gQWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiAnSW50RmxvYXRNaXh0dXJlJywgc2VsZWN0cyB0aGUgY29ycmVzcG9uZGluZyB0eXBlLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBJbnRGbG9hdE1peHR1cmUsIGNsYXNzIEludDJJbnQsIGNsYXNzIEludDJGbG9hdCwgY2xhc3MgRmxvYXQySW50LCBjbGFzcyBGbG9hdDJGbG9hdD4KLSAgc3RydWN0IGZvcl9pbnRfZmxvYXRfbWl4dHVyZQotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgY3Rfc3dpdGNoNDxJbnRGbG9hdE1peHR1cmUKLSAgICAgICAgICAgICAgICAgLGludDJpbnRfYywgaW50MmZsb2F0X2MsIGZsb2F0MmludF9jICAvLyBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICxJbnQySW50ICAsIEludDJGbG9hdCAgLCBGbG9hdDJJbnQgICwgRmxvYXQyRmxvYXQKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgIHR5cGUgOwotICB9IDsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZGV0YWlsCi0KLSNlbmRpZgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2lzX3N1YnJhbmdlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaXNfc3VicmFuZ2VkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFmMTJjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaXNfc3VicmFuZ2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNCArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfSVNfU1VCUkFOR0VEX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfSVNfU1VCUkFOR0VEX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xpbWl0cy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaW50LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvbXVsdGlwbGllcy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pbnRfZmxvYXRfbWl4dHVyZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9zaWduX21peHR1cmUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvdWR0X2J1aWx0aW5fbWl4dHVyZS5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGNvbnZkZXRhaWwKLXsKLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gSW1wbGVtZW50YXRpb25zIG9mIHRoZSBjb21waWxlIHRpbWUgcHJlZGljYXRlICJUIGlzIHN1YnJhbmdlZCIKLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIGZvciBpbnRlZ3JhbCB0byBpbnRlZ3JhbCBjb252ZXJzaW9ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX1NpZzJVbnNpZwotICAgIHsKLSAgICAgIC8vIFNpZ25lZCB0byB1bnNpZ25lZCBjb252ZXJzaW9ucyBhcmUgJ3N1YnJhbmdlZCcgYmVjYXVzZSBvZiBwb3NzaWJsZSBsb29zZQotICAgICAgLy8gb2YgbmVnYXRpdmUgdmFsdWVzLgotICAgICAgdHlwZWRlZiBtcGw6OnRydWVfIHR5cGUgOwotICAgIH0gOwotCi0gICAgLy8gZm9yIHVuc2lnbmVkIGludGVncmFsIHRvIHNpZ25lZCBpbnRlZ3JhbCBjb252ZXJzaW9ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX1Vuc2lnMlNpZwotICAgIHsKLSAgICAgICAvLyBJTVBPUlRBTlQgTk9URToKLSAgICAgICAvLwotICAgICAgIC8vIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgc2lnbmVkL3Vuc2lnbmVkIGludGVncmFsIHZhbHVlcyBhcmUgcmVwcmVzZW50ZWQKLSAgICAgICAvLyBzdWNoIHRoYXQ6Ci0gICAgICAgLy8KLSAgICAgICAvLyAgbnVtZXJpY19saW1pdHM8c2lnbmVkIFQ+OjpkaWdpdHMgKyAxID09IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIFQ+OjpkaWdpdHMKLSAgICAgICAvLwotICAgICAgIC8vIFRoZSAnKzEnIGlzIHJlcXVpcmVkIHNpbmNlIG51bWVyaWNfbGltaXRzPD46OmRpZ2l0cyBnaXZlcyAxIGJpdCBsZXNzIGZvciBzaWduZWQgaW50ZWdyYWwgdHlwZXMuCi0gICAgICAgLy8KLSAgICAgICAvLyBUaGlzIGZhY3QgaXMgdXNlZCBieSB0aGUgZm9sbG93aW5nIGxvZ2ljOgotICAgICAgIC8vCi0gICAgICAgLy8gIGlmICggKG51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMrMSkgPCAoMipudW1lcmljX2xpbWl0czxTPjo6ZGlnaXRzKSApCi0gICAgICAgLy8gICAgdGhlbiB0aGUgY29udmVyc2lvbiBpcyBzdWJyYW5nZWQuCi0gICAgICAgLy8KLQotICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8Uz46OmRpZ2l0cyA+IFNfZGlnaXRzIDsKLSAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgPiBUX2RpZ2l0cyA7Ci0KLSAgICAgICAvLyBUIGlzIHNpZ25lZCwgc28gdGFrZSBkaWdpdHMrMQotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVF9kaWdpdHM6Om5leHQgdV9UX2RpZ2l0cyA7Ci0KLSAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwyPiBUd28gOwotCi0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om11bHRpcGxpZXM8U19kaWdpdHMsVHdvPjo6dHlwZSBTX2RpZ2l0c190aW1lc18yIDsKLQotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpsZXNzPHVfVF9kaWdpdHMsU19kaWdpdHNfdGltZXNfMj46OnR5cGUgdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgaW50ZWdyYWwgdG8gaW50ZWdyYWwgY29udmVyc2lvbnMgb2YgdGhlIHNhbWUgc2lnbi4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9TYW1lU2lnbgotICAgIHsKLSAgICAgICAvLyBBbiBpbnRlZ3JhbCBjb252ZXJzaW9uIG9mIHRoZSBzYW1lIHNpZ24gaXMgc3VicmFuZ2VkIGlmIGRpZ2l0cyhUKSA8IGRpZ2l0cyhTKS4KLQotICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8Uz46OmRpZ2l0cyA+IFNfZGlnaXRzIDsKLSAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgPiBUX2RpZ2l0cyA7Ci0KLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bGVzczxUX2RpZ2l0cyxTX2RpZ2l0cz46OnR5cGUgdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgaW50ZWdyYWwgdG8gZmxvYXQgY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9JbnQyRmxvYXQKLSAgICB7Ci0gICAgICB0eXBlZGVmIG1wbDo6ZmFsc2VfIHR5cGUgOwotICAgIH0gOwotCi0gICAgLy8gZm9yIGZsb2F0IHRvIGludGVncmFsIGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfRmxvYXQySW50Ci0gICAgewotICAgICAgdHlwZWRlZiBtcGw6OnRydWVfIHR5cGUgOwotICAgIH0gOwotCi0gICAgLy8gZm9yIGZsb2F0IHRvIGZsb2F0IGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfRmxvYXQyRmxvYXQKLSAgICB7Ci0gICAgICAvLyBJZiBib3RoIFQgYW5kIFMgYXJlIGZsb2F0cywKLSAgICAgIC8vIGNvbXBhcmUgZXhwb25lbnQgYml0cyBhbmQgaWYgdGhleSBtYXRjaCwgbWFudGlzYSBiaXRzLgotCi0gICAgICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFM+OjpkaWdpdHMgPiBTX21hbnRpc2EgOwotICAgICAgdHlwZWRlZiBtcGw6OmludF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzID4gVF9tYW50aXNhIDsKLQotICAgICAgdHlwZWRlZiBtcGw6OmludF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxTPjo6bWF4X2V4cG9uZW50ID4gU19leHBvbmVudCA7Ci0gICAgICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXhfZXhwb25lbnQgPiBUX2V4cG9uZW50IDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Omxlc3M8VF9leHBvbmVudCxTX2V4cG9uZW50Pjo6dHlwZSBUX3NtYWxsZXJfZXhwb25lbnQgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZXF1YWxfdG88VF9leHBvbmVudCxTX2V4cG9uZW50Pjo6dHlwZSBlcXVhbF9leHBvbmVudHMgOwotCi0gICAgICB0eXBlZGVmIG1wbDo6bGVzczxUX21hbnRpc2EsU19tYW50aXNhPiBUX3NtYWxsZXJfbWFudGlzYSA7Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjpldmFsX2lmPGVxdWFsX2V4cG9uZW50cyxUX3NtYWxsZXJfbWFudGlzYSxtcGw6OmZhbHNlXz4gbm90X2JpZ2dlcl9leHBvbmVudF9jYXNlIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICBtcGw6OmV2YWxfaWY8VF9zbWFsbGVyX2V4cG9uZW50LG1wbDo6dHJ1ZV8sbm90X2JpZ2dlcl9leHBvbmVudF9jYXNlPjo6dHlwZQotICAgICAgICAgIHR5cGUgOwotICAgIH0gOwotCi0gICAgLy8gZm9yIFVkdCB0byBidWlsdC1pbiBjb252ZXJzaW9ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX1VkdDJCdWlsdEluCi0gICAgewotICAgICAgdHlwZWRlZiBtcGw6OnRydWVfIHR5cGUgOwotICAgIH0gOwotCi0gICAgLy8gZm9yIGJ1aWx0LWluIHRvIFVkdCBjb252ZXJzaW9ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX0J1aWx0SW4yVWR0Ci0gICAgewotICAgICAgdHlwZWRlZiBtcGw6OmZhbHNlXyB0eXBlIDsKLSAgICB9IDsKLQotICAgIC8vIGZvciBVZHQgdG8gVWR0IGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfVWR0MlVkdAotICAgIHsKLSAgICAgIHR5cGVkZWYgbXBsOjpmYWxzZV8gdHlwZSA7Ci0gICAgfSA7Ci0KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vIFNlbGVjdG9ycyBmb3IgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc3VicmFuZ2VkIHByZWRpY2F0ZQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3QgZ2V0X3N1YnJhbmdlZF9JbnQySW50Ci0gICAgewotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfU2FtZVNpZ248VCxTPiAgU2lnMlNpZyAgICAgOwotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfU2lnMlVuc2lnPFQsUz4gU2lnMlVuc2lnICAgOwotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfVW5zaWcyU2lnPFQsUz4gVW5zaWcyU2lnICAgOwotICAgICAgdHlwZWRlZiBTaWcyU2lnICAgICAgICAgICAgICAgICAgVW5zaWcyVW5zaWcgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9zaWduX21peHR1cmU8VCxTPjo6dHlwZSBzaWduX21peHR1cmUgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgIGZvcl9zaWduX21peHR1cmU8c2lnbl9taXh0dXJlLCBTaWcyU2lnLCBTaWcyVW5zaWcsIFVuc2lnMlNpZywgVW5zaWcyVW5zaWc+Ojp0eXBlCi0gICAgICAgICAgIHR5cGUgOwotICAgIH0gOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBnZXRfc3VicmFuZ2VkX0J1aWx0SW4yQnVpbHRJbgotICAgIHsKLSAgICAgIHR5cGVkZWYgZ2V0X3N1YnJhbmdlZF9JbnQySW50PFQsUz4gSW50MkludFEgOwotCi0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9JbnQyRmxvYXQgIDxULFM+IEludDJGbG9hdCAgIDsKLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX0Zsb2F0MkludCAgPFQsUz4gRmxvYXQySW50ICAgOwotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfRmxvYXQyRmxvYXQ8VCxTPiBGbG9hdDJGbG9hdCA7Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxJbnQyRmxvYXQgID4gSW50MkZsb2F0USAgIDsKLSAgICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxGbG9hdDJJbnQgID4gRmxvYXQySW50USAgIDsKLSAgICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxGbG9hdDJGbG9hdD4gRmxvYXQyRmxvYXRRIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfaW50X2Zsb2F0X21peHR1cmU8VCxTPjo6dHlwZSBpbnRfZmxvYXRfbWl4dHVyZSA7Ci0KLSAgICAgIHR5cGVkZWYgZm9yX2ludF9mbG9hdF9taXh0dXJlPGludF9mbG9hdF9taXh0dXJlLCBJbnQySW50USwgSW50MkZsb2F0USwgRmxvYXQySW50USwgRmxvYXQyRmxvYXRRPiBmb3JfIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmb3JfOjp0eXBlIHNlbGVjdGVkIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3RlZDo6dHlwZSB0eXBlIDsKLSAgICB9IDsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3QgZ2V0X3N1YnJhbmdlZAotICAgIHsKLSAgICAgIHR5cGVkZWYgZ2V0X3N1YnJhbmdlZF9CdWlsdEluMkJ1aWx0SW48VCxTPiBCdWlsdEluMkJ1aWx0SW5RIDsKLQotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfQnVpbHRJbjJVZHQ8VCxTPiBCdWlsdEluMlVkdCA7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9VZHQyQnVpbHRJbjxULFM+IFVkdDJCdWlsdEluIDsKLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX1VkdDJVZHQ8VCxTPiAgICAgVWR0MlVkdCA7Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxCdWlsdEluMlVkdD4gQnVpbHRJbjJVZHRRIDsKLSAgICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxVZHQyQnVpbHRJbj4gVWR0MkJ1aWx0SW5RIDsKLSAgICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxVZHQyVWR0ICAgID4gVWR0MlVkdFEgICAgIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfdWR0X2J1aWx0aW5fbWl4dHVyZTxULFM+Ojp0eXBlIHVkdF9idWlsdGluX21peHR1cmUgOwotICAgICAgCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgIGZvcl91ZHRfYnVpbHRpbl9taXh0dXJlPHVkdF9idWlsdGluX21peHR1cmUsIEJ1aWx0SW4yQnVpbHRJblEsIEJ1aWx0SW4yVWR0USwgVWR0MkJ1aWx0SW5RLCBVZHQyVWR0UT46OnR5cGUKLSAgICAgICAgICBzZWxlY3RlZCA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0ZWQ6OnR5cGUgc2VsZWN0ZWQyIDsKLSAKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0ZWQyOjp0eXBlIHR5cGUgOwotICAgIH0gOwotCi0KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vIFRvcCBsZXZlbCBpbXBsZW1lbnRhdGlvbiBzZWxlY3Rvci4KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFM+Ci0gIHN0cnVjdCBnZXRfaXNfc3VicmFuZ2VkCi0gIHsKLSAgICB0eXBlZGVmIGdldF9zdWJyYW5nZWQ8VCxTPiAgICAgICAgIG5vbl90cml2aWFsX2Nhc2UgOwotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxtcGw6OmZhbHNlXz4gdHJpdmlhbF9jYXNlIDsKLQotICAgIHR5cGVkZWYgaXNfc2FtZTxULFM+IGlzX3RyaXZpYWwgOwotICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxpc190cml2aWFsLHRyaXZpYWxfY2FzZSxub25fdHJpdmlhbF9jYXNlPjo6dHlwZSBzZWxlY3RlZCA7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3RlZDo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmRldGFpbAotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4N2JiYjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL21ldGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9NRVRBX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfTUVUQV9GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9lcXVhbF90by5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL25vdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2FuZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2Jvb2wuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGNvbnZkZXRhaWwKLXsKLSAgIHRlbXBsYXRlPCBjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICBzdHJ1Y3QgZXF1YWxfdG8KLSAgIHsKLSAgICNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0gICAKLSAgICAgICBlbnVtIHsgeCA9ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQxKTo6dmFsdWUgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQyKTo6dmFsdWUgKSB9OwotICAgICAgICAgICAKLSAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB4KTsKLSAgICAgICAgICAgCi0gICAgICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotICAgICAgIAotICAgI2Vsc2UKLSAgIAotICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDEpOjp2YWx1ZSAKLSAgICAgICAgICAgICAgID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChUMik6OnZhbHVlCi0gICAgICAgICAgICkpOwotICAgICAgICAgICAKLSAgICAgICB0eXBlZGVmIG1wbDo6Ym9vbF88KAotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChUMSk6OnZhbHVlIAotICAgICAgICAgICAgICAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQyKTo6dmFsdWUKLSAgICAgICAgICAgKT4gdHlwZTsKLSAgICNlbmRpZgotICAgfTsKLSAgICAKLS8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBjdF9zd2l0Y2g0PFZhbHVlLENhc2UwVmFsLENhc2UxVmFsLENhc2UyVmFsLENhc2UwVHlwZSxDYXNlMVR5cGUsQ2FzZTJUeXBlLERlZmF1bHRUeXBlPjo6dHlwZQotICAvLwotICAvLyB7VmFsdWUsQ2FzZShYKVZhbH0gYXJlIEludGVncmFsIENvbnN0YW50cyAoc3VjaCBhczogbXBsOjppbnRfPD4pCi0gIC8vIHtDYXNlKFgpVHlwZSxEZWZhdWx0VHlwZX0gYXJlIGFyYml0cmFyeSB0eXBlcy4gKG5vdCBtZXRhZnVuY3Rpb25zKQotICAvLwotICAvLyBSZXR1cm5zIENhc2UoWClUeXBlIGlmIFZhbD09Q2FzZShYKVZhbDsgRGVmYXVsdFR5cGUgb3RoZXJ3aXNlLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBWYWx1ZSwKLSAgICAgICAgICAgY2xhc3MgQ2FzZTBWYWwsCi0gICAgICAgICAgIGNsYXNzIENhc2UxVmFsLAotICAgICAgICAgICBjbGFzcyBDYXNlMlZhbCwKLSAgICAgICAgICAgY2xhc3MgQ2FzZTBUeXBlLAotICAgICAgICAgICBjbGFzcyBDYXNlMVR5cGUsCi0gICAgICAgICAgIGNsYXNzIENhc2UyVHlwZSwKLSAgICAgICAgICAgY2xhc3MgRGVmYXVsdFR5cGUKLSAgICAgICAgICA+Ci0gIHN0cnVjdCBjdF9zd2l0Y2g0Ci0gIHsKLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8Q2FzZTBUeXBlPiBDYXNlMFR5cGVRIDsKLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8Q2FzZTFUeXBlPiBDYXNlMVR5cGVRIDsKLQotICAgIHR5cGVkZWYgZXF1YWxfdG88VmFsdWUsQ2FzZTBWYWw+IGlzX2Nhc2UwIDsKLSAgICB0eXBlZGVmIGVxdWFsX3RvPFZhbHVlLENhc2UxVmFsPiBpc19jYXNlMSA7Ci0gICAgdHlwZWRlZiBlcXVhbF90bzxWYWx1ZSxDYXNlMlZhbD4gaXNfY2FzZTIgOwotCi0gICAgdHlwZWRlZiBtcGw6OmlmXzxpc19jYXNlMixDYXNlMlR5cGUsRGVmYXVsdFR5cGU+IGNob29zZV8yXzNRIDsKLSAgICB0eXBlZGVmIG1wbDo6ZXZhbF9pZjxpc19jYXNlMSxDYXNlMVR5cGVRLGNob29zZV8yXzNRPiBjaG9vc2VfMV8yXzNRIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIG1wbDo6ZXZhbF9pZjxpc19jYXNlMCxDYXNlMFR5cGVRLGNob29zZV8xXzJfM1E+Ojp0eXBlCi0gICAgICAgIHR5cGUgOwotICB9IDsKLQotCi0KLQotICAvLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgZm9yX2JvdGg8ZXhwcjAsZXhwcjEsVFQsVEYsRlQsRkY+Ojp0eXBlCi0gIC8vCi0gIC8vIHtleHAwLGV4cHIxfSBhcmUgQm9vbGVhbiBJbnRlZ3JhbCBDb25zdGFudHMKLSAgLy8ge1RULFRGLEZULEZGfSBhcmUgYXJpYnRyYXJ5IHR5cGVzLiAobm90IG1ldGFmdW5jdGlvbnMpCi0gIC8vCi0gIC8vIEFjY29yZGluZyB0byB0aGUgY29tYmluZWQgYm9vbGVhbiB2YWx1ZSBvZiAnZXhwcjAgJiYgZXhwcjEnLCBzZWxlY3RzIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIGV4cHIwLCBjbGFzcyBleHByMSwgY2xhc3MgVFQsIGNsYXNzIFRGLCBjbGFzcyBGVCwgY2xhc3MgRkY+Ci0gIHN0cnVjdCBmb3JfYm90aAotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PFRGPiBURl9RIDsKLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8VFQ+IFRUX1EgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5vdF88ZXhwcjA+Ojp0eXBlIG5vdF9leHByMCA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5vdF88ZXhwcjE+Ojp0eXBlIG5vdF9leHByMSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6YW5kXzxleHByMCxleHByMT46OnR5cGUgICAgIGNhc2VUVCA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmFuZF88ZXhwcjAsbm90X2V4cHIxPjo6dHlwZSBjYXNlVEYgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjphbmRfPG5vdF9leHByMCxleHByMT46OnR5cGUgY2FzZUZUIDsKLQotICAgIHR5cGVkZWYgbXBsOjppZl88Y2FzZUZULEZULEZGPiAgICAgICAgICAgICAgICAgICAgY2hvb3NlX0ZUX0ZGX1EgOwotICAgIHR5cGVkZWYgbXBsOjpldmFsX2lmPGNhc2VURixURl9RLGNob29zZV9GVF9GRl9RPiBjaG9vc2VfVEZfRlRfRkZfUSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZXZhbF9pZjxjYXNlVFQsVFRfUSxjaG9vc2VfVEZfRlRfRkZfUT46OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZkZXRhaWwKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL251bWVyaWNfY2FzdF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL251bWVyaWNfY2FzdF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmJkOTYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi0vLwotLy8hIENvcHlyaWdodCAoYykgMjAxMS0yMDEyCi0vLyEgQnJhbmRvbiBLb2huCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ET05UX1VTRV9QUkVQUk9DRVNTRURfRklMRVMpCi0KLSAgICAjaW5jbHVkZSA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9wcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19jb21tb24uaHBwPgotCQotCSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19MT05HX0xPTkcpCi0gICAgICAgICNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2xvbmdfbG9uZy5ocHA+Ci0JI2VuZGlmCi0JCi0jZWxzZQotI2lmICFORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLQotICAgICNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VsZW0uaHBwPgotICAgICNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotICAgICNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPgotICAgIAotICAgICNpZiBkZWZpbmVkKF9fV0FWRV9fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DUkVBVEVfUFJFUFJPQ0VTU0VEX0ZJTEVTKQotICAgICAgICAjcHJhZ21hIHdhdmUgb3B0aW9uKHByZXNlcnZlOiAyLCBsaW5lOiAwLCBvdXRwdXQ6ICJwcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19jb21tb24uaHBwIikKLSAgICAjZW5kaWYKLS8vCi0vLyEgQ29weXJpZ2h0IChjKSAyMDExLTIwMTIKLS8vISBCcmFuZG9uIEtvaG4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotICAgICNpZiBkZWZpbmVkKF9fV0FWRV9fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DUkVBVEVfUFJFUFJPQ0VTU0VEX0ZJTEVTKQotICAgICAgICAjcHJhZ21hIHdhdmUgb3B0aW9uKHByZXNlcnZlOiAxKQotICAgICNlbmRpZgotCQotCS8vISBUaGVzZSBhcmUgdGhlIGFzc3VtZWQgY29tbW9uIGJ1aWx0IGluIGZ1bmRhbWVudGFsIHR5cGVzIChub3QgdHlwZWRlZnMvbWFjcm9zLikKLQkjZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CQVNFX0JVSUxUSU5fVFlQRVMoKSBcCi0gICAgICAgIChjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChzaG9ydCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAodW5zaWduZWQgc2hvcnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKGludCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICh1bnNpZ25lZCBpbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAobG9uZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHVuc2lnbmVkIGxvbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChmbG9hdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoZG91YmxlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKGxvbmcgZG91YmxlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqKi8KLQkKLSAgICAjZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQSgpIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CQVNFX0JVSUxUSU5fVFlQRVMoKQotCSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9CKCkgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JBU0VfQlVJTFRJTl9UWVBFUygpCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsKLQotICAgICNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCAoMCwgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQSgpKSksIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL251bWVyaWNfY2FzdF90cmFpdHMuaHBwPikpCi0gICAgI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpICAgIAotCi19fS8vbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOwotCi0gICAgI2lmIGRlZmluZWQoX19XQVZFX18pICYmIGRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NSRUFURV9QUkVQUk9DRVNTRURfRklMRVMpCi0gICAgICAgICNwcmFnbWEgd2F2ZSBvcHRpb24ob3V0cHV0OiBudWxsKQotICAgICNlbmRpZiAgIAotCQotCSNpZiAoIGRlZmluZWQoX19XQVZFX18pICYmIGRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NSRUFURV9QUkVQUk9DRVNTRURfRklMRVMpICkgfHwgIWRlZmluZWQoTkROQk9PU1RfTk9fTE9OR19MT05HKQotCQotCSAgICAjdW5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9BCi0JICAgICN1bmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0IKLQotCSAgICAjaWYgZGVmaW5lZChfX1dBVkVfXykgJiYgZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ1JFQVRFX1BSRVBST0NFU1NFRF9GSUxFUykKLSAgICAgICAgICAgICNwcmFnbWEgd2F2ZSBvcHRpb24ocHJlc2VydmU6IDIsIGxpbmU6IDAsIG91dHB1dDogInByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2xvbmdfbG9uZy5ocHAiKQotICAgICAgICAjZW5kaWYKLQotLy8KLS8vISBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMgotLy8hIEJyYW5kb24gS29obgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0gICAgICAgICNpZiBkZWZpbmVkKF9fV0FWRV9fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DUkVBVEVfUFJFUFJPQ0VTU0VEX0ZJTEVTKQotICAgICAgICAgICAgI3ByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMSkKLSAgICAgICAgI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsKLQotICAgICNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9BKCkgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JBU0VfQlVJTFRJTl9UWVBFUygpKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSkobmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSkKLQkjZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQigpIChuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi0gICAgCi0gICAgI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsICgwLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9BKCkpKSwgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHA+KSkKLSAgICAjaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkgICAgCi0KLX19Ly9uYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM7Ci0KLSAgICAgICAgI2lmIGRlZmluZWQoX19XQVZFX18pICYmIGRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NSRUFURV9QUkVQUk9DRVNTRURfRklMRVMpCi0gICAgICAgICAgICAjcHJhZ21hIHdhdmUgb3B0aW9uKG91dHB1dDogbnVsbCkKLSAgICAgICAgI2VuZGlmICAgCi0JCi0JI2VuZGlmCi0JCQotICAgICN1bmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQkFTRV9CVUlMVElOX1RZUEVTCi0JI3VuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQQotCSN1bmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0IKLSAgICAKLSNlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDEKLQotICAgICNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yICgzLCAoMCwgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQigpKSksIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL251bWVyaWNfY2FzdF90cmFpdHMuaHBwPikpCi0gICAgI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDIKLQotICAgIC8vISBHZW5lcmF0ZSBkZWZhdWx0IHRyYWl0cyBmb3IgdGhlIHNwZWNpZmllZCBzb3VyY2UgYW5kIHRhcmdldC4KLSAgICAjZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9BIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotICAgICNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0IgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDIpCi0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX1NFUV9FTEVNKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9BLCBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0EoKSkKLSAgICAgICAgICAsIE5ETkJPT1NUX1BQX1NFUV9FTEVNKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CLCBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0IoKSkKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPE5ETkJPT1NUX1BQX1NFUV9FTEVNKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CLCBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0IoKSk+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAgICAgCi0KLSAgICAjdW5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0EKLSAgICAjdW5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0IKLQotI2VuZGlmLy8hIERlcHRoIDIuCi0jZW5kaWYvLyBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fRE9OVF9VU0VfUFJFUFJPQ0VTU0VEX0ZJTEVTCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvb2xkX251bWVyaWNfY2FzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvb2xkX251bWVyaWNfY2FzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYzRjYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL29sZF9udW1lcmljX2Nhc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzM5ICswLDAgQEAKLS8vICBib29zdCBjYXN0LmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IEtldmxpbiBIZW5uZXkgYW5kIERhdmUgQWJyYWhhbXMgMTk5OS4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbnZlcnNpb24gZm9yIERvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgMjMgSlVOIDA1ICBDb2RlIGV4dHJhY3RlZCBmcm9tIC9ib29zdC9jYXN0LmhwcCBpbnRvIHRoaXMgbmV3IGhlYWRlci4KLS8vICAgICAgICAgICAgIEtlZXBzIHRoaXMgbGVnYWN5IHZlcnNpb24gb2YgbnVtZXJpY19jYXN0PD4gZm9yIG9sZCBjb21waWxlcnMKLS8vICAgICAgICAgICAgIHdpY2ggY2FuJ3QgY29tcGlsZSB0aGUgbmV3IHZlcnNpb24gaW4gL2Jvb3N0L251bWVyaWMvY29udmVyc2lvbi9jYXN0LmhwcAotLy8gICAgICAgICAgICAgKEZlcm5hbmRvIENhY2Npb2xhKQotLy8gIDAyIEFwciAwMSAgUmVtb3ZlZCBORE5CT09TVF9OT19MSU1JVFMgd29ya2Fyb3VuZHMgYW5kIGluY2x1ZGVkCi0vLyAgICAgICAgICAgICA8bmRuYm9vc3QvbGltaXRzLmhwcD4gaW5zdGVhZCAodGhlIHdvcmthcm91bmQgZGlkIG5vdAotLy8gICAgICAgICAgICAgYWN0dWFsbHkgY29tcGlsZSB3aGVuIE5ETkJPT1NUX05PX0xJTUlUUyB3YXMgZGVmaW5lZCBpbgotLy8gICAgICAgICAgICAgYW55IGNhc2UsIHNvIHdlIGxvb3NlIG5vdGhpbmcpLiAoSm9obiBNYWRkb2NrKQotLy8gIDIxIEphbiAwMSAgVW5kaWQgYSBidWcgSSBpbnRyb2R1Y2VkIHllc3RlcmRheS4gbnVtZXJpY19jYXN0PD4gbmV2ZXIKLS8vICAgICAgICAgICAgIHdvcmtlZCB3aXRoIHN0b2NrIEdDQzsgdHJ5aW5nIHRvIGdldCBpdCB0byBkbyB0aGF0IGJyb2tlCi0vLyAgICAgICAgICAgICB2Yy1zdGxwb3J0LgotLy8gIDIwIEphbiAwMSAgTW92ZWQgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMgdG8gY29uZmlnLmhwcC4KLS8vICAgICAgICAgICAgIFJlbW92ZWQgdW51c2VkIE5ETkJPT1NUX0VYUExJQ0lUX1RBUkdFVCBtYWNyby4gTW92ZWQKLS8vICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnR5cGUgdG8gbmRuYm9vc3QvdHlwZS5ocHAuIE1hZGUgaXQgY29tcGlsZSB3aXRoCi0vLyAgICAgICAgICAgICBzdG9jayBnY2MgYWdhaW4gKERhdmUgQWJyYWhhbXMpCi0vLyAgMjkgTm92IDAwICBSZW1vdmUgbmVzdGVkIG5hbWVzcGFjZSBjYXN0LCBjbGVhbnVwIHNwYWNpbmcgYmVmb3JlIEZvcm1hbAotLy8gICAgICAgICAgICAgUmV2aWV3IChCZW1hbiBEYXdlcykKLS8vICAxOSBPY3QgMDAgIEZpeCBudW1lcmljX2Nhc3QgZm9yIGZsb2F0aW5nLXBvaW50IHR5cGVzIChEYXZlIEFicmFoYW1zKQotLy8gIDE1IEp1bCAwMCAgU3VwcHJlc3MgbnVtZXJpY19jYXN0IHdhcm5pbmdzIGZvciBHQ0MsIEJvcmxhbmQgYW5kIE1TVkMKLS8vICAgICAgICAgICAgIChEYXZlIEFicmFoYW1zKQotLy8gIDMwIEp1biAwMCAgTW9yZSBNU1ZDNiB3b3JkYXJvdW5kcy4gIFNlZSBjb21tZW50cyBiZWxvdy4gIChEYXZlIEFicmFoYW1zKQotLy8gIDI4IEp1biAwMCAgUmVtb3ZlZCBpbXBsaWNpdF9jYXN0PD4uICBTZWUgY29tbWVudCBiZWxvdy4gKEJlbWFuIERhd2VzKQotLy8gIDI3IEp1biAwMCAgTW9yZSBNU1ZDNiB3b3JrYXJvdW5kcwotLy8gIDE1IEp1biAwMCAgQWRkIHdvcmthcm91bmRzIGZvciBNU1ZDNgotLy8gICAyIEZlYiAwMCAgUmVtb3ZlIGJhZF9udW1lcmljX2Nhc3QgIjsiIHN5bnRheCBlcnJvciAoRG9uY2hvIEFuZ2Vsb3YpCi0vLyAgMjYgSmFuIDAwICBBZGQgbWlzc2luZyB0aHJvdygpIHRvIGJhZF9udW1lcmljX2Nhc3Q6OndoYXQoMCAoQWRhbSBMZXZhcikKLS8vICAyOSBEZWMgOTkgIENoYW5nZSB1c2luZyBkZWNsYXJhdGlvbnMgc28gdXNhZ2VzIGluIG90aGVyIG5hbWVzcGFjZXMgd29yawotLy8gICAgICAgICAgICAgY29ycmVjdGx5IChEYXZlIEFicmFoYW1zKQotLy8gIDIzIFNlcCA5OSAgQ2hhbmdlIHBvbHltb3JwaGljX2Rvd25jYXN0IGFzc2VydCB0byBhbHNvIGRldGVjdCBNLkkuIGVycm9ycwotLy8gICAgICAgICAgICAgYXMgc3VnZ2VzdGVkIERhcmluIEFkbGVyIGFuZCBpbXByb3ZlZCBieSBWYWxlbnRpbiBCb25uYXJkLgotLy8gICAyIFNlcCA5OSAgUmVtb3ZlIGNvbnRyb3ZlcnNpYWwgYXNzZXJ0cywgc2ltcGxpZnksIHJlbmFtZS4KLS8vICAzMCBBdWcgOTkgIE1vdmUgdG8gY2FzdC5ocHAsIHJlcGxhY2UgdmFsdWVfY2FzdCB3aXRoIG51bWVyaWNfY2FzdCwKLS8vICAgICAgICAgICAgIHBsYWNlIGluIG5lc3RlZCBuYW1lc3BhY2UuCi0vLyAgIDMgQXVnIDk5ICBJbml0aWFsIHZlcnNpb24KLQotI2lmbmRlZiBORE5CT09TVF9PTERfTlVNRVJJQ19DQVNUX0hQUAotI2RlZmluZSBORE5CT09TVF9PTERfTlVNRVJJQ19DQVNUX0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPGNhc3NlcnQ+Ci0jIGluY2x1ZGUgPHR5cGVpbmZvPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlcl9wb2xpY2llcy5ocHA+Ci0KLS8vICBJdCBoYXMgYmVlbiBkZW1vbnN0cmF0ZWQgbnVtZXJvdXMgdGltZXMgdGhhdCBNU1ZDIDYuMCBmYWlscyBzaWxlbnRseSBhdCBsaW5rCi0vLyAgdGltZSBpZiB5b3UgdXNlIGEgdGVtcGxhdGUgZnVuY3Rpb24gd2hpY2ggaGFzIHRlbXBsYXRlIHBhcmFtZXRlcnMgdGhhdCBkb24ndAotLy8gIGFwcGVhciBpbiB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudCBsaXN0LgotLy8KLS8vICBUT0RPOiBBZGQgdGhpcyB0byBjb25maWcuaHBwPwotLy8gIEZMQzogVGhpcyBtYWNybyBpcyByZXBlYXRlZCBpbiBuZG5ib29zdC9jYXN0LmhwcCBidXQgb25seSBsb2NhbGx5IChpcyB1bmRlZmluZWQgYXQgdGhlIGJvdHRvbSkKLS8vICAgICAgIHNvIGlzIE9LIHRvIHJlcHJvZHVjZSBpdCBoZXJlLgotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIE5ETkJPT1NUX01TVkMgPCAxMzAwCi0jICBkZWZpbmUgTkROQk9PU1RfRVhQTElDSVRfREVGQVVMVF9UQVJHRVQgLCA6Om5kbmJvb3N0Ojp0eXBlPFRhcmdldD4qID0gMAotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfRVhQTElDSVRfREVGQVVMVF9UQVJHRVQKLSMgZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIHVzaW5nIG51bWVyaWM6OmJhZF9udW1lcmljX2Nhc3Q7Ci0KLS8vICBMRUdBQ1kgbnVtZXJpY19jYXN0IFtvbmx5IGZvciBzb21lIG9sZCBicm9rZW4gY29tcGlsZXJzXSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb250cmlidXRlZCBieSBLZXZsaW4gSGVubmV5Ci0KLS8vICBudW1lcmljX2Nhc3QgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUykgfHwgZGVmaW5lZChORE5CT09TVF9TR0lfQ1BQX0xJTUlUUykKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgIHN0cnVjdCBzaWduZWRfbnVtZXJpY19saW1pdHMgOiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ci0gICAgICB7Ci0gICAgICAgICAgICAgc3RhdGljIGlubGluZSBUIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKQotICAgICAgICAgewotICAgICAgICAgICAgIHJldHVybiAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKSgpID49IDAKLSAgICAgICAgICAgICAgICAgICAgIC8vIHVuYXJ5IG1pbnVzIGNhdXNlcyBpbnRlZ3JhbCBwcm9tb3Rpb24sIHRodXMgdGhlIHN0YXRpY19jYXN0PD4KLSAgICAgICAgICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8VD4oLShzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCkpCi0gICAgICAgICAgICAgICAgICAgICA6IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4pKCk7Ci0gICAgICAgICB9OwotICAgICAgfTsKLQotICAgICAgLy8gTW92ZSB0byBuYW1lc3BhY2UgbmRuYm9vc3QgaW4gdXRpbGl0eS5ocHA/Ci0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgYm9vbCBzcGVjaWFsaXplZD4KLSAgICAgIHN0cnVjdCBmaXhlZF9udW1lcmljX2xpbWl0c19iYXNlCi0gICAgICAgICAgOiBwdWJsaWMgaWZfdHJ1ZTwgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkID4KLSAgICAgICAgICAgOjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgdGhlbjwgc2lnbmVkX251bWVyaWNfbGltaXRzPFQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4KLSAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICB7fTsKLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICBzdHJ1Y3QgZml4ZWRfbnVtZXJpY19saW1pdHMKLSAgICAgICAgICA6IGZpeGVkX251bWVyaWNfbGltaXRzX2Jhc2U8VCwoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpPgotICAgICAge307Ci0KLSMgaWZkZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotICAgICAgLy8gY292ZXIgaW1wbGVtZW50YXRpb25zIHdoaWNoIHN1cHBseSBubyBzcGVjaWFsaXphdGlvbiBmb3IgbG9uZwotICAgICAgLy8gbG9uZyAvIHVuc2lnbmVkIGxvbmcgbG9uZy4gTm90IGludGVuZGVkIHRvIGJlIGZ1bGwKLSAgICAgIC8vIG51bWVyaWNfbGltaXRzIHJlcGxhY2VtZW50cywgYnV0IGdvb2QgZW5vdWdoIGZvciBudW1lcmljX2Nhc3Q8PgotICAgICAgdGVtcGxhdGUgPD4KLSAgICAgIHN0cnVjdCBmaXhlZF9udW1lcmljX2xpbWl0c19iYXNlPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgZmFsc2U+Ci0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NwZWNpYWxpemVkID0gdHJ1ZSk7Ci0gICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NpZ25lZCA9IHRydWUpOwotICAgICAgICAgIHN0YXRpYyAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgICAgICAgewotIyAgaWZkZWYgTE9OR0xPTkdfTUFYCi0gICAgICAgICAgICAgIHJldHVybiBMT05HTE9OR19NQVg7Ci0jICBlbHNlCi0gICAgICAgICAgICAgIHJldHVybiA5MjIzMzcyMDM2ODU0Nzc1ODA3TEw7IC8vIGhvcGUgdGhpcyBpcyBwb3J0YWJsZQotIyAgZW5kaWYKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBzdGF0aWMgIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKQotICAgICAgICAgIHsKLSMgIGlmZGVmIExPTkdMT05HX01JTgotICAgICAgICAgICAgICByZXR1cm4gTE9OR0xPTkdfTUlOOwotIyAgZWxzZQotICAgICAgICAgICAgICAgcmV0dXJuIC0oIDkyMjMzNzIwMzY4NTQ3NzU4MDdMTCApLTE7IC8vIGhvcGUgdGhpcyBpcyBwb3J0YWJsZQotIyAgZW5kaWYKLSAgICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZSA8PgotICAgICAgc3RydWN0IGZpeGVkX251bWVyaWNfbGltaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSwgZmFsc2U+Ci0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NwZWNpYWxpemVkID0gdHJ1ZSk7Ci0gICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NpZ25lZCA9IGZhbHNlKTsKLSAgICAgICAgICBzdGF0aWMgIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICAgICAgICB7Ci0jICBpZmRlZiBVTE9OR0xPTkdfTUFYCi0gICAgICAgICAgICAgIHJldHVybiBVTE9OR0xPTkdfTUFYOwotIyAgZWxzZQotICAgICAgICAgICAgICByZXR1cm4gMHhmZmZmZmZmZmZmZmZmZmZmVUxMOyAvLyBob3BlIHRoaXMgaXMgcG9ydGFibGUKLSMgIGVuZGlmCi0gICAgICAgICAgfQotCi0gICAgICAgICAgc3RhdGljICA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIHsgcmV0dXJuIDA7IH0KLSAgICAgIH07Ci0jIGVuZGlmCi0gICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vIGxlc3NfdGhhbl90eXBlX21pbiAtCi0gIC8vICAgIHhfaXNfc2lnbmVkIHNob3VsZCBiZSBudW1lcmljX2xpbWl0czxYPjo6aXNfc2lnbmVkCi0gIC8vICAgIHlfaXNfc2lnbmVkIHNob3VsZCBiZSBudW1lcmljX2xpbWl0czxZPjo6aXNfc2lnbmVkCi0gIC8vICAgIHlfbWluIHNob3VsZCBiZSBudW1lcmljX2xpbWl0czxZPjo6bWluKCkKLSAgLy8KLSAgLy8gICAgY2hlY2soeCwgeV9taW4pIHJldHVybnMgdHJ1ZSBpZmYgeCA8IHlfbWluIHdpdGhvdXQgaW52b2tpbmcgY29tcGFyaXNvbnMKLSAgLy8gICAgYmV0d2VlbiBzaWduZWQgYW5kIHVuc2lnbmVkIHZhbHVlcy4KLSAgLy8KLSAgLy8gICAgInBvb3IgbWFuJ3MgcGFydGlhbCBzcGVjaWFsaXphdGlvbiIgaXMgaW4gdXNlIGhlcmUuCi0gICAgdGVtcGxhdGUgPGJvb2wgeF9pc19zaWduZWQsIGJvb2wgeV9pc19zaWduZWQ+Ci0gICAgc3RydWN0IGxlc3NfdGhhbl90eXBlX21pbgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBib29sIGNoZWNrKFggeCwgWSB5X21pbikKLSAgICAgICAgICAgIHsgcmV0dXJuIHggPCB5X21pbjsgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBsZXNzX3RoYW5fdHlwZV9taW48ZmFsc2UsIHRydWU+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KLSAgICAgICAgc3RhdGljIGJvb2wgY2hlY2soWCwgWSkKLSAgICAgICAgICAgIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IGxlc3NfdGhhbl90eXBlX21pbjx0cnVlLCBmYWxzZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgotICAgICAgICBzdGF0aWMgYm9vbCBjaGVjayhYIHgsIFkpCi0gICAgICAgICAgICB7IHJldHVybiB4IDwgMDsgfQotICAgIH07Ci0KLSAgLy8gZ3JlYXRlcl90aGFuX3R5cGVfbWF4IC0KLSAgLy8gICAgc2FtZV9zaWduIHNob3VsZCBiZToKLSAgLy8gICAgICAgICAgICBudW1lcmljX2xpbWl0czxYPjo6aXNfc2lnbmVkID09IG51bWVyaWNfbGltaXRzPFk+Ojppc19zaWduZWQKLSAgLy8gICAgeV9tYXggc2hvdWxkIGJlIG51bWVyaWNfbGltaXRzPFk+OjptYXgoKQotICAvLwotICAvLyAgICBjaGVjayh4LCB5X21heCkgcmV0dXJucyB0cnVlIGlmZiB4ID4geV9tYXggd2l0aG91dCBpbnZva2luZyBjb21wYXJpc29ucwotICAvLyAgICBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgdmFsdWVzLgotICAvLwotICAvLyAgICAicG9vciBtYW4ncyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIiBpcyBpbiB1c2UgaGVyZS4KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzYW1lX3NpZ24sIGJvb2wgeF9pc19zaWduZWQ+Ci0gICAgc3RydWN0IGdyZWF0ZXJfdGhhbl90eXBlX21heDsKLQotICAgIHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3QgZ3JlYXRlcl90aGFuX3R5cGVfbWF4PHRydWUsIHRydWU+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KLSAgICAgICAgc3RhdGljIGlubGluZSBib29sIGNoZWNrKFggeCwgWSB5X21heCkKLSAgICAgICAgICAgIHsgcmV0dXJuIHggPiB5X21heDsgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBncmVhdGVyX3RoYW5fdHlwZV9tYXg8ZmFsc2UsIHRydWU+Ci0gICAgewotICAgICAgICAvLyBXaGF0IGRvZXMgdGhlIHN0YW5kYXJkIHNheSBhYm91dCB0aGlzPyBJIHRoaW5rIGl0J3MgcmlnaHQsIGFuZCBpdAotICAgICAgICAvLyB3aWxsIHdvcmsgd2l0aCBldmVyeSBjb21waWxlciBJIGtub3cgb2YuCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgotICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2soWCB4LCBZKQotICAgICAgICAgICAgeyByZXR1cm4geCA+PSAwICYmIHN0YXRpY19jYXN0PFg+KHN0YXRpY19jYXN0PFk+KHgpKSAhPSB4OyB9Ci0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBORE5CT09TVF9NU1ZDIDwgMTMwMAotICAgICAgICAvLyBNU1ZDNiBjYW4ndCBzdGF0aWNfY2FzdCAgdW5zaWduZWQgX19pbnQ2NCAtPiBmbG9hdGluZyB0eXBlcwotIyAgZGVmaW5lIE5ETkJPT1NUX1VJTlQ2NF9DQVNUKHNyY190eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2soc3JjX3R5cGUgeCwgdW5zaWduZWQgX19pbnQ2NCkgICAgICAgICAgXAotICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgaWYgKHggPCAwKSByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCB5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgX19pbnQ2ND4oeCk7ICAgICAgXAotICAgICAgICAgICAgYm9vbCBvZGQgPSB5ICYgMHgxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgX19pbnQ2NCBkaXYyID0gc3RhdGljX2Nhc3Q8X19pbnQ2ND4oeSA+PiAxKTsgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuICgoc3RhdGljX2Nhc3Q8c3JjX3R5cGU+KGRpdjIpICogMi4wKSArIG9kZCkgIT0geDsgICAgXAotICAgICAgICB9Ci0KLSAgICAgICAgTkROQk9PU1RfVUlOVDY0X0NBU1QobG9uZyBkb3VibGUpOwotICAgICAgICBORE5CT09TVF9VSU5UNjRfQ0FTVChkb3VibGUpOwotICAgICAgICBORE5CT09TVF9VSU5UNjRfQ0FTVChmbG9hdCk7Ci0jICB1bmRlZiBORE5CT09TVF9VSU5UNjRfQ0FTVAotIyBlbmRpZgotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IGdyZWF0ZXJfdGhhbl90eXBlX21heDx0cnVlLCBmYWxzZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgotICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2soWCB4LCBZIHlfbWF4KQotICAgICAgICAgICAgeyByZXR1cm4geCA+IHlfbWF4OyB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IGdyZWF0ZXJfdGhhbl90eXBlX21heDxmYWxzZSwgZmFsc2U+Ci0gICAgewotICAgICAgICAvLyBXaGF0IGRvZXMgdGhlIHN0YW5kYXJkIHNheSBhYm91dCB0aGlzPyBJIHRoaW5rIGl0J3MgcmlnaHQsIGFuZCBpdAotICAgICAgICAvLyB3aWxsIHdvcmsgd2l0aCBldmVyeSBjb21waWxlciBJIGtub3cgb2YuCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgotICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2soWCB4LCBZKQotICAgICAgICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8WD4oc3RhdGljX2Nhc3Q8WT4oeCkpICE9IHg7IH0KLSAgICB9OwotCi0jZWxzZSAvLyB1c2UgI3ByYWdtYSBoYWNrcyBpZiBhdmFpbGFibGUKLQotICBuYW1lc3BhY2UgZGV0YWlsCi0gIHsKLSMgaWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MDE4KQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxNDYpCi0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLSMgIHByYWdtYSBvcHRpb24gcHVzaCAtdy04MDQxCi0jIGVuZGlmCi0KLSAgICAgICAvLyBNb3ZlIHRvIG5hbWVzcGFjZSBuZG5ib29zdCBpbiB1dGlsaXR5LmhwcD8KLSAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICBzdHJ1Y3QgZml4ZWRfbnVtZXJpY19saW1pdHMgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czxUPgotICAgICAgIHsKLSAgICAgICAgICAgc3RhdGljIGlubGluZSBUIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkICYmIChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4pKCkgPj0gMAotICAgICAgICAgICAgICAgICAgID8gVCgtKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCkoKSkgOiAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKSgpOwotICAgICAgICAgICB9Ci0gICAgICAgfTsKLQotIyBpZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLSMgIHByYWdtYSBvcHRpb24gcG9wCi0jIGVuZGlmCi0gIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgIGlubGluZSBUYXJnZXQgbnVtZXJpY19jYXN0KFNvdXJjZSBhcmcgTkROQk9PU1RfRVhQTElDSVRfREVGQVVMVF9UQVJHRVQpCi0gICAgewotICAgICAgICAvLyB0eXBlZGVmcyBhYmJyZXZpYXRpbmcgcmVzcGVjdGl2ZSB0cmFpdCBjbGFzc2VzCi0gICAgICAgIHR5cGVkZWYgZGV0YWlsOjpmaXhlZF9udW1lcmljX2xpbWl0czxTb3VyY2U+IGFyZ190cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgZGV0YWlsOjpmaXhlZF9udW1lcmljX2xpbWl0czxUYXJnZXQ+IHJlc3VsdF90cmFpdHM7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NUUklDVF9DT05GSUcpIFwKLSAgICB8fCAoIWRlZmluZWQoX19IUF9hQ0MpIHx8IF9fSFBfYUNDID4gMzM5MDApIFwKLSAgICAgICAgICYmICghZGVmaW5lZChORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUykgXAotICAgICAgICAgICAgIHx8IGRlZmluZWQoTkROQk9PU1RfU0dJX0NQUF9MSU1JVFMpKQotICAgICAgICAvLyB0eXBlZGVmcyB0aGF0IGFjdCBhcyBjb21waWxlIHRpbWUgYXNzZXJ0aW9ucwotICAgICAgICAvLyAodG8gYmUgcmVwbGFjZWQgYnkgYm9vc3QgY29tcGlsZSB0aW1lIGFzc2VydGlvbnMKLSAgICAgICAgLy8gYXMgYW5kIHdoZW4gdGhleSBiZWNvbWUgYXZhaWxhYmxlIGFuZCBhcmUgc3RhYmxlKQotICAgICAgICB0eXBlZGVmIGJvb2wgYXJndW1lbnRfbXVzdF9iZV9udW1lcmljW2FyZ190cmFpdHM6OmlzX3NwZWNpYWxpemVkXTsKLSAgICAgICAgdHlwZWRlZiBib29sIHJlc3VsdF9tdXN0X2JlX251bWVyaWNbcmVzdWx0X3RyYWl0czo6aXNfc3BlY2lhbGl6ZWRdOwotCi0gICAgICAgIGNvbnN0IGJvb2wgYXJnX2lzX3NpZ25lZCA9IGFyZ190cmFpdHM6OmlzX3NpZ25lZDsKLSAgICAgICAgY29uc3QgYm9vbCByZXN1bHRfaXNfc2lnbmVkID0gcmVzdWx0X3RyYWl0czo6aXNfc2lnbmVkOwotICAgICAgICBjb25zdCBib29sIHNhbWVfc2lnbiA9IGFyZ19pc19zaWduZWQgPT0gcmVzdWx0X2lzX3NpZ25lZDsKLQotICAgICAgICBpZiAobGVzc190aGFuX3R5cGVfbWluPGFyZ19pc19zaWduZWQsIHJlc3VsdF9pc19zaWduZWQ+OjpjaGVjayhhcmcsIChyZXN1bHRfdHJhaXRzOjptaW4pKCkpCi0gICAgICAgICAgICB8fCBncmVhdGVyX3RoYW5fdHlwZV9tYXg8c2FtZV9zaWduLCBhcmdfaXNfc2lnbmVkPjo6Y2hlY2soYXJnLCAocmVzdWx0X3RyYWl0czo6bWF4KSgpKQotICAgICAgICAgICAgKQotCi0jZWxzZSAvLyBXZSBuZWVkIHRvIHVzZSAjcHJhZ21hIGhhY2tzIGlmIGF2YWlsYWJsZQotCi0jIGlmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDAxOCkKLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDEyCi0jIGVuZGlmCi0gICAgICAgIGlmICgoYXJnIDwgMCAmJiAhcmVzdWx0X3RyYWl0czo6aXNfc2lnbmVkKSAgLy8gbG9zcyBvZiBuZWdhdGl2ZSByYW5nZQotICAgICAgICAgICAgIHx8IChhcmdfdHJhaXRzOjppc19zaWduZWQgJiYgYXJnIDwgKHJlc3VsdF90cmFpdHM6Om1pbikoKSkgIC8vIHVuZGVyZmxvdwotICAgICAgICAgICAgIHx8IGFyZyA+IChyZXN1bHRfdHJhaXRzOjptYXgpKCkpICAgICAgICAgICAgLy8gb3ZlcmZsb3cKLSMgaWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSMgZW5kaWYKLSNlbmRpZgotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyBiYWRfbnVtZXJpY19jYXN0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRhcmdldD4oYXJnKTsKLSAgICB9IC8vIG51bWVyaWNfY2FzdAotCi0jICB1bmRlZiBORE5CT09TVF9FWFBMSUNJVF9ERUZBVUxUX1RBUkdFVAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX09MRF9OVU1FUklDX0NBU1RfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfY29tbW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9wcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19jb21tb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGVlZTZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9wcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19jb21tb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc0MSArMCwwIEBACi0vLwotLy8hIENvcHlyaWdodCAoYykgMjAxMS0yMDEyCi0vLyEgQnJhbmRvbiBLb2huCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQkKLQkKLQkKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfbG9uZ19sb25nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9wcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19sb25nX2xvbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjhkNTQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9wcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19sb25nX2xvbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQ3ICswLDAgQEAKLS8vCi0vLyEgQ29weXJpZ2h0IChjKSAyMDExLTIwMTIKLS8vISBCcmFuZG9uIEtvaG4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgewotICAgIAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvc2lnbl9taXh0dXJlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9zaWduX21peHR1cmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTkwZWU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9zaWduX21peHR1cmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX1NJR05fTUlYVFVSRV9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX1NJR05fTUlYVFVSRV9GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9saW1pdHMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL3NpZ25fbWl4dHVyZV9lbnVtLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL21ldGEuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7IG5hbWVzcGFjZSBjb252ZGV0YWlsCi17Ci0gIC8vIEludGVncmFsIENvbnN0YW50cyBmb3IgJ1NpZ25NaXh0dXJlJwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzaWduX21peHR1cmVfZW51bSwgdW5zaWduZWRfdG9fdW5zaWduZWQ+IHVuc2lnMnVuc2lnX2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzaWduX21peHR1cmVfZW51bSwgc2lnbmVkX3RvX3NpZ25lZD4gICAgIHNpZzJzaWdfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHNpZ25fbWl4dHVyZV9lbnVtLCBzaWduZWRfdG9fdW5zaWduZWQ+ICAgc2lnMnVuc2lnX2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzaWduX21peHR1cmVfZW51bSwgdW5zaWduZWRfdG9fc2lnbmVkPiAgIHVuc2lnMnNpZ19jIDsKLQotICAvLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgZ2V0X3NpZ25fbWl4dHVyZTxULFM+Ojp0eXBlCi0gIC8vCi0gIC8vIFNlbGVjdHMgdGhlIGFwcHJvcHJpYXRlIFNpZ25NaXh0dXJlIEludGVncmFsIENvbnN0YW50IGZvciB0aGUgY29tYmluYXRpb24gVCxTLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gIHN0cnVjdCBnZXRfc2lnbl9taXh0dXJlCi0gIHsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxTPjo6aXNfc2lnbmVkID4gU19zaWduZWQgOwotICAgIHR5cGVkZWYgbXBsOjpib29sXzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQgPiBUX3NpZ25lZCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBmb3JfYm90aDxTX3NpZ25lZCwgVF9zaWduZWQsIHNpZzJzaWdfYywgc2lnMnVuc2lnX2MsIHVuc2lnMnNpZ19jLCB1bnNpZzJ1bnNpZ19jPjo6dHlwZQotICAgICAgICB0eXBlIDsKLSAgfSA7Ci0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGZvcl9zaWduX21peHR1cmU8U2lnbk1peHR1cmUsU2lnMlNpZyxTaWcyVW5zaWcsVW5zaWcyU2lnLFVuc2lnMlVuc2lnPjo6dHlwZQotICAvLwotICAvLyB7U2lnbk1peHR1cmV9IGlzIG9uZSBvZiB0aGUgSW50ZWdyYWwgQ29uc3RhbnRzIGZvciBTaWduTWl4dHVyZSwgZGVjbGFyZWQgYWJvdmUuCi0gIC8vIHtTaWcyU2lnLFNpZzJVbnNpZyxVbnNpZzJTaWcsVW5zaWcyVW5zaWd9IGFyZSBhcmlidHJhcnkgdHlwZXMuIChub3QgbWV0YWZ1bmN0aW9ucykKLSAgLy8KLSAgLy8gQWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiAnU2lnbk1peHR1cmUnLCBzZWxlY3RzIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ25NaXh0dXJlLCBjbGFzcyBTaWcyU2lnLCBjbGFzcyBTaWcyVW5zaWcsIGNsYXNzIFVuc2lnMlNpZywgY2xhc3MgVW5zaWcyVW5zaWc+Ci0gIHN0cnVjdCBmb3Jfc2lnbl9taXh0dXJlCi0gIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBjdF9zd2l0Y2g0PFNpZ25NaXh0dXJlCi0gICAgICAgICAgICAgICAgICwgc2lnMnNpZ19jLCBzaWcydW5zaWdfYywgdW5zaWcyc2lnX2MgIC8vIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgLCBTaWcyU2lnICAsIFNpZzJVbnNpZyAgLCBVbnNpZzJTaWcgICwgVW5zaWcyVW5zaWcKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgIHR5cGUgOwotICB9IDsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZGV0YWlsCi0KLSNlbmRpZgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3VkdF9idWlsdGluX21peHR1cmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3VkdF9idWlsdGluX21peHR1cmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzM4MmVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC91ZHRfYnVpbHRpbl9taXh0dXJlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9VRFRfQlVJTFRJTl9NSVhUVVJFX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfVURUX0JVSUxUSU5fTUlYVFVSRV9GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vdWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL21ldGEuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7IG5hbWVzcGFjZSBjb252ZGV0YWlsCi17Ci0gIC8vIEludGVncmFsIENvbnN0YW50cyBmb3IgJ1VkdE1peHR1cmUnCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHVkdF9idWlsdGluX21peHR1cmVfZW51bSwgYnVpbHRpbl90b19idWlsdGluPiBidWlsdGluMmJ1aWx0aW5fYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHVkdF9idWlsdGluX21peHR1cmVfZW51bSwgYnVpbHRpbl90b191ZHQ+ICAgICBidWlsdGluMnVkdF9jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8dWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLCB1ZHRfdG9fYnVpbHRpbj4gICAgIHVkdDJidWlsdGluX2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzx1ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0sIHVkdF90b191ZHQ+ICAgICAgICAgdWR0MnVkdF9jIDsKLQotICAvLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgZm9yX3VkdF9taXh0dXJlPFVkdE1peHR1cmUsQnVpbHRJbjJCdWlsdEluLEJ1aWx0SW4yVWR0LFVkdDJCdWlsdEluLFVkdDJVZHQ+Ojp0eXBlCi0gIC8vCi0gIC8vIHtVZHRNaXh0dXJlfSBpcyBvbmUgb2YgdGhlIEludGVncmFsIENvbnN0YW50cyBmb3IgVWRNaXh0dXJlLCBkZWNsYXJlZCBhYm92ZS4KLSAgLy8ge0J1aWx0SW4yQnVpbHRJbixCdWlsdEluMlVkdCxVZHQyQnVpbHRJbixVZHQyVWR0fSBhcmUgYXJpYnRyYXJ5IHR5cGVzLiAobm90IG1ldGFmdW5jdGlvbnMpCi0gIC8vCi0gIC8vIEFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgJ1VkdE1peHR1cmUnLCBzZWxlY3RzIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFVkdE1peHR1cmUsIGNsYXNzIEJ1aWx0SW4yQnVpbHRJbiwgY2xhc3MgQnVpbHRJbjJVZHQsIGNsYXNzIFVkdDJCdWlsdEluLCBjbGFzcyBVZHQyVWR0PgotICBzdHJ1Y3QgZm9yX3VkdF9idWlsdGluX21peHR1cmUKLSAgewotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGN0X3N3aXRjaDQ8VWR0TWl4dHVyZQotICAgICAgICAgICAgICAgICAsIGJ1aWx0aW4yYnVpbHRpbl9jLCBidWlsdGluMnVkdF9jLCB1ZHQyYnVpbHRpbl9jIC8vIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgLCBCdWlsdEluMkJ1aWx0SW4gICwgQnVpbHRJbjJVZHQgICwgVWR0MkJ1aWx0SW4gICwgVWR0MlVkdAotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgdHlwZSA7Ci0gIH0gOwotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBnZXRfdWR0X21peHR1cmU8VCxTPjo6dHlwZQotICAvLwotICAvLyBTZWxlY3RzIHRoZSBhcHByb3ByaWF0ZSBVZHRNaXh0dXJlIEludGVncmFsIENvbnN0YW50IGZvciB0aGUgY29tYmluYXRpb24gVCxTLgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gIHN0cnVjdCBnZXRfdWR0X2J1aWx0aW5fbWl4dHVyZQotICB7Ci0gICAgdHlwZWRlZiBpc19hcml0aG1ldGljPFM+IFNfYnVpbHRpbiA7Ci0gICAgdHlwZWRlZiBpc19hcml0aG1ldGljPFQ+IFRfYnVpbHRpbiA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBmb3JfYm90aDxTX2J1aWx0aW4sIFRfYnVpbHRpbiwgYnVpbHRpbjJidWlsdGluX2MsIGJ1aWx0aW4ydWR0X2MsIHVkdDJidWlsdGluX2MsIHVkdDJ1ZHRfYz46OnR5cGUKLSAgICAgICAgdHlwZSA7Ci0gIH0gOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZkZXRhaWwKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vaW50X2Zsb2F0X21peHR1cmVfZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9pbnRfZmxvYXRfbWl4dHVyZV9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY1Y2M1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9pbnRfZmxvYXRfbWl4dHVyZV9lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0lOVF9GTE9BVF9NSVhUVVJFX0VOVU1fRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0lOVF9GTE9BVF9NSVhUVVJFX0VOVU1fRkxDXzEyTk9WMjAwMl9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMKLXsKLSAgZW51bSBpbnRfZmxvYXRfbWl4dHVyZV9lbnVtCi0gIHsKLSAgICAgaW50ZWdyYWxfdG9faW50ZWdyYWwKLSAgICAsaW50ZWdyYWxfdG9fZmxvYXQKLSAgICAsZmxvYXRfdG9faW50ZWdyYWwKLSAgICAsZmxvYXRfdG9fZmxvYXQKLSAgfSA7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWMKLQotI2VuZGlmCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL251bWVyaWNfY2FzdF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDkzNjRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL251bWVyaWNfY2FzdF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLy8KLS8vISBDb3B5cmlnaHQgKGMpIDIwMTEKLS8vISBCcmFuZG9uIEtvaG4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NBU1RfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NBU1RfVFJBSVRTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlcl9wb2xpY2llcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgRW5hYmxlSWYgPSB2b2lkPgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyICAgIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8U291cmNlPiAgICAgICAgICAgcm91bmRpbmdfcG9saWN5OwotICAgIH07Ci0KLX19Ly9uYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM7Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1JFTEFYX0JVSUxUX0lOX0NBU1RfVFJBSVRTICkKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL251bWVyaWNfY2FzdF90cmFpdHMuaHBwPgotI2VuZGlmLy8hZGVmaW5lZCBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fUkVMQVhfQlVJTFRfSU5fQ0FTVF9UUkFJVFMKLQotI2VuZGlmLy9ORE5CT09TVF9OVU1FUklDX0NBU1RfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vc2lnbl9taXh0dXJlX2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vc2lnbl9taXh0dXJlX2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDQxZGYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL3NpZ25fbWl4dHVyZV9lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NJR05fTUlYVFVSRV9FTlVNX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TSUdOX01JWFRVUkVfRU5VTV9GTENfMTJOT1YyMDAyX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYwotewotICBlbnVtIHNpZ25fbWl4dHVyZV9lbnVtCi0gIHsKLSAgICAgdW5zaWduZWRfdG9fdW5zaWduZWQKLSAgICAsc2lnbmVkX3RvX3NpZ25lZAotICAgICxzaWduZWRfdG9fdW5zaWduZWQKLSAgICAsdW5zaWduZWRfdG9fc2lnbmVkCi0gIH0gOwotCi19IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljCi0KLSNlbmRpZgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vdWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL3VkdF9idWlsdGluX21peHR1cmVfZW51bS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiYTQ0MWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vdWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1VEVF9CVUlMVElOX01JWFRVUkVfRU5VTV9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fVURUX0JVSUxUSU5fTUlYVFVSRV9FTlVNX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljCi17Ci0gIGVudW0gdWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtCi0gIHsKLSAgICAgYnVpbHRpbl90b19idWlsdGluCi0gICAgLGJ1aWx0aW5fdG9fdWR0Ci0gICAgLHVkdF90b19idWlsdGluCi0gICAgLHVkdF90b191ZHQKLSAgfSA7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWMKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvb3BlcmF0b3JzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvb3BlcmF0b3JzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgyYTA2OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L29wZXJhdG9ycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NzggKzAsMCBAQAotLy8gIEJvb3N0IG9wZXJhdG9ycy5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcywgSmVyZW15IFNpZWssIERhcnlsZSBXYWxrZXIgMTk5OS0yMDAxLgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS9vcGVyYXRvcnMuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAgUmV2aXNpb24gSGlzdG9yeQotLy8gIDE2IERlYyAxMCBMaW1pdCB3YXJuaW5nIHN1cHByZXNzaW9uIGZvciA0Mjg0IHRvIG9sZGVyIHZlcnNpb25zIG9mIFZDKysKLS8vICAgICAgICAgICAgKE1hdHRoZXcgQnJhZGJ1cnksIGZpeGVzICM0NDMyKQotLy8gIDA3IEF1ZyAwOCBBZGRlZCAiZXVjbGlkZWFuIiBzcGVsbGluZy4gKERhbmllbCBGcmV5KQotLy8gIDAzIEFwciAwOCBNYWtlIHN1cmUgImNvbnZlcnRpYmxlIHRvIGJvb2wiIGlzIHN1ZmZpY2llbnQKLS8vICAgICAgICAgICAgZm9yIFQ6Om9wZXJhdG9yPCwgZXRjLiAoRGFuaWVsIEZyZXkpCi0vLyAgMjQgTWF5IDA3IENoYW5nZWQgZW1wdHlfYmFzZSB0byBkZXBlbmQgb24gVCwgc2VlCi0vLyAgICAgICAgICAgIGh0dHA6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0Lzk3OQotLy8gIDIxIE9jdCAwMiBNb2RpZmllZCBpbXBsZW1lbnRhdGlvbiBvZiBvcGVyYXRvcnMgdG8gYWxsb3cgY29tcGlsZXJzIHdpdGggYQotLy8gICAgICAgICAgICBjb3JyZWN0IG5hbWVkIHJldHVybiB2YWx1ZSBvcHRpbWl6YXRpb24gKE5SVk8pIHRvIHByb2R1Y2Ugb3B0aW1hbAotLy8gICAgICAgICAgICBjb2RlLiAgKERhbmllbCBGcmV5KQotLy8gIDAyIERlYyAwMSBCdWcgZml4ZWQgaW4gcmFuZG9tX2FjY2Vzc19pdGVyYXRhYmxlLiAgKEhlbG11dCBaZWlzZWwpCi0vLyAgMjggU2VwIDAxIEZhY3RvcmVkIG91dCBpdGVyYXRvciBvcGVyYXRvciBncm91cHMuICAoRGFyeWxlIFdhbGtlcikKLS8vICAyNyBBdWcgMDEgJ2xlZnQnIGZvcm0gZm9yIG5vbiBjb21tdXRhdGl2ZSBvcGVyYXRvcnMgYWRkZWQ7Ci0vLyAgICAgICAgICAgIGFkZGl0aW9uYWwgY2xhc3NlcyBmb3IgZ3JvdXBzIG9mIHJlbGF0ZWQgb3BlcmF0b3JzIGFkZGVkOwotLy8gICAgICAgICAgICB3b3JrYXJvdW5kIGZvciBlbXB0eSBiYXNlIGNsYXNzIG9wdGltaXphdGlvbgotLy8gICAgICAgICAgICBidWcgb2YgR0NDIDMuMCAoSGVsbXV0IFplaXNlbCkKLS8vICAyNSBKdW4gMDEgb3V0cHV0X2l0ZXJhdG9yX2hlbHBlciBjaGFuZ2VzOiByZW1vdmVkIGRlZmF1bHQgdGVtcGxhdGUgCi0vLyAgICAgICAgICAgIHBhcmFtZXRlcnMsIGFkZGVkIHN1cHBvcnQgZm9yIHNlbGYtcHJveHlpbmcsIGFkZGl0aW9uYWwgCi0vLyAgICAgICAgICAgIGRvY3VtZW50YXRpb24gYW5kIHRlc3RzIChBbGVrc2V5IEd1cnRvdm95KQotLy8gIDI5IE1heSAwMSBBZGRlZCBvcGVyYXRvciBjbGFzc2VzIGZvciA8PCBhbmQgPj4uICBBZGRlZCBpbnB1dCBhbmQgb3V0cHV0Ci0vLyAgICAgICAgICAgIGl0ZXJhdG9yIGhlbHBlciBjbGFzc2VzLiAgQWRkZWQgY2xhc3NlcyB0byBjb25uZWN0IGVxdWFsaXR5IGFuZAotLy8gICAgICAgICAgICByZWxhdGlvbmFsIG9wZXJhdG9ycy4gIEFkZGVkIGNsYXNzZXMgZm9yIGdyb3VwcyBvZiByZWxhdGVkCi0vLyAgICAgICAgICAgIG9wZXJhdG9ycy4gIFJlaW1wbGVtZW50ZWQgZXhhbXBsZSBvcGVyYXRvciBhbmQgaXRlcmF0b3IgaGVscGVyCi0vLyAgICAgICAgICAgIGNsYXNzZXMgaW4gdGVybXMgb2YgdGhlIG5ldyBncm91cHMuICAoRGFyeWxlIFdhbGtlciwgd2l0aCBoZWxwCi0vLyAgICAgICAgICAgIGZyb20gQWxleHkgR3VydG92b3kpCi0vLyAgMTEgRmViIDAxIEZpeGVkIGJ1Z3MgaW4gdGhlIGl0ZXJhdG9yIGhlbHBlcnMgd2hpY2ggcHJldmVudGVkIGV4cGxpY2l0bHkKLS8vICAgICAgICAgICAgc3VwcGxpZWQgYXJndW1lbnRzIGZyb20gYWN0dWFsbHkgYmVpbmcgdXNlZCAoRGF2ZSBBYnJhaGFtcykKLS8vICAwNCBKdWwgMDAgRml4ZWQgTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRSBidWdzLCBtYWpvciBjbGVhbnVwIGFuZAotLy8gICAgICAgICAgICByZWZhY3RvcmluZyBvZiBjb21waWxlciB3b3JrYXJvdW5kcywgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uCi0vLyAgICAgICAgICAgIChBbGV4eSBHdXJ0b3ZveSBhbmQgTWFyayBSb2RnZXJzIHdpdGggc29tZSBoZWxwIGFuZCBwcm9tcHRpbmcgZnJvbQotLy8gICAgICAgICAgICBEYXZlIEFicmFoYW1zKSAKLS8vICAyOCBKdW4gMDAgR2VuZXJhbCBjbGVhbnVwIGFuZCBpbnRlZ3JhdGlvbiBvZiBidWdmaXhlcyBmcm9tIE1hcmsgUm9kZ2VycyBhbmQKLS8vICAgICAgICAgICAgSmVyZW15IFNpZWsgKERhdmUgQWJyYWhhbXMpCi0vLyAgMjAgSnVuIDAwIENoYW5nZXMgdG8gYWNjb21tb2RhdGUgQm9ybGFuZCBDKytCdWlsZGVyIDQgYW5kIEJvcmxhbmQgQysrIDUuNQotLy8gICAgICAgICAgICAoTWFyayBSb2RnZXJzKQotLy8gIDIwIEp1biAwMCBNaW5vciBmaXhlcyB0byB0aGUgcHJpb3IgcmV2aXNpb24gKEFsZWtzZXkgR3VydG92b3kpCi0vLyAgMTAgSnVuIDAwIFN1cHBvcnQgZm9yIHRoZSBiYXNlIGNsYXNzIGNoYWluaW5nIHRlY2huaXF1ZSB3YXMgYWRkZWQKLS8vICAgICAgICAgICAgKEFsZWtzZXkgR3VydG92b3kpLiBTZWUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIGNvbW1lbnRzIGJlbG93IAotLy8gICAgICAgICAgICBmb3IgdGhlIGRldGFpbHMuIAotLy8gIDEyIERlYyA5OSBJbml0aWFsIHZlcnNpb24gd2l0aCBpdGVyYXRvciBvcGVyYXRvcnMgKEplcmVteSBTaWVrKQotLy8gIDE4IE5vdiA5OSBDaGFuZ2UgbmFtZSAiZGl2aWRlYWJsZSIgdG8gImRpdmlkYWJsZSIsIHJlbW92ZSB1bm5lY2Vzc2FyeQotLy8gICAgICAgICAgICBzcGVjaWFsaXphdGlvbnMgb2YgZGl2aWRhYmxlLCBzdWJ0cmFjdGFibGUsIG1vZGFibGUgKEVkIEJyZXkpIAotLy8gIDE3IE5vdiA5OSBBZGQgY29tbWVudHMgKEJlbWFuIERhd2VzKQotLy8gICAgICAgICAgICBSZW1vdmUgdW5uZWNlc3Nhcnkgc3BlY2lhbGl6YXRpb24gb2Ygb3BlcmF0b3JzPD4gKEVkIEJyZXkpCi0vLyAgMTUgTm92IDk5IEZpeCBsZXNzX3RoYW5fY29tcGFyYWJsZTxULFU+IHNlY29uZCBvcGVyYW5kIHR5cGUgZm9yIGZpcnN0IHR3bwotLy8gICAgICAgICAgICBvcGVyYXRvcnMuKEJlbWFuIERhd2VzKQotLy8gIDEyIE5vdiA5OSBBZGQgb3BlcmF0b3JzIHRlbXBsYXRlcyAoRWQgQnJleSkKLS8vICAxMSBOb3YgOTkgQWRkIHNpbmdsZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdmVyc2lvbiBmb3IgY29tcGlsZXJzIHdpdGhvdXQKLS8vICAgICAgICAgICAgcGFydGlhbCBzcGVjaWFsaXphdGlvbiAoQmVtYW4gRGF3ZXMpCi0vLyAgMTAgTm92IDk5IEluaXRpYWwgdmVyc2lvbgotCi0vLyAxMCBKdW4gMDA6Ci0vLyBBbiBhZGRpdGlvbmFsIG9wdGlvbmFsIHRlbXBsYXRlIHBhcmFtZXRlciB3YXMgYWRkZWQgdG8gbW9zdCBvZiAKLS8vIG9wZXJhdG9yIHRlbXBsYXRlcyB0byBzdXBwb3J0IHRoZSBiYXNlIGNsYXNzIGNoYWluaW5nIHRlY2huaXF1ZSAoc2VlIAotLy8gZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGRldGFpbHMpLiBVbmZvcnR1bmF0ZWx5LCBhIHN0cmFpZ2h0Zm9yd2FyZAotLy8gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjaGFuZ2Ugd291bGQgaGF2ZSBicm9rZW4gY29tcGF0aWJpbGl0eSB3aXRoIHRoZQotLy8gcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBieSBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byB1c2UgdGhlIHNhbWUKLS8vIHRlbXBsYXRlIG5hbWUgKGUuZy4gJ2FkZGFibGUnKSBmb3IgYm90aCB0aGUgMS0gYW5kIDItYXJndW1lbnQgdmVyc2lvbnMgb2YKLS8vIGFuIG9wZXJhdG9yIHRlbXBsYXRlLiBUaGlzIGltcGxlbWVudGF0aW9uIHNvbHZlcyB0aGUgYmFja3dhcmQtY29tcGF0aWJpbGl0eQotLy8gaXNzdWUgYXQgdGhlIGNvc3Qgb2Ygc29tZSBzaW1wbGljaXR5LgotLy8KLS8vIE9uZSBvZiB0aGUgY29tcGxpY2F0aW9ucyBpcyBhbiBleGlzdGVuY2Ugb2Ygc3BlY2lhbCBhdXhpbGlhcnkgY2xhc3MgdGVtcGxhdGUKLS8vICdpc19jaGFpbmVkX2Jhc2U8PicgKHNlZSAnZGV0YWlsJyBuYW1lc3BhY2UgYmVsb3cpLCB3aGljaCBpcyB1c2VkCi0vLyB0byBkZXRlcm1pbmUgd2hldGhlciBpdHMgdGVtcGxhdGUgcGFyYW1ldGVyIGlzIGEgbGlicmFyeSdzIG9wZXJhdG9yIHRlbXBsYXRlCi0vLyBvciBub3QuIFlvdSBoYXZlIHRvIHNwZWNpYWxpemUgJ2lzX2NoYWluZWRfYmFzZTw+JyBmb3IgZWFjaCBuZXcgCi0vLyBvcGVyYXRvciB0ZW1wbGF0ZSB5b3UgYWRkIHRvIHRoZSBsaWJyYXJ5LgotLy8KLS8vIEhvd2V2ZXIsIG1vc3Qgb2YgdGhlIG5vbi10cml2aWFsIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlIGhpZGRlbiBiZWhpbmQgCi0vLyBzZXZlcmFsIGxvY2FsIG1hY3JvcyBkZWZpbmVkIGJlbG93LCBhbmQgYXMgc29vbiBhcyB5b3UgdW5kZXJzdGFuZCB0aGVtLAotLy8geW91IHVuZGVyc3RhbmQgdGhlIHdob2xlIGxpYnJhcnkgaW1wbGVtZW50YXRpb24uIAotCi0jaWZuZGVmIE5ETkJPT1NUX09QRVJBVE9SU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgZGVmaW5lZChfX3NnaSkgJiYgIWRlZmluZWQoX19HTlVDX18pCi0jICAgcHJhZ21hIHNldCB3b2ZmIDEyMzQKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDE2MDApCi0jICAgcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0Mjg0ICkgLy8gY29tcGxhaW50IGFib3V0IHJldHVybiB0eXBlIG9mIAotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZXJhdG9yLT4gbm90IGJlZ2luIGEgVURUCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIGVtcHR5X2Jhc2UgewotCi0vLyBIZWxtdXQgWmVpc2VsLCBlbXB0eSBiYXNlIGNsYXNzIG9wdGltaXphdGlvbiBidWcgd2l0aCBHQ0MgMy4wLjAKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXz09MyAmJiBfX0dOVUNfTUlOT1JfXz09MCAmJiBfX0dOVV9QQVRDSExFVkVMX189PTAKLSAgYm9vbCBkdW1teTsgCi0jZW5kaWYKLQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyBJbiB0aGlzIHNlY3Rpb24gd2Ugc3VwcGx5IHRoZSB4eHh4MSBhbmQgeHh4eDIgZm9ybXMgb2YgdGhlIG9wZXJhdG9yCi0vLyB0ZW1wbGF0ZXMsIHdoaWNoIGFyZSBleHBsaWNpdGx5IHRhcmdldGVkIGF0IHRoZSAxLXR5cGUtYXJndW1lbnQgYW5kCi0vLyAyLXR5cGUtYXJndW1lbnQgb3BlcmF0b3IgZm9ybXMsIHJlc3BlY3RpdmVseS4gU29tZSBjb21waWxlcnMgZ2V0IGNvbmZ1c2VkCi0vLyB3aGVuIGlubGluZSBmcmllbmQgZnVuY3Rpb25zIGFyZSBvdmVybG9hZGVkIGluIG5hbWVzcGFjZXMgb3RoZXIgdGhhbiB0aGUKLS8vIGdsb2JhbCBuYW1lc3BhY2UuIFdoZW4gTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRSBpcyBkZWZpbmVkLCBhbGwgb2YKLS8vIHRoZXNlIHRlbXBsYXRlcyBtdXN0IGdvIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UKLW5hbWVzcGFjZSBuZG5ib29zdAotewotI2VuZGlmCi0KLS8vICBCYXNpYyBvcGVyYXRvciBjbGFzc2VzIChjb250cmlidXRlZCBieSBEYXZlIEFicmFoYW1zKSAtLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgTm90ZSB0aGF0IGZyaWVuZCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBhIGNsYXNzIGFyZSBpbXBsaWNpdGx5IGlubGluZS4KLS8vICBTZWUgdGhlIEMrKyBzdGQsIDExLjQgW2NsYXNzLmZyaWVuZF0gcGFyYWdyYXBoIDUKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGxlc3NfdGhhbl9jb21wYXJhYmxlMiA6IEIKLXsKLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB4LCBjb25zdCBVJiB5KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeCA+IHkpOyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgeCwgY29uc3QgVSYgeSkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHggPCB5KTsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj4oY29uc3QgVSYgeCwgY29uc3QgVCYgeSkgIHsgcmV0dXJuIHkgPCB4OyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPChjb25zdCBVJiB4LCBjb25zdCBUJiB5KSAgeyByZXR1cm4geSA+IHg7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8PShjb25zdCBVJiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeSA8IHgpOyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oY29uc3QgVSYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHkgPiB4KTsgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGxlc3NfdGhhbl9jb21wYXJhYmxlMSA6IEIKLXsKLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpICB7IHJldHVybiB5IDwgeDsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih5IDwgeCk7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeCA8IHkpOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXF1YWxpdHlfY29tcGFyYWJsZTIgOiBCCi17Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVSYgeSwgY29uc3QgVCYgeCkgeyByZXR1cm4geCA9PSB5OyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgVSYgeSwgY29uc3QgVCYgeCkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHggPT0geSk7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB5LCBjb25zdCBVJiB4KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeSA9PSB4KTsgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGVxdWFsaXR5X2NvbXBhcmFibGUxIDogQgotewotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4ID09IHkpOyB9Ci19OwotCi0vLyBBIG1hY3JvIHdoaWNoIHByb2R1Y2VzICJuYW1lXzJsZWZ0IiBmcm9tICJuYW1lIi4KLSNkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1IyX0xFRlQobmFtZSkgbmFtZSMjMiMjXyMjbGVmdAotCi0vLyAgTlJWTy1mcmllbmRseSBpbXBsZW1lbnRhdGlvbiAoY29udHJpYnV0ZWQgYnkgRGFuaWVsIEZyZXkpIC0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19OUlZPKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZPUkNFX1NZTU1FVFJJQ19PUEVSQVRPUlMpCi0KLS8vIFRoaXMgaXMgdGhlIG9wdGltYWwgaW1wbGVtZW50YXRpb24gZm9yIElTTy9BTlNJIEMrKywKLS8vIGJ1dCBpdCByZXF1aXJlcyB0aGUgY29tcGlsZXIgdG8gaW1wbGVtZW50IHRoZSBOUlZPLgotLy8gSWYgdGhlIGNvbXBpbGVyIGhhcyBubyBOUlZPLCB0aGlzIGlzIHRoZSBiZXN0IHN5bW1ldHJpYwotLy8gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlLgotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRSggTkFNRSwgT1AgKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMiA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBjb25zdCBUJiBsaHMsIGNvbnN0IFUmIHJocyApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyBUIG5ydiggbGhzICk7IG5ydiBPUCMjPSByaHM7IHJldHVybiBucnY7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBjb25zdCBVJiBsaHMsIGNvbnN0IFQmIHJocyApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyBUIG5ydiggcmhzICk7IG5ydiBPUCMjPSBsaHM7IHJldHVybiBucnY7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBjb25zdCBUJiBsaHMsIGNvbnN0IFQmIHJocyApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyBUIG5ydiggbGhzICk7IG5ydiBPUCMjPSByaHM7IHJldHVybiBucnY7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OwotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9OT05fQ09NTVVUQVRJVkUoIE5BTUUsIE9QICkgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICBcCi1zdHJ1Y3QgTkFNRSMjMiA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBjb25zdCBUJiBsaHMsIGNvbnN0IFUmIHJocyApICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyBUIG5ydiggbGhzICk7IG5ydiBPUCMjPSByaHM7IHJldHVybiBucnY7IH0gICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICBcCi1zdHJ1Y3QgTkROQk9PU1RfT1BFUkFUT1IyX0xFRlQoTkFNRSkgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBjb25zdCBVJiBsaHMsIGNvbnN0IFQmIHJocyApICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyBUIG5ydiggbGhzICk7IG5ydiBPUCMjPSByaHM7IHJldHVybiBucnY7IH0gICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBjb25zdCBUJiBsaHMsIGNvbnN0IFQmIHJocyApICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyBUIG5ydiggbGhzICk7IG5ydiBPUCMjPSByaHM7IHJldHVybiBucnY7IH0gICAgICAgICAgICAgICAgICAgICAgICBcCi19OwotCi0jZWxzZSAvLyBkZWZpbmVkKE5ETkJPT1NUX0hBU19OUlZPKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZPUkNFX1NZTU1FVFJJQ19PUEVSQVRPUlMpCi0KLS8vIEZvciBjb21waWxlcnMgd2l0aG91dCBOUlZPIHRoZSBmb2xsb3dpbmcgY29kZSBpcyBvcHRpbWFsLCBidXQgbm90Ci0vLyBzeW1tZXRyaWMhICBOb3RlIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mCi0vLyBORE5CT09TVF9PUEVSQVRPUjJfTEVGVChOQU1FKSBvbmx5IGxvb2tzIGNvb2wsIGJ1dCBkb2Vzbid0IHByb3ZpZGUKLS8vIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzIHRvIHRoZSBjb21waWxlciA6KQotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRSggTkFNRSwgT1AgKSAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICBcCi1zdHJ1Y3QgTkFNRSMjMiA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBUIGxocywgY29uc3QgVSYgcmhzICkgeyByZXR1cm4gbGhzIE9QIyM9IHJoczsgfSBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBjb25zdCBVJiBsaHMsIFQgcmhzICkgeyByZXR1cm4gcmhzIE9QIyM9IGxoczsgfSBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBUIGxocywgY29uc3QgVCYgcmhzICkgeyByZXR1cm4gbGhzIE9QIyM9IHJoczsgfSBcCi19OwotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9OT05fQ09NTVVUQVRJVkUoIE5BTUUsIE9QICkgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICBcCi1zdHJ1Y3QgTkFNRSMjMiA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBUIGxocywgY29uc3QgVSYgcmhzICkgeyByZXR1cm4gbGhzIE9QIyM9IHJoczsgfSBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICBcCi1zdHJ1Y3QgTkROQk9PU1RfT1BFUkFUT1IyX0xFRlQoTkFNRSkgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBjb25zdCBVJiBsaHMsIGNvbnN0IFQmIHJocyApICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyByZXR1cm4gVCggbGhzICkgT1AjIz0gcmhzOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBUIGxocywgY29uc3QgVCYgcmhzICkgeyByZXR1cm4gbGhzIE9QIyM9IHJoczsgfSBcCi19OwotCi0jZW5kaWYgLy8gZGVmaW5lZChORE5CT09TVF9IQVNfTlJWTykgfHwgZGVmaW5lZChORE5CT09TVF9GT1JDRV9TWU1NRVRSSUNfT1BFUkFUT1JTKQotCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfQ09NTVVUQVRJVkUoIG11bHRpcGxpYWJsZSwgKiApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfQ09NTVVUQVRJVkUoIGFkZGFibGUsICsgKQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX05PTl9DT01NVVRBVElWRSggc3VidHJhY3RhYmxlLCAtICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9OT05fQ09NTVVUQVRJVkUoIGRpdmlkYWJsZSwgLyApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfTk9OX0NPTU1VVEFUSVZFKCBtb2RhYmxlLCAlICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRSggeG9yYWJsZSwgXiApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfQ09NTVVUQVRJVkUoIGFuZGFibGUsICYgKQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFKCBvcmFibGUsIHwgKQotCi0jdW5kZWYgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFCi0jdW5kZWYgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX05PTl9DT01NVVRBVElWRQotI3VuZGVmIE5ETkJPT1NUX09QRVJBVE9SMl9MRUZUCi0KLS8vICBpbmNyZW1lbnRhYmxlIGFuZCBkZWNyZW1lbnRhYmxlIGNvbnRyaWJ1dGVkIGJ5IEplcmVteSBTaWVrCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBpbmNyZW1lbnRhYmxlIDogQgotewotICBmcmllbmQgVCBvcGVyYXRvcisrKFQmIHgsIGludCkKLSAgewotICAgIGluY3JlbWVudGFibGVfdHlwZSBucnYoeCk7Ci0gICAgKyt4OwotICAgIHJldHVybiBucnY7Ci0gIH0KLXByaXZhdGU6IC8vIFRoZSB1c2Ugb2YgdGhpcyB0eXBlZGVmIHdvcmtzIGFyb3VuZCBhIEJvcmxhbmQgYnVnCi0gIHR5cGVkZWYgVCBpbmNyZW1lbnRhYmxlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZGVjcmVtZW50YWJsZSA6IEIKLXsKLSAgZnJpZW5kIFQgb3BlcmF0b3ItLShUJiB4LCBpbnQpCi0gIHsKLSAgICBkZWNyZW1lbnRhYmxlX3R5cGUgbnJ2KHgpOwotICAgIC0teDsKLSAgICByZXR1cm4gbnJ2OwotICB9Ci1wcml2YXRlOiAvLyBUaGUgdXNlIG9mIHRoaXMgdHlwZWRlZiB3b3JrcyBhcm91bmQgYSBCb3JsYW5kIGJ1ZwotICB0eXBlZGVmIFQgZGVjcmVtZW50YWJsZV90eXBlOwotfTsKLQotLy8gIEl0ZXJhdG9yIG9wZXJhdG9yIGNsYXNzZXMgKGNvbnRyaWJ1dGVkIGJ5IEplcmVteSBTaWVrKSAtLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZGVyZWZlcmVuY2VhYmxlIDogQgotewotICBQIG9wZXJhdG9yLT4oKSBjb25zdAotICB7IAotICAgIHJldHVybiAmKnN0YXRpY19jYXN0PGNvbnN0IFQmPigqdGhpcyk7IAotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSSwgY2xhc3MgUiwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgaW5kZXhhYmxlIDogQgotewotICBSIG9wZXJhdG9yW10oSSBuKSBjb25zdAotICB7Ci0gICAgcmV0dXJuICooc3RhdGljX2Nhc3Q8Y29uc3QgVCY+KCp0aGlzKSArIG4pOwotICB9Ci19OwotCi0vLyAgTW9yZSBvcGVyYXRvciBjbGFzc2VzIChjb250cmlidXRlZCBieSBEYXJ5bGUgV2Fsa2VyKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgKE5SVk8tZnJpZW5kbHkgaW1wbGVtZW50YXRpb24gY29udHJpYnV0ZWQgYnkgRGFuaWVsIEZyZXkpIC0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19OUlZPKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZPUkNFX1NZTU1FVFJJQ19PUEVSQVRPUlMpCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SKCBOQU1FLCBPUCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgIFwKLXN0cnVjdCBOQU1FIyMyIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFQmIGxocywgY29uc3QgVSYgcmhzICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBOQU1FIyMxIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFQmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07Ci0KLSNlbHNlIC8vIGRlZmluZWQoTkROQk9PU1RfSEFTX05SVk8pIHx8IGRlZmluZWQoTkROQk9PU1RfRk9SQ0VfU1lNTUVUUklDX09QRVJBVE9SUykKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfT1BFUkFUT1IoIE5BTUUsIE9QICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgXAotc3RydWN0IE5BTUUjIzIgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggVCBsaHMsIGNvbnN0IFUmIHJocyApIHsgcmV0dXJuIGxocyBPUCMjPSByaHM7IH0gICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgICAgICAgICAgXAotc3RydWN0IE5BTUUjIzEgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggVCBsaHMsIGNvbnN0IFQmIHJocyApIHsgcmV0dXJuIGxocyBPUCMjPSByaHM7IH0gICAgICAgXAotfTsKLQotI2VuZGlmIC8vIGRlZmluZWQoTkROQk9PU1RfSEFTX05SVk8pIHx8IGRlZmluZWQoTkROQk9PU1RfRk9SQ0VfU1lNTUVUUklDX09QRVJBVE9SUykKLQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SKCBsZWZ0X3NoaWZ0YWJsZSwgPDwgKQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SKCByaWdodF9zaGlmdGFibGUsID4+ICkKLQotI3VuZGVmIE5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUgotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXF1aXZhbGVudDIgOiBCCi17Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgeCwgY29uc3QgVSYgeSkKLSAgewotICAgIHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeCA8IHkpICYmICFzdGF0aWNfY2FzdDxib29sPih4ID4geSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBlcXVpdmFsZW50MSA6IEIKLXsKLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJngsIGNvbnN0IFQmeSkKLSAgewotICAgIHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeCA8IHkpICYmICFzdGF0aWNfY2FzdDxib29sPih5IDwgeCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBwYXJ0aWFsbHlfb3JkZXJlZDIgOiBCCi17Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYgeCwgY29uc3QgVSYgeSkKLSAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih4IDwgeSkgfHwgc3RhdGljX2Nhc3Q8Ym9vbD4oeCA9PSB5KTsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHgsIGNvbnN0IFUmIHkpCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeCA+IHkpIHx8IHN0YXRpY19jYXN0PGJvb2w+KHggPT0geSk7IH0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpCi0gICAgeyByZXR1cm4geSA8IHg7IH0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpCi0gICAgeyByZXR1cm4geSA+IHg7IH0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8PShjb25zdCBVJiB4LCBjb25zdCBUJiB5KQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHkgPiB4KSB8fCBzdGF0aWNfY2FzdDxib29sPih5ID09IHgpOyB9Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oY29uc3QgVSYgeCwgY29uc3QgVCYgeSkKLSAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih5IDwgeCkgfHwgc3RhdGljX2Nhc3Q8Ym9vbD4oeSA9PSB4KTsgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHBhcnRpYWxseV9vcmRlcmVkMSA6IEIKLXsKLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpCi0gICAgeyByZXR1cm4geSA8IHg7IH0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB4LCBjb25zdCBUJiB5KQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHggPCB5KSB8fCBzdGF0aWNfY2FzdDxib29sPih4ID09IHkpOyB9Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkKLSAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih5IDwgeCkgfHwgc3RhdGljX2Nhc3Q8Ym9vbD4oeCA9PSB5KTsgfQotfTsKLQotLy8gIENvbWJpbmVkIG9wZXJhdG9yIGNsYXNzZXMgKGNvbnRyaWJ1dGVkIGJ5IERhcnlsZSBXYWxrZXIpIC0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgdG90YWxseV9vcmRlcmVkMgotICAgIDogbGVzc190aGFuX2NvbXBhcmFibGUyPFQsIFUKLSAgICAsIGVxdWFsaXR5X2NvbXBhcmFibGUyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHRvdGFsbHlfb3JkZXJlZDEKLSAgICA6IGxlc3NfdGhhbl9jb21wYXJhYmxlMTxUCi0gICAgLCBlcXVhbGl0eV9jb21wYXJhYmxlMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBhZGRpdGl2ZTIKLSAgICA6IGFkZGFibGUyPFQsIFUKLSAgICAsIHN1YnRyYWN0YWJsZTI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgYWRkaXRpdmUxCi0gICAgOiBhZGRhYmxlMTxUCi0gICAgLCBzdWJ0cmFjdGFibGUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG11bHRpcGxpY2F0aXZlMgotICAgIDogbXVsdGlwbGlhYmxlMjxULCBVCi0gICAgLCBkaXZpZGFibGUyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG11bHRpcGxpY2F0aXZlMQotICAgIDogbXVsdGlwbGlhYmxlMTxUCi0gICAgLCBkaXZpZGFibGUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGludGVnZXJfbXVsdGlwbGljYXRpdmUyCi0gICAgOiBtdWx0aXBsaWNhdGl2ZTI8VCwgVQotICAgICwgbW9kYWJsZTI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgaW50ZWdlcl9tdWx0aXBsaWNhdGl2ZTEKLSAgICA6IG11bHRpcGxpY2F0aXZlMTxUCi0gICAgLCBtb2RhYmxlMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBhcml0aG1ldGljMgotICAgIDogYWRkaXRpdmUyPFQsIFUKLSAgICAsIG11bHRpcGxpY2F0aXZlMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBhcml0aG1ldGljMQotICAgIDogYWRkaXRpdmUxPFQKLSAgICAsIG11bHRpcGxpY2F0aXZlMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBpbnRlZ2VyX2FyaXRobWV0aWMyCi0gICAgOiBhZGRpdGl2ZTI8VCwgVQotICAgICwgaW50ZWdlcl9tdWx0aXBsaWNhdGl2ZTI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgaW50ZWdlcl9hcml0aG1ldGljMQotICAgIDogYWRkaXRpdmUxPFQKLSAgICAsIGludGVnZXJfbXVsdGlwbGljYXRpdmUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGJpdHdpc2UyCi0gICAgOiB4b3JhYmxlMjxULCBVCi0gICAgLCBhbmRhYmxlMjxULCBVCi0gICAgLCBvcmFibGUyPFQsIFUsIEIKLSAgICAgID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgYml0d2lzZTEKLSAgICA6IHhvcmFibGUxPFQKLSAgICAsIGFuZGFibGUxPFQKLSAgICAsIG9yYWJsZTE8VCwgQgotICAgICAgPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCB1bml0X3N0ZXBwYWJsZQotICAgIDogaW5jcmVtZW50YWJsZTxUCi0gICAgLCBkZWNyZW1lbnRhYmxlPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHNoaWZ0YWJsZTIKLSAgICA6IGxlZnRfc2hpZnRhYmxlMjxULCBVCi0gICAgLCByaWdodF9zaGlmdGFibGUyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHNoaWZ0YWJsZTEKLSAgICA6IGxlZnRfc2hpZnRhYmxlMTxUCi0gICAgLCByaWdodF9zaGlmdGFibGUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHJpbmdfb3BlcmF0b3JzMgotICAgIDogYWRkaXRpdmUyPFQsIFUKLSAgICAsIHN1YnRyYWN0YWJsZTJfbGVmdDxULCBVCi0gICAgLCBtdWx0aXBsaWFibGUyPFQsIFUsIEIKLSAgICAgID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgcmluZ19vcGVyYXRvcnMxCi0gICAgOiBhZGRpdGl2ZTE8VAotICAgICwgbXVsdGlwbGlhYmxlMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX3Jpbmdfb3BlcmF0b3JzMgotICAgIDogcmluZ19vcGVyYXRvcnMyPFQsIFUKLSAgICAsIHRvdGFsbHlfb3JkZXJlZDI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3JkZXJlZF9yaW5nX29wZXJhdG9yczEKLSAgICA6IHJpbmdfb3BlcmF0b3JzMTxUCi0gICAgLCB0b3RhbGx5X29yZGVyZWQxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGZpZWxkX29wZXJhdG9yczIKLSAgICA6IHJpbmdfb3BlcmF0b3JzMjxULCBVCi0gICAgLCBkaXZpZGFibGUyPFQsIFUKLSAgICAsIGRpdmlkYWJsZTJfbGVmdDxULCBVLCBCCi0gICAgICA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGZpZWxkX29wZXJhdG9yczEKLSAgICA6IHJpbmdfb3BlcmF0b3JzMTxUCi0gICAgLCBkaXZpZGFibGUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfZmllbGRfb3BlcmF0b3JzMgotICAgIDogZmllbGRfb3BlcmF0b3JzMjxULCBVCi0gICAgLCB0b3RhbGx5X29yZGVyZWQyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfZmllbGRfb3BlcmF0b3JzMQotICAgIDogZmllbGRfb3BlcmF0b3JzMTxUCi0gICAgLCB0b3RhbGx5X29yZGVyZWQxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGV1Y2xpZGlhbl9yaW5nX29wZXJhdG9yczIKLSAgICA6IHJpbmdfb3BlcmF0b3JzMjxULCBVCi0gICAgLCBkaXZpZGFibGUyPFQsIFUKLSAgICAsIGRpdmlkYWJsZTJfbGVmdDxULCBVCi0gICAgLCBtb2RhYmxlMjxULCBVCi0gICAgLCBtb2RhYmxlMl9sZWZ0PFQsIFUsIEIKLSAgICAgID4gPiA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGV1Y2xpZGlhbl9yaW5nX29wZXJhdG9yczEKLSAgICA6IHJpbmdfb3BlcmF0b3JzMTxUCi0gICAgLCBkaXZpZGFibGUxPFQKLSAgICAsIG1vZGFibGUxPFQsIEIKLSAgICAgID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3JkZXJlZF9ldWNsaWRpYW5fcmluZ19vcGVyYXRvcnMyCi0gICAgOiB0b3RhbGx5X29yZGVyZWQyPFQsIFUKLSAgICAsIGV1Y2xpZGlhbl9yaW5nX29wZXJhdG9yczI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3JkZXJlZF9ldWNsaWRpYW5fcmluZ19vcGVyYXRvcnMxCi0gICAgOiB0b3RhbGx5X29yZGVyZWQxPFQKLSAgICAsIGV1Y2xpZGlhbl9yaW5nX29wZXJhdG9yczE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzMgotICAgIDogcmluZ19vcGVyYXRvcnMyPFQsIFUKLSAgICAsIGRpdmlkYWJsZTI8VCwgVQotICAgICwgZGl2aWRhYmxlMl9sZWZ0PFQsIFUKLSAgICAsIG1vZGFibGUyPFQsIFUKLSAgICAsIG1vZGFibGUyX2xlZnQ8VCwgVSwgQgotICAgICAgPiA+ID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzMQotICAgIDogcmluZ19vcGVyYXRvcnMxPFQKLSAgICAsIGRpdmlkYWJsZTE8VAotICAgICwgbW9kYWJsZTE8VCwgQgotICAgICAgPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX2V1Y2xpZGVhbl9yaW5nX29wZXJhdG9yczIKLSAgICA6IHRvdGFsbHlfb3JkZXJlZDI8VCwgVQotICAgICwgZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX2V1Y2xpZGVhbl9yaW5nX29wZXJhdG9yczEKLSAgICA6IHRvdGFsbHlfb3JkZXJlZDE8VAotICAgICwgZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBpbnB1dF9pdGVyYXRhYmxlCi0gICAgOiBlcXVhbGl0eV9jb21wYXJhYmxlMTxUCi0gICAgLCBpbmNyZW1lbnRhYmxlPFQKLSAgICAsIGRlcmVmZXJlbmNlYWJsZTxULCBQLCBCCi0gICAgICA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG91dHB1dF9pdGVyYXRhYmxlCi0gICAgOiBpbmNyZW1lbnRhYmxlPFQsIEIKLSAgICAgID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBmb3J3YXJkX2l0ZXJhdGFibGUKLSAgICA6IGlucHV0X2l0ZXJhdGFibGU8VCwgUCwgQgotICAgICAgPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFAsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0YWJsZQotICAgIDogZm9yd2FyZF9pdGVyYXRhYmxlPFQsIFAKLSAgICAsIGRlY3JlbWVudGFibGU8VCwgQgotICAgICAgPiA+IHt9OwotCi0vLyAgVG8gYXZvaWQgcmVwZWF0ZWQgZGVyaXZhdGlvbiBmcm9tIGVxdWFsaXR5X2NvbXBhcmFibGUsCi0vLyAgd2hpY2ggaXMgYW4gaW5kaXJlY3QgYmFzZSBjbGFzcyBvZiBiaWRpcmVjdGlvbmFsX2l0ZXJhYmxlLAotLy8gIHJhbmRvbV9hY2Nlc3NfaXRlcmF0YWJsZSBtdXN0IG5vdCBiZSBkZXJpdmVkIGZyb20gdG90YWxseV9vcmRlcmVkMQotLy8gIGJ1dCBmcm9tIGxlc3NfdGhhbl9jb21wYXJhYmxlMSBvbmx5LiAoSGVsbXV0IFplaXNlbCwgMDItRGVjLTIwMDEpCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUCwgY2xhc3MgRCwgY2xhc3MgUiwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRhYmxlCi0gICAgOiBiaWRpcmVjdGlvbmFsX2l0ZXJhdGFibGU8VCwgUAotICAgICwgbGVzc190aGFuX2NvbXBhcmFibGUxPFQKLSAgICAsIGFkZGl0aXZlMjxULCBECi0gICAgLCBpbmRleGFibGU8VCwgRCwgUiwgQgotICAgICAgPiA+ID4gPiB7fTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotI2VuZGlmIC8vIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UKLQotCi0vLyBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUxIC4uIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTQgLQotLy8KLS8vIFdoZW4gTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRSBpcyBkZWZpbmVkIHdlIG5lZWQgYSB3YXkgdG8gaW1wb3J0IGFuCi0vLyBvcGVyYXRvciB0ZW1wbGF0ZSBpbnRvIHRoZSBib29zdCBuYW1lc3BhY2UuIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEgaXMgdXNlZAotLy8gZm9yIG9uZS1hcmd1bWVudCBmb3JtcyBvZiBvcGVyYXRvciB0ZW1wbGF0ZXM7IE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIgZm9yCi0vLyB0d28tYXJndW1lbnQgZm9ybXMuIE5vdGUgdGhhdCB0aGVzZSBtYWNyb3MgZXhwZWN0IHRvIGJlIGludm9rZWQgZnJvbSB3aXRoaW4KLS8vIGJvb3N0LgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UKLQotICAvLyBUaGUgdGVtcGxhdGUgaXMgYWxyZWFkeSBpbiBib29zdCBzbyB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0jIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEU0KHRlbXBsYXRlX25hbWUpCi0jIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUzKHRlbXBsYXRlX25hbWUpCi0jIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUyKHRlbXBsYXRlX25hbWUpCi0jIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUxKHRlbXBsYXRlX25hbWUpCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UKLQotIyAgaWZuZGVmIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0KLSAgICAgLy8gQnJpbmcgdGhlIG5hbWVzIGluIHdpdGggYSB1c2luZy1kZWNsYXJhdGlvbgotICAgICAvLyB0byBhdm9pZCBzdHJlc3NpbmcgdGhlIGNvbXBpbGVyLgotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFNCh0ZW1wbGF0ZV9uYW1lKSB1c2luZyA6OnRlbXBsYXRlX25hbWU7Ci0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUzKHRlbXBsYXRlX25hbWUpIHVzaW5nIDo6dGVtcGxhdGVfbmFtZTsKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIodGVtcGxhdGVfbmFtZSkgdXNpbmcgOjp0ZW1wbGF0ZV9uYW1lOwotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lKSB1c2luZyA6OnRlbXBsYXRlX25hbWU7Ci0KLSMgIGVsc2UKLQotICAgICAvLyBPdGhlcndpc2UsIGJlY2F1c2UgYSBCb3JsYW5kIEMrKyA1LjUgYnVnIHByZXZlbnRzIGEgdXNpbmcgZGVjbGFyYXRpb24KLSAgICAgLy8gZnJvbSB3b3JraW5nLCB3ZSBhcmUgZm9yY2VkIHRvIHVzZSBpbmhlcml0YW5jZSBmb3IgdGhhdCBjb21waWxlci4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTQodGVtcGxhdGVfbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWLCBjbGFzcyBXLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gXAotICAgICBzdHJ1Y3QgdGVtcGxhdGVfbmFtZSA6IDo6dGVtcGxhdGVfbmFtZTxULCBVLCBWLCBXLCBCPiB7fTsKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMyh0ZW1wbGF0ZV9uYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFYsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiBcCi0gICAgIHN0cnVjdCB0ZW1wbGF0ZV9uYW1lIDogOjp0ZW1wbGF0ZV9uYW1lPFQsIFUsIFYsIEI+IHt9OwotCi0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUyKHRlbXBsYXRlX25hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+IFwKLSAgICAgc3RydWN0IHRlbXBsYXRlX25hbWUgOiA6OnRlbXBsYXRlX25hbWU8VCwgVSwgQj4ge307Ci0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEodGVtcGxhdGVfbmFtZSkgICAgICAgICAgICAgICAgICBcCi0gICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gXAotICAgICBzdHJ1Y3QgdGVtcGxhdGVfbmFtZSA6IDo6dGVtcGxhdGVfbmFtZTxULCBCPiB7fTsKLQotIyAgZW5kaWYgLy8gTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UKLQotLy8KLS8vIEhlcmUncyB3aGVyZSB3ZSBwdXQgaXQgYWxsIHRvZ2V0aGVyLCBkZWZpbmluZyB0aGUgeHh4eCBmb3JtcyBvZiB0aGUgdGVtcGxhdGVzCi0vLyBpbiBuYW1lc3BhY2UgbmRuYm9vc3QuIFdlIGFsc28gZGVmaW5lIHNwZWNpYWxpemF0aW9ucyBvZiBpc19jaGFpbmVkX2Jhc2U8PiBmb3IKLS8vIHRoZSB4eHh4LCB4eHh4MSwgYW5kIHh4eHgyIHRlbXBsYXRlcywgaW1wb3J0aW5nIHRoZW0gaW50byBuZG5ib29zdDo6IGFzCi0vLyBuZWNlc3NhcnkuCi0vLwotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLS8vIGlzX2NoYWluZWRfYmFzZTw+IC0gYSB0cmFpdHMgY2xhc3MgdXNlZCB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIGFuIG9wZXJhdG9yCi0vLyB0ZW1wbGF0ZSBhcmd1bWVudCBpcyBiZWluZyB1c2VkIGZvciBiYXNlIGNsYXNzIGNoYWluaW5nLCBvciBpcyBzcGVjaWZ5aW5nIGEKLS8vIDJuZCBhcmd1bWVudCB0eXBlLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotLy8gQSB0eXBlIHBhcmFtZXRlciBpcyB1c2VkIGluc3RlYWQgb2YgYSBwbGFpbiBib29sIGJlY2F1c2UgQm9ybGFuZCdzIGNvbXBpbGVyCi0vLyBkaWRuJ3QgY29wZSB3ZWxsIHdpdGggdGhlIG1vcmUgb2J2aW91cyBub24tdHlwZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCi1uYW1lc3BhY2UgZGV0YWlsIHsKLSAgc3RydWN0IHRydWVfdCB7fTsKLSAgc3RydWN0IGZhbHNlX3Qge307Ci19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gVW5zcGVjaWFsaXplZCB2ZXJzaW9uIGFzc3VtZXMgdGhhdCBtb3N0IHR5cGVzIGFyZSBub3QgYmVpbmcgdXNlZCBmb3IgYmFzZQotLy8gY2xhc3MgY2hhaW5pbmcuIFdlIHNwZWNpYWxpemUgZm9yIHRoZSBvcGVyYXRvciB0ZW1wbGF0ZXMgZGVmaW5lZCBpbiB0aGlzCi0vLyBsaWJyYXJ5LgotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGlzX2NoYWluZWRfYmFzZSB7Ci0gIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjpmYWxzZV90IHZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gSW1wb3J0IGEgNC10eXBlLWFyZ3VtZW50IG9wZXJhdG9yIHRlbXBsYXRlIGludG8gYm9vc3QgKGlmIG5lY2Vzc2FyeSkgYW5kCi0vLyBwcm92aWRlIGEgc3BlY2lhbGl6YXRpb24gb2YgJ2lzX2NoYWluZWRfYmFzZTw+JyBmb3IgaXQuCi0jIGRlZmluZSBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTQodGVtcGxhdGVfbmFtZTQpICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEU0KHRlbXBsYXRlX25hbWU0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgViwgY2xhc3MgVywgY2xhc3MgQj4gICAgICAgICAgICAgICBcCi0gIHN0cnVjdCBpc19jaGFpbmVkX2Jhc2U8IDo6bmRuYm9vc3Q6OnRlbXBsYXRlX25hbWU0PFQsIFUsIFYsIFcsIEI+ID4geyAgXAotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjp0cnVlX3QgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfTsKLQotLy8gSW1wb3J0IGEgMy10eXBlLWFyZ3VtZW50IG9wZXJhdG9yIHRlbXBsYXRlIGludG8gYm9vc3QgKGlmIG5lY2Vzc2FyeSkgYW5kCi0vLyBwcm92aWRlIGEgc3BlY2lhbGl6YXRpb24gb2YgJ2lzX2NoYWluZWRfYmFzZTw+JyBmb3IgaXQuCi0jIGRlZmluZSBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTModGVtcGxhdGVfbmFtZTMpICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUzKHRlbXBsYXRlX25hbWUzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgViwgY2xhc3MgQj4gICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHN0cnVjdCBpc19jaGFpbmVkX2Jhc2U8IDo6bmRuYm9vc3Q6OnRlbXBsYXRlX25hbWUzPFQsIFUsIFYsIEI+ID4geyAgICAgXAotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjp0cnVlX3QgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfTsKLQotLy8gSW1wb3J0IGEgMi10eXBlLWFyZ3VtZW50IG9wZXJhdG9yIHRlbXBsYXRlIGludG8gYm9vc3QgKGlmIG5lY2Vzc2FyeSkgYW5kCi0vLyBwcm92aWRlIGEgc3BlY2lhbGl6YXRpb24gb2YgJ2lzX2NoYWluZWRfYmFzZTw+JyBmb3IgaXQuCi0jIGRlZmluZSBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIodGVtcGxhdGVfbmFtZTIpICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUyKHRlbXBsYXRlX25hbWUyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHN0cnVjdCBpc19jaGFpbmVkX2Jhc2U8IDo6bmRuYm9vc3Q6OnRlbXBsYXRlX25hbWUyPFQsIFUsIEI+ID4geyAgICAgXAotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjp0cnVlX3QgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfTsKLQotLy8gSW1wb3J0IGEgMS10eXBlLWFyZ3VtZW50IG9wZXJhdG9yIHRlbXBsYXRlIGludG8gYm9vc3QgKGlmIG5lY2Vzc2FyeSkgYW5kCi0vLyBwcm92aWRlIGEgc3BlY2lhbGl6YXRpb24gb2YgJ2lzX2NoYWluZWRfYmFzZTw+JyBmb3IgaXQuCi0jIGRlZmluZSBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTEodGVtcGxhdGVfbmFtZTEpICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUxKHRlbXBsYXRlX25hbWUxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHN0cnVjdCBpc19jaGFpbmVkX2Jhc2U8IDo6bmRuYm9vc3Q6OnRlbXBsYXRlX25hbWUxPFQsIEI+ID4geyAgICAgICAgXAotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjp0cnVlX3QgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfTsKLQotLy8gTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUodGVtcGxhdGVfbmFtZSkgZGVmaW5lcyB0ZW1wbGF0ZV9uYW1lPD4gc3VjaCB0aGF0IGl0Ci0vLyBjYW4gYmUgdXNlZCBmb3Igc3BlY2lmeWluZyBib3RoIDEtYXJndW1lbnQgYW5kIDItYXJndW1lbnQgZm9ybXMuIFJlcXVpcmVzIHRoZQotLy8gZXhpc3RlbmNlIG9mIHR3byBwcmV2aW91c2x5IGRlZmluZWQgY2xhc3MgdGVtcGxhdGVzIG5hbWVkICc8dGVtcGxhdGVfbmFtZT4xJwotLy8gYW5kICc8dGVtcGxhdGVfbmFtZT4yJyB3aGljaCBtdXN0IGltcGxlbWVudCB0aGUgY29ycmVzcG9uZGluZyAxLSBhbmQgMi0KLS8vIGFyZ3VtZW50IGZvcm1zLgotLy8KLS8vIFRoZSB0ZW1wbGF0ZSB0eXBlIHBhcmFtZXRlciBPID09IGlzX2NoYWluZWRfYmFzZTxVPjo6dmFsdWUgaXMgdXNlZCB0bwotLy8gZGlzdGluZ3Vpc2ggd2hldGhlciB0aGUgMm5kIGFyZ3VtZW50IHRvIDx0ZW1wbGF0ZV9uYW1lPiBpcyBiZWluZyB1c2VkIGZvcgotLy8gYmFzZSBjbGFzcyBjaGFpbmluZyBmcm9tIGFub3RoZXIgYm9vc3Qgb3BlcmF0b3IgdGVtcGxhdGUgb3IgaXMgZGVzY3JpYmluZyBhCi0vLyAybmQgb3BlcmFuZCB0eXBlLiBPID09IHRydWVfdCBvbmx5IHdoZW4gVSBpcyBhY3R1YWxseSBhbiBhbm90aGVyIG9wZXJhdG9yCi0vLyB0ZW1wbGF0ZSBmcm9tIHRoZSBsaWJyYXJ5LiBQYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGlzIHVzZWQgdG8gc2VsZWN0IGFuCi0vLyBpbXBsZW1lbnRhdGlvbiBpbiB0ZXJtcyBvZiBlaXRoZXIgJzx0ZW1wbGF0ZV9uYW1lPjEnIG9yICc8dGVtcGxhdGVfbmFtZT4yJy4KLS8vCi0KLSMgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHRlbXBsYXRlX25hbWUpICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgLGNsYXNzIFUgPSBUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICxjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAsY2xhc3MgTyA9IHR5cGVuYW1lIGlzX2NoYWluZWRfYmFzZTxVPjo6dmFsdWUgICAgICAgICAgICAgXAotICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCB0ZW1wbGF0ZV9uYW1lIDogdGVtcGxhdGVfbmFtZSMjMjxULCBVLCBCPiB7fTsgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCB0ZW1wbGF0ZV9uYW1lPFQsIFUsIEIsIDo6bmRuYm9vc3Q6OmRldGFpbDo6dHJ1ZV90PiAgICAgICAgICAgICBcCi0gIDogdGVtcGxhdGVfbmFtZSMjMTxULCBVPiB7fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgdGVtcGxhdGVfbmFtZTxULCBULCBCLCA6Om5kbmJvb3N0OjpkZXRhaWw6OmZhbHNlX3Q+ICAgICAgICAgICAgXAotICA6IHRlbXBsYXRlX25hbWUjIzE8VCwgQj4ge307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCLCBjbGFzcyBPPiAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IGlzX2NoYWluZWRfYmFzZTwgOjpuZG5ib29zdDo6dGVtcGxhdGVfbmFtZTxULCBVLCBCLCBPPiA+IHsgICAgIFwKLSAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRydWVfdCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lIyMyKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTEodGVtcGxhdGVfbmFtZSMjMSkKLQotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSMgIGRlZmluZSBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTQodGVtcGxhdGVfbmFtZTQpIFwKLSAgICAgICAgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFNCh0ZW1wbGF0ZV9uYW1lNCkKLSMgIGRlZmluZSBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTModGVtcGxhdGVfbmFtZTMpIFwKLSAgICAgICAgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMyh0ZW1wbGF0ZV9uYW1lMykKLSMgIGRlZmluZSBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIodGVtcGxhdGVfbmFtZTIpIFwKLSAgICAgICAgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lMikKLSMgIGRlZmluZSBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTEodGVtcGxhdGVfbmFtZTEpIFwKLSAgICAgICAgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lMSkKLQotICAgLy8gSW4gdGhpcyBjYXNlIHdlIGNhbiBvbmx5IGFzc3VtZSB0aGF0IHRlbXBsYXRlX25hbWU8PiBpcyBlcXVpdmFsZW50IHRvIHRoZQotICAgLy8gbW9yZSBjb21tb25seSBuZWVkZWQgdGVtcGxhdGVfbmFtZTE8PiBmb3JtLgotIyAgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHRlbXBsYXRlX25hbWUpICAgICAgICAgICAgICAgICAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICBcCi0gICBzdHJ1Y3QgdGVtcGxhdGVfbmFtZSA6IHRlbXBsYXRlX25hbWUjIzE8VCwgQj4ge307Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShsZXNzX3RoYW5fY29tcGFyYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGVxdWFsaXR5X2NvbXBhcmFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShtdWx0aXBsaWFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShhZGRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoc3VidHJhY3RhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKHN1YnRyYWN0YWJsZTJfbGVmdCkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGRpdmlkYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMihkaXZpZGFibGUyX2xlZnQpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShtb2RhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKG1vZGFibGUyX2xlZnQpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURSh4b3JhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoYW5kYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG9yYWJsZSkKLQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUxKGluY3JlbWVudGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTEoZGVjcmVtZW50YWJsZSkKLQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKGRlcmVmZXJlbmNlYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMyhpbmRleGFibGUpCi0KLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGxlZnRfc2hpZnRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUocmlnaHRfc2hpZnRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoZXF1aXZhbGVudCkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHBhcnRpYWxseV9vcmRlcmVkKQotCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURSh0b3RhbGx5X29yZGVyZWQpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShhZGRpdGl2ZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG11bHRpcGxpY2F0aXZlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoaW50ZWdlcl9tdWx0aXBsaWNhdGl2ZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGFyaXRobWV0aWMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShpbnRlZ2VyX2FyaXRobWV0aWMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShiaXR3aXNlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUxKHVuaXRfc3RlcHBhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoc2hpZnRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUocmluZ19vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShvcmRlcmVkX3Jpbmdfb3BlcmF0b3JzKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoZmllbGRfb3BlcmF0b3JzKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUob3JkZXJlZF9maWVsZF9vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShldWNsaWRpYW5fcmluZ19vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShvcmRlcmVkX2V1Y2xpZGlhbl9yaW5nX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGV1Y2xpZGVhbl9yaW5nX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG9yZGVyZWRfZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKGlucHV0X2l0ZXJhdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTEob3V0cHV0X2l0ZXJhdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIoZm9yd2FyZF9pdGVyYXRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKGJpZGlyZWN0aW9uYWxfaXRlcmF0YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFNChyYW5kb21fYWNjZXNzX2l0ZXJhdGFibGUpCi0KLSN1bmRlZiBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURQotI3VuZGVmIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFNAotI3VuZGVmIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMwotI3VuZGVmIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMgotI3VuZGVmIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMQotI3VuZGVmIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEKLSN1bmRlZiBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUyCi0jdW5kZWYgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMwotI3VuZGVmIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTQKLQotLy8gVGhlIGZvbGxvd2luZyAnb3BlcmF0b3JzJyBjbGFzc2VzIGNhbiBvbmx5IGJlIHVzZWQgcG9ydGFibHkgaWYgdGhlIGRlcml2ZWQgY2xhc3MKLS8vIGRlY2xhcmVzIEFMTCBvZiB0aGUgcmVxdWlyZWQgbWVtYmVyIG9wZXJhdG9ycy4KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotc3RydWN0IG9wZXJhdG9yczIKLSAgICA6IHRvdGFsbHlfb3JkZXJlZDI8VCxVCi0gICAgLCBpbnRlZ2VyX2FyaXRobWV0aWMyPFQsVQotICAgICwgYml0d2lzZTI8VCxVCi0gICAgICA+ID4gPiB7fTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSA9IFQ+Ci1zdHJ1Y3Qgb3BlcmF0b3JzIDogb3BlcmF0b3JzMjxULCBVPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBvcGVyYXRvcnM8VCwgVD4KLSNlbHNlCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IG9wZXJhdG9ycwotI2VuZGlmCi0gICAgOiB0b3RhbGx5X29yZGVyZWQ8VAotICAgICwgaW50ZWdlcl9hcml0aG1ldGljPFQKLSAgICAsIGJpdHdpc2U8VAotICAgICwgdW5pdF9zdGVwcGFibGU8VAotICAgICAgPiA+ID4gPiB7fTsKLQotLy8gIEl0ZXJhdG9yIGhlbHBlciBjbGFzc2VzIChjb250cmlidXRlZCBieSBKZXJlbXkgU2llaykgLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgKElucHV0IGFuZCBvdXRwdXQgaXRlcmF0b3IgaGVscGVycyBjb250cmlidXRlZCBieSBEYXJ5bGUgV2Fsa2VyKSAtLS0tLS0tLy8KLS8vICAoQ2hhbmdlZCB0byB1c2UgY29tYmluZWQgb3BlcmF0b3IgY2xhc3NlcyBieSBEYXJ5bGUgV2Fsa2VyKSAtLS0tLS0tLS0tLS0vLwotdGVtcGxhdGUgPGNsYXNzIFQsCi0gICAgICAgICAgY2xhc3MgViwKLSAgICAgICAgICBjbGFzcyBEID0gc3RkOjpwdHJkaWZmX3QsCi0gICAgICAgICAgY2xhc3MgUCA9IFYgY29uc3QgKiwKLSAgICAgICAgICBjbGFzcyBSID0gViBjb25zdCAmPgotc3RydWN0IGlucHV0X2l0ZXJhdG9yX2hlbHBlcgotICA6IGlucHV0X2l0ZXJhdGFibGU8VCwgUAotICAsIG5kbmJvb3N0OjppdGVyYXRvcjxzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZywgViwgRCwgUCwgUgotICAgID4gPiB7fTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBvdXRwdXRfaXRlcmF0b3JfaGVscGVyCi0gIDogb3V0cHV0X2l0ZXJhdGFibGU8VAotICAsIG5kbmJvb3N0OjppdGVyYXRvcjxzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQKLSAgPiA+Ci17Ci0gIFQmIG9wZXJhdG9yKigpICB7IHJldHVybiBzdGF0aWNfY2FzdDxUJj4oKnRoaXMpOyB9Ci0gIFQmIG9wZXJhdG9yKysoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUJj4oKnRoaXMpOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwKLSAgICAgICAgICBjbGFzcyBWLAotICAgICAgICAgIGNsYXNzIEQgPSBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICBjbGFzcyBQID0gViosCi0gICAgICAgICAgY2xhc3MgUiA9IFYmPgotc3RydWN0IGZvcndhcmRfaXRlcmF0b3JfaGVscGVyCi0gIDogZm9yd2FyZF9pdGVyYXRhYmxlPFQsIFAKLSAgLCBuZG5ib29zdDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgViwgRCwgUCwgUgotICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsCi0gICAgICAgICAgY2xhc3MgViwKLSAgICAgICAgICBjbGFzcyBEID0gc3RkOjpwdHJkaWZmX3QsCi0gICAgICAgICAgY2xhc3MgUCA9IFYqLAotICAgICAgICAgIGNsYXNzIFIgPSBWJj4KLXN0cnVjdCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX2hlbHBlcgotICA6IGJpZGlyZWN0aW9uYWxfaXRlcmF0YWJsZTxULCBQCi0gICwgbmRuYm9vc3Q6Oml0ZXJhdG9yPHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIFYsIEQsIFAsIFIKLSAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULAotICAgICAgICAgIGNsYXNzIFYsIAotICAgICAgICAgIGNsYXNzIEQgPSBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICBjbGFzcyBQID0gViosCi0gICAgICAgICAgY2xhc3MgUiA9IFYmPgotc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfaGVscGVyCi0gIDogcmFuZG9tX2FjY2Vzc19pdGVyYXRhYmxlPFQsIFAsIEQsIFIKLSAgLCBuZG5ib29zdDo6aXRlcmF0b3I8c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywgViwgRCwgUCwgUgotICAgID4gPgotewotICBmcmllbmQgRCByZXF1aXJlc19kaWZmZXJlbmNlX29wZXJhdG9yKGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpIHsKLSAgICByZXR1cm4geCAtIHk7Ci0gIH0KLX07IC8vIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfaGVscGVyCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiBkZWZpbmVkKF9fc2dpKSAmJiAhZGVmaW5lZChfX0dOVUNfXykKLSNwcmFnbWEgcmVzZXQgd29mZiAxMjM0Ci0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX09QRVJBVE9SU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmOTI2MzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX09QVElPTkFMX0ZMQ18xOU5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX0ZMQ18xOU5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbC5ocHAiCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsL29wdGlvbmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwvb3B0aW9uYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTNkYjE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwvb3B0aW9uYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkxICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotLy8gUmV2aXNpb25zOgotLy8gMjcgQXByIDIwMDggKGltcHJvdmVkIHN3YXApIEZlcm5hbmRvIENhY2Npb2xhLCBOaWVscyBEZWtrZXIsIFRob3JzdGVuIE90dG9zZW4KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX09QVElPTkFMX09QVElPTkFMX0ZMQ18xOU5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX09QVElPTkFMX0ZMQ18xOU5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlIDxuZXc+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29uc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3JlZmVyZW5jZV9jb250ZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9ub25lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L3N3YXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2NvbXBhcmVfcG9pbnRlZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvaW5fcGxhY2VfZmFjdG9yeS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbF9md2QuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMjAwKQotLy8gVkM2LjAgaGFzIHRoZSBmb2xsb3dpbmcgYnVnOgotLy8gICBXaGVuIGEgdGVtcGxhdGVkIGFzc2lnbm1lbnQgb3BlcmF0b3IgZXhpc3QsIGFuIGltcGxpY2l0IGNvbnZlcnNpb24KLS8vICAgY29uc3RydWN0aW5nIGFuIG9wdGlvbmFsPFQ+IGlzIHVzZWQgd2hlbiBhc3NpZ21lbnQgb2YgdGhlIGZvcm06Ci0vLyAgICAgb3B0aW9uYWw8VD4gb3B0IDsgb3B0ID0gVCguLi4pOwotLy8gICBpcyBjb21waWxlZC4KLS8vICAgSG93ZXZlciwgb3B0aW9uYWwncyBjdG9yIGlzIF9leHBsaWNpdF8gYW5kIHRoZSBhc3NpZ25lbXQgc2hvdWxkbid0IGNvbXBpbGUuCi0vLyAgIFRoZXJlZm9yZSwgZm9yIFZDNi4wIHRlbXBsYXRlZCBhc3NpZ25tZW50IGlzIGRpc2FibGVkLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfTk9fQ09OVkVSVElOR19BU1NJR05NRU5UCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLS8vIFZDNy4wIGhhcyB0aGUgZm9sbG93aW5nIGJ1ZzoKLS8vICAgV2hlbiBib3RoIGEgbm9uLXRlbXBsYXRlIGFuZCBhIHRlbXBsYXRlIGNvcHktY3RvciBleGlzdAotLy8gICBhbmQgdGhlIHRlbXBsYXRlZCB2ZXJzaW9uIGlzIG1hZGUgJ2V4cGxpY2l0JywgdGhlIGV4cGxpY2l0IGlzIGFsc28KLS8vICAgZ2l2ZW4gdG8gdGhlIG5vbi10ZW1wbGF0ZWQgdmVyc2lvbiwgbWFraW5nIHRoZSBjbGFzcyBub24taW1wbGljaXRlbHktY29weWFibGUuCi0vLwotI2RlZmluZSBORE5CT09TVF9PUFRJT05BTF9OT19DT05WRVJUSU5HX0NPUFlfQ1RPUgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04sPD03MDApCi0vLyBBRkFJQ1Qgb25seSBWQzcuMSBjb3JyZWN0bHkgcmVzb2x2ZXMgdGhlIG92ZXJsb2FkIHNldAotLy8gdGhhdCBpbmNsdWRlcyB0aGUgaW4tcGxhY2UgZmFjdG9yeSB0YWtpbmcgZnVuY3Rpb25zLAotLy8gc28gZm9yIHRoZSBvdGhlciBWQyB2ZXJzaW9ucywgaW4tcGxhY2UgZmFjdG9yeSBzdXBwb3J0Ci0vLyBpcyBkaXNhYmxlZAotI2RlZmluZSBORE5CT09TVF9PUFRJT05BTF9OT19JTlBMQUNFX0ZBQ1RPUllfU1VQUE9SVAotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1NTEpCi0vLyBCQ0IgKDUuNS4xKSBjYW5ub3QgcGFyc2UgdGhlIG5lc3RlZCB0ZW1wbGF0ZSBzdHJ1Y3QgaW4gYW4gaW5wbGFjZSBmYWN0b3J5LgotI2RlZmluZSBORE5CT09TVF9PUFRJT05BTF9OT19JTlBMQUNFX0ZBQ1RPUllfU1VQUE9SVAotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9PUFRJT05BTF9OT19JTlBMQUNFX0ZBQ1RPUllfU1VQUE9SVCkgXAotICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODEpICkKLS8vIEJDQiAodXAgdG8gNS42NCkgaGFzIHRoZSBmb2xsb3dpbmcgYnVnOgotLy8gICBJZiB0aGVyZSBpcyBhIG1lbWJlciBmdW5jdGlvbi9vcGVyYXRvciB0ZW1wbGF0ZSBvZiB0aGUgZm9ybQotLy8gICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+IG1mdW5jKCBFeHByIGV4cHIgKSA7Ci0vLyAgIHNvbWUgY2FsbHMgYXJlIHJlc29sdmVkIHRvIHRoaXMgZXZlbiBpZiB0aGVyZSBhcmUgb3RoZXIgYmV0dGVyIG1hdGNoZXMuCi0vLyAgIFRoZSBlZmZlY3Qgb2YgdGhpcyBidWcgaXMgdGhhdCBjYWxscyB0byBjb252ZXJ0aW5nIGN0b3JzIGFuZCBhc3NpZ25tZW50cwotLy8gICBhcmUgaW5jcm9ycmVjdGx5IHNpbmsgdG8gdGhpcyBnZW5lcmFsIGNhdGNoLWFsbCBtZW1iZXIgZnVuY3Rpb24gdGVtcGxhdGUgYXMgc2hvd24gYWJvdmUuCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX1dFQUtfT1ZFUkxPQURfUkVTT0xVVElPTgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXykgPiAzMDIgXAotICAgICYmICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCi0vLyBHQ0Mgc2luY2UgMy4zIGhhcyBtYXlfYWxpYXMgYXR0cmlidXRlIHRoYXQgaGVscHMgdG8gYWxsZXZpYXRlIG9wdGltaXplciBpc3N1ZXMgd2l0aAotLy8gcmVnYXJkIHRvIHZpb2xhdGlvbiBvZiB0aGUgc3RyaWN0IGFsaWFzaW5nIHJ1bGVzLiBUaGUgb3B0aW9uYWw8IFQgPiBzdG9yYWdlIHR5cGUgaXMgbWFya2VkCi0vLyB3aXRoIHRoaXMgYXR0cmlidXRlIGluIG9yZGVyIHRvIGxldCB0aGUgY29tcGlsZXIga25vdyB0aGF0IGl0IHdpbGwgYWxpYXMgb2JqZWN0cyBvZiB0eXBlIFQKLS8vIGFuZCBzaWxlbmNlIGNvbXBpbGF0aW9uIHdhcm5pbmdzLgotI2RlZmluZSBORE5CT09TVF9PUFRJT05BTF9ERVRBSUxfVVNFX0FUVFJJQlVURV9NQVlfQUxJQVMKLSNlbmRpZgotCi0vLyBEYW5pZWwgV2FsbGluIGRpc2NvdmVyZWQgdGhhdCBiaW5kL2FwcGx5LmhwcCBiYWRseSBpbnRlcmFjdHMgd2l0aCB0aGUgYXBwbHk8PgotLy8gbWVtYmVyIHRlbXBsYXRlIG9mIGEgZmFjdG9yeSBhcyB1c2VkIGluIHRoZSBvcHRpb25hbDw+IGltcGxlbWVudGF0aW9uLgotLy8gSGUgcHJvcG9zZWQgdGhpcyBzaW1wbGUgZml4IHdoaWNoIGlzIHRvIG1vdmUgdGhlIGNhbGwgdG8gYXBwbHk8PiBvdXRzaWRlCi0vLyBuYW1lc3BhY2UgbmRuYm9vc3QuCi1uYW1lc3BhY2UgbmRuYm9vc3Rfb3B0aW9uYWxfZGV0YWlsCi17Ci0gIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBGYWN0b3J5PgotICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3QoRmFjdG9yeSBjb25zdCYgZmFjdG9yeSwgdm9pZCogYWRkcmVzcykKLSAgewotICAgIGZhY3RvcnkuTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGFwcGx5PFQ+KGFkZHJlc3MpOwotICB9Ci19Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotY2xhc3MgaW5fcGxhY2VfZmFjdG9yeV9iYXNlIDsKLWNsYXNzIHR5cGVkX2luX3BsYWNlX2ZhY3RvcnlfYmFzZSA7Ci0KLS8vIFRoaXMgZm9yd2FyZCBpcyBuZWVkZWQgdG8gcmVmZXIgdG8gbmFtZXNwYWNlIHNjb3BlIHN3YXAgZnJvbSB0aGUgbWVtYmVyIHN3YXAKLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgc3dhcCAoIG9wdGlvbmFsPFQ+JiB4LCBvcHRpb25hbDxUPiYgeSApOwotCi1uYW1lc3BhY2Ugb3B0aW9uYWxfZGV0YWlsIHsKLQotLy8gVGhpcyBsb2NhbCBjbGFzcyBpcyB1c2VkIGluc3RlYWQgb2YgdGhhdCBpbiAiYWxpZ25lZF9zdG9yYWdlLmhwcCIKLS8vIGJlY2F1c2UgSSd2ZSBmb3VuZCB0aGUgJ29mZmljaWFsJyBjbGFzcyB0byBJQ0UgQkNCNS41Ci0vLyB3aGVuIHNvbWUgdHlwZXMgYXJlIHVzZWQgd2l0aCBvcHRpb25hbDw+Ci0vLyAoZHVlIHRvIHNpemVvZigpIHBhc3NlZCBkb3duIGFzIGEgbm9uLXR5cGUgdGVtcGxhdGUgcGFyYW1ldGVyKQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1jbGFzcyBhbGlnbmVkX3N0b3JhZ2UKLXsKLSAgICAvLyBCb3JsYW5kIElDRXMgaWYgdW5uYW1lZCB1bmlvbnMgYXJlIHVzZWQgZm9yIHRoaXMhCi0gICAgdW5pb24KLSAgICAvLyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZ3MgYWJvdXQgYnJlYWtpbmcgc3RyaWN0IGFsaWFzaW5nIHJ1bGVzIHdoZW4gY2FzdGluZyBzdG9yYWdlIGFkZHJlc3MgdG8gVCoKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX09QVElPTkFMX0RFVEFJTF9VU0VfQVRUUklCVVRFX01BWV9BTElBUykKLSAgICBfX2F0dHJpYnV0ZV9fKChtYXlfYWxpYXMpKQotI2VuZGlmCi0gICAgZHVtbXlfdQotICAgIHsKLSAgICAgICAgY2hhciBkYXRhWyBzaXplb2YoVCkgXTsKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0eXBlX3dpdGhfYWxpZ25tZW50PAotICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWUgPjo6dHlwZSBhbGlnbmVyXzsKLSAgICB9IGR1bW15XyA7Ci0KLSAgcHVibGljOgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9PUFRJT05BTF9ERVRBSUxfVVNFX0FUVFJJQlVURV9NQVlfQUxJQVMpCi0gICAgdm9pZCBjb25zdCogYWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuICZkdW1teV87IH0KLSAgICB2b2lkICAgICAgKiBhZGRyZXNzKCkgICAgICAgeyByZXR1cm4gJmR1bW15XzsgfQotI2Vsc2UKLSAgICB2b2lkIGNvbnN0KiBhZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gZHVtbXlfLmRhdGE7IH0KLSAgICB2b2lkICAgICAgKiBhZGRyZXNzKCkgICAgICAgeyByZXR1cm4gZHVtbXlfLmRhdGE7IH0KLSNlbmRpZgotfSA7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgdHlwZXNfd2hlbl9pc250X3JlZgotewotICB0eXBlZGVmIFQgY29uc3QmIHJlZmVyZW5jZV9jb25zdF90eXBlIDsKLSAgdHlwZWRlZiBUICYgICAgICByZWZlcmVuY2VfdHlwZSA7Ci0gIHR5cGVkZWYgVCBjb25zdCogcG9pbnRlcl9jb25zdF90eXBlIDsKLSAgdHlwZWRlZiBUICogICAgICBwb2ludGVyX3R5cGUgOwotICB0eXBlZGVmIFQgY29uc3QmIGFyZ3VtZW50X3R5cGUgOwotfSA7Ci10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHR5cGVzX3doZW5faXNfcmVmCi17Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlIHJhd190eXBlIDsKLQotICB0eXBlZGVmIHJhd190eXBlJiByZWZlcmVuY2VfY29uc3RfdHlwZSA7Ci0gIHR5cGVkZWYgcmF3X3R5cGUmIHJlZmVyZW5jZV90eXBlIDsKLSAgdHlwZWRlZiByYXdfdHlwZSogcG9pbnRlcl9jb25zdF90eXBlIDsKLSAgdHlwZWRlZiByYXdfdHlwZSogcG9pbnRlcl90eXBlIDsKLSAgdHlwZWRlZiByYXdfdHlwZSYgYXJndW1lbnRfdHlwZSA7Ci19IDsKLQotc3RydWN0IG9wdGlvbmFsX3RhZyB7fSA7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFzcyBvcHRpb25hbF9iYXNlIDogcHVibGljIG9wdGlvbmFsX3RhZwotewotICBwcml2YXRlIDoKLQotICAgIHR5cGVkZWYKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpCi0gICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotI2VuZGlmCi0gICAgOjpuZG5ib29zdDo6ZGV0YWlsOjptYWtlX3JlZmVyZW5jZV9jb250ZW50PFQ+Ojp0eXBlIGludGVybmFsX3R5cGUgOwotCi0gICAgdHlwZWRlZiBhbGlnbmVkX3N0b3JhZ2U8aW50ZXJuYWxfdHlwZT4gc3RvcmFnZV90eXBlIDsKLQotICAgIHR5cGVkZWYgdHlwZXNfd2hlbl9pc250X3JlZjxUPiB0eXBlc193aGVuX25vdF9yZWYgOwotICAgIHR5cGVkZWYgdHlwZXNfd2hlbl9pc19yZWY8VD4gICB0eXBlc193aGVuX3JlZiAgIDsKLQotICAgIHR5cGVkZWYgb3B0aW9uYWxfYmFzZTxUPiB0aGlzX3R5cGUgOwotCi0gIHByb3RlY3RlZCA6Ci0KLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIG1wbDo6dHJ1ZV8gIGlzX3JlZmVyZW5jZV90YWcgOwotICAgIHR5cGVkZWYgbXBsOjpmYWxzZV8gaXNfbm90X3JlZmVyZW5jZV90YWcgOwotCi0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGlzX3JlZmVyZW5jZTxUPjo6dHlwZSBpc19yZWZlcmVuY2VfcHJlZGljYXRlIDsKLQotICBwdWJsaWM6Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1wbDo6aWZfPGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUsdHlwZXNfd2hlbl9yZWYsdHlwZXNfd2hlbl9ub3RfcmVmPjo6dHlwZSB0eXBlcyA7Ci0KLSAgcHJvdGVjdGVkOgotICAgIHR5cGVkZWYgYm9vbCAodGhpc190eXBlOjoqdW5zcGVjaWZpZWRfYm9vbF90eXBlKSgpIGNvbnN0OwotCi0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVzOjpyZWZlcmVuY2VfdHlwZSAgICAgICByZWZlcmVuY2VfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVzOjpyZWZlcmVuY2VfY29uc3RfdHlwZSByZWZlcmVuY2VfY29uc3RfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVzOjpwb2ludGVyX3R5cGUgICAgICAgICBwb2ludGVyX3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0eXBlczo6cG9pbnRlcl9jb25zdF90eXBlICAgcG9pbnRlcl9jb25zdF90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHlwZXM6OmFyZ3VtZW50X3R5cGUgICAgICAgIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBvcHRpb25hbDxUPiB1bmluaXRpYWxpemVkLgotICAgIC8vIE5vLXRocm93Ci0gICAgb3B0aW9uYWxfYmFzZSgpCi0gICAgICA6Ci0gICAgICBtX2luaXRpYWxpemVkKGZhbHNlKSB7fQotCi0gICAgLy8gQ3JlYXRlcyBhbiBvcHRpb25hbDxUPiB1bmluaXRpYWxpemVkLgotICAgIC8vIE5vLXRocm93Ci0gICAgb3B0aW9uYWxfYmFzZSAoIG5vbmVfdCApCi0gICAgICA6Ci0gICAgICBtX2luaXRpYWxpemVkKGZhbHNlKSB7fQotCi0gICAgLy8gQ3JlYXRlcyBhbiBvcHRpb25hbDxUPiBpbml0aWFsaXplZCB3aXRoICd2YWwnLgotICAgIC8vIENhbiB0aHJvdyBpZiBUOjpUKFQgY29uc3QmKSBkb2VzCi0gICAgb3B0aW9uYWxfYmFzZSAoIGFyZ3VtZW50X3R5cGUgdmFsICkKLSAgICAgIDoKLSAgICAgIG1faW5pdGlhbGl6ZWQoZmFsc2UpCi0gICAgewotICAgICAgY29uc3RydWN0KHZhbCk7Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlcyBhbiBvcHRpb25hbDxUPiBpbml0aWFsaXplZCB3aXRoICd2YWwnIElGRiBjb25kIGlzIHRydWUsIG90aGVyd2lzZSBjcmVhdGVzIGFuIHVuaW5pdGlhbHplZCBvcHRpb25hbDxUPi4KLSAgICAvLyBDYW4gdGhyb3cgaWYgVDo6VChUIGNvbnN0JikgZG9lcwotICAgIG9wdGlvbmFsX2Jhc2UgKCBib29sIGNvbmQsIGFyZ3VtZW50X3R5cGUgdmFsICkKLSAgICAgIDoKLSAgICAgIG1faW5pdGlhbGl6ZWQoZmFsc2UpCi0gICAgewotICAgICAgaWYgKCBjb25kICkKLSAgICAgICAgY29uc3RydWN0KHZhbCk7Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiBhbm90aGVyIG9wdGlvbmFsPFQ+Ci0gICAgLy8gQ2FuIHRocm93IGlmIFQ6OlQoVCBjb25zdCYpIGRvZXMKLSAgICBvcHRpb25hbF9iYXNlICggb3B0aW9uYWxfYmFzZSBjb25zdCYgcmhzICkKLSAgICAgIDoKLSAgICAgIG1faW5pdGlhbGl6ZWQoZmFsc2UpCi0gICAgewotICAgICAgaWYgKCByaHMuaXNfaW5pdGlhbGl6ZWQoKSApCi0gICAgICAgIGNvbnN0cnVjdChyaHMuZ2V0X2ltcGwoKSk7Ci0gICAgfQotCi0KLSAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIGJvdGggY29udmVydGluZyBhbmQgaW4tcGxhY2UgY29uc3RydWN0aW9ucy4KLSAgICAvLyBEZXJpdmVkIGNsYXNzZXMgdXNlIHRoZSAndGFnJyB0byBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlCi0gICAgLy8gaW1wbGVtZW50YXRpb24gKHRoZSBjb3JyZWN0ICdjb25zdHJ1Y3QoKScgb3ZlcmxvYWQpCi0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICBleHBsaWNpdCBvcHRpb25hbF9iYXNlICggRXhwciBjb25zdCYgZXhwciwgRXhwciBjb25zdCogdGFnICkKLSAgICAgIDoKLSAgICAgIG1faW5pdGlhbGl6ZWQoZmFsc2UpCi0gICAgewotICAgICAgY29uc3RydWN0KGV4cHIsdGFnKTsKLSAgICB9Ci0KLQotCi0gICAgLy8gTm8tdGhyb3cgKGFzc3VtaW5nIFQ6On5UKCkgZG9lc24ndCkKLSAgICB+b3B0aW9uYWxfYmFzZSgpIHsgZGVzdHJveSgpIDsgfQotCi0gICAgLy8gQXNzaWducyBmcm9tIGFub3RoZXIgb3B0aW9uYWw8VD4gKGRlZXAtY29waWVzIHRoZSByaHMgdmFsdWUpCi0gICAgdm9pZCBhc3NpZ24gKCBvcHRpb25hbF9iYXNlIGNvbnN0JiByaHMgKQotICAgIHsKLSAgICAgIGlmIChpc19pbml0aWFsaXplZCgpKQotICAgICAgewotICAgICAgICBpZiAoIHJocy5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgICAgICBhc3NpZ25fdmFsdWUocmhzLmdldF9pbXBsKCksIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSApOwotICAgICAgICBlbHNlIGRlc3Ryb3koKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaWYgKCByaHMuaXNfaW5pdGlhbGl6ZWQoKSApCi0gICAgICAgICAgY29uc3RydWN0KHJocy5nZXRfaW1wbCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBBc3NpZ25zIGZyb20gYW5vdGhlciBfY29udmVydGlibGVfIG9wdGlvbmFsPFU+IChkZWVwLWNvcGllcyB0aGUgcmhzIHZhbHVlKQotICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgdm9pZCBhc3NpZ24gKCBvcHRpb25hbDxVPiBjb25zdCYgcmhzICkKLSAgICB7Ci0gICAgICBpZiAoaXNfaW5pdGlhbGl6ZWQoKSkKLSAgICAgIHsKLSAgICAgICAgaWYgKCByaHMuaXNfaW5pdGlhbGl6ZWQoKSApCi0gICAgICAgICAgICAgYXNzaWduX3ZhbHVlKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHJocy5nZXQoKSksIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSApOwotICAgICAgICBlbHNlIGRlc3Ryb3koKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaWYgKCByaHMuaXNfaW5pdGlhbGl6ZWQoKSApCi0gICAgICAgICAgY29uc3RydWN0KHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHJocy5nZXQoKSkpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIEFzc2lnbnMgZnJvbSBhIFQgKGRlZXAtY29waWVzIHRoZSByaHMgdmFsdWUpCi0gICAgdm9pZCBhc3NpZ24gKCBhcmd1bWVudF90eXBlIHZhbCApCi0gICAgewotICAgICAgaWYgKGlzX2luaXRpYWxpemVkKCkpCi0gICAgICAgICAgIGFzc2lnbl92YWx1ZSh2YWwsIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSApOwotICAgICAgZWxzZSBjb25zdHJ1Y3QodmFsKTsKLSAgICB9Ci0KLSAgICAvLyBBc3NpZ25zIGZyb20gIm5vbmUiLCBkZXN0cm95aW5nIHRoZSBjdXJyZW50IHZhbHVlLCBpZiBhbnksIGxlYXZpbmcgdGhpcyBVTklOSVRJQUxJWkVECi0gICAgLy8gTm8tdGhyb3cgKGFzc3VtaW5nIFQ6On5UKCkgZG9lc24ndCkKLSAgICB2b2lkIGFzc2lnbiAoIG5vbmVfdCApIHsgZGVzdHJveSgpOyB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfTk9fSU5QTEFDRV9GQUNUT1JZX1NVUFBPUlQKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIHZvaWQgYXNzaWduX2V4cHIgKCBFeHByIGNvbnN0JiBleHByLCBFeHByIGNvbnN0KiB0YWcgKQotICAgICAgewotICAgICAgICBpZiAoaXNfaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgICAgICBhc3NpZ25fZXhwcl90b19pbml0aWFsaXplZChleHByLHRhZyk7Ci0gICAgICAgIGVsc2UgY29uc3RydWN0KGV4cHIsdGFnKTsKLSAgICAgIH0KLSNlbmRpZgotCi0gIHB1YmxpYyA6Ci0KLSAgICAvLyBEZXN0cm95cyB0aGUgY3VycmVudCB2YWx1ZSwgaWYgYW55LCBsZWF2aW5nIHRoaXMgVU5JTklUSUFMSVpFRAotICAgIC8vIE5vLXRocm93IChhc3N1bWluZyBUOjp+VCgpIGRvZXNuJ3QpCi0gICAgdm9pZCByZXNldCgpIHsgZGVzdHJveSgpOyB9Ci0KLSAgICAvLyBSZXBsYWNlcyB0aGUgY3VycmVudCB2YWx1ZSAtaWYgYW55LSB3aXRoICd2YWwnCi0gICAgdm9pZCByZXNldCAoIGFyZ3VtZW50X3R5cGUgdmFsICkgeyBhc3NpZ24odmFsKTsgfQotCi0gICAgLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsIG90aGVyd2lzZSwKLSAgICAvLyByZXR1cm5zIE5VTEwuCi0gICAgLy8gTm8tdGhyb3cKLSAgICBwb2ludGVyX2NvbnN0X3R5cGUgZ2V0X3B0cigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQgPyBnZXRfcHRyX2ltcGwoKSA6IDAgOyB9Ci0gICAgcG9pbnRlcl90eXBlICAgICAgIGdldF9wdHIoKSAgICAgICB7IHJldHVybiBtX2luaXRpYWxpemVkID8gZ2V0X3B0cl9pbXBsKCkgOiAwIDsgfQotCi0gICAgYm9vbCBpc19pbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQgOyB9Ci0KLSAgcHJvdGVjdGVkIDoKLQotICAgIHZvaWQgY29uc3RydWN0ICggYXJndW1lbnRfdHlwZSB2YWwgKQotICAgICB7Ci0gICAgICAgbmV3IChtX3N0b3JhZ2UuYWRkcmVzcygpKSBpbnRlcm5hbF90eXBlKHZhbCkgOwotICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlIDsKLSAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX09QVElPTkFMX05PX0lOUExBQ0VfRkFDVE9SWV9TVVBQT1JUCi0gICAgLy8gQ29uc3RydWN0cyBpbi1wbGFjZSB1c2luZyB0aGUgZ2l2ZW4gZmFjdG9yeQotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBjb25zdHJ1Y3QgKCBFeHByIGNvbnN0JiBmYWN0b3J5LCBpbl9wbGFjZV9mYWN0b3J5X2Jhc2UgY29uc3QqICkKLSAgICAgewotICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQgKCA6Om5kbmJvb3N0OjptcGw6Om5vdF88aXNfcmVmZXJlbmNlX3ByZWRpY2F0ZT46OnZhbHVlICkgOwotICAgICAgIG5kbmJvb3N0X29wdGlvbmFsX2RldGFpbDo6Y29uc3RydWN0PHZhbHVlX3R5cGU+KGZhY3RvcnksIG1fc3RvcmFnZS5hZGRyZXNzKCkpOwotICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlIDsKLSAgICAgfQotCi0gICAgLy8gQ29uc3RydWN0cyBpbi1wbGFjZSB1c2luZyB0aGUgZ2l2ZW4gdHlwZWQgZmFjdG9yeQotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBjb25zdHJ1Y3QgKCBFeHByIGNvbnN0JiBmYWN0b3J5LCB0eXBlZF9pbl9wbGFjZV9mYWN0b3J5X2Jhc2UgY29uc3QqICkKLSAgICAgewotICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQgKCA6Om5kbmJvb3N0OjptcGw6Om5vdF88aXNfcmVmZXJlbmNlX3ByZWRpY2F0ZT46OnZhbHVlICkgOwotICAgICAgIGZhY3RvcnkuYXBwbHkobV9zdG9yYWdlLmFkZHJlc3MoKSkgOwotICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlIDsKLSAgICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGFzc2lnbl9leHByX3RvX2luaXRpYWxpemVkICggRXhwciBjb25zdCYgZmFjdG9yeSwgaW5fcGxhY2VfZmFjdG9yeV9iYXNlIGNvbnN0KiB0YWcgKQotICAgICB7Ci0gICAgICAgZGVzdHJveSgpOwotICAgICAgIGNvbnN0cnVjdChmYWN0b3J5LHRhZyk7Ci0gICAgIH0KLQotICAgIC8vIENvbnN0cnVjdHMgaW4tcGxhY2UgdXNpbmcgdGhlIGdpdmVuIHR5cGVkIGZhY3RvcnkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIHZvaWQgYXNzaWduX2V4cHJfdG9faW5pdGlhbGl6ZWQgKCBFeHByIGNvbnN0JiBmYWN0b3J5LCB0eXBlZF9pbl9wbGFjZV9mYWN0b3J5X2Jhc2UgY29uc3QqIHRhZyApCi0gICAgIHsKLSAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgY29uc3RydWN0KGZhY3RvcnksdGFnKTsKLSAgICAgfQotI2VuZGlmCi0KLSAgICAvLyBDb25zdHJ1Y3RzIHVzaW5nIGFueSBleHByZXNzaW9uIGltcGxpY2l0ZWx5IGNvbnZlcnRpYmxlIHRvIHRoZSBzaW5nbGUgYXJndW1lbnQKLSAgICAvLyBvZiBhIG9uZS1hcmd1bWVudCBUIGNvbnN0cnVjdG9yLgotICAgIC8vIENvbnZlcnRpbmcgY29uc3RydWN0aW9ucyBvZiBvcHRpb25hbDxUPiBmcm9tIG9wdGlvbmFsPFU+IHVzZXMgdGhpcyBmdW5jdGlvbiB3aXRoCi0gICAgLy8gJ0V4cHInIGJlaW5nIG9mIHR5cGUgJ1UnIGFuZCByZWx5aW5nIG9uIGEgY29udmVydGluZyBjb25zdHJ1Y3RvciBvZiBUIGZyb20gVS4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIHZvaWQgY29uc3RydWN0ICggRXhwciBjb25zdCYgZXhwciwgdm9pZCBjb25zdCogKQotICAgICB7Ci0gICAgICAgbmV3IChtX3N0b3JhZ2UuYWRkcmVzcygpKSBpbnRlcm5hbF90eXBlKGV4cHIpIDsKLSAgICAgICBtX2luaXRpYWxpemVkID0gdHJ1ZSA7Ci0gICAgIH0KLQotICAgIC8vIEFzc2lnbnMgdXNpbmcgYSBmb3JtIGFueSBleHByZXNzaW9uIGltcGxpY2l0ZWx5IGNvbnZlcnRpYmxlIHRvIHRoZSBzaW5nbGUgYXJndW1lbnQKLSAgICAvLyBvZiBhIFQncyBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIC8vIENvbnZlcnRpbmcgYXNzaWdubWVudHMgb2Ygb3B0aW9uYWw8VD4gZnJvbSBvcHRpb25hbDxVPiB1c2VzIHRoaXMgZnVuY3Rpb24gd2l0aAotICAgIC8vICdFeHByJyBiZWluZyBvZiB0eXBlICdVJyBhbmQgcmVseWluZyBvbiBhIGNvbnZlcnRpbmcgYXNzaWdubWVudCBvZiBUIGZyb20gVS4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIHZvaWQgYXNzaWduX2V4cHJfdG9faW5pdGlhbGl6ZWQgKCBFeHByIGNvbnN0JiBleHByLCB2b2lkIGNvbnN0KiApCi0gICAgIHsKLSAgICAgICBhc3NpZ25fdmFsdWUoZXhwciwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpKTsKLSAgICAgfQotCi0jaWZkZWYgTkROQk9PU1RfT1BUSU9OQUxfV0VBS19PVkVSTE9BRF9SRVNPTFVUSU9OCi0gICAgLy8gQkNCNS42NCAoYW5kIHByb2JhYmx5IGxvd2VyIHZlcnNpb25zKSB3b3JrYXJvdW5kLgotICAgIC8vICAgVGhlIGluLXBsYWNlIGZhY3RvcmllcyBhcmUgc3VwcG9ydGVkIGJ5IG1lYW5zIG9mIGNhdGNoLWFsbCBjb25zdHJ1Y3RvcnMKLSAgICAvLyAgIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9ycyAodGhlIGZ1bmN0aW9ucyBhcmUgcGFyYW1ldGVyaXplZCBpbiB0ZXJtcyBvZgotICAgIC8vICAgYW4gYXJiaXRyYXJ5ICdFeHByJyB0eXBlKQotICAgIC8vICAgVGhpcyBjb21waWxlciBpbmNvcnJlY3RseSByZXNvbHZlcyB0aGUgb3ZlcmxvYWQgc2V0IGFuZCBzaW5rcyBvcHRpb25hbDxUPiBhbmQgb3B0aW9uYWw8VT4KLSAgICAvLyAgIHRvIHRoZSAnRXhwcictdGFraW5nIGZ1bmN0aW9ucyBldmVuIHRob3VnaCBleHBsaWNpdCBvdmVybG9hZHMgYXJlIHByZXNlbnQgZm9yIHRoZW0uCi0gICAgLy8gICBUaHVzLCB0aGUgZm9sbG93aW5nIG92ZXJsb2FkIGlzIG5lZWRlZCB0byBwcm9wZXJseSBoYW5kbGUgdGhlIGNhc2Ugd2hlbiB0aGUgJ2xocycKLSAgICAvLyAgIGlzIGFub3RoZXIgb3B0aW9uYWwuCi0gICAgLy8KLSAgICAvLyBGb3IgVkM8PTcwIGNvbXBpbGVycyB0aGlzIHdvcmthcm91bmQgZG9zZW4ndCB3b3JrIGJlY2FzdWUgdGhlIGNvbW5waWxlciBpc3N1ZXMgYW5kIGVycm9yCi0gICAgLy8gaW5zdGVhZCBvZiBjaG9vc2luZyB0aGUgd3Jvbmcgb3ZlcmxvYWQKLSAgICAvLwotICAgIC8vIE5vdGljZSB0aGF0ICdFeHByJyB3aWxsIGJlIG9wdGlvbmFsPFQ+IG9yIG9wdGlvbmFsPFU+IChidXQgbm90IG9wdGlvbmFsX2Jhc2U8Li4+KQotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBjb25zdHJ1Y3QgKCBFeHByIGNvbnN0JiBleHByLCBvcHRpb25hbF90YWcgY29uc3QqICkKLSAgICAgewotICAgICAgIGlmICggZXhwci5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICB7Ci0gICAgICAgICAvLyBBbiBleGNlcHRpb24gY2FuIGJlIHRocm93biBoZXJlLgotICAgICAgICAgLy8gSXQgaXQgaGFwcGVucywgVEhJUyB3aWxsIGJlIGxlZnQgdW5pbml0aWFsaXplZC4KLSAgICAgICAgIG5ldyAobV9zdG9yYWdlLmFkZHJlc3MoKSkgaW50ZXJuYWxfdHlwZShleHByLmdldCgpKSA7Ci0gICAgICAgICBtX2luaXRpYWxpemVkID0gdHJ1ZSA7Ci0gICAgICAgfQotICAgICB9Ci0jZW5kaWYKLQotICAgIHZvaWQgYXNzaWduX3ZhbHVlICggYXJndW1lbnRfdHlwZSB2YWwsIGlzX25vdF9yZWZlcmVuY2VfdGFnICkgeyBnZXRfaW1wbCgpID0gdmFsOyB9Ci0gICAgdm9pZCBhc3NpZ25fdmFsdWUgKCBhcmd1bWVudF90eXBlIHZhbCwgaXNfcmVmZXJlbmNlX3RhZyAgICAgKSB7IGNvbnN0cnVjdCh2YWwpOyB9Ci0KLSAgICB2b2lkIGRlc3Ryb3koKQotICAgIHsKLSAgICAgIGlmICggbV9pbml0aWFsaXplZCApCi0gICAgICAgIGRlc3Ryb3lfaW1wbChpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkpIDsKLSAgICB9Ci0KLSAgICB1bnNwZWNpZmllZF9ib29sX3R5cGUgc2FmZV9ib29sKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZCA/ICZ0aGlzX3R5cGU6OmlzX2luaXRpYWxpemVkIDogMCA7IH0KLQotICAgIHJlZmVyZW5jZV9jb25zdF90eXBlIGdldF9pbXBsKCkgY29uc3QgeyByZXR1cm4gZGVyZWZlcmVuY2UoZ2V0X29iamVjdCgpLCBpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkgKSA7IH0KLSAgICByZWZlcmVuY2VfdHlwZSAgICAgICBnZXRfaW1wbCgpICAgICAgIHsgcmV0dXJuIGRlcmVmZXJlbmNlKGdldF9vYmplY3QoKSwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpICkgOyB9Ci0KLSAgICBwb2ludGVyX2NvbnN0X3R5cGUgZ2V0X3B0cl9pbXBsKCkgY29uc3QgeyByZXR1cm4gY2FzdF9wdHIoZ2V0X29iamVjdCgpLCBpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkgKSA7IH0KLSAgICBwb2ludGVyX3R5cGUgICAgICAgZ2V0X3B0cl9pbXBsKCkgICAgICAgeyByZXR1cm4gY2FzdF9wdHIoZ2V0X29iamVjdCgpLCBpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkgKSA7IH0KLQotICBwcml2YXRlIDoKLQotICAgIC8vIGludGVybmFsX3R5cGUgY2FuIGJlIGVpdGhlciBUIG9yIHJlZmVyZW5jZV9jb250ZW50PFQ+Ci0jaWYgZGVmaW5lZChORE5CT09TVF9PUFRJT05BTF9ERVRBSUxfVVNFX0FUVFJJQlVURV9NQVlfQUxJQVMpCi0gICAgLy8gVGhpcyB3b3JrYXJvdW5kIGlzIHN1cHBvc2VkIHRvIHNpbGVuY2UgR0NDIHdhcm5pbmdzIGFib3V0IGJyb2tlbiBzdHJpY3QgYWxpYXNpbmcgcnVsZXMKLSAgICBpbnRlcm5hbF90eXBlIGNvbnN0KiBnZXRfb2JqZWN0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuaW9uIHsgdm9pZCBjb25zdCogYXBfcHZvaWQ7IGludGVybmFsX3R5cGUgY29uc3QqIGFzX3B0eXBlOyB9IGNhc3RlciA9IHsgbV9zdG9yYWdlLmFkZHJlc3MoKSB9OwotICAgICAgICByZXR1cm4gY2FzdGVyLmFzX3B0eXBlOwotICAgIH0KLSAgICBpbnRlcm5hbF90eXBlICogICAgICBnZXRfb2JqZWN0KCkKLSAgICB7Ci0gICAgICAgIHVuaW9uIHsgdm9pZCogYXBfcHZvaWQ7IGludGVybmFsX3R5cGUqIGFzX3B0eXBlOyB9IGNhc3RlciA9IHsgbV9zdG9yYWdlLmFkZHJlc3MoKSB9OwotICAgICAgICByZXR1cm4gY2FzdGVyLmFzX3B0eXBlOwotICAgIH0KLSNlbHNlCi0gICAgaW50ZXJuYWxfdHlwZSBjb25zdCogZ2V0X29iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludGVybmFsX3R5cGUgY29uc3QqPihtX3N0b3JhZ2UuYWRkcmVzcygpKTsgfQotICAgIGludGVybmFsX3R5cGUgKiAgICAgIGdldF9vYmplY3QoKSAgICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRlcm5hbF90eXBlICo+ICAgICAobV9zdG9yYWdlLmFkZHJlc3MoKSk7IH0KLSNlbmRpZgotCi0gICAgLy8gcmVmZXJlbmNlX2NvbnRlbnQ8VD4gbGFja3MgYW4gaW1wbGljaXQgY29udmVyc2lvbiB0byBUJiwgc28gdGhlIGZvbGxvd2luZyBpcyBuZWVkZWQgdG8gb2J0YWluIGEgcHJvcGVyIHJlZmVyZW5jZS4KLSAgICByZWZlcmVuY2VfY29uc3RfdHlwZSBkZXJlZmVyZW5jZSggaW50ZXJuYWxfdHlwZSBjb25zdCogcCwgaXNfbm90X3JlZmVyZW5jZV90YWcgKSBjb25zdCB7IHJldHVybiAqcCA7IH0KLSAgICByZWZlcmVuY2VfdHlwZSAgICAgICBkZXJlZmVyZW5jZSggaW50ZXJuYWxfdHlwZSogICAgICAgcCwgaXNfbm90X3JlZmVyZW5jZV90YWcgKSAgICAgICB7IHJldHVybiAqcCA7IH0KLSAgICByZWZlcmVuY2VfY29uc3RfdHlwZSBkZXJlZmVyZW5jZSggaW50ZXJuYWxfdHlwZSBjb25zdCogcCwgaXNfcmVmZXJlbmNlX3RhZyAgICAgKSBjb25zdCB7IHJldHVybiBwLT5nZXQoKSA7IH0KLSAgICByZWZlcmVuY2VfdHlwZSAgICAgICBkZXJlZmVyZW5jZSggaW50ZXJuYWxfdHlwZSogICAgICAgcCwgaXNfcmVmZXJlbmNlX3RhZyAgICAgKSAgICAgICB7IHJldHVybiBwLT5nZXQoKSA7IH0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODEpKQotICAgIHZvaWQgZGVzdHJveV9pbXBsICggaXNfbm90X3JlZmVyZW5jZV90YWcgKSB7IGdldF9wdHJfaW1wbCgpLT5pbnRlcm5hbF90eXBlOjp+aW50ZXJuYWxfdHlwZSgpIDsgbV9pbml0aWFsaXplZCA9IGZhbHNlIDsgfQotI2Vsc2UKLSAgICB2b2lkIGRlc3Ryb3lfaW1wbCAoIGlzX25vdF9yZWZlcmVuY2VfdGFnICkgeyBnZXRfcHRyX2ltcGwoKS0+VDo6flQoKSA7IG1faW5pdGlhbGl6ZWQgPSBmYWxzZSA7IH0KLSNlbmRpZgotCi0gICAgdm9pZCBkZXN0cm95X2ltcGwgKCBpc19yZWZlcmVuY2VfdGFnICAgICApIHsgbV9pbml0aWFsaXplZCA9IGZhbHNlIDsgfQotCi0gICAgLy8gSWYgVCBpcyBvZiByZWZlcmVuY2UgdHlwZSwgdHJ5aW5nIHRvIGdldCBhIHBvaW50ZXIgdG8gdGhlIGhlbGQgdmFsdWUgbXVzdCByZXN1bHQgaW4gYSBjb21waWxlLXRpbWUgZXJyb3IuCi0gICAgLy8gRGVjZW50IGNvbXBpbGVycyBzaG91bGQgZGlzYWxsb3cgY29udmVyc2lvbnMgZnJvbSByZWZlcmVuY2VfY29udGVudDxUPiogdG8gVCosIGJ1dCBqdXN0IGluIGNhc2UsCi0gICAgLy8gdGhlIGZvbGxvd2luZyBvbHZlcmxvYWRzIGFyZSB1c2VkIHRvIGZpbHRlciBvdXQgdGhlIGNhc2UgYW5kIGd1YXJhbnRlZSBhbiBlcnJvciBpbiBjYXNlIG9mIFQgYmVpbmcgYSByZWZlcmVuY2UuCi0gICAgcG9pbnRlcl9jb25zdF90eXBlIGNhc3RfcHRyKCBpbnRlcm5hbF90eXBlIGNvbnN0KiBwLCBpc19ub3RfcmVmZXJlbmNlX3RhZyApIGNvbnN0IHsgcmV0dXJuIHAgOyB9Ci0gICAgcG9pbnRlcl90eXBlICAgICAgIGNhc3RfcHRyKCBpbnRlcm5hbF90eXBlICogICAgICBwLCBpc19ub3RfcmVmZXJlbmNlX3RhZyApICAgICAgIHsgcmV0dXJuIHAgOyB9Ci0gICAgcG9pbnRlcl9jb25zdF90eXBlIGNhc3RfcHRyKCBpbnRlcm5hbF90eXBlIGNvbnN0KiBwLCBpc19yZWZlcmVuY2VfdGFnICAgICApIGNvbnN0IHsgcmV0dXJuICZwLT5nZXQoKSA7IH0KLSAgICBwb2ludGVyX3R5cGUgICAgICAgY2FzdF9wdHIoIGludGVybmFsX3R5cGUgKiAgICAgIHAsIGlzX3JlZmVyZW5jZV90YWcgICAgICkgICAgICAgeyByZXR1cm4gJnAtPmdldCgpIDsgfQotCi0gICAgYm9vbCBtX2luaXRpYWxpemVkIDsKLSAgICBzdG9yYWdlX3R5cGUgbV9zdG9yYWdlIDsKLX0gOwotCi19IC8vIG5hbWVzcGFjZSBvcHRpb25hbF9kZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWNsYXNzIG9wdGlvbmFsIDogcHVibGljIG9wdGlvbmFsX2RldGFpbDo6b3B0aW9uYWxfYmFzZTxUPgotewotICAgIHR5cGVkZWYgb3B0aW9uYWxfZGV0YWlsOjpvcHRpb25hbF9iYXNlPFQ+IGJhc2UgOwotCi0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGJhc2U6OnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSAgdW5zcGVjaWZpZWRfYm9vbF90eXBlIDsKLQotICBwdWJsaWMgOgotCi0gICAgdHlwZWRlZiBvcHRpb25hbDxUPiB0aGlzX3R5cGUgOwotCi0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGJhc2U6OnZhbHVlX3R5cGUgICAgICAgICAgIHZhbHVlX3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiYXNlOjpyZWZlcmVuY2VfdHlwZSAgICAgICByZWZlcmVuY2VfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGJhc2U6OnJlZmVyZW5jZV9jb25zdF90eXBlIHJlZmVyZW5jZV9jb25zdF90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYmFzZTo6cG9pbnRlcl90eXBlICAgICAgICAgcG9pbnRlcl90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYmFzZTo6cG9pbnRlcl9jb25zdF90eXBlICAgcG9pbnRlcl9jb25zdF90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYmFzZTo6YXJndW1lbnRfdHlwZSAgICAgICAgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IHVuaW5pdGlhbGl6ZWQuCi0gICAgLy8gTm8tdGhyb3cKLSAgICBvcHRpb25hbCgpIDogYmFzZSgpIHt9Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IHVuaW5pdGlhbGl6ZWQuCi0gICAgLy8gTm8tdGhyb3cKLSAgICBvcHRpb25hbCggbm9uZV90IG5vbmVfICkgOiBiYXNlKG5vbmVfKSB7fQotCi0gICAgLy8gQ3JlYXRlcyBhbiBvcHRpb25hbDxUPiBpbml0aWFsaXplZCB3aXRoICd2YWwnLgotICAgIC8vIENhbiB0aHJvdyBpZiBUOjpUKFQgY29uc3QmKSBkb2VzCi0gICAgb3B0aW9uYWwgKCBhcmd1bWVudF90eXBlIHZhbCApIDogYmFzZSh2YWwpIHt9Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IGluaXRpYWxpemVkIHdpdGggJ3ZhbCcgSUZGIGNvbmQgaXMgdHJ1ZSwgb3RoZXJ3aXNlIGNyZWF0ZXMgYW4gdW5pbml0aWFsaXplZCBvcHRpb25hbC4KLSAgICAvLyBDYW4gdGhyb3cgaWYgVDo6VChUIGNvbnN0JikgZG9lcwotICAgIG9wdGlvbmFsICggYm9vbCBjb25kLCBhcmd1bWVudF90eXBlIHZhbCApIDogYmFzZShjb25kLHZhbCkge30KLQotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9OT19DT05WRVJUSU5HX0NPUFlfQ1RPUgotICAgIC8vIE5PVEU6IE1TVkMgbmVlZHMgdGVtcGxhdGVkIHZlcnNpb25zIGZpcnN0Ci0KLSAgICAvLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIGFub3RoZXIgY29udmVydGlibGUgb3B0aW9uYWw8VT4KLSAgICAvLyBSZXF1aXJlcyBhIHZhbGlkIGNvbnZlcnNpb24gZnJvbSBVIHRvIFQuCi0gICAgLy8gQ2FuIHRocm93IGlmIFQ6OlQoVSBjb25zdCYpIGRvZXMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgIGV4cGxpY2l0IG9wdGlvbmFsICggb3B0aW9uYWw8VT4gY29uc3QmIHJocyApCi0gICAgICA6Ci0gICAgICBiYXNlKCkKLSAgICB7Ci0gICAgICBpZiAoIHJocy5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgdGhpcy0+Y29uc3RydWN0KHJocy5nZXQoKSk7Ci0gICAgfQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfTk9fSU5QTEFDRV9GQUNUT1JZX1NVUFBPUlQKLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IHdpdGggYW4gZXhwcmVzc2lvbiB3aGljaCBjYW4gYmUgZWl0aGVyCi0gICAgLy8gIChhKSBBbiBpbnN0YW5jZSBvZiBJblBsYWNlRmFjdG9yeSAoaS5lLiBpbl9wbGFjZShhLGIsLi4uLG4pOwotICAgIC8vICAoYikgQW4gaW5zdGFuY2Ugb2YgVHlwZWRJblBsYWNlRmFjdG9yeSAoIGkuZS4gaW5fcGxhY2U8VD4oYSxiLC4uLixuKTsKLSAgICAvLyAgKGMpIEFueSBleHByZXNzaW9uIGltcGxpY2l0ZWx5IGNvbnZlcnRpYmxlIHRvIHRoZSBzaW5nbGUgdHlwZQotICAgIC8vICAgICAgb2YgYSBvbmUtYXJndW1lbnQgVCdzIGNvbnN0cnVjdG9yLgotICAgIC8vICAoZCopIFdlYWsgY29tcGlsZXJzIChCQ0IpIG1pZ2h0IGFsc28gcmVzb2x2ZWQgRXhwciBhcyBvcHRpb25hbDxUPiBhbmQgb3B0aW9uYWw8VT4KLSAgICAvLyAgICAgICBldmVuIHRob3VnaCBleHBsaWNpdCBvdmVybG9hZHMgYXJlIHByZXNlbnQgZm9yIHRoZXNlLgotICAgIC8vIERlcGVuZGluZyBvbiB0aGUgYWJvdmUgc29tZSBUIGN0b3IgaXMgY2FsbGVkLgotICAgIC8vIENhbiB0aHJvdyBpcyB0aGUgcmVzb2x2ZWQgVCBjdG9yIHRocm93cy4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIGV4cGxpY2l0IG9wdGlvbmFsICggRXhwciBjb25zdCYgZXhwciApIDogYmFzZShleHByLG5kbmJvb3N0OjphZGRyZXNzb2YoZXhwcikpIHt9Ci0jZW5kaWYKLQotICAgIC8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgYW5vdGhlciBvcHRpb25hbDxUPgotICAgIC8vIENhbiB0aHJvdyBpZiBUOjpUKFQgY29uc3QmKSBkb2VzCi0gICAgb3B0aW9uYWwgKCBvcHRpb25hbCBjb25zdCYgcmhzICkgOiBiYXNlKCBzdGF0aWNfY2FzdDxiYXNlIGNvbnN0Jj4ocmhzKSApIHt9Ci0KLSAgIC8vIE5vLXRocm93IChhc3N1bWluZyBUOjp+VCgpIGRvZXNuJ3QpCi0gICAgfm9wdGlvbmFsKCkge30KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX09QVElPTkFMX05PX0lOUExBQ0VfRkFDVE9SWV9TVVBQT1JUKSAmJiAhZGVmaW5lZChORE5CT09TVF9PUFRJT05BTF9XRUFLX09WRVJMT0FEX1JFU09MVVRJT04pCi0gICAgLy8gQXNzaWducyBmcm9tIGFuIGV4cHJlc3Npb24uIFNlZSBjb3JyZXNwb25kaW5nIGNvbnN0cnVjdG9yLgotICAgIC8vIEJhc2ljIEd1YXJhbnRlZTogSWYgdGhlIHJlc29sdmVkIFQgY3RvciB0aHJvd3MsIHRoaXMgaXMgbGVmdCBVTklOSVRJQUxJWkVECi0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9ICggRXhwciBjb25zdCYgZXhwciApCi0gICAgICB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbl9leHByKGV4cHIsbmRuYm9vc3Q6OmFkZHJlc3NvZihleHByKSk7Ci0gICAgICAgIHJldHVybiAqdGhpcyA7Ci0gICAgICB9Ci0jZW5kaWYKLQotCi0jaWZuZGVmIE5ETkJPT1NUX09QVElPTkFMX05PX0NPTlZFUlRJTkdfQVNTSUdOTUVOVAotICAgIC8vIEFzc2lnbnMgZnJvbSBhbm90aGVyIGNvbnZlcnRpYmxlIG9wdGlvbmFsPFU+IChjb252ZXJ0cyAmJiBkZWVwLWNvcGllcyB0aGUgcmhzIHZhbHVlKQotICAgIC8vIFJlcXVpcmVzIGEgdmFsaWQgY29udmVyc2lvbiBmcm9tIFUgdG8gVC4KLSAgICAvLyBCYXNpYyBHdWFyYW50ZWU6IElmIFQ6OlQoIFUgY29uc3QmICkgdGhyb3dzLCB0aGlzIGlzIGxlZnQgVU5JTklUSUFMSVpFRAotICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgb3B0aW9uYWwmIG9wZXJhdG9yPSAoIG9wdGlvbmFsPFU+IGNvbnN0JiByaHMgKQotICAgICAgewotICAgICAgICB0aGlzLT5hc3NpZ24ocmhzKTsKLSAgICAgICAgcmV0dXJuICp0aGlzIDsKLSAgICAgIH0KLSNlbmRpZgotCi0gICAgLy8gQXNzaWducyBmcm9tIGFub3RoZXIgb3B0aW9uYWw8VD4gKGRlZXAtY29waWVzIHRoZSByaHMgdmFsdWUpCi0gICAgLy8gQmFzaWMgR3VhcmFudGVlOiBJZiBUOjpUKCBUIGNvbnN0JiApIHRocm93cywgdGhpcyBpcyBsZWZ0IFVOSU5JVElBTElaRUQKLSAgICAvLyAgKE5PVEU6IE9uIEJDQiwgdGhpcyBvcGVyYXRvciBpcyBub3QgYWN0dWFsbHkgY2FsbGVkIGFuZCBsZWZ0IGlzIGxlZnQgVU5NT0RJRklFRCBpbiBjYXNlIG9mIGEgdGhyb3cpCi0gICAgb3B0aW9uYWwmIG9wZXJhdG9yPSAoIG9wdGlvbmFsIGNvbnN0JiByaHMgKQotICAgICAgewotICAgICAgICB0aGlzLT5hc3NpZ24oIHN0YXRpY19jYXN0PGJhc2UgY29uc3QmPihyaHMpICkgOwotICAgICAgICByZXR1cm4gKnRoaXMgOwotICAgICAgfQotCi0gICAgLy8gQXNzaWducyBmcm9tIGEgVCAoZGVlcC1jb3BpZXMgdGhlIHJocyB2YWx1ZSkKLSAgICAvLyBCYXNpYyBHdWFyYW50ZWU6IElmIFQ6OiggVCBjb25zdCYgKSB0aHJvd3MsIHRoaXMgaXMgbGVmdCBVTklOSVRJQUxJWkVECi0gICAgb3B0aW9uYWwmIG9wZXJhdG9yPSAoIGFyZ3VtZW50X3R5cGUgdmFsICkKLSAgICAgIHsKLSAgICAgICAgdGhpcy0+YXNzaWduKCB2YWwgKSA7Ci0gICAgICAgIHJldHVybiAqdGhpcyA7Ci0gICAgICB9Ci0KLSAgICAvLyBBc3NpZ25zIGZyb20gYSAibm9uZSIKLSAgICAvLyBXaGljaCBkZXN0cm95cyB0aGUgY3VycmVudCB2YWx1ZSwgaWYgYW55LCBsZWF2aW5nIHRoaXMgVU5JTklUSUFMSVpFRAotICAgIC8vIE5vLXRocm93IChhc3N1bWluZyBUOjp+VCgpIGRvZXNuJ3QpCi0gICAgb3B0aW9uYWwmIG9wZXJhdG9yPSAoIG5vbmVfdCBub25lXyApCi0gICAgICB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbiggbm9uZV8gKSA7Ci0gICAgICAgIHJldHVybiAqdGhpcyA7Ci0gICAgICB9Ci0KLSAgICB2b2lkIHN3YXAoIG9wdGlvbmFsICYgYXJnICkKLSAgICAgIHsKLSAgICAgICAgLy8gYWxsb3cgZm9yIEtvZW5pZyBsb29rdXAKLSAgICAgICAgdXNpbmcgbmRuYm9vc3Q6OnN3YXA7Ci0gICAgICAgIHN3YXAoKnRoaXMsIGFyZyk7Ci0gICAgICB9Ci0KLQotICAgIC8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsIG90aGVyd2lzZSwKLSAgICAvLyB0aGUgYmVoYXZpb3VyIGlzIFVOREVGSU5FRAotICAgIC8vIE5vLXRocm93Ci0gICAgcmVmZXJlbmNlX2NvbnN0X3R5cGUgZ2V0KCkgY29uc3QgeyBORE5CT09TVF9BU1NFUlQodGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSkgOyByZXR1cm4gdGhpcy0+Z2V0X2ltcGwoKTsgfQotICAgIHJlZmVyZW5jZV90eXBlICAgICAgIGdldCgpICAgICAgIHsgTkROQk9PU1RfQVNTRVJUKHRoaXMtPmlzX2luaXRpYWxpemVkKCkpIDsgcmV0dXJuIHRoaXMtPmdldF9pbXBsKCk7IH0KLQotICAgIC8vIFJldHVybnMgYSBjb3B5IG9mIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCAndicgb3RoZXJ3aXNlCi0gICAgcmVmZXJlbmNlX2NvbnN0X3R5cGUgZ2V0X3ZhbHVlX29yICggcmVmZXJlbmNlX2NvbnN0X3R5cGUgdiApIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmlzX2luaXRpYWxpemVkKCkgPyBnZXQoKSA6IHYgOyB9Ci0gICAgcmVmZXJlbmNlX3R5cGUgICAgICAgZ2V0X3ZhbHVlX29yICggcmVmZXJlbmNlX3R5cGUgICAgICAgdiApICAgICAgIHsgcmV0dXJuIHRoaXMtPmlzX2luaXRpYWxpemVkKCkgPyBnZXQoKSA6IHYgOyB9Ci0KLSAgICAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLAotICAgIC8vIHRoZSBiZWhhdmlvdXIgaXMgVU5ERUZJTkVECi0gICAgLy8gTm8tdGhyb3cKLSAgICBwb2ludGVyX2NvbnN0X3R5cGUgb3BlcmF0b3ItPigpIGNvbnN0IHsgTkROQk9PU1RfQVNTRVJUKHRoaXMtPmlzX2luaXRpYWxpemVkKCkpIDsgcmV0dXJuIHRoaXMtPmdldF9wdHJfaW1wbCgpIDsgfQotICAgIHBvaW50ZXJfdHlwZSAgICAgICBvcGVyYXRvci0+KCkgICAgICAgeyBORE5CT09TVF9BU1NFUlQodGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSkgOyByZXR1cm4gdGhpcy0+Z2V0X3B0cl9pbXBsKCkgOyB9Ci0KLSAgICAvLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCBvdGhlcndpc2UsCi0gICAgLy8gdGhlIGJlaGF2aW91ciBpcyBVTkRFRklORUQKLSAgICAvLyBOby10aHJvdwotICAgIHJlZmVyZW5jZV9jb25zdF90eXBlIG9wZXJhdG9yICooKSBjb25zdCB7IHJldHVybiB0aGlzLT5nZXQoKSA7IH0KLSAgICByZWZlcmVuY2VfdHlwZSAgICAgICBvcGVyYXRvciAqKCkgICAgICAgeyByZXR1cm4gdGhpcy0+Z2V0KCkgOyB9Ci0KLSAgICAvLyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvICJib29sIgotICAgIC8vIE5vLXRocm93Ci0gICAgb3BlcmF0b3IgdW5zcGVjaWZpZWRfYm9vbF90eXBlKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+c2FmZV9ib29sKCkgOyB9Ci0KLSAgICAvLyBUaGlzIGlzIHByb3ZpZGVkIGZvciB0aG9zZSBjb21waWxlcnMgd2hpY2ggZG9uJ3QgbGlrZSB0aGUgY29udmVyc2lvbiB0byBib29sCi0gICAgLy8gb24gc29tZSBjb250ZXh0cy4KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICF0aGlzLT5pc19pbml0aWFsaXplZCgpIDsgfQotfSA7Ci0KLS8vIFJldHVybnMgb3B0aW9uYWw8VD4odikKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLW9wdGlvbmFsPFQ+IG1ha2Vfb3B0aW9uYWwgKCBUIGNvbnN0JiB2ICApCi17Ci0gIHJldHVybiBvcHRpb25hbDxUPih2KTsKLX0KLQotLy8gUmV0dXJucyBvcHRpb25hbDxUPihjb25kLHYpCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1vcHRpb25hbDxUPiBtYWtlX29wdGlvbmFsICggYm9vbCBjb25kLCBUIGNvbnN0JiB2ICkKLXsKLSAgcmV0dXJuIG9wdGlvbmFsPFQ+KGNvbmQsdik7Ci19Ci0KLS8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsIG90aGVyd2lzZSwgdGhlIGJlaGF2aW91ciBpcyBVTkRFRklORUQuCi0vLyBOby10aHJvdwotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cmVmZXJlbmNlX2NvbnN0X3R5cGUKLWdldCAoIG9wdGlvbmFsPFQ+IGNvbnN0JiBvcHQgKQotewotICByZXR1cm4gb3B0LmdldCgpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cmVmZXJlbmNlX3R5cGUKLWdldCAoIG9wdGlvbmFsPFQ+JiBvcHQgKQotewotICByZXR1cm4gb3B0LmdldCgpIDsKLX0KLQotLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsIG90aGVyd2lzZSwgcmV0dXJucyBOVUxMLgotLy8gTm8tdGhyb3cKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLU5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnBvaW50ZXJfY29uc3RfdHlwZQotZ2V0ICggb3B0aW9uYWw8VD4gY29uc3QqIG9wdCApCi17Ci0gIHJldHVybiBvcHQtPmdldF9wdHIoKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLU5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnBvaW50ZXJfdHlwZQotZ2V0ICggb3B0aW9uYWw8VD4qIG9wdCApCi17Ci0gIHJldHVybiBvcHQtPmdldF9wdHIoKSA7Ci19Ci0KLS8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsIG90aGVyd2lzZSwgdGhlIGJlaGF2aW91ciBpcyBVTkRFRklORUQuCi0vLyBOby10aHJvdwotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cmVmZXJlbmNlX2NvbnN0X3R5cGUKLWdldF9vcHRpb25hbF92YWx1ZV9vciAoIG9wdGlvbmFsPFQ+IGNvbnN0JiBvcHQsIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnJlZmVyZW5jZV9jb25zdF90eXBlIHYgKQotewotICByZXR1cm4gb3B0LmdldF92YWx1ZV9vcih2KSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLU5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnJlZmVyZW5jZV90eXBlCi1nZXRfb3B0aW9uYWxfdmFsdWVfb3IgKCBvcHRpb25hbDxUPiYgb3B0LCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+OjpyZWZlcmVuY2VfdHlwZSB2ICkKLXsKLSAgcmV0dXJuIG9wdC5nZXRfdmFsdWVfb3IodikgOwotfQotCi0vLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLCByZXR1cm5zIE5VTEwuCi0vLyBOby10aHJvdwotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cG9pbnRlcl9jb25zdF90eXBlCi1nZXRfcG9pbnRlciAoIG9wdGlvbmFsPFQ+IGNvbnN0JiBvcHQgKQotewotICByZXR1cm4gb3B0LmdldF9wdHIoKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLU5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnBvaW50ZXJfdHlwZQotZ2V0X3BvaW50ZXIgKCBvcHRpb25hbDxUPiYgb3B0ICkKLXsKLSAgcmV0dXJuIG9wdC5nZXRfcHRyKCkgOwotfQotCi0vLyBvcHRpb25hbCdzIHJlbGF0aW9uYWwgb3BlcmF0b3JzICggPT0sICE9LCA8LCA+LCA8PSwgPj0gKSBoYXZlIGRlZXAtc2VtYW50aWNzIChjb21wYXJlIHZhbHVlcykuCi0vLyBXQVJOSU5HOiBUaGlzIGlzIFVOTElLRSBwb2ludGVycy4gVXNlIGVxdWFsX3BvaW50ZWVzKCkvbGVzc19wb2ludGVzcygpIGluIGdlbmVyaWMgY29kZSBpbnN0ZWFkLgotCi0KLS8vCi0vLyBvcHRpb25hbDxUPiB2cyBvcHRpb25hbDxUPiBjYXNlcwotLy8KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA9PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiBlcXVhbF9wb2ludGVlcyh4LHkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPCAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiBsZXNzX3BvaW50ZWVzKHgseSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciAhPSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB4ID09IHkgKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIHkgPCB4IDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDw9ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHkgPCB4ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPj0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA8IHkgKSA7IH0KLQotCi0vLwotLy8gb3B0aW9uYWw8VD4gdnMgVCBjYXNlcwotLy8KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPT0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgVCBjb25zdCYgeSApCi17IHJldHVybiBlcXVhbF9wb2ludGVlcyh4LCBvcHRpb25hbDxUPih5KSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIFQgY29uc3QmIHkgKQoteyByZXR1cm4gbGVzc19wb2ludGVlcyh4LCBvcHRpb25hbDxUPih5KSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciAhPSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBUIGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPT0geSApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID4gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgVCBjb25zdCYgeSApCi17IHJldHVybiB5IDwgeCA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBUIGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHkgPCB4ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPj0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgVCBjb25zdCYgeSApCi17IHJldHVybiAhKCB4IDwgeSApIDsgfQotCi0vLwotLy8gVCB2cyBvcHRpb25hbDxUPiBjYXNlcwotLy8KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA9PSAoIFQgY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIGVxdWFsX3BvaW50ZWVzKCBvcHRpb25hbDxUPih4KSwgeSApOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPCAoIFQgY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIGxlc3NfcG9pbnRlZXMoIG9wdGlvbmFsPFQ+KHgpLCB5ICk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciAhPSAoIFQgY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPT0geSApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID4gKCBUIGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiB5IDwgeCA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8PSAoIFQgY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHkgPCB4ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPj0gKCBUIGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB4IDwgeSApIDsgfQotCi0KLS8vCi0vLyBvcHRpb25hbDxUPiB2cyBub25lIGNhc2VzCi0vLwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID09ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG5vbmVfdCApCi17IHJldHVybiBlcXVhbF9wb2ludGVlcyh4LCBvcHRpb25hbDxUPigpICk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG5vbmVfdCApCi17IHJldHVybiBsZXNzX3BvaW50ZWVzKHgsb3B0aW9uYWw8VD4oKSApOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgIT0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgbm9uZV90IHkgKQoteyByZXR1cm4gISggeCA9PSB5ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPiAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBub25lX3QgeSApCi17IHJldHVybiB5IDwgeCA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBub25lX3QgeSApCi17IHJldHVybiAhKCB5IDwgeCApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID49ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG5vbmVfdCB5ICkKLXsgcmV0dXJuICEoIHggPCB5ICkgOyB9Ci0KLS8vCi0vLyBub25lIHZzIG9wdGlvbmFsPFQ+IGNhc2VzCi0vLwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID09ICggbm9uZV90ICwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gZXF1YWxfcG9pbnRlZXMob3B0aW9uYWw8VD4oKSAseSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8ICggbm9uZV90ICwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gbGVzc19wb2ludGVlcyhvcHRpb25hbDxUPigpICx5KTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yICE9ICggbm9uZV90IHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPT0geSApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID4gKCBub25lX3QgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4geSA8IHggOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPD0gKCBub25lX3QgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeSA8IHggKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+PSAoIG5vbmVfdCB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB4IDwgeSApIDsgfQotCi1uYW1lc3BhY2Ugb3B0aW9uYWxfZGV0YWlsIHsKLQotdGVtcGxhdGU8Ym9vbCB1c2VfZGVmYXVsdF9jb25zdHJ1Y3Rvcj4gc3RydWN0IHN3YXBfc2VsZWN0b3I7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzd2FwX3NlbGVjdG9yPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdGF0aWMgdm9pZCBvcHRpb25hbF9zd2FwICggb3B0aW9uYWw8VD4mIHgsIG9wdGlvbmFsPFQ+JiB5ICkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGJvb2wgaGFzWCA9ICEheDsKLSAgICAgICAgY29uc3QgYm9vbCBoYXNZID0gISF5OwotCi0gICAgICAgIGlmICggIWhhc1ggJiYgIWhhc1kgKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmKCAhaGFzWCApCi0gICAgICAgICAgICB4ID0gbmRuYm9vc3Q6OmluX3BsYWNlKCk7Ci0gICAgICAgIGVsc2UgaWYgKCAhaGFzWSApCi0gICAgICAgICAgICB5ID0gbmRuYm9vc3Q6OmluX3BsYWNlKCk7Ci0KLSAgICAgICAgLy8gQm9vc3QuVXRpbGl0eS5Td2FwIHdpbGwgdGFrZSBjYXJlIG9mIEFETCBhbmQgd29ya2Fyb3VuZHMgZm9yIGJyb2tlbiBjb21waWxlcnMKLSAgICAgICAgbmRuYm9vc3Q6OnN3YXAoeC5nZXQoKSx5LmdldCgpKTsKLQotICAgICAgICBpZiggIWhhc1ggKQotICAgICAgICAgICAgeSA9IG5kbmJvb3N0Ojpub25lIDsKLSAgICAgICAgZWxzZSBpZiggIWhhc1kgKQotICAgICAgICAgICAgeCA9IG5kbmJvb3N0Ojpub25lIDsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc3dhcF9zZWxlY3RvcjxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0YXRpYyB2b2lkIG9wdGlvbmFsX3N3YXAgKCBvcHRpb25hbDxUPiYgeCwgb3B0aW9uYWw8VD4mIHkgKQotICAgIHsKLSAgICAgICAgY29uc3QgYm9vbCBoYXNYID0gISF4OwotICAgICAgICBjb25zdCBib29sIGhhc1kgPSAhIXk7Ci0KLSAgICAgICAgaWYgKCAhaGFzWCAmJiBoYXNZICkKLSAgICAgICAgewotICAgICAgICAgICAgeCA9IHkuZ2V0KCk7Ci0gICAgICAgICAgICB5ID0gbmRuYm9vc3Q6Om5vbmUgOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCBoYXNYICYmICFoYXNZICkKLSAgICAgICAgewotICAgICAgICAgICAgeSA9IHguZ2V0KCk7Ci0gICAgICAgICAgICB4ID0gbmRuYm9vc3Q6Om5vbmUgOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCBoYXNYICYmIGhhc1kgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBCb29zdC5VdGlsaXR5LlN3YXAgd2lsbCB0YWtlIGNhcmUgb2YgQURMIGFuZCB3b3JrYXJvdW5kcyBmb3IgYnJva2VuIGNvbXBpbGVycwotICAgICAgICAgICAgbmRuYm9vc3Q6OnN3YXAoeC5nZXQoKSx5LmdldCgpKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG9wdGlvbmFsX2RldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IG9wdGlvbmFsX3N3YXBfc2hvdWxkX3VzZV9kZWZhdWx0X2NvbnN0cnVjdG9yIDogaGFzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RvcjxUPiB7fSA7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHN3YXAgKCBvcHRpb25hbDxUPiYgeCwgb3B0aW9uYWw8VD4mIHkgKQotewotICAgIG9wdGlvbmFsX2RldGFpbDo6c3dhcF9zZWxlY3RvcjxvcHRpb25hbF9zd2FwX3Nob3VsZF91c2VfZGVmYXVsdF9jb25zdHJ1Y3RvcjxUPjo6dmFsdWU+OjpvcHRpb25hbF9zd2FwKHgsIHkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwvb3B0aW9uYWxfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwvb3B0aW9uYWxfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU0OTdhMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsL29wdGlvbmFsX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDggRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLS8vIFJldmlzaW9uczoKLS8vIDEwIE1heSAyMDA4IChhZGRlZCBzd2FwIHJlbGF0ZWQgZm9yd2FyZCBkZWNsYXJhdGlvbikgTmllbHMgRGVra2VyCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfT1BUSU9OQUxfRldEX0ZMQ18xOU5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX09QVElPTkFMX0ZXRF9GTENfMTlOT1YyMDAyX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBvcHRpb25hbCA7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgc3dhcCAoIG9wdGlvbmFsPFQ+JiAsIG9wdGlvbmFsPFQ+JiApIDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IG9wdGlvbmFsX3N3YXBfc2hvdWxkX3VzZV9kZWZhdWx0X2NvbnN0cnVjdG9yIDsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcGVuZGluZy9pbnRlZ2VyX2xvZzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wZW5kaW5nL2ludGVnZXJfbG9nMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NTA0ZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wZW5kaW5nL2ludGVnZXJfbG9nMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGludGVnZXJfbG9nMi5ocHAKLS8vCi0vLyAgIEdpdmVzIHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIGxvZ2FyaXRobSwgaW4gYmFzZSAyLCBvZiBhCi0vLyBnaXZlbiBudW1iZXIuIEJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiB0aGUgYXJndW1lbnQgaXMgPD0gMC4KLS8vCi0vLyAgICAgICAgIENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCAyMDA4IEdlbm5hcm8gUHJvdGEKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9JTlRFR0VSX0xPRzJfSFBQX0dQXzIwMDMwMzAxCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVHRVJfTE9HMl9IUFBfR1BfMjAwMzAzMDEKLQotI2luY2x1ZGUgPGFzc2VydC5oPgotI2lmZGVmIF9fQk9STEFORENfXwotI2luY2x1ZGUgPGNsaW1pdHM+Ci0jZW5kaWYKLSNpbmNsdWRlICJuZG5ib29zdC9saW1pdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgaW50IGludGVnZXJfbG9nMl9pbXBsKFQgeCwgaW50IG4pIHsKLQotICAgICAgaW50IHJlc3VsdCA9IDA7Ci0KLSAgICAgIHdoaWxlICh4ICE9IDEpIHsKLQotICAgICAgICAgIGNvbnN0IFQgdCA9IHN0YXRpY19jYXN0PFQ+KHggPj4gbik7Ci0gICAgICAgICAgaWYgKHQpIHsKLSAgICAgICAgICAgICAgcmVzdWx0ICs9IG47Ci0gICAgICAgICAgICAgIHggPSB0OwotICAgICAgICAgIH0KLSAgICAgICAgICBuIC89IDI7Ci0KLSAgICAgIH0KLQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0KLQotICAvLyBoZWxwZXIgdG8gZmluZCB0aGUgbWF4aW11bSBwb3dlciBvZiB0d28KLSAgLy8gbGVzcyB0aGFuIHAgKG1vcmUgaW52b2x2ZWQgdGhhbiBuZWNlc3NhcnksCi0gIC8vIHRvIGF2b2lkIFBUUykKLSAgLy8KLSAgdGVtcGxhdGUgPGludCBwLCBpbnQgbj4KLSAgc3RydWN0IG1heF9wb3cyX2xlc3MgewotCi0gICAgICBlbnVtIHsgYyA9IDIqbiA8IHAgfTsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGMgPyAobWF4X3BvdzJfbGVzczwgYypwLCAyKmMqbj46OnZhbHVlKSA6IG4pOwotCi0gIH07Ci0KLSAgdGVtcGxhdGUgPD4KLSAgc3RydWN0IG1heF9wb3cyX2xlc3M8MCwgMD4gewotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotICB9OwotCi0gIC8vIHRoaXMgdGVtcGxhdGUgaXMgaGVyZSBqdXN0IGZvciBCb3JsYW5kIDooCi0gIC8vIHdlIGNvdWxkIHNpbXBseSByZWx5IG9uIG51bWVyaWNfbGltaXRzIGJ1dCBzb21ldGltZXMKLSAgLy8gQm9ybGFuZCB0cmllcyB0byB1c2UgbnVtZXJpY19saW1pdHM8Y29uc3QgVD4sIGJlY2F1c2UKLSAgLy8gb2YgaXRzIHVzdWFsIGNvbnN0LXJlbGF0ZWQgcHJvYmxlbXMgaW4gYXJndW1lbnQgZGVkdWN0aW9uCi0gIC8vIC0gZ3BzCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBzdHJ1Y3Qgd2lkdGggewotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IHNpemVvZihUKSAqIENIQVJfQklUKTsKLSNlbHNlCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMpKTsKLSNlbmRpZgotCi0gIH07Ci0KLSB9IC8vIGRldGFpbAotCi0KLSAvLyAtLS0tLS0tLS0KLSAvLyBpbnRlZ2VyX2xvZzIKLSAvLyAtLS0tLS0tLS0tLS0tLS0KLSAvLwotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotIGludCBpbnRlZ2VyX2xvZzIoVCB4KSB7Ci0KLSAgICAgYXNzZXJ0KHggPiAwKTsKLQotICAgICBjb25zdCBpbnQgbiA9IGRldGFpbDo6bWF4X3BvdzJfbGVzczwKLSAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6d2lkdGg8VD4gOjogdmFsdWUsIDQKLSAgICAgICAgICAgICAgICAgICA+IDo6IHZhbHVlOwotCi0gICAgIHJldHVybiBkZXRhaWw6OmludGVnZXJfbG9nMl9pbXBsKHgsIG4pOwotCi0gfQotCi0KLQotfQotCi0KLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcG9pbnRlZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3BvaW50ZWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGM5MjdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcG9pbnRlZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0jaWZuZGVmIFBPSU5URUVfTkROQk9PU1RfRFdBMjAwNDE1X0hQUAotIyBkZWZpbmUgUE9JTlRFRV9ORE5CT09TVF9EV0EyMDA0MTVfSFBQCi0KLS8vCi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcwotLy8gc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyB0eXBlbmFtZSBwb2ludGVlPFA+Ojp0eXBlIHByb3ZpZGVzIHRoZSBwb2ludGVlIHR5cGUgb2YgUC4KLS8vCi0vLyBGb3IgZXhhbXBsZSwgaXQgaXMgVCBmb3IgVCogYW5kIFggZm9yIHNoYXJlZF9wdHI8WD4uCi0vLwotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pdGVyYXRvci9kb2MvcG9pbnRlZS5odG1sCi0vLwotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pc19pbmNyZW1lbnRhYmxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLQotbmFtZXNwYWNlIGRldGFpbAotewotICB0ZW1wbGF0ZSA8Y2xhc3MgUD4KLSAgc3RydWN0IHNtYXJ0X3B0cl9wb2ludGVlCi0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6ZWxlbWVudF90eXBlIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotICBzdHJ1Y3QgaXRlcmF0b3JfcG9pbnRlZQotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgIAotICAgICAgc3RydWN0IGltcGwKLSAgICAgIHsKLSAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgICBzdGF0aWMgY2hhciB0ZXN0KFQgY29uc3QmKTsKLSAgICAgICAgICAKLSAgICAgICAgICBzdGF0aWMgY2hhciAoJiB0ZXN0KHZhbHVlX3R5cGUmKSApWzJdOwotICAgICAgICAgIAotICAgICAgICAgIHN0YXRpYyBJdGVyYXRvciYgeDsKLSAgICAgIH07Ci0gICAgICAKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19jb25zdGFudCA9IHNpemVvZihpbXBsOjp0ZXN0KCppbXBsOjp4KSkgPT0gMSk7Ci0gICAgICAKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPAotIyAgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU1MSkpCi0gICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl9wb2ludGVlPEl0ZXJhdG9yPjo6aXNfY29uc3RhbnQKLSMgIGVsc2UKLSAgICAgICAgICBpc19jb25zdGFudAotIyAgZW5kaWYgCi0gICAgICAgICwgdHlwZW5hbWUgYWRkX2NvbnN0PHZhbHVlX3R5cGU+Ojp0eXBlCi0gICAgICAgICwgdmFsdWVfdHlwZQotICAgICAgPjo6dHlwZSB0eXBlOwotICB9OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUD4KLXN0cnVjdCBwb2ludGVlCi0gIDogbXBsOjpldmFsX2lmPAotICAgICAgICBkZXRhaWw6OmlzX2luY3JlbWVudGFibGU8UD4KLSAgICAgICwgZGV0YWlsOjppdGVyYXRvcl9wb2ludGVlPFA+Ci0gICAgICAsIGRldGFpbDo6c21hcnRfcHRyX3BvaW50ZWU8UD4KLSAgICA+Ci17Ci19OwotICAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBQT0lOVEVFX05ETkJPT1NUX0RXQTIwMDQxNV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcG9pbnRlcl90b19vdGhlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3BvaW50ZXJfdG9fb3RoZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzZkNjEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcG9pbnRlcl90b19vdGhlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1BPSU5URVJfVE9fT1RIRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1BPSU5URVJfVE9fT1RIRVJfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgcG9pbnRlcl90b19vdGhlci5ocHAKLS8vCi0vLyAgKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMDUuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA1IFBldGVyIERpbW92LgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLwotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvcG9pbnRlcl90b19vdGhlci5odG1sCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8gRGVmaW5lcyB0aGUgc2FtZSBwb2ludGVyIHR5cGUgKHJhdyBvciBzbWFydCkgdG8gYW5vdGhlciBwb2ludGVlIHR5cGUKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBwb2ludGVyX3RvX290aGVyOwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCAKLSAgICAgICAgIHRlbXBsYXRlPGNsYXNzPiBjbGFzcyBTcD4KLXN0cnVjdCBwb2ludGVyX3RvX290aGVyPCBTcDxUPiwgVSA+Ci17Ci0gICB0eXBlZGVmIFNwPFU+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBUMiwgY2xhc3MgVSwgCi0gICAgICAgICB0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+IGNsYXNzIFNwPgotc3RydWN0IHBvaW50ZXJfdG9fb3RoZXI8IFNwPFQsIFQyPiwgVSA+Ci17Ci0gICB0eXBlZGVmIFNwPFUsIFQyPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBVLCAKLSAgICAgICAgIHRlbXBsYXRlPGNsYXNzLCBjbGFzcywgY2xhc3M+IGNsYXNzIFNwPgotc3RydWN0IHBvaW50ZXJfdG9fb3RoZXI8IFNwPFQsIFQyLCBUMz4sIFUgPgotewotICAgdHlwZWRlZiBTcDxVLCBUMiwgVDM+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPgotc3RydWN0IHBvaW50ZXJfdG9fb3RoZXI8IFQqLCBVID4KLXsKLSAgIHR5cGVkZWYgVSogdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1BPSU5URVJfVE9fT1RIRVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NGMwZmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19BRERfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19BRERfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0FERCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERCh4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX1dISUxFKE5ETkJPT1NUX1BQX0FERF9QLCBORE5CT09TVF9QUF9BRERfTywgKHgsIHkpKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQUREKHgsIHkpIE5ETkJPT1NUX1BQX0FERF9JKHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BRERfSSh4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX1dISUxFKE5ETkJPT1NUX1BQX0FERF9QLCBORE5CT09TVF9QUF9BRERfTywgKHgsIHkpKSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9QKGQsIHh5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIHh5KQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BRERfTyhkLCB4eSkgTkROQk9PU1RfUFBfQUREX09fSSB4eQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BRERfTyhkLCB4eSkgTkROQk9PU1RfUFBfQUREX09fSShORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIHh5KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCB4eSkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9BRERfT19JKHgsIHkpIChORE5CT09TVF9QUF9JTkMoeCksIE5ETkJPT1NUX1BQX0RFQyh5KSkKLSMKLSMgLyogTkROQk9PU1RfUFBfQUREX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BRERfRChkLCB4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX1dISUxFXyAjIyBkKE5ETkJPT1NUX1BQX0FERF9QLCBORE5CT09TVF9QUF9BRERfTywgKHgsIHkpKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQUREX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfQUREX0RfSShkLCB4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQUREX0RfSShkLCB4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX1dISUxFXyAjIyBkKE5ETkJPT1NUX1BQX0FERF9QLCBORE5CT09TVF9QUF9BRERfTywgKHgsIHkpKSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUyMGMyZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19ERUNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJJVEhNRVRJQ19ERUNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfREVDICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQyh4KSBORE5CT09TVF9QUF9ERUNfSSh4KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ERUMoeCkgTkROQk9PU1RfUFBfREVDX09PKCh4KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ19PTyhwYXIpIE5ETkJPT1NUX1BQX0RFQ19JICMjIHBhcgotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDX0koeCkgTkROQk9PU1RfUFBfREVDXyAjIyB4Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMCAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMyAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNCAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNSA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNiA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNyA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOCA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOSA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTAgOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExIDEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTIgMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMyAxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0IDEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTUgMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNiAxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3IDE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTggMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOSAxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwIDE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjEgMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMiAyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzIDIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQgMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNSAyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI2IDI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjcgMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yOCAyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI5IDI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzAgMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zMSAzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzMyIDMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzMgMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zNCAzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzM1IDM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzYgMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zNyAzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzM4IDM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzkgMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180MCAzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQxIDQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDIgNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180MyA0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQ0IDQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDUgNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180NiA0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQ3IDQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDggNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180OSA0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzUwIDQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTEgNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181MiA1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzUzIDUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTQgNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181NSA1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzU2IDU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTcgNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181OCA1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzU5IDU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjAgNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182MSA2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzYyIDYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjMgNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182NCA2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzY1IDY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjYgNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182NyA2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzY4IDY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjkgNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183MCA2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzcxIDcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzIgNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183MyA3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzc0IDczCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzUgNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183NiA3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzc3IDc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzggNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183OSA3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzgwIDc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODEgODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184MiA4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzgzIDgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODQgODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184NSA4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzg2IDg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODcgODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184OCA4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzg5IDg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTAgODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185MSA5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzkyIDkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTMgOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185NCA5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzk1IDk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTYgOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185NyA5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzk4IDk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTkgOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDAgOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDEgMTAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTAyIDEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwMyAxMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDQgMTAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTA1IDEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwNiAxMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDcgMTA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTA4IDEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwOSAxMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTAgMTA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTExIDExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExMiAxMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTMgMTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTE0IDExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExNSAxMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTYgMTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTE3IDExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExOCAxMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTkgMTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTIwIDExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyMSAxMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjIgMTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTIzIDEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyNCAxMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjUgMTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTI2IDEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyNyAxMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjggMTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTI5IDEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzMCAxMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzEgMTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTMyIDEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzMyAxMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzQgMTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTM1IDEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzNiAxMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzcgMTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTM4IDEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzOSAxMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDAgMTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQxIDE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0MiAxNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDMgMTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQ0IDE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0NSAxNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDYgMTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQ3IDE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0OCAxNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDkgMTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTUwIDE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1MSAxNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTIgMTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTUzIDE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1NCAxNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTUgMTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTU2IDE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1NyAxNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTggMTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTU5IDE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2MCAxNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjEgMTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTYyIDE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2MyAxNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjQgMTYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTY1IDE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2NiAxNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjcgMTY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTY4IDE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2OSAxNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzAgMTY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTcxIDE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3MiAxNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzMgMTcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTc0IDE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3NSAxNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzYgMTc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTc3IDE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3OCAxNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzkgMTc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTgwIDE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4MSAxODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODIgMTgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTgzIDE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4NCAxODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODUgMTg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTg2IDE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4NyAxODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODggMTg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTg5IDE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5MCAxODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTEgMTkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTkyIDE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5MyAxOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTQgMTkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTk1IDE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5NiAxOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTcgMTk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTk4IDE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5OSAxOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDAgMTk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjAxIDIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwMiAyMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDMgMjAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjA0IDIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwNSAyMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDYgMjA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjA3IDIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwOCAyMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDkgMjA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjEwIDIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxMSAyMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTIgMjExCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjEzIDIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxNCAyMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTUgMjE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjE2IDIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxNyAyMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTggMjE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjE5IDIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyMCAyMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjEgMjIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjIyIDIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyMyAyMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjQgMjIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjI1IDIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyNiAyMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjcgMjI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjI4IDIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyOSAyMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzAgMjI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjMxIDIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzMiAyMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzMgMjMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjM0IDIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzNSAyMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzYgMjM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjM3IDIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzOCAyMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzkgMjM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQwIDIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0MSAyNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDIgMjQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQzIDI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0NCAyNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDUgMjQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQ2IDI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0NyAyNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDggMjQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQ5IDI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1MCAyNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNTEgMjUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjUyIDI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1MyAyNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNTQgMjUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjU1IDI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1NiAyNTUKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGV0YWlsL2Rpdl9iYXNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGV0YWlsL2Rpdl9iYXNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI0ZTQxMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RldGFpbC9kaXZfYmFzZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0RFVEFJTF9ESVZfQkFTRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0RFVEFJTF9ESVZfQkFTRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbXBhcmlzb24vbGVzc19lcXVhbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9ESVZfQkFTRSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFKHgsIHkpIE5ETkJPT1NUX1BQX1dISUxFKE5ETkJPT1NUX1BQX0RJVl9CQVNFX1AsIE5ETkJPT1NUX1BQX0RJVl9CQVNFX08sICgwLCB4LCB5KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0UoeCwgeSkgTkROQk9PU1RfUFBfRElWX0JBU0VfSSh4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfSSh4LCB5KSBORE5CT09TVF9QUF9XSElMRShORE5CT09TVF9QUF9ESVZfQkFTRV9QLCBORE5CT09TVF9QUF9ESVZfQkFTRV9PLCAoMCwgeCwgeSkpCi0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9QKGQsIHJ4eSkgTkROQk9PU1RfUFBfRElWX0JBU0VfUF9JTShkLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMyByeHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9QX0lNKGQsIGltKSBORE5CT09TVF9QUF9ESVZfQkFTRV9QX0koZCwgaW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1AoZCwgcnh5KSBORE5CT09TVF9QUF9ESVZfQkFTRV9QX0koZCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCByeHkpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIHJ4eSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgcnh5KSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1BfSShkLCByLCB4LCB5KSBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0QoZCwgeSwgeCkKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX08oZCwgcnh5KSBORE5CT09TVF9QUF9ESVZfQkFTRV9PX0lNKGQsIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zIHJ4eSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX09fSU0oZCwgaW0pIE5ETkJPT1NUX1BQX0RJVl9CQVNFX09fSShkLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfTyhkLCByeHkpIE5ETkJPT1NUX1BQX0RJVl9CQVNFX09fSShkLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIHJ4eSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgcnh5KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCByeHkpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfT19JKGQsIHIsIHgsIHkpIChORE5CT09TVF9QUF9JTkMociksIE5ETkJPT1NUX1BQX1NVQl9EKGQsIHgsIHkpLCB5KQotIwotIyAvKiBORE5CT09TVF9QUF9ESVZfQkFTRV9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfRChkLCB4LCB5KSBORE5CT09TVF9QUF9XSElMRV8gIyMgZChORE5CT09TVF9QUF9ESVZfQkFTRV9QLCBORE5CT09TVF9QUF9ESVZfQkFTRV9PLCAoMCwgeCwgeSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfRElWX0JBU0VfRF9JKGQsIHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9EX0koZCwgeCwgeSkgTkROQk9PU1RfUFBfV0hJTEVfICMjIGQoTkROQk9PU1RfUFBfRElWX0JBU0VfUCwgTkROQk9PU1RfUFBfRElWX0JBU0VfTywgKDAsIHgsIHkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODc4Mzk1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0lOQ19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0lOQ19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9JTkMgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSU5DKHgpIE5ETkJPT1NUX1BQX0lOQ19JKHgpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQyh4KSBORE5CT09TVF9QUF9JTkNfT08oKHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSU5DX09PKHBhcikgTkROQk9PU1RfUFBfSU5DX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfSSh4KSBORE5CT09TVF9QUF9JTkNfICMjIHgKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18wIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xIDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yIDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zIDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180IDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181IDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182IDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183IDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184IDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185IDEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTAgMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMSAxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyIDEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTMgMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNCAxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1IDE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTYgMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNyAxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4IDE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTkgMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMCAyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxIDIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjIgMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMyAyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0IDI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjUgMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNiAyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI3IDI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjggMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yOSAzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzMwIDMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzEgMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zMiAzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzMzIDM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzQgMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zNSAzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzM2IDM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzcgMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zOCAzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzM5IDQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDAgNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180MSA0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQyIDQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDMgNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180NCA0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQ1IDQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDYgNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180NyA0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQ4IDQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDkgNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181MCA1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzUxIDUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTIgNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181MyA1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzU0IDU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTUgNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181NiA1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzU3IDU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTggNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181OSA2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzYwIDYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjEgNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182MiA2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzYzIDY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjQgNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182NSA2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzY2IDY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjcgNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182OCA2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzY5IDcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzAgNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183MSA3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzcyIDczCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzMgNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183NCA3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzc1IDc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzYgNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183NyA3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzc4IDc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzkgODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184MCA4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzgxIDgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODIgODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184MyA4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzg0IDg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODUgODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184NiA4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzg3IDg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODggODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184OSA5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzkwIDkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTEgOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185MiA5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzkzIDk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTQgOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185NSA5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzk2IDk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTcgOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185OCA5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzk5IDEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwMCAxMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDEgMTAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTAyIDEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwMyAxMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDQgMTA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTA1IDEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwNiAxMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDcgMTA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTA4IDEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwOSAxMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTAgMTExCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTExIDExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExMiAxMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTMgMTE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTE0IDExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExNSAxMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTYgMTE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTE3IDExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExOCAxMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTkgMTIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTIwIDEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyMSAxMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjIgMTIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTIzIDEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyNCAxMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjUgMTI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTI2IDEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyNyAxMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjggMTI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTI5IDEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzMCAxMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzEgMTMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTMyIDEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzMyAxMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzQgMTM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTM1IDEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzNiAxMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzcgMTM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTM4IDEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzOSAxNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDAgMTQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQxIDE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0MiAxNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDMgMTQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQ0IDE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0NSAxNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDYgMTQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQ3IDE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0OCAxNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDkgMTUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTUwIDE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1MSAxNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTIgMTUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTUzIDE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1NCAxNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTUgMTU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTU2IDE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1NyAxNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTggMTU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTU5IDE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2MCAxNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjEgMTYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTYyIDE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2MyAxNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjQgMTY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTY1IDE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2NiAxNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjcgMTY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTY4IDE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2OSAxNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzAgMTcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTcxIDE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3MiAxNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzMgMTc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTc0IDE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3NSAxNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzYgMTc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTc3IDE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3OCAxNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzkgMTgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTgwIDE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4MSAxODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODIgMTgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTgzIDE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4NCAxODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODUgMTg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTg2IDE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4NyAxODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODggMTg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTg5IDE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5MCAxOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTEgMTkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTkyIDE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5MyAxOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTQgMTk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTk1IDE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5NiAxOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTcgMTk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTk4IDE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5OSAyMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDAgMjAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjAxIDIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwMiAyMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDMgMjA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjA0IDIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwNSAyMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDYgMjA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjA3IDIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwOCAyMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDkgMjEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjEwIDIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxMSAyMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTIgMjEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjEzIDIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxNCAyMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTUgMjE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjE2IDIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxNyAyMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTggMjE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjE5IDIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyMCAyMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjEgMjIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjIyIDIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyMyAyMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjQgMjI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjI1IDIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyNiAyMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjcgMjI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjI4IDIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyOSAyMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzAgMjMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjMxIDIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzMiAyMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzMgMjM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjM0IDIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzNSAyMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzYgMjM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjM3IDIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzOCAyMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzkgMjQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQwIDI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0MSAyNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDIgMjQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQzIDI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0NCAyNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDUgMjQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQ2IDI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0NyAyNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDggMjQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQ5IDI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI1MCAyNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNTEgMjUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjUyIDI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI1MyAyNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNTQgMjU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjU1IDI1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI1NiAyNTYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvbW9kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvbW9kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY1NzU0ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL21vZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX01PRF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX01PRF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGV0YWlsL2Rpdl9iYXNlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX01PRCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX01PRCh4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIE5ETkJPT1NUX1BQX0RJVl9CQVNFKHgsIHkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9NT0QoeCwgeSkgTkROQk9PU1RfUFBfTU9EX0koeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX01PRF9JKHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgTkROQk9PU1RfUFBfRElWX0JBU0UoeCwgeSkpCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX01PRF9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTU9EX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCBORE5CT09TVF9QUF9ESVZfQkFTRV9EKGQsIHgsIHkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9NT0RfRChkLCB4LCB5KSBORE5CT09TVF9QUF9NT0RfRF9JKGQsIHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9NT0RfRF9JKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgTkROQk9PU1RfUFBfRElWX0JBU0VfRChkLCB4LCB5KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQzMzFmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX1NVQl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX1NVQl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU1VCICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCKHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEUoTkROQk9PU1RfUFBfU1VCX1AsIE5ETkJPT1NUX1BQX1NVQl9PLCAoeCwgeSkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVUIoeCwgeSkgTkROQk9PU1RfUFBfU1VCX0koeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQl9JKHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEUoTkROQk9PU1RfUFBfU1VCX1AsIE5ETkJPT1NUX1BQX1NVQl9PLCAoeCwgeSkpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX1AoZCwgeHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgeHkpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQl9PKGQsIHh5KSBORE5CT09TVF9QUF9TVUJfT19JIHh5Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQl9PKGQsIHh5KSBORE5CT09TVF9QUF9TVUJfT19JKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgeHkpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIHh5KSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQl9PX0koeCwgeSkgKE5ETkJPT1NUX1BQX0RFQyh4KSwgTkROQk9PU1RfUFBfREVDKHkpKQotIwotIyAvKiBORE5CT09TVF9QUF9TVUJfRCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQl9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEVfICMjIGQoTkROQk9PU1RfUFBfU1VCX1AsIE5ETkJPT1NUX1BQX1NVQl9PLCAoeCwgeSkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVUJfRChkLCB4LCB5KSBORE5CT09TVF9QUF9TVUJfRF9JKGQsIHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVUJfRF9JKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEVfICMjIGQoTkROQk9PU1RfUFBfU1VCX1AsIE5ETkJPT1NUX1BQX1NVQl9PLCAoeCwgeSkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZGF0YS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9kYXRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM4ZWU3NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9kYXRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJSQVlfREFUQV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUlJBWV9EQVRBX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQVJSQVlfREFUQSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX0RBVEEoYXJyYXkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgYXJyYXkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX0RBVEEoYXJyYXkpIE5ETkJPT1NUX1BQX0FSUkFZX0RBVEFfSShhcnJheSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX0RBVEFfSShhcnJheSkgTkROQk9PU1RfUFBfQVJSQVlfREFUQV9JSSBhcnJheQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfREFUQV9JSShzaXplLCBkYXRhKSBkYXRhCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9lbGVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2VsZW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmJiYTZjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2VsZW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUlJBWV9FTEVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSUkFZX0VMRU1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9kYXRhLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L3NpemUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQVJSQVlfRUxFTSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oaSwgYXJyYXkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oTkROQk9PU1RfUFBfQVJSQVlfU0laRShhcnJheSksIGksIE5ETkJPT1NUX1BQX0FSUkFZX0RBVEEoYXJyYXkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKGksIGFycmF5KSBORE5CT09TVF9QUF9BUlJBWV9FTEVNX0koaSwgYXJyYXkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9FTEVNX0koaSwgYXJyYXkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oTkROQk9PU1RfUFBfQVJSQVlfU0laRShhcnJheSksIGksIE5ETkJPT1NUX1BQX0FSUkFZX0RBVEEoYXJyYXkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVlOTFiZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJSQVlfU0laRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUlJBWV9TSVpFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQVJSQVlfU0laRSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUoYXJyYXkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgYXJyYXkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUoYXJyYXkpIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkVfSShhcnJheSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkVfSShhcnJheSkgTkROQk9PU1RfUFBfQVJSQVlfU0laRV9JSSBhcnJheQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfU0laRV9JSShzaXplLCBkYXRhKSBzaXplCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNlZDlmNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ0FUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NBVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9DQVQgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0FUKGEsIGIpIE5ETkJPT1NUX1BQX0NBVF9JKGEsIGIpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NBVChhLCBiKSBORE5CT09TVF9QUF9DQVRfT08oKGEsIGIpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0FUX09PKHBhcikgTkROQk9PU1RfUFBfQ0FUX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NBVF9JKGEsIGIpIGEgIyMgYgotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DQVRfSShhLCBiKSBORE5CT09TVF9QUF9DQVRfSUkofiwgYSAjIyBiKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0FUX0lJKHAsIHJlcykgcmVzCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhYmZiZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT01NQV9JRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT01NQV9JRl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbXBhcmlzb24vbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21wYXJpc29uL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzIwOWMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbXBhcmlzb24vbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT01QQVJJU09OX0xFU1NfRVFVQUxfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09NUEFSSVNPTl9MRVNTX0VRVUFMX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL25vdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUwgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MRVNTX0VRVUFMKHgsIHkpIE5ETkJPT1NUX1BQX05PVChORE5CT09TVF9QUF9TVUIoeCwgeSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUwoeCwgeSkgTkROQk9PU1RfUFBfTEVTU19FUVVBTF9JKHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0koeCwgeSkgTkROQk9PU1RfUFBfTk9UKE5ETkJPT1NUX1BQX1NVQih4LCB5KSkKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfTEVTU19FUVVBTF9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTEVTU19FUVVBTF9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX05PVChORE5CT09TVF9QUF9TVUJfRChkLCB4LCB5KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTEVTU19FUVVBTF9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfRF9JKGQsIHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0RfSShkLCB4LCB5KSBORE5CT09TVF9QUF9OT1QoTkROQk9PU1RfUFBfU1VCX0QoZCwgeCwgeSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTU5YjRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDItMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgRWR3YXJkIERpZW5lciAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAgICAgICoKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05GSUdfQ09ORklHX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTkZJR19DT05GSUdfSFBQCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpIDB4MDAwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0lERUFMKCkgMHgwMDAyCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpIDB4MDAwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKSAweDAwMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19CQ0MoKSAweDAwMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKSAweDAwMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19ETUMoKSAweDAwNDAKLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUwotIyAgICBpZiBkZWZpbmVkKF9fR0NDWE1MX18pCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSkKLSMgICAgZWxpZiBkZWZpbmVkKF9fV0FWRV9fKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkpCi0jICAgIGVsaWYgZGVmaW5lZChfX01XRVJLU19fKSAmJiBfX01XRVJLU19fID49IDB4MzIwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkpCi0jICAgIGVsaWYgZGVmaW5lZChfX0VER19fKSB8fCBkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykKLSMgICAgICAgIGlmIGRlZmluZWQoX01TQ19WRVIpICYmIF9fRURHX1ZFUlNJT05fXyA+PSAzMDgKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkpCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfRURHKCkgfCBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkpCi0jICAgICAgICBlbmRpZgotIyAgICBlbGlmIGRlZmluZWQoX19NV0VSS1NfXykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKSkKLSMgICAgZWxpZiBkZWZpbmVkKF9fRE1DX18pCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19ETUMoKSkKLSMgICAgZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgX19CT1JMQU5EQ19fID49IDB4NTgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSkKLSMgICAgZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX0lCTUNfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfQkNDKCkpCi0jICAgIGVsaWYgZGVmaW5lZChfTVNDX1ZFUikKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKSkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkpCi0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0NPTkZJR19FWFRFTkRFRF9MSU5FX0lORk8gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BQX0NPTkZJR19FWFRFTkRFRF9MSU5FX0lORk8KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19FWFRFTkRFRF9MSU5FX0lORk8gMAotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9DT05GSUdfRVJST1JTICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUF9DT05GSUdfRVJST1JTCi0jICAgIGlmZGVmIE5ERUJVRwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19FUlJPUlMgMAotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0VSUk9SUyAxCi0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1ZBUklBRElDUyAqLwotIwotIyBpZiAhZGVmaW5lZCBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgLyogdmFyaWFkaWMgc3VwcG9ydCBleHBsaWNpdGx5IGRpc2FibGVkIGZvciBhbGwgdW50ZXN0ZWQgY29tcGlsZXJzICovCi0jICAgIGlmIGRlZmluZWQgX19HQ0NYTUxfXyB8fCBkZWZpbmVkIF9fQ1VEQUNDX18gfHwgZGVmaW5lZCBfX1BBVEhTQ0FMRV9fIHx8IGRlZmluZWQgX19jbGFuZ19fIHx8IGRlZmluZWQgX19ETUNfXyB8fCBkZWZpbmVkIF9fQ09ERUdFQVJDX18gfHwgZGVmaW5lZCBfX0JPUkxBTkRDX18gfHwgZGVmaW5lZCBfX01XRVJLU19fIHx8IGRlZmluZWQgX19TVU5QUk9fQ0MgfHwgZGVmaW5lZCBfX0hQX2FDQyAmJiAhZGVmaW5lZCBfX0VER19fIHx8IGRlZmluZWQgX19NUkNfXyB8fCBkZWZpbmVkIF9fU0NfXyB8fCBkZWZpbmVkIF9fSUJNQ1BQX18gfHwgZGVmaW5lZCBfX1BHSQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDUyAwCi0jICAgIC8qIFZDKysgKEMvQysrKSAqLwotIyAgICBlbGlmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiAhZGVmaW5lZCBfX0VER19fCi0jICAgICAgICBpZiBfTVNDX1ZFUiA+PSAxNDAwCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDUyAxCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDU19NU1ZDIDEKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDAKLSMgICAgICAgIGVuZGlmCi0jICAgIC8qIFdhdmUgKEMvQysrKSwgR0NDIChDKyspICovCi0jICAgIGVsaWYgZGVmaW5lZCBfX1dBVkVfXyAmJiBfX1dBVkVfSEFTX1ZBUklBRElDU19fIHx8IGRlZmluZWQgX19HTlVDX18gJiYgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18KLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMQotIyAgICAvKiBFREctYmFzZWQgKEMvQysrKSwgR0NDIChDKSwgYW5kIHVua25vd24gKEMvQysrKSAqLwotIyAgICBlbGlmICFkZWZpbmVkIF9fY3BsdXNwbHVzICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTCB8fCBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDEKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDUyAwCi0jICAgIGVuZGlmCi0jIGVsaWYgIU5ETkJPT1NUX1BQX1ZBUklBRElDUyArIDEgPCAyCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDEKLSMgICAgaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmICEoZGVmaW5lZCBfX0VER19fIHx8IGRlZmluZWQgX19HQ0NYTUxfXyB8fCBkZWZpbmVkIF9fQ1VEQUNDX18gfHwgZGVmaW5lZCBfX1BBVEhTQ0FMRV9fIHx8IGRlZmluZWQgX19jbGFuZ19fIHx8IGRlZmluZWQgX19ETUNfXyB8fCBkZWZpbmVkIF9fQ09ERUdFQVJDX18gfHwgZGVmaW5lZCBfX0JPUkxBTkRDX18gfHwgZGVmaW5lZCBfX01XRVJLU19fIHx8IGRlZmluZWQgX19TVU5QUk9fQ0MgfHwgZGVmaW5lZCBfX0hQX2FDQyB8fCBkZWZpbmVkIF9fTVJDX18gfHwgZGVmaW5lZCBfX1NDX18gfHwgZGVmaW5lZCBfX0lCTUNQUF9fIHx8IGRlZmluZWQgX19QR0kpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMgMQotIyAgICBlbmRpZgotIyBlbHNlCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDAKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGVkdWNlX2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZWR1Y2VfZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjNzRjYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZWR1Y2VfZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVEVUNFX0RfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERURVQ0VfRF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfREVEVUNFX0QgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFRFVDRV9EKCkgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfV0hJTEVfUCwgMjU2KQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZG1jL3doaWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2RtYy93aGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NjZkOWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZG1jL3doaWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFVEFJTF9XSElMRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFVEFJTF9XSElMRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzcwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzcxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzcyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzczKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzczX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTEwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTExLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTExX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTEyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTEzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTcwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTcxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTcyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTczLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTczX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTkwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTkxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTkyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTkzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjExLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjExX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjU0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjU1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjU2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjU3LCBzKSksIHAsIG8sIHMpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDU4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDYxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDY0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDY3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDcwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzcxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDczLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzczX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDc2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDc5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDkxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDk0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDk3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTU4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTYxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTY0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTY3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTcwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTczLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTc2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTc5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTkwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTkxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTkzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTk0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTk3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjAwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjAzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjA2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjA5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjExLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjExX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjU3LCBzKSkKLSMKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2VkZy93aGlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9lZGcvd2hpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTEzMDNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2VkZy93aGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfRURHX1dISUxFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX0VER19XSElMRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzcwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzcxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzcyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzczKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzczX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTExX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTczKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTZfSShwLCBvLCBzKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV80LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV83LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMThfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNThfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDcwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDcxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDcyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDczLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDkwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDkxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDkyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDkzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOThfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTExLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTczLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTkxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOThfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjExX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU3LCBzKSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL21zdmMvd2hpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvbXN2Yy93aGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYzk4NjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvbXN2Yy93aGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfTVNWQ19XSElMRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFVEFJTF9NU1ZDX1dISUxFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV80LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV81LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV82LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV83LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV84LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDksIHMpLCBORE5CT09TVF9QUF9XSElMRV85LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8zOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV80OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBORE5CT09TVF9QUF9XSElMRV82OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDcwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDczLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV83OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDkxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBORE5CT09TVF9QUF9XSElMRV85OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTczLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1NywgcykpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC93aGlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC93aGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZTllZTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvd2hpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX1dISUxFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX1dISUxFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzFfQyhORE5CT09TVF9QUF9CT09MKHAoMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yX0MoTkROQk9PU1RfUFBfQk9PTChwKDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfM19DKE5ETkJPT1NUX1BQX0JPT0wocCg0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzRfQyhORE5CT09TVF9QUF9CT09MKHAoNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81X0MoTkROQk9PU1RfUFBfQk9PTChwKDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNl9DKE5ETkJPT1NUX1BQX0JPT0wocCg3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzdfQyhORE5CT09TVF9QUF9CT09MKHAoOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84X0MoTkROQk9PU1RfUFBfQk9PTChwKDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTBfQyhORE5CT09TVF9QUF9CT09MKHAoMTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTNfQyhORE5CT09TVF9QUF9CT09MKHAoMTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTZfQyhORE5CT09TVF9QUF9CT09MKHAoMTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTlfQyhORE5CT09TVF9QUF9CT09MKHAoMjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjJfQyhORE5CT09TVF9QUF9CT09MKHAoMjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjVfQyhORE5CT09TVF9QUF9CT09MKHAoMjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI2X0MoTkROQk9PU1RfUFBfQk9PTChwKDI3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjhfQyhORE5CT09TVF9QUF9CT09MKHAoMjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI5X0MoTkROQk9PU1RfUFBfQk9PTChwKDMwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgzMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzFfQyhORE5CT09TVF9QUF9CT09MKHAoMzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMyX0MoTkROQk9PU1RfUFBfQk9PTChwKDMzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zM19DKE5ETkJPT1NUX1BQX0JPT0wocCgzNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzRfQyhORE5CT09TVF9QUF9CT09MKHAoMzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM1X0MoTkROQk9PU1RfUFBfQk9PTChwKDM2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgzNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzdfQyhORE5CT09TVF9QUF9CT09MKHAoMzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM4X0MoTkROQk9PU1RfUFBfQk9PTChwKDM5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zOV9DKE5ETkJPT1NUX1BQX0JPT0wocCg0MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDBfQyhORE5CT09TVF9QUF9CT09MKHAoNDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQxX0MoTkROQk9PU1RfUFBfQk9PTChwKDQyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg0MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDNfQyhORE5CT09TVF9QUF9CT09MKHAoNDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ0X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg0NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDZfQyhORE5CT09TVF9QUF9CT09MKHAoNDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ3X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg0OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDlfQyhORE5CT09TVF9QUF9CT09MKHAoNTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUwX0MoTkROQk9PU1RfUFBfQk9PTChwKDUxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg1MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTJfQyhORE5CT09TVF9QUF9CT09MKHAoNTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUzX0MoTkROQk9PU1RfUFBfQk9PTChwKDU0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg1NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTVfQyhORE5CT09TVF9QUF9CT09MKHAoNTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU2X0MoTkROQk9PU1RfUFBfQk9PTChwKDU3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81N19DKE5ETkJPT1NUX1BQX0JPT0wocCg1OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNThfQyhORE5CT09TVF9QUF9CT09MKHAoNTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU5X0MoTkROQk9PU1RfUFBfQk9PTChwKDYwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg2MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjFfQyhORE5CT09TVF9QUF9CT09MKHAoNjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYyX0MoTkROQk9PU1RfUFBfQk9PTChwKDYzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82M19DKE5ETkJPT1NUX1BQX0JPT0wocCg2NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjRfQyhORE5CT09TVF9QUF9CT09MKHAoNjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY1X0MoTkROQk9PU1RfUFBfQk9PTChwKDY2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg2NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjdfQyhORE5CT09TVF9QUF9CT09MKHAoNjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY4X0MoTkROQk9PU1RfUFBfQk9PTChwKDY5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg3MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzBfQyhORE5CT09TVF9QUF9CT09MKHAoNzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzcxX0MoTkROQk9PU1RfUFBfQk9PTChwKDcyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg3MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzNfQyhORE5CT09TVF9QUF9CT09MKHAoNzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc0X0MoTkROQk9PU1RfUFBfQk9PTChwKDc1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg3NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzZfQyhORE5CT09TVF9QUF9CT09MKHAoNzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc3X0MoTkROQk9PU1RfUFBfQk9PTChwKDc4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg3OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzlfQyhORE5CT09TVF9QUF9CT09MKHAoODAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgwX0MoTkROQk9PU1RfUFBfQk9PTChwKDgxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg4MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODJfQyhORE5CT09TVF9QUF9CT09MKHAoODMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgzX0MoTkROQk9PU1RfUFBfQk9PTChwKDg0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg4NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODVfQyhORE5CT09TVF9QUF9CT09MKHAoODYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg2X0MoTkROQk9PU1RfUFBfQk9PTChwKDg3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84N19DKE5ETkJPT1NUX1BQX0JPT0wocCg4OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODhfQyhORE5CT09TVF9QUF9CT09MKHAoODksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg5X0MoTkROQk9PU1RfUFBfQk9PTChwKDkwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg5MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTFfQyhORE5CT09TVF9QUF9CT09MKHAoOTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkyX0MoTkROQk9PU1RfUFBfQk9PTChwKDkzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85M19DKE5ETkJPT1NUX1BQX0JPT0wocCg5NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTRfQyhORE5CT09TVF9QUF9CT09MKHAoOTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk1X0MoTkROQk9PU1RfUFBfQk9PTChwKDk2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg5NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTdfQyhORE5CT09TVF9QUF9CT09MKHAoOTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk4X0MoTkROQk9PU1RfUFBfQk9PTChwKDk5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDBfQyhORE5CT09TVF9QUF9CT09MKHAoMTAxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAxX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDNfQyhORE5CT09TVF9QUF9CT09MKHAoMTA0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA0X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDZfQyhORE5CT09TVF9QUF9CT09MKHAoMTA3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA3X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDlfQyhORE5CT09TVF9QUF9CT09MKHAoMTEwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEwX0MoTkROQk9PU1RfUFBfQk9PTChwKDExMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTJfQyhORE5CT09TVF9QUF9CT09MKHAoMTEzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEzX0MoTkROQk9PU1RfUFBfQk9PTChwKDExNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTVfQyhORE5CT09TVF9QUF9CT09MKHAoMTE2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE2X0MoTkROQk9PU1RfUFBfQk9PTChwKDExNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMThfQyhORE5CT09TVF9QUF9CT09MKHAoMTE5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjFfQyhORE5CT09TVF9QUF9CT09MKHAoMTIyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjRfQyhORE5CT09TVF9QUF9CT09MKHAoMTI1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjdfQyhORE5CT09TVF9QUF9CT09MKHAoMTI4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzBfQyhORE5CT09TVF9QUF9CT09MKHAoMTMxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMxX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzNfQyhORE5CT09TVF9QUF9CT09MKHAoMTM0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM0X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzZfQyhORE5CT09TVF9QUF9CT09MKHAoMTM3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM3X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzlfQyhORE5CT09TVF9QUF9CT09MKHAoMTQwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDJfQyhORE5CT09TVF9QUF9CT09MKHAoMTQzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDVfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDhfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTFfQyhORE5CT09TVF9QUF9CT09MKHAoMTUyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTRfQyhORE5CT09TVF9QUF9CT09MKHAoMTU1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTdfQyhORE5CT09TVF9QUF9CT09MKHAoMTU4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjBfQyhORE5CT09TVF9QUF9CT09MKHAoMTYxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjNfQyhORE5CT09TVF9QUF9CT09MKHAoMTY0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjZfQyhORE5CT09TVF9QUF9CT09MKHAoMTY3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjlfQyhORE5CT09TVF9QUF9CT09MKHAoMTcwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzJfQyhORE5CT09TVF9QUF9CT09MKHAoMTczLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTczX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzVfQyhORE5CT09TVF9QUF9CT09MKHAoMTc2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzhfQyhORE5CT09TVF9QUF9CT09MKHAoMTc5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODFfQyhORE5CT09TVF9QUF9CT09MKHAoMTgyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxODQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODRfQyhORE5CT09TVF9QUF9CT09MKHAoMTg1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODdfQyhORE5CT09TVF9QUF9CT09MKHAoMTg4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTBfQyhORE5CT09TVF9QUF9CT09MKHAoMTkxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTNfQyhORE5CT09TVF9QUF9CT09MKHAoMTk0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTZfQyhORE5CT09TVF9QUF9CT09MKHAoMTk3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTlfQyhORE5CT09TVF9QUF9CT09MKHAoMjAwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDJfQyhORE5CT09TVF9QUF9CT09MKHAoMjAzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDVfQyhORE5CT09TVF9QUF9CT09MKHAoMjA2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDhfQyhORE5CT09TVF9QUF9CT09MKHAoMjA5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTFfQyhORE5CT09TVF9QUF9CT09MKHAoMjEyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTRfQyhORE5CT09TVF9QUF9CT09MKHAoMjE1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTdfQyhORE5CT09TVF9QUF9CT09MKHAoMjE4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjBfQyhORE5CT09TVF9QUF9CT09MKHAoMjIxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjNfQyhORE5CT09TVF9QUF9CT09MKHAoMjI0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjZfQyhORE5CT09TVF9QUF9CT09MKHAoMjI3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjlfQyhORE5CT09TVF9QUF9CT09MKHAoMjMwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzJfQyhORE5CT09TVF9QUF9CT09MKHAoMjMzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzVfQyhORE5CT09TVF9QUF9CT09MKHAoMjM2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzhfQyhORE5CT09TVF9QUF9CT09MKHAoMjM5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM5X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDFfQyhORE5CT09TVF9QUF9CT09MKHAoMjQyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQyX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0M19DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDRfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ1X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDdfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ4X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTBfQyhORE5CT09TVF9QUF9CT09MKHAoMjUxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUxX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTNfQyhORE5CT09TVF9QUF9CT09MKHAoMjU0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU0X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTZfQyhORE5CT09TVF9QUF9CT09MKHAoMjU3LCBzKSksIHAsIG8sIHMpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDczLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzczX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTczLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjExX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU3LCBzKSkKLSMKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTFhMzI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0VYUFJfSUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9FWFBSX0lGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VYUFJfSUYgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lGKGNvbmQsIGV4cHIpIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0JPT0woY29uZCksIGV4cHIpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUYoY29uZCwgZXhwcikgTkROQk9PU1RfUFBfRVhQUl9JRl9JKGNvbmQsIGV4cHIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lGX0koY29uZCwgZXhwcikgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfQk9PTChjb25kKSwgZXhwcikKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYTRhZWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfRVhQUl9JSUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9FWFBSX0lJRl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FWFBSX0lJRiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lJRihiaXQsIGV4cHIpIE5ETkJPT1NUX1BQX0VYUFJfSUlGX0koYml0LCBleHByKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lJRihiaXQsIGV4cHIpIE5ETkJPT1NUX1BQX0VYUFJfSUlGX09PKChiaXQsIGV4cHIpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JSUZfT08ocGFyKSBORE5CT09TVF9QUF9FWFBSX0lJRl9JICMjIHBhcgotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JSUZfSShiaXQsIGV4cHIpIE5ETkJPT1NUX1BQX0VYUFJfSUlGXyAjIyBiaXQoZXhwcikKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUlGXzAoZXhwcikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUlGXzEoZXhwcikgZXhwcgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIyZjFjNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfSUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9JRl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfSUYgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JRihjb25kLCB0LCBmKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfQk9PTChjb25kKSwgdCwgZikKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUYoY29uZCwgdCwgZikgTkROQk9PU1RfUFBfSUZfSShjb25kLCB0LCBmKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUZfSShjb25kLCB0LCBmKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfQk9PTChjb25kKSwgdCwgZikKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNjNmYyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfSUlGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfSUlGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRihiaXQsIHQsIGYpIE5ETkJPT1NUX1BQX0lJRl9JKGJpdCwgdCwgZikKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUlGKGJpdCwgdCwgZikgTkROQk9PU1RfUFBfSUlGX09PKChiaXQsIHQsIGYpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUlGX09PKHBhcikgTkROQk9PU1RfUFBfSUlGX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRl9JKGJpdCwgdCwgZikgTkROQk9PU1RfUFBfSUlGXyAjIyBiaXQodCwgZikKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUlGX0koYml0LCB0LCBmKSBORE5CT09TVF9QUF9JSUZfSUkoTkROQk9PU1RfUFBfSUlGXyAjIyBiaXQodCwgZikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JSUZfSUkoaWQpIGlkCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JSUZfMCh0LCBmKSBmCi0jIGRlZmluZSBORE5CT09TVF9QUF9JSUZfMSh0LCBmKSB0Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTNjMzk4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEyICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfV0hJTEVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9XSElMRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfbGVmdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfcmlnaHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9iaXRhbmQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9XSElMRSAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9XSElMRShwcmVkLCBvcCwgc3RhdGUpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfV0hJTEVfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9XSElMRV9QLCAyNTYpKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfUChuKSBORE5CT09TVF9QUF9CSVRBTkQoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLXywgTkROQk9PU1RfUFBfV0hJTEVfICMjIG4oTkROQk9PU1RfUFBfV0hJTEVfRiwgTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwpKSwgTkROQk9PU1RfUFBfQklUQU5EKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS18sIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXyAjIyBuKE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwpKSwgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS18sIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8gIyMgbihORE5CT09TVF9QUF9OSUwsIE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMKSkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9QKG4pIE5ETkJPT1NUX1BQX0JJVEFORChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfLCBORE5CT09TVF9QUF9XSElMRV8gIyMgbihORE5CT09TVF9QUF9XSElMRV9GLCBORE5CT09TVF9QUF9OSUwsIE5ETkJPT1NUX1BQX05JTCkpLCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8gIyMgbihORE5CT09TVF9QUF9OSUwsIE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMKSkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9GKGQsIF8pIDAKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2VkZy93aGlsZS5ocHA+Ci0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9tc3ZjL3doaWxlLmhwcD4KLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19ETUMoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZG1jL3doaWxlLmhwcD4KLSMgZWxzZQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvd2hpbGUuaHBwPgotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX05JTCAxCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV80OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV81OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV83OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV84OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTAxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTA0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTA3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTEwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTEzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTE2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTE5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTIyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTI1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTI4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTMxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTM0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTM3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQ2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQ5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTUyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTU1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTU4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTYxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTY0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTY3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTcwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTczKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTc2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTc5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTgyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTg1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTg4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTkxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTk0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTk3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjAwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjAzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjA2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjA5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjEyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjE1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjE4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjIxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjI0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjI3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjMwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjMzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjM2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjM5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQ1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQ4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNTAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjUxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNTMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjU0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNTYocCwgbywgcykgMAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWYxMzU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVCVUdfRVJST1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVCVUdfRVJST1JfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VSUk9SICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19FUlJPUlMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SKGNvZGUpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9FUlJPUl8sIGNvZGUpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FUlJPUl8weDAwMDAgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAwLCBORE5CT09TVF9QUF9JTkRFWF9PVVRfT0ZfQk9VTkRTKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1JfMHgwMDAxIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMSwgTkROQk9PU1RfUFBfV0hJTEVfT1ZFUkZMT1cpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FUlJPUl8weDAwMDIgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAyLCBORE5CT09TVF9QUF9GT1JfT1ZFUkZMT1cpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FUlJPUl8weDAwMDMgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAzLCBORE5CT09TVF9QUF9SRVBFQVRfT1ZFUkZMT1cpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FUlJPUl8weDAwMDQgTkROQk9PU1RfUFBfRVJST1IoMHgwMDA0LCBORE5CT09TVF9QUF9MSVNUX0ZPTERfT1ZFUkZMT1cpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FUlJPUl8weDAwMDUgTkROQk9PU1RfUFBfRVJST1IoMHgwMDA1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwNiBORE5CT09TVF9QUF9FUlJPUigweDAwMDYsIE5ETkJPT1NUX1BQX0FSSVRITUVUSUNfT1ZFUkZMT1cpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FUlJPUl8weDAwMDcgTkROQk9PU1RfUFBfRVJST1IoMHgwMDA3LCBORE5CT09TVF9QUF9ESVZJU0lPTl9CWV9aRVJPKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0OGU3MzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVDX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFQ19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmY0YWNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19ETUMoKQotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9kbWMvYXV0b19yZWMuaHBwPgotIyBlbHNlCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0FVVE9fUkVDX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9BVVRPX1JFQ19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQVVUT19SRUMgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FVVE9fUkVDKHByZWQsIG4pIE5ETkJPT1NUX1BQX05PREVfRU5UUllfICMjIG4ocHJlZCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMjU2KHApIE5ETkJPT1NUX1BQX05PREVfMTI4KHApKHApKHApKHApKHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzEyOChwKSBORE5CT09TVF9QUF9OT0RFXzY0KHApKHApKHApKHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzY0KHApIE5ETkJPT1NUX1BQX05PREVfMzIocCkocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMzIocCkgTkROQk9PU1RfUFBfTk9ERV8xNihwKShwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8xNihwKSBORE5CT09TVF9QUF9OT0RFXzgocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfOChwKSBORE5CT09TVF9QUF9OT0RFXzQocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfNChwKSBORE5CT09TVF9QUF9OT0RFXzIocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMihwKSBORE5CT09TVF9QUF9OT0RFXzEocCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI4KHApIE5ETkJPT1NUX1BQX0lJRihwKDEyOCksIE5ETkJPT1NUX1BQX05PREVfNjQsIE5ETkJPT1NUX1BQX05PREVfMTkyKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82NChwKSBORE5CT09TVF9QUF9JSUYocCg2NCksIE5ETkJPT1NUX1BQX05PREVfMzIsIE5ETkJPT1NUX1BQX05PREVfOTYpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zMihwKSBORE5CT09TVF9QUF9JSUYocCgzMiksIE5ETkJPT1NUX1BQX05PREVfMTYsIE5ETkJPT1NUX1BQX05PREVfNDgpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTYpLCBORE5CT09TVF9QUF9OT0RFXzgsIE5ETkJPT1NUX1BQX05PREVfMjQpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgocCkgTkROQk9PU1RfUFBfSUlGKHAoOCksIE5ETkJPT1NUX1BQX05PREVfNCwgTkROQk9PU1RfUFBfTk9ERV8xMikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQocCkgTkROQk9PU1RfUFBfSUlGKHAoNCksIE5ETkJPT1NUX1BQX05PREVfMiwgTkROQk9PU1RfUFBfTk9ERV82KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIocCkgTkROQk9PU1RfUFBfSUlGKHAoMiksIE5ETkJPT1NUX1BQX05PREVfMSwgTkROQk9PU1RfUFBfTk9ERV8zKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xKHApIE5ETkJPT1NUX1BQX0lJRihwKDEpLCAxLCAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zKHApIE5ETkJPT1NUX1BQX0lJRihwKDMpLCAzLCA0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYocCkgTkROQk9PU1RfUFBfSUlGKHAoNiksIE5ETkJPT1NUX1BQX05PREVfNSwgTkROQk9PU1RfUFBfTk9ERV83KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81KHApIE5ETkJPT1NUX1BQX0lJRihwKDUpLCA1LCA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83KHApIE5ETkJPT1NUX1BQX0lJRihwKDcpLCA3LCA4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTIpLCBORE5CT09TVF9QUF9OT0RFXzEwLCBORE5CT09TVF9QUF9OT0RFXzE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwKHApIE5ETkJPT1NUX1BQX0lJRihwKDEwKSwgTkROQk9PU1RfUFBfTk9ERV85LCBORE5CT09TVF9QUF9OT0RFXzExKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85KHApIE5ETkJPT1NUX1BQX0lJRihwKDkpLCA5LCAxMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTEpLCAxMSwgMTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQpLCBORE5CT09TVF9QUF9OT0RFXzEzLCBORE5CT09TVF9QUF9OT0RFXzE1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMyhwKSBORE5CT09TVF9QUF9JSUYocCgxMyksIDEzLCAxNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTUpLCAxNSwgMTYpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0KHApIE5ETkJPT1NUX1BQX0lJRihwKDI0KSwgTkROQk9PU1RfUFBfTk9ERV8yMCwgTkROQk9PU1RfUFBfTk9ERV8yOCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwKHApIE5ETkJPT1NUX1BQX0lJRihwKDIwKSwgTkROQk9PU1RfUFBfTk9ERV8xOCwgTkROQk9PU1RfUFBfTk9ERV8yMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOChwKSBORE5CT09TVF9QUF9JSUYocCgxOCksIE5ETkJPT1NUX1BQX05PREVfMTcsIE5ETkJPT1NUX1BQX05PREVfMTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3KHApIE5ETkJPT1NUX1BQX0lJRihwKDE3KSwgMTcsIDE4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOShwKSBORE5CT09TVF9QUF9JSUYocCgxOSksIDE5LCAyMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMihwKSBORE5CT09TVF9QUF9JSUYocCgyMiksIE5ETkJPT1NUX1BQX05PREVfMjEsIE5ETkJPT1NUX1BQX05PREVfMjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxKHApIE5ETkJPT1NUX1BQX0lJRihwKDIxKSwgMjEsIDIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMyhwKSBORE5CT09TVF9QUF9JSUYocCgyMyksIDIzLCAyNCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI4KHApIE5ETkJPT1NUX1BQX0lJRihwKDI4KSwgTkROQk9PU1RfUFBfTk9ERV8yNiwgTkROQk9PU1RfUFBfTk9ERV8zMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNihwKSBORE5CT09TVF9QUF9JSUYocCgyNiksIE5ETkJPT1NUX1BQX05PREVfMjUsIE5ETkJPT1NUX1BQX05PREVfMjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1KHApIE5ETkJPT1NUX1BQX0lJRihwKDI1KSwgMjUsIDI2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNyhwKSBORE5CT09TVF9QUF9JSUYocCgyNyksIDI3LCAyOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zMChwKSBORE5CT09TVF9QUF9JSUYocCgzMCksIE5ETkJPT1NUX1BQX05PREVfMjksIE5ETkJPT1NUX1BQX05PREVfMzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI5KHApIE5ETkJPT1NUX1BQX0lJRihwKDI5KSwgMjksIDMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zMShwKSBORE5CT09TVF9QUF9JSUYocCgzMSksIDMxLCAzMikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80OChwKSBORE5CT09TVF9QUF9JSUYocCg0OCksIE5ETkJPT1NUX1BQX05PREVfNDAsIE5ETkJPT1NUX1BQX05PREVfNTYpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQwKHApIE5ETkJPT1NUX1BQX0lJRihwKDQwKSwgTkROQk9PU1RfUFBfTk9ERV8zNiwgTkROQk9PU1RfUFBfTk9ERV80NCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM2KHApIE5ETkJPT1NUX1BQX0lJRihwKDM2KSwgTkROQk9PU1RfUFBfTk9ERV8zNCwgTkROQk9PU1RfUFBfTk9ERV8zOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zNChwKSBORE5CT09TVF9QUF9JSUYocCgzNCksIE5ETkJPT1NUX1BQX05PREVfMzMsIE5ETkJPT1NUX1BQX05PREVfMzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMzKHApIE5ETkJPT1NUX1BQX0lJRihwKDMzKSwgMzMsIDM0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zNShwKSBORE5CT09TVF9QUF9JSUYocCgzNSksIDM1LCAzNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zOChwKSBORE5CT09TVF9QUF9JSUYocCgzOCksIE5ETkJPT1NUX1BQX05PREVfMzcsIE5ETkJPT1NUX1BQX05PREVfMzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM3KHApIE5ETkJPT1NUX1BQX0lJRihwKDM3KSwgMzcsIDM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zOShwKSBORE5CT09TVF9QUF9JSUYocCgzOSksIDM5LCA0MCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ0KHApIE5ETkJPT1NUX1BQX0lJRihwKDQ0KSwgTkROQk9PU1RfUFBfTk9ERV80MiwgTkROQk9PU1RfUFBfTk9ERV80NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80MihwKSBORE5CT09TVF9QUF9JSUYocCg0MiksIE5ETkJPT1NUX1BQX05PREVfNDEsIE5ETkJPT1NUX1BQX05PREVfNDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQxKHApIE5ETkJPT1NUX1BQX0lJRihwKDQxKSwgNDEsIDQyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80MyhwKSBORE5CT09TVF9QUF9JSUYocCg0MyksIDQzLCA0NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80NihwKSBORE5CT09TVF9QUF9JSUYocCg0NiksIE5ETkJPT1NUX1BQX05PREVfNDUsIE5ETkJPT1NUX1BQX05PREVfNDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ1KHApIE5ETkJPT1NUX1BQX0lJRihwKDQ1KSwgNDUsIDQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80NyhwKSBORE5CT09TVF9QUF9JSUYocCg0NyksIDQ3LCA0OCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTYocCkgTkROQk9PU1RfUFBfSUlGKHAoNTYpLCBORE5CT09TVF9QUF9OT0RFXzUyLCBORE5CT09TVF9QUF9OT0RFXzYwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTIocCkgTkROQk9PU1RfUFBfSUlGKHAoNTIpLCBORE5CT09TVF9QUF9OT0RFXzUwLCBORE5CT09TVF9QUF9OT0RFXzU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUwKHApIE5ETkJPT1NUX1BQX0lJRihwKDUwKSwgTkROQk9PU1RfUFBfTk9ERV80OSwgTkROQk9PU1RfUFBfTk9ERV81MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDkocCkgTkROQk9PU1RfUFBfSUlGKHAoNDkpLCA0OSwgNTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUxKHApIE5ETkJPT1NUX1BQX0lJRihwKDUxKSwgNTEsIDUyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU0KHApIE5ETkJPT1NUX1BQX0lJRihwKDU0KSwgTkROQk9PU1RfUFBfTk9ERV81MywgTkROQk9PU1RfUFBfTk9ERV81NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTMocCkgTkROQk9PU1RfUFBfSUlGKHAoNTMpLCA1MywgNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU1KHApIE5ETkJPT1NUX1BQX0lJRihwKDU1KSwgNTUsIDU2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjAocCkgTkROQk9PU1RfUFBfSUlGKHAoNjApLCBORE5CT09TVF9QUF9OT0RFXzU4LCBORE5CT09TVF9QUF9OT0RFXzYyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU4KHApIE5ETkJPT1NUX1BQX0lJRihwKDU4KSwgTkROQk9PU1RfUFBfTk9ERV81NywgTkROQk9PU1RfUFBfTk9ERV81OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTcocCkgTkROQk9PU1RfUFBfSUlGKHAoNTcpLCA1NywgNTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU5KHApIE5ETkJPT1NUX1BQX0lJRihwKDU5KSwgNTksIDYwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYyKHApIE5ETkJPT1NUX1BQX0lJRihwKDYyKSwgTkROQk9PU1RfUFBfTk9ERV82MSwgTkROQk9PU1RfUFBfTk9ERV82MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjEocCkgTkROQk9PU1RfUFBfSUlGKHAoNjEpLCA2MSwgNjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYzKHApIE5ETkJPT1NUX1BQX0lJRihwKDYzKSwgNjMsIDY0KQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTYocCkgTkROQk9PU1RfUFBfSUlGKHAoOTYpLCBORE5CT09TVF9QUF9OT0RFXzgwLCBORE5CT09TVF9QUF9OT0RFXzExMikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84MChwKSBORE5CT09TVF9QUF9JSUYocCg4MCksIE5ETkJPT1NUX1BQX05PREVfNzIsIE5ETkJPT1NUX1BQX05PREVfODgpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcyKHApIE5ETkJPT1NUX1BQX0lJRihwKDcyKSwgTkROQk9PU1RfUFBfTk9ERV82OCwgTkROQk9PU1RfUFBfTk9ERV83NikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY4KHApIE5ETkJPT1NUX1BQX0lJRihwKDY4KSwgTkROQk9PU1RfUFBfTk9ERV82NiwgTkROQk9PU1RfUFBfTk9ERV83MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82NihwKSBORE5CT09TVF9QUF9JSUYocCg2NiksIE5ETkJPT1NUX1BQX05PREVfNjUsIE5ETkJPT1NUX1BQX05PREVfNjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY1KHApIE5ETkJPT1NUX1BQX0lJRihwKDY1KSwgNjUsIDY2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82NyhwKSBORE5CT09TVF9QUF9JSUYocCg2NyksIDY3LCA2OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83MChwKSBORE5CT09TVF9QUF9JSUYocCg3MCksIE5ETkJPT1NUX1BQX05PREVfNjksIE5ETkJPT1NUX1BQX05PREVfNzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY5KHApIE5ETkJPT1NUX1BQX0lJRihwKDY5KSwgNjksIDcwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83MShwKSBORE5CT09TVF9QUF9JSUYocCg3MSksIDcxLCA3MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc2KHApIE5ETkJPT1NUX1BQX0lJRihwKDc2KSwgTkROQk9PU1RfUFBfTk9ERV83NCwgTkROQk9PU1RfUFBfTk9ERV83OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83NChwKSBORE5CT09TVF9QUF9JSUYocCg3NCksIE5ETkJPT1NUX1BQX05PREVfNzMsIE5ETkJPT1NUX1BQX05PREVfNzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzczKHApIE5ETkJPT1NUX1BQX0lJRihwKDczKSwgNzMsIDc0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83NShwKSBORE5CT09TVF9QUF9JSUYocCg3NSksIDc1LCA3NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83OChwKSBORE5CT09TVF9QUF9JSUYocCg3OCksIE5ETkJPT1NUX1BQX05PREVfNzcsIE5ETkJPT1NUX1BQX05PREVfNzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc3KHApIE5ETkJPT1NUX1BQX0lJRihwKDc3KSwgNzcsIDc4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83OShwKSBORE5CT09TVF9QUF9JSUYocCg3OSksIDc5LCA4MCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODgocCkgTkROQk9PU1RfUFBfSUlGKHAoODgpLCBORE5CT09TVF9QUF9OT0RFXzg0LCBORE5CT09TVF9QUF9OT0RFXzkyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODQocCkgTkROQk9PU1RfUFBfSUlGKHAoODQpLCBORE5CT09TVF9QUF9OT0RFXzgyLCBORE5CT09TVF9QUF9OT0RFXzg2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgyKHApIE5ETkJPT1NUX1BQX0lJRihwKDgyKSwgTkROQk9PU1RfUFBfTk9ERV84MSwgTkROQk9PU1RfUFBfTk9ERV84MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODEocCkgTkROQk9PU1RfUFBfSUlGKHAoODEpLCA4MSwgODIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgzKHApIE5ETkJPT1NUX1BQX0lJRihwKDgzKSwgODMsIDg0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg2KHApIE5ETkJPT1NUX1BQX0lJRihwKDg2KSwgTkROQk9PU1RfUFBfTk9ERV84NSwgTkROQk9PU1RfUFBfTk9ERV84NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODUocCkgTkROQk9PU1RfUFBfSUlGKHAoODUpLCA4NSwgODYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg3KHApIE5ETkJPT1NUX1BQX0lJRihwKDg3KSwgODcsIDg4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTIocCkgTkROQk9PU1RfUFBfSUlGKHAoOTIpLCBORE5CT09TVF9QUF9OT0RFXzkwLCBORE5CT09TVF9QUF9OT0RFXzk0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkwKHApIE5ETkJPT1NUX1BQX0lJRihwKDkwKSwgTkROQk9PU1RfUFBfTk9ERV84OSwgTkROQk9PU1RfUFBfTk9ERV85MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODkocCkgTkROQk9PU1RfUFBfSUlGKHAoODkpLCA4OSwgOTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkxKHApIE5ETkJPT1NUX1BQX0lJRihwKDkxKSwgOTEsIDkyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk0KHApIE5ETkJPT1NUX1BQX0lJRihwKDk0KSwgTkROQk9PU1RfUFBfTk9ERV85MywgTkROQk9PU1RfUFBfTk9ERV85NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTMocCkgTkROQk9PU1RfUFBfSUlGKHAoOTMpLCA5MywgOTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk1KHApIE5ETkJPT1NUX1BQX0lJRihwKDk1KSwgOTUsIDk2KQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExMihwKSBORE5CT09TVF9QUF9JSUYocCgxMTIpLCBORE5CT09TVF9QUF9OT0RFXzEwNCwgTkROQk9PU1RfUFBfTk9ERV8xMjApCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNChwKSBORE5CT09TVF9QUF9JSUYocCgxMDQpLCBORE5CT09TVF9QUF9OT0RFXzEwMCwgTkROQk9PU1RfUFBfTk9ERV8xMDgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTAwKSwgTkROQk9PU1RfUFBfTk9ERV85OCwgTkROQk9PU1RfUFBfTk9ERV8xMDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTgocCkgTkROQk9PU1RfUFBfSUlGKHAoOTgpLCBORE5CT09TVF9QUF9OT0RFXzk3LCBORE5CT09TVF9QUF9OT0RFXzk5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NyhwKSBORE5CT09TVF9QUF9JSUYocCg5NyksIDk3LCA5OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTkocCkgTkROQk9PU1RfUFBfSUlGKHAoOTkpLCA5OSwgMTAwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMihwKSBORE5CT09TVF9QUF9JSUYocCgxMDIpLCBORE5CT09TVF9QUF9OT0RFXzEwMSwgTkROQk9PU1RfUFBfTk9ERV8xMDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMShwKSBORE5CT09TVF9QUF9JSUYocCgxMDEpLCAxMDEsIDEwMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAzKHApIE5ETkJPT1NUX1BQX0lJRihwKDEwMyksIDEwMywgMTA0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA4KHApIE5ETkJPT1NUX1BQX0lJRihwKDEwOCksIE5ETkJPT1NUX1BQX05PREVfMTA2LCBORE5CT09TVF9QUF9OT0RFXzExMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTA2KSwgTkROQk9PU1RfUFBfTk9ERV8xMDUsIE5ETkJPT1NUX1BQX05PREVfMTA3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTA1KSwgMTA1LCAxMDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNyhwKSBORE5CT09TVF9QUF9JSUYocCgxMDcpLCAxMDcsIDEwOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTEwKSwgTkROQk9PU1RfUFBfTk9ERV8xMDksIE5ETkJPT1NUX1BQX05PREVfMTExKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTA5KSwgMTA5LCAxMTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExMShwKSBORE5CT09TVF9QUF9JSUYocCgxMTEpLCAxMTEsIDExMikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIwKHApIE5ETkJPT1NUX1BQX0lJRihwKDEyMCksIE5ETkJPT1NUX1BQX05PREVfMTE2LCBORE5CT09TVF9QUF9OT0RFXzEyNCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNihwKSBORE5CT09TVF9QUF9JSUYocCgxMTYpLCBORE5CT09TVF9QUF9OT0RFXzExNCwgTkROQk9PU1RfUFBfTk9ERV8xMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE0KHApIE5ETkJPT1NUX1BQX0lJRihwKDExNCksIE5ETkJPT1NUX1BQX05PREVfMTEzLCBORE5CT09TVF9QUF9OT0RFXzExNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTEzKHApIE5ETkJPT1NUX1BQX0lJRihwKDExMyksIDExMywgMTE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTE1KSwgMTE1LCAxMTYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE4KHApIE5ETkJPT1NUX1BQX0lJRihwKDExOCksIE5ETkJPT1NUX1BQX05PREVfMTE3LCBORE5CT09TVF9QUF9OT0RFXzExOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE3KHApIE5ETkJPT1NUX1BQX0lJRihwKDExNyksIDExNywgMTE4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTE5KSwgMTE5LCAxMjApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTI0KSwgTkROQk9PU1RfUFBfTk9ERV8xMjIsIE5ETkJPT1NUX1BQX05PREVfMTI2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyMihwKSBORE5CT09TVF9QUF9JSUYocCgxMjIpLCBORE5CT09TVF9QUF9OT0RFXzEyMSwgTkROQk9PU1RfUFBfTk9ERV8xMjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyMShwKSBORE5CT09TVF9QUF9JSUYocCgxMjEpLCAxMjEsIDEyMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIzKHApIE5ETkJPT1NUX1BQX0lJRihwKDEyMyksIDEyMywgMTI0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNihwKSBORE5CT09TVF9QUF9JSUYocCgxMjYpLCBORE5CT09TVF9QUF9OT0RFXzEyNSwgTkROQk9PU1RfUFBfTk9ERV8xMjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNShwKSBORE5CT09TVF9QUF9JSUYocCgxMjUpLCAxMjUsIDEyNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI3KHApIE5ETkJPT1NUX1BQX0lJRihwKDEyNyksIDEyNywgMTI4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTkyKSwgTkROQk9PU1RfUFBfTk9ERV8xNjAsIE5ETkJPT1NUX1BQX05PREVfMjI0KQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYwKHApIE5ETkJPT1NUX1BQX0lJRihwKDE2MCksIE5ETkJPT1NUX1BQX05PREVfMTQ0LCBORE5CT09TVF9QUF9OT0RFXzE3NikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQ0KSwgTkROQk9PU1RfUFBfTk9ERV8xMzYsIE5ETkJPT1NUX1BQX05PREVfMTUyKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTM2KSwgTkROQk9PU1RfUFBfTk9ERV8xMzIsIE5ETkJPT1NUX1BQX05PREVfMTQwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMyKHApIE5ETkJPT1NUX1BQX0lJRihwKDEzMiksIE5ETkJPT1NUX1BQX05PREVfMTMwLCBORE5CT09TVF9QUF9OT0RFXzEzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTMwKSwgTkROQk9PU1RfUFBfTk9ERV8xMjksIE5ETkJPT1NUX1BQX05PREVfMTMxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTI5KSwgMTI5LCAxMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzMShwKSBORE5CT09TVF9QUF9JSUYocCgxMzEpLCAxMzEsIDEzMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTM0KSwgTkROQk9PU1RfUFBfTk9ERV8xMzMsIE5ETkJPT1NUX1BQX05PREVfMTM1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTMzKSwgMTMzLCAxMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzNShwKSBORE5CT09TVF9QUF9JSUYocCgxMzUpLCAxMzUsIDEzNikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0MChwKSBORE5CT09TVF9QUF9JSUYocCgxNDApLCBORE5CT09TVF9QUF9OT0RFXzEzOCwgTkROQk9PU1RfUFBfTk9ERV8xNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM4KHApIE5ETkJPT1NUX1BQX0lJRihwKDEzOCksIE5ETkJPT1NUX1BQX05PREVfMTM3LCBORE5CT09TVF9QUF9OT0RFXzEzOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM3KHApIE5ETkJPT1NUX1BQX0lJRihwKDEzNyksIDEzNywgMTM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTM5KSwgMTM5LCAxNDApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQyKHApIE5ETkJPT1NUX1BQX0lJRihwKDE0MiksIE5ETkJPT1NUX1BQX05PREVfMTQxLCBORE5CT09TVF9QUF9OT0RFXzE0MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQxKHApIE5ETkJPT1NUX1BQX0lJRihwKDE0MSksIDE0MSwgMTQyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQzKSwgMTQzLCAxNDQpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MihwKSBORE5CT09TVF9QUF9JSUYocCgxNTIpLCBORE5CT09TVF9QUF9OT0RFXzE0OCwgTkROQk9PU1RfUFBfTk9ERV8xNTYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQ4KSwgTkROQk9PU1RfUFBfTk9ERV8xNDYsIE5ETkJPT1NUX1BQX05PREVfMTUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0NihwKSBORE5CT09TVF9QUF9JSUYocCgxNDYpLCBORE5CT09TVF9QUF9OT0RFXzE0NSwgTkROQk9PU1RfUFBfTk9ERV8xNDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0NShwKSBORE5CT09TVF9QUF9JSUYocCgxNDUpLCAxNDUsIDE0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ3KHApIE5ETkJPT1NUX1BQX0lJRihwKDE0NyksIDE0NywgMTQ4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MChwKSBORE5CT09TVF9QUF9JSUYocCgxNTApLCBORE5CT09TVF9QUF9OT0RFXzE0OSwgTkROQk9PU1RfUFBfTk9ERV8xNTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0OShwKSBORE5CT09TVF9QUF9JSUYocCgxNDkpLCAxNDksIDE1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUxKHApIE5ETkJPT1NUX1BQX0lJRihwKDE1MSksIDE1MSwgMTUyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU2KHApIE5ETkJPT1NUX1BQX0lJRihwKDE1NiksIE5ETkJPT1NUX1BQX05PREVfMTU0LCBORE5CT09TVF9QUF9OT0RFXzE1OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTU0KSwgTkROQk9PU1RfUFBfTk9ERV8xNTMsIE5ETkJPT1NUX1BQX05PREVfMTU1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTUzKSwgMTUzLCAxNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NShwKSBORE5CT09TVF9QUF9JSUYocCgxNTUpLCAxNTUsIDE1NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTU4KSwgTkROQk9PU1RfUFBfTk9ERV8xNTcsIE5ETkJPT1NUX1BQX05PREVfMTU5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTU3KSwgMTU3LCAxNTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1OShwKSBORE5CT09TVF9QUF9JSUYocCgxNTkpLCAxNTksIDE2MCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTc2KSwgTkROQk9PU1RfUFBfTk9ERV8xNjgsIE5ETkJPT1NUX1BQX05PREVfMTg0KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTY4KSwgTkROQk9PU1RfUFBfTk9ERV8xNjQsIE5ETkJPT1NUX1BQX05PREVfMTcyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY0KHApIE5ETkJPT1NUX1BQX0lJRihwKDE2NCksIE5ETkJPT1NUX1BQX05PREVfMTYyLCBORE5CT09TVF9QUF9OT0RFXzE2NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTYyKSwgTkROQk9PU1RfUFBfTk9ERV8xNjEsIE5ETkJPT1NUX1BQX05PREVfMTYzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTYxKSwgMTYxLCAxNjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MyhwKSBORE5CT09TVF9QUF9JSUYocCgxNjMpLCAxNjMsIDE2NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTY2KSwgTkROQk9PU1RfUFBfTk9ERV8xNjUsIE5ETkJPT1NUX1BQX05PREVfMTY3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTY1KSwgMTY1LCAxNjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NyhwKSBORE5CT09TVF9QUF9JSUYocCgxNjcpLCAxNjcsIDE2OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MihwKSBORE5CT09TVF9QUF9JSUYocCgxNzIpLCBORE5CT09TVF9QUF9OT0RFXzE3MCwgTkROQk9PU1RfUFBfTk9ERV8xNzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTcwKHApIE5ETkJPT1NUX1BQX0lJRihwKDE3MCksIE5ETkJPT1NUX1BQX05PREVfMTY5LCBORE5CT09TVF9QUF9OT0RFXzE3MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY5KHApIE5ETkJPT1NUX1BQX0lJRihwKDE2OSksIDE2OSwgMTcwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTcxKSwgMTcxLCAxNzIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc0KHApIE5ETkJPT1NUX1BQX0lJRihwKDE3NCksIE5ETkJPT1NUX1BQX05PREVfMTczLCBORE5CT09TVF9QUF9OT0RFXzE3NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTczKHApIE5ETkJPT1NUX1BQX0lJRihwKDE3MyksIDE3MywgMTc0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTc1KSwgMTc1LCAxNzYpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NChwKSBORE5CT09TVF9QUF9JSUYocCgxODQpLCBORE5CT09TVF9QUF9OT0RFXzE4MCwgTkROQk9PU1RfUFBfTk9ERV8xODgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTgwKSwgTkROQk9PU1RfUFBfTk9ERV8xNzgsIE5ETkJPT1NUX1BQX05PREVfMTgyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3OChwKSBORE5CT09TVF9QUF9JSUYocCgxNzgpLCBORE5CT09TVF9QUF9OT0RFXzE3NywgTkROQk9PU1RfUFBfTk9ERV8xNzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3NyhwKSBORE5CT09TVF9QUF9JSUYocCgxNzcpLCAxNzcsIDE3OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc5KHApIE5ETkJPT1NUX1BQX0lJRihwKDE3OSksIDE3OSwgMTgwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MihwKSBORE5CT09TVF9QUF9JSUYocCgxODIpLCBORE5CT09TVF9QUF9OT0RFXzE4MSwgTkROQk9PU1RfUFBfTk9ERV8xODMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MShwKSBORE5CT09TVF9QUF9JSUYocCgxODEpLCAxODEsIDE4MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgzKHApIE5ETkJPT1NUX1BQX0lJRihwKDE4MyksIDE4MywgMTg0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg4KHApIE5ETkJPT1NUX1BQX0lJRihwKDE4OCksIE5ETkJPT1NUX1BQX05PREVfMTg2LCBORE5CT09TVF9QUF9OT0RFXzE5MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTg2KSwgTkROQk9PU1RfUFBfTk9ERV8xODUsIE5ETkJPT1NUX1BQX05PREVfMTg3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTg1KSwgMTg1LCAxODYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NyhwKSBORE5CT09TVF9QUF9JSUYocCgxODcpLCAxODcsIDE4OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTkwKSwgTkROQk9PU1RfUFBfTk9ERV8xODksIE5ETkJPT1NUX1BQX05PREVfMTkxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTg5KSwgMTg5LCAxOTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MShwKSBORE5CT09TVF9QUF9JSUYocCgxOTEpLCAxOTEsIDE5MikKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyNChwKSBORE5CT09TVF9QUF9JSUYocCgyMjQpLCBORE5CT09TVF9QUF9OT0RFXzIwOCwgTkROQk9PU1RfUFBfTk9ERV8yNDApCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA4KHApIE5ETkJPT1NUX1BQX0lJRihwKDIwOCksIE5ETkJPT1NUX1BQX05PREVfMjAwLCBORE5CT09TVF9QUF9OT0RFXzIxNikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAwKHApIE5ETkJPT1NUX1BQX0lJRihwKDIwMCksIE5ETkJPT1NUX1BQX05PREVfMTk2LCBORE5CT09TVF9QUF9OT0RFXzIwNCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NihwKSBORE5CT09TVF9QUF9JSUYocCgxOTYpLCBORE5CT09TVF9QUF9OT0RFXzE5NCwgTkROQk9PU1RfUFBfTk9ERV8xOTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk0KHApIE5ETkJPT1NUX1BQX0lJRihwKDE5NCksIE5ETkJPT1NUX1BQX05PREVfMTkzLCBORE5CT09TVF9QUF9OT0RFXzE5NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkzKHApIE5ETkJPT1NUX1BQX0lJRihwKDE5MyksIDE5MywgMTk0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTUocCkgTkROQk9PU1RfUFBfSUlGKHAoMTk1KSwgMTk1LCAxOTYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk4KHApIE5ETkJPT1NUX1BQX0lJRihwKDE5OCksIE5ETkJPT1NUX1BQX05PREVfMTk3LCBORE5CT09TVF9QUF9OT0RFXzE5OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk3KHApIE5ETkJPT1NUX1BQX0lJRihwKDE5NyksIDE5NywgMTk4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTk5KSwgMTk5LCAyMDApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDQocCkgTkROQk9PU1RfUFBfSUlGKHAoMjA0KSwgTkROQk9PU1RfUFBfTk9ERV8yMDIsIE5ETkJPT1NUX1BQX05PREVfMjA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwMihwKSBORE5CT09TVF9QUF9JSUYocCgyMDIpLCBORE5CT09TVF9QUF9OT0RFXzIwMSwgTkROQk9PU1RfUFBfTk9ERV8yMDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwMShwKSBORE5CT09TVF9QUF9JSUYocCgyMDEpLCAyMDEsIDIwMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAzKHApIE5ETkJPT1NUX1BQX0lJRihwKDIwMyksIDIwMywgMjA0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNihwKSBORE5CT09TVF9QUF9JSUYocCgyMDYpLCBORE5CT09TVF9QUF9OT0RFXzIwNSwgTkROQk9PU1RfUFBfTk9ERV8yMDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNShwKSBORE5CT09TVF9QUF9JSUYocCgyMDUpLCAyMDUsIDIwNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA3KHApIE5ETkJPT1NUX1BQX0lJRihwKDIwNyksIDIwNywgMjA4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTYocCkgTkROQk9PU1RfUFBfSUlGKHAoMjE2KSwgTkROQk9PU1RfUFBfTk9ERV8yMTIsIE5ETkJPT1NUX1BQX05PREVfMjIwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjEyKHApIE5ETkJPT1NUX1BQX0lJRihwKDIxMiksIE5ETkJPT1NUX1BQX05PREVfMjEwLCBORE5CT09TVF9QUF9OT0RFXzIxNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjEwKSwgTkROQk9PU1RfUFBfTk9ERV8yMDksIE5ETkJPT1NUX1BQX05PREVfMjExKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDkocCkgTkROQk9PU1RfUFBfSUlGKHAoMjA5KSwgMjA5LCAyMTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxMShwKSBORE5CT09TVF9QUF9JSUYocCgyMTEpLCAyMTEsIDIxMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTQocCkgTkROQk9PU1RfUFBfSUlGKHAoMjE0KSwgTkROQk9PU1RfUFBfTk9ERV8yMTMsIE5ETkJPT1NUX1BQX05PREVfMjE1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTMocCkgTkROQk9PU1RfUFBfSUlGKHAoMjEzKSwgMjEzLCAyMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxNShwKSBORE5CT09TVF9QUF9JSUYocCgyMTUpLCAyMTUsIDIxNikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyMChwKSBORE5CT09TVF9QUF9JSUYocCgyMjApLCBORE5CT09TVF9QUF9OT0RFXzIxOCwgTkROQk9PU1RfUFBfTk9ERV8yMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE4KHApIE5ETkJPT1NUX1BQX0lJRihwKDIxOCksIE5ETkJPT1NUX1BQX05PREVfMjE3LCBORE5CT09TVF9QUF9OT0RFXzIxOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE3KHApIE5ETkJPT1NUX1BQX0lJRihwKDIxNyksIDIxNywgMjE4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTkocCkgTkROQk9PU1RfUFBfSUlGKHAoMjE5KSwgMjE5LCAyMjApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIyKHApIE5ETkJPT1NUX1BQX0lJRihwKDIyMiksIE5ETkJPT1NUX1BQX05PREVfMjIxLCBORE5CT09TVF9QUF9OT0RFXzIyMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIxKHApIE5ETkJPT1NUX1BQX0lJRihwKDIyMSksIDIyMSwgMjIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjMocCkgTkROQk9PU1RfUFBfSUlGKHAoMjIzKSwgMjIzLCAyMjQpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQwKHApIE5ETkJPT1NUX1BQX0lJRihwKDI0MCksIE5ETkJPT1NUX1BQX05PREVfMjMyLCBORE5CT09TVF9QUF9OT0RFXzI0OCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMyKHApIE5ETkJPT1NUX1BQX0lJRihwKDIzMiksIE5ETkJPT1NUX1BQX05PREVfMjI4LCBORE5CT09TVF9QUF9OT0RFXzIzNikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyOChwKSBORE5CT09TVF9QUF9JSUYocCgyMjgpLCBORE5CT09TVF9QUF9OT0RFXzIyNiwgTkROQk9PU1RfUFBfTk9ERV8yMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI2KHApIE5ETkJPT1NUX1BQX0lJRihwKDIyNiksIE5ETkJPT1NUX1BQX05PREVfMjI1LCBORE5CT09TVF9QUF9OT0RFXzIyNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI1KHApIE5ETkJPT1NUX1BQX0lJRihwKDIyNSksIDIyNSwgMjI2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjcocCkgTkROQk9PU1RfUFBfSUlGKHAoMjI3KSwgMjI3LCAyMjgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMwKHApIE5ETkJPT1NUX1BQX0lJRihwKDIzMCksIE5ETkJPT1NUX1BQX05PREVfMjI5LCBORE5CT09TVF9QUF9OT0RFXzIzMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI5KHApIE5ETkJPT1NUX1BQX0lJRihwKDIyOSksIDIyOSwgMjMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzEocCkgTkROQk9PU1RfUFBfSUlGKHAoMjMxKSwgMjMxLCAyMzIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzYocCkgTkROQk9PU1RfUFBfSUlGKHAoMjM2KSwgTkROQk9PU1RfUFBfTk9ERV8yMzQsIE5ETkJPT1NUX1BQX05PREVfMjM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzNChwKSBORE5CT09TVF9QUF9JSUYocCgyMzQpLCBORE5CT09TVF9QUF9OT0RFXzIzMywgTkROQk9PU1RfUFBfTk9ERV8yMzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzMyhwKSBORE5CT09TVF9QUF9JSUYocCgyMzMpLCAyMzMsIDIzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM1KHApIE5ETkJPT1NUX1BQX0lJRihwKDIzNSksIDIzNSwgMjM2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzOChwKSBORE5CT09TVF9QUF9JSUYocCgyMzgpLCBORE5CT09TVF9QUF9OT0RFXzIzNywgTkROQk9PU1RfUFBfTk9ERV8yMzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzNyhwKSBORE5CT09TVF9QUF9JSUYocCgyMzcpLCAyMzcsIDIzOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM5KHApIE5ETkJPT1NUX1BQX0lJRihwKDIzOSksIDIzOSwgMjQwKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDgocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQ4KSwgTkROQk9PU1RfUFBfTk9ERV8yNDQsIE5ETkJPT1NUX1BQX05PREVfMjUyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ0KHApIE5ETkJPT1NUX1BQX0lJRihwKDI0NCksIE5ETkJPT1NUX1BQX05PREVfMjQyLCBORE5CT09TVF9QUF9OT0RFXzI0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDIocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQyKSwgTkROQk9PU1RfUFBfTk9ERV8yNDEsIE5ETkJPT1NUX1BQX05PREVfMjQzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDEocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQxKSwgMjQxLCAyNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MyhwKSBORE5CT09TVF9QUF9JSUYocCgyNDMpLCAyNDMsIDI0NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDYocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQ2KSwgTkROQk9PU1RfUFBfTk9ERV8yNDUsIE5ETkJPT1NUX1BQX05PREVfMjQ3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDUocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQ1KSwgMjQ1LCAyNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NyhwKSBORE5CT09TVF9QUF9JSUYocCgyNDcpLCAyNDcsIDI0OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MihwKSBORE5CT09TVF9QUF9JSUYocCgyNTIpLCBORE5CT09TVF9QUF9OT0RFXzI1MCwgTkROQk9PU1RfUFBfTk9ERV8yNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUwKHApIE5ETkJPT1NUX1BQX0lJRihwKDI1MCksIE5ETkJPT1NUX1BQX05PREVfMjQ5LCBORE5CT09TVF9QUF9OT0RFXzI1MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ5KHApIE5ETkJPT1NUX1BQX0lJRihwKDI0OSksIDI0OSwgMjUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTEocCkgTkROQk9PU1RfUFBfSUlGKHAoMjUxKSwgMjUxLCAyNTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjU0KHApIE5ETkJPT1NUX1BQX0lJRihwKDI1NCksIE5ETkJPT1NUX1BQX05PREVfMjUzLCBORE5CT09TVF9QUF9OT0RFXzI1NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUzKHApIE5ETkJPT1NUX1BQX0lJRihwKDI1MyksIDI1MywgMjU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTUocCkgTkROQk9PU1RfUFBfSUlGKHAoMjU1KSwgMjU1LCAyNTYpCi0jCi0jIGVuZGlmCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvY2hlY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2NoZWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGEwOGUzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvY2hlY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfQ0hFQ0tfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0NIRUNLX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9DSEVDSyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDSyh4LCB0eXBlKSBORE5CT09TVF9QUF9DSEVDS19EKHgsIHR5cGUpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLKHgsIHR5cGUpIE5ETkJPT1NUX1BQX0NIRUNLX09PKCh4LCB0eXBlKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLX09PKHBhcikgTkROQk9PU1RfUFBfQ0hFQ0tfRCAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKSAmJiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRE1DKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLX0QoeCwgdHlwZSkgTkROQk9PU1RfUFBfQ0hFQ0tfMShORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0hFQ0tfUkVTVUxUXywgdHlwZSB4KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzEoY2hrKSBORE5CT09TVF9QUF9DSEVDS18yKGNoaykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzIocmVzLCBfKSByZXMKLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLX0QoeCwgdHlwZSkgTkROQk9PU1RfUFBfQ0hFQ0tfMSh0eXBlIHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18xKGNoaykgTkROQk9PU1RfUFBfQ0hFQ0tfMihjaGspCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18yKGNoaykgTkROQk9PU1RfUFBfQ0hFQ0tfMygoTkROQk9PU1RfUFBfQ0hFQ0tfUkVTVUxUXyAjIyBjaGspKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMyhpbSkgTkROQk9PU1RfUFBfQ0hFQ0tfNShORE5CT09TVF9QUF9DSEVDS180IGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfNChyZXMsIF8pIHJlcwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfNShyZXMpIHJlcwotIyBlbHNlIC8qIERNQyAqLwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfRCh4LCB0eXBlKSBORE5CT09TVF9QUF9DSEVDS19PTygodHlwZSB4KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLX09PKHBhcikgTkROQk9PU1RfUFBfQ0hFQ0tfMCAjIyBwYXIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzAoY2hrKSBORE5CT09TVF9QUF9DSEVDS18xKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DSEVDS19SRVNVTFRfLCBjaGspKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMShjaGspIE5ETkJPT1NUX1BQX0NIRUNLXzIoY2hrKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMihyZXMsIF8pIHJlcwotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfUkVTVUxUXzEgMSwgTkROQk9PU1RfUFBfTklMCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvZG1jL2F1dG9fcmVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9kbWMvYXV0b19yZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjJlNmI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9kbWMvYXV0b19yZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0FVVE9fUkVDX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9BVVRPX1JFQ19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQVVUT19SRUMgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FVVE9fUkVDKHByZWQsIG4pIE5ETkJPT1NUX1BQX05PREVfRU5UUllfICMjIG4ocHJlZCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMjU2KHApIE5ETkJPT1NUX1BQX05PREVfMTI4KHApKHApKHApKHApKHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzEyOChwKSBORE5CT09TVF9QUF9OT0RFXzY0KHApKHApKHApKHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzY0KHApIE5ETkJPT1NUX1BQX05PREVfMzIocCkocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMzIocCkgTkROQk9PU1RfUFBfTk9ERV8xNihwKShwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8xNihwKSBORE5CT09TVF9QUF9OT0RFXzgocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfOChwKSBORE5CT09TVF9QUF9OT0RFXzQocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfNChwKSBORE5CT09TVF9QUF9OT0RFXzIocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMihwKSBORE5CT09TVF9QUF9OT0RFXzEocCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTI4KSwgTkROQk9PU1RfUFBfTk9ERV82NCwgTkROQk9PU1RfUFBfTk9ERV8xOTIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjQpLCBORE5CT09TVF9QUF9OT0RFXzMyLCBORE5CT09TVF9QUF9OT0RFXzk2KQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzMiksIE5ETkJPT1NUX1BQX05PREVfMTYsIE5ETkJPT1NUX1BQX05PREVfNDgpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNiksIE5ETkJPT1NUX1BQX05PREVfOCwgTkROQk9PU1RfUFBfTk9ERV8yNCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDgpLCBORE5CT09TVF9QUF9OT0RFXzQsIE5ETkJPT1NUX1BQX05PREVfMTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNCksIE5ETkJPT1NUX1BQX05PREVfMiwgTkROQk9PU1RfUFBfTk9ERV82KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyKSwgTkROQk9PU1RfUFBfTk9ERV8xLCBORE5CT09TVF9QUF9OT0RFXzMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxKSwgMSwgMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDMpLCAzLCA0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2KSwgTkROQk9PU1RfUFBfTk9ERV81LCBORE5CT09TVF9QUF9OT0RFXzcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1KSwgNSwgNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDcpLCA3LCA4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMiksIE5ETkJPT1NUX1BQX05PREVfMTAsIE5ETkJPT1NUX1BQX05PREVfMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMCksIE5ETkJPT1NUX1BQX05PREVfOSwgTkROQk9PU1RfUFBfTk9ERV8xMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDkpLCA5LCAxMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMSksIDExLCAxMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0KSwgTkROQk9PU1RfUFBfTk9ERV8xMywgTkROQk9PU1RfUFBfTk9ERV8xNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMyksIDEzLCAxNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNSksIDE1LCAxNikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNCksIE5ETkJPT1NUX1BQX05PREVfMjAsIE5ETkJPT1NUX1BQX05PREVfMjgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwKSwgTkROQk9PU1RfUFBfTk9ERV8xOCwgTkROQk9PU1RfUFBfTk9ERV8yMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4KSwgTkROQk9PU1RfUFBfTk9ERV8xNywgTkROQk9PU1RfUFBfTk9ERV8xOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNyksIDE3LCAxOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOSksIDE5LCAyMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyKSwgTkROQk9PU1RfUFBfTk9ERV8yMSwgTkROQk9PU1RfUFBfTk9ERV8yMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMSksIDIxLCAyMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMyksIDIzLCAyNCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjgpLCBORE5CT09TVF9QUF9OT0RFXzI2LCBORE5CT09TVF9QUF9OT0RFXzMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjYpLCBORE5CT09TVF9QUF9OT0RFXzI1LCBORE5CT09TVF9QUF9OT0RFXzI3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDI1KSwgMjUsIDI2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDI3KSwgMjcsIDI4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzApLCBORE5CT09TVF9QUF9OT0RFXzI5LCBORE5CT09TVF9QUF9OT0RFXzMxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDI5KSwgMjksIDMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDMxKSwgMzEsIDMyKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDgpLCBORE5CT09TVF9QUF9OT0RFXzQwLCBORE5CT09TVF9QUF9OT0RFXzU2KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDQwKSwgTkROQk9PU1RfUFBfTk9ERV8zNiwgTkROQk9PU1RfUFBfTk9ERV80NCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzYpLCBORE5CT09TVF9QUF9OT0RFXzM0LCBORE5CT09TVF9QUF9OT0RFXzM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzQpLCBORE5CT09TVF9QUF9OT0RFXzMzLCBORE5CT09TVF9QUF9OT0RFXzM1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDMzKSwgMzMsIDM0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDM1KSwgMzUsIDM2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzgpLCBORE5CT09TVF9QUF9OT0RFXzM3LCBORE5CT09TVF9QUF9OT0RFXzM5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDM3KSwgMzcsIDM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDM5KSwgMzksIDQwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0NCksIE5ETkJPT1NUX1BQX05PREVfNDIsIE5ETkJPT1NUX1BQX05PREVfNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDIocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0MiksIE5ETkJPT1NUX1BQX05PREVfNDEsIE5ETkJPT1NUX1BQX05PREVfNDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDEpLCA0MSwgNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDMpLCA0MywgNDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0NiksIE5ETkJPT1NUX1BQX05PREVfNDUsIE5ETkJPT1NUX1BQX05PREVfNDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDUpLCA0NSwgNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDcpLCA0NywgNDgpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTYpLCBORE5CT09TVF9QUF9OT0RFXzUyLCBORE5CT09TVF9QUF9OT0RFXzYwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1MiksIE5ETkJPT1NUX1BQX05PREVfNTAsIE5ETkJPT1NUX1BQX05PREVfNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1MCksIE5ETkJPT1NUX1BQX05PREVfNDksIE5ETkJPT1NUX1BQX05PREVfNTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDkpLCA0OSwgNTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTEpLCA1MSwgNTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1NCksIE5ETkJPT1NUX1BQX05PREVfNTMsIE5ETkJPT1NUX1BQX05PREVfNTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTMpLCA1MywgNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTUpLCA1NSwgNTYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDYwKSwgTkROQk9PU1RfUFBfTk9ERV81OCwgTkROQk9PU1RfUFBfTk9ERV82MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDU4KSwgTkROQk9PU1RfUFBfTk9ERV81NywgTkROQk9PU1RfUFBfTk9ERV81OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTcocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1NyksIDU3LCA1OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTkocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1OSksIDU5LCA2MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDYyKSwgTkROQk9PU1RfUFBfTk9ERV82MSwgTkROQk9PU1RfUFBfTk9ERV82MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjEocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2MSksIDYxLCA2MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjMocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2MyksIDYzLCA2NCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTYpLCBORE5CT09TVF9QUF9OT0RFXzgwLCBORE5CT09TVF9QUF9OT0RFXzExMikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDgwKSwgTkROQk9PU1RfUFBfTk9ERV83MiwgTkROQk9PU1RfUFBfTk9ERV84OCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzIocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3MiksIE5ETkJPT1NUX1BQX05PREVfNjgsIE5ETkJPT1NUX1BQX05PREVfNzYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDY4KSwgTkROQk9PU1RfUFBfTk9ERV82NiwgTkROQk9PU1RfUFBfTk9ERV83MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDY2KSwgTkROQk9PU1RfUFBfTk9ERV82NSwgTkROQk9PU1RfUFBfTk9ERV82NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjUocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2NSksIDY1LCA2NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjcocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2NyksIDY3LCA2OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDcwKSwgTkROQk9PU1RfUFBfTk9ERV82OSwgTkROQk9PU1RfUFBfTk9ERV83MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjkocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2OSksIDY5LCA3MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzEocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3MSksIDcxLCA3MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzYpLCBORE5CT09TVF9QUF9OT0RFXzc0LCBORE5CT09TVF9QUF9OT0RFXzc4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzQpLCBORE5CT09TVF9QUF9OT0RFXzczLCBORE5CT09TVF9QUF9OT0RFXzc1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDczKSwgNzMsIDc0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDc1KSwgNzUsIDc2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzgpLCBORE5CT09TVF9QUF9OT0RFXzc3LCBORE5CT09TVF9QUF9OT0RFXzc5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDc3KSwgNzcsIDc4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDc5KSwgNzksIDgwKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDg4KSwgTkROQk9PU1RfUFBfTk9ERV84NCwgTkROQk9PU1RfUFBfTk9ERV85MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODQpLCBORE5CT09TVF9QUF9OT0RFXzgyLCBORE5CT09TVF9QUF9OT0RFXzg2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODIpLCBORE5CT09TVF9QUF9OT0RFXzgxLCBORE5CT09TVF9QUF9OT0RFXzgzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDgxKSwgODEsIDgyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDgzKSwgODMsIDg0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODYpLCBORE5CT09TVF9QUF9OT0RFXzg1LCBORE5CT09TVF9QUF9OT0RFXzg3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDg1KSwgODUsIDg2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDg3KSwgODcsIDg4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5MiksIE5ETkJPT1NUX1BQX05PREVfOTAsIE5ETkJPT1NUX1BQX05PREVfOTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5MCksIE5ETkJPT1NUX1BQX05PREVfODksIE5ETkJPT1NUX1BQX05PREVfOTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODkpLCA4OSwgOTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTEpLCA5MSwgOTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5NCksIE5ETkJPT1NUX1BQX05PREVfOTMsIE5ETkJPT1NUX1BQX05PREVfOTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTMpLCA5MywgOTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTUpLCA5NSwgOTYpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTEyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTEyKSwgTkROQk9PU1RfUFBfTk9ERV8xMDQsIE5ETkJPT1NUX1BQX05PREVfMTIwKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDQpLCBORE5CT09TVF9QUF9OT0RFXzEwMCwgTkROQk9PU1RfUFBfTk9ERV8xMDgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDApLCBORE5CT09TVF9QUF9OT0RFXzk4LCBORE5CT09TVF9QUF9OT0RFXzEwMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDk4KSwgTkROQk9PU1RfUFBfTk9ERV85NywgTkROQk9PU1RfUFBfTk9ERV85OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTcocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5NyksIDk3LCA5OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTkocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5OSksIDk5LCAxMDApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTAyKSwgTkROQk9PU1RfUFBfTk9ERV8xMDEsIE5ETkJPT1NUX1BQX05PREVfMTAzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDEpLCAxMDEsIDEwMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTAzKSwgMTAzLCAxMDQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDgpLCBORE5CT09TVF9QUF9OT0RFXzEwNiwgTkROQk9PU1RfUFBfTk9ERV8xMTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTA2KSwgTkROQk9PU1RfUFBfTk9ERV8xMDUsIE5ETkJPT1NUX1BQX05PREVfMTA3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDUpLCAxMDUsIDEwNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTA3KSwgMTA3LCAxMDgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTEwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTEwKSwgTkROQk9PU1RfUFBfTk9ERV8xMDksIE5ETkJPT1NUX1BQX05PREVfMTExKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDkpLCAxMDksIDExMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTExKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTExKSwgMTExLCAxMTIpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyMCksIE5ETkJPT1NUX1BQX05PREVfMTE2LCBORE5CT09TVF9QUF9OT0RFXzEyNCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDExNiksIE5ETkJPT1NUX1BQX05PREVfMTE0LCBORE5CT09TVF9QUF9OT0RFXzExOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTQpLCBORE5CT09TVF9QUF9OT0RFXzExMywgTkROQk9PU1RfUFBfTk9ERV8xMTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDExMyksIDExMywgMTE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTUpLCAxMTUsIDExNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTgpLCBORE5CT09TVF9QUF9OT0RFXzExNywgTkROQk9PU1RfUFBfTk9ERV8xMTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDExNyksIDExNywgMTE4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTkpLCAxMTksIDEyMCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyNCksIE5ETkJPT1NUX1BQX05PREVfMTIyLCBORE5CT09TVF9QUF9OT0RFXzEyNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjIpLCBORE5CT09TVF9QUF9OT0RFXzEyMSwgTkROQk9PU1RfUFBfTk9ERV8xMjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyMSksIDEyMSwgMTIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjMpLCAxMjMsIDEyNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjYpLCBORE5CT09TVF9QUF9OT0RFXzEyNSwgTkROQk9PU1RfUFBfTk9ERV8xMjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyNSksIDEyNSwgMTI2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjcpLCAxMjcsIDEyOCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTkyKSwgTkROQk9PU1RfUFBfTk9ERV8xNjAsIE5ETkJPT1NUX1BQX05PREVfMjI0KQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTYwKSwgTkROQk9PU1RfUFBfTk9ERV8xNDQsIE5ETkJPT1NUX1BQX05PREVfMTc2KQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0NCksIE5ETkJPT1NUX1BQX05PREVfMTM2LCBORE5CT09TVF9QUF9OT0RFXzE1MikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTM2KSwgTkROQk9PU1RfUFBfTk9ERV8xMzIsIE5ETkJPT1NUX1BQX05PREVfMTQwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTMyKSwgTkROQk9PU1RfUFBfTk9ERV8xMzAsIE5ETkJPT1NUX1BQX05PREVfMTM0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzMCksIE5ETkJPT1NUX1BQX05PREVfMTI5LCBORE5CT09TVF9QUF9OT0RFXzEzMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTI5KSwgMTI5LCAxMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzMSksIDEzMSwgMTMyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzNCksIE5ETkJPT1NUX1BQX05PREVfMTMzLCBORE5CT09TVF9QUF9OT0RFXzEzNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTMzKSwgMTMzLCAxMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzNSksIDEzNSwgMTM2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQwKSwgTkROQk9PU1RfUFBfTk9ERV8xMzgsIE5ETkJPT1NUX1BQX05PREVfMTQyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzOCksIE5ETkJPT1NUX1BQX05PREVfMTM3LCBORE5CT09TVF9QUF9OT0RFXzEzOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTM3KSwgMTM3LCAxMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzOSksIDEzOSwgMTQwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0MiksIE5ETkJPT1NUX1BQX05PREVfMTQxLCBORE5CT09TVF9QUF9OT0RFXzE0MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQxKSwgMTQxLCAxNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0MyksIDE0MywgMTQ0KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTIpLCBORE5CT09TVF9QUF9OT0RFXzE0OCwgTkROQk9PU1RfUFBfTk9ERV8xNTYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDgpLCBORE5CT09TVF9QUF9OT0RFXzE0NiwgTkROQk9PU1RfUFBfTk9ERV8xNTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQ2KSwgTkROQk9PU1RfUFBfTk9ERV8xNDUsIE5ETkJPT1NUX1BQX05PREVfMTQ3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDUpLCAxNDUsIDE0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQ3KSwgMTQ3LCAxNDgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTUwKSwgTkROQk9PU1RfUFBfTk9ERV8xNDksIE5ETkJPT1NUX1BQX05PREVfMTUxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDkpLCAxNDksIDE1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTUxKSwgMTUxLCAxNTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTYpLCBORE5CT09TVF9QUF9OT0RFXzE1NCwgTkROQk9PU1RfUFBfTk9ERV8xNTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTU0KSwgTkROQk9PU1RfUFBfTk9ERV8xNTMsIE5ETkJPT1NUX1BQX05PREVfMTU1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTMpLCAxNTMsIDE1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTU1KSwgMTU1LCAxNTYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTU4KSwgTkROQk9PU1RfUFBfTk9ERV8xNTcsIE5ETkJPT1NUX1BQX05PREVfMTU5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTcpLCAxNTcsIDE1OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTU5KSwgMTU5LCAxNjApCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTc2KSwgTkROQk9PU1RfUFBfTk9ERV8xNjgsIE5ETkJPT1NUX1BQX05PREVfMTg0KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjgpLCBORE5CT09TVF9QUF9OT0RFXzE2NCwgTkROQk9PU1RfUFBfTk9ERV8xNzIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjQpLCBORE5CT09TVF9QUF9OT0RFXzE2MiwgTkROQk9PU1RfUFBfTk9ERV8xNjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTYyKSwgTkROQk9PU1RfUFBfTk9ERV8xNjEsIE5ETkJPT1NUX1BQX05PREVfMTYzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjEpLCAxNjEsIDE2MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTYzKSwgMTYzLCAxNjQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTY2KSwgTkROQk9PU1RfUFBfTk9ERV8xNjUsIE5ETkJPT1NUX1BQX05PREVfMTY3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjUpLCAxNjUsIDE2NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTY3KSwgMTY3LCAxNjgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzIpLCBORE5CT09TVF9QUF9OT0RFXzE3MCwgTkROQk9PU1RfUFBfTk9ERV8xNzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTcwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTcwKSwgTkROQk9PU1RfUFBfTk9ERV8xNjksIE5ETkJPT1NUX1BQX05PREVfMTcxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjkpLCAxNjksIDE3MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTcxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTcxKSwgMTcxLCAxNzIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTc0KSwgTkROQk9PU1RfUFBfTk9ERV8xNzMsIE5ETkJPT1NUX1BQX05PREVfMTc1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzMpLCAxNzMsIDE3NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTc1KSwgMTc1LCAxNzYpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4NCksIE5ETkJPT1NUX1BQX05PREVfMTgwLCBORE5CT09TVF9QUF9OT0RFXzE4OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4MCksIE5ETkJPT1NUX1BQX05PREVfMTc4LCBORE5CT09TVF9QUF9OT0RFXzE4MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzgpLCBORE5CT09TVF9QUF9OT0RFXzE3NywgTkROQk9PU1RfUFBfTk9ERV8xNzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3NyksIDE3NywgMTc4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzkpLCAxNzksIDE4MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxODIpLCBORE5CT09TVF9QUF9OT0RFXzE4MSwgTkROQk9PU1RfUFBfTk9ERV8xODMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4MSksIDE4MSwgMTgyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxODMpLCAxODMsIDE4NCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4OCksIE5ETkJPT1NUX1BQX05PREVfMTg2LCBORE5CT09TVF9QUF9OT0RFXzE5MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxODYpLCBORE5CT09TVF9QUF9OT0RFXzE4NSwgTkROQk9PU1RfUFBfTk9ERV8xODcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4NSksIDE4NSwgMTg2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxODcpLCAxODcsIDE4OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTApLCBORE5CT09TVF9QUF9OT0RFXzE4OSwgTkROQk9PU1RfUFBfTk9ERV8xOTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4OSksIDE4OSwgMTkwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTEpLCAxOTEsIDE5MikKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyNCksIE5ETkJPT1NUX1BQX05PREVfMjA4LCBORE5CT09TVF9QUF9OT0RFXzI0MCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDgpLCBORE5CT09TVF9QUF9OT0RFXzIwMCwgTkROQk9PU1RfUFBfTk9ERV8yMTYpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwMCksIE5ETkJPT1NUX1BQX05PREVfMTk2LCBORE5CT09TVF9QUF9OT0RFXzIwNCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5NiksIE5ETkJPT1NUX1BQX05PREVfMTk0LCBORE5CT09TVF9QUF9OT0RFXzE5OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTQpLCBORE5CT09TVF9QUF9OT0RFXzE5MywgTkROQk9PU1RfUFBfTk9ERV8xOTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5MyksIDE5MywgMTk0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTUpLCAxOTUsIDE5NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTgpLCBORE5CT09TVF9QUF9OT0RFXzE5NywgTkROQk9PU1RfUFBfTk9ERV8xOTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5NyksIDE5NywgMTk4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTkpLCAxOTksIDIwMCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwNCksIE5ETkJPT1NUX1BQX05PREVfMjAyLCBORE5CT09TVF9QUF9OT0RFXzIwNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDIpLCBORE5CT09TVF9QUF9OT0RFXzIwMSwgTkROQk9PU1RfUFBfTk9ERV8yMDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwMSksIDIwMSwgMjAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDMpLCAyMDMsIDIwNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDYpLCBORE5CT09TVF9QUF9OT0RFXzIwNSwgTkROQk9PU1RfUFBfTk9ERV8yMDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwNSksIDIwNSwgMjA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDcpLCAyMDcsIDIwOCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjE2KSwgTkROQk9PU1RfUFBfTk9ERV8yMTIsIE5ETkJPT1NUX1BQX05PREVfMjIwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjEyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjEyKSwgTkROQk9PU1RfUFBfTk9ERV8yMTAsIE5ETkJPT1NUX1BQX05PREVfMjE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxMCksIE5ETkJPT1NUX1BQX05PREVfMjA5LCBORE5CT09TVF9QUF9OT0RFXzIxMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjA5KSwgMjA5LCAyMTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxMSksIDIxMSwgMjEyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxNCksIE5ETkJPT1NUX1BQX05PREVfMjEzLCBORE5CT09TVF9QUF9OT0RFXzIxNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjEzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjEzKSwgMjEzLCAyMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxNSksIDIxNSwgMjE2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjIwKSwgTkROQk9PU1RfUFBfTk9ERV8yMTgsIE5ETkJPT1NUX1BQX05PREVfMjIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxOCksIE5ETkJPT1NUX1BQX05PREVfMjE3LCBORE5CT09TVF9QUF9OT0RFXzIxOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjE3KSwgMjE3LCAyMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxOSksIDIxOSwgMjIwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyMiksIE5ETkJPT1NUX1BQX05PREVfMjIxLCBORE5CT09TVF9QUF9OT0RFXzIyMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjIxKSwgMjIxLCAyMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyMyksIDIyMywgMjI0KQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0MCksIE5ETkJPT1NUX1BQX05PREVfMjMyLCBORE5CT09TVF9QUF9OT0RFXzI0OCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjMyKSwgTkROQk9PU1RfUFBfTk9ERV8yMjgsIE5ETkJPT1NUX1BQX05PREVfMjM2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjI4KSwgTkROQk9PU1RfUFBfTk9ERV8yMjYsIE5ETkJPT1NUX1BQX05PREVfMjMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyNiksIE5ETkJPT1NUX1BQX05PREVfMjI1LCBORE5CT09TVF9QUF9OT0RFXzIyNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjI1KSwgMjI1LCAyMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIyNyksIDIyNywgMjI4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzMCksIE5ETkJPT1NUX1BQX05PREVfMjI5LCBORE5CT09TVF9QUF9OT0RFXzIzMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjI5KSwgMjI5LCAyMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzMSksIDIzMSwgMjMyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjM2KSwgTkROQk9PU1RfUFBfTk9ERV8yMzQsIE5ETkJPT1NUX1BQX05PREVfMjM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzNCksIE5ETkJPT1NUX1BQX05PREVfMjMzLCBORE5CT09TVF9QUF9OT0RFXzIzNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjMzKSwgMjMzLCAyMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzNSksIDIzNSwgMjM2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzOCksIE5ETkJPT1NUX1BQX05PREVfMjM3LCBORE5CT09TVF9QUF9OT0RFXzIzOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjM3KSwgMjM3LCAyMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzOSksIDIzOSwgMjQwKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDgpLCBORE5CT09TVF9QUF9OT0RFXzI0NCwgTkROQk9PU1RfUFBfTk9ERV8yNTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDQpLCBORE5CT09TVF9QUF9OT0RFXzI0MiwgTkROQk9PU1RfUFBfTk9ERV8yNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQyKSwgTkROQk9PU1RfUFBfTk9ERV8yNDEsIE5ETkJPT1NUX1BQX05PREVfMjQzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDEpLCAyNDEsIDI0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQzKSwgMjQzLCAyNDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQ2KSwgTkROQk9PU1RfUFBfTk9ERV8yNDUsIE5ETkJPT1NUX1BQX05PREVfMjQ3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDUpLCAyNDUsIDI0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQ3KSwgMjQ3LCAyNDgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNTIpLCBORE5CT09TVF9QUF9OT0RFXzI1MCwgTkROQk9PU1RfUFBfTk9ERV8yNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjUwKSwgTkROQk9PU1RfUFBfTk9ERV8yNDksIE5ETkJPT1NUX1BQX05PREVfMjUxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDkpLCAyNDksIDI1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjUxKSwgMjUxLCAyNTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjU0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjU0KSwgTkROQk9PU1RfUFBfTk9ERV8yNTMsIE5ETkJPT1NUX1BQX05PREVfMjU1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNTMpLCAyNTMsIDI1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjU1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjU1KSwgMjU1LCAyNTYpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvaXNfYmluYXJ5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc19iaW5hcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDg3NzdmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc19iaW5hcnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfSVNfQklOQVJZX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9JU19CSU5BUllfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9jaGVjay5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0lTX0JJTkFSWSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX0JJTkFSWSh4KSBORE5CT09TVF9QUF9DSEVDSyh4LCBORE5CT09TVF9QUF9JU19CSU5BUllfQ0hFQ0spCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX0JJTkFSWSh4KSBORE5CT09TVF9QUF9JU19CSU5BUllfSSh4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVNfQklOQVJZX0koeCkgTkROQk9PU1RfUFBfQ0hFQ0soeCwgTkROQk9PU1RfUFBfSVNfQklOQVJZX0NIRUNLKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVNfQklOQVJZX0NIRUNLKGEsIGIpIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLX1JFU1VMVF9ORE5CT09TVF9QUF9JU19CSU5BUllfQ0hFQ0sgMCwgTkROQk9PU1RfUFBfTklMCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvaXNfdW5hcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX3VuYXJ5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFhYWY1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvaXNfdW5hcnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfSVNfVU5BUllfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0lTX1VOQVJZX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvY2hlY2suaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9JU19VTkFSWSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX1VOQVJZKHgpIE5ETkJPT1NUX1BQX0NIRUNLKHgsIE5ETkJPT1NUX1BQX0lTX1VOQVJZX0NIRUNLKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JU19VTkFSWSh4KSBORE5CT09TVF9QUF9JU19VTkFSWV9JKHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JU19VTkFSWV9JKHgpIE5ETkJPT1NUX1BQX0NIRUNLKHgsIE5ETkJPT1NUX1BQX0lTX1VOQVJZX0NIRUNLKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVNfVU5BUllfQ0hFQ0soYSkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfUkVTVUxUX05ETkJPT1NUX1BQX0lTX1VOQVJZX0NIRUNLIDAsIE5ETkJPT1NUX1BQX05JTAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW1wdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW1wdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGI5YWRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VtcHR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU1QVFlfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU1QVFlfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkZGI4YTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VOVU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU5VTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bS5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxMWY2ZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX1BBUkFNU19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX1BBUkFNU19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXNfd2l0aF9hX2RlZmF1bHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXNfd2l0aF9hX2RlZmF1bHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDgwZmJjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zX3dpdGhfYV9kZWZhdWx0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zX3dpdGhfYV9kZWZhdWx0LmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5N2EyMmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VOVU1fU0hJRlRFRF9QQVJBTVNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU5VTV9TSElGVEVEX1BBUkFNU19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9leHByX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2V4cHJfaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmQzMDI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2V4cHJfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FWFBSX0lGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VYUFJfSUZfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWYuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNmZDNlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfRU1QVFlfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRkFDSUxJVElFU19FTVBUWV9IUFAKLSMKLSMgLyogTkROQk9PU1RfUFBfRU1QVFkgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VNUFRZKCkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaWRlbnRpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlMTRhZjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9GQUNJTElUSUVTX0lERU5USVRZX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfSURFTlRJVFlfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfSURFTlRJVFkgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lERU5USVRZKGl0ZW0pIGl0ZW0gTkROQk9PU1RfUFBfRU1QVFkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaW50ZXJjZXB0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaW50ZXJjZXB0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGEyMjU2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2ludGVyY2VwdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9GQUNJTElUSUVTX0lOVEVSQ0VQVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9GQUNJTElUSUVTX0lOVEVSQ0VQVF9IUFAKLSMKLSMgLyogTkROQk9PU1RfUFBfSU5URVJDRVBUICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFQgTkROQk9PU1RfUFBfSU5URVJDRVBUXwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNTYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvb3ZlcmxvYWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9vdmVybG9hZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2OWVlZGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9vdmVybG9hZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IEVkd2FyZCBEaWVuZXIgMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgICAgICAqCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRkFDSUxJVElFU19PVkVSTE9BRF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9GQUNJTElUSUVTX09WRVJMT0FEX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL3NpemUuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9PVkVSTE9BRCAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX09WRVJMT0FEKHByZWZpeCwgLi4uKSBORE5CT09TVF9QUF9DQVQocHJlZml4LCBORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFKF9fVkFfQVJHU19fKSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lkZW50aXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lkZW50aXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA2YmQ1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZGVudGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lERU5USVRZX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lERU5USVRZX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNDRlZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JRl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0NWI2NjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSU5DX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lOQ19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYjJmMzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVEVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFURV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDcxNjZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzliMmRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGUzNDUzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWNkNzk5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80IE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjBjNTM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODU0N2ZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ4MmFhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyODU3MTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODYxMGMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI1LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc4N2M3Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9maW5pc2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9maW5pc2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzgxNzJjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvZmluaXNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zLCBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yLCBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFKCkgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMjk0NjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNDIgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpZiAhZGVmaW5lZChORE5CT09TVF9QUF9GSUxFTkFNRV8xKQotIyAgICAgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjMSBmaWxlbmFtZSBpcyBub3QgZGVmaW5lZAotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIxLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMSgpIDAKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUwotIyBlbGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjEuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjEuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRklMRU5BTUVfMSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSkKLSMgICAgaWYgTkROQk9PU1RfUFBfQVJSQVlfU0laRShORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEpID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMSgpIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzEoKSAwCi0jICAgIGVuZGlmCi0jIGVsc2UKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjMSBpdGVyYXRpb24gYm91bmRhcmllcyBvciBmaWxlbmFtZSBub3QgZGVmaW5lZAotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDEKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORyAxCi0jCi0jIGlmIChORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSkgPiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UxLmhwcD4KLSMgZWxzZQotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDExOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDE5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDI1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMQotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSAwCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMQotIyB1bmRlZiBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YTJkOWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMzggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpZiAhZGVmaW5lZChORE5CT09TVF9QUF9GSUxFTkFNRV8yKQotIyAgICAgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjMiBmaWxlbmFtZSBpcyBub3QgZGVmaW5lZAotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIyLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMi5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMigpIDAKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUwotIyBlbGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjIuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjIuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRklMRU5BTUVfMiBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMikKLSMgICAgaWYgTkROQk9PU1RfUFBfQVJSQVlfU0laRShORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIpID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMigpIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzIoKSAwCi0jICAgIGVuZGlmCi0jIGVsc2UKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjMiBpdGVyYXRpb24gYm91bmRhcmllcyBvciBmaWxlbmFtZSBub3QgZGVmaW5lZAotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDIKLSMKLSMgaWYgKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yKSA+IChORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTIuaHBwPgotIyBlbHNlCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSA5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMTk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yIDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMjU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDc5ZTE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzM4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfRklMRU5BTUVfMykKLSMgICAgICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzMgZmlsZW5hbWUgaXMgbm90IGRlZmluZWQKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMy5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjMuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzMoKSAwCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18zKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIzLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18zKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIzLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgyLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMpCi0jICAgIGlmIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18zKSA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzMoKSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMykKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18zKCkgMAotIyAgICBlbmRpZgotIyBlbHNlCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzMgaXRlcmF0aW9uIGJvdW5kYXJpZXMgb3IgZmlsZW5hbWUgbm90IGRlZmluZWQKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSAzCi0jCi0jIGlmIChORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMykgPiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UzLmhwcD4KLSMgZWxzZQotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDExOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDE5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDI1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8zCi0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDIKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18zCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJjMjE1Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQpCi0jICAgICAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICM0IGZpbGVuYW1lIGlzIG5vdCBkZWZpbmVkCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjQuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI0LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU180KCkgMAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTCi0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNC5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNC5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV80IE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180KQotIyAgICBpZiBORE5CT09TVF9QUF9BUlJBWV9TSVpFKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNCkgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU180KCkgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgzLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzQpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfNCgpIDAKLSMgICAgZW5kaWYKLSMgZWxzZQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICM0IGl0ZXJhdGlvbiBib3VuZGFyaWVzIG9yIGZpbGVuYW1lIG5vdCBkZWZpbmVkCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgNAotIwotIyBpZiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQpID4gKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNC5ocHA+Ci0jIGVsc2UKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNAotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSAzCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNAotIyB1bmRlZiBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU180Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQ1LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ZmViYjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQ1LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMzggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpZiAhZGVmaW5lZChORE5CT09TVF9QUF9GSUxFTkFNRV81KQotIyAgICAgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjNSBmaWxlbmFtZSBpcyBub3QgZGVmaW5lZAotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI1LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfNSgpIDAKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUwotIyBlbGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU181KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzUpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjUuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzUpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjUuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRklMRU5BTUVfNSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNSkKLSMgICAgaWYgTkROQk9PU1RfUFBfQVJSQVlfU0laRShORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzUpID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfNSgpIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU181KQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzUoKSAwCi0jICAgIGVuZGlmCi0jIGVsc2UKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjNSBpdGVyYXRpb24gYm91bmRhcmllcyBvciBmaWxlbmFtZSBub3QgZGVmaW5lZAotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDUKLSMKLSMgaWYgKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81KSA+IChORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTUuaHBwPgotIyBlbHNlCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSA5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMTk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81IDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMjU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgNAotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjAxYWYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjk2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMjAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMTAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSA0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZjYzZiOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI5NiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDI0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDE0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDExMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMgotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzODEwYTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOTYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWU3NzM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjk2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMjAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMTAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSA0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl80Ci0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U1LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNiZWJkNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI5NiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDI0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDE0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDExMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9sb2NhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2xvY2FsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVjMTRhMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2xvY2FsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxMiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiAhZGVmaW5lZChORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMpCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgbG9jYWwgaXRlcmF0aW9uIGJvdW5kYXJpZXMgYXJlIG5vdCBkZWZpbmVkCi0jIGVsaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8pCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgbG9jYWwgaXRlcmF0aW9uIHRhcmdldCBtYWNybyBpcyBub3QgZGVmaW5lZAotIyBlbHNlCi0jICAgIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1MgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRiBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUykKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTKQotIyAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvc3RhcnQuaHBwPgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTKQotIyAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvZmluaXNoLmhwcD4KLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TIE5ETkJPT1NUX1BQX0xPQ0FMX1NFKCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFKCkKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgaWYgKE5ETkJPT1NUX1BQX0xPQ0FMX1MpID4gKE5ETkJPT1NUX1BQX0xPQ0FMX0YpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3Jsb2NhbC5ocHA+Ci0jIGVsc2UKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDMxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDM0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDM3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQ2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQ5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDUyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDU1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDU4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDYxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDY0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDY3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDcwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDcyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDczKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDc2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDc5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDgyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDg1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDg4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDkxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDk0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDk3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTAwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTAxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTAyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTAzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEwOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTExKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEyOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDEzOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE1OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE2OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTcwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTcxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTcyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTczKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE4OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE5OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjAwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjAxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjAyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjAzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjExKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIxOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIyOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM2KQotIyAgICBlbmRpZgotCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjM3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjM4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjM5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQ0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQ1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQ2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQ3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQ4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjQ5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjUwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjUxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjUyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjUzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjU0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjU1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjU2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTYpCi0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0YKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvcmxvY2FsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvcmxvY2FsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ2MDFhNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3Jsb2NhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3ODIgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjU2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjU0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjUxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQ4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQ1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjM5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjM2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjMzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjMwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjI3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjI0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjIxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjE4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjE1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjEyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjExKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjA5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjA2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjAzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjAyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjAwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTk3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTk0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTkxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTg4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTg1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTgyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTc5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTc2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTczKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTcyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTcwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTY3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTY0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTYxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTU4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTU1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTUyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQ5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQ2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTM3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTM0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTMxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTI4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTI1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTIyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTE5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTE2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTEzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTEwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTA3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTA0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTAzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTAxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTAwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDk5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDk4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDk3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDk2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDk1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDk0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDkzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDkyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDkxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDkwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDg5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDg4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDg3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDg2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDg1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDg0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDgzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDgyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDgxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDgwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDc5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDc4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDc3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDc2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDc1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDc0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDczKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDczKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDcyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDcyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDcxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDcxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDcwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDcwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDY5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDY4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDY3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDY2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDY1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDY0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDYzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDYyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDYxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDYwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDU5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDU4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDU3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDU2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDU1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDU0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDUzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDUyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDUxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDUwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQ5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQ4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQ3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQ2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQ1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQ0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDQwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDM5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDM4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDM3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDM2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDM1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDM0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDMzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDMyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDMxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDMwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMCkKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvc2VsZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3NlbGYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODQwYzk5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvc2VsZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JTkRJUkVDVF9TRUxGKQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIG5vIGluZGlyZWN0IGZpbGUgdG8gaW5jbHVkZQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVNfU0VMRklTSCAxCi0jCi0jIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5ESVJFQ1RfU0VMRgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JU19TRUxGSVNICi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvc3RhcnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zdGFydC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYWYwMzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zdGFydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0UKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0UoKSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMywgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiwgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yLCBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRSgpIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZlMTk0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVElPTl9JVEVSQVRFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVElPTl9JVEVSQVRFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9zaXplLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L3Nsb3QuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMAotIwotIyAvKiBORE5CT09TVF9QUF9JVEVSQVRJT04gKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTigpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fLCBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0ggKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVCgpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfLCBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8sIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKQotIwotIyAvKiBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1MgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHUygpIChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpKCkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTiAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKGkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fLCBpKQotIwotIyAvKiBORE5CT09TVF9QUF9GUkFNRV9TVEFSVCAmJiBORE5CT09TVF9QUF9GUkFNRV9GSU5JU0ggKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZSQU1FX1NUQVJUKGkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfLCBpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRlJBTUVfRklOSVNIKGkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXywgaSkKLSMKLSMgLyogTkROQk9PU1RfUFBfRlJBTUVfRkxBR1MgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZSQU1FX0ZMQUdTKGkpIChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXywgaSkoKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfUkVMQVRJVkVfSVRFUkFUSU9OICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV9JVEVSQVRJT04oaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFTEFUSVZFXywgaSkoTkROQk9PU1RfUFBfSVRFUkFUSU9OXykKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFXzAobSkgTkROQk9PU1RfUFBfQ0FUKG0sIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfMShtKSBORE5CT09TVF9QUF9DQVQobSwgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFXzIobSkgTkROQk9PU1RfUFBfQ0FUKG0sIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFXzMobSkgTkROQk9PU1RfUFBfQ0FUKG0sIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfNChtKSBORE5CT09TVF9QUF9DQVQobSwgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKSkpKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfUkVMQVRJVkVfU1RBUlQgJiYgTkROQk9PU1RfUFBfUkVMQVRJVkVfRklOSVNIICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV9TVEFSVChpKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVMQVRJVkVfLCBpKShORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfRklOSVNIKGkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9SRUxBVElWRV8sIGkpKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfKQotIwotIyAvKiBORE5CT09TVF9QUF9SRUxBVElWRV9GTEFHUyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfRkxBR1MoaSkgKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9SRUxBVElWRV8sIGkpKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18pKCkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0lURVJBVEUgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVEUoKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfSVRFUkFURV8sIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRFXzEgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDEuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFURV8yIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQyLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVEVfMyA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMy5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRFXzQgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDQuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFURV81IDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQ1LmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWFjOGFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVElPTl9MT0NBTF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JVEVSQVRJT05fTE9DQUxfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9sb2NhbC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9DKG4pIChORE5CT09TVF9QUF9MT0NBTF9TKSA8PSBuICYmIChORE5CT09TVF9QUF9MT0NBTF9GKSA+PSBuCi0jIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9SKG4pIChORE5CT09TVF9QUF9MT0NBTF9GKSA8PSBuICYmIChORE5CT09TVF9QUF9MT0NBTF9TKSA+PSBuCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vc2VsZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vc2VsZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MTJmOGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL3NlbGYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JVEVSQVRJT05fU0VMRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JVEVSQVRJT05fU0VMRl9IUFAKLSMKLSMgLyogTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvc2VsZi5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3MjU0MWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICoKLSMgICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9BRFRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9BRFRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc19iaW5hcnkuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9jb21wbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0NPTlMgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQ09OUyhoZWFkLCB0YWlsKSAoaGVhZCwgdGFpbCkKLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9OSUwgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfTklMIE5ETkJPT1NUX1BQX05JTAotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0ZJUlNUICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRklSU1RfRChsaXN0KQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZJUlNUX0QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9GSVJTVF9JIGxpc3QKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GSVJTVF9EKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRklSU1RfSSAjIyBsaXN0Ci0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZJUlNUX0koaGVhZCwgdGFpbCkgaGVhZAotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX1JFU1QgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsaXN0KSBORE5CT09TVF9QUF9MSVNUX1JFU1RfRChsaXN0KQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFU1RfRChsaXN0KSBORE5CT09TVF9QUF9MSVNUX1JFU1RfSSBsaXN0Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVTVF9EKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfUkVTVF9JICMjIGxpc3QKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVTVF9JKGhlYWQsIHRhaWwpIHRhaWwKLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9JU19DT05TICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0JDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobGlzdCkgTkROQk9PU1RfUFBfTElTVF9JU19DT05TX0QobGlzdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OU19EKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OU18gIyMgbGlzdAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9JU19DT05TXyhoZWFkLCB0YWlsKSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlNfTkROQk9PU1RfUFBfTklMIDAKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGxpc3QpIE5ETkJPT1NUX1BQX0lTX0JJTkFSWShsaXN0KQotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0lTX05JTCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfQkNDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfSVNfTklMKGxpc3QpIE5ETkJPT1NUX1BQX0NPTVBMKE5ETkJPT1NUX1BQX0lTX0JJTkFSWShsaXN0KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9JU19OSUwobGlzdCkgTkROQk9PU1RfUFBfQ09NUEwoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGxpc3QpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hcHBlbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hcHBlbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGYwMThhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYXBwZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfQVBQRU5EX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfQVBQRU5EX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfcmlnaHQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0FQUEVORCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EKGEsIGIpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVChORE5CT09TVF9QUF9MSVNUX0FQUEVORF9PLCBiLCBhKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0FQUEVORChhLCBiKSBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9JKGEsIGIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9JKGEsIGIpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVChORE5CT09TVF9QUF9MSVNUX0FQUEVORF9PLCBiLCBhKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfTyhkLCBzLCB4KSAoeCwgcykKLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfRCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX0QoZCwgYSwgYikgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXyAjIyBkKE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX08sIGIsIGEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX0QoZCwgYSwgYikgTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfRF9JKGQsIGEsIGIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9EX0koZCwgYSwgYikgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXyAjIyBkKE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX08sIGIsIGEpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9kbWMvZm9sZF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2RtYy9mb2xkX2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDA4OGIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2RtYy9mb2xkX2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc5ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0ZPTERfTEVGVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9GT0xEX0xFRlRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDYwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDYzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDY2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDY5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDcyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDc1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDc4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDgxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDkwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDkzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDk2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDk5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTAxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTA0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTA3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTEwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTEzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTE2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTE5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTIyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTI1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTI4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTMxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTM0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTM3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQ2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQ5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTUyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTU1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTU4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTYxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTY0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTY3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTcwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTczLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTc2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTc5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTgyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTg1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTg4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTkxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTk0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTk3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjAwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjAzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjA2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjA5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnL2ZvbGRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM1NjE4Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9FREdfRk9MRF9MRUZUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0VER19GT0xEX0xFRlRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2X0QobywgcywgbCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDczLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDkxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTEwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTEzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTcwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTczLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnL2ZvbGRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnL2ZvbGRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Njc3NmFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2VkZy9mb2xkX3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5NCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9FREdfRk9MRF9SSUdIVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9FREdfRk9MRF9SSUdIVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzczX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTczX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTZfRChvLCBzLCBsKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgzOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg0OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg1OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg2OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzczLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg3OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg4OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkwLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkyLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkzLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk0LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk1LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk2LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk3LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk4LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSg5OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk5LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMDAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMDEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMDIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMDMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMDQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMDUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMDYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMDcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMDgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMDksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMTAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMTEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMTIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMTMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMTQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMTUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMTYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMTcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMTgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMTksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMjAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMjEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMjIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMjMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMjQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMjUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMjYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMjcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMjgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMjksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMzAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMzEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMzIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMzMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMzQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMzUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMzYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMzcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMzgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxMzksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNDAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNDEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNDIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNDMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNDQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNDUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNDYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNDcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNDgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNDksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNTAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNTEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNTIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNTMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNTQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNTUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNTYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNTcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNTgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNTksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNjAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNjEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNjIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNjMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNjQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNjUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNjYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNjcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNjgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNjksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNzAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNzEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNzIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNzMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNzQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNzUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNzYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNzcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNzgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxNzksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxODAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxODEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxODIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxODMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxODQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxODUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxODYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxODcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxODgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxODksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOTAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOTEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOTIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOTMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOTQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOTUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOTYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOTcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOTgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgxOTksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMDAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMDEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMDIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMDMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMDQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMDUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMDYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMDcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMDgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMDksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMTAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMTEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMTIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMTMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMTQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMTUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMTYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMTcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMTgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMTksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMjAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMjEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMjIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMjMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMjQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMjUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMjYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMjcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMjgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMjksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMzAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMzEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMzIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMzMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMzQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMzUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMzYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMzcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMzgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyMzksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNDAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNDEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNDIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNDMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNDQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNDUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNDYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNDcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNDgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNDksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNTAsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNTEsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNTIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNTMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNTQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNTUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNTYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyNTcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9OSUwgMQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTYobywgcywgbCkgMAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZm9sZF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyOTgwZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZm9sZF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9GT0xEX0xFRlRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRk9MRF9MRUZUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDkwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDkzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTEwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTEzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTcwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTczLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZm9sZF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmExZjA0NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9GT0xEX1JJR0hUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0ZPTERfUklHSFRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfbGVmdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3JldmVyc2UuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDMxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDM0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDM3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQ2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQ5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDUyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDU1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDU4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDYxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDY0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDY3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDcwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDczLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDc2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDc5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDgyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDg1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDg4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDkxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDk0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDk3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTAwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTAzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTA2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTA5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTEyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTE1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTE4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTIxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTI0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTI3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTMwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTMzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTM2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTM5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQ1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQ4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTUxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTU0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTU3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTYwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTYzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTY2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTY5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTcyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTc1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTc4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTgxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTg0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTg3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTkwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTkzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTk2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTk5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjAyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjA1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjA4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjExLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjE0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjE3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjIwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjIzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjI2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjI5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjMyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjM1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjM4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQ0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQ3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjUwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI1MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNTIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjUzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI1NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNTUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjU2LCBsKSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE2ZDNiNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDMgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9GT0xEX0xFRlRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9GT0xEX0xFRlRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVCAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVChvcCwgc3RhdGUsIGxpc3QpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9XSElMRV9QLCAyNTYpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwNCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0QoZCwgbywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfICMjIGQobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzJORCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMk5EX0QgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfRAotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnL2ZvbGRfbGVmdC5ocHA+Ci0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRE1DKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2RtYy9mb2xkX2xlZnQuaHBwPgotIyBlbHNlCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX2xlZnQuaHBwPgotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTklMIDEKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NihvLCBzLCBsKSAwCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ4NTU5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9GT0xEX1JJR0hUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfRk9MRF9SSUdIVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVChvcCwgc3RhdGUsIGxpc3QpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFQgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NikpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwNCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9EKGQsIG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8gIyMgZChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzJORCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yTkRfRCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfRAotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnL2ZvbGRfcmlnaHQuaHBwPgotIyBlbHNlCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX3JpZ2h0LmhwcD4KLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9yX2VhY2hfaS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2Zvcl9lYWNoX2kuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGVhNDNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9yX2VhY2hfaS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0xJU1RfRk9SX0VBQ0hfSV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0xJU1RfRk9SX0VBQ0hfSV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9mb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0kgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpICYmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSShtYWNybywgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfRk9SKChtYWNybywgZGF0YSwgbGlzdCwgMCksIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9QLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTywgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX00pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSShtYWNybywgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX0kobWFjcm8sIGRhdGEsIGxpc3QpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfSShtYWNybywgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfRk9SKChtYWNybywgZGF0YSwgbGlzdCwgMCksIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9QLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTywgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX00pCi0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUChyLCB4KSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUF9EIHgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9QX0QobSwgZCwgbCwgaSkgTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9QKHIsIHgpIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIHgpKQotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTyhyLCB4KSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfT19EIHgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PX0QobSwgZCwgbCwgaSkgKG0sIGQsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSwgTkROQk9PU1RfUFBfSU5DKGkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTyhyLCB4KSAoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAwLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAxLCB4KSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgeCkpLCBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAzLCB4KSkpCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX00ociwgeCkgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX01fRChyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDAsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDEsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDMsIHgpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTShyLCB4KSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTV9JKHIsIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80IHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTV9JKHIsIHhfZSkgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX01fRChyLCB4X2UpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTV9EKHIsIG0sIGQsIGwsIGkpIG0ociwgZCwgaSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1IgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUihyLCBtYWNybywgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfRk9SXyAjIyByKChtYWNybywgZGF0YSwgbGlzdCwgMCksIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9QLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTywgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX00pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SKHIsIG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUl9JKHIsIG1hY3JvLCBkYXRhLCBsaXN0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1JfSShyLCBtYWNybywgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfRk9SXyAjIyByKChtYWNybywgZGF0YSwgbGlzdCwgMCksIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9QLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTywgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX00pCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3JldmVyc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9yZXZlcnNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYxZWFiNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3JldmVyc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9SRVZFUlNFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfUkVWRVJTRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX2xlZnQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0UgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0UobGlzdCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlQoTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX08sIE5ETkJPT1NUX1BQX05JTCwgbGlzdCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9JKGxpc3QpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfSShsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVChORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfTywgTkROQk9PU1RfUFBfTklMLCBsaXN0KQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX08oZCwgcywgeCkgKHgsIHMpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoZCwgbGlzdCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfICMjIGQoTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX08sIE5ETkJPT1NUX1BQX05JTCwgbGlzdCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoZCwgbGlzdCkgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0RfSShkLCBsaXN0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0RfSShkLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8gIyMgZChORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfTywgTkROQk9PU1RfUFBfTklMLCBsaXN0KQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC90cmFuc2Zvcm0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC90cmFuc2Zvcm0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmQ1NjRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvdHJhbnNmb3JtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfVFJBTlNGT1JNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfVFJBTlNGT1JNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfcmlnaHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNKG9wLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVChORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIE5ETkJPT1NUX1BQX05JTCksIGxpc3QpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STShvcCwgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fSShvcCwgZGF0YSwgbGlzdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX0kob3AsIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUKE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgTkROQk9PU1RfUFBfTklMKSwgbGlzdCkpCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fTyhkLCBvZHIsIGVsZW0pIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX09fRChkLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIG9kciksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgb2RyKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBvZHIpLCBlbGVtKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PKGQsIG9kciwgZWxlbSkgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fT19JKGQsIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zIG9kciwgZWxlbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX09fSShkLCBpbSwgZWxlbSkgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fT19EKGQsIGltLCBlbGVtKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fT19EKGQsIG9wLCBkYXRhLCByZXMsIGVsZW0pIChvcCwgZGF0YSwgKG9wKGQsIGRhdGEsIGVsZW0pLCByZXMpKQotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fRChkLCBvcCwgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfICMjIGQoTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fTywgKG9wLCBkYXRhLCBORE5CT09TVF9QUF9OSUwpLCBsaXN0KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fRChkLCBvcCwgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fRF9JKGQsIG9wLCBkYXRhLCBsaXN0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fRF9JKGQsIG9wLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8gIyMgZChORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIE5ETkJPT1NUX1BQX05JTCksIGxpc3QpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTMyOWNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQU5EX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQU5EX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9iaXRhbmQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BTkQgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BTkQocCwgcSkgTkROQk9PU1RfUFBfQklUQU5EKE5ETkJPT1NUX1BQX0JPT0wocCksIE5ETkJPT1NUX1BQX0JPT0wocSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FORChwLCBxKSBORE5CT09TVF9QUF9BTkRfSShwLCBxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQU5EX0kocCwgcSkgTkROQk9PU1RfUFBfQklUQU5EKE5ETkJPT1NUX1BQX0JPT0wocCksIE5ETkJPT1NUX1BQX0JPT0wocSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NzlmMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0JJVEFORF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0JJVEFORF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9CSVRBTkQgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EKHgsIHkpIE5ETkJPT1NUX1BQX0JJVEFORF9JKHgsIHkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORCh4LCB5KSBORE5CT09TVF9QUF9CSVRBTkRfT08oKHgsIHkpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EX09PKHBhcikgTkROQk9PU1RfUFBfQklUQU5EX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORF9JKHgsIHkpIE5ETkJPT1NUX1BQX0JJVEFORF8gIyMgeCAjIyB5Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORF9JKHgsIHkpIE5ETkJPT1NUX1BQX0JJVEFORF9JRChORE5CT09TVF9QUF9CSVRBTkRfICMjIHggIyMgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORF9JRChyZXMpIHJlcwotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EXzAwIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORF8wMSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfMTAgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EXzExIDEKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NGFkNTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQklUT1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9CSVRPUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9CSVRPUiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUih4LCB5KSBORE5CT09TVF9QUF9CSVRPUl9JKHgsIHkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SKHgsIHkpIE5ETkJPT1NUX1BQX0JJVE9SX09PKCh4LCB5KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SX09PKHBhcikgTkROQk9PU1RfUFBfQklUT1JfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfSSh4LCB5KSBORE5CT09TVF9QUF9CSVRPUl8gIyMgeCAjIyB5Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SX0koeCwgeSkgTkROQk9PU1RfUFBfQklUT1JfSUQoTkROQk9PU1RfUFBfQklUT1JfICMjIHggIyMgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SX0lEKGlkKSBpZAotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfMDAgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfMDEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfMTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfMTEgMQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNDVkZDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0JPT0xfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9CT09MX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0JPT0wgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTCh4KSBORE5CT09TVF9QUF9CT09MX0koeCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTCh4KSBORE5CT09TVF9QUF9CT09MX09PKCh4KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfT08ocGFyKSBORE5CT09TVF9QUF9CT09MX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MX0koeCkgTkROQk9PU1RfUFBfQk9PTF8gIyMgeAotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8wIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzEyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzMwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzMzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzM2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzM5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQ1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQ4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzUxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzU0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzU3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzYwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzYzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzY2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzY5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzcyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzc1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzc4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzgxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzg0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzg3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzkwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzkzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzk2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzk5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTAwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTAxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTAyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTAzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTA0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTA1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTA2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTA3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTA4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTA5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTEwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTExIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTEyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTEzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTE0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTE1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTE2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTE3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTE4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTE5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTIwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTIxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTIyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTIzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTI0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTI1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTI2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTI3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTI4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTI5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTMwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTMxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTMyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTMzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTM0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTM1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTM2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTM3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTM4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTM5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQ0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQ1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQ2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQ3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQ4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTQ5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTUwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTUxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTUyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTUzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTU0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTU1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTU2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTU3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTU4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTU5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTYwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTYxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTYyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTYzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTY0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTY1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTY2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTY3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTY4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTY5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTcwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTcxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTcyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTczIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTc0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTc1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTc2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTc3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTc4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTc5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTgwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTgxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTgyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTgzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTg0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTg1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTg2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTg3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTg4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTg5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTkwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTkxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTkyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTkzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTk0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTk1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTk2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTk3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTk4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTk5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjAwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjAxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjAyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjAzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjA0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjA1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjA2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjA3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjA4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjA5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjEwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjExIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjEyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjEzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjE0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjE1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjE2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjE3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjE4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjE5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjIwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjIxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjIyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjIzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjI0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjI1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjI2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjI3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjI4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjI5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjMwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjMxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjMyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjMzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjM0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjM1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjM2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjM3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjM4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjM5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQ0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQ1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQ2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQ3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQ4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQ5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjUwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjUxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjUyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjUzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjU0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjU1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjU2IDEKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvY29tcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9jb21wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2YjRjNmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9jb21wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQ09NUExfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9DT01QTF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9DT01QTCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01QTCh4KSBORE5CT09TVF9QUF9DT01QTF9JKHgpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMKHgpIE5ETkJPT1NUX1BQX0NPTVBMX09PKCh4KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMX09PKHBhcikgTkROQk9PU1RfUFBfQ09NUExfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUExfSSh4KSBORE5CT09TVF9QUF9DT01QTF8gIyMgeAotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01QTF9JKHgpIE5ETkJPT1NUX1BQX0NPTVBMX0lEKE5ETkJPT1NUX1BQX0NPTVBMXyAjIyB4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUExfSUQoaWQpIGlkCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT01QTF8wIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMXzEgMAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ub3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ub3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzkyMTBlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvbm90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfTk9UX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfTk9UX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9jb21wbC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX05PVCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PVCh4KSBORE5CT09TVF9QUF9DT01QTChORE5CT09TVF9QUF9CT09MKHgpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9OT1QoeCkgTkROQk9PU1RfUFBfTk9UX0koeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PVF9JKHgpIE5ETkJPT1NUX1BQX0NPTVBMKE5ETkJPT1NUX1BQX0JPT0woeCkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjM5ZWYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9PUl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX09SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9iaXRvci5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX09SICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfT1IocCwgcSkgTkROQk9PU1RfUFBfQklUT1IoTkROQk9PU1RfUFBfQk9PTChwKSwgTkROQk9PU1RfUFBfQk9PTChxKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfT1IocCwgcSkgTkROQk9PU1RfUFBfT1JfSShwLCBxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfT1JfSShwLCBxKSBORE5CT09TVF9QUF9CSVRPUihORE5CT09TVF9QUF9CT09MKHApLCBORE5CT09TVF9QUF9CT09MKHEpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzFhMzM0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1BVTkNUVUFUSU9OX0NPTU1BX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1BVTkNUVUFUSU9OX0NPTU1BX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9DT01NQSAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09NTUEoKSAsCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NWIwYmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUFVOQ1RVQVRJT05fQ09NTUFfSUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUFVOQ1RVQVRJT05fQ09NTUFfSUZfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0NPTU1BX0lGICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NTUFfSUYoY29uZCkgTkROQk9PU1RfUFBfSUYoY29uZCwgTkROQk9PU1RfUFBfQ09NTUEsIE5ETkJPT1NUX1BQX0VNUFRZKSgpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGNvbmQpIE5ETkJPT1NUX1BQX0NPTU1BX0lGX0koY29uZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTU1BX0lGX0koY29uZCkgTkROQk9PU1RfUFBfSUYoY29uZCwgTkROQk9PU1RfUFBfQ09NTUEsIE5ETkJPT1NUX1BQX0VNUFRZKSgpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9wYXJlbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9wYXJlbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMzNmZWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vcGFyZW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9QVU5DVFVBVElPTl9QQVJFTl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9QVU5DVFVBVElPTl9QQVJFTl9IUFAKLSMKLSMgLyogTkROQk9PU1RfUFBfTFBBUkVOICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MUEFSRU4oKSAoCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1JQQVJFTiAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUlBBUkVOKCkgKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MzhjYmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRUFUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVBVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdF8ybmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0XzJuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MDNiOWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0XzJuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVBVF8yTkRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRUFUXzJORF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdF9mcm9tX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdF9mcm9tX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTljOGE1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfZnJvbV90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVBVF9GUk9NX1RPX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVBVF9GUk9NX1RPX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9kbWMvZm9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2RtYy9mb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODMwNjc1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2RtYy9mb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX0ZPUl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0RFVEFJTF9GT1JfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygzOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNThfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDcyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDkwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDkzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTExX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTEyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTcyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTkwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTkzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjExLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjU2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTcsIHMpKSwgcywgcCwgbywgbSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzcyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDczLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzkwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDkxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzkzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTExLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTExX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTcyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTkwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTkzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTcsIHMpLCBwLCBvLCBtKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZWRnL2Zvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9lZGcvZm9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE3NTAzMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9lZGcvZm9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0RFVEFJTF9FREdfRk9SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX0VER19GT1JfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzczX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOThfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMThfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTczX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTZfSShzLCBwLCBvLCBtKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMiwgcykgTkROQk9PU1RfUFBfSUYocCgyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMywgcykgTkROQk9PU1RfUFBfSUYocCgzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNCwgcykgTkROQk9PU1RfUFBfSUYocCg0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNSwgcykgTkROQk9PU1RfUFBfSUYocCg1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNiwgcykgTkROQk9PU1RfUFBfSUYocCg2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNywgcykgTkROQk9PU1RfUFBfSUYocCg3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOCwgcykgTkROQk9PU1RfUFBfSUYocCg4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOSwgcykgTkROQk9PU1RfUFBfSUYocCg5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwLCBzKSBORE5CT09TVF9QUF9JRihwKDEwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExLCBzKSBORE5CT09TVF9QUF9JRihwKDExLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyLCBzKSBORE5CT09TVF9QUF9JRihwKDEyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzLCBzKSBORE5CT09TVF9QUF9JRihwKDEzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0LCBzKSBORE5CT09TVF9QUF9JRihwKDE0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1LCBzKSBORE5CT09TVF9QUF9JRihwKDE1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2LCBzKSBORE5CT09TVF9QUF9JRihwKDE2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3LCBzKSBORE5CT09TVF9QUF9JRihwKDE3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4LCBzKSBORE5CT09TVF9QUF9JRihwKDE4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMThfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5LCBzKSBORE5CT09TVF9QUF9JRihwKDE5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwLCBzKSBORE5CT09TVF9QUF9JRihwKDIwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxLCBzKSBORE5CT09TVF9QUF9JRihwKDIxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyLCBzKSBORE5CT09TVF9QUF9JRihwKDIyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzLCBzKSBORE5CT09TVF9QUF9JRihwKDIzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0LCBzKSBORE5CT09TVF9QUF9JRihwKDI0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1LCBzKSBORE5CT09TVF9QUF9JRihwKDI1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI2LCBzKSBORE5CT09TVF9QUF9JRihwKDI2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI3LCBzKSBORE5CT09TVF9QUF9JRihwKDI3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI4LCBzKSBORE5CT09TVF9QUF9JRihwKDI4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI5LCBzKSBORE5CT09TVF9QUF9JRihwKDI5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMwLCBzKSBORE5CT09TVF9QUF9JRihwKDMwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMxLCBzKSBORE5CT09TVF9QUF9JRihwKDMxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMyLCBzKSBORE5CT09TVF9QUF9JRihwKDMyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMzLCBzKSBORE5CT09TVF9QUF9JRihwKDMzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM0LCBzKSBORE5CT09TVF9QUF9JRihwKDM0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM1LCBzKSBORE5CT09TVF9QUF9JRihwKDM1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM2LCBzKSBORE5CT09TVF9QUF9JRihwKDM2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM3LCBzKSBORE5CT09TVF9QUF9JRihwKDM3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM4LCBzKSBORE5CT09TVF9QUF9JRihwKDM4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM5LCBzKSBORE5CT09TVF9QUF9JRihwKDM5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQwLCBzKSBORE5CT09TVF9QUF9JRihwKDQwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQxLCBzKSBORE5CT09TVF9QUF9JRihwKDQxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQyLCBzKSBORE5CT09TVF9QUF9JRihwKDQyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQzLCBzKSBORE5CT09TVF9QUF9JRihwKDQzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ0LCBzKSBORE5CT09TVF9QUF9JRihwKDQ0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ1LCBzKSBORE5CT09TVF9QUF9JRihwKDQ1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ2LCBzKSBORE5CT09TVF9QUF9JRihwKDQ2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ3LCBzKSBORE5CT09TVF9QUF9JRihwKDQ3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ4LCBzKSBORE5CT09TVF9QUF9JRihwKDQ4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ5LCBzKSBORE5CT09TVF9QUF9JRihwKDQ5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUwLCBzKSBORE5CT09TVF9QUF9JRihwKDUwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUxLCBzKSBORE5CT09TVF9QUF9JRihwKDUxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUyLCBzKSBORE5CT09TVF9QUF9JRihwKDUyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUzLCBzKSBORE5CT09TVF9QUF9JRihwKDUzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU0LCBzKSBORE5CT09TVF9QUF9JRihwKDU0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU1LCBzKSBORE5CT09TVF9QUF9JRihwKDU1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU2LCBzKSBORE5CT09TVF9QUF9JRihwKDU2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU3LCBzKSBORE5CT09TVF9QUF9JRihwKDU3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU4LCBzKSBORE5CT09TVF9QUF9JRihwKDU4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNThfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU5LCBzKSBORE5CT09TVF9QUF9JRihwKDU5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYwLCBzKSBORE5CT09TVF9QUF9JRihwKDYwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzYwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYxLCBzKSBORE5CT09TVF9QUF9JRihwKDYxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYyLCBzKSBORE5CT09TVF9QUF9JRihwKDYyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYzLCBzKSBORE5CT09TVF9QUF9JRihwKDYzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzYzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY0LCBzKSBORE5CT09TVF9QUF9JRihwKDY0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY1LCBzKSBORE5CT09TVF9QUF9JRihwKDY1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY2LCBzKSBORE5CT09TVF9QUF9JRihwKDY2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY3LCBzKSBORE5CT09TVF9QUF9JRihwKDY3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY4LCBzKSBORE5CT09TVF9QUF9JRihwKDY4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY5LCBzKSBORE5CT09TVF9QUF9JRihwKDY5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDcwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcwLCBzKSBORE5CT09TVF9QUF9JRihwKDcwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDcxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcxLCBzKSBORE5CT09TVF9QUF9JRihwKDcxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDcyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcyLCBzKSBORE5CT09TVF9QUF9JRihwKDcyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzcyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDczLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDczLCBzKSBORE5CT09TVF9QUF9JRihwKDczLCBzKSwgTkROQk9PU1RfUFBfRk9SXzczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc0LCBzKSBORE5CT09TVF9QUF9JRihwKDc0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc1LCBzKSBORE5CT09TVF9QUF9JRihwKDc1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc2LCBzKSBORE5CT09TVF9QUF9JRihwKDc2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc3LCBzKSBORE5CT09TVF9QUF9JRihwKDc3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc4LCBzKSBORE5CT09TVF9QUF9JRihwKDc4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc5LCBzKSBORE5CT09TVF9QUF9JRihwKDc5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgwLCBzKSBORE5CT09TVF9QUF9JRihwKDgwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgxLCBzKSBORE5CT09TVF9QUF9JRihwKDgxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzgxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgyLCBzKSBORE5CT09TVF9QUF9JRihwKDgyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgzLCBzKSBORE5CT09TVF9QUF9JRihwKDgzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg0LCBzKSBORE5CT09TVF9QUF9JRihwKDg0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg1LCBzKSBORE5CT09TVF9QUF9JRihwKDg1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg2LCBzKSBORE5CT09TVF9QUF9JRihwKDg2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg3LCBzKSBORE5CT09TVF9QUF9JRihwKDg3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg4LCBzKSBORE5CT09TVF9QUF9JRihwKDg4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg5LCBzKSBORE5CT09TVF9QUF9JRihwKDg5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDkwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkwLCBzKSBORE5CT09TVF9QUF9JRihwKDkwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzkwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDkxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkxLCBzKSBORE5CT09TVF9QUF9JRihwKDkxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDkyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkyLCBzKSBORE5CT09TVF9QUF9JRihwKDkyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDkzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkzLCBzKSBORE5CT09TVF9QUF9JRihwKDkzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzkzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk0LCBzKSBORE5CT09TVF9QUF9JRihwKDk0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk1LCBzKSBORE5CT09TVF9QUF9JRihwKDk1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk2LCBzKSBORE5CT09TVF9QUF9JRihwKDk2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk3LCBzKSBORE5CT09TVF9QUF9JRihwKDk3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk4LCBzKSBORE5CT09TVF9QUF9JRihwKDk4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOThfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk5LCBzKSBORE5CT09TVF9QUF9JRihwKDk5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTExLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMThfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNThfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTcwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTczLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTczLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTkxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOThfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjExLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMThfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDdfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDhfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDlfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTBfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTFfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTJfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTNfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTRfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTVfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTZfSShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjU3LCBzKSwgcCwgbywgbSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2Zvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9mb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWYzNzU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2Zvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfRk9SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX0ZPUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfM19DKE5ETkJPT1NUX1BQX0JPT0wocCg0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNF9DKE5ETkJPT1NUX1BQX0JPT0wocCg1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNV9DKE5ETkJPT1NUX1BQX0JPT0wocCg2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNl9DKE5ETkJPT1NUX1BQX0JPT0wocCg3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfN19DKE5ETkJPT1NUX1BQX0JPT0wocCg4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOF9DKE5ETkJPT1NUX1BQX0JPT0wocCg5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgzMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgzMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgzMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgzMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zM19DKE5ETkJPT1NUX1BQX0JPT0wocCgzNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgzNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgzNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgzNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zN19DKE5ETkJPT1NUX1BQX0JPT0wocCgzOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgzOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zOV9DKE5ETkJPT1NUX1BQX0JPT0wocCg0MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg0MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg0MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg0MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80M19DKE5ETkJPT1NUX1BQX0JPT0wocCg0NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg0NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg0NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg0NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80N19DKE5ETkJPT1NUX1BQX0JPT0wocCg0OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg0OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg1MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg1MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg1MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg1MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81M19DKE5ETkJPT1NUX1BQX0JPT0wocCg1NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg1NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg1NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg1NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81N19DKE5ETkJPT1NUX1BQX0JPT0wocCg1OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg1OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg2MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg2MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg2MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg2MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82M19DKE5ETkJPT1NUX1BQX0JPT0wocCg2NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg2NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg2NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg2NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82N19DKE5ETkJPT1NUX1BQX0JPT0wocCg2OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg2OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg3MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg3MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg3MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg3MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83M19DKE5ETkJPT1NUX1BQX0JPT0wocCg3NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg3NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg3NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg3NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83N19DKE5ETkJPT1NUX1BQX0JPT0wocCg3OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg3OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg4MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg4MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg4MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg4MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84M19DKE5ETkJPT1NUX1BQX0JPT0wocCg4NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg4NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg4NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg4NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84N19DKE5ETkJPT1NUX1BQX0JPT0wocCg4OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg4OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg5MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg5MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg5MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg5MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85M19DKE5ETkJPT1NUX1BQX0JPT0wocCg5NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg5NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg5NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg5NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85N19DKE5ETkJPT1NUX1BQX0JPT0wocCg5OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg5OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxODQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxODgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0M19DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0N19DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1M19DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTcsIHMpKSwgcywgcCwgbywgbSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzcyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDczLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzkwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDkxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzkzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTExLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTExX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTcyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTkwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTkzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTcsIHMpLCBwLCBvLCBtKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvbXN2Yy9mb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvbXN2Yy9mb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGVmYjY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL21zdmMvZm9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0RFVEFJTF9NU1ZDX0ZPUl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0RFVEFJTF9NU1ZDX0ZPUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyLCBzKSBORE5CT09TVF9QUF9JRihwKDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMywgcykgTkROQk9PU1RfUFBfSUYocCgzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl80LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1LCBzKSBORE5CT09TVF9QUF9JRihwKDUsIHMpLCBORE5CT09TVF9QUF9GT1JfNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNiwgcykgTkROQk9PU1RfUFBfSUYocCg2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNywgcyksIE5ETkJPT1NUX1BQX0ZPUl83LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4LCBzKSBORE5CT09TVF9QUF9JRihwKDgsIHMpLCBORE5CT09TVF9QUF9GT1JfOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOSwgcykgTkROQk9PU1RfUFBfSUYocCg5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyLCBzKSBORE5CT09TVF9QUF9JRihwKDEyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMywgcykgTkROQk9PU1RfUFBfSUYocCgxMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1LCBzKSBORE5CT09TVF9QUF9JRihwKDE1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNiwgcykgTkROQk9PU1RfUFBfSUYocCgxNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4LCBzKSBORE5CT09TVF9QUF9JRihwKDE4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOSwgcykgTkROQk9PU1RfUFBfSUYocCgxOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxLCBzKSBORE5CT09TVF9QUF9JRihwKDIxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0LCBzKSBORE5CT09TVF9QUF9JRihwKDI0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNSwgcykgTkROQk9PU1RfUFBfSUYocCgyNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI3LCBzKSBORE5CT09TVF9QUF9JRihwKDI3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOCwgcykgTkROQk9PU1RfUFBfSUYocCgyOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjksIHMpLCBORE5CT09TVF9QUF9GT1JfMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMwLCBzKSBORE5CT09TVF9QUF9JRihwKDMwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMSwgcykgTkROQk9PU1RfUFBfSUYocCgzMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMzLCBzKSBORE5CT09TVF9QUF9JRihwKDMzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNCwgcykgTkROQk9PU1RfUFBfSUYocCgzNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM2LCBzKSBORE5CT09TVF9QUF9JRihwKDM2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNywgcykgTkROQk9PU1RfUFBfSUYocCgzNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8zNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM5LCBzKSBORE5CT09TVF9QUF9JRihwKDM5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MCwgcykgTkROQk9PU1RfUFBfSUYocCg0MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl80MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDEsIHMpLCBORE5CT09TVF9QUF9GT1JfNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQyLCBzKSBORE5CT09TVF9QUF9JRihwKDQyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MywgcykgTkROQk9PU1RfUFBfSUYocCg0MywgcyksIE5ETkJPT1NUX1BQX0ZPUl80MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDQsIHMpLCBORE5CT09TVF9QUF9GT1JfNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ1LCBzKSBORE5CT09TVF9QUF9JRihwKDQ1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NiwgcykgTkROQk9PU1RfUFBfSUYocCg0NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl80NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDcsIHMpLCBORE5CT09TVF9QUF9GT1JfNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ4LCBzKSBORE5CT09TVF9QUF9JRihwKDQ4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OSwgcykgTkROQk9PU1RfUFBfSUYocCg0OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl80OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTAsIHMpLCBORE5CT09TVF9QUF9GT1JfNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUxLCBzKSBORE5CT09TVF9QUF9JRihwKDUxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MiwgcykgTkROQk9PU1RfUFBfSUYocCg1MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl81MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTMsIHMpLCBORE5CT09TVF9QUF9GT1JfNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU0LCBzKSBORE5CT09TVF9QUF9JRihwKDU0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NSwgcykgTkROQk9PU1RfUFBfSUYocCg1NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl81NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTYsIHMpLCBORE5CT09TVF9QUF9GT1JfNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU3LCBzKSBORE5CT09TVF9QUF9JRihwKDU3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OCwgcykgTkROQk9PU1RfUFBfSUYocCg1OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl81OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTksIHMpLCBORE5CT09TVF9QUF9GT1JfNTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYwLCBzKSBORE5CT09TVF9QUF9JRihwKDYwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzYwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MSwgcykgTkROQk9PU1RfUFBfSUYocCg2MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl82MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjIsIHMpLCBORE5CT09TVF9QUF9GT1JfNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYzLCBzKSBORE5CT09TVF9QUF9JRihwKDYzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzYzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NCwgcykgTkROQk9PU1RfUFBfSUYocCg2NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl82NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjUsIHMpLCBORE5CT09TVF9QUF9GT1JfNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY2LCBzKSBORE5CT09TVF9QUF9JRihwKDY2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NywgcykgTkROQk9PU1RfUFBfSUYocCg2NywgcyksIE5ETkJPT1NUX1BQX0ZPUl82NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjgsIHMpLCBORE5CT09TVF9QUF9GT1JfNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY5LCBzKSBORE5CT09TVF9QUF9JRihwKDY5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MCwgcykgTkROQk9PU1RfUFBfSUYocCg3MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl83MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzEsIHMpLCBORE5CT09TVF9QUF9GT1JfNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDcyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcyLCBzKSBORE5CT09TVF9QUF9JRihwKDcyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzcyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MywgcykgTkROQk9PU1RfUFBfSUYocCg3MywgcyksIE5ETkJPT1NUX1BQX0ZPUl83MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzQsIHMpLCBORE5CT09TVF9QUF9GT1JfNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc1LCBzKSBORE5CT09TVF9QUF9JRihwKDc1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NiwgcykgTkROQk9PU1RfUFBfSUYocCg3NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl83NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzcsIHMpLCBORE5CT09TVF9QUF9GT1JfNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc4LCBzKSBORE5CT09TVF9QUF9JRihwKDc4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OSwgcykgTkROQk9PU1RfUFBfSUYocCg3OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl83OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODAsIHMpLCBORE5CT09TVF9QUF9GT1JfODAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgxLCBzKSBORE5CT09TVF9QUF9JRihwKDgxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzgxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MiwgcykgTkROQk9PU1RfUFBfSUYocCg4MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl84MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODMsIHMpLCBORE5CT09TVF9QUF9GT1JfODMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg0LCBzKSBORE5CT09TVF9QUF9JRihwKDg0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NSwgcykgTkROQk9PU1RfUFBfSUYocCg4NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl84NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODYsIHMpLCBORE5CT09TVF9QUF9GT1JfODYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg3LCBzKSBORE5CT09TVF9QUF9JRihwKDg3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OCwgcykgTkROQk9PU1RfUFBfSUYocCg4OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl84OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODksIHMpIE5ETkJPT1NUX1BQX0lGKHAoODksIHMpLCBORE5CT09TVF9QUF9GT1JfODksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDkwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkwLCBzKSBORE5CT09TVF9QUF9JRihwKDkwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzkwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MSwgcykgTkROQk9PU1RfUFBfSUYocCg5MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl85MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTIsIHMpLCBORE5CT09TVF9QUF9GT1JfOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDkzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkzLCBzKSBORE5CT09TVF9QUF9JRihwKDkzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzkzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NCwgcykgTkROQk9PU1RfUFBfSUYocCg5NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl85NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTUsIHMpLCBORE5CT09TVF9QUF9GT1JfOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk2LCBzKSBORE5CT09TVF9QUF9JRihwKDk2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NywgcykgTkROQk9PU1RfUFBfSUYocCg5NywgcyksIE5ETkJPT1NUX1BQX0ZPUl85NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTgsIHMpLCBORE5CT09TVF9QUF9GT1JfOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk5LCBzKSBORE5CT09TVF9QUF9JRihwKDk5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAwLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAzLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA2LCBzKSBORE5CT09TVF9QUF9JRihwKDEwNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNywgcykgTkROQk9PU1RfUFBfSUYocCgxMDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA5LCBzKSBORE5CT09TVF9QUF9JRihwKDEwOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTExLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEyLCBzKSBORE5CT09TVF9QUF9JRihwKDExMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMywgcykgTkROQk9PU1RfUFBfSUYocCgxMTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE1LCBzKSBORE5CT09TVF9QUF9JRihwKDExNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE4LCBzKSBORE5CT09TVF9QUF9JRihwKDExOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIxLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI0LCBzKSBORE5CT09TVF9QUF9JRihwKDEyNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI3LCBzKSBORE5CT09TVF9QUF9JRihwKDEyNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMwLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMzLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM2LCBzKSBORE5CT09TVF9QUF9JRihwKDEzNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNywgcykgTkROQk9PU1RfUFBfSUYocCgxMzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM5LCBzKSBORE5CT09TVF9QUF9JRihwKDEzOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQyLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MywgcykgTkROQk9PU1RfUFBfSUYocCgxNDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ1LCBzKSBORE5CT09TVF9QUF9JRihwKDE0NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ4LCBzKSBORE5CT09TVF9QUF9JRihwKDE0OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNDksIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUxLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU0LCBzKSBORE5CT09TVF9QUF9JRihwKDE1NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU3LCBzKSBORE5CT09TVF9QUF9JRihwKDE1NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYwLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYzLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY2LCBzKSBORE5CT09TVF9QUF9JRihwKDE2NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NywgcykgTkROQk9PU1RfUFBfSUYocCgxNjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY5LCBzKSBORE5CT09TVF9QUF9JRihwKDE2OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcyLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTczLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MywgcykgTkROQk9PU1RfUFBfSUYocCgxNzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc1LCBzKSBORE5CT09TVF9QUF9JRihwKDE3NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc4LCBzKSBORE5CT09TVF9QUF9JRihwKDE3OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNzksIHMpLCBORE5CT09TVF9QUF9GT1JfMTc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgxLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MiwgcykgTkROQk9PU1RfUFBfSUYocCgxODIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg0LCBzKSBORE5CT09TVF9QUF9JRihwKDE4NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NSwgcykgTkROQk9PU1RfUFBfSUYocCgxODUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg3LCBzKSBORE5CT09TVF9QUF9JRihwKDE4NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OCwgcykgTkROQk9PU1RfUFBfSUYocCgxODgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkwLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MSwgcykgTkROQk9PU1RfUFBfSUYocCgxOTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkzLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NCwgcykgTkROQk9PU1RfUFBfSUYocCgxOTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk2LCBzKSBORE5CT09TVF9QUF9JRihwKDE5NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NywgcykgTkROQk9PU1RfUFBfSUYocCgxOTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk5LCBzKSBORE5CT09TVF9QUF9JRihwKDE5OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAyLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMywgcykgTkROQk9PU1RfUFBfSUYocCgyMDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA1LCBzKSBORE5CT09TVF9QUF9JRihwKDIwNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA4LCBzKSBORE5CT09TVF9QUF9JRihwKDIwOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMDksIHMpLCBORE5CT09TVF9QUF9GT1JfMjA5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjExLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE0LCBzKSBORE5CT09TVF9QUF9JRihwKDIxNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE3LCBzKSBORE5CT09TVF9QUF9JRihwKDIxNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIwLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIzLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI2LCBzKSBORE5CT09TVF9QUF9JRihwKDIyNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNywgcykgTkROQk9PU1RfUFBfSUYocCgyMjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI5LCBzKSBORE5CT09TVF9QUF9JRihwKDIyOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMyLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMywgcykgTkROQk9PU1RfUFBfSUYocCgyMzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM1LCBzKSBORE5CT09TVF9QUF9JRihwKDIzNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM4LCBzKSBORE5CT09TVF9QUF9JRihwKDIzOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMzksIHMpLCBORE5CT09TVF9QUF9GT1JfMjM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQxLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MiwgcykgTkROQk9PU1RfUFBfSUYocCgyNDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ0LCBzKSBORE5CT09TVF9QUF9JRihwKDI0NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NSwgcykgTkROQk9PU1RfUFBfSUYocCgyNDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ3LCBzKSBORE5CT09TVF9QUF9JRihwKDI0NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OCwgcykgTkROQk9PU1RfUFBfSUYocCgyNDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUwLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MSwgcykgTkROQk9PU1RfUFBfSUYocCgyNTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUzLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NCwgcykgTkROQk9PU1RfUFBfSUYocCgyNTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU2LCBzKSBORE5CT09TVF9QUF9JRihwKDI1NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NywgcykgTkROQk9PU1RfUFBfSUYocCgyNTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTcsIHMpLCBwLCBvLCBtKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNWNiMWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU0oY291bnQsIG1hY3JvLCBkYXRhKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfRU5VTV8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1JFUEVBVF9QLCA0KSkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzEoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzEoYywgTkROQk9PU1RfUFBfRU5VTV9NXzEsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMihjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMihjLCBORE5CT09TVF9QUF9FTlVNX01fMiwgKG0sIGQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8zKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zKGMsIE5ETkJPT1NUX1BQX0VOVU1fTV8zLCAobSwgZCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMShjLCBtLCBkKSBORE5CT09TVF9QUF9FTlVNXzFfSShjLCBtLCBkKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8yKGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VOVU1fMl9JKGMsIG0sIGQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzMoYywgbSwgZCkgTkROQk9PU1RfUFBfRU5VTV8zX0koYywgbSwgZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMV9JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xKGMsIE5ETkJPT1NUX1BQX0VOVU1fTV8xLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzJfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMihjLCBORE5CT09TVF9QUF9FTlVNX01fMiwgKG0sIGQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8zX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzMoYywgTkROQk9PU1RfUFBfRU5VTV9NXzMsIChtLCBkKSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fNChjLCBtLCBkKSBORE5CT09TVF9QUF9FUlJPUigweDAwMDMpCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMSh6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9NXzFfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIgbWQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMih6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9NXzJfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIgbWQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMyh6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9NXzNfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIgbWQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMV9JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfRU5VTV9NXzFfSSh6LCBuLCBpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8yX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9FTlVNX01fMl9JKHosIG4sIGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzNfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX0VOVU1fTV8zX0koeiwgbiwgaW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8xKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX01fMV9JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIG1kKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8yKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX01fMl9JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIG1kKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8zKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX01fM19JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIG1kKSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8xX0koeiwgbiwgbSwgZCkgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgbSh6LCBuLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzJfSSh6LCBuLCBtLCBkKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBtKHosIG4sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fM19JKHosIG4sIG0sIGQpIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIG0oeiwgbiwgZCkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA4NDI2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9CSU5BUllfUEFSQU1TX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9CSU5BUllfUEFSQU1TX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoY291bnQsIHAxLCBwMikgTkROQk9PU1RfUFBfUkVQRUFUKGNvdW50LCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTSwgKHAxLCBwMikpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhjb3VudCwgcDEsIHAyKSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfSShjb3VudCwgcDEsIHAyKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX0koY291bnQsIHAxLCBwMikgTkROQk9PU1RfUFBfUkVQRUFUKGNvdW50LCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTSwgKHAxLCBwMikpCi0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTSh6LCBuLCBwcCkgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX01fSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIgcHApCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX01fSSh6LCBuLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX00oeiwgbiwgcHApIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBwcCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgcHApKQotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JKHosIG4sIHAxLCBwMikgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX01fSUkoeiwgbiwgcDEsIHAyKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX01fSUkoeiwgbiwgcDEsIHAyKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBwMSAjIyBuIHAyICMjIG4KLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX01fSSh6LCBuLCBwMSwgcDIpIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIE5ETkJPT1NUX1BQX0NBVChwMSwgbikgTkROQk9PU1RfUFBfQ0FUKHAyLCBuKQotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfWiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aKHosIGNvdW50LCBwMSwgcDIpIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeihjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX00sIChwMSwgcDIpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfWih6LCBjb3VudCwgcDEsIHAyKSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfWl9JKHosIGNvdW50LCBwMSwgcDIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfWl9JKHosIGNvdW50LCBwMSwgcDIpIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeihjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX00sIChwMSwgcDIpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RkNzY3Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9QQVJBTVNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1BBUkFNU19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUKGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19NLCBwYXJhbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19JKGNvdW50LCBwYXJhbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX0koY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX00sIHBhcmFtKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfTSh6LCBuLCBwYXJhbSkgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgcGFyYW0gIyMgbgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeihjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfTSwgcGFyYW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aX0koeiwgY291bnQsIHBhcmFtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWl9JKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19NLCBwYXJhbSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXNfd2l0aF9hX2RlZmF1bHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmZmQzNzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fUEFSQU1TX1dJVEhfQV9ERUZBVUxUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaW50ZXJjZXB0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFQgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1dJVEhfQV9ERUZBVUxUKGNvdW50LCBwYXJhbSwgZGVmKSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoY291bnQsIHBhcmFtLCA9IGRlZiBORE5CT09TVF9QUF9JTlRFUkNFUFQpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgxYWYwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1NISUZURURfUEFSQU1TX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9TSElGVEVEX1BBUkFNU19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfUFBfREVDKGNvdW50KSwgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19NLCBwYXJhbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfSShjb3VudCwgcGFyYW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX0koY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfUFBfREVDKGNvdW50KSwgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19NLCBwYXJhbSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfTSh6LCBuLCBwYXJhbSkgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgTkROQk9PU1RfUFBfQ0FUKHBhcmFtLCBORE5CT09TVF9QUF9JTkMobikpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfWiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfWih6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeihORE5CT09TVF9QUF9ERUMoY291bnQpLCBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX00sIHBhcmFtKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX1ooeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX1pfSSh6LCBjb3VudCwgcGFyYW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX1pfSSh6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeihORE5CT09TVF9QUF9ERUMoY291bnQpLCBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX00sIHBhcmFtKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNmM1MjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1RSQUlMSU5HX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9UUkFJTElOR19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcgKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhjb3VudCwgbWFjcm8sIGRhdGEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfUkVQRUFUX1AsIDQpKQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMShjLCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMSwgKG0sIGQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18yKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yKGMsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8yLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzMoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzMoYywgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzMsIChtLCBkKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18xKGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMV9JKGMsIG0sIGQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzIoYywgbSwgZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18yX0koYywgbSwgZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMyhjLCBtLCBkKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzNfSShjLCBtLCBkKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18xX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzEoYywgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzEsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMl9JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yKGMsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8yLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzNfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMyhjLCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMywgKG0sIGQpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR180KGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMykKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMV9JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8yKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMl9JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fM19JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMV9JKHosIG4sIGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzJfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8yX0koeiwgbiwgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fM19JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzNfSSh6LCBuLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzEoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgbWQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzIoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8yX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgbWQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzMoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgbWQpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzFfSSh6LCBuLCBtLCBkKSAsIG0oeiwgbiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8yX0koeiwgbiwgbSwgZCkgLCBtKHosIG4sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fM19JKHosIG4sIG0sIGQpICwgbSh6LCBuLCBkKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmdfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE5Y2Q3YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmdfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1RSQUlMSU5HX1BBUkFNU19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fVFJBSUxJTkdfUEFSQU1TX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX00sIHBhcmFtKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX0koY291bnQsIHBhcmFtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfSShjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVChjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfTSwgcGFyYW0pCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19NKHosIG4sIHBhcmFtKSAsIHBhcmFtICMjIG4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfWiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX1ooeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX00sIHBhcmFtKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19aKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfWl9JKHosIGNvdW50LCBwYXJhbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX1pfSSh6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeihjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfTSwgcGFyYW0pCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2Zvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2Zvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3YWRmM2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9mb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRk9SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRk9SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0ZPUiAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9GT1Ioc3RhdGUsIHByZWQsIG9wLCBtYWNybykKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUiBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfRk9SXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfRk9SX1AsIDI1NikpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfUChuKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfRk9SX0NIRUNLXywgTkROQk9PU1RfUFBfRk9SXyAjIyBuKDEsIE5ETkJPT1NUX1BQX0ZPUl9TUl9QLCBORE5CT09TVF9QUF9GT1JfU1JfTywgTkROQk9PU1RfUFBfRk9SX1NSX00pKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX1NSX1AociwgcykgcwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX1NSX08ociwgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX1NSX00ociwgcykgTkROQk9PU1RfUFBfTklMCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9lZGcvZm9yLmhwcD4KLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL21zdmMvZm9yLmhwcD4KLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19ETUMoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZG1jL2Zvci5ocHA+Ci0jIGVsc2UKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2Zvci5ocHA+Ci0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMikKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9OSUwgMQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzMyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzM1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzM4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQ0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQ3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzUwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzUzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzU2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzU5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzYyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzY1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzY4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzcxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzc0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzc3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzgwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzgzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzg2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzg5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzkyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzk1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzk4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMDAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMDEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMDIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMDMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMDQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMDUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMDYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMDcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMDgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMDkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMTAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMTEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMTIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMTMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMTQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMTUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMTYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMTcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMTgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMTkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMjAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMjEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMjIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMjMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMjQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMjUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMjYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMjcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMjgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMjkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMzAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMzEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMzIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMzMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMzQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMzUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMzYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMzcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMzgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMzkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNDAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNDEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNDIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNDMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNDQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNDUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNDYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNDcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNDgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNDkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNTAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNTEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNTIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNTMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNTQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNTUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNTYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNTcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNTgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNTkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNjAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNjEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNjIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNjMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNjQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNjUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNjYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNjcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNjgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNjkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNzAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNzEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNzIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNzMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNzQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNzUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNzYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNzcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNzgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNzkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xODAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xODEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xODIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xODMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xODQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xODUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xODYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xODcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xODgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xODkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOTAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOTEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOTIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOTMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOTQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOTUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOTYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOTcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOTgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOTkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMDAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMDEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMDIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMDMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMDQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMDUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMDYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMDcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMDgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMDkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMTAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMTEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMTIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMTMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMTQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMTUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMTYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMTcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMTgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMTkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMjAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMjEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMjIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMjMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMjQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMjUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMjYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMjcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMjgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMjkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMzAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMzEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMzIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMzMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMzQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMzUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMzYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMzcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMzgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMzkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNDAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNDEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNDIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNDMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNDQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNDUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNDYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNDcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNDgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNDkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNTAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNTEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNTIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNTMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNTQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNTUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNTYocywgcCwgbywgbSkgMAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNWM0YWRjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyNSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX1JFUEVBVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX1JFUEVBVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9SRVBFQVQgKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUKGNvdW50LCBtYWNybywgZGF0YSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVQRUFUXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfUkVQRUFUX1AsIDQpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX1AobikgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFUEVBVF9DSEVDS18sIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgbigxLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMsIE5ETkJPT1NUX1BQX05JTCkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfQ0hFQ0tfTkROQk9PU1RfUFBfTklMIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9DSEVDS19ORE5CT09TVF9QUF9SRVBFQVRfMShjLCBtLCBkKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfQ0hFQ0tfTkROQk9PU1RfUFBfUkVQRUFUXzIoYywgbSwgZCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0NIRUNLX05ETkJPT1NUX1BQX1JFUEVBVF8zKGMsIG0sIGQpIDAKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xX0koYywgbSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yX0koYywgbSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zX0koYywgbSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF80KGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMykKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfICMjIGMobSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfICMjIGMobSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfICMjIGMobSwgZCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xU1QgTkROQk9PU1RfUFBfUkVQRUFUXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yTkQgTkROQk9PU1RfUFBfUkVQRUFUXzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zUkQgTkROQk9PU1RfUFBfUkVQRUFUXzMKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzAobSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEobSwgZCkgbSgyLCAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xKG0sIGQpIG0oMiwgMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMihtLCBkKSBtKDIsIDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMobSwgZCkgbSgyLCAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80KG0sIGQpIG0oMiwgNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNShtLCBkKSBtKDIsIDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYobSwgZCkgbSgyLCA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83KG0sIGQpIG0oMiwgNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOChtLCBkKSBtKDIsIDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85KG0sIGQpIG0oMiwgOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwKG0sIGQpIG0oMiwgMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMShtLCBkKSBtKDIsIDExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIobSwgZCkgbSgyLCAxMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzKG0sIGQpIG0oMiwgMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNChtLCBkKSBtKDIsIDE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUobSwgZCkgbSgyLCAxNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2KG0sIGQpIG0oMiwgMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNyhtLCBkKSBtKDIsIDE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgobSwgZCkgbSgyLCAxOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5KG0sIGQpIG0oMiwgMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMChtLCBkKSBtKDIsIDIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjEobSwgZCkgbSgyLCAyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyKG0sIGQpIG0oMiwgMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMyhtLCBkKSBtKDIsIDIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQobSwgZCkgbSgyLCAyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1KG0sIGQpIG0oMiwgMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNihtLCBkKSBtKDIsIDI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjcobSwgZCkgbSgyLCAyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI4KG0sIGQpIG0oMiwgMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yOShtLCBkKSBtKDIsIDI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzAobSwgZCkgbSgyLCAzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMxKG0sIGQpIG0oMiwgMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMihtLCBkKSBtKDIsIDMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzMobSwgZCkgbSgyLCAzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM0KG0sIGQpIG0oMiwgMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNShtLCBkKSBtKDIsIDM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzYobSwgZCkgbSgyLCAzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM3KG0sIGQpIG0oMiwgMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zOChtLCBkKSBtKDIsIDM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzkobSwgZCkgbSgyLCAzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQwKG0sIGQpIG0oMiwgNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80MShtLCBkKSBtKDIsIDQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDIobSwgZCkgbSgyLCA0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQzKG0sIGQpIG0oMiwgNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80NChtLCBkKSBtKDIsIDQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDUobSwgZCkgbSgyLCA0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ2KG0sIGQpIG0oMiwgNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80NyhtLCBkKSBtKDIsIDQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDgobSwgZCkgbSgyLCA0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ5KG0sIGQpIG0oMiwgNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81MChtLCBkKSBtKDIsIDUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTEobSwgZCkgbSgyLCA1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUyKG0sIGQpIG0oMiwgNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81MyhtLCBkKSBtKDIsIDUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTQobSwgZCkgbSgyLCA1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU1KG0sIGQpIG0oMiwgNTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81NihtLCBkKSBtKDIsIDU2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTcobSwgZCkgbSgyLCA1NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU4KG0sIGQpIG0oMiwgNTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81OShtLCBkKSBtKDIsIDU5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjAobSwgZCkgbSgyLCA2MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYxKG0sIGQpIG0oMiwgNjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82MihtLCBkKSBtKDIsIDYyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjMobSwgZCkgbSgyLCA2MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY0KG0sIGQpIG0oMiwgNjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82NShtLCBkKSBtKDIsIDY1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjYobSwgZCkgbSgyLCA2NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY3KG0sIGQpIG0oMiwgNjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82OChtLCBkKSBtKDIsIDY4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjkobSwgZCkgbSgyLCA2OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcwKG0sIGQpIG0oMiwgNzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83MShtLCBkKSBtKDIsIDcxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzIobSwgZCkgbSgyLCA3MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzczKG0sIGQpIG0oMiwgNzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83NChtLCBkKSBtKDIsIDc0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzUobSwgZCkgbSgyLCA3NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc2KG0sIGQpIG0oMiwgNzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83NyhtLCBkKSBtKDIsIDc3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzgobSwgZCkgbSgyLCA3OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc5KG0sIGQpIG0oMiwgNzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84MChtLCBkKSBtKDIsIDgwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODEobSwgZCkgbSgyLCA4MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgyKG0sIGQpIG0oMiwgODIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84MyhtLCBkKSBtKDIsIDgzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODQobSwgZCkgbSgyLCA4NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg1KG0sIGQpIG0oMiwgODUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84NihtLCBkKSBtKDIsIDg2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODcobSwgZCkgbSgyLCA4NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg4KG0sIGQpIG0oMiwgODgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84OShtLCBkKSBtKDIsIDg5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTAobSwgZCkgbSgyLCA5MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkxKG0sIGQpIG0oMiwgOTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85MihtLCBkKSBtKDIsIDkyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTMobSwgZCkgbSgyLCA5MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk0KG0sIGQpIG0oMiwgOTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85NShtLCBkKSBtKDIsIDk1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTYobSwgZCkgbSgyLCA5NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk3KG0sIGQpIG0oMiwgOTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85OChtLCBkKSBtKDIsIDk4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk5KG0sIGQpIG0oMiwgOTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAwKG0sIGQpIG0oMiwgMTAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwMShtLCBkKSBtKDIsIDEwMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDIobSwgZCkgbSgyLCAxMDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAzKG0sIGQpIG0oMiwgMTAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNChtLCBkKSBtKDIsIDEwNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDUobSwgZCkgbSgyLCAxMDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA2KG0sIGQpIG0oMiwgMTA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNyhtLCBkKSBtKDIsIDEwNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDgobSwgZCkgbSgyLCAxMDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA5KG0sIGQpIG0oMiwgMTA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMChtLCBkKSBtKDIsIDExMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTEobSwgZCkgbSgyLCAxMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEyKG0sIGQpIG0oMiwgMTEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMyhtLCBkKSBtKDIsIDExMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTQobSwgZCkgbSgyLCAxMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE1KG0sIGQpIG0oMiwgMTE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNihtLCBkKSBtKDIsIDExNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTcobSwgZCkgbSgyLCAxMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE4KG0sIGQpIG0oMiwgMTE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExOShtLCBkKSBtKDIsIDExOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjAobSwgZCkgbSgyLCAxMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIxKG0sIGQpIG0oMiwgMTIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMihtLCBkKSBtKDIsIDEyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjMobSwgZCkgbSgyLCAxMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI0KG0sIGQpIG0oMiwgMTI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyNShtLCBkKSBtKDIsIDEyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjYobSwgZCkgbSgyLCAxMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI3KG0sIGQpIG0oMiwgMTI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyOChtLCBkKSBtKDIsIDEyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjkobSwgZCkgbSgyLCAxMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMwKG0sIGQpIG0oMiwgMTMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzMShtLCBkKSBtKDIsIDEzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzIobSwgZCkgbSgyLCAxMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMzKG0sIGQpIG0oMiwgMTMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNChtLCBkKSBtKDIsIDEzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzUobSwgZCkgbSgyLCAxMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM2KG0sIGQpIG0oMiwgMTM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNyhtLCBkKSBtKDIsIDEzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzgobSwgZCkgbSgyLCAxMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM5KG0sIGQpIG0oMiwgMTM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MChtLCBkKSBtKDIsIDE0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDEobSwgZCkgbSgyLCAxNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQyKG0sIGQpIG0oMiwgMTQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MyhtLCBkKSBtKDIsIDE0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDQobSwgZCkgbSgyLCAxNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ1KG0sIGQpIG0oMiwgMTQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NihtLCBkKSBtKDIsIDE0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDcobSwgZCkgbSgyLCAxNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ4KG0sIGQpIG0oMiwgMTQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0OShtLCBkKSBtKDIsIDE0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTAobSwgZCkgbSgyLCAxNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUxKG0sIGQpIG0oMiwgMTUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MihtLCBkKSBtKDIsIDE1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTMobSwgZCkgbSgyLCAxNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU0KG0sIGQpIG0oMiwgMTU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1NShtLCBkKSBtKDIsIDE1NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTYobSwgZCkgbSgyLCAxNTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU3KG0sIGQpIG0oMiwgMTU3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1OChtLCBkKSBtKDIsIDE1OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTkobSwgZCkgbSgyLCAxNTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYwKG0sIGQpIG0oMiwgMTYwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2MShtLCBkKSBtKDIsIDE2MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjIobSwgZCkgbSgyLCAxNjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYzKG0sIGQpIG0oMiwgMTYzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NChtLCBkKSBtKDIsIDE2NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjUobSwgZCkgbSgyLCAxNjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY2KG0sIGQpIG0oMiwgMTY2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NyhtLCBkKSBtKDIsIDE2NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjgobSwgZCkgbSgyLCAxNjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY5KG0sIGQpIG0oMiwgMTY5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MChtLCBkKSBtKDIsIDE3MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzEobSwgZCkgbSgyLCAxNzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcyKG0sIGQpIG0oMiwgMTcyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MyhtLCBkKSBtKDIsIDE3MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzQobSwgZCkgbSgyLCAxNzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc1KG0sIGQpIG0oMiwgMTc1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NihtLCBkKSBtKDIsIDE3NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzcobSwgZCkgbSgyLCAxNzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc4KG0sIGQpIG0oMiwgMTc4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3OShtLCBkKSBtKDIsIDE3OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODAobSwgZCkgbSgyLCAxODAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgxKG0sIGQpIG0oMiwgMTgxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MihtLCBkKSBtKDIsIDE4MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODMobSwgZCkgbSgyLCAxODMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg0KG0sIGQpIG0oMiwgMTg0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4NShtLCBkKSBtKDIsIDE4NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODYobSwgZCkgbSgyLCAxODYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg3KG0sIGQpIG0oMiwgMTg3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4OChtLCBkKSBtKDIsIDE4OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODkobSwgZCkgbSgyLCAxODksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkwKG0sIGQpIG0oMiwgMTkwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5MShtLCBkKSBtKDIsIDE5MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTIobSwgZCkgbSgyLCAxOTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkzKG0sIGQpIG0oMiwgMTkzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NChtLCBkKSBtKDIsIDE5NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTUobSwgZCkgbSgyLCAxOTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk2KG0sIGQpIG0oMiwgMTk2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NyhtLCBkKSBtKDIsIDE5NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTgobSwgZCkgbSgyLCAxOTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk5KG0sIGQpIG0oMiwgMTk5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMChtLCBkKSBtKDIsIDIwMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDEobSwgZCkgbSgyLCAyMDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAyKG0sIGQpIG0oMiwgMjAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMyhtLCBkKSBtKDIsIDIwMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDQobSwgZCkgbSgyLCAyMDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA1KG0sIGQpIG0oMiwgMjA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNihtLCBkKSBtKDIsIDIwNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDcobSwgZCkgbSgyLCAyMDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA4KG0sIGQpIG0oMiwgMjA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwOShtLCBkKSBtKDIsIDIwOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTAobSwgZCkgbSgyLCAyMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjExKG0sIGQpIG0oMiwgMjExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMihtLCBkKSBtKDIsIDIxMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTMobSwgZCkgbSgyLCAyMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE0KG0sIGQpIG0oMiwgMjE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxNShtLCBkKSBtKDIsIDIxNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTYobSwgZCkgbSgyLCAyMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE3KG0sIGQpIG0oMiwgMjE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxOChtLCBkKSBtKDIsIDIxOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTkobSwgZCkgbSgyLCAyMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIwKG0sIGQpIG0oMiwgMjIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyMShtLCBkKSBtKDIsIDIyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjIobSwgZCkgbSgyLCAyMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIzKG0sIGQpIG0oMiwgMjIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNChtLCBkKSBtKDIsIDIyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjUobSwgZCkgbSgyLCAyMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI2KG0sIGQpIG0oMiwgMjI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNyhtLCBkKSBtKDIsIDIyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjgobSwgZCkgbSgyLCAyMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI5KG0sIGQpIG0oMiwgMjI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMChtLCBkKSBtKDIsIDIzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzEobSwgZCkgbSgyLCAyMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMyKG0sIGQpIG0oMiwgMjMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMyhtLCBkKSBtKDIsIDIzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzQobSwgZCkgbSgyLCAyMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM1KG0sIGQpIG0oMiwgMjM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNihtLCBkKSBtKDIsIDIzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzcobSwgZCkgbSgyLCAyMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM4KG0sIGQpIG0oMiwgMjM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzOShtLCBkKSBtKDIsIDIzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDAobSwgZCkgbSgyLCAyNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQxKG0sIGQpIG0oMiwgMjQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MihtLCBkKSBtKDIsIDI0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDMobSwgZCkgbSgyLCAyNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ0KG0sIGQpIG0oMiwgMjQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0NShtLCBkKSBtKDIsIDI0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDYobSwgZCkgbSgyLCAyNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ3KG0sIGQpIG0oMiwgMjQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0OChtLCBkKSBtKDIsIDI0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDkobSwgZCkgbSgyLCAyNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUwKG0sIGQpIG0oMiwgMjUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1MShtLCBkKSBtKDIsIDI1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTIobSwgZCkgbSgyLCAyNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUzKG0sIGQpIG0oMiwgMjUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1NChtLCBkKSBtKDIsIDI1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTUobSwgZCkgbSgyLCAyNTUsIGQpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8wKG0sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xKG0sIGQpIG0oMywgMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMShtLCBkKSBtKDMsIDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIobSwgZCkgbSgzLCAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zKG0sIGQpIG0oMywgMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNChtLCBkKSBtKDMsIDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUobSwgZCkgbSgzLCA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82KG0sIGQpIG0oMywgNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNyhtLCBkKSBtKDMsIDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgobSwgZCkgbSgzLCA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOShtLCBkKSBtKDMsIDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMChtLCBkKSBtKDMsIDEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTEobSwgZCkgbSgzLCAxMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyKG0sIGQpIG0oMywgMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMyhtLCBkKSBtKDMsIDEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQobSwgZCkgbSgzLCAxNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1KG0sIGQpIG0oMywgMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNihtLCBkKSBtKDMsIDE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTcobSwgZCkgbSgzLCAxNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4KG0sIGQpIG0oMywgMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOShtLCBkKSBtKDMsIDE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAobSwgZCkgbSgzLCAyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxKG0sIGQpIG0oMywgMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMihtLCBkKSBtKDMsIDIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMobSwgZCkgbSgzLCAyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0KG0sIGQpIG0oMywgMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNShtLCBkKSBtKDMsIDI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjYobSwgZCkgbSgzLCAyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI3KG0sIGQpIG0oMywgMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yOChtLCBkKSBtKDMsIDI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjkobSwgZCkgbSgzLCAyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMwKG0sIGQpIG0oMywgMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMShtLCBkKSBtKDMsIDMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzIobSwgZCkgbSgzLCAzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMzKG0sIGQpIG0oMywgMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zNChtLCBkKSBtKDMsIDM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzUobSwgZCkgbSgzLCAzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM2KG0sIGQpIG0oMywgMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zNyhtLCBkKSBtKDMsIDM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzgobSwgZCkgbSgzLCAzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM5KG0sIGQpIG0oMywgMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80MChtLCBkKSBtKDMsIDQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDEobSwgZCkgbSgzLCA0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQyKG0sIGQpIG0oMywgNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80MyhtLCBkKSBtKDMsIDQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDQobSwgZCkgbSgzLCA0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ1KG0sIGQpIG0oMywgNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80NihtLCBkKSBtKDMsIDQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDcobSwgZCkgbSgzLCA0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ4KG0sIGQpIG0oMywgNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80OShtLCBkKSBtKDMsIDQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTAobSwgZCkgbSgzLCA1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUxKG0sIGQpIG0oMywgNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81MihtLCBkKSBtKDMsIDUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTMobSwgZCkgbSgzLCA1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU0KG0sIGQpIG0oMywgNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81NShtLCBkKSBtKDMsIDU1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTYobSwgZCkgbSgzLCA1NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU3KG0sIGQpIG0oMywgNTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81OChtLCBkKSBtKDMsIDU4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTkobSwgZCkgbSgzLCA1OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYwKG0sIGQpIG0oMywgNjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82MShtLCBkKSBtKDMsIDYxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjIobSwgZCkgbSgzLCA2MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYzKG0sIGQpIG0oMywgNjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82NChtLCBkKSBtKDMsIDY0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjUobSwgZCkgbSgzLCA2NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY2KG0sIGQpIG0oMywgNjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82NyhtLCBkKSBtKDMsIDY3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjgobSwgZCkgbSgzLCA2OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzcwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY5KG0sIGQpIG0oMywgNjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83MChtLCBkKSBtKDMsIDcwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzEobSwgZCkgbSgzLCA3MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzczKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzcyKG0sIGQpIG0oMywgNzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83MyhtLCBkKSBtKDMsIDczLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzQobSwgZCkgbSgzLCA3NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc1KG0sIGQpIG0oMywgNzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83NihtLCBkKSBtKDMsIDc2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzcobSwgZCkgbSgzLCA3NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc4KG0sIGQpIG0oMywgNzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83OShtLCBkKSBtKDMsIDc5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODAobSwgZCkgbSgzLCA4MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgxKG0sIGQpIG0oMywgODEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84MihtLCBkKSBtKDMsIDgyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODMobSwgZCkgbSgzLCA4MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg0KG0sIGQpIG0oMywgODQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84NShtLCBkKSBtKDMsIDg1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODYobSwgZCkgbSgzLCA4NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg3KG0sIGQpIG0oMywgODcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84OChtLCBkKSBtKDMsIDg4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODkobSwgZCkgbSgzLCA4OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkwKG0sIGQpIG0oMywgOTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85MShtLCBkKSBtKDMsIDkxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTIobSwgZCkgbSgzLCA5MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkzKG0sIGQpIG0oMywgOTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85NChtLCBkKSBtKDMsIDk0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTUobSwgZCkgbSgzLCA5NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk2KG0sIGQpIG0oMywgOTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85NyhtLCBkKSBtKDMsIDk3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTgobSwgZCkgbSgzLCA5OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85OShtLCBkKSBtKDMsIDk5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwMChtLCBkKSBtKDMsIDEwMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDEobSwgZCkgbSgzLCAxMDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAyKG0sIGQpIG0oMywgMTAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwMyhtLCBkKSBtKDMsIDEwMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDQobSwgZCkgbSgzLCAxMDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA1KG0sIGQpIG0oMywgMTA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNihtLCBkKSBtKDMsIDEwNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDcobSwgZCkgbSgzLCAxMDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA4KG0sIGQpIG0oMywgMTA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwOShtLCBkKSBtKDMsIDEwOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTAobSwgZCkgbSgzLCAxMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTExKG0sIGQpIG0oMywgMTExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMihtLCBkKSBtKDMsIDExMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTMobSwgZCkgbSgzLCAxMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE0KG0sIGQpIG0oMywgMTE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExNShtLCBkKSBtKDMsIDExNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTYobSwgZCkgbSgzLCAxMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE3KG0sIGQpIG0oMywgMTE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExOChtLCBkKSBtKDMsIDExOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTkobSwgZCkgbSgzLCAxMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIwKG0sIGQpIG0oMywgMTIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyMShtLCBkKSBtKDMsIDEyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjIobSwgZCkgbSgzLCAxMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIzKG0sIGQpIG0oMywgMTIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNChtLCBkKSBtKDMsIDEyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjUobSwgZCkgbSgzLCAxMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI2KG0sIGQpIG0oMywgMTI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNyhtLCBkKSBtKDMsIDEyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjgobSwgZCkgbSgzLCAxMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI5KG0sIGQpIG0oMywgMTI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMChtLCBkKSBtKDMsIDEzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzEobSwgZCkgbSgzLCAxMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMyKG0sIGQpIG0oMywgMTMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMyhtLCBkKSBtKDMsIDEzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzQobSwgZCkgbSgzLCAxMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM1KG0sIGQpIG0oMywgMTM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNihtLCBkKSBtKDMsIDEzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzcobSwgZCkgbSgzLCAxMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM4KG0sIGQpIG0oMywgMTM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzOShtLCBkKSBtKDMsIDEzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDAobSwgZCkgbSgzLCAxNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQxKG0sIGQpIG0oMywgMTQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MihtLCBkKSBtKDMsIDE0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDMobSwgZCkgbSgzLCAxNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ0KG0sIGQpIG0oMywgMTQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0NShtLCBkKSBtKDMsIDE0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDYobSwgZCkgbSgzLCAxNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ3KG0sIGQpIG0oMywgMTQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0OChtLCBkKSBtKDMsIDE0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDkobSwgZCkgbSgzLCAxNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUwKG0sIGQpIG0oMywgMTUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1MShtLCBkKSBtKDMsIDE1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTIobSwgZCkgbSgzLCAxNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUzKG0sIGQpIG0oMywgMTUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NChtLCBkKSBtKDMsIDE1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTUobSwgZCkgbSgzLCAxNTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU2KG0sIGQpIG0oMywgMTU2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NyhtLCBkKSBtKDMsIDE1NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTgobSwgZCkgbSgzLCAxNTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU5KG0sIGQpIG0oMywgMTU5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MChtLCBkKSBtKDMsIDE2MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjEobSwgZCkgbSgzLCAxNjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYyKG0sIGQpIG0oMywgMTYyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MyhtLCBkKSBtKDMsIDE2MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjQobSwgZCkgbSgzLCAxNjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY1KG0sIGQpIG0oMywgMTY1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NihtLCBkKSBtKDMsIDE2NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjcobSwgZCkgbSgzLCAxNjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY4KG0sIGQpIG0oMywgMTY4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTcwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2OShtLCBkKSBtKDMsIDE2OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzAobSwgZCkgbSgzLCAxNzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTcxKG0sIGQpIG0oMywgMTcxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTczKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MihtLCBkKSBtKDMsIDE3MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzMobSwgZCkgbSgzLCAxNzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc0KG0sIGQpIG0oMywgMTc0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3NShtLCBkKSBtKDMsIDE3NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzYobSwgZCkgbSgzLCAxNzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc3KG0sIGQpIG0oMywgMTc3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3OChtLCBkKSBtKDMsIDE3OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzkobSwgZCkgbSgzLCAxNzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgwKG0sIGQpIG0oMywgMTgwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4MShtLCBkKSBtKDMsIDE4MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODIobSwgZCkgbSgzLCAxODIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgzKG0sIGQpIG0oMywgMTgzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NChtLCBkKSBtKDMsIDE4NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODUobSwgZCkgbSgzLCAxODUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg2KG0sIGQpIG0oMywgMTg2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NyhtLCBkKSBtKDMsIDE4NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODgobSwgZCkgbSgzLCAxODgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg5KG0sIGQpIG0oMywgMTg5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MChtLCBkKSBtKDMsIDE5MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTEobSwgZCkgbSgzLCAxOTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkyKG0sIGQpIG0oMywgMTkyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MyhtLCBkKSBtKDMsIDE5MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTQobSwgZCkgbSgzLCAxOTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk1KG0sIGQpIG0oMywgMTk1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NihtLCBkKSBtKDMsIDE5NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTcobSwgZCkgbSgzLCAxOTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk4KG0sIGQpIG0oMywgMTk4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5OShtLCBkKSBtKDMsIDE5OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDAobSwgZCkgbSgzLCAyMDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAxKG0sIGQpIG0oMywgMjAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMihtLCBkKSBtKDMsIDIwMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDMobSwgZCkgbSgzLCAyMDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA0KG0sIGQpIG0oMywgMjA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwNShtLCBkKSBtKDMsIDIwNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDYobSwgZCkgbSgzLCAyMDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA3KG0sIGQpIG0oMywgMjA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwOChtLCBkKSBtKDMsIDIwOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDkobSwgZCkgbSgzLCAyMDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEwKG0sIGQpIG0oMywgMjEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxMShtLCBkKSBtKDMsIDIxMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTIobSwgZCkgbSgzLCAyMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEzKG0sIGQpIG0oMywgMjEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNChtLCBkKSBtKDMsIDIxNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTUobSwgZCkgbSgzLCAyMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE2KG0sIGQpIG0oMywgMjE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNyhtLCBkKSBtKDMsIDIxNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTgobSwgZCkgbSgzLCAyMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE5KG0sIGQpIG0oMywgMjE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMChtLCBkKSBtKDMsIDIyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjEobSwgZCkgbSgzLCAyMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIyKG0sIGQpIG0oMywgMjIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMyhtLCBkKSBtKDMsIDIyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjQobSwgZCkgbSgzLCAyMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI1KG0sIGQpIG0oMywgMjI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNihtLCBkKSBtKDMsIDIyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjcobSwgZCkgbSgzLCAyMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI4KG0sIGQpIG0oMywgMjI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyOShtLCBkKSBtKDMsIDIyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzAobSwgZCkgbSgzLCAyMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMxKG0sIGQpIG0oMywgMjMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMihtLCBkKSBtKDMsIDIzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzMobSwgZCkgbSgzLCAyMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM0KG0sIGQpIG0oMywgMjM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzNShtLCBkKSBtKDMsIDIzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzYobSwgZCkgbSgzLCAyMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM3KG0sIGQpIG0oMywgMjM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzOChtLCBkKSBtKDMsIDIzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzkobSwgZCkgbSgzLCAyMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQwKG0sIGQpIG0oMywgMjQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0MShtLCBkKSBtKDMsIDI0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDIobSwgZCkgbSgzLCAyNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQzKG0sIGQpIG0oMywgMjQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NChtLCBkKSBtKDMsIDI0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDUobSwgZCkgbSgzLCAyNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ2KG0sIGQpIG0oMywgMjQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NyhtLCBkKSBtKDMsIDI0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDgobSwgZCkgbSgzLCAyNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ5KG0sIGQpIG0oMywgMjQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MChtLCBkKSBtKDMsIDI1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTEobSwgZCkgbSgzLCAyNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUyKG0sIGQpIG0oMywgMjUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MyhtLCBkKSBtKDMsIDI1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTQobSwgZCkgbSgzLCAyNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjU1KG0sIGQpIG0oMywgMjU1LCBkKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMChtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMShtLCBkKSBtKDQsIDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEobSwgZCkgbSg0LCAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yKG0sIGQpIG0oNCwgMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMyhtLCBkKSBtKDQsIDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQobSwgZCkgbSg0LCA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181KG0sIGQpIG0oNCwgNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNihtLCBkKSBtKDQsIDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzcobSwgZCkgbSg0LCA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184KG0sIGQpIG0oNCwgOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkobSwgZCkgbSg0LCA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAobSwgZCkgbSg0LCAxMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExKG0sIGQpIG0oNCwgMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMihtLCBkKSBtKDQsIDEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMobSwgZCkgbSg0LCAxMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0KG0sIGQpIG0oNCwgMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNShtLCBkKSBtKDQsIDE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYobSwgZCkgbSg0LCAxNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3KG0sIGQpIG0oNCwgMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOChtLCBkKSBtKDQsIDE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkobSwgZCkgbSg0LCAxOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwKG0sIGQpIG0oNCwgMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMShtLCBkKSBtKDQsIDIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIobSwgZCkgbSg0LCAyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzKG0sIGQpIG0oNCwgMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNChtLCBkKSBtKDQsIDI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUobSwgZCkgbSg0LCAyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI2KG0sIGQpIG0oNCwgMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNyhtLCBkKSBtKDQsIDI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjgobSwgZCkgbSg0LCAyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI5KG0sIGQpIG0oNCwgMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zMChtLCBkKSBtKDQsIDMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzEobSwgZCkgbSg0LCAzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMyKG0sIGQpIG0oNCwgMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zMyhtLCBkKSBtKDQsIDMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzQobSwgZCkgbSg0LCAzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM1KG0sIGQpIG0oNCwgMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zNihtLCBkKSBtKDQsIDM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzcobSwgZCkgbSg0LCAzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM4KG0sIGQpIG0oNCwgMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zOShtLCBkKSBtKDQsIDM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDAobSwgZCkgbSg0LCA0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQxKG0sIGQpIG0oNCwgNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180MihtLCBkKSBtKDQsIDQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDMobSwgZCkgbSg0LCA0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ0KG0sIGQpIG0oNCwgNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180NShtLCBkKSBtKDQsIDQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDYobSwgZCkgbSg0LCA0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ3KG0sIGQpIG0oNCwgNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180OChtLCBkKSBtKDQsIDQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDkobSwgZCkgbSg0LCA0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUwKG0sIGQpIG0oNCwgNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181MShtLCBkKSBtKDQsIDUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTIobSwgZCkgbSg0LCA1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUzKG0sIGQpIG0oNCwgNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181NChtLCBkKSBtKDQsIDU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTUobSwgZCkgbSg0LCA1NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU2KG0sIGQpIG0oNCwgNTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181NyhtLCBkKSBtKDQsIDU3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTgobSwgZCkgbSg0LCA1OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU5KG0sIGQpIG0oNCwgNTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182MChtLCBkKSBtKDQsIDYwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjEobSwgZCkgbSg0LCA2MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYyKG0sIGQpIG0oNCwgNjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182MyhtLCBkKSBtKDQsIDYzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjQobSwgZCkgbSg0LCA2NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY1KG0sIGQpIG0oNCwgNjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182NihtLCBkKSBtKDQsIDY2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjcobSwgZCkgbSg0LCA2NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY4KG0sIGQpIG0oNCwgNjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182OShtLCBkKSBtKDQsIDY5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzAobSwgZCkgbSg0LCA3MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzcyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzcxKG0sIGQpIG0oNCwgNzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183MihtLCBkKSBtKDQsIDcyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzMobSwgZCkgbSg0LCA3MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc0KG0sIGQpIG0oNCwgNzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183NShtLCBkKSBtKDQsIDc1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzYobSwgZCkgbSg0LCA3NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc3KG0sIGQpIG0oNCwgNzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183OChtLCBkKSBtKDQsIDc4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzkobSwgZCkgbSg0LCA3OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgwKG0sIGQpIG0oNCwgODAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184MShtLCBkKSBtKDQsIDgxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODIobSwgZCkgbSg0LCA4MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgzKG0sIGQpIG0oNCwgODMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184NChtLCBkKSBtKDQsIDg0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODUobSwgZCkgbSg0LCA4NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg2KG0sIGQpIG0oNCwgODYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184NyhtLCBkKSBtKDQsIDg3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODgobSwgZCkgbSg0LCA4OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg5KG0sIGQpIG0oNCwgODksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185MChtLCBkKSBtKDQsIDkwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTEobSwgZCkgbSg0LCA5MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkyKG0sIGQpIG0oNCwgOTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185MyhtLCBkKSBtKDQsIDkzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTQobSwgZCkgbSg0LCA5NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk1KG0sIGQpIG0oNCwgOTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185NihtLCBkKSBtKDQsIDk2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTcobSwgZCkgbSg0LCA5NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk4KG0sIGQpIG0oNCwgOTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTkobSwgZCkgbSg0LCA5OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDAobSwgZCkgbSg0LCAxMDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAxKG0sIGQpIG0oNCwgMTAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMihtLCBkKSBtKDQsIDEwMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDMobSwgZCkgbSg0LCAxMDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA0KG0sIGQpIG0oNCwgMTA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwNShtLCBkKSBtKDQsIDEwNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDYobSwgZCkgbSg0LCAxMDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA3KG0sIGQpIG0oNCwgMTA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwOChtLCBkKSBtKDQsIDEwOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDkobSwgZCkgbSg0LCAxMDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEwKG0sIGQpIG0oNCwgMTEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExMShtLCBkKSBtKDQsIDExMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTIobSwgZCkgbSg0LCAxMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEzKG0sIGQpIG0oNCwgMTEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNChtLCBkKSBtKDQsIDExNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTUobSwgZCkgbSg0LCAxMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE2KG0sIGQpIG0oNCwgMTE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNyhtLCBkKSBtKDQsIDExNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTgobSwgZCkgbSg0LCAxMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE5KG0sIGQpIG0oNCwgMTE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMChtLCBkKSBtKDQsIDEyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjEobSwgZCkgbSg0LCAxMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIyKG0sIGQpIG0oNCwgMTIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMyhtLCBkKSBtKDQsIDEyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjQobSwgZCkgbSg0LCAxMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI1KG0sIGQpIG0oNCwgMTI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNihtLCBkKSBtKDQsIDEyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjcobSwgZCkgbSg0LCAxMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI4KG0sIGQpIG0oNCwgMTI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyOShtLCBkKSBtKDQsIDEyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzAobSwgZCkgbSg0LCAxMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMxKG0sIGQpIG0oNCwgMTMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMihtLCBkKSBtKDQsIDEzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzMobSwgZCkgbSg0LCAxMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM0KG0sIGQpIG0oNCwgMTM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzNShtLCBkKSBtKDQsIDEzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzYobSwgZCkgbSg0LCAxMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM3KG0sIGQpIG0oNCwgMTM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzOChtLCBkKSBtKDQsIDEzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzkobSwgZCkgbSg0LCAxMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQwKG0sIGQpIG0oNCwgMTQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0MShtLCBkKSBtKDQsIDE0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDIobSwgZCkgbSg0LCAxNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQzKG0sIGQpIG0oNCwgMTQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NChtLCBkKSBtKDQsIDE0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDUobSwgZCkgbSg0LCAxNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ2KG0sIGQpIG0oNCwgMTQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NyhtLCBkKSBtKDQsIDE0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDgobSwgZCkgbSg0LCAxNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ5KG0sIGQpIG0oNCwgMTQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MChtLCBkKSBtKDQsIDE1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTEobSwgZCkgbSg0LCAxNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUyKG0sIGQpIG0oNCwgMTUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MyhtLCBkKSBtKDQsIDE1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTQobSwgZCkgbSg0LCAxNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU1KG0sIGQpIG0oNCwgMTU1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NihtLCBkKSBtKDQsIDE1NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTcobSwgZCkgbSg0LCAxNTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU4KG0sIGQpIG0oNCwgMTU4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1OShtLCBkKSBtKDQsIDE1OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjAobSwgZCkgbSg0LCAxNjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYxKG0sIGQpIG0oNCwgMTYxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MihtLCBkKSBtKDQsIDE2MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjMobSwgZCkgbSg0LCAxNjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY0KG0sIGQpIG0oNCwgMTY0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2NShtLCBkKSBtKDQsIDE2NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjYobSwgZCkgbSg0LCAxNjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY3KG0sIGQpIG0oNCwgMTY3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2OChtLCBkKSBtKDQsIDE2OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjkobSwgZCkgbSg0LCAxNjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcwKG0sIGQpIG0oNCwgMTcwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3MShtLCBkKSBtKDQsIDE3MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzIobSwgZCkgbSg0LCAxNzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTczKG0sIGQpIG0oNCwgMTczLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NChtLCBkKSBtKDQsIDE3NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzUobSwgZCkgbSg0LCAxNzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc2KG0sIGQpIG0oNCwgMTc2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NyhtLCBkKSBtKDQsIDE3NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzgobSwgZCkgbSg0LCAxNzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc5KG0sIGQpIG0oNCwgMTc5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MChtLCBkKSBtKDQsIDE4MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODEobSwgZCkgbSg0LCAxODEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgyKG0sIGQpIG0oNCwgMTgyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MyhtLCBkKSBtKDQsIDE4MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODQobSwgZCkgbSg0LCAxODQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg1KG0sIGQpIG0oNCwgMTg1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NihtLCBkKSBtKDQsIDE4NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODcobSwgZCkgbSg0LCAxODcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg4KG0sIGQpIG0oNCwgMTg4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4OShtLCBkKSBtKDQsIDE4OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTAobSwgZCkgbSg0LCAxOTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkxKG0sIGQpIG0oNCwgMTkxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MihtLCBkKSBtKDQsIDE5MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTMobSwgZCkgbSg0LCAxOTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk0KG0sIGQpIG0oNCwgMTk0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5NShtLCBkKSBtKDQsIDE5NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTYobSwgZCkgbSg0LCAxOTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk3KG0sIGQpIG0oNCwgMTk3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5OChtLCBkKSBtKDQsIDE5OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTkobSwgZCkgbSg0LCAxOTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAwKG0sIGQpIG0oNCwgMjAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwMShtLCBkKSBtKDQsIDIwMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDIobSwgZCkgbSg0LCAyMDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAzKG0sIGQpIG0oNCwgMjAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNChtLCBkKSBtKDQsIDIwNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDUobSwgZCkgbSg0LCAyMDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA2KG0sIGQpIG0oNCwgMjA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNyhtLCBkKSBtKDQsIDIwNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDgobSwgZCkgbSg0LCAyMDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA5KG0sIGQpIG0oNCwgMjA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMChtLCBkKSBtKDQsIDIxMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTEobSwgZCkgbSg0LCAyMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEyKG0sIGQpIG0oNCwgMjEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMyhtLCBkKSBtKDQsIDIxMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTQobSwgZCkgbSg0LCAyMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE1KG0sIGQpIG0oNCwgMjE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNihtLCBkKSBtKDQsIDIxNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTcobSwgZCkgbSg0LCAyMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE4KG0sIGQpIG0oNCwgMjE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxOShtLCBkKSBtKDQsIDIxOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjAobSwgZCkgbSg0LCAyMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIxKG0sIGQpIG0oNCwgMjIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMihtLCBkKSBtKDQsIDIyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjMobSwgZCkgbSg0LCAyMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI0KG0sIGQpIG0oNCwgMjI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyNShtLCBkKSBtKDQsIDIyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjYobSwgZCkgbSg0LCAyMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI3KG0sIGQpIG0oNCwgMjI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyOChtLCBkKSBtKDQsIDIyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjkobSwgZCkgbSg0LCAyMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMwKG0sIGQpIG0oNCwgMjMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzMShtLCBkKSBtKDQsIDIzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzIobSwgZCkgbSg0LCAyMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMzKG0sIGQpIG0oNCwgMjMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNChtLCBkKSBtKDQsIDIzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzUobSwgZCkgbSg0LCAyMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM2KG0sIGQpIG0oNCwgMjM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNyhtLCBkKSBtKDQsIDIzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzgobSwgZCkgbSg0LCAyMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM5KG0sIGQpIG0oNCwgMjM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MChtLCBkKSBtKDQsIDI0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDEobSwgZCkgbSg0LCAyNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQyKG0sIGQpIG0oNCwgMjQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MyhtLCBkKSBtKDQsIDI0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDQobSwgZCkgbSg0LCAyNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ1KG0sIGQpIG0oNCwgMjQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NihtLCBkKSBtKDQsIDI0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDcobSwgZCkgbSg0LCAyNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ4KG0sIGQpIG0oNCwgMjQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0OShtLCBkKSBtKDQsIDI0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTAobSwgZCkgbSg0LCAyNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUxKG0sIGQpIG0oNCwgMjUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MihtLCBkKSBtKDQsIDI1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTMobSwgZCkgbSg0LCAyNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjU0KG0sIGQpIG0oNCwgMjU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1NShtLCBkKSBtKDQsIDI1NSwgZCkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0X2Zyb21fdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NGM1YjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX1JFUEVBVF9GUk9NX1RPX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fUkVQRUFUX0ZST01fVE9fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKGZpcnN0LCBsYXN0LCBtYWNybywgZGF0YSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1JFUEVBVF9QLCA0KSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzEoZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMShORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9XSElMRV9QLCAyNTYpLCBmLCBsLCBtLCBkdCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzIoZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMihORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9XSElMRV9QLCAyNTYpLCBmLCBsLCBtLCBkdCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzMoZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMyhORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9XSElMRV9QLCAyNTYpLCBmLCBsLCBtLCBkdCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzQoZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMykKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzFTVCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18xCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18yTkQgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fM1JEIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzMKLSMKLSMgLyogTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRCAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EKGQsIGZpcnN0LCBsYXN0LCBtYWNybywgZGF0YSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9SRVBFQVRfUCwgNCkpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8xKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfMShORE5CT09TVF9QUF9TVUJfRChkLCBsLCBmKSwgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xLCAoZCwgZiwgbSwgZHQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8yKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfMihORE5CT09TVF9QUF9TVUJfRChkLCBsLCBmKSwgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yLCAoZCwgZiwgbSwgZHQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8zKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfMyhORE5CT09TVF9QUF9TVUJfRChkLCBsLCBmKSwgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zLCAoZCwgZiwgbSwgZHQpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzEoZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMV9JKGQsIGYsIGwsIG0sIGR0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8yKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzJfSShkLCBmLCBsLCBtLCBkdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMyhkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8zX0koZCwgZiwgbCwgbSwgZHQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzFfSShkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUXzEoTkROQk9PU1RfUFBfU1VCX0QoZCwgbCwgZiksIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMSwgKGQsIGYsIG0sIGR0KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMl9JKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfMihORE5CT09TVF9QUF9TVUJfRChkLCBsLCBmKSwgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yLCAoZCwgZiwgbSwgZHQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8zX0koZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zKE5ETkJPT1NUX1BQX1NVQl9EKGQsIGwsIGYpLCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzMsIChkLCBmLCBtLCBkdCkpCi0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzEoeiwgbiwgZGZtZCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80IGRmbWQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzIoeiwgbiwgZGZtZCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80IGRmbWQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzMoeiwgbiwgZGZtZCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80IGRmbWQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzFfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMV9JKHosIG4sIGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzJfSSh6LCBuLCBpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fM19JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zX0koeiwgbiwgaW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMSh6LCBuLCBkZm1kKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzFfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDAsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDEsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDMsIGRmbWQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yKHosIG4sIGRmbWQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMl9JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMCwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMSwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMywgZGZtZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzMoeiwgbiwgZGZtZCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAwLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAxLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAzLCBkZm1kKSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMV9JKHosIG4sIGQsIGYsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzFfSUkoeiwgTkROQk9PU1RfUFBfQUREX0QoZCwgbiwgZiksIG0sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yX0koeiwgbiwgZCwgZiwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMl9JSSh6LCBORE5CT09TVF9QUF9BRERfRChkLCBuLCBmKSwgbSwgZHQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSSh6LCBuLCBkLCBmLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zX0lJKHosIE5ETkJPT1NUX1BQX0FERF9EKGQsIG4sIGYpLCBtLCBkdCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMV9JSSh6LCBuLCBtLCBkdCkgbSh6LCBuLCBkdCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMl9JSSh6LCBuLCBtLCBkdCkgbSh6LCBuLCBkdCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fM19JSSh6LCBuLCBtLCBkdCkgbSh6LCBuLCBkdCkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9jYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2NhdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNjg5YjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2NhdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9DQVRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0NBVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9sZF9sZWZ0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0NBVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVChzZXEpIFwKLSAgICBORE5CT09TVF9QUF9JRiggXAotICAgICAgICBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSksIFwKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0NBVF9JLCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9IRUFEIFwKLSAgICApKHNlcSkgXAotICAgIC8qKi8KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9DQVRfSShzZXEpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQoTkROQk9PU1RfUFBfU0VRX0NBVF9PLCBORE5CT09TVF9QUF9TRVFfSEVBRChzZXEpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9PKHMsIHN0LCBlbGVtKSBORE5CT09TVF9QUF9TRVFfQ0FUX09fSShzdCwgZWxlbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9DQVRfT19JKGEsIGIpIGEgIyMgYgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfQ0FUX1MgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9DQVRfUyhzLCBzZXEpIFwKLSAgICBORE5CT09TVF9QUF9JRiggXAotICAgICAgICBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSksIFwKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0NBVF9TX0lfQSwgXAotICAgICAgICBORE5CT09TVF9QUF9TRVFfQ0FUX1NfSV9CIFwKLSAgICApKHMsIHNlcSkgXAotICAgIC8qKi8KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9DQVRfU19JX0Eocywgc2VxKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXyAjIyBzKE5ETkJPT1NUX1BQX1NFUV9DQVRfTywgTkROQk9PU1RfUFBfU0VRX0hFQUQoc2VxKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc2VxKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9DQVRfU19JX0Iocywgc2VxKSBORE5CT09TVF9QUF9TRVFfSEVBRChzZXEpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZGV0YWlsL3NwbGl0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9kZXRhaWwvc3BsaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTgzM2FkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9kZXRhaWwvc3BsaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0RFVEFJTF9TUExJVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfREVUQUlMX1NQTElUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9TUExJVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUKG4sIHNlcSkgTkROQk9PU1RfUFBfU0VRX1NQTElUX0Qobiwgc2VxKQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfRChuLCBzZXEpIChORE5CT09TVF9QUF9TRVFfU1BMSVRfICMjIG4gc2VxKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfRChuLCBzZXEpIChORE5CT09TVF9QUF9TRVFfU1BMSVRfICMjIG4gIyMgc2VxKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEoeCkgKHgpLAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzczKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTEwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTExKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTEyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTEzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTIwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTIxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTIyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTIzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTUwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTUxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTUyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTUzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTcwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTcxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTcyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTczKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTgwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTgxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTgyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTgzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjAwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjAxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjAyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjAzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjEwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjExKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjEyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjEzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjMwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjMxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjMyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjMzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjU0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjU1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjU2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjU1Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZWxlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZWxlbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZTE2Y2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VsZW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0VMRU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0VMRU1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0VMRU0gKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU0oaSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JKGksIHNlcSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU0oaSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JKChpLCBzZXEpKQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0koaSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSSgoTkROQk9PU1RfUFBfU0VRX0VMRU1fICMjIGkgc2VxKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJKHJlcykgTkROQk9PU1RfUFBfU0VRX0VMRU1fSVYoTkROQk9PU1RfUFBfU0VRX0VMRU1fSUlJIHJlcykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJSSh4LCBfKSB4IE5ETkJPT1NUX1BQX0VNUFRZKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lWKHgpIHgKLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0kocGFyKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSSAjIyBwYXIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJKGksIHNlcSkgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUlJKE5ETkJPT1NUX1BQX1NFUV9FTEVNXyAjIyBpICMjIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJSShpbSkgTkROQk9PU1RfUFBfU0VRX0VMRU1fSVYoaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JVih4LCBfKSB4Ci0jIGVsc2UKLSMgICAgaWYgZGVmaW5lZChfX0lCTUNfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0koaSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSShORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX0VMRU1fICMjIGksIHNlcSkpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JKGksIHNlcSkgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUkoTkROQk9PU1RfUFBfU0VRX0VMRU1fICMjIGkgc2VxKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUkoaW0pIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJSShpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJSSh4LCBfKSB4Ci0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8wKHgpIHgsIE5ETkJPT1NUX1BQX05JTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8wCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzcyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNTQKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbnVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUyNmFmOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZW51bS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRU5VTV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRU5VTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0VOVU0gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNKHNlcSkgTkROQk9PU1RfUFBfU0VRX0VOVU1fSShzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV9JKHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9FTlVNXywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSkgc2VxCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTShzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTlVNX0koTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fSShzaXplLCBzZXEpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfRU5VTV8sIHNpemUpIHNlcQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTShzZXEpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfRU5VTV8sIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkpIHNlcQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMSh4KSB4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzcyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNTUKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9maXJzdF9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9maXJzdF9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRiNGRlNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZmlyc3Rfbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9GSVJTVF9OX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9GSVJTVF9OX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9kZXRhaWwvc3BsaXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRklSU1RfTiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GSVJTVF9OKG4sIHNlcSkgTkROQk9PU1RfUFBfSUYobiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIsIDAsIE5ETkJPT1NUX1BQX1NFUV9TUExJVChuLCBzZXEgKG5pbCkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRklSU1RfTihuLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9GSVJTVF9OX0kobiwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZJUlNUX05fSShuLCBzZXEpIE5ETkJPT1NUX1BQX0lGKG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKSgyLCAwLCBORE5CT09TVF9QUF9TRVFfU1BMSVQobiwgc2VxIChuaWwpKSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb2xkX2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZvbGRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMzI5MzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZvbGRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcwICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZPTERfTEVGVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRk9MRF9MRUZUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQob3AsIHN0YXRlLCBzZXEpIC4uLgotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfUCwgMjU2KSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfUChuKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS18sIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8gIyMgbihORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX08sIE5ETkJPT1NUX1BQX05JTCwgKG5pbCksIDEpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9PKHMsIHN0LCBfKSBzdAotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfRVJST1IoMHgwMDA1KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfRVJST1IoMHgwMDA1KQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9OSUwgMQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjExKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU2KG9wLCBzdCwgc3MsIHN6KSAwCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0Yob3AsIHN0LCBzcywgc3opIHN0Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF81KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF84KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzMwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzMxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzMyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzMzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzM0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzM1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzM2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzM3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzM4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzM5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQ0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQ1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQ2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQ3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQ4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzQ5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzUwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzUxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzUyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzUzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzU0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzU1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzU2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzU3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzU4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzU5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzYwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzYxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzYyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzYzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzY0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzY1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzY2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzY3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzY4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzY5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzcwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzcxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzcyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzczKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzc0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzc1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzc2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzc3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzc4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzc5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzgwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzgxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzgyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzgzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzg0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzg1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzg2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzg3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzg4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzg5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzkwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzkxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzkyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzkzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzk0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzk1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzk2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzk3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzk4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzk5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTAxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTA0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTA3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTEwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTEzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTE2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTE5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTIyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTI1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTI4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTMxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTM0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTM3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQ2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQ5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTUyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTU1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTU4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTYxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTY0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTY3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTcwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTczKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTc2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTc5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTgyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTg1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTg4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTkxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTk0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTk3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjAwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjAzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjA2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjA5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjExKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjEyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjE1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjE4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjIxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjI0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjI3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjMwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjMzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjM2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjM5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQ1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQ4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjUxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjU0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgzOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg0OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg1OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg2OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzczLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg3OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg4OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCg5OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTAwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTAxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTAyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTAzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTA0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTA1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTA2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTA3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTA4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTA5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTEwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTExLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTEyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTEzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTE0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTE1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTE2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTE3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTE4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTE5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTIwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTIxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTIyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTIzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTI0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTI1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTI2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTI3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTI4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTI5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTMwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTMxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTMyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTMzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTM0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTM1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTM2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTM3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTM4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTM5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQ0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQ1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQ2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQ3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQ4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTQ5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTUwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTUxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTUyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTUzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTU0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTU1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTU2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTU3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTU4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTU5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTYwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTYxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTYyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTYzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTY0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTY1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTY2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTY3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTY4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTY5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTcwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTcxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTcyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTczLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTc0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTc1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTc2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTc3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTc4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTc5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTgwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTgxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTgyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTgzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTg0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTg1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTg2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTg3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTg4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTg5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTkwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTkxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTkyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTkzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTk0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTk1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTk2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTk3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTk4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMTk5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjAwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjAxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjAyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjAzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjA0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjA1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjA2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjA3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjA4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjA5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjEwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjExLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjEyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjEzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjE0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjE1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjE2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjE3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjE4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjE5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjIwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjIxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjIyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjIzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjI0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjI1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjI2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjI3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjI4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjI5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjMwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjMxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjMyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjMzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjM0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjM1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjM2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjM3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjM4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjM5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQ0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQ1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQ2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQ3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQ4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjQ5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjUwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjUxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjUyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjUzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjU0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjU1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjU2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMjU3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDMyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDM1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDM4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQ0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQ3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDUwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDUzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDU2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDU5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDYyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDY1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDY4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDcxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDc0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDc3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDgwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDgzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDg2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDg5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDkyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDk1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDk4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTAwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTAzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTA2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTA5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTExLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTEyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTE1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTE4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTIxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTI0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTI3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTMwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTMzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTM2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTM5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQ1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQ4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTUxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTU0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTU3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTYwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTYzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTY2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTY5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTcyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTczKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTc1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTc4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTgxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTg0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTg3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTkwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTkzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTk2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTk5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjAyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjA1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjA4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjExLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjE0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjE3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjIwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjIzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjI2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjI5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjMyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjM1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjM4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQ0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQ3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjUwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjUzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjU2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRkZjA2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRk9SX0VBQ0hfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZPUl9FQUNIX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2Zvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2VxLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIKG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX0ZPUigobWFjcm8sIGRhdGEsIHNlcSAobmlsKSksIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9QLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTywgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX00pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSChtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfRChtYWNybywgZGF0YSwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0QobWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SKChtYWNybywgZGF0YSwgc2VxIChuaWwpKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9QKHIsIHgpIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9TRVFfU0laRShORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHgpKSkKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PKHIsIHgpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PX0kgeAotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTyhyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfT19JKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgeCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfT19JKG1hY3JvLCBkYXRhLCBzZXEpIChtYWNybywgZGF0YSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc2VxKSkKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NKHIsIHgpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NX0lNKHIsIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zIHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTV9JTShyLCBpbSkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX01fSShyLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX00ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX01fSShyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHgpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX01fSShyLCBtYWNybywgZGF0YSwgc2VxKSBtYWNybyhyLCBkYXRhLCBORE5CT09TVF9QUF9TRVFfSEVBRChzZXEpKQotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9SKHIsIG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX0ZPUl8gIyMgcigobWFjcm8sIGRhdGEsIHNlcSAobmlsKSksIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9QLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTywgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX00pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9SKHIsIG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9SX0kociwgbWFjcm8sIGRhdGEsIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9SX0kociwgbWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SXyAjIyByKChtYWNybywgZGF0YSwgc2VxIChuaWwpKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaF9pLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaF9pLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MxYjgxMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2hfaS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9GT1JfRUFDSF9JX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9GT1JfRUFDSF9JX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2Zvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2VxLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0kgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSShtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1IoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCksIDApLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9QLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSShtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9JKG1hY3JvLCBkYXRhLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9JKG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX0ZPUigobWFjcm8sIGRhdGEsIHNlcSAobmlsKSwgMCksIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX00pCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9QKHIsIHgpIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9TRVFfU0laRShORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIHgpKSkKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX08ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfT19JIHgKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTyhyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PX0koTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAwLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAxLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAzLCB4KSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX09fSShtYWNybywgZGF0YSwgc2VxLCBpKSAobWFjcm8sIGRhdGEsIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSksIE5ETkJPT1NUX1BQX0lOQyhpKSkKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX00ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTV9JTShyLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fNCB4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTV9JTShyLCBpbSkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTV9JKHIsIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NKHIsIHgpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX01fSShyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDAsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDEsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDMsIHgpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTV9JKHIsIG1hY3JvLCBkYXRhLCBzZXEsIGkpIG1hY3JvKHIsIGRhdGEsIGksIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNlcSkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1IgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9SKHIsIG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX0ZPUl8gIyMgcigobWFjcm8sIGRhdGEsIHNlcSAobmlsKSwgMCksIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX00pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1IociwgbWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUl9JKHIsIG1hY3JvLCBkYXRhLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9SX0kociwgbWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SXyAjIyByKChtYWNybywgZGF0YSwgc2VxIChuaWwpLCAwKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTywgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9yZXN0X24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3Jlc3Rfbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzNTBlZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3Jlc3Rfbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9SRVNUX05fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1JFU1RfTl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZGV0YWlsL3NwbGl0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfUkVTVF9OICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1JFU1RfTihuLCBzZXEpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfU0VRX1NQTElUKE5ETkJPT1NUX1BQX0lOQyhuKSwgKG5pbCkgc2VxIE5ETkJPT1NUX1BQX0VNUFRZKSkoKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfUkVTVF9OKG4sIHNlcSkgTkROQk9PU1RfUFBfU0VRX1JFU1RfTl9JKG4sIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9SRVNUX05fSShuLCBzZXEpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfU0VRX1NQTElUKE5ETkJPT1NUX1BQX0lOQyhuKSwgKG5pbCkgc2VxIE5ETkJPT1NUX1BQX0VNUFRZKSkoKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2VxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MwNmZlOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2VxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1NFUV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfU0VRX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9IRUFEICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfSEVBRChzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNKDAsIHNlcSkKLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX1RBSUwgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMXzEoKHNlcSkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTF8xKHBhcikgTkROQk9PU1RfUFBfU0VRX1RBSUxfMiAjIyBwYXIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMXzIoc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTF9JICMjIHNlcQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUwoc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTF9JRChORE5CT09TVF9QUF9TRVFfVEFJTF9JIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMX0lEKGlkKSBpZAotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMX0Qoc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUxfRChzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMX0kgc2VxCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUxfSSBzZXEKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMX0koeCkKLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX05JTCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX05JTCh4KSAoeCkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgzNGMwZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NDcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfU0laRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfU0laRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRShzZXEpIE5ETkJPT1NUX1BQX1NFUV9TSVpFX0koKHNlcSkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9JKHBhcikgTkROQk9PU1RfUFBfU0VRX1NJWkVfSUkgIyMgcGFyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9JSShzZXEpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfU0laRV8sIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzAgIyMgc2VxKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpIHx8IE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSBORE5CT09TVF9QUF9TRVFfU0laRV9JKHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX0koc2VxKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX1NJWkVfLCBORE5CT09TVF9QUF9TRVFfU0laRV8wIHNlcSkKLSMgZWxpZiBkZWZpbmVkKF9fSUJNQ19fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRShzZXEpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfU0laRV8sIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfU0laRV8wLCBzZXEpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRShzZXEpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfU0laRV8sIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzAgc2VxKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV80Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV83Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV80MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV80MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV80NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV80OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV81MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV81NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV81OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV82MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV82NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV82NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV83MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV83MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV83NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV83OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV84MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV84NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV84OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV85MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV85NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV85NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNTcKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzAgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yIDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzMgMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNCA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81IDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzYgNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNyA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84IDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzkgOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAgMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzExIDExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMiAxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMgMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE0IDE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNSAxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYgMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE3IDE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOCAxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkgMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIwIDIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMSAyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIgMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIzIDIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNCAyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUgMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI2IDI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNyAyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjggMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI5IDI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zMCAzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzEgMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzMyIDMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zMyAzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzQgMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzM1IDM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zNiAzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzcgMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzM4IDM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zOSAzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDAgNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQxIDQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80MiA0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDMgNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQ0IDQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80NSA0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDYgNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQ3IDQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80OCA0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDkgNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzUwIDUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81MSA1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTIgNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzUzIDUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81NCA1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTUgNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzU2IDU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81NyA1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTggNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzU5IDU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82MCA2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjEgNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzYyIDYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82MyA2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjQgNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzY1IDY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82NiA2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjcgNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzY4IDY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82OSA2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzAgNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzcxIDcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83MiA3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzMgNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzc0IDc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83NSA3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzYgNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzc3IDc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83OCA3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzkgNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzgwIDgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84MSA4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODIgODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzgzIDgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84NCA4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODUgODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzg2IDg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84NyA4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODggODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzg5IDg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85MCA5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTEgOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzkyIDkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85MyA5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTQgOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzk1IDk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85NiA5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTcgOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzk4IDk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85OSA5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAwIDEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAxIDEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAyIDEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAzIDEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA0IDEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA1IDEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA2IDEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA3IDEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA4IDEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA5IDEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEwIDExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTExIDExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEyIDExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEzIDExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE0IDExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE1IDExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE2IDExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE3IDExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE4IDExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE5IDExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIwIDEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIxIDEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIyIDEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIzIDEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI0IDEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI1IDEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI2IDEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI3IDEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI4IDEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI5IDEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMwIDEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMxIDEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMyIDEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMzIDEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM0IDEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM1IDEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM2IDEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM3IDEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM4IDEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM5IDEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQwIDE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQxIDE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQyIDE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQzIDE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ0IDE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ1IDE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ2IDE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ3IDE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ4IDE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ5IDE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUwIDE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUxIDE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUyIDE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUzIDE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU0IDE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU1IDE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU2IDE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU3IDE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU4IDE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU5IDE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYwIDE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYxIDE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYyIDE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYzIDE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY0IDE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY1IDE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY2IDE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY3IDE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY4IDE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY5IDE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcwIDE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcxIDE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcyIDE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTczIDE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc0IDE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc1IDE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc2IDE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc3IDE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc4IDE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc5IDE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgwIDE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgxIDE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgyIDE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgzIDE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg0IDE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg1IDE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg2IDE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg3IDE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg4IDE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg5IDE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkwIDE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkxIDE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkyIDE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkzIDE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk0IDE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk1IDE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk2IDE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk3IDE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk4IDE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk5IDE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAwIDIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAxIDIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAyIDIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAzIDIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA0IDIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA1IDIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA2IDIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA3IDIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA4IDIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA5IDIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEwIDIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjExIDIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEyIDIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEzIDIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE0IDIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE1IDIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE2IDIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE3IDIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE4IDIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE5IDIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIwIDIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIxIDIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIyIDIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIzIDIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI0IDIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI1IDIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI2IDIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI3IDIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI4IDIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI5IDIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMwIDIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMxIDIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMyIDIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMzIDIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM0IDIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM1IDIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM2IDIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM3IDIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM4IDIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM5IDIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQwIDI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQxIDI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQyIDI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQzIDI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ0IDI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ1IDI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ2IDI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ3IDI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ4IDI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ5IDI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUwIDI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUxIDI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUyIDI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUzIDI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU0IDI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU1IDI1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU2IDI1NgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3N1YnNlcS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc3Vic2VxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE0ZWU2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc3Vic2VxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1NVQlNFUV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfU1VCU0VRX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZmlyc3Rfbi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvcmVzdF9uLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX1NVQlNFUSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TVUJTRVEoc2VxLCBpLCBsZW4pIE5ETkJPT1NUX1BQX1NFUV9GSVJTVF9OKGxlbiwgTkROQk9PU1RfUFBfU0VRX1JFU1RfTihpLCBzZXEpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1VCU0VRKHNlcSwgaSwgbGVuKSBORE5CT09TVF9QUF9TRVFfU1VCU0VRX0koc2VxLCBpLCBsZW4pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1VCU0VRX0koc2VxLCBpLCBsZW4pIE5ETkJPT1NUX1BQX1NFUV9GSVJTVF9OKGxlbiwgTkROQk9PU1RfUFBfU0VRX1JFU1RfTihpLCBzZXEpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3RyYW5zZm9ybS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvdHJhbnNmb3JtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA0ZWI1Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvdHJhbnNmb3JtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1RSQU5TRk9STV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfVFJBTlNGT1JNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9sZF9sZWZ0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STShvcCwgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTChORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQoTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIChuaWwpKSwgc2VxKSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk0ob3AsIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9JKG9wLCBkYXRhLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX0kob3AsIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUwoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUKE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fTywgKG9wLCBkYXRhLCAobmlsKSksIHNlcSkpKQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PKHMsIHN0YXRlLCBlbGVtKSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX09fSU0ocywgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMgc3RhdGUsIGVsZW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX09fSU0ocywgaW0sIGVsZW0pIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fT19JKHMsIGltLCBlbGVtKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX08ocywgc3RhdGUsIGVsZW0pIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fT19JKHMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgc3RhdGUpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIHN0YXRlKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBzdGF0ZSksIGVsZW0pCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX09fSShzLCBvcCwgZGF0YSwgcmVzLCBlbGVtKSAob3AsIGRhdGEsIHJlcyAob3AocywgZGF0YSwgZWxlbSkpKQotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX1MgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX1Mocywgb3AsIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUwoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXyAjIyBzKE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fTywgKG9wLCBkYXRhLCAobmlsKSksIHNlcSkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX1Mocywgb3AsIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9TX0kocywgb3AsIGRhdGEsIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fU19JKHMsIG9wLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8gIyMgcyhORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgKG5pbCkpLCBzZXEpKSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL2NvdW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvY291bnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyOGU0NzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvY291bnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwNS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlICAgICAgKgotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQ09VTlRFUiArIDEKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVIKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfU0xPVF9DQ18xMChORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzksIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzkoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzgsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfU0xPVF9DQ184KE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzcoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzYoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfU0xPVF9DQ181KE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzQoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ODQ5NzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0xPVF9ERVRBSUxfREVGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NMT1RfREVUQUlMX0RFRl9IUFAKLSMKLSMgLyogTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfeCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoeCkgKHgpICUgMTAwMDAwMDAwMFVMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KHgpIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKHgpICUgMTAwMDAwMDAwVUwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoeCkgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOSh4KSAlIDEwMDAwMDAwVUwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoeCkgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOCh4KSAlIDEwMDAwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNih4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KHgpICUgMTAwMDAwVUwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoeCkgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNih4KSAlIDEwMDAwVUwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoeCkgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNSh4KSAlIDEwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyh4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KHgpICUgMTAwVUwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoeCkgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyh4KSAlIDEwVUwKLSMKLSMgLyogTkROQk9PU1RfUFBfU0xPVF9DQ194ICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzIoYSwgYikgTkROQk9PU1RfUFBfU0xPVF9DQ18yX0QoYSwgYikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhhLCBiLCBjKSBORE5CT09TVF9QUF9TTE9UX0NDXzNfRChhLCBiLCBjKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ180KGEsIGIsIGMsIGQpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNF9EKGEsIGIsIGMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzUoYSwgYiwgYywgZCwgZSkgTkROQk9PU1RfUFBfU0xPVF9DQ181X0QoYSwgYiwgYywgZCwgZSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNihhLCBiLCBjLCBkLCBlLCBmKSBORE5CT09TVF9QUF9TTE9UX0NDXzZfRChhLCBiLCBjLCBkLCBlLCBmKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ183KGEsIGIsIGMsIGQsIGUsIGYsIGcpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfN19EKGEsIGIsIGMsIGQsIGUsIGYsIGcpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzgoYSwgYiwgYywgZCwgZSwgZiwgZywgaCkgTkROQk9PU1RfUFBfU0xPVF9DQ184X0QoYSwgYiwgYywgZCwgZSwgZiwgZywgaCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOShhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpKSBORE5CT09TVF9QUF9TTE9UX0NDXzlfRChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ18xMChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqKSBORE5CT09TVF9QUF9TTE9UX0NDXzEwX0QoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaikKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMl9EKGEsIGIpIGEgIyMgYgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ18zX0QoYSwgYiwgYykgYSAjIyBiICMjIGMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNF9EKGEsIGIsIGMsIGQpIGEgIyMgYiAjIyBjICMjIGQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNV9EKGEsIGIsIGMsIGQsIGUpIGEgIyMgYiAjIyBjICMjIGQgIyMgZQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ182X0QoYSwgYiwgYywgZCwgZSwgZikgYSAjIyBiICMjIGMgIyMgZCAjIyBlICMjIGYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfN19EKGEsIGIsIGMsIGQsIGUsIGYsIGcpIGEgIyMgYiAjIyBjICMjIGQgIyMgZSAjIyBmICMjIGcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOF9EKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgpIGEgIyMgYiAjIyBjICMjIGQgIyMgZSAjIyBmICMjIGcgIyMgaAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ185X0QoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSkgYSAjIyBiICMjIGMgIyMgZCAjIyBlICMjIGYgIyMgZyAjIyBoICMjIGkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTBfRChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqKSBhICMjIGIgIyMgYyAjIyBkICMjIGUgIyMgZiAjIyBnICMjIGggIyMgaSAjIyBqCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc4ZDNiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUF9WQUxVRQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIE5ETkJPT1NUX1BQX1ZBTFVFIGlzIG5vdCBkZWZpbmVkCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMAotIwotIyBpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCAwCi0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgMQotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDIKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCAzCi0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgNAotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDUKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA2Ci0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgNwotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDgKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMFVMID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMFVMID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMFVMID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF83KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMFVMID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMFVMID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMFVMID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMFVMID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF80KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMFVMID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgOQotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9WQUxVRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTcyNzI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzEwKE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xMCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ185KE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOChORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNyhORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ182KE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNShORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNChORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90Mi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90Mi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0OTk5N2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzIKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTAoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEwLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzkoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF9DQ184KE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF9DQ183KE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzYoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF9DQ181KE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF9DQ180KE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAzNTAzZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90My5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18xMChORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMTAsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOShORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UX0NDXzgoTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UX0NDXzcoTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNihORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UX0NDXzUoTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UX0NDXzQoTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODAxN2EyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3Q0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzEwKE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xMCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ185KE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOChORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNyhORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ182KE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNShORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNChORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOTg0NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzUKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTAoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEwLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzkoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF9DQ184KE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF9DQ183KE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzYoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF9DQ181KE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF9DQ180KE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L3Nsb3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjYyMmJjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NMT1RfU0xPVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TTE9UX1NMT1RfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvZGVmLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UKGkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9BU1NJR05fU0xPVF8sIGkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVF8xIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDEuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1RfMiA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QyLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UXzMgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90My5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVF80IDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDQuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1RfNSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3Q1LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0xPVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVChpKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0xPVF8sIGkpKCkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3N0cmluZ2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zdHJpbmdpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWI0YTZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3N0cmluZ2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TVFJJTkdJWkVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU1RSSU5HSVpFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NUUklOR0laRSAqLwotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NUUklOR0laRSh0ZXh0KSBORE5CT09TVF9QUF9TVFJJTkdJWkVfQSgodGV4dCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVFJJTkdJWkVfQShhcmcpIE5ETkJPT1NUX1BQX1NUUklOR0laRV9JIGFyZwotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1RSSU5HSVpFKHRleHQpIE5ETkJPT1NUX1BQX1NUUklOR0laRV9PTygodGV4dCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVFJJTkdJWkVfT08ocGFyKSBORE5CT09TVF9QUF9TVFJJTkdJWkVfSSAjIyBwYXIKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1RSSU5HSVpFKHRleHQpIE5ETkJPT1NUX1BQX1NUUklOR0laRV9JKHRleHQpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TVFJJTkdJWkVfSSh0ZXh0KSAjdGV4dAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxMDQ2NDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDItMjAxMSkgKi8KLSMgLyogUmV2aXNlZCBieSBFZHdhcmQgRGllbmVyICgyMDExKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfRUFUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1RVUExFX0VBVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FQVQgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FQVQoLi4uKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FQVQoeCkKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfVFVQTEVfRUFUICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUKHNpemUpIE5ETkJPT1NUX1BQX0VBVAotIyBlbHNlCi0jICAgIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVQoc2l6ZSkgTkROQk9PU1RfUFBfVFVQTEVfRUFUX0koc2l6ZSkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVChzaXplKSBORE5CT09TVF9QUF9UVVBMRV9FQVRfT08oKHNpemUpKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF9PTyhwYXIpIE5ETkJPT1NUX1BQX1RVUExFX0VBVF9JICMjIHBhcgotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUX0koc2l6ZSkgTkROQk9PU1RfUFBfVFVQTEVfRUFUXyAjIyBzaXplCi0jIGVuZGlmCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMShlMCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKGUwLCBlMSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKGUwLCBlMSwgZTIpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNChlMCwgZTEsIGUyLCBlMykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81KGUwLCBlMSwgZTIsIGUzLCBlNCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF82KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF84KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF85KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjApCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMjUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMjYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMjgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMjkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMzEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzApCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMzIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMzQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfMzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNDAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNDEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNDMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNDQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNDYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNDcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNDkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTApCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF82MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjApCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF82MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfNjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDU1NWY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkxICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMi0yMDExKSAqLwotIyAvKiBSZXZpc2VkIGJ5IEVkd2FyZCBEaWVuZXIgKDIwMTEpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9FTEVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1RVUExFX0VMRU1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL292ZXJsb2FkLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9lbGVtLmhwcD4KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDU19NU1ZDCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSguLi4pIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSShORE5CT09TVF9QUF9PVkVSTE9BRChORE5CT09TVF9QUF9UVVBMRV9FTEVNX09fLCBfX1ZBX0FSR1NfXyksIChfX1ZBX0FSR1NfXykpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUkobSwgYXJncykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX0NBVChtICMjIGFyZ3MsKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSguLi4pIE5ETkJPT1NUX1BQX09WRVJMT0FEKE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fT18sIF9fVkFfQVJHU19fKShfX1ZBX0FSR1NfXykKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fT18yKG4sIHR1cGxlKSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNKG4sIE5ETkJPT1NUX1BQX1JFTSB0dXBsZSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fT18zKHNpemUsIG4sIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX09fMihuLCB0dXBsZSkKLSMgZWxzZQotIyAgICBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKHNpemUsIG4sIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0koTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fLCBuKSwgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfLCBzaXplKSwgdHVwbGUpKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSShtLCBhcmdzKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJKG0sIGFyZ3MpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSShtLCBhcmdzKSBORE5CT09TVF9QUF9DQVQobSAjIyBhcmdzLCkKLSMgICAgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKHNpemUsIG4sIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lfT08oKHNpemUsIG4sIHR1cGxlKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lfT08ocGFyKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0kgIyMgcGFyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JKHNpemUsIG4sIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJKChuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfICMjIHNpemUgIyMgdHVwbGUpKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUkocGFyKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJSV9PTyhwYXIpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSUlfT08ocGFyKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJSSAjIyBwYXIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJSShuLCBldHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fICMjIG4gIyMgZXR1cGxlCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKHNpemUsIG4sIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0koTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fLCBuKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXywgc2l6ZSkgdHVwbGUpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JKHgpIHgKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xKGUwKSAoZTAsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMihlMCwgZTEpIChlMCwgZTEsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMyhlMCwgZTEsIGUyKSAoZTAsIGUxLCBlMiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80KGUwLCBlMSwgZTIsIGUzKSAoZTAsIGUxLCBlMiwgZTMsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNShlMCwgZTEsIGUyLCBlMywgZTQpIChlMCwgZTEsIGUyLCBlMywgZTQsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV83KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzExKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTApIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzEyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzE0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzE1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzE3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzE4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8xOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzIwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTkpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzIxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzIzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzI0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzI2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzI3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzI5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzMwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzMyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzMzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzM1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzM2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzM4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzM5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDApIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQ0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQ1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQ3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQ4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV80OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzUwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDkpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzUxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzUzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzU0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzU2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzU3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzU5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzYwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV82MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzYyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzYzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV82NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8wKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV82KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV83KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV84KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV85KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzExKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzE0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzE3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzIwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzIzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzI2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzI5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzMyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzM1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzM4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQ0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQ3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzUwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzUzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzU2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzU5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV82MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzYyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU2MwotIyBlbmRpZgotIwotIyAvKiBkaXJlY3RseSB1c2VkIGVsc2V3aGVyZSBpbiBCb29zdC4uLiAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xXzAoYSkgYQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzAoYSwgYikgYQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEoYSwgYikgYgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzAoYSwgYiwgYykgYQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEoYSwgYiwgYykgYgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIoYSwgYiwgYykgYwotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NmUwNWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLTIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IEVkd2FyZCBEaWVuZXIgMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgICAgICAqCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfUkVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1RVUExFX1JFTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvb3ZlcmxvYWQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9SRU0gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRU0oLi4uKSBfX1ZBX0FSR1NfXwotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRU0oeCkgeAotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9UVVBMRV9SRU0gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU0oc2l6ZSkgTkROQk9PU1RfUFBfUkVNCi0jIGVsc2UKLSMgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTShzaXplKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fSShzaXplKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNKHNpemUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9PTygoc2l6ZSkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX09PKHBhcikgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0kgIyMgcGFyCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fSShzaXplKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fICMjIHNpemUKLSMgZW5kaWYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xKGUwKSBlMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIoZTAsIGUxKSBlMCwgZTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zKGUwLCBlMSwgZTIpIGUwLCBlMSwgZTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80KGUwLCBlMSwgZTIsIGUzKSBlMCwgZTEsIGUyLCBlMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzUoZTAsIGUxLCBlMiwgZTMsIGU0KSBlMCwgZTEsIGUyLCBlMywgZTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV82KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV83KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV85KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMjcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMzAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMzMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNDIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MikgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNDUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNDgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV82MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV82MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV82NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMKLSMKLSMgLyogTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1IgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDU19NU1ZDCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1IoLi4uKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JKE5ETkJPT1NUX1BQX09WRVJMT0FEKE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX09fLCBfX1ZBX0FSR1NfXyksIChfX1ZBX0FSR1NfXykpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSShtLCBhcmdzKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JSShtLCBhcmdzKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0lJKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX0NBVChtICMjIGFyZ3MsKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1IoLi4uKSBORE5CT09TVF9QUF9PVkVSTE9BRChORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9PXywgX19WQV9BUkdTX18pKF9fVkFfQVJHU19fKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfT18xKHR1cGxlKSBORE5CT09TVF9QUF9SRU0gdHVwbGUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX09fMihzaXplLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfT18xKHR1cGxlKQotIyBlbHNlCi0jICAgIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SKHNpemUsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JKE5ETkJPT1NUX1BQX1RVUExFX1JFTShzaXplKSwgdHVwbGUpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUihzaXplLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfRChzaXplLCB0dXBsZSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9EKHNpemUsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JKE5ETkJPT1NUX1BQX1RVUExFX1JFTShzaXplKSwgdHVwbGUpCi0jICAgIGVuZGlmCi0jICAgIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JKGV4dCwgdHVwbGUpIGV4dCB0dXBsZQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSShleHQsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9PTygoZXh0LCB0dXBsZSkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfT08ocGFyKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JSSAjIyBwYXIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JSShleHQsIHR1cGxlKSBleHQgIyMgdHVwbGUKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3RvX2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvdG9fbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMjJkYzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvdG9fbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyLTIwMTEpICovCi0jIC8qIFJldmlzZWQgYnkgRWR3YXJkIERpZW5lciAoMjAxMSkgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1RVUExFX1RPX0xJU1RfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfVE9fTElTVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvb3ZlcmxvYWQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvc2l6ZS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1QgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDU19NU1ZDCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVCguLi4pIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSShORE5CT09TVF9QUF9PVkVSTE9BRChORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX09fLCBfX1ZBX0FSR1NfXyksIChfX1ZBX0FSR1NfXykpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSUkobSwgYXJncykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0lJKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX0NBVChtICMjIGFyZ3MsKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVCguLi4pIE5ETkJPT1NUX1BQX09WRVJMT0FEKE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfT18sIF9fVkFfQVJHU19fKShfX1ZBX0FSR1NfXykKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfT18xKHR1cGxlKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8sIE5ETkJPT1NUX1BQX1ZBUklBRElDX1NJWkUgdHVwbGUpIHR1cGxlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX09fMihzaXplLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9PXzEodHVwbGUpCi0jIGVsc2UKLSMgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1Qoc2l6ZSwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSShzaXplLCB0dXBsZSkKLSMgICAgICAgIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JKHMsIHQpIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfICMjIHMgdAotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0kocywgdCkgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JSShORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXyAjIyBzIHQpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSUkocmVzKSByZXMKLSMgICAgICAgIGVuZGlmCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKHNpemUsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX09PKChzaXplLCB0dXBsZSkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9PTyhwYXIpIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSSAjIyBwYXIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0kocywgdCkgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8gIyMgcyAjIyB0Ci0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzEoZTApIChlMCwgTkROQk9PU1RfUFBfTklMKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yKGUwLCBlMSkgKGUwLCAoZTEsIE5ETkJPT1NUX1BQX05JTCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzMoZTAsIGUxLCBlMikgKGUwLCAoZTEsIChlMiwgTkROQk9PU1RfUFBfTklMKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQoZTAsIGUxLCBlMiwgZTMpIChlMCwgKGUxLCAoZTIsIChlMywgTkROQk9PU1RfUFBfTklMKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81KGUwLCBlMSwgZTIsIGUzLCBlNCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIE5ETkJPT1NUX1BQX05JTCkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgTkROQk9PU1RfUFBfTklMKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF84KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzEwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzEzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzE2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzE5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjApIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzIyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzI1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzI4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjkpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzMxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzM0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzM3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQ2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQ5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTApIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzUyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzU1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzU4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIChlNTYsIChlNTcsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCAoZTU3LCAoZTU4LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF82MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTkpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgKGU1NywgKGU1OCwgKGU1OSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzYxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIChlNTYsIChlNTcsIChlNTgsIChlNTksIChlNjAsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCAoZTU3LCAoZTU4LCAoZTU5LCAoZTYwLCAoZTYxLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF82MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgKGU1NywgKGU1OCwgKGU1OSwgKGU2MCwgKGU2MSwgKGU2MiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzY0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIChlNTYsIChlNTcsIChlNTgsIChlNTksIChlNjAsIChlNjEsIChlNjIsIChlNjMsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL2VsZW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvZWxlbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNzJlY2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvZWxlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IEVkd2FyZCBEaWVuZXIgMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgICAgICAqCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfVkFSSUFESUNfRUxFTV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9WQVJJQURJQ19FTEVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1NfTVNWQwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU0obiwgLi4uKSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNX0kobixfX1ZBX0FSR1NfXykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNX0kobiwgLi4uKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fLCBuKShfX1ZBX0FSR1NfXywpLCkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU0obiwgLi4uKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8sIG4pKF9fVkFfQVJHU19fLCkKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMChlMCwgLi4uKSBlMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xKGUwLCBlMSwgLi4uKSBlMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yKGUwLCBlMSwgZTIsIC4uLikgZTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMyhlMCwgZTEsIGUyLCBlMywgLi4uKSBlMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80KGUwLCBlMSwgZTIsIGUzLCBlNCwgLi4uKSBlNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIC4uLikgZTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgLi4uKSBlNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV83KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgLi4uKSBlNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV84KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIC4uLikgZTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgLi4uKSBlOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCAuLi4pIGUxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIC4uLikgZTExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzEyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCAuLi4pIGUxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCAuLi4pIGUxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIC4uLikgZTE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzE1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCAuLi4pIGUxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCAuLi4pIGUxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIC4uLikgZTE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzE4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCAuLi4pIGUxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8xOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCAuLi4pIGUxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIC4uLikgZTIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzIxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCAuLi4pIGUyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCAuLi4pIGUyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIC4uLikgZTIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzI0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCAuLi4pIGUyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCAuLi4pIGUyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIC4uLikgZTI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzI3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCAuLi4pIGUyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCAuLi4pIGUyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8yOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIC4uLikgZTI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzMwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCAuLi4pIGUzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCAuLi4pIGUzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIC4uLikgZTMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzMzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCAuLi4pIGUzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCAuLi4pIGUzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIC4uLikgZTM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzM2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCAuLi4pIGUzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCAuLi4pIGUzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIC4uLikgZTM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzM5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCAuLi4pIGUzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCAuLi4pIGU0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIC4uLikgZTQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCAuLi4pIGU0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCAuLi4pIGU0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIC4uLikgZTQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQ1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCAuLi4pIGU0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCAuLi4pIGU0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIC4uLikgZTQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQ4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCAuLi4pIGU0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV80OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCAuLi4pIGU0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIC4uLikgZTUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzUxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCAuLi4pIGU1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCAuLi4pIGU1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIC4uLikgZTUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzU0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCAuLi4pIGU1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCAuLi4pIGU1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIC4uLikgZTU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzU3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCAuLi4pIGU1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCAuLi4pIGU1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV81OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIC4uLikgZTU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzYwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCAuLi4pIGU2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV82MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCAuLi4pIGU2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV82MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIC4uLikgZTYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzYzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzLCAuLi4pIGU2MwotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAzNGExYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgRWR3YXJkIERpZW5lciAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAgICAgICoKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9WQVJJQURJQ19TSVpFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1ZBUklBRElDX1NJWkVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1ZBUklBRElDX1NJWkUgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDU19NU1ZDCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRSguLi4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFX0koX19WQV9BUkdTX18sIDY0LCA2MywgNjIsIDYxLCA2MCwgNTksIDU4LCA1NywgNTYsIDU1LCA1NCwgNTMsIDUyLCA1MSwgNTAsIDQ5LCA0OCwgNDcsIDQ2LCA0NSwgNDQsIDQzLCA0MiwgNDEsIDQwLCAzOSwgMzgsIDM3LCAzNiwgMzUsIDM0LCAzMywgMzIsIDMxLCAzMCwgMjksIDI4LCAyNywgMjYsIDI1LCAyNCwgMjMsIDIyLCAyMSwgMjAsIDE5LCAxOCwgMTcsIDE2LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCksKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRSguLi4pIE5ETkJPT1NUX1BQX1ZBUklBRElDX1NJWkVfSShfX1ZBX0FSR1NfXywgNjQsIDYzLCA2MiwgNjEsIDYwLCA1OSwgNTgsIDU3LCA1NiwgNTUsIDU0LCA1MywgNTIsIDUxLCA1MCwgNDksIDQ4LCA0NywgNDYsIDQ1LCA0NCwgNDMsIDQyLCA0MSwgNDAsIDM5LCAzOCwgMzcsIDM2LCAzNSwgMzQsIDMzLCAzMiwgMzEsIDMwLCAyOSwgMjgsIDI3LCAyNiwgMjUsIDI0LCAyMywgMjIsIDIxLCAyMCwgMTksIDE4LCAxNywgMTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRV9JKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzLCBzaXplLCAuLi4pIHNpemUKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJvZ3Jlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcm9ncmVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmNWU5ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcm9ncmVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8gIGJvb3N0IHByb2dyZXNzLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAxOTk0LTk5LiAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90aW1lciBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vICAgMSBEZWMgMDEgIEFkZCBsZWFkaW5nIHByb2dyZXNzIGRpc3BsYXkgc3RyaW5ncyAoc3VnZ2VzdGVkIGJ5IFRvb24gS25hcGVuKQotLy8gIDIwIE1heSAwMSAgSW50cm9kdWNlIHNldmVyYWwgc3RhdGljX2Nhc3RzPD4gdG8gZWxpbWluYXRlIHdhcm5pbmcgbWVzc2FnZXMKLS8vICAgICAgICAgICAgIChGaXhlZCBieSBCZW1hbiwgcmVwb3J0ZWQgYnkgSGVydmUgQnJvbm5pbWFubikKLS8vICAxMiBKYW4gMDEgIENoYW5nZSB0byBpbmxpbmUgaW1wbGVtZW50YXRpb24gdG8gYWxsb3cgdXNlIHdpdGhvdXQgbGlicmFyeQotLy8gICAgICAgICAgICAgYnVpbGRzLiBTZWUgZG9jcyBmb3IgbW9yZSByYXRpb25hbGUuIChCZW1hbiBEYXdlcykgCi0vLyAgMjIgSnVsIDk5ICBOYW1lIGNoYW5nZWQgdG8gLmhwcAotLy8gIDE2IEp1bCA5OSAgU2Vjb25kIGJldGEKLS8vICAgNiBKdWwgOTkgIEluaXRpYWwgYm9vc3QgdmVyc2lvbgotCi0jaWZuZGVmIE5ETkJPT1NUX1BST0dSRVNTX0hQUAotI2RlZmluZSBORE5CT09TVF9QUk9HUkVTU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3RpbWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5LmhwcD4gIC8vIGZvciBub25jb3B5YWJsZQotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAgLy8gZm9yIHVpbnRtYXhfdAotI2luY2x1ZGUgPGlvc3RyZWFtPiAgICAgICAgICAgLy8gZm9yIG9zdHJlYW0sIGNvdXQsIGV0YwotI2luY2x1ZGUgPHN0cmluZz4gICAgICAgICAgICAgLy8gZm9yIHN0cmluZwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAgcHJvZ3Jlc3NfdGltZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQSBwcm9ncmVzc190aW1lciBiZWhhdmVzIGxpa2UgYSB0aW1lciBleGNlcHQgdGhhdCB0aGUgZGVzdHJ1Y3RvciBkaXNwbGF5cwotLy8gIGFuIGVsYXBzZWQgdGltZSBtZXNzYWdlIGF0IGFuIGFwcHJvcHJpYXRlIHBsYWNlIGluIGFuIGFwcHJvcHJpYXRlIGZvcm0uCi0KLWNsYXNzIHByb2dyZXNzX3RpbWVyIDogcHVibGljIHRpbWVyLCBwcml2YXRlIG5vbmNvcHlhYmxlCi17Ci0gIAotIHB1YmxpYzoKLSAgZXhwbGljaXQgcHJvZ3Jlc3NfdGltZXIoIHN0ZDo6b3N0cmVhbSAmIG9zID0gc3RkOjpjb3V0ICkKLSAgICAgLy8gb3MgaXMgaGludDsgaW1wbGVtZW50YXRpb24gbWF5IGlnbm9yZSwgcGFydGljdWxhcmx5IGluIGVtYmVkZGVkIHN5c3RlbXMKLSAgICAgOiBtX29zKG9zKSB7fQotICB+cHJvZ3Jlc3NfdGltZXIoKQotICB7Ci0gIC8vICBBKSBUaHJvd2luZyBhbiBleGNlcHRpb24gZnJvbSBhIGRlc3RydWN0b3IgaXMgYSBCYWQgVGhpbmcuCi0gIC8vICBCKSBUaGUgcHJvZ3Jlc3NfdGltZXIgZGVzdHJ1Y3RvciBkb2VzIG91dHB1dCB3aGljaCBtYXkgdGhyb3cuCi0gIC8vICBDKSBBIHByb2dyZXNzX3RpbWVyIGlzIHVzdWFsbHkgbm90IGNyaXRpY2FsIHRvIHRoZSBhcHBsaWNhdGlvbi4KLSAgLy8gIFRoZXJlZm9yZSwgd3JhcCB0aGUgSS9PIGluIGEgdHJ5IGJsb2NrLCBjYXRjaCBhbmQgaWdub3JlIGFsbCBleGNlcHRpb25zLgotICAgIHRyeQotICAgIHsKLSAgICAgIC8vIHVzZSBpc3RyZWFtIGluc3RlYWQgb2YgaW9zX2Jhc2UgdG8gd29ya2Fyb3VuZCBHTlUgcHJvYmxlbSAoR3JlZyBDaGljYXJlcykKLSAgICAgIHN0ZDo6aXN0cmVhbTo6Zm10ZmxhZ3Mgb2xkX2ZsYWdzID0gbV9vcy5zZXRmKCBzdGQ6OmlzdHJlYW06OmZpeGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc3RyZWFtOjpmbG9hdGZpZWxkICk7Ci0gICAgICBzdGQ6OnN0cmVhbXNpemUgb2xkX3ByZWMgPSBtX29zLnByZWNpc2lvbiggMiApOwotICAgICAgbV9vcyA8PCBlbGFwc2VkKCkgPDwgIiBzXG4iIC8vICJzIiBpcyBTeXN0ZW0gSW50ZXJuYXRpb25hbCBkJ1VuaXRlcyBzdGQKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIG1fb3MuZmxhZ3MoIG9sZF9mbGFncyApOwotICAgICAgbV9vcy5wcmVjaXNpb24oIG9sZF9wcmVjICk7Ci0gICAgfQotCi0gICAgY2F0Y2ggKC4uLikge30gLy8gZWF0IGFueSBleGNlcHRpb25zCi0gIH0gLy8gfnByb2dyZXNzX3RpbWVyCi0KLSBwcml2YXRlOgotICBzdGQ6Om9zdHJlYW0gJiBtX29zOwotfTsKLQotCi0vLyAgcHJvZ3Jlc3NfZGlzcGxheSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgcHJvZ3Jlc3NfZGlzcGxheSBkaXNwbGF5cyBhbiBhcHByb3ByaWF0ZSBpbmRpY2F0aW9uIG9mIAotLy8gIHByb2dyZXNzIGF0IGFuIGFwcHJvcHJpYXRlIHBsYWNlIGluIGFuIGFwcHJvcHJpYXRlIGZvcm0uCi0KLS8vIE5PVEU6IChKYW4gMTIsIDIwMDEpIFRyaWVkIHRvIGNoYW5nZSB1bnNpZ25lZCBsb25nIHRvIG5kbmJvb3N0Ojp1aW50bWF4X3QsIGJ1dAotLy8gZm91bmQgc29tZSBjb21waWxlcnMgY291bGRuJ3QgaGFuZGxlIHRoZSByZXF1aXJlZCBjb252ZXJzaW9uIHRvIGRvdWJsZS4KLS8vIFJldmVydGVkIHRvIHVuc2lnbmVkIGxvbmcgdW50aWwgdGhlIGNvbXBpbGVycyBjYXRjaCB1cC4gCi0KLWNsYXNzIHByb2dyZXNzX2Rpc3BsYXkgOiBwcml2YXRlIG5vbmNvcHlhYmxlCi17Ci0gcHVibGljOgotICBleHBsaWNpdCBwcm9ncmVzc19kaXNwbGF5KCB1bnNpZ25lZCBsb25nIGV4cGVjdGVkX2NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om9zdHJlYW0gJiBvcyA9IHN0ZDo6Y291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiBzMSA9ICJcbiIsIC8vbGVhZGluZyBzdHJpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgczIgPSAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiBzMyA9ICIiICkKLSAgIC8vIG9zIGlzIGhpbnQ7IGltcGxlbWVudGF0aW9uIG1heSBpZ25vcmUsIHBhcnRpY3VsYXJseSBpbiBlbWJlZGRlZCBzeXN0ZW1zCi0gICA6IG1fb3Mob3MpLCBtX3MxKHMxKSwgbV9zMihzMiksIG1fczMoczMpIHsgcmVzdGFydChleHBlY3RlZF9jb3VudCk7IH0KLQotICB2b2lkICAgICAgICAgICByZXN0YXJ0KCB1bnNpZ25lZCBsb25nIGV4cGVjdGVkX2NvdW50ICkKLSAgLy8gIEVmZmVjdHM6IGRpc3BsYXkgYXBwcm9wcmlhdGUgc2NhbGUKLSAgLy8gIFBvc3Rjb25kaXRpb25zOiBjb3VudCgpPT0wLCBleHBlY3RlZF9jb3VudCgpPT1leHBlY3RlZF9jb3VudAotICB7Ci0gICAgX2NvdW50ID0gX25leHRfdGljX2NvdW50ID0gX3RpYyA9IDA7Ci0gICAgX2V4cGVjdGVkX2NvdW50ID0gZXhwZWN0ZWRfY291bnQ7Ci0KLSAgICBtX29zIDw8IG1fczEgPDwgIjAlICAgMTAgICAyMCAgIDMwICAgNDAgICA1MCAgIDYwICAgNzAgICA4MCAgIDkwICAgMTAwJVxuIgotICAgICAgICAgPDwgbV9zMiA8PCAifC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18IgotICAgICAgICAgPDwgc3RkOjplbmRsICAvLyBlbmRsIGltcGxpZXMgZmx1c2gsIHdoaWNoIGVuc3VyZXMgZGlzcGxheQotICAgICAgICAgPDwgbV9zMzsKLSAgICBpZiAoICFfZXhwZWN0ZWRfY291bnQgKSBfZXhwZWN0ZWRfY291bnQgPSAxOyAgLy8gcHJldmVudCBkaXZpZGUgYnkgemVybwotICB9IC8vIHJlc3RhcnQKLQotICB1bnNpZ25lZCBsb25nICBvcGVyYXRvcis9KCB1bnNpZ25lZCBsb25nIGluY3JlbWVudCApCi0gIC8vICBFZmZlY3RzOiBEaXNwbGF5IGFwcHJvcHJpYXRlIHByb2dyZXNzIHRpYyBpZiBuZWVkZWQuCi0gIC8vICBQb3N0Y29uZGl0aW9uczogY291bnQoKT09IG9yaWdpbmFsIGNvdW50KCkgKyBpbmNyZW1lbnQKLSAgLy8gIFJldHVybnM6IGNvdW50KCkuCi0gIHsKLSAgICBpZiAoIChfY291bnQgKz0gaW5jcmVtZW50KSA+PSBfbmV4dF90aWNfY291bnQgKSB7IGRpc3BsYXlfdGljKCk7IH0KLSAgICByZXR1cm4gX2NvdW50OwotICB9Ci0KLSAgdW5zaWduZWQgbG9uZyAgb3BlcmF0b3IrKygpICAgICAgICAgICB7IHJldHVybiBvcGVyYXRvcis9KCAxICk7IH0KLSAgdW5zaWduZWQgbG9uZyAgY291bnQoKSBjb25zdCAgICAgICAgICB7IHJldHVybiBfY291bnQ7IH0KLSAgdW5zaWduZWQgbG9uZyAgZXhwZWN0ZWRfY291bnQoKSBjb25zdCB7IHJldHVybiBfZXhwZWN0ZWRfY291bnQ7IH0KLQotICBwcml2YXRlOgotICBzdGQ6Om9zdHJlYW0gJiAgICAgbV9vczsgIC8vIG1heSBub3QgYmUgcHJlc2VudCBpbiBhbGwgaW1wcwotICBjb25zdCBzdGQ6OnN0cmluZyAgbV9zMTsgIC8vIHN0cmluZyBpcyBtb3JlIGdlbmVyYWwsIHNhZmVyIHRoYW4gCi0gIGNvbnN0IHN0ZDo6c3RyaW5nICBtX3MyOyAgLy8gIGNvbnN0IGNoYXIgKiwgYW5kIGVmZmljaWVuY3kgb3Igc2l6ZSBhcmUKLSAgY29uc3Qgc3RkOjpzdHJpbmcgIG1fczM7ICAvLyAgbm90IGlzc3VlcwotCi0gIHVuc2lnbmVkIGxvbmcgX2NvdW50LCBfZXhwZWN0ZWRfY291bnQsIF9uZXh0X3RpY19jb3VudDsKLSAgdW5zaWduZWQgaW50ICBfdGljOwotICB2b2lkIGRpc3BsYXlfdGljKCkKLSAgewotICAgIC8vIHVzZSBvZiBmbG9hdGluZyBwb2ludCBlbnN1cmVzIHRoYXQgYm90aCBsYXJnZSBhbmQgc21hbGwgY291bnRzCi0gICAgLy8gd29yayBjb3JyZWN0bHkuICBzdGF0aWNfY2FzdDw+KCkgaXMgYWxzbyB1c2VkIHNldmVyYWwgcGxhY2VzCi0gICAgLy8gdG8gc3VwcHJlc3Mgc3B1cmlvdXMgY29tcGlsZXIgd2FybmluZ3MuIAotICAgIHVuc2lnbmVkIGludCB0aWNzX25lZWRlZCA9Ci0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KAotICAgICAgICAoc3RhdGljX2Nhc3Q8ZG91YmxlPihfY291bnQpL19leHBlY3RlZF9jb3VudCkqNTAuMCApOwotICAgIGRvIHsgbV9vcyA8PCAnKicgPDwgc3RkOjpmbHVzaDsgfSB3aGlsZSAoICsrX3RpYyA8IHRpY3NfbmVlZGVkICk7Ci0gICAgX25leHRfdGljX2NvdW50ID0gCi0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPigoX3RpYy81MC4wKSpfZXhwZWN0ZWRfY291bnQpOwotICAgIGlmICggX2NvdW50ID09IF9leHBlY3RlZF9jb3VudCApIHsKLSAgICAgIGlmICggX3RpYyA8IDUxICkgbV9vcyA8PCAnKic7Ci0gICAgICBtX29zIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIH0KLSAgfSAvLyBkaXNwbGF5X3RpYwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9QUk9HUkVTU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkN2Y3YmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL2NvbmZpZy5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgU3RldmVuIFdhdGFuYWJlIDIwMDkKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBjb25maWcuaHBwIDUyNDkyIDIwMDktMDQtMTkgMTQ6NTU6NTdaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKi8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiAoZGVmaW5lZChORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKSkgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0gICAgI2RlZmluZSBORE5CT09TVF9SQU5ET01fTk9fU1RSRUFNX09QRVJBVE9SUwotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uc3RfbW9kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25zdF9tb2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDI3N2YyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25zdF9tb2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjE2ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvY29uc3RfbW9kLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAwLTIwMDEKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBjb25zdF9tb2QuaHBwIDcxMDE4IDIwMTEtMDQtMDUgMjE6Mjc6NTJaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKgotICogUmV2aXNpb24gaGlzdG9yeQotICogIDIwMDEtMDItMTggIG1vdmVkIHRvIGluZGl2aWR1YWwgaGVhZGVyIGZpbGVzCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fQ09OU1RfTU9EX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fQ09OU1RfTU9EX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV91bnNpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9sYXJnZV9hcml0aG1ldGljLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLQotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBtPgotY2xhc3MgY29uc3RfbW9kCi17Ci1wdWJsaWM6Ci0gIHN0YXRpYyBJbnRUeXBlIGFwcGx5KEludFR5cGUgeCkKLSAgewotICAgIGlmKCgodW5zaWduZWRfbSgpIC0gMSkgJiB1bnNpZ25lZF9tKCkpID09IDApCi0gICAgICByZXR1cm4gKHVuc2lnbmVkX3R5cGUoeCkpICYgKHVuc2lnbmVkX20oKSAtIDEpOwotICAgIGVsc2UgewotICAgICAgSW50VHlwZSBzdXByZXNzX3dhcm5pbmdzID0gKG0gPT0gMCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoc3VwcmVzc193YXJuaW5ncyA9PSAwKTsKLSAgICAgIHJldHVybiB4ICUgKG0gKyBzdXByZXNzX3dhcm5pbmdzKTsKLSAgICB9Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBhZGQoSW50VHlwZSB4LCBJbnRUeXBlIGMpCi0gIHsKLSAgICBpZigoKHVuc2lnbmVkX20oKSAtIDEpICYgdW5zaWduZWRfbSgpKSA9PSAwKQotICAgICAgcmV0dXJuICh1bnNpZ25lZF90eXBlKHgpICsgdW5zaWduZWRfdHlwZShjKSkgJiAodW5zaWduZWRfbSgpIC0gMSk7Ci0gICAgZWxzZSBpZihjID09IDApCi0gICAgICByZXR1cm4geDsKLSAgICBlbHNlIGlmKHggPCBtIC0gYykKLSAgICAgIHJldHVybiB4ICsgYzsKLSAgICBlbHNlCi0gICAgICByZXR1cm4geCAtIChtIC0gYyk7Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBtdWx0KEludFR5cGUgYSwgSW50VHlwZSB4KQotICB7Ci0gICAgaWYoKCh1bnNpZ25lZF9tKCkgLSAxKSAmIHVuc2lnbmVkX20oKSkgPT0gMCkKLSAgICAgIHJldHVybiB1bnNpZ25lZF90eXBlKGEpICogdW5zaWduZWRfdHlwZSh4KSAmICh1bnNpZ25lZF9tKCkgLSAxKTsKLSAgICBlbHNlIGlmKGEgPT0gMCkKLSAgICAgIHJldHVybiAwOwotICAgIGVsc2UgaWYoYSA9PSAxKQotICAgICAgcmV0dXJuIHg7Ci0gICAgZWxzZSBpZihtIDw9IHRyYWl0czo6Y29uc3RfbWF4L2EpICAgICAgLy8gaS5lLiBhKm0gPD0gbWF4Ci0gICAgICByZXR1cm4gbXVsdF9zbWFsbChhLCB4KTsKLSAgICBlbHNlIGlmKHRyYWl0czo6aXNfc2lnbmVkICYmIChtJWEgPCBtL2EpKQotICAgICAgcmV0dXJuIG11bHRfc2NocmFnZShhLCB4KTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gbXVsdF9nZW5lcmFsKGEsIHgpOwotICB9Ci0KLSAgc3RhdGljIEludFR5cGUgbXVsdF9hZGQoSW50VHlwZSBhLCBJbnRUeXBlIHgsIEludFR5cGUgYykKLSAgewotICAgIGlmKCgodW5zaWduZWRfbSgpIC0gMSkgJiB1bnNpZ25lZF9tKCkpID09IDApCi0gICAgICByZXR1cm4gKHVuc2lnbmVkX3R5cGUoYSkgKiB1bnNpZ25lZF90eXBlKHgpICsgdW5zaWduZWRfdHlwZShjKSkgJiAodW5zaWduZWRfbSgpIC0gMSk7Ci0gICAgZWxzZSBpZihhID09IDApCi0gICAgICByZXR1cm4gYzsKLSAgICBlbHNlIGlmKG0gPD0gKHRyYWl0czo6Y29uc3RfbWF4LWMpL2EpIHsgIC8vIGkuZS4gYSptK2MgPD0gbWF4Ci0gICAgICBJbnRUeXBlIHN1cHJlc3Nfd2FybmluZ3MgPSAobSA9PSAwKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChzdXByZXNzX3dhcm5pbmdzID09IDApOwotICAgICAgcmV0dXJuIChhKngrYykgJSAobSArIHN1cHJlc3Nfd2FybmluZ3MpOwotICAgIH0gZWxzZQotICAgICAgcmV0dXJuIGFkZChtdWx0KGEsIHgpLCBjKTsKLSAgfQotCi0gIHN0YXRpYyBJbnRUeXBlIHBvdyhJbnRUeXBlIGEsIG5kbmJvb3N0Ojp1aW50bWF4X3QgZXhwb25lbnQpCi0gIHsKLSAgICAgIEludFR5cGUgcmVzdWx0ID0gMTsKLSAgICAgIHdoaWxlKGV4cG9uZW50ICE9IDApIHsKLSAgICAgICAgICBpZihleHBvbmVudCAlIDIgPT0gMSkgewotICAgICAgICAgICAgICByZXN1bHQgPSBtdWx0KHJlc3VsdCwgYSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGEgPSBtdWx0KGEsIGEpOwotICAgICAgICAgIGV4cG9uZW50IC89IDI7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgc3RhdGljIEludFR5cGUgaW52ZXJ0KEludFR5cGUgeCkKLSAgeyByZXR1cm4geCA9PSAwID8gMCA6IChtID09IDA/IGludmVydF9ldWNsaWRpYW4wKHgpIDogaW52ZXJ0X2V1Y2xpZGlhbih4KSk7IH0KLQotcHJpdmF0ZToKLSAgdHlwZWRlZiBpbnRlZ2VyX3RyYWl0czxJbnRUeXBlPiB0cmFpdHM7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbWFrZV91bnNpZ25lZDxJbnRUeXBlPjo6dHlwZSB1bnNpZ25lZF90eXBlOwotCi0gIGNvbnN0X21vZCgpOyAgICAgIC8vIGRvbid0IGluc3RhbnRpYXRlCi0KLSAgc3RhdGljIEludFR5cGUgbXVsdF9zbWFsbChJbnRUeXBlIGEsIEludFR5cGUgeCkKLSAgewotICAgIEludFR5cGUgc3VwcmVzc193YXJuaW5ncyA9IChtID09IDApOwotICAgIE5ETkJPT1NUX0FTU0VSVChzdXByZXNzX3dhcm5pbmdzID09IDApOwotICAgIHJldHVybiBhKnggJSAobSArIHN1cHJlc3Nfd2FybmluZ3MpOwotICB9Ci0KLSAgc3RhdGljIEludFR5cGUgbXVsdF9zY2hyYWdlKEludFR5cGUgYSwgSW50VHlwZSB2YWx1ZSkKLSAgewotICAgIGNvbnN0IEludFR5cGUgcSA9IG0gLyBhOwotICAgIGNvbnN0IEludFR5cGUgciA9IG0gJSBhOwotCi0gICAgTkROQk9PU1RfQVNTRVJUKHIgPCBxKTsgICAgICAgIC8vIGNoZWNrIHRoYXQgb3ZlcmZsb3cgY2Fubm90IGhhcHBlbgotCi0gICAgcmV0dXJuIHN1YihhKih2YWx1ZSVxKSwgcioodmFsdWUvcSkpOwotICB9Ci0KLSAgc3RhdGljIEludFR5cGUgbXVsdF9nZW5lcmFsKEludFR5cGUgYSwgSW50VHlwZSBiKQotICB7Ci0gICAgSW50VHlwZSBzdXBwcmVzc193YXJuaW5ncyA9IChtID09IDApOwotICAgIE5ETkJPT1NUX0FTU0VSVChzdXBwcmVzc193YXJuaW5ncyA9PSAwKTsKLSAgICBJbnRUeXBlIG1vZHVsdXMgPSBtICsgc3VwcHJlc3Nfd2FybmluZ3M7Ci0gICAgTkROQk9PU1RfQVNTRVJUKG1vZHVsdXMgPT0gbSk7Ci0gICAgaWYoOjpuZG5ib29zdDo6dWludG1heF90KG1vZHVsdXMpIDw9Ci0gICAgICAgICg6OnN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OnVpbnRtYXhfdD46Om1heCkoKSAvIG1vZHVsdXMpCi0gICAgewotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEludFR5cGU+KG5kbmJvb3N0Ojp1aW50bWF4X3QoYSkgKiBiICUgbW9kdWx1cyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnRUeXBlPihkZXRhaWw6Om11bG1vZChhLCBiLCBtb2R1bHVzKSk7Ci0gICAgfQotICB9Ci0KLSAgc3RhdGljIEludFR5cGUgc3ViKEludFR5cGUgYSwgSW50VHlwZSBiKQotICB7Ci0gICAgaWYoYSA8IGIpCi0gICAgICByZXR1cm4gbSAtIChiIC0gYSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGEgLSBiOwotICB9Ci0KLSAgc3RhdGljIHVuc2lnbmVkX3R5cGUgdW5zaWduZWRfbSgpCi0gIHsKLSAgICAgIGlmKG0gPT0gMCkgewotICAgICAgICAgIHJldHVybiB1bnNpZ25lZF90eXBlKChzdGQ6Om51bWVyaWNfbGltaXRzPEludFR5cGU+OjptYXgpKCkpICsgMTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIHVuc2lnbmVkX3R5cGUobSk7Ci0gICAgICB9Ci0gIH0KLQotICAvLyBpbnZlcnQgYyBpbiB0aGUgZmluaXRlIGZpZWxkIChtb2QgbSkgKG0gbXVzdCBiZSBwcmltZSkKLSAgc3RhdGljIEludFR5cGUgaW52ZXJ0X2V1Y2xpZGlhbihJbnRUeXBlIGMpCi0gIHsKLSAgICAvLyB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgZ2NkIGZhY3RvciBmb3IgYywgYmVjYXVzZSB0aGlzIGlzIG91ciBpbnZlcnNlCi0gICAgTkROQk9PU1RfQVNTRVJUKGMgPiAwKTsKLSAgICBJbnRUeXBlIGwxID0gMDsKLSAgICBJbnRUeXBlIGwyID0gMTsKLSAgICBJbnRUeXBlIG4gPSBjOwotICAgIEludFR5cGUgcCA9IG07Ci0gICAgZm9yKDs7KSB7Ci0gICAgICBJbnRUeXBlIHEgPSBwIC8gbjsKLSAgICAgIGwxICs9IHEgKiBsMjsKLSAgICAgIHAgLT0gcSAqIG47Ci0gICAgICBpZihwID09IDApCi0gICAgICAgIHJldHVybiBsMjsKLSAgICAgIEludFR5cGUgcTIgPSBuIC8gcDsKLSAgICAgIGwyICs9IHEyICogbDE7Ci0gICAgICBuIC09IHEyICogcDsKLSAgICAgIGlmKG4gPT0gMCkKLSAgICAgICAgcmV0dXJuIG0gLSBsMTsKLSAgICB9Ci0gIH0KLQotICAvLyBpbnZlcnQgYyBpbiB0aGUgZmluaXRlIGZpZWxkIChtb2QgbSkgKGMgbXVzdCBiZSByZWxhdGl2ZWx5IHByaW1lIHRvIG0pCi0gIHN0YXRpYyBJbnRUeXBlIGludmVydF9ldWNsaWRpYW4wKEludFR5cGUgYykKLSAgewotICAgIC8vIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZSBnY2QgZmFjdG9yIGZvciBjLCBiZWNhdXNlIHRoaXMgaXMgb3VyIGludmVyc2UKLSAgICBORE5CT09TVF9BU1NFUlQoYyA+IDApOwotICAgIGlmKGMgPT0gMSkgcmV0dXJuIDE7Ci0gICAgSW50VHlwZSBsMSA9IDA7Ci0gICAgSW50VHlwZSBsMiA9IDE7Ci0gICAgSW50VHlwZSBuID0gYzsKLSAgICBJbnRUeXBlIHAgPSBtOwotICAgIEludFR5cGUgbWF4ID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46Om1heCkoKTsKLSAgICBJbnRUeXBlIHEgPSBtYXggLyBuOwotICAgIE5ETkJPT1NUX0FTU0VSVChtYXggJSBuICE9IG4gLSAxICYmICJjIG11c3QgYmUgcmVsYXRpdmVseSBwcmltZSB0byBtLiIpOwotICAgIGwxICs9IHEgKiBsMjsKLSAgICBwID0gbWF4IC0gcSAqIG4gKyAxOwotICAgIGZvcig7OykgewotICAgICAgaWYocCA9PSAwKQotICAgICAgICByZXR1cm4gbDI7Ci0gICAgICBJbnRUeXBlIHEyID0gbiAvIHA7Ci0gICAgICBsMiArPSBxMiAqIGwxOwotICAgICAgbiAtPSBxMiAqIHA7Ci0gICAgICBpZihuID09IDApCi0gICAgICAgIHJldHVybiBtIC0gbDE7Ci0gICAgICBxID0gcCAvIG47Ci0gICAgICBsMSArPSBxICogbDI7Ci0gICAgICBwIC09IHEgKiBuOwotICAgIH0KLSAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX0NPTlNUX01PRF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY3MDdkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDA5Ci0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogZGlzYWJsZV93YXJuaW5ncy5ocHAgNjA3NTUgMjAxMC0wMy0yMiAwMDo0NTowNlogc3RldmVuX3dhdGFuYWJlICQKLSAqCi0gKi8KLQotLy8gTm8gI2luY2x1ZGUgZ3VhcmQuICBUaGlzIGhlYWRlciBpcyBpbnRlbmRlZCB0byBiZSBpbmNsdWRlZCBtdWx0aXBsZSB0aW1lcy4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ1MTIpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDcyNCkKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg1MzVlMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAwOQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGVuYWJsZV93YXJuaW5ncy5ocHAgNTg2NDkgMjAxMC0wMS0wMiAyMToyMzoxN1ogc3RldmVuX3dhdGFuYWJlICQKLSAqCi0gKi8KLQotLy8gTm8gI2luY2x1ZGUgZ3VhcmQuICBUaGlzIGhlYWRlciBpcyBpbnRlbmRlZCB0byBiZSBpbmNsdWRlZCBtdWx0aXBsZSB0aW1lcy4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9nZW5lcmF0b3JfYml0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZ2VuZXJhdG9yX2JpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGQ0OWQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9nZW5lcmF0b3JfYml0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL2dlbmVyYXRvcl9iaXRzLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAxMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGdlbmVyYXRvcl9iaXRzLmhwcCA3Mjk1MSAyMDExLTA3LTA3IDA0OjU3OjM3WiBzdGV2ZW5fd2F0YW5hYmUgJAotICoKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfR0VORVJBVE9SX0JJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfR0VORVJBVE9SX0JJVFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSBtZWFzdXJlIHRoYXQgcmV0YWlucyBiYWNrd2FyZHMKLS8vIGNvbXBhdGliaWxpdHkuCi10ZW1wbGF0ZTxjbGFzcyBVUk5HPgotc3RydWN0IGdlbmVyYXRvcl9iaXRzIHsKLSAgICBzdGF0aWMgc3RkOjpzaXplX3QgdmFsdWUoKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHR5cGVuYW1lIFVSTkc6OnJlc3VsdF90eXBlPjo6ZGlnaXRzOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfQklUU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9pbnRlZ2VyX2xvZzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2ludGVnZXJfbG9nMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NDI5YWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2ludGVnZXJfbG9nMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL2ludGVnZXJfbG9nMi5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgU3RldmVuIFdhdGFuYWJlIDIwMTEKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBpbnRlZ2VyX2xvZzIuaHBwIDgzMzgxIDIwMTMtMDMtMDkgMjI6NTU6MDVaIGVyaWNfbmllYmxlciAkCi0gKgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTlRFR0VSX0xPRzJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSU5URUdFUl9MT0cyX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3BlbmRpbmcvaW50ZWdlcl9sb2cyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIpCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIGNvbnN0ZXhwcgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBfX2ZvcmNlaW5saW5lCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA0Ci0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIGlubGluZSBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgaW5saW5lCi0jZW5kaWYKLQotdGVtcGxhdGU8aW50IFNoaWZ0Pgotc3RydWN0IGludGVnZXJfbG9nMl9pbXBsCi17Ci0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIpCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBzdGF0aWMgaW50IGFwcGx5KFQgdCwgaW50IGFjY3VtKQotICAgIHsKLSAgICAgICAgaW50IHVwZGF0ZSA9ICgodCA+PiBTaGlmdCkgIT0gMCkgKiBTaGlmdDsKLSAgICAgICAgcmV0dXJuIGludGVnZXJfbG9nMl9pbXBsPFNoaWZ0IC8gMj46OmFwcGx5KHQgPj4gdXBkYXRlLCBhY2N1bSArIHVwZGF0ZSk7Ci0gICAgfQotI2Vsc2UKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIHN0YXRpYyBpbnQgYXBwbHkyKFQgdCwgaW50IGFjY3VtLCBpbnQgdXBkYXRlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGludGVnZXJfbG9nMl9pbXBsPFNoaWZ0IC8gMj46OmFwcGx5KHQgPj4gdXBkYXRlLCBhY2N1bSArIHVwZGF0ZSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBzdGF0aWMgaW50IGFwcGx5KFQgdCwgaW50IGFjY3VtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFwcGx5Mih0LCBhY2N1bSwgKCh0ID4+IFNoaWZ0KSAhPSAwKSAqIFNoaWZ0KTsKLSAgICB9Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbnRlZ2VyX2xvZzJfaW1wbDwxPgotewotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgc3RhdGljIGludCBhcHBseShUIHQsIGludCBhY2N1bSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbnQodCA+PiAxKSArIGFjY3VtOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1ORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBpbnQgaW50ZWdlcl9sb2cyKFQgdCkKLXsKLSAgICByZXR1cm4gaW50ZWdlcl9sb2cyX2ltcGw8Ci0gICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6bWF4X3BvdzJfbGVzczwKLSAgICAgICAgICAgIDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzLCA0Ci0gICAgICAgID46OnZhbHVlCi0gICAgPjo6YXBwbHkodCwgMCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTlRFR0VSX0xPRzJfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvbGFyZ2VfYXJpdGhtZXRpYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvbGFyZ2VfYXJpdGhtZXRpYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YzY0MzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2xhcmdlX2FyaXRobWV0aWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvbGFyZ2VfYXJpdGhtZXRpYy5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgU3RldmVuIFdhdGFuYWJlIDIwMTEKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBsYXJnZV9hcml0aG1ldGljLmhwcCA3MTAxOCAyMDExLTA0LTA1IDIxOjI3OjUyWiBzdGV2ZW5fd2F0YW5hYmUgJAotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9MQVJHRV9BUklUSE1FVElDX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0xBUkdFX0FSSVRITUVUSUNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvaW50ZWdlcl9sb2cyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi1zdHJ1Y3QgZGl2X3QgewotICAgIG5kbmJvb3N0Ojp1aW50bWF4X3QgcXVvdGllbnQ7Ci0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCByZW1haW5kZXI7Ci19OwotCi1pbmxpbmUgZGl2X3QgbXVsZGl2bW9kKG5kbmJvb3N0Ojp1aW50bWF4X3QgYSwgbmRuYm9vc3Q6OnVpbnRtYXhfdCBiLCBuZG5ib29zdDo6dWludG1heF90IG0pCi17Ci0gICAgc3RhdGljIGNvbnN0IGludCBiaXRzID0KLSAgICAgICAgOjpzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojp1aW50bWF4X3Q+OjpkaWdpdHMgLyAyOwotICAgIHN0YXRpYyBjb25zdCA6Om5kbmJvb3N0Ojp1aW50bWF4X3QgbWFzayA9ICg6Om5kbmJvb3N0Ojp1aW50bWF4X3QoMSkgPDwgYml0cykgLSAxOwotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6dWludF90PGJpdHM+OjpmYXN0IGRpZ2l0X3Q7Ci0KLSAgICBpbnQgc2hpZnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojp1aW50bWF4X3Q+OjpkaWdpdHMgLSAxCi0gICAgICAgIC0gZGV0YWlsOjppbnRlZ2VyX2xvZzIobSk7Ci0KLSAgICBhIDw8PSBzaGlmdDsKLSAgICBtIDw8PSBzaGlmdDsKLQotICAgIGRpZ2l0X3QgcHJvZHVjdFs0XSA9IHsgMCwgMCwgMCwgMCB9OwotICAgIGRpZ2l0X3QgYV9bMl0gPSB7IGRpZ2l0X3QoYSAmIG1hc2spLCBkaWdpdF90KChhID4+IGJpdHMpICYgbWFzaykgfTsKLSAgICBkaWdpdF90IGJfWzJdID0geyBkaWdpdF90KGIgJiBtYXNrKSwgZGlnaXRfdCgoYiA+PiBiaXRzKSAmIG1hc2spIH07Ci0gICAgZGlnaXRfdCBtX1syXSA9IHsgZGlnaXRfdChtICYgbWFzayksIGRpZ2l0X3QoKG0gPj4gYml0cykgJiBtYXNrKSB9OwotCi0gICAgLy8gbXVsdGlwbHkgYSAqIGIKLSAgICBmb3IoaW50IGkgPSAwOyBpIDwgMjsgKytpKSB7Ci0gICAgICAgIGRpZ2l0X3QgY2FycnkgPSAwOwotICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgMjsgKytqKSB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp1aW50NjRfdCB0ZW1wID0gOjpuZG5ib29zdDo6dWludG1heF90KGFfW2ldKSAqIGJfW2pdICsKLSAgICAgICAgICAgICAgICBjYXJyeSArIHByb2R1Y3RbaSArIGpdOwotICAgICAgICAgICAgcHJvZHVjdFtpICsgal0gPSBkaWdpdF90KHRlbXAgJiBtYXNrKTsKLSAgICAgICAgICAgIGNhcnJ5ID0gZGlnaXRfdCh0ZW1wID4+IGJpdHMpOwotICAgICAgICB9Ci0gICAgICAgIGlmKGNhcnJ5ICE9IDApIHsKLSAgICAgICAgICAgIHByb2R1Y3RbaSArIDJdICs9IGNhcnJ5OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZGlnaXRfdCBxdW90aWVudFsyXTsKLQotICAgIGlmKG0gPT0gMCkgewotICAgICAgICBkaXZfdCByZXN1bHQgPSB7Ci0gICAgICAgICAgICAoKDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChwcm9kdWN0WzNdKSA8PCBiaXRzKSB8IHByb2R1Y3RbMl0pLAotICAgICAgICAgICAgKCg6Om5kbmJvb3N0Ojp1aW50bWF4X3QocHJvZHVjdFsxXSkgPDwgYml0cykgfCBwcm9kdWN0WzBdKSA+PiBzaGlmdCwKLSAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICAvLyBkaXZpZGUgcHJvZHVjdCAvIG0KLSAgICBmb3IoaW50IGkgPSAzOyBpID49IDI7IC0taSkgewotICAgICAgICA6Om5kbmJvb3N0Ojp1aW50bWF4X3QgdGVtcCA9Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp1aW50bWF4X3QocHJvZHVjdFtpXSkgPDwgYml0cyB8IHByb2R1Y3RbaSAtIDFdOwotCi0gICAgICAgIGRpZ2l0X3QgcSA9IGRpZ2l0X3QoKHByb2R1Y3RbaV0gPT0gbV9bMV0pID8gbWFzayA6IHRlbXAgLyBtX1sxXSk7Ci0KLSAgICAgICAgOjpuZG5ib29zdDo6dWludG1heF90IHJlbSA9Ci0gICAgICAgICAgICAoKHRlbXAgLSA6Om5kbmJvb3N0Ojp1aW50bWF4X3QocSkgKiBtX1sxXSkgPDwgYml0cykgKyBwcm9kdWN0W2kgLSAyXTsKLQotICAgICAgICA6Om5kbmJvb3N0Ojp1aW50bWF4X3QgZGlmZiA9IG1fWzBdICogOjpuZG5ib29zdDo6dWludG1heF90KHEpOwotCi0gICAgICAgIGludCBlcnJvciA9IDA7Ci0gICAgICAgIGlmKGRpZmYgPiByZW0pIHsKLSAgICAgICAgICAgIGlmKGRpZmYgLSByZW0gPiBtKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSAyOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJvciA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcSAtPSBlcnJvcjsKLSAgICAgICAgcmVtID0gcmVtICsgZXJyb3IgKiBtIC0gZGlmZjsKLQotICAgICAgICBxdW90aWVudFtpIC0gMl0gPSBxOwotICAgICAgICBwcm9kdWN0W2ldID0gMDsKLSAgICAgICAgcHJvZHVjdFtpLTFdID0gKHJlbSA+PiBiaXRzKSAmIG1hc2s7Ci0gICAgICAgIHByb2R1Y3RbaS0yXSA9IHJlbSAmIG1hc2s7Ci0gICAgfQotCi0gICAgZGl2X3QgcmVzdWx0ID0gewotICAgICAgICAoKDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChxdW90aWVudFsxXSkgPDwgYml0cykgfCBxdW90aWVudFswXSksCi0gICAgICAgICgoOjpuZG5ib29zdDo6dWludG1heF90KHByb2R1Y3RbMV0pIDw8IGJpdHMpIHwgcHJvZHVjdFswXSkgPj4gc2hpZnQsCi0gICAgfTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1pbmxpbmUgbmRuYm9vc3Q6OnVpbnRtYXhfdCBtdWxkaXYobmRuYm9vc3Q6OnVpbnRtYXhfdCBhLCBuZG5ib29zdDo6dWludG1heF90IGIsIG5kbmJvb3N0Ojp1aW50bWF4X3QgbSkKLXsgcmV0dXJuIGRldGFpbDo6bXVsZGl2bW9kKGEsIGIsIG0pLnF1b3RpZW50OyB9Ci0KLWlubGluZSBuZG5ib29zdDo6dWludG1heF90IG11bG1vZChuZG5ib29zdDo6dWludG1heF90IGEsIG5kbmJvb3N0Ojp1aW50bWF4X3QgYiwgbmRuYm9vc3Q6OnVpbnRtYXhfdCBtKQoteyByZXR1cm4gZGV0YWlsOjptdWxkaXZtb2QoYSwgYiwgbSkucmVtYWluZGVyOyB9Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX0RFVEFJTF9MQVJHRV9BUklUSE1FVElDX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL29wZXJhdG9ycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvb3BlcmF0b3JzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRmNDg4MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvb3BlcmF0b3JzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvb3BlcmF0b3JzLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAxMC0yMDExCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogb3BlcmF0b3JzLmhwcCA3MTAxOCAyMDExLTA0LTA1IDIxOjI3OjUyWiBzdGV2ZW5fd2F0YW5hYmUgJAotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9PUEVSQVRPUlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfT1BFUkFUT1JTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMxMCkgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTEwMCkpCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9PU1RSRUFNX09QRVJBVE9SKG9zLCBULCB0KSAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywgY29uc3QgVCYgdCkgeyAgICAgIFwKLSAgICAgICAgdC5wcmludChvcywgdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIG9zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcmludChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IFQmIHQpCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JU1RSRUFNX09QRVJBVE9SKGlzLCBULCB0KSAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgVCYgdCkgeyAgICAgICAgICAgIFwKLSAgICAgICAgdC5yZWFkKGlzLCB0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGlzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZWFkKHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgVCYgdCkKLQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0VRVUFMSVRZX09QRVJBVE9SKFQsIGxocywgcmhzKSAgICAgICAgICAgICAgXAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiByaHMpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgcmV0dXJuIFQ6OmlzX2VxdWFsKCp0aGlzLCByaHMpOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyBib29sIGlzX2VxdWFsKGNvbnN0IFQmIGxocywgY29uc3QgVCYgcmhzKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSU5FUVVBTElUWV9PUEVSQVRPUihUKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHJocykgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyByZXR1cm4gIVQ6OmlzX2VxdWFsKCp0aGlzLCByaHMpOyB9Ci0KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfT1NUUkVBTV9PUEVSQVRPUgotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX09TVFJFQU1fT1BFUkFUT1Iob3MsIFQsIHQpICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCBUJiB0KQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JU1RSRUFNX09QRVJBVE9SCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSVNUUkVBTV9PUEVSQVRPUihpcywgVCwgdCkgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsIFQmIHQpCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX0VRVUFMSVRZX09QRVJBVE9SCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfRVFVQUxJVFlfT1BFUkFUT1IoVCwgbGhzLCByaHMpICAgICAgICAgICAgICBcCi0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiBsaHMsIGNvbnN0IFQmIHJocykKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSU5FUVVBTElUWV9PUEVSQVRPUgotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0lORVFVQUxJVFlfT1BFUkFUT1IoVCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgbGhzLCBjb25zdCBUJiByaHMpICAgICAgICAgICAgICAgICAgXAotICAgIHsgcmV0dXJuICEobGhzID09IHJocyk7IH0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9wdHJfaGVscGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9wdHJfaGVscGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA3YTg4YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvcHRyX2hlbHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL3B0cl9oZWxwZXIuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDIKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBwdHJfaGVscGVyLmhwcCAyNDA5NiAyMDA0LTA3LTI3IDAzOjQzOjM0WiBkZ3JlZ29yICQKLSAqCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX1BUUl9IRUxQRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfUFRSX0hFTFBFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIHR5cGVfdHJhaXRzIGNvdWxkIGhlbHAgaGVyZSwgYnV0IEkgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gdHlwZV90cmFpdHMuCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHB0cl9oZWxwZXIKLXsKLSAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gIHR5cGVkZWYgVCYgcmVmZXJlbmNlX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVCYgcnZhbHVlX3R5cGU7Ci0gIHN0YXRpYyByZWZlcmVuY2VfdHlwZSByZWYoVCYgcikgeyByZXR1cm4gcjsgfQotICBzdGF0aWMgY29uc3QgVCYgcmVmKGNvbnN0IFQmIHIpIHsgcmV0dXJuIHI7IH0KLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBwdHJfaGVscGVyPFQmPgotewotICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgdHlwZWRlZiBUJiByZWZlcmVuY2VfdHlwZTsKLSAgdHlwZWRlZiBUJiBydmFsdWVfdHlwZTsKLSAgc3RhdGljIHJlZmVyZW5jZV90eXBlIHJlZihUJiByKSB7IHJldHVybiByOyB9Ci0gIHN0YXRpYyBjb25zdCBUJiByZWYoY29uc3QgVCYgcikgeyByZXR1cm4gcjsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBwdHJfaGVscGVyPFQqPgotewotICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgdHlwZWRlZiBUJiByZWZlcmVuY2VfdHlwZTsKLSAgdHlwZWRlZiBUKiBydmFsdWVfdHlwZTsKLSAgc3RhdGljIHJlZmVyZW5jZV90eXBlIHJlZihUICogcCkgeyByZXR1cm4gKnA7IH0KLSAgc3RhdGljIGNvbnN0IFQmIHJlZihjb25zdCBUICogcCkgeyByZXR1cm4gKnA7IH0KLX07Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vCi0vLyBORE5CT09TVF9SQU5ET01fUFRSX0hFTFBFUl9TUEVDIC0tCi0vLwotLy8gIEhlbHBlciBtYWNybyBmb3IgYnJva2VuIGNvbXBpbGVycyBkZWZpbmVzIHNwZWNpYWxpemF0aW9ucyBvZgotLy8gIHB0cl9oZWxwZXIuCi0vLwotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9QVFJfSEVMUEVSX1NQRUMoVCkgICAgICAgICAgICAgICAgXAotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHJhbmRvbSB7IG5hbWVzcGFjZSBkZXRhaWwgeyBcCi10ZW1wbGF0ZTw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBwdHJfaGVscGVyPFQmPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHR5cGVkZWYgVCB2YWx1ZV90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdHlwZWRlZiBUJiByZWZlcmVuY2VfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0eXBlZGVmIFQmIHJ2YWx1ZV90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHN0YXRpYyByZWZlcmVuY2VfdHlwZSByZWYoVCYgcikgeyByZXR1cm4gcjsgfSAgICAgICAgIFwKLSAgc3RhdGljIGNvbnN0IFQmIHJlZihjb25zdCBUJiByKSB7IHJldHVybiByOyB9ICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHB0cl9oZWxwZXI8VCo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0eXBlZGVmIFQmIHJlZmVyZW5jZV90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHR5cGVkZWYgVCogcnZhbHVlX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RhdGljIHJlZmVyZW5jZV90eXBlIHJlZihUICogcCkgeyByZXR1cm4gKnA7IH0gICAgICAgXAotICBzdGF0aWMgY29uc3QgVCYgcmVmKGNvbnN0IFQgKiBwKSB7IHJldHVybiAqcDsgfSAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX19fQotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9QVFJfSEVMUEVSX1NQRUMoVCkKLSNlbmRpZiAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfUFRSX0hFTFBFUl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zZWVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zZWVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y1YWMyYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9zZWVkLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAwOQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IHNlZWQuaHBwIDcxMDE4IDIwMTEtMDQtMDUgMjE6Mjc6NTJaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIFN1biBzZWVtcyB0byBoYXZlIHRyb3VibGUgd2l0aCB0aGUgdXNlIG9mIFNGSU5BRSBmb3IgdGhlCi0vLyB0ZW1wbGF0ZWQgY29uc3RydWN0b3IuICBTbyBkb2VzIEJvcmxhbmQuCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKSAmJiAhZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBkaXNhYmxlX3NlZWQgOiBuZG5ib29zdDo6ZGlzYWJsZV9pZjxuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUPiA+IHt9OwotCi10ZW1wbGF0ZTxjbGFzcyBFbmdpbmUsIGNsYXNzIFQ+Ci1zdHJ1Y3QgZGlzYWJsZV9jb25zdHJ1Y3RvciA6IGRpc2FibGVfc2VlZDxUPiB7fTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5naW5lPgotc3RydWN0IGRpc2FibGVfY29uc3RydWN0b3I8RW5naW5lLCBFbmdpbmU+IHt9OwotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfR0VORVJBVE9SX0NPTlNUUlVDVE9SKFNlbGYsIEdlbmVyYXRvciwgZ2VuKSBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZXhwbGljaXQgU2VsZihHZW5lcmF0b3ImIGdlbiwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OmRpc2FibGVfY29uc3RydWN0b3I8U2VsZiwgR2VuZXJhdG9yPjo6dHlwZSogPSAwKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfR0VORVJBVE9SX1NFRUQoU2VsZiwgR2VuZXJhdG9yLCBnZW4pICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgc2VlZChHZW5lcmF0b3ImIGdlbiwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OmRpc2FibGVfc2VlZDxHZW5lcmF0b3I+Ojp0eXBlKiA9IDApCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9DT05TVFJVQ1RPUihTZWxmLCBTZWVkU2VxLCBzZXEpICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTZWVkU2VxPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBleHBsaWNpdCBTZWxmKFNlZWRTZXEmIHNlcSwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OmRpc2FibGVfY29uc3RydWN0b3I8U2VsZiwgU2VlZFNlcT46OnR5cGUqID0gMCkKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfU0VRX1NFRUQoU2VsZiwgU2VlZFNlcSwgc2VxKSAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTZWVkU2VxPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBzZWVkKFNlZWRTZXEmIHNlcSwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OmRpc2FibGVfc2VlZDxTZWVkU2VxPjo6dHlwZSogPSAwKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQVJJVEhNRVRJQ19DT05TVFJVQ1RPUihTZWxmLCBULCB4KSAgXAotICAgIGV4cGxpY2l0IFNlbGYoY29uc3QgVCYgeCkKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0FSSVRITUVUSUNfU0VFRChTZWxmLCBULCB4KSBcCi0gICAgdm9pZCBzZWVkKGNvbnN0IFQmIHgpCi19Ci19Ci19Ci0KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfQ09OU1RSVUNUT1IoU2VsZiwgR2VuZXJhdG9yLCBnZW4pIFwKLSAgICBTZWxmKFNlbGYmIG90aGVyKSB7ICp0aGlzID0gb3RoZXI7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBTZWxmKGNvbnN0IFNlbGYmIG90aGVyKSB7ICp0aGlzID0gb3RoZXI7IH0gICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBleHBsaWNpdCBTZWxmKEdlbmVyYXRvciYgZ2VuKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgYm9vc3RfcmFuZG9tX2NvbnN0cnVjdG9yX2ltcGwoZ2VuLCA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPEdlbmVyYXRvcj4oKSk7XAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgYm9vc3RfcmFuZG9tX2NvbnN0cnVjdG9yX2ltcGwoR2VuZXJhdG9yJiBnZW4sIDo6bmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfR0VORVJBVE9SX1NFRUQoU2VsZiwgR2VuZXJhdG9yLCBnZW4pICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgc2VlZChHZW5lcmF0b3ImIGdlbikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGJvb3N0X3JhbmRvbV9zZWVkX2ltcGwoZ2VuLCA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPEdlbmVyYXRvcj4oKSk7XAotICAgIH1cCi0gICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJhdG9yPlwKLSAgICB2b2lkIGJvb3N0X3JhbmRvbV9zZWVkX2ltcGwoR2VuZXJhdG9yJiBnZW4sIDo6bmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfQ09OU1RSVUNUT1IoU2VsZiwgU2VlZFNlcSwgc2VxKSAgICBcCi0gICAgU2VsZihTZWxmJiBvdGhlcikgeyAqdGhpcyA9IG90aGVyOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgU2VsZihjb25zdCBTZWxmJiBvdGhlcikgeyAqdGhpcyA9IG90aGVyOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgU2VlZFNlcT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZXhwbGljaXQgU2VsZihTZWVkU2VxJiBzZXEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGJvb3N0X3JhbmRvbV9jb25zdHJ1Y3Rvcl9pbXBsKHNlcSwgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxTZWVkU2VxPigpKTtcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgU2VlZFNlcT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBib29zdF9yYW5kb21fY29uc3RydWN0b3JfaW1wbChTZWVkU2VxJiBzZXEsIDo6bmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfU0VFRChTZWxmLCBTZWVkU2VxLCBzZXEpICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgU2VlZFNlcT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBzZWVkKFNlZWRTZXEmIHNlcSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGJvb3N0X3JhbmRvbV9zZWVkX2ltcGwoc2VxLCA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFNlZWRTZXE+KCkpOyBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgU2VlZFNlcT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBib29zdF9yYW5kb21fc2VlZF9pbXBsKFNlZWRTZXEmIHNlcSwgOjpuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX0NPTlNUUlVDVE9SKFNlbGYsIFQsIHgpICBcCi0gICAgZXhwbGljaXQgU2VsZihjb25zdCBUJiB4KSB7IGJvb3N0X3JhbmRvbV9jb25zdHJ1Y3Rvcl9pbXBsKHgsIDo6bmRuYm9vc3Q6Om1wbDo6dHJ1ZV8oKSk7IH1cCi0gICAgdm9pZCBib29zdF9yYW5kb21fY29uc3RydWN0b3JfaW1wbChjb25zdCBUJiB4LCA6Om5kbmJvb3N0OjptcGw6OnRydWVfKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQVJJVEhNRVRJQ19TRUVEKFNlbGYsIFQsIHgpIFwKLSAgICB2b2lkIHNlZWQoY29uc3QgVCYgeCkgeyBib29zdF9yYW5kb21fc2VlZF9pbXBsKHgsIDo6bmRuYm9vc3Q6Om1wbDo6dHJ1ZV8oKSk7IH1cCi0gICAgdm9pZCBib29zdF9yYW5kb21fc2VlZF9pbXBsKGNvbnN0IFQmIHgsIDo6bmRuYm9vc3Q6Om1wbDo6dHJ1ZV8pCi0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zZWVkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxODRlZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOTcgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9zZWVkLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAwOQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IHNlZWRfaW1wbC5ocHAgNzI5NTEgMjAxMS0wNy0wNyAwNDo1NzozN1ogc3RldmVuX3dhdGFuYWJlICQKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9JTVBMX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfSU1QTF9IUFAKLQotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL2NtYXRoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyL2ludGVnZXJfbWFzay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlci9zdGF0aWNfbG9nMi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV91bnNpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25zdF9tb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvaW50ZWdlcl9sb2cyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL3NpZ25lZF91bnNpZ25lZF90b29scy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9nZW5lcmF0b3JfYml0cy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gZmluZHMgdGhlIHNlZWQgdHlwZSBvZiBhbiBlbmdpbmUsIGdpdmVuIGl0cwotLy8gcmVzdWx0X3R5cGUuICBJZiB0aGUgcmVzdWx0X3R5cGUgaXMgaW50ZWdyYWwKLS8vIHRoZSBzZWVkIHR5cGUgaXMgdGhlIHNhbWUuICBJZiB0aGUgcmVzdWx0X3R5cGUKLS8vIGlzIGZsb2F0aW5nIHBvaW50LCB0aGUgc2VlZCB0eXBlIGlzIHVpbnQzMl90Ci10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHNlZWRfdHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1wbDo6aWZfPG5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPiwKLSAgICAgICAgVCwKLSAgICAgICAgbmRuYm9vc3Q6OnVpbnQzMl90Ci0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8aW50IE4+Ci1zdHJ1Y3QgY29uc3RfcG93X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0YXRpYyBUIGNhbGwoVCBhcmcsIGludCBuLCBUIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdF9wb3dfaW1wbDxOIC8gMj46OmNhbGwoYXJnICogYXJnLCBuIC8gMiwKLSAgICAgICAgICAgIG4lMiA9PSAwPyByZXN1bHQgOiByZXN1bHQgKiBhcmcpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjb25zdF9wb3dfaW1wbDwwPgotewotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RhdGljIFQgY2FsbChULCBpbnQsIFQgcmVzdWx0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci19OwotCi0vLyByZXF1aXJlcyBOIGlzIGFuIHVwcGVyIGJvdW5kIG9uIG4KLXRlbXBsYXRlPGludCBOLCBjbGFzcyBUPgotaW5saW5lIFQgY29uc3RfcG93KFQgYXJnLCBpbnQgbikgeyByZXR1cm4gY29uc3RfcG93X2ltcGw8Tj46OmNhbGwoYXJnLCBuLCBUKDEpKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIFQgcG93MihpbnQgbikKLXsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIGludF90eXBlOwotICAgIGNvbnN0IGludCBtYXhfYml0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50X3R5cGU+OjpkaWdpdHM7Ci0gICAgVCBtdWx0aXBsaWVyID0gVChpbnRfdHlwZSgxKSA8PCAobWF4X2JpdHMgLSAxKSkgKiAyOwotICAgIHJldHVybiAoaW50X3R5cGUoMSkgPDwgKG4gJSBtYXhfYml0cykpICoKLSAgICAgICAgY29uc3RfcG93PHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyAvIG1heF9iaXRzPihtdWx0aXBsaWVyLCBuIC8gbWF4X2JpdHMpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmdpbmUsIGNsYXNzIEl0ZXI+Ci12b2lkIGdlbmVyYXRlX2Zyb21fcmVhbChFbmdpbmUmIGVuZywgSXRlciBiZWdpbiwgSXRlciBlbmQpCi17Ci0gICAgdXNpbmcgc3RkOjpmbW9kOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5naW5lOjpyZXN1bHRfdHlwZSBSZWFsVHlwZTsKLSAgICBjb25zdCBpbnQgQml0cyA9IGRldGFpbDo6Z2VuZXJhdG9yX2JpdHM8RW5naW5lPjo6dmFsdWUoKTsKLSAgICBpbnQgcmVtYWluaW5nX2JpdHMgPSAwOwotICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBzYXZlZF9iaXRzID0gMDsKLSAgICBSZWFsVHlwZSBtdWx0aXBsaWVyID0gcG93MjxSZWFsVHlwZT4oIEJpdHMpOwotICAgIFJlYWxUeXBlIG11bHQzMiA9IFJlYWxUeXBlKDQyOTQ5NjcyOTYuMCk7IC8vIDJeMzIKLSAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICAgIFJlYWxUeXBlIHZhbCA9IGVuZygpICogbXVsdGlwbGllcjsKLSAgICAgICAgaW50IGF2YWlsYWJsZV9iaXRzID0gQml0czsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb21waWxlciBjYW4gb3B0aW1pemUgdGhpcyBvdXQKLSAgICAgICAgLy8gaWYgaXQgaXNuJ3QgcG9zc2libGUuCi0gICAgICAgIGlmKEJpdHMgPCAzMiAmJiBhdmFpbGFibGVfYml0cyA8IDMyIC0gcmVtYWluaW5nX2JpdHMpIHsKLSAgICAgICAgICAgIHNhdmVkX2JpdHMgfD0gbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KHZhbCkgPDwgcmVtYWluaW5nX2JpdHM7Ci0gICAgICAgICAgICByZW1haW5pbmdfYml0cyArPSBCaXRzOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gSWYgQml0cyA8IDMyLCB0aGVuIHJlbWFpbmluZ19iaXRzICE9IDAsIHNpbmNlCi0gICAgICAgICAgICAvLyBpZiByZW1haW5pbmdfYml0cyA9PSAwLCBhdmFpbGFibGVfYml0cyA8IDMyIC0gMCwKLSAgICAgICAgICAgIC8vIGFuZCB3ZSB3b24ndCBnZXQgaGVyZSB0byBiZWdpbiB3aXRoLgotICAgICAgICAgICAgaWYoQml0cyA8IDMyIHx8IHJlbWFpbmluZ19iaXRzICE9IDApIHsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgZGl2aXNvciA9Ci0gICAgICAgICAgICAgICAgICAgIChuZG5ib29zdDo6dWludF9sZWFzdDMyX3QoMSkgPDwgKDMyIC0gcmVtYWluaW5nX2JpdHMpKTsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgZXh0cmFfYml0cyA9IG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdChmbW9kKHZhbCwgbXVsdDMyKSkgJiAoZGl2aXNvciAtIDEpOwotICAgICAgICAgICAgICAgIHZhbCA9IHZhbCAvIGRpdmlzb3I7Ci0gICAgICAgICAgICAgICAgKmJlZ2luKysgPSBzYXZlZF9iaXRzIHwgKGV4dHJhX2JpdHMgPDwgcmVtYWluaW5nX2JpdHMpOwotICAgICAgICAgICAgICAgIGlmKGJlZ2luID09IGVuZCkgcmV0dXJuOwotICAgICAgICAgICAgICAgIGF2YWlsYWJsZV9iaXRzIC09IDMyIC0gcmVtYWluaW5nX2JpdHM7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nX2JpdHMgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gSWYgQml0cyA8IDMyIHdlIHNob3VsZCBuZXZlciBlbnRlciB0aGlzIGxvb3AKLSAgICAgICAgICAgIGlmKEJpdHMgPj0gMzIpIHsKLSAgICAgICAgICAgICAgICBmb3IoOyBhdmFpbGFibGVfYml0cyA+PSAzMjsgYXZhaWxhYmxlX2JpdHMgLT0gMzIpIHsKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IHdvcmQgPSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QoZm1vZCh2YWwsIG11bHQzMikpOwotICAgICAgICAgICAgICAgICAgICB2YWwgLz0gbXVsdDMyOwotICAgICAgICAgICAgICAgICAgICAqYmVnaW4rKyA9IHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmKGJlZ2luID09IGVuZCkgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlbWFpbmluZ19iaXRzID0gYXZhaWxhYmxlX2JpdHM7Ci0gICAgICAgICAgICBzYXZlZF9iaXRzID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90Pih2YWwpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmdpbmUsIGNsYXNzIEl0ZXI+Ci12b2lkIGdlbmVyYXRlX2Zyb21faW50KEVuZ2luZSYgZW5nLCBJdGVyIGJlZ2luLCBJdGVyIGVuZCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEVuZ2luZTo6cmVzdWx0X3R5cGUgSW50VHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPEludFR5cGU+Ojp0eXBlIHVuc2lnbmVkX3R5cGU7Ci0gICAgaW50IHJlbWFpbmluZ19iaXRzID0gMDsKLSAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3Qgc2F2ZWRfYml0cyA9IDA7Ci0gICAgdW5zaWduZWRfdHlwZSByYW5nZSA9IG5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6c3VidHJhY3Q8SW50VHlwZT4oKSgoZW5nLm1heCkoKSwgKGVuZy5taW4pKCkpOwotCi0gICAgaW50IGJpdHMgPQotICAgICAgICAocmFuZ2UgPT0gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWRfdHlwZT46Om1heCkoKSkgPwotICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZF90eXBlPjo6ZGlnaXRzIDoKLSAgICAgICAgICAgIGRldGFpbDo6aW50ZWdlcl9sb2cyKHJhbmdlICsgMSk7Ci0KLSAgICB7Ci0gICAgICAgIGludCBkaXNjYXJkZWRfYml0cyA9IGRldGFpbDo6aW50ZWdlcl9sb2cyKGJpdHMpOwotICAgICAgICB1bnNpZ25lZF90eXBlIGV4Y2VzcyA9IChyYW5nZSArIDEpID4+IChiaXRzIC0gZGlzY2FyZGVkX2JpdHMpOwotICAgICAgICBpZihleGNlc3MgIT0gMCkgewotICAgICAgICAgICAgaW50IGV4dHJhX2JpdHMgPSBkZXRhaWw6OmludGVnZXJfbG9nMigoZXhjZXNzIC0gMSkgXiBleGNlc3MpOwotICAgICAgICAgICAgYml0cyA9IGJpdHMgLSBkaXNjYXJkZWRfYml0cyArIGV4dHJhX2JpdHM7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB1bnNpZ25lZF90eXBlIG1hc2sgPSAoc3RhdGljX2Nhc3Q8dW5zaWduZWRfdHlwZT4oMikgPDwgKGJpdHMgLSAxKSkgLSAxOwotICAgIHVuc2lnbmVkX3R5cGUgbGltaXQgPSAoKHJhbmdlICsgMSkgJiB+bWFzaykgLSAxOwotCi0gICAgd2hpbGUodHJ1ZSkgewotICAgICAgICB1bnNpZ25lZF90eXBlIHZhbDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgdmFsID0gbmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjpzdWJ0cmFjdDxJbnRUeXBlPigpKGVuZygpLCAoZW5nLm1pbikoKSk7Ci0gICAgICAgIH0gd2hpbGUobGltaXQgIT0gcmFuZ2UgJiYgdmFsID4gbGltaXQpOwotICAgICAgICB2YWwgJj0gbWFzazsKLSAgICAgICAgaW50IGF2YWlsYWJsZV9iaXRzID0gYml0czsKLSAgICAgICAgaWYoYXZhaWxhYmxlX2JpdHMgPT0gMzIpIHsKLSAgICAgICAgICAgICpiZWdpbisrID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90Pih2YWwpICYgMHhGRkZGRkZGRnU7Ci0gICAgICAgICAgICBpZihiZWdpbiA9PSBlbmQpIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmKGF2YWlsYWJsZV9iaXRzICUgMzIgPT0gMCkgewotICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGF2YWlsYWJsZV9iaXRzIC8gMzI7ICsraSkgewotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCB3b3JkID0gbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KHZhbCkgJiAweEZGRkZGRkZGdTsKLSAgICAgICAgICAgICAgICBpbnQgc3VwcmVzc193YXJuaW5nID0gKGJpdHMgPj0gMzIpOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChzdXByZXNzX3dhcm5pbmcgPT0gMSk7Ci0gICAgICAgICAgICAgICAgdmFsID4+PSAoMzIgKiBzdXByZXNzX3dhcm5pbmcpOwotICAgICAgICAgICAgICAgICpiZWdpbisrID0gd29yZDsKLSAgICAgICAgICAgICAgICBpZihiZWdpbiA9PSBlbmQpIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmKGJpdHMgPCAzMiAmJiBhdmFpbGFibGVfYml0cyA8IDMyIC0gcmVtYWluaW5nX2JpdHMpIHsKLSAgICAgICAgICAgIHNhdmVkX2JpdHMgfD0gbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KHZhbCkgPDwgcmVtYWluaW5nX2JpdHM7Ci0gICAgICAgICAgICByZW1haW5pbmdfYml0cyArPSBiaXRzOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYoYml0cyA8IDMyIHx8IHJlbWFpbmluZ19iaXRzICE9IDApIHsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgZXh0cmFfYml0cyA9IG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCh2YWwpICYgKChuZG5ib29zdDo6dWludF9sZWFzdDMyX3QoMSkgPDwgKDMyIC0gcmVtYWluaW5nX2JpdHMpKSAtIDEpOwotICAgICAgICAgICAgICAgIHZhbCA+Pj0gMzIgLSByZW1haW5pbmdfYml0czsKLSAgICAgICAgICAgICAgICAqYmVnaW4rKyA9IHNhdmVkX2JpdHMgfCAoZXh0cmFfYml0cyA8PCByZW1haW5pbmdfYml0cyk7Ci0gICAgICAgICAgICAgICAgaWYoYmVnaW4gPT0gZW5kKSByZXR1cm47Ci0gICAgICAgICAgICAgICAgYXZhaWxhYmxlX2JpdHMgLT0gMzIgLSByZW1haW5pbmdfYml0czsKLSAgICAgICAgICAgICAgICByZW1haW5pbmdfYml0cyA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZihiaXRzID49IDMyKSB7Ci0gICAgICAgICAgICAgICAgZm9yKDsgYXZhaWxhYmxlX2JpdHMgPj0gMzI7IGF2YWlsYWJsZV9iaXRzIC09IDMyKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCB3b3JkID0gbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KHZhbCkgJiAweEZGRkZGRkZGdTsKLSAgICAgICAgICAgICAgICAgICAgaW50IHN1cHJlc3Nfd2FybmluZyA9IChiaXRzID49IDMyKTsKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHN1cHJlc3Nfd2FybmluZyA9PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgdmFsID4+PSAoMzIgKiBzdXByZXNzX3dhcm5pbmcpOwotICAgICAgICAgICAgICAgICAgICAqYmVnaW4rKyA9IHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmKGJlZ2luID09IGVuZCkgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlbWFpbmluZ19iaXRzID0gYXZhaWxhYmxlX2JpdHM7Ci0gICAgICAgICAgICBzYXZlZF9iaXRzID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90Pih2YWwpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmdpbmUsIGNsYXNzIEl0ZXI+Ci12b2lkIGdlbmVyYXRlX2ltcGwoRW5naW5lJiBlbmcsIEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCwgbmRuYm9vc3Q6Om1wbDo6dHJ1ZV8pCi17Ci0gICAgcmV0dXJuIGRldGFpbDo6Z2VuZXJhdGVfZnJvbV9pbnQoZW5nLCBmaXJzdCwgbGFzdCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgSXRlcj4KLXZvaWQgZ2VuZXJhdGVfaW1wbChFbmdpbmUmIGVuZywgSXRlciBmaXJzdCwgSXRlciBsYXN0LCBuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi17Ci0gICAgcmV0dXJuIGRldGFpbDo6Z2VuZXJhdGVfZnJvbV9yZWFsKGVuZywgZmlyc3QsIGxhc3QpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmdpbmUsIGNsYXNzIEl0ZXI+Ci12b2lkIGdlbmVyYXRlKEVuZ2luZSYgZW5nLCBJdGVyIGZpcnN0LCBJdGVyIGxhc3QpCi17Ci0gICAgcmV0dXJuIGRldGFpbDo6Z2VuZXJhdGVfaW1wbChlbmcsIGZpcnN0LCBsYXN0LCBuZG5ib29zdDo6aXNfaW50ZWdyYWw8dHlwZW5hbWUgRW5naW5lOjpyZXN1bHRfdHlwZT4oKSk7Ci19Ci0KLQotCi10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIG0sIGNsYXNzIFNlZWRTZXE+Ci1JbnRUeXBlIHNlZWRfb25lX2ludChTZWVkU2VxJiBzZXEpCi17Ci0gICAgc3RhdGljIGNvbnN0IGludCBsb2cgPSA6Om5kbmJvb3N0OjptcGw6OmlmX2M8KG0gPT0gMCksCi0gICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6aW50XzwoOjpzdGQ6Om51bWVyaWNfbGltaXRzPEludFR5cGU+OjpkaWdpdHMpPiwKLSAgICAgICAgOjpuZG5ib29zdDo6c3RhdGljX2xvZzI8bT4gPjo6dHlwZTo6dmFsdWU7Ci0gICAgc3RhdGljIGNvbnN0IGludCBrID0KLSAgICAgICAgKGxvZyArICgofihzdGF0aWNfY2FzdDxJbnRUeXBlPigyKSA8PCAobG9nIC0gMSkpICYgbSk/IDMyIDogMzEpKSAvIDMyOwotICAgIDo6bmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IGFycmF5W2xvZyAvIDMyICsgNF07Ci0gICAgc2VxLmdlbmVyYXRlKCZhcnJheVswXSwgJmFycmF5WzBdICsgayArIDMpOwotICAgIEludFR5cGUgcyA9IDA7Ci0gICAgZm9yKGludCBqID0gMDsgaiA8IGs7ICsraikgewotICAgICAgICBJbnRUeXBlIGRpZ2l0ID0gY29uc3RfbW9kPEludFR5cGUsIG0+OjphcHBseShJbnRUeXBlKGFycmF5W2orM10pKTsKLSAgICAgICAgSW50VHlwZSBtdWx0ID0gSW50VHlwZSgxKSA8PCAzMipqOwotICAgICAgICBzID0gY29uc3RfbW9kPEludFR5cGUsIG0+OjptdWx0X2FkZChtdWx0LCBkaWdpdCwgcyk7Ci0gICAgfQotICAgIHJldHVybiBzOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIG0sIGNsYXNzIEl0ZXI+Ci1JbnRUeXBlIGdldF9vbmVfaW50KEl0ZXImIGZpcnN0LCBJdGVyIGxhc3QpCi17Ci0gICAgc3RhdGljIGNvbnN0IGludCBsb2cgPSA6Om5kbmJvb3N0OjptcGw6OmlmX2M8KG0gPT0gMCksCi0gICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6aW50XzwoOjpzdGQ6Om51bWVyaWNfbGltaXRzPEludFR5cGU+OjpkaWdpdHMpPiwKLSAgICAgICAgOjpuZG5ib29zdDo6c3RhdGljX2xvZzI8bT4gPjo6dHlwZTo6dmFsdWU7Ci0gICAgc3RhdGljIGNvbnN0IGludCBrID0KLSAgICAgICAgKGxvZyArICgofihzdGF0aWNfY2FzdDxJbnRUeXBlPigyKSA8PCAobG9nIC0gMSkpICYgbSk/IDMyIDogMzEpKSAvIDMyOwotICAgIEludFR5cGUgcyA9IDA7Ci0gICAgZm9yKGludCBqID0gMDsgaiA8IGs7ICsraikgewotICAgICAgICBpZihmaXJzdCA9PSBsYXN0KSB7Ci0gICAgICAgICAgICB0aHJvdyA6OnN0ZDo6aW52YWxpZF9hcmd1bWVudCgiTm90IGVub3VnaCBlbGVtZW50cyBpbiBjYWxsIHRvIHNlZWQuIik7Ci0gICAgICAgIH0KLSAgICAgICAgSW50VHlwZSBkaWdpdCA9IGNvbnN0X21vZDxJbnRUeXBlLCBtPjo6YXBwbHkoSW50VHlwZSgqZmlyc3QrKykpOwotICAgICAgICBJbnRUeXBlIG11bHQgPSBJbnRUeXBlKDEpIDw8IDMyKmo7Ci0gICAgICAgIHMgPSBjb25zdF9tb2Q8SW50VHlwZSwgbT46Om11bHRfYWRkKG11bHQsIGRpZ2l0LCBzKTsKLSAgICB9Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLS8vIFRPRE86IHdvcmsgaW4tcGxhY2Ugd2hlbmV2ZXIgcG9zc2libGUKLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBTZWVkU2VxLCBjbGFzcyBVSW50VHlwZT4KLXZvaWQgc2VlZF9hcnJheV9pbnRfaW1wbChTZWVkU2VxJiBzZXEsIFVJbnRUeXBlICgmeClbbl0pCi17Ci0gICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IHN0b3JhZ2VbKCh3KzMxKS8zMikgKiBuXTsKLSAgICBzZXEuZ2VuZXJhdGUoJnN0b3JhZ2VbMF0sICZzdG9yYWdlWzBdICsgKCh3KzMxKS8zMikgKiBuKTsKLSAgICBmb3Ioc3RkOjpzaXplX3QgaiA9IDA7IGogPCBuOyBqKyspIHsKLSAgICAgICAgVUludFR5cGUgdmFsID0gMDsKLSAgICAgICAgZm9yKHN0ZDo6c2l6ZV90IGsgPSAwOyBrIDwgKHcrMzEpLzMyOyArK2spIHsKLSAgICAgICAgICAgIHZhbCArPSBzdGF0aWNfY2FzdDxVSW50VHlwZT4oc3RvcmFnZVsodyszMSkvMzIqaiArIGtdKSA8PCAzMiprOwotICAgICAgICB9Ci0gICAgICAgIHhbal0gPSB2YWwgJiA6Om5kbmJvb3N0Ojpsb3dfYml0c19tYXNrX3Q8dz46OnNpZ19iaXRzOwotICAgIH0KLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIFNlZWRTZXEsIGNsYXNzIEludFR5cGU+Ci1pbmxpbmUgdm9pZCBzZWVkX2FycmF5X2ludF9pbXBsKFNlZWRTZXEmIHNlcSwgSW50VHlwZSAoJngpW25dLCBuZG5ib29zdDo6bXBsOjp0cnVlXykKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPEludFR5cGU+Ojp0eXBlIHVuc2lnbmVkX2FycmF5W25dOwotICAgIHNlZWRfYXJyYXlfaW50X2ltcGw8dz4oc2VxLCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkX2FycmF5Jj4oeCkpOwotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgU2VlZFNlcSwgY2xhc3MgSW50VHlwZT4KLWlubGluZSB2b2lkIHNlZWRfYXJyYXlfaW50X2ltcGwoU2VlZFNlcSYgc2VxLCBJbnRUeXBlICgmeClbbl0sIG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLXsKLSAgICBzZWVkX2FycmF5X2ludF9pbXBsPHc+KHNlcSwgeCk7Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBTZWVkU2VxLCBjbGFzcyBJbnRUeXBlPgotaW5saW5lIHZvaWQgc2VlZF9hcnJheV9pbnQoU2VlZFNlcSYgc2VxLCBJbnRUeXBlICgmeClbbl0pCi17Ci0gICAgc2VlZF9hcnJheV9pbnRfaW1wbDx3PihzZXEsIHgsIG5kbmJvb3N0Ojppc19zaWduZWQ8SW50VHlwZT4oKSk7Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyLCBjbGFzcyBVSW50VHlwZT4KLXZvaWQgZmlsbF9hcnJheV9pbnRfaW1wbChJdGVyJiBmaXJzdCwgSXRlciBsYXN0LCBVSW50VHlwZSAoJngpW25dKQotewotICAgIGZvcihzdGQ6OnNpemVfdCBqID0gMDsgaiA8IG47IGorKykgewotICAgICAgICBVSW50VHlwZSB2YWwgPSAwOwotICAgICAgICBmb3Ioc3RkOjpzaXplX3QgayA9IDA7IGsgPCAodyszMSkvMzI7ICsraykgewotICAgICAgICAgICAgaWYoZmlyc3QgPT0gbGFzdCkgewotICAgICAgICAgICAgICAgIHRocm93IHN0ZDo6aW52YWxpZF9hcmd1bWVudCgiTm90IGVub3VnaCBlbGVtZW50cyBpbiBjYWxsIHRvIHNlZWQuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YWwgKz0gc3RhdGljX2Nhc3Q8VUludFR5cGU+KCpmaXJzdCsrKSA8PCAzMiprOwotICAgICAgICB9Ci0gICAgICAgIHhbal0gPSB2YWwgJiA6Om5kbmJvb3N0Ojpsb3dfYml0c19tYXNrX3Q8dz46OnNpZ19iaXRzOwotICAgIH0KLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIEl0ZXIsIGNsYXNzIEludFR5cGU+Ci1pbmxpbmUgdm9pZCBmaWxsX2FycmF5X2ludF9pbXBsKEl0ZXImIGZpcnN0LCBJdGVyIGxhc3QsIEludFR5cGUgKCZ4KVtuXSwgbmRuYm9vc3Q6Om1wbDo6dHJ1ZV8pCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bWFrZV91bnNpZ25lZDxJbnRUeXBlPjo6dHlwZSB1bnNpZ25lZF9hcnJheVtuXTsKLSAgICBmaWxsX2FycmF5X2ludF9pbXBsPHc+KGZpcnN0LCBsYXN0LCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkX2FycmF5Jj4oeCkpOwotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlciwgY2xhc3MgSW50VHlwZT4KLWlubGluZSB2b2lkIGZpbGxfYXJyYXlfaW50X2ltcGwoSXRlciYgZmlyc3QsIEl0ZXIgbGFzdCwgSW50VHlwZSAoJngpW25dLCBuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi17Ci0gICAgZmlsbF9hcnJheV9pbnRfaW1wbDx3PihmaXJzdCwgbGFzdCwgeCk7Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyLCBjbGFzcyBJbnRUeXBlPgotaW5saW5lIHZvaWQgZmlsbF9hcnJheV9pbnQoSXRlciYgZmlyc3QsIEl0ZXIgbGFzdCwgSW50VHlwZSAoJngpW25dKQotewotICAgIGZpbGxfYXJyYXlfaW50X2ltcGw8dz4oZmlyc3QsIGxhc3QsIHgsIG5kbmJvb3N0Ojppc19zaWduZWQ8SW50VHlwZT4oKSk7Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBSZWFsVHlwZT4KLXZvaWQgc2VlZF9hcnJheV9yZWFsX2ltcGwoY29uc3QgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KiBzdG9yYWdlLCBSZWFsVHlwZSAoJngpW25dKQotewotICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBtYXNrID0gfigofm5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCgwKSkgPDwgKHclMzIpKTsKLSAgICBSZWFsVHlwZSB0d28zMiA9IDQyOTQ5NjcyOTYuMDsKLSAgICBjb25zdCBSZWFsVHlwZSBkaXZpc29yID0gUmVhbFR5cGUoMSkvZGV0YWlsOjpwb3cyPFJlYWxUeXBlPih3KTsKLSAgICB1bnNpZ25lZCBpbnQgajsKLSAgICBmb3IoaiA9IDA7IGogPCBuOyArK2opIHsKLSAgICAgICAgUmVhbFR5cGUgdmFsID0gUmVhbFR5cGUoMCk7Ci0gICAgICAgIFJlYWxUeXBlIG11bHQgPSBkaXZpc29yOwotICAgICAgICBmb3IoaW50IGsgPSAwOyBrIDwgdy8zMjsgKytrKSB7Ci0gICAgICAgICAgICB2YWwgKz0gKnN0b3JhZ2UrKyAqIG11bHQ7Ci0gICAgICAgICAgICBtdWx0ICo9IHR3bzMyOwotICAgICAgICB9Ci0gICAgICAgIGlmKG1hc2sgIT0gMCkgewotICAgICAgICAgICAgdmFsICs9ICgqc3RvcmFnZSsrICYgbWFzaykgKiBtdWx0OwotICAgICAgICB9Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCh2YWwgPj0gMCk7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCh2YWwgPCAxKTsKLSAgICAgICAgeFtqXSA9IHZhbDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBTZWVkU2VxLCBjbGFzcyBSZWFsVHlwZT4KLXZvaWQgc2VlZF9hcnJheV9yZWFsKFNlZWRTZXEmIHNlcSwgUmVhbFR5cGUgKCZ4KVtuXSkKLXsKLSAgICB1c2luZyBzdGQ6OnBvdzsKLSAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3Qgc3RvcmFnZVsoKHcrMzEpLzMyKSAqIG5dOwotICAgIHNlcS5nZW5lcmF0ZSgmc3RvcmFnZVswXSwgJnN0b3JhZ2VbMF0gKyAoKHcrMzEpLzMyKSAqIG4pOwotICAgIHNlZWRfYXJyYXlfcmVhbF9pbXBsPHc+KHN0b3JhZ2UsIHgpOwotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlciwgY2xhc3MgUmVhbFR5cGU+Ci12b2lkIGZpbGxfYXJyYXlfcmVhbChJdGVyJiBmaXJzdCwgSXRlciBsYXN0LCBSZWFsVHlwZSAoJngpW25dKQotewotICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBtYXNrID0gfigofm5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCgwKSkgPDwgKHclMzIpKTsKLSAgICBSZWFsVHlwZSB0d28zMiA9IDQyOTQ5NjcyOTYuMDsKLSAgICBjb25zdCBSZWFsVHlwZSBkaXZpc29yID0gUmVhbFR5cGUoMSkvZGV0YWlsOjpwb3cyPFJlYWxUeXBlPih3KTsKLSAgICB1bnNpZ25lZCBpbnQgajsKLSAgICBmb3IoaiA9IDA7IGogPCBuOyArK2opIHsKLSAgICAgICAgUmVhbFR5cGUgdmFsID0gUmVhbFR5cGUoMCk7Ci0gICAgICAgIFJlYWxUeXBlIG11bHQgPSBkaXZpc29yOwotICAgICAgICBmb3IoaW50IGsgPSAwOyBrIDwgdy8zMjsgKytrLCArK2ZpcnN0KSB7Ci0gICAgICAgICAgICBpZihmaXJzdCA9PSBsYXN0KSB0aHJvdyBzdGQ6OmludmFsaWRfYXJndW1lbnQoIk5vdCBlbm91Z2ggZWxlbWVudHMgaW4gY2FsbCB0byBzZWVkLiIpOwotICAgICAgICAgICAgdmFsICs9ICpmaXJzdCAqIG11bHQ7Ci0gICAgICAgICAgICBtdWx0ICo9IHR3bzMyOwotICAgICAgICB9Ci0gICAgICAgIGlmKG1hc2sgIT0gMCkgewotICAgICAgICAgICAgaWYoZmlyc3QgPT0gbGFzdCkgdGhyb3cgc3RkOjppbnZhbGlkX2FyZ3VtZW50KCJOb3QgZW5vdWdoIGVsZW1lbnRzIGluIGNhbGwgdG8gc2VlZC4iKTsKLSAgICAgICAgICAgIHZhbCArPSAoKmZpcnN0ICYgbWFzaykgKiBtdWx0OwotICAgICAgICAgICAgKytmaXJzdDsKLSAgICAgICAgfQotICAgICAgICBORE5CT09TVF9BU1NFUlQodmFsID49IDApOwotICAgICAgICBORE5CT09TVF9BU1NFUlQodmFsIDwgMSk7Ci0gICAgICAgIHhbal0gPSB2YWw7Ci0gICAgfQotfQotCi19Ci19Ci19Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NpZ25lZF91bnNpZ25lZF90b29scy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2lnbmVkX3Vuc2lnbmVkX3Rvb2xzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZjYjFiNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2lnbmVkX3Vuc2lnbmVkX3Rvb2xzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvc2lnbmVkX3Vuc2lnbmVkX3Rvb2xzLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDA2Ci0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TSUdORURfVU5TSUdORURfVE9PTFMKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TSUdORURfVU5TSUdORURfVE9PTFMKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLQotLyoKLSAqIENvbXB1dGUgeCAtIHksIHdlIGtub3cgdGhhdCB4ID49IHksIHJldHVybiBhbiB1bnNpZ25lZCB2YWx1ZS4KLSAqLwotCi10ZW1wbGF0ZTxjbGFzcyBULCBib29sIHNnbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NpZ25lZD4KLXN0cnVjdCBzdWJ0cmFjdCB7IH07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3Qgc3VidHJhY3Q8VCwgLyogc2lnbmVkICovIGZhbHNlPgotewotICB0eXBlZGVmIFQgcmVzdWx0X3R5cGU7Ci0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVCB4LCBUIHkpIHsgcmV0dXJuIHggLSB5OyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHN1YnRyYWN0PFQsIC8qIHNpZ25lZCAqLyB0cnVlPgotewotICB0eXBlZGVmIHR5cGVuYW1lIG1ha2VfdW5zaWduZWQ8VD46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVCB4LCBUIHkpCi0gIHsKLSAgICBpZiAoeSA+PSAwKSAgIC8vIGJlY2F1c2UgeCA+PSB5LCBpdCBmb2xsb3dzIHRoYXQgeCA+PSAwLCB0b28KLSAgICAgIHJldHVybiByZXN1bHRfdHlwZSh4KSAtIHJlc3VsdF90eXBlKHkpOwotICAgIGlmICh4ID49IDApICAgLy8geSA8IDAKLSAgICAgIC8vIGF2b2lkIHRoZSBuYXN0eSB0d28ncyBjb21wbGVtZW50IGNhc2UgZm9yIHkgPT0gbWluKCkKLSAgICAgIHJldHVybiByZXN1bHRfdHlwZSh4KSArIHJlc3VsdF90eXBlKC0oeSsxKSkgKyAxOwotICAgIC8vIGJvdGggeCBhbmQgeSBhcmUgbmVnYXRpdmU6IG5vIHNpZ25lZCBvdmVyZmxvdwotICAgIHJldHVybiByZXN1bHRfdHlwZSh4IC0geSk7Ci0gIH0KLX07Ci0KLS8qCi0gKiBDb21wdXRlIHggKyB5LCB4IGlzIHVuc2lnbmVkLCByZXN1bHQgZml0cyBpbiB0eXBlIG9mICJ5Ii4KLSAqLwotCi10ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGJvb2wgc2duID0gc3RkOjpudW1lcmljX2xpbWl0czxUMj46OmlzX3NpZ25lZD4KLXN0cnVjdCBhZGQgeyB9OwotCi10ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+Ci1zdHJ1Y3QgYWRkPFQxLCBUMiwgLyogc2lnbmVkICovIGZhbHNlPgotewotICB0eXBlZGVmIFQyIHJlc3VsdF90eXBlOwotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFQxIHgsIFQyIHkpIHsgcmV0dXJuIFQyKHgpICsgeTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgotc3RydWN0IGFkZDxUMSwgVDIsIC8qIHNpZ25lZCAqLyB0cnVlPgotewotICB0eXBlZGVmIFQyIHJlc3VsdF90eXBlOwotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKFQxIHgsIFQyIHkpCi0gIHsKLSAgICBpZiAoeSA+PSAwKQotICAgICAgcmV0dXJuIFQyKHgpICsgeTsKLSAgICAvLyB5IDwgMAotICAgIGlmICh4ID4gVDEoLSh5KzEpKSkgIC8vIHJlc3VsdCA+PSAwIGFmdGVyIHN1YnRyYWN0aW9uCi0gICAgICAvLyBhdm9pZCB0aGUgbmFzdHkgdHdvJ3MgY29tcGxlbWVudCBlZGdlIGNhc2UgZm9yIHkgPT0gbWluKCkKLSAgICAgIHJldHVybiBUMih4IC0gVDEoLSh5KzEpKSAtIDEpOwotICAgIC8vIGFicyh4KSA8IGFicyh5KSwgdGh1cyBUMiBhYmxlIHRvIHJlcHJlc2VudCB4Ci0gICAgcmV0dXJuIFQyKHgpICsgeTsKLSAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fREVUQUlMX1NJR05FRF9VTlNJR05FRF9UT09MUwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9saW5lYXJfY29uZ3J1ZW50aWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2xpbmVhcl9jb25ncnVlbnRpYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGM2OWQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2xpbmVhcl9jb25ncnVlbnRpYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDY2ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9saW5lYXJfY29uZ3J1ZW50aWFsLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAwLTIwMDEKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBsaW5lYXJfY29uZ3J1ZW50aWFsLmhwcCA3MTAxOCAyMDExLTA0LTA1IDIxOjI3OjUyWiBzdGV2ZW5fd2F0YW5hYmUgJAotICoKLSAqIFJldmlzaW9uIGhpc3RvcnkKLSAqICAyMDAxLTAyLTE4ICBtb3ZlZCB0byBpbmRpdmlkdWFsIGhlYWRlciBmaWxlcwotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0xJTkVBUl9DT05HUlVFTlRJQUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9MSU5FQVJfQ09OR1JVRU5USUFMX0hQUAotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIvc3RhdGljX2xvZzIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uc3RfbW9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZF9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci0KLS8qKgotICogSW5zdGFudGlhdGlvbnMgb2YgY2xhc3MgdGVtcGxhdGUgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUgbW9kZWwgYQotICogXHBzZXVkb19yYW5kb21fbnVtYmVyX2dlbmVyYXRvci4gTGluZWFyIGNvbmdydWVudGlhbCBwc2V1ZG8tcmFuZG9tCi0gKiBudW1iZXIgZ2VuZXJhdG9ycyBhcmUgZGVzY3JpYmVkIGluOgotICoKLSAqICBAYmxvY2txdW90ZQotICogICJNYXRoZW1hdGljYWwgbWV0aG9kcyBpbiBsYXJnZS1zY2FsZSBjb21wdXRpbmcgdW5pdHMiLCBELiBILiBMZWhtZXIsCi0gKiAgUHJvYy4gMm5kIFN5bXBvc2l1bSBvbiBMYXJnZS1TY2FsZSBEaWdpdGFsIENhbGN1bGF0aW5nIE1hY2hpbmVzLAotICogIEhhcnZhcmQgVW5pdmVyc2l0eSBQcmVzcywgMTk1MSwgcHAuIDE0MS0xNDYKLSAqICBAZW5kYmxvY2txdW90ZQotICoKLSAqIExldCB4KG4pIGRlbm90ZSB0aGUgc2VxdWVuY2Ugb2YgbnVtYmVycyByZXR1cm5lZCBieSBzb21lIHBzZXVkby1yYW5kb20KLSAqIG51bWJlciBnZW5lcmF0b3IuIFRoZW4gZm9yIHRoZSBsaW5lYXIgY29uZ3J1ZW50aWFsIGdlbmVyYXRvciwKLSAqIHgobisxKSA6PSAoYSAqIHgobikgKyBjKSBtb2QgbS4gUGFyYW1ldGVycyBmb3IgdGhlIGdlbmVyYXRvciBhcmUKLSAqIHgoMCksIGEsIGMsIG0uIFRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgSW50VHlwZSBzaGFsbCBkZW5vdGUgYW4gaW50ZWdyYWwKLSAqIHR5cGUuIEl0IG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdmFsdWVzIGEsIGMsIGFuZCBtLiBUaGUgdGVtcGxhdGUKLSAqIHBhcmFtZXRlcnMgYSBhbmQgYyBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtLgotICoKLSAqIE5vdGU6IFRoZSBxdWFsaXR5IG9mIHRoZSBnZW5lcmF0b3IgY3J1Y2lhbGx5IGRlcGVuZHMgb24gdGhlIGNob2ljZSBvZgotICogdGhlIHBhcmFtZXRlcnMuIFVzZXIgY29kZSBzaG91bGQgdXNlIG9uZSBvZiB0aGUgc2Vuc2libHkgcGFyYW1ldGVyaXplZAotICogZ2VuZXJhdG9ycyBzdWNoIGFzIG1pbnN0ZF9yYW5kIGluc3RlYWQuCi0gKi8KLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0+Ci1jbGFzcyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZQotewotcHVibGljOgotICAgIHR5cGVkZWYgSW50VHlwZSByZXN1bHRfdHlwZTsKLQotICAgIC8vIFJlcXVpcmVkIGZvciBvbGQgQm9vc3QuUmFuZG9tIGNvbmNlcHQKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2ZpeGVkX3JhbmdlID0gZmFsc2UpOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKEludFR5cGUsIG11bHRpcGxpZXIgPSBhKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoSW50VHlwZSwgaW5jcmVtZW50ID0gYyk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKEludFR5cGUsIG1vZHVsdXMgPSBtKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoSW50VHlwZSwgZGVmYXVsdF9zZWVkID0gMSk7Ci0gICAgCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzdGQ6Om51bWVyaWNfbGltaXRzPEludFR5cGU+Ojppc19pbnRlZ2VyKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKG0gPT0gMCB8fCBhIDwgbSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChtID09IDAgfHwgYyA8IG0pOwotICAgIAotICAgIC8qKgotICAgICAqIENvbnN0cnVjdHMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSwgdXNpbmcgdGhlIGRlZmF1bHQgc2VlZAotICAgICAqLwotICAgIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lKCkgeyBzZWVkKCk7IH0KLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdHMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSwgc2VlZGluZyBpdCB3aXRoIEBjIHgwLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQVJJVEhNRVRJQ19DT05TVFJVQ1RPUihsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50VHlwZSwgeDApCi0gICAgeyBzZWVkKHgwKTsgfQotICAgIAotICAgIC8qKgotICAgICAqIENvbnN0cnVjdHMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSwgc2VlZGluZyBpdCB3aXRoIHZhbHVlcwotICAgICAqIHByb2R1Y2VkIGJ5IGEgY2FsbCB0byBAYyBzZXEuZ2VuZXJhdGUoKS4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfU0VRX0NPTlNUUlVDVE9SKGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlZFNlcSwgc2VxKQotICAgIHsgc2VlZChzZXEpOyB9Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RzIGEgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUgIGFuZCBzZWVkcyBpdAotICAgICAqIHdpdGggdmFsdWVzIHRha2VuIGZyb20gdGhlIGl0cmF0b3IgcmFuZ2UgW2ZpcnN0LCBsYXN0KQotICAgICAqIGFuZCBhZGp1c3RzIGZpcnN0IHRvIHBvaW50IHRvIHRoZSBlbGVtZW50IGFmdGVyIHRoZSBsYXN0IG9uZQotICAgICAqIHVzZWQuICBJZiB0aGVyZSBhcmUgbm90IGVub3VnaCBlbGVtZW50cywgdGhyb3dzIEBjIHN0ZDo6aW52YWxpZF9hcmd1bWVudC4KLSAgICAgKgotICAgICAqIGZpcnN0IGFuZCBsYXN0IG11c3QgYmUgaW5wdXQgaXRlcmF0b3JzLgotICAgICAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEl0PgotICAgIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lKEl0JiBmaXJzdCwgSXQgbGFzdCkKLSAgICB7Ci0gICAgICAgIHNlZWQoZmlyc3QsIGxhc3QpOwotICAgIH0KLQotICAgIC8vIGNvbXBpbGVyLWdlbmVyYXRlZCBjb3B5IGNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGFyZSBmaW5lCi0KLSAgICAvKioKLSAgICAgKiBDYWxscyBzZWVkKGRlZmF1bHRfc2VlZCkKLSAgICAgKi8KLSAgICB2b2lkIHNlZWQoKSB7IHNlZWQoZGVmYXVsdF9zZWVkKTsgfQotCi0gICAgLyoqCi0gICAgICogSWYgYyBtb2QgbSBpcyB6ZXJvIGFuZCB4MCBtb2QgbSBpcyB6ZXJvLCBjaGFuZ2VzIHRoZSBjdXJyZW50IHZhbHVlIG9mCi0gICAgICogdGhlIGdlbmVyYXRvciB0byAxLiBPdGhlcndpc2UsIGNoYW5nZXMgaXQgdG8geDAgbW9kIG0uIElmIGMgaXMgemVybywKLSAgICAgKiBkaXN0aW5jdCBzZWVkcyBpbiB0aGUgcmFuZ2UgWzEsbSkgd2lsbCBsZWF2ZSB0aGUgZ2VuZXJhdG9yIGluIGRpc3RpbmN0Ci0gICAgICogc3RhdGVzLiBJZiBjIGlzIG5vdCB6ZXJvLCB0aGUgcmFuZ2UgaXMgWzAsbSkuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX1NFRUQobGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUsIEludFR5cGUsIHgwKQotICAgIHsKLSAgICAgICAgLy8gd3JhcCBfeCBpZiBpdCBkb2Vzbid0IGZpdCBpbiB0aGUgZGVzdGluYXRpb24KLSAgICAgICAgaWYobW9kdWx1cyA9PSAwKSB7Ci0gICAgICAgICAgICBfeCA9IHgwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgX3ggPSB4MCAlIG1vZHVsdXM7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gaGFuZGxlIG5lZ2F0aXZlIHNlZWRzCi0gICAgICAgIGlmKF94IDw9IDAgJiYgX3ggIT0gMCkgewotICAgICAgICAgICAgX3ggKz0gbW9kdWx1czsKLSAgICAgICAgfQotICAgICAgICAvLyBhZGp1c3QgdG8gdGhlIGNvcnJlY3QgcmFuZ2UKLSAgICAgICAgaWYoaW5jcmVtZW50ID09IDAgJiYgX3ggPT0gMCkgewotICAgICAgICAgICAgX3ggPSAxOwotICAgICAgICB9Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChfeCA+PSAobWluKSgpKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKF94IDw9IChtYXgpKCkpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFNlZWRzIGEgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUgdXNpbmcgdmFsdWVzIGZyb20gYSBTZWVkU2VxLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfU0VFRChsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSwgU2VlZFNlcSwgc2VxKQotICAgIHsgc2VlZChkZXRhaWw6OnNlZWRfb25lX2ludDxJbnRUeXBlLCBtPihzZXEpKTsgfQotCi0gICAgLyoqCi0gICAgICogc2VlZHMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSB3aXRoIHZhbHVlcyB0YWtlbgotICAgICAqIGZyb20gdGhlIGl0cmF0b3IgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBhbmQgYWRqdXN0cyBAYyBmaXJzdCB0bwotICAgICAqIHBvaW50IHRvIHRoZSBlbGVtZW50IGFmdGVyIHRoZSBsYXN0IG9uZSB1c2VkLiAgSWYgdGhlcmUgYXJlCi0gICAgICogbm90IGVub3VnaCBlbGVtZW50cywgdGhyb3dzIEBjIHN0ZDo6aW52YWxpZF9hcmd1bWVudC4KLSAgICAgKgotICAgICAqIEBjIGZpcnN0IGFuZCBAYyBsYXN0IG11c3QgYmUgaW5wdXQgaXRlcmF0b3JzLgotICAgICAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEl0PgotICAgIHZvaWQgc2VlZChJdCYgZmlyc3QsIEl0IGxhc3QpCi0gICAgeyBzZWVkKGRldGFpbDo6Z2V0X29uZV9pbnQ8SW50VHlwZSwgbT4oZmlyc3QsIGxhc3QpKTsgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgc21hbGxlc3QgdmFsdWUgdGhhdCB0aGUgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUKLSAgICAgKiBjYW4gcHJvZHVjZS4KLSAgICAgKi8KLSAgICBzdGF0aWMgcmVzdWx0X3R5cGUgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgeyByZXR1cm4gYyA9PSAwID8gMSA6IDA7IH0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBsYXJnZXN0IHZhbHVlIHRoYXQgdGhlIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lCi0gICAgICogY2FuIHByb2R1Y2UuCi0gICAgICovCi0gICAgc3RhdGljIHJlc3VsdF90eXBlIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKQotICAgIHsgcmV0dXJuIG1vZHVsdXMtMTsgfQotCi0gICAgLyoqIFJldHVybnMgdGhlIG5leHQgdmFsdWUgb2YgdGhlIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLiAqLwotICAgIEludFR5cGUgb3BlcmF0b3IoKSgpCi0gICAgewotICAgICAgICBfeCA9IGNvbnN0X21vZDxJbnRUeXBlLCBtPjo6bXVsdF9hZGQoYSwgX3gsIGMpOwotICAgICAgICByZXR1cm4gX3g7Ci0gICAgfQotICAKLSAgICAvKiogRmlsbHMgYSByYW5nZSB3aXRoIHJhbmRvbSB2YWx1ZXMgKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPgotICAgIHZvaWQgZ2VuZXJhdGUoSXRlciBmaXJzdCwgSXRlciBsYXN0KQotICAgIHsgZGV0YWlsOjpnZW5lcmF0ZV9mcm9tX2ludCgqdGhpcywgZmlyc3QsIGxhc3QpOyB9Ci0KLSAgICAvKiogQWR2YW5jZXMgdGhlIHN0YXRlIG9mIHRoZSBnZW5lcmF0b3IgYnkgQGMgei4gKi8KLSAgICB2b2lkIGRpc2NhcmQobmRuYm9vc3Q6OnVpbnRtYXhfdCB6KQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBjb25zdF9tb2Q8SW50VHlwZSwgbT4gbW9kX3R5cGU7Ci0gICAgICAgIEludFR5cGUgYl9pbnYgPSBtb2RfdHlwZTo6aW52ZXJ0KGEtMSk7Ci0gICAgICAgIEludFR5cGUgYl9nY2QgPSBtb2RfdHlwZTo6bXVsdChhLTEsIGJfaW52KTsKLSAgICAgICAgaWYoYl9nY2QgPT0gMSkgewotICAgICAgICAgICAgSW50VHlwZSBhX3ogPSBtb2RfdHlwZTo6cG93KGEsIHopOwotICAgICAgICAgICAgX3ggPSBtb2RfdHlwZTo6bXVsdF9hZGQoYV96LCBfeCwgCi0gICAgICAgICAgICAgICAgbW9kX3R5cGU6Om11bHQobW9kX3R5cGU6Om11bHQoYywgYl9pbnYpLCBhX3ogLSAxKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBjb21wdXRlIChhXnogLSAxKSpjICUgKGJfZ2NkICogbSkgLyAoYiAvIGJfZ2NkKSAqIGludihiIC8gYl9nY2QpCi0gICAgICAgICAgICAvLyB3ZSdyZSBzdG9yaW5nIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IC8gYl9nY2QKLSAgICAgICAgICAgIEludFR5cGUgYV96bTFfb3Zlcl9nY2QgPSAwOwotICAgICAgICAgICAgSW50VHlwZSBhX2ttMV9vdmVyX2djZCA9IChhIC0gMSkgLyBiX2djZDsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50bWF4X3QgZXhwb25lbnQgPSB6OwotICAgICAgICAgICAgd2hpbGUoZXhwb25lbnQgIT0gMCkgewotICAgICAgICAgICAgICAgIGlmKGV4cG9uZW50ICUgMiA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFfem0xX292ZXJfZ2NkID0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZF90eXBlOjptdWx0X2FkZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiX2djZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RfdHlwZTo6bXVsdChhX3ptMV9vdmVyX2djZCwgYV9rbTFfb3Zlcl9nY2QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZF90eXBlOjphZGQoYV96bTFfb3Zlcl9nY2QsIGFfa20xX292ZXJfZ2NkKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFfa20xX292ZXJfZ2NkID0gbW9kX3R5cGU6Om11bHRfYWRkKAotICAgICAgICAgICAgICAgICAgICBiX2djZCwKLSAgICAgICAgICAgICAgICAgICAgbW9kX3R5cGU6Om11bHQoYV9rbTFfb3Zlcl9nY2QsIGFfa20xX292ZXJfZ2NkKSwKLSAgICAgICAgICAgICAgICAgICAgbW9kX3R5cGU6OmFkZChhX2ttMV9vdmVyX2djZCwgYV9rbTFfb3Zlcl9nY2QpKTsKLSAgICAgICAgICAgICAgICBleHBvbmVudCAvPSAyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBJbnRUeXBlIGFfeiA9IG1vZF90eXBlOjptdWx0X2FkZChiX2djZCwgYV96bTFfb3Zlcl9nY2QsIDEpOwotICAgICAgICAgICAgSW50VHlwZSBudW0gPSBtb2RfdHlwZTo6bXVsdChjLCBhX3ptMV9vdmVyX2djZCk7Ci0gICAgICAgICAgICBiX2ludiA9IG1vZF90eXBlOjppbnZlcnQoKGEtMSkvYl9nY2QpOwotICAgICAgICAgICAgX3ggPSBtb2RfdHlwZTo6bXVsdF9hZGQoYV96LCBfeCwgbW9kX3R5cGU6Om11bHQoYl9pbnYsIG51bSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSYgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiB5KQotICAgIHsgcmV0dXJuIHguX3ggPT0geS5feDsgfQotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUmIHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSYgeSkKLSAgICB7IHJldHVybiAhKHggPT0geSk7IH0KLSAgICAKLSNpZiAhZGVmaW5lZChORE5CT09TVF9SQU5ET01fTk9fU1RSRUFNX09QRVJBVE9SUykKLSAgICAvKiogV3JpdGVzIGEgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUgdG8gYSBAYyBzdGQ6Om9zdHJlYW0uICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsCi0gICAgICAgICAgICAgICBjb25zdCBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSYgbGNnKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9zIDw8IGxjZy5feDsKLSAgICB9Ci0KLSAgICAvKiogUmVhZHMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSBmcm9tIGEgQGMgc3RkOjppc3RyZWFtLiAqLwotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gICAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JgotICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLAotICAgICAgICAgICAgICAgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUmIGxjZykKLSAgICB7Ci0gICAgICAgIGxjZy5yZWFkKGlzKTsKLSAgICAgICAgcmV0dXJuIGlzOwotICAgIH0KLSNlbmRpZgotCi1wcml2YXRlOgotCi0gICAgLy8vIFxjb25kIHNob3dfcHJpdmF0ZQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgICB2b2lkIHJlYWQoc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULCBUcmFpdHM+JiBpcykgewotICAgICAgICBJbnRUeXBlIHg7Ci0gICAgICAgIGlmKGlzID4+IHgpIHsKLSAgICAgICAgICAgIGlmKHggPj0gKG1pbikoKSAmJiB4IDw9IChtYXgpKCkpIHsKLSAgICAgICAgICAgICAgICBfeCA9IHg7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlzLnNldHN0YXRlKHN0ZDo6aW9zX2Jhc2U6OmZhaWxiaXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8vIFxlbmRjb25kCi0KLSAgICBJbnRUeXBlIF94OwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotLy8gIEEgZGVmaW5pdGlvbiBpcyByZXF1aXJlZCBldmVuIGZvciBpbnRlZ3JhbCBzdGF0aWMgY29uc3RhbnRzCi10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIGEsIEludFR5cGUgYywgSW50VHlwZSBtPgotY29uc3QgYm9vbCBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxJbnRUeXBlLCBhLCBjLCBtPjo6aGFzX2ZpeGVkX3JhbmdlOwotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBhLCBJbnRUeXBlIGMsIEludFR5cGUgbT4KLWNvbnN0IEludFR5cGUgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8SW50VHlwZSxhLGMsbT46Om11bHRpcGxpZXI7Ci10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIGEsIEludFR5cGUgYywgSW50VHlwZSBtPgotY29uc3QgSW50VHlwZSBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxJbnRUeXBlLGEsYyxtPjo6aW5jcmVtZW50OwotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBhLCBJbnRUeXBlIGMsIEludFR5cGUgbT4KLWNvbnN0IEludFR5cGUgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8SW50VHlwZSxhLGMsbT46Om1vZHVsdXM7Ci10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIGEsIEludFR5cGUgYywgSW50VHlwZSBtPgotY29uc3QgSW50VHlwZSBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxJbnRUeXBlLGEsYyxtPjo6ZGVmYXVsdF9zZWVkOwotI2VuZGlmCi0KLS8vLyBcY29uZCBzaG93X2RlcHJlY2F0ZWQKLQotLy8gcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5Ci10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIGEsIEludFR5cGUgYywgSW50VHlwZSBtLCBJbnRUeXBlIHZhbCA9IDA+Ci1jbGFzcyBsaW5lYXJfY29uZ3J1ZW50aWFsIDogcHVibGljIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsIGEsIGMsIG0+Ci17Ci0gICAgdHlwZWRlZiBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxJbnRUeXBlLCBhLCBjLCBtPiBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgbGluZWFyX2NvbmdydWVudGlhbChJbnRUeXBlIHgwID0gMSkgOiBiYXNlX3R5cGUoeDApIHt9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgSXQ+Ci0gICAgbGluZWFyX2NvbmdydWVudGlhbChJdCYgZmlyc3QsIEl0IGxhc3QpIDogYmFzZV90eXBlKGZpcnN0LCBsYXN0KSB7fQotfTsKLQotLy8vIFxlbmRjb25kCi0KLS8qKgotICogVGhlIHNwZWNpYWxpemF0aW9uIFxtaW5zdGRfcmFuZDAgd2FzIG9yaWdpbmFsbHkgc3VnZ2VzdGVkIGluCi0gKgotICogIEBibG9ja3F1b3RlCi0gKiAgQSBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgZm9yIHRoZSBTeXN0ZW0vMzYwLCBQLkEuIExld2lzLAotICogIEEuUy4gR29vZG1hbiwgSi5NLiBNaWxsZXIsIElCTSBTeXN0ZW1zIEpvdXJuYWwsIFZvbC4gOCwgTm8uIDIsCi0gKiAgMTk2OSwgcHAuIDEzNi0xNDYKLSAqICBAZW5kYmxvY2txdW90ZQotICoKLSAqIEl0IGlzIGV4YW1pbmVkIG1vcmUgY2xvc2VseSB0b2dldGhlciB3aXRoIFxtaW5zdGRfcmFuZCBpbgotICoKLSAqICBAYmxvY2txdW90ZQotICogICJSYW5kb20gTnVtYmVyIEdlbmVyYXRvcnM6IEdvb2Qgb25lcyBhcmUgaGFyZCB0byBmaW5kIiwKLSAqICBTdGVwaGVuIEsuIFBhcmsgYW5kIEtlaXRoIFcuIE1pbGxlciwgQ29tbXVuaWNhdGlvbnMgb2YKLSAqICB0aGUgQUNNLCBWb2wuIDMxLCBOby4gMTAsIE9jdG9iZXIgMTk4OCwgcHAuIDExOTItMTIwMSAKLSAqICBAZW5kYmxvY2txdW90ZQotICovCi10eXBlZGVmIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPHVpbnQzMl90LCAxNjgwNywgMCwgMjE0NzQ4MzY0Nz4gbWluc3RkX3JhbmQwOwotCi0vKiogVGhlIHNwZWNpYWxpemF0aW9uIFxtaW5zdGRfcmFuZCB3YXMgc3VnZ2VzdGVkIGluCi0gKgotICogIEBibG9ja3F1b3RlCi0gKiAgIlJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yczogR29vZCBvbmVzIGFyZSBoYXJkIHRvIGZpbmQiLAotICogIFN0ZXBoZW4gSy4gUGFyayBhbmQgS2VpdGggVy4gTWlsbGVyLCBDb21tdW5pY2F0aW9ucyBvZgotICogIHRoZSBBQ00sIFZvbC4gMzEsIE5vLiAxMCwgT2N0b2JlciAxOTg4LCBwcC4gMTE5Mi0xMjAxCi0gKiAgQGVuZGJsb2NrcXVvdGUKLSAqLwotdHlwZWRlZiBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTx1aW50MzJfdCwgNDgyNzEsIDAsIDIxNDc0ODM2NDc+IG1pbnN0ZF9yYW5kOwotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlQ2NF9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKQotLyoqCi0gKiBDbGFzcyBAYyByYW5kNDggbW9kZWxzIGEgXHBzZXVkb19yYW5kb21fbnVtYmVyX2dlbmVyYXRvci4gSXQgdXNlcwotICogdGhlIGxpbmVhciBjb25ncnVlbnRpYWwgYWxnb3JpdGhtIHdpdGggdGhlIHBhcmFtZXRlcnMgYSA9IDB4NURFRUNFNjZELAotICogYyA9IDB4QiwgbSA9IDIqKjQ4LiBJdCBkZWxpdmVycyBpZGVudGljYWwgcmVzdWx0cyB0byB0aGUgQGMgbHJhbmQ0OCgpCi0gKiBmdW5jdGlvbiBhdmFpbGFibGUgb24gc29tZSBzeXN0ZW1zIChhc3N1bWluZyBsY29uZzQ4IGhhcyBub3QgYmVlbiBjYWxsZWQpLgotICoKLSAqIEl0IGlzIG9ubHkgYXZhaWxhYmxlIG9uIHN5c3RlbXMgd2hlcmUgQGMgdWludDY0X3QgaXMgcHJvdmlkZWQgYXMgYW4KLSAqIGludGVncmFsIHR5cGUsIHNvIHRoYXQgZm9yIGV4YW1wbGUgc3RhdGljIGluLWNsYXNzIGNvbnN0YW50cyBhbmQvb3IKLSAqIGVudW0gZGVmaW5pdGlvbnMgd2l0aCBsYXJnZSBAYyB1aW50NjRfdCBudW1iZXJzIHdvcmsuCi0gKi8KLWNsYXNzIHJhbmQ0OCAKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50MzJfdCByZXN1bHRfdHlwZTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfZml4ZWRfcmFuZ2UgPSBmYWxzZSk7Ci0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgc21hbGxlc3QgdmFsdWUgdGhhdCB0aGUgZ2VuZXJhdG9yIGNhbiBwcm9kdWNlCi0gICAgICovCi0gICAgc3RhdGljIHVpbnQzMl90IG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSB7IHJldHVybiAwOyB9Ci0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgbGFyZ2VzdCB2YWx1ZSB0aGF0IHRoZSBnZW5lcmF0b3IgY2FuIHByb2R1Y2UKLSAgICAgKi8KLSAgICBzdGF0aWMgdWludDMyX3QgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgeyByZXR1cm4gMHg3RkZGRkZGRjsgfQotICAKLSAgICAvKiogU2VlZHMgdGhlIGdlbmVyYXRvciB3aXRoIHRoZSBkZWZhdWx0IHNlZWQuICovCi0gICAgcmFuZDQ4KCkgOiBsY2YoY252KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSkpIHt9Ci0gICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIFxyYW5kNDggZ2VuZXJhdG9yIHdpdGggeCgwKSA6PSAoeDAgPDwgMTYpIHwgMHgzMzBlLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQVJJVEhNRVRJQ19DT05TVFJVQ1RPUihyYW5kNDgsIHJlc3VsdF90eXBlLCB4MCkKLSAgICB7IHNlZWQoeDApOyB9Ci0gICAgLyoqCi0gICAgICogU2VlZHMgdGhlIGdlbmVyYXRvciB3aXRoIHZhbHVlcyBwcm9kdWNlZCBieSBAYyBzZXEuZ2VuZXJhdGUoKS4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfU0VRX0NPTlNUUlVDVE9SKHJhbmQ0OCwgU2VlZFNlcSwgc2VxKQotICAgIHsgc2VlZChzZXEpOyB9Ci0gICAgLyoqCi0gICAgICogU2VlZHMgdGhlIGdlbmVyYXRvciB1c2luZyB2YWx1ZXMgZnJvbSBhbiBpdGVyYXRvciByYW5nZSwKLSAgICAgKiBhbmQgdXBkYXRlcyBmaXJzdCB0byBwb2ludCBvbmUgcGFzdCB0aGUgbGFzdCB2YWx1ZSBjb25zdW1lZC4KLSAgICAgKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdD4gcmFuZDQ4KEl0JiBmaXJzdCwgSXQgbGFzdCkgOiBsY2YoZmlyc3QsIGxhc3QpIHsgfQotCi0gICAgLy8gY29tcGlsZXItZ2VuZXJhdGVkIGNvcHkgY3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBhcmUgZmluZQotCi0gICAgLyoqIFNlZWRzIHRoZSBnZW5lcmF0b3Igd2l0aCB0aGUgZGVmYXVsdCBzZWVkLiAqLwotICAgIHZvaWQgc2VlZCgpIHsgc2VlZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oMSkpOyB9Ci0gICAgLyoqCi0gICAgICogQ2hhbmdlcyB0aGUgY3VycmVudCB2YWx1ZSB4KG4pIG9mIHRoZSBnZW5lcmF0b3IgdG8gKHgwIDw8IDE2KSB8IDB4MzMwZS4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0FSSVRITUVUSUNfU0VFRChyYW5kNDgsIHJlc3VsdF90eXBlLCB4MCkKLSAgICB7IGxjZi5zZWVkKGNudih4MCkpOyB9Ci0gICAgLyoqCi0gICAgICogU2VlZHMgdGhlIGdlbmVyYXRvciB1c2luZyB2YWx1ZXMgZnJvbSBhbiBpdGVyYXRvciByYW5nZSwKLSAgICAgKiBhbmQgdXBkYXRlcyBmaXJzdCB0byBwb2ludCBvbmUgcGFzdCB0aGUgbGFzdCB2YWx1ZSBjb25zdW1lZC4KLSAgICAgKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdD4gdm9pZCBzZWVkKEl0JiBmaXJzdCwgSXQgbGFzdCkgeyBsY2Yuc2VlZChmaXJzdCxsYXN0KTsgfQotICAgIC8qKgotICAgICAqIFNlZWRzIHRoZSBnZW5lcmF0b3Igd2l0aCB2YWx1ZXMgcHJvZHVjZWQgYnkgQGMgc2VxLmdlbmVyYXRlKCkuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9TRUVEKHJhbmQ0OCwgU2VlZFNlcSwgc2VxKQotICAgIHsgbGNmLnNlZWQoc2VxKTsgfQotCi0gICAgLyoqICBSZXR1cm5zIHRoZSBuZXh0IHZhbHVlIG9mIHRoZSBnZW5lcmF0b3IuICovCi0gICAgdWludDMyX3Qgb3BlcmF0b3IoKSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90PihsY2YoKSA+PiAxNyk7IH0KLSAgICAKLSAgICAvKiogQWR2YW5jZXMgdGhlIHN0YXRlIG9mIHRoZSBnZW5lcmF0b3IgYnkgQGMgei4gKi8KLSAgICB2b2lkIGRpc2NhcmQobmRuYm9vc3Q6OnVpbnRtYXhfdCB6KSB7IGxjZi5kaXNjYXJkKHopOyB9Ci0gIAotICAgIC8qKiBGaWxscyBhIHJhbmdlIHdpdGggcmFuZG9tIHZhbHVlcyAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci0gICAgdm9pZCBnZW5lcmF0ZShJdGVyIGZpcnN0LCBJdGVyIGxhc3QpCi0gICAgewotICAgICAgICBmb3IoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KSB7Ci0gICAgICAgICAgICAqZmlyc3QgPSAoKnRoaXMpKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX05PX1NUUkVBTV9PUEVSQVRPUlMKLSAgICAvKiogIFdyaXRlcyBhIEBjIHJhbmQ0OCB0byBhIEBjIHN0ZDo6b3N0cmVhbS4gKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCxjbGFzcyBUcmFpdHM+Ci0gICAgZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JgotICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCByYW5kNDgmIHIpCi0gICAgeyBvcyA8PCByLmxjZjsgcmV0dXJuIG9zOyB9Ci0KLSAgICAvKiogUmVhZHMgYSBAYyByYW5kNDggZnJvbSBhIEBjIHN0ZDo6aXN0cmVhbS4gKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCxjbGFzcyBUcmFpdHM+Ci0gICAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JgotICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCByYW5kNDgmIHIpCi0gICAgeyBpcyA+PiByLmxjZjsgcmV0dXJuIGlzOyB9Ci0jZW5kaWYKLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHdvIGdlbmVyYXRvcnMgd2lsbCBwcm9kdWNlIGlkZW50aWNhbAotICAgICAqIHNlcXVlbmNlcyBvZiB2YWx1ZXMuCi0gICAgICovCi0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCByYW5kNDgmIHgsIGNvbnN0IHJhbmQ0OCYgeSkKLSAgICB7IHJldHVybiB4LmxjZiA9PSB5LmxjZjsgfQotICAgIC8qKgotICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHdvIGdlbmVyYXRvcnMgd2lsbCBwcm9kdWNlIGRpZmZlcmVudAotICAgICAqIHNlcXVlbmNlcyBvZiB2YWx1ZXMuCi0gICAgICovCi0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCByYW5kNDgmIHgsIGNvbnN0IHJhbmQ0OCYgeSkKLSAgICB7IHJldHVybiAhKHggPT0geSk7IH0KLXByaXZhdGU6Ci0gICAgLy8vIFxjb25kIHNob3dfcHJpdmF0ZQotICAgIHR5cGVkZWYgcmFuZG9tOjpsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTx1aW50NjRfdCwKLSAgICAgICAgLy8geHh4eFVMTCBpcyBub3QgcG9ydGFibGUKLSAgICAgICAgdWludDY0X3QoMHhERUVDRTY2RFVMKSB8ICh1aW50NjRfdCgweDUpIDw8IDMyKSwKLSAgICAgICAgMHhCLCB1aW50NjRfdCgxKTw8NDg+IGxjZl90OwotICAgIGxjZl90IGxjZjsKLQotICAgIHN0YXRpYyBuZG5ib29zdDo6dWludDY0X3QgY252KG5kbmJvb3N0Ojp1aW50MzJfdCB4KQotICAgIHsgcmV0dXJuIChzdGF0aWNfY2FzdDx1aW50NjRfdD4oeCkgPDwgMTYpIHwgMHgzMzBlOyB9Ci0gICAgLy8vIFxlbmRjb25kCi19OwotI2VuZGlmIC8qICFORE5CT09TVF9OT19JTlQ2NF9UICYmICFORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UICovCi0KLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotCi11c2luZyByYW5kb206Om1pbnN0ZF9yYW5kMDsKLXVzaW5nIHJhbmRvbTo6bWluc3RkX3JhbmQ7Ci11c2luZyByYW5kb206OnJhbmQ0ODsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9MSU5FQVJfQ09OR1JVRU5USUFMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vdW5pZm9ybV8wMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS91bmlmb3JtXzAxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWExNDExMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS91bmlmb3JtXzAxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0vKiBib29zdCByYW5kb20vdW5pZm9ybV8wMS5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMC0yMDAxCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogdW5pZm9ybV8wMS5ocHAgNzEwMTggMjAxMS0wNC0wNSAyMToyNzo1Mlogc3RldmVuX3dhdGFuYWJlICQKLSAqCi0gKiBSZXZpc2lvbiBoaXN0b3J5Ci0gKiAgMjAwMS0wMi0xOCAgbW92ZWQgdG8gaW5kaXZpZHVhbCBoZWFkZXIgZmlsZXMKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9VTklGT1JNXzAxX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fVU5JRk9STV8wMV9IUFAKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9wdHJfaGVscGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLQotI2lmZGVmIE5ETkJPT1NUX1JBTkRPTV9ET1hZR0VOCi0KLS8qKgotICogVGhlIGRpc3RyaWJ1dGlvbiBmdW5jdGlvbiB1bmlmb3JtXzAxIG1vZGVscyBhIFxyYW5kb21fZGlzdHJpYnV0aW9uLgotICogT24gZWFjaCBpbnZvY2F0aW9uLCBpdCByZXR1cm5zIGEgcmFuZG9tIGZsb2F0aW5nLXBvaW50IHZhbHVlCi0gKiB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgaW4gdGhlIHJhbmdlIFswLi4xKS4KLSAqCi0gKiBUaGUgdGVtcGxhdGUgcGFyYW1ldGVyIFJlYWxUeXBlIHNoYWxsIGRlbm90ZSBhIGZsb2F0LWxpa2UgdmFsdWUgdHlwZQotICogd2l0aCBzdXBwb3J0IGZvciBiaW5hcnkgb3BlcmF0b3JzICssIC0sIGFuZCAvLgotICoKLSAqIE5vdGU6IFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIGJ1Z2d5LCBiZWNhdXNlIGl0IG1heSBub3QgZmlsbAotICogYWxsIG9mIHRoZSBtYW50aXNzYSB3aXRoIHJhbmRvbSBiaXRzLiBJJ20gdW5zdXJlIGhvdyB0byBmaWxsIGEKLSAqICh0by1iZS1pbnZlbnRlZCkgQGMgbmRuYm9vc3Q6OmJpZ2Zsb2F0IGNsYXNzIHdpdGggcmFuZG9tIGJpdHMgZWZmaWNpZW50bHkuCi0gKiBJdCdzIHByb2JhYmx5IHRpbWUgZm9yIGEgdHJhaXRzIGNsYXNzLgotICovCi10ZW1wbGF0ZTxjbGFzcyBSZWFsVHlwZSA9IGRvdWJsZT4KLWNsYXNzIHVuaWZvcm1fMDEKLXsKLXB1YmxpYzoKLSAgdHlwZWRlZiBSZWFsVHlwZSBpbnB1dF90eXBlOwotICB0eXBlZGVmIFJlYWxUeXBlIHJlc3VsdF90eXBlOwotICByZXN1bHRfdHlwZSBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgY29uc3Q7Ci0gIHJlc3VsdF90eXBlIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdDsKLSAgdm9pZCByZXNldCgpOwotCi0gIHRlbXBsYXRlPGNsYXNzIEVuZ2luZT4KLSAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShFbmdpbmUmIGVuZyk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX05PX1NUUkVBTV9PUEVSQVRPUlMKLSAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JgotICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywgY29uc3QgbmV3X3VuaWZvcm1fMDEmKQotICB7Ci0gICAgcmV0dXJuIG9zOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JgotICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgbmV3X3VuaWZvcm1fMDEmKQotICB7Ci0gICAgcmV0dXJuIGlzOwotICB9Ci0jZW5kaWYKLX07Ci0KLSNlbHNlCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBSZWFsVHlwZT4KLWNsYXNzIG5ld191bmlmb3JtXzAxCi17Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgUmVhbFR5cGUgaW5wdXRfdHlwZTsKLSAgdHlwZWRlZiBSZWFsVHlwZSByZXN1bHRfdHlwZTsKLSAgLy8gY29tcGlsZXItZ2VuZXJhdGVkIGNvcHkgY3RvciBhbmQgY29weSBhc3NpZ25tZW50IGFyZSBmaW5lCi0gIHJlc3VsdF90eXBlIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdCB7IHJldHVybiByZXN1bHRfdHlwZSgwKTsgfQotICByZXN1bHRfdHlwZSBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgY29uc3QgeyByZXR1cm4gcmVzdWx0X3R5cGUoMSk7IH0KLSAgdm9pZCByZXNldCgpIHsgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEVuZ2luZT4KLSAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShFbmdpbmUmIGVuZykgewotICAgIGZvciAoOzspIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5naW5lOjpyZXN1bHRfdHlwZSBiYXNlX3Jlc3VsdDsKLSAgICAgIHJlc3VsdF90eXBlIGZhY3RvciA9IHJlc3VsdF90eXBlKDEpIC8KLSAgICAgICAgICAgICAgKHJlc3VsdF90eXBlKChlbmcubWF4KSgpLShlbmcubWluKSgpKSArCi0gICAgICAgICAgICAgICByZXN1bHRfdHlwZShzdGQ6Om51bWVyaWNfbGltaXRzPGJhc2VfcmVzdWx0Pjo6aXNfaW50ZWdlciA/IDEgOiAwKSk7Ci0gICAgICByZXN1bHRfdHlwZSByZXN1bHQgPSByZXN1bHRfdHlwZShlbmcoKSAtIChlbmcubWluKSgpKSAqIGZhY3RvcjsKLSAgICAgIGlmIChyZXN1bHQgPCByZXN1bHRfdHlwZSgxKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gIH0KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fTk9fU1RSRUFNX09QRVJBVE9SUwotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCBuZXdfdW5pZm9ybV8wMSYpCi0gIHsKLSAgICByZXR1cm4gb3M7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCBuZXdfdW5pZm9ybV8wMSYpCi0gIHsKLSAgICByZXR1cm4gaXM7Ci0gIH0KLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgY2xhc3MgUmVhbFR5cGU+Ci1jbGFzcyBiYWNrd2FyZF9jb21wYXRpYmxlX3VuaWZvcm1fMDEKLXsKLSAgdHlwZWRlZiBuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OnB0cl9oZWxwZXI8VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4gdHJhaXRzOwotcHVibGljOgotICB0eXBlZGVmIFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IgYmFzZV90eXBlOwotICB0eXBlZGVmIFJlYWxUeXBlIHJlc3VsdF90eXBlOwotCi0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfZml4ZWRfcmFuZ2UgPSBmYWxzZSk7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUykgJiYgIShkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIE5ETkJPT1NUX01TVkMgPD0gMTMwMCkKLSAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghc3RkOjpudW1lcmljX2xpbWl0czxSZWFsVHlwZT46OmlzX2ludGVnZXIpOwotI2VuZGlmCi0KLSAgZXhwbGljaXQgYmFja3dhcmRfY29tcGF0aWJsZV91bmlmb3JtXzAxKHR5cGVuYW1lIHRyYWl0czo6cnZhbHVlX3R5cGUgcm5nKQotICAgIDogX3JuZyhybmcpLAotICAgICAgX2ZhY3RvcihyZXN1bHRfdHlwZSgxKSAvCi0gICAgICAgICAgICAgIChyZXN1bHRfdHlwZSgoYmFzZSgpLm1heCkoKS0oYmFzZSgpLm1pbikoKSkgKwotICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUoc3RkOjpudW1lcmljX2xpbWl0czxiYXNlX3Jlc3VsdD46OmlzX2ludGVnZXIgPyAxIDogMCkpKQotICB7Ci0gIH0KLSAgLy8gY29tcGlsZXItZ2VuZXJhdGVkIGNvcHkgY3RvciBhbmQgY29weSBhc3NpZ25tZW50IGFyZSBmaW5lCi0KLSAgcmVzdWx0X3R5cGUgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0IHsgcmV0dXJuIHJlc3VsdF90eXBlKDApOyB9Ci0gIHJlc3VsdF90eXBlIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdCB7IHJldHVybiByZXN1bHRfdHlwZSgxKTsgfQotICB0eXBlbmFtZSB0cmFpdHM6OnZhbHVlX3R5cGUmIGJhc2UoKSB7IHJldHVybiB0cmFpdHM6OnJlZihfcm5nKTsgfQotICBjb25zdCB0eXBlbmFtZSB0cmFpdHM6OnZhbHVlX3R5cGUmIGJhc2UoKSBjb25zdCB7IHJldHVybiB0cmFpdHM6OnJlZihfcm5nKTsgfQotICB2b2lkIHJlc2V0KCkgeyB9Ci0KLSAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpIHsKLSAgICBmb3IgKDs7KSB7Ci0gICAgICByZXN1bHRfdHlwZSByZXN1bHQgPSByZXN1bHRfdHlwZShiYXNlKCkoKSAtIChiYXNlKCkubWluKSgpKSAqIF9mYWN0b3I7Ci0gICAgICBpZiAocmVzdWx0IDwgcmVzdWx0X3R5cGUoMSkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUykKLSAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JgotICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywgY29uc3QgYmFja3dhcmRfY29tcGF0aWJsZV91bmlmb3JtXzAxJiB1KQotICB7Ci0gICAgb3MgPDwgdS5fcm5nOwotICAgIHJldHVybiBvczsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsIGJhY2t3YXJkX2NvbXBhdGlibGVfdW5pZm9ybV8wMSYgdSkKLSAgewotICAgIGlzID4+IHUuX3JuZzsKLSAgICByZXR1cm4gaXM7Ci0gIH0KLSNlbmRpZgotCi1wcml2YXRlOgotICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6dmFsdWVfdHlwZTo6cmVzdWx0X3R5cGUgYmFzZV9yZXN1bHQ7Ci0gIFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IgX3JuZzsKLSAgcmVzdWx0X3R5cGUgX2ZhY3RvcjsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLS8vICBBIGRlZmluaXRpb24gaXMgcmVxdWlyZWQgZXZlbiBmb3IgaW50ZWdyYWwgc3RhdGljIGNvbnN0YW50cwotdGVtcGxhdGU8Y2xhc3MgVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgY2xhc3MgUmVhbFR5cGU+Ci1jb25zdCBib29sIGJhY2t3YXJkX2NvbXBhdGlibGVfdW5pZm9ybV8wMTxVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBSZWFsVHlwZT46Omhhc19maXhlZF9yYW5nZTsKLSNlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgotc3RydWN0IHNlbGVjdF91bmlmb3JtXzAxCi17Ci0gIHRlbXBsYXRlPGNsYXNzIFJlYWxUeXBlPgotICBzdHJ1Y3QgYXBwbHkKLSAgewotICAgIHR5cGVkZWYgYmFja3dhcmRfY29tcGF0aWJsZV91bmlmb3JtXzAxPFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIFJlYWxUeXBlPiB0eXBlOwotICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlbGVjdF91bmlmb3JtXzAxPGZsb2F0PgotewotICB0ZW1wbGF0ZTxjbGFzcyBSZWFsVHlwZT4KLSAgc3RydWN0IGFwcGx5Ci0gIHsKLSAgICB0eXBlZGVmIG5ld191bmlmb3JtXzAxPGZsb2F0PiB0eXBlOwotICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlbGVjdF91bmlmb3JtXzAxPGRvdWJsZT4KLXsKLSAgdGVtcGxhdGU8Y2xhc3MgUmVhbFR5cGU+Ci0gIHN0cnVjdCBhcHBseQotICB7Ci0gICAgdHlwZWRlZiBuZXdfdW5pZm9ybV8wMTxkb3VibGU+IHR5cGU7Ci0gIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2VsZWN0X3VuaWZvcm1fMDE8bG9uZyBkb3VibGU+Ci17Ci0gIHRlbXBsYXRlPGNsYXNzIFJlYWxUeXBlPgotICBzdHJ1Y3QgYXBwbHkKLSAgewotICAgIHR5cGVkZWYgbmV3X3VuaWZvcm1fMDE8bG9uZyBkb3VibGU+IHR5cGU7Ci0gIH07Ci19OwotCi19Ci0KLS8vIEJlY2F1c2UgaXQgaXMgc28gY29tbW9ubHkgdXNlZDogdW5pZm9ybSBkaXN0cmlidXRpb24gb24gdGhlIHJlYWwgWzAuLjEpCi0vLyByYW5nZS4gIFRoaXMgYWxsb3dzIGZvciBzcGVjaWFsaXphdGlvbnMgdG8gYXZvaWQgYSBjb3N0bHkgaW50IC0+IGZsb2F0Ci0vLyBjb252ZXJzaW9uIHBsdXMgZmxvYXQgbXVsdGlwbGljYXRpb24KLXRlbXBsYXRlPGNsYXNzIFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IgPSBkb3VibGUsIGNsYXNzIFJlYWxUeXBlID0gZG91YmxlPgotY2xhc3MgdW5pZm9ybV8wMQotICA6IHB1YmxpYyBkZXRhaWw6OnNlbGVjdF91bmlmb3JtXzAxPFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgYXBwbHk8UmVhbFR5cGU+Ojp0eXBlCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpzZWxlY3RfdW5pZm9ybV8wMTxVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGFwcGx5PFJlYWxUeXBlPjo6dHlwZSBpbXBsX3R5cGU7Ci0gIHR5cGVkZWYgbmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjpwdHJfaGVscGVyPFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+IHRyYWl0czsKLXB1YmxpYzoKLQotICB1bmlmb3JtXzAxKCkge30KLQotICBleHBsaWNpdCB1bmlmb3JtXzAxKHR5cGVuYW1lIHRyYWl0czo6cnZhbHVlX3R5cGUgcm5nKQotICAgIDogaW1wbF90eXBlKHJuZykKLSAgewotICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUykKLSAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JgotICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywgY29uc3QgdW5pZm9ybV8wMSYgdSkKLSAgewotICAgIG9zIDw8IHN0YXRpY19jYXN0PGNvbnN0IGltcGxfdHlwZSY+KHUpOwotICAgIHJldHVybiBvczsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsIHVuaWZvcm1fMDEmIHUpCi0gIHsKLSAgICBpcyA+PiBzdGF0aWNfY2FzdDxpbXBsX3R5cGUmPih1KTsKLSAgICByZXR1cm4gaXM7Ci0gIH0KLSNlbmRpZgotfTsKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotCi11c2luZyByYW5kb206OnVuaWZvcm1fMDE7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fVU5JRk9STV8wMV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL3VuaWZvcm1fc21hbGxpbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vdW5pZm9ybV9zbWFsbGludC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MGUxMDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vdW5pZm9ybV9zbWFsbGludC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL3VuaWZvcm1fc21hbGxpbnQuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDAtMjAwMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IHVuaWZvcm1fc21hbGxpbnQuaHBwIDcxMDE4IDIwMTEtMDQtMDUgMjE6Mjc6NTJaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKgotICogUmV2aXNpb24gaGlzdG9yeQotICogIDIwMDEtMDQtMDggIGFkZGVkIG1pbjxtYXggYXNzZXJ0aW9uIChOLiBCZWNrZXIpCi0gKiAgMjAwMS0wMi0xOCAgbW92ZWQgdG8gaW5kaXZpZHVhbCBoZWFkZXIgZmlsZXMKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9VTklGT1JNX1NNQUxMSU5UX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5ET01fVU5JRk9STV9TTUFMTElOVF9IUFAKLQotI2luY2x1ZGUgPGlzdHJlYW0+Ci0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9vcGVyYXRvcnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2lnbmVkX3Vuc2lnbmVkX3Rvb2xzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vdW5pZm9ybV8wMS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci0KLS8vIHVuaWZvcm0gaW50ZWdlciBkaXN0cmlidXRpb24gb24gYSBzbWFsbCByYW5nZSBbbWluLCBtYXhdCi0KLS8qKgotICogVGhlIGRpc3RyaWJ1dGlvbiBmdW5jdGlvbiB1bmlmb3JtX3NtYWxsaW50IG1vZGVscyBhIFxyYW5kb21fZGlzdHJpYnV0aW9uLgotICogT24gZWFjaCBpbnZvY2F0aW9uLCBpdCByZXR1cm5zIGEgcmFuZG9tIGludGVnZXIgdmFsdWUgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkCi0gKiBpbiB0aGUgc2V0IG9mIGludGVnZXIgbnVtYmVycyB7bWluLCBtaW4rMSwgbWluKzIsIC4uLiwgbWF4fS4gSXQgYXNzdW1lcwotICogdGhhdCB0aGUgZGVzaXJlZCByYW5nZSAobWF4LW1pbisxKSBpcyBzbWFsbCBjb21wYXJlZCB0byB0aGUgcmFuZ2Ugb2YgdGhlCi0gKiB1bmRlcmx5aW5nIHNvdXJjZSBvZiByYW5kb20gbnVtYmVycyBhbmQgdGh1cyBtYWtlcyBubyBhdHRlbXB0IHRvIGxpbWl0Ci0gKiBxdWFudGl6YXRpb24gZXJyb3JzLgotICoKLSAqIExldCBcZiRyX3tcbWF0aHR0e291dH19ID0gKFxtYm94e21heH0tXG1ib3h7bWlufSsxKVxmJCB0aGUgZGVzaXJlZCByYW5nZSBvZgotICogaW50ZWdlciBudW1iZXJzLCBhbmQKLSAqIGxldCBcZiRyX3tcbWF0aHR0e2Jhc2V9fVxmJCBiZSB0aGUgcmFuZ2Ugb2YgdGhlIHVuZGVybHlpbmcgc291cmNlIG9mIHJhbmRvbQotICogbnVtYmVycy4gVGhlbiwgZm9yIHRoZSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiwgdGhlIHRoZW9yZXRpY2FsIHByb2JhYmlsaXR5Ci0gKiBmb3IgYW55IG51bWJlciBpIGluIHRoZSByYW5nZSBcZiRyX3tcbWF0aHR0e291dH19XGYkIHdpbGwgYmUKLSAqIFxmJFxkaXNwbGF5c3R5bGUgcF97XG1hdGh0dHtvdXR9fShpKSA9IFxmcmFjezF9e3Jfe1xtYXRodHR7b3V0fX19XGYkLgotICogTGlrZXdpc2UsIGFzc3VtZSBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uIG9uIFxmJHJfe1xtYXRodHR7YmFzZX19XGYkIGZvcgotICogdGhlIHVuZGVybHlpbmcgc291cmNlIG9mIHJhbmRvbSBudW1iZXJzLCBpLmUuCi0gKiBcZiRcZGlzcGxheXN0eWxlIHBfe1xtYXRodHR7YmFzZX19KGkpID0gXGZyYWN7MX17cl97XG1hdGh0dHtiYXNlfX19XGYkLgotICogTGV0IFxmJHBfe1xtYXRodHR7b3V0XF9zfX0oaSlcZiQgZGVub3RlIHRoZSByYW5kb20KLSAqIGRpc3RyaWJ1dGlvbiBnZW5lcmF0ZWQgYnkgQGMgdW5pZm9ybV9zbWFsbGludC4gVGhlbiB0aGUgc3VtIG92ZXIgYWxsCi0gKiBpIGluIFxmJHJfe1xtYXRodHR7b3V0fX1cZiQgb2YKLSAqIFxmJFxkaXNwbGF5c3R5bGUKLSAqIFxsZWZ0KFxmcmFje3Bfe1xtYXRodHR7b3V0XF9zfX0oaSl9e3Bfe1xtYXRodHR7b3V0fX0oaSl9IC0gMVxyaWdodCleMlxmJAotICogc2hhbGwgbm90IGV4Y2VlZAotICogXGYkXGRpc3BsYXlzdHlsZSBcZnJhY3tyX3tcbWF0aHR0e291dH19fXtyX3tcbWF0aHR0e2Jhc2V9fV4yfQotICogKHJfe1xtYXRodHR7YmFzZX19IFxtYm94eyBtb2QgfSByX3tcbWF0aHR0e291dH19KQotICogKHJfe1xtYXRodHR7b3V0fX0gLSByX3tcbWF0aHR0e2Jhc2V9fSBcbWJveHsgbW9kIH0gcl97XG1hdGh0dHtvdXR9fSlcZiQuCi0gKgotICogVGhlIHRlbXBsYXRlIHBhcmFtZXRlciBJbnRUeXBlIHNoYWxsIGRlbm90ZSBhbiBpbnRlZ2VyLWxpa2UgdmFsdWUgdHlwZS4KLSAqCi0gKiBAeG1sbm90ZQotICogVGhlIHByb3BlcnR5IGFib3ZlIGlzIHRoZSBzcXVhcmUgc3VtIG9mIHRoZSByZWxhdGl2ZSBkaWZmZXJlbmNlcwotICogaW4gcHJvYmFiaWxpdGllcyBiZXR3ZWVuIHRoZSBkZXNpcmVkIHVuaWZvcm0gZGlzdHJpYnV0aW9uCi0gKiBcZiRwX3tcbWF0aHR0e291dH19KGkpXGYkIGFuZCB0aGUgZ2VuZXJhdGVkIGRpc3RyaWJ1dGlvbgotICogXGYkcF97XG1hdGh0dHtvdXRcX3N9fShpKVxmJC4KLSAqIFRoZSBwcm9wZXJ0eSBjYW4gYmUgZnVsZmlsbGVkIHdpdGggdGhlIGNhbGN1bGF0aW9uCi0gKiBcZiQoXG1ib3h7YmFzZVxfcm5nfSBcbWJveHsgbW9kIH0gcl97XG1hdGh0dHtvdXR9fSlcZiQsIGFzIGZvbGxvd3M6Ci0gKiBMZXQgXGYkciA9IHJfe1xtYXRodHR7YmFzZX19IFxtYm94eyBtb2QgfSByX3tcbWF0aHR0e291dH19XGYkLgotICogVGhlIGJhc2UgZGlzdHJpYnV0aW9uIG9uIFxmJHJfe1xtYXRodHR7YmFzZX19XGYkIGlzIGZvbGRlZCBvbnRvIHRoZQotICogcmFuZ2UgXGYkcl97XG1hdGh0dHtvdXR9fVxmJC4gVGhlIG51bWJlcnMgaSA8IHIgaGF2ZSBhc3NpZ25lZAotICogXGYkXGRpc3BsYXlzdHlsZQotICogXGxlZnRcbGZsb29yXGZyYWN7cl97XG1hdGh0dHtiYXNlfX19e3Jfe1xtYXRodHR7b3V0fX19XHJpZ2h0XHJmbG9vcisxXGYkCi0gKiBudW1iZXJzIG9mIHRoZSBiYXNlIGRpc3RyaWJ1dGlvbiwgdGhlIHJlc3QgaGFzIG9ubHkgXGYkXGRpc3BsYXlzdHlsZQotICogXGxlZnRcbGZsb29yXGZyYWN7cl97XG1hdGh0dHtiYXNlfX19e3Jfe1xtYXRodHR7b3V0fX19XHJpZ2h0XHJmbG9vclxmJC4KLSAqIFRoZXJlZm9yZSwKLSAqIFxmJFxkaXNwbGF5c3R5bGUgcF97XG1hdGh0dHtvdXRcX3N9fShpKSA9Ci0gKiBcbGVmdChcbGVmdFxsZmxvb3JcZnJhY3tyX3tcbWF0aHR0e2Jhc2V9fX0KLSAqIHtyX3tcbWF0aHR0e291dH19fVxyaWdodFxyZmxvb3IrMVxyaWdodCkgLwotICogcl97XG1hdGh0dHtiYXNlfX1cZiQgZm9yIGkgPCByIGFuZCBcZiRcZGlzcGxheXN0eWxlIHBfe1xtYXRodHR7b3V0XF9zfX0oaSkgPQotICogXGxlZnRcbGZsb29yXGZyYWN7cl97XG1hdGh0dHtiYXNlfX19Ci0gKiB7cl97XG1hdGh0dHtvdXR9fX1ccmlnaHRccmZsb29yL3Jfe1xtYXRodHR7YmFzZX19XGYkIG90aGVyd2lzZS4KLSAqIFN1YnN0aXR1dGluZyB0aGlzIGluIHRoZQotICogYWJvdmUgc3VtIGZvcm11bGEgbGVhZHMgdG8gdGhlIGRlc2lyZWQgcmVzdWx0LgotICogQGVuZHhtbG5vdGUKLSAqCi0gKiBOb3RlOiBUaGUgdXBwZXIgYm91bmQgZm9yCi0gKiBcZiQocl97XG1hdGh0dHtiYXNlfX0gXG1ib3h7IG1vZCB9IHJfe1xtYXRodHR7b3V0fX0pCi0gKiAocl97XG1hdGh0dHtvdXR9fSAtIHJfe1xtYXRodHR7YmFzZX19IFxtYm94eyBtb2QgfSByX3tcbWF0aHR0e291dH19KVxmJCBpcwotICogXGYkXGRpc3BsYXlzdHlsZSBcZnJhY3tyX3tcbWF0aHR0e291dH19XjJ9ezR9XGYkLiAgUmVnYXJkaW5nIHRoZSB1cHBlciBib3VuZAotICogZm9yIHRoZSBzcXVhcmUgc3VtIG9mIHRoZSByZWxhdGl2ZSBxdWFudGl6YXRpb24gZXJyb3Igb2YKLSAqIFxmJFxkaXNwbGF5c3R5bGUgXGZyYWN7cl9cbWF0aHR0e291dH1eM317NHJfe1xtYXRodHR7YmFzZX19XjJ9XGYkLCBpdAotICogc2VlbXMgd2lzZSB0byBlaXRoZXIgY2hvb3NlIFxmJHJfe1xtYXRodHR7YmFzZX19XGYkIHNvIHRoYXQKLSAqIFxmJHJfe1xtYXRodHR7YmFzZX19ID4gMTByX3tcbWF0aHR0e291dH19XjJcZiQgb3IgZW5zdXJlIHRoYXQKLSAqIFxmJHJfe1xtYXRodHR7YmFzZX19XGYkIGlzCi0gKiBkaXZpc2libGUgYnkgXGYkcl97XG1hdGh0dHtvdXR9fVxmJC4KLSAqLwotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSA9IGludD4KLWNsYXNzIHVuaWZvcm1fc21hbGxpbnQKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEludFR5cGUgaW5wdXRfdHlwZTsKLSAgICB0eXBlZGVmIEludFR5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICBjbGFzcyBwYXJhbV90eXBlCi0gICAgewotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIHVuaWZvcm1fc21hbGxpbnQgZGlzdHJpYnV0aW9uX3R5cGU7Ci0KLSAgICAgICAgLyoqIGNvbnN0cnVjdHMgdGhlIHBhcmFtZXRlcnMgb2YgYSBAYyB1bmlmb3JtX3NtYWxsaW50IGRpc3RyaWJ1dGlvbi4gKi8KLSAgICAgICAgcGFyYW1fdHlwZShJbnRUeXBlIG1pbl9hcmcgPSAwLCBJbnRUeXBlIG1heF9hcmcgPSA5KQotICAgICAgICAgIDogX21pbihtaW5fYXJnKSwgX21heChtYXhfYXJnKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoX21pbiA8PSBfbWF4KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKiBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLiAqLwotICAgICAgICBJbnRUeXBlIGEoKSBjb25zdCB7IHJldHVybiBfbWluOyB9Ci0gICAgICAgIC8qKiBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLiAqLwotICAgICAgICBJbnRUeXBlIGIoKSBjb25zdCB7IHJldHVybiBfbWF4OyB9Ci0gICAgICAgIAotCi0gICAgICAgIC8qKiBXcml0ZXMgdGhlIHBhcmFtZXRlcnMgdG8gYSBAYyBzdGQ6Om9zdHJlYW0uICovCi0gICAgICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfT1NUUkVBTV9PUEVSQVRPUihvcywgcGFyYW1fdHlwZSwgcGFybSkKLSAgICAgICAgewotICAgICAgICAgICAgb3MgPDwgcGFybS5fbWluIDw8ICIgIiA8PCBwYXJtLl9tYXg7Ci0gICAgICAgICAgICByZXR1cm4gb3M7Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgLyoqIFJlYWRzIHRoZSBwYXJhbWV0ZXJzIGZyb20gYSBAYyBzdGQ6OmlzdHJlYW0uICovCi0gICAgICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSVNUUkVBTV9PUEVSQVRPUihpcywgcGFyYW1fdHlwZSwgcGFybSkKLSAgICAgICAgewotICAgICAgICAgICAgaXMgPj4gcGFybS5fbWluID4+IHN0ZDo6d3MgPj4gcGFybS5fbWF4OwotICAgICAgICAgICAgcmV0dXJuIGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHdvIHNldHMgb2YgcGFyYW1ldGVycyBhcmUgZXF1YWwuICovCi0gICAgICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfRVFVQUxJVFlfT1BFUkFUT1IocGFyYW1fdHlwZSwgbGhzLCByaHMpCi0gICAgICAgIHsgcmV0dXJuIGxocy5fbWluID09IHJocy5fbWluICYmIGxocy5fbWF4ID09IHJocy5fbWF4OyB9Ci0KLSAgICAgICAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHdvIHNldHMgb2YgcGFyYW1ldGVycyBhcmUgZGlmZmVyZW50LiAqLwotICAgICAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0lORVFVQUxJVFlfT1BFUkFUT1IocGFyYW1fdHlwZSkKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEludFR5cGUgX21pbjsKLSAgICAgICAgSW50VHlwZSBfbWF4OwotICAgIH07Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RzIGEgQGMgdW5pZm9ybV9zbWFsbGludC4gQGMgbWluIGFuZCBAYyBtYXggYXJlIHRoZQotICAgICAqIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2YgdGhlIG91dHB1dCByYW5nZSwgcmVzcGVjdGl2ZWx5LgotICAgICAqLwotICAgIGV4cGxpY2l0IHVuaWZvcm1fc21hbGxpbnQoSW50VHlwZSBtaW5fYXJnID0gMCwgSW50VHlwZSBtYXhfYXJnID0gOSkKLSAgICAgIDogX21pbihtaW5fYXJnKSwgX21heChtYXhfYXJnKSB7fQotCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIEBjIHVuaWZvcm1fc21hbGxpbnQgZnJvbSBpdHMgcGFyYW1ldGVycy4KLSAgICAgKi8KLSAgICBleHBsaWNpdCB1bmlmb3JtX3NtYWxsaW50KGNvbnN0IHBhcmFtX3R5cGUmIHBhcm0pCi0gICAgICA6IF9taW4ocGFybS5hKCkpLCBfbWF4KHBhcm0uYigpKSB7fQotCi0gICAgLyoqIFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gKi8KLSAgICByZXN1bHRfdHlwZSBhKCkgY29uc3QgeyByZXR1cm4gX21pbjsgfQotICAgIC8qKiBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBkaXN0cmlidXRpb24uICovCi0gICAgcmVzdWx0X3R5cGUgYigpIGNvbnN0IHsgcmV0dXJuIF9tYXg7IH0KLSAgICAvKiogUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgZGlzdHJpYnV0aW9uLiAqLwotICAgIHJlc3VsdF90eXBlIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdCB7IHJldHVybiBfbWluOyB9Ci0gICAgLyoqIFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gKi8KLSAgICByZXN1bHRfdHlwZSBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgY29uc3QgeyByZXR1cm4gX21heDsgfQotCi0gICAgLyoqIFJldHVybnMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gKi8KLSAgICBwYXJhbV90eXBlIHBhcmFtKCkgY29uc3QgeyByZXR1cm4gcGFyYW1fdHlwZShfbWluLCBfbWF4KTsgfQotICAgIC8qKiBTZXRzIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBkaXN0cmlidXRpb24uICovCi0gICAgdm9pZCBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBwYXJtKQotICAgIHsKLSAgICAgICAgX21pbiA9IHBhcm0uYSgpOwotICAgICAgICBfbWF4ID0gcGFybS5iKCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRWZmZWN0czogU3Vic2VxdWVudCB1c2VzIG9mIHRoZSBkaXN0cmlidXRpb24gZG8gbm90IGRlcGVuZAotICAgICAqIG9uIHZhbHVlcyBwcm9kdWNlZCBieSBhbnkgZW5naW5lIHByaW9yIHRvIGludm9raW5nIHJlc2V0LgotICAgICAqLwotICAgIHZvaWQgcmVzZXQoKSB7IH0KLQotICAgIC8qKiBSZXR1cm5zIGEgdmFsdWUgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGluIHRoZSByYW5nZSBbbWluKCksIG1heCgpXS4gKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmdpbmU+Ci0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShFbmdpbmUmIGVuZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5naW5lOjpyZXN1bHRfdHlwZSBiYXNlX3Jlc3VsdDsKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRlKGVuZywgbmRuYm9vc3Q6OmlzX2ludGVncmFsPGJhc2VfcmVzdWx0PigpKTsKLSAgICB9Ci0KLSAgICAvKiogUmV0dXJucyBhIHZhbHVlIHVuaWZvcm1seSBkaXN0cmlidXRlZCBpbiB0aGUgcmFuZ2UgW3BhcmFtLmEoKSwgcGFyYW0uYigpXS4gKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmdpbmU+Ci0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShFbmdpbmUmIGVuZywgY29uc3QgcGFyYW1fdHlwZSYgcGFybSkgY29uc3QKLSAgICB7IHJldHVybiB1bmlmb3JtX3NtYWxsaW50KHBhcm0pKGVuZyk7IH0KLQotICAgIC8qKiBXcml0ZXMgdGhlIGRpc3RyaWJ1dGlvbiB0byBhIEBjIHN0ZDo6b3N0cmVhbS4gKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX09TVFJFQU1fT1BFUkFUT1Iob3MsIHVuaWZvcm1fc21hbGxpbnQsIHVkKQotICAgIHsKLSAgICAgICAgb3MgPDwgdWQuX21pbiA8PCAiICIgPDwgdWQuX21heDsKLSAgICAgICAgcmV0dXJuIG9zOwotICAgIH0KLSAgICAKLSAgICAvKiogUmVhZHMgdGhlIGRpc3RyaWJ1dGlvbiBmcm9tIGEgQGMgc3RkOjppc3RyZWFtLiAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSVNUUkVBTV9PUEVSQVRPUihpcywgdW5pZm9ybV9zbWFsbGludCwgdWQpCi0gICAgewotICAgICAgICBpcyA+PiB1ZC5fbWluID4+IHN0ZDo6d3MgPj4gdWQuX21heDsKLSAgICAgICAgcmV0dXJuIGlzOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHdvIGRpc3RyaWJ1dGlvbnMgd2lsbCBwcm9kdWNlIGlkZW50aWNhbAotICAgICAqIHNlcXVlbmNlcyBvZiB2YWx1ZXMgZ2l2ZW4gZXF1YWwgZ2VuZXJhdG9ycy4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0VRVUFMSVRZX09QRVJBVE9SKHVuaWZvcm1fc21hbGxpbnQsIGxocywgcmhzKQotICAgIHsgcmV0dXJuIGxocy5fbWluID09IHJocy5fbWluICYmIGxocy5fbWF4ID09IHJocy5fbWF4OyB9Ci0gICAgCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gZGlzdHJpYnV0aW9ucyBtYXkgcHJvZHVjZSBkaWZmZXJlbnQKLSAgICAgKiBzZXF1ZW5jZXMgb2YgdmFsdWVzIGdpdmVuIGVxdWFsIGdlbmVyYXRvcnMuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTkVRVUFMSVRZX09QRVJBVE9SKHVuaWZvcm1fc21hbGxpbnQpCi0KLXByaXZhdGU6Ci0gICAgCi0gICAgLy8gXGNvbmQgc2hvd19wcml2YXRlCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5naW5lPgotICAgIHJlc3VsdF90eXBlIGdlbmVyYXRlKEVuZ2luZSYgZW5nLCBuZG5ib29zdDo6bXBsOjp0cnVlXykgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gKGVuZygpIC0gZW5nLm1pbigpKSAlIChfbWF4IC0gX21pbiArIDEpICsgX21pbiwKLSAgICAgICAgLy8gYnV0IGd1YXJhbnRlZXMgbm8gb3ZlcmZsb3cuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5naW5lOjpyZXN1bHRfdHlwZSBiYXNlX3Jlc3VsdDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bWFrZV91bnNpZ25lZDxiYXNlX3Jlc3VsdD46OnR5cGUgYmFzZV91bnNpZ25lZDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bWFrZV91bnNpZ25lZDxyZXN1bHRfdHlwZT46OnR5cGUgcmFuZ2VfdHlwZTsKLSAgICAgICAgcmFuZ2VfdHlwZSByYW5nZSA9IHJhbmRvbTo6ZGV0YWlsOjpzdWJ0cmFjdDxyZXN1bHRfdHlwZT4oKShfbWF4LCBfbWluKTsKLSAgICAgICAgYmFzZV91bnNpZ25lZCBiYXNlX3JhbmdlID0KLSAgICAgICAgICAgIHJhbmRvbTo6ZGV0YWlsOjpzdWJ0cmFjdDxyZXN1bHRfdHlwZT4oKSgoZW5nLm1heCkoKSwgKGVuZy5taW4pKCkpOwotICAgICAgICBiYXNlX3Vuc2lnbmVkIHZhbCA9Ci0gICAgICAgICAgICByYW5kb206OmRldGFpbDo6c3VidHJhY3Q8YmFzZV9yZXN1bHQ+KCkoZW5nKCksIChlbmcubWluKSgpKTsKLSAgICAgICAgaWYocmFuZ2UgPj0gYmFzZV9yYW5nZSkgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6YWRkPHJhbmdlX3R5cGUsIHJlc3VsdF90eXBlPigpKAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHJhbmdlX3R5cGU+KHZhbCksIF9taW4pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYmFzZV91bnNpZ25lZCBtb2R1bHVzID0gc3RhdGljX2Nhc3Q8YmFzZV91bnNpZ25lZD4ocmFuZ2UpICsgMTsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OmFkZDxyYW5nZV90eXBlLCByZXN1bHRfdHlwZT4oKSgKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxyYW5nZV90eXBlPih2YWwgJSBtb2R1bHVzKSwgX21pbik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5naW5lPgotICAgIHJlc3VsdF90eXBlIGdlbmVyYXRlKEVuZ2luZSYgZW5nLCBuZG5ib29zdDo6bXBsOjpmYWxzZV8pIGNvbnN0Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEVuZ2luZTo6cmVzdWx0X3R5cGUgYmFzZV9yZXN1bHQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8cmVzdWx0X3R5cGU+Ojp0eXBlIHJhbmdlX3R5cGU7Ci0gICAgICAgIHJhbmdlX3R5cGUgcmFuZ2UgPSByYW5kb206OmRldGFpbDo6c3VidHJhY3Q8cmVzdWx0X3R5cGU+KCkoX21heCwgX21pbik7Ci0gICAgICAgIGJhc2VfcmVzdWx0IHZhbCA9IG5kbmJvb3N0Ojp1bmlmb3JtXzAxPGJhc2VfcmVzdWx0PigpKGVuZyk7Ci0gICAgICAgIC8vIHdoYXQgaXMgdGhlIHdvcnN0IHRoYXQgY2FuIHBvc3NpYmx5IGhhcHBlbiBoZXJlPwotICAgICAgICAvLyBiYXNlX3Jlc3VsdCBtYXkgbm90IGJlIGFibGUgdG8gcmVwcmVzZW50IGFsbCB0aGUgdmFsdWVzIGluIFswLCByYW5nZV0KLSAgICAgICAgLy8gZXhhY3RseS4gIElmIHRoaXMgaGFwcGVucywgaXQgd2lsbCBjYXVzZSByb3VuZCBvZmYgZXJyb3IgYW5kIHdlCi0gICAgICAgIC8vIHdvbid0IGJlIGFibGUgdG8gcHJvZHVjZSBhbGwgdGhlIHZhbHVlcyBpbiB0aGUgcmFuZ2UuICBXZSBkb24ndAotICAgICAgICAvLyBjYXJlIGFib3V0IHRoaXMgYmVjYXVzZSB0aGUgdXNlciBoYXMgYWxyZWFkeSB0b2xkIHVzIG5vdCB0byBieQotICAgICAgICAvLyB1c2luZyB1bmlmb3JtX3NtYWxsaW50LiAgSG93ZXZlciwgd2UgZG8gbmVlZCB0byBiZSBjYXJlZnVsCi0gICAgICAgIC8vIHRvIGNsYW1wIHRoZSByZXN1bHQsIG9yIGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIGNhbiBwcm9kdWNlCi0gICAgICAgIC8vIGFuIG91dCBvZiByYW5nZSByZXN1bHQuCi0gICAgICAgIHJhbmdlX3R5cGUgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8cmFuZ2VfdHlwZT4odmFsICogKHN0YXRpY19jYXN0PGJhc2VfcmVzdWx0PihyYW5nZSkgKyAxKSk7Ci0gICAgICAgIGlmKG9mZnNldCA+IHJhbmdlKSByZXR1cm4gX21heDsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6YWRkPHJhbmdlX3R5cGUsIHJlc3VsdF90eXBlPigpKG9mZnNldCAsIF9taW4pOwotICAgIH0KLSAgICAvLyBcZW5kY29uZAotCi0gICAgcmVzdWx0X3R5cGUgX21pbjsKLSAgICByZXN1bHRfdHlwZSBfbWF4OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi0KLXVzaW5nIHJhbmRvbTo6dW5pZm9ybV9zbWFsbGludDsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9VTklGT1JNX1NNQUxMSU5UX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9hbGdvcml0aG0vZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9hbGdvcml0aG0vZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDkxMDM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvYWxnb3JpdGhtL2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5OCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBOZWlsIEdyb3ZlcyAyMDA5LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9BTEdPUklUSE1fRVFVQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0FMR09SSVRITV9FUVVBTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uY2VwdHMuaHBwPgotI2luY2x1ZGUgPGl0ZXJhdG9yPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiBlcXVhbGl0eSBjb21wYXJpc29uIHRoYXQgaXMgb3B0aW1pemVkIGZvciBpdGVyYXRvcgotICAgICAgICAvLyB0cmF2ZXJzYWwgY2F0ZWdvcmllcyBsZXNzIHRoYW4gUmFuZG9tQWNjZXNzVHJhdmVyc2FsLgotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyLAotICAgICAgICAgICAgICAgICAgY2xhc3MgSXRlcmF0b3JDYXRlZ29yeVRhZzEsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBJdGVyYXRvckNhdGVnb3J5VGFnMiA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsX2ltcGwoIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBmaXJzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBsYXN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGZpcnN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGxhc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNhdGVnb3J5VGFnMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3JDYXRlZ29yeVRhZzIgKQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbGVmdCByYW5nZSB0aGVuIHRoaXMgaXMKLSAgICAgICAgICAgICAgICAvLyB0aGUgZW5kIG9mIHRoZSBsb29wLiBUaGV5IGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB3ZSBoYXZlCi0gICAgICAgICAgICAgICAgLy8gc2ltdWx0YW5lb3VzbHkgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSByaWdodCByYW5nZS4KLSAgICAgICAgICAgICAgICBpZiAoZmlyc3QxID09IGxhc3QxKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3QyID09IGxhc3QyOwotCi0gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHJpZ2h0IHJhbmdlIGF0IHRoaXMgbGluZQotICAgICAgICAgICAgICAgIC8vIGl0IGluZGljYXRlcyB0aGF0IHRoZSByaWdodCByYW5nZSBpcyBzaG9ydGVyIHRoYW4gdGhlIGxlZnQKLSAgICAgICAgICAgICAgICAvLyBhbmQgaGVuY2UgdGhlIHJlc3VsdCBpcyBmYWxzZS4KLSAgICAgICAgICAgICAgICBpZiAoZmlyc3QyID09IGxhc3QyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAvLyBjb250aW51ZSBsb29waW5nIGlmIGFuZCBvbmx5IGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWFsCi0gICAgICAgICAgICAgICAgaWYgKCpmaXJzdDEgIT0gKmZpcnN0MikKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICArK2ZpcnN0MTsKLSAgICAgICAgICAgICAgICArK2ZpcnN0MjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gUmVhY2hpbmcgdGhpcyBsaW5lIGluIHRoZSBhbGdvcml0aG0gaW5kaWNhdGVzIHRoYXQgYSB2YWx1ZQotICAgICAgICAgICAgLy8gaW5lcXVhbGl0eSBoYXMgYmVlbiBkZXRlY3RlZC4KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBJdGVyYXRvckNhdGVnb3J5VGFnMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcyLAotICAgICAgICAgICAgICAgICAgY2xhc3MgQmluYXJ5UHJlZGljYXRlID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWxfaW1wbCggU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGZpcnN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgZmlyc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgbGFzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmFyeVByZWRpY2F0ZSAgICAgICAgICAgICAgICAgICAgICBwcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNhdGVnb3J5VGFnMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3JDYXRlZ29yeVRhZzIgKQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbGVmdCByYW5nZSB0aGVuIHRoaXMgaXMKLSAgICAgICAgICAgICAgICAvLyB0aGUgZW5kIG9mIHRoZSBsb29wLiBUaGV5IGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB3ZSBoYXZlCi0gICAgICAgICAgICAgICAgLy8gc2ltdWx0YW5lb3VzbHkgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSByaWdodCByYW5nZS4KLSAgICAgICAgICAgICAgICBpZiAoZmlyc3QxID09IGxhc3QxKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3QyID09IGxhc3QyOwotCi0gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHJpZ2h0IHJhbmdlIGF0IHRoaXMgbGluZQotICAgICAgICAgICAgICAgIC8vIGl0IGluZGljYXRlcyB0aGF0IHRoZSByaWdodCByYW5nZSBpcyBzaG9ydGVyIHRoYW4gdGhlIGxlZnQKLSAgICAgICAgICAgICAgICAvLyBhbmQgaGVuY2UgdGhlIHJlc3VsdCBpcyBmYWxzZS4KLSAgICAgICAgICAgICAgICBpZiAoZmlyc3QyID09IGxhc3QyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAvLyBjb250aW51ZSBsb29waW5nIGlmIGFuZCBvbmx5IGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWFsCi0gICAgICAgICAgICAgICAgaWYgKCFwcmVkKCpmaXJzdDEsICpmaXJzdDIpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICsrZmlyc3QxOwotICAgICAgICAgICAgICAgICsrZmlyc3QyOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBSZWFjaGluZyB0aGlzIGxpbmUgaW4gdGhlIGFsZ29yaXRobSBpbmRpY2F0ZXMgdGhhdCBhIHZhbHVlCi0gICAgICAgICAgICAvLyBpbmVxdWFsaXR5IGhhcyBiZWVuIGRldGVjdGVkLgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgZXF1YWxpdHkgY29tcGFyaXNvbiB0aGF0IGlzIG9wdGltaXplZCBmb3IKLSAgICAgICAgLy8gcmFuZG9tIGFjY2VzcyBpdGVyYXRvcnMuCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWxfaW1wbCggUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgZmlyc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBsYXN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgZmlyc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBsYXN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKGxhc3QxIC0gZmlyc3QxKSA9PSAobGFzdDIgLSBmaXJzdDIpKQotICAgICAgICAgICAgICAgICYmIHN0ZDo6ZXF1YWwoZmlyc3QxLCBsYXN0MSwgZmlyc3QyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyLAotICAgICAgICAgICAgICAgICAgY2xhc3MgQmluYXJ5UHJlZGljYXRlID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWxfaW1wbCggUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgZmlyc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBsYXN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgZmlyc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBsYXN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmluYXJ5UHJlZGljYXRlICAgICAgICAgICAgICAgICAgICAgICAgcHJlZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKGxhc3QxIC0gZmlyc3QxKSA9PSAobGFzdDIgLSBmaXJzdDIpKQotICAgICAgICAgICAgICAgICYmIHN0ZDo6ZXF1YWwoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBwcmVkKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbCggU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGZpcnN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBsYXN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBmaXJzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgbGFzdDIgKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgPjo6aXRlcmF0b3JfY2F0ZWdvcnkgdGFnMTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc3RkOjppdGVyYXRvcl90cmFpdHM8IFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiA+OjppdGVyYXRvcl9jYXRlZ29yeSB0YWcyOwotCi0gICAgICAgICAgICByZXR1cm4gZXF1YWxfaW1wbChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGxhc3QyLCB0YWcxLCB0YWcyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBCaW5hcnlQcmVkaWNhdGUgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbCggU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGZpcnN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBsYXN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBmaXJzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgbGFzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5hcnlQcmVkaWNhdGUgICAgICAgICAgICAgICAgICAgICAgcHJlZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc3RkOjppdGVyYXRvcl90cmFpdHM8IFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSA+OjppdGVyYXRvcl9jYXRlZ29yeSB0YWcxOwotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czwgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyID46Oml0ZXJhdG9yX2NhdGVnb3J5IHRhZzI7Ci0KLSAgICAgICAgICAgIHJldHVybiBlcXVhbF9pbXBsKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgbGFzdDIsIHByZWQsIHRhZzEsIHRhZzIpOwotICAgICAgICB9Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLQotICAgIG5hbWVzcGFjZSByYW5nZQotICAgIHsKLQotICAgICAgICAvLy8gXGJyaWVmIHRlbXBsYXRlIGZ1bmN0aW9uIGVxdWFsCi0gICAgICAgIC8vLwotICAgICAgICAvLy8gcmFuZ2UtYmFzZWQgdmVyc2lvbiBvZiB0aGUgZXF1YWwgc3RkIGFsZ29yaXRobQotICAgICAgICAvLy8KLSAgICAgICAgLy8vIFxwcmUgU2luZ2xlUGFzc1JhbmdlMSBpcyBhIG1vZGVsIG9mIHRoZSBTaW5nbGVQYXNzUmFuZ2VDb25jZXB0Ci0gICAgICAgIC8vLyBccHJlIFNpbmdsZVBhc3NSYW5nZTIgaXMgYSBtb2RlbCBvZiB0aGUgU2luZ2xlUGFzc1JhbmdlQ29uY2VwdAotICAgICAgICAvLy8gXHByZSBCaW5hcnlQcmVkaWNhdGUgaXMgYSBtb2RlbCBvZiB0aGUgQmluYXJ5UHJlZGljYXRlQ29uY2VwdAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgU2luZ2xlUGFzc1JhbmdlMSwgY2xhc3MgU2luZ2xlUGFzc1JhbmdlMiA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsKCBjb25zdCBTaW5nbGVQYXNzUmFuZ2UxJiBybmcxLCBjb25zdCBTaW5nbGVQYXNzUmFuZ2UyJiBybmcyICkKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKCBTaW5nbGVQYXNzUmFuZ2VDb25jZXB0PGNvbnN0IFNpbmdsZVBhc3NSYW5nZTE+ICkpOwotICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKCBTaW5nbGVQYXNzUmFuZ2VDb25jZXB0PGNvbnN0IFNpbmdsZVBhc3NSYW5nZTI+ICkpOwotCi0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjplcXVhbCgKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpiZWdpbihybmcxKSwgOjpuZG5ib29zdDo6ZW5kKHJuZzEpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmJlZ2luKHJuZzIpLCA6Om5kbmJvb3N0OjplbmQocm5nMikgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLyBcb3ZlcmxvYWQKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFNpbmdsZVBhc3NSYW5nZTEsIGNsYXNzIFNpbmdsZVBhc3NSYW5nZTIsIGNsYXNzIEJpbmFyeVByZWRpY2F0ZSA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsKCBjb25zdCBTaW5nbGVQYXNzUmFuZ2UxJiBybmcxLCBjb25zdCBTaW5nbGVQYXNzUmFuZ2UyJiBybmcyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQmluYXJ5UHJlZGljYXRlIHByZWQgKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoIFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQ8Y29uc3QgU2luZ2xlUGFzc1JhbmdlMT4gKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoIFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQ8Y29uc3QgU2luZ2xlUGFzc1JhbmdlMj4gKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmVxdWFsKAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmJlZ2luKHJuZzEpLCA6Om5kbmJvb3N0OjplbmQocm5nMSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YmVnaW4ocm5nMiksIDo6bmRuYm9vc3Q6OmVuZChybmcyKSwKLSAgICAgICAgICAgICAgICBwcmVkKTsKLSAgICAgICAgfQotCi0gICAgfSAvLyBuYW1lc3BhY2UgcmFuZ2UKLSAgICB1c2luZyA6Om5kbmJvb3N0OjpyYW5nZTo6ZXF1YWw7Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9hc19saXRlcmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvYXNfbGl0ZXJhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5N2VkMmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9hc19saXRlcmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDYuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfQVNfTElURVJBTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQVNfTElURVJBTF9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9hc19saXRlcmFsLmhwcD4KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3N0cl90eXBlcy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2lmbmRlZiBORE5CT09TVF9OT19DV0NIQVIKLSNpbmNsdWRlIDxjd2NoYXI+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGxlbmd0aCggY29uc3QgY2hhciogcyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdHJsZW4oIHMgKTsKLSAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NXQ0hBUgotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgbGVuZ3RoKCBjb25zdCB3Y2hhcl90KiBzICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHdjc2xlbiggcyApOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICAvLwotICAgICAgICAvLyBSZW1hcms6IHRoZSBjb21waWxlciBjYW5ub3QgY2hvb3NlIGJldHdlZW4gVCogYW5kIFRbc3pdCi0gICAgICAgIC8vIG92ZXJsb2Fkcywgc28gd2UgbXVzdCBwdXQgdGhlIFQqIGludGVybmFsIHRvIHRoZQotICAgICAgICAvLyB1bmNvbnN0cmFpbmVkIHZlcnNpb24uCi0gICAgICAgIC8vCi0KLSAgICAgICAgaW5saW5lIGJvb2wgaXNfY2hhcl9wdHIoIGNoYXIqICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUgYm9vbCBpc19jaGFyX3B0ciggY29uc3QgY2hhciogKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NXQ0hBUgotICAgICAgICBpbmxpbmUgYm9vbCBpc19jaGFyX3B0ciggd2NoYXJfdCogKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlubGluZSBib29sIGlzX2NoYXJfcHRyKCBjb25zdCB3Y2hhcl90KiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgICAgIGlubGluZSBsb25nIGlzX2NoYXJfcHRyKCBjb25zdCBUJiAvKiByICovICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDBMOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8VCo+Ci0gICAgICAgIG1ha2VfcmFuZ2UoIFQqIGNvbnN0IHIsIGJvb2wgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2U8VCo+KCByLCByICsgbGVuZ3RoKHIpICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFQ+Ojp0eXBlPgotICAgICAgICBtYWtlX3JhbmdlKCBUJiByLCBsb25nICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjptYWtlX2l0ZXJhdG9yX3JhbmdlKCByICk7Ci0gICAgICAgIH0KLQotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlPgotICAgIGFzX2xpdGVyYWwoIFJhbmdlJiByICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6Om1ha2VfcmFuZ2UoIHIsIHJhbmdlX2RldGFpbDo6aXNfY2hhcl9wdHIocikgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IFJhbmdlPjo6dHlwZT4KLSAgICBhc19saXRlcmFsKCBjb25zdCBSYW5nZSYgciApCi0gICAgewotICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjptYWtlX3JhbmdlKCByLCByYW5nZV9kZXRhaWw6OmlzX2NoYXJfcHRyKHIpICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIENoYXIsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8Q2hhcio+IGFzX2xpdGVyYWwoIENoYXIgKCZhcnIpW3N6XSApCi0gICAgewotICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjptYWtlX3JhbmdlKCBhcnIsIHJhbmdlX2RldGFpbDo6aXNfY2hhcl9wdHIoYXJyKSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBDaGFyLCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPGNvbnN0IENoYXIqPiBhc19saXRlcmFsKCBjb25zdCBDaGFyICgmYXJyKVtzel0gKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6bWFrZV9yYW5nZSggYXJyLCByYW5nZV9kZXRhaWw6OmlzX2NoYXJfcHRyKGFycikgKTsKLSAgICB9Ci19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9iZWdpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwMDFmMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9iZWdpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfQkVHSU5fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0JFR0lOX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9iZWdpbi5ocHA+Ci0jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAvKiovCi1uYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi17Ci0jZW5kaWYKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBwcmltYXJ5IHRlbXBsYXRlCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlCi0gICAgcmFuZ2VfYmVnaW4oIEMmIGMgKQotICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gSWYgeW91IGdldCBhIGNvbXBpbGUtZXJyb3IgaGVyZSwgaXQgaXMgbW9zdCBsaWtlbHkgYmVjYXVzZQotICAgICAgICAvLyB5b3UgaGF2ZSBub3QgaW1wbGVtZW50ZWQgcmFuZ2VfYmVnaW4oKSBwcm9wZXJseSBpbgotICAgICAgICAvLyB0aGUgbmFtZXNwYWNlIG9mIEMKLSAgICAgICAgLy8KLSAgICAgICAgcmV0dXJuIGMuYmVnaW4oKTsKLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gcGFpcgotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgaW5saW5lIEl0ZXJhdG9yIHJhbmdlX2JlZ2luKCBjb25zdCBzdGQ6OnBhaXI8SXRlcmF0b3IsSXRlcmF0b3I+JiBwICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwLmZpcnN0OwotICAgIH0KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgaW5saW5lIEl0ZXJhdG9yIHJhbmdlX2JlZ2luKCBzdGQ6OnBhaXI8SXRlcmF0b3IsSXRlcmF0b3I+JiBwICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwLmZpcnN0OwotICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBhcnJheQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIC8vCi0gICAgLy8gTWF5IHRoaXMgYmUgZGlzY2FyZGVkPyBPciBpcyBpdCBuZWVkZWQgZm9yIGJhZCBjb21waWxlcnM/Ci0gICAgLy8KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgIGlubGluZSBjb25zdCBUKiByYW5nZV9iZWdpbiggY29uc3QgVCAoJmEpW3N6XSApCi0gICAgewotICAgICAgICByZXR1cm4gYTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgIGlubGluZSBUKiByYW5nZV9iZWdpbiggVCAoJmEpW3N6XSApCi0gICAgewotICAgICAgICByZXR1cm4gYTsKLSAgICB9Ci0KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAvKiovCi19IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotI2VuZGlmCi0KLS8vIFVzZSBhIEFETCBuYW1lc3BhY2UgYmFycmllciB0byBhdm9pZCBhbWJpZ3VpdHkgd2l0aCBvdGhlciB1bnF1YWxpZmllZAotLy8gY2FsbHMuIFRoaXMgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCB3aXRoIEMrKzB4IGVuY291cmFnaW5nCi0vLyB1bnF1YWxpZmllZCBjYWxscyB0byBiZWdpbi9lbmQuCi1uYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLXsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8VD46OnR5cGUgYmVnaW4oIFQmIHIgKQotewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAvKiovCi0gICAgdXNpbmcgbmFtZXNwYWNlIHJhbmdlX2RldGFpbDsKLSNlbmRpZgotICAgIHJldHVybiByYW5nZV9iZWdpbiggciApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxjb25zdCBUPjo6dHlwZSBiZWdpbiggY29uc3QgVCYgciApCi17Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLSAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsOwotI2VuZGlmCi0gICAgcmV0dXJuIHJhbmdlX2JlZ2luKCByICk7Ci19Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxjb25zdCBUPjo6dHlwZQotICAgICAgICBjb25zdF9iZWdpbiggY29uc3QgVCYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfYWRsX2JhcnJpZXI6OmJlZ2luKCByICk7Ci0gICAgICAgIH0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotCi0gICAgdXNpbmcgbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyOwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uY2VwdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25jZXB0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OTBjMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25jZXB0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjYgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeSBjb25jZXB0IGNoZWNrcwotLy8KLS8vICBDb3B5cmlnaHQgTmVpbCBHcm92ZXMgMjAwOS4gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbgotLy8gIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBDb3B5cmlnaHQgRGFuaWVsIFdhbGtlciAyMDA2LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uCi0vLyAgYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9DT05DRVBUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0X2NoZWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jb25jZXB0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3ZhbHVlX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9taXNjX2NvbmNlcHQuaHBwPgotCi0vKiEKLSAqIFxmaWxlCi0gKiBcYnJpZWYgQ29uY2VwdCBjaGVja3MgZm9yIHRoZSBCb29zdCBSYW5nZSBsaWJyYXJ5LgotICoKLSAqIFRoZSBzdHJ1Y3R1cmVzIGluIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZQotICogQm9vc3QgQ29uY2VwdCBDaGVjayBsaWJyYXJ5IHRvIGluc3VyZSB0aGF0IHRoZSB0eXBlIG9mIGEgZnVuY3Rpb24KLSAqIHBhcmFtZXRlciBpcyBjb21wYXRpYmxlIHdpdGggYSByYW5nZSBjb25jZXB0LiBJZiBub3QsIGEgbWVhbmluZ2Z1bAotICogY29tcGlsZSB0aW1lIGVycm9yIGlzIGdlbmVyYXRlZC4gQ2hlY2tzIGFyZSBwcm92aWRlZCBmb3IgdGhlIHJhbmdlCi0gKiBjb25jZXB0cyByZWxhdGVkIHRvIGl0ZXJhdG9yIHRyYXZlcnNhbCBjYXRlZ29yaWVzLiBGb3IgZXhhbXBsZSwgdGhlCi0gKiBmb2xsb3dpbmcgbGluZSBjaGVja3MgdGhhdCB0aGUgdHlwZSBUIG1vZGVscyB0aGUgRm9yd2FyZFJhbmdlCi0gKiBjb25jZXB0LgotICoKLSAqIFxjb2RlCi0gKiBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoRm9yd2FyZFJhbmdlQ29uY2VwdDxUPikpOwotICogXGVuZGNvZGUKLSAqCi0gKiBBIGRpZmZlcmVudCBjb25jZXB0IGNoZWNrIGlzIHJlcXVpcmVkIHRvIGVuc3VyZSB3cml0ZWFibGUgdmFsdWUKLSAqIGFjY2Vzcy4gRm9yIGV4YW1wbGUgdG8gY2hlY2sgZm9yIGEgRm9yd2FyZFJhbmdlIHRoYXQgY2FuIGJlIHdyaXR0ZW4KLSAqIHRvLCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgcmVxdWlyZWQuCi0gKgotICogXGNvZGUKLSAqIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChXcml0ZWFibGVGb3J3YXJkUmFuZ2VDb25jZXB0PFQ+KSk7Ci0gKiBcZW5kY29kZQotICoKLSAqIFxzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS9kb2MvcmFuZ2UuaHRtbCBmb3IgZGV0YWlscwotICogYWJvdXQgcmFuZ2UgY29uY2VwdHMuCi0gKiBcc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaXRlcmF0b3IvZG9jL2l0ZXJhdG9yX2NvbmNlcHRzLmh0bWwKLSAqIGZvciBkZXRhaWxzIGFib3V0IGl0ZXJhdG9yIGNvbmNlcHRzLgotICogXHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbmNlcHRfY2hlY2svY29uY2VwdF9jaGVjay5odG0gZm9yCi0gKiBkZXRhaWxzIGFib3V0IGNvbmNlcHQgY2hlY2tzLgotICovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLQotLy8gTGlzdCBicm9rZW4gY29tcGlsZXIgdmVyc2lvbnMgaGVyZToKLSAgICAjaWZkZWYgX19HTlVDX18KLSAgICAgICAgLy8gR05VQyA0LjIgaGFzIHN0cmFuZ2UgaXNzdWVzIGNvcnJlY3RseSBkZXRlY3RpbmcgY29tcGxpYW5jZSB3aXRoIHRoZSBDb25jZXB0cwotICAgICAgICAvLyBoZW5jZSB0aGUgbGVhc3QgZGlzcnVwdGl2ZSBhcHByb2FjaCBpcyB0byB0dXJuLW9mZiB0aGUgY29uY2VwdCBjaGVja2luZyBmb3IKLSAgICAgICAgLy8gdGhpcyB2ZXJzaW9uIG9mIHRoZSBjb21waWxlci4KLSAgICAgICAgI2lmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPT0gMgotICAgICAgICAgICAgI2RlZmluZSBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQgMAotICAgICAgICAjZW5kaWYKLSAgICAjZW5kaWYKLQotICAgICNpZmRlZiBfX0JPUkxBTkRDX18KLSAgICAgICAgI2RlZmluZSBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQgMAotICAgICNlbmRpZgotCi0gICAgI2lmZGVmIF9fUEFUSENDX18KLSAgICAgICAgI2RlZmluZSBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQgMAotICAgICNlbmRpZgotCi0vLyBEZWZhdWx0IHRvIHVzaW5nIHRoZSBjb25jZXB0IGFzc2VydHMgdW5sZXNzIHdlIGhhdmUgZGVmaW5lZCBpdCBvZmYKLS8vIGR1cmluZyB0aGUgc2VhcmNoIGZvciBibGFjayBsaXN0ZWQgY29tcGlsZXJzLgotICAgICNpZm5kZWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgICNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUIDEKLSAgICAjZW5kaWYKLQotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCB4ICkgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoIHggKQotI2Vsc2UKLSAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCB4ICkKLSNlbmRpZgotCi0gICAgICAgIC8vIFJhdGlvbmFsZSBmb3IgdGhlIGluY2x1c2lvbiBvZiByZWRlZmluZWQgaXRlcmF0b3IgY29uY2VwdAotICAgICAgICAvLyBjbGFzc2VzOgotICAgICAgICAvLwotICAgICAgICAvLyBUaGUgUmFuZ2UgYWxnb3JpdGhtcyBvZnRlbiBkbyBub3QgcmVxdWlyZSB0aGF0IHRoZSBpdGVyYXRvcnMgYXJlCi0gICAgICAgIC8vIEFzc2lnbmFibGUgb3IgZGVmYXVsdCBjb25zdHJ1Y3RhYmxlLCBidXQgdGhlIGNvcnJlY3Qgc3RhbmRhcmQKLSAgICAgICAgLy8gY29uZm9ybWFudCBpdGVyYXRvcnMgZG8gcmVxdWlyZSB0aGUgaXRlcmF0b3JzIHRvIGJlIGEgbW9kZWwgb2YgdGhlCi0gICAgICAgIC8vIEFzc2lnbmFibGUgY29uY2VwdC4KLSAgICAgICAgLy8gSXRlcmF0b3JzIHRoYXQgY29udGFpbnMgYSBmdW5jdG9yIHRoYXQgaXMgbm90IGFzc2lnbmFibGUgdGhlcmVmb3JlCi0gICAgICAgIC8vIGFyZSBub3QgY29ycmVjdCBtb2RlbHMgb2YgdGhlIHN0YW5kYXJkIGl0ZXJhdG9yIGNvbmNlcHRzLAotICAgICAgICAvLyBkZXNwaXRlIGJlaW5nIGFkZXF1YXRlIGZvciBtb3N0IGFsZ29yaXRobXMuIEFuIGV4YW1wbGUgb2YgdGhpcwotICAgICAgICAvLyB1c2UgY2FzZSBpcyB0aGUgY29tYmluYXRpb24gb2YgdGhlIG5kbmJvb3N0OjphZGFwdG9yczo6ZmlsdGVyZWQKLSAgICAgICAgLy8gY2xhc3Mgd2l0aCBhIG5kbmJvb3N0OjpsYW1iZGE6OmJpbmQgZ2VuZXJhdGVkIGZ1bmN0b3IuCi0gICAgICAgIC8vIFVsdGltYXRlbHkgbW9kZWxpbmcgdGhlIHJhbmdlIGNvbmNlcHRzIHVzaW5nIGNvbXBvc2l0aW9uCi0gICAgICAgIC8vIHdpdGggdGhlIEJvb3N0Lkl0ZXJhdG9yIGNvbmNlcHRzIHdvdWxkIHJlbmRlciB0aGUgbGlicmFyeQotICAgICAgICAvLyBpbmNvbXBhdGlibGUgd2l0aCBtYW55IGNvbW1vbiBCb29zdC5MYW1iZGEgZXhwcmVzc2lvbnMuCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPgotICAgICAgICBzdHJ1Y3QgSW5jcmVtZW50YWJsZUl0ZXJhdG9yQ29uY2VwdCA6IENvcHlDb25zdHJ1Y3RpYmxlPEl0ZXJhdG9yPgotICAgICAgICB7Ci0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaXRlcmF0b3JfdHJhdmVyc2FsPEl0ZXJhdG9yPjo6dHlwZSB0cmF2ZXJzYWxfY2F0ZWdvcnk7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICBDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsX2NhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWcKLSAgICAgICAgICAgICAgICA+KSk7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoSW5jcmVtZW50YWJsZUl0ZXJhdG9yQ29uY2VwdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICArK2k7Ci0gICAgICAgICAgICAgICAgKHZvaWQpaSsrOwotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgSXRlcmF0b3IgaTsKLSNlbmRpZgotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPgotICAgICAgICBzdHJ1Y3QgU2luZ2xlUGFzc0l0ZXJhdG9yQ29uY2VwdAotICAgICAgICAgICAgOiBJbmNyZW1lbnRhYmxlSXRlcmF0b3JDb25jZXB0PEl0ZXJhdG9yPgotICAgICAgICAgICAgLCBFcXVhbGl0eUNvbXBhcmFibGU8SXRlcmF0b3I+Ci0gICAgICAgIHsKLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICBDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0Ojp0cmF2ZXJzYWxfY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgICAgIHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcKLSAgICAgICAgICAgICAgICA+KSk7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoU2luZ2xlUGFzc0l0ZXJhdG9yQ29uY2VwdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJdGVyYXRvciBpMigrK2kpOwotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoaTIpOwotCi0gICAgICAgICAgICAgICAgLy8gZGVsaWJlcmF0ZWx5IHdlIGFyZSBsb29zZSB3aXRoIHRoZSBwb3N0Zml4IHZlcnNpb24gZm9yIHRoZSBzaW5nbGUgcGFzcwotICAgICAgICAgICAgICAgIC8vIGl0ZXJhdG9yIGR1ZSB0byB0aGUgY29tbW9ubHkgcG9vciBhZGhlcmVuY2UgdG8gdGhlIHNwZWNpZmljYXRpb24gbWVhbnMgdGhhdAotICAgICAgICAgICAgICAgIC8vIG1hbnkgYWxnb3JpdGhtcyB3b3VsZCBiZSB1bnVzYWJsZSwgd2hlcmVhcyBhY3R1YWxseSB3aXRob3V0IHRoZSBjaGVjayB0aGV5Ci0gICAgICAgICAgICAgICAgLy8gd29yawotICAgICAgICAgICAgICAgICh2b2lkKShpKyspOwotCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpyZWZlcmVuY2UgcjEoKmkpOwotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocjEpOwotCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpyZWZlcmVuY2UgcjIoKigrK2kpKTsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHIyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIEl0ZXJhdG9yIGk7Ci0jZW5kaWYKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4KLSAgICAgICAgc3RydWN0IEZvcndhcmRJdGVyYXRvckNvbmNlcHQKLSAgICAgICAgICAgIDogU2luZ2xlUGFzc0l0ZXJhdG9yQ29uY2VwdDxJdGVyYXRvcj4KLSAgICAgICAgICAgICwgRGVmYXVsdENvbnN0cnVjdGlibGU8SXRlcmF0b3I+Ci0gICAgICAgIHsKLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgICAgICBORE5CT09TVF9NUExfQVNTRVJUKChpc19pbnRlZ3JhbDxkaWZmZXJlbmNlX3R5cGU+KSk7Ci0gICAgICAgICAgICBORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OKHN0ZDo6bnVtZXJpY19saW1pdHM8ZGlmZmVyZW5jZV90eXBlPjo6aXNfc2lnbmVkLCA9PSwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICBDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBGb3J3YXJkSXRlcmF0b3JDb25jZXB0Ojp0cmF2ZXJzYWxfY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgICAgIGZvcndhcmRfdHJhdmVyc2FsX3RhZwotICAgICAgICAgICAgICAgID4pKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShGb3J3YXJkSXRlcmF0b3JDb25jZXB0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFNlZSB0aGUgYWJvdmUgbm90ZSBpbiB0aGUgU2luZ2xlUGFzc0l0ZXJhdG9yQ29uY2VwdCBhYm91dCB0aGUgaGFuZGxpbmcgb2YgdGhlCi0gICAgICAgICAgICAgICAgLy8gcG9zdGZpeCBpbmNyZW1lbnQuIFNpbmNlIHdpdGggZm9yd2FyZCBhbmQgYmV0dGVyIGl0ZXJhdG9ycyB0aGVyZSBpcyBubyBuZWVkCi0gICAgICAgICAgICAgICAgLy8gZm9yIGEgcHJveHksIHdlIGNhbiBzZW5zaWJseSByZXF1aXJlIHRoYXQgdGhlIGRlcmVmZXJlbmNlIHJlc3VsdAotICAgICAgICAgICAgICAgIC8vIGlzIGNvbnZlcnRpYmxlIHRvIHJlZmVyZW5jZS4KLSAgICAgICAgICAgICAgICBJdGVyYXRvciBpMihpKyspOwotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoaTIpOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cmVmZXJlbmNlIHIoKihpKyspKTsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHIpOwotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgSXRlcmF0b3IgaTsKLSNlbmRpZgotICAgICAgICAgfTsKLQotICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgICAgICBzdHJ1Y3QgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yQ29uY2VwdAotICAgICAgICAgICAgIDogRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdDxJdGVyYXRvcj4KLSAgICAgICAgIHsKLSAjaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgICBDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yQ29uY2VwdDo6dHJhdmVyc2FsX2NhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICAgYmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgICAgICAgID4pKTsKLQotICAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yQ29uY2VwdCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC0taTsKLSAgICAgICAgICAgICAgICAgKHZvaWQpaS0tOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgSXRlcmF0b3IgaTsKLSAjZW5kaWYKLSAgICAgICAgIH07Ci0KLSAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPgotICAgICAgICAgc3RydWN0IFJhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdAotICAgICAgICAgICAgIDogQmlkaXJlY3Rpb25hbEl0ZXJhdG9yQ29uY2VwdDxJdGVyYXRvcj4KLSAgICAgICAgIHsKLSAjaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgICBDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgUmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0Ojp0cmF2ZXJzYWxfY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWcKLSAgICAgICAgICAgICAgICAgPikpOwotCi0gICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShSYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBpICs9IG47Ci0gICAgICAgICAgICAgICAgIGkgPSBpICsgbjsKLSAgICAgICAgICAgICAgICAgaSA9IG4gKyBpOwotICAgICAgICAgICAgICAgICBpIC09IG47Ci0gICAgICAgICAgICAgICAgIGkgPSBpIC0gbjsKLSAgICAgICAgICAgICAgICAgbiA9IGkgLSBqOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBSYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ6OmRpZmZlcmVuY2VfdHlwZSBuOwotICAgICAgICAgICAgIEl0ZXJhdG9yIGk7Ci0gICAgICAgICAgICAgSXRlcmF0b3IgajsKLSAjZW5kaWYKLSAgICAgICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLQotICAgIC8vISBDaGVjayBpZiBhIHR5cGUgVCBtb2RlbHMgdGhlIFNpbmdsZVBhc3NSYW5nZSByYW5nZSBjb25jZXB0LgotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RydWN0IFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQKLSAgICB7Ci0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8VCBjb25zdD46OnR5cGUgIGNvbnN0X2l0ZXJhdG9yOwotICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFQ+Ojp0eXBlICAgICAgICBpdGVyYXRvcjsKLQotICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKHJhbmdlX2RldGFpbDo6U2luZ2xlUGFzc0l0ZXJhdG9yQ29uY2VwdDxpdGVyYXRvcj4pKTsKLSAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKChyYW5nZV9kZXRhaWw6OlNpbmdsZVBhc3NJdGVyYXRvckNvbmNlcHQ8Y29uc3RfaXRlcmF0b3I+KSk7Ci0KLSAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoU2luZ2xlUGFzc1JhbmdlQ29uY2VwdCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaGFzIGJlZW4gbW9kaWZpZWQgZnJvbSBhc3NpZ25pbmcgdG8gdGhpcy0+aQotICAgICAgICAgICAgLy8gKHdoZXJlIGkgd2FzIGEgbWVtYmVyIHZhcmlhYmxlKSB0byBpbXByb3ZlCi0gICAgICAgICAgICAvLyBjb21wYXRpYmlsaXR5IHdpdGggQm9vc3QuTGFtYmRhCi0gICAgICAgICAgICBpdGVyYXRvciBpMSA9IG5kbmJvb3N0OjpiZWdpbigqbV9yYW5nZSk7Ci0gICAgICAgICAgICBpdGVyYXRvciBpMiA9IG5kbmJvb3N0OjplbmQoKm1fcmFuZ2UpOwotCi0gICAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoaTEpOwotICAgICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGkyKTsKLQotICAgICAgICAgICAgY29uc3RfY29uc3RyYWludHMoKm1fcmFuZ2UpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IFQmIGNvbnN0X3JhbmdlKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdF9pdGVyYXRvciBjaTEgPSBuZG5ib29zdDo6YmVnaW4oY29uc3RfcmFuZ2UpOwotICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgY2kyID0gbmRuYm9vc3Q6OmVuZChjb25zdF9yYW5nZSk7Ci0KLSAgICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjaTEpOwotICAgICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGNpMik7Ci0gICAgICAgIH0KLQotICAgICAgIC8vIFJhdGlvbmFsZToKLSAgICAgICAvLyBUaGUgdHlwZSBvZiBtX3JhbmdlIGlzIFQqIHJhdGhlciB0aGFuIFQgYmVjYXVzZSBpdCBhbGxvd3MKLSAgICAgICAvLyBUIHRvIGJlIGFuIGFic3RyYWN0IGNsYXNzLiBUaGUgb3RoZXIgb2J2aW91cyBhbHRlcm5hdGl2ZSBvZgotICAgICAgIC8vIFQmIHByb2R1Y2VzIGEgd2FybmluZyBvbiBzb21lIGNvbXBpbGVycy4KLSAgICAgICBUKiBtX3JhbmdlOwotI2VuZGlmCi0gICAgfTsKLQotICAgIC8vISBDaGVjayBpZiBhIHR5cGUgVCBtb2RlbHMgdGhlIEZvcndhcmRSYW5nZSByYW5nZSBjb25jZXB0LgotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RydWN0IEZvcndhcmRSYW5nZUNvbmNlcHQgOiBTaW5nbGVQYXNzUmFuZ2VDb25jZXB0PFQ+Ci0gICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpGb3J3YXJkSXRlcmF0b3JDb25jZXB0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgRm9yd2FyZFJhbmdlQ29uY2VwdDo6aXRlcmF0b3I+KSk7Ci0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKChyYW5nZV9kZXRhaWw6OkZvcndhcmRJdGVyYXRvckNvbmNlcHQ8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBGb3J3YXJkUmFuZ2VDb25jZXB0Ojpjb25zdF9pdGVyYXRvcj4pKTsKLSNlbmRpZgotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSYW5nZT4KLSAgICBzdHJ1Y3QgV3JpdGVhYmxlUmFuZ2VDb25jZXB0Ci0gICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlIGl0ZXJhdG9yOwotCi0gICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoV3JpdGVhYmxlUmFuZ2VDb25jZXB0KQotICAgICAgICB7Ci0gICAgICAgICAgICAqaSA9IHY7Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICBpdGVyYXRvciBpOwotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3ZhbHVlPFJhbmdlPjo6dHlwZSB2OwotI2VuZGlmCi0gICAgfTsKLQotICAgIC8vISBDaGVjayBpZiBhIHR5cGUgVCBtb2RlbHMgdGhlIFdyaXRlYWJsZUZvcndhcmRSYW5nZSByYW5nZSBjb25jZXB0LgotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RydWN0IFdyaXRlYWJsZUZvcndhcmRSYW5nZUNvbmNlcHQKLSAgICAgICAgOiBGb3J3YXJkUmFuZ2VDb25jZXB0PFQ+Ci0gICAgICAgICwgV3JpdGVhYmxlUmFuZ2VDb25jZXB0PFQ+Ci0gICAgewotICAgIH07Ci0KLSAgICAvLyEgQ2hlY2sgaWYgYSB0eXBlIFQgbW9kZWxzIHRoZSBCaWRpcmVjdGlvbmFsUmFuZ2UgcmFuZ2UgY29uY2VwdC4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0cnVjdCBCaWRpcmVjdGlvbmFsUmFuZ2VDb25jZXB0IDogRm9yd2FyZFJhbmdlQ29uY2VwdDxUPgotICAgIHsKLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKHJhbmdlX2RldGFpbDo6QmlkaXJlY3Rpb25hbEl0ZXJhdG9yQ29uY2VwdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEJpZGlyZWN0aW9uYWxSYW5nZUNvbmNlcHQ6Oml0ZXJhdG9yPikpOwotICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQmlkaXJlY3Rpb25hbFJhbmdlQ29uY2VwdDo6Y29uc3RfaXRlcmF0b3I+KSk7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgV3JpdGVhYmxlQmlkaXJlY3Rpb25hbFJhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgV3JpdGVhYmxlQmlkaXJlY3Rpb25hbFJhbmdlQ29uY2VwdAotICAgICAgICA6IEJpZGlyZWN0aW9uYWxSYW5nZUNvbmNlcHQ8VD4KLSAgICAgICAgLCBXcml0ZWFibGVSYW5nZUNvbmNlcHQ8VD4KLSAgICB7Ci0gICAgfTsKLQotICAgIC8vISBDaGVjayBpZiBhIHR5cGUgVCBtb2RlbHMgdGhlIFJhbmRvbUFjY2Vzc1JhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgUmFuZG9tQWNjZXNzUmFuZ2VDb25jZXB0IDogQmlkaXJlY3Rpb25hbFJhbmdlQ29uY2VwdDxUPgotICAgIHsKLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKHJhbmdlX2RldGFpbDo6UmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgUmFuZG9tQWNjZXNzUmFuZ2VDb25jZXB0OjppdGVyYXRvcj4pKTsKLSAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKHJhbmdlX2RldGFpbDo6UmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgUmFuZG9tQWNjZXNzUmFuZ2VDb25jZXB0Ojpjb25zdF9pdGVyYXRvcj4pKTsKLSNlbmRpZgotICAgIH07Ci0KLSAgICAvLyEgQ2hlY2sgaWYgYSB0eXBlIFQgbW9kZWxzIHRoZSBXcml0ZWFibGVSYW5kb21BY2Nlc3NSYW5nZSByYW5nZSBjb25jZXB0LgotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RydWN0IFdyaXRlYWJsZVJhbmRvbUFjY2Vzc1JhbmdlQ29uY2VwdAotICAgICAgICA6IFJhbmRvbUFjY2Vzc1JhbmdlQ29uY2VwdDxUPgotICAgICAgICAsIFdyaXRlYWJsZVJhbmdlQ29uY2VwdDxUPgotICAgIHsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFOR0VfQ09OQ0VQVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNzJkNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9DT05GSUdfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUKLSNlcnJvciAibWFjcm8gYWxyZWFkeSBkZWZpbmVkISIKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpCi0jIGRlZmluZSBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHR5cGVuYW1lCi0jZWxzZQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApICYmICFkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHR5cGVuYW1lCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSMgZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfUkFOR0VfTk9fQVJSQVlfU1VQUE9SVAotI2Vycm9yICJtYWNybyBhbHJlYWR5IGRlZmluZWQhIgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8IDEzMDAgKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKCBfX01XRVJLU19fLCA8PSAweDMwMDMgKQotI2RlZmluZSBORE5CT09TVF9SQU5HRV9OT19BUlJBWV9TVVBQT1JUIDEKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfUkFOR0VfTk9fQVJSQVlfU1VQUE9SVAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKSAoYm9vc3RfcmFuZ2VfYXJyYXkpCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX05PX1NUQVRJQ19BU1NFUlQKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpICgmYm9vc3RfcmFuZ2VfYXJyYXkpCi0jZW5kaWYKLQotCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWVkM2U4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfQ09OU1RfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0NPTlNUX0lURVJBVE9SX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvZXh0cmFjdF9vcHRpb25hbF90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBkZWZhdWx0Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsIHsKLSAgICAgICAgTkROQk9PU1RfUkFOR0VfRVhUUkFDVF9PUFRJT05BTF9UWVBFKCBjb25zdF9pdGVyYXRvciApCi0gICAgfQotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvciA6IHJhbmdlX2RldGFpbDo6ZXh0cmFjdF9jb25zdF9pdGVyYXRvcjxDPgotICAgIHt9OwotICAgIAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gcGFpcgotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcjwgc3RkOjpwYWlyPEl0ZXJhdG9yLEl0ZXJhdG9yPiA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIHR5cGU7Ci0gICAgfTsKLSAgICAKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGFycmF5Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yPCBUW3N6XSA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGNvbnN0IFQqIHR5cGU7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9hc19saXRlcmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2FzX2xpdGVyYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjNhZTE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2FzX2xpdGVyYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDA2LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9BU19MSVRFUkFMX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfQVNfTElURVJBTF9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvZGV0YWlsX3N0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFJhbmdlPjo6dHlwZT4gCi0gICAgYXNfbGl0ZXJhbCggUmFuZ2UmIHIgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6Om1ha2VfaXRlcmF0b3JfcmFuZ2UoIDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2JlZ2luKHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKHIpICk7Ci0gICAgfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvYmVnaW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvYmVnaW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmI1ZTU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2JlZ2luLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9CRUdJTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0JFR0lOX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gTkROQk9PU1RfTVNWQwotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3ZhbHVlX3R5cGUuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfYmVnaW47Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBkZWZhdWx0Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9iZWdpbjxzdGRfY29udGFpbmVyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUgZnVuKCBDJiBjICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYy5iZWdpbigpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHBhaXIKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPHN0ZF9wYWlyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAgPgotICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UD46OnR5cGUgZnVuKCBjb25zdCBQJiBwICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcC5maXJzdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGFycmF5Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9iZWdpbjxhcnJheV8+Ci0gICAgICAgIHsKLSAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgICAgICBzdGF0aWMgVCogZnVuKCBUIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJvb3N0X3JhbmdlX2FycmF5OwotICAgICAgICAgICAgfQotICAgICAgICAjZWxzZQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3ZhbHVlPFQ+Ojp0eXBlKiBmdW4oVCYgdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgI2VuZGlmCi0gICAgICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotCi0gICAgbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlCi0gICAgICAgIGJlZ2luKCBDJiBjICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6cmFuZ2VfYmVnaW48IE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSA+OjpmdW4oIGMgKTsKLSAgICAgICAgfQotICAgIH0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWZmOWRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0NPTU1PTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0NPTU1PTl9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9zZmluYWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBtaXNzaW5nIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gIHdvcmthcm91bmQuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgCi0gICAgeyAgICAgICAgCi0gICAgICAgIC8vIDEgPSBzdGQgY29udGFpbmVycwotICAgICAgICAvLyAyID0gc3RkOjpwYWlyCi0gICAgICAgIC8vIDMgPSBjb25zdCBzdGQ6OnBhaXIKLSAgICAgICAgLy8gNCA9IGFycmF5Ci0gICAgICAgIC8vIDUgPSBjb25zdCBhcnJheQotICAgICAgICAvLyA2ID0gY2hhciBhcnJheQotICAgICAgICAvLyA3ID0gd2NoYXJfdCBhcnJheQotICAgICAgICAvLyA4ID0gY2hhcioKLSAgICAgICAgLy8gOSA9IGNvbnN0IGNoYXIqCi0gICAgICAgIC8vIDEwID0gd2hhcl90KgotICAgICAgICAvLyAxMSA9IGNvbnN0IHdjaGFyX3QqCi0gICAgICAgIC8vIDEyID0gc3RyaW5nCi0gICAgICAgIAotICAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwxPjo6dHlwZSAgICBzdGRfY29udGFpbmVyXzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88Mj46OnR5cGUgICAgc3RkX3BhaXJfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwzPjo6dHlwZSAgICBjb25zdF9zdGRfcGFpcl87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDQ+Ojp0eXBlICAgIGFycmF5XzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88NT46OnR5cGUgICAgY29uc3RfYXJyYXlfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50Xzw2Pjo6dHlwZSAgICBjaGFyX2FycmF5XzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88Nz46OnR5cGUgICAgd2NoYXJfdF9hcnJheV87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDg+Ojp0eXBlICAgIGNoYXJfcHRyXzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88OT46OnR5cGUgICAgY29uc3RfY2hhcl9wdHJfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwxMD46OnR5cGUgICB3Y2hhcl90X3B0cl87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDExPjo6dHlwZSAgIGNvbnN0X3djaGFyX3RfcHRyXzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88MTI+Ojp0eXBlICAgc3RyaW5nXzsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgc3RydWN0IHJhbmdlX2hlbHBlcgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgQyogYzsKLSAgICAgICAgICAgIHN0YXRpYyBDICBwdHI7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfcGFpcl8gICAgICAgICAgICAgICAgPSBzaXplb2YoIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmlzX3BhaXJfaW1wbCggYyApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX2NoYXJfcHRyXyAgICAgICAgICAgID0gc2l6ZW9mKCBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjppc19jaGFyX3B0cl9pbXBsKCBwdHIgKSApID09IHNpemVvZiggeWVzX3R5cGUgKSApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc19jb25zdF9jaGFyX3B0cl8gICAgICA9IHNpemVvZiggbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6aXNfY29uc3RfY2hhcl9wdHJfaW1wbCggcHRyICkgKSA9PSBzaXplb2YoIHllc190eXBlICkgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfd2NoYXJfdF9wdHJfICAgICAgICAgPSBzaXplb2YoIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmlzX3djaGFyX3RfcHRyX2ltcGwoIHB0ciApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX2NvbnN0X3djaGFyX3RfcHRyXyAgID0gc2l6ZW9mKCBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjppc19jb25zdF93Y2hhcl90X3B0cl9pbXBsKCBwdHIgKSApID09IHNpemVvZiggeWVzX3R5cGUgKSApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc19jaGFyX2FycmF5XyAgICAgICAgICA9IHNpemVvZiggbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6aXNfY2hhcl9hcnJheV9pbXBsKCBwdHIgKSApID09IHNpemVvZiggeWVzX3R5cGUgKSApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc193Y2hhcl90X2FycmF5XyAgICAgICA9IHNpemVvZiggbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6aXNfd2NoYXJfdF9hcnJheV9pbXBsKCBwdHIgKSApID09IHNpemVvZiggeWVzX3R5cGUgKSApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc19zdHJpbmdfICAgICAgICAgICAgICA9IChuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxpc19jb25zdF9jaGFyX3B0cl8sIGlzX2NvbnN0X3djaGFyX3RfcHRyXz46OnZhbHVlICkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc19hcnJheV8gICAgICAgICAgICAgICA9IG5kbmJvb3N0Ojppc19hcnJheTxDPjo6dmFsdWUgKTsKLSAgICAgICAgICAgIAotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICBjbGFzcyByYW5nZQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfcGFpcl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdGRfcGFpcl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkID46OnR5cGUgcGFpcl90OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX2FycmF5XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6YXJyYXlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWlyX3QgPjo6dHlwZSBhcnJheV90OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX3N0cmluZ18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cmluZ18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3QgPjo6dHlwZSBzdHJpbmdfdDsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6cmFuZ2VfaGVscGVyPEM+Ojppc19jb25zdF9jaGFyX3B0cl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmNvbnN0X2NoYXJfcHRyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3QgPjo6dHlwZSBjb25zdF9jaGFyX3B0cl90OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX2NoYXJfcHRyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6Y2hhcl9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9jaGFyX3B0cl90ID46OnR5cGUgY2hhcl9wdHJfdDsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6cmFuZ2VfaGVscGVyPEM+Ojppc19jb25zdF93Y2hhcl90X3B0cl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmNvbnN0X3djaGFyX3RfcHRyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl9wdHJfdCA+Ojp0eXBlIGNvbnN0X3djaGFyX3B0cl90OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX3djaGFyX3RfcHRyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6d2NoYXJfdF9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF93Y2hhcl9wdHJfdCA+Ojp0eXBlIHdjaGFyX3B0cl90OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX3djaGFyX3RfYXJyYXlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjp3Y2hhcl90X2FycmF5XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfcHRyX3QgPjo6dHlwZSB3Y2hhcl9hcnJheV90OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX2NoYXJfYXJyYXlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpjaGFyX2FycmF5XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfYXJyYXlfdCA+Ojp0eXBlIGNoYXJfYXJyYXlfdDsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6aXNfdm9pZDxjaGFyX2FycmF5X3Q+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RkX2NvbnRhaW5lcl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfYXJyYXlfdCA+Ojp0eXBlIHR5cGU7ICAKLSAgICAgICAgfTsgLy8gY2xhc3MgJ3JhbmdlJyAKLSAgICB9Ci19Ci0gICAgICAgIAotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbnN0X2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbnN0X2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI3NTI5Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9jb25zdF9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfQ09OU1RfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9DT05TVF9JVEVSQVRPUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9yZW1vdmVfZXh0ZW50LmhwcD4KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBtaXNzaW5nIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gIHdvcmthcm91bmQuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgCi0gICAgeyAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl87Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPHN0ZF9jb250YWluZXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzxzdGRfcGFpcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgUDo6Zmlyc3RfdHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzxhcnJheV8+Ci0gICAgICAgIHsgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9IAotICAgIAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBjbGFzcyByYW5nZV9jb25zdF9pdGVyYXRvcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgY190eXBlOwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2VfY29uc3RfaXRlcmF0b3JfPGNfdHlwZT46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBwdHM8Qz46OnR5cGUgdHlwZTsgCi0gICAgfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2RldGFpbF9zdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZGV0YWlsX3N0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZDA3NTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZGV0YWlsX3N0ci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzYgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0RFVEFJTF9TVFJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9ERVRBSUxfU1RSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gTkROQk9PU1RfTVNWQwotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIAotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIGl0ZXJhdG9yCi0gICAgICAgIC8vCi0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl88Y2hhcl9hcnJheV8+Ci0gICAgICAgIHsgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSogdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPGNoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY2hhciogdHlwZTsgCi0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzxjb25zdF9jaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IGNoYXIqIHR5cGU7Ci0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzx3Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHdjaGFyX3QqIHR5cGU7IAotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl88Y29uc3Rfd2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3Qgd2NoYXJfdCogdHlwZTsgCi0gICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLQotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIGNvbnN0IGl0ZXJhdG9yCi0gICAgICAgIC8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPGNoYXJfYXJyYXlfPgotICAgICAgICB7IAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSogdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPGNoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgY2hhciogdHlwZTsgCi0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzxjb25zdF9jaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IGNoYXIqIHR5cGU7IAotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88d2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB3Y2hhcl90KiB0eXBlOyAKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPGNvbnN0X3djaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IHdjaGFyX3QqIHR5cGU7IAotICAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0gICAgfQotfQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvc2l6ZV90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvdmFsdWVfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLSAgICAKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICAvLwotICAgICAgICAvLyBzdHJfYmVnaW4oKQotICAgICAgICAvLwotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9iZWdpbjxjaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjaGFyKiBmdW4oIGNoYXIqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPGNvbnN0X2NoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGZ1biggY29uc3QgY2hhciogcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9iZWdpbjx3Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3RhdGljIHdjaGFyX3QqIGZ1biggd2NoYXJfdCogcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfYmVnaW48Y29uc3Rfd2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCogZnVuKCBjb25zdCB3Y2hhcl90KiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgaW5saW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUgCi0gICAgICAgIHN0cl9iZWdpbiggQyYgYyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6OnJhbmdlX2JlZ2luPCBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgPjo6ZnVuKCBjICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLwotICAgICAgICAvLyBzdHJfZW5kKCkKLSAgICAgICAgLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8Y2hhcl9hcnJheV8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgICAgICBzdGF0aWMgVCogZnVuKCBUIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmFycmF5X2VuZCggYm9vc3RfcmFuZ2VfYXJyYXkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDx3Y2hhcl90X2FycmF5Xz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgICAgIHN0YXRpYyBUKiBmdW4oIFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6YXJyYXlfZW5kKCBib29zdF9yYW5nZV9hcnJheSApOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGNoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNoYXIqIGZ1biggY2hhciogcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQoIHMgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8Y29uc3RfY2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogZnVuKCBjb25zdCBjaGFyKiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZCggcyApOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDx3Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyB3Y2hhcl90KiBmdW4oIHdjaGFyX3QqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8Y29uc3Rfd2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCogZnVuKCBjb25zdCB3Y2hhcl90KiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZCggcyApOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgaW5saW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUgCi0gICAgICAgIHN0cl9lbmQoIEMmIGMgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjpyYW5nZV9lbmQ8IE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSA+OjpmdW4oIGMgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIHNpemVfdHlwZQotICAgICAgICAvLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV88Y2hhcl9hcnJheV8+Ci0gICAgICAgIHsgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQSA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplX3R5cGVfPGNoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgdHlwZTsKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplX3R5cGVfPGNvbnN0X2NoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgdHlwZTsKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplX3R5cGVfPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgdHlwZTsKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplX3R5cGVfPGNvbnN0X3djaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgdHlwZTsKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07ICAKLQotICAgICAgICAvLwotICAgICAgICAvLyB2YWx1ZV90eXBlCi0gICAgICAgIC8vCi0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzxjaGFyX2FycmF5Xz4KLSAgICAgICAgeyAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNoYXIgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOyAKLSAgICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88Y29uc3RfY2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgY2hhciB0eXBlOwotICAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzx3Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdHlwZWRlZiB3Y2hhcl90IHR5cGU7Ci0gICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPGNvbnN0X3djaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3Qgd2NoYXJfdCB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2Y4NDhjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0VORF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0VORF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX01TVkMKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZjNi9lbmQuaHBwPgotI2Vsc2UKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2ltcGxlbWVudGF0aW9uX2hlbHAuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwPgotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9yZW1vdmVfZXh0ZW50LmhwcD4KLSMgZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kOwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gZGVmYXVsdAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPHN0ZF9jb250YWluZXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZQotICAgICAgICAgICAgZnVuKCBDJiBjICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYy5lbmQoKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBwYWlyCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8c3RkX3BhaXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+Ci0gICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxQPjo6dHlwZQotICAgICAgICAgICAgZnVuKCBjb25zdCBQJiBwICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcC5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBhcnJheQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGFycmF5Xz4KLSAgICAgICAgewotICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgICAgIHN0YXRpYyBUKiBmdW4oIFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6YXJyYXlfZW5kKCBib29zdF9yYW5nZV9hcnJheSApOwotICAgICAgICAgICAgfQotICAgICAgICAjZWxzZQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUqIGZ1bihUJiB0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB0ICsgcmVtb3ZlX2V4dGVudDxUPjo6c2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgI2VuZGlmCi0gICAgICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotCi0gICAgbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlCi0gICAgICAgIGVuZCggQyYgYyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6OnJhbmdlX2VuZDwgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlID46OmZ1biggYyApOwotICAgICAgICB9Ci0gICAgfSAvLyBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0jIGVuZGlmIC8vIFZDNgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9leHRyYWN0X29wdGlvbmFsX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZXh0cmFjdF9vcHRpb25hbF90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZhNDdiNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9leHRyYWN0X29wdGlvbmFsX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgQXJubyBTY2hvZWRsICYgTmVpbCBHcm92ZXMgMjAwOS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0VYVFJBQ1RfT1BUSU9OQUxfVFlQRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0VYVFJBQ1RfT1BUSU9OQUxfVFlQRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fUEFSVElBTF9TUEVDSUFMSVpBVElPTl9JTVBMSUNJVF9ERUZBVUxUX0FSR1MKLQotI2RlZmluZSBORE5CT09TVF9SQU5HRV9FWFRSQUNUX09QVElPTkFMX1RZUEUoIGFfdHlwZWRlZiApICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IGV4dHJhY3RfICMjIGFfdHlwZWRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmFfdHlwZWRlZiB0eXBlOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfTsKLQotI2Vsc2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXhpc3RzIHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07Ci0gICAgfQotfQotCi0vLyBEZWZpbmVzIGV4dHJhY3Rfc29tZV90eXBlZGVmPFQ+IHdoaWNoIGV4cG9zZXMgVDo6c29tZV90eXBlZGVmIGFzCi0vLyBleHRyYWN0X3NvbWVfdHlwZWRlZjxUPjo6dHlwZSBpZiBUOjpzb21lX3R5cGVkZWYgZXhpc3RzLiBPdGhlcndpc2UKLS8vIGV4dHJhY3Rfc29tZV90eXBlZGVmPFQ+IGlzIGVtcHR5LgotI2RlZmluZSBORE5CT09TVF9SQU5HRV9FWFRSQUNUX09QVElPTkFMX1RZUEUoIGFfdHlwZWRlZiApICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQywgdHlwZW5hbWUgRW5hYmxlPXZvaWQgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IGV4dHJhY3RfICMjIGFfdHlwZWRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHt9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IGV4dHJhY3RfICMjIGFfdHlwZWRlZjwgQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpleGlzdHM8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6YV90eXBlZGVmID46OnR5cGUgXAotICAgID4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmFfdHlwZWRlZiB0eXBlOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfTsKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9pbXBsZW1lbnRhdGlvbl9oZWxwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2ltcGxlbWVudGF0aW9uX2hlbHAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzEwYjQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2ltcGxlbWVudGF0aW9uX2hlbHAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9JTVBMRU1FTlRBVElPTl9IRUxQX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfSU1QTEVNRU5UQVRJT05fSEVMUF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19DV0NIQVIKLSNpbmNsdWRlIDx3Y2hhci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBib29zdF9yYW5nZV9zaWxlbmNlX3dhcm5pbmcoIGNvbnN0IFQmICkgeyB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGVuZCgpIGhlbHAKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgaW5saW5lIGNvbnN0IGNoYXIqIHN0cl9lbmQoIGNvbnN0IGNoYXIqIHMsIGNvbnN0IGNoYXIqICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHMgKyBzdHJsZW4oIHMgKTsKLSAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NXQ0hBUgotICAgICAgICBpbmxpbmUgY29uc3Qgd2NoYXJfdCogc3RyX2VuZCggY29uc3Qgd2NoYXJfdCogcywgY29uc3Qgd2NoYXJfdCogKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcyArIHdjc2xlbiggcyApOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICBpbmxpbmUgY29uc3Qgd2NoYXJfdCogc3RyX2VuZCggY29uc3Qgd2NoYXJfdCogcywgY29uc3Qgd2NoYXJfdCogKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiggcyA9PSAwIHx8IHNbMF0gPT0gMCApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgICAgICB3aGlsZSggKisrcyAhPSAwICkKLSAgICAgICAgICAgICAgICA7Ci0gICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIENoYXIgPgotICAgICAgICBpbmxpbmUgQ2hhciogc3RyX2VuZCggQ2hhciogcyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PENoYXIqPiggc3RyX2VuZCggcywgcyApICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICBpbmxpbmUgVCogYXJyYXlfZW5kKCBUIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBib29zdF9yYW5nZV9hcnJheSArIHN6OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgaW5saW5lIGNvbnN0IFQqIGFycmF5X2VuZCggY29uc3QgVCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYm9vc3RfcmFuZ2VfYXJyYXkgKyBzejsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBzaXplKCkgaGVscAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgQ2hhciA+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBzdHJfc2l6ZSggY29uc3QgQ2hhciogY29uc3QmIHMgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RyX2VuZCggcyApIC0gczsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBhcnJheV9zaXplKCBUIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJvb3N0X3JhbmdlX3NpbGVuY2Vfd2FybmluZyggYm9vc3RfcmFuZ2VfYXJyYXkgKTsKLSAgICAgICAgICAgIHJldHVybiBzejsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBhcnJheV9zaXplKCBjb25zdCBUIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJvb3N0X3JhbmdlX3NpbGVuY2Vfd2FybmluZyggYm9vc3RfcmFuZ2VfYXJyYXkgKTsKLSAgICAgICAgICAgIHJldHVybiBzejsKLSAgICAgICAgfQotCi0gICAgfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDdiODNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0lURVJBVE9SX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gbWlzc2luZyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uICB3b3JrYXJvdW5kLgotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsIAotICAgIHsgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl8gewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzxzdGRfY29udGFpbmVyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvciB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl88c3RkX3BhaXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIFA6OmZpcnN0X3R5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPGFycmF5Xz4KLSAgICAgICAgeyAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUqIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICAKLSAgICB9IAotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIGNsYXNzIHJhbmdlX211dGFibGVfaXRlcmF0b3IKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlIGNfdHlwZTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmFuZ2VfZGV0YWlsOjpyYW5nZV9pdGVyYXRvcl88Y190eXBlPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHB0czxDPjo6dHlwZSB0eXBlOyAKLSAgICB9OwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL21pc2NfY29uY2VwdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9taXNjX2NvbmNlcHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTBkZTM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL21pc2NfY29uY2VwdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5IGNvbmNlcHQgY2hlY2tzCi0vLwotLy8gIENvcHlyaWdodCBOZWlsIEdyb3ZlcyAyMDA5LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uCi0vLyAgYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfTUlTQ19DT05DRVBUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfTUlTQ19DT05DRVBUX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdF9jaGVjay5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICAgICAgY2xhc3MgU2FtZVR5cGVDb25jZXB0Ci0gICAgICAgIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShTYW1lVHlwZUNvbmNlcHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc2FtZV90eXBlKGEsYik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNhbWVfdHlwZShULFQpIHt9Ci0gICAgICAgICAgICBUMSBhOwotICAgICAgICAgICAgVDIgYjsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9yZW1vdmVfZXh0ZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWUwZTM0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IEpvbmF0aGFuIFR1cmthbmlzIDIwMDUuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfUkVNT1ZFX0JPVU5EU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX1JFTU9WRV9CT1VORFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gTVNWQywgTk9fSU5UUklOU0lDX1dDSEFSX1QsIHB1dCBzaXplX3QgaW4gc3RkLgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIENhc2UxID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UyID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUyID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UzID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUzID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2U0ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGU0ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2U1ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGU1ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2U2ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGU2ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2U3ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGU3ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2U4ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGU4ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2U5ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGU5ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxMCA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTAgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTExID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxMSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTIgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTEyID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxMyA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTMgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTE0ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxNCA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTUgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTE1ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxNiA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTYgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTE3ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxNyA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTggPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTE4ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxOSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTkgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTIwID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUyMCA9IG1wbDo6dm9pZF8+Ci0gICAgICAgIHN0cnVjdCBzZWxlY3QgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgICAgICAgICBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMSwgbXBsOjppZGVudGl0eTxUeXBlMT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UyLCBtcGw6OmlkZW50aXR5PFR5cGUyPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTMsIG1wbDo6aWRlbnRpdHk8VHlwZTM+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlNCwgbXBsOjppZGVudGl0eTxUeXBlND4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2U1LCBtcGw6OmlkZW50aXR5PFR5cGU1PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTYsIG1wbDo6aWRlbnRpdHk8VHlwZTY+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlNywgbXBsOjppZGVudGl0eTxUeXBlNz4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2U4LCBtcGw6OmlkZW50aXR5PFR5cGU4PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTksIG1wbDo6aWRlbnRpdHk8VHlwZTk+LCBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxMCwgVHlwZTEwLCBtcGw6OnZvaWRfID4gPiA+ID4gPiA+ID4gPiA+Ci0gICAgICAgICAgICAgICAgICAgID46OnR5cGUgcmVzdWx0MTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTExLCBtcGw6OmlkZW50aXR5PFR5cGUxMT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxMiwgbXBsOjppZGVudGl0eTxUeXBlMTI+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTMsIG1wbDo6aWRlbnRpdHk8VHlwZTEzPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTE0LCBtcGw6OmlkZW50aXR5PFR5cGUxND4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxNSwgbXBsOjppZGVudGl0eTxUeXBlMTU+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTYsIG1wbDo6aWRlbnRpdHk8VHlwZTE2PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTE3LCBtcGw6OmlkZW50aXR5PFR5cGUxNz4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxOCwgbXBsOjppZGVudGl0eTxUeXBlMTg+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTksIG1wbDo6aWRlbnRpdHk8VHlwZTE5PiwgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMjAsIFR5cGUyMCwgbXBsOjp2b2lkXyA+ID4gPiA+ID4gPiA+ID4gPgotICAgICAgICAgICAgICAgICAgICA+IHJlc3VsdDI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lICAgIAotICAgICAgICAgICAgICAgICAgICBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPHJlc3VsdDEsIG1wbDo6dm9pZF8+LAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6aWRlbnRpdHk8cmVzdWx0MT4KLSAgICAgICAgICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfZXh0ZW50IHsKLSAgICAgICAgICAgIHN0YXRpYyBUKiBhcjsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgc2l6ZSA9IHNpemVvZigqYXIpIC8gc2l6ZW9mKCgqYXIpWzBdKSk7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0PAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBib29sW3NpemVdPiwgICAgICAgICAgICAgICAgICBib29sLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjaGFyW3NpemVdPiwgICAgICAgICAgICAgICAgICBjaGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBzaWduZWQgY2hhcltzaXplXT4sICAgICAgICAgICBzaWduZWQgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgdW5zaWduZWQgY2hhcltzaXplXT4sICAgICAgICAgdW5zaWduZWQgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCB3Y2hhcl90W3NpemVdPiwgICAgICAgICAgICAgICB3Y2hhcl90LAotICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgc2hvcnRbc2l6ZV0+LCAgICAgICAgICAgICAgICAgc2hvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIHVuc2lnbmVkIHNob3J0W3NpemVdPiwgICAgICAgIHVuc2lnbmVkIHNob3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBpbnRbc2l6ZV0+LCAgICAgICAgICAgICAgICAgICBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIHVuc2lnbmVkIGludFtzaXplXT4sICAgICAgICAgIHVuc2lnbmVkIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgbG9uZ1tzaXplXT4sICAgICAgICAgICAgICAgICAgbG9uZywKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgdW5zaWduZWQgbG9uZ1tzaXplXT4sICAgICAgICAgdW5zaWduZWQgbG9uZywKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgZmxvYXRbc2l6ZV0+LCAgICAgICAgICAgICAgICAgZmxvYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGRvdWJsZVtzaXplXT4sICAgICAgICAgICAgICAgIGRvdWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgbG9uZyBkb3VibGVbc2l6ZV0+LCAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAgICAgICAgICAgPjo6dHlwZSByZXN1bHQxOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgICAgICAgICBzZWxlY3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IGJvb2xbc2l6ZV0+LCAgICAgICAgICAgIGNvbnN0IGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IGNoYXJbc2l6ZV0+LCAgICAgICAgICAgIGNvbnN0IGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IHNpZ25lZCBjaGFyW3NpemVdPiwgICAgIGNvbnN0IHNpZ25lZCBjaGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCB1bnNpZ25lZCBjaGFyW3NpemVdPiwgICBjb25zdCB1bnNpZ25lZCBjaGFyLAotICAgICAgICAgICAgICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IHdjaGFyX3Rbc2l6ZV0+LCAgICAgICAgIGNvbnN0IHdjaGFyX3QsCi0gICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCBzaG9ydFtzaXplXT4sICAgICAgICAgICBjb25zdCBzaG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgdW5zaWduZWQgc2hvcnRbc2l6ZV0+LCAgY29uc3QgdW5zaWduZWQgc2hvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IGludFtzaXplXT4sICAgICAgICAgICAgIGNvbnN0IGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgdW5zaWduZWQgaW50W3NpemVdPiwgICAgY29uc3QgdW5zaWduZWQgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCBsb25nW3NpemVdPiwgICAgICAgICAgICBjb25zdCBsb25nLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCB1bnNpZ25lZCBsb25nW3NpemVdPiwgICBjb25zdCB1bnNpZ25lZCBsb25nLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCBmbG9hdFtzaXplXT4sICAgICAgICAgICBjb25zdCBmbG9hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgZG91YmxlW3NpemVdPiwgICAgICAgICAgY29uc3QgZG91YmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCBsb25nIGRvdWJsZVtzaXplXT4sICAgICBjb25zdCBsb25nIGRvdWJsZQotICAgICAgICAgICAgICAgICAgICA+IHJlc3VsdDI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICAgICAgICAgIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8cmVzdWx0MSwgbXBsOjp2b2lkXz4sCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQyLAotICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjppZGVudGl0eTxyZXN1bHQxPgotICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zYWZlX2Jvb2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc2FmZV9ib29sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzVhMDczMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zYWZlX2Jvb2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gIFRoaXMgaGVhZGVyIGludGVudGlvbmFsbHkgaGFzIG5vIGluY2x1ZGUgZ3VhcmRzLgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMTAgTmVpbCBHcm92ZXMKLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gVGhpcyBjb2RlIHV0aWxpc2VzIHRoZSBleHBlcmllbmNlIGdhaW5lZCBkdXJpbmcgdGhlIGV2b2x1dGlvbiBvZgotLy8gPG5kbmJvb3N0L3NtYXJ0X3B0ci9vcGVyYXRvcl9ib29sLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfU0FGRV9CT09MX0lOQ0xVREVEX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9TQUZFX0JPT0xfSU5DTFVERURfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0KLXRlbXBsYXRlPGNsYXNzIERhdGFNZW1iZXJQdHI+Ci1jbGFzcyBzYWZlX2Jvb2wKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHNhZmVfYm9vbCB0aGlzX3R5cGU7Ci0KLSNpZiAoZGVmaW5lZChfX1NVTlBST19DQykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgPCAweDU3MCkpIHx8IGRlZmluZWQoX19DSU5UXykKLSAgICB0eXBlZGVmIGJvb2wgdW5zcGVjaWZpZWRfYm9vbF90eXBlOwotICAgIHN0YXRpYyB1bnNwZWNpZmllZF9ib29sX3R5cGUgdG9fdW5zcGVjaWZpZWRfYm9vbChjb25zdCBib29sIHgsIERhdGFNZW1iZXJQdHIpCi0gICAgewotICAgICAgICByZXR1cm4geDsKLSAgICB9Ci0jZWxpZiBkZWZpbmVkKF9NQU5BR0VEKQotICAgIHN0YXRpYyB2b2lkIHVuc3BlY2lmaWVkX2Jvb2wodGhpc190eXBlKioqKQotICAgIHsKLSAgICB9Ci0gICAgdHlwZWRlZiB2b2lkKCp1bnNwZWNpZmllZF9ib29sX3R5cGUpKHRoaXNfdHlwZSoqKik7Ci0gICAgc3RhdGljIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSB0b191bnNwZWNpZmllZF9ib29sKGNvbnN0IGJvb2wgeCwgRGF0YU1lbWJlclB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiB4ID8gdW5zcGVjaWZpZWRfYm9vbCA6IDA7Ci0gICAgfQotI2VsaWYgXAotICAgICggZGVmaW5lZChfX01XRVJLU19fKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDwgMHgzMjAwKSApIHx8IFwKLSAgICAoIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fIDwgMzA0KSApIHx8IFwKLSAgICAoIGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIDw9IDB4NTkwKSApCi0KLSAgICB0eXBlZGVmIGJvb2wgKHRoaXNfdHlwZTo6KnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSkoKSBjb25zdDsKLQotICAgIHN0YXRpYyB1bnNwZWNpZmllZF9ib29sX3R5cGUgdG9fdW5zcGVjaWZpZWRfYm9vbChjb25zdCBib29sIHgsIERhdGFNZW1iZXJQdHIpCi0gICAgewotICAgICAgICByZXR1cm4geCA/ICZ0aGlzX3R5cGU6OmRldGFpbF9zYWZlX2Jvb2xfbWVtYmVyX2ZuIDogMDsKLSAgICB9Ci1wcml2YXRlOgotICAgIGJvb2wgZGV0YWlsX3NhZmVfYm9vbF9tZW1iZXJfZm4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotI2Vsc2UKLSAgICB0eXBlZGVmIERhdGFNZW1iZXJQdHIgdW5zcGVjaWZpZWRfYm9vbF90eXBlOwotICAgIHN0YXRpYyB1bnNwZWNpZmllZF9ib29sX3R5cGUgdG9fdW5zcGVjaWZpZWRfYm9vbChjb25zdCBib29sIHgsIERhdGFNZW1iZXJQdHIgcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB4ID8gcCA6IDA7Ci0gICAgfQotI2VuZGlmCi1wcml2YXRlOgotICAgIHNhZmVfYm9vbCgpOwotICAgIHNhZmVfYm9vbChjb25zdCBzYWZlX2Jvb2wmKTsKLSAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBzYWZlX2Jvb2wmKTsKLSAgICB+c2FmZV9ib29sKCk7Ci19OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc2ZpbmFlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NmaW5hZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhZDFjMjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc2ZpbmFlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9TRklOQUVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9TRklOQUVfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7ICAgICAgICAgIAotICAgICAgICB1c2luZyB0eXBlX3RyYWl0czo6eWVzX3R5cGU7Ci0gICAgICAgIHVzaW5nIHR5cGVfdHJhaXRzOjpub190eXBlOwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gc3RyaW5nCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgCi0gICAgICAgIHllc190eXBlIGlzX3N0cmluZ19pbXBsKCBjb25zdCBjaGFyKiBjb25zdCApOwotICAgICAgICB5ZXNfdHlwZSBpc19zdHJpbmdfaW1wbCggY29uc3Qgd2NoYXJfdCogY29uc3QgKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfc3RyaW5nX2ltcGwoIC4uLiApOwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgeWVzX3R5cGUgaXNfY2hhcl9hcnJheV9pbXBsKCBjaGFyIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApOwotICAgICAgICB0ZW1wbGF0ZTwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICB5ZXNfdHlwZSBpc19jaGFyX2FycmF5X2ltcGwoIGNvbnN0IGNoYXIgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICk7Ci0gICAgICAgIG5vX3R5cGUgIGlzX2NoYXJfYXJyYXlfaW1wbCggLi4uICk7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICB5ZXNfdHlwZSBpc193Y2hhcl90X2FycmF5X2ltcGwoIHdjaGFyX3QgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICk7Ci0gICAgICAgIHRlbXBsYXRlPCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIHllc190eXBlIGlzX3djaGFyX3RfYXJyYXlfaW1wbCggY29uc3Qgd2NoYXJfdCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfd2NoYXJfdF9hcnJheV9pbXBsKCAuLi4gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgeWVzX3R5cGUgaXNfY2hhcl9wdHJfaW1wbCggY2hhciogY29uc3QgKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfY2hhcl9wdHJfaW1wbCggLi4uICk7Ci0gICAgICAgIAotICAgICAgICB5ZXNfdHlwZSBpc19jb25zdF9jaGFyX3B0cl9pbXBsKCBjb25zdCBjaGFyKiBjb25zdCApOwotICAgICAgICBub190eXBlICBpc19jb25zdF9jaGFyX3B0cl9pbXBsKCAuLi4gKTsKLQotICAgICAgICB5ZXNfdHlwZSBpc193Y2hhcl90X3B0cl9pbXBsKCB3Y2hhcl90KiBjb25zdCApOwotICAgICAgICBub190eXBlICBpc193Y2hhcl90X3B0cl9pbXBsKCAuLi4gKTsKLSAgICAgICAgCi0gICAgICAgIHllc190eXBlIGlzX2NvbnN0X3djaGFyX3RfcHRyX2ltcGwoIGNvbnN0IHdjaGFyX3QqIGNvbnN0ICk7Ci0gICAgICAgIG5vX3R5cGUgIGlzX2NvbnN0X3djaGFyX3RfcHRyX2ltcGwoIC4uLiApOwotICAgICAgICAKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBwYWlyCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgICAgICB5ZXNfdHlwZSBpc19wYWlyX2ltcGwoIGNvbnN0IHN0ZDo6cGFpcjxJdGVyYXRvcixJdGVyYXRvcj4qICk7Ci0gICAgICAgIG5vX3R5cGUgIGlzX3BhaXJfaW1wbCggLi4uICk7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyB0YWdzCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICBzdHJ1Y3QgY2hhcl9vcl93Y2hhcl90X2FycmF5X3RhZyB7fTsKLSAgICAgICAgCi0gICAgfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLSAgICAKLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zaXplX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc2l6ZV90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ0NGQwNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zaXplX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX1NJWkVfVFlQRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX1NJWkVfVFlQRV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9jb21tb24uaHBwPgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG1pc3NpbmcgcGFydGlhbCBzcGVjaWFsaXphdGlvbiAgd29ya2Fyb3VuZC4KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplX3R5cGVfCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV88c3RkX2NvbnRhaW5lcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgQzo6c2l6ZV90eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBjbGFzcyByYW5nZV9zaXplCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgY190eXBlOwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByYW5nZV9kZXRhaWw6OnJhbmdlX3NpemVfdHlwZV88Y190eXBlPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHB0czxDPjo6dHlwZSB0eXBlOwotICAgIH07Ci19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zdHJfdHlwZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc3RyX3R5cGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdlZDMxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zdHJfdHlwZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDA2LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9TVFJfVFlQRVNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9TVFJfVFlQRVNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9zaXplX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPFQqPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUKiB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFQqPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUKiB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IHJhbmdlX3NpemU8VCo+Ci0gICAgewotICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgdHlwZTsKLSAgICB9OyAgICAKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC92YWx1ZV90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZhbHVlX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmViZTRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZhbHVlX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX1ZBTFVFX1RZUEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9WQUxVRV9UWVBFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gbWlzc2luZyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uICB3b3JrYXJvdW5kLgotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsIAotICAgIHsgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzxzdGRfY29udGFpbmVyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBDOjp2YWx1ZV90eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPHN0ZF9wYWlyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6aXRlcmF0b3JfdmFsdWU8IE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgUDo6Zmlyc3RfdHlwZSA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPGFycmF5Xz4KLSAgICAgICAgeyAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgfSAKLSAgICAKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgY2xhc3MgcmFuZ2VfdmFsdWUKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlIGNfdHlwZTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kZXRhaWw6OnJhbmdlX3ZhbHVlX3R5cGVfPGNfdHlwZT46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBwdHM8Qz46OnR5cGUgdHlwZTsgCi0gICAgfTsKLQotfQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvdmM2L2VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC92YzYvZW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5YTFiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC92YzYvZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfVkM2X0VORF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX1ZDNl9FTkRfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2ltcGxlbWVudGF0aW9uX2hlbHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3Jlc3VsdF9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kOwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gZGVmYXVsdAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8c3RkX2NvbnRhaW5lcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmVzdWx0X2l0ZXJhdG9yPEM+Ojp0eXBlIAotICAgICAgICAgICAgICAgIGZ1biggQyYgYyApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5lbmQoKTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gcGFpcgotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8c3RkX3BhaXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3Jlc3VsdF9pdGVyYXRvcjxQPjo6dHlwZSAKLSAgICAgICAgICAgICAgICBmdW4oIGNvbnN0IFAmIHAgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAuc2Vjb25kOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gYXJyYXkKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGFycmF5Xz4gIAotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUqCi0gICAgICAgICAgICAgICAgZnVuKFQmIHQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIHJlbW92ZV9leHRlbnQ8VD46OnNpemU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8Y2hhcl9hcnJheV8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSoKLSAgICAgICAgICAgICAgICBmdW4oVCYgdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICsgcmVtb3ZlX2V4dGVudDxUPjo6c2l6ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPHdjaGFyX3RfYXJyYXlfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUqCi0gICAgICAgICAgICAgICAgZnVuKFQmIHQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIHJlbW92ZV9leHRlbnQ8VD46OnNpemU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHN0cmluZwotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjaGFyKiBmdW4oIGNoYXIqIHMgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQoIHMgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjb25zdF9jaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGZ1biggY29uc3QgY2hhciogcyApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZCggcyApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgd2NoYXJfdCogZnVuKCB3Y2hhcl90KiBzICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjb25zdF93Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHdjaGFyX3QqIGZ1biggY29uc3Qgd2NoYXJfdCogcyApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZCggcyApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgIH0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0gICAgCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3Jlc3VsdF9pdGVyYXRvcjxDPjo6dHlwZSAKLSAgICBlbmQoIEMmIGMgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6cmFuZ2VfZW5kPHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGU+Ojppbm5lcjxDPjo6ZnVuKCBjICk7Ci0gICAgfQotICAgIAotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kaWZmZXJlbmNlX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kaWZmZXJlbmNlX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGUxYzE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGlmZmVyZW5jZV90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RJRkZFUkVOQ0VfVFlQRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRElGRkVSRU5DRV9UWVBFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgcmFuZ2VfZGlmZmVyZW5jZSA6IGl0ZXJhdG9yX2RpZmZlcmVuY2U8IHR5cGVuYW1lIHJhbmdlX2l0ZXJhdG9yPFQ+Ojp0eXBlID4KLSAgICB7IH07Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kaXN0YW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2Rpc3RhbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQzYWFkYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2Rpc3RhbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA2LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RJU1RBTkNFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ESVNUQU5DRV9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kaWZmZXJlbmNlX3R5cGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxUPjo6dHlwZSAKLSAgICBkaXN0YW5jZSggY29uc3QgVCYgciApCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpkaXN0YW5jZSggbmRuYm9vc3Q6OmJlZ2luKCByICksIG5kbmJvb3N0OjplbmQoIHIgKSApOwotICAgIH0KLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZW1wdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9lbXB0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjM2RmZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9lbXB0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9FTVBUWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRU1QVFlfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAoteyAKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBpbmxpbmUgYm9vbCBlbXB0eSggY29uc3QgVCYgciApCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmJlZ2luKCByICkgPT0gbmRuYm9vc3Q6OmVuZCggciApOwotICAgIH0KLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9lbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzdkNTRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9FTkRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VORF9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvZW5kLmhwcD4KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotewotI2VuZGlmCi0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBwcmltYXJ5IHRlbXBsYXRlCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZQotICAgICAgICByYW5nZV9lbmQoIEMmIGMgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gSWYgeW91IGdldCBhIGNvbXBpbGUtZXJyb3IgaGVyZSwgaXQgaXMgbW9zdCBsaWtlbHkgYmVjYXVzZQotICAgICAgICAgICAgLy8geW91IGhhdmUgbm90IGltcGxlbWVudGVkIHJhbmdlX2JlZ2luKCkgcHJvcGVybHkgaW4KLSAgICAgICAgICAgIC8vIHRoZSBuYW1lc3BhY2Ugb2YgQwotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIHJldHVybiBjLmVuZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBwYWlyCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgICAgICBpbmxpbmUgSXRlcmF0b3IgcmFuZ2VfZW5kKCBjb25zdCBzdGQ6OnBhaXI8SXRlcmF0b3IsSXRlcmF0b3I+JiBwICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHAuc2Vjb25kOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4KLSAgICAgICAgaW5saW5lIEl0ZXJhdG9yIHJhbmdlX2VuZCggc3RkOjpwYWlyPEl0ZXJhdG9yLEl0ZXJhdG9yPiYgcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwLnNlY29uZDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gYXJyYXkKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIGlubGluZSBjb25zdCBUKiByYW5nZV9lbmQoIGNvbnN0IFQgKCZhKVtzel0gKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjphcnJheV9lbmQ8VCxzej4oIGEgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIGlubGluZSBUKiByYW5nZV9lbmQoIFQgKCZhKVtzel0gKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjphcnJheV9lbmQ8VCxzej4oIGEgKTsKLSAgICAgICAgfQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLX0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0jZW5kaWYKLQotbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi17Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFQ+Ojp0eXBlIGVuZCggVCYgciApCi17Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLSAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsOwotI2VuZGlmCi0gICAgcmV0dXJuIHJhbmdlX2VuZCggciApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxjb25zdCBUPjo6dHlwZSBlbmQoIGNvbnN0IFQmIHIgKQotewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAvKiovCi0gICAgdXNpbmcgbmFtZXNwYWNlIHJhbmdlX2RldGFpbDsKLSNlbmRpZgotICAgIHJldHVybiByYW5nZV9lbmQoIHIgKTsKLX0KLQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICAgICAgaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Y29uc3QgVD46OnR5cGUKLSAgICAgICAgY29uc3RfZW5kKCBjb25zdCBUJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9hZGxfYmFycmllcjo6ZW5kKCByICk7Ci0gICAgICAgIH0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotICAgIHVzaW5nIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcjsKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2Z1bmN0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2Z1bmN0aW9ucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhYTIxMjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9mdW5jdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDYuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfRlVOQ1RJT05TX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9GVU5DVElPTlNfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2Uvc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGlzdGFuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VtcHR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9yYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3JlbmQuaHBwPgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhMTEwYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9JVEVSQVRPUl9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL211dGFibGVfaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzEwKQotCi0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbF92YzdfMQotICAgIHsKLSAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQywgdHlwZW5hbWUgU2lnID0gdm9pZChDKSA+Ci0gICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yCi0gICAgICAgewotICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgIG1wbDo6ZXZhbF9pZl9jPCBpc19jb25zdDxDPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8IHR5cGVuYW1lIHJlbW92ZV9jb25zdDxDPjo6dHlwZSA+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX211dGFibGVfaXRlcmF0b3I8Qz4gPjo6dHlwZSB0eXBlOwotICAgICAgIH07Ci0KLSAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQywgdHlwZW5hbWUgVCA+Ci0gICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yPCBDLCB2b2lkKFRbXSkgPgotICAgICAgIHsKLSAgICAgICAgICAgdHlwZWRlZiBUKiB0eXBlOwotICAgICAgIH07Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3IKLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzEwKQotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICAgcmFuZ2VfZGV0YWlsX3ZjN18xOjpyYW5nZV9pdGVyYXRvcjxDPjo6dHlwZSB0eXBlOwotCi0jZWxzZQotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgbXBsOjpldmFsX2lmX2M8IGlzX2NvbnN0PEM+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjwgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0PEM+Ojp0eXBlID4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcjxDPiA+Ojp0eXBlIHR5cGU7Ci0KLSNlbmRpZgotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTA4YWFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgTmVpbCBHcm92ZXMgMjAwOS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfUkFOR0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0lURVJBVE9SX1JBTkdFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSAibmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfY29yZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfaW8uaHBwIgotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfY29yZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlOTdlMmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1MyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBOZWlsIEdyb3ZlcyAmIFRob3JzdGVuIE90dG9zZW4gJiBQYXZvbCBEcm9iYSAyMDAzLTIwMDQuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0lURVJBVE9SX1JBTkdFX0NPUkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0lURVJBVE9SX1JBTkdFX0NPUkVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBEZWZpbmUgX19TVExfQ09ORklHX0gsIGlmIGFwcHJvcHJpYXRlLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDE1MDApKQotICAgICNwcmFnbWEgd2FybmluZyggcHVzaCApCi0gICAgI3ByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDk5NiApCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9mYWNhZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9mdW5jdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kaWZmZXJlbmNlX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2FsZ29yaXRobS9lcXVhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NhZmVfYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0vKiEgXGZpbGUKLSAgICBEZWZpbmVzIHRoZSBcYyBpdGVyYXRvcl9jbGFzcyBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCi0gICAgXGMgaXRlcmF0b3JfcmFuZ2UgaXMgYSBzaW1wbGUgd3JhcHBlciBvZiBpdGVyYXRvciBwYWlyIGlkaW9tLiBJdCBwcm92aWRlcwotICAgIGEgcmljaCBzdWJzZXQgb2YgQ29udGFpbmVyIGludGVyZmFjZS4KLSovCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIGl0ZXJhdG9yX3JhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gVGhlIGZ1bmN0aW9ucyBhZGxfYmVnaW4gYW5kIGFkbF9lbmQgYXJlIGltcGxlbWVudGVkIGluIGEgc2VwYXJhdGUKLSAgICAgICAgLy8gY2xhc3MgZm9yIGdjYy0yLjl4Ci0gICAgICAgIC8vCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yVD4KLSAgICAgICAgc3RydWN0IGl0ZXJhdG9yX3JhbmdlX2ltcGwgewotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgICAgICBzdGF0aWMgSXRlcmF0b3JUIGFkbF9iZWdpbiggRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlcmF0b3JUPiggbmRuYm9vc3Q6OmJlZ2luKCByICkgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgICAgICBzdGF0aWMgSXRlcmF0b3JUIGFkbF9lbmQoIEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZXJhdG9yVD4oIG5kbmJvb3N0OjplbmQoIHIgKSApOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodCA+Ci0gICAgICAgIGlubGluZSBib29sIGxlc3NfdGhhbiggY29uc3QgTGVmdCYgbCwgY29uc3QgUmlnaHQmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZSggbmRuYm9vc3Q6OmJlZ2luKGwpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjplbmQobCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmJlZ2luKHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjplbmQocikgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0ID4KLSAgICAgICAgaW5saW5lIGJvb2wgZ3JlYXRlcl90aGFuKCBjb25zdCBMZWZ0JiBsLCBjb25zdCBSaWdodCYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsZXNzX3RoYW4ocixsKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0ID4KLSAgICAgICAgaW5saW5lIGJvb2wgbGVzc19vcl9lcXVhbF90aGFuKCBjb25zdCBMZWZ0JiBsLCBjb25zdCBSaWdodCYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX3RoYW4ocixsKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0ID4KLSAgICAgICAgaW5saW5lIGJvb2wgZ3JlYXRlcl9vcl9lcXVhbF90aGFuKCBjb25zdCBMZWZ0JiBsLCBjb25zdCBSaWdodCYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX3RoYW4obCxyKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRoaXMgdmVyc2lvbiBpcyBtYWludGFpbmVkIHNpbmNlIGl0IGlzIHVzZWQgaW4gb3RoZXIgYm9vc3QgbGlicmFyaWVzCi0gICAgICAgIC8vIHN1Y2ggYXMgQm9vc3QuQXNzaWduCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodCA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsKGNvbnN0IExlZnQmIGwsIGNvbnN0IFJpZ2h0JiByKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmVxdWFsKGwsIHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RydWN0IHJhbmdlX3RhZyB7IH07Ci0gICAgICAgIHN0cnVjdCBjb25zdF9yYW5nZV90YWcgeyB9OwotICAgIH0KLQotLy8gIGl0ZXJhdG9yIHJhbmdlIHRlbXBsYXRlIGNsYXNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgaXRlcmF0b3JfcmFuZ2UgY2xhc3MKLSAgICAgICAgLyohCi0gICAgICAgICAgICBBbiBcYyBpdGVyYXRvcl9yYW5nZSBkZWxpbWl0cyBhIHJhbmdlIGluIGEgc2VxdWVuY2UgYnkgYmVnaW5uaW5nIGFuZCBlbmRpbmcgaXRlcmF0b3JzLgotICAgICAgICAgICAgQW4gaXRlcmF0b3JfcmFuZ2UgY2FuIGJlIHBhc3NlZCB0byBhbiBhbGdvcml0aG0gd2hpY2ggcmVxdWlyZXMgYSBzZXF1ZW5jZSBhcyBhbiBpbnB1dC4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgXGMgdG91cHBlcigpIGZ1bmN0aW9uIG1heSBiZSB1c2VkIG1vc3QgZnJlcXVlbnRseSBvbiBzdHJpbmdzLAotICAgICAgICAgICAgYnV0IGNhbiBhbHNvIGJlIHVzZWQgb24gaXRlcmF0b3JfcmFuZ2VzOgotCi0gICAgICAgICAgICBcY29kZQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0b2xvd2VyKCBmaW5kKCBzLCAiVVBQRVJDQVNFIFNUUklORyIgKSApOwotICAgICAgICAgICAgXGVuZGNvZGUKLQotICAgICAgICAgICAgTWFueSBhbGdvcml0aG1zIHdvcmtpbmcgd2l0aCBzZXF1ZW5jZXMgdGFrZSBhIHBhaXIgb2YgaXRlcmF0b3JzLAotICAgICAgICAgICAgZGVsaW1pdGluZyBhIHdvcmtpbmcgcmFuZ2UsIGFzIGFuIGFyZ3VtZW50cy4gVGhlIFxjIGl0ZXJhdG9yX3JhbmdlIGNsYXNzIGlzIGFuCi0gICAgICAgICAgICBlbmNhcHN1bGF0aW9uIG9mIGEgcmFuZ2UgaWRlbnRpZmllZCBieSBhIHBhaXIgb2YgaXRlcmF0b3JzLgotICAgICAgICAgICAgSXQgcHJvdmlkZXMgYSBjb2xsZWN0aW9uIGludGVyZmFjZSwKLSAgICAgICAgICAgIHNvIGl0IGlzIHBvc3NpYmxlIHRvIHBhc3MgYW4gaW5zdGFuY2UgdG8gYW4gYWxnb3JpdGhtIHJlcXVpcmluZyBhIGNvbGxlY3Rpb24gYXMgYW4gaW5wdXQuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yVD4KLSAgICAgICAgY2xhc3MgaXRlcmF0b3JfcmFuZ2UKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiByYW5nZV9kZXRhaWw6OnNhZmVfYm9vbDwgSXRlcmF0b3JUIGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD46OiogPiBzYWZlX2Jvb2xfdDsKLSAgICAgICAgcHJvdGVjdGVkOiAvLyBVc2VkIGJ5IHN1Yl9yYW5nZQotICAgICAgICAgICAgLy8hIGltcGxlbWVudGF0aW9uIGNsYXNzCi0gICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6aXRlcmF0b3JfcmFuZ2VfaW1wbDxJdGVyYXRvclQ+IGltcGw7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIC8vISB0aGlzIHR5cGUKLSAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiB0eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHNhZmVfYm9vbF90Ojp1bnNwZWNpZmllZF9ib29sX3R5cGUgdW5zcGVjaWZpZWRfYm9vbF90eXBlOwotICAgICAgICAgICAgLy9ORE5CT09TVF9CUk9LRU5fQ09NUElMRVJfVFlQRV9UUkFJVFNfU1BFQ0lBTElaQVRJT04odmFsdWVfdHlwZSk7Ci0KLSAgICAgICAgICAgIC8vISBFbmNhcHN1bGF0ZWQgdmFsdWUgdHlwZQotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgICAgaXRlcmF0b3JfdmFsdWU8SXRlcmF0b3JUPjo6dHlwZSB2YWx1ZV90eXBlOwotCi0gICAgICAgICAgICAvLyEgRGlmZmVyZW5jZSB0eXBlCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9kaWZmZXJlbmNlPEl0ZXJhdG9yVD46OnR5cGUgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgICAgICAvLyEgU2l6ZSB0eXBlCi0gICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsgLy8gbm90ZTogbXVzdCBiZSB1bnNpZ25lZAotCi0gICAgICAgICAgICAvLyEgVGhpcyB0eXBlCi0gICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4gdGhpc190eXBlOwotCi0gICAgICAgICAgICAvLyEgUmVmZXJlbmNlIHR5cGUKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBOZWVkZWQgYmVjYXVzZSB2YWx1ZS10eXBlIGlzIHRoZSBzYW1lIGZvcgotICAgICAgICAgICAgLy8gY29uc3QgYW5kIG5vbi1jb25zdCBpdGVyYXRvcnMKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yZWZlcmVuY2U8SXRlcmF0b3JUPjo6dHlwZSByZWZlcmVuY2U7Ci0KLSAgICAgICAgICAgIC8vISBjb25zdF9pdGVyYXRvciB0eXBlCi0gICAgICAgICAgICAvKiEKLSAgICAgICAgICAgICAgICBUaGVyZSBpcyBubyBkaXN0aW5jdGlvbiBiZXR3ZWVuIGNvbnN0X2l0ZXJhdG9yIGFuZCBpdGVyYXRvci4KLSAgICAgICAgICAgICAgICBUaGVzZSB0eXBlZGVmcyBhcmUgcHJvdmlkZXMgdG8gZnVsZmlsbCBjb250YWluZXIgaW50ZXJmYWNlCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdHlwZWRlZiBJdGVyYXRvclQgY29uc3RfaXRlcmF0b3I7Ci0gICAgICAgICAgICAvLyEgaXRlcmF0b3IgdHlwZQotICAgICAgICAgICAgdHlwZWRlZiBJdGVyYXRvclQgaXRlcmF0b3I7Ci0KLSAgICAgICAgcHJpdmF0ZTogLy8gZm9yIHJldHVybiB2YWx1ZSBvZiBvcGVyYXRvcigpKCkKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmlmXzwgbmRuYm9vc3Q6Om1wbDo6b3JfPCBuZG5ib29zdDo6aXNfYWJzdHJhY3Q8IHZhbHVlX3R5cGUgPiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19hcnJheTwgdmFsdWVfdHlwZSA+ID4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UsIHZhbHVlX3R5cGUgPjo6dHlwZSBhYnN0cmFjdF92YWx1ZV90eXBlOwotCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlKCkgOiBtX0JlZ2luKCBpdGVyYXRvcigpICksIG1fRW5kKCBpdGVyYXRvcigpICkKLSAgICAgICAgICAgIHsgfQotCi0gICAgICAgICAgICAvLyEgQ29uc3RydWN0b3IgZnJvbSBhIHBhaXIgb2YgaXRlcmF0b3JzCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IgPgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UoIEl0ZXJhdG9yIEJlZ2luLCBJdGVyYXRvciBFbmQgKSA6Ci0gICAgICAgICAgICAgICAgbV9CZWdpbihCZWdpbiksIG1fRW5kKEVuZCkKLSAgICAgICAgICAgIHt9Ci0KLSAgICAgICAgICAgIC8vISBDb25zdHJ1Y3RvciBmcm9tIGEgUmFuZ2UKLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSggY29uc3QgUmFuZ2UmIHIgKSA6Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiggaW1wbDo6YWRsX2JlZ2luKCByICkgKSwgbV9FbmQoIGltcGw6OmFkbF9lbmQoIHIgKSApCi0gICAgICAgICAgICB7fQotCi0gICAgICAgICAgICAvLyEgQ29uc3RydWN0b3IgZnJvbSBhIFJhbmdlCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UoIFJhbmdlJiByICkgOgotICAgICAgICAgICAgICAgIG1fQmVnaW4oIGltcGw6OmFkbF9iZWdpbiggciApICksIG1fRW5kKCBpbXBsOjphZGxfZW5kKCByICkgKQotICAgICAgICAgICAge30KLQotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yIGZyb20gYSBSYW5nZQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlKCBjb25zdCBSYW5nZSYgciwgaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpjb25zdF9yYW5nZV90YWcgKSA6Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiggaW1wbDo6YWRsX2JlZ2luKCByICkgKSwgbV9FbmQoIGltcGw6OmFkbF9lbmQoIHIgKSApCi0gICAgICAgICAgICB7fQotCi0gICAgICAgICAgICAvLyEgQ29uc3RydWN0b3IgZnJvbSBhIFJhbmdlCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UoIFJhbmdlJiByLCBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OnJhbmdlX3RhZyApIDoKLSAgICAgICAgICAgICAgICBtX0JlZ2luKCBpbXBsOjphZGxfYmVnaW4oIHIgKSApLCBtX0VuZCggaW1wbDo6YWRsX2VuZCggciApICkKLSAgICAgICAgICAgIHt9Ci0KLSAgICAgICAgICAgICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgICAgICB0aGlzX3R5cGUmIG9wZXJhdG9yPSggY29uc3QgdGhpc190eXBlJiByICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtX0JlZ2luICA9IHIuYmVnaW4oKTsKLSAgICAgICAgICAgICAgICBtX0VuZCAgICA9IHIuZW5kKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgI2VuZGlmCi0KLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvciA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSYgb3BlcmF0b3I9KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcj4mIHIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1fQmVnaW4gID0gci5iZWdpbigpOwotICAgICAgICAgICAgICAgIG1fRW5kICAgID0gci5lbmQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UmIG9wZXJhdG9yPSggRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtX0JlZ2luICA9IGltcGw6OmFkbF9iZWdpbiggciApOwotICAgICAgICAgICAgICAgIG1fRW5kICAgID0gaW1wbDo6YWRsX2VuZCggciApOwotICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSYgb3BlcmF0b3I9KCBjb25zdCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1fQmVnaW4gID0gaW1wbDo6YWRsX2JlZ2luKCByICk7Ci0gICAgICAgICAgICAgICAgbV9FbmQgICAgPSBpbXBsOjphZGxfZW5kKCByICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBJdGVyYXRvclQgYmVnaW4oKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtX0JlZ2luOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBJdGVyYXRvclQgZW5kKCkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9FbmQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZSBzaXplKCkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9FbmQgLSBtX0JlZ2luOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIGVtcHR5KCkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9CZWdpbiA9PSBtX0VuZDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb3BlcmF0b3IgdW5zcGVjaWZpZWRfYm9vbF90eXBlKCkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2FmZV9ib29sX3Q6OnRvX3Vuc3BlY2lmaWVkX2Jvb2wobV9CZWdpbiAhPSBtX0VuZCwgJml0ZXJhdG9yX3JhbmdlOjptX0JlZ2luKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIGVxdWFsKCBjb25zdCBpdGVyYXRvcl9yYW5nZSYgciApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fQmVnaW4gPT0gci5tX0JlZ2luICYmIG1fRW5kID09IHIubV9FbmQ7Ci0gICAgICAgICAgICB9Ci0KLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgaXRlcmF0b3JfcmFuZ2UmIHIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXF1YWwoICp0aGlzLCByICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgaXRlcmF0b3JfcmFuZ2UmIHIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAhb3BlcmF0b3I9PShyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICBib29sIG9wZXJhdG9yPCggY29uc3QgaXRlcmF0b3JfcmFuZ2UmIHIgKSBjb25zdAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX3RoYW4oICp0aGlzLCByICk7Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgCi0gICAgICAgICAgIGJvb2wgb3BlcmF0b3I+KCBjb25zdCBpdGVyYXRvcl9yYW5nZSYgciApIGNvbnN0Ci0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmdyZWF0ZXJfdGhhbiggKnRoaXMsIHIgKTsKLSAgICAgICAgICAgfQotICAgICAgICAgICAKLSAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw9KCBjb25zdCBpdGVyYXRvcl9yYW5nZSYgciApIGNvbnN0Ci0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3Nfb3JfZXF1YWxfdGhhbiggKnRoaXMsIHIgKTsKLSAgICAgICAgICAgfQotICAgICAgICAgICAKLSAgICAgICAgICAgYm9vbCBvcGVyYXRvcj49KCBjb25zdCBpdGVyYXRvcl9yYW5nZSYgciApIGNvbnN0Ci0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmdyZWF0ZXJfb3JfZXF1YWxfdGhhbiggKnRoaXMsIHIgKTsKLSAgICAgICAgICAgfQotCi0jZW5kaWYKLQotICAgICAgICBwdWJsaWM6IC8vIGNvbnZlbmllbmNlCi0gICAgICAgICAgIHJlZmVyZW5jZSBmcm9udCgpIGNvbnN0Ci0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCggIWVtcHR5KCkgKTsKLSAgICAgICAgICAgICAgIHJldHVybiAqbV9CZWdpbjsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIHJlZmVyZW5jZSBiYWNrKCkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCAhZW1wdHkoKSApOwotICAgICAgICAgICAgICAgSXRlcmF0b3JUIGxhc3QoIG1fRW5kICk7Ci0gICAgICAgICAgICAgICByZXR1cm4gKi0tbGFzdDsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIC8vIHBvcF9mcm9udCgpIC0gYWRkZWQgdG8gbW9kZWwgdGhlIFNpbmdsZVBhc3NSYW5nZVByaW1pdGl2ZUNvbmNlcHQKLSAgICAgICAgICAgdm9pZCBwb3BfZnJvbnQoKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoICFlbXB0eSgpICk7Ci0gICAgICAgICAgICAgICArK21fQmVnaW47Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICAvLyBwb3BfYmFjaygpIC0gYWRkZWQgdG8gbW9kZWwgdGhlIEJpZGlyZWN0aW9uYWxSYW5nZVByaW1pdGl2ZUNvbmNlcHQKLSAgICAgICAgICAgdm9pZCBwb3BfYmFjaygpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCggIWVtcHR5KCkgKTsKLSAgICAgICAgICAgICAgIC0tbV9FbmQ7Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICByZWZlcmVuY2Ugb3BlcmF0b3JbXSggZGlmZmVyZW5jZV90eXBlIGF0ICkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBhdCA+PSAwICYmIGF0IDwgc2l6ZSgpICk7Ci0gICAgICAgICAgICAgICByZXR1cm4gbV9CZWdpblthdF07Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICAvLwotICAgICAgICAgICAvLyBXaGVuIHN0b3JpbmcgdHJhbnNmb3JtIGl0ZXJhdG9ycywgb3BlcmF0b3JbXSgpCi0gICAgICAgICAgIC8vIGZhaWxzIGJlY2F1c2UgaXQgcmV0dXJucyBieSByZWZlcmVuY2UuIFRoZXJlZm9yZQotICAgICAgICAgICAvLyBvcGVyYXRvcigpKCkgaXMgcHJvdmlkZWQgZm9yIHRoZXNlIGNhc2VzLgotICAgICAgICAgICAvLwotICAgICAgICAgICBhYnN0cmFjdF92YWx1ZV90eXBlIG9wZXJhdG9yKCkoIGRpZmZlcmVuY2VfdHlwZSBhdCApIGNvbnN0Ci0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCggYXQgPj0gMCAmJiBhdCA8IHNpemUoKSApOwotICAgICAgICAgICAgICAgcmV0dXJuIG1fQmVnaW5bYXRdOwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UmIGFkdmFuY2VfYmVnaW4oIGRpZmZlcmVuY2VfdHlwZSBuICkKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgc3RkOjphZHZhbmNlKCBtX0JlZ2luLCBuICk7Ci0gICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSYgYWR2YW5jZV9lbmQoIGRpZmZlcmVuY2VfdHlwZSBuICkKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgc3RkOjphZHZhbmNlKCBtX0VuZCwgbiApOwotICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIC8vIGJlZ2luIGFuZCBlbmQgaXRlcmF0b3JzCi0gICAgICAgICAgICBJdGVyYXRvclQgbV9CZWdpbjsKLSAgICAgICAgICAgIEl0ZXJhdG9yVCBtX0VuZDsKLQotICAgICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gQWxsb3cgc3ViY2xhc3NlcyBhbiBlYXN5IHdheSB0byBhY2Nlc3MgdGhlCi0gICAgICAgICAgICAvLyBiYXNlIHR5cGUKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlIGl0ZXJhdG9yX3JhbmdlXzsKLSAgICAgICAgfTsKLQotLy8gIGl0ZXJhdG9yIHJhbmdlIGZyZWUtc3RhbmRpbmcgb3BlcmF0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGNvbXBhcmlzb24gb3BlcmF0b3JzCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNvbnN0IEZvcndhcmRSYW5nZSYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXF1YWwoIGwsIHIgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IEZvcndhcmRSYW5nZSYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhbmRuYm9vc3Q6OmVxdWFsKCBsLCByICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IEZvcndhcmRSYW5nZSYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc190aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPD0oIGNvbnN0IEZvcndhcmRSYW5nZSYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3Nfb3JfZXF1YWxfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj4oIGNvbnN0IEZvcndhcmRSYW5nZSYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPj0oIGNvbnN0IEZvcndhcmRSYW5nZSYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmdyZWF0ZXJfb3JfZXF1YWxfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotI2Vsc2UKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yMVQsIGNsYXNzIEl0ZXJhdG9yMlQgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjFUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IyVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmVxdWFsKCBsLCByICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmVxdWFsKCBsLCByICk7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvcjFULCBjbGFzcyBJdGVyYXRvcjJUID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IxVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMlQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFuZG5ib29zdDo6ZXF1YWwoIGwsIHIgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhbmRuYm9vc3Q6OmVxdWFsKCBsLCByICk7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvcjFULCBjbGFzcyBJdGVyYXRvcjJUID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjFUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjJUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3NfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3NfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IxVCwgY2xhc3MgSXRlcmF0b3IyVCA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPD0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMVQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjJUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3Nfb3JfZXF1YWxfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX29yX2VxdWFsX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yMVQsIGNsYXNzIEl0ZXJhdG9yMlQgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj4oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMVQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMlQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPiggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yMVQsIGNsYXNzIEl0ZXJhdG9yMlQgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj49KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjFUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IyVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX29yX2VxdWFsX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+PSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl9vcl9lcXVhbF90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLS8vICBpdGVyYXRvciByYW5nZSB1dGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBpdGVyYXRvcl9yYW5nZSBjb25zdHJ1Y3QgaGVscGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IGFuIFxjIGl0ZXJhdG9yX3JhbmdlIGZyb20gYSBwYWlyIG9mIGl0ZXJhdG9ycwotCi0gICAgICAgICAgICBccGFyYW0gQmVnaW4gQSBiZWdpbiBpdGVyYXRvcgotICAgICAgICAgICAgXHBhcmFtIEVuZCBBbiBlbmQgaXRlcmF0b3IKLSAgICAgICAgICAgIFxyZXR1cm4gaXRlcmF0b3JfcmFuZ2Ugb2JqZWN0Ci0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvclQgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IEl0ZXJhdG9yVCA+Ci0gICAgICAgIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIEl0ZXJhdG9yVCBCZWdpbiwgSXRlcmF0b3JUIEVuZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+KCBCZWdpbiwgRW5kICk7Ci0gICAgICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFJhbmdlID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgICAgICAgICAgKCBuZG5ib29zdDo6YmVnaW4oIHIgKSwgbmRuYm9vc3Q6OmVuZCggciApICk7Ci0gICAgICAgIH0KLQotI2Vsc2UKLSAgICAgICAgLy8hIGl0ZXJhdG9yX3JhbmdlIGNvbnN0cnVjdCBoZWxwZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3QgYW4gXGMgaXRlcmF0b3JfcmFuZ2UgZnJvbSBhIFxjIFJhbmdlIGNvbnRhaW5pbmcgdGhlIGJlZ2luCi0gICAgICAgICAgICBhbmQgZW5kIGl0ZXJhdG9ycy4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxGb3J3YXJkUmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgbWFrZV9pdGVyYXRvcl9yYW5nZSggRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Rm9yd2FyZFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgICAgICAgICAgKCByLCBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OnJhbmdlX3RhZygpICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IEZvcndhcmRSYW5nZT46OnR5cGUgPgotICAgICAgICBtYWtlX2l0ZXJhdG9yX3JhbmdlKCBjb25zdCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxjb25zdCBGb3J3YXJkUmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgICAgICAgICAoIHIsIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Y29uc3RfcmFuZ2VfdGFnKCkgKTsKLSAgICAgICAgfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotICAgICAgICBuYW1lc3BhY2UgaXRlcmF0b3JfcmFuZ2VfZGV0YWlsCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgICAgIG1ha2VfcmFuZ2VfaW1wbCggUmFuZ2UmIHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxSYW5nZT46OnR5cGUgYWR2YW5jZV9iZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2VuZCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAvLyBOb3Qgd29ydGggdGhlIGVmZm9ydAotICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgLy9pZiggYWR2YW5jZV9iZWdpbiA9PSAwICYmIGFkdmFuY2VfZW5kID09IDAgKQotICAgICAgICAgICAgICAgIC8vICAgIHJldHVybiBtYWtlX2l0ZXJhdG9yX3JhbmdlKCByICk7Ci0gICAgICAgICAgICAgICAgLy8KLQotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlCi0gICAgICAgICAgICAgICAgICAgIG5ld19iZWdpbiA9IG5kbmJvb3N0OjpiZWdpbiggciApLAotICAgICAgICAgICAgICAgICAgICBuZXdfZW5kICAgPSBuZG5ib29zdDo6ZW5kKCByICk7Ci0gICAgICAgICAgICAgICAgc3RkOjphZHZhbmNlKCBuZXdfYmVnaW4sIGFkdmFuY2VfYmVnaW4gKTsKLSAgICAgICAgICAgICAgICBzdGQ6OmFkdmFuY2UoIG5ld19lbmQsIGFkdmFuY2VfZW5kICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIG5ld19iZWdpbiwgbmV3X2VuZCApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGUgPgotICAgICAgICBtYWtlX2l0ZXJhdG9yX3JhbmdlKCBSYW5nZSYgciwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2JlZ2luLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfZW5kICkKLSAgICAgICAgewotICAgICAgICAgICAgLy9ORE5CT09TVF9BU1NFUlQoIGFkdmFuY2VfYmVnaW4gLSBhZHZhbmNlX2VuZCA8PSBzaXplKHIpICYmICJjcmVhdGluZyBpbnZhbGlkIHJhbmdlIiApOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bWFrZV9yYW5nZV9pbXBsKCByLCBhZHZhbmNlX2JlZ2luLCBhZHZhbmNlX2VuZCApOwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIFJhbmdlJiByLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfYmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxSYW5nZT46OnR5cGUgYWR2YW5jZV9lbmQgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvL05ETkJPT1NUX0FTU0VSVCggYWR2YW5jZV9iZWdpbiAtIGFkdmFuY2VfZW5kIDw9IHNpemUocikgJiYgImNyZWF0aW5nIGludmFsaWQgcmFuZ2UiICk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjptYWtlX3JhbmdlX2ltcGwoIHIsIGFkdmFuY2VfYmVnaW4sIGFkdmFuY2VfZW5kICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Y29uc3QgUmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgbWFrZV9pdGVyYXRvcl9yYW5nZSggY29uc3QgUmFuZ2UmIHIsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxSYW5nZT46OnR5cGUgYWR2YW5jZV9iZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2VuZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vTkROQk9PU1RfQVNTRVJUKCBhZHZhbmNlX2JlZ2luIC0gYWR2YW5jZV9lbmQgPD0gc2l6ZShyKSAmJiAiY3JlYXRpbmcgaW52YWxpZCByYW5nZSIgKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Om1ha2VfcmFuZ2VfaW1wbCggciwgYWR2YW5jZV9iZWdpbiwgYWR2YW5jZV9lbmQgKTsKLSAgICAgICAgfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotICAgICAgICAvLyEgY29weSBhIHJhbmdlIGludG8gYSBzZXF1ZW5jZQotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCBhIG5ldyBzZXF1ZW5jZSBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgZnJvbSB0aGUgZWxlbWVudHMKLSAgICAgICAgICAgIGluIHRoZSBnaXZlbiByYW5nZQotCi0gICAgICAgICAgICBccGFyYW0gUmFuZ2UgQW4gaW5wdXQgcmFuZ2UKLSAgICAgICAgICAgIFxyZXR1cm4gTmV3IHNlcXVlbmNlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXFULCB0eXBlbmFtZSBSYW5nZSA+Ci0gICAgICAgIGlubGluZSBTZXFUIGNvcHlfcmFuZ2UoIGNvbnN0IFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFNlcVQoIG5kbmJvb3N0OjpiZWdpbiggciApLCBuZG5ib29zdDo6ZW5kKCByICkgKTsKLSAgICAgICAgfQotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIE5ETkJPT1NUX1RFU1RFRF9BVCgxNTAwKSkKLSAgICAjcHJhZ21hIHdhcm5pbmcoIHBvcCApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfaW8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9pby5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ODY2MjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9pby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBOZWlsIEdyb3ZlcyAyMDA5LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9JVEVSQVRPUl9SQU5HRV9JT19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfUkFOR0VfSU9fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDE1MDApKQotICAgICNwcmFnbWEgd2FybmluZyggcHVzaCApCi0gICAgI3ByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDk5NiApCi0jZW5kaWYKLQotLy8gRnJvbSBuZG5ib29zdC9keW5hbWljX2JpdHNldC5ocHA7IHRoYW5rcyB0byBNYXR0aGlhcyBUcm95ZXIgZm9yIENyYXkgWDEgcGF0Y2guCi0jaWZuZGVmIE5ETkJPT1NUX09MRF9JT1NUUkVBTVMgCi0jIGlmIGRlZmluZWQoX19TVExfQ09ORklHX0gpICYmIFwKLSAgICAhZGVmaW5lZCAoX19TVExfVVNFX05FV19JT1NUUkVBTVMpICYmICFkZWZpbmVkKF9fY3JheXgxKSBcCi0gICAgLyoqLwotIyAgZGVmaW5lIE5ETkJPT1NUX09MRF9JT1NUUkVBTVMKLSMgZW5kaWYKLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX09MRF9JT1NUUkVBTVMKLQotI2lmbmRlZiBfU1RMUF9OT19JT1NUUkVBTVMKLSMgaWZuZGVmIE5ETkJPT1NUX09MRF9JT1NUUkVBTVMKLSMgIGluY2x1ZGUgPG9zdHJlYW0+Ci0jIGVsc2UKLSMgIGluY2x1ZGUgPG9zdHJlYW0uaD4KLSMgZW5kaWYKLSNlbmRpZiAvLyBfU1RMUF9OT19JT1NUUkVBTVMKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2NvcmUuaHBwPgotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmbmRlZiBfU1RMUF9OT19JT1NUUkVBTVMKLSMgaWZuZGVmIE5ETkJPT1NUX09MRF9JT1NUUkVBTVMgICAKLQotICAgICAgICAvLyEgaXRlcmF0b3JfcmFuZ2Ugb3V0cHV0IG9wZXJhdG9yCi0gICAgICAgIC8qIQotICAgICAgICAgICAgT3V0cHV0IHRoZSByYW5nZSB0byBhbiBvc3RyZWFtLiBFbGVtZW50cyBhcmUgb3V0cHV0dGVkCi0gICAgICAgICAgICBpbiBhIHNlcXVlbmNlIHdpdGhvdXQgc2VwYXJhdG9ycy4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yVCwgdHlwZW5hbWUgRWxlbSwgdHlwZW5hbWUgVHJhaXRzID4KLSAgICAgICAgaW5saW5lIHN0ZDo6YmFzaWNfb3N0cmVhbTxFbGVtLFRyYWl0cz4mIG9wZXJhdG9yPDwoIAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX29zdHJlYW08RWxlbSwgVHJhaXRzPiYgT3MsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNvcHkoIHIuYmVnaW4oKSwgci5lbmQoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl92YWx1ZTxJdGVyYXRvclQ+Ojp0eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtLCBUcmFpdHM+KE9zKSApOwotICAgICAgICAgICAgcmV0dXJuIE9zOwotICAgICAgICB9Ci0KLSMgZWxzZQotCi0gICAgICAgIC8vISBpdGVyYXRvcl9yYW5nZSBvdXRwdXQgb3BlcmF0b3IKLSAgICAgICAgLyohCi0gICAgICAgICAgICBPdXRwdXQgdGhlIHJhbmdlIHRvIGFuIG9zdHJlYW0uIEVsZW1lbnRzIGFyZSBvdXRwdXR0ZWQKLSAgICAgICAgICAgIGluIGEgc2VxdWVuY2Ugd2l0aG91dCBzZXBhcmF0b3JzLgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3JUID4KLSAgICAgICAgaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCggCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbSYgT3MsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNvcHkoIHIuYmVnaW4oKSwgci5lbmQoKSwgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yPGNoYXI+KE9zKSk7Ci0gICAgICAgICAgICByZXR1cm4gT3M7Ci0gICAgICAgIH0KLQotIyBlbmRpZgotI2VuZGlmIC8vIF9TVExQX05PX0lPU1RSRUFNUwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jdW5kZWYgTkROQk9PU1RfT0xEX0lPU1RSRUFNUwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCBORE5CT09TVF9URVNURURfQVQoMTUwMCkpCi0gICAgI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9tdXRhYmxlX2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvbXV0YWJsZV9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MTgzYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9tdXRhYmxlX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX01VVEFCTEVfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX01VVEFCTEVfSVRFUkFUT1JfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvaXRlcmF0b3IuaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9leHRyYWN0X29wdGlvbmFsX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGRlZmF1bHQKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIAotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgewotICAgICAgICBORE5CT09TVF9SQU5HRV9FWFRSQUNUX09QVElPTkFMX1RZUEUoIGl0ZXJhdG9yICkKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgc3RydWN0IHJhbmdlX211dGFibGVfaXRlcmF0b3IgOiByYW5nZV9kZXRhaWw6OmV4dHJhY3RfaXRlcmF0b3I8Qz4KLSAgICB7fTsKLSAgICAKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIHBhaXIKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4KLSAgICBzdHJ1Y3QgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcjwgc3RkOjpwYWlyPEl0ZXJhdG9yLEl0ZXJhdG9yPiA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gYXJyYXkKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICBzdHJ1Y3QgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcjwgVFtzel0gPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUKiB0eXBlOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yYmVnaW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yYmVnaW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODg1OGYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmJlZ2luLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX1JCRUdJTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfUkJFR0lOX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvcmV2ZXJzZV9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotdGVtcGxhdGU8IGNsYXNzIEMgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxDPjo6dHlwZQotcmJlZ2luKCBDJiBjICkKLXsKLSAgICByZXR1cm4gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlKCBuZG5ib29zdDo6ZW5kKCBjICkgKTsKLX0KLQotI2Vsc2UKLQotdGVtcGxhdGU8IGNsYXNzIEMgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxDPjo6dHlwZQotcmJlZ2luKCBDJiBjICkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxDPjo6dHlwZQotICAgICAgICBpdGVyX3R5cGU7Ci0gICAgcmV0dXJuIGl0ZXJfdHlwZSggbmRuYm9vc3Q6OmVuZCggYyApICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBDID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Y29uc3QgQz46OnR5cGUKLXJiZWdpbiggY29uc3QgQyYgYyApCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Y29uc3QgQz46OnR5cGUKLSAgICAgICAgaXRlcl90eXBlOwotICAgIHJldHVybiBpdGVyX3R5cGUoIG5kbmJvb3N0OjplbmQoIGMgKSApOwotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxjb25zdCBUPjo6dHlwZQotY29uc3RfcmJlZ2luKCBjb25zdCBUJiByICkKLXsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnJiZWdpbiggciApOwotfQotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JlbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yZW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY4MGNhNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JlbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfUkVORF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfUkVORF9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvcmV2ZXJzZV9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotdGVtcGxhdGU8IGNsYXNzIEMgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxDPjo6dHlwZQotcmVuZCggQyYgYyApCi17Ci0gICAgcmV0dXJuIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxDPjo6dHlwZSggbmRuYm9vc3Q6OmJlZ2luKCBjICkgKTsKLX0KLQotI2Vsc2UKLQotdGVtcGxhdGU8IGNsYXNzIEMgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxDPjo6dHlwZQotcmVuZCggQyYgYyApCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Qz46OnR5cGUKLSAgICAgICAgICAgICAgIGl0ZXJfdHlwZTsKLSAgICByZXR1cm4gaXRlcl90eXBlKCBuZG5ib29zdDo6YmVnaW4oIGMgKSApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgQyA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPGNvbnN0IEM+Ojp0eXBlCi1yZW5kKCBjb25zdCBDJiBjICkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxjb25zdCBDPjo6dHlwZQotICAgICAgICBpdGVyX3R5cGU7Ci0gICAgcmV0dXJuIGl0ZXJfdHlwZSggbmRuYm9vc3Q6OmJlZ2luKCBjICkgKTsKLX0KLQotI2VuZGlmCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Y29uc3QgVD46OnR5cGUKLWNvbnN0X3JlbmQoIGNvbnN0IFQmIHIgKQotewotICAgIHJldHVybiBuZG5ib29zdDo6cmVuZCggciApOwotfQotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3Jlc3VsdF9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3Jlc3VsdF9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNmU3N2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yZXN1bHRfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfUkVTVUxUX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9SRVNVTFRfSVRFUkFUT1JfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICAvLwotICAgIC8vIFRoaXMgaW50ZXJmYWNlIGlzIGRlcHJlY2F0ZWQsIHVzZSByYW5nZV9pdGVyYXRvcjxUPgotICAgIC8vCi0gICAgCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIHN0cnVjdCByYW5nZV9yZXN1bHRfaXRlcmF0b3IgOiByYW5nZV9pdGVyYXRvcjxDPgotICAgIHsgfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JldmVyc2VfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yZXZlcnNlX2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUwZjc4Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JldmVyc2VfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfUkVWRVJTRV9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfUkVWRVJTRV9JVEVSQVRPUl9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9yZXZlcnNlX2l0ZXJhdG9yLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGRlZmF1bHQKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBzdHJ1Y3QgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPCAKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUgPiB0eXBlOwotICAgIH07Ci0gICAgCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk1MjU1MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfU0laRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfU0laRV9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3NpemVfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgU2luZ2xlUGFzc1JhbmdlPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9zaXplPGNvbnN0IFNpbmdsZVBhc3NSYW5nZT46OnR5cGUKLSAgICAgICAgcmFuZ2VfY2FsY3VsYXRlX3NpemUoY29uc3QgU2luZ2xlUGFzc1JhbmdlJiBybmcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCggKG5kbmJvb3N0OjplbmQocm5nKSAtIG5kbmJvb3N0OjpiZWdpbihybmcpKSA+PSAwICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFjaGFiaWxpdHkgaW52YXJpYW50IGJyb2tlbiEiICk7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmVuZChybmcpIC0gbmRuYm9vc3Q6OmJlZ2luKHJuZyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBTaW5nbGVQYXNzUmFuZ2U+Ci0gICAgaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2Vfc2l6ZTxjb25zdCBTaW5nbGVQYXNzUmFuZ2U+Ojp0eXBlCi0gICAgc2l6ZShjb25zdCBTaW5nbGVQYXNzUmFuZ2UmIHJuZykKLSAgICB7Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHJhbmdlX2RldGFpbDsKLSNlbmRpZgotICAgICAgICByZXR1cm4gcmFuZ2VfY2FsY3VsYXRlX3NpemUocm5nKTsKLSAgICB9Ci0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3NpemVfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3NpemVfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNDg2MzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9zaXplX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfU0laRV9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9TSVpFX1RZUEVfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kaWZmZXJlbmNlX3R5cGUuaHBwPgotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvc2l6ZV90eXBlLmhwcD4KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV91bnNpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gZGVmYXVsdAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGNsYXNzIGhhc19zaXplX3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyIG5vX3R5cGU7Ci0gICAgICAgICAgICBzdHJ1Y3QgeWVzX3R5cGUgeyBjaGFyIGR1bW15WzJdOyB9OwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDPgotICAgICAgICAgICAgc3RhdGljIHllc190eXBlIHRlc3QoTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpzaXplX3R5cGUgeCk7Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIEFyZz4KLSAgICAgICAgICAgIHN0YXRpYyBub190eXBlIHRlc3QoQXJnIHgpOwotCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKHRlc3Q8VD4oMCkpID09IHNpemVvZih5ZXNfdHlwZSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgRW5hYmxlcj12b2lkPgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbWFrZV91bnNpZ25lZDwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8Qz46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDPgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZTwKLSAgICAgICAgICAgIEMsCi0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGVuYWJsZV9pZjxoYXNfc2l6ZV90eXBlPEM+LCB2b2lkPjo6dHlwZQotICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpzaXplX3R5cGUgdHlwZTsKLSAgICAgICAgfTsKLQotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZSA6Ci0gICAgICAgIGRldGFpbDo6cmFuZ2Vfc2l6ZTxUPgotICAgIHsgfTsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZTxjb25zdCBUID4KLSAgICAgICAgOiBkZXRhaWw6OnJhbmdlX3NpemU8VD4KLSAgICB7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3ZhbHVlX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS92YWx1ZV90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU1ZWE2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3ZhbHVlX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfVkFMVUVfVFlQRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfVkFMVUVfVFlQRV9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLQotLy8jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotLy8jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZhbHVlX3R5cGUuaHBwPgotLy8jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCByYW5nZV92YWx1ZSA6IGl0ZXJhdG9yX3ZhbHVlPCB0eXBlbmFtZSByYW5nZV9pdGVyYXRvcjxUPjo6dHlwZSA+Ci0gICAgeyB9OwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU2ZWNkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9SRUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JFRl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0vLwotLy8gIHJlZi5ocHAgLSByZWYvY3JlZiwgdXNlZnVsIGhlbHBlciBmdW5jdGlvbnMKLS8vCi0vLyAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vICBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgKEMpIDIwMDIgRGF2aWQgQWJyYWhhbXMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvcmVmLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgcmVmZXJlbmNlX3dyYXBwZXIKLXsgCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9NU1ZDICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPCAxMzAwICkKLQotICAgIGV4cGxpY2l0IHJlZmVyZW5jZV93cmFwcGVyKFQmIHQpOiB0XygmdCkge30KLQotI2Vsc2UKLQotICAgIGV4cGxpY2l0IHJlZmVyZW5jZV93cmFwcGVyKFQmIHQpOiB0XyhuZG5ib29zdDo6YWRkcmVzc29mKHQpKSB7fQotCi0jZW5kaWYKLQotICAgIG9wZXJhdG9yIFQmICgpIGNvbnN0IHsgcmV0dXJuICp0XzsgfQotCi0gICAgVCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gKnRfOyB9Ci0KLSAgICBUKiBnZXRfcG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIHRfOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBUKiB0XzsKLX07Ci0KLSMgaWYgZGVmaW5lZCggX19CT1JMQU5EQ19fICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODEpICkKLSMgIGRlZmluZSBORE5CT09TVF9SRUZfQ09OU1QKLSMgZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFRl9DT05TVCBjb25zdAotIyBlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgcmVmZXJlbmNlX3dyYXBwZXI8VD4gTkROQk9PU1RfUkVGX0NPTlNUIHJlZihUICYgdCkKLXsgCi0gICAgcmV0dXJuIHJlZmVyZW5jZV93cmFwcGVyPFQ+KHQpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgcmVmZXJlbmNlX3dyYXBwZXI8VCBjb25zdD4gTkROQk9PU1RfUkVGX0NPTlNUIGNyZWYoVCBjb25zdCAmIHQpCi17Ci0gICAgcmV0dXJuIHJlZmVyZW5jZV93cmFwcGVyPFQgY29uc3Q+KHQpOwotfQotCi0jIHVuZGVmIE5ETkJPT1NUX1JFRl9DT05TVAotCi0jIGlmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBpc19yZWZlcmVuY2Vfd3JhcHBlcgotICAgIDogcHVibGljIG1wbDo6ZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgdW53cmFwX3JlZmVyZW5jZQotewotIHB1YmxpYzoKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSMgIGRlZmluZSBBVVhfUkVGRVJFTkNFX1dSQVBQRVJfTUVUQUZVTkNUSU9OU19ERUYoWCkgXAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gXAotY2xhc3MgaXNfcmVmZXJlbmNlX3dyYXBwZXI8IFggPiBcCi0gICAgOiBwdWJsaWMgbXBsOjp0cnVlXyBcCi17IFwKLX07IFwKLVwKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLWNsYXNzIHVud3JhcF9yZWZlcmVuY2U8IFggPiBcCi17IFwKLSBwdWJsaWM6IFwKLSAgICB0eXBlZGVmIFQgdHlwZTsgXAotfTsgXAotLyoqLwotCi1BVVhfUkVGRVJFTkNFX1dSQVBQRVJfTUVUQUZVTkNUSU9OU19ERUYocmVmZXJlbmNlX3dyYXBwZXI8VD4pCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TKQotQVVYX1JFRkVSRU5DRV9XUkFQUEVSX01FVEFGVU5DVElPTlNfREVGKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0KQotQVVYX1JFRkVSRU5DRV9XUkFQUEVSX01FVEFGVU5DVElPTlNfREVGKHJlZmVyZW5jZV93cmFwcGVyPFQ+IHZvbGF0aWxlKQotQVVYX1JFRkVSRU5DRV9XUkFQUEVSX01FVEFGVU5DVElPTlNfREVGKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0IHZvbGF0aWxlKQotI2VuZGlmCi0KLSMgIHVuZGVmIEFVWF9SRUZFUkVOQ0VfV1JBUFBFUl9NRVRBRlVOQ1RJT05TX0RFRgotCi0jIGVsc2UgLy8gbm8gcGFydGlhbCBzcGVjaWFsaXphdGlvbgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0gIHR5cGVkZWYgY2hhciAoJnllc19yZWZlcmVuY2Vfd3JhcHBlcl90KVsxXTsKLSAgdHlwZWRlZiBjaGFyICgmbm9fcmVmZXJlbmNlX3dyYXBwZXJfdClbMl07Ci0gICAgICAKLSAgbm9fcmVmZXJlbmNlX3dyYXBwZXJfdCBpc19yZWZlcmVuY2Vfd3JhcHBlcl90ZXN0KC4uLik7Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgeWVzX3JlZmVyZW5jZV93cmFwcGVyX3QgaXNfcmVmZXJlbmNlX3dyYXBwZXJfdGVzdCh0eXBlPCByZWZlcmVuY2Vfd3JhcHBlcjxUPiA+KTsKLQotICB0ZW1wbGF0ZTxib29sIHdyYXBwZWQ+Ci0gIHN0cnVjdCByZWZlcmVuY2VfdW53cmFwcGVyCi0gIHsKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgc3RydWN0IGFwcGx5Ci0gICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICB9OwotICB9OwotCi0gIHRlbXBsYXRlPD4KLSAgc3RydWN0IHJlZmVyZW5jZV91bndyYXBwZXI8dHJ1ZT4KLSAgewotICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLSAgICAgIH07Ci0gIH07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBpc19yZWZlcmVuY2Vfd3JhcHBlcgotewotIHB1YmxpYzoKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgIHNpemVvZihkZXRhaWw6OmlzX3JlZmVyZW5jZV93cmFwcGVyX3Rlc3QodHlwZTxUPigpKSkKLSAgICAgICAgICAgID09IHNpemVvZihkZXRhaWw6Onllc19yZWZlcmVuY2Vfd3JhcHBlcl90KSkpOwotICAgIAotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6bXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgdW53cmFwX3JlZmVyZW5jZQotICAgIDogcHVibGljIGRldGFpbDo6cmVmZXJlbmNlX3Vud3JhcHBlcjwKLSAgICAgICAgaXNfcmVmZXJlbmNlX3dyYXBwZXI8VD46OnZhbHVlCi0gICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTxUPgote307Ci0KLSMgZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lIHVud3JhcF9yZWZlcmVuY2U8VD46OnR5cGUmCi11bndyYXBfcmVmKFQmIHQpCi17Ci0gICAgcmV0dXJuIHQ7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBUKiBnZXRfcG9pbnRlciggcmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiByICkKLXsKLSAgICByZXR1cm4gci5nZXRfcG9pbnRlcigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9SRUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjFjN2E1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmVnZXggZm9yIGRvY3VtZW50YXRpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXguY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBuZG5ib29zdDo6YmFzaWNfcmVnZXg8PiBhbmQgYXNzb2NpYXRlZAotICAqICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBhbmQgY2xhc3Nlcy4gVGhpcyBoZWFkZXIgaXMgdGhlIG1haW4KLSAgKiAgICAgICAgICAgICAgICBlbnRyeSBwb2ludCBmb3IgdGhlIHRlbXBsYXRlIHJlZ2V4IGNvZGUuCi0gICovCi0KLQotLyogc3RhcnQgd2l0aCBDIGNvbXBhdGliaWxpdHkgQVBJICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVfUkVHRVhfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFX1JFR0VYX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleC5ocHA+Ci0KLSNlbmRpZiAgLy8gaW5jbHVkZQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MTY4YjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDM1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgY29uZmlnLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogcmVnZXggZXh0ZW5kZWQgY29uZmlnIHNldHVwLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotLyoKLSAqIEJvcmxhbmQgQysrIEZpeC9lcnJvciBjaGVjawotICogdGhpcyBoYXMgdG8gZ28gKmJlZm9yZSogd2UgaW5jbHVkZSBhbnkgc3RkIGxpYiBoZWFkZXJzOgotICovCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICBpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcvYm9ybGFuZC5ocHA+Ci0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIEluY2x1ZGUgYWxsIHRoZSBoZWFkZXJzIHdlIG5lZWQgaGVyZToKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0KLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9VU0VSX0NPTkZJRwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRVJfQ09ORklHIDxuZG5ib29zdC9yZWdleC91c2VyLmhwcD4KLSMgIGVuZGlmCi0KLSMgIGluY2x1ZGUgTkROQk9PU1RfUkVHRVhfVVNFUl9DT05GSUcKLQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2Vsc2UKLSAgIC8qCi0gICAgKiBDIGJ1aWxkLAotICAgICogZG9uJ3QgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gYmVjYXVzZSB0aGF0IG1heQotICAgICogZG8gQysrIHNwZWNpZmljIHRoaW5ncyBpbiBmdXR1cmUuLi4KLSAgICAqLwotIyAgaW5jbHVkZSA8c3RkbGliLmg+Ci0jICBpbmNsdWRlIDxzdGRkZWYuaD4KLSMgIGlmZGVmIF9NU0NfVkVSCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVNWQyBfTVNDX1ZFUgotIyAgZW5kaWYKLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgQm9pbGVycGxhdGUgcmVnZXggY29uZmlnIG9wdGlvbnM6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qIE9ic29sZXRlIG1hY3JvLCB1c2UgTkROQk9PU1RfVkVSU0lPTiBpbnN0ZWFkOiAqLwotI2RlZmluZSBORE5CT09TVF9SRV9WRVJTSU9OIDMyMAotCi0vKiBmaXg6ICovCi0jaWYgZGVmaW5lZChfVU5JQ09ERSkgJiYgIWRlZmluZWQoVU5JQ09ERSkKLSNkZWZpbmUgVU5JQ09ERQotI2VuZGlmCi0KLS8qCi0gKiBGaXggZm9yIGdjYyBwcmlvciB0byAzLjQ6IHN0ZDo6Y3R5cGU8d2NoYXJfdD4gZG9lc24ndCBhbGxvdwotICogbWFza3MgdG8gYmUgY29tYmluZWQsIGZvciBleGFtcGxlOgotICogc3RkOjp1c2VfZmFjZXQ8c3RkOjpjdHlwZTx3Y2hhcl90PiA+LmlzKHN0ZDo6Y3R5cGVfYmFzZTo6bG93ZXJ8c3RkOjpjdHlwZV9iYXNlOjp1cHBlciwgTCdhJyk7Ci0gKiByZXR1cm5zICpmYWxzZSouCi0gKi8KLSNpZmRlZiBfX0dMSUJDUFBfXwotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi0jZW5kaWYKLQotLyoKLSAqIEludGVsIEMrKyBiZWZvcmUgOC4wIGVuZHMgdXAgd2l0aCB1bnJlc29sdmVkIGV4dGVybmFscyB1bmxlc3Mgd2UgdHVybiBvZmYKLSAqIGV4dGVybiB0ZW1wbGF0ZSBzdXBwb3J0OgotICovCi0jaWYgZGVmaW5lZChORE5CT09TVF9JTlRFTCkgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykgJiYgKE5ETkJPT1NUX0lOVEVMIDw9IDgwMCkKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19FWFRFUk5BTF9URU1QTEFURVMKLSNlbmRpZgotLyoKLSAqIFZpc3VhbCBDKysgZG9lc24ndCBzdXBwb3J0IGV4dGVybmFsIHRlbXBsYXRlcyB3aXRoIEMrKyBleHRlbnNpb25zIHR1cm5lZCBvZmY6Ci0gKi8KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRVhURVJOQUxfVEVNUExBVEVTCi0jZW5kaWYKLS8qCi0gKiBTaGFyZWQgcmVnZXggbGliIHdpbGwgY3Jhc2ggd2l0aG91dCB0aGlzLCBmcmFua2x5IGl0IGxvb2tzIGEgbG90IGxpa2UgYSBnY2MgYnVnOgotICovCi0jaWYgZGVmaW5lZChfX01JTkdXMzJfXykKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19FWFRFUk5BTF9URU1QTEFURVMKLSNlbmRpZgotCi0vKgotICogSWYgdGhlcmUgaXNuJ3QgZ29vZCBlbm91Z2ggd2lkZSBjaGFyYWN0ZXIgc3VwcG9ydCB0aGVuIHRoZXJlIHdpbGwKLSAqIGJlIG5vIHdpZGUgY2hhcmFjdGVyIHJlZ3VsYXIgZXhwcmVzc2lvbnM6Ci0gKi8KLSNpZiAoZGVmaW5lZChORE5CT09TVF9OT19DV0NIQVIpIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fQ1dDVFlQRSkgfHwgZGVmaW5lZChORE5CT09TVF9OT19TVERfV1NUUklORykpCi0jICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fV1JFR0VYCi0jICBlbmRpZgotI2Vsc2UKLSMgIGlmIGRlZmluZWQoX19zZ2kpICYmIChkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSB8fCBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pKQotICAgICAgLyogU1RMUG9ydCBvbiBJUklYIGlzIG1pc2NvbmZpZ3VyZWQ6IDxjd2N0eXBlPiBkb2VzIG5vdCBjb21waWxlCi0gICAgICAgKiBhcyBhIHRlbXBvcmFyeSBmaXggaW5jbHVkZSA8d2N0eXBlLmg+IGluc3RlYWQgYW5kIHByZXZlbnQgaW5jbHVzaW9uCi0gICAgICAgKiBvZiBTVExQb3J0IHZlcnNpb24gb2YgPGN3Y3R5cGU+ICovCi0jICAgICBpbmNsdWRlIDx3Y3R5cGUuaD4KLSMgICAgIGRlZmluZSBfX1NUTFBPUlRfQ1dDVFlQRQotIyAgICAgZGVmaW5lIF9TVExQX0NXQ1RZUEUKLSMgIGVuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnL2N3Y2hhci5ocHA+Ci0jZW5kaWYKLQotI2VuZGlmCi0KLS8qCi0gKiBJZiBXaW4zMiBzdXBwb3J0IGhhcyBiZWVuIGRpc2FibGVkIGZvciBib29zdCBpbiBnZW5lcmFsLCB0aGVuCi0gKiBpdCBpcyBmb3IgcmVnZXggaW4gcGFydGljdWxhcjoKLSAqLwotI2lmIGRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX1czMgotI2VuZGlmCi0KLS8qIGRpc2FibGUgb3VyIG93biBmaWxlLWl0ZXJhdG9ycyBhbmQgbWFwZmlsZXMgaWYgd2UgY2FuJ3QKLSAqIHN1cHBvcnQgdGhlbTogKi8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfRElSRU5UX0gpICYmICEoZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRklMRUlURVIKLSNlbmRpZgotCi0vKiBiYWNrd2FyZHMgY29tcGF0aWJpdGl0eTogKi8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFX05PX0xJQikKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19MSUIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pKQotLyogZ2NjIG9uIHdpbjMyIGhhcyBwcm9ibGVtcyBpZiB5b3UgaW5jbHVkZSA8d2luZG93cy5oPgotICAgKHNwb3JhZGljYWxseSBnZW5lcmF0ZXMgYmFkIGNvZGUpLiAqLwotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX1czMgotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0NPTU9fXykgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKSAmJiAhZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fVzMyCi0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIFdpZGUgY2hhcmFjdGVyIHdvcmthcm91bmRzOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICogZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UIHdoZW4gd2NoYXJfdCBpcyBhIG5hdGl2ZSB0eXBlLCBidXQgdGhlIHVzZXJzCi0gKiBjb2RlIG1heSBiZSBidWlsdCB3aXRoIHdjaGFyX3QgYXMgdW5zaWduZWQgc2hvcnQ6IGJhc2ljYWxseSB3aGVuIHdlJ3JlIGJ1aWxkaW5nCi0gKiB3aXRoIE1TVkMgYW5kIHRoZSAvWmM6d2NoYXJfdCBvcHRpb24gd2UgcGxhY2Ugc29tZSBleHRyYSB1bnNpZ25lZCBzaG9ydCB2ZXJzaW9ucwotICogb2YgdGhlIG5vbi1pbmxpbmUgZnVuY3Rpb25zIGluIHRoZSBsaWJyYXJ5LCBzbyB0aGF0IHVzZXJzIGNhbiBzdGlsbCBsaW5rIHRvIHRoZSBsaWIsCi0gKiBpcnJlc3BlY3RpdmUgb2Ygd2hldGhlciB0aGVpciBvd24gY29kZSBpcyBidWlsdCB3aXRoIC9aYzp3Y2hhcl90LgotICogTm90ZSB0aGF0IHRoaXMgZG9lcyBOT1QgV09SSyB3aXRoIFZDMTAgd2hlbiB0aGUgQysrIGxvY2FsZSBpcyBpbiBlZmZlY3QgYXMKLSAqIHRoZSBsb2NhbGUncyA8dW5zaWduZWQgc2hvcnQ+IGZhY2V0cyBzaW1wbHkgZG8gbm90IGNvbXBpbGUgaW4gdGhhdCBjYXNlLgotICovCi0jaWYgZGVmaW5lZChfX2NwbHVzcGx1cykgJiYgKGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgZGVmaW5lZChfX0lDTCkpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1dJTkRPV1MpICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9SV1NURF9WRVIpICYmICgoX01TQ19WRVIgPCAxNjAwKSB8fCAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRSkpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLSMgIGlmZGVmIE5ETkJPT1NUX01TVkMKLSMgICAgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICAgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI1MSA0MjMxKQotIyAgICAgaWYgTkROQk9PU1RfTVNWQyA8IDE2MDAKLSMgICAgICAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0NjYwKQotIyAgICAgZW5kaWYKLSMgIGVuZGlmCi0jICBpZiBkZWZpbmVkKF9ETEwpICYmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxNjAwKQotIyAgICAgaW5jbHVkZSA8c3RyaW5nPgotICAgICAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBzaG9ydD47Ci0jICBlbmRpZgotIyAgaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgICAgcHJhZ21hIHdhcm5pbmcocG9wKQotIyAgZW5kaWYKLSNlbmRpZgotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBTZXQgdXAgZGxsIGltcG9ydC9leHBvcnQgb3B0aW9uczoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmbmRlZiBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfUkVHRVhfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfU1RBVElDX0xJTkspCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1NPVVJDRSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9ERUNMIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9CVUlMRF9ETEwKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9ERUNMIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSMgIGVuZGlmCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fTElCKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9TT1VSQ0UpICYmICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9OT19MSUIpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0jICBkZWZpbmUgTkROQk9PU1RfTElCX05BTUUgbmRuYm9vc3RfcmVnZXgKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0RZTl9MSU5LCi0jICBlbmRpZgotIyAgaWZkZWYgTkROQk9PU1RfUkVHRVhfRElBRwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9ESUFHTk9TVElDCi0jICBlbmRpZgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIFNldCB1cCBmdW5jdGlvbiBjYWxsIHR5cGU6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDID49IDEyMDApICYmIGRlZmluZWQoX01TQ19FWFRFTlNJT05TKQotI2lmIGRlZmluZWQoX0RFQlVHKSB8fCBkZWZpbmVkKF9fTVNWQ19SVU5USU1FX0NIRUNLUykgfHwgZGVmaW5lZChfTUFOQUdFRCkgfHwgZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19GQVNUQ0FMTCkKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9DQUxMIF9fY2RlY2wKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0FMTCBfX2Zhc3RjYWxsCi0jZW5kaWYKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9DQ0FMTCBfX2NkZWNsCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NBTEwgX19mYXN0Y2FsbAotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NDQUxMIF9fc3RkY2FsbAotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ0FMTAotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NBTEwKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DQ0FMTAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9DQ0FMTAotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBTZXQgdXAgbG9jYWxpc2F0aW9uIG1vZGVsOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogKi8KLSNpZmRlZiBORE5CT09TVF9SRV9MT0NBTEVfQwotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9SRV9MT0NBTEVfQ1BQCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0NZR1dJTl9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRQotI2VuZGlmCi0KLS8qIFdpbjMyIGRlZmF1bHRzIHRvIG5hdGl2ZSBXaW4zMiBsb2NhbGU6ICovCi0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9XSU4zMl9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfV0lOMzJfTE9DQUxFCi0jZW5kaWYKLS8qIG90aGVyd2lzZSB1c2UgQysrIGxvY2FsZSBpZiBzdXBwb3J0ZWQ6ICovCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX1dJTjMyX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRQotI2VuZGlmCi0vKiBvdGhlcndpc2UgdXNlIEMrIGxvY2FsZTogKi8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfV0lOMzJfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTUFYX1NUQVRFX0NPVU5UCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFYX1NUQVRFX0NPVU5UIDEwMDAwMDAwMAotI2VuZGlmCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIEVycm9yIEhhbmRsaW5nIGZvciBleGNlcHRpb24gZnJlZSBjb21waWxlcnM6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0vKgotICogSWYgdGhlcmUgYXJlIG5vIGV4Y2VwdGlvbnMgdGhlbiB3ZSBtdXN0IHJlcG9ydCBjcml0aWNhbC1lcnJvcnMKLSAqIHRoZSBvbmx5IHdheSB3ZSBrbm93IGhvdzsgYnkgdGVybWluYXRpbmcuCi0gKi8KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0KLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT0VIX0FTU0VSVCh4KVwKLWlmKDAgPT0gKHgpKVwKLXtcCi0gICBzdGQ6OnN0cmluZyBzKCJFcnJvcjogY3JpdGljYWwgcmVnZXgrKyBmYWlsdXJlIGluOiAiKTtcCi0gICBzLmFwcGVuZCgjeCk7XAotICAgc3RkOjpydW50aW1lX2Vycm9yIGUocyk7XAotICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTtcCi19Ci0jZWxzZQotLyoKLSAqIFdpdGggZXhjZXB0aW9ucyB0aGVuIGVycm9yIGhhbmRsaW5nIGlzIHRha2VuIGNhcmUgb2YgYW5kCi0gKiB0aGVyZSBpcyBubyBuZWVkIGZvciB0aGVzZSBjaGVja3M6Ci0gKi8KLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT0VIX0FTU0VSVCh4KQotI2VuZGlmCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIFN0YWNrIHByb3RlY3Rpb24gdW5kZXIgTVMgV2luZG93czoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVjMpCi0jICBpZihkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpIHx8IGRlZmluZWQoX1dJTkNFKSkgXAotICAgICAgICAmJiAhZGVmaW5lZChfX0dOVUNfXykgXAotICAgICAgICAmJiAhKGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID49IDB4NjAwKSkgXAotICAgICAgICAmJiAhKGRlZmluZWQoX19NV0VSS1NfXykgJiYgKF9fTVdFUktTX18gPD0gMHgzMDAzKSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQKLSMgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRCkKLSMgIHVuZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgcmVzZXRfc3RhY2tfZ3VhcmRfcGFnZSgpOwotCi19Ci19Ci0KLSNlbmRpZgotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBBbGdvcml0aG0gc2VsZWN0aW9uIGFuZCBjb25maWd1cmF0aW9uOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQpICYmICFkZWZpbmVkKF9TVExQX0RFQlVHKSAmJiAhZGVmaW5lZChfX1NUTF9ERUJVRykgJiYgIShkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDID49IDE0MDApKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1JFQ1VSU0lWRQotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUKLSMgIGlmZGVmIE5ETkJPT1NUX1JFR0VYX1JFQ1VSU0lWRQotIyAgICAgZXJyb3IgIkNhbid0IHNldCBib3RoIE5ETkJPT1NUX1JFR0VYX1JFQ1VSU0lWRSBhbmQgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRSIKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFIDQwOTYKLSMgIGVuZGlmCi0jICBpZiBORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUgPCA1MTIKLSMgICAgIGVycm9yICJORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUgbXVzdCBiZSBhdCBsZWFzdCA1MTIiCi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX01BWF9CTE9DS1MKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9NQVhfQkxPQ0tTIDEwMjQKLSMgIGVuZGlmCi0jICBpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQKLSMgICAgIHVuZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9NQVhfQ0FDSEVfQkxPQ0tTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFYX0NBQ0hFX0JMT0NLUyAxNgotIyAgZW5kaWYKLSNlbmRpZgotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBoZWxwZXIgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWYgZGVmaW5lZChfX2NwbHVzcGx1cykgJiYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFKQotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgcmVfZGV0YWlsewotCi1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQqIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2V0X21lbV9ibG9jaygpOwotTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgcHV0X21lbV9ibG9jayh2b2lkKik7Ci0KLX19IC8qIG5hbWVzcGFjZXMgKi8KLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgRGlhZ25vc3RpY3M6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSU5GTwotTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgcHJpbnRfcmVnZXhfbGlicmFyeV9pbmZvKCk7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfRElBRykKLSMgIHByYWdtYSBtZXNzYWdlICgiTkROQk9PU1RfUkVHRVhfREVDTCIgTkROQk9PU1RfU1RSSU5HSVpFKD1ORE5CT09TVF9SRUdFWF9ERUNMKSkKLSMgIHByYWdtYSBtZXNzYWdlICgiTkROQk9PU1RfUkVHRVhfQ0FMTCIgTkROQk9PU1RfU1RSSU5HSVpFKD1ORE5CT09TVF9SRUdFWF9DQUxMKSkKLSMgIHByYWdtYSBtZXNzYWdlICgiTkROQk9PU1RfUkVHRVhfQ0NBTEwiIE5ETkJPT1NUX1NUUklOR0laRSg9TkROQk9PU1RfUkVHRVhfQ0NBTEwpKQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJVc2luZyBDIGxvY2FsZSBpbiByZWdleCB0cmFpdHMgY2xhc3MiKQotI2VsaWYgTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUKLSMgIHByYWdtYSBtZXNzYWdlICgiVXNpbmcgQysrIGxvY2FsZSBpbiByZWdleCB0cmFpdHMgY2xhc3MiKQotI2Vsc2UKLSMgIHByYWdtYSBtZXNzYWdlICgiVXNpbmcgV2luMzIgbG9jYWxlIGluIHJlZ2V4IHRyYWl0cyBjbGFzcyIpCi0jZW5kaWYKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykKLSMgIHByYWdtYSBtZXNzYWdlICgiRHluYW1pYyBsaW5raW5nIGVuYWJsZWQiKQotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19MSUIpIHx8IGRlZmluZWQoTkROQk9PU1RfQUxMX05PX0xJQikKLSMgIHByYWdtYSBtZXNzYWdlICgiQXV0by1saW5raW5nIGRpc2FibGVkIikKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotIyAgcHJhZ21hIG1lc3NhZ2UgKCJFeHRlcm4gdGVtcGxhdGVzIGRpc2FibGVkIikKLSNlbmRpZgotCi0jZW5kaWYKLQotI2VuZGlmCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnL2JvcmxhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9jb25maWcvYm9ybGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlMjAyZTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9jb25maWcvYm9ybGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy9ib3JsYW5kLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogcmVnZXggYm9ybGFuZC1zcGVjaWZpYyBjb25maWcgc2V0dXAuCi0gICovCi0KLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgaWYgKF9fQk9STEFORENfXyA9PSAweDU1MCkgfHwgKF9fQk9STEFORENfXyA9PSAweDU1MSkKLSAgICAgIC8vIHByb2JsZW1zIHdpdGggc3RkOjpiYXNpY19zdHJpbmcgYW5kIGRsbCBSVEw6Ci0jICAgICBpZiBkZWZpbmVkKF9SVExETEwpICYmIGRlZmluZWQoX1JXU1REX0NPTVBJTEVfSU5TVEFOVElBVEUpCi0jICAgICAgICBpZmRlZiBORE5CT09TVF9SRUdFWF9CVUlMRF9ETEwKLSMgICAgICAgICAgIGVycm9yIF9SV1NURF9DT01QSUxFX0lOU1RBTlRJQVRFIG11c3Qgbm90IGJlIGRlZmluZWQgd2hlbiBidWlsZGluZyByZWdleCsrIGFzIGEgRExMCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgiRGVmaW5pbmcgX1JXU1REX0NPTVBJTEVfSU5TVEFOVElBVEUgd2hlbiBsaW5raW5nIHRvIHRoZSBETEwgdmVyc2lvbiBvZiB0aGUgUlRMIG1heSBwcm9kdWNlIG1lbW9yeSBjb3JydXB0aW9uIHByb2JsZW1zIGluIHN0ZDo6YmFzaWNfc3RyaW5nLCBhcyBhIHJlc3VsdCBvZiBzZXBhcmF0ZSB2ZXJzaW9ucyBvZiBiYXNpY19zdHJpbmcncyBzdGF0aWMgZGF0YSBpbiB0aGUgUlRMIGFuZCB5b3UncmUgZXhlL2RsbDogYmUgd2FybmVkISEiKQotIyAgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0jICAgICBpZm5kZWYgX1JUTERMTAotICAgICAgICAgLy8gdGhpcyBpcyBoYXJtbGVzcyBmb3IgYSBzdGFpYyBsaW5rOgotIyAgICAgICAgZGVmaW5lIF9SV1NURF9DT01QSUxFX0lOU1RBTlRJQVRFCi0jICAgICBlbmRpZgotICAgICAgLy8gZXh0ZXJuYWwgdGVtcGxhdGVzIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHJlYXNvbjoKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19FWFRFUk5BTF9URU1QTEFURVMKLSMgIGVuZGlmCi0jICBpZiAoX19CT1JMQU5EQ19fIDw9IDB4NTQwKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19MSUIpICYmICFkZWZpbmVkKF9OT19WQ0wpCi0gICAgICAvLyBDKysgQnVpbGRlciA0IGFuZCBlYXJsaWVyLCB3ZSBjYW4ndCB0ZWxsIHdoZXRoZXIgd2Ugc2hvdWxkIGJlIHVzaW5nCi0gICAgICAvLyB0aGUgVkNMIHJ1bnRpbWUgb3Igbm90LCBkbyBhIHN0YXRpYyBsaW5rIGluc3RlYWQ6Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfU1RBVElDX0xJTksKLSMgIGVuZGlmCi0gICAvLwotICAgLy8gVkNMIHN1cHBvcnQ6Ci0gICAvLyBpZiB3ZSdyZSBidWlsZGluZyBhIGNvbnNvbGUgYXBwIHRoZW4gdGhlcmUgY2FuJ3QgYmUgYW55IFZDTCAoY2FuIHRoZXJlPykKLSMgIGlmICFkZWZpbmVkKF9fQ09OU09MRV9fKSAmJiAhZGVmaW5lZChfTk9fVkNMKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9WQ0wKLSMgIGVuZGlmCi0gICAvLwotICAgLy8gaWYgdGhpcyBpc24ndCBXaW4zMiB0aGVuIGRvbid0IGF1dG9tYXRpY2FsbHkgc2VsZWN0IGxpbmsKLSAgIC8vIGxpYnJhcmllczoKLSAgIC8vCi0jICBpZm5kZWYgX1dpbmRvd3MKLSMgICAgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9OT19MSUIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19MSUIKLSMgICAgIGVuZGlmCi0jICAgICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfU1RBVElDX0xJTksKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9TVEFUSUNfTElOSwotIyAgICAgZW5kaWYKLSMgIGVuZGlmCi0KLSNpZiBfX0JPUkxBTkRDX18gPCAweDYwMAotLy8KLS8vIHN0cmluZyB3b3JrYXJvdW5kczoKLS8vCi0jaW5jbHVkZSA8Y3N0cmluZz4KLSN1bmRlZiBzdHJjbXAKLSN1bmRlZiBzdHJjcHkKLSNlbmRpZgotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy9jd2NoYXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9jb25maWcvY3djaGFyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE2NWMxZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy9jd2NoYXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjA3ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgbmRuYm9vc3QvcmVnZXgvY29uZmlnL2N3Y2hhci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IHJlZ2V4IHdpZGUgY2hhcmFjdGVyIHN0cmluZyBmaXhlcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfQ1dDSEFSX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9DT05GSUdfQ1dDSEFSX0hQUAotCi0jaW5jbHVkZSA8Y3djaGFyPgotI2luY2x1ZGUgPGN3Y3R5cGU+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoX19TVERfUldDT01QSUxFUl9IX18pIHx8IGRlZmluZWQoX1JXU1REX1ZFUikKLS8vIGFwcGFyZW50bHkgdGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIFJXIFNUTCBvbiBMaW51eDoKLSN1bmRlZiBpc3dhbG51bQotI3VuZGVmIGlzd2FscGhhCi0jdW5kZWYgaXN3YmxhbmsKLSN1bmRlZiBpc3djbnRybAotI3VuZGVmIGlzd2RpZ2l0Ci0jdW5kZWYgaXN3Z3JhcGgKLSN1bmRlZiBpc3dsb3dlcgotI3VuZGVmIGlzd3ByaW50Ci0jdW5kZWYgaXN3cHJpbnQKLSN1bmRlZiBpc3dwdW5jdAotI3VuZGVmIGlzd3NwYWNlCi0jdW5kZWYgaXN3dXBwZXIKLSN1bmRlZiBpc3d4ZGlnaXQKLSN1bmRlZiBpc3djdHlwZQotI3VuZGVmIHRvd2xvd2VyCi0jdW5kZWYgdG93dXBwZXIKLSN1bmRlZiB0b3djdHJhbnMKLSN1bmRlZiB3Y3RyYW5zCi0jdW5kZWYgd2N0eXBlCi0jZW5kaWYKLQotbmFtZXNwYWNlIHN0ZHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotZXh0ZXJuICJDInsKLSNlbmRpZgotCi0jaWZkZWYgaXN3YWxudW0KLWlubGluZSBpbnQgKGlzd2FsbnVtKSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd2FsbnVtKGkpOyB9Ci0jdW5kZWYgaXN3YWxudW0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd2FsbnVtOwotI2VuZGlmCi0KLSNpZmRlZiBpc3dhbHBoYQotaW5saW5lIGludCAoaXN3YWxwaGEpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3YWxwaGEoaSk7IH0KLSN1bmRlZiBpc3dhbHBoYQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3YWxwaGE7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd2NudHJsCi1pbmxpbmUgaW50IChpc3djbnRybCkod2ludF90IGkpCi17IHJldHVybiBpc3djbnRybChpKTsgfQotI3VuZGVmIGlzd2NudHJsCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3djbnRybDsKLSNlbmRpZgotCi0jaWZkZWYgaXN3ZGlnaXQKLWlubGluZSBpbnQgKGlzd2RpZ2l0KSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd2RpZ2l0KGkpOyB9Ci0jdW5kZWYgaXN3ZGlnaXQKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd2RpZ2l0OwotI2VuZGlmCi0KLSNpZmRlZiBpc3dncmFwaAotaW5saW5lIGludCAoaXN3Z3JhcGgpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3Z3JhcGgoaSk7IH0KLSN1bmRlZiBpc3dncmFwaAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3Z3JhcGg7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd2xvd2VyCi1pbmxpbmUgaW50IChpc3dsb3dlcikod2ludF90IGkpCi17IHJldHVybiBpc3dsb3dlcihpKTsgfQotI3VuZGVmIGlzd2xvd2VyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dsb3dlcjsKLSNlbmRpZgotCi0jaWZkZWYgaXN3cHJpbnQKLWlubGluZSBpbnQgKGlzd3ByaW50KSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd3ByaW50KGkpOyB9Ci0jdW5kZWYgaXN3cHJpbnQKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd3ByaW50OwotI2VuZGlmCi0KLSNpZmRlZiBpc3dwdW5jdAotaW5saW5lIGludCAoaXN3cHVuY3QpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3cHVuY3QoaSk7IH0KLSN1bmRlZiBpc3dwdW5jdAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3cHVuY3Q7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd3NwYWNlCi1pbmxpbmUgaW50IChpc3dzcGFjZSkod2ludF90IGkpCi17IHJldHVybiBpc3dzcGFjZShpKTsgfQotI3VuZGVmIGlzd3NwYWNlCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dzcGFjZTsKLSNlbmRpZgotCi0jaWZkZWYgaXN3dXBwZXIKLWlubGluZSBpbnQgKGlzd3VwcGVyKSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd3VwcGVyKGkpOyB9Ci0jdW5kZWYgaXN3dXBwZXIKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd3VwcGVyOwotI2VuZGlmCi0KLSNpZmRlZiBpc3d4ZGlnaXQKLWlubGluZSBpbnQgKGlzd3hkaWdpdCkod2ludF90IGkpCi17IHJldHVybiBpc3d4ZGlnaXQoaSk7IH0KLSN1bmRlZiBpc3d4ZGlnaXQKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd3hkaWdpdDsKLSNlbmRpZgotCi0jaWZkZWYgdG93bG93ZXIKLWlubGluZSB3aW50X3QgKHRvd2xvd2VyKSh3aW50X3QgaSkKLXsgcmV0dXJuIHRvd2xvd2VyKGkpOyB9Ci0jdW5kZWYgdG93bG93ZXIKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6OnRvd2xvd2VyOwotI2VuZGlmCi0KLSNpZmRlZiB0b3d1cHBlcgotaW5saW5lIHdpbnRfdCAodG93dXBwZXIpKHdpbnRfdCBpKQoteyByZXR1cm4gdG93dXBwZXIoaSk7IH0KLSN1bmRlZiB0b3d1cHBlcgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6IHRvd3VwcGVyOwotI2VuZGlmCi0KLSNpZmRlZiB3Y3NjbXAKLWlubGluZSBpbnQgKHdjc2NtcCkoY29uc3Qgd2NoYXJfdCAqcDEsIGNvbnN0IHdjaGFyX3QgKnAyKQoteyByZXR1cm4gd2NzY21wKHAxLHAyKTsgfQotI3VuZGVmIHdjc2NtcAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6d2NzY21wOwotI2VuZGlmCi0KLSNpZmRlZiB3Y3Njb2xsCi1pbmxpbmUgaW50ICh3Y3Njb2xsKShjb25zdCB3Y2hhcl90ICpwMSwgY29uc3Qgd2NoYXJfdCAqcDIpCi17IHJldHVybiB3Y3Njb2xsKHAxLHAyKTsgfQotI3VuZGVmIHdjc2NvbGwKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpICYmICFkZWZpbmVkKFVOREVSX0NFKQotdXNpbmcgOjp3Y3Njb2xsOwotI2VuZGlmCi0KLSNpZmRlZiB3Y3NjcHkKLWlubGluZSB3Y2hhcl90ICood2NzY3B5KSh3Y2hhcl90ICpwMSwgY29uc3Qgd2NoYXJfdCAqcDIpCi17IHJldHVybiB3Y3NjcHkocDEscDIpOyB9Ci0jdW5kZWYgd2NzY3B5Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjp3Y3NjcHk7Ci0jZW5kaWYKLQotI2lmZGVmIHdjc2xlbgotaW5saW5lIHNpemVfdCAod2NzbGVuKShjb25zdCB3Y2hhcl90ICpwKQoteyByZXR1cm4gd2NzbGVuKHApOyB9Ci0jdW5kZWYgd2NzbGVuCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjp3Y3NsZW47Ci0jZW5kaWYKLQotI2lmZGVmIHdjc3hmcm0KLXNpemVfdCB3Y3N4ZnJtKHdjaGFyX3QgKnAxLCBjb25zdCB3Y2hhcl90ICpwMiwgc2l6ZV90IHMpCi17IHJldHVybiB3Y3N4ZnJtKHAxLHAyLHMpOyB9Ci0jdW5kZWYgd2NzeGZybQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6d2NzeGZybTsKLSNlbmRpZgotCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLX0gLy8gZXh0ZXJuICJDIgotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHN0ZAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9pY3UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9pY3UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzI4NTIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvaWN1LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMzEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBpY3UuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBVbmljb2RlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgb24gdG9wIG9mIHRoZSBJQ1UgTGlicmFyeS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9JQ1VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0lDVV9IUFAKLQotI2luY2x1ZGUgPHVuaWNvZGUvdXR5cGVzLmg+Ci0jaW5jbHVkZSA8dW5pY29kZS91Y2hhci5oPgotI2luY2x1ZGUgPHVuaWNvZGUvY29sbC5oPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wZW5kaW5nL3VuaWNvZGVfaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxiaXRzZXQ+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcgKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcgKGRpc2FibGU6IDQyNTEpCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0vLyAKLS8vIEltcGxlbWVudGF0aW9uIGRldGFpbHM6Ci0vLwotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBpY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uCi17Ci0gICB0eXBlZGVmIFVDaGFyMzIgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgIHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiAgICAgICBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIExvY2FsZSBsb2NhbGVfdHlwZTsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90ICAgICAgICBjaGFyX2NsYXNzX3R5cGU7Ci1wdWJsaWM6Ci0gICBpY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBMb2NhbGUmIGwpCi0gICAgICA6IG1fbG9jYWxlKGwpCi0gICB7Ci0gICAgICBVRXJyb3JDb2RlIHN1Y2Nlc3MgPSBVX1pFUk9fRVJST1I7Ci0gICAgICBtX2NvbGxhdG9yLnJlc2V0KFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvcjo6Y3JlYXRlSW5zdGFuY2UobCwgc3VjY2VzcykpOwotICAgICAgaWYoVV9TVUNDRVNTKHN1Y2Nlc3MpID09IDApCi0gICAgICAgICBpbml0X2Vycm9yKCk7Ci0gICAgICBtX2NvbGxhdG9yLT5zZXRTdHJlbmd0aChVX05BTUVTUEFDRV9RVUFMSUZJRVIgQ29sbGF0b3I6OklERU5USUNBTCk7Ci0gICAgICBzdWNjZXNzID0gVV9aRVJPX0VSUk9SOwotICAgICAgbV9wcmltYXJ5X2NvbGxhdG9yLnJlc2V0KFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvcjo6Y3JlYXRlSW5zdGFuY2UobCwgc3VjY2VzcykpOwotICAgICAgaWYoVV9TVUNDRVNTKHN1Y2Nlc3MpID09IDApCi0gICAgICAgICBpbml0X2Vycm9yKCk7Ci0gICAgICBtX3ByaW1hcnlfY29sbGF0b3ItPnNldFN0cmVuZ3RoKFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvcjo6UFJJTUFSWSk7Ci0gICB9Ci0gICBVX05BTUVTUEFDRV9RVUFMSUZJRVIgTG9jYWxlIGdldGxvYygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2xvY2FsZTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIGRvX3RyYW5zZm9ybShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyLCBjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgQ29sbGF0b3IqIHBjb2xsKSBjb25zdDsKLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGRvX3RyYW5zZm9ybShwMSwgcDIsIG1fY29sbGF0b3IuZ2V0KCkpOwotICAgfQotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhcl90eXBlKiBwMSwgY29uc3QgY2hhcl90eXBlKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBkb190cmFuc2Zvcm0ocDEsIHAyLCBtX3ByaW1hcnlfY29sbGF0b3IuZ2V0KCkpOwotICAgfQotcHJpdmF0ZToKLSAgIHZvaWQgaW5pdF9lcnJvcigpCi0gICB7Ci0gICAgICBzdGQ6OnJ1bnRpbWVfZXJyb3IgZSgiQ291bGQgbm90IGluaXRpYWxpemUgSUNVIHJlc291cmNlcyIpOwotICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTsKLSAgIH0KLSAgIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBMb2NhbGUgbV9sb2NhbGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBJQ1UgbG9jYWxlIHRoYXQgd2UncmUgdXNpbmcKLSAgIG5kbmJvb3N0OjpzY29wZWRfcHRyPCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgQ29sbGF0b3I+IG1fY29sbGF0b3I7ICAgICAgICAgIC8vIFRoZSBmdWxsIGNvbGxhdGlvbiBvYmplY3QKLSAgIG5kbmJvb3N0OjpzY29wZWRfcHRyPCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgQ29sbGF0b3I+IG1fcHJpbWFyeV9jb2xsYXRvcjsgIC8vIFRoZSBwcmltYXJ5IGNvbGxhdGlvbiBvYmplY3QKLX07Ci0KLWlubGluZSBuZG5ib29zdDo6c2hhcmVkX3B0cjxpY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPiBnZXRfaWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbihjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgTG9jYWxlJiBsb2MpCi17Ci0gICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8aWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbj4obmV3IGljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24obG9jKSk7Ci19Ci0KLX0KLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBpY3VfcmVnZXhfdHJhaXRzCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIFVDaGFyMzIgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgIHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiAgICAgICBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIExvY2FsZSBsb2NhbGVfdHlwZTsKLSNpZmRlZiBORE5CT09TVF9OT19JTlQ2NF9UCi0gICB0eXBlZGVmIHN0ZDo6Yml0c2V0PDY0PiAgICAgICAgICAgICAgY2hhcl9jbGFzc190eXBlOwotI2Vsc2UKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQ2NF90ICAgICAgICAgICAgICBjaGFyX2NsYXNzX3R5cGU7Ci0jZW5kaWYKLQotICAgc3RydWN0IGJvb3N0X2V4dGVuc2lvbnNfdGFne307Ci0KLSAgIGljdV9yZWdleF90cmFpdHMoKQotICAgICAgOiBtX3BpbXBsKHJlX2RldGFpbDo6Z2V0X2ljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24oVV9OQU1FU1BBQ0VfUVVBTElGSUVSIExvY2FsZSgpKSkKLSAgIHsKLSAgIH0KLSAgIHN0YXRpYyBzaXplX3R5cGUgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogcCk7Ci0KLSAgIDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhcl90eXBlIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoKGMgPCAweDdmKSAmJiAoYyA+IDApKSA/IHJlX2RldGFpbDo6Z2V0X2RlZmF1bHRfc3ludGF4X3R5cGUoc3RhdGljX2Nhc3Q8Y2hhcj4oYykpIDogcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2hhcjsKLSAgIH0KLSAgIDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZShjaGFyX3R5cGUgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoKGMgPCAweDdmKSAmJiAoYyA+IDApKSA/IHJlX2RldGFpbDo6Z2V0X2RlZmF1bHRfZXNjYXBlX3N5bnRheF90eXBlKHN0YXRpY19jYXN0PGNoYXI+KGMpKSA6IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NoYXI7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdHJhbnNsYXRlKGNoYXJfdHlwZSBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGM7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdHJhbnNsYXRlX25vY2FzZShjaGFyX3R5cGUgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6OnVfdG9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0cmFuc2xhdGUoY2hhcl90eXBlIGMsIGJvb2wgaWNhc2UpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gaWNhc2UgPyB0cmFuc2xhdGVfbm9jYXNlKGMpIDogdHJhbnNsYXRlKGMpOwotICAgfQotICAgY2hhcl90eXBlIHRvbG93ZXIoY2hhcl90eXBlIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjp1X3RvbG93ZXIoYyk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdG91cHBlcihjaGFyX3R5cGUgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6OnVfdG91cHBlcihjKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPnRyYW5zZm9ybShwMSwgcDIpOwotICAgfQotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhcl90eXBlKiBwMSwgY29uc3QgY2hhcl90eXBlKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT50cmFuc2Zvcm1fcHJpbWFyeShwMSwgcDIpOwotICAgfQotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWUoY29uc3QgY2hhcl90eXBlKiBwMSwgY29uc3QgY2hhcl90eXBlKiBwMikgY29uc3Q7Ci0gICBzdHJpbmdfdHlwZSBsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgY2hhcl90eXBlKiBwMSwgY29uc3QgY2hhcl90eXBlKiBwMikgY29uc3Q7Ci0gICBib29sIGlzY3R5cGUoY2hhcl90eXBlIGMsIGNoYXJfY2xhc3NfdHlwZSBmKSBjb25zdDsKLSAgIGludCB0b2koY29uc3QgY2hhcl90eXBlKiYgcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIsIGludCByYWRpeCljb25zdAotICAgewotICAgICAgcmV0dXJuIHJlX2RldGFpbDo6Z2xvYmFsX3RvaShwMSwgcDIsIHJhZGl4LCAqdGhpcyk7Ci0gICB9Ci0gICBpbnQgdmFsdWUoY2hhcl90eXBlIGMsIGludCByYWRpeCljb25zdAotICAgewotICAgICAgcmV0dXJuIHVfZGlnaXQoYywgc3RhdGljX2Nhc3Q8IDo6aW50OF90PihyYWRpeCkpOwotICAgfQotICAgbG9jYWxlX3R5cGUgaW1idWUobG9jYWxlX3R5cGUgbCkKLSAgIHsKLSAgICAgIGxvY2FsZV90eXBlIHJlc3VsdChtX3BpbXBsLT5nZXRsb2MoKSk7Ci0gICAgICBtX3BpbXBsID0gcmVfZGV0YWlsOjpnZXRfaWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbihsKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBsb2NhbGVfdHlwZSBnZXRsb2MoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbG9jYWxlX3R5cGUoKTsKLSAgIH0KLSAgIHN0ZDo6c3RyaW5nIGVycm9yX3N0cmluZyg6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiByZV9kZXRhaWw6OmdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhuKTsKLSAgIH0KLXByaXZhdGU6Ci0gICBpY3VfcmVnZXhfdHJhaXRzKGNvbnN0IGljdV9yZWdleF90cmFpdHMmKTsKLSAgIGljdV9yZWdleF90cmFpdHMmIG9wZXJhdG9yPShjb25zdCBpY3VfcmVnZXhfdHJhaXRzJik7Ci0KLSAgIC8vCi0gICAvLyBkZWZpbmUgdGhlIGJpdG1hc2tzIG9mZnNldHMgd2UgbmVlZCBmb3IgYWRkaXRpb25hbCBjaGFyYWN0ZXIgcHJvcGVydGllczoKLSAgIC8vCi0gICBlbnVtewotICAgICAgb2Zmc2V0X2JsYW5rID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5ULAotICAgICAgb2Zmc2V0X3NwYWNlID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzEsCi0gICAgICBvZmZzZXRfeGRpZ2l0ID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzIsCi0gICAgICBvZmZzZXRfdW5kZXJzY29yZSA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCszLAotICAgICAgb2Zmc2V0X3VuaWNvZGUgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQrNCwKLSAgICAgIG9mZnNldF9hbnkgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQrNSwKLSAgICAgIG9mZnNldF9hc2NpaSA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCs2LAotICAgICAgb2Zmc2V0X2hvcml6b250YWwgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQrNywKLSAgICAgIG9mZnNldF92ZXJ0aWNhbCA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCs4Ci0gICB9OwotCi0gICAvLwotICAgLy8gYW5kIG5vdyB0aGUgbWFza3M6Ci0gICAvLwotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrX2JsYW5rOwotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrX3NwYWNlOwotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrX3hkaWdpdDsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza191bmRlcnNjb3JlOwotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrX3VuaWNvZGU7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfYW55OwotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrX2FzY2lpOwotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrX2hvcml6b250YWw7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfdmVydGljYWw7Ci0KLSAgIHN0YXRpYyBjaGFyX2NsYXNzX3R5cGUgbG9va3VwX2ljdV9tYXNrKGNvbnN0IDo6VUNoYXIzMiogcDEsIGNvbnN0IDo6VUNoYXIzMiogcDIpOwotCi0gICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjppY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPiBtX3BpbXBsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8KLS8vIHRlbXBsYXRlIGluc3RhbmNlczoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBVQ2hhcjMyCi0jdW5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgLCBpY3VfcmVnZXhfdHJhaXRzCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0lDVV9JTlNUQU5DRVMKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9JQ1VfSU5TVEFOVElBVEUKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvaW5zdGFuY2VzLmhwcD4KLSN1bmRlZiBORE5CT09TVF9SRUdFWF9DSEFSX1QKLSN1bmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfVAotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX0lDVV9JTlNUQU5DRVMKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgdW5kZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLS8vIHR5cGVzOgotdHlwZWRlZiBiYXNpY19yZWdleDwgOjpVQ2hhcjMyLCBpY3VfcmVnZXhfdHJhaXRzPiB1MzJyZWdleDsKLXR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb25zdCA6OlVDaGFyMzIqPiB1MzJtYXRjaDsKLXR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb25zdCA6OlVDaGFyKj4gdTE2bWF0Y2g7Ci0KLS8vCi0vLyBDb25zdHJ1Y3Rpb24gb2YgMzItYml0IHJlZ2V4IHR5cGVzIGZyb20gVVRGLTggYW5kIFVURi0xNiBwcmltaXRpdmVzOgotLy8KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKQotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci1pbmxpbmUgdTMycmVnZXggZG9fbWFrZV91MzJyZWdleChJbnB1dEl0ZXJhdG9yIGksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBqLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuYm9vc3Q6Om1wbDo6aW50XzwxPiopCi17Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8SW5wdXRJdGVyYXRvciwgVUNoYXIzMj4gY29udl90eXBlOwotICAgcmV0dXJuIHUzMnJlZ2V4KGNvbnZfdHlwZShpLCBpLCBqKSwgY29udl90eXBlKGosIGksIGopLCBvcHQpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBkb19tYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG5ib29zdDo6bXBsOjppbnRfPDI+KikKLXsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8SW5wdXRJdGVyYXRvciwgVUNoYXIzMj4gY29udl90eXBlOwotICAgcmV0dXJuIHUzMnJlZ2V4KGNvbnZfdHlwZShpLCBpLCBqKSwgY29udl90eXBlKGosIGksIGopLCBvcHQpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBkb19tYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG5ib29zdDo6bXBsOjppbnRfPDQ+KikKLXsKLSAgIHJldHVybiB1MzJyZWdleChpLCBqLCBvcHQpOwotfQotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotaW5saW5lIHUzMnJlZ2V4IGRvX21ha2VfdTMycmVnZXgoSW5wdXRJdGVyYXRvciBpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgaiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbmJvb3N0OjptcGw6OmludF88MT4qKQotewotICAgdHlwZWRlZiBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPElucHV0SXRlcmF0b3IsIFVDaGFyMzI+IGNvbnZfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8VUNoYXIzMj4gdmVjdG9yX3R5cGU7Ci0gICB2ZWN0b3JfdHlwZSB2OwotICAgY29udl90eXBlIGEoaSwgaSwgaiksIGIoaiwgaSwgaik7Ci0gICB3aGlsZShhICE9IGIpCi0gICB7Ci0gICAgICB2LnB1c2hfYmFjaygqYSk7Ci0gICAgICArK2E7Ci0gICB9Ci0gICBpZih2LnNpemUoKSkKLSAgICAgIHJldHVybiB1MzJyZWdleCgmKnYuYmVnaW4oKSwgdi5zaXplKCksIG9wdCk7Ci0gICByZXR1cm4gdTMycmVnZXgoc3RhdGljX2Nhc3Q8VUNoYXIzMiBjb25zdCo+KDApLCBzdGF0aWNfY2FzdDx1MzJyZWdleDo6c2l6ZV90eXBlPigwKSwgb3B0KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci1pbmxpbmUgdTMycmVnZXggZG9fbWFrZV91MzJyZWdleChJbnB1dEl0ZXJhdG9yIGksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBqLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuYm9vc3Q6Om1wbDo6aW50XzwyPiopCi17Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPElucHV0SXRlcmF0b3IsIFVDaGFyMzI+IGNvbnZfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8VUNoYXIzMj4gdmVjdG9yX3R5cGU7Ci0gICB2ZWN0b3JfdHlwZSB2OwotICAgY29udl90eXBlIGEoaSwgaSwgaiksIGIoaiwgaSwgaik7Ci0gICB3aGlsZShhICE9IGIpCi0gICB7Ci0gICAgICB2LnB1c2hfYmFjaygqYSk7Ci0gICAgICArK2E7Ci0gICB9Ci0gICBpZih2LnNpemUoKSkKLSAgICAgIHJldHVybiB1MzJyZWdleCgmKnYuYmVnaW4oKSwgdi5zaXplKCksIG9wdCk7Ci0gICByZXR1cm4gdTMycmVnZXgoc3RhdGljX2Nhc3Q8VUNoYXIzMiBjb25zdCo+KDApLCBzdGF0aWNfY2FzdDx1MzJyZWdleDo6c2l6ZV90eXBlPigwKSwgb3B0KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci1pbmxpbmUgdTMycmVnZXggZG9fbWFrZV91MzJyZWdleChJbnB1dEl0ZXJhdG9yIGksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBqLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuYm9vc3Q6Om1wbDo6aW50Xzw0PiopCi17Ci0gICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFVDaGFyMzI+IHZlY3Rvcl90eXBlOwotICAgdmVjdG9yX3R5cGUgdjsKLSAgIHdoaWxlKGkgIT0gaikKLSAgIHsKLSAgICAgIHYucHVzaF9iYWNrKChVQ2hhcjMyKSgqaSkpOwotICAgICAgKytpOwotICAgfQotICAgaWYodi5zaXplKCkpCi0gICAgICByZXR1cm4gdTMycmVnZXgoJip2LmJlZ2luKCksIHYuc2l6ZSgpLCBvcHQpOwotICAgcmV0dXJuIHUzMnJlZ2V4KHN0YXRpY19jYXN0PFVDaGFyMzIgY29uc3QqPigwKSwgc3RhdGljX2Nhc3Q8dTMycmVnZXg6OnNpemVfdHlwZT4oMCksIG9wdCk7Ci19Ci0jZW5kaWYKLX0KLQotLy8KLS8vIENvbnN0cnVjdGlvbiBmcm9tIGFuIGl0ZXJhdG9yIHBhaXI6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci1pbmxpbmUgdTMycmVnZXggbWFrZV91MzJyZWdleChJbnB1dEl0ZXJhdG9yIGksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBqLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KGksIGosIG9wdCwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6Om1wbDo6aW50XzxzaXplb2YoKmkpPiBjb25zdCo+KDApKTsKLX0KLS8vCi0vLyBjb25zdHJ1Y3Rpb24gZnJvbSBVVEYtOCBudWwtdGVybWluYXRlZCBzdHJpbmdzOgotLy8KLWlubGluZSB1MzJyZWdleCBtYWtlX3UzMnJlZ2V4KGNvbnN0IGNoYXIqIHAsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpwZXJsKQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fbWFrZV91MzJyZWdleChwLCBwICsgc3RkOjpzdHJsZW4ocCksIG9wdCwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6Om1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSB1MzJyZWdleCBtYWtlX3UzMnJlZ2V4KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpwZXJsKQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fbWFrZV91MzJyZWdleChwLCBwICsgc3RkOjpzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocCkpLCBvcHQsIHN0YXRpY19jYXN0PG5kbmJvb3N0OjptcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci0vLwotLy8gY29uc3RydWN0aW9uIGZyb20gVVRGLTE2IG51bC10ZXJtaW5hdGVkIHN0cmluZ3M6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLWlubGluZSB1MzJyZWdleCBtYWtlX3UzMnJlZ2V4KGNvbnN0IHdjaGFyX3QqIHAsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpwZXJsKQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fbWFrZV91MzJyZWdleChwLCBwICsgc3RkOjp3Y3NsZW4ocCksIG9wdCwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6Om1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikKLWlubGluZSB1MzJyZWdleCBtYWtlX3UzMnJlZ2V4KGNvbnN0IFVDaGFyKiBwLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0ID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6cGVybCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX21ha2VfdTMycmVnZXgocCwgcCArIHVfc3RybGVuKHApLCBvcHQsIHN0YXRpY19jYXN0PG5kbmJvb3N0OjptcGw6OmludF88Mj4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLS8vCi0vLyBjb25zdHJ1Y3Rpb24gZnJvbSBiYXNpY19zdHJpbmcgY2xhc3MtdGVtcGxhdGU6Ci0vLwotdGVtcGxhdGU8Y2xhc3MgQywgY2xhc3MgVCwgY2xhc3MgQT4KLWlubGluZSB1MzJyZWdleCBtYWtlX3UzMnJlZ2V4KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPEMsIFQsIEE+JiBzLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0ID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6cGVybCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX21ha2VfdTMycmVnZXgocy5iZWdpbigpLCBzLmVuZCgpLCBvcHQsIHN0YXRpY19jYXN0PG5kbmJvb3N0OjptcGw6OmludF88c2l6ZW9mKEMpPiBjb25zdCo+KDApKTsKLX0KLS8vCi0vLyBDb25zdHJ1Y3Rpb24gZnJvbSBJQ1Ugc3RyaW5nIHR5cGU6Ci0vLwotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpwZXJsKQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fbWFrZV91MzJyZWdleChzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgb3B0LCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpOwotfQotCi0vLwotLy8gcmVnZXhfbWF0Y2ggb3ZlcmxvYWRzIHRoYXQgd2lkZW4gdGhlIGNoYXJhY3RlciB0eXBlIGFzIGFwcHJvcHJpYXRlOgotLy8KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci10ZW1wbGF0ZTxjbGFzcyBNUjEsIGNsYXNzIE1SMj4KLXZvaWQgY29weV9yZXN1bHRzKE1SMSYgb3V0LCBNUjIgY29uc3QmIGluKQotewotICAgLy8gY29weSByZXN1bHRzIGZyb20gYW4gYWRhcHRlZCBNUjIgbWF0Y2hfcmVzdWx0czoKLSAgIG91dC5zZXRfc2l6ZShpbi5zaXplKCksIGluLnByZWZpeCgpLmZpcnN0LmJhc2UoKSwgaW4uc3VmZml4KCkuc2Vjb25kLmJhc2UoKSk7Ci0gICBvdXQuc2V0X2Jhc2UoaW4uYmFzZSgpLmJhc2UoKSk7Ci0gICBmb3IoaW50IGkgPSAwOyBpIDwgKGludClpbi5zaXplKCk7ICsraSkKLSAgIHsKLSAgICAgIGlmKGluW2ldLm1hdGNoZWQpCi0gICAgICB7Ci0gICAgICAgICBvdXQuc2V0X2ZpcnN0KGluW2ldLmZpcnN0LmJhc2UoKSwgaSk7Ci0gICAgICAgICBvdXQuc2V0X3NlY29uZChpbltpXS5zZWNvbmQuYmFzZSgpLCBpKTsKLSAgICAgIH0KLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgZG9fcmVnZXhfbWF0Y2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88ND4gY29uc3QqKQotewotICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlZ2V4X21hdGNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncyk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1ib29sIGRvX3JlZ2V4X21hdGNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDI+IGNvbnN0KikKLXsKLSAgIHR5cGVkZWYgdTE2X3RvX3UzMl9pdGVyYXRvcjxCaWRpSXRlcmF0b3IsIFVDaGFyMzI+IGNvbnZfdHlwZTsKLSAgIHR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb252X3R5cGU+ICAgICAgICAgICAgICAgICAgIG1hdGNoX3R5cGU7Ci0gICAvL3R5cGVkZWYgdHlwZW5hbWUgbWF0Y2hfdHlwZTo6YWxsb2NhdG9yX3R5cGUgICAgICAgIGFsbG9jX3R5cGU7Ci0gICBtYXRjaF90eXBlIHdoYXQ7Ci0gICBib29sIHJlc3VsdCA9IDo6bmRuYm9vc3Q6OnJlZ2V4X21hdGNoKGNvbnZfdHlwZShmaXJzdCwgZmlyc3QsIGxhc3QpLCBjb252X3R5cGUobGFzdCwgZmlyc3QsIGxhc3QpLCB3aGF0LCBlLCBmbGFncyk7Ci0gICAvLyBjb3B5IHJlc3VsdHMgYWNyb3NzIHRvIG06Ci0gICBpZihyZXN1bHQpIGNvcHlfcmVzdWx0cyhtLCB3aGF0KTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1ib29sIGRvX3JlZ2V4X21hdGNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDE+IGNvbnN0KikKLXsKLSAgIHR5cGVkZWYgdThfdG9fdTMyX2l0ZXJhdG9yPEJpZGlJdGVyYXRvciwgVUNoYXIzMj4gIGNvbnZfdHlwZTsKLSAgIHR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb252X3R5cGU+ICAgICAgICAgICAgICAgICAgIG1hdGNoX3R5cGU7Ci0gICAvL3R5cGVkZWYgdHlwZW5hbWUgbWF0Y2hfdHlwZTo6YWxsb2NhdG9yX3R5cGUgICAgICAgIGFsbG9jX3R5cGU7Ci0gICBtYXRjaF90eXBlIHdoYXQ7Ci0gICBib29sIHJlc3VsdCA9IDo6bmRuYm9vc3Q6OnJlZ2V4X21hdGNoKGNvbnZfdHlwZShmaXJzdCwgZmlyc3QsIGxhc3QpLCBjb252X3R5cGUobGFzdCwgZmlyc3QsIGxhc3QpLCB3aGF0LCBlLCBmbGFncyk7Ci0gICAvLyBjb3B5IHJlc3VsdHMgYWNyb3NzIHRvIG06Ci0gICBpZihyZXN1bHQpIGNvcHlfcmVzdWx0cyhtLCB3aGF0KTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgVUNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IFVDaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3Vfc3RybGVuKHApLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpOwotfQotI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmIChVX1NJWkVPRl9XQ0hBUl9UICE9IDIpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHAsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHAsIHArc3RkOjp3Y3NsZW4ocCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCtzdGQ6OnN0cmxlbihwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IHVuc2lnbmVkIGNoYXIqPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHAsIHArc3RkOjpzdHJsZW4oKGNvbnN0IGNoYXIqKXApLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBzdGQ6OndzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLS8vCi0vLyByZWdleF9tYXRjaCBvdmVybG9hZHMgdGhhdCBkbyBub3QgcmV0dXJuIHdoYXQgbWF0Y2hlZDoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgVUNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IFVDaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHAsIHArdV9zdHJsZW4ocCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSk7Ci19Ci0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3N0ZDo6d2NzbGVuKHApLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCtzdGQ6OnN0cmxlbihwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHVuc2lnbmVkIGNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCtzdGQ6OnN0cmxlbigoY29uc3QgY2hhciopcCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBzdGQ6OndzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotCi0vLwotLy8gcmVnZXhfc2VhcmNoIG92ZXJsb2FkcyB0aGF0IHdpZGVuIHRoZSBjaGFyYWN0ZXIgdHlwZSBhcyBhcHByb3ByaWF0ZToKLS8vCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgZG9fcmVnZXhfc2VhcmNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3IgYmFzZSwKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50Xzw0PiBjb25zdCopCi17Ci0gICByZXR1cm4gOjpuZG5ib29zdDo6cmVnZXhfc2VhcmNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgYmFzZSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1ib29sIGRvX3JlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIGJhc2UsCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88Mj4gY29uc3QqKQotewotICAgdHlwZWRlZiB1MTZfdG9fdTMyX2l0ZXJhdG9yPEJpZGlJdGVyYXRvciwgVUNoYXIzMj4gY29udl90eXBlOwotICAgdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnZfdHlwZT4gICAgICAgICAgICAgICAgICAgbWF0Y2hfdHlwZTsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBtYXRjaF90eXBlOjphbGxvY2F0b3JfdHlwZSAgICAgICAgYWxsb2NfdHlwZTsKLSAgIG1hdGNoX3R5cGUgd2hhdDsKLSAgIGJvb2wgcmVzdWx0ID0gOjpuZG5ib29zdDo6cmVnZXhfc2VhcmNoKGNvbnZfdHlwZShmaXJzdCwgZmlyc3QsIGxhc3QpLCBjb252X3R5cGUobGFzdCwgZmlyc3QsIGxhc3QpLCB3aGF0LCBlLCBmbGFncywgY29udl90eXBlKGJhc2UpKTsKLSAgIC8vIGNvcHkgcmVzdWx0cyBhY3Jvc3MgdG8gbToKLSAgIGlmKHJlc3VsdCkgY29weV9yZXN1bHRzKG0sIHdoYXQpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWJvb2wgZG9fcmVnZXhfc2VhcmNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3IgYmFzZSwKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwxPiBjb25zdCopCi17Ci0gICB0eXBlZGVmIHU4X3RvX3UzMl9pdGVyYXRvcjxCaWRpSXRlcmF0b3IsIFVDaGFyMzI+ICBjb252X3R5cGU7Ci0gICB0eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29udl90eXBlPiAgICAgICAgICAgICAgICAgICBtYXRjaF90eXBlOwotICAgLy90eXBlZGVmIHR5cGVuYW1lIG1hdGNoX3R5cGU6OmFsbG9jYXRvcl90eXBlICAgICAgICBhbGxvY190eXBlOwotICAgbWF0Y2hfdHlwZSB3aGF0OwotICAgYm9vbCByZXN1bHQgPSA6Om5kbmJvb3N0OjpyZWdleF9zZWFyY2goY29udl90eXBlKGZpcnN0LCBmaXJzdCwgbGFzdCksIGNvbnZfdHlwZShsYXN0LCBmaXJzdCwgbGFzdCksIHdoYXQsIGUsIGZsYWdzLCBjb252X3R5cGUoYmFzZSkpOwotICAgLy8gY29weSByZXN1bHRzIGFjcm9zcyB0byBtOgotICAgaWYocmVzdWx0KSBjb3B5X3Jlc3VsdHMobSwgd2hhdCk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgZmlyc3QsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvciBiYXNlKQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgYmFzZSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBVQ2hhciogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3Vfc3RybGVuKHApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpOwotfQotI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmIChVX1NJWkVPRl9XQ0hBUl9UICE9IDIpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCB3Y2hhcl90KiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocCwgcCtzdGQ6Ondjc2xlbihwKSwgbSwgZSwgZmxhZ3MsIHAsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHAsIHArc3RkOjpzdHJsZW4ocCksIG0sIGUsIGZsYWdzLCBwLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgdW5zaWduZWQgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgdW5zaWduZWQgY2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHAsIHArc3RkOjpzdHJsZW4oKGNvbnN0IGNoYXIqKXApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MsIHMuYmVnaW4oKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfV1NUUklORwotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncywgcy5iZWdpbigpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBtLCBlLCBmbGFncywgcy5nZXRCdWZmZXIoKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIGZpcnN0LCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IFVDaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocCwgcCt1X3N0cmxlbihwKSwgbSwgZSwgZmxhZ3MsIHAsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwyPiBjb25zdCo+KDApKTsKLX0KLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3Qgd2NoYXJfdCogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocCwgcCtzdGQ6Ondjc2xlbihwKSwgbSwgZSwgZmxhZ3MsIHAsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhcio+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocCwgcCtzdGQ6OnN0cmxlbihwKSwgbSwgZSwgZmxhZ3MsIHAsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCB1bnNpZ25lZCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCB1bnNpZ25lZCBjaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3N0ZDo6c3RybGVuKChjb25zdCBjaGFyKilwKSwgbSwgZSwgZmxhZ3MsIHAsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncywgcy5iZWdpbigpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3Qgc3RkOjp3c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncywgcy5iZWdpbigpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IFVDaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgbSwgZSwgZmxhZ3MsIHMuZ2V0QnVmZmVyKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotCi0vLwotLy8gb3ZlcmxvYWRzIGZvciByZWdleF9yZXBsYWNlIHdpdGggdXRmLTggYW5kIHV0Zi0xNiBkYXRhIHR5cGVzOgotLy8KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci10ZW1wbGF0ZSA8Y2xhc3MgST4KLWlubGluZSBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8ST4sIG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8ST4gPgotICAgbWFrZV91dGYzMl9zZXEoSSBpLCBJIGosIG1wbDo6aW50XzwxPiBjb25zdCopCi17Ci0gICByZXR1cm4gc3RkOjpwYWlyPCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPEk+LCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPEk+ID4obmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJPihpLCBpLCBqKSwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJPihqLCBpLCBqKSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgST4KLWlubGluZSBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPEk+LCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxJPiA+Ci0gICBtYWtlX3V0ZjMyX3NlcShJIGksIEkgaiwgbXBsOjppbnRfPDI+IGNvbnN0KikKLXsKLSAgIHJldHVybiBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPEk+LCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxJPiA+KG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPEk+KGksIGksIGopLCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxJPihqLCBpLCBqKSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgST4KLWlubGluZSBzdGQ6OnBhaXI8IEksIEkgPgotICAgbWFrZV91dGYzMl9zZXEoSSBpLCBJIGosIG1wbDo6aW50Xzw0PiBjb25zdCopCi17Ci0gICByZXR1cm4gc3RkOjpwYWlyPCBJLCBJID4oaSwgaik7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgc3RkOjpwYWlyPCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4sIG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPiA+Ci0gICBtYWtlX3V0ZjMyX3NlcShjb25zdCBjaGFyVCogcCwgbXBsOjppbnRfPDE+IGNvbnN0KikKLXsKLSAgIHN0ZDo6c2l6ZV90IGxlbiA9IHN0ZDo6c3RybGVuKChjb25zdCBjaGFyKilwKTsKLSAgIHJldHVybiBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPiwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+ID4obmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+KHAsIHAsIHArbGVuKSwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+KHArbGVuLCBwLCBwK2xlbikpOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPiwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPiA+Ci0gICBtYWtlX3V0ZjMyX3NlcShjb25zdCBjaGFyVCogcCwgbXBsOjppbnRfPDI+IGNvbnN0KikKLXsKLSAgIHN0ZDo6c2l6ZV90IGxlbiA9IHVfc3RybGVuKChjb25zdCBVQ2hhciopcCk7Ci0gICByZXR1cm4gc3RkOjpwYWlyPCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+LCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+ID4obmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPihwLCBwLCBwICsgbGVuKSwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPihwK2xlbiwgcCwgcCArIGxlbikpOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIHN0ZDo6cGFpcjwgY29uc3QgY2hhclQqLCBjb25zdCBjaGFyVCogPgotICAgbWFrZV91dGYzMl9zZXEoY29uc3QgY2hhclQqIHAsIG1wbDo6aW50Xzw0PiBjb25zdCopCi17Ci0gICByZXR1cm4gc3RkOjpwYWlyPCBjb25zdCBjaGFyVCosIGNvbnN0IGNoYXJUKiA+KHAsIHAraWN1X3JlZ2V4X3RyYWl0czo6bGVuZ3RoKChVQ2hhcjMyIGNvbnN0KilwKSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgbWFrZV91dGYzMl9vdXQoT3V0cHV0SXRlcmF0b3IgbywgbXBsOjppbnRfPDQ+IGNvbnN0KikKLXsKLSAgIHJldHVybiBvOwotfQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIHV0ZjE2X291dHB1dF9pdGVyYXRvcjxPdXRwdXRJdGVyYXRvcj4gbWFrZV91dGYzMl9vdXQoT3V0cHV0SXRlcmF0b3IgbywgbXBsOjppbnRfPDI+IGNvbnN0KikKLXsKLSAgIHJldHVybiBvOwotfQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yPE91dHB1dEl0ZXJhdG9yPiBtYWtlX3V0ZjMyX291dChPdXRwdXRJdGVyYXRvciBvLCBtcGw6OmludF88MT4gY29uc3QqKQotewotICAgcmV0dXJuIG87Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgSTEsIGNsYXNzIEkyPgotT3V0cHV0SXRlcmF0b3IgZG9fcmVnZXhfcmVwbGFjZShPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnBhaXI8STEsIEkxPiBjb25zdCYgaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnBhaXI8STIsIEkyPiYgZm10LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotewotICAgLy8gdW5mb3J0dW5hdGVseSB3ZSBoYXZlIHRvIGNvcHkgdGhlIGZvcm1hdCBzdHJpbmcgaW4gb3JkZXIgdG8gcGFzcyBpbiBvbndhcmQ6Ci0gICBzdGQ6OnZlY3RvcjxVQ2hhcjMyPiBmOwotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTCi0gICBmLmFzc2lnbihmbXQuZmlyc3QsIGZtdC5zZWNvbmQpOwotI2Vsc2UKLSAgIGYuY2xlYXIoKTsKLSAgIEkyIHBvcyA9IGZtdC5maXJzdDsKLSAgIHdoaWxlKHBvcyAhPSBmbXQuc2Vjb25kKQotICAgICAgZi5wdXNoX2JhY2soKnBvcysrKTsKLSNlbmRpZgotICAgCi0gICByZWdleF9pdGVyYXRvcjxJMSwgVUNoYXIzMiwgaWN1X3JlZ2V4X3RyYWl0cz4gaShpbi5maXJzdCwgaW4uc2Vjb25kLCBlLCBmbGFncyk7Ci0gICByZWdleF9pdGVyYXRvcjxJMSwgVUNoYXIzMiwgaWN1X3JlZ2V4X3RyYWl0cz4gajsKLSAgIGlmKGkgPT0gaikKLSAgIHsKLSAgICAgIGlmKCEoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5KSkKLSAgICAgICAgIG91dCA9IHJlX2RldGFpbDo6Y29weShpbi5maXJzdCwgaW4uc2Vjb25kLCBvdXQpOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgSTEgbGFzdF9tID0gaW4uZmlyc3Q7Ci0gICAgICB3aGlsZShpICE9IGopCi0gICAgICB7Ci0gICAgICAgICBpZighKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfbm9fY29weSkpCi0gICAgICAgICAgICBvdXQgPSByZV9kZXRhaWw6OmNvcHkoaS0+cHJlZml4KCkuZmlyc3QsIGktPnByZWZpeCgpLnNlY29uZCwgb3V0KTsgCi0gICAgICAgICBpZihmLnNpemUoKSkKLSAgICAgICAgICAgIG91dCA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6cmVnZXhfZm9ybWF0X2ltcChvdXQsICppLCAmKmYuYmVnaW4oKSwgJipmLmJlZ2luKCkgKyBmLnNpemUoKSwgZmxhZ3MsIGUuZ2V0X3RyYWl0cygpKTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dCA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6cmVnZXhfZm9ybWF0X2ltcChvdXQsICppLCBzdGF0aWNfY2FzdDxVQ2hhcjMyIGNvbnN0Kj4oMCksIHN0YXRpY19jYXN0PFVDaGFyMzIgY29uc3QqPigwKSwgZmxhZ3MsIGUuZ2V0X3RyYWl0cygpKTsKLSAgICAgICAgIGxhc3RfbSA9ICgqaSlbMF0uc2Vjb25kOwotICAgICAgICAgaWYoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9maXJzdF9vbmx5KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICArK2k7Ci0gICAgICB9Ci0gICAgICBpZighKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfbm9fY29weSkpCi0gICAgICAgICBvdXQgPSByZV9kZXRhaWw6OmNvcHkobGFzdF9tLCBpbi5zZWNvbmQsIG91dCk7Ci0gICB9Ci0gICByZXR1cm4gb3V0OwotfQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvcj4KLWlubGluZSBjb25zdCBCYXNlSXRlcmF0b3ImIGV4dHJhY3Rfb3V0cHV0X2Jhc2UoY29uc3QgQmFzZUl0ZXJhdG9yJiBiKQotewotICAgcmV0dXJuIGI7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yPgotaW5saW5lIEJhc2VJdGVyYXRvciBleHRyYWN0X291dHB1dF9iYXNlKGNvbnN0IHV0Zjhfb3V0cHV0X2l0ZXJhdG9yPEJhc2VJdGVyYXRvcj4mIGIpCi17Ci0gICByZXR1cm4gYi5iYXNlKCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yPgotaW5saW5lIEJhc2VJdGVyYXRvciBleHRyYWN0X291dHB1dF9iYXNlKGNvbnN0IHV0ZjE2X291dHB1dF9pdGVyYXRvcjxCYXNlSXRlcmF0b3I+JiBiKQotewotICAgcmV0dXJuIGIuYmFzZSgpOwotfQotfSAgLy8gcmVfZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBjbGFzcyBjaGFyVD4KLWlubGluZSBPdXRwdXRJdGVyYXRvciB1MzJyZWdleF9yZXBsYWNlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBmbXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpleHRyYWN0X291dHB1dF9iYXNlCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgPE91dHB1dEl0ZXJhdG9yPgotI2VuZGlmCi0gICAgKAotICAgICAgcmVfZGV0YWlsOjpkb19yZWdleF9yZXBsYWNlKAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX291dChvdXQsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSksCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfc2VxKGZpcnN0LCBsYXN0LCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgZSwKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9zZXEoZm10LCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmbXQpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGZsYWdzKQotICAgICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBJdGVyYXRvciwgY2xhc3MgY2hhclQ+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgdTMycmVnZXhfcmVwbGFjZShPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmV4dHJhY3Rfb3V0cHV0X2Jhc2UKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICA8T3V0cHV0SXRlcmF0b3I+Ci0jZW5kaWYKLSAgICAoCi0gICAgICByZV9kZXRhaWw6OmRvX3JlZ2V4X3JlcGxhY2UoCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfb3V0KG91dCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9zZXEoZmlyc3QsIGxhc3QsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSksCi0gICAgICAgICBlLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShmbXQuYmVnaW4oKSwgZm10LmVuZCgpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKGNoYXJUKT4gY29uc3QqPigwKSksCi0gICAgICAgICBmbGFncykKLSAgICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgSXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgdTMycmVnZXhfcmVwbGFjZShPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZXh0cmFjdF9vdXRwdXRfYmFzZQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgIDxPdXRwdXRJdGVyYXRvcj4KLSNlbmRpZgotICAgKAotICAgICAgcmVfZGV0YWlsOjpkb19yZWdleF9yZXBsYWNlKAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX291dChvdXQsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSksCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfc2VxKGZpcnN0LCBsYXN0LCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgZSwKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9zZXEoZm10LmdldEJ1ZmZlcigpLCBmbXQuZ2V0QnVmZmVyKCkgKyBmbXQubGVuZ3RoKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzwyPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGZsYWdzKQotICAgICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHUzMnJlZ2V4X3JlcGxhY2UoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gcmVzdWx0OwotICAgcmVfZGV0YWlsOjpzdHJpbmdfb3V0X2l0ZXJhdG9yPHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiA+IGkocmVzdWx0KTsKLSAgIHUzMnJlZ2V4X3JlcGxhY2UoaSwgcy5iZWdpbigpLCBzLmVuZCgpLCBlLCBmbXQsIGZsYWdzKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiB1MzJyZWdleF9yZXBsYWNlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiByZXN1bHQ7Ci0gICByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+ID4gaShyZXN1bHQpOwotICAgdTMycmVnZXhfcmVwbGFjZShpLCBzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZtdC5jX3N0cigpLCBmbGFncyk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi1jbGFzcyB1bmljb2RlX3N0cmluZ19vdXRfaXRlcmF0b3IKLXsKLSAgIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nKiBvdXQ7Ci1wdWJsaWM6Ci0gICB1bmljb2RlX3N0cmluZ19vdXRfaXRlcmF0b3IoVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMpIDogb3V0KCZzKSB7fQotICAgdW5pY29kZV9zdHJpbmdfb3V0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgIHVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICB1bmljb2RlX3N0cmluZ19vdXRfaXRlcmF0b3ImIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICB1bmljb2RlX3N0cmluZ19vdXRfaXRlcmF0b3ImIG9wZXJhdG9yPShVQ2hhciB2KSAKLSAgIHsgCi0gICAgICAqb3V0ICs9IHY7IAotICAgICAgcmV0dXJuICp0aGlzOyAKLSAgIH0KLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBVQ2hhciB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiB2YWx1ZV90eXBlKiBwb2ludGVyOwotICAgdHlwZWRlZiB2YWx1ZV90eXBlJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLX07Ci0KLX0KLQotaW5saW5lIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nIHUzMnJlZ2V4X3JlcGxhY2UoY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nIHJlc3VsdDsKLSAgIHJlX2RldGFpbDo6dW5pY29kZV9zdHJpbmdfb3V0X2l0ZXJhdG9yIGkocmVzdWx0KTsKLSAgIHUzMnJlZ2V4X3JlcGxhY2UoaSwgcy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKStzLmxlbmd0aCgpLCBlLCBmbXQsIGZsYWdzKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWlubGluZSBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyB1MzJyZWdleF9yZXBsYWNlKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyByZXN1bHQ7Ci0gICByZV9kZXRhaWw6OnVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvciBpKHJlc3VsdCk7Ci0gICByZV9kZXRhaWw6OmRvX3JlZ2V4X3JlcGxhY2UoCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfb3V0KGksIHN0YXRpY19jYXN0PG1wbDo6aW50XzwyPiBjb25zdCo+KDApKSwKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9zZXEocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKStzLmxlbmd0aCgpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSksCi0gICAgICAgICBlLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShmbXQuZ2V0QnVmZmVyKCksIGZtdC5nZXRCdWZmZXIoKSArIGZtdC5sZW5ndGgoKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgZmxhZ3MpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QuCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcgKHBvcCkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcD4KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BhdHRlcm5fZXhjZXB0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGF0dGVybl9leGNlcHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWMwZDQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGF0dGVybl9leGNlcHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcGF0dGVybl9leGNlcHQuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBwYXR0ZXJuLW1hdGNoaW5nIGV4Y2VwdGlvbiBjbGFzc2VzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX1BBVF9FWENFUFRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFX1BBVF9FWENFUFRfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0Mjc1KQotI2VuZGlmCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHJlZ2V4X2Vycm9yIDogcHVibGljIHN0ZDo6cnVudGltZV9lcnJvcgotewotcHVibGljOgotICAgZXhwbGljaXQgcmVnZXhfZXJyb3IoY29uc3Qgc3RkOjpzdHJpbmcmIHMsIHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlcnIgPSByZWdleF9jb25zdGFudHM6OmVycm9yX3Vua25vd24sIHN0ZDo6cHRyZGlmZl90IHBvcyA9IDApOwotICAgZXhwbGljaXQgcmVnZXhfZXJyb3IocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVycik7Ci0gICB+cmVnZXhfZXJyb3IoKSB0aHJvdygpOwotICAgcmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGNvZGUoKWNvbnN0Ci0gICB7IHJldHVybiBtX2Vycm9yX2NvZGU7IH0KLSAgIHN0ZDo6cHRyZGlmZl90IHBvc2l0aW9uKCljb25zdAotICAgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgdm9pZCByYWlzZSgpY29uc3Q7Ci1wcml2YXRlOgotICAgcmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIG1fZXJyb3JfY29kZTsKLSAgIHN0ZDo6cHRyZGlmZl90IG1fcG9zaXRpb247Ci19OwotCi10eXBlZGVmIHJlZ2V4X2Vycm9yIGJhZF9wYXR0ZXJuOwotdHlwZWRlZiByZWdleF9lcnJvciBiYWRfZXhwcmVzc2lvbjsKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgcmFpc2VfcnVudGltZV9lcnJvcihjb25zdCBzdGQ6OnJ1bnRpbWVfZXJyb3ImIGV4KTsKLQotdGVtcGxhdGUgPGNsYXNzIHRyYWl0cz4KLXZvaWQgcmFpc2VfZXJyb3IoY29uc3QgdHJhaXRzJiB0LCByZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgY29kZSkKLXsKLSAgICh2b2lkKXQ7ICAvLyB3YXJuaW5nIHN1cHByZXNzaW9uCi0gICBzdGQ6OnJ1bnRpbWVfZXJyb3IgZSh0LmVycm9yX3N0cmluZyhjb2RlKSk7Ci0gICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnJhaXNlX3J1bnRpbWVfZXJyb3IoZSk7Ci19Ci0KLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy9vYmplY3RfY2FjaGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL29iamVjdF9jYWNoZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYTA4OGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL29iamVjdF9jYWNoZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBvYmplY3RfY2FjaGUuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBJbXBsZW1lbnRzIGEgZ2VuZXJpYyBvYmplY3QgY2FjaGUuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfT0JKRUNUX0NBQ0hFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9PQkpFQ1RfQ0FDSEVfSFBQCi0KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wZW5kaW5nL3N0YXRpY19tdXRleC5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBPYmplY3Q+Ci1jbGFzcyBvYmplY3RfY2FjaGUKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgc3RkOjpwYWlyPCA6Om5kbmJvb3N0OjpzaGFyZWRfcHRyPE9iamVjdCBjb25zdD4sIEtleSBjb25zdCo+IHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6bGlzdDx2YWx1ZV90eXBlPiBsaXN0X3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGxpc3RfdHlwZTo6aXRlcmF0b3IgbGlzdF9pdGVyYXRvcjsKLSAgIHR5cGVkZWYgc3RkOjptYXA8S2V5LCBsaXN0X2l0ZXJhdG9yPiBtYXBfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwX3R5cGU6Oml0ZXJhdG9yIG1hcF9pdGVyYXRvcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdF90eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBlOwotICAgc3RhdGljIG5kbmJvb3N0OjpzaGFyZWRfcHRyPE9iamVjdCBjb25zdD4gZ2V0KGNvbnN0IEtleSYgaywgc2l6ZV90eXBlIGxfbWF4X2NhY2hlX3NpemUpOwotCi1wcml2YXRlOgotICAgc3RhdGljIG5kbmJvb3N0OjpzaGFyZWRfcHRyPE9iamVjdCBjb25zdD4gZG9fZ2V0KGNvbnN0IEtleSYgaywgc2l6ZV90eXBlIGxfbWF4X2NhY2hlX3NpemUpOwotCi0gICBzdHJ1Y3QgZGF0YQotICAgewotICAgICAgbGlzdF90eXBlICAgY29udDsKLSAgICAgIG1hcF90eXBlICAgIGluZGV4OwotICAgfTsKLQotICAgLy8gTmVlZGVkIGJ5IGNvbXBpbGVycyBub3QgaW1wbGVtZW50aW5nIHRoZSByZXNvbHV0aW9uIHRvIERSNDUuIEZvciByZWZlcmVuY2UsCi0gICAvLyBzZWUgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9jd2dfZGVmZWN0cy5odG1sIzQ1LgotICAgZnJpZW5kIHN0cnVjdCBkYXRhOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgT2JqZWN0PgotbmRuYm9vc3Q6OnNoYXJlZF9wdHI8T2JqZWN0IGNvbnN0PiBvYmplY3RfY2FjaGU8S2V5LCBPYmplY3Q+OjpnZXQoY29uc3QgS2V5JiBrLCBzaXplX3R5cGUgbF9tYXhfY2FjaGVfc2l6ZSkKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljIG5kbmJvb3N0OjpzdGF0aWNfbXV0ZXggbXV0ID0gTkROQk9PU1RfU1RBVElDX01VVEVYX0lOSVQ7Ci0KLSAgIG5kbmJvb3N0OjpzdGF0aWNfbXV0ZXg6OnNjb3BlZF9sb2NrIGwobXV0KTsKLSAgIGlmKGwpCi0gICB7Ci0gICAgICByZXR1cm4gZG9fZ2V0KGssIGxfbWF4X2NhY2hlX3NpemUpOwotICAgfQotICAgLy8KLSAgIC8vIHdoYXQgZG8gd2UgZG8gaWYgdGhlIGxvY2sgZmFpbHM/Ci0gICAvLyBmb3Igbm93IGp1c3QgdGhyb3csIGJ1dCB3ZSBzaG91bGQgbmV2ZXIgcmVhbGx5IGdldCBoZXJlLi4uCi0gICAvLwotICAgOjpuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6cnVudGltZV9lcnJvcigiRXJyb3IgaW4gdGhyZWFkIHNhZmV0eSBjb2RlOiBjb3VsZCBub3QgYWNxdWlyZSBhIGxvY2siKSk7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9OT19VTlJFQUNIQUJMRV9SRVRVUk5fREVURUNUSU9OKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8T2JqZWN0PigpOwotI2VuZGlmCi0jZWxzZQotICAgcmV0dXJuIGRvX2dldChrLCBsX21heF9jYWNoZV9zaXplKTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBPYmplY3Q+Ci1uZG5ib29zdDo6c2hhcmVkX3B0cjxPYmplY3QgY29uc3Q+IG9iamVjdF9jYWNoZTxLZXksIE9iamVjdD46OmRvX2dldChjb25zdCBLZXkmIGssIHNpemVfdHlwZSBsX21heF9jYWNoZV9zaXplKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBvYmplY3RfY2FjaGU8S2V5LCBPYmplY3Q+OjpkYXRhIG9iamVjdF9kYXRhOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBfdHlwZTo6c2l6ZV90eXBlIG1hcF9zaXplX3R5cGU7Ci0gICBzdGF0aWMgb2JqZWN0X2RhdGEgc19kYXRhOwotCi0gICAvLwotICAgLy8gc2VlIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeSBpbiB0aGUgY2FjaGU6Ci0gICAvLwotICAgbWFwX2l0ZXJhdG9yIG1wb3MgPSBzX2RhdGEuaW5kZXguZmluZChrKTsKLSAgIGlmKG1wb3MgIT0gc19kYXRhLmluZGV4LmVuZCgpKQotICAgewotICAgICAgLy8KLSAgICAgIC8vIEV1cmVrYSEgCi0gICAgICAvLyBXZSBoYXZlIGEgY2FjaGVkIGl0ZW0sIGJ1bXAgaXQgdXAgdGhlIGxpc3QgYW5kIHJldHVybiBpdDoKLSAgICAgIC8vCi0gICAgICBpZigtLShzX2RhdGEuY29udC5lbmQoKSkgIT0gbXBvcy0+c2Vjb25kKQotICAgICAgewotICAgICAgICAgLy8gc3BsaWNlIG91dCB0aGUgaXRlbSB3ZSB3YW50IHRvIG1vdmU6Ci0gICAgICAgICBsaXN0X3R5cGUgdGVtcDsKLSAgICAgICAgIHRlbXAuc3BsaWNlKHRlbXAuZW5kKCksIHNfZGF0YS5jb250LCBtcG9zLT5zZWNvbmQpOwotICAgICAgICAgLy8gYW5kIG5vdyBwbGFjZSBpdCBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0OgotICAgICAgICAgc19kYXRhLmNvbnQuc3BsaWNlKHNfZGF0YS5jb250LmVuZCgpLCB0ZW1wLCB0ZW1wLmJlZ2luKCkpOwotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCooc19kYXRhLmNvbnQuYmFjaygpLnNlY29uZCkgPT0gayk7Ci0gICAgICAgICAvLyB1cGRhdGUgaW5kZXggd2l0aCBuZXcgcG9zaXRpb246Ci0gICAgICAgICBtcG9zLT5zZWNvbmQgPSAtLShzX2RhdGEuY29udC5lbmQoKSk7Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQoJihtcG9zLT5maXJzdCkgPT0gbXBvcy0+c2Vjb25kLT5zZWNvbmQpOwotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCYobXBvcy0+Zmlyc3QpID09IHNfZGF0YS5jb250LmJhY2soKS5zZWNvbmQpOwotICAgICAgfQotICAgICAgcmV0dXJuIHNfZGF0YS5jb250LmJhY2soKS5maXJzdDsKLSAgIH0KLSAgIC8vCi0gICAvLyBpZiB3ZSBnZXQgaGVyZSB0aGVuIHRoZSBpdGVtIGlzIG5vdCBpbiB0aGUgY2FjaGUsCi0gICAvLyBzbyBjcmVhdGUgaXQ6Ci0gICAvLwotICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8T2JqZWN0IGNvbnN0PiByZXN1bHQobmV3IE9iamVjdChrKSk7Ci0gICAvLwotICAgLy8gQWRkIGl0IHRvIHRoZSBsaXN0LCBhbmQgaW5kZXggaXQ6Ci0gICAvLwotICAgc19kYXRhLmNvbnQucHVzaF9iYWNrKHZhbHVlX3R5cGUocmVzdWx0LCBzdGF0aWNfY2FzdDxLZXkgY29uc3QqPigwKSkpOwotICAgc19kYXRhLmluZGV4Lmluc2VydChzdGQ6Om1ha2VfcGFpcihrLCAtLShzX2RhdGEuY29udC5lbmQoKSkpKTsKLSAgIHNfZGF0YS5jb250LmJhY2soKS5zZWNvbmQgPSAmKHNfZGF0YS5pbmRleC5maW5kKGspLT5maXJzdCk7Ci0gICBtYXBfc2l6ZV90eXBlIHMgPSBzX2RhdGEuaW5kZXguc2l6ZSgpOwotICAgTkROQk9PU1RfQVNTRVJUKHNfZGF0YS5pbmRleFtrXS0+Zmlyc3QuZ2V0KCkgPT0gcmVzdWx0LmdldCgpKTsKLSAgIE5ETkJPT1NUX0FTU0VSVCgmKHNfZGF0YS5pbmRleC5maW5kKGspLT5maXJzdCkgPT0gc19kYXRhLmNvbnQuYmFjaygpLnNlY29uZCk7Ci0gICBORE5CT09TVF9BU1NFUlQoc19kYXRhLmluZGV4LmZpbmQoayktPmZpcnN0ID09IGspOwotICAgaWYocyA+IGxfbWF4X2NhY2hlX3NpemUpCi0gICB7Ci0gICAgICAvLwotICAgICAgLy8gV2UgaGF2ZSB0b28gbWFueSBpdGVtcyBpbiB0aGUgbGlzdCwgc28gd2UgbmVlZCB0byBzdGFydAotICAgICAgLy8gcG9wcGluZyB0aGVtIG9mZiB0aGUgYmFjayBvZiB0aGUgbGlzdCwgYnV0IG9ubHkgaWYgdGhleSdyZQotICAgICAgLy8gYmVpbmcgaGVsZCB1bmlxdWVseSBieSB1czoKLSAgICAgIC8vCi0gICAgICBsaXN0X2l0ZXJhdG9yIHBvcyA9IHNfZGF0YS5jb250LmJlZ2luKCk7Ci0gICAgICBsaXN0X2l0ZXJhdG9yIGxhc3QgPSBzX2RhdGEuY29udC5lbmQoKTsKLSAgICAgIHdoaWxlKChwb3MgIT0gbGFzdCkgJiYgKHMgPiBsX21heF9jYWNoZV9zaXplKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHBvcy0+Zmlyc3QudW5pcXVlKCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBsaXN0X2l0ZXJhdG9yIGNvbmRlbW1lZChwb3MpOwotICAgICAgICAgICAgKytwb3M7Ci0gICAgICAgICAgICAvLyBub3cgcmVtb3ZlIHRoZSBpdGVtcyBmcm9tIG91ciBjb250YWluZXJzLCAKLSAgICAgICAgICAgIC8vIHRoZW4gb3JkZXIgaGFzIHRvIGJlIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoc19kYXRhLmluZGV4LmZpbmQoKihjb25kZW1tZWQtPnNlY29uZCkpICE9IHNfZGF0YS5pbmRleC5lbmQoKSk7Ci0gICAgICAgICAgICBzX2RhdGEuaW5kZXguZXJhc2UoKihjb25kZW1tZWQtPnNlY29uZCkpOwotICAgICAgICAgICAgc19kYXRhLmNvbnQuZXJhc2UoY29uZGVtbWVkKTsgCi0gICAgICAgICAgICAtLXM7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICArK3BvczsKLSAgICAgIH0KLSAgICAgIE5ETkJPT1NUX0FTU0VSVChzX2RhdGEuaW5kZXhba10tPmZpcnN0LmdldCgpID09IHJlc3VsdC5nZXQoKSk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoJihzX2RhdGEuaW5kZXguZmluZChrKS0+Zmlyc3QpID09IHNfZGF0YS5jb250LmJhY2soKS5zZWNvbmQpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKHNfZGF0YS5pbmRleC5maW5kKGspLT5maXJzdCA9PSBrKTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvc3RhdGljX211dGV4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2QyNjU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHN0YXRpY19tdXRleC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHN0YXRpY19tdXRleCBsb2NrIHR5cGUsIHRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQKLSAgKiAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnM6IFBPU0lYIHB0aHJlYWRzLCBXSU4zMiB0aHJlYWRzLCBhbmQgcG9ydGFibGUsCi0gICogICAgICAgICAgICAgICAgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBiZWxvdy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9TVEFUSUNfTVVURVhfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1NUQVRJQ19NVVRFWF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4gLy8gZGxsIGltcG9ydC9leHBvcnQgb3B0aW9ucy4KLQotI2lmZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfUFRIUkVBRFMpICYmIGRlZmluZWQoUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUikKLS8vCi0vLyBwdGhyZWFkcyB2ZXJzaW9uOgotLy8gc2ltcGxlIHdyYXAgYXJvdW5kIGEgcHRocmVhZF9tdXRleF90IGluaXRpYWxpemVkIHdpdGgKLS8vIFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIuCi0vLwotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi1jbGFzcyBzdGF0aWNfbXV0ZXg7Ci0KLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX01VVEVYX0lOSVQgeyBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSLCB9Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrCi17Ci1wdWJsaWM6Ci0gICBzY29wZWRfc3RhdGljX211dGV4X2xvY2soc3RhdGljX211dGV4JiBtdXQsIGJvb2wgbGsgPSB0cnVlKTsKLSAgIH5zY29wZWRfc3RhdGljX211dGV4X2xvY2soKTsKLSAgIGlubGluZSBib29sIGxvY2tlZCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2hhdmVfbG9jazsKLSAgIH0KLSAgIGlubGluZSBvcGVyYXRvciB2b2lkIGNvbnN0KigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBsb2NrZWQoKSA/IHRoaXMgOiAwOwotICAgfQotICAgdm9pZCBsb2NrKCk7Ci0gICB2b2lkIHVubG9jaygpOwotcHJpdmF0ZToKLSAgIHN0YXRpY19tdXRleCYgbV9tdXRleDsKLSAgIGJvb2wgbV9oYXZlX2xvY2s7Ci19OwotCi1jbGFzcyBzdGF0aWNfbXV0ZXgKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrIHNjb3BlZF9sb2NrOwotICAgcHRocmVhZF9tdXRleF90IG1fbXV0ZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfV0lOVEhSRUFEUykKLS8vCi0vLyBXaW4zMiB2ZXJzaW9uOgotLy8gVXNlIGEgMzItYml0IGludCBhcyBhIGxvY2ssIGFsb25nIHdpdGggYSB0ZXN0LWFuZC1zZXQKLS8vIGltcGxlbWVudGF0aW9uIHVzaW5nIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrOwotCi1jbGFzcyBzdGF0aWNfbXV0ZXgKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrIHNjb3BlZF9sb2NrOwotICAgbmRuYm9vc3Q6OmludDMyX3QgbV9tdXRleDsKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX01VVEVYX0lOSVQgeyAwLCB9Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrCi17Ci1wdWJsaWM6Ci0gICBzY29wZWRfc3RhdGljX211dGV4X2xvY2soc3RhdGljX211dGV4JiBtdXQsIGJvb2wgbGsgPSB0cnVlKTsKLSAgIH5zY29wZWRfc3RhdGljX211dGV4X2xvY2soKTsKLSAgIG9wZXJhdG9yIHZvaWQgY29uc3QqKCljb25zdAotICAgewotICAgICAgcmV0dXJuIGxvY2tlZCgpID8gdGhpcyA6IDA7Ci0gICB9Ci0gICBib29sIGxvY2tlZCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2hhdmVfbG9jazsKLSAgIH0KLSAgIHZvaWQgbG9jaygpOwotICAgdm9pZCB1bmxvY2soKTsKLXByaXZhdGU6Ci0gICBzdGF0aWNfbXV0ZXgmIG1fbXV0ZXg7Ci0gICBib29sIG1faGF2ZV9sb2NrOwotICAgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrKGNvbnN0IHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayYpOwotICAgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrJiBvcGVyYXRvcj0oY29uc3Qgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZWxzZQotLy8KLS8vIFBvcnRhYmxlIHZlcnNpb24gb2YgYSBzdGF0aWMgbXV0ZXggYmFzZWQgb24gQm9vc3QuVGhyZWFkIGxpYnJhcnk6Ci0vLyBUaGlzIGhhcyB0byB1c2UgYSBzaW5nbGUgbXV0ZXggc2hhcmVkIGJ5IGFsbCBpbnN0YW5jZXMgb2Ygc3RhdGljX211dGV4Ci0vLyBiZWNhdXNlIG5kbmJvb3N0OjpjYWxsX29uY2UgZG9lc24ndCBhbG93IHVzIHRvIHBhc3MgaW5zdGFuY2UgaW5mb3JtYXRpb24KLS8vIGRvd24gdG8gdGhlIGluaXRpYWxpc2F0aW9uIHByb2NlZWR1cmUuICBJbiBmYWN0IHRoZSBpbml0aWFsaXNhdGlvbiByb3V0aW5lCi0vLyBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgLSBidXQgb25seSBvbmNlIHBlciBpbnN0YW5jZS4KLS8vCi0vLyBTaW5jZSB0aGlzIHByZXByb2Nlc3NvciBwYXRoIGlzIGFsbW9zdCBuZXZlciB0YWtlbiwgd2UgaGlkZSB0aGVzZSBoZWFkZXIKLS8vIGRlcGVuZGVuY2llcyBzbyB0aGF0IGJ1aWxkIHRvb2xzIGRvbid0IGZpbmQgdGhlbS4KLS8vCi0jZGVmaW5lIEIxIDxuZG5ib29zdC90aHJlYWQvb25jZS5ocHA+Ci0jZGVmaW5lIEIyIDxuZG5ib29zdC90aHJlYWQvcmVjdXJzaXZlX211dGV4LmhwcD4KLSNpbmNsdWRlIEIxCi0jaW5jbHVkZSBCMgotI3VuZGVmIEIxCi0jdW5kZWYgQjIKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jazsKLWV4dGVybiAiQyIgTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIG5kbmJvb3N0X3JlZ2V4X2ZyZWVfc3RhdGljX211dGV4KCk7Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgc3RhdGljX211dGV4Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayBzY29wZWRfbG9jazsKLSAgIHN0YXRpYyB2b2lkIGluaXQoKTsKLSAgIHN0YXRpYyBuZG5ib29zdDo6cmVjdXJzaXZlX211dGV4KiBtX3BtdXRleDsKLSAgIHN0YXRpYyBuZG5ib29zdDo6b25jZV9mbGFnIG1fb25jZTsKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX01VVEVYX0lOSVQgeyAgfQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jawotewotcHVibGljOgotICAgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrKHN0YXRpY19tdXRleCYgbXV0LCBib29sIGxrID0gdHJ1ZSk7Ci0gICB+c2NvcGVkX3N0YXRpY19tdXRleF9sb2NrKCk7Ci0gICBvcGVyYXRvciB2b2lkIGNvbnN0KigpY29uc3Q7Ci0gICBib29sIGxvY2tlZCgpY29uc3Q7Ci0gICB2b2lkIGxvY2soKTsKLSAgIHZvaWQgdW5sb2NrKCk7Ci1wcml2YXRlOgotICAgbmRuYm9vc3Q6OnJlY3Vyc2l2ZV9tdXRleDo6c2NvcGVkX2xvY2sqIG1fcGxvY2s7Ci0gICBib29sIG1faGF2ZV9sb2NrOwotfTsKLQotaW5saW5lIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jazo6b3BlcmF0b3Igdm9pZCBjb25zdCooKWNvbnN0Ci17Ci0gICByZXR1cm4gbG9ja2VkKCkgPyB0aGlzIDogMDsKLX0KLQotaW5saW5lIGJvb2wgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrOjpsb2NrZWQoKWNvbnN0Ci17Ci0gICByZXR1cm4gbV9oYXZlX2xvY2s7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy91bmljb2RlX2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy91bmljb2RlX2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY2ZDNiOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvdW5pY29kZV9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NzYgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgdW5pY29kZV9pdGVyYXRvci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IEl0ZXJhdG9yIGFkYXB0ZXJzIGZvciBjb252ZXJ0aW5nIGJldHdlZW4gZGlmZmVyZW50IFVuaWNvZGUgZW5jb2RpbmdzLgotICAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1Db250ZW50czoKLX5+fn5+fn5+fgotCi0xKSBSZWFkIE9ubHksIElucHV0IEFkYXB0ZXJzOgotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvciwgY2xhc3MgVThUeXBlID0gOjpuZG5ib29zdDo6dWludDhfdD4KLWNsYXNzIHUzMl90b191OF9pdGVyYXRvcjsKLQotQWRhcHRzIHNlcXVlbmNlIG9mIFVURi0zMiBjb2RlIHBvaW50cyB0byAibG9vayBsaWtlIiBhIHNlcXVlbmNlIG9mIFVURi04LgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVMzJUeXBlID0gOjpuZG5ib29zdDo6dWludDMyX3Q+Ci1jbGFzcyB1OF90b191MzJfaXRlcmF0b3I7Ci0KLUFkYXB0cyBzZXF1ZW5jZSBvZiBVVEYtOCBjb2RlIHBvaW50cyB0byAibG9vayBsaWtlIiBhIHNlcXVlbmNlIG9mIFVURi0zMi4KLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvciwgY2xhc3MgVTE2VHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQxNl90PgotY2xhc3MgdTMyX3RvX3UxNl9pdGVyYXRvcjsKLQotQWRhcHRzIHNlcXVlbmNlIG9mIFVURi0zMiBjb2RlIHBvaW50cyB0byAibG9vayBsaWtlIiBhIHNlcXVlbmNlIG9mIFVURi0xNi4KLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvciwgY2xhc3MgVTMyVHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQzMl90PgotY2xhc3MgdTE2X3RvX3UzMl9pdGVyYXRvcjsKLQotQWRhcHRzIHNlcXVlbmNlIG9mIFVURi0xNiBjb2RlIHBvaW50cyB0byAibG9vayBsaWtlIiBhIHNlcXVlbmNlIG9mIFVURi0zMi4KLQotMikgU2luZ2xlIHBhc3Mgb3V0cHV0IGl0ZXJhdG9yIGFkYXB0ZXJzOgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yPgotY2xhc3MgdXRmOF9vdXRwdXRfaXRlcmF0b3I7Ci0KLUFjY2VwdHMgVVRGLTMyIGNvZGUgcG9pbnRzIGFuZCBmb3J3YXJkcyB0aGVtIG9uIGFzIFVURi04IGNvZGUgcG9pbnRzLgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yPgotY2xhc3MgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yOwotCi1BY2NlcHRzIFVURi0zMiBjb2RlIHBvaW50cyBhbmQgZm9yd2FyZHMgdGhlbSBvbiBhcyBVVEYtMTYgY29kZSBwb2ludHMuCi0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVU5JQ09ERV9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVU5JQ09ERV9JVEVSQVRPUl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2ZhY2FkZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPGlvcz4KLSNlbmRpZgotI2luY2x1ZGUgPGxpbWl0cy5oPiAvLyBDSEFSX0JJVAotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXN0YXRpYyBjb25zdCA6Om5kbmJvb3N0Ojp1aW50MTZfdCBoaWdoX3N1cnJvZ2F0ZV9iYXNlID0gMHhEN0MwdTsKLXN0YXRpYyBjb25zdCA6Om5kbmJvb3N0Ojp1aW50MTZfdCBsb3dfc3Vycm9nYXRlX2Jhc2UgPSAweERDMDB1Owotc3RhdGljIGNvbnN0IDo6bmRuYm9vc3Q6OnVpbnQzMl90IHRlbl9iaXRfbWFzayA9IDB4M0ZGdTsKLQotaW5saW5lIGJvb2wgaXNfaGlnaF9zdXJyb2dhdGUoOjpuZG5ib29zdDo6dWludDE2X3QgdikKLXsKLSAgIHJldHVybiAodiAmIDB4RkZGRkZDMDB1KSA9PSAweGQ4MDB1OwotfQotaW5saW5lIGJvb2wgaXNfbG93X3N1cnJvZ2F0ZSg6Om5kbmJvb3N0Ojp1aW50MTZfdCB2KQotewotICAgcmV0dXJuICh2ICYgMHhGRkZGRkMwMHUpID09IDB4ZGMwMHU7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBib29sIGlzX3N1cnJvZ2F0ZShUIHYpCi17Ci0gICByZXR1cm4gKHYgJiAweEZGRkZGODAwdSkgPT0gMHhkODAwOwotfQotCi1pbmxpbmUgdW5zaWduZWQgdXRmOF9ieXRlX2NvdW50KG5kbmJvb3N0Ojp1aW50OF90IGMpCi17Ci0gICAvLyBpZiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgd2l0aCBhIHplcm8gaW4gaXQgaXMgaW4gcG9zaXRpb24KLSAgIC8vIDgtTiB0aGVuIHRoZXJlIGFyZSBOIGJ5dGVzIGluIHRoaXMgVVRGLTggc2VxdWVuY2U6Ci0gICBuZG5ib29zdDo6dWludDhfdCBtYXNrID0gMHg4MHU7Ci0gICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgd2hpbGUoYyAmIG1hc2spCi0gICB7Ci0gICAgICArK3Jlc3VsdDsKLSAgICAgIG1hc2sgPj49IDE7Ci0gICB9Ci0gICByZXR1cm4gKHJlc3VsdCA9PSAwKSA/IDEgOiAoKHJlc3VsdCA+IDQpID8gNCA6IHJlc3VsdCk7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCB1dGY4X3RyYWlsaW5nX2J5dGVfY291bnQobmRuYm9vc3Q6OnVpbnQ4X3QgYykKLXsKLSAgIHJldHVybiB1dGY4X2J5dGVfY291bnQoYykgLSAxOwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAwKQotI2VuZGlmCi1pbmxpbmUgdm9pZCBpbnZhbGlkX3V0ZjMyX2NvZGVfcG9pbnQoOjpuZG5ib29zdDo6dWludDMyX3QgdmFsKQotewotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0gICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKLSAgIHNzIDw8ICJJbnZhbGlkIFVURi0zMiBjb2RlIHBvaW50IFUrIiA8PCBzdGQ6OnNob3diYXNlIDw8IHN0ZDo6aGV4IDw8IHZhbCA8PCAiIGVuY291bnRlcmVkIHdoaWxlIHRyeWluZyB0byBlbmNvZGUgVVRGLTE2IHNlcXVlbmNlIjsKLSAgIHN0ZDo6b3V0X29mX3JhbmdlIGUoc3Muc3RyKCkpOwotI2Vsc2UKLSAgIHN0ZDo6b3V0X29mX3JhbmdlIGUoIkludmFsaWQgVVRGLTMyIGNvZGUgcG9pbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIGVuY29kZSBVVEYtMTYgc2VxdWVuY2UiKTsKLSNlbmRpZgotICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTsKLX0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFUxNlR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50MTZfdD4KLWNsYXNzIHUzMl90b191MTZfaXRlcmF0b3IKLSAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dTMyX3RvX3UxNl9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFUxNlR5cGU+LCBVMTZUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVMTZUeXBlPgotewotICAgdHlwZWRlZiBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHUzMl90b191MTZfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yLCBVMTZUeXBlPiwgVTE2VHlwZSwgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgY29uc3QgVTE2VHlwZT4gYmFzZV90eXBlOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8QmFzZUl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBiYXNlX3ZhbHVlX3R5cGU7Ci0KLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGJhc2VfdmFsdWVfdHlwZSkqQ0hBUl9CSVQgPT0gMzIpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoVTE2VHlwZSkqQ0hBUl9CSVQgPT0gMTYpOwotI2VuZGlmCi0KLXB1YmxpYzoKLSAgIHR5cGVuYW1lIGJhc2VfdHlwZTo6cmVmZXJlbmNlCi0gICAgICBkZXJlZmVyZW5jZSgpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1fY3VycmVudCA9PSAyKQotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICByZXR1cm4gbV92YWx1ZXNbbV9jdXJyZW50XTsKLSAgIH0KLSAgIGJvb2wgZXF1YWwoY29uc3QgdTMyX3RvX3UxNl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgewotICAgICAgaWYobV9wb3NpdGlvbiA9PSB0aGF0Lm1fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICAvLyBCb3RoIG1fY3VycmVudHMgbXVzdCBiZSBlcXVhbCwgb3IgYm90aCBldmVuCi0gICAgICAgICAvLyB0aGlzIGlzIHRoZSBzYW1lIGFzIHNheWluZyB0aGVpciBzdW0gbXVzdCBiZSBldmVuOgotICAgICAgICAgcmV0dXJuIChtX2N1cnJlbnQgKyB0aGF0Lm1fY3VycmVudCkgJiAxdSA/IGZhbHNlIDogdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHZvaWQgaW5jcmVtZW50KCkKLSAgIHsKLSAgICAgIC8vIGlmIHdlIGhhdmUgYSBwZW5kaW5nIHJlYWQgdGhlbiByZWFkIG5vdywgc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIKLSAgICAgIC8vIHRvIHNraXAgYSBwb3NpdGlvbiwgb3IgbW92ZSB0byBhIGxvdy1zdXJyb2dhdGU6Ci0gICAgICBpZihtX2N1cnJlbnQgPT0gMikKLSAgICAgIHsKLSAgICAgICAgIC8vIHBlbmRpbmcgcmVhZDoKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgfQotICAgICAgLy8gbW92ZSB0byB0aGUgbmV4dCBzdXJyb2dhdGUgcG9zaXRpb246Ci0gICAgICArK21fY3VycmVudDsKLSAgICAgIC8vIGlmIHdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBza2lwIGEgcG9zaXRpb246Ci0gICAgICBpZihtX3ZhbHVlc1ttX2N1cnJlbnRdID09IDApCi0gICAgICB7Ci0gICAgICAgICBtX2N1cnJlbnQgPSAyOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgfQotICAgfQotICAgdm9pZCBkZWNyZW1lbnQoKQotICAgewotICAgICAgaWYobV9jdXJyZW50ICE9IDEpCi0gICAgICB7Ci0gICAgICAgICAvLyBkZWNyZW1lbnRpbmcgYW4gaXRlcmF0b3IgYWx3YXlzIGxlYWRzIHRvIGEgdmFsaWQgcG9zaXRpb246Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICBleHRyYWN0X2N1cnJlbnQoKTsKLSAgICAgICAgIG1fY3VycmVudCA9IG1fdmFsdWVzWzFdID8gMSA6IDA7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBtX2N1cnJlbnQgPSAwOwotICAgICAgfQotICAgfQotICAgQmFzZUl0ZXJhdG9yIGJhc2UoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9wb3NpdGlvbjsKLSAgIH0KLSAgIC8vIGNvbnN0cnVjdDoKLSAgIHUzMl90b191MTZfaXRlcmF0b3IoKSA6IG1fcG9zaXRpb24oKSwgbV9jdXJyZW50KDApCi0gICB7Ci0gICAgICBtX3ZhbHVlc1swXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1sxXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1syXSA9IDA7Ci0gICB9Ci0gICB1MzJfdG9fdTE2X2l0ZXJhdG9yKEJhc2VJdGVyYXRvciBiKSA6IG1fcG9zaXRpb24oYiksIG1fY3VycmVudCgyKQotICAgewotICAgICAgbV92YWx1ZXNbMF0gPSAwOwotICAgICAgbV92YWx1ZXNbMV0gPSAwOwotICAgICAgbV92YWx1ZXNbMl0gPSAwOwotICAgfQotcHJpdmF0ZToKLQotICAgdm9pZCBleHRyYWN0X2N1cnJlbnQoKWNvbnN0Ci0gICB7Ci0gICAgICAvLyBiZWdpbiBieSBjaGVja2luZyBmb3IgYSBjb2RlIHBvaW50IG91dCBvZiByYW5nZToKLSAgICAgIDo6bmRuYm9vc3Q6OnVpbnQzMl90IHYgPSAqbV9wb3NpdGlvbjsKLSAgICAgIGlmKHYgPj0gMHgxMDAwMHUpCi0gICAgICB7Ci0gICAgICAgICBpZih2ID4gMHgxMEZGRkZ1KQotICAgICAgICAgICAgZGV0YWlsOjppbnZhbGlkX3V0ZjMyX2NvZGVfcG9pbnQoKm1fcG9zaXRpb24pOwotICAgICAgICAgLy8gc3BsaXQgaW50byB0d28gc3Vycm9nYXRlczoKLSAgICAgICAgIG1fdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8VTE2VHlwZT4odiA+PiAxMCkgKyBkZXRhaWw6OmhpZ2hfc3Vycm9nYXRlX2Jhc2U7Ci0gICAgICAgICBtX3ZhbHVlc1sxXSA9IHN0YXRpY19jYXN0PFUxNlR5cGU+KHYgJiBkZXRhaWw6OnRlbl9iaXRfbWFzaykgKyBkZXRhaWw6Omxvd19zdXJyb2dhdGVfYmFzZTsKLSAgICAgICAgIG1fY3VycmVudCA9IDA7Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQoZGV0YWlsOjppc19oaWdoX3N1cnJvZ2F0ZShtX3ZhbHVlc1swXSkpOwotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGRldGFpbDo6aXNfbG93X3N1cnJvZ2F0ZShtX3ZhbHVlc1sxXSkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgLy8gMTYtYml0IGNvZGUgcG9pbnQ6Ci0gICAgICAgICBtX3ZhbHVlc1swXSA9IHN0YXRpY19jYXN0PFUxNlR5cGU+KCptX3Bvc2l0aW9uKTsKLSAgICAgICAgIG1fdmFsdWVzWzFdID0gMDsKLSAgICAgICAgIG1fY3VycmVudCA9IDA7Ci0gICAgICAgICAvLyB2YWx1ZSBtdXN0IG5vdCBiZSBhIHN1cnJvZ2F0ZToKLSAgICAgICAgIGlmKGRldGFpbDo6aXNfc3Vycm9nYXRlKG1fdmFsdWVzWzBdKSkKLSAgICAgICAgICAgIGRldGFpbDo6aW52YWxpZF91dGYzMl9jb2RlX3BvaW50KCptX3Bvc2l0aW9uKTsKLSAgICAgIH0KLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBtX3Bvc2l0aW9uOwotICAgbXV0YWJsZSBVMTZUeXBlIG1fdmFsdWVzWzNdOwotICAgbXV0YWJsZSB1bnNpZ25lZCBtX2N1cnJlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVMzJUeXBlID0gOjpuZG5ib29zdDo6dWludDMyX3Q+Ci1jbGFzcyB1MTZfdG9fdTMyX2l0ZXJhdG9yCi0gICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHUxNl90b191MzJfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yLCBVMzJUeXBlPiwgVTMyVHlwZSwgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgY29uc3QgVTMyVHlwZT4KLXsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTx1MTZfdG9fdTMyX2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVTMyVHlwZT4sIFUzMlR5cGUsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGNvbnN0IFUzMlR5cGU+IGJhc2VfdHlwZTsKLSAgIC8vIHNwZWNpYWwgdmFsdWVzIGZvciBwZW5kaW5nIGl0ZXJhdG9yIHJlYWRzOgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFUzMlR5cGUsIHBlbmRpbmdfcmVhZCA9IDB4ZmZmZmZmZmZ1KTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEJhc2VJdGVyYXRvcj46OnZhbHVlX3R5cGUgYmFzZV92YWx1ZV90eXBlOwotCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihiYXNlX3ZhbHVlX3R5cGUpKkNIQVJfQklUID09IDE2KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFUzMlR5cGUpKkNIQVJfQklUID09IDMyKTsKLSNlbmRpZgotCi1wdWJsaWM6Ci0gICB0eXBlbmFtZSBiYXNlX3R5cGU6OnJlZmVyZW5jZQotICAgICAgZGVyZWZlcmVuY2UoKWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX3ZhbHVlID09IHBlbmRpbmdfcmVhZCkKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgcmV0dXJuIG1fdmFsdWU7Ci0gICB9Ci0gICBib29sIGVxdWFsKGNvbnN0IHUxNl90b191MzJfaXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Bvc2l0aW9uID09IHRoYXQubV9wb3NpdGlvbjsKLSAgIH0KLSAgIHZvaWQgaW5jcmVtZW50KCkKLSAgIHsKLSAgICAgIC8vIHNraXAgaGlnaCBzdXJyb2dhdGUgZmlyc3QgaWYgdGhlcmUgaXMgb25lOgotICAgICAgaWYoZGV0YWlsOjppc19oaWdoX3N1cnJvZ2F0ZSgqbV9wb3NpdGlvbikpICsrbV9wb3NpdGlvbjsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICB2b2lkIGRlY3JlbWVudCgpCi0gICB7Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAvLyBpZiB3ZSBoYXZlIGEgbG93IHN1cnJvZ2F0ZSB0aGVuIGdvIGJhY2sgb25lIG1vcmU6Ci0gICAgICBpZihkZXRhaWw6OmlzX2xvd19zdXJyb2dhdGUoKm1fcG9zaXRpb24pKSAKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgYmFzZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Bvc2l0aW9uOwotICAgfQotICAgLy8gY29uc3RydWN0OgotICAgdTE2X3RvX3UzMl9pdGVyYXRvcigpIDogbV9wb3NpdGlvbigpCi0gICB7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgfQotICAgdTE2X3RvX3UzMl9pdGVyYXRvcihCYXNlSXRlcmF0b3IgYikgOiBtX3Bvc2l0aW9uKGIpCi0gICB7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgfQotICAgLy8KLSAgIC8vIFJhbmdlIGNoZWNrZWQgdmVyc2lvbjoKLSAgIC8vCi0gICB1MTZfdG9fdTMyX2l0ZXJhdG9yKEJhc2VJdGVyYXRvciBiLCBCYXNlSXRlcmF0b3Igc3RhcnQsIEJhc2VJdGVyYXRvciBlbmQpIDogbV9wb3NpdGlvbihiKQotICAgewotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgICAgIC8vCi0gICAgICAvLyBUaGUgcmFuZ2UgbXVzdCBub3Qgc3RhcnQgd2l0aCBhIGxvdyBzdXJyb2dhdGUsIG9yIGVuZCBpbiBhIGhpZ2ggc3Vycm9nYXRlLAotICAgICAgLy8gb3RoZXJ3aXNlIHdlIHJ1biB0aGUgcmlzayBvZiBydW5uaW5nIG91dHNpZGUgdGhlIHVuZGVybHlpbmcgaW5wdXQgcmFuZ2UuCi0gICAgICAvLyBMaWtld2lzZSBiIG11c3Qgbm90IGJlIGxvY2F0ZWQgYXQgYSBsb3cgc3Vycm9nYXRlLgotICAgICAgLy8KLSAgICAgIG5kbmJvb3N0Ojp1aW50MTZfdCB2YWw7Ci0gICAgICBpZihzdGFydCAhPSBlbmQpCi0gICAgICB7Ci0gICAgICAgICBpZigoYiAhPSBzdGFydCkgJiYgKGIgIT0gZW5kKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHZhbCA9ICpiOwotICAgICAgICAgICAgaWYoZGV0YWlsOjppc19zdXJyb2dhdGUodmFsKSAmJiAoKHZhbCAmIDB4RkMwMHUpID09IDB4REMwMHUpKQotICAgICAgICAgICAgICAgaW52YWxpZF9jb2RlX3BvaW50KHZhbCk7Ci0gICAgICAgICB9Ci0gICAgICAgICB2YWwgPSAqc3RhcnQ7Ci0gICAgICAgICBpZihkZXRhaWw6OmlzX3N1cnJvZ2F0ZSh2YWwpICYmICgodmFsICYgMHhGQzAwdSkgPT0gMHhEQzAwdSkpCi0gICAgICAgICAgICBpbnZhbGlkX2NvZGVfcG9pbnQodmFsKTsKLSAgICAgICAgIHZhbCA9ICotLWVuZDsKLSAgICAgICAgIGlmKGRldGFpbDo6aXNfaGlnaF9zdXJyb2dhdGUodmFsKSkKLSAgICAgICAgICAgIGludmFsaWRfY29kZV9wb2ludCh2YWwpOwotICAgICAgfQotICAgfQotcHJpdmF0ZToKLSAgIHN0YXRpYyB2b2lkIGludmFsaWRfY29kZV9wb2ludCg6Om5kbmJvb3N0Ojp1aW50MTZfdCB2YWwpCi0gICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICAgICAgc3MgPDwgIk1pc3BsYWNlZCBVVEYtMTYgc3Vycm9nYXRlIFUrIiA8PCBzdGQ6OnNob3diYXNlIDw8IHN0ZDo6aGV4IDw8IHZhbCA8PCAiIGVuY291bnRlcmVkIHdoaWxlIHRyeWluZyB0byBlbmNvZGUgVVRGLTMyIHNlcXVlbmNlIjsKLSAgICAgIHN0ZDo6b3V0X29mX3JhbmdlIGUoc3Muc3RyKCkpOwotI2Vsc2UKLSAgICAgIHN0ZDo6b3V0X29mX3JhbmdlIGUoIk1pc3BsYWNlZCBVVEYtMTYgc3Vycm9nYXRlIGVuY291bnRlcmVkIHdoaWxlIHRyeWluZyB0byBlbmNvZGUgVVRGLTMyIHNlcXVlbmNlIik7Ci0jZW5kaWYKLSAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZSk7Ci0gICB9Ci0gICB2b2lkIGV4dHJhY3RfY3VycmVudCgpY29uc3QKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxVMzJUeXBlPihzdGF0aWNfY2FzdDwgOjpuZG5ib29zdDo6dWludDE2X3Q+KCptX3Bvc2l0aW9uKSk7Ci0gICAgICAvLyBpZiB0aGUgbGFzdCB2YWx1ZSBpcyBhIGhpZ2ggc3Vycm9nYXRlIHRoZW4gYWRqdXN0IG1fcG9zaXRpb24gYW5kIG1fdmFsdWUgYXMgbmVlZGVkOgotICAgICAgaWYoZGV0YWlsOjppc19oaWdoX3N1cnJvZ2F0ZSgqbV9wb3NpdGlvbikpCi0gICAgICB7Ci0gICAgICAgICAvLyBwcmVjb25kaXRpb247IG5leHQgdmFsdWUgbXVzdCBoYXZlIGJlIGEgbG93LXN1cnJvZ2F0ZToKLSAgICAgICAgIEJhc2VJdGVyYXRvciBuZXh0KG1fcG9zaXRpb24pOwotICAgICAgICAgOjpuZG5ib29zdDo6dWludDE2X3QgdCA9ICorK25leHQ7Ci0gICAgICAgICBpZigodCAmIDB4RkMwMHUpICE9IDB4REMwMHUpCi0gICAgICAgICAgICBpbnZhbGlkX2NvZGVfcG9pbnQodCk7Ci0gICAgICAgICBtX3ZhbHVlID0gKG1fdmFsdWUgLSBkZXRhaWw6OmhpZ2hfc3Vycm9nYXRlX2Jhc2UpIDw8IDEwOwotICAgICAgICAgbV92YWx1ZSB8PSAoc3RhdGljX2Nhc3Q8VTMyVHlwZT4oc3RhdGljX2Nhc3Q8IDo6bmRuYm9vc3Q6OnVpbnQxNl90Pih0KSkgJiBkZXRhaWw6OnRlbl9iaXRfbWFzayk7Ci0gICAgICB9Ci0gICAgICAvLyBwb3N0Y29uZGl0aW9uOyByZXN1bHQgbXVzdCBub3QgYmUgYSBzdXJyb2dhdGU6Ci0gICAgICBpZihkZXRhaWw6OmlzX3N1cnJvZ2F0ZShtX3ZhbHVlKSkKLSAgICAgICAgIGludmFsaWRfY29kZV9wb2ludChzdGF0aWNfY2FzdDwgOjpuZG5ib29zdDo6dWludDE2X3Q+KG1fdmFsdWUpKTsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBtX3Bvc2l0aW9uOwotICAgbXV0YWJsZSBVMzJUeXBlIG1fdmFsdWU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVOFR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50OF90PgotY2xhc3MgdTMyX3RvX3U4X2l0ZXJhdG9yCi0gICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHUzMl90b191OF9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFU4VHlwZT4sIFU4VHlwZSwgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgY29uc3QgVThUeXBlPgotewotICAgdHlwZWRlZiBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHUzMl90b191OF9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFU4VHlwZT4sIFU4VHlwZSwgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgY29uc3QgVThUeXBlPiBiYXNlX3R5cGU7Ci0gICAKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxCYXNlSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGJhc2VfdmFsdWVfdHlwZTsKLQotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoYmFzZV92YWx1ZV90eXBlKSpDSEFSX0JJVCA9PSAzMik7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihVOFR5cGUpKkNIQVJfQklUID09IDgpOwotI2VuZGlmCi0KLXB1YmxpYzoKLSAgIHR5cGVuYW1lIGJhc2VfdHlwZTo6cmVmZXJlbmNlCi0gICAgICBkZXJlZmVyZW5jZSgpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1fY3VycmVudCA9PSA0KQotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICByZXR1cm4gbV92YWx1ZXNbbV9jdXJyZW50XTsKLSAgIH0KLSAgIGJvb2wgZXF1YWwoY29uc3QgdTMyX3RvX3U4X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IHRoYXQubV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIC8vIGVpdGhlciB0aGUgbV9jdXJyZW50J3MgbXVzdCBiZSBlcXVhbCwgb3Igb25lIG11c3QgYmUgMCBhbmQgCi0gICAgICAgICAvLyB0aGUgb3RoZXIgNDogd2hpY2ggbWVhbnMgbmVpdGhlciBtdXN0IGhhdmUgYml0cyAxIG9yIDIgc2V0OgotICAgICAgICAgcmV0dXJuIChtX2N1cnJlbnQgPT0gdGhhdC5tX2N1cnJlbnQpCi0gICAgICAgICAgICB8fCAoKChtX2N1cnJlbnQgfCB0aGF0Lm1fY3VycmVudCkgJiAzKSA9PSAwKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHZvaWQgaW5jcmVtZW50KCkKLSAgIHsKLSAgICAgIC8vIGlmIHdlIGhhdmUgYSBwZW5kaW5nIHJlYWQgdGhlbiByZWFkIG5vdywgc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIKLSAgICAgIC8vIHRvIHNraXAgYSBwb3NpdGlvbiwgb3IgbW92ZSB0byBhIGxvdy1zdXJyb2dhdGU6Ci0gICAgICBpZihtX2N1cnJlbnQgPT0gNCkKLSAgICAgIHsKLSAgICAgICAgIC8vIHBlbmRpbmcgcmVhZDoKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgfQotICAgICAgLy8gbW92ZSB0byB0aGUgbmV4dCBzdXJyb2dhdGUgcG9zaXRpb246Ci0gICAgICArK21fY3VycmVudDsKLSAgICAgIC8vIGlmIHdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBza2lwIGEgcG9zaXRpb246Ci0gICAgICBpZihtX3ZhbHVlc1ttX2N1cnJlbnRdID09IDApCi0gICAgICB7Ci0gICAgICAgICBtX2N1cnJlbnQgPSA0OwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgfQotICAgfQotICAgdm9pZCBkZWNyZW1lbnQoKQotICAgewotICAgICAgaWYoKG1fY3VycmVudCAmIDMpID09IDApCi0gICAgICB7Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICBleHRyYWN0X2N1cnJlbnQoKTsKLSAgICAgICAgIG1fY3VycmVudCA9IDM7Ci0gICAgICAgICB3aGlsZShtX2N1cnJlbnQgJiYgKG1fdmFsdWVzW21fY3VycmVudF0gPT0gMCkpCi0gICAgICAgICAgICAtLW1fY3VycmVudDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIC0tbV9jdXJyZW50OwotICAgfQotICAgQmFzZUl0ZXJhdG9yIGJhc2UoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9wb3NpdGlvbjsKLSAgIH0KLSAgIC8vIGNvbnN0cnVjdDoKLSAgIHUzMl90b191OF9pdGVyYXRvcigpIDogbV9wb3NpdGlvbigpLCBtX2N1cnJlbnQoMCkKLSAgIHsKLSAgICAgIG1fdmFsdWVzWzBdID0gMDsKLSAgICAgIG1fdmFsdWVzWzFdID0gMDsKLSAgICAgIG1fdmFsdWVzWzJdID0gMDsKLSAgICAgIG1fdmFsdWVzWzNdID0gMDsKLSAgICAgIG1fdmFsdWVzWzRdID0gMDsKLSAgIH0KLSAgIHUzMl90b191OF9pdGVyYXRvcihCYXNlSXRlcmF0b3IgYikgOiBtX3Bvc2l0aW9uKGIpLCBtX2N1cnJlbnQoNCkKLSAgIHsKLSAgICAgIG1fdmFsdWVzWzBdID0gMDsKLSAgICAgIG1fdmFsdWVzWzFdID0gMDsKLSAgICAgIG1fdmFsdWVzWzJdID0gMDsKLSAgICAgIG1fdmFsdWVzWzNdID0gMDsKLSAgICAgIG1fdmFsdWVzWzRdID0gMDsKLSAgIH0KLXByaXZhdGU6Ci0KLSAgIHZvaWQgZXh0cmFjdF9jdXJyZW50KCljb25zdAotICAgewotICAgICAgbmRuYm9vc3Q6OnVpbnQzMl90IGMgPSAqbV9wb3NpdGlvbjsKLSAgICAgIGlmKGMgPiAweDEwRkZGRnUpCi0gICAgICAgICBkZXRhaWw6OmludmFsaWRfdXRmMzJfY29kZV9wb2ludChjKTsKLSAgICAgIGlmKGMgPCAweDgwdSkKLSAgICAgIHsKLSAgICAgICAgIG1fdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyk7Ci0gICAgICAgICBtX3ZhbHVlc1sxXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB1KTsKLSAgICAgICAgIG1fdmFsdWVzWzJdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHUpOwotICAgICAgICAgbV92YWx1ZXNbM10gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwdSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKGMgPCAweDgwMHUpCi0gICAgICB7Ci0gICAgICAgICBtX3ZhbHVlc1swXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4QzB1ICsgKGMgPj4gNikpOwotICAgICAgICAgbV92YWx1ZXNbMV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArIChjICYgMHgzRnUpKTsKLSAgICAgICAgIG1fdmFsdWVzWzJdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHUpOwotICAgICAgICAgbV92YWx1ZXNbM10gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwdSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKGMgPCAweDEwMDAwdSkKLSAgICAgIHsKLSAgICAgICAgIG1fdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHhFMHUgKyAoYyA+PiAxMikpOwotICAgICAgICAgbV92YWx1ZXNbMV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArICgoYyA+PiA2KSAmIDB4M0Z1KSk7Ci0gICAgICAgICBtX3ZhbHVlc1syXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKGMgJiAweDNGdSkpOwotICAgICAgICAgbV92YWx1ZXNbM10gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwdSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBtX3ZhbHVlc1swXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4RjB1ICsgKGMgPj4gMTgpKTsKLSAgICAgICAgIG1fdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoKGMgPj4gMTIpICYgMHgzRnUpKTsKLSAgICAgICAgIG1fdmFsdWVzWzJdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoKGMgPj4gNikgJiAweDNGdSkpOwotICAgICAgICAgbV92YWx1ZXNbM10gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArIChjICYgMHgzRnUpKTsKLSAgICAgIH0KLSAgICAgIG1fY3VycmVudD0gMDsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBtX3Bvc2l0aW9uOwotICAgbXV0YWJsZSBVOFR5cGUgbV92YWx1ZXNbNV07Ci0gICBtdXRhYmxlIHVuc2lnbmVkIG1fY3VycmVudDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFUzMlR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50MzJfdD4KLWNsYXNzIHU4X3RvX3UzMl9pdGVyYXRvcgotICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTx1OF90b191MzJfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yLCBVMzJUeXBlPiwgVTMyVHlwZSwgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgY29uc3QgVTMyVHlwZT4KLXsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTx1OF90b191MzJfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yLCBVMzJUeXBlPiwgVTMyVHlwZSwgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgY29uc3QgVTMyVHlwZT4gYmFzZV90eXBlOwotICAgLy8gc3BlY2lhbCB2YWx1ZXMgZm9yIHBlbmRpbmcgaXRlcmF0b3IgcmVhZHM6Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVTMyVHlwZSwgcGVuZGluZ19yZWFkID0gMHhmZmZmZmZmZnUpOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8QmFzZUl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBiYXNlX3ZhbHVlX3R5cGU7Ci0KLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGJhc2VfdmFsdWVfdHlwZSkqQ0hBUl9CSVQgPT0gOCk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihVMzJUeXBlKSpDSEFSX0JJVCA9PSAzMik7Ci0jZW5kaWYKLQotcHVibGljOgotICAgdHlwZW5hbWUgYmFzZV90eXBlOjpyZWZlcmVuY2UKLSAgICAgIGRlcmVmZXJlbmNlKCljb25zdAotICAgewotICAgICAgaWYobV92YWx1ZSA9PSBwZW5kaW5nX3JlYWQpCi0gICAgICAgICBleHRyYWN0X2N1cnJlbnQoKTsKLSAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgfQotICAgYm9vbCBlcXVhbChjb25zdCB1OF90b191MzJfaXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Bvc2l0aW9uID09IHRoYXQubV9wb3NpdGlvbjsKLSAgIH0KLSAgIHZvaWQgaW5jcmVtZW50KCkKLSAgIHsKLSAgICAgIC8vIFdlIG11c3Qgbm90IHN0YXJ0IHdpdGggYSBjb250aW51YXRpb24gY2hhcmFjdGVyOgotICAgICAgaWYoKHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50OF90PigqbV9wb3NpdGlvbikgJiAweEMwKSA9PSAweDgwKQotICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgLy8gc2tpcCBoaWdoIHN1cnJvZ2F0ZSBmaXJzdCBpZiB0aGVyZSBpcyBvbmU6Ci0gICAgICB1bnNpZ25lZCBjID0gZGV0YWlsOjp1dGY4X2J5dGVfY291bnQoKm1fcG9zaXRpb24pOwotICAgICAgaWYobV92YWx1ZSA9PSBwZW5kaW5nX3JlYWQpCi0gICAgICB7Ci0gICAgICAgICAvLyBTaW5jZSB3ZSBoYXZlbid0IHJlYWQgaW4gYSB2YWx1ZSwgd2UgbmVlZCB0byB2YWxpZGF0ZSB0aGUgY29kZSBwb2ludHM6Ci0gICAgICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCBjOyArK2kpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICAvLyBXZSBtdXN0IGhhdmUgYSBjb250aW51YXRpb24gYnl0ZToKLSAgICAgICAgICAgIGlmKChpICE9IGMgLSAxKSAmJiAoKHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50OF90PigqbV9wb3NpdGlvbikgJiAweEMwKSAhPSAweDgwKSkKLSAgICAgICAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6YWR2YW5jZShtX3Bvc2l0aW9uLCBjKTsKLSAgICAgIH0KLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICB2b2lkIGRlY3JlbWVudCgpCi0gICB7Ci0gICAgICAvLyBLZWVwIGJhY2t0cmFja2luZyB1bnRpbCB3ZSBkb24ndCBoYXZlIGEgdHJhaWxpbmcgY2hhcmFjdGVyOgotICAgICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgICAgd2hpbGUoKCotLW1fcG9zaXRpb24gJiAweEMwdSkgPT0gMHg4MHUpICsrY291bnQ7Ci0gICAgICAvLyBub3cgY2hlY2sgdGhhdCB0aGUgc2VxdWVuY2Ugd2FzIHZhbGlkOgotICAgICAgaWYoY291bnQgIT0gZGV0YWlsOjp1dGY4X3RyYWlsaW5nX2J5dGVfY291bnQoKm1fcG9zaXRpb24pKQotICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBiYXNlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICB9Ci0gICAvLyBjb25zdHJ1Y3Q6Ci0gICB1OF90b191MzJfaXRlcmF0b3IoKSA6IG1fcG9zaXRpb24oKQotICAgewotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIHU4X3RvX3UzMl9pdGVyYXRvcihCYXNlSXRlcmF0b3IgYikgOiBtX3Bvc2l0aW9uKGIpCi0gICB7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgfQotICAgLy8KLSAgIC8vIENoZWNrZWQgY29uc3RydWN0b3I6Ci0gICAvLwotICAgdThfdG9fdTMyX2l0ZXJhdG9yKEJhc2VJdGVyYXRvciBiLCBCYXNlSXRlcmF0b3Igc3RhcnQsIEJhc2VJdGVyYXRvciBlbmQpIDogbV9wb3NpdGlvbihiKQotICAgewotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgICAgIC8vCi0gICAgICAvLyBXZSBtdXN0IG5vdCBzdGFydCB3aXRoIGEgY29udGludWF0aW9uIGNoYXJhY3Rlciwgb3IgZW5kIHdpdGggYSAKLSAgICAgIC8vIHRydW5jYXRlZCBVVEYtOCBzZXF1ZW5jZSBvdGhlcndpc2Ugd2UgcnVuIHRoZSByaXNrIG9mIGdvaW5nIHBhc3QKLSAgICAgIC8vIHRoZSBzdGFydC9lbmQgb2YgdGhlIHVuZGVybHlpbmcgc2VxdWVuY2U6Ci0gICAgICAvLwotICAgICAgaWYoc3RhcnQgIT0gZW5kKQotICAgICAgewotICAgICAgICAgdW5zaWduZWQgY2hhciB2ID0gKnN0YXJ0OwotICAgICAgICAgaWYoKHYgJiAweEMwdSkgPT0gMHg4MHUpCi0gICAgICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICAgICBpZigoYiAhPSBzdGFydCkgJiYgKGIgIT0gZW5kKSAmJiAoKCpiICYgMHhDMHUpID09IDB4ODB1KSkKLSAgICAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgICAgICAgIEJhc2VJdGVyYXRvciBwb3MgPSBlbmQ7Ci0gICAgICAgICBkbwotICAgICAgICAgewotICAgICAgICAgICAgdiA9ICotLXBvczsKLSAgICAgICAgIH0KLSAgICAgICAgIHdoaWxlKChzdGFydCAhPSBwb3MpICYmICgodiAmIDB4QzB1KSA9PSAweDgwdSkpOwotICAgICAgICAgc3RkOjpwdHJkaWZmX3QgZXh0cmEgPSBkZXRhaWw6OnV0ZjhfYnl0ZV9jb3VudCh2KTsKLSAgICAgICAgIGlmKHN0ZDo6ZGlzdGFuY2UocG9zLCBlbmQpIDwgZXh0cmEpCi0gICAgICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICB9Ci0gICB9Ci1wcml2YXRlOgotICAgc3RhdGljIHZvaWQgaW52YWxpZF9zZXF1ZW5jZSgpCi0gICB7Ci0gICAgICBzdGQ6Om91dF9vZl9yYW5nZSBlKCJJbnZhbGlkIFVURi04IHNlcXVlbmNlIGVuY291bnRlcmVkIHdoaWxlIHRyeWluZyB0byBlbmNvZGUgVVRGLTMyIGNoYXJhY3RlciIpOwotICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTsKLSAgIH0KLSAgIHZvaWQgZXh0cmFjdF9jdXJyZW50KCljb25zdAotICAgewotICAgICAgbV92YWx1ZSA9IHN0YXRpY19jYXN0PFUzMlR5cGU+KHN0YXRpY19jYXN0PCA6Om5kbmJvb3N0Ojp1aW50OF90PigqbV9wb3NpdGlvbikpOwotICAgICAgLy8gd2UgbXVzdCBub3QgaGF2ZSBhIGNvbnRpbnVhdGlvbiBjaGFyYWN0ZXI6Ci0gICAgICBpZigobV92YWx1ZSAmIDB4QzB1KSA9PSAweDgwdSkKLSAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgICAgIC8vIHNlZSBob3cgbWFueSBleHRyYSBieXRlcyB3ZSBoYXZlOgotICAgICAgdW5zaWduZWQgZXh0cmEgPSBkZXRhaWw6OnV0ZjhfdHJhaWxpbmdfYnl0ZV9jb3VudCgqbV9wb3NpdGlvbik7Ci0gICAgICAvLyBleHRyYWN0IHRoZSBleHRyYSBiaXRzLCA2IGZyb20gZWFjaCBleHRyYSBieXRlOgotICAgICAgQmFzZUl0ZXJhdG9yIG5leHQobV9wb3NpdGlvbik7Ci0gICAgICBmb3IodW5zaWduZWQgYyA9IDA7IGMgPCBleHRyYTsgKytjKQotICAgICAgewotICAgICAgICAgKytuZXh0OwotICAgICAgICAgbV92YWx1ZSA8PD0gNjsKLSAgICAgICAgIC8vIFdlIG11c3QgaGF2ZSBhIGNvbnRpbnVhdGlvbiBieXRlOgotICAgICAgICAgaWYoKHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50OF90PigqbmV4dCkgJiAweEMwKSAhPSAweDgwKQotICAgICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgICAgbV92YWx1ZSArPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDhfdD4oKm5leHQpICYgMHgzRnU7Ci0gICAgICB9Ci0gICAgICAvLyB3ZSBub3cgbmVlZCB0byByZW1vdmUgYSBmZXcgb2YgdGhlIGxlZnRtb3N0IGJpdHMsIGJ1dCBob3cgbWFueSBkZXBlbmRzCi0gICAgICAvLyB1cG9uIGhvdyBtYW55IGV4dHJhIGJ5dGVzIHdlJ3ZlIGV4dHJhY3RlZDoKLSAgICAgIHN0YXRpYyBjb25zdCBuZG5ib29zdDo6dWludDMyX3QgbWFza3NbNF0gPSAKLSAgICAgIHsKLSAgICAgICAgIDB4N0Z1LAotICAgICAgICAgMHg3RkZ1LAotICAgICAgICAgMHhGRkZGdSwKLSAgICAgICAgIDB4MUZGRkZGdSwKLSAgICAgIH07Ci0gICAgICBtX3ZhbHVlICY9IG1hc2tzW2V4dHJhXTsKLSAgICAgIC8vIGNoZWNrIHRoZSByZXN1bHQ6Ci0gICAgICBpZihtX3ZhbHVlID4gc3RhdGljX2Nhc3Q8VTMyVHlwZT4oMHgxMEZGRkZ1KSkKLSAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBtX3Bvc2l0aW9uOwotICAgbXV0YWJsZSBVMzJUeXBlIG1fdmFsdWU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yPgotY2xhc3MgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQzMl90KiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQzMl90JiAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcgICAgICAgICAgICAgICBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yKGNvbnN0IEJhc2VJdGVyYXRvciYgYikKLSAgICAgIDogbV9wb3NpdGlvbihiKXt9Ci0gICB1dGYxNl9vdXRwdXRfaXRlcmF0b3IoY29uc3QgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yJiB0aGF0KQotICAgICAgOiBtX3Bvc2l0aW9uKHRoYXQubV9wb3NpdGlvbil7fQotICAgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yJiB0aGF0KQotICAgewotICAgICAgbV9wb3NpdGlvbiA9IHRoYXQubV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIGNvbnN0IHV0ZjE2X291dHB1dF9pdGVyYXRvciYgb3BlcmF0b3IqKCljb25zdAotICAgewotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgdm9pZCBvcGVyYXRvcj0obmRuYm9vc3Q6OnVpbnQzMl90IHZhbCljb25zdAotICAgewotICAgICAgcHVzaCh2YWwpOwotICAgfQotICAgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHV0ZjE2X291dHB1dF9pdGVyYXRvciYgb3BlcmF0b3IrKyhpbnQpCi0gICB7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgYmFzZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Bvc2l0aW9uOwotICAgfQotcHJpdmF0ZToKLSAgIHZvaWQgcHVzaChuZG5ib29zdDo6dWludDMyX3Qgdiljb25zdAotICAgewotICAgICAgaWYodiA+PSAweDEwMDAwdSkKLSAgICAgIHsKLSAgICAgICAgIC8vIGJlZ2luIGJ5IGNoZWNraW5nIGZvciBhIGNvZGUgcG9pbnQgb3V0IG9mIHJhbmdlOgotICAgICAgICAgaWYodiA+IDB4MTBGRkZGdSkKLSAgICAgICAgICAgIGRldGFpbDo6aW52YWxpZF91dGYzMl9jb2RlX3BvaW50KHYpOwotICAgICAgICAgLy8gc3BsaXQgaW50byB0d28gc3Vycm9nYXRlczoKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDE2X3Q+KHYgPj4gMTApICsgZGV0YWlsOjpoaWdoX3N1cnJvZ2F0ZV9iYXNlOwotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50MTZfdD4odiAmIGRldGFpbDo6dGVuX2JpdF9tYXNrKSArIGRldGFpbDo6bG93X3N1cnJvZ2F0ZV9iYXNlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgLy8gMTYtYml0IGNvZGUgcG9pbnQ6Ci0gICAgICAgICAvLyB2YWx1ZSBtdXN0IG5vdCBiZSBhIHN1cnJvZ2F0ZToKLSAgICAgICAgIGlmKGRldGFpbDo6aXNfc3Vycm9nYXRlKHYpKQotICAgICAgICAgICAgZGV0YWlsOjppbnZhbGlkX3V0ZjMyX2NvZGVfcG9pbnQodik7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQxNl90Pih2KTsKLSAgICAgIH0KLSAgIH0KLSAgIG11dGFibGUgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yPgotY2xhc3MgdXRmOF9vdXRwdXRfaXRlcmF0b3IKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QqICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QmICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyAgICAgICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICB1dGY4X291dHB1dF9pdGVyYXRvcihjb25zdCBCYXNlSXRlcmF0b3ImIGIpCi0gICAgICA6IG1fcG9zaXRpb24oYil7fQotICAgdXRmOF9vdXRwdXRfaXRlcmF0b3IoY29uc3QgdXRmOF9vdXRwdXRfaXRlcmF0b3ImIHRoYXQpCi0gICAgICA6IG1fcG9zaXRpb24odGhhdC5tX3Bvc2l0aW9uKXt9Ci0gICB1dGY4X291dHB1dF9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IHV0Zjhfb3V0cHV0X2l0ZXJhdG9yJiB0aGF0KQotICAgewotICAgICAgbV9wb3NpdGlvbiA9IHRoYXQubV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIGNvbnN0IHV0Zjhfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvciooKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICB2b2lkIG9wZXJhdG9yPShuZG5ib29zdDo6dWludDMyX3QgdmFsKWNvbnN0Ci0gICB7Ci0gICAgICBwdXNoKHZhbCk7Ci0gICB9Ci0gICB1dGY4X291dHB1dF9pdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICB7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICB1dGY4X291dHB1dF9pdGVyYXRvciYgb3BlcmF0b3IrKyhpbnQpCi0gICB7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgYmFzZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Bvc2l0aW9uOwotICAgfQotcHJpdmF0ZToKLSAgIHZvaWQgcHVzaChuZG5ib29zdDo6dWludDMyX3QgYyljb25zdAotICAgewotICAgICAgaWYoYyA+IDB4MTBGRkZGdSkKLSAgICAgICAgIGRldGFpbDo6aW52YWxpZF91dGYzMl9jb2RlX3BvaW50KGMpOwotICAgICAgaWYoYyA8IDB4ODB1KQotICAgICAgewotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpOwotICAgICAgfQotICAgICAgZWxzZSBpZihjIDwgMHg4MDB1KQotICAgICAgewotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4QzB1ICsgKGMgPj4gNikpOwotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKGMgJiAweDNGdSkpOwotICAgICAgfQotICAgICAgZWxzZSBpZihjIDwgMHgxMDAwMHUpCi0gICAgICB7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHhFMHUgKyAoYyA+PiAxMikpOwotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKChjID4+IDYpICYgMHgzRnUpKTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArIChjICYgMHgzRnUpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweEYwdSArIChjID4+IDE4KSk7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoKGMgPj4gMTIpICYgMHgzRnUpKTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArICgoYyA+PiA2KSAmIDB4M0Z1KSk7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoYyAmIDB4M0Z1KSk7Ci0gICAgICB9Ci0gICB9Ci0gICBtdXRhYmxlIEJhc2VJdGVyYXRvciBtX3Bvc2l0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFR0VYX1VOSUNPREVfSVRFUkFUT1JfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcmVnZXhfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcmVnZXhfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZkYjg3NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3JlZ2V4X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3RyYWl0cy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiB0cmFpdHMgY2xhc3Nlcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19IUFAKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jICBpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHMuaHBwPgotIyAgZW5kaWYKLQotI2VuZGlmIC8vIGluY2x1ZGUKLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3VzZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC91c2VyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE1MWZjMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3VzZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICB1c2VyLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogVXNlciBzZXR0YWJsZSBvcHRpb25zLgotICAqLwotCi0vLyBkZWZpbmUgaWYgeW91IHdhbnQgdGhlIHJlZ2V4IGxpYnJhcnkgdG8gdXNlIHRoZSBDIGxvY2FsZQotLy8gZXZlbiBvbiBXaW4zMjoKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFCi0KLS8vIGRlZmluZSB0aGlzIGlzIHlvdSB3YW50IHRoZSByZWdleCBsaWJyYXJ5IHRvIHVzZSB0aGUgQysrCi0vLyBsb2NhbGU6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFCi0KLS8vIGRlZmluZSB0aGlzIGlmIHRoZSBydW50aW1lIGxpYnJhcnkgaXMgYSBkbGwsIGFuZCB5b3UKLS8vIHdhbnQgTkROQk9PU1RfUkVHRVhfRFlOX0xJTksgdG8gc2V0IHVwIGRsbCBleHBvcnRzL2ltcG9ydHMKLS8vIHdpdGggX19kZWNsc3BlYyhkbGxleHBvcnQpL19fZGVjbHNwZWMoZGxsaW1wb3J0LikKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfSEFTX0RMTF9SVU5USU1FCi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIGR5bmFtaWNhbGx5IGxpbmsgdG8gcmVnZXgsCi0vLyBpZiB0aGUgcnVudGltZSBsaWJyYXJ5IGlzIGFsc28gYSBkbGwgKFByb2JhYmx5IFdpbjMyIHNwZWNpZmljLAotLy8gYW5kIGhhcyBubyBlZmZlY3QgdW5sZXNzIE5ETkJPT1NUX1JFR0VYX0hBU19ETExfUlVOVElNRSBpcyBzZXQpOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9EWU5fTElOSwotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3UgZG9uJ3Qgd2FudCB0aGUgbGliIHRvIGF1dG9tYXRpY2FsbHkKLS8vIHNlbGVjdCBpdHMgbGluayBsaWJyYXJpZXM6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0xJQgotCi0vLyBkZWZpbmUgdGhpcyBpZiB0ZW1wbGF0ZXMgd2l0aCBzd2l0Y2ggc3RhdGVtZW50cyBjYXVzZSBwcm9ibGVtczoKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fVEVNUExBVEVfU1dJVENIX01FUkdFCi0gCi0vLyBkZWZpbmUgdGhpcyB0byBkaXNhYmxlIFdpbjMyIHN1cHBvcnQgd2hlbiBhdmFpbGFibGU6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX1czMgotCi0vLyBkZWZpbmUgdGhpcyBpZiBib29sIGlzIG5vdCBhIHJlYWwgdHlwZToKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fQk9PTAotCi0vLyBkZWZpbmUgdGhpcyBpZiBubyB0ZW1wbGF0ZSBpbnN0YW5jZXMgYXJlIHRvIGJlIHBsYWNlZCBpbgotLy8gdGhlIGxpYnJhcnkgcmF0aGVyIHRoYW4gdXNlcnMgb2JqZWN0IGZpbGVzOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT19FWFRFUk5BTF9URU1QTEFURVMKLQotLy8gZGVmaW5lIHRoaXMgaWYgdGhlIGZvcndhcmQgZGVjbGFyYXRpb25zIGluIHJlZ2V4X2Z3ZC5ocHAKLS8vIGNhdXNlIG1vcmUgcHJvYmxlbXMgdGhhbiB0aGV5IGFyZSB3b3J0aDoKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRldECi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdXIgY29tcGlsZXIgc3VwcG9ydHMgTVMgV2luZG93cyBzdHJ1Y3R1cmVkCi0vLyBleGNlcHRpb24gaGFuZGxpbmcuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG0KLS8vIGV2ZW4gaWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJEIGlzIG5vdCBkZWZpbmVkLgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9SRUNVUlNJVkUKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBub24tcmVjdXJzaXZlCi0vLyBhbGdvcml0aG0sIGV2ZW4gaWYgdGhlIHJlY3Vyc2l2ZSB2ZXJzaW9uIHdvdWxkIGJlIHRoZSBkZWZhdWx0LgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFCi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIHNldCB0aGUgc2l6ZSBvZiB0aGUgbWVtb3J5IGJsb2NrcwotLy8gdXNlZCBieSB0aGUgbm9uLXJlY3Vyc2l2ZSBhbGdvcml0aG0uCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0JMT0NLU0laRSA0MDk2Ci0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgbWVtb3J5IGJsb2NrcwotLy8gdXNlZCBieSB0aGUgbm9uLXJlY3Vyc2l2ZSBhbGdvcml0aG0uCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BWF9CTE9DS1MgMTAyNAotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byBzZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1lbW9yeSBibG9ja3MKLS8vIGNhY2hlZCBieSB0aGUgbm9uLXJlY3Vyc2l2ZSBhbGdvcml0aG06IE5vcm1hbGx5IHRoaXMgaXMgMTYsIGJ1dCBjYW4gYmUgCi0vLyBoaWdoZXIgaWYgeW91IGhhdmUgbXVsdGlwbGUgdGhyZWFkcyBhbGwgdXNpbmcgYm9vc3QucmVnZXgsIG9yIGxvd2VyIAotLy8gaWYgeW91IGRvbid0IHdhbnQgYm9vc3QucmVnZXggdG8gY2FjaGUgbWVtb3J5LgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9NQVhfQ0FDSEVfQkxPQ0tTIDE2Ci0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gYWNjZXNzIGV4dGVuZGVkIGNhcHR1cmUKLS8vIGluZm9ybWF0aW9uIGluIHlvdXIgc3ViX21hdGNoJ3MgKGNhdXRpb24gdGhpcyB3aWxsIHNsb3cgdGhpbmdzCi0vLyBkb3duIHF1aXRlIGEgYml0KS4KLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIFVuaWNvZGUgdmlhIElDVS4KLS8vICNkZWZpbmUgTkROQk9PU1RfSEFTX0lDVQotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCByZWdleCB0byB1c2UgX19jZGVjbCBjYWxsaW5nIGNvbnZlbnNpb25zLCBldmVuIHdoZW4gX19mYXN0Y2FsbCBpcyBhdmFpbGFibGU6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0ZBU1RDQUxMCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmU0ZWE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzgyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQgSm9obiBNYWRkb2NrCi0gKiBDb3B5cmlnaHQgMjAxMSBHYXJtaW4gTHRkLiBvciBpdHMgc3Vic2lkaWFyaWVzCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotICogKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGJhc2ljX3JlZ2V4LmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgdGVtcGxhdGUgY2xhc3MgYmFzaWNfcmVnZXguCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X0JBU0lDX1JFR0VYX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyNTEgNDIzMSA0ODAwKQotI2lmIE5ETkJPT1NUX01TVkMgPCAxNjAwCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ2NjApCi0jZW5kaWYKLSNlbmRpZgotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0vLwotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiwgd2Ugd2lsbCBuZWVkIHRoaXMgb25lIGxhdGVyOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotY2xhc3MgYmFzaWNfcmVnZXhfcGFyc2VyOwotCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLXZvaWQgYnViYmxlX2Rvd25fb25lKEkgZmlyc3QsIEkgbGFzdCkKLXsKLSAgIGlmKGZpcnN0ICE9IGxhc3QpCi0gICB7Ci0gICAgICBJIG5leHQgPSBsYXN0IC0gMTsKLSAgICAgIHdoaWxlKChuZXh0ICE9IGZpcnN0KSAmJiAoKm5leHQgPCAqKG5leHQtMSkpKQotICAgICAgewotICAgICAgICAgKG5leHQtMSktPnN3YXAoKm5leHQpOwotICAgICAgICAgLS1uZXh0OwotICAgICAgfQotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1pbmxpbmUgaW50IGhhc2hfdmFsdWVfZnJvbV9jYXB0dXJlX25hbWUoSXRlcmF0b3IgaSwgSXRlcmF0b3IgaikKLXsKLSAgIHN0ZDo6c2l6ZV90IHIgPSBuZG5ib29zdDo6aGFzaF9yYW5nZShpLCBqKTsKLSAgIHIgJT0gKChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCkoKSAtIDEwMDAxKTsKLSAgIHIgKz0gMTAwMDA7Ci0gICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyKTsKLX0KLQotY2xhc3MgbmFtZWRfc3ViZXhwcmVzc2lvbnMKLXsKLXB1YmxpYzoKLSAgIHN0cnVjdCBuYW1lCi0gICB7Ci0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICAgICBuYW1lKGNvbnN0IGNoYXJUKiBpLCBjb25zdCBjaGFyVCogaiwgaW50IGlkeCkKLSAgICAgICAgIDogaW5kZXgoaWR4KSAKLSAgICAgIHsgCi0gICAgICAgICBoYXNoID0gaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShpLCBqKTsgCi0gICAgICB9Ci0gICAgICBuYW1lKGludCBoLCBpbnQgaWR4KQotICAgICAgICAgOiBpbmRleChpZHgpLCBoYXNoKGgpCi0gICAgICB7IAotICAgICAgfQotICAgICAgaW50IGluZGV4OwotICAgICAgaW50IGhhc2g7Ci0gICAgICBib29sIG9wZXJhdG9yIDwgKGNvbnN0IG5hbWUmIG90aGVyKWNvbnN0Ci0gICAgICB7Ci0gICAgICAgICByZXR1cm4gaGFzaCA8IG90aGVyLmhhc2g7Ci0gICAgICB9Ci0gICAgICBib29sIG9wZXJhdG9yID09IChjb25zdCBuYW1lJiBvdGhlciljb25zdAotICAgICAgewotICAgICAgICAgcmV0dXJuIGhhc2ggPT0gb3RoZXIuaGFzaDsgCi0gICAgICB9Ci0gICAgICB2b2lkIHN3YXAobmFtZSYgb3RoZXIpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnN3YXAoaW5kZXgsIG90aGVyLmluZGV4KTsKLSAgICAgICAgIHN0ZDo6c3dhcChoYXNoLCBvdGhlci5oYXNoKTsKLSAgICAgIH0KLSAgIH07Ci0KLSAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8bmFtZT46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotICAgdHlwZWRlZiBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPiByYW5nZV90eXBlOwotCi0gICBuYW1lZF9zdWJleHByZXNzaW9ucygpe30KLQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgdm9pZCBzZXRfbmFtZShjb25zdCBjaGFyVCogaSwgY29uc3QgY2hhclQqIGosIGludCBpbmRleCkKLSAgIHsKLSAgICAgIG1fc3ViX25hbWVzLnB1c2hfYmFjayhuYW1lKGksIGosIGluZGV4KSk7Ci0gICAgICBidWJibGVfZG93bl9vbmUobV9zdWJfbmFtZXMuYmVnaW4oKSwgbV9zdWJfbmFtZXMuZW5kKCkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgaW50IGdldF9pZChjb25zdCBjaGFyVCogaSwgY29uc3QgY2hhclQqIGopY29uc3QKLSAgIHsKLSAgICAgIG5hbWUgdChpLCBqLCAwKTsKLSAgICAgIHR5cGVuYW1lIHN0ZDo6dmVjdG9yPG5hbWU+Ojpjb25zdF9pdGVyYXRvciBwb3MgPSBzdGQ6Omxvd2VyX2JvdW5kKG1fc3ViX25hbWVzLmJlZ2luKCksIG1fc3ViX25hbWVzLmVuZCgpLCB0KTsKLSAgICAgIGlmKChwb3MgIT0gbV9zdWJfbmFtZXMuZW5kKCkpICYmICgqcG9zID09IHQpKQotICAgICAgewotICAgICAgICAgcmV0dXJuIHBvcy0+aW5kZXg7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gLTE7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICByYW5nZV90eXBlIGVxdWFsX3JhbmdlKGNvbnN0IGNoYXJUKiBpLCBjb25zdCBjaGFyVCogailjb25zdAotICAgewotICAgICAgbmFtZSB0KGksIGosIDApOwotICAgICAgcmV0dXJuIHN0ZDo6ZXF1YWxfcmFuZ2UobV9zdWJfbmFtZXMuYmVnaW4oKSwgbV9zdWJfbmFtZXMuZW5kKCksIHQpOwotICAgfQotICAgaW50IGdldF9pZChpbnQgaCljb25zdAotICAgewotICAgICAgbmFtZSB0KGgsIDApOwotICAgICAgc3RkOjp2ZWN0b3I8bmFtZT46OmNvbnN0X2l0ZXJhdG9yIHBvcyA9IHN0ZDo6bG93ZXJfYm91bmQobV9zdWJfbmFtZXMuYmVnaW4oKSwgbV9zdWJfbmFtZXMuZW5kKCksIHQpOwotICAgICAgaWYoKHBvcyAhPSBtX3N1Yl9uYW1lcy5lbmQoKSkgJiYgKCpwb3MgPT0gdCkpCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gcG9zLT5pbmRleDsKLSAgICAgIH0KLSAgICAgIHJldHVybiAtMTsKLSAgIH0KLSAgIHJhbmdlX3R5cGUgZXF1YWxfcmFuZ2UoaW50IGgpY29uc3QKLSAgIHsKLSAgICAgIG5hbWUgdChoLCAwKTsKLSAgICAgIHJldHVybiBzdGQ6OmVxdWFsX3JhbmdlKG1fc3ViX25hbWVzLmJlZ2luKCksIG1fc3ViX25hbWVzLmVuZCgpLCB0KTsKLSAgIH0KLXByaXZhdGU6Ci0gICBzdGQ6OnZlY3RvcjxuYW1lPiBtX3N1Yl9uYW1lczsKLX07Ci0KLS8vCi0vLyBjbGFzcyByZWdleF9kYXRhOgotLy8gcmVwcmVzZW50cyB0aGUgZGF0YSB3ZSB3aXNoIHRvIGV4cG9zZSB0byB0aGUgbWF0Y2hpbmcgYWxnb3JpdGhtcy4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXN0cnVjdCByZWdleF9kYXRhIDogcHVibGljIG5hbWVkX3N1YmV4cHJlc3Npb25zCi17Ci0gICB0eXBlZGVmIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlICAgZmxhZ190eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZTsgIAotCi0gICByZWdleF9kYXRhKGNvbnN0IDo6bmRuYm9vc3Q6OnNoYXJlZF9wdHI8Ci0gICAgICA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+ID4mIHQpIAotICAgICAgOiBtX3B0cmFpdHModCksIG1fZXhwcmVzc2lvbigwKSwgbV9leHByZXNzaW9uX2xlbigwKSB7fQotICAgcmVnZXhfZGF0YSgpIAotICAgICAgOiBtX3B0cmFpdHMobmV3IDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4oKSksIG1fZXhwcmVzc2lvbigwKSwgbV9leHByZXNzaW9uX2xlbigwKSB7fQotCi0gICA6Om5kbmJvb3N0OjpzaGFyZWRfcHRyPAotICAgICAgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzPgotICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgIG1fcHRyYWl0czsgICAgICAgICAgICAgICAgIC8vIHRyYWl0cyBjbGFzcyBpbnN0YW5jZQotICAgZmxhZ190eXBlICAgICAgICAgICAgICAgICAgIG1fZmxhZ3M7ICAgICAgICAgICAgICAgICAgIC8vIGZsYWdzIHdpdGggd2hpY2ggd2Ugd2VyZSBjb21waWxlZAotICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdHVzOyAgICAgICAgICAgICAgICAgIC8vIGVycm9yIGNvZGUgKDAgaW1wbGllcyBPSykuCi0gICBjb25zdCBjaGFyVCogICAgICAgICAgICAgICAgbV9leHByZXNzaW9uOyAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGV4cHJlc3Npb24KLSAgIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgICBtX2V4cHJlc3Npb25fbGVuOyAgICAgICAgICAvLyB0aGUgbGVuZ3RoIG9mIHRoZSBvcmlnaW5hbCBleHByZXNzaW9uCi0gICBzaXplX3R5cGUgICAgICAgICAgICAgICAgICAgbV9tYXJrX2NvdW50OyAgICAgICAgICAgICAgLy8gdGhlIG51bWJlciBvZiBtYXJrZWQgc3ViLWV4cHJlc3Npb25zCi0gICByZV9kZXRhaWw6OnJlX3N5bnRheF9iYXNlKiAgbV9maXJzdF9zdGF0ZTsgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IHN0YXRlIG9mIHRoZSBtYWNoaW5lCi0gICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgbV9yZXN0YXJ0X3R5cGU7ICAgICAgICAgICAgLy8gc2VhcmNoIG9wdGltaXNhdGlvbiB0eXBlCi0gICB1bnNpZ25lZCBjaGFyICAgICAgICAgICAgICAgbV9zdGFydG1hcFsxIDw8IENIQVJfQklUXTsgLy8gd2hpY2ggY2hhcmFjdGVycyBjYW4gc3RhcnQgYSBtYXRjaAotICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgIG1fY2FuX2JlX251bGw7ICAgICAgICAgICAgIC8vIHdoZXRoZXIgd2UgY2FuIG1hdGNoIGEgbnVsbCBzdHJpbmcKLSAgIHJlX2RldGFpbDo6cmF3X3N0b3JhZ2UgICAgICBtX2RhdGE7ICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYnVmZmVyIGluIHdoaWNoIG91ciBzdGF0ZXMgYXJlIGNvbnN0cnVjdGVkCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSAgICBtX3dvcmRfbWFzazsgICAgICAgLy8gbWFzayB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhIHdvcmQgY2hhcmFjdGVyCi0gICBzdGQ6OnZlY3RvcjwKLSAgICAgIHN0ZDo6cGFpcjwKLSAgICAgIHN0ZDo6c2l6ZV90LCBzdGQ6OnNpemVfdD4gPiBtX3N1YnM7ICAgICAgICAgICAgICAgICAvLyBQb3NpdGlvbiBvZiBzdWItZXhwcmVzc2lvbnMgd2l0aGluIHRoZSAqc3RyaW5nKi4KLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBtX2hhc19yZWN1cnNpb25zOyAgICAgICAgICAvLyB3aGV0aGVyIHdlIGhhdmUgcmVjdXJzaXZlIGV4cHJlc3Npb25zOwotfTsKLS8vCi0vLyBjbGFzcyBiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbgotLy8gcGltcGwgaW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIGJhc2ljX3JlZ2V4LgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotY2xhc3MgYmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb24KLSAgIDogcHVibGljIHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4KLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgICBmbGFnX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZTsgCi0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6bG9jYWxlX3R5cGUgICAgICAgICAgbG9jYWxlX3R5cGU7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXJUKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3I7Ci0KLSAgIGJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uKCl7fQotICAgYmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb24oY29uc3QgOjpuZG5ib29zdDo6c2hhcmVkX3B0cjwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4gPiYgdCkKLSAgICAgIDogcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPih0KSB7fQotICAgdm9pZCBhc3NpZ24oY29uc3QgY2hhclQqIGFyZ19maXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhclQqIGFyZ19sYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZikKLSAgIHsKLSAgICAgIHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4qIHBkYXQgPSB0aGlzOwotICAgICAgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+IHBhcnNlcihwZGF0KTsKLSAgICAgIHBhcnNlci5wYXJzZShhcmdfZmlyc3QsIGFyZ19sYXN0LCBmKTsKLSAgIH0KLQotICAgbG9jYWxlX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBpbWJ1ZShsb2NhbGVfdHlwZSBsKQotICAgeyAKLSAgICAgIHJldHVybiB0aGlzLT5tX3B0cmFpdHMtPmltYnVlKGwpOyAKLSAgIH0KLSAgIGxvY2FsZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2V0bG9jKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiB0aGlzLT5tX3B0cmFpdHMtPmdldGxvYygpOyAKLSAgIH0KLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiBORE5CT09TVF9SRUdFWF9DQUxMIHN0cigpY29uc3QKLSAgIHsKLSAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiByZXN1bHQ7Ci0gICAgICBpZih0aGlzLT5tX3N0YXR1cyA9PSAwKQotICAgICAgICAgcmVzdWx0ID0gc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+KHRoaXMtPm1fZXhwcmVzc2lvbiwgdGhpcy0+bV9leHByZXNzaW9uX2xlbik7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgY29uc3RfaXRlcmF0b3IgTkROQk9PU1RfUkVHRVhfQ0FMTCBleHByZXNzaW9uKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fZXhwcmVzc2lvbjsKLSAgIH0KLSAgIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IE5ETkJPT1NUX1JFR0VYX0NBTEwgc3ViZXhwcmVzc2lvbihzdGQ6OnNpemVfdCBuKWNvbnN0Ci0gICB7Ci0gICAgICBpZihuID09IDApCi0gICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6b3V0X29mX3JhbmdlKCIwIGlzIG5vdCBhIHZhbGlkIHN1YmV4cHJlc3Npb24gaW5kZXguIikpOwotICAgICAgY29uc3Qgc3RkOjpwYWlyPHN0ZDo6c2l6ZV90LCBzdGQ6OnNpemVfdD4mIHBpID0gdGhpcy0+bV9zdWJzLmF0KG4gLSAxKTsKLSAgICAgIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IHAoZXhwcmVzc2lvbigpICsgcGkuZmlyc3QsIGV4cHJlc3Npb24oKSArIHBpLnNlY29uZCk7Ci0gICAgICByZXR1cm4gcDsKLSAgIH0KLSAgIC8vCi0gICAvLyBiZWdpbiwgZW5kOgotICAgY29uc3RfaXRlcmF0b3IgTkROQk9PU1RfUkVHRVhfQ0FMTCBiZWdpbigpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gKHRoaXMtPm1fc3RhdHVzID8gMCA6IHRoaXMtPm1fZXhwcmVzc2lvbik7IAotICAgfQotICAgY29uc3RfaXRlcmF0b3IgTkROQk9PU1RfUkVHRVhfQ0FMTCBlbmQoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuICh0aGlzLT5tX3N0YXR1cyA/IDAgOiB0aGlzLT5tX2V4cHJlc3Npb24gKyB0aGlzLT5tX2V4cHJlc3Npb25fbGVuKTsgCi0gICB9Ci0gICBmbGFnX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBmbGFncygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX2ZsYWdzOwotICAgfQotICAgc2l6ZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2l6ZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX2V4cHJlc3Npb25fbGVuOwotICAgfQotICAgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgc3RhdHVzKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fc3RhdHVzOwotICAgfQotICAgc2l6ZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbWFya19jb3VudCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX21hcmtfY291bnQ7Ci0gICB9Ci0gICBjb25zdCByZV9kZXRhaWw6OnJlX3N5bnRheF9iYXNlKiBnZXRfZmlyc3Rfc3RhdGUoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9maXJzdF9zdGF0ZTsKLSAgIH0KLSAgIHVuc2lnbmVkIGdldF9yZXN0YXJ0X3R5cGUoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9yZXN0YXJ0X3R5cGU7Ci0gICB9Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyKiBnZXRfbWFwKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fc3RhcnRtYXA7Ci0gICB9Ci0gICBjb25zdCA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+JiBnZXRfdHJhaXRzKCljb25zdAotICAgewotICAgICAgcmV0dXJuICoodGhpcy0+bV9wdHJhaXRzKTsKLSAgIH0KLSAgIGJvb2wgY2FuX2JlX251bGwoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9jYW5fYmVfbnVsbDsKLSAgIH0KLSAgIGNvbnN0IHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4mIGdldF9kYXRhKCljb25zdAotICAgewotICAgICAgYmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4gY29uc3QqIHAgPSB0aGlzOwotICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCByZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+Kj4ocCk7Ci0gICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLS8vCi0vLyBjbGFzcyBiYXNpY19yZWdleDoKLS8vIHJlcHJlc2VudHMgdGhlIGNvbXBpbGVkCi0vLyByZWd1bGFyIGV4cHJlc3Npb246Ci0vLwotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9fRldECi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cyA9IHJlZ2V4X3RyYWl0czxjaGFyVD4gPgotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzID4KLSNlbmRpZgotY2xhc3MgYmFzaWNfcmVnZXggOiBwdWJsaWMgcmVnYmFzZQotewotcHVibGljOgotICAgLy8gdHlwZWRlZnM6Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3NpemVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSAgICAgICAgICB0cmFpdHNfc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIGNoYXJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgdHlwZWRlZiB0cmFpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOwotCi0gICB0eXBlZGVmIGNoYXJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgY2hhclQmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXJUJiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBjaGFyVCogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yOwotICAgdHlwZWRlZiBjb25zdF9pdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOwotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7ICAgCi0gICB0eXBlZGVmIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlICAgZmxhZ190eXBlOwotICAgLy8gbG9jYWxlX3R5cGUKLSAgIC8vIHBsYWNlaG9sZGVyIGZvciBhY3R1YWwgbG9jYWxlIHR5cGUgdXNlZCBieSB0aGUKLSAgIC8vIHRyYWl0cyBjbGFzcyB0byBsb2NhbGlzZSAqdGhpcy4KLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpsb2NhbGVfdHlwZSAgICAgICAgICBsb2NhbGVfdHlwZTsKLSAgIAotcHVibGljOgotICAgZXhwbGljaXQgYmFzaWNfcmVnZXgoKXt9Ci0gICBleHBsaWNpdCBiYXNpY19yZWdleChjb25zdCBjaGFyVCogcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIGFzc2lnbihwLCBmKTsKLSAgIH0KLSAgIGJhc2ljX3JlZ2V4KGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgYXNzaWduKHAxLCBwMiwgZik7Ci0gICB9Ci0gICBiYXNpY19yZWdleChjb25zdCBjaGFyVCogcCwgc2l6ZV90eXBlIGxlbiwgZmxhZ190eXBlIGYpCi0gICB7Ci0gICAgICBhc3NpZ24ocCwgbGVuLCBmKTsKLSAgIH0KLSAgIGJhc2ljX3JlZ2V4KGNvbnN0IGJhc2ljX3JlZ2V4JiB0aGF0KQotICAgICAgOiBtX3BpbXBsKHRoYXQubV9waW1wbCkge30KLSAgIH5iYXNpY19yZWdleCgpe30KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCBiYXNpY19yZWdleCYgdGhhdCkKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24odGhhdCk7Ci0gICB9Ci0gICBiYXNpY19yZWdleCYgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcj0oY29uc3QgY2hhclQqIHB0cikKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24ocHRyKTsKLSAgIH0KLQotICAgLy8KLSAgIC8vIGFzc2lnbjoKLSAgIGJhc2ljX3JlZ2V4JiBhc3NpZ24oY29uc3QgYmFzaWNfcmVnZXgmIHRoYXQpCi0gICB7IAotICAgICAgbV9waW1wbCA9IHRoYXQubV9waW1wbDsKLSAgICAgIHJldHVybiAqdGhpczsgCi0gICB9Ci0gICBiYXNpY19yZWdleCYgYXNzaWduKGNvbnN0IGNoYXJUKiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgcmV0dXJuIGFzc2lnbihwLCBwICsgdHJhaXRzOjpsZW5ndGgocCksIGYpOwotICAgfQotICAgYmFzaWNfcmVnZXgmIGFzc2lnbihjb25zdCBjaGFyVCogcCwgc2l6ZV90eXBlIGxlbiwgZmxhZ190eXBlIGYpCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHAsIHAgKyBsZW4sIGYpOwotICAgfQotcHJpdmF0ZToKLSAgIGJhc2ljX3JlZ2V4JiBkb19hc3NpZ24oY29uc3QgY2hhclQqIHAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogcDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdHlwZSBmKTsKLXB1YmxpYzoKLSAgIGJhc2ljX3JlZ2V4JiBhc3NpZ24oY29uc3QgY2hhclQqIHAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogcDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICByZXR1cm4gZG9fYXNzaWduKHAxLCBwMiwgZik7Ci0gICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykKLQotICAgdGVtcGxhdGUgPGNsYXNzIFNULCBjbGFzcyBTQT4KLSAgIHVuc2lnbmVkIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9leHByZXNzaW9uKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgeyAKLSAgICAgIHJldHVybiBzZXRfZXhwcmVzc2lvbihwLmRhdGEoKSwgcC5kYXRhKCkgKyBwLnNpemUoKSwgZik7IAotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBPgotICAgZXhwbGljaXQgYmFzaWNfcmVnZXgoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7IAotICAgICAgYXNzaWduKHAsIGYpOyAKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci0gICBiYXNpY19yZWdleChJbnB1dEl0ZXJhdG9yIGFyZ19maXJzdCwgSW5wdXRJdGVyYXRvciBhcmdfbGFzdCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSBzZXFfdHlwZTsKLSAgICAgIHNlcV90eXBlIGEoYXJnX2ZpcnN0LCBhcmdfbGFzdCk7Ci0gICAgICBpZihhLnNpemUoKSkKLSAgICAgICAgIGFzc2lnbihzdGF0aWNfY2FzdDxjb25zdCBjaGFyVCo+KCYqYS5iZWdpbigpKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhclQqPigmKmEuYmVnaW4oKSArIGEuc2l6ZSgpKSwgZik7Ci0gICAgICBlbHNlCi0gICAgICAgICBhc3NpZ24oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhclQqPigwKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhclQqPigwKSwgZik7Ci0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0E+Ci0gICBiYXNpY19yZWdleCYgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcj0oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHApCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHAuZGF0YSgpLCBwLmRhdGEoKSArIHAuc2l6ZSgpLCByZWdleF9jb25zdGFudHM6Om5vcm1hbCk7Ci0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBzdHJpbmdfdHJhaXRzLCBjbGFzcyBBPgotICAgYmFzaWNfcmVnZXgmIE5ETkJPT1NUX1JFR0VYX0NBTEwgYXNzaWduKAotICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBzdHJpbmdfdHJhaXRzLCBBPiYgcywKLSAgICAgICBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgcmV0dXJuIGFzc2lnbihzLmRhdGEoKSwgcy5kYXRhKCkgKyBzLnNpemUoKSwgZik7Ci0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgYmFzaWNfcmVnZXgmIE5ETkJPT1NUX1JFR0VYX0NBTEwgYXNzaWduKElucHV0SXRlcmF0b3IgYXJnX2ZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGFyZ19sYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlIHNlcV90eXBlOwotICAgICAgc2VxX3R5cGUgYShhcmdfZmlyc3QsIGFyZ19sYXN0KTsKLSAgICAgIGlmKGEuc2l6ZSgpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhclQqIHAxID0gJiphLmJlZ2luKCk7Ci0gICAgICAgICBjb25zdCBjaGFyVCogcDIgPSAmKmEuYmVnaW4oKSArIGEuc2l6ZSgpOwotICAgICAgICAgcmV0dXJuIGFzc2lnbihwMSwgcDIsIGYpOwotICAgICAgfQotICAgICAgcmV0dXJuIGFzc2lnbihzdGF0aWNfY2FzdDxjb25zdCBjaGFyVCo+KDApLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyVCo+KDApLCBmKTsKLSAgIH0KLSNlbHNlCi0gICB1bnNpZ25lZCBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfZXhwcmVzc2lvbihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7IAotICAgICAgcmV0dXJuIHNldF9leHByZXNzaW9uKHAuZGF0YSgpLCBwLmRhdGEoKSArIHAuc2l6ZSgpLCBmKTsgCi0gICB9Ci0KLSAgIGJhc2ljX3JlZ2V4KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsgCi0gICAgICBhc3NpZ24ocCwgZik7IAotICAgfQotCi0gICBiYXNpY19yZWdleCYgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcj0oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBwKQotICAgewotICAgICAgcmV0dXJuIGFzc2lnbihwLmRhdGEoKSwgcC5kYXRhKCkgKyBwLnNpemUoKSwgcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpOwotICAgfQotCi0gICBiYXNpY19yZWdleCYgTkROQk9PU1RfUkVHRVhfQ0FMTCBhc3NpZ24oCi0gICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBzLAotICAgICAgIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHMuZGF0YSgpLCBzLmRhdGEoKSArIHMuc2l6ZSgpLCBmKTsKLSAgIH0KLQotI2VuZGlmCi0KLSAgIC8vCi0gICAvLyBsb2NhbGU6Ci0gICBsb2NhbGVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGltYnVlKGxvY2FsZV90eXBlIGwpOwotICAgbG9jYWxlX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRsb2MoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5nZXRsb2MoKSA6IGxvY2FsZV90eXBlKCk7IAotICAgfQotICAgLy8KLSAgIC8vIGdldGZsYWdzOgotICAgLy8gcmV0YWluZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHksICJmbGFncyIKLSAgIC8vIGlzIG5vdyB0aGUgcHJlZmVycmVkIG5hbWU6Ci0gICBmbGFnX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRmbGFncygpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gZmxhZ3MoKTsKLSAgIH0KLSAgIGZsYWdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGZsYWdzKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBtX3BpbXBsLmdldCgpID8gbV9waW1wbC0+ZmxhZ3MoKSA6IDA7Ci0gICB9Ci0gICAvLwotICAgLy8gc3RyOgotICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IE5ETkJPT1NUX1JFR0VYX0NBTEwgc3RyKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5zdHIoKSA6IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPigpOwotICAgfQotICAgLy8KLSAgIC8vIGJlZ2luLCBlbmQsIHN1YmV4cHJlc3Npb246Ci0gICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPiBORE5CT09TVF9SRUdFWF9DQUxMIHN1YmV4cHJlc3Npb24oc3RkOjpzaXplX3Qgbiljb25zdAotICAgewotICAgICAgaWYoIW1fcGltcGwuZ2V0KCkpCi0gICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6bG9naWNfZXJyb3IoIkNhbid0IGFjY2VzcyBzdWJleHByZXNzaW9ucyBpbiBhbiBpbnZhbGlkIHJlZ2V4LiIpKTsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5zdWJleHByZXNzaW9uKG4pOwotICAgfQotICAgY29uc3RfaXRlcmF0b3IgTkROQk9PU1RfUkVHRVhfQ0FMTCBiZWdpbigpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5iZWdpbigpIDogMCk7IAotICAgfQotICAgY29uc3RfaXRlcmF0b3IgTkROQk9PU1RfUkVHRVhfQ0FMTCBlbmQoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIChtX3BpbXBsLmdldCgpID8gbV9waW1wbC0+ZW5kKCkgOiAwKTsgCi0gICB9Ci0gICAvLwotICAgLy8gc3dhcDoKLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzd2FwKGJhc2ljX3JlZ2V4JiB0aGF0KXRocm93KCkKLSAgIHsKLSAgICAgIG1fcGltcGwuc3dhcCh0aGF0Lm1fcGltcGwpOwotICAgfQotICAgLy8KLSAgIC8vIHNpemU6Ci0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBzaXplKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiAobV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPnNpemUoKSA6IDApOyAKLSAgIH0KLSAgIC8vCi0gICAvLyBtYXhfc2l6ZToKLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIG1heF9zaXplKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBVSU5UX01BWDsgCi0gICB9Ci0gICAvLwotICAgLy8gZW1wdHk6Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgZW1wdHkoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIChtX3BpbXBsLmdldCgpID8gMCAhPSBtX3BpbXBsLT5zdGF0dXMoKSA6IHRydWUpOyAKLSAgIH0KLQotICAgc2l6ZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbWFya19jb3VudCgpY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIChtX3BpbXBsLmdldCgpID8gbV9waW1wbC0+bWFya19jb3VudCgpIDogMCk7IAotICAgfQotCi0gICBpbnQgc3RhdHVzKCljb25zdAotICAgewotICAgICAgcmV0dXJuIChtX3BpbXBsLmdldCgpID8gbV9waW1wbC0+c3RhdHVzKCkgOiByZWdleF9jb25zdGFudHM6OmVycm9yX2VtcHR5KTsKLSAgIH0KLQotICAgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgY29tcGFyZShjb25zdCBiYXNpY19yZWdleCYgdGhhdCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1fcGltcGwuZ2V0KCkgPT0gdGhhdC5tX3BpbXBsLmdldCgpKQotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICBpZighbV9waW1wbC5nZXQoKSkKLSAgICAgICAgIHJldHVybiAtMTsKLSAgICAgIGlmKCF0aGF0Lm1fcGltcGwuZ2V0KCkpCi0gICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmKHN0YXR1cygpICE9IHRoYXQuc3RhdHVzKCkpCi0gICAgICAgICByZXR1cm4gc3RhdHVzKCkgLSB0aGF0LnN0YXR1cygpOwotICAgICAgaWYoZmxhZ3MoKSAhPSB0aGF0LmZsYWdzKCkpCi0gICAgICAgICByZXR1cm4gZmxhZ3MoKSAtIHRoYXQuZmxhZ3MoKTsKLSAgICAgIHJldHVybiBzdHIoKS5jb21wYXJlKHRoYXQuc3RyKCkpOwotICAgfQotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPT0oY29uc3QgYmFzaWNfcmVnZXgmIGUpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gY29tcGFyZShlKSA9PSAwOyAKLSAgIH0KLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvciAhPSAoY29uc3QgYmFzaWNfcmVnZXgmIGUpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gY29tcGFyZShlKSAhPSAwOyAKLSAgIH0KLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcjwoY29uc3QgYmFzaWNfcmVnZXgmIGUpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gY29tcGFyZShlKSA8IDA7IAotICAgfQotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPihjb25zdCBiYXNpY19yZWdleCYgZSljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBjb21wYXJlKGUpID4gMDsgCi0gICB9Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I8PShjb25zdCBiYXNpY19yZWdleCYgZSljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBjb21wYXJlKGUpIDw9IDA7IAotICAgfQotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPj0oY29uc3QgYmFzaWNfcmVnZXgmIGUpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gY29tcGFyZShlKSA+PSAwOyAKLSAgIH0KLQotICAgLy8KLSAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlcHJlY2F0ZWQgYXMgcHVibGljIGludGVyZmFjZXMKLSAgIC8vIGJ1dCBhcmUgYXZhaWxhYmxlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZWFybGllciB2ZXJzaW9ucy4KLSAgIGNvbnN0IGNoYXJUKiBORE5CT09TVF9SRUdFWF9DQUxMIGV4cHJlc3Npb24oKWNvbnN0IAotICAgeyAKLSAgICAgIHJldHVybiAobV9waW1wbC5nZXQoKSAmJiAhbV9waW1wbC0+c3RhdHVzKCkgPyBtX3BpbXBsLT5leHByZXNzaW9uKCkgOiAwKTsgCi0gICB9Ci0gICB1bnNpZ25lZCBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfZXhwcmVzc2lvbihjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMiwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIGFzc2lnbihwMSwgcDIsIGYgfCByZWdleF9jb25zdGFudHM6Om5vX2V4Y2VwdCk7Ci0gICAgICByZXR1cm4gc3RhdHVzKCk7Ci0gICB9Ci0gICB1bnNpZ25lZCBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfZXhwcmVzc2lvbihjb25zdCBjaGFyVCogcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkgCi0gICB7IAotICAgICAgYXNzaWduKHAsIGYgfCByZWdleF9jb25zdGFudHM6Om5vX2V4Y2VwdCk7IAotICAgICAgcmV0dXJuIHN0YXR1cygpOwotICAgfQotICAgdW5zaWduZWQgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgZXJyb3JfY29kZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBzdGF0dXMoKTsKLSAgIH0KLSAgIC8vCi0gICAvLyBwcml2YXRlIGFjY2VzcyBtZXRob2RzOgotICAgLy8KLSAgIGNvbnN0IHJlX2RldGFpbDo6cmVfc3ludGF4X2Jhc2UqIGdldF9maXJzdF9zdGF0ZSgpY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgwICE9IG1fcGltcGwuZ2V0KCkpOwotICAgICAgcmV0dXJuIG1fcGltcGwtPmdldF9maXJzdF9zdGF0ZSgpOwotICAgfQotICAgdW5zaWduZWQgZ2V0X3Jlc3RhcnRfdHlwZSgpY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgwICE9IG1fcGltcGwuZ2V0KCkpOwotICAgICAgcmV0dXJuIG1fcGltcGwtPmdldF9yZXN0YXJ0X3R5cGUoKTsKLSAgIH0KLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGdldF9tYXAoKWNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoMCAhPSBtX3BpbXBsLmdldCgpKTsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5nZXRfbWFwKCk7Ci0gICB9Ci0gICBjb25zdCA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+JiBnZXRfdHJhaXRzKCljb25zdAotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgIT0gbV9waW1wbC5nZXQoKSk7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+Z2V0X3RyYWl0cygpOwotICAgfQotICAgYm9vbCBjYW5fYmVfbnVsbCgpY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgwICE9IG1fcGltcGwuZ2V0KCkpOwotICAgICAgcmV0dXJuIG1fcGltcGwtPmNhbl9iZV9udWxsKCk7Ci0gICB9Ci0gICBjb25zdCByZV9kZXRhaWw6OnJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4mIGdldF9kYXRhKCljb25zdAotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgIT0gbV9waW1wbC5nZXQoKSk7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+Z2V0X2RhdGEoKTsKLSAgIH0KLSAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPHJlX2RldGFpbDo6bmFtZWRfc3ViZXhwcmVzc2lvbnMgPiBnZXRfbmFtZWRfc3VicygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsOwotICAgfQotCi1wcml2YXRlOgotICAgc2hhcmVkX3B0cjxyZV9kZXRhaWw6OmJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uPGNoYXJULCB0cmFpdHM+ID4gbV9waW1wbDsKLX07Ci0KLS8vCi0vLyBvdXQgb2YgbGluZSBtZW1iZXJzOwotLy8gdGhlc2UgYXJlIHRoZSBvbmx5IG1lbWJlcnMgdGhhdCBtdXRhdGUgdGhlIGJhc2ljX3JlZ2V4IG9iamVjdCwKLS8vIGFuZCBhcmUgZGVzaWduZWQgdG8gcHJvdmlkZSB0aGUgc3Ryb25nIGV4Y2VwdGlvbiBndWFyZW50ZWUKLS8vIChpbiB0aGUgZXZlbnQgb2YgYSB0aHJvdywgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3QgcmVtYWlucyB1bmNoYW5nZWQpLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+Ojpkb19hc3NpZ24oY29uc3QgY2hhclQqIHAxLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhclQqIHAyLAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGYpCi17Ci0gICBzaGFyZWRfcHRyPHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4gPiB0ZW1wOwotICAgaWYoIW1fcGltcGwuZ2V0KCkpCi0gICB7Ci0gICAgICB0ZW1wID0gc2hhcmVkX3B0cjxyZV9kZXRhaWw6OmJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uPGNoYXJULCB0cmFpdHM+ID4obmV3IHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4oKSk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICB0ZW1wID0gc2hhcmVkX3B0cjxyZV9kZXRhaWw6OmJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uPGNoYXJULCB0cmFpdHM+ID4obmV3IHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4obV9waW1wbC0+bV9wdHJhaXRzKSk7Ci0gICB9Ci0gICB0ZW1wLT5hc3NpZ24ocDEsIHAyLCBmKTsKLSAgIHRlbXAuc3dhcChtX3BpbXBsKTsKLSAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci10eXBlbmFtZSBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPjo6bG9jYWxlX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPjo6aW1idWUobG9jYWxlX3R5cGUgbCkKLXsgCi0gICBzaGFyZWRfcHRyPHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4gPiB0ZW1wKG5ldyByZV9kZXRhaWw6OmJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uPGNoYXJULCB0cmFpdHM+KCkpOwotICAgbG9jYWxlX3R5cGUgcmVzdWx0ID0gdGVtcC0+aW1idWUobCk7Ci0gICB0ZW1wLnN3YXAobV9waW1wbCk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0vLwotLy8gbm9uLW1lbWJlcnM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIHN3YXAoYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUxLCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZTIpCi17Ci0gICBlMS5zd2FwKGUyKTsKLX0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgdHJhaXRzMj4KLXN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCwgdHJhaXRzPiYgCi0gICBvcGVyYXRvciA8PCAoc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULCB0cmFpdHM+JiBvcywgCi0gICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0czI+JiBlKQotewotICAgcmV0dXJuIChvcyA8PCBlLnN0cigpKTsKLX0KLSNlbHNlCi10ZW1wbGF0ZSA8Y2xhc3MgdHJhaXRzPgotc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgdHJhaXRzPiYgZSkKLXsKLSAgIHJldHVybiAob3MgPDwgZS5zdHIoKSk7Ci19Ci0jZW5kaWYKLQotLy8KLS8vIGNsYXNzIHJlZ19leHByZXNzaW9uOgotLy8gdGhpcyBpcyBwcm92aWRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb25seSwKLS8vIGl0IGlzIGRlcHJlY2F0ZWQsIG5vIG5vdCB1c2UhCi0vLwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PX0ZXRAotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMgPSByZWdleF90cmFpdHM8Y2hhclQ+ID4KLSNlbHNlCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cyA+Ci0jZW5kaWYKLWNsYXNzIHJlZ19leHByZXNzaW9uIDogcHVibGljIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+OjpmbGFnX3R5cGUgZmxhZ190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPjo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLSAgIGV4cGxpY2l0IHJlZ19leHByZXNzaW9uKCl7fQotICAgZXhwbGljaXQgcmVnX2V4cHJlc3Npb24oY29uc3QgY2hhclQqIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICAgICA6IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+KHAsIGYpe30KLSAgIHJlZ19leHByZXNzaW9uKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgICAgOiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPihwMSwgcDIsIGYpe30KLSAgIHJlZ19leHByZXNzaW9uKGNvbnN0IGNoYXJUKiBwLCBzaXplX3R5cGUgbGVuLCBmbGFnX3R5cGUgZikKLSAgICAgIDogYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4ocCwgbGVuLCBmKXt9Ci0gICByZWdfZXhwcmVzc2lvbihjb25zdCByZWdfZXhwcmVzc2lvbiYgdGhhdCkKLSAgICAgIDogYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4odGhhdCkge30KLSAgIH5yZWdfZXhwcmVzc2lvbigpe30KLSAgIHJlZ19leHByZXNzaW9uJiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCByZWdfZXhwcmVzc2lvbiYgdGhhdCkKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5hc3NpZ24odGhhdCk7Ci0gICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKQotICAgdGVtcGxhdGUgPGNsYXNzIFNULCBjbGFzcyBTQT4KLSAgIGV4cGxpY2l0IHJlZ19leHByZXNzaW9uKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgOiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPihwLCBmKQotICAgeyAKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci0gICByZWdfZXhwcmVzc2lvbihJbnB1dEl0ZXJhdG9yIGFyZ19maXJzdCwgSW5wdXRJdGVyYXRvciBhcmdfbGFzdCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIDogYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4oYXJnX2ZpcnN0LCBhcmdfbGFzdCwgZikKLSAgIHsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIFNULCBjbGFzcyBTQT4KLSAgIHJlZ19leHByZXNzaW9uJiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCkKLSAgIHsKLSAgICAgIHRoaXMtPmFzc2lnbihwKTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSNlbHNlCi0gICBleHBsaWNpdCByZWdfZXhwcmVzc2lvbihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICA6IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+KHAsIGYpCi0gICB7IAotICAgfQotCi0gICByZWdfZXhwcmVzc2lvbiYgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcj0oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBwKQotICAgewotICAgICAgdGhpcy0+YXNzaWduKHApOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotI2VuZGlmCi0KLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcgKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X2NyZWF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleF9jcmVhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRiMDRlNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X2NyZWF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGJhc2ljX3JlZ2V4X2NyZWF0b3IuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19yZWdleF9jcmVhdG9yIHdoaWNoIGZpbGxzIGluCi0gICogICAgICAgICAgICAgICAgdGhlIGRhdGEgbWVtYmVycyBvZiBhIHJlZ2V4X2RhdGEgb2JqZWN0LgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0JBU0lDX1JFR0VYX0NSRUFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X0JBU0lDX1JFR0VYX0NSRUFUT1JfSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODAwKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RydWN0IGRpZ3JhcGggOiBwdWJsaWMgc3RkOjpwYWlyPGNoYXJULCBjaGFyVD4KLXsKLSAgIGRpZ3JhcGgoKSA6IHN0ZDo6cGFpcjxjaGFyVCwgY2hhclQ+KDAsIDApe30KLSAgIGRpZ3JhcGgoY2hhclQgYzEpIDogc3RkOjpwYWlyPGNoYXJULCBjaGFyVD4oYzEsIDApe30KLSAgIGRpZ3JhcGgoY2hhclQgYzEsIGNoYXJUIGMyKSA6IHN0ZDo6cGFpcjxjaGFyVCwgY2hhclQ+KGMxLCBjMikKLSAgIHt9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgZGlncmFwaChjb25zdCBkaWdyYXBoPGNoYXJUPiYgZCkgOiBzdGQ6OnBhaXI8Y2hhclQsIGNoYXJUPihkLmZpcnN0LCBkLnNlY29uZCl7fQotI2VuZGlmCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgU2VxPgotICAgZGlncmFwaChjb25zdCBTZXEmIHMpIDogc3RkOjpwYWlyPGNoYXJULCBjaGFyVD4oKQotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKHMuc2l6ZSgpIDw9IDIpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKHMuc2l6ZSgpKTsKLSAgICAgIHRoaXMtPmZpcnN0ID0gc1swXTsKLSAgICAgIHRoaXMtPnNlY29uZCA9IChzLnNpemUoKSA+IDEpID8gc1sxXSA6IDA7Ci0gICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWNsYXNzIGJhc2ljX2NoYXJfc2V0Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIGRpZ3JhcGg8Y2hhclQ+ICAgICAgICAgICAgICAgICAgIGRpZ3JhcGhfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSAgICAgc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLQotICAgYmFzaWNfY2hhcl9zZXQoKQotICAgewotICAgICAgbV9uZWdhdGUgPSBmYWxzZTsKLSAgICAgIG1faGFzX2RpZ3JhcGhzID0gZmFsc2U7Ci0gICAgICBtX2NsYXNzZXMgPSAwOwotICAgICAgbV9uZWdhdGVkX2NsYXNzZXMgPSAwOwotICAgICAgbV9lbXB0eSA9IHRydWU7Ci0gICB9Ci0KLSAgIHZvaWQgYWRkX3NpbmdsZShjb25zdCBkaWdyYXBoX3R5cGUmIHMpCi0gICB7Ci0gICAgICBtX3NpbmdsZXMuaW5zZXJ0KG1fc2luZ2xlcy5lbmQoKSwgcyk7Ci0gICAgICBpZihzLnNlY29uZCkKLSAgICAgICAgIG1faGFzX2RpZ3JhcGhzID0gdHJ1ZTsKLSAgICAgIG1fZW1wdHkgPSBmYWxzZTsKLSAgIH0KLSAgIHZvaWQgYWRkX3JhbmdlKGNvbnN0IGRpZ3JhcGhfdHlwZSYgZmlyc3QsIGNvbnN0IGRpZ3JhcGhfdHlwZSYgZW5kKQotICAgewotICAgICAgbV9yYW5nZXMuaW5zZXJ0KG1fcmFuZ2VzLmVuZCgpLCBmaXJzdCk7Ci0gICAgICBtX3Jhbmdlcy5pbnNlcnQobV9yYW5nZXMuZW5kKCksIGVuZCk7Ci0gICAgICBpZihmaXJzdC5zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICBtX2hhc19kaWdyYXBocyA9IHRydWU7Ci0gICAgICAgICBhZGRfc2luZ2xlKGZpcnN0KTsKLSAgICAgIH0KLSAgICAgIGlmKGVuZC5zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICBtX2hhc19kaWdyYXBocyA9IHRydWU7Ci0gICAgICAgICBhZGRfc2luZ2xlKGVuZCk7Ci0gICAgICB9Ci0gICAgICBtX2VtcHR5ID0gZmFsc2U7Ci0gICB9Ci0gICB2b2lkIGFkZF9jbGFzcyhtX3R5cGUgbSkKLSAgIHsKLSAgICAgIG1fY2xhc3NlcyB8PSBtOwotICAgICAgbV9lbXB0eSA9IGZhbHNlOwotICAgfQotICAgdm9pZCBhZGRfbmVnYXRlZF9jbGFzcyhtX3R5cGUgbSkKLSAgIHsKLSAgICAgIG1fbmVnYXRlZF9jbGFzc2VzIHw9IG07Ci0gICAgICBtX2VtcHR5ID0gZmFsc2U7Ci0gICB9Ci0gICB2b2lkIGFkZF9lcXVpdmFsZW50KGNvbnN0IGRpZ3JhcGhfdHlwZSYgcykKLSAgIHsKLSAgICAgIG1fZXF1aXZhbGVudHMuaW5zZXJ0KG1fZXF1aXZhbGVudHMuZW5kKCksIHMpOwotICAgICAgaWYocy5zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICBtX2hhc19kaWdyYXBocyA9IHRydWU7Ci0gICAgICAgICBhZGRfc2luZ2xlKHMpOwotICAgICAgfQotICAgICAgbV9lbXB0eSA9IGZhbHNlOwotICAgfQotICAgdm9pZCBuZWdhdGUoKQotICAgeyAKLSAgICAgIG1fbmVnYXRlID0gdHJ1ZTsKLSAgICAgIC8vbV9lbXB0eSA9IGZhbHNlOwotICAgfQotCi0gICAvLwotICAgLy8gYWNjZXNzb3IgZnVuY3Rpb25zOgotICAgLy8KLSAgIGJvb2wgaGFzX2RpZ3JhcGhzKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1faGFzX2RpZ3JhcGhzOwotICAgfQotICAgYm9vbCBpc19uZWdhdGVkKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fbmVnYXRlOwotICAgfQotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnZlY3RvcjxkaWdyYXBoX3R5cGU+Ojpjb25zdF9pdGVyYXRvciAgbGlzdF9pdGVyYXRvcjsKLSAgIGxpc3RfaXRlcmF0b3Igc2luZ2xlc19iZWdpbigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3NpbmdsZXMuYmVnaW4oKTsKLSAgIH0KLSAgIGxpc3RfaXRlcmF0b3Igc2luZ2xlc19lbmQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9zaW5nbGVzLmVuZCgpOwotICAgfQotICAgbGlzdF9pdGVyYXRvciByYW5nZXNfYmVnaW4oKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9yYW5nZXMuYmVnaW4oKTsKLSAgIH0KLSAgIGxpc3RfaXRlcmF0b3IgcmFuZ2VzX2VuZCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Jhbmdlcy5lbmQoKTsKLSAgIH0KLSAgIGxpc3RfaXRlcmF0b3IgZXF1aXZhbGVudHNfYmVnaW4oKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9lcXVpdmFsZW50cy5iZWdpbigpOwotICAgfQotICAgbGlzdF9pdGVyYXRvciBlcXVpdmFsZW50c19lbmQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9lcXVpdmFsZW50cy5lbmQoKTsKLSAgIH0KLSAgIG1fdHlwZSBjbGFzc2VzKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fY2xhc3NlczsKLSAgIH0KLSAgIG1fdHlwZSBuZWdhdGVkX2NsYXNzZXMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9uZWdhdGVkX2NsYXNzZXM7Ci0gICB9Ci0gICBib29sIGVtcHR5KCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fZW1wdHk7Ci0gICB9Ci1wcml2YXRlOgotICAgc3RkOjp2ZWN0b3I8ZGlncmFwaF90eXBlPiBtX3NpbmdsZXM7ICAgICAgICAgLy8gYSBsaXN0IG9mIHNpbmdsZSBjaGFyYWN0ZXJzIHRvIG1hdGNoCi0gICBzdGQ6OnZlY3RvcjxkaWdyYXBoX3R5cGU+IG1fcmFuZ2VzOyAgICAgICAgICAvLyBhIGxpc3Qgb2YgZW5kIHBvaW50cyBvZiBvdXIgcmFuZ2VzCi0gICBib29sICAgICAgICAgICAgICAgICAgICAgIG1fbmVnYXRlOyAgICAgICAgICAvLyB0cnVlIGlmIHRoZSBzZXQgaXMgdG8gYmUgbmVnYXRlZAotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICBtX2hhc19kaWdyYXBoczsgICAgLy8gdHJ1ZSBpZiB3ZSBoYXZlIGRpZ3JhcGhzIHByZXNlbnQKLSAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAgbV9jbGFzc2VzOyAgICAgICAgIC8vIGNoYXJhY3RlciBjbGFzc2VzIHRvIG1hdGNoCi0gICBtX3R5cGUgICAgICAgICAgICAgICAgICAgIG1fbmVnYXRlZF9jbGFzc2VzOyAvLyBuZWdhdGVkIGNoYXJhY3RlciBjbGFzc2VzIHRvIG1hdGNoCi0gICBib29sICAgICAgICAgICAgICAgICAgICAgIG1fZW1wdHk7ICAgICAgICAgICAvLyB3aGV0aGVyIHdlJ3ZlIGFkZGVkIGFueXRoaW5nIHlldAotICAgc3RkOjp2ZWN0b3I8ZGlncmFwaF90eXBlPiBtX2VxdWl2YWxlbnRzOyAgICAgLy8gYSBsaXN0IG9mIGVxdWl2YWxlbmNlIGNsYXNzZXMKLX07Ci0gICAKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotY2xhc3MgYmFzaWNfcmVnZXhfY3JlYXRvcgotewotcHVibGljOgotICAgYmFzaWNfcmVnZXhfY3JlYXRvcihyZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+KiBkYXRhKTsKLSAgIHN0ZDo6cHRyZGlmZl90IGdldG9mZnNldCh2b2lkKiBhZGRyKQotICAgewotICAgICAgcmV0dXJuIGdldG9mZnNldChhZGRyLCBtX3BkYXRhLT5tX2RhdGEuZGF0YSgpKTsKLSAgIH0KLSAgIHN0ZDo6cHRyZGlmZl90IGdldG9mZnNldChjb25zdCB2b2lkKiBhZGRyLCBjb25zdCB2b2lkKiBiYXNlKQotICAgewotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhZGRyKSAtIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihiYXNlKTsKLSAgIH0KLSAgIHJlX3N5bnRheF9iYXNlKiBnZXRhZGRyZXNzKHN0ZDo6cHRyZGlmZl90IG9mZikKLSAgIHsKLSAgICAgIHJldHVybiBnZXRhZGRyZXNzKG9mZiwgbV9wZGF0YS0+bV9kYXRhLmRhdGEoKSk7Ci0gICB9Ci0gICByZV9zeW50YXhfYmFzZSogZ2V0YWRkcmVzcyhzdGQ6OnB0cmRpZmZfdCBvZmYsIHZvaWQqIGJhc2UpCi0gICB7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cmVfc3ludGF4X2Jhc2UqPihzdGF0aWNfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KGJhc2UpICsgb2ZmKSk7Ci0gICB9Ci0gICB2b2lkIGluaXQodW5zaWduZWQgbF9mbGFncykKLSAgIHsKLSAgICAgIG1fcGRhdGEtPm1fZmxhZ3MgPSBsX2ZsYWdzOwotICAgICAgbV9pY2FzZSA9IGxfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmljYXNlOwotICAgfQotICAgcmVnYmFzZTo6ZmxhZ190eXBlIGZsYWdzKCkKLSAgIHsKLSAgICAgIHJldHVybiBtX3BkYXRhLT5tX2ZsYWdzOwotICAgfQotICAgdm9pZCBmbGFncyhyZWdiYXNlOjpmbGFnX3R5cGUgZikKLSAgIHsKLSAgICAgIG1fcGRhdGEtPm1fZmxhZ3MgPSBmOwotICAgICAgaWYobV9pY2FzZSAhPSBzdGF0aWNfY2FzdDxib29sPihmICYgcmVnYmFzZTo6aWNhc2UpKQotICAgICAgewotICAgICAgICAgbV9pY2FzZSA9IHN0YXRpY19jYXN0PGJvb2w+KGYgJiByZWdiYXNlOjppY2FzZSk7Ci0gICAgICB9Ci0gICB9Ci0gICByZV9zeW50YXhfYmFzZSogYXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3R5cGUgdCwgc3RkOjpzaXplX3QgcyA9IHNpemVvZihyZV9zeW50YXhfYmFzZSkpOwotICAgcmVfc3ludGF4X2Jhc2UqIGluc2VydF9zdGF0ZShzdGQ6OnB0cmRpZmZfdCBwb3MsIHN5bnRheF9lbGVtZW50X3R5cGUgdCwgc3RkOjpzaXplX3QgcyA9IHNpemVvZihyZV9zeW50YXhfYmFzZSkpOwotICAgcmVfbGl0ZXJhbCogYXBwZW5kX2xpdGVyYWwoY2hhclQgYyk7Ci0gICByZV9zeW50YXhfYmFzZSogYXBwZW5kX3NldChjb25zdCBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQpOwotICAgcmVfc3ludGF4X2Jhc2UqIGFwcGVuZF9zZXQoY29uc3QgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0LCBtcGw6OmZhbHNlXyopOwotICAgcmVfc3ludGF4X2Jhc2UqIGFwcGVuZF9zZXQoY29uc3QgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0LCBtcGw6OnRydWVfKik7Ci0gICB2b2lkIGZpbmFsaXplKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKTsKLXByb3RlY3RlZDoKLSAgIHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4qICAgIG1fcGRhdGE7ICAgICAgICAgICAgICAvLyBwb2ludGVyIHRvIHRoZSBiYXNpY19yZWdleF9kYXRhIHN0cnVjdCB3ZSBhcmUgZmlsbGluZyBpbgotICAgY29uc3QgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzPiYgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90cmFpdHM7ICAgICAgICAgICAgIC8vIGNvbnZlbmllbmNlIHJlZmVyZW5jZSB0byB0cmFpdHMgY2xhc3MKLSAgIHJlX3N5bnRheF9iYXNlKiAgICAgICAgICAgICAgIG1fbGFzdF9zdGF0ZTsgICAgICAgICAvLyB0aGUgbGFzdCBzdGF0ZSB3ZSBhZGRlZAotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pY2FzZTsgICAgICAgICAgICAgIC8vIHRydWUgZm9yIGNhc2UgaW5zZW5zaXRpdmUgbWF0Y2hlcwotICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgbV9yZXBlYXRlcl9pZDsgICAgICAgIC8vIHRoZSBzdGF0ZV9pZCBvZiB0aGUgbmV4dCByZXBlYXRlcgotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oYXNfYmFja3JlZnM7ICAgICAgIC8vIHRydWUgaWYgdGhlcmUgYXJlIGFjdHVhbGx5IGFueSBiYWNrcmVmcwotICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrcmVmczsgICAgICAgICAgIC8vIGJpdG1hc2sgb2YgcGVybWl0dGVkIGJhY2tyZWZzCi0gICBuZG5ib29zdDo6dWludG1heF90ICAgICAgICAgICAgICBtX2JhZF9yZXBlYXRzOyAgICAgICAgLy8gYml0bWFzayBvZiByZXBlYXRzIHdlIGNhbid0IGRlZHVjZSBhIHN0YXJ0bWFwIGZvcjsKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzX3JlY3Vyc2lvbnM7ICAgICAvLyBzZXQgd2hlbiB3ZSBoYXZlIHJlY3Vyc2l2ZSBleHByZXNpc29ucyB0byBmaXh1cAotICAgc3RkOjp2ZWN0b3I8Ym9vbD4gICAgICAgICAgICAgbV9yZWN1cnNpb25fY2hlY2tzOyAgIC8vIG5vdGVzIHdoaWNoIHJlY3Vyc2lvbnMgd2UndmUgZm9sbG93ZWQgd2hpbGUgYW5hbHlzaW5nIHRoaXMgZXhwcmVzc2lvbgotICAgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV93b3JkX21hc2s7ICAgICAgIC8vIG1hc2sgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBjaGFyYWN0ZXIgaXMgYSB3b3JkIGNoYXJhY3RlcgotICAgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV9tYXNrX3NwYWNlOyAgICAgIC8vIG1hc2sgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBjaGFyYWN0ZXIgaXMgYSB3b3JkIGNoYXJhY3RlcgotICAgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV9sb3dlcl9tYXNrOyAgICAgICAvLyBtYXNrIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgY2hhcmFjdGVyIGlzIGEgbG93ZXJjYXNlIGNoYXJhY3RlcgotICAgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV91cHBlcl9tYXNrOyAgICAgIC8vIG1hc2sgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBjaGFyYWN0ZXIgaXMgYW4gdXBwZXJjYXNlIGNoYXJhY3RlcgotICAgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV9hbHBoYV9tYXNrOyAgICAgIC8vIG1hc2sgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBjaGFyYWN0ZXIgaXMgYW4gYWxwaGFiZXRpYyBjaGFyYWN0ZXIKLXByaXZhdGU6Ci0gICBiYXNpY19yZWdleF9jcmVhdG9yJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfcmVnZXhfY3JlYXRvciYpOwotICAgYmFzaWNfcmVnZXhfY3JlYXRvcihjb25zdCBiYXNpY19yZWdleF9jcmVhdG9yJik7Ci0KLSAgIHZvaWQgZml4dXBfcG9pbnRlcnMocmVfc3ludGF4X2Jhc2UqIHN0YXRlKTsKLSAgIHZvaWQgZml4dXBfcmVjdXJzaW9ucyhyZV9zeW50YXhfYmFzZSogc3RhdGUpOwotICAgdm9pZCBjcmVhdGVfc3RhcnRtYXBzKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci0gICBpbnQgY2FsY3VsYXRlX2JhY2tzdGVwKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci0gICB2b2lkIGNyZWF0ZV9zdGFydG1hcChyZV9zeW50YXhfYmFzZSogc3RhdGUsIHVuc2lnbmVkIGNoYXIqIGxfbWFwLCB1bnNpZ25lZCBpbnQqIHBudWxsLCB1bnNpZ25lZCBjaGFyIG1hc2spOwotICAgdW5zaWduZWQgZ2V0X3Jlc3RhcnRfdHlwZShyZV9zeW50YXhfYmFzZSogc3RhdGUpOwotICAgdm9pZCBzZXRfYWxsX21hc2tzKHVuc2lnbmVkIGNoYXIqIGJpdHMsIHVuc2lnbmVkIGNoYXIpOwotICAgYm9vbCBpc19iYWRfcmVwZWF0KHJlX3N5bnRheF9iYXNlKiBwdCk7Ci0gICB2b2lkIHNldF9iYWRfcmVwZWF0KHJlX3N5bnRheF9iYXNlKiBwdCk7Ci0gICBzeW50YXhfZWxlbWVudF90eXBlIGdldF9yZXBlYXRfdHlwZShyZV9zeW50YXhfYmFzZSogc3RhdGUpOwotICAgdm9pZCBwcm9iZV9sZWFkaW5nX3JlcGVhdChyZV9zeW50YXhfYmFzZSogc3RhdGUpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1iYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpiYXNpY19yZWdleF9jcmVhdG9yKHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4qIGRhdGEpCi0gICA6IG1fcGRhdGEoZGF0YSksIG1fdHJhaXRzKCooZGF0YS0+bV9wdHJhaXRzKSksIG1fbGFzdF9zdGF0ZSgwKSwgbV9yZXBlYXRlcl9pZCgwKSwgbV9oYXNfYmFja3JlZnMoZmFsc2UpLCBtX2JhY2tyZWZzKDApLCBtX2hhc19yZWN1cnNpb25zKGZhbHNlKQotewotICAgbV9wZGF0YS0+bV9kYXRhLmNsZWFyKCk7Ci0gICBtX3BkYXRhLT5tX3N0YXR1cyA9IDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3Jfb2s7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgdyA9ICd3JzsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBzID0gJ3MnOwotICAgc3RhdGljIGNvbnN0IGNoYXJUIGxbNV0gPSB7ICdsJywgJ28nLCAndycsICdlJywgJ3InLCB9OwotICAgc3RhdGljIGNvbnN0IGNoYXJUIHVbNV0gPSB7ICd1JywgJ3AnLCAncCcsICdlJywgJ3InLCB9OwotICAgc3RhdGljIGNvbnN0IGNoYXJUIGFbNV0gPSB7ICdhJywgJ2wnLCAncCcsICdoJywgJ2EnLCB9OwotICAgbV93b3JkX21hc2sgPSBtX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKCZ3LCAmdyArMSk7Ci0gICBtX21hc2tfc3BhY2UgPSBtX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKCZzLCAmcyArMSk7Ci0gICBtX2xvd2VyX21hc2sgPSBtX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKGwsIGwgKyA1KTsKLSAgIG1fdXBwZXJfbWFzayA9IG1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUodSwgdSArIDUpOwotICAgbV9hbHBoYV9tYXNrID0gbV90cmFpdHMubG9va3VwX2NsYXNzbmFtZShhLCBhICsgNSk7Ci0gICBtX3BkYXRhLT5tX3dvcmRfbWFzayA9IG1fd29yZF9tYXNrOwotICAgTkROQk9PU1RfQVNTRVJUKG1fd29yZF9tYXNrICE9IDApOyAKLSAgIE5ETkJPT1NUX0FTU0VSVChtX21hc2tfc3BhY2UgIT0gMCk7IAotICAgTkROQk9PU1RfQVNTRVJUKG1fbG93ZXJfbWFzayAhPSAwKTsgCi0gICBORE5CT09TVF9BU1NFUlQobV91cHBlcl9tYXNrICE9IDApOyAKLSAgIE5ETkJPT1NUX0FTU0VSVChtX2FscGhhX21hc2sgIT0gMCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXJlX3N5bnRheF9iYXNlKiBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjphcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdHlwZSB0LCBzdGQ6OnNpemVfdCBzKQotewotICAgLy8gaWYgdGhlIHN0YXRlIGlzIGEgYmFja3JlZiB0aGVuIG1ha2UgYSBub3RlIG9mIGl0OgotICAgaWYodCA9PSBzeW50YXhfZWxlbWVudF9iYWNrcmVmKQotICAgICAgdGhpcy0+bV9oYXNfYmFja3JlZnMgPSB0cnVlOwotICAgLy8gYXBwZW5kIGEgbmV3IHN0YXRlLCBzdGFydCBieSBhbGlnbmluZyBvdXIgbGFzdCBvbmU6Ci0gICBtX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgIC8vIHNldCB0aGUgb2Zmc2V0IHRvIHRoZSBuZXh0IHN0YXRlIGluIG91ciBsYXN0IG9uZToKLSAgIGlmKG1fbGFzdF9zdGF0ZSkKLSAgICAgIG1fbGFzdF9zdGF0ZS0+bmV4dC5pID0gbV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIGdldG9mZnNldChtX2xhc3Rfc3RhdGUpOwotICAgLy8gbm93IGFjdHVhbGx5IGV4dGVudCBvdXIgZGF0YToKLSAgIG1fbGFzdF9zdGF0ZSA9IHN0YXRpY19jYXN0PHJlX3N5bnRheF9iYXNlKj4obV9wZGF0YS0+bV9kYXRhLmV4dGVuZChzKSk7Ci0gICAvLyBmaWxsIGluIGJvaWxlcnBsYXRlIG9wdGlvbnMgaW4gdGhlIG5ldyBzdGF0ZToKLSAgIG1fbGFzdF9zdGF0ZS0+bmV4dC5pID0gMDsKLSAgIG1fbGFzdF9zdGF0ZS0+dHlwZSA9IHQ7Ci0gICByZXR1cm4gbV9sYXN0X3N0YXRlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXJlX3N5bnRheF9iYXNlKiBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjppbnNlcnRfc3RhdGUoc3RkOjpwdHJkaWZmX3QgcG9zLCBzeW50YXhfZWxlbWVudF90eXBlIHQsIHN0ZDo6c2l6ZV90IHMpCi17Ci0gICAvLyBhcHBlbmQgYSBuZXcgc3RhdGUsIHN0YXJ0IGJ5IGFsaWduaW5nIG91ciBsYXN0IG9uZToKLSAgIG1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgLy8gc2V0IHRoZSBvZmZzZXQgdG8gdGhlIG5leHQgc3RhdGUgaW4gb3VyIGxhc3Qgb25lOgotICAgaWYobV9sYXN0X3N0YXRlKQotICAgICAgbV9sYXN0X3N0YXRlLT5uZXh0LmkgPSBtX3BkYXRhLT5tX2RhdGEuc2l6ZSgpIC0gZ2V0b2Zmc2V0KG1fbGFzdF9zdGF0ZSk7Ci0gICAvLyByZW1lbWJlciB0aGUgbGFzdCBzdGF0ZSBwb3NpdGlvbjoKLSAgIHN0ZDo6cHRyZGlmZl90IG9mZiA9IGdldG9mZnNldChtX2xhc3Rfc3RhdGUpICsgczsKLSAgIC8vIG5vdyBhY3R1YWxseSBpbnNlcnQgb3VyIGRhdGE6Ci0gICByZV9zeW50YXhfYmFzZSogbmV3X3N0YXRlID0gc3RhdGljX2Nhc3Q8cmVfc3ludGF4X2Jhc2UqPihtX3BkYXRhLT5tX2RhdGEuaW5zZXJ0KHBvcywgcykpOwotICAgLy8gZmlsbCBpbiBib2lsZXJwbGF0ZSBvcHRpb25zIGluIHRoZSBuZXcgc3RhdGU6Ci0gICBuZXdfc3RhdGUtPm5leHQuaSA9IHM7Ci0gICBuZXdfc3RhdGUtPnR5cGUgPSB0OwotICAgbV9sYXN0X3N0YXRlID0gZ2V0YWRkcmVzcyhvZmYpOwotICAgcmV0dXJuIG5ld19zdGF0ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1yZV9saXRlcmFsKiBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjphcHBlbmRfbGl0ZXJhbChjaGFyVCBjKQotewotICAgcmVfbGl0ZXJhbCogcmVzdWx0OwotICAgLy8gc3RhcnQgYnkgc2VlaW5nIGlmIHdlIGhhdmUgYW4gZXhpc3RpbmcgcmVfbGl0ZXJhbCB3ZSBjYW4gZXh0ZW5kOgotICAgaWYoKDAgPT0gbV9sYXN0X3N0YXRlKSB8fCAobV9sYXN0X3N0YXRlLT50eXBlICE9IHN5bnRheF9lbGVtZW50X2xpdGVyYWwpKQotICAgewotICAgICAgLy8gbm8gZXhpc3RpbmcgcmVfbGl0ZXJhbCwgY3JlYXRlIGEgbmV3IG9uZToKLSAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PHJlX2xpdGVyYWwqPihhcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCwgc2l6ZW9mKHJlX2xpdGVyYWwpICsgc2l6ZW9mKGNoYXJUKSkpOwotICAgICAgcmVzdWx0LT5sZW5ndGggPSAxOwotICAgICAgKnN0YXRpY19jYXN0PGNoYXJUKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KHJlc3VsdCsxKSkgPSBtX3RyYWl0cy50cmFuc2xhdGUoYywgbV9pY2FzZSk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyB3ZSBoYXZlIGFuIGV4aXN0aW5nIHJlX2xpdGVyYWwsIGV4dGVuZCBpdDoKLSAgICAgIHN0ZDo6cHRyZGlmZl90IG9mZiA9IGdldG9mZnNldChtX2xhc3Rfc3RhdGUpOwotICAgICAgbV9wZGF0YS0+bV9kYXRhLmV4dGVuZChzaXplb2YoY2hhclQpKTsKLSAgICAgIG1fbGFzdF9zdGF0ZSA9IHJlc3VsdCA9IHN0YXRpY19jYXN0PHJlX2xpdGVyYWwqPihnZXRhZGRyZXNzKG9mZikpOwotICAgICAgY2hhclQqIGNoYXJhY3RlcnMgPSBzdGF0aWNfY2FzdDxjaGFyVCo+KHN0YXRpY19jYXN0PHZvaWQqPihyZXN1bHQrMSkpOwotICAgICAgY2hhcmFjdGVyc1tyZXN1bHQtPmxlbmd0aF0gPSBtX3RyYWl0cy50cmFuc2xhdGUoYywgbV9pY2FzZSk7Ci0gICAgICArKyhyZXN1bHQtPmxlbmd0aCk7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSByZV9zeW50YXhfYmFzZSogYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6YXBwZW5kX3NldCgKLSAgIGNvbnN0IGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCkKLXsKLSAgIHR5cGVkZWYgbXBsOjpib29sXzwgKHNpemVvZihjaGFyVCkgPT0gMSkgPiB0cnV0aF90eXBlOwotICAgcmV0dXJuIGNoYXJfc2V0Lmhhc19kaWdyYXBocygpIAotICAgICAgPyBhcHBlbmRfc2V0KGNoYXJfc2V0LCBzdGF0aWNfY2FzdDxtcGw6OmZhbHNlXyo+KDApKQotICAgICAgOiBhcHBlbmRfc2V0KGNoYXJfc2V0LCBzdGF0aWNfY2FzdDx0cnV0aF90eXBlKj4oMCkpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXJlX3N5bnRheF9iYXNlKiBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjphcHBlbmRfc2V0KAotICAgY29uc3QgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0LCBtcGw6OmZhbHNlXyopCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6c3RyaW5nX3R5cGUgc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+OjpsaXN0X2l0ZXJhdG9yIGl0ZW1faXRlcmF0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgIAotICAgcmVfc2V0X2xvbmc8bV90eXBlPiogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8cmVfc2V0X2xvbmc8bV90eXBlPio+KGFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9sb25nX3NldCwgc2l6ZW9mKHJlX3NldF9sb25nPG1fdHlwZT4pKSk7Ci0gICAvLwotICAgLy8gZmlsbCBpbiB0aGUgYmFzaWNzOgotICAgLy8KLSAgIHJlc3VsdC0+Y3NpbmdsZXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoY2hhcl9zZXQuc2luZ2xlc19iZWdpbigpLCBjaGFyX3NldC5zaW5nbGVzX2VuZCgpKSk7Ci0gICByZXN1bHQtPmNyYW5nZXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoY2hhcl9zZXQucmFuZ2VzX2JlZ2luKCksIGNoYXJfc2V0LnJhbmdlc19lbmQoKSkpIC8gMjsKLSAgIHJlc3VsdC0+Y2VxdWl2YWxlbnRzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKGNoYXJfc2V0LmVxdWl2YWxlbnRzX2JlZ2luKCksIGNoYXJfc2V0LmVxdWl2YWxlbnRzX2VuZCgpKSk7Ci0gICByZXN1bHQtPmNjbGFzc2VzID0gY2hhcl9zZXQuY2xhc3NlcygpOwotICAgcmVzdWx0LT5jbmNsYXNzZXMgPSBjaGFyX3NldC5uZWdhdGVkX2NsYXNzZXMoKTsKLSAgIGlmKGZsYWdzKCkgJiByZWdiYXNlOjppY2FzZSkKLSAgIHsKLSAgICAgIC8vIGFkanVzdCBjbGFzc2VzIGFzIG5lZWRlZDoKLSAgICAgIGlmKCgocmVzdWx0LT5jY2xhc3NlcyAmIG1fbG93ZXJfbWFzaykgPT0gbV9sb3dlcl9tYXNrKSB8fCAoKHJlc3VsdC0+Y2NsYXNzZXMgJiBtX3VwcGVyX21hc2spID09IG1fdXBwZXJfbWFzaykpCi0gICAgICAgICByZXN1bHQtPmNjbGFzc2VzIHw9IG1fYWxwaGFfbWFzazsKLSAgICAgIGlmKCgocmVzdWx0LT5jbmNsYXNzZXMgJiBtX2xvd2VyX21hc2spID09IG1fbG93ZXJfbWFzaykgfHwgKChyZXN1bHQtPmNuY2xhc3NlcyAmIG1fdXBwZXJfbWFzaykgPT0gbV91cHBlcl9tYXNrKSkKLSAgICAgICAgIHJlc3VsdC0+Y25jbGFzc2VzIHw9IG1fYWxwaGFfbWFzazsKLSAgIH0KLQotICAgcmVzdWx0LT5pc25vdCA9IGNoYXJfc2V0LmlzX25lZ2F0ZWQoKTsKLSAgIHJlc3VsdC0+c2luZ2xldG9uID0gIWNoYXJfc2V0Lmhhc19kaWdyYXBocygpOwotICAgLy8KLSAgIC8vIHJlbWVtYmVyIHdoZXJlIHRoZSBzdGF0ZSBpcyBmb3IgbGF0ZXI6Ci0gICAvLwotICAgc3RkOjpwdHJkaWZmX3Qgb2Zmc2V0ID0gZ2V0b2Zmc2V0KHJlc3VsdCk7Ci0gICAvLwotICAgLy8gbm93IGV4dGVuZCB3aXRoIGFsbCB0aGUgc2luZ2xlczoKLSAgIC8vCi0gICBpdGVtX2l0ZXJhdG9yIGZpcnN0LCBsYXN0OwotICAgZmlyc3QgPSBjaGFyX3NldC5zaW5nbGVzX2JlZ2luKCk7Ci0gICBsYXN0ID0gY2hhcl9zZXQuc2luZ2xlc19lbmQoKTsKLSAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICB7Ci0gICAgICBjaGFyVCogcCA9IHN0YXRpY19jYXN0PGNoYXJUKj4odGhpcy0+bV9wZGF0YS0+bV9kYXRhLmV4dGVuZChzaXplb2YoY2hhclQpICogKGZpcnN0LT5zZWNvbmQgPyAzIDogMikpKTsKLSAgICAgIHBbMF0gPSBtX3RyYWl0cy50cmFuc2xhdGUoZmlyc3QtPmZpcnN0LCBtX2ljYXNlKTsKLSAgICAgIGlmKGZpcnN0LT5zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICBwWzFdID0gbV90cmFpdHMudHJhbnNsYXRlKGZpcnN0LT5zZWNvbmQsIG1faWNhc2UpOwotICAgICAgICAgcFsyXSA9IDA7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICBwWzFdID0gMDsKLSAgICAgICsrZmlyc3Q7Ci0gICB9Ci0gICAvLwotICAgLy8gbm93IGV4dGVuZCB3aXRoIGFsbCB0aGUgcmFuZ2VzOgotICAgLy8KLSAgIGZpcnN0ID0gY2hhcl9zZXQucmFuZ2VzX2JlZ2luKCk7Ci0gICBsYXN0ID0gY2hhcl9zZXQucmFuZ2VzX2VuZCgpOwotICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIGZpcnN0IGdyYWIgdGhlIGVuZHBvaW50cyBvZiB0aGUgcmFuZ2U6Ci0gICAgICBkaWdyYXBoPGNoYXJUPiBjMSA9ICpmaXJzdDsKLSAgICAgIGMxLmZpcnN0ID0gdGhpcy0+bV90cmFpdHMudHJhbnNsYXRlKGMxLmZpcnN0LCB0aGlzLT5tX2ljYXNlKTsKLSAgICAgIGMxLnNlY29uZCA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zbGF0ZShjMS5zZWNvbmQsIHRoaXMtPm1faWNhc2UpOwotICAgICAgKytmaXJzdDsKLSAgICAgIGRpZ3JhcGg8Y2hhclQ+IGMyID0gKmZpcnN0OwotICAgICAgYzIuZmlyc3QgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoYzIuZmlyc3QsIHRoaXMtPm1faWNhc2UpOwotICAgICAgYzIuc2Vjb25kID0gdGhpcy0+bV90cmFpdHMudHJhbnNsYXRlKGMyLnNlY29uZCwgdGhpcy0+bV9pY2FzZSk7Ci0gICAgICArK2ZpcnN0OwotICAgICAgc3RyaW5nX3R5cGUgczEsIHMyOwotICAgICAgLy8gZGlmZmVyZW50IGFjdGlvbnMgbm93IGRlcGVuZGluZyB1cG9uIHdoZXRoZXIgY29sbGF0aW9uIGlzIHR1cm5lZCBvbjoKLSAgICAgIGlmKGZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6OmNvbGxhdGUpCi0gICAgICB7Ci0gICAgICAgICAvLyB3ZSBuZWVkIHRvIHRyYW5zZm9ybSBvdXIgcmFuZ2UgaW50byBzb3J0IGtleXM6Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKQotICAgICAgICAgc3RyaW5nX3R5cGUgaW4oMywgY2hhclQoMCkpOwotICAgICAgICAgaW5bMF0gPSBjMS5maXJzdDsKLSAgICAgICAgIGluWzFdID0gYzEuc2Vjb25kOwotICAgICAgICAgczEgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2Zvcm0oaW4uY19zdHIoKSwgKGluWzFdID8gaW4uY19zdHIoKSsyIDogaW4uY19zdHIoKSsxKSk7Ci0gICAgICAgICBpblswXSA9IGMyLmZpcnN0OwotICAgICAgICAgaW5bMV0gPSBjMi5zZWNvbmQ7Ci0gICAgICAgICBzMiA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybShpbi5jX3N0cigpLCAoaW5bMV0gPyBpbi5jX3N0cigpKzIgOiBpbi5jX3N0cigpKzEpKTsKLSNlbHNlCi0gICAgICAgICBjaGFyVCBhMVszXSA9IHsgYzEuZmlyc3QsIGMxLnNlY29uZCwgY2hhclQoMCksIH07Ci0gICAgICAgICBjaGFyVCBhMlszXSA9IHsgYzIuZmlyc3QsIGMyLnNlY29uZCwgY2hhclQoMCksIH07Ci0gICAgICAgICBzMSA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybShhMSwgKGExWzFdID8gYTErMiA6IGExKzEpKTsKLSAgICAgICAgIHMyID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtKGEyLCAoYTJbMV0gPyBhMisyIDogYTIrMSkpOwotI2VuZGlmCi0gICAgICAgICBpZihzMS5zaXplKCkgPT0gMCkKLSAgICAgICAgICAgIHMxID0gc3RyaW5nX3R5cGUoMSwgY2hhclQoMCkpOwotICAgICAgICAgaWYoczIuc2l6ZSgpID09IDApCi0gICAgICAgICAgICBzMiA9IHN0cmluZ190eXBlKDEsIGNoYXJUKDApKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIGlmKGMxLnNlY29uZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHMxLmluc2VydChzMS5lbmQoKSwgYzEuZmlyc3QpOwotICAgICAgICAgICAgczEuaW5zZXJ0KHMxLmVuZCgpLCBjMS5zZWNvbmQpOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgczEgPSBzdHJpbmdfdHlwZSgxLCBjMS5maXJzdCk7Ci0gICAgICAgICBpZihjMi5zZWNvbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBzMi5pbnNlcnQoczIuZW5kKCksIGMyLmZpcnN0KTsKLSAgICAgICAgICAgIHMyLmluc2VydChzMi5lbmQoKSwgYzIuc2Vjb25kKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHMyLmluc2VydChzMi5lbmQoKSwgYzIuZmlyc3QpOwotICAgICAgfQotICAgICAgaWYoczEgPiBzMikKLSAgICAgIHsKLSAgICAgICAgIC8vIE9vcHMgZXJyb3I6Ci0gICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLSAgICAgIGNoYXJUKiBwID0gc3RhdGljX2Nhc3Q8Y2hhclQqPih0aGlzLT5tX3BkYXRhLT5tX2RhdGEuZXh0ZW5kKHNpemVvZihjaGFyVCkgKiAoczEuc2l6ZSgpICsgczIuc2l6ZSgpICsgMikgKSApOwotICAgICAgcmVfZGV0YWlsOjpjb3B5KHMxLmJlZ2luKCksIHMxLmVuZCgpLCBwKTsKLSAgICAgIHBbczEuc2l6ZSgpXSA9IGNoYXJUKDApOwotICAgICAgcCArPSBzMS5zaXplKCkgKyAxOwotICAgICAgcmVfZGV0YWlsOjpjb3B5KHMyLmJlZ2luKCksIHMyLmVuZCgpLCBwKTsKLSAgICAgIHBbczIuc2l6ZSgpXSA9IGNoYXJUKDApOwotICAgfQotICAgLy8KLSAgIC8vIG5vdyBwcm9jZXNzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzOgotICAgLy8KLSAgIGZpcnN0ID0gY2hhcl9zZXQuZXF1aXZhbGVudHNfYmVnaW4oKTsKLSAgIGxhc3QgPSBjaGFyX3NldC5lcXVpdmFsZW50c19lbmQoKTsKLSAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICB7Ci0gICAgICBzdHJpbmdfdHlwZSBzOwotICAgICAgaWYoZmlyc3QtPnNlY29uZCkKLSAgICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpCi0gICAgICAgICBzdHJpbmdfdHlwZSBpbigzLCBjaGFyVCgwKSk7Ci0gICAgICAgICBpblswXSA9IGZpcnN0LT5maXJzdDsKLSAgICAgICAgIGluWzFdID0gZmlyc3QtPnNlY29uZDsKLSAgICAgICAgIHMgPSBtX3RyYWl0cy50cmFuc2Zvcm1fcHJpbWFyeShpbi5jX3N0cigpLCBpbi5jX3N0cigpKzIpOwotI2Vsc2UKLSAgICAgICAgIGNoYXJUIGNzWzNdID0geyBmaXJzdC0+Zmlyc3QsIGZpcnN0LT5zZWNvbmQsIGNoYXJUKDApLCB9OwotICAgICAgICAgcyA9IG1fdHJhaXRzLnRyYW5zZm9ybV9wcmltYXJ5KGNzLCBjcysyKTsKLSNlbmRpZgotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcyA9IG1fdHJhaXRzLnRyYW5zZm9ybV9wcmltYXJ5KCZmaXJzdC0+Zmlyc3QsICZmaXJzdC0+Zmlyc3QrMSk7Ci0gICAgICBpZihzLmVtcHR5KCkpCi0gICAgICAgICByZXR1cm4gMDsgIC8vIGludmFsaWQgb3IgdW5zdXBwb3J0ZWQgZXF1aXZhbGVuY2UgY2xhc3MKLSAgICAgIGNoYXJUKiBwID0gc3RhdGljX2Nhc3Q8Y2hhclQqPih0aGlzLT5tX3BkYXRhLT5tX2RhdGEuZXh0ZW5kKHNpemVvZihjaGFyVCkgKiAocy5zaXplKCkrMSkgKSApOwotICAgICAgcmVfZGV0YWlsOjpjb3B5KHMuYmVnaW4oKSwgcy5lbmQoKSwgcCk7Ci0gICAgICBwW3Muc2l6ZSgpXSA9IGNoYXJUKDApOwotICAgICAgKytmaXJzdDsKLSAgIH0KLSAgIC8vCi0gICAvLyBmaW5hbGx5IHJlc2V0IHRoZSBhZGRyZXNzIG9mIG91ciBsYXN0IHN0YXRlOgotICAgLy8KLSAgIG1fbGFzdF9zdGF0ZSA9IHJlc3VsdCA9IHN0YXRpY19jYXN0PHJlX3NldF9sb25nPG1fdHlwZT4qPihnZXRhZGRyZXNzKG9mZnNldCkpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBib29sIGNoYXJfbGVzcyhUIHQxLCBUIHQyKQotewotICAgcmV0dXJuIHQxIDwgdDI7Ci19Ci1pbmxpbmUgYm9vbCBjaGFyX2xlc3MoY2hhciB0MSwgY2hhciB0MikKLXsKLSAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0MSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0Mik7Ci19Ci1pbmxpbmUgYm9vbCBjaGFyX2xlc3Moc2lnbmVkIGNoYXIgdDEsIHNpZ25lZCBjaGFyIHQyKQotewotICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHQxKSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHQyKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1yZV9zeW50YXhfYmFzZSogYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6YXBwZW5kX3NldCgKLSAgIGNvbnN0IGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCwgbXBsOjp0cnVlXyopCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6c3RyaW5nX3R5cGUgc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+OjpsaXN0X2l0ZXJhdG9yIGl0ZW1faXRlcmF0b3I7Ci0gICAKLSAgIHJlX3NldCogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8cmVfc2V0Kj4oYXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3NldCwgc2l6ZW9mKHJlX3NldCkpKTsKLSAgIGJvb2wgbmVnYXRlID0gY2hhcl9zZXQuaXNfbmVnYXRlZCgpOwotICAgc3RkOjptZW1zZXQocmVzdWx0LT5fbWFwLCAwLCBzaXplb2YocmVzdWx0LT5fbWFwKSk7Ci0gICAvLwotICAgLy8gaGFuZGxlIHNpbmdsZXMgZmlyc3Q6Ci0gICAvLwotICAgaXRlbV9pdGVyYXRvciBmaXJzdCwgbGFzdDsKLSAgIGZpcnN0ID0gY2hhcl9zZXQuc2luZ2xlc19iZWdpbigpOwotICAgbGFzdCA9IGNoYXJfc2V0LnNpbmdsZXNfZW5kKCk7Ci0gICB3aGlsZShmaXJzdCAhPSBsYXN0KQotICAgewotICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICgxIDw8IENIQVJfQklUKTsgKytpKQotICAgICAgewotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMudHJhbnNsYXRlKHN0YXRpY19jYXN0PGNoYXJUPihpKSwgdGhpcy0+bV9pY2FzZSkKLSAgICAgICAgICAgID09IHRoaXMtPm1fdHJhaXRzLnRyYW5zbGF0ZShmaXJzdC0+Zmlyc3QsIHRoaXMtPm1faWNhc2UpKQotICAgICAgICAgICAgcmVzdWx0LT5fbWFwW2ldID0gdHJ1ZTsKLSAgICAgIH0KLSAgICAgICsrZmlyc3Q7Ci0gICB9Ci0gICAvLwotICAgLy8gT0sgbm93IGhhbmRsZSByYW5nZXM6Ci0gICAvLwotICAgZmlyc3QgPSBjaGFyX3NldC5yYW5nZXNfYmVnaW4oKTsKLSAgIGxhc3QgPSBjaGFyX3NldC5yYW5nZXNfZW5kKCk7Ci0gICB3aGlsZShmaXJzdCAhPSBsYXN0KQotICAgewotICAgICAgLy8gZmlyc3QgZ3JhYiB0aGUgZW5kcG9pbnRzIG9mIHRoZSByYW5nZToKLSAgICAgIGNoYXJUIGMxID0gdGhpcy0+bV90cmFpdHMudHJhbnNsYXRlKGZpcnN0LT5maXJzdCwgdGhpcy0+bV9pY2FzZSk7Ci0gICAgICArK2ZpcnN0OwotICAgICAgY2hhclQgYzIgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoZmlyc3QtPmZpcnN0LCB0aGlzLT5tX2ljYXNlKTsKLSAgICAgICsrZmlyc3Q7Ci0gICAgICAvLyBkaWZmZXJlbnQgYWN0aW9ucyBub3cgZGVwZW5kaW5nIHVwb24gd2hldGhlciBjb2xsYXRpb24gaXMgdHVybmVkIG9uOgotICAgICAgaWYoZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6Y29sbGF0ZSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHdlIG5lZWQgdG8gdHJhbnNmb3JtIG91ciByYW5nZSBpbnRvIHNvcnQga2V5czoKLSAgICAgICAgIGNoYXJUIGMzWzJdID0geyBjMSwgY2hhclQoMCksIH07Ci0gICAgICAgICBzdHJpbmdfdHlwZSBzMSA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybShjMywgYzMrMSk7Ci0gICAgICAgICBjM1swXSA9IGMyOwotICAgICAgICAgc3RyaW5nX3R5cGUgczIgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2Zvcm0oYzMsIGMzKzEpOwotICAgICAgICAgaWYoczEgPiBzMikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIE9vcHMgZXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgIH0KLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChjM1sxXSA9PSBjaGFyVCgwKSk7Ci0gICAgICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBjM1swXSA9IHN0YXRpY19jYXN0PGNoYXJUPihpKTsKLSAgICAgICAgICAgIHN0cmluZ190eXBlIHMzID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtKGMzLCBjMyArMSk7Ci0gICAgICAgICAgICBpZigoczEgPD0gczMpICYmIChzMyA8PSBzMikpCi0gICAgICAgICAgICAgICByZXN1bHQtPl9tYXBbaV0gPSB0cnVlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgaWYoY2hhcl9sZXNzKGMyLCBjMSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBPb3BzIGVycm9yOgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBldmVyeXRoaW5nIGluIHJhbmdlIG1hdGNoZXM6Ci0gICAgICAgICBzdGQ6Om1lbXNldChyZXN1bHQtPl9tYXAgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjMSksIHRydWUsIDEgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjMikgLSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjMSkpOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGFuZCBub3cgdGhlIGNsYXNzZXM6Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICBtX3R5cGUgbSA9IGNoYXJfc2V0LmNsYXNzZXMoKTsKLSAgIGlmKGZsYWdzKCkgJiByZWdiYXNlOjppY2FzZSkKLSAgIHsKLSAgICAgIC8vIGFkanVzdCBtIGFzIG5lZWRlZDoKLSAgICAgIGlmKCgobSAmIG1fbG93ZXJfbWFzaykgPT0gbV9sb3dlcl9tYXNrKSB8fCAoKG0gJiBtX3VwcGVyX21hc2spID09IG1fdXBwZXJfbWFzaykpCi0gICAgICAgICBtIHw9IG1fYWxwaGFfbWFzazsKLSAgIH0KLSAgIGlmKG0gIT0gMCkKLSAgIHsKLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLmlzY3R5cGUoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpLCBtKSkKLSAgICAgICAgICAgIHJlc3VsdC0+X21hcFtpXSA9IHRydWU7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gYW5kIG5vdyB0aGUgbmVnYXRlZCBjbGFzc2VzOgotICAgLy8KLSAgIG0gPSBjaGFyX3NldC5uZWdhdGVkX2NsYXNzZXMoKTsKLSAgIGlmKGZsYWdzKCkgJiByZWdiYXNlOjppY2FzZSkKLSAgIHsKLSAgICAgIC8vIGFkanVzdCBtIGFzIG5lZWRlZDoKLSAgICAgIGlmKCgobSAmIG1fbG93ZXJfbWFzaykgPT0gbV9sb3dlcl9tYXNrKSB8fCAoKG0gJiBtX3VwcGVyX21hc2spID09IG1fdXBwZXJfbWFzaykpCi0gICAgICAgICBtIHw9IG1fYWxwaGFfbWFzazsKLSAgIH0KLSAgIGlmKG0gIT0gMCkKLSAgIHsKLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIGlmKDAgPT0gdGhpcy0+bV90cmFpdHMuaXNjdHlwZShzdGF0aWNfY2FzdDxjaGFyVD4oaSksIG0pKQotICAgICAgICAgICAgcmVzdWx0LT5fbWFwW2ldID0gdHJ1ZTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBub3cgcHJvY2VzcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlczoKLSAgIC8vCi0gICBmaXJzdCA9IGNoYXJfc2V0LmVxdWl2YWxlbnRzX2JlZ2luKCk7Ci0gICBsYXN0ID0gY2hhcl9zZXQuZXF1aXZhbGVudHNfZW5kKCk7Ci0gICB3aGlsZShmaXJzdCAhPSBsYXN0KQotICAgewotICAgICAgc3RyaW5nX3R5cGUgczsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChzdGF0aWNfY2FzdDxjaGFyVD4oMCkgPT0gZmlyc3QtPnNlY29uZCk7Ci0gICAgICBzID0gbV90cmFpdHMudHJhbnNmb3JtX3ByaW1hcnkoJmZpcnN0LT5maXJzdCwgJmZpcnN0LT5maXJzdCsxKTsKLSAgICAgIGlmKHMuZW1wdHkoKSkKLSAgICAgICAgIHJldHVybiAwOyAgLy8gaW52YWxpZCBvciB1bnN1cHBvcnRlZCBlcXVpdmFsZW5jZSBjbGFzcwotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgewotICAgICAgICAgY2hhclQgY1syXSA9IHsgKHN0YXRpY19jYXN0PGNoYXJUPihpKSksIGNoYXJUKDApLCB9OwotICAgICAgICAgc3RyaW5nX3R5cGUgczIgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2Zvcm1fcHJpbWFyeShjLCBjKzEpOwotICAgICAgICAgaWYocyA9PSBzMikKLSAgICAgICAgICAgIHJlc3VsdC0+X21hcFtpXSA9IHRydWU7Ci0gICAgICB9Ci0gICAgICArK2ZpcnN0OwotICAgfQotICAgaWYobmVnYXRlKQotICAgewotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgewotICAgICAgICAgcmVzdWx0LT5fbWFwW2ldID0gIShyZXN1bHQtPl9tYXBbaV0pOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmZpbmFsaXplKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKQotewotICAgaWYodGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMpCi0gICAgICByZXR1cm47Ci0gICAvLyB3ZSd2ZSBhZGRlZCBhbGwgdGhlIHN0YXRlcyB3ZSBuZWVkLCBub3cgZmluaXNoIHRoaW5ncyBvZmYuCi0gICAvLyBzdGFydCBieSBhZGRpbmcgYSB0ZXJtaW5hdGluZyBzdGF0ZToKLSAgIGFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9tYXRjaCk7Ci0gICAvLyBleHRlbmQgc3RvcmFnZSB0byBzdG9yZSBvcmlnaW5hbCBleHByZXNzaW9uOgotICAgc3RkOjpwdHJkaWZmX3QgbGVuID0gcDIgLSBwMTsKLSAgIG1fcGRhdGEtPm1fZXhwcmVzc2lvbl9sZW4gPSBsZW47Ci0gICBjaGFyVCogcHMgPSBzdGF0aWNfY2FzdDxjaGFyVCo+KG1fcGRhdGEtPm1fZGF0YS5leHRlbmQoc2l6ZW9mKGNoYXJUKSAqICgxICsgKHAyIC0gcDEpKSkpOwotICAgbV9wZGF0YS0+bV9leHByZXNzaW9uID0gcHM7Ci0gICByZV9kZXRhaWw6OmNvcHkocDEsIHAyLCBwcyk7Ci0gICBwc1twMiAtIHAxXSA9IDA7Ci0gICAvLyBmaWxsIGluIG91ciBvdGhlciBkYXRhLi4uCi0gICAvLyBzdWNjZXNzZnVsIHBhcnNpbmcgaW1wbGllcyBhIHplcm8gc3RhdHVzOgotICAgbV9wZGF0YS0+bV9zdGF0dXMgPSAwOwotICAgLy8gZ2V0IHRoZSBmaXJzdCBzdGF0ZSBvZiB0aGUgbWFjaGluZToKLSAgIG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUgPSBzdGF0aWNfY2FzdDxyZV9zeW50YXhfYmFzZSo+KG1fcGRhdGEtPm1fZGF0YS5kYXRhKCkpOwotICAgLy8gZml4dXAgcG9pbnRlcnMgaW4gdGhlIG1hY2hpbmU6Ci0gICBmaXh1cF9wb2ludGVycyhtX3BkYXRhLT5tX2ZpcnN0X3N0YXRlKTsKLSAgIGlmKG1faGFzX3JlY3Vyc2lvbnMpCi0gICB7Ci0gICAgICBtX3BkYXRhLT5tX2hhc19yZWN1cnNpb25zID0gdHJ1ZTsKLSAgICAgIGZpeHVwX3JlY3Vyc2lvbnMobV9wZGF0YS0+bV9maXJzdF9zdGF0ZSk7Ci0gICAgICBpZih0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykKLSAgICAgICAgIHJldHVybjsKLSAgIH0KLSAgIGVsc2UKLSAgICAgIG1fcGRhdGEtPm1faGFzX3JlY3Vyc2lvbnMgPSBmYWxzZTsKLSAgIC8vIGNyZWF0ZSBuZXN0ZWQgc3RhcnRtYXBzOgotICAgY3JlYXRlX3N0YXJ0bWFwcyhtX3BkYXRhLT5tX2ZpcnN0X3N0YXRlKTsKLSAgIC8vIGNyZWF0ZSBtYWluIHN0YXJ0bWFwOgotICAgc3RkOjptZW1zZXQobV9wZGF0YS0+bV9zdGFydG1hcCwgMCwgc2l6ZW9mKG1fcGRhdGEtPm1fc3RhcnRtYXApKTsKLSAgIG1fcGRhdGEtPm1fY2FuX2JlX251bGwgPSAwOwotCi0gICBtX2JhZF9yZXBlYXRzID0gMDsKLSAgIGlmKG1faGFzX3JlY3Vyc2lvbnMpCi0gICAgICBtX3JlY3Vyc2lvbl9jaGVja3MuYXNzaWduKDEgKyBtX3BkYXRhLT5tX21hcmtfY291bnQsIGZhbHNlKTsKLSAgIGNyZWF0ZV9zdGFydG1hcChtX3BkYXRhLT5tX2ZpcnN0X3N0YXRlLCBtX3BkYXRhLT5tX3N0YXJ0bWFwLCAmKG1fcGRhdGEtPm1fY2FuX2JlX251bGwpLCBtYXNrX2FsbCk7Ci0gICAvLyBnZXQgdGhlIHJlc3RhcnQgdHlwZToKLSAgIG1fcGRhdGEtPm1fcmVzdGFydF90eXBlID0gZ2V0X3Jlc3RhcnRfdHlwZShtX3BkYXRhLT5tX2ZpcnN0X3N0YXRlKTsKLSAgIC8vIG9wdGltaXNlIGEgbGVhZGluZyByZXBlYXQgaWYgdGhlcmUgaXMgb25lOgotICAgcHJvYmVfbGVhZGluZ19yZXBlYXQobV9wZGF0YS0+bV9maXJzdF9zdGF0ZSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpmaXh1cF9wb2ludGVycyhyZV9zeW50YXhfYmFzZSogc3RhdGUpCi17Ci0gICB3aGlsZShzdGF0ZSkKLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVjdXJzZToKLSAgICAgICAgIG1faGFzX3JlY3Vyc2lvbnMgPSB0cnVlOwotICAgICAgICAgaWYoc3RhdGUtPm5leHQuaSkKLSAgICAgICAgICAgIHN0YXRlLT5uZXh0LnAgPSBnZXRhZGRyZXNzKHN0YXRlLT5uZXh0LmksIHN0YXRlKTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0YXRlLT5uZXh0LnAgPSAwOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgICAgIC8vIHNldCB0aGUgc3RhdGVfaWQgb2YgdGhpcyByZXBlYXQ6Ci0gICAgICAgICBzdGF0aWNfY2FzdDxyZV9yZXBlYXQqPihzdGF0ZSktPnN0YXRlX2lkID0gbV9yZXBlYXRlcl9pZCsrOwotICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2FsdDoKLSAgICAgICAgIHN0ZDo6bWVtc2V0KHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+X21hcCwgMCwgc2l6ZW9mKHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+X21hcCkpOwotICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5jYW5fYmVfbnVsbCA9IDA7Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfanVtcDoKLSAgICAgICAgIHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZSktPmFsdC5wID0gZ2V0YWRkcmVzcyhzdGF0aWNfY2FzdDxyZV9qdW1wKj4oc3RhdGUpLT5hbHQuaSwgc3RhdGUpOwotICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgaWYoc3RhdGUtPm5leHQuaSkKLSAgICAgICAgICAgIHN0YXRlLT5uZXh0LnAgPSBnZXRhZGRyZXNzKHN0YXRlLT5uZXh0LmksIHN0YXRlKTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0YXRlLT5uZXh0LnAgPSAwOwotICAgICAgfQotICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6Zml4dXBfcmVjdXJzaW9ucyhyZV9zeW50YXhfYmFzZSogc3RhdGUpCi17Ci0gICByZV9zeW50YXhfYmFzZSogYmFzZSA9IHN0YXRlOwotICAgd2hpbGUoc3RhdGUpCi0gICB7Ci0gICAgICBzd2l0Y2goc3RhdGUtPnR5cGUpCi0gICAgICB7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmOgotICAgICAgICAgewotICAgICAgICAgICAgLy8ganVzdCBjaGVjayB0aGF0IHRoZSBpbmRleCBpcyB2YWxpZDoKLSAgICAgICAgICAgIGludCBpZHggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHN0YXRlKS0+aW5kZXg7Ci0gICAgICAgICAgICBpZihpZHggPCAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWR4ID0gLWlkeC0xOwotICAgICAgICAgICAgICAgaWYoaWR4ID49IDEwMDAwKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgaWR4ID0gbV9wZGF0YS0+Z2V0X2lkKGlkeCk7Ci0gICAgICAgICAgICAgICAgICBpZihpZHggPD0gMCkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIG9mIHN1Yi1leHByZXNzaW9uIHRoYXQgZG9lc24ndCBleGlzdDoKLSAgICAgICAgICAgICAgICAgICAgIGlmKDAgPT0gdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMpIC8vIHVwZGF0ZSB0aGUgZXJyb3IgY29kZSBpZiBub3QgYWxyZWFkeSBzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm47Ci0gICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgdGhlIGV4cHJlc3Npb24sIHdlIHNob3VsZCBiZSBlbXB0eToKLSAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb24gPSAwOwotICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9leHByZXNzaW9uX2xlbiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRocm93IGlmIHJlcXVpcmVkOgotICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX2V4Y2VwdCkpCi0gICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBtZXNzYWdlID0gIkVuY291bnRlcmVkIGEgZm9yd2FyZCByZWZlcmVuY2UgdG8gYSBtYXJrZWQgc3ViLWV4cHJlc3Npb24gdGhhdCBkb2VzIG5vdCBleGlzdC4iOwotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2Vycm9yIGUobWVzc2FnZSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm4sIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgZS5yYWlzZSgpOwotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3JlY3Vyc2U6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgICAgICAgICByZV9zeW50YXhfYmFzZSogcCA9IGJhc2U7Ci0gICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCBpZHggPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4oc3RhdGUpLT5hbHQuaTsKLSAgICAgICAgICAgIGlmKGlkeCA+IDEwMDAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIC8vIFRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIGNhcHR1cmUgZ3JvdXAgd2l0aCB0aGlzIGhhc2gsIGp1c3QgZG8gd2hhdCBQZXJsCi0gICAgICAgICAgICAgICAvLyBkb2VzIGFuZCByZWN1cnNlIHRvIHRoZSBsZWZ0bW9zdDoKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICBpZHggPSBtX3BkYXRhLT5nZXRfaWQoc3RhdGljX2Nhc3Q8aW50PihpZHgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlKHApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZigocC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmspICYmIChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHApLT5pbmRleCA9PSBpZHgpKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGZvdW5kIHRoZSB0YXJnZXQgb2YgdGhlIHJlY3Vyc2lvbiwgc2V0IHRoZSBqdW1wIHRhcmdldDoKLSAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxyZV9qdW1wKj4oc3RhdGUpLT5hbHQucCA9IHA7Ci0gICAgICAgICAgICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAvLyAKLSAgICAgICAgICAgICAgICAgIC8vIE5vdyBzY2FuIHRoZSB0YXJnZXQgZm9yIG5lc3RlZCByZXBlYXRzOgotICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgIHAgPSBwLT5uZXh0LnA7Ci0gICAgICAgICAgICAgICAgICBpbnQgbmV4dF9yZXBfaWQgPSAwOwotICAgICAgICAgICAgICAgICAgd2hpbGUocCkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIHN3aXRjaChwLT50eXBlKQotICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXA6Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2RvdF9yZXA6Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwOgotICAgICAgICAgICAgICAgICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwOgotICAgICAgICAgICAgICAgICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3JlcF9pZCA9IHN0YXRpY19jYXN0PHJlX3JlcGVhdCo+KHApLT5zdGF0ZV9pZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRtYXJrOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwKS0+aW5kZXggPT0gaWR4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9yZXBfaWQgPSAtMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIGlmKG5leHRfcmVwX2lkKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICBwID0gcC0+bmV4dC5wOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgaWYobmV4dF9yZXBfaWQgPiAwKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfcmVjdXJzZSo+KHN0YXRlKS0+c3RhdGVfaWQgPSBuZXh0X3JlcF9pZCAtIDE7Ci0gICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgcCA9IHAtPm5leHQucDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKCFvaykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIHJlY3Vyc2lvbiB0byBzdWItZXhwcmVzc2lvbiB0aGF0IGRvZXNuJ3QgZXhpc3Q6Ci0gICAgICAgICAgICAgICBpZigwID09IHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzKSAvLyB1cGRhdGUgdGhlIGVycm9yIGNvZGUgaWYgbm90IGFscmVhZHkgc2V0Ci0gICAgICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cyA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuOwotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIC8vIGNsZWFyIHRoZSBleHByZXNzaW9uLCB3ZSBzaG91bGQgYmUgZW1wdHk6Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9leHByZXNzaW9uID0gMDsKLSAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbl9sZW4gPSAwOwotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIC8vIGFuZCB0aHJvdyBpZiByZXF1aXJlZDoKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpub19leGNlcHQpKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZSA9ICJFbmNvdW50ZXJlZCBhIGZvcndhcmQgcmVmZXJlbmNlIHRvIGEgcmVjdXJzaXZlIHN1Yi1leHByZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3QuIjsKLSAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9lcnJvciBlKG1lc3NhZ2UsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuLCAwKTsKLSAgICAgICAgICAgICAgICAgIGUucmFpc2UoKTsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6Y3JlYXRlX3N0YXJ0bWFwcyhyZV9zeW50YXhfYmFzZSogc3RhdGUpCi17Ci0gICAvLyBub24tcmVjdXJzaXZlIGltcGxlbWVudGF0aW9uOgotICAgLy8gY3JlYXRlIHRoZSBsYXN0IG1hcCBpbiB0aGUgbWFjaGluZSBmaXJzdCwgc28gdGhhdCBlYXJsaWVyIG1hcHMKLSAgIC8vIGNhbiBtYWtlIHVzZSBvZiB0aGUgcmVzdWx0Li4uCi0gICAvLwotICAgLy8gVGhpcyB3YXMgb3JpZ2luYWxseSBhIHJlY3Vyc2l2ZSBpbXBsZW1lbnRhdGlvbiwgYnV0IHRoYXQgY2F1c2VkIHN0YWNrCi0gICAvLyBvdmVyZmxvd3Mgd2l0aCBjb21wbGV4IGV4cHJlc3Npb25zIG9uIHNtYWxsIHN0YWNrcyAodGhpbmsgQ09NKykuCi0KLSAgIC8vIHN0YXJ0IGJ5IHNhdmluZyB0aGUgY2FzZSBzZXR0aW5nOgotICAgYm9vbCBsX2ljYXNlID0gbV9pY2FzZTsKLSAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxib29sLCByZV9zeW50YXhfYmFzZSo+ID4gdjsKLQotICAgd2hpbGUoc3RhdGUpCi0gICB7Ci0gICAgICBzd2l0Y2goc3RhdGUtPnR5cGUpCi0gICAgICB7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3RvZ2dsZV9jYXNlOgotICAgICAgICAgLy8gd2UgbmVlZCB0byB0cmFjayBjYXNlIGNoYW5nZXMgaGVyZToKLSAgICAgICAgIG1faWNhc2UgPSBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oc3RhdGUpLT5pY2FzZTsKLSAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGNvbnRpbnVlOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9hbHQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgICAgIC8vIGp1c3QgcHVzaCB0aGUgc3RhdGUgb250byBvdXIgc3RhY2sgZm9yIG5vdzoKLSAgICAgICAgIHYucHVzaF9iYWNrKHN0ZDo6cGFpcjxib29sLCByZV9zeW50YXhfYmFzZSo+KG1faWNhc2UsIHN0YXRlKSk7Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYmFja3N0ZXA6Ci0gICAgICAgICAvLyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBob3cgYmlnIHRoZSBiYWNrc3RlcCBpczoKLSAgICAgICAgIHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleAotICAgICAgICAgICAgPSB0aGlzLT5jYWxjdWxhdGVfYmFja3N0ZXAoc3RhdGUtPm5leHQucCk7Ci0gICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPCAwKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gT29wcyBlcnJvcjoKLSAgICAgICAgICAgIGlmKDAgPT0gdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMpIC8vIHVwZGF0ZSB0aGUgZXJyb3IgY29kZSBpZiBub3QgYWxyZWFkeSBzZXQKLSAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm47Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gY2xlYXIgdGhlIGV4cHJlc3Npb24sIHdlIHNob3VsZCBiZSBlbXB0eToKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb24gPSAwOwotICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9leHByZXNzaW9uX2xlbiA9IDA7Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gYW5kIHRocm93IGlmIHJlcXVpcmVkOgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX2V4Y2VwdCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBtZXNzYWdlID0gIkludmFsaWQgbG9va2JlaGluZCBhc3NlcnRpb24gZW5jb3VudGVyZWQgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4iOwotICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2Vycm9yIGUobWVzc2FnZSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm4sIDApOwotICAgICAgICAgICAgICAgZS5yYWlzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgfQotICAgfQotCi0gICAvLyBub3cgd29yayB0aHJvdWdoIG91ciBsaXN0LCBidWlsZGluZyBhbGwgdGhlIG1hcHMgYXMgd2UgZ286Ci0gICB3aGlsZSh2LnNpemUoKSkKLSAgIHsKLSAgICAgIC8vIEluaXRpYWxpemUgbV9yZWN1cnNpb25fY2hlY2tzIGlmIHdlIG5lZWQgaXQ6Ci0gICAgICBpZihtX2hhc19yZWN1cnNpb25zKQotICAgICAgICAgbV9yZWN1cnNpb25fY2hlY2tzLmFzc2lnbigxICsgbV9wZGF0YS0+bV9tYXJrX2NvdW50LCBmYWxzZSk7Ci0KLSAgICAgIGNvbnN0IHN0ZDo6cGFpcjxib29sLCByZV9zeW50YXhfYmFzZSo+JiBwID0gdi5iYWNrKCk7Ci0gICAgICBtX2ljYXNlID0gcC5maXJzdDsKLSAgICAgIHN0YXRlID0gcC5zZWNvbmQ7Ci0gICAgICB2LnBvcF9iYWNrKCk7Ci0KLSAgICAgIC8vIEJ1aWxkIG1hcHM6Ci0gICAgICBtX2JhZF9yZXBlYXRzID0gMDsKLSAgICAgIGNyZWF0ZV9zdGFydG1hcChzdGF0ZS0+bmV4dC5wLCBzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPl9tYXAsICZzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPmNhbl9iZV9udWxsLCBtYXNrX3Rha2UpOwotICAgICAgbV9iYWRfcmVwZWF0cyA9IDA7Ci0KLSAgICAgIGlmKG1faGFzX3JlY3Vyc2lvbnMpCi0gICAgICAgICBtX3JlY3Vyc2lvbl9jaGVja3MuYXNzaWduKDEgKyBtX3BkYXRhLT5tX21hcmtfY291bnQsIGZhbHNlKTsKLSAgICAgIGNyZWF0ZV9zdGFydG1hcChzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPmFsdC5wLCBzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPl9tYXAsICZzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPmNhbl9iZV9udWxsLCBtYXNrX3NraXApOwotICAgICAgLy8gYWRqdXN0IHRoZSB0eXBlIG9mIHRoZSBzdGF0ZSB0byBhbGxvdyBmb3IgZmFzdGVyIG1hdGNoaW5nOgotICAgICAgc3RhdGUtPnR5cGUgPSB0aGlzLT5nZXRfcmVwZWF0X3R5cGUoc3RhdGUpOwotICAgfQotICAgLy8gcmVzdG9yZSBjYXNlIHNlbnNpdGl2aXR5OgotICAgbV9pY2FzZSA9IGxfaWNhc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW50IGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmNhbGN1bGF0ZV9iYWNrc3RlcChyZV9zeW50YXhfYmFzZSogc3RhdGUpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgIGludCByZXN1bHQgPSAwOwotICAgd2hpbGUoc3RhdGUpCi0gICB7Ci0gICAgICBzd2l0Y2goc3RhdGUtPnR5cGUpCi0gICAgICB7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyazoKLSAgICAgICAgIGlmKChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTEpCi0gICAgICAgICAgICB8fCAoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0yKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRlID0gc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHN0YXRlLT5uZXh0LnApLT5hbHQucC0+bmV4dC5wOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlIGlmKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZW5kbWFyazoKLSAgICAgICAgIGlmKChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTEpCi0gICAgICAgICAgICB8fCAoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0yKSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbGl0ZXJhbDoKLSAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDxyZV9saXRlcmFsKj4oc3RhdGUpLT5sZW5ndGg7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd2lsZDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2V0OgotICAgICAgICAgcmVzdWx0ICs9IDE7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2JhY2tyZWY6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY29tYmluaW5nOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2JhY2tzdGVwOgotICAgICAgICAgewotICAgICAgICAgICAgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxyZV9yZXBlYXQgKj4oc3RhdGUpOwotICAgICAgICAgICAgLy8gYWRqdXN0IHRoZSB0eXBlIG9mIHRoZSBzdGF0ZSB0byBhbGxvdyBmb3IgZmFzdGVyIG1hdGNoaW5nOgotICAgICAgICAgICAgc3RhdGUtPnR5cGUgPSB0aGlzLT5nZXRfcmVwZWF0X3R5cGUoc3RhdGUpOwotICAgICAgICAgICAgaWYoKHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X2RvdF9yZXApIAotICAgICAgICAgICAgICAgfHwgKHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X2NoYXJfcmVwKQotICAgICAgICAgICAgICAgfHwgKHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXApKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYocmVwLT5tYXggIT0gcmVwLT5taW4pCi0gICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8aW50PihyZXAtPm1pbik7Ci0gICAgICAgICAgICAgICBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wLT50eXBlID09IHN5bnRheF9lbGVtZW50X2xvbmdfc2V0KTsKLSAgICAgICAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX3NldF9sb25nPG1fdHlwZT4qPihyZXAtPm5leHQucCktPnNpbmdsZXRvbiA9PSAwKQotICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgaWYocmVwLT5tYXggIT0gcmVwLT5taW4pCi0gICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8aW50PihyZXAtPm1pbik7Ci0gICAgICAgICAgICAgICBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiAtMTsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXQ6Ci0gICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9zZXRfbG9uZzxtX3R5cGU+Kj4oc3RhdGUpLT5zaW5nbGV0b24gPT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgIHJlc3VsdCArPSAxOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2p1bXA6Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZSktPmFsdC5wOwotICAgICAgICAgY29udGludWU7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2FsdDoKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGludCByMSA9IGNhbGN1bGF0ZV9iYWNrc3RlcChzdGF0ZS0+bmV4dC5wKTsKLSAgICAgICAgICAgIGludCByMiA9IGNhbGN1bGF0ZV9iYWNrc3RlcChzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPmFsdC5wKTsKLSAgICAgICAgICAgIGlmKChyMSA8IDApIHx8IChyMSAhPSByMikpCi0gICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgcjE7Ci0gICAgICAgICB9Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICB9Ci0gICByZXR1cm4gLTE7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpjcmVhdGVfc3RhcnRtYXAocmVfc3ludGF4X2Jhc2UqIHN0YXRlLCB1bnNpZ25lZCBjaGFyKiBsX21hcCwgdW5zaWduZWQgaW50KiBwbnVsbCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgaW50IG5vdF9sYXN0X2p1bXAgPSAxOwotICAgcmVfc3ludGF4X2Jhc2UqIHJlY3Vyc2lvbl9zdGFydCA9IDA7Ci0gICBpbnQgcmVjdXJzaW9uX3N1YiA9IDA7Ci0gICByZV9zeW50YXhfYmFzZSogcmVjdXJzaW9uX3Jlc3RhcnQgPSAwOwotCi0gICAvLyB0cmFjayBjYXNlIHNlbnNpdGl2aXR5OgotICAgYm9vbCBsX2ljYXNlID0gbV9pY2FzZTsKLQotICAgd2hpbGUoc3RhdGUpCi0gICB7Ci0gICAgICBzd2l0Y2goc3RhdGUtPnR5cGUpCi0gICAgICB7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3RvZ2dsZV9jYXNlOgotICAgICAgICAgbF9pY2FzZSA9IHN0YXRpY19jYXN0PHJlX2Nhc2UqPihzdGF0ZSktPmljYXNlOwotICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xpdGVyYWw6Ci0gICAgICB7Ci0gICAgICAgICAvLyBkb24ndCBzZXQgYW55dGhpbmcgaW4gKnBudWxsLCBzZXQgZWFjaCBlbGVtZW50IGluIGxfbWFwCi0gICAgICAgICAvLyB0aGF0IGNvdWxkIG1hdGNoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWw6Ci0gICAgICAgICBpZihsX21hcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGxfbWFwWzBdIHw9IG1hc2tfaW5pdDsKLSAgICAgICAgICAgIGNoYXJUIGZpcnN0X2NoYXIgPSAqc3RhdGljX2Nhc3Q8Y2hhclQqPihzdGF0aWNfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8cmVfbGl0ZXJhbCo+KHN0YXRlKSArIDEpKTsKLSAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZihtX3RyYWl0cy50cmFuc2xhdGUoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpLCBsX2ljYXNlKSA9PSBmaXJzdF9jaGFyKQotICAgICAgICAgICAgICAgICAgbF9tYXBbaV0gfD0gbWFzazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZW5kX2xpbmU6Ci0gICAgICB7Ci0gICAgICAgICAvLyBuZXh0IGNoYXJhY3RlciBtdXN0IGJlIGEgbGluZSBzZXBhcmF0b3IgKGlmIHRoZXJlIGlzIG9uZSk6Ci0gICAgICAgICBpZihsX21hcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGxfbWFwWzBdIHw9IG1hc2tfaW5pdDsKLSAgICAgICAgICAgIGxfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPignXG4nKV0gfD0gbWFzazsKLSAgICAgICAgICAgIGxfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPignXHInKV0gfD0gbWFzazsKLSAgICAgICAgICAgIGxfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPignXGYnKV0gfD0gbWFzazsKLSAgICAgICAgICAgIGxfbWFwWzB4ODVdIHw9IG1hc2s7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBub3cgZmlndXJlIG91dCBpZiB3ZSBjYW4gbWF0Y2ggYSBOVUxMIHN0cmluZyBhdCB0aGlzIHBvaW50OgotICAgICAgICAgaWYocG51bGwpCi0gICAgICAgICAgICBjcmVhdGVfc3RhcnRtYXAoc3RhdGUtPm5leHQucCwgMCwgcG51bGwsIG1hc2spOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZWN1cnNlOgotICAgICAgICAgewotICAgICAgICAgICAgaWYoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrKQotICAgICAgICAgICAgICAgcmVjdXJzaW9uX3N1YiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgIHJlY3Vyc2lvbl9zdWIgPSAwOwotICAgICAgICAgICAgaWYobV9yZWN1cnNpb25fY2hlY2tzW3JlY3Vyc2lvbl9zdWJdKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gSW5maW5pdGUgcmVjdXJzaW9uISEKLSAgICAgICAgICAgICAgIGlmKDAgPT0gdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMpIC8vIHVwZGF0ZSB0aGUgZXJyb3IgY29kZSBpZiBub3QgYWxyZWFkeSBzZXQKLSAgICAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm47Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgLy8gY2xlYXIgdGhlIGV4cHJlc3Npb24sIHdlIHNob3VsZCBiZSBlbXB0eToKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb24gPSAwOwotICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9leHByZXNzaW9uX2xlbiA9IDA7Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgLy8gYW5kIHRocm93IGlmIHJlcXVpcmVkOgotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX2V4Y2VwdCkpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBtZXNzYWdlID0gIkVuY291bnRlcmVkIGFuIGluZmluaXRlIHJlY3Vyc2lvbi4iOwotICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2Vycm9yIGUobWVzc2FnZSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm4sIDApOwotICAgICAgICAgICAgICAgICAgZS5yYWlzZSgpOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZihyZWN1cnNpb25fc3RhcnQgPT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJlY3Vyc2lvbl9zdGFydCA9IHN0YXRlOwotICAgICAgICAgICAgICAgcmVjdXJzaW9uX3Jlc3RhcnQgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4oc3RhdGUpLT5hbHQucDsKLSAgICAgICAgICAgICAgIG1fcmVjdXJzaW9uX2NoZWNrc1tyZWN1cnNpb25fc3ViXSA9IHRydWU7Ci0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fcmVjdXJzaW9uX2NoZWNrc1tyZWN1cnNpb25fc3ViXSA9IHRydWU7Ci0gICAgICAgICAgICAvLyBjYW4ndCBoYW5kbGUgbmVzdGVkIHJlY3Vyc2lvbiBoZXJlLi4uCi0gICAgICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgICAgIH0KLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYmFja3JlZjoKLSAgICAgICAgIC8vIGNhbiBiZSBudWxsLCBhbmQgYW55IGNoYXJhY3RlciBjYW4gbWF0Y2g6Ci0gICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgICpwbnVsbCB8PSBtYXNrOwotICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dpbGQ6Ci0gICAgICB7Ci0gICAgICAgICAvLyBjYW4ndCBiZSBudWxsLCBhbnkgY2hhcmFjdGVyIGNhbiBtYXRjaDoKLSAgICAgICAgIHNldF9hbGxfbWFza3MobF9tYXAsIG1hc2spOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9tYXRjaDoKLSAgICAgIHsKLSAgICAgICAgIC8vIG11c3QgYmUgbnVsbCwgYW55IGNoYXJhY3RlciBjYW4gbWF0Y2g6Ci0gICAgICAgICBzZXRfYWxsX21hc2tzKGxfbWFwLCBtYXNrKTsKLSAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgKnBudWxsIHw9IG1hc2s7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQ6Ci0gICAgICB7Ci0gICAgICAgICAvLyByZWN1cnNlLCB0aGVuIEFORCB3aXRoIGFsbCB0aGUgd29yZCBjaGFyYWN0ZXJzOgotICAgICAgICAgY3JlYXRlX3N0YXJ0bWFwKHN0YXRlLT5uZXh0LnAsIGxfbWFwLCBwbnVsbCwgbWFzayk7Ci0gICAgICAgICBpZihsX21hcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGxfbWFwWzBdIHw9IG1hc2tfaW5pdDsKLSAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZighbV90cmFpdHMuaXNjdHlwZShzdGF0aWNfY2FzdDxjaGFyVD4oaSksIG1fd29yZF9tYXNrKSkKLSAgICAgICAgICAgICAgICAgIGxfbWFwW2ldICY9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KH5tYXNrKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9lbmQ6Ci0gICAgICB7Ci0gICAgICAgICAvLyByZWN1cnNlLCB0aGVuIEFORCB3aXRoIGFsbCB0aGUgd29yZCBjaGFyYWN0ZXJzOgotICAgICAgICAgY3JlYXRlX3N0YXJ0bWFwKHN0YXRlLT5uZXh0LnAsIGxfbWFwLCBwbnVsbCwgbWFzayk7Ci0gICAgICAgICBpZihsX21hcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGxfbWFwWzBdIHw9IG1hc2tfaW5pdDsKLSAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZihtX3RyYWl0cy5pc2N0eXBlKHN0YXRpY19jYXN0PGNoYXJUPihpKSwgbV93b3JkX21hc2spKQotICAgICAgICAgICAgICAgICAgbF9tYXBbaV0gJj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ofm1hc2spOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kOgotICAgICAgewotICAgICAgICAgLy8gd2UgKm11c3QgYmUgbnVsbCogOgotICAgICAgICAgaWYocG51bGwpCi0gICAgICAgICAgICAqcG51bGwgfD0gbWFzazsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXQ6Ci0gICAgICAgICBpZihsX21hcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfc2V0X2xvbmc8bV90eXBlPio+KHN0YXRlKS0+c2luZ2xldG9uKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNoYXJUIGMgPSBzdGF0aWNfY2FzdDxjaGFyVD4oaSk7Ci0gICAgICAgICAgICAgICAgICBpZigmYyAhPSByZV9pc19zZXRfbWVtYmVyKCZjLCAmYyArIDEsIHN0YXRpY19jYXN0PHJlX3NldF9sb25nPG1fdHlwZT4qPihzdGF0ZSksICptX3BkYXRhLCBsX2ljYXNlKSkKLSAgICAgICAgICAgICAgICAgICAgIGxfbWFwW2ldIHw9IG1hc2s7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICBzZXRfYWxsX21hc2tzKGxfbWFwLCBtYXNrKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybjsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2V0OgotICAgICAgICAgaWYobF9tYXApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBsX21hcFswXSB8PSBtYXNrX2luaXQ7Ci0gICAgICAgICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfc2V0Kj4oc3RhdGUpLT5fbWFwWwotICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV90cmFpdHMudHJhbnNsYXRlKHN0YXRpY19jYXN0PGNoYXJUPihpKSwgbF9pY2FzZSkpXSkKLSAgICAgICAgICAgICAgICAgIGxfbWFwW2ldIHw9IG1hc2s7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2p1bXA6Ci0gICAgICAgICAvLyB0YWtlIHRoZSBqdW1wOgotICAgICAgICAgc3RhdGUgPSBzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPmFsdC5wOwotICAgICAgICAgbm90X2xhc3RfanVtcCA9IC0xOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2FsdDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOgotICAgICAgICAgewotICAgICAgICAgICAgcmVfYWx0KiByZXAgPSBzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSk7Ci0gICAgICAgICAgICBpZihyZXAtPl9tYXBbMF0gJiBtYXNrX2luaXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZihsX21hcCkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIC8vIGNvcHkgcHJldmlvdXMgcmVzdWx0czoKLSAgICAgICAgICAgICAgICAgIGxfbWFwWzBdIHw9IG1hc2tfaW5pdDsKLSAgICAgICAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPD0gVUNIQVJfTUFYOyArK2kpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICBpZihyZXAtPl9tYXBbaV0gJiBtYXNrX2FueSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxfbWFwW2ldIHw9IG1hc2s7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX2FueSkKLSAgICAgICAgICAgICAgICAgICAgICpwbnVsbCB8PSBtYXNrOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gd2UgaGF2ZW4ndCBjcmVhdGVkIGEgc3RhcnRtYXAgZm9yIHRoaXMgYWx0ZXJuYXRpdmUgeWV0Ci0gICAgICAgICAgICAgICAvLyBzbyB0YWtlIHRoZSB1bmlvbiBvZiB0aGUgdHdvIG9wdGlvbnM6Ci0gICAgICAgICAgICAgICBpZihpc19iYWRfcmVwZWF0KHN0YXRlKSkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHNldF9hbGxfbWFza3MobF9tYXAsIG1hc2spOwotICAgICAgICAgICAgICAgICAgaWYocG51bGwpCi0gICAgICAgICAgICAgICAgICAgICAqcG51bGwgfD0gbWFzazsKLSAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIHNldF9iYWRfcmVwZWF0KHN0YXRlKTsKLSAgICAgICAgICAgICAgIGNyZWF0ZV9zdGFydG1hcChzdGF0ZS0+bmV4dC5wLCBsX21hcCwgcG51bGwsIG1hc2spOwotICAgICAgICAgICAgICAgaWYoKHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X2FsdCkKLSAgICAgICAgICAgICAgICAgIHx8IChzdGF0aWNfY2FzdDxyZV9yZXBlYXQqPihzdGF0ZSktPm1pbiA9PSAwKQotICAgICAgICAgICAgICAgICAgfHwgKG5vdF9sYXN0X2p1bXAgPT0gMCkpCi0gICAgICAgICAgICAgICAgICBjcmVhdGVfc3RhcnRtYXAocmVwLT5hbHQucCwgbF9tYXAsIHBudWxsLCBtYXNrKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybjsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc29mdF9idWZmZXJfZW5kOgotICAgICAgICAgLy8gbWF0Y2ggbmV3bGluZSBvciBudWxsOgotICAgICAgICAgaWYobF9tYXApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBsX21hcFswXSB8PSBtYXNrX2luaXQ7Ci0gICAgICAgICAgICBsX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oJ1xuJyldIHw9IG1hc2s7Ci0gICAgICAgICAgICBsX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oJ1xyJyldIHw9IG1hc2s7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgICpwbnVsbCB8PSBtYXNrOwotICAgICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRtYXJrOgotICAgICAgICAgLy8gbmVlZCB0byBoYW5kbGUgaW5kZXBlbmRlbnQgc3VicyBhcyBhIHNwZWNpYWwgY2FzZToKLSAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA8IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBjYW4gYmUgbnVsbCwgYW55IGNoYXJhY3RlciBjYW4gbWF0Y2g6Ci0gICAgICAgICAgICBzZXRfYWxsX21hc2tzKGxfbWFwLCBtYXNrKTsKLSAgICAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgICAgKnBudWxsIHw9IG1hc2s7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlIGlmKHJlY3Vyc2lvbl9zdGFydCAmJiAocmVjdXJzaW9uX3N1YiAhPSAwKSAmJiAocmVjdXJzaW9uX3N1YiA9PSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXgpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gcmVjdXJzaW9uIHRlcm1pbmF0aW9uOgotICAgICAgICAgICAgcmVjdXJzaW9uX3N0YXJ0ID0gMDsKLSAgICAgICAgICAgIHN0YXRlID0gcmVjdXJzaW9uX3Jlc3RhcnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLQotICAgICAgICAgLy8KLSAgICAgICAgIC8vIE5vcm1hbGx5IHdlIGp1c3QgZ28gdG8gdGhlIG5leHQgc3RhdGUuLi4gYnV0IGlmIHRoaXMgc3ViLWV4cHJlc3Npb24gaXMKLSAgICAgICAgIC8vIHRoZSB0YXJnZXQgb2YgYSByZWN1cnNpb24sIHRoZW4gd2UgbWlnaHQgYmUgZW5kaW5nIGEgcmVjdXJzaW9uLCBpbiB3aGljaAotICAgICAgICAgLy8gY2FzZSB3ZSBzaG91bGQgY2hlY2sgd2hhdGV2ZXIgZm9sbG93cyB0aGF0IHJlY3Vyc2lvbiwgYXMgd2VsbCBhcyB3aGF0ZXZlcgotICAgICAgICAgLy8gZm9sbG93cyB0aGlzIHN0YXRlOgotICAgICAgICAgLy8KLSAgICAgICAgIGlmKG1fcGRhdGEtPm1faGFzX3JlY3Vyc2lvbnMgJiYgc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4KQotICAgICAgICAgewotICAgICAgICAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgICAgICAgICAgcmVfc3ludGF4X2Jhc2UqIHAgPSBtX3BkYXRhLT5tX2ZpcnN0X3N0YXRlOwotICAgICAgICAgICAgd2hpbGUocCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKHAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfcmVjdXJzZSkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHJlX2JyYWNlKiBwMiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHApLT5hbHQucCk7Ci0gICAgICAgICAgICAgICAgICBpZigocDItPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrKSAmJiAocDItPmluZGV4ID09IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCkpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIHAgPSBwLT5uZXh0LnA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZihvaykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGNyZWF0ZV9zdGFydG1hcChwLT5uZXh0LnAsIGxfbWFwLCBwbnVsbCwgbWFzayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zdGFydG1hcms6Ci0gICAgICAgICAvLyBuZWVkIHRvIGhhbmRsZSBpbmRlcGVuZGVudCBzdWJzIGFzIGEgc3BlY2lhbCBjYXNlOgotICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0zKQotICAgICAgICAgewotICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgIH0KLSAgICAgICsrbm90X2xhc3RfanVtcDsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci11bnNpZ25lZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpnZXRfcmVzdGFydF90eXBlKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIC8vCi0gICAvLyBmaW5kIG91dCBob3cgdGhlIG1hY2hpbmUgc3RhcnRzLCBzbyB3ZSBjYW4gb3B0aW1pc2UgdGhlIHNlYXJjaDoKLSAgIC8vCi0gICB3aGlsZShzdGF0ZSkKLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRtYXJrOgotICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgY29udGludWU7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmU6Ci0gICAgICAgICByZXR1cm4gcmVnYmFzZTo6cmVzdGFydF9saW5lOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX3N0YXJ0OgotICAgICAgICAgcmV0dXJuIHJlZ2Jhc2U6OnJlc3RhcnRfd29yZDsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0OgotICAgICAgICAgcmV0dXJuIHJlZ2Jhc2U6OnJlc3RhcnRfYnVmOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXN0YXJ0X2NvbnRpbnVlOgotICAgICAgICAgcmV0dXJuIHJlZ2Jhc2U6OnJlc3RhcnRfY29udGludWU7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgc3RhdGUgPSAwOwotICAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gcmVnYmFzZTo6cmVzdGFydF9hbnk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpzZXRfYWxsX21hc2tzKHVuc2lnbmVkIGNoYXIqIGJpdHMsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIC8vCi0gICAvLyBzZXQgbWFzayBpbiBhbGwgb2YgYml0cyBlbGVtZW50cywgCi0gICAvLyBpZiBiaXRzWzBdIGhhcyBtYXNrX2luaXQgbm90IHNldCB0aGVuIHdlIGNhbiAKLSAgIC8vIG9wdGltaXNlIHRoaXMgdG8gYSBjYWxsIHRvIG1lbXNldDoKLSAgIC8vCi0gICBpZihiaXRzKQotICAgewotICAgICAgaWYoYml0c1swXSA9PSAwKQotICAgICAgICAgKHN0ZDo6bWVtc2V0KShiaXRzLCBtYXNrLCAxdSA8PCBDSEFSX0JJVCk7Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICAgICAgICBiaXRzW2ldIHw9IG1hc2s7Ci0gICAgICB9Ci0gICAgICBiaXRzWzBdIHw9IG1hc2tfaW5pdDsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmlzX2JhZF9yZXBlYXQocmVfc3ludGF4X2Jhc2UqIHB0KQotewotICAgc3dpdGNoKHB0LT50eXBlKQotICAgewotICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X2RvdF9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwOgotICAgY2FzZSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwOgotICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXA6Ci0gICAgICB7Ci0gICAgICAgICB1bnNpZ25lZCBzdGF0ZV9pZCA9IHN0YXRpY19jYXN0PHJlX3JlcGVhdCo+KHB0KS0+c3RhdGVfaWQ7Ci0gICAgICAgICBpZihzdGF0ZV9pZCA+IHNpemVvZihtX2JhZF9yZXBlYXRzKSAqIENIQVJfQklUKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBydW4gb3V0IG9mIGJpdHMsIGFzc3VtZSB3ZSBjYW4ndCB0cmF2ZXJzZSB0aGlzIG9uZS4KLSAgICAgICAgIHN0YXRpYyBjb25zdCBuZG5ib29zdDo6dWludG1heF90IG9uZSA9IDF1TDsKLSAgICAgICAgIHJldHVybiBtX2JhZF9yZXBlYXRzICYgKG9uZSA8PCBzdGF0ZV9pZCk7Ci0gICAgICB9Ci0gICBkZWZhdWx0OgotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6c2V0X2JhZF9yZXBlYXQocmVfc3ludGF4X2Jhc2UqIHB0KQotewotICAgc3dpdGNoKHB0LT50eXBlKQotICAgewotICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X2RvdF9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwOgotICAgY2FzZSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwOgotICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXA6Ci0gICAgICB7Ci0gICAgICAgICB1bnNpZ25lZCBzdGF0ZV9pZCA9IHN0YXRpY19jYXN0PHJlX3JlcGVhdCo+KHB0KS0+c3RhdGVfaWQ7Ci0gICAgICAgICBzdGF0aWMgY29uc3QgbmRuYm9vc3Q6OnVpbnRtYXhfdCBvbmUgPSAxdUw7Ci0gICAgICAgICBpZihzdGF0ZV9pZCA8PSBzaXplb2YobV9iYWRfcmVwZWF0cykgKiBDSEFSX0JJVCkKLSAgICAgICAgICAgIG1fYmFkX3JlcGVhdHMgfD0gKG9uZSA8PCBzdGF0ZV9pZCk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1zeW50YXhfZWxlbWVudF90eXBlIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmdldF9yZXBlYXRfdHlwZShyZV9zeW50YXhfYmFzZSogc3RhdGUpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgIGlmKHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3JlcCkKLSAgIHsKLSAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgcmVwZWF0aW5nIGEgc2luZ2xlIHN0YXRlOgotICAgICAgaWYoc3RhdGUtPm5leHQucC0+bmV4dC5wLT5uZXh0LnAgPT0gc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5hbHQucCkKLSAgICAgIHsKLSAgICAgICAgIHN3aXRjaChzdGF0ZS0+bmV4dC5wLT50eXBlKQotICAgICAgICAgewotICAgICAgICAgY2FzZSByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X3dpbGQ6Ci0gICAgICAgICAgICByZXR1cm4gcmVfZGV0YWlsOjpzeW50YXhfZWxlbWVudF9kb3RfcmVwOwotICAgICAgICAgY2FzZSByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X2xpdGVyYWw6Ci0gICAgICAgICAgICByZXR1cm4gcmVfZGV0YWlsOjpzeW50YXhfZWxlbWVudF9jaGFyX3JlcDsKLSAgICAgICAgIGNhc2UgcmVfZGV0YWlsOjpzeW50YXhfZWxlbWVudF9zZXQ6Ci0gICAgICAgICAgICByZXR1cm4gcmVfZGV0YWlsOjpzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwOwotICAgICAgICAgY2FzZSByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X2xvbmdfc2V0OgotICAgICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfZGV0YWlsOjpyZV9zZXRfbG9uZzxtX3R5cGU+Kj4oc3RhdGUtPm5leHQucCktPnNpbmdsZXRvbikKLSAgICAgICAgICAgICAgIHJldHVybiByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgfQotICAgfQotICAgcmV0dXJuIHN0YXRlLT50eXBlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6cHJvYmVfbGVhZGluZ19yZXBlYXQocmVfc3ludGF4X2Jhc2UqIHN0YXRlKQotewotICAgLy8gZW51bWVyYXRlIG91ciBzdGF0ZXMsIGFuZCBzZWUgaWYgd2UgaGF2ZSBhIGxlYWRpbmcgcmVwZWF0IAotICAgLy8gZm9yIHdoaWNoIGZhaWxlZCBzZWFyY2ggcmVzdGFydHMgY2FuIGJlIG9wdGltaXNlZDsKLSAgIGRvCi0gICB7Ci0gICAgICBzd2l0Y2goc3RhdGUtPnR5cGUpCi0gICAgICB7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyazoKLSAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA+PSAwKQotICAgICAgICAgewotICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0xKQotICAgICAgICAgICAgfHwgKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMikpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBza2lwIHBhc3QgdGhlIHplcm8gd2lkdGggYXNzZXJ0aW9uOgotICAgICAgICAgICAgc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4oc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIEhhdmUgdG8gc2tpcCB0aGUgbGVhZGluZyBqdW1wIHN0YXRlOgotICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybjsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZW5kbWFyazoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZW5kX2xpbmU6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfYm91bmRhcnk6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dpdGhpbl93b3JkOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX3N0YXJ0OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX2VuZDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXN0YXJ0X2NvbnRpbnVlOgotICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2RvdF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXA6Ci0gICAgICAgICBpZih0aGlzLT5tX2hhc19iYWNrcmVmcyA9PSAwKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4oc3RhdGUpLT5sZWFkaW5nID0gdHJ1ZTsKLSAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgIH13aGlsZShzdGF0ZSk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleF9wYXJzZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleF9wYXJzZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjcyZTQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfcGFyc2VyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NzQgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBiYXNpY19yZWdleF9wYXJzZXIuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19yZWdleF9wYXJzZXIuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfUEFSU0VSX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9QQVJTRVJfSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI0NCA0ODAwKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotY2xhc3MgYmFzaWNfcmVnZXhfcGFyc2VyIDogcHVibGljIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz4KLXsKLXB1YmxpYzoKLSAgIGJhc2ljX3JlZ2V4X3BhcnNlcihyZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+KiBkYXRhKTsKLSAgIHZvaWQgcGFyc2UoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIsIHVuc2lnbmVkIGZsYWdzKTsKLSAgIHZvaWQgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgZXJyb3JfY29kZSwgc3RkOjpwdHJkaWZmX3QgcG9zaXRpb24pOwotICAgdm9pZCBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlcnJvcl9jb2RlLCBzdGQ6OnB0cmRpZmZfdCBwb3NpdGlvbiwgc3RkOjpzdHJpbmcgbWVzc2FnZSwgc3RkOjpwdHJkaWZmX3Qgc3RhcnRfcG9zKTsKLSAgIHZvaWQgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgZXJyb3JfY29kZSwgc3RkOjpwdHJkaWZmX3QgcG9zaXRpb24sIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKQotICAgewotICAgICAgZmFpbChlcnJvcl9jb2RlLCBwb3NpdGlvbiwgbWVzc2FnZSwgcG9zaXRpb24pOwotICAgfQotCi0gICBib29sIHBhcnNlX2FsbCgpOwotICAgYm9vbCBwYXJzZV9iYXNpYygpOwotICAgYm9vbCBwYXJzZV9leHRlbmRlZCgpOwotICAgYm9vbCBwYXJzZV9saXRlcmFsKCk7Ci0gICBib29sIHBhcnNlX29wZW5fcGFyZW4oKTsKLSAgIGJvb2wgcGFyc2VfYmFzaWNfZXNjYXBlKCk7Ci0gICBib29sIHBhcnNlX2V4dGVuZGVkX2VzY2FwZSgpOwotICAgYm9vbCBwYXJzZV9tYXRjaF9hbnkoKTsKLSAgIGJvb2wgcGFyc2VfcmVwZWF0KHN0ZDo6c2l6ZV90IGxvdyA9IDAsIHN0ZDo6c2l6ZV90IGhpZ2ggPSAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCkoKSk7Ci0gICBib29sIHBhcnNlX3JlcGVhdF9yYW5nZShib29sIGlzYmFzaWMpOwotICAgYm9vbCBwYXJzZV9hbHQoKTsKLSAgIGJvb2wgcGFyc2Vfc2V0KCk7Ci0gICBib29sIHBhcnNlX2JhY2tyZWYoKTsKLSAgIHZvaWQgcGFyc2Vfc2V0X2xpdGVyYWwoYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KTsKLSAgIGJvb2wgcGFyc2VfaW5uZXJfc2V0KGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCk7Ci0gICBib29sIHBhcnNlX1FFKCk7Ci0gICBib29sIHBhcnNlX3BlcmxfZXh0ZW5zaW9uKCk7Ci0gICBib29sIGFkZF9lbWFjc19jb2RlKGJvb2wgbmVnYXRlKTsKLSAgIGJvb2wgdW53aW5kX2FsdHMoc3RkOjpwdHJkaWZmX3QgbGFzdF9wYXJlbl9zdGFydCk7Ci0gICBkaWdyYXBoPGNoYXJUPiBnZXRfbmV4dF9zZXRfbGl0ZXJhbChiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQpOwotICAgY2hhclQgdW5lc2NhcGVfY2hhcmFjdGVyKCk7Ci0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBwYXJzZV9vcHRpb25zKCk7Ci0KLXByaXZhdGU6Ci0gICB0eXBlZGVmIGJvb2wgKGJhc2ljX3JlZ2V4X3BhcnNlcjo6KnBhcnNlcl9wcm9jX3R5cGUpKCk7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6c3RyaW5nX3R5cGUgc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIGNoYXJfY2xhc3NfdHlwZTsKLSAgIHBhcnNlcl9wcm9jX3R5cGUgICAgICAgICAgIG1fcGFyc2VyX3Byb2M7ICAgIC8vIHRoZSBtYWluIHBhcnNlciB0byB1c2UKLSAgIGNvbnN0IGNoYXJUKiAgICAgICAgICAgICAgIG1fYmFzZTsgICAgICAgICAgIC8vIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nIGJlaW5nIHBhcnNlZAotICAgY29uc3QgY2hhclQqICAgICAgICAgICAgICAgbV9lbmQ7ICAgICAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGJlaW5nIHBhcnNlZAotICAgY29uc3QgY2hhclQqICAgICAgICAgICAgICAgbV9wb3NpdGlvbjsgICAgICAgLy8gb3VyIGN1cnJlbnQgcGFyc2VyIHBvc2l0aW9uCi0gICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICBtX21hcmtfY291bnQ7ICAgICAvLyBob3cgbWFueSBzdWItZXhwcmVzc2lvbnMgd2UgaGF2ZQotICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgbV9tYXJrX3Jlc2V0OyAgICAgLy8gdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHdlJ3JlIGluc2lkZSBhICg/fC4uLikgYmxvY2suCi0gICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICBtX21heF9tYXJrOyAgICAgICAvLyBsYXJnZXN0IG1hcmsgY291bnQgc2VlbiBpbnNpZGUgYSAoP3wuLi4pIGJsb2NrLgotICAgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgbV9wYXJlbl9zdGFydDsgICAgLy8gd2hlcmUgdGhlIGxhc3Qgc2VlbiAnKScgYmVnYW4gKHdoZXJlIHJlcGVhdHMgYXJlIGluc2VydGVkKS4KLSAgIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgIG1fYWx0X2luc2VydF9wb2ludDsgLy8gd2hlcmUgdG8gaW5zZXJ0IHRoZSBuZXh0IGFsdGVybmF0aXZlCi0gICBib29sICAgICAgICAgICAgICAgICAgICAgICBtX2hhc19jYXNlX2NoYW5nZTsgLy8gdHJ1ZSBpZiBzb21ld2hlcmUgaW4gdGhlIGN1cnJlbnQgYmxvY2sgdGhlIGNhc2UgaGFzIGNoYW5nZWQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIGRlZmluZWQoX01fSVg4NikKLSAgIC8vIFRoaXMgaXMgYW4gdWdseSB3YXJuaW5nIHN1cHByZXNzaW9uIHdvcmthcm91bmQgKGZvciB3YXJuaW5ncyAqaW5zaWRlKiBzdGQ6OnZlY3RvcgotICAgLy8gdGhhdCBjYW4gbm90IG90aGVyd2lzZSBiZSBzdXBwcmVzc2VkKS4uLgotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YobG9uZykgPj0gc2l6ZW9mKHZvaWQqKSk7Ci0gICBzdGQ6OnZlY3Rvcjxsb25nPiAgICAgICAgICAgbV9hbHRfanVtcHM7ICAgICAgLy8gbGlzdCBvZiBhbHRlcm5hdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4KLSNlbHNlCi0gICBzdGQ6OnZlY3RvcjxzdGQ6OnB0cmRpZmZfdD4gbV9hbHRfanVtcHM7ICAgICAgLy8gbGlzdCBvZiBhbHRlcm5hdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4KLSNlbmRpZgotCi0gICBiYXNpY19yZWdleF9wYXJzZXImIG9wZXJhdG9yPShjb25zdCBiYXNpY19yZWdleF9wYXJzZXImKTsKLSAgIGJhc2ljX3JlZ2V4X3BhcnNlcihjb25zdCBiYXNpY19yZWdleF9wYXJzZXImKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpiYXNpY19yZWdleF9wYXJzZXIocmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiogZGF0YSkKLSAgIDogYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPihkYXRhKSwgbV9tYXJrX2NvdW50KDApLCBtX21hcmtfcmVzZXQoLTEpLCBtX21heF9tYXJrKDApLCBtX3BhcmVuX3N0YXJ0KDApLCBtX2FsdF9pbnNlcnRfcG9pbnQoMCksIG1faGFzX2Nhc2VfY2hhbmdlKGZhbHNlKQotewotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMiwgdW5zaWduZWQgbF9mbGFncykKLXsKLSAgIC8vIHBhc3MgbF9mbGFncyBvbiB0byBiYXNlIGNsYXNzOgotICAgdGhpcy0+aW5pdChsX2ZsYWdzKTsKLSAgIC8vIHNldCB1cCBwb2ludGVyczoKLSAgIG1fcG9zaXRpb24gPSBtX2Jhc2UgPSBwMTsKLSAgIG1fZW5kID0gcDI7Ci0gICAvLyBlbXB0eSBzdHJpbmdzIGFyZSBlcnJvcnM6Ci0gICBpZigocDEgPT0gcDIpICYmIAotICAgICAgKAotICAgICAgICAgKChsX2ZsYWdzICYgcmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSkgIT0gcmVnYmFzZTo6cGVybF9zeW50YXhfZ3JvdXApCi0gICAgICAgICB8fCAobF9mbGFncyAmIHJlZ2Jhc2U6Om5vX2VtcHR5X2V4cHJlc3Npb25zKQotICAgICAgKQotICAgICApCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZW1wdHksIDApOwotICAgICAgcmV0dXJuOwotICAgfQotICAgLy8gc2VsZWN0IHdoaWNoIHBhcnNlciB0byB1c2U6Ci0gICBzd2l0Y2gobF9mbGFncyAmIHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUpCi0gICB7Ci0gICBjYXNlIHJlZ2Jhc2U6OnBlcmxfc3ludGF4X2dyb3VwOgotICAgICAgewotICAgICAgICAgbV9wYXJzZXJfcHJvYyA9ICZiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2V4dGVuZGVkOwotICAgICAgICAgLy8KLSAgICAgICAgIC8vIEFkZCBhIGxlYWRpbmcgcGFyZW4gd2l0aCBpbmRleCB6ZXJvIHRvIGdpdmUgcmVjdXJzaW9ucyBhIHRhcmdldDoKLSAgICAgICAgIC8vCi0gICAgICAgICByZV9icmFjZSogYnIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9zdGFydG1hcmssIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgICAgIGJyLT5pbmRleCA9IDA7Ci0gICAgICAgICBici0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2UgcmVnYmFzZTo6YmFzaWNfc3ludGF4X2dyb3VwOgotICAgICAgbV9wYXJzZXJfcHJvYyA9ICZiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2Jhc2ljOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2Jhc2U6OmxpdGVyYWw6Ci0gICAgICBtX3BhcnNlcl9wcm9jID0gJmJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfbGl0ZXJhbDsKLSAgICAgIGJyZWFrOwotICAgZGVmYXVsdDoKLSAgICAgIC8vIE9vb3BzLCBzb21lb25lIGhhcyBtYW5hZ2VkIHRvIHNldCBtb3JlIHRoYW4gb25lIG9mIHRoZSBtYWluIG9wdGlvbiBmbGFncywgCi0gICAgICAvLyBzbyB0aGlzIG11c3QgYmUgYW4gZXJyb3I6Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdW5rbm93biwgMCwgIkFuIGludmFsaWQgY29tYmluYXRpb24gb2YgcmVndWxhciBleHByZXNzaW9uIHN5bnRheCBmbGFncyB3YXMgdXNlZC4iKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLQotICAgLy8gcGFyc2UgYWxsIG91ciBjaGFyYWN0ZXJzOgotICAgYm9vbCByZXN1bHQgPSBwYXJzZV9hbGwoKTsKLSAgIC8vCi0gICAvLyBVbndpbmQgb3VyIGFsdGVybmF0aXZlczoKLSAgIC8vCi0gICB1bndpbmRfYWx0cygtMSk7Ci0gICAvLyByZXNldCBsX2ZsYWdzIGFzIGEgZ2xvYmFsIHNjb3BlICg/aW1zeCkgbWF5IGhhdmUgYWx0ZXJlZCB0aGVtOgotICAgdGhpcy0+ZmxhZ3MobF9mbGFncyk7Ci0gICAvLyBpZiB3ZSBoYXZlbid0IGdvYmJsZWQgdXAgYWxsIHRoZSBjaGFyYWN0ZXJzIHRoZW4gd2UgbXVzdAotICAgLy8gaGF2ZSBoYWQgYW4gdW5leHBlY3RlZCAnKScgOgotICAgaWYoIXJlc3VsdCkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX2Jhc2UsIG1fcG9zaXRpb24pLCAiRm91bmQgYSBjbG9zaW5nICkgd2l0aCBubyBjb3JyZXNwb25kaW5nIG9wZW5lbmluZyBwYXJlbnRoZXNpcy4iKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIC8vIGlmIGFuIGVycm9yIGhhcyBiZWVuIHNldCB0aGVuIGdpdmUgdXAgbm93OgotICAgaWYodGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMpCi0gICAgICByZXR1cm47Ci0gICAvLyBmaWxsIGluIG91ciBzdWItZXhwcmVzc2lvbiBjb3VudDoKLSAgIHRoaXMtPm1fcGRhdGEtPm1fbWFya19jb3VudCA9IDEgKyBtX21hcmtfY291bnQ7Ci0gICB0aGlzLT5maW5hbGl6ZShwMSwgcDIpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlcnJvcl9jb2RlLCBzdGQ6OnB0cmRpZmZfdCBwb3NpdGlvbikKLXsKLSAgIC8vIGdldCB0aGUgZXJyb3IgbWVzc2FnZToKLSAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSB0aGlzLT5tX3BkYXRhLT5tX3B0cmFpdHMtPmVycm9yX3N0cmluZyhlcnJvcl9jb2RlKTsKLSAgIGZhaWwoZXJyb3JfY29kZSwgcG9zaXRpb24sIG1lc3NhZ2UpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlcnJvcl9jb2RlLCBzdGQ6OnB0cmRpZmZfdCBwb3NpdGlvbiwgc3RkOjpzdHJpbmcgbWVzc2FnZSwgc3RkOjpwdHJkaWZmX3Qgc3RhcnRfcG9zKQotewotICAgaWYoMCA9PSB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykgLy8gdXBkYXRlIHRoZSBlcnJvciBjb2RlIGlmIG5vdCBhbHJlYWR5IHNldAotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMgPSBlcnJvcl9jb2RlOwotICAgbV9wb3NpdGlvbiA9IG1fZW5kOyAvLyBkb24ndCBib3RoZXIgcGFyc2luZyBhbnl0aGluZyBlbHNlCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUwotICAgLy8KLSAgIC8vIEF1Z21lbnQgZXJyb3IgbWVzc2FnZSB3aXRoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdGV4dDoKLSAgIC8vCi0gICBpZihzdGFydF9wb3MgPT0gcG9zaXRpb24pCi0gICAgICBzdGFydF9wb3MgPSAoc3RkOjptYXgpKHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigwKSwgcG9zaXRpb24gLSBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMTApKTsKLSAgIHN0ZDo6cHRyZGlmZl90IGVuZF9wb3MgPSAoc3RkOjptaW4pKHBvc2l0aW9uICsgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDEwKSwgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KG1fZW5kIC0gbV9iYXNlKSk7Ci0gICBpZihlcnJvcl9jb2RlICE9IHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZW1wdHkpCi0gICB7Ci0gICAgICBpZigoc3RhcnRfcG9zICE9IDApIHx8IChlbmRfcG9zICE9IChtX2VuZCAtIG1fYmFzZSkpKQotICAgICAgICAgbWVzc2FnZSArPSAiICBUaGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcGFyc2luZyB0aGUgcmVndWxhciBleHByZXNzaW9uIGZyYWdtZW50OiAnIjsKLSAgICAgIGVsc2UKLSAgICAgICAgIG1lc3NhZ2UgKz0gIiAgVGhlIGVycm9yIG9jY3VycmVkIHdoaWxlIHBhcnNpbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbjogJyI7Ci0gICAgICBpZihzdGFydF9wb3MgIT0gZW5kX3BvcykKLSAgICAgIHsKLSAgICAgICAgIG1lc3NhZ2UgKz0gc3RkOjpzdHJpbmcobV9iYXNlICsgc3RhcnRfcG9zLCBtX2Jhc2UgKyBwb3NpdGlvbik7Ci0gICAgICAgICBtZXNzYWdlICs9ICI+Pj5IRVJFPj4+IjsKLSAgICAgICAgIG1lc3NhZ2UgKz0gc3RkOjpzdHJpbmcobV9iYXNlICsgcG9zaXRpb24sIG1fYmFzZSArIGVuZF9wb3MpOwotICAgICAgfQotICAgICAgbWVzc2FnZSArPSAiJy4iOwotICAgfQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KSkKLSAgIHsKLSAgICAgIG5kbmJvb3N0OjpyZWdleF9lcnJvciBlKG1lc3NhZ2UsIGVycm9yX2NvZGUsIHBvc2l0aW9uKTsKLSAgICAgIGUucmFpc2UoKTsKLSAgIH0KLSNlbHNlCi0gICAodm9pZClwb3NpdGlvbjsgLy8gc3VwcHJlc3Mgd2FybmluZ3MuCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfYWxsKCkKLXsKLSAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgIHdoaWxlKHJlc3VsdCAmJiAobV9wb3NpdGlvbiAhPSBtX2VuZCkpCi0gICB7Ci0gICAgICByZXN1bHQgPSAodGhpcy0+Km1fcGFyc2VyX3Byb2MpKCk7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NzAyKQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9iYXNpYygpCi17Ci0gICBzd2l0Y2godGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgewotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGU6Ci0gICAgICByZXR1cm4gcGFyc2VfYmFzaWNfZXNjYXBlKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RvdDoKLSAgICAgIHJldHVybiBwYXJzZV9tYXRjaF9hbnkoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2FyZXQ6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZG9sbGFyOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2VuZF9saW5lKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9zdGFyOgotICAgICAgaWYoISh0aGlzLT5tX2xhc3Rfc3RhdGUpIHx8ICh0aGlzLT5tX2xhc3Rfc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZSkpCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgpOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9wbHVzOgotICAgICAgaWYoISh0aGlzLT5tX2xhc3Rfc3RhdGUpIHx8ICh0aGlzLT5tX2xhc3Rfc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZSkgfHwgISh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpKQotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoMSk7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3F1ZXN0aW9uOgotICAgICAgaWYoISh0aGlzLT5tX2xhc3Rfc3RhdGUpIHx8ICh0aGlzLT5tX2xhc3Rfc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZSkgfHwgISh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpKQotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoMCwgMSk7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fc2V0OgotICAgICAgcmV0dXJuIHBhcnNlX3NldCgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9uZXdsaW5lOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5ld2xpbmVfYWx0KQotICAgICAgICAgcmV0dXJuIHBhcnNlX2FsdCgpOwotICAgICAgZWxzZQotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2V4dGVuZGVkKCkKLXsKLSAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyazoKLSAgICAgIHJldHVybiBwYXJzZV9vcGVuX3BhcmVuKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcms6Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZToKLSAgICAgIHJldHVybiBwYXJzZV9leHRlbmRlZF9lc2NhcGUoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZG90OgotICAgICAgcmV0dXJuIHBhcnNlX21hdGNoX2FueSgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jYXJldDoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZSgKLSAgICAgICAgICh0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpub19tb2RfbSA/IHN5bnRheF9lbGVtZW50X2J1ZmZlcl9zdGFydCA6IHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmUpKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kb2xsYXI6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoCi0gICAgICAgICAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fbW9kX20gPyBzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kIDogc3ludGF4X2VsZW1lbnRfZW5kX2xpbmUpKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9zdGFyOgotICAgICAgaWYobV9wb3NpdGlvbiA9PSB0aGlzLT5tX2Jhc2UpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkcmVwZWF0LCAwLCAiVGhlIHJlcGVhdCBvcGVyYXRvciBcIipcIiBjYW5ub3Qgc3RhcnQgYSByZWd1bGFyIGV4cHJlc3Npb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfcmVwZWF0KCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3F1ZXN0aW9uOgotICAgICAgaWYobV9wb3NpdGlvbiA9PSB0aGlzLT5tX2Jhc2UpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkcmVwZWF0LCAwLCAiVGhlIHJlcGVhdCBvcGVyYXRvciBcIj9cIiBjYW5ub3Qgc3RhcnQgYSByZWd1bGFyIGV4cHJlc3Npb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfcmVwZWF0KDAsMSk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3BsdXM6Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IHRoaXMtPm1fYmFzZSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRyZXBlYXQsIDAsICJUaGUgcmVwZWF0IG9wZXJhdG9yIFwiK1wiIGNhbm5vdCBzdGFydCBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoMSk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2U6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfcmVwZWF0X3JhbmdlKGZhbHNlKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfYnJhY2U6Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsICJGb3VuZCBhIGNsb3NpbmcgcmVwZXRpdGlvbiBvcGVyYXRvciB9IHdpdGggbm8gY29ycmVzcG9uZGluZyB7LiIpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcjoKLSAgICAgIHJldHVybiBwYXJzZV9hbHQoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9zZXQ6Ci0gICAgICByZXR1cm4gcGFyc2Vfc2V0KCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X25ld2xpbmU6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bmV3bGluZV9hbHQpCi0gICAgICAgICByZXR1cm4gcGFyc2VfYWx0KCk7Ci0gICAgICBlbHNlCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9oYXNoOgotICAgICAgLy8KLSAgICAgIC8vIElmIHdlIGhhdmUgYSBtb2RfeCBmbGFnIHNldCwgdGhlbiBza2lwIHVudGlsCi0gICAgICAvLyB3ZSBnZXQgdG8gYSBuZXdsaW5lIGNoYXJhY3RlcjoKLSAgICAgIC8vCi0gICAgICBpZigodGhpcy0+ZmxhZ3MoKSAKLSAgICAgICAgICYgKHJlZ2Jhc2U6Om5vX3BlcmxfZXh8cmVnYmFzZTo6bW9kX3gpKQotICAgICAgICAgPT0gcmVnYmFzZTo6bW9kX3gpCi0gICAgICB7Ci0gICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgIWlzX3NlcGFyYXRvcigqbV9wb3NpdGlvbisrKSl7fQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgIGRlZmF1bHQ6Ci0gICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9saXRlcmFsKCkKLXsKLSAgIC8vIGFwcGVuZCB0aGlzIGFzIGEgbGl0ZXJhbCBwcm92aWRlZCBpdCdzIG5vdCBhIHNwYWNlIGNoYXJhY3RlcgotICAgLy8gb3IgdGhlIHBlcmwgb3B0aW9uIHJlZ2Jhc2U6Om1vZF94IGlzIG5vdCBzZXQ6Ci0gICBpZigKLSAgICAgICgodGhpcy0+ZmxhZ3MoKSAKLSAgICAgICAgICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGV8cmVnYmFzZTo6bW9kX3h8cmVnYmFzZTo6bm9fcGVybF9leCkpIAotICAgICAgICAgICAgIT0gcmVnYmFzZTo6bW9kX3gpCi0gICAgICB8fCAhdGhpcy0+bV90cmFpdHMuaXNjdHlwZSgqbV9wb3NpdGlvbiwgdGhpcy0+bV9tYXNrX3NwYWNlKSkKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9saXRlcmFsKCptX3Bvc2l0aW9uKTsKLSAgICsrbV9wb3NpdGlvbjsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9vcGVuX3BhcmVuKCkKLXsKLSAgIC8vCi0gICAvLyBza2lwIHRoZSAnKCcgYW5kIGVycm9yIGNoZWNrOgotICAgLy8KLSAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICAvLwotICAgLy8gYmVnaW4gYnkgY2hlY2tpbmcgZm9yIGEgcGVybC1zdHlsZSAoPy4uLikgZXh0ZW5zaW9uOgotICAgLy8KLSAgIGlmKAotICAgICAgICAgKCh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkgPT0gMCkKLSAgICAgICAgIHx8ICgodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6ZW1hY3NfZXgpKSA9PSAocmVnYmFzZTo6YmFzaWNfc3ludGF4X2dyb3VwfHJlZ2Jhc2U6OmVtYWNzX2V4KSkKLSAgICAgKQotICAgewotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3F1ZXN0aW9uKQotICAgICAgICAgcmV0dXJuIHBhcnNlX3BlcmxfZXh0ZW5zaW9uKCk7Ci0gICB9Ci0gICAvLwotICAgLy8gdXBkYXRlIG91ciBtYXJrIGNvdW50LCBhbmQgYXBwZW5kIHRoZSByZXF1aXJlZCBzdGF0ZToKLSAgIC8vCi0gICB1bnNpZ25lZCBtYXJraWQgPSAwOwotICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vc3VicykpCi0gICB7Ci0gICAgICBtYXJraWQgPSArK21fbWFya19jb3VudDsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKQotICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLnB1c2hfYmFjayhzdGQ6OnBhaXI8c3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90PihzdGQ6OmRpc3RhbmNlKG1fYmFzZSwgbV9wb3NpdGlvbikgLSAxLCAwKSk7Ci0jZWxzZQotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbikKLSAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3Vicy5wdXNoX2JhY2soc3RkOjpwYWlyPHN0ZDo6c2l6ZV90LCBzdGQ6OnNpemVfdD4oKG1fcG9zaXRpb24gLSBtX2Jhc2UpIC0gMSwgMCkpOwotI2VuZGlmCi0gICB9Ci0gICByZV9icmFjZSogcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9zdGFydG1hcmssIHNpemVvZihyZV9icmFjZSkpKTsKLSAgIHBiLT5pbmRleCA9IG1hcmtpZDsKLSAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgIHN0ZDo6cHRyZGlmZl90IGxhc3RfcGFyZW5fc3RhcnQgPSB0aGlzLT5nZXRvZmZzZXQocGIpOwotICAgLy8gYmFjayB1cCBpbnNlcnRpb24gcG9pbnQgZm9yIGFsdGVybmF0aW9ucywgYW5kIHNldCBuZXcgcG9pbnQ6Ci0gICBzdGQ6OnB0cmRpZmZfdCBsYXN0X2FsdF9wb2ludCA9IG1fYWx0X2luc2VydF9wb2ludDsKLSAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgbV9hbHRfaW5zZXJ0X3BvaW50ID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKTsKLSAgIC8vCi0gICAvLyBiYWNrIHVwIHRoZSBjdXJyZW50IGZsYWdzIGluIGNhc2Ugd2UgaGF2ZSBhIG5lc3RlZCAoP2ltc3gpIGdyb3VwOgotICAgLy8KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdHMgPSB0aGlzLT5mbGFncygpOwotICAgYm9vbCBvbGRfY2FzZV9jaGFuZ2UgPSBtX2hhc19jYXNlX2NoYW5nZTsKLSAgIG1faGFzX2Nhc2VfY2hhbmdlID0gZmFsc2U7IC8vIG5vIGNoYW5nZXMgdG8gdGhpcyBzY29wZSBhcyB5ZXQuLi4KLSAgIC8vCi0gICAvLyBCYWNrIHVwIGJyYW5jaCByZXNldCBkYXRhIGluIGNhc2Ugd2UgaGF2ZSBhIG5lc3RlZCAoP3wuLi4pCi0gICAvLwotICAgaW50IG1hcmtfcmVzZXQgPSBtX21hcmtfcmVzZXQ7Ci0gICBtX21hcmtfcmVzZXQgPSAtMTsKLSAgIC8vCi0gICAvLyBub3cgcmVjdXJzaXZlbHkgYWRkIG1vcmUgc3RhdGVzLCB0aGlzIHdpbGwgdGVybWluYXRlIHdoZW4gd2UgZ2V0IHRvIGEKLSAgIC8vIG1hdGNoaW5nICcpJyA6Ci0gICAvLwotICAgcGFyc2VfYWxsKCk7Ci0gICAvLwotICAgLy8gVW53aW5kIHB1c2hlZCBhbHRlcm5hdGl2ZXM6Ci0gICAvLwotICAgaWYoMCA9PSB1bndpbmRfYWx0cyhsYXN0X3BhcmVuX3N0YXJ0KSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIC8vCi0gICAvLyByZXN0b3JlIGZsYWdzOgotICAgLy8KLSAgIGlmKG1faGFzX2Nhc2VfY2hhbmdlKQotICAgewotICAgICAgLy8gdGhlIGNhc2UgaGFzIGNoYW5nZWQgaW4gb25lIG9yIG1vcmUgb2YgdGhlIGFsdGVybmF0aXZlcwotICAgICAgLy8gd2l0aGluIHRoZSBzY29wZWQgKC4uLikgYmxvY2s6IHdlIGhhdmUgdG8gYWRkIGEgc3RhdGUKLSAgICAgIC8vIHRvIHJlc2V0IHRoZSBjYXNlIHNlbnNpdGl2aXR5OgotICAgICAgc3RhdGljX2Nhc3Q8cmVfY2FzZSo+KAotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3RvZ2dsZV9jYXNlLCBzaXplb2YocmVfY2FzZSkpCi0gICAgICAgICApLT5pY2FzZSA9IG9wdHMgJiByZWdiYXNlOjppY2FzZTsKLSAgIH0KLSAgIHRoaXMtPmZsYWdzKG9wdHMpOwotICAgbV9oYXNfY2FzZV9jaGFuZ2UgPSBvbGRfY2FzZV9jaGFuZ2U7Ci0gICAvLwotICAgLy8gcmVzdG9yZSBicmFuY2ggcmVzZXQ6Ci0gICAvLwotICAgbV9tYXJrX3Jlc2V0ID0gbWFya19yZXNldDsKLSAgIC8vCi0gICAvLyB3ZSBlaXRoZXIgaGF2ZSBhICcpJyBvciB3ZSBoYXZlIHJ1biBvdXQgb2YgY2hhcmFjdGVycyBwcmVtYXR1cmVseToKLSAgIC8vCi0gICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgdGhpcy0+ZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BhcmVuLCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fYmFzZSwgbV9lbmQpKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyayk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9ESVNUQU5DRQotICAgaWYobWFya2lkICYmICh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKSkKLSAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3Vicy5hdChtYXJraWQgLSAxKS5zZWNvbmQgPSBzdGQ6OmRpc3RhbmNlKG1fYmFzZSwgbV9wb3NpdGlvbik7Ci0jZWxzZQotICAgaWYobWFya2lkICYmICh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKSkKLSAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3Vicy5hdChtYXJraWQgLSAxKS5zZWNvbmQgPSAobV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0jZW5kaWYKLSAgICsrbV9wb3NpdGlvbjsKLSAgIC8vCi0gICAvLyBhcHBlbmQgY2xvc2luZyBwYXJlbnRoZXNpcyBzdGF0ZToKLSAgIC8vCi0gICBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2VuZG1hcmssIHNpemVvZihyZV9icmFjZSkpKTsKLSAgIHBiLT5pbmRleCA9IG1hcmtpZDsKLSAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgIHRoaXMtPm1fcGFyZW5fc3RhcnQgPSBsYXN0X3BhcmVuX3N0YXJ0OwotICAgLy8KLSAgIC8vIHJlc3RvcmUgdGhlIGFsdGVybmF0ZSBpbnNlcnRpb24gcG9pbnQ6Ci0gICAvLwotICAgdGhpcy0+bV9hbHRfaW5zZXJ0X3BvaW50ID0gbGFzdF9hbHRfcG9pbnQ7Ci0gICAvLwotICAgLy8gYWxsb3cgYmFja3JlZnMgdG8gdGhpcyBtYXJrOgotICAgLy8KLSAgIGlmKChtYXJraWQgPiAwKSAmJiAobWFya2lkIDwgc2l6ZW9mKHVuc2lnbmVkKSAqIENIQVJfQklUKSkKLSAgICAgIHRoaXMtPm1fYmFja3JlZnMgfD0gMXUgPDwgKG1hcmtpZCAtIDEpOwotCi0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfYmFzaWNfZXNjYXBlKCkKLXsKLSAgICsrbV9wb3NpdGlvbjsKLSAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5lc2NhcGVfc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgewotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcms6Ci0gICAgICByZXR1cm4gcGFyc2Vfb3Blbl9wYXJlbigpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrOgotICAgICAgcmV0dXJuIGZhbHNlOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9wbHVzOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6YmtfcGx1c19xbSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoMSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9xdWVzdGlvbjoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6OmJrX3BsdXNfcW0pCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICByZXR1cm4gcGFyc2VfcmVwZWF0KDAsIDEpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZToKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpub19pbnRlcnZhbHMpCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdF9yYW5nZSh0cnVlKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfYnJhY2U6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9faW50ZXJ2YWxzKQotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgIkZvdW5kIGEgY2xvc2luZyByZXBldGl0aW9uIG9wZXJhdG9yIH0gd2l0aCBubyBjb3JyZXNwb25kaW5nIHsuIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29yOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmJrX3ZiYXIpCi0gICAgICAgICByZXR1cm4gcGFyc2VfYWx0KCk7Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGlnaXQ6Ci0gICAgICByZXR1cm4gcGFyc2VfYmFja3JlZigpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3N0YXJ0X2J1ZmZlcjoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfZW5kX2J1ZmZlcjoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3dvcmRfYXNzZXJ0OgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfYm91bmRhcnkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbm90X3dvcmRfYXNzZXJ0OgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dpdGhpbl93b3JkKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2xlZnRfd29yZDoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93b3JkX3N0YXJ0KTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3JpZ2h0X3dvcmQ6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9lbmQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KQotICAgICAgewotICAgICAgICAgYm9vbCBuZWdhdGUgPSB0cnVlOwotICAgICAgICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgICAgICAgewotICAgICAgICAgY2FzZSAndyc6Ci0gICAgICAgICAgICBuZWdhdGUgPSBmYWxzZTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgICAgY2FzZSAnVyc6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiBjaGFyX3NldDsKLSAgICAgICAgICAgIGlmKG5lZ2F0ZSkKLSAgICAgICAgICAgICAgIGNoYXJfc2V0Lm5lZ2F0ZSgpOwotICAgICAgICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKHRoaXMtPm1fd29yZF9tYXNrKTsKLSAgICAgICAgICAgIGlmKDAgPT0gdGhpcy0+YXBwZW5kX3NldChjaGFyX3NldCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY3R5cGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgIG5lZ2F0ZSA9IGZhbHNlOwotICAgICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICAgICBjYXNlICdTJzoKLSAgICAgICAgICAgIHJldHVybiBhZGRfZW1hY3NfY29kZShuZWdhdGUpOwotICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICBjYXNlICdDJzoKLSAgICAgICAgICAgIC8vIG5vdCBzdXBwb3J0ZWQgeWV0OgotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIlRoZSBcXGMgYW5kIFxcQyBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFBPU0lYIGJhc2ljIHJlZ3VsYXIgZXhwcmVzc2lvbnM6IHRyeSB0aGUgUGVybCBzeW50YXggaW5zdGVhZC4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfZXh0ZW5kZWRfZXNjYXBlKCkKLXsKLSAgICsrbV9wb3NpdGlvbjsKLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiSW5jb21wbGV0ZSBlc2NhcGUgc2VxdWVuY2UgZm91bmQuIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBib29sIG5lZ2F0ZSA9IGZhbHNlOyAvLyBpbiBjYXNlIHRoaXMgaXMgYSBjaGFyYWN0ZXIgY2xhc3MgZXNjYXBlOiBcdyBcZCBldGMKLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5lc2NhcGVfc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgewotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX25vdF9jbGFzczoKLSAgICAgIG5lZ2F0ZSA9IHRydWU7Ci0gICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jbGFzczoKLSAgICAgIHsKLWVzY2FwZV90eXBlX2NsYXNzX2p1bXA6Ci0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgICAgICAgIG1fdHlwZSBtID0gdGhpcy0+bV90cmFpdHMubG9va3VwX2NsYXNzbmFtZShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uKzEpOwotICAgICAgICAgaWYobSAhPSAwKQotICAgICAgICAgewotICAgICAgICAgICAgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4gY2hhcl9zZXQ7Ci0gICAgICAgICAgICBpZihuZWdhdGUpCi0gICAgICAgICAgICAgICBjaGFyX3NldC5uZWdhdGUoKTsKLSAgICAgICAgICAgIGNoYXJfc2V0LmFkZF9jbGFzcyhtKTsKLSAgICAgICAgICAgIGlmKDAgPT0gdGhpcy0+YXBwZW5kX3NldChjaGFyX3NldCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY3R5cGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLwotICAgICAgICAgLy8gbm90IGEgY2xhc3MsIGp1c3QgYSByZWd1bGFyIHVua25vd24gZXNjYXBlOgotICAgICAgICAgLy8KLSAgICAgICAgIHRoaXMtPmFwcGVuZF9saXRlcmFsKHVuZXNjYXBlX2NoYXJhY3RlcigpKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kaWdpdDoKLSAgICAgIHJldHVybiBwYXJzZV9iYWNrcmVmKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbGVmdF93b3JkOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfcmlnaHRfd29yZDoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93b3JkX2VuZCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9zdGFydF9idWZmZXI6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0KTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2VuZF9idWZmZXI6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYnVmZmVyX2VuZCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV93b3JkX2Fzc2VydDoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93b3JkX2JvdW5kYXJ5KTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX25vdF93b3JkX2Fzc2VydDoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93aXRoaW5fd29yZCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9aOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3NvZnRfYnVmZmVyX2VuZCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ROgotICAgICAgcmV0dXJuIHBhcnNlX1FFKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfQzoKLSAgICAgIHJldHVybiBwYXJzZV9tYXRjaF9hbnkoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9YOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2NvbWJpbmluZyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9HOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3Jlc3RhcnRfY29udGludWUpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbm90X3Byb3BlcnR5OgotICAgICAgbmVnYXRlID0gdHJ1ZTsKLSAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3Byb3BlcnR5OgotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgY2hhcl9jbGFzc190eXBlIG07Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkluY29tcGxldGUgcHJvcGVydHkgZXNjYXBlIGZvdW5kLiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgLy8gbWF5YmUgaGF2ZSBccHtkZGR9Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBiYXNlID0gbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIC8vIHNraXAgZm9yd2FyZCB1bnRpbCB3ZSBmaW5kIGVuY2xvc2luZyBicmFjZToKLSAgICAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX2JyYWNlKSkKLSAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiQ2xvc2luZyB9IG1pc3NpbmcgZnJvbSBwcm9wZXJ0eSBlc2NhcGUgc2VxdWVuY2UuIik7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtID0gdGhpcy0+bV90cmFpdHMubG9va3VwX2NsYXNzbmFtZSgrK2Jhc2UsIG1fcG9zaXRpb24rKyk7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtID0gdGhpcy0+bV90cmFpdHMubG9va3VwX2NsYXNzbmFtZShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uKzEpOwotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgfQotICAgICAgICAgaWYobSAhPSAwKQotICAgICAgICAgewotICAgICAgICAgICAgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4gY2hhcl9zZXQ7Ci0gICAgICAgICAgICBpZihuZWdhdGUpCi0gICAgICAgICAgICAgICBjaGFyX3NldC5uZWdhdGUoKTsKLSAgICAgICAgICAgIGNoYXJfc2V0LmFkZF9jbGFzcyhtKTsKLSAgICAgICAgICAgIGlmKDAgPT0gdGhpcy0+YXBwZW5kX3NldChjaGFyX3NldCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY3R5cGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY3R5cGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJFc2NhcGUgc2VxdWVuY2Ugd2FzIG5laXRoZXIgYSB2YWxpZCBwcm9wZXJ0eSBub3IgYSB2YWxpZCBjaGFyYWN0ZXIgY2xhc3MgbmFtZS4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9yZXNldF9zdGFydF9tYXJrOgotICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpKQotICAgICAgewotICAgICAgICAgcmVfYnJhY2UqIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICAgICBwYi0+aW5kZXggPSAtNTsKLSAgICAgICAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBnb3RvIGVzY2FwZV90eXBlX2NsYXNzX2p1bXA7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbGluZV9lbmRpbmc6Ci0gICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyVCogZSA9IGdldF9lc2NhcGVfUl9zdHJpbmc8Y2hhclQ+KCk7Ci0gICAgICAgICBjb25zdCBjaGFyVCogb2xkX3Bvc2l0aW9uID0gbV9wb3NpdGlvbjsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBvbGRfZW5kID0gbV9lbmQ7Ci0gICAgICAgICBjb25zdCBjaGFyVCogb2xkX2Jhc2UgPSBtX2Jhc2U7Ci0gICAgICAgICBtX3Bvc2l0aW9uID0gZTsKLSAgICAgICAgIG1fYmFzZSA9IGU7Ci0gICAgICAgICBtX2VuZCA9IGUgKyB0cmFpdHM6Omxlbmd0aChlKTsKLSAgICAgICAgIGJvb2wgciA9IHBhcnNlX2FsbCgpOwotICAgICAgICAgbV9wb3NpdGlvbiA9ICsrb2xkX3Bvc2l0aW9uOwotICAgICAgICAgbV9lbmQgPSBvbGRfZW5kOwotICAgICAgICAgbV9iYXNlID0gb2xkX2Jhc2U7Ci0gICAgICAgICByZXR1cm4gcjsKLSAgICAgIH0KLSAgICAgIGdvdG8gZXNjYXBlX3R5cGVfY2xhc3NfanVtcDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9leHRlbmRlZF9iYWNrcmVmOgotICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpKQotICAgICAgewotICAgICAgICAgYm9vbCBoYXZlX2JyYWNlID0gZmFsc2U7Ci0gICAgICAgICBib29sIG5lZ2F0aXZlID0gZmFsc2U7Ci0gICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogaW5jb21wbGV0ZV9tZXNzYWdlID0gIkluY29tcGxldGUgXFxnIGVzY2FwZSBmb3VuZC4iOwotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIG1heWJlIGhhdmUgXGd7ZGRkfQotICAgICAgICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW4gPSB0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbik7Ci0gICAgICAgICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bl9lbmQgPSAwOwotICAgICAgICAgaWYoKHN5biA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKSAKLSAgICAgICAgICAgIHx8IChzeW4gPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9sZWZ0X3dvcmQpCi0gICAgICAgICAgICB8fCAoc3luID09IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfZW5kX2J1ZmZlcikpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaGF2ZV9icmFjZSA9IHRydWU7Ci0gICAgICAgICAgICBzd2l0Y2goc3luKQotICAgICAgICAgICAgewotICAgICAgICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlOgotICAgICAgICAgICAgICAgc3luX2VuZCA9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX2JyYWNlOwotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbGVmdF93b3JkOgotICAgICAgICAgICAgICAgc3luX2VuZCA9IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfcmlnaHRfd29yZDsKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgIHN5bl9lbmQgPSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2VuZF9idWZmZXI7Ci0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIG5lZ2F0aXZlID0gKCptX3Bvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJUPignLScpKTsKLSAgICAgICAgIGlmKChuZWdhdGl2ZSkgJiYgKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgY29uc3QgY2hhclQqIHBjID0gbV9wb3NpdGlvbjsKLSAgICAgICAgIGludCBpID0gdGhpcy0+bV90cmFpdHMudG9pKHBjLCBtX2VuZCwgMTApOwotICAgICAgICAgaWYoKGkgPCAwKSAmJiBzeW5fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgbmFtZWQgY2FwdHVyZSwgZ2V0IHRoZSBsZWZ0bW9zdCBvbmUgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZToKLSAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBiYXNlID0gbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHN5bl9lbmQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSA9IGhhc2hfdmFsdWVfZnJvbV9jYXB0dXJlX25hbWUoYmFzZSwgbV9wb3NpdGlvbik7Ci0gICAgICAgICAgICBwYyA9IG1fcG9zaXRpb247Ci0gICAgICAgICB9Ci0gICAgICAgICBpZihuZWdhdGl2ZSkKLSAgICAgICAgICAgIGkgPSAxICsgbV9tYXJrX2NvdW50IC0gaTsKLSAgICAgICAgIGlmKCgoaSA+IDApICYmICh0aGlzLT5tX2JhY2tyZWZzICYgKDF1IDw8IChpLTEpKSkpIHx8ICgoaSA+IDEwMDAwKSAmJiAodGhpcy0+bV9wZGF0YS0+Z2V0X2lkKGkpID4gMCkgJiYgKHRoaXMtPm1fYmFja3JlZnMgJiAoMXUgPDwgKHRoaXMtPm1fcGRhdGEtPmdldF9pZChpKS0xKSkpKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fcG9zaXRpb24gPSBwYzsKLSAgICAgICAgICAgIHJlX2JyYWNlKiBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2JhY2tyZWYsIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgICAgICAgIHBiLT5pbmRleCA9IGk7Ci0gICAgICAgICAgICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFja3JlZiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBtX3Bvc2l0aW9uID0gcGM7Ci0gICAgICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgICAgewotICAgICAgICAgICAgaWYoKG1fcG9zaXRpb24gPT0gbV9lbmQpIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gc3luX2VuZCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBnb3RvIGVzY2FwZV90eXBlX2NsYXNzX2p1bXA7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY29udHJvbF92OgotICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpKQotICAgICAgICAgZ290byBlc2NhcGVfdHlwZV9jbGFzc19qdW1wOwotICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICBkZWZhdWx0OgotICAgICAgdGhpcy0+YXBwZW5kX2xpdGVyYWwodW5lc2NhcGVfY2hhcmFjdGVyKCkpOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfbWF0Y2hfYW55KCkKLXsKLSAgIC8vCi0gICAvLyB3ZSBoYXZlIGEgJy4nIHRoYXQgY2FuIG1hdGNoIGFueSBjaGFyYWN0ZXI6Ci0gICAvLwotICAgKyttX3Bvc2l0aW9uOwotICAgc3RhdGljX2Nhc3Q8cmVfZG90Kj4oCi0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd2lsZCwgc2l6ZW9mKHJlX2RvdCkpCi0gICAgICApLT5tYXNrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vX21vZF9zIAotICAgICAgPyByZV9kZXRhaWw6OmZvcmNlX25vdF9uZXdsaW5lIAotICAgICAgICAgOiB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bW9kX3MgPwotICAgICAgICAgICAgcmVfZGV0YWlsOjpmb3JjZV9uZXdsaW5lIDogcmVfZGV0YWlsOjpkb250X2NhcmUpOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX3JlcGVhdChzdGQ6OnNpemVfdCBsb3csIHN0ZDo6c2l6ZV90IGhpZ2gpCi17Ci0gICBib29sIGdyZWVkeSA9IHRydWU7Ci0gICBib29sIHBvY2Vzc2l2ZSA9IGZhbHNlOwotICAgc3RkOjpzaXplX3QgaW5zZXJ0X3BvaW50OwotICAgLy8gCi0gICAvLyB3aGVuIHdlIGdldCB0byBoZXJlIHdlIG1heSBoYXZlIGEgbm9uLWdyZWVkeSA/IG1hcmsgc3RpbGwgdG8gY29tZToKLSAgIC8vCi0gICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgCi0gICAgICAmJiAoCi0gICAgICAgICAgICAoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpKQotICAgICAgICAgICAgfHwgKChyZWdiYXNlOjpiYXNpY19zeW50YXhfZ3JvdXB8cmVnYmFzZTo6ZW1hY3NfZXgpID09ICh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjplbWFjc19leCkpKQotICAgICAgICAgKQotICAgICAgKQotICAgewotICAgICAgLy8gT0sgd2UgaGF2ZSBhIHBlcmwgb3IgZW1hY3MgcmVnZXgsIGNoZWNrIGZvciBhICc/JzoKLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9xdWVzdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGdyZWVkeSA9IGZhbHNlOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgLy8gZm9yIHBlcmwgcmVnZXhlcyBvbmx5IGNoZWNrIGZvciBwb2Nlc3NpdmUgKysgcmVwZWF0cy4KLSAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKQotICAgICAgICAgJiYgKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjptYWluX29wdGlvbl90eXBlKSkgCi0gICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3BsdXMpKQotICAgICAgewotICAgICAgICAgcG9jZXNzaXZlID0gdHJ1ZTsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIH0KLSAgIH0KLSAgIGlmKDAgPT0gdGhpcy0+bV9sYXN0X3N0YXRlKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZHJlcGVhdCwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX2Jhc2UsIG1fcG9zaXRpb24pLCAiTm90aGluZyB0byByZXBlYXQuIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBpZih0aGlzLT5tX2xhc3Rfc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfZW5kbWFyaykKLSAgIHsKLSAgICAgIC8vIGluc2VydCBhIHJlcGVhdCBiZWZvcmUgdGhlICcoJyBtYXRjaGluZyB0aGUgbGFzdCAnKSc6Ci0gICAgICBpbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BhcmVuX3N0YXJ0OwotICAgfQotICAgZWxzZSBpZigodGhpcy0+bV9sYXN0X3N0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X2xpdGVyYWwpICYmIChzdGF0aWNfY2FzdDxyZV9saXRlcmFsKj4odGhpcy0+bV9sYXN0X3N0YXRlKS0+bGVuZ3RoID4gMSkpCi0gICB7Ci0gICAgICAvLyB0aGUgbGFzdCBzdGF0ZSB3YXMgYSBsaXRlcmFsIHdpdGggbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIsIHNwbGl0IGl0IGluIHR3bzoKLSAgICAgIHJlX2xpdGVyYWwqIGxpdCA9IHN0YXRpY19jYXN0PHJlX2xpdGVyYWwqPih0aGlzLT5tX2xhc3Rfc3RhdGUpOwotICAgICAgY2hhclQgYyA9IChzdGF0aWNfY2FzdDxjaGFyVCo+KHN0YXRpY19jYXN0PHZvaWQqPihsaXQrMSkpKVtsaXQtPmxlbmd0aCAtIDFdOwotICAgICAgLS0obGl0LT5sZW5ndGgpOwotICAgICAgLy8gbm93IGFwcGVuZCBuZXcgc3RhdGU6Ci0gICAgICBsaXQgPSBzdGF0aWNfY2FzdDxyZV9saXRlcmFsKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2xpdGVyYWwsIHNpemVvZihyZV9saXRlcmFsKSArIHNpemVvZihjaGFyVCkpKTsKLSAgICAgIGxpdC0+bGVuZ3RoID0gMTsKLSAgICAgIChzdGF0aWNfY2FzdDxjaGFyVCo+KHN0YXRpY19jYXN0PHZvaWQqPihsaXQrMSkpKVswXSA9IGM7Ci0gICAgICBpbnNlcnRfcG9pbnQgPSB0aGlzLT5nZXRvZmZzZXQodGhpcy0+bV9sYXN0X3N0YXRlKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIHJlcGVhdCB0aGUgbGFzdCBzdGF0ZSB3aGF0ZXZlciBpdCB3YXMsIG5lZWQgdG8gYWRkIHNvbWUgZXJyb3IgY2hlY2tpbmcgaGVyZToKLSAgICAgIHN3aXRjaCh0aGlzLT5tX2xhc3Rfc3RhdGUtPnR5cGUpCi0gICAgICB7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmU6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZF9saW5lOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX2JvdW5kYXJ5OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93aXRoaW5fd29yZDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9lbmQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2J1ZmZlcl9zdGFydDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYnVmZmVyX2VuZDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYWx0OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zb2Z0X2J1ZmZlcl9lbmQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Jlc3RhcnRfY29udGludWU6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2p1bXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyazoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYmFja3N0ZXA6Ci0gICAgICAgICAvLyBjYW4ndCBsZWdhbGx5IHJlcGVhdCBhbnkgb2YgdGhlIGFib3ZlOgotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZHJlcGVhdCwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgLy8gZG8gbm90aGluZy4uLgotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpbnNlcnRfcG9pbnQgPSB0aGlzLT5nZXRvZmZzZXQodGhpcy0+bV9sYXN0X3N0YXRlKTsKLSAgIH0KLSAgIC8vCi0gICAvLyBPSyB3ZSBub3cga25vdyB3aGF0IHRvIHJlcGVhdCwgc28gaW5zZXJ0IHRoZSByZXBlYXQgYXJvdW5kIGl0OgotICAgLy8KLSAgIHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4odGhpcy0+aW5zZXJ0X3N0YXRlKGluc2VydF9wb2ludCwgc3ludGF4X2VsZW1lbnRfcmVwLCByZV9yZXBlYXRlcl9zaXplKSk7Ci0gICByZXAtPm1pbiA9IGxvdzsKLSAgIHJlcC0+bWF4ID0gaGlnaDsKLSAgIHJlcC0+Z3JlZWR5ID0gZ3JlZWR5OwotICAgcmVwLT5sZWFkaW5nID0gZmFsc2U7Ci0gICAvLyBzdG9yZSBvdXIgcmVwZWF0ZXIgcG9zaXRpb24gZm9yIGxhdGVyOgotICAgc3RkOjpwdHJkaWZmX3QgcmVwX29mZiA9IHRoaXMtPmdldG9mZnNldChyZXApOwotICAgLy8gYW5kIGFwcGVuZCBhIGJhY2sganVtcCB0byB0aGUgcmVwZWF0OgotICAgcmVfanVtcCogam1wID0gc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9qdW1wLCBzaXplb2YocmVfanVtcCkpKTsKLSAgIGptcC0+YWx0LmkgPSByZXBfb2ZmIC0gdGhpcy0+Z2V0b2Zmc2V0KGptcCk7Ci0gICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgIC8vIG5vdyBmaWxsIGluIHRoZSBhbHQganVtcCBmb3IgdGhlIHJlcGVhdDoKLSAgIHJlcCA9IHN0YXRpY19jYXN0PHJlX3JlcGVhdCo+KHRoaXMtPmdldGFkZHJlc3MocmVwX29mZikpOwotICAgcmVwLT5hbHQuaSA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCkgLSByZXBfb2ZmOwotICAgLy8KLSAgIC8vIElmIHRoZSByZXBlYXQgaXMgcG9jZXNzaXZlIHRoZW4gYnJhY2tldCB0aGUgcmVwZWF0IHdpdGggYSAoPz4uLi4pCi0gICAvLyBpbmRlcGVuZGVudCBzdWItZXhwcmVzc2lvbiBjb25zdHJ1Y3Q6Ci0gICAvLwotICAgaWYocG9jZXNzaXZlKQotICAgewotICAgICAgaWYobV9wb3NpdGlvbiAhPSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vCi0gICAgICAgICAvLyBDaGVjayBmb3IgaWxsZWdhbCBmb2xsb3dpbmcgcXVhbnRpZmllciwgd2UgaGF2ZSB0byBkbyB0aGlzIGhlcmUsIGJlY2F1c2UKLSAgICAgICAgIC8vIHRoZSBleHRyYSBzdGF0ZXMgd2UgaW5zZXJ0IGJlbG93IGNpcmN1bXZlbnRzIG91ciB1c3VhbCBlcnJvciBjaGVja2luZyA6LSgKLSAgICAgICAgIC8vCi0gICAgICAgICBzd2l0Y2godGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgICAgICAgewotICAgICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9zdGFyOgotICAgICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9wbHVzOgotICAgICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9xdWVzdGlvbjoKLSAgICAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZToKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRyZXBlYXQsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcmVfYnJhY2UqIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5pbnNlcnRfc3RhdGUoaW5zZXJ0X3BvaW50LCBzeW50YXhfZWxlbWVudF9zdGFydG1hcmssIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgIHBiLT5pbmRleCA9IC0zOwotICAgICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgICAgam1wID0gc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHRoaXMtPmluc2VydF9zdGF0ZShpbnNlcnRfcG9pbnQgKyBzaXplb2YocmVfYnJhY2UpLCBzeW50YXhfZWxlbWVudF9qdW1wLCBzaXplb2YocmVfanVtcCkpKTsKLSAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgICAgam1wLT5hbHQuaSA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCkgLSB0aGlzLT5nZXRvZmZzZXQoam1wKTsKLSAgICAgIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfZW5kbWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgcGItPmluZGV4ID0gLTM7Ci0gICAgICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfcmVwZWF0X3JhbmdlKGJvb2wgaXNiYXNpYykKLXsKLSAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbmNvbXBsZXRlX21lc3NhZ2UgPSAiTWlzc2luZyB9IGluIHF1YW50aWZpZWQgcmVwZXRpdGlvbi4iOwotICAgLy8KLSAgIC8vIHBhcnNlIGEgcmVwZWF0LXJhbmdlOgotICAgLy8KLSAgIHN0ZDo6c2l6ZV90IG1pbiwgbWF4OwotICAgaW50IHY7Ci0gICAvLyBza2lwIHdoaXRlc3BhY2U6Ci0gICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgdGhpcy0+bV90cmFpdHMuaXNjdHlwZSgqbV9wb3NpdGlvbiwgdGhpcy0+bV9tYXNrX3NwYWNlKSkKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgIGlmKHRoaXMtPm1fcG9zaXRpb24gPT0gdGhpcy0+bV9lbmQpCi0gICB7Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIC8vIFRyZWF0IHRoZSBvcGVuaW5nICd7JyBhcyBhIGxpdGVyYWwgY2hhcmFjdGVyLCByZXdpbmQgdG8gc3RhcnQgb2YgZXJyb3I6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIH0KLSAgIC8vIGdldCBtaW46Ci0gICB2ID0gdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxMCk7Ci0gICAvLyBza2lwIHdoaXRlc3BhY2U6Ci0gICBpZih2IDwgMCkKLSAgIHsKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgLy8gVHJlYXQgdGhlIG9wZW5pbmcgJ3snIGFzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIsIHJld2luZCB0byBzdGFydCBvZiBlcnJvcjoKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKSAtLW1fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgfQotICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmIHRoaXMtPm1fdHJhaXRzLmlzY3R5cGUoKm1fcG9zaXRpb24sIHRoaXMtPm1fbWFza19zcGFjZSkpCi0gICAgICArK21fcG9zaXRpb247Ci0gICBpZih0aGlzLT5tX3Bvc2l0aW9uID09IHRoaXMtPm1fZW5kKQotICAgewotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLyBUcmVhdCB0aGUgb3BlbmluZyAneycgYXMgYSBsaXRlcmFsIGNoYXJhY3RlciwgcmV3aW5kIHRvIHN0YXJ0IG9mIGVycm9yOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIC0tbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICB9Ci0gICBtaW4gPSB2OwotICAgLy8gc2VlIGlmIHdlIGhhdmUgYSBjb21tYToKLSAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jb21tYSkKLSAgIHsKLSAgICAgIC8vIG1vdmUgb24gYW5kIGVycm9yIGNoZWNrOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgLy8gc2tpcCB3aGl0ZXNwYWNlOgotICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmIHRoaXMtPm1fdHJhaXRzLmlzY3R5cGUoKm1fcG9zaXRpb24sIHRoaXMtPm1fbWFza19zcGFjZSkpCi0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICBpZih0aGlzLT5tX3Bvc2l0aW9uID09IHRoaXMtPm1fZW5kKQotICAgICAgewotICAgICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBUcmVhdCB0aGUgb3BlbmluZyAneycgYXMgYSBsaXRlcmFsIGNoYXJhY3RlciwgcmV3aW5kIHRvIHN0YXJ0IG9mIGVycm9yOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICB9Ci0gICAgICAvLyBnZXQgdGhlIHZhbHVlIGlmIGFueToKLSAgICAgIHYgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgIG1heCA9ICh2ID49IDApID8gKHN0ZDo6c2l6ZV90KXYgOiAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCkoKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG5vIGNvbW1hLCBtYXggPSBtaW46Ci0gICAgICBtYXggPSBtaW47Ci0gICB9Ci0gICAvLyBza2lwIHdoaXRlc3BhY2U6Ci0gICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgdGhpcy0+bV90cmFpdHMuaXNjdHlwZSgqbV9wb3NpdGlvbiwgdGhpcy0+bV9tYXNrX3NwYWNlKSkKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgIC8vIE9LIG5vdyBjaGVjayB0cmFpbGluZyB9OgotICAgaWYodGhpcy0+bV9wb3NpdGlvbiA9PSB0aGlzLT5tX2VuZCkKLSAgIHsKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgLy8gVHJlYXQgdGhlIG9wZW5pbmcgJ3snIGFzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIsIHJld2luZCB0byBzdGFydCBvZiBlcnJvcjoKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKSAtLW1fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgfQotICAgaWYoaXNiYXNpYykKLSAgIHsKLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBpZih0aGlzLT5tX3Bvc2l0aW9uID09IHRoaXMtPm1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfQotICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX2JyYWNlKQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgZWxzZQotICAgewotICAgICAgLy8gVHJlYXQgdGhlIG9wZW5pbmcgJ3snIGFzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIsIHJld2luZCB0byBzdGFydCBvZiBlcnJvcjoKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKSAtLW1fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgfQotICAgLy8KLSAgIC8vIGZpbmFsbHkgZ28gYW5kIGFkZCB0aGUgcmVwZWF0LCB1bmxlc3MgZXJyb3I6Ci0gICAvLwotICAgaWYobWluID4gbWF4KQotICAgewotICAgICAgLy8gQmFja3RyYWNrIHRvIGVycm9yIGxvY2F0aW9uOgotICAgICAgbV9wb3NpdGlvbiAtPSAyOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuaXNjdHlwZSgqbV9wb3NpdGlvbiwgdGhpcy0+bV93b3JkX21hc2spKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkYnJhY2UsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgcmV0dXJuIHBhcnNlX3JlcGVhdChtaW4sIG1heCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2FsdCgpCi17Ci0gICAvLwotICAgLy8gZXJyb3IgY2hlY2s6IGlmIHRoZXJlIGhhdmUgYmVlbiBubyBwcmV2aW91cyBzdGF0ZXMsCi0gICAvLyBvciBpZiB0aGUgbGFzdCBzdGF0ZSB3YXMgYSAnKCcgdGhlbiBlcnJvcjoKLSAgIC8vCi0gICBpZigKLSAgICAgICgodGhpcy0+bV9sYXN0X3N0YXRlID09IDApIHx8ICh0aGlzLT5tX2xhc3Rfc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrKSkKLSAgICAgICYmCi0gICAgICAhKAotICAgICAgICAgKCh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSkgPT0gcmVnYmFzZTo6cGVybF9zeW50YXhfZ3JvdXApCi0gICAgICAgICAgICYmCi0gICAgICAgICAoKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpub19lbXB0eV9leHByZXNzaW9ucykgPT0gMCkKLSAgICAgICAgKQotICAgICAgKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VtcHR5LCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCAiQSByZWd1bGFyIGV4cHJlc3Npb24gY2FuIHN0YXJ0IHdpdGggdGhlIGFsdGVybmF0aW9uIG9wZXJhdG9yIHwuIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICAvLwotICAgLy8gUmVzZXQgbWFyayBjb3VudCBpZiByZXF1aXJlZDoKLSAgIC8vCi0gICBpZihtX21heF9tYXJrIDwgbV9tYXJrX2NvdW50KQotICAgICAgbV9tYXhfbWFyayA9IG1fbWFya19jb3VudDsKLSAgIGlmKG1fbWFya19yZXNldCA+PSAwKQotICAgICAgbV9tYXJrX2NvdW50ID0gbV9tYXJrX3Jlc2V0OwotCi0gICArK21fcG9zaXRpb247Ci0gICAvLwotICAgLy8gd2UgbmVlZCB0byBhcHBlbmQgYSB0cmFpbGluZyBqdW1wOiAKLSAgIC8vCi0gICByZV9zeW50YXhfYmFzZSogcGogPSB0aGlzLT5hcHBlbmRfc3RhdGUocmVfZGV0YWlsOjpzeW50YXhfZWxlbWVudF9qdW1wLCBzaXplb2YocmVfanVtcCkpOwotICAgc3RkOjpwdHJkaWZmX3QganVtcF9vZmZzZXQgPSB0aGlzLT5nZXRvZmZzZXQocGopOwotICAgLy8KLSAgIC8vIG5vdyBpbnNlcnQgdGhlIGFsdGVybmF0aXZlOgotICAgLy8KLSAgIHJlX2FsdCogcGFsdCA9IHN0YXRpY19jYXN0PHJlX2FsdCo+KHRoaXMtPmluc2VydF9zdGF0ZSh0aGlzLT5tX2FsdF9pbnNlcnRfcG9pbnQsIHN5bnRheF9lbGVtZW50X2FsdCwgcmVfYWx0X3NpemUpKTsKLSAgIGp1bXBfb2Zmc2V0ICs9IHJlX2FsdF9zaXplOwotICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICBwYWx0LT5hbHQuaSA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCkgLSB0aGlzLT5nZXRvZmZzZXQocGFsdCk7Ci0gICAvLwotICAgLy8gdXBkYXRlIG1fYWx0X2luc2VydF9wb2ludCBzbyB0aGF0IHRoZSBuZXh0IGFsdGVybmF0ZSBnZXRzCi0gICAvLyBpbnNlcnRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHNlY29uZCBvZiB0aGUgdHdvIHdlJ3ZlIGp1c3QgY3JlYXRlZDoKLSAgIC8vCi0gICB0aGlzLT5tX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgLy8KLSAgIC8vIHRoZSBzdGFydCBvZiB0aGlzIGFsdGVybmF0aXZlIG11c3QgaGF2ZSBhIGNhc2UgY2hhbmdlcyBzdGF0ZQotICAgLy8gaWYgdGhlIGN1cnJlbnQgYmxvY2sgaGFzIG1lc3NlZCBhcm91bmQgd2l0aCBjYXNlIGNoYW5nZXM6Ci0gICAvLwotICAgaWYobV9oYXNfY2FzZV9jaGFuZ2UpCi0gICB7Ci0gICAgICBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oCi0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UsIHNpemVvZihyZV9jYXNlKSkKLSAgICAgICAgICktPmljYXNlID0gdGhpcy0+bV9pY2FzZTsKLSAgIH0KLSAgIC8vCi0gICAvLyBwdXNoIHRoZSBhbHRlcm5hdGl2ZSBvbnRvIG91ciBzdGFjaywgYSByZWN1cnNpdmUKLSAgIC8vIGltcGxlbWVudGF0aW9uIGhlcmUgaXMgZWFzaWVyIHRvIHVuZGVyc3RhbmQgKGFuZCBmYXN0ZXIKLSAgIC8vIGFzIGl0IGhhcHBlbnMpLCBidXQgY2F1c2VzIGFsbCBraW5kcyBvZiBzdGFjayBvdmVyZmxvdyBwcm9ibGVtcwotICAgLy8gb24gcHJvZ3JhbXMgd2l0aCBzbWFsbCBzdGFja3MgKENPTSspLgotICAgLy8KLSAgIG1fYWx0X2p1bXBzLnB1c2hfYmFjayhqdW1wX29mZnNldCk7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2Vfc2V0KCkKLXsKLSAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbmNvbXBsZXRlX21lc3NhZ2UgPSAiQ2hhcmFjdGVyIHNldCBkZWNsYXJhdGlvbiBzdGFydGluZyB3aXRoIFsgdGVybWluYXRlZCBwcmVtYXR1cmVseSAtIGVpdGhlciBubyBdIHdhcyBmb3VuZCBvciB0aGUgc2V0IGhhZCBubyBjb250ZW50LiI7Ci0gICArK21fcG9zaXRpb247Ci0gICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4gY2hhcl9zZXQ7Ci0KLSAgIGNvbnN0IGNoYXJUKiBiYXNlID0gbV9wb3NpdGlvbjsgIC8vIHdoZXJlIHRoZSAnWycgd2FzCi0gICBjb25zdCBjaGFyVCogaXRlbV9iYXNlID0gbV9wb3NpdGlvbjsgIC8vIHdoZXJlIHRoZSAnWycgb3IgJ14nIHdhcwotCi0gICB3aGlsZShtX3Bvc2l0aW9uICE9IG1fZW5kKQotICAgewotICAgICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgICAgIHsKLSAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2FyZXQ6Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uID09IGJhc2UpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyX3NldC5uZWdhdGUoKTsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGl0ZW1fYmFzZSA9IG1fcG9zaXRpb247Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYXJzZV9zZXRfbGl0ZXJhbChjaGFyX3NldCk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2Vfc2V0OgotICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBpdGVtX2Jhc2UpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBwYXJzZV9zZXRfbGl0ZXJhbChjaGFyX3NldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGlmKDAgPT0gdGhpcy0+YXBwZW5kX3NldChjaGFyX3NldCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY3R5cGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fc2V0OgotICAgICAgICAgaWYocGFyc2VfaW5uZXJfc2V0KGNoYXJfc2V0KSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZToKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIAotICAgICAgICAgICAgLy8gbG9vayBhaGVhZCBhbmQgc2VlIGlmIHRoaXMgaXMgYSBjaGFyYWN0ZXIgY2xhc3Mgc2hvcnRjdXQKLSAgICAgICAgICAgIC8vIFxkIFx3IFxzIGV0Yy4uLgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikKLSAgICAgICAgICAgICAgID09IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY2xhc3MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBjaGFyX2NsYXNzX3R5cGUgbSA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUobV9wb3NpdGlvbiwgbV9wb3NpdGlvbisxKTsKLSAgICAgICAgICAgICAgIGlmKG0gIT0gMCkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNoYXJfc2V0LmFkZF9jbGFzcyhtKTsKLSAgICAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZih0aGlzLT5tX3RyYWl0cy5lc2NhcGVfc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pCi0gICAgICAgICAgICAgICA9PSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX25vdF9jbGFzcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIG5lZ2F0ZWQgY2hhcmFjdGVyIGNsYXNzOgotICAgICAgICAgICAgICAgY2hhcl9jbGFzc190eXBlIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKG1fcG9zaXRpb24sIG1fcG9zaXRpb24rMSk7Ci0gICAgICAgICAgICAgICBpZihtICE9IDApCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjaGFyX3NldC5hZGRfbmVnYXRlZF9jbGFzcyhtKTsKLSAgICAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gbm90IGEgY2hhcmFjdGVyIGNsYXNzLCBqdXN0IGEgcmVndWxhciBlc2NhcGU6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBwYXJzZV9zZXRfbGl0ZXJhbChjaGFyX3NldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBwYXJzZV9zZXRfbGl0ZXJhbChjaGFyX3NldCk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiBtX3Bvc2l0aW9uICE9IG1fZW5kOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9pbm5lcl9zZXQoYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KQotewotICAgc3RhdGljIGNvbnN0IGNoYXIqIGluY29tcGxldGVfbWVzc2FnZSA9ICJDaGFyYWN0ZXIgY2xhc3MgZGVjbGFyYXRpb24gc3RhcnRpbmcgd2l0aCBbIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkgLSBlaXRoZXIgbm8gXSB3YXMgZm91bmQgb3IgdGhlIHNldCBoYWQgbm8gY29udGVudC4iOwotICAgLy8KLSAgIC8vIHdlIGhhdmUgZWl0aGVyIGEgY2hhcmFjdGVyIGNsYXNzIFs6bmFtZTpdCi0gICAvLyBhIGNvbGxhdGluZyBlbGVtZW50IFsubmFtZS5dCi0gICAvLyBvciBhbiBlcXVpdmFsZW5jZSBjbGFzcyBbPW5hbWU9XQotICAgLy8KLSAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RvdDoKLSAgICAgIC8vCi0gICAgICAvLyBhIGNvbGxhdGluZyBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYSBsaXRlcmFsOgotICAgICAgLy8KLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jb2xvbjoKLSAgICAgIHsKLSAgICAgIC8vIGNoZWNrIHRoYXQgY2hhcmFjdGVyIGNsYXNzZXMgYXJlIGFjdHVhbGx5IGVuYWJsZWQ6Ci0gICAgICBpZigodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fY2hhcl9jbGFzc2VzKSkgCi0gICAgICAgICA9PSAocmVnYmFzZTo6YmFzaWNfc3ludGF4X2dyb3VwICB8IHJlZ2Jhc2U6Om5vX2NoYXJfY2xhc3NlcykpCi0gICAgICB7Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICBwYXJzZV9zZXRfbGl0ZXJhbChjaGFyX3NldCk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIC8vIHNraXAgdGhlICc6JwotICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgY29uc3QgY2hhclQqIG5hbWVfZmlyc3QgPSBtX3Bvc2l0aW9uOwotICAgICAgLy8gc2tpcCBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCB0aGVuIGZpbmQgdGhlIG1hdGNoaW5nICc6XScKLSAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAKLSAgICAgICAgICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY29sb24pKSAKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGNvbnN0IGNoYXJUKiBuYW1lX2xhc3QgPSBtX3Bvc2l0aW9uOwotICAgICAgaWYobV9lbmQgPT0gbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGlmKChtX2VuZCA9PSArK21fcG9zaXRpb24pIAotICAgICAgICAgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgLy8KLSAgICAgIC8vIGNoZWNrIGZvciBuZWdhdGVkIGNsYXNzOgotICAgICAgLy8KLSAgICAgIGJvb2wgbmVnYXRlZCA9IGZhbHNlOwotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm5hbWVfZmlyc3QpID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NhcmV0KQotICAgICAgewotICAgICAgICAgKytuYW1lX2ZpcnN0OwotICAgICAgICAgbmVnYXRlZCA9IHRydWU7Ci0gICAgICB9Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgICAgIG1fdHlwZSBtID0gdGhpcy0+bV90cmFpdHMubG9va3VwX2NsYXNzbmFtZShuYW1lX2ZpcnN0LCBuYW1lX2xhc3QpOwotICAgICAgaWYobSA9PSAwKQotICAgICAgewotICAgICAgICAgaWYoY2hhcl9zZXQuZW1wdHkoKSAmJiAobmFtZV9sYXN0IC0gbmFtZV9maXJzdCA9PSAxKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIG1heWJlIGEgc3BlY2lhbCBjYXNlOgotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaWYoIChtX3Bvc2l0aW9uICE9IG1fZW5kKSAKLSAgICAgICAgICAgICAgICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgCi0gICAgICAgICAgICAgICAgICA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuZXNjYXBlX3N5bnRheF90eXBlKCpuYW1lX2ZpcnN0KSAKLSAgICAgICAgICAgICAgICAgID09IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbGVmdF93b3JkKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuZXNjYXBlX3N5bnRheF90eXBlKCpuYW1lX2ZpcnN0KSAKLSAgICAgICAgICAgICAgICAgID09IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfcmlnaHRfd29yZCkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93b3JkX2VuZCk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY3R5cGUsIG5hbWVfZmlyc3QgLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgaWYobmVnYXRlZCA9PSBmYWxzZSkKLSAgICAgICAgIGNoYXJfc2V0LmFkZF9jbGFzcyhtKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIGNoYXJfc2V0LmFkZF9uZWdhdGVkX2NsYXNzKG0pOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VxdWFsOgotICAgICAgewotICAgICAgLy8gc2tpcCB0aGUgJz0nCi0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBjb25zdCBjaGFyVCogbmFtZV9maXJzdCA9IG1fcG9zaXRpb247Ci0gICAgICAvLyBza2lwIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIHRoZW4gZmluZCB0aGUgbWF0Y2hpbmcgJz1dJwotICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpIAotICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lcXVhbCkpIAotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgY29uc3QgY2hhclQqIG5hbWVfbGFzdCA9IG1fcG9zaXRpb247Ci0gICAgICBpZihtX2VuZCA9PSBtX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgaWYoKG1fZW5kID09ICsrbV9wb3NpdGlvbikgCi0gICAgICAgICB8fCAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldCkpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBzdHJpbmdfdHlwZSBtID0gdGhpcy0+bV90cmFpdHMubG9va3VwX2NvbGxhdGVuYW1lKG5hbWVfZmlyc3QsIG5hbWVfbGFzdCk7Ci0gICAgICBpZigoMCA9PSBtLnNpemUoKSkgfHwgKG0uc2l6ZSgpID4gMikpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29sbGF0ZSwgbmFtZV9maXJzdCAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBkaWdyYXBoPGNoYXJUPiBkOwotICAgICAgZC5maXJzdCA9IG1bMF07Ci0gICAgICBpZihtLnNpemUoKSA+IDEpCi0gICAgICAgICBkLnNlY29uZCA9IG1bMV07Ci0gICAgICBlbHNlCi0gICAgICAgICBkLnNlY29uZCA9IDA7Ci0gICAgICBjaGFyX3NldC5hZGRfZXF1aXZhbGVudChkKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgfQotICAgZGVmYXVsdDoKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgIGJyZWFrOwotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX3NldF9saXRlcmFsKGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCkKLXsKLSAgIGRpZ3JhcGg8Y2hhclQ+IHN0YXJ0X3JhbmdlKGdldF9uZXh0X3NldF9saXRlcmFsKGNoYXJfc2V0KSk7Ci0gICBpZihtX2VuZCA9PSBtX3Bvc2l0aW9uKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kYXNoKQotICAgewotICAgICAgLy8gd2UgaGF2ZSBhIHJhbmdlOgotICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQpCi0gICAgICB7Ci0gICAgICAgICBkaWdyYXBoPGNoYXJUPiBlbmRfcmFuZ2UgPSBnZXRfbmV4dF9zZXRfbGl0ZXJhbChjaGFyX3NldCk7Ci0gICAgICAgICBjaGFyX3NldC5hZGRfcmFuZ2Uoc3RhcnRfcmFuZ2UsIGVuZF9yYW5nZSk7Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGFzaCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2Vfc2V0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gdHJhaWxpbmcgLSA6Ci0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcmFuZ2UsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgfQotICAgY2hhcl9zZXQuYWRkX3NpbmdsZShzdGFydF9yYW5nZSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotZGlncmFwaDxjaGFyVD4gYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpnZXRfbmV4dF9zZXRfbGl0ZXJhbChiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQpCi17Ci0gICBkaWdyYXBoPGNoYXJUPiByZXN1bHQ7Ci0gICBzd2l0Y2godGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgewotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kYXNoOgotICAgICAgaWYoIWNoYXJfc2V0LmVtcHR5KCkpCi0gICAgICB7Ci0gICAgICAgICAvLyBzZWUgaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIHNldDoKLSAgICAgICAgIGlmKCgrK21fcG9zaXRpb24gPT0gbV9lbmQpIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2Vfc2V0KSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9yYW5nZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgfQotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgcmVzdWx0LmZpcnN0ID0gKm1fcG9zaXRpb24rKzsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZToKLSAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiBlc2NhcGVzIGFyZSBzdXBwb3J0ZWQgZmlyc3Q6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpub19lc2NhcGVfaW5fbGlzdHMpCi0gICAgICB7Ci0gICAgICAgICByZXN1bHQgPSAqbV9wb3NpdGlvbisrOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICByZXN1bHQgPSB1bmVzY2FwZV9jaGFyYWN0ZXIoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX3NldDoKLSAgIHsKLSAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZG90KQotICAgICAgewotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgcmVzdWx0LmZpcnN0ID0gKm1fcG9zaXRpb247Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGNvbnN0IGNoYXJUKiBuYW1lX2ZpcnN0ID0gbV9wb3NpdGlvbjsKLSAgICAgIC8vIHNraXAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgdGhlbiBmaW5kIHRoZSBtYXRjaGluZyAnOl0nCi0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29sbGF0ZSwgbmFtZV9maXJzdCAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpIAotICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kb3QpKSAKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGNvbnN0IGNoYXJUKiBuYW1lX2xhc3QgPSBtX3Bvc2l0aW9uOwotICAgICAgaWYobV9lbmQgPT0gbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBuYW1lX2ZpcnN0IC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBpZigobV9lbmQgPT0gKyttX3Bvc2l0aW9uKSAKLSAgICAgICAgIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2Vfc2V0KSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBuYW1lX2ZpcnN0IC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBzdHJpbmdfdHlwZSBzID0gdGhpcy0+bV90cmFpdHMubG9va3VwX2NvbGxhdGVuYW1lKG5hbWVfZmlyc3QsIG5hbWVfbGFzdCk7Ci0gICAgICBpZihzLmVtcHR5KCkgfHwgKHMuc2l6ZSgpID4gMikpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29sbGF0ZSwgbmFtZV9maXJzdCAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgcmVzdWx0LmZpcnN0ID0gc1swXTsKLSAgICAgIGlmKHMuc2l6ZSgpID4gMSkKLSAgICAgICAgIHJlc3VsdC5zZWNvbmQgPSBzWzFdOwotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0LnNlY29uZCA9IDA7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgZGVmYXVsdDoKLSAgICAgIHJlc3VsdCA9ICptX3Bvc2l0aW9uKys7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0vLwotLy8gZG9lcyBhIHZhbHVlIGZpdCBpbiB0aGUgc3BlY2lmaWVkIGNoYXJUIHR5cGU/Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotYm9vbCB2YWxpZF92YWx1ZShjaGFyVCwgaW50IHYsIGNvbnN0IG1wbDo6dHJ1ZV8mKQotewotICAgcmV0dXJuICh2ID4+IChzaXplb2YoY2hhclQpICogQ0hBUl9CSVQpKSA9PSAwOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotYm9vbCB2YWxpZF92YWx1ZShjaGFyVCwgaW50LCBjb25zdCBtcGw6OmZhbHNlXyYpCi17Ci0gICByZXR1cm4gdHJ1ZTsgLy8gdiB3aWxsIGFsc3dheXMgZml0IGluIGEgY2hhclQKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWJvb2wgdmFsaWRfdmFsdWUoY2hhclQgYywgaW50IHYpCi17Ci0gICByZXR1cm4gdmFsaWRfdmFsdWUoYywgdiwgbXBsOjpib29sXzwoc2l6ZW9mKGNoYXJUKSA8IHNpemVvZihpbnQpKT4oKSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotY2hhclQgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+Ojp1bmVzY2FwZV9jaGFyYWN0ZXIoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotICAgY2hhclQgcmVzdWx0KDApOwotICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJFc2NhcGUgc2VxdWVuY2UgdGVybWluYXRlZCBwcmVtYXR1cmVseS4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5lc2NhcGVfc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgewotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NvbnRyb2xfYToKLSAgICAgIHJlc3VsdCA9IGNoYXJUKCdcYScpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfZToKLSAgICAgIHJlc3VsdCA9IGNoYXJUKDI3KTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NvbnRyb2xfZjoKLSAgICAgIHJlc3VsdCA9IGNoYXJUKCdcZicpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY29udHJvbF9uOgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1xuJyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jb250cm9sX3I6Ci0gICAgICByZXN1bHQgPSBjaGFyVCgnXHInKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NvbnRyb2xfdDoKLSAgICAgIHJlc3VsdCA9IGNoYXJUKCdcdCcpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY29udHJvbF92OgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1x2Jyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV93b3JkX2Fzc2VydDoKLSAgICAgIHJlc3VsdCA9IGNoYXJUKCdcYicpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfYXNjaWlfY29udHJvbDoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkFTQ0lJIGVzY2FwZSBzZXF1ZW5jZSB0ZXJtaW5hdGVkIHByZW1hdHVyZWx5LiIpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PGNoYXJUPigqbV9wb3NpdGlvbiAlIDMyKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2hleDoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZSB0ZXJtaW5hdGVkIHByZW1hdHVyZWx5LiIpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIC8vIG1heWJlIGhhdmUgXHh7ZGRkfQotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJNaXNzaW5nIH0gaW4gaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlLiIpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgIH0KLSAgICAgICAgIGludCBpID0gdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxNik7Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgIHx8IChpIDwgMCkKLSAgICAgICAgICAgIHx8ICgoc3RkOjpudW1lcmljX2xpbWl0czxjaGFyVD46OmlzX3NwZWNpYWxpemVkKSAmJiAoaSA+IChpbnQpKHN0ZDo6bnVtZXJpY19saW1pdHM8Y2hhclQ+OjptYXgpKCkpKQotICAgICAgICAgICAgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9icmFjZSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZGJyYWNlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiSGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlIHdhcyBpbnZhbGlkLiIpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgIH0KLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHJlc3VsdCA9IGNoYXJUKGkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgc3RkOjpwdHJkaWZmX3QgbGVuID0gKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMiksIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PihtX2VuZCAtIG1fcG9zaXRpb24pKTsKLSAgICAgICAgIGludCBpID0gdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBsZW4sIDE2KTsKLSAgICAgICAgIGlmKChpIDwgMCkKLSAgICAgICAgICAgIHx8ICF2YWxpZF92YWx1ZShjaGFyVCgwKSwgaSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkVzY2FwZSBzZXF1ZW5jZSBkaWQgbm90IGVuY29kZSBhIHZhbGlkIGNoYXJhY3Rlci4iKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICB9Ci0gICAgICAgICByZXN1bHQgPSBjaGFyVChpKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RpZ2l0OgotICAgICAgewotICAgICAgLy8gYW4gb2N0YWwgZXNjYXBlIHNlcXVlbmNlLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgYSB6ZXJvCi0gICAgICAvLyBmb2xsb3dlZCBieSB1cCB0byAzIG9jdGFsIGRpZ2l0czoKLSAgICAgIHN0ZDo6cHRyZGlmZl90IGxlbiA9IChzdGQ6Om1pbikoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX3Bvc2l0aW9uLCBtX2VuZCksIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90Pig0KSk7Ci0gICAgICBjb25zdCBjaGFyVCogYnAgPSBtX3Bvc2l0aW9uOwotICAgICAgaW50IHZhbCA9IHRoaXMtPm1fdHJhaXRzLnRvaShicCwgYnAgKyAxLCA4KTsKLSAgICAgIGlmKHZhbCAhPSAwKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIC8vIE9vcHMgbm90IGFuIG9jdGFsIGVzY2FwZSBhZnRlciBhbGw6Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiSW52YWxpZCBvY3RhbCBlc2NhcGUgc2VxdWVuY2UuIik7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgdmFsID0gdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBsZW4sIDgpOwotICAgICAgaWYodmFsIDwgMCkgCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIk9jdGFsIGVzY2FwZSBzZXF1ZW5jZSBpcyBpbnZhbGlkLiIpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyVD4odmFsKTsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9uYW1lZF9jaGFyOgotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIG1heWJlIGhhdmUgXE57bmFtZX0KLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKQotICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgICAgLy8gc2tpcCBmb3J3YXJkIHVudGlsIHdlIGZpbmQgZW5jbG9zaW5nIGJyYWNlOgotICAgICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfYnJhY2UpKQotICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cmluZ190eXBlIHMgPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY29sbGF0ZW5hbWUoKytiYXNlLCBtX3Bvc2l0aW9uKyspOwotICAgICAgICAgICAgaWYocy5lbXB0eSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKHMuc2l6ZSgpID09IDEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXR1cm4gc1swXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIC8vIGZhbGwgdGhyb3VnaCBpcyBhIGZhaWx1cmU6Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICBkZWZhdWx0OgotICAgICAgcmVzdWx0ID0gKm1fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIH0KLSAgICsrbV9wb3NpdGlvbjsKLSAgIHJldHVybiByZXN1bHQ7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9iYWNrcmVmKCkKLXsKLSAgIE5ETkJPT1NUX0FTU0VSVChtX3Bvc2l0aW9uICE9IG1fZW5kKTsKLSAgIGNvbnN0IGNoYXJUKiBwYyA9IG1fcG9zaXRpb247Ci0gICBpbnQgaSA9IHRoaXMtPm1fdHJhaXRzLnRvaShwYywgcGMgKyAxLCAxMCk7Ci0gICBpZigoaSA9PSAwKSB8fCAoKCh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSkgPT0gcmVnYmFzZTo6cGVybF9zeW50YXhfZ3JvdXApICYmICh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9fYmtfcmVmcykpKQotICAgewotICAgICAgLy8gbm90IGEgYmFja3JlZiBhdCBhbGwgYnV0IGFuIG9jdGFsIGVzY2FwZSBzZXF1ZW5jZToKLSAgICAgIGNoYXJUIGMgPSB1bmVzY2FwZV9jaGFyYWN0ZXIoKTsKLSAgICAgIHRoaXMtPmFwcGVuZF9saXRlcmFsKGMpOwotICAgfQotICAgZWxzZSBpZigoaSA+IDApICYmICh0aGlzLT5tX2JhY2tyZWZzICYgKDF1IDw8IChpLTEpKSkpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uID0gcGM7Ci0gICAgICByZV9icmFjZSogcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9iYWNrcmVmLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICBwYi0+aW5kZXggPSBpOwotICAgICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWNrcmVmLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9RRSgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0gICAvLwotICAgLy8gcGFyc2UgYSBcUS4uLlxFIHNlcXVlbmNlOgotICAgLy8KLSAgICsrbV9wb3NpdGlvbjsgLy8gc2tpcCB0aGUgUQotICAgY29uc3QgY2hhclQqIHN0YXJ0ID0gbV9wb3NpdGlvbjsKLSAgIGNvbnN0IGNoYXJUKiBlbmQ7Ci0gICBkbwotICAgewotICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpIAotICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpKQotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vICBhIFxRLi4uXEUgc2VxdWVuY2UgbWF5IHRlcm1pbmF0ZSB3aXRoIHRoZSBlbmQgb2YgdGhlIGV4cHJlc3Npb246Ci0gICAgICAgICBlbmQgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgYnJlYWs7ICAKLSAgICAgIH0KLSAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkgLy8gc2tpcCB0aGUgZXNjYXBlCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiVW50ZXJtaW5hdGVkIFxcUS4uLlxcRSBzZXF1ZW5jZS4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgXEU6Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5lc2NhcGVfc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfRSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGVuZCA9IG1fcG9zaXRpb24gLSAyOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICAvLyBvdGhlcndpc2UgZ28gcm91bmQgYWdhaW46Ci0gICB9d2hpbGUodHJ1ZSk7Ci0gICAvLwotICAgLy8gbm93IGFkZCBhbGwgdGhlIGNoYXJhY3RlciBiZXR3ZWVuIHRoZSB0d28gZXNjYXBlcyBhcyBsaXRlcmFsczoKLSAgIC8vCi0gICB3aGlsZShzdGFydCAhPSBlbmQpCi0gICB7Ci0gICAgICB0aGlzLT5hcHBlbmRfbGl0ZXJhbCgqc3RhcnQpOwotICAgICAgKytzdGFydDsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfcGVybF9leHRlbnNpb24oKQotewotICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIC8vCi0gICAvLyB0cmVhdCBjb21tZW50cyBhcyBhIHNwZWNpYWwgY2FzZSwgYXMgdGhlc2UKLSAgIC8vIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgZG9uJ3Qgc3RhcnQgd2l0aCBhIGxlYWRpbmcKLSAgIC8vIHN0YXJ0bWFyayBzdGF0ZToKLSAgIC8vCi0gICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfaGFzaCkKLSAgIHsKLSAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAKLSAgICAgICAgICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbisrKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKSkKLSAgICAgIHt9ICAgICAgCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIC8vCi0gICAvLyBiYWNrdXAgc29tZSBzdGF0ZSwgYW5kIHByZXBhcmUgdGhlIHdheToKLSAgIC8vCi0gICBpbnQgbWFya2lkID0gMDsKLSAgIHN0ZDo6cHRyZGlmZl90IGp1bXBfb2Zmc2V0ID0gMDsKLSAgIHJlX2JyYWNlKiBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgc3RkOjpwdHJkaWZmX3QgbGFzdF9wYXJlbl9zdGFydCA9IHRoaXMtPmdldG9mZnNldChwYik7Ci0gICAvLyBiYWNrIHVwIGluc2VydGlvbiBwb2ludCBmb3IgYWx0ZXJuYXRpb25zLCBhbmQgc2V0IG5ldyBwb2ludDoKLSAgIHN0ZDo6cHRyZGlmZl90IGxhc3RfYWx0X3BvaW50ID0gbV9hbHRfaW5zZXJ0X3BvaW50OwotICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICBtX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgc3RkOjpwdHJkaWZmX3QgZXhwZWN0ZWRfYWx0X3BvaW50ID0gbV9hbHRfaW5zZXJ0X3BvaW50OwotICAgYm9vbCByZXN0b3JlX2ZsYWdzID0gdHJ1ZTsKLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9sZF9mbGFncyA9IHRoaXMtPmZsYWdzKCk7Ci0gICBib29sIG9sZF9jYXNlX2NoYW5nZSA9IG1faGFzX2Nhc2VfY2hhbmdlOwotICAgbV9oYXNfY2FzZV9jaGFuZ2UgPSBmYWxzZTsKLSAgIGNoYXJUIG5hbWVfZGVsaW07Ci0gICBpbnQgbWFya19yZXNldCA9IG1fbWFya19yZXNldDsKLSAgIGludCBtYXhfbWFyayA9IG1fbWF4X21hcms7Ci0gICBtX21hcmtfcmVzZXQgPSAtMTsKLSAgIG1fbWF4X21hcmsgPSBtX21hcmtfY291bnQ7Ci0gICBpbnQgdjsKLSAgIC8vCi0gICAvLyBzZWxlY3QgdGhlIGFjdHVhbCBleHRlbnNpb24gdXNlZDoKLSAgIC8vCi0gICBzd2l0Y2godGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgewotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcjoKLSAgICAgIG1fbWFya19yZXNldCA9IG1fbWFya19jb3VudDsKLSAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jb2xvbjoKLSAgICAgIC8vCi0gICAgICAvLyBhIG5vbi1jYXB0dXJpbmcgbWFyazoKLSAgICAgIC8vCi0gICAgICBwYi0+aW5kZXggPSBtYXJraWQgPSAwOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RpZ2l0OgotICAgICAgewotICAgICAgLy8KLSAgICAgIC8vIGEgcmVjdXJzaXZlIHN1YmV4cHJlc3Npb246Ci0gICAgICAvLwotICAgICAgdiA9IHRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTApOwotICAgICAgaWYoKHYgPCAwKSB8fCAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiVGhlIHJlY3Vyc2l2ZSBzdWItZXhwcmVzc2lvbiByZWZlcnMgdG8gYW4gaW52YWxpZCBtYXJraW5nIGdyb3VwLCBvciBpcyB1bnRlcm1pbmF0ZWQuIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci1pbnNlcnRfcmVjdXJzaW9uOgotICAgICAgcGItPmluZGV4ID0gbWFya2lkID0gMDsKLSAgICAgIHJlX3JlY3Vyc2UqIHByID0gc3RhdGljX2Nhc3Q8cmVfcmVjdXJzZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9yZWN1cnNlLCBzaXplb2YocmVfcmVjdXJzZSkpKTsKLSAgICAgIHByLT5hbHQuaSA9IHY7Ci0gICAgICBwci0+c3RhdGVfaWQgPSAwOwotICAgICAgc3RhdGljX2Nhc3Q8cmVfY2FzZSo+KAotICAgICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3RvZ2dsZV9jYXNlLCBzaXplb2YocmVfY2FzZSkpCi0gICAgICAgICAgICApLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9wbHVzOgotICAgICAgLy8KLSAgICAgIC8vIEEgZm9yd2FyZC1yZWxhdGl2ZSByZWN1cnNpdmUgc3ViZXhwcmVzc2lvbjoKLSAgICAgIC8vCi0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB2ID0gdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxMCk7Ci0gICAgICBpZigodiA8PSAwKSB8fCAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiQW4gaW52YWxpZCBvciB1bnRlcm1pbmF0ZWQgcmVjdXJzaXZlIHN1Yi1leHByZXNzaW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgdiArPSBtX21hcmtfY291bnQ7Ci0gICAgICBnb3RvIGluc2VydF9yZWN1cnNpb247Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Rhc2g6Ci0gICAgICAvLwotICAgICAgLy8gUG9zc2libHkgYSBiYWNrd2FyZC1yZWxhdGl2ZSByZWN1cnNpdmUgc3ViZXhwcmVzc2lvbjoKLSAgICAgIC8vCi0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB2ID0gdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxMCk7Ci0gICAgICBpZih2IDw9IDApCi0gICAgICB7Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAvLyBPb3BzIG5vdCBhIHJlbGF0aXZlIHJlY3Vyc2lvbiBhdCBhbGwsIGJ1dCBhICg/LWltc3gpIGdyb3VwOgotICAgICAgICAgZ290byBvcHRpb25fZ3JvdXBfanVtcDsKLSAgICAgIH0KLSAgICAgIHYgPSBtX21hcmtfY291bnQgKyAxIC0gdjsKLSAgICAgIGlmKHYgPD0gMCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkFuIGludmFsaWQgb3IgdW50ZXJtaW5hdGVkIHJlY3Vyc2l2ZSBzdWItZXhwcmVzc2lvbi4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGdvdG8gaW5zZXJ0X3JlY3Vyc2lvbjsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXF1YWw6Ci0gICAgICBwYi0+aW5kZXggPSBtYXJraWQgPSAtMTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGp1bXBfb2Zmc2V0ID0gdGhpcy0+Z2V0b2Zmc2V0KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9qdW1wLCBzaXplb2YocmVfanVtcCkpKTsKLSAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgICAgbV9hbHRfaW5zZXJ0X3BvaW50ID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9ub3Q6Ci0gICAgICBwYi0+aW5kZXggPSBtYXJraWQgPSAtMjsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGp1bXBfb2Zmc2V0ID0gdGhpcy0+Z2V0b2Zmc2V0KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9qdW1wLCBzaXplb2YocmVfanVtcCkpKTsKLSAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgICAgbV9hbHRfaW5zZXJ0X3BvaW50ID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2xlZnRfd29yZDoKLSAgICAgIHsKLSAgICAgICAgIC8vIGEgbG9va2JlaGluZCBhc3NlcnRpb246Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSB0ID0gdGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pOwotICAgICAgICAgaWYodCA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9ub3QpCi0gICAgICAgICAgICBwYi0+aW5kZXggPSBtYXJraWQgPSAtMjsKLSAgICAgICAgIGVsc2UgaWYodCA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lcXVhbCkKLSAgICAgICAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC0xOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUHJvYmFibHkgYSBuYW1lZCBjYXB0dXJlIHdoaWNoIGFsc28gc3RhcnRzICg/PCA6Ci0gICAgICAgICAgICBuYW1lX2RlbGltID0gJz4nOwotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZ290byBuYW1lZF9jYXB0dXJlX2p1bXA7Ci0gICAgICAgICB9Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBqdW1wX29mZnNldCA9IHRoaXMtPmdldG9mZnNldCh0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfanVtcCwgc2l6ZW9mKHJlX2p1bXApKSk7Ci0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYmFja3N0ZXAsIHNpemVvZihyZV9icmFjZSkpOwotICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICAgICBtX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfcmlnaHRfd29yZDoKLSAgICAgIC8vCi0gICAgICAvLyBhbiBpbmRlcGVuZGVudCBzdWItZXhwcmVzc2lvbjoKLSAgICAgIC8vCi0gICAgICBwYi0+aW5kZXggPSBtYXJraWQgPSAtMzsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGp1bXBfb2Zmc2V0ID0gdGhpcy0+Z2V0b2Zmc2V0KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9qdW1wLCBzaXplb2YocmVfanVtcCkpKTsKLSAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgICAgbV9hbHRfaW5zZXJ0X3BvaW50ID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcms6Ci0gICAgICB7Ci0gICAgICAvLyBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb246Ci0gICAgICBwYi0+aW5kZXggPSBtYXJraWQgPSAtNDsKLSAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICB2ID0gdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxMCk7Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGlmKCptX3Bvc2l0aW9uID09IGNoYXJUKCdSJykpCi0gICAgICB7Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKm1fcG9zaXRpb24gPT0gY2hhclQoJyYnKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBiYXNlID0gKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykpCi0gICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHYgPSAtc3RhdGljX2Nhc3Q8aW50PihoYXNoX3ZhbHVlX2Zyb21fY2FwdHVyZV9uYW1lKGJhc2UsIG1fcG9zaXRpb24pKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHYgPSAtdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxMCk7Ci0gICAgICAgICB9Ci0gICAgICAgICByZV9icmFjZSogYnIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZiwgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgICAgYnItPmluZGV4ID0gdiA8IDAgPyAodiAtIDEpIDogMDsKLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKCgqbV9wb3NpdGlvbiA9PSBjaGFyVCgnXCcnKSkgfHwgKCptX3Bvc2l0aW9uID09IGNoYXJUKCc8JykpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSArK21fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uICE9IGNoYXJUKCc+JykpICYmICgqbV9wb3NpdGlvbiAhPSBjaGFyVCgnXCcnKSkpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHYgPSBzdGF0aWNfY2FzdDxpbnQ+KGhhc2hfdmFsdWVfZnJvbV9jYXB0dXJlX25hbWUoYmFzZSwgbV9wb3NpdGlvbikpOwotICAgICAgICAgcmVfYnJhY2UqIGJyID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYsIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgICAgIGJyLT5pbmRleCA9IHY7Ci0gICAgICAgICBpZigoKCptX3Bvc2l0aW9uICE9IGNoYXJUKCc+JykpICYmICgqbV9wb3NpdGlvbiAhPSBjaGFyVCgnXCcnKSkpIHx8ICgrK21fcG9zaXRpb24gPT0gbV9lbmQpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiVW50ZXJtaW5hdGVkIG5hbWVkIGNhcHR1cmUuIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZigqbV9wb3NpdGlvbiA9PSBjaGFyVCgnRCcpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhciogZGVmID0gIkRFRklORSI7Ci0gICAgICAgICB3aGlsZSgqZGVmICYmIChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gY2hhclQoKmRlZikpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uLCArK2RlZjsKLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uID09IG1fZW5kKSB8fCAqZGVmKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJlX2JyYWNlKiBiciA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICAgICBici0+aW5kZXggPSA5OTk5OyAvLyBzcGVjaWFsIG1hZ2ljIHZhbHVlIQotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYodiA+IDApCi0gICAgICB7Ci0gICAgICAgICByZV9icmFjZSogYnIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZiwgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgICAgYnItPmluZGV4ID0gdjsKLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAvLyB2ZXJpZnkgdGhhdCB3ZSBoYXZlIGEgbG9va2FoZWFkIG9yIGxvb2tiZWhpbmQgYXNzZXJ0OgotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3F1ZXN0aW9uKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9sZWZ0X3dvcmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lcXVhbCkKLSAgICAgICAgICAgICAgICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbm90KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uIC09IDM7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZigodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VxdWFsKQotICAgICAgICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9ub3QpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fcG9zaXRpb24gLT0gMjsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrOgotICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9lbmRfYnVmZmVyOgotICAgICAgewotICAgICAgbmFtZV9kZWxpbSA9ICptX3Bvc2l0aW9uOwotbmFtZWRfY2FwdHVyZV9qdW1wOgotICAgICAgbWFya2lkID0gMDsKLSAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpub3N1YnMpKQotICAgICAgewotICAgICAgICAgbWFya2lkID0gKyttX21hcmtfY291bnQ7Ci0gICAjaWZuZGVmIE5ETkJPT1NUX05PX1NURF9ESVNUQU5DRQotICAgICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbikKLSAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3Vicy5wdXNoX2JhY2soc3RkOjpwYWlyPHN0ZDo6c2l6ZV90LCBzdGQ6OnNpemVfdD4oc3RkOjpkaXN0YW5jZShtX2Jhc2UsIG1fcG9zaXRpb24pIC0gMiwgMCkpOwotICAgI2Vsc2UKLSAgICAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pCi0gICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N1YnMucHVzaF9iYWNrKHN0ZDo6cGFpcjxzdGQ6OnNpemVfdCwgc3RkOjpzaXplX3Q+KChtX3Bvc2l0aW9uIC0gbV9iYXNlKSAtIDIsIDApKTsKLSAgICNlbmRpZgotICAgICAgfQotICAgICAgcGItPmluZGV4ID0gbWFya2lkOwotICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSArK21fcG9zaXRpb247Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gIT0gbmFtZV9kZWxpbSkpCi0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHRoaXMtPm1fcGRhdGEtPnNldF9uYW1lKGJhc2UsIG1fcG9zaXRpb24sIG1hcmtpZCk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgICAgIH0KLSAgIGRlZmF1bHQ6Ci0gICAgICBpZigqbV9wb3NpdGlvbiA9PSBjaGFyVCgnUicpKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdiA9IDA7Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBnb3RvIGluc2VydF9yZWN1cnNpb247Ci0gICAgICB9Ci0gICAgICBpZigqbV9wb3NpdGlvbiA9PSBjaGFyVCgnJicpKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHYgPSBzdGF0aWNfY2FzdDxpbnQ+KGhhc2hfdmFsdWVfZnJvbV9jYXB0dXJlX25hbWUoYmFzZSwgbV9wb3NpdGlvbikpOwotICAgICAgICAgZ290byBpbnNlcnRfcmVjdXJzaW9uOwotICAgICAgfQotICAgICAgaWYoKm1fcG9zaXRpb24gPT0gY2hhclQoJ1AnKSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKm1fcG9zaXRpb24gPT0gY2hhclQoJz4nKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBiYXNlID0gbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspKQotICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2ID0gc3RhdGljX2Nhc3Q8aW50PihoYXNoX3ZhbHVlX2Zyb21fY2FwdHVyZV9uYW1lKGJhc2UsIG1fcG9zaXRpb24pKTsKLSAgICAgICAgICAgIGdvdG8gaW5zZXJ0X3JlY3Vyc2lvbjsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8vCi0gICAgICAvLyBsZXRzIGFzc3VtZSB0aGF0IHdlIGhhdmUgYSAoP2ltc3gpIGdyb3VwIGFuZCB0cnkgYW5kIHBhcnNlIGl0OgotICAgICAgLy8KLW9wdGlvbl9ncm91cF9qdW1wOgotICAgICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0cyA9IHBhcnNlX29wdGlvbnMoKTsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgLy8gbWFrZSBhIG5vdGUgb2Ygd2hldGhlciB3ZSBoYXZlIGEgY2FzZSBjaGFuZ2U6Ci0gICAgICBtX2hhc19jYXNlX2NoYW5nZSA9ICgob3B0cyAmIHJlZ2Jhc2U6OmljYXNlKSAhPSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlKSk7Ci0gICAgICBwYi0+aW5kZXggPSBtYXJraWQgPSAwOwotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspCi0gICAgICB7Ci0gICAgICAgICAvLyB1cGRhdGUgZmxhZ3MgYW5kIGNhcnJ5IG9uIGFzIG5vcm1hbDoKLSAgICAgICAgIHRoaXMtPmZsYWdzKG9wdHMpOwotICAgICAgICAgcmVzdG9yZV9mbGFncyA9IGZhbHNlOwotICAgICAgICAgb2xkX2Nhc2VfY2hhbmdlIHw9IG1faGFzX2Nhc2VfY2hhbmdlOyAvLyBkZWZlciBlbmQgb2Ygc2NvcGUgYnkgb25lICcpJwotICAgICAgfQotICAgICAgZWxzZSBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY29sb24pCi0gICAgICB7Ci0gICAgICAgICAvLyB1cGRhdGUgZmxhZ3MgYW5kIGNhcnJ5IG9uIHVudGlsIHRoZSBtYXRjaGluZyAnKScgaXMgZm91bmQ6Ci0gICAgICAgICB0aGlzLT5mbGFncyhvcHRzKTsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0KLSAgICAgIC8vIGZpbmFsbHkgYXBwZW5kIGEgY2FzZSBjaGFuZ2Ugc3RhdGUgaWYgd2UgbmVlZCBpdDoKLSAgICAgIGlmKG1faGFzX2Nhc2VfY2hhbmdlKQotICAgICAgewotICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfY2FzZSo+KAotICAgICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3RvZ2dsZV9jYXNlLCBzaXplb2YocmVfY2FzZSkpCi0gICAgICAgICAgICApLT5pY2FzZSA9IG9wdHMgJiByZWdiYXNlOjppY2FzZTsKLSAgICAgIH0KLQotICAgfQotICAgLy8KLSAgIC8vIG5vdyByZWN1cnNpdmVseSBhZGQgbW9yZSBzdGF0ZXMsIHRoaXMgd2lsbCB0ZXJtaW5hdGUgd2hlbiB3ZSBnZXQgdG8gYQotICAgLy8gbWF0Y2hpbmcgJyknIDoKLSAgIC8vCi0gICBwYXJzZV9hbGwoKTsKLSAgIC8vCi0gICAvLyBVbndpbmQgYWx0ZXJuYXRpdmVzOgotICAgLy8KLSAgIGlmKDAgPT0gdW53aW5kX2FsdHMobGFzdF9wYXJlbl9zdGFydCkpCi0gICB7Ci0gICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJJbnZhbGlkIGFsdGVybmF0aW9uIG9wZXJhdG9ycyB3aXRoaW4gKD8uLi4pIGJsb2NrLiIpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgLy8KLSAgIC8vIHdlIGVpdGhlciBoYXZlIGEgJyknIG9yIHdlIGhhdmUgcnVuIG91dCBvZiBjaGFyYWN0ZXJzIHByZW1hdHVyZWx5OgotICAgLy8KLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICB0aGlzLT5mYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGFyZW4sIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9iYXNlLCBtX2VuZCkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgTkROQk9PU1RfQVNTRVJUKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKTsKLSAgICsrbV9wb3NpdGlvbjsKLSAgIC8vCi0gICAvLyByZXN0b3JlIHRoZSBmbGFnczoKLSAgIC8vCi0gICBpZihyZXN0b3JlX2ZsYWdzKQotICAgewotICAgICAgLy8gYXBwZW5kIGEgY2FzZSBjaGFuZ2Ugc3RhdGUgaWYgd2UgbmVlZCBpdDoKLSAgICAgIGlmKG1faGFzX2Nhc2VfY2hhbmdlKQotICAgICAgewotICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfY2FzZSo+KAotICAgICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3RvZ2dsZV9jYXNlLCBzaXplb2YocmVfY2FzZSkpCi0gICAgICAgICAgICApLT5pY2FzZSA9IG9sZF9mbGFncyAmIHJlZ2Jhc2U6OmljYXNlOwotICAgICAgfQotICAgICAgdGhpcy0+ZmxhZ3Mob2xkX2ZsYWdzKTsKLSAgIH0KLSAgIC8vCi0gICAvLyBzZXQgdXAgdGhlIGp1bXAgcG9pbnRlciBpZiB3ZSBoYXZlIG9uZToKLSAgIC8vCi0gICBpZihqdW1wX29mZnNldCkKLSAgIHsKLSAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgICAgcmVfanVtcCogam1wID0gc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHRoaXMtPmdldGFkZHJlc3MoanVtcF9vZmZzZXQpKTsKLSAgICAgIGptcC0+YWx0LmkgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpIC0gdGhpcy0+Z2V0b2Zmc2V0KGptcCk7Ci0gICAgICBpZigodGhpcy0+bV9sYXN0X3N0YXRlID09IGptcCkgJiYgKG1hcmtpZCAhPSAtMikpCi0gICAgICB7Ci0gICAgICAgICAvLyBPb3BzLi4uIHdlIGRpZG4ndCBoYXZlIGFueXRoaW5nIGluc2lkZSB0aGUgYXNzZXJ0aW9uLgotICAgICAgICAgLy8gTm90ZSB3ZSBkb24ndCBnZXQgaGVyZSBmb3IgbmVnYXRlZCBmb3J3YXJkIGxvb2thaGVhZCBhcyAoPyEpCi0gICAgICAgICAvLyBkb2VzIGhhdmUgc29tZSB1c2VzLgotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiSW52YWxpZCBvciBlbXB0eSB6ZXJvIHdpZHRoIGFzc2VydGlvbi4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyB2ZXJpZnkgdGhhdCBpZiB0aGlzIGlzIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24sIHRoYXQgd2UgZG8gaGF2ZQotICAgLy8gYW4gYWx0ZXJuYXRpdmUsIGlmIG5vdCBhZGQgb25lOgotICAgLy8KLSAgIGlmKG1hcmtpZCA9PSAtNCkKLSAgIHsKLSAgICAgIHJlX3N5bnRheF9iYXNlKiBiID0gdGhpcy0+Z2V0YWRkcmVzcyhleHBlY3RlZF9hbHRfcG9pbnQpOwotICAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgZXhhY3RseSBvbmUgYWx0ZXJuYXRpdmUgZm9sbG93aW5nIHRoaXMgc3RhdGU6Ci0gICAgICBpZihiLT50eXBlICE9IHN5bnRheF9lbGVtZW50X2FsdCkKLSAgICAgIHsKLSAgICAgICAgIHJlX2FsdCogYWx0ID0gc3RhdGljX2Nhc3Q8cmVfYWx0Kj4odGhpcy0+aW5zZXJ0X3N0YXRlKGV4cGVjdGVkX2FsdF9wb2ludCwgc3ludGF4X2VsZW1lbnRfYWx0LCBzaXplb2YocmVfYWx0KSkpOwotICAgICAgICAgYWx0LT5hbHQuaSA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCkgLSB0aGlzLT5nZXRvZmZzZXQoYWx0KTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYodGhpcy0+Z2V0YWRkcmVzcyhzdGF0aWNfY2FzdDxyZV9hbHQqPihiKS0+YWx0LmksIGIpLT50eXBlID09IHN5bnRheF9lbGVtZW50X2FsdCkKLSAgICAgIHsKLSAgICAgICAgIC8vIENhbid0IGhhdmUgc2VlbiBtb3JlIHRoYW4gb25lIGFsdGVybmF0aXZlOgotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiTW9yZSB0aGFuIG9uZSBhbHRlcm5hdGlvbiBvcGVyYXRvciB8IHdhcyBlbmNvdW50ZXJlZCBpbnNpZGUgYSBjb25kaXRpb25hbCBleHByZXNzaW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgLy8gV2UgbXVzdCAqbm90KiBoYXZlIHNlZW4gYW4gYWx0ZXJuYXRpdmUgaW5zaWRlIGEgKERFRklORSkgYmxvY2s6Ci0gICAgICAgICBiID0gdGhpcy0+Z2V0YWRkcmVzcyhiLT5uZXh0LmksIGIpOwotICAgICAgICAgaWYoKGItPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYpICYmIChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KGIpLT5pbmRleCA9PSA5OTk5KSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybiwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkFsdGVybmF0aW9uIG9wZXJhdG9ycyBhcmUgbm90IGFsbG93ZWQgaW5zaWRlIGEgREVGSU5FIGJsb2NrLiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgLy8gY2hlY2sgZm9yIGludmFsaWQgcmVwZXRpdGlvbiBvZiBuZXh0IHN0YXRlOgotICAgICAgYiA9IHRoaXMtPmdldGFkZHJlc3MoZXhwZWN0ZWRfYWx0X3BvaW50KTsKLSAgICAgIGIgPSB0aGlzLT5nZXRhZGRyZXNzKHN0YXRpY19jYXN0PHJlX2FsdCo+KGIpLT5uZXh0LmksIGIpOwotICAgICAgaWYoKGItPnR5cGUgIT0gc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYpCi0gICAgICAgICAmJiAoYi0+dHlwZSAhPSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmspKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZHJlcGVhdCwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkEgcmVwZXRpdGlvbiBvcGVyYXRvciBjYW5ub3QgYmUgYXBwbGllZCB0byBhIHplcm8td2lkdGggYXNzZXJ0aW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGFwcGVuZCBjbG9zaW5nIHBhcmVudGhlc2lzIHN0YXRlOgotICAgLy8KLSAgIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfZW5kbWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgcGItPmluZGV4ID0gbWFya2lkOwotICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgdGhpcy0+bV9wYXJlbl9zdGFydCA9IGxhc3RfcGFyZW5fc3RhcnQ7Ci0gICAvLwotICAgLy8gcmVzdG9yZSB0aGUgYWx0ZXJuYXRlIGluc2VydGlvbiBwb2ludDoKLSAgIC8vCi0gICB0aGlzLT5tX2FsdF9pbnNlcnRfcG9pbnQgPSBsYXN0X2FsdF9wb2ludDsKLSAgIC8vCi0gICAvLyBhbmQgdGhlIGNhc2UgY2hhbmdlIGRhdGE6Ci0gICAvLwotICAgbV9oYXNfY2FzZV9jaGFuZ2UgPSBvbGRfY2FzZV9jaGFuZ2U7Ci0gICAvLwotICAgLy8gQW5kIHRoZSBtYXJrX3Jlc2V0IGRhdGE6Ci0gICAvLwotICAgaWYobV9tYXhfbWFyayA+IG1fbWFya19jb3VudCkKLSAgIHsKLSAgICAgIG1fbWFya19jb3VudCA9IG1fbWF4X21hcms7Ci0gICB9Ci0gICBtX21hcmtfcmVzZXQgPSBtYXJrX3Jlc2V0OwotICAgbV9tYXhfbWFyayA9IG1heF9tYXJrOwotCi0KLSAgIGlmKG1hcmtpZCA+IDApCi0gICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9ESVNUQU5DRQotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbikKLSAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3Vicy5hdChtYXJraWQgLSAxKS5zZWNvbmQgPSBzdGQ6OmRpc3RhbmNlKG1fYmFzZSwgbV9wb3NpdGlvbikgLSAxOwotI2Vsc2UKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pCi0gICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N1YnMuYXQobWFya2lkIC0gMSkuc2Vjb25kID0gKG1fcG9zaXRpb24gLSBtX2Jhc2UpIC0gMTsKLSNlbmRpZgotICAgICAgLy8KLSAgICAgIC8vIGFsbG93IGJhY2tyZWZzIHRvIHRoaXMgbWFyazoKLSAgICAgIC8vCi0gICAgICBpZigobWFya2lkID4gMCkgJiYgKG1hcmtpZCA8IChpbnQpKHNpemVvZih1bnNpZ25lZCkgKiBDSEFSX0JJVCkpKQotICAgICAgICAgdGhpcy0+bV9iYWNrcmVmcyB8PSAxdSA8PCAobWFya2lkIC0gMSk7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6YWRkX2VtYWNzX2NvZGUoYm9vbCBuZWdhdGUpCi17Ci0gICAvLwotICAgLy8gcGFyc2VzIGFuIGVtYWNzIHN0eWxlIFxzeCBvciBcU3ggY29uc3RydWN0LgotICAgLy8KLSAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBzZXF1ZW5jZToKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4gY2hhcl9zZXQ7Ci0gICBpZihuZWdhdGUpCi0gICAgICBjaGFyX3NldC5uZWdhdGUoKTsKLQotICAgc3RhdGljIGNvbnN0IGNoYXJUIHNfcHVuY3RbNV0gPSB7ICdwJywgJ3UnLCAnbicsICdjJywgJ3QnLCB9OwotCi0gICBzd2l0Y2goKm1fcG9zaXRpb24pCi0gICB7Ci0gICBjYXNlICdzJzoKLSAgIGNhc2UgJyAnOgotICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKHRoaXMtPm1fbWFza19zcGFjZSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ3cnOgotICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKHRoaXMtPm1fd29yZF9tYXNrKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnXyc6Ci0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCckJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCcmJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCcqJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCcrJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCctJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCdfJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCc8JykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCc+JykpKTsgCi0gICAgICBicmVhazsKLSAgIGNhc2UgJy4nOgotICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUoc19wdW5jdCwgc19wdW5jdCs1KSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJygnOgotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnKCcpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnWycpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgneycpKSk7IAotICAgICAgYnJlYWs7Ci0gICBjYXNlICcpJzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJyknKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ10nKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ30nKSkpOyAKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnIic6Ci0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCciJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCdcJycpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnYCcpKSk7IAotICAgICAgYnJlYWs7Ci0gICBjYXNlICdcJyc6Ci0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCdcJycpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnLCcpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnIycpKSk7IAotICAgICAgYnJlYWs7Ci0gICBjYXNlICc8JzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJzsnKSkpOyAKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnPic6Ci0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCdcbicpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnXGYnKSkpOyAKLSAgICAgIGJyZWFrOwotICAgZGVmYXVsdDoKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBpZigwID09IHRoaXMtPmFwcGVuZF9zZXQoY2hhcl9zZXQpKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2N0eXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgICsrbV9wb3NpdGlvbjsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2Vfb3B0aW9ucygpCi17Ci0gICAvLyB3ZSBoYXZlIGEgKD9pbXN4LWltc3gpIGdyb3VwLCBjb252ZXJ0IGl0IGludG8gYSBzZXQgb2YgZmxhZ3M6Ci0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBmID0gdGhpcy0+ZmxhZ3MoKTsKLSAgIGJvb2wgYnJlYWtvdXQgPSBmYWxzZTsKLSAgIGRvCi0gICB7Ci0gICAgICBzd2l0Y2goKm1fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICBjYXNlICdzJzoKLSAgICAgICAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjptb2RfczsKLSAgICAgICAgIGYgJj0gfnJlZ2V4X2NvbnN0YW50czo6bm9fbW9kX3M7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ20nOgotICAgICAgICAgZiAmPSB+cmVnZXhfY29uc3RhbnRzOjpub19tb2RfbTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICBmIHw9IHJlZ2V4X2NvbnN0YW50czo6aWNhc2U7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgZiB8PSByZWdleF9jb25zdGFudHM6Om1vZF94OwotICAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgYnJlYWtvdXQgPSB0cnVlOwotICAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGFyZW4sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfQotICAgd2hpbGUoIWJyZWFrb3V0KTsKLSAgIAotICAgYnJlYWtvdXQgPSBmYWxzZTsKLQotICAgaWYoKm1fcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KCctJykpCi0gICB7Ci0gICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGFyZW4sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgICAgICAgIHsKLSAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgZiAmPSB+cmVnZXhfY29uc3RhbnRzOjptb2RfczsKLSAgICAgICAgICAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjpub19tb2RfczsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSAnbSc6Ci0gICAgICAgICAgICBmIHw9IHJlZ2V4X2NvbnN0YW50czo6bm9fbW9kX207Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgZiAmPSB+cmVnZXhfY29uc3RhbnRzOjppY2FzZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICBmICY9IH5yZWdleF9jb25zdGFudHM6Om1vZF94OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWtvdXQgPSB0cnVlOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGFyZW4sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgd2hpbGUoIWJyZWFrb3V0KTsKLSAgIH0KLSAgIHJldHVybiBmOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+Ojp1bndpbmRfYWx0cyhzdGQ6OnB0cmRpZmZfdCBsYXN0X3BhcmVuX3N0YXJ0KQotewotICAgLy8KLSAgIC8vIElmIHdlIGRpZG4ndCBhY3R1YWxseSBhZGQgYW55IHN0YXRlcyBhZnRlciB0aGUgbGFzdCAKLSAgIC8vIGFsdGVybmF0aXZlIHRoZW4gdGhhdCdzIGFuIGVycm9yOgotICAgLy8KLSAgIGlmKCh0aGlzLT5tX2FsdF9pbnNlcnRfcG9pbnQgPT0gc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCkpKQotICAgICAgJiYgbV9hbHRfanVtcHMuc2l6ZSgpICYmIChtX2FsdF9qdW1wcy5iYWNrKCkgPiBsYXN0X3BhcmVuX3N0YXJ0KQotICAgICAgJiYKLSAgICAgICEoCi0gICAgICAgICAoKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjptYWluX29wdGlvbl90eXBlKSA9PSByZWdiYXNlOjpwZXJsX3N5bnRheF9ncm91cCkKLSAgICAgICAgICAgJiYKLSAgICAgICAgICgodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vX2VtcHR5X2V4cHJlc3Npb25zKSA9PSAwKQotICAgICAgICApCi0gICAgICApCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZW1wdHksIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsICJDYW4ndCB0ZXJtaW5hdGUgYSBzdWItZXhwcmVzc2lvbiB3aXRoIGFuIGFsdGVybmF0aW9uIG9wZXJhdG9yIHwuIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICAvLyAKLSAgIC8vIEZpeCB1cCBvdXIgYWx0ZXJuYXRpdmVzOgotICAgLy8KLSAgIHdoaWxlKG1fYWx0X2p1bXBzLnNpemUoKSAmJiAobV9hbHRfanVtcHMuYmFjaygpID4gbGFzdF9wYXJlbl9zdGFydCkpCi0gICB7Ci0gICAgICAvLwotICAgICAgLy8gZml4IHVwIHRoZSBqdW1wIHRvIHBvaW50IHRvIHRoZSBlbmQgb2YgdGhlIHN0YXRlcwotICAgICAgLy8gdGhhdCB3ZSd2ZSBqdXN0IGFkZGVkOgotICAgICAgLy8KLSAgICAgIHN0ZDo6cHRyZGlmZl90IGp1bXBfb2Zmc2V0ID0gbV9hbHRfanVtcHMuYmFjaygpOwotICAgICAgbV9hbHRfanVtcHMucG9wX2JhY2soKTsKLSAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgICAgcmVfanVtcCogam1wID0gc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHRoaXMtPmdldGFkZHJlc3MoanVtcF9vZmZzZXQpKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChqbXAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfanVtcCk7Ci0gICAgICBqbXAtPmFsdC5pID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIGp1bXBfb2Zmc2V0OwotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY19yZWdleF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jX3JlZ2V4X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYWRkOTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jX3JlZ2V4X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgY19yZWdleF90cmFpdHMuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyByZWd1bGFyIGV4cHJlc3Npb24gdHJhaXRzIGNsYXNzIHRoYXQgd3JhcHMgdGhlIGdsb2JhbCBDIGxvY2FsZS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9DX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQ19SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfV09SS0FST1VORF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF93b3JrYXJvdW5kLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8Y2N0eXBlPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGR7Ci0gICB1c2luZyA6OnN0cmxlbjsgdXNpbmcgOjp0b2xvd2VyOwotfQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdHJ1Y3QgY19yZWdleF90cmFpdHM7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9SRUdFWF9ERUNMIGNfcmVnZXhfdHJhaXRzPGNoYXI+Ci17Ci0gICBjX3JlZ2V4X3RyYWl0cygpe30KLSAgIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzdHJpbmcgc3RyaW5nX3R5cGU7Ci0gICBzdHJ1Y3QgbG9jYWxlX3R5cGV7fTsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQzMl90IGNoYXJfY2xhc3NfdHlwZTsKLQotICAgc3RhdGljIHNpemVfdHlwZSBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBwKSAKLSAgIHsgCi0gICAgICByZXR1cm4gKHN0ZDo6c3RybGVuKShwKTsgCi0gICB9Ci0KLSAgIGNoYXIgdHJhbnNsYXRlKGNoYXIgYykgY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIGM7IAotICAgfQotICAgY2hhciB0cmFuc2xhdGVfbm9jYXNlKGNoYXIgYykgY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KChzdGQ6OnRvbG93ZXIpKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpKSk7IAotICAgfQotCi0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCB0cmFuc2Zvcm0oY29uc3QgY2hhciogcDEsIGNvbnN0IGNoYXIqIHAyKTsKLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IGNoYXIqIHAxLCBjb25zdCBjaGFyKiBwMik7Ci0KLSAgIHN0YXRpYyBjaGFyX2NsYXNzX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBsb29rdXBfY2xhc3NuYW1lKGNvbnN0IGNoYXIqIHAxLCBjb25zdCBjaGFyKiBwMik7Ci0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgY2hhciogcDEsIGNvbnN0IGNoYXIqIHAyKTsKLQotICAgc3RhdGljIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBpc2N0eXBlKGNoYXIsIGNoYXJfY2xhc3NfdHlwZSk7Ci0gICBzdGF0aWMgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgdmFsdWUoY2hhciwgaW50KTsKLQotICAgbG9jYWxlX3R5cGUgaW1idWUobG9jYWxlX3R5cGUgbCkKLSAgIHsgcmV0dXJuIGw7IH0KLSAgIGxvY2FsZV90eXBlIGdldGxvYygpY29uc3QKLSAgIHsgcmV0dXJuIGxvY2FsZV90eXBlKCk7IH0KLQotcHJpdmF0ZToKLSAgIC8vIHRoaXMgdHlwZSBpcyBub3QgY29weWFibGU6Ci0gICBjX3JlZ2V4X3RyYWl0cyhjb25zdCBjX3JlZ2V4X3RyYWl0cyYpOwotICAgY19yZWdleF90cmFpdHMmIG9wZXJhdG9yPShjb25zdCBjX3JlZ2V4X3RyYWl0cyYpOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9SRUdFWF9ERUNMIGNfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+Ci17Ci0gICBjX3JlZ2V4X3RyYWl0cygpe30KLSAgIHR5cGVkZWYgd2NoYXJfdCBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjp3c3RyaW5nIHN0cmluZ190eXBlOwotICAgc3RydWN0IGxvY2FsZV90eXBle307Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50MzJfdCBjaGFyX2NsYXNzX3R5cGU7Ci0KLSAgIHN0YXRpYyBzaXplX3R5cGUgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogcCkgCi0gICB7IAotICAgICAgcmV0dXJuIChzdGQ6Ondjc2xlbikocCk7IAotICAgfQotCi0gICB3Y2hhcl90IHRyYW5zbGF0ZSh3Y2hhcl90IGMpIGNvbnN0IAotICAgeyAKLSAgICAgIHJldHVybiBjOyAKLSAgIH0KLSAgIHdjaGFyX3QgdHJhbnNsYXRlX25vY2FzZSh3Y2hhcl90IGMpIGNvbnN0IAotICAgeyAKLSAgICAgIHJldHVybiAoc3RkOjp0b3dsb3dlcikoYyk7IAotICAgfQotCi0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCB0cmFuc2Zvcm0oY29uc3Qgd2NoYXJfdCogcDEsIGNvbnN0IHdjaGFyX3QqIHAyKTsKLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IHdjaGFyX3QqIHAxLCBjb25zdCB3Y2hhcl90KiBwMik7Ci0KLSAgIHN0YXRpYyBjaGFyX2NsYXNzX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBsb29rdXBfY2xhc3NuYW1lKGNvbnN0IHdjaGFyX3QqIHAxLCBjb25zdCB3Y2hhcl90KiBwMik7Ci0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBsb29rdXBfY29sbGF0ZW5hbWUoY29uc3Qgd2NoYXJfdCogcDEsIGNvbnN0IHdjaGFyX3QqIHAyKTsKLQotICAgc3RhdGljIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBpc2N0eXBlKHdjaGFyX3QsIGNoYXJfY2xhc3NfdHlwZSk7Ci0gICBzdGF0aWMgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgdmFsdWUod2NoYXJfdCwgaW50KTsKLQotICAgbG9jYWxlX3R5cGUgaW1idWUobG9jYWxlX3R5cGUgbCkKLSAgIHsgcmV0dXJuIGw7IH0KLSAgIGxvY2FsZV90eXBlIGdldGxvYygpY29uc3QKLSAgIHsgcmV0dXJuIGxvY2FsZV90eXBlKCk7IH0KLQotcHJpdmF0ZToKLSAgIC8vIHRoaXMgdHlwZSBpcyBub3QgY29weWFibGU6Ci0gICBjX3JlZ2V4X3RyYWl0cyhjb25zdCBjX3JlZ2V4X3RyYWl0cyYpOwotICAgY19yZWdleF90cmFpdHMmIG9wZXJhdG9yPShjb25zdCBjX3JlZ2V4X3RyYWl0cyYpOwotfTsKLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi0vLwotLy8gUHJvdmlkZSBhbiB1bnNpZ25lZCBzaG9ydCB2ZXJzaW9uIGFzIHdlbGwsIHNvIHRoZSB1c2VyIGNhbiBsaW5rIHRvIHRoaXMKLS8vIG5vIG1hdHRlciB3aGV0aGVyIHRoZXkgYnVpbGQgd2l0aCAvWmM6d2NoYXJfdCBvciBub3QgKE1TVkMgc3BlY2lmaWMpLgotLy8KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9SRUdFWF9ERUNMIGNfcmVnZXhfdHJhaXRzPHVuc2lnbmVkIHNob3J0PgotewotICAgY19yZWdleF90cmFpdHMoKXt9Ci0gICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBzaG9ydD4gc3RyaW5nX3R5cGU7Ci0gICBzdHJ1Y3QgbG9jYWxlX3R5cGV7fTsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQzMl90IGNoYXJfY2xhc3NfdHlwZTsKLQotICAgc3RhdGljIHNpemVfdHlwZSBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBwKSAKLSAgIHsgCi0gICAgICByZXR1cm4gKHN0ZDo6d2NzbGVuKSgoY29uc3Qgd2NoYXJfdCopcCk7IAotICAgfQotCi0gICB1bnNpZ25lZCBzaG9ydCB0cmFuc2xhdGUodW5zaWduZWQgc2hvcnQgYykgY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIGM7IAotICAgfQotICAgdW5zaWduZWQgc2hvcnQgdHJhbnNsYXRlX25vY2FzZSh1bnNpZ25lZCBzaG9ydCBjKSBjb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gKHN0ZDo6dG93bG93ZXIpKCh3Y2hhcl90KWMpOyAKLSAgIH0KLQotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdHJhbnNmb3JtKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMSwgY29uc3QgdW5zaWduZWQgc2hvcnQqIHAyKTsKLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMSwgY29uc3QgdW5zaWduZWQgc2hvcnQqIHAyKTsKLQotICAgc3RhdGljIGNoYXJfY2xhc3NfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9jbGFzc25hbWUoY29uc3QgdW5zaWduZWQgc2hvcnQqIHAxLCBjb25zdCB1bnNpZ25lZCBzaG9ydCogcDIpOwotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMSwgY29uc3QgdW5zaWduZWQgc2hvcnQqIHAyKTsKLQotICAgc3RhdGljIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBpc2N0eXBlKHVuc2lnbmVkIHNob3J0LCBjaGFyX2NsYXNzX3R5cGUpOwotICAgc3RhdGljIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHZhbHVlKHVuc2lnbmVkIHNob3J0LCBpbnQpOwotCi0gICBsb2NhbGVfdHlwZSBpbWJ1ZShsb2NhbGVfdHlwZSBsKQotICAgeyByZXR1cm4gbDsgfQotICAgbG9jYWxlX3R5cGUgZ2V0bG9jKCljb25zdAotICAgeyByZXR1cm4gbG9jYWxlX3R5cGUoKTsgfQotCi1wcml2YXRlOgotICAgLy8gdGhpcyB0eXBlIGlzIG5vdCBjb3B5YWJsZToKLSAgIGNfcmVnZXhfdHJhaXRzKGNvbnN0IGNfcmVnZXhfdHJhaXRzJik7Ci0gICBjX3JlZ2V4X3RyYWl0cyYgb3BlcmF0b3I9KGNvbnN0IGNfcmVnZXhfdHJhaXRzJik7Ci19OwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1dSRUdFWAotCi19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NoYXJfcmVnZXhfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY2hhcl9yZWdleF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNWU1MjI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY2hhcl9yZWdleF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgY2hhcl9yZWdleF90cmFpdHMuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBkZXByZWNhdGVkIHRyYWl0cyBjbGFzc2VzIGNoYXJfcmVnZXhfdHJhaXRzPD4uCi0gICovCi0KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9DSEFSX1JFR0VYX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfQ0hBUl9SRUdFWF9UUkFJVFNfSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi1uYW1lc3BhY2UgZGVwcmVjYXRlZHsKLS8vCi0vLyBjbGFzcyBjaGFyX3JlZ2V4X3RyYWl0c19pCi0vLyBwcm92aWRlcyBjYXNlIGluc2Vuc2l0aXZlIHRyYWl0cyBjbGFzc2VzIChkZXByZWNhdGVkKToKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIGNoYXJfcmVnZXhfdHJhaXRzX2kgOiBwdWJsaWMgcmVnZXhfdHJhaXRzPGNoYXJUPiB7fTsKLQotdGVtcGxhdGU8PgotY2xhc3MgY2hhcl9yZWdleF90cmFpdHNfaTxjaGFyPiA6IHB1YmxpYyByZWdleF90cmFpdHM8Y2hhcj4KLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgcmVnZXhfdHJhaXRzPGNoYXI+IGJhc2VfdHlwZTsKLQotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXRlbXBsYXRlPD4KLWNsYXNzIGNoYXJfcmVnZXhfdHJhaXRzX2k8d2NoYXJfdD4gOiBwdWJsaWMgcmVnZXhfdHJhaXRzPHdjaGFyX3Q+Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHdjaGFyX3QgY2hhcl90eXBlOwotICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1Y2hhcl90eXBlOwotICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90eXBlOwotICAgdHlwZWRlZiByZWdleF90cmFpdHM8d2NoYXJfdD4gYmFzZV90eXBlOwotCi19OwotI2VuZGlmCi19IC8vIG5hbWVzcGFjZSBkZXByZWNhdGVkCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBpbmNsdWRlCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY3BwX3JlZ2V4X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NwcF9yZWdleF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWM4NjU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY3BwX3JlZ2V4X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDk5ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0IEpvaG4gTWFkZG9jawotICogQ29weXJpZ2h0IDIwMTEgR2FybWluIEx0ZC4gb3IgaXRzIHN1YnNpZGlhcmllcwotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgY3BwX3JlZ2V4X3RyYWl0cy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiB0cmFpdHMgY2xhc3MgY3BwX3JlZ2V4X3RyYWl0cy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9DUFBfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9DUFBfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVfUEFUX0VYQ0VQVF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wYXR0ZXJuX2V4Y2VwdC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0RFRkFVTFRTX0hQUF9JTkNMVURFRAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0c19kZWZhdWx0cy5ocHA+Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvc3RhdGljX211dGV4LmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9QUklNQVJZX1RSQU5TRk9STQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3ByaW1hcnlfdHJhbnNmb3JtLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9PQkpFQ1RfQ0FDSEVfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGVuZGluZy9vYmplY3RfY2FjaGUuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxpc3RyZWFtPgotI2luY2x1ZGUgPGlvcz4KLSNpbmNsdWRlIDxjbGltaXRzPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ3ODYgNDI1MSkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IAotCi0vLwotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgYnkgc29tZSBjb21waWxlcnM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgY3BwX3JlZ2V4X3RyYWl0czsKLSAgIAotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotLy8KLS8vIGNsYXNzIHBhcnNlcl9idWY6Ci0vLyBhY3RzIGFzIGEgc3RyZWFtIGJ1ZmZlciB3aGljaCB3cmFwcyBhcm91bmQgYSBwYWlyIG9mIHBvaW50ZXJzOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwKLSAgICAgICAgICBjbGFzcyB0cmFpdHMgPSA6OnN0ZDo6Y2hhcl90cmFpdHM8Y2hhclQ+ID4KLWNsYXNzIHBhcnNlcl9idWYgOiBwdWJsaWMgOjpzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxjaGFyVCwgdHJhaXRzPgotewotICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfc3RyZWFtYnVmPGNoYXJULCB0cmFpdHM+IGJhc2VfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjppbnRfdHlwZSBpbnRfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OnBvc190eXBlIHBvc190eXBlOwotICAgdHlwZWRlZiA6OnN0ZDo6c3RyZWFtc2l6ZSBzdHJlYW1zaXplOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6Om9mZl90eXBlIG9mZl90eXBlOwotcHVibGljOgotICAgcGFyc2VyX2J1ZigpIDogYmFzZV90eXBlKCkgeyBzZXRidWYoMCwgMCk7IH0KLSAgIGNvbnN0IGNoYXJUKiBnZXRuZXh0KCkgeyByZXR1cm4gdGhpcy0+Z3B0cigpOyB9Ci1wcm90ZWN0ZWQ6Ci0gICBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxjaGFyVCwgdHJhaXRzPiogc2V0YnVmKGNoYXJfdHlwZSogcywgc3RyZWFtc2l6ZSBuKTsKLSAgIHR5cGVuYW1lIHBhcnNlcl9idWY8Y2hhclQsIHRyYWl0cz46OnBvc190eXBlIHNlZWtwb3MocG9zX3R5cGUgc3AsIDo6c3RkOjppb3NfYmFzZTo6b3Blbm1vZGUgd2hpY2gpOwotICAgdHlwZW5hbWUgcGFyc2VyX2J1ZjxjaGFyVCwgdHJhaXRzPjo6cG9zX3R5cGUgc2Vla29mZihvZmZfdHlwZSBvZmYsIDo6c3RkOjppb3NfYmFzZTo6c2Vla2RpciB3YXksIDo6c3RkOjppb3NfYmFzZTo6b3Blbm1vZGUgd2hpY2gpOwotcHJpdmF0ZToKLSAgIHBhcnNlcl9idWYmIG9wZXJhdG9yPShjb25zdCBwYXJzZXJfYnVmJik7Ci0gICBwYXJzZXJfYnVmKGNvbnN0IHBhcnNlcl9idWYmKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1zdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxjaGFyVCwgdHJhaXRzPioKLXBhcnNlcl9idWY8Y2hhclQsIHRyYWl0cz46OnNldGJ1ZihjaGFyX3R5cGUqIHMsIHN0cmVhbXNpemUgbikKLXsKLSAgIHRoaXMtPnNldGcocywgcywgcyArIG4pOwotICAgcmV0dXJuIHRoaXM7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci10eXBlbmFtZSBwYXJzZXJfYnVmPGNoYXJULCB0cmFpdHM+Ojpwb3NfdHlwZQotcGFyc2VyX2J1ZjxjaGFyVCwgdHJhaXRzPjo6c2Vla29mZihvZmZfdHlwZSBvZmYsIDo6c3RkOjppb3NfYmFzZTo6c2Vla2RpciB3YXksIDo6c3RkOjppb3NfYmFzZTo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjppbnRfdDxzaXplb2Yod2F5KSAqIENIQVJfQklUPjo6bGVhc3QgY2FzdF90eXBlOwotCi0gICBpZih3aGljaCAmIDo6c3RkOjppb3NfYmFzZTo6b3V0KQotICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICBzdGQ6OnB0cmRpZmZfdCBzaXplID0gdGhpcy0+ZWdwdHIoKSAtIHRoaXMtPmViYWNrKCk7Ci0gICBzdGQ6OnB0cmRpZmZfdCBwb3MgPSB0aGlzLT5ncHRyKCkgLSB0aGlzLT5lYmFjaygpOwotICAgY2hhclQqIGcgPSB0aGlzLT5lYmFjaygpOwotICAgc3dpdGNoKHN0YXRpY19jYXN0PGNhc3RfdHlwZT4od2F5KSkKLSAgIHsKLSAgIGNhc2UgOjpzdGQ6Omlvc19iYXNlOjpiZWc6Ci0gICAgICBpZigob2ZmIDwgMCkgfHwgKG9mZiA+IHNpemUpKQotICAgICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICAgICBlbHNlCi0gICAgICAgICB0aGlzLT5zZXRnKGcsIGcgKyBvZmYsIGcgKyBzaXplKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSA6OnN0ZDo6aW9zX2Jhc2U6OmVuZDoKLSAgICAgIGlmKChvZmYgPCAwKSB8fCAob2ZmID4gc2l6ZSkpCi0gICAgICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIHRoaXMtPnNldGcoZywgZyArIHNpemUgLSBvZmYsIGcgKyBzaXplKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSA6OnN0ZDo6aW9zX2Jhc2U6OmN1cjoKLSAgIHsKLSAgICAgIHN0ZDo6cHRyZGlmZl90IG5ld3BvcyA9IHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90Pihwb3MgKyBvZmYpOwotICAgICAgaWYoKG5ld3BvcyA8IDApIHx8IChuZXdwb3MgPiBzaXplKSkKLSAgICAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgICAgZWxzZQotICAgICAgICAgdGhpcy0+c2V0ZyhnLCBnICsgbmV3cG9zLCBnICsgc2l6ZSk7Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIGRlZmF1bHQ6IDsKLSAgIH0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpCi0jZW5kaWYKLSAgIHJldHVybiBzdGF0aWNfY2FzdDxwb3NfdHlwZT4odGhpcy0+Z3B0cigpIC0gdGhpcy0+ZWJhY2soKSk7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZTxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdHlwZW5hbWUgcGFyc2VyX2J1ZjxjaGFyVCwgdHJhaXRzPjo6cG9zX3R5cGUKLXBhcnNlcl9idWY8Y2hhclQsIHRyYWl0cz46OnNlZWtwb3MocG9zX3R5cGUgc3AsIDo6c3RkOjppb3NfYmFzZTo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICBpZih3aGljaCAmIDo6c3RkOjppb3NfYmFzZTo6b3V0KQotICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICBvZmZfdHlwZSBzaXplID0gc3RhdGljX2Nhc3Q8b2ZmX3R5cGU+KHRoaXMtPmVncHRyKCkgLSB0aGlzLT5lYmFjaygpKTsKLSAgIGNoYXJUKiBnID0gdGhpcy0+ZWJhY2soKTsKLSAgIGlmKG9mZl90eXBlKHNwKSA8PSBzaXplKQotICAgewotICAgICAgdGhpcy0+c2V0ZyhnLCBnICsgb2ZmX3R5cGUoc3ApLCBnICsgc2l6ZSk7Ci0gICB9Ci0gICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLX0KLQotLy8KLS8vIGNsYXNzIGNwcF9yZWdleF90cmFpdHNfYmFzZToKLS8vIGFjdHMgYXMgYSBjb250YWluZXIgZm9yIGxvY2FsZSBhbmQgdGhlIGZhY2V0cyB3ZSBhcmUgdXNpbmcuCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RydWN0IGNwcF9yZWdleF90cmFpdHNfYmFzZQotewotICAgY3BwX3JlZ2V4X3RyYWl0c19iYXNlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsKQotICAgeyBpbWJ1ZShsKTsgfQotICAgc3RkOjpsb2NhbGUgaW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGwpOwotCi0gICBzdGQ6OmxvY2FsZSBtX2xvY2FsZTsKLSAgIHN0ZDo6Y3R5cGU8Y2hhclQ+IGNvbnN0KiBtX3BjdHlwZTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0gICBzdGQ6Om1lc3NhZ2VzPGNoYXJUPiBjb25zdCogbV9wbWVzc2FnZXM7Ci0jZW5kaWYKLSAgIHN0ZDo6Y29sbGF0ZTxjaGFyVD4gY29uc3QqIG1fcGNvbGxhdGU7Ci0KLSAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGNwcF9yZWdleF90cmFpdHNfYmFzZSYgYiljb25zdAotICAgewotICAgICAgaWYobV9wY3R5cGUgPT0gYi5tX3BjdHlwZSkKLSAgICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0gICAgICAgICBpZihtX3BtZXNzYWdlcyA9PSBiLm1fcG1lc3NhZ2VzKQotICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fcGNvbGxhdGUgPCBiLm1fcGNvbGxhdGU7Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gbV9wbWVzc2FnZXMgPCBiLm1fcG1lc3NhZ2VzOwotI2Vsc2UKLSAgICAgICAgIHJldHVybiBtX3Bjb2xsYXRlIDwgYi5tX3Bjb2xsYXRlOwotI2VuZGlmCi0gICAgICB9Ci0gICAgICByZXR1cm4gbV9wY3R5cGUgPCBiLm1fcGN0eXBlOwotICAgfQotICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNwcF9yZWdleF90cmFpdHNfYmFzZSYgYiljb25zdAotICAgewotICAgICAgcmV0dXJuIChtX3BjdHlwZSA9PSBiLm1fcGN0eXBlKSAKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0gICAgICAgICAmJiAobV9wbWVzc2FnZXMgPT0gYi5tX3BtZXNzYWdlcykgCi0jZW5kaWYKLSAgICAgICAgICYmIChtX3Bjb2xsYXRlID09IGIubV9wY29sbGF0ZSk7Ci0gICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OmxvY2FsZSBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+OjppbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbCkKLXsKLSAgIHN0ZDo6bG9jYWxlIHJlc3VsdChtX2xvY2FsZSk7Ci0gICBtX2xvY2FsZSA9IGw7Ci0gICBtX3BjdHlwZSA9ICZORE5CT09TVF9VU0VfRkFDRVQoc3RkOjpjdHlwZTxjaGFyVD4sIGwpOwotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSAgIG1fcG1lc3NhZ2VzID0gTkROQk9PU1RfSEFTX0ZBQ0VUKHN0ZDo6bWVzc2FnZXM8Y2hhclQ+LCBsKSA/ICZORE5CT09TVF9VU0VfRkFDRVQoc3RkOjptZXNzYWdlczxjaGFyVD4sIGwpIDogMDsKLSNlbmRpZgotICAgbV9wY29sbGF0ZSA9ICZORE5CT09TVF9VU0VfRkFDRVQoc3RkOjpjb2xsYXRlPGNoYXJUPiwgbCk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0vLwotLy8gY2xhc3MgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyOgotLy8gaW1wbGVtZW50cyBtZXRob2RzIHRoYXQgcmVxdWlyZSBzcGVjaWFsaXNhdGlvbiBmb3IgbmFycm93IGNoYXJhY3RlcnM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyIDogcHVibGljIGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD4KLXsKLSAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHN0cmluZ190eXBlOwotICAgdHlwZWRlZiBzdGQ6Om1hcDxjaGFyVCwgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZT4gbWFwX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1hcF90eXBlOjpjb25zdF9pdGVyYXRvciBtYXBfaXRlcmF0b3JfdHlwZTsKLXB1YmxpYzoKLSAgIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcihjb25zdCBzdGQ6OmxvY2FsZSYgbCkKLSAgICAgIDogY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPihsKQotICAgewotICAgICAgaW5pdCgpOwotICAgfQotICAgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyKGNvbnN0IGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD4mIGIpCi0gICAgICA6IGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD4oYikKLSAgIHsKLSAgICAgIGluaXQoKTsKLSAgIH0KLSAgIHZvaWQgaW5pdCgpOwotCi0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXJUIGMpY29uc3QKLSAgIHsKLSAgICAgIG1hcF9pdGVyYXRvcl90eXBlIGkgPSBtX2NoYXJfbWFwLmZpbmQoYyk7Ci0gICAgICByZXR1cm4gKChpID09IG1fY2hhcl9tYXAuZW5kKCkpID8gMCA6IGktPnNlY29uZCk7Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIG1hcF9pdGVyYXRvcl90eXBlIGkgPSBtX2NoYXJfbWFwLmZpbmQoYyk7Ci0gICAgICBpZihpID09IG1fY2hhcl9tYXAuZW5kKCkpCi0gICAgICB7Ci0gICAgICAgICBpZih0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZV9iYXNlOjpsb3dlciwgYykpIHJldHVybiByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NsYXNzOwotICAgICAgICAgaWYodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGVfYmFzZTo6dXBwZXIsIGMpKSByZXR1cm4gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ub3RfY2xhc3M7Ci0gICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBpLT5zZWNvbmQ7Ci0gICB9Ci0KLXByaXZhdGU6Ci0gICBzdHJpbmdfdHlwZSBnZXRfZGVmYXVsdF9tZXNzYWdlKHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUpOwotICAgLy8gVE9ETzogdXNlIGEgaGFzaCB0YWJsZSB3aGVuIGF2YWlsYWJsZSEKLSAgIG1hcF90eXBlIG1fY2hhcl9tYXA7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci12b2lkIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD46OmluaXQoKQotewotICAgLy8gd2UgbmVlZCB0byBzdGFydCBieSBpbml0aWFsaXNpbmcgb3VyIHN5bnRheCBtYXAgc28gd2Uga25vdyB3aGljaAotICAgLy8gY2hhcmFjdGVyIGlzIHVzZWQgZm9yIHdoaWNoIHB1cnBvc2U6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotI2lmbmRlZiBfX0lCTUNQUF9fCi0gICB0eXBlbmFtZSBzdGQ6Om1lc3NhZ2VzPGNoYXJUPjo6Y2F0YWxvZyBjYXQgPSBzdGF0aWNfY2FzdDxzdGQ6Om1lc3NhZ2VzPGNoYXI+OjpjYXRhbG9nPigtMSk7Ci0jZWxzZQotICAgdHlwZW5hbWUgc3RkOjptZXNzYWdlczxjaGFyVD46OmNhdGFsb2cgY2F0ID0gcmVpbnRlcnByZXRfY2FzdDxzdGQ6Om1lc3NhZ2VzPGNoYXI+OjpjYXRhbG9nPigtMSk7Ci0jZW5kaWYKLSAgIHN0ZDo6c3RyaW5nIGNhdF9uYW1lKGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfY2F0YWxvZ19uYW1lKCkpOwotICAgaWYoY2F0X25hbWUuc2l6ZSgpICYmICh0aGlzLT5tX3BtZXNzYWdlcyAhPSAwKSkKLSAgIHsKLSAgICAgIGNhdCA9IHRoaXMtPm1fcG1lc3NhZ2VzLT5vcGVuKAotICAgICAgICAgY2F0X25hbWUsIAotICAgICAgICAgdGhpcy0+bV9sb2NhbGUpOwotICAgICAgaWYoKGludCljYXQgPCAwKQotICAgICAgewotICAgICAgICAgc3RkOjpzdHJpbmcgbSgiVW5hYmxlIHRvIG9wZW4gbWVzc2FnZSBjYXRhbG9nOiAiKTsKLSAgICAgICAgIHN0ZDo6cnVudGltZV9lcnJvciBlcnIobSArIGNhdF9uYW1lKTsKLSAgICAgICAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OnJhaXNlX3J1bnRpbWVfZXJyb3IoZXJyKTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBpZiB3ZSBoYXZlIGEgdmFsaWQgY2F0YWxvZyB0aGVuIGxvYWQgb3VyIG1lc3NhZ2VzOgotICAgLy8KLSAgIGlmKChpbnQpY2F0ID49IDApCi0gICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgICAgIHRyeXsKLSNlbmRpZgotICAgICAgICAgZm9yKHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgaSA9IDE7IGkgPCByZWdleF9jb25zdGFudHM6OnN5bnRheF9tYXg7ICsraSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHN0cmluZ190eXBlIG1zcyA9IHRoaXMtPm1fcG1lc3NhZ2VzLT5nZXQoY2F0LCAwLCBpLCBnZXRfZGVmYXVsdF9tZXNzYWdlKGkpKTsKLSAgICAgICAgICAgIGZvcih0eXBlbmFtZSBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIGogPSAwOyBqIDwgbXNzLnNpemUoKTsgKytqKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgbV9jaGFyX21hcFttc3Nbal1dID0gaTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHRoaXMtPm1fcG1lc3NhZ2VzLT5jbG9zZShjYXQpOwotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAgICB9Ci0gICAgICBjYXRjaCguLi4pCi0gICAgICB7Ci0gICAgICAgICBpZih0aGlzLT5tX3BtZXNzYWdlcykKLSAgICAgICAgICAgIHRoaXMtPm1fcG1lc3NhZ2VzLT5jbG9zZShjYXQpOwotICAgICAgICAgdGhyb3c7Ci0gICAgICB9Ci0jZW5kaWYKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSNlbmRpZgotICAgICAgZm9yKHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgaSA9IDE7IGkgPCByZWdleF9jb25zdGFudHM6OnN5bnRheF9tYXg7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IGNoYXIqIHB0ciA9IGdldF9kZWZhdWx0X3N5bnRheChpKTsKLSAgICAgICAgIHdoaWxlKHB0ciAmJiAqcHRyKQotICAgICAgICAgewotICAgICAgICAgICAgbV9jaGFyX21hcFt0aGlzLT5tX3BjdHlwZS0+d2lkZW4oKnB0cildID0gaTsKLSAgICAgICAgICAgICsrcHRyOwotICAgICAgICAgfQotICAgICAgfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSAgIH0KLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+OjpzdHJpbmdfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD46OmdldF9kZWZhdWx0X21lc3NhZ2UocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBpKQotewotICAgY29uc3QgY2hhciogcHRyID0gZ2V0X2RlZmF1bHRfc3ludGF4KGkpOwotICAgc3RyaW5nX3R5cGUgcmVzdWx0OwotICAgd2hpbGUocHRyICYmICpwdHIpCi0gICB7Ci0gICAgICByZXN1bHQuYXBwZW5kKDEsIHRoaXMtPm1fcGN0eXBlLT53aWRlbigqcHRyKSk7Ci0gICAgICArK3B0cjsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBzcGVjaWFsaXNlZCB2ZXJzaW9uIGZvciBuYXJyb3cgY2hhcmFjdGVyczoKLS8vCi10ZW1wbGF0ZSA8PgotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhcj4gOiBwdWJsaWMgY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXI+Ci17Ci0gICB0eXBlZGVmIHN0ZDo6c3RyaW5nIHN0cmluZ190eXBlOwotcHVibGljOgotICAgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyKGNvbnN0IHN0ZDo6bG9jYWxlJiBsKQotICAgOiBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhcj4obCkKLSAgIHsKLSAgICAgIGluaXQoKTsKLSAgIH0KLSAgIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcihjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhcj4mIGwpCi0gICA6IGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyPihsKQotICAgewotICAgICAgaW5pdCgpOwotICAgfQotCi0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXIgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fY2hhcl9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldOwotICAgfQotICAgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXIgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2NoYXJfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsKLSAgIH0KLQotcHJpdmF0ZToKLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgbV9jaGFyX21hcFsxdSA8PCBDSEFSX0JJVF07Ci0gICB2b2lkIGluaXQoKTsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotZW51bQotewotICAgY2hhcl9jbGFzc19zcGFjZT0xPDwwLCAKLSAgIGNoYXJfY2xhc3NfcHJpbnQ9MTw8MSwgCi0gICBjaGFyX2NsYXNzX2NudHJsPTE8PDIsIAotICAgY2hhcl9jbGFzc191cHBlcj0xPDwzLCAKLSAgIGNoYXJfY2xhc3NfbG93ZXI9MTw8NCwKLSAgIGNoYXJfY2xhc3NfYWxwaGE9MTw8NSwgCi0gICBjaGFyX2NsYXNzX2RpZ2l0PTE8PDYsIAotICAgY2hhcl9jbGFzc19wdW5jdD0xPDw3LCAKLSAgIGNoYXJfY2xhc3NfeGRpZ2l0PTE8PDgsCi0gICBjaGFyX2NsYXNzX2FsbnVtPWNoYXJfY2xhc3NfYWxwaGF8Y2hhcl9jbGFzc19kaWdpdCwgCi0gICBjaGFyX2NsYXNzX2dyYXBoPWNoYXJfY2xhc3NfYWxudW18Y2hhcl9jbGFzc19wdW5jdCwKLSAgIGNoYXJfY2xhc3NfYmxhbms9MTw8OSwKLSAgIGNoYXJfY2xhc3Nfd29yZD0xPDwxMCwKLSAgIGNoYXJfY2xhc3NfdW5pY29kZT0xPDwxMSwKLSAgIGNoYXJfY2xhc3NfaG9yaXpvbnRhbF9zcGFjZT0xPDwxMiwKLSAgIGNoYXJfY2xhc3NfdmVydGljYWxfc3BhY2U9MTw8MTMKLX07Ci0KLSNlbmRpZgotCi0vLwotLy8gY2xhc3MgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjoKLS8vIHByb3ZpZGVzIHBpbXBsIGltcGxlbWVudGF0aW9uIGZvciBjcHBfcmVnZXhfdHJhaXRzLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24gOiBwdWJsaWMgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPgotewotcHVibGljOgotICAgdHlwZWRlZiB0eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIGNoYXJfY2xhc3NfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjdHlwZTxjaGFyVD46Om1hc2sgICAgICAgICAgICAgICAgICBuYXRpdmVfbWFza190eXBlOwotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza19ibGFuayA9IDF1IDw8IDI0KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfd29yZCA9IDF1IDw8IDI1KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfdW5pY29kZSA9IDF1IDw8IDI2KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfaG9yaXpvbnRhbCA9IDF1IDw8IDI3KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfdmVydGljYWwgPSAxdSA8PCAyOCk7Ci0jZW5kaWYKLQotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIGNoYXJUIGNoYXJfdHlwZTsKLSAgIC8vY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbigpOwotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbihjb25zdCBzdGQ6OmxvY2FsZSYgbCkKLSAgICAgIDogY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPihsKQotICAgewotICAgICAgaW5pdCgpOwotICAgfQotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbihjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+JiBsKQotICAgICAgOiBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+KGwpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0gICBzdGQ6OnN0cmluZyBlcnJvcl9zdHJpbmcocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIG4pIGNvbnN0Ci0gICB7Ci0gICAgICBpZighbV9lcnJvcl9zdHJpbmdzLmVtcHR5KCkpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgcCA9IG1fZXJyb3Jfc3RyaW5ncy5maW5kKG4pOwotICAgICAgICAgcmV0dXJuIChwID09IG1fZXJyb3Jfc3RyaW5ncy5lbmQoKSkgPyBzdGQ6OnN0cmluZyhnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcobikpIDogcC0+c2Vjb25kOwotICAgICAgfQotICAgICAgcmV0dXJuIGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhuKTsKLSAgIH0KLSAgIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfY2xhc3NuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgY2hhcl9jbGFzc190eXBlIHJlc3VsdCA9IGxvb2t1cF9jbGFzc25hbWVfaW1wKHAxLCBwMik7Ci0gICAgICBpZihyZXN1bHQgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIHN0cmluZ190eXBlIHRlbXAocDEsIHAyKTsKLSAgICAgICAgIHRoaXMtPm1fcGN0eXBlLT50b2xvd2VyKCYqdGVtcC5iZWdpbigpLCAmKnRlbXAuYmVnaW4oKSArIHRlbXAuc2l6ZSgpKTsKLSAgICAgICAgIHJlc3VsdCA9IGxvb2t1cF9jbGFzc25hbWVfaW1wKCYqdGVtcC5iZWdpbigpLCAmKnRlbXAuYmVnaW4oKSArIHRlbXAuc2l6ZSgpKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSBsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0OwotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0OwotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdDsKLXByaXZhdGU6Ci0gICBzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPiAgICAgbV9lcnJvcl9zdHJpbmdzOyAgIC8vIGVycm9yIG1lc3NhZ2VzIGluZGV4ZWQgYnkgbnVtYmVyaWMgSUQKLSAgIHN0ZDo6bWFwPHN0cmluZ190eXBlLCBjaGFyX2NsYXNzX3R5cGU+ICBtX2N1c3RvbV9jbGFzc19uYW1lczsgLy8gY2hhcmFjdGVyIGNsYXNzIG5hbWVzCi0gICBzdGQ6Om1hcDxzdHJpbmdfdHlwZSwgc3RyaW5nX3R5cGU+ICAgICAgbV9jdXN0b21fY29sbGF0ZV9uYW1lczsgLy8gY29sbGF0aW5nIGVsZW1lbnQgbmFtZXMKLSAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICBtX2NvbGxhdGVfdHlwZTsgICAgLy8gdGhlIGZvcm0gb2YgdGhlIGNvbGxhdGlvbiBzdHJpbmcKLSAgIGNoYXJUICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbGxhdGVfZGVsaW07ICAgLy8gdGhlIGNvbGxhdGlvbiBncm91cCBkZWxpbWl0ZXIKLSAgIC8vCi0gICAvLyBoZWxwZXJzOgotICAgLy8KLSAgIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfY2xhc3NuYW1lX2ltcChjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci0gICB2b2lkIGluaXQoKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotcHVibGljOgotICAgYm9vbCBpc2N0eXBlKGNoYXJUIGMsIGNoYXJfY2xhc3NfdHlwZSBtKWNvbnN0OwotI2VuZGlmCi19OwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04pCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfYmxhbms7Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIGNvbnN0IGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3dvcmQ7Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIGNvbnN0IGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3VuaWNvZGU7Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIGNvbnN0IGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsOwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmNoYXJfY2xhc3NfdHlwZSBjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ob3Jpem9udGFsOwotCi0jZW5kaWYKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6c3RyaW5nX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6dHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci17Ci0gICAvLwotICAgLy8gUFJFQ09ORElUSU9OUzoKLSAgIC8vCi0gICAvLyBBIGJ1ZyBpbiBnY2MgMy4yIChhbmQgbWF5YmUgb3RoZXIgdmVyc2lvbnMgYXMgd2VsbCkgdHJlYXRzCi0gICAvLyBwMSBhcyBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcsIGZvciBlZmZpY2llbmN5IHJlYXNvbnMgCi0gICAvLyB3ZSB3b3JrIGFyb3VuZCB0aGlzIGVsc2V3aGVyZSwgYnV0IGp1c3QgYXNzZXJ0IGhlcmUgdGhhdAotICAgLy8gd2UgYWRoZXJlIHRvIGdjYydzIChidWdneSkgcHJlY29uZGl0aW9ucy4uLgotICAgLy8KLSAgIE5ETkJPT1NUX0FTU0VSVCgqcDIgPT0gMCk7Ci0KLSAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSAgIC8vCi0gICAvLyBzd2FsbG93aW5nIGFsbCBleGNlcHRpb25zIGhlcmUgaXMgYSBiYWQgaWRlYQotICAgLy8gaG93ZXZlciBhdCBsZWFzdCBvbmUgc3RkIGxpYiB3aWxsIGFsd2F5cyB0aHJvdwotICAgLy8gc3RkOjpiYWRfYWxsb2MgZm9yIGNlcnRhaW4gYXJndW1lbnRzLi4uCi0gICAvLwotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICB0cnl7Ci0jZW5kaWYKLSAgICAgIC8vCi0gICAgICAvLyBXaGF0IHdlIGRvIGhlcmUgZGVwZW5kcyB1cG9uIHRoZSBmb3JtYXQgb2YgdGhlIHNvcnQga2V5IHJldHVybmVkIGJ5Ci0gICAgICAvLyBzb3J0IGtleSByZXR1cm5lZCBieSB0aGlzLT50cmFuc2Zvcm06Ci0gICAgICAvLwotICAgICAgc3dpdGNoKG1fY29sbGF0ZV90eXBlKQotICAgICAgewotICAgICAgY2FzZSBzb3J0X0M6Ci0gICAgICBjYXNlIHNvcnRfdW5rbm93bjoKLSAgICAgICAgIC8vIHRoZSBiZXN0IHdlIGNhbiBkbyBpcyB0cmFuc2xhdGUgdG8gbG93ZXIgY2FzZSwgdGhlbiBnZXQgYSByZWd1bGFyIHNvcnQga2V5OgotICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0LmFzc2lnbihwMSwgcDIpOwotICAgICAgICAgICAgdGhpcy0+bV9wY3R5cGUtPnRvbG93ZXIoJipyZXN1bHQuYmVnaW4oKSwgJipyZXN1bHQuYmVnaW4oKSArIHJlc3VsdC5zaXplKCkpOwotICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy0+bV9wY29sbGF0ZS0+dHJhbnNmb3JtKCYqcmVzdWx0LmJlZ2luKCksICYqcmVzdWx0LmJlZ2luKCkgKyByZXN1bHQuc2l6ZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgY2FzZSBzb3J0X2ZpeGVkOgotICAgICAgICAgewotICAgICAgICAgICAgLy8gZ2V0IGEgcmVndWxhciBzb3J0IGtleSwgYW5kIHRoZW4gdHJ1bmNhdGUgaXQ6Ci0gICAgICAgICAgICByZXN1bHQuYXNzaWduKHRoaXMtPm1fcGNvbGxhdGUtPnRyYW5zZm9ybShwMSwgcDIpKTsKLSAgICAgICAgICAgIHJlc3VsdC5lcmFzZSh0aGlzLT5tX2NvbGxhdGVfZGVsaW0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICBjYXNlIHNvcnRfZGVsaW06Ci0gICAgICAgICAgICAvLyBnZXQgYSByZWd1bGFyIHNvcnQga2V5LCBhbmQgdGhlbiB0cnVuY2F0ZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBkZWxpbToKLSAgICAgICAgICAgIHJlc3VsdC5hc3NpZ24odGhpcy0+bV9wY29sbGF0ZS0+dHJhbnNmb3JtKHAxLCBwMikpOwotICAgICAgICAgICAgc3RkOjpzaXplX3QgaTsKLSAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKHJlc3VsdFtpXSA9PSBtX2NvbGxhdGVfZGVsaW0pCi0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3VsdC5lcmFzZShpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgfQotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICB9Y2F0Y2goLi4uKXt9Ci0jZW5kaWYKLSAgIHdoaWxlKHJlc3VsdC5zaXplKCkgJiYgKGNoYXJUKDApID09ICpyZXN1bHQucmJlZ2luKCkpKQotICAgICAgcmVzdWx0LmVyYXNlKHJlc3VsdC5zaXplKCkgLSAxKTsKLSAgIGlmKHJlc3VsdC5lbXB0eSgpKQotICAgewotICAgICAgLy8gY2hhcmFjdGVyIGlzIGlnbm9yYWJsZSBhdCB0aGUgcHJpbWFyeSBsZXZlbDoKLSAgICAgIHJlc3VsdCA9IHN0cmluZ190eXBlKDEsIGNoYXJUKDApKTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpzdHJpbmdfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojp0cmFuc2Zvcm0oY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci17Ci0gICAvLwotICAgLy8gUFJFQ09ORElUSU9OUzoKLSAgIC8vCi0gICAvLyBBIGJ1ZyBpbiBnY2MgMy4yIChhbmQgbWF5YmUgb3RoZXIgdmVyc2lvbnMgYXMgd2VsbCkgdHJlYXRzCi0gICAvLyBwMSBhcyBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcsIGZvciBlZmZpY2llbmN5IHJlYXNvbnMgCi0gICAvLyB3ZSB3b3JrIGFyb3VuZCB0aGlzIGVsc2V3aGVyZSwgYnV0IGp1c3QgYXNzZXJ0IGhlcmUgdGhhdAotICAgLy8gd2UgYWRoZXJlIHRvIGdjYydzIChidWdneSkgcHJlY29uZGl0aW9ucy4uLgotICAgLy8KLSAgIE5ETkJPT1NUX0FTU0VSVCgqcDIgPT0gMCk7Ci0gICAvLwotICAgLy8gc3dhbGxvd2luZyBhbGwgZXhjZXB0aW9ucyBoZXJlIGlzIGEgYmFkIGlkZWEKLSAgIC8vIGhvd2V2ZXIgYXQgbGVhc3Qgb25lIHN0ZCBsaWIgd2lsbCBhbHdheXMgdGhyb3cKLSAgIC8vIHN0ZDo6YmFkX2FsbG9jIGZvciBjZXJ0YWluIGFyZ3VtZW50cy4uLgotICAgLy8KLSAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgdHJ5ewotI2VuZGlmCi0gICAgICByZXN1bHQgPSB0aGlzLT5tX3Bjb2xsYXRlLT50cmFuc2Zvcm0ocDEsIHAyKTsKLSAgICAgIC8vCi0gICAgICAvLyBCb3JsYW5kJ3MgU1RMUG9ydCB2ZXJzaW9uIHJldHVybnMgYSBOVUxMLXRlcm1pbmF0ZWQKLSAgICAgIC8vIHN0cmluZyB0aGF0IGhhcyBnYXJiYWdlIGF0IHRoZSBlbmQgLSBlYWNoIGNhbGwgdG8KLSAgICAgIC8vIHN0ZDo6Y29sbGF0ZTx3Y2hhcl90Pjo6dHJhbnNmb3JtIHJldHVybnMgYSBkaWZmZXJlbnQgc3RyaW5nIQotICAgICAgLy8gU28gYXMgYSB3b3JrYXJvdW5kLCB3ZSdsbCB0cnVuY2F0ZSB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBOVUxMCi0gICAgICAvLyB3aGljaCBfc2VlbXNfIHRvIHdvcmsuLi4uCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg1ODApCi0gICAgICByZXN1bHQuZXJhc2UocmVzdWx0LmZpbmQoY2hhclQoMCkpKTsKLSNlbHNlCi0gICAgICAvLwotICAgICAgLy8gc29tZSBpbXBsZW1lbnRhdGlvbnMgKERpbmt1bXdhcmUpIGFwcGVuZCB1bm5lY2Vzc2FyeSB0cmFpbGluZyBcMCdzOgotICAgICAgd2hpbGUocmVzdWx0LnNpemUoKSAmJiAoY2hhclQoMCkgPT0gKnJlc3VsdC5yYmVnaW4oKSkpCi0gICAgICAgICByZXN1bHQuZXJhc2UocmVzdWx0LnNpemUoKSAtIDEpOwotI2VuZGlmCi0gICAgICBORE5CT09TVF9BU1NFUlQoc3RkOjpmaW5kKHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIGNoYXJUKDApKSA9PSByZXN1bHQuZW5kKCkpOwotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICB9Ci0gICBjYXRjaCguLi4pCi0gICB7Ci0gICB9Ci0jZW5kaWYKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnN0cmluZ190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Omxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjptYXA8c3RyaW5nX3R5cGUsIHN0cmluZ190eXBlPjo6Y29uc3RfaXRlcmF0b3IgaXRlcl90eXBlOwotICAgaWYobV9jdXN0b21fY29sbGF0ZV9uYW1lcy5zaXplKCkpCi0gICB7Ci0gICAgICBpdGVyX3R5cGUgcG9zID0gbV9jdXN0b21fY29sbGF0ZV9uYW1lcy5maW5kKHN0cmluZ190eXBlKHAxLCBwMikpOwotICAgICAgaWYocG9zICE9IG1fY3VzdG9tX2NvbGxhdGVfbmFtZXMuZW5kKCkpCi0gICAgICAgICByZXR1cm4gcG9zLT5zZWNvbmQ7Ci0gICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUylcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDA1NTEpCi0gICBzdGQ6OnN0cmluZyBuYW1lKHAxLCBwMik7Ci0jZWxzZQotICAgc3RkOjpzdHJpbmcgbmFtZTsKLSAgIGNvbnN0IGNoYXJUKiBwMCA9IHAxOwotICAgd2hpbGUocDAgIT0gcDIpCi0gICAgICBuYW1lLmFwcGVuZCgxLCBjaGFyKCpwMCsrKSk7Ci0jZW5kaWYKLSAgIG5hbWUgPSBsb29rdXBfZGVmYXVsdF9jb2xsYXRlX25hbWUobmFtZSk7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUylcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDA1NTEpCi0gICBpZihuYW1lLnNpemUoKSkKLSAgICAgIHJldHVybiBzdHJpbmdfdHlwZShuYW1lLmJlZ2luKCksIG5hbWUuZW5kKCkpOwotI2Vsc2UKLSAgIGlmKG5hbWUuc2l6ZSgpKQotICAgewotICAgICAgc3RyaW5nX3R5cGUgcmVzdWx0OwotICAgICAgdHlwZWRlZiBzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3IgaXRlcjsKLSAgICAgIGl0ZXIgYiA9IG5hbWUuYmVnaW4oKTsKLSAgICAgIGl0ZXIgZSA9IG5hbWUuZW5kKCk7Ci0gICAgICB3aGlsZShiICE9IGUpCi0gICAgICAgICByZXN1bHQuYXBwZW5kKDEsIGNoYXJUKCpiKyspKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0jZW5kaWYKLSAgIGlmKHAyIC0gcDEgPT0gMSkKLSAgICAgIHJldHVybiBzdHJpbmdfdHlwZSgxLCAqcDEpOwotICAgcmV0dXJuIHN0cmluZ190eXBlKCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXZvaWQgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmluaXQoKQotewotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSNpZm5kZWYgX19JQk1DUFBfXwotICAgdHlwZW5hbWUgc3RkOjptZXNzYWdlczxjaGFyVD46OmNhdGFsb2cgY2F0ID0gc3RhdGljX2Nhc3Q8c3RkOjptZXNzYWdlczxjaGFyPjo6Y2F0YWxvZz4oLTEpOwotI2Vsc2UKLSAgIHR5cGVuYW1lIHN0ZDo6bWVzc2FnZXM8Y2hhclQ+OjpjYXRhbG9nIGNhdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjptZXNzYWdlczxjaGFyPjo6Y2F0YWxvZz4oLTEpOwotI2VuZGlmCi0gICBzdGQ6OnN0cmluZyBjYXRfbmFtZShjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZSgpKTsKLSAgIGlmKGNhdF9uYW1lLnNpemUoKSAmJiAodGhpcy0+bV9wbWVzc2FnZXMgIT0gMCkpCi0gICB7Ci0gICAgICBjYXQgPSB0aGlzLT5tX3BtZXNzYWdlcy0+b3BlbigKLSAgICAgICAgIGNhdF9uYW1lLCAKLSAgICAgICAgIHRoaXMtPm1fbG9jYWxlKTsKLSAgICAgIGlmKChpbnQpY2F0IDwgMCkKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6c3RyaW5nIG0oIlVuYWJsZSB0byBvcGVuIG1lc3NhZ2UgY2F0YWxvZzogIik7Ci0gICAgICAgICBzdGQ6OnJ1bnRpbWVfZXJyb3IgZXJyKG0gKyBjYXRfbmFtZSk7Ci0gICAgICAgICBuZG5ib29zdDo6cmVfZGV0YWlsOjpyYWlzZV9ydW50aW1lX2Vycm9yKGVycik7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gaWYgd2UgaGF2ZSBhIHZhbGlkIGNhdGFsb2cgdGhlbiBsb2FkIG91ciBtZXNzYWdlczoKLSAgIC8vCi0gICBpZigoaW50KWNhdCA+PSAwKQotICAgewotICAgICAgLy8KLSAgICAgIC8vIEVycm9yIG1lc3NhZ2VzOgotICAgICAgLy8KLSAgICAgIGZvcihuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGkgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlPigwKTsgCi0gICAgICAgICBpIDw9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3Vua25vd247IAotICAgICAgICAgaSA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGU+KGkgKyAxKSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcoaSk7Ci0gICAgICAgICBzdHJpbmdfdHlwZSBkZWZhdWx0X21lc3NhZ2U7Ci0gICAgICAgICB3aGlsZSgqcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGRlZmF1bHRfbWVzc2FnZS5hcHBlbmQoMSwgdGhpcy0+bV9wY3R5cGUtPndpZGVuKCpwKSk7Ci0gICAgICAgICAgICArK3A7Ci0gICAgICAgICB9Ci0gICAgICAgICBzdHJpbmdfdHlwZSBzID0gdGhpcy0+bV9wbWVzc2FnZXMtPmdldChjYXQsIDAsIGkrMjAwLCBkZWZhdWx0X21lc3NhZ2UpOwotICAgICAgICAgc3RkOjpzdHJpbmcgcmVzdWx0OwotICAgICAgICAgZm9yKHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgaiA9IDA7IGogPCBzLnNpemUoKTsgKytqKQotICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgxLCB0aGlzLT5tX3BjdHlwZS0+bmFycm93KHNbal0sIDApKTsKLSAgICAgICAgIH0KLSAgICAgICAgIG1fZXJyb3Jfc3RyaW5nc1tpXSA9IHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIC8vCi0gICAgICAvLyBDdXN0b20gY2xhc3MgbmFtZXM6Ci0gICAgICAvLwotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotICAgICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrc1sxNl0gPSAKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjphbG51bSwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjphbHBoYSwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjpjbnRybCwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjpkaWdpdCwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjpncmFwaCwKLSAgICAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2hvcml6b250YWwsCi0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6bG93ZXIsCi0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6cHJpbnQsCi0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6cHVuY3QsCi0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6c3BhY2UsCi0gICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6dXBwZXIsCi0gICAgICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbCwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+Ojp4ZGlnaXQsCi0gICAgICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ibGFuaywKLSAgICAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3dvcmQsCi0gICAgICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlLAotICAgICAgfTsKLSNlbHNlCi0gICAgICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tzWzE2XSA9IAotICAgICAgewotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2FsbnVtLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2FscGhhLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2NudHJsLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2RpZ2l0LAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2dyYXBoLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2hvcml6b250YWxfc3BhY2UsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfbG93ZXIsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfcHJpbnQsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfcHVuY3QsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3Nfc3BhY2UsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdXBwZXIsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdmVydGljYWxfc3BhY2UsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfeGRpZ2l0LAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2JsYW5rLAotICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3dvcmQsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdW5pY29kZSwKLSAgICAgIH07Ci0jZW5kaWYKLSAgICAgIHN0YXRpYyBjb25zdCBzdHJpbmdfdHlwZSBudWxsX3N0cmluZzsKLSAgICAgIGZvcih1bnNpZ25lZCBpbnQgaiA9IDA7IGogPD0gMTM7ICsraikKLSAgICAgIHsKLSAgICAgICAgIHN0cmluZ190eXBlIHModGhpcy0+bV9wbWVzc2FnZXMtPmdldChjYXQsIDAsIGorMzAwLCBudWxsX3N0cmluZykpOwotICAgICAgICAgaWYocy5zaXplKCkpCi0gICAgICAgICAgICB0aGlzLT5tX2N1c3RvbV9jbGFzc19uYW1lc1tzXSA9IG1hc2tzW2pdOwotICAgICAgfQotICAgfQotI2VuZGlmCi0gICAvLwotICAgLy8gZ2V0IHRoZSBjb2xsYXRpb24gZm9ybWF0IHVzZWQgYnkgbV9wY29sbGF0ZToKLSAgIC8vCi0gICBtX2NvbGxhdGVfdHlwZSA9IHJlX2RldGFpbDo6ZmluZF9zb3J0X3N5bnRheCh0aGlzLCAmbV9jb2xsYXRlX2RlbGltKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmNoYXJfY2xhc3NfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojpsb29rdXBfY2xhc3NuYW1lX2ltcChjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLXsKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza3NbMjJdID0gCi0gICB7Ci0gICAgICAwLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6YWxudW0sIAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6YWxwaGEsCi0gICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ibGFuaywKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OmNudHJsLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6ZGlnaXQsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjpkaWdpdCwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OmdyYXBoLAotICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfaG9yaXpvbnRhbCwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46Omxvd2VyLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6bG93ZXIsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjpwcmludCwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OnB1bmN0LAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6c3BhY2UsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjpzcGFjZSwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OnVwcGVyLAotICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdW5pY29kZSwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OnVwcGVyLAotICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdmVydGljYWwsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjphbG51bSB8IGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3dvcmQsIAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6YWxudW0gfCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkLCAKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OnhkaWdpdCwKLSAgIH07Ci0jZWxzZQotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrc1syMl0gPSAKLSAgIHsKLSAgICAgIDAsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYWxudW0sIAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2FscGhhLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2JsYW5rLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2NudHJsLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2RpZ2l0LAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2RpZ2l0LAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2dyYXBoLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2hvcml6b250YWxfc3BhY2UsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfbG93ZXIsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfbG93ZXIsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfcHJpbnQsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfcHVuY3QsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3Nfc3BhY2UsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3Nfc3BhY2UsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdXBwZXIsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdW5pY29kZSwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191cHBlciwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc192ZXJ0aWNhbF9zcGFjZSwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19hbG51bSB8IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc193b3JkLCAKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19hbG51bSB8IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc193b3JkLCAKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc194ZGlnaXQsCi0gICB9OwotI2VuZGlmCi0gICBpZihtX2N1c3RvbV9jbGFzc19uYW1lcy5zaXplKCkpCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFwPHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiwgY2hhcl9jbGFzc190eXBlPjo6Y29uc3RfaXRlcmF0b3IgbWFwX2l0ZXI7Ci0gICAgICBtYXBfaXRlciBwb3MgPSBtX2N1c3RvbV9jbGFzc19uYW1lcy5maW5kKHN0cmluZ190eXBlKHAxLCBwMikpOwotICAgICAgaWYocG9zICE9IG1fY3VzdG9tX2NsYXNzX25hbWVzLmVuZCgpKQotICAgICAgICAgcmV0dXJuIHBvcy0+c2Vjb25kOwotICAgfQotICAgc3RkOjpzaXplX3Qgc3RhdGVfaWQgPSAxICsgcmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9jbGFzc19pZChwMSwgcDIpOwotICAgTkROQk9PU1RfQVNTRVJUKHN0YXRlX2lkIDwgc2l6ZW9mKG1hc2tzKSAvIHNpemVvZihtYXNrc1swXSkpOwotICAgcmV0dXJuIG1hc2tzW3N0YXRlX2lkXTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1ib29sIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojppc2N0eXBlKGNvbnN0IGNoYXJUIGMsIGNoYXJfY2xhc3NfdHlwZSBtYXNrKSBjb25zdAotewotICAgcmV0dXJuCi0gICAgICAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3Nfc3BhY2UpICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OnNwYWNlLCBjKSkpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfcHJpbnQpICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OnByaW50LCBjKSkpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfY250cmwpICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OmNudHJsLCBjKSkpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdXBwZXIpICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OnVwcGVyLCBjKSkpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfbG93ZXIpICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46Omxvd2VyLCBjKSkpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYWxwaGEpICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OmFscGhhLCBjKSkpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZGlnaXQpICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OmRpZ2l0LCBjKSkpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfcHVuY3QpICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OnB1bmN0LCBjKSkpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfeGRpZ2l0KSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+Ojp4ZGlnaXQsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19ibGFuaykgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6c3BhY2UsIGMpKSAmJiAhOjpuZG5ib29zdDo6cmVfZGV0YWlsOjppc19zZXBhcmF0b3IoYykpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3Nfd29yZCkgJiYgKGMgPT0gJ18nKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191bmljb2RlKSAmJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmlzX2V4dGVuZGVkKGMpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3ZlcnRpY2FsX3NwYWNlKSAmJiAoaXNfc2VwYXJhdG9yKGMpIHx8IChjID09ICdcdicpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19ob3Jpem9udGFsX3NwYWNlKSAmJiB0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OnNwYWNlLCBjKSAmJiAhKGlzX3NlcGFyYXRvcihjKSB8fCAoYyA9PSAnXHYnKSkpOwotfQotI2VuZGlmCi0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIG5kbmJvb3N0OjpzaGFyZWRfcHRyPGNvbnN0IGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+ID4gY3JlYXRlX2NwcF9yZWdleF90cmFpdHMoY29uc3Qgc3RkOjpsb2NhbGUmIGwgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoY2hhclQpKQotewotICAgY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPiBrZXkobCk7Ci0gICByZXR1cm4gOjpuZG5ib29zdDo6b2JqZWN0X2NhY2hlPGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD4sIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+ID46OmdldChrZXksIDUpOwotfQotCi19IC8vIHJlX2RldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyBjcHBfcmVnZXhfdHJhaXRzCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiBzdGQ6OmN0eXBlPGNoYXJUPiAgICAgICAgICAgIGN0eXBlX3R5cGU7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIGNoYXJUICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgIHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpsb2NhbGUgICAgICAgICAgICAgICAgICBsb2NhbGVfdHlwZTsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90ICAgICAgICBjaGFyX2NsYXNzX3R5cGU7Ci0KLSAgIHN0cnVjdCBib29zdF9leHRlbnNpb25zX3RhZ3t9OwotCi0gICBjcHBfcmVnZXhfdHJhaXRzKCkKLSAgICAgIDogbV9waW1wbChyZV9kZXRhaWw6OmNyZWF0ZV9jcHBfcmVnZXhfdHJhaXRzPGNoYXJUPihzdGQ6OmxvY2FsZSgpKSkKLSAgIHsgfQotICAgc3RhdGljIHNpemVfdHlwZSBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBwKQotICAgewotICAgICAgcmV0dXJuIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhclQ+OjpsZW5ndGgocCk7Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXJUIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5zeW50YXhfdHlwZShjKTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmVzY2FwZV9zeW50YXhfdHlwZShjKTsKLSAgIH0KLSAgIGNoYXJUIHRyYW5zbGF0ZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGM7Ci0gICB9Ci0gICBjaGFyVCB0cmFuc2xhdGVfbm9jYXNlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+bV9wY3R5cGUtPnRvbG93ZXIoYyk7Ci0gICB9Ci0gICBjaGFyVCB0cmFuc2xhdGUoY2hhclQgYywgYm9vbCBpY2FzZSkgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBpY2FzZSA/IG1fcGltcGwtPm1fcGN0eXBlLT50b2xvd2VyKGMpIDogYzsKLSAgIH0KLSAgIGNoYXJUIHRvbG93ZXIoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5tX3BjdHlwZS0+dG9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJUIHRvdXBwZXIoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5tX3BjdHlwZS0+dG91cHBlcihjKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT50cmFuc2Zvcm0ocDEsIHAyKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPnRyYW5zZm9ybV9wcmltYXJ5KHAxLCBwMik7Ci0gICB9Ci0gICBjaGFyX2NsYXNzX3R5cGUgbG9va3VwX2NsYXNzbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5sb29rdXBfY2xhc3NuYW1lKHAxLCBwMik7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSBsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+bG9va3VwX2NvbGxhdGVuYW1lKHAxLCBwMik7Ci0gICB9Ci0gICBib29sIGlzY3R5cGUoY2hhclQgYywgY2hhcl9jbGFzc190eXBlIGYpIGNvbnN0Ci0gICB7Ci0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6Y3R5cGU8Y2hhclQ+OjptYXNrIGN0eXBlX21hc2s7Ci0KLSAgICAgIHN0YXRpYyBjb25zdCBjdHlwZV9tYXNrIG1hc2tfYmFzZSA9IAotICAgICAgICAgc3RhdGljX2Nhc3Q8Y3R5cGVfbWFzaz4oCi0gICAgICAgICAgICBzdGQ6OmN0eXBlPGNoYXJUPjo6YWxudW0gCi0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+OjphbHBoYQotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6Y250cmwKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OmRpZ2l0Ci0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+OjpncmFwaAotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6bG93ZXIKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OnByaW50Ci0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+OjpwdW5jdAotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6c3BhY2UKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OnVwcGVyCi0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+Ojp4ZGlnaXQpOwotCi0gICAgICBpZigoZiAmIG1hc2tfYmFzZSkgCi0gICAgICAgICAmJiAobV9waW1wbC0+bV9wY3R5cGUtPmlzKAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y3R5cGVfbWFzaz4oZiAmIG1hc2tfYmFzZSksIGMpKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZSBpZigoZiAmIHJlX2RldGFpbDo6Y3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdW5pY29kZSkgJiYgcmVfZGV0YWlsOjppc19leHRlbmRlZChjKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZSBpZigoZiAmIHJlX2RldGFpbDo6Y3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCkgJiYgKGMgPT0gJ18nKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZSBpZigoZiAmIHJlX2RldGFpbDo6Y3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfYmxhbmspIAotICAgICAgICAgJiYgbV9waW1wbC0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+OjpzcGFjZSwgYykKLSAgICAgICAgICYmICFyZV9kZXRhaWw6OmlzX3NlcGFyYXRvcihjKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZSBpZigoZiAmIHJlX2RldGFpbDo6Y3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdmVydGljYWwpIAotICAgICAgICAgJiYgKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6aXNfc2VwYXJhdG9yKGMpIHx8IChjID09ICdcdicpKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZSBpZigoZiAmIHJlX2RldGFpbDo6Y3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfaG9yaXpvbnRhbCkgCi0gICAgICAgICAmJiB0aGlzLT5pc2N0eXBlKGMsIHN0ZDo6Y3R5cGU8Y2hhclQ+OjpzcGFjZSkgJiYgIXRoaXMtPmlzY3R5cGUoYywgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCi0gICAgICByZXR1cm4gbV9waW1wbC0+aXNjdHlwZShjLCBmKTsKLSNlbmRpZgotICAgfQotICAgaW50IHRvaShjb25zdCBjaGFyVComIHAxLCBjb25zdCBjaGFyVCogcDIsIGludCByYWRpeCljb25zdDsKLSAgIGludCB2YWx1ZShjaGFyVCBjLCBpbnQgcmFkaXgpY29uc3QKLSAgIHsKLSAgICAgIGNvbnN0IGNoYXJUKiBwYyA9ICZjOwotICAgICAgcmV0dXJuIHRvaShwYywgcGMgKyAxLCByYWRpeCk7Ci0gICB9Ci0gICBsb2NhbGVfdHlwZSBpbWJ1ZShsb2NhbGVfdHlwZSBsKQotICAgewotICAgICAgc3RkOjpsb2NhbGUgcmVzdWx0KGdldGxvYygpKTsKLSAgICAgIG1fcGltcGwgPSByZV9kZXRhaWw6OmNyZWF0ZV9jcHBfcmVnZXhfdHJhaXRzPGNoYXJUPihsKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBsb2NhbGVfdHlwZSBnZXRsb2MoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+bV9sb2NhbGU7Ci0gICB9Ci0gICBzdGQ6OnN0cmluZyBlcnJvcl9zdHJpbmcocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIG4pIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+ZXJyb3Jfc3RyaW5nKG4pOwotICAgfQotCi0gICAvLwotICAgLy8gZXh0ZW5zaW9uOgotICAgLy8gc2V0IHRoZSBuYW1lIG9mIHRoZSBtZXNzYWdlIGNhdGFsb2cgaW4gdXNlIChkZWZhdWx0cyB0byAiYm9vc3RfcmVnZXgiKS4KLSAgIC8vCi0gICBzdGF0aWMgc3RkOjpzdHJpbmcgY2F0YWxvZ19uYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyBnZXRfY2F0YWxvZ19uYW1lKCk7Ci0KLXByaXZhdGU6Ci0gICBuZG5ib29zdDo6c2hhcmVkX3B0cjxjb25zdCByZV9kZXRhaWw6OmNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+ID4gbV9waW1wbDsKLSAgIC8vCi0gICAvLyBjYXRhbG9nIG5hbWUgaGFuZGxlcjoKLSAgIC8vCi0gICBzdGF0aWMgc3RkOjpzdHJpbmcmIGdldF9jYXRhbG9nX25hbWVfaW5zdCgpOwotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgIHN0YXRpYyBzdGF0aWNfbXV0ZXgmIGdldF9tdXRleF9pbnN0KCk7Ci0jZW5kaWYKLX07Ci0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW50IGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+Ojp0b2koY29uc3QgY2hhclQqJiBmaXJzdCwgY29uc3QgY2hhclQqIGxhc3QsIGludCByYWRpeCljb25zdAotewotICAgcmVfZGV0YWlsOjpwYXJzZXJfYnVmPGNoYXJUPiAgIHNidWY7ICAgICAgICAgICAgLy8gYnVmZmVyIGZvciBwYXJzaW5nIG51bWJlcnMuCi0gICBzdGQ6OmJhc2ljX2lzdHJlYW08Y2hhclQ+ICAgICAgaXMoJnNidWYpOyAgICAgICAvLyBzdHJlYW0gZm9yIHBhcnNpbmcgbnVtYmVycy4KLQotICAgLy8gd2UgZG8gTk9UIHdhbnQgdG8gcGFyc2UgYW55IHRob3VzYW5kcyBzZXBhcmF0b3JzIGluc2lkZSB0aGUgc3RyZWFtOgotICAgbGFzdCA9IHN0ZDo6ZmluZChmaXJzdCwgbGFzdCwgTkROQk9PU1RfVVNFX0ZBQ0VUKHN0ZDo6bnVtcHVuY3Q8Y2hhclQ+LCBpcy5nZXRsb2MoKSkudGhvdXNhbmRzX3NlcCgpKTsKLQotICAgc2J1Zi5wdWJzZXRidWYoY29uc3RfY2FzdDxjaGFyVCo+KHN0YXRpY19jYXN0PGNvbnN0IGNoYXJUKj4oZmlyc3QpKSwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihsYXN0LWZpcnN0KSk7Ci0gICBpcy5jbGVhcigpOwotICAgaWYoc3RkOjphYnMocmFkaXgpID09IDE2KSBpcyA+PiBzdGQ6OmhleDsKLSAgIGVsc2UgaWYoc3RkOjphYnMocmFkaXgpID09IDgpIGlzID4+IHN0ZDo6b2N0OwotICAgZWxzZSBpcyA+PiBzdGQ6OmRlYzsKLSAgIGludCB2YWw7Ci0gICBpZihpcyA+PiB2YWwpCi0gICB7Ci0gICAgICBmaXJzdCA9IGZpcnN0ICsgKChsYXN0IC0gZmlyc3QpIC0gc2J1Zi5pbl9hdmFpbCgpKTsKLSAgICAgIHJldHVybiB2YWw7Ci0gICB9Ci0gICBlbHNlCi0gICAgICByZXR1cm4gLTE7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6c3RyaW5nIGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+OjpjYXRhbG9nX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgIHN0YXRpY19tdXRleDo6c2NvcGVkX2xvY2sgbGsoZ2V0X211dGV4X2luc3QoKSk7Ci0jZW5kaWYKLSAgIHN0ZDo6c3RyaW5nIHJlc3VsdChnZXRfY2F0YWxvZ19uYW1lX2luc3QoKSk7Ci0gICBnZXRfY2F0YWxvZ19uYW1lX2luc3QoKSA9IG5hbWU7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OnN0cmluZyYgY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9jYXRhbG9nX25hbWVfaW5zdCgpCi17Ci0gICBzdGF0aWMgc3RkOjpzdHJpbmcgc19uYW1lOwotICAgcmV0dXJuIHNfbmFtZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpzdHJpbmcgY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9jYXRhbG9nX25hbWUoKQotewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICBzdGF0aWNfbXV0ZXg6OnNjb3BlZF9sb2NrIGxrKGdldF9tdXRleF9pbnN0KCkpOwotI2VuZGlmCi0gICBzdGQ6OnN0cmluZyByZXN1bHQoZ2V0X2NhdGFsb2dfbmFtZV9pbnN0KCkpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGF0aWNfbXV0ZXgmIGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfbXV0ZXhfaW5zdCgpCi17Ci0gICBzdGF0aWMgc3RhdGljX211dGV4IHNfbXV0ZXggPSBORE5CT09TVF9TVEFUSUNfTVVURVhfSU5JVDsKLSAgIHJldHVybiBzX211dGV4OwotfQotI2VuZGlmCi0KLQotfSAvLyBib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NyZWdleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NyZWdleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZTYxZjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jcmVnZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMwICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgY3JlZ2V4LmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgUE9TSVggQVBJIGZ1bmN0aW9ucwotICAqICAgICAgICAgICAgICAgICsgbmRuYm9vc3Q6OlJlZ0V4IGhpZ2ggbGV2ZWwgd3JhcHBlci4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRV9DUkVHRVhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JFX0NSRUdFWF9IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX2ZsYWdzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9lcnJvcl90eXBlLmhwcD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNlbHNlCi0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vKiBpbmNsdWRlIHRoZXNlIGRlZnMgb25seSBmb3IgUE9TSVggY29tcGF0YWJsaXR5ICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLW5hbWVzcGFjZSBuZG5ib29zdHsKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgcmVnb2ZmX3Q7Ci10eXBlZGVmIHN0ZDo6c2l6ZV90IHJlZ3NpemVfdDsKLSNlbHNlCi10eXBlZGVmIHB0cmRpZmZfdCByZWdvZmZfdDsKLXR5cGVkZWYgc2l6ZV90IHJlZ3NpemVfdDsKLSNlbmRpZgotCi10eXBlZGVmIHN0cnVjdAotewotICAgdW5zaWduZWQgaW50IHJlX21hZ2ljOwotI2lmZGVmIF9fY3BsdXNwbHVzCi0gICBzdGQ6OnNpemVfdCAgcmVfbnN1YjsgICAgICAvKiBudW1iZXIgb2YgcGFyZW50aGVzaXplZCBzdWJleHByZXNzaW9ucyAqLwotI2Vsc2UKLSAgIHNpemVfdCByZV9uc3ViOyAKLSNlbmRpZgotICAgY29uc3QgY2hhciogIHJlX2VuZHA7ICAgICAgIC8qIGVuZCBwb2ludGVyIGZvciBSRUdfUEVORCAqLwotICAgdm9pZCogZ3V0czsgICAgICAgICAgICAgICAgLyogbm9uZSBvZiB5b3VyIGJ1c2luZXNzIDotKSAqLwotICAgbWF0Y2hfZmxhZ190eXBlIGVmbGFnczsgICAgICAgIC8qIG5vbmUgb2YgeW91ciBidXNpbmVzcyA6LSkgKi8KLX0gcmVnZXhfdEE7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10eXBlZGVmIHN0cnVjdAotewotICAgdW5zaWduZWQgaW50IHJlX21hZ2ljOwotI2lmZGVmIF9fY3BsdXNwbHVzCi0gICBzdGQ6OnNpemVfdCAgcmVfbnN1YjsgICAgICAgICAvKiBudW1iZXIgb2YgcGFyZW50aGVzaXplZCBzdWJleHByZXNzaW9ucyAqLwotI2Vsc2UKLSAgIHNpemVfdCByZV9uc3ViOwotI2VuZGlmCi0gICBjb25zdCB3Y2hhcl90KiByZV9lbmRwOyAgICAgICAvKiBlbmQgcG9pbnRlciBmb3IgUkVHX1BFTkQgKi8KLSAgIHZvaWQqIGd1dHM7ICAgICAgICAgICAgICAgICAgIC8qIG5vbmUgb2YgeW91ciBidXNpbmVzcyA6LSkgKi8KLSAgIG1hdGNoX2ZsYWdfdHlwZSBlZmxhZ3M7ICAgICAgICAgICAvKiBub25lIG9mIHlvdXIgYnVzaW5lc3MgOi0pICovCi19IHJlZ2V4X3RXOwotI2VuZGlmCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICByZWdvZmZfdCBybV9zbzsgICAgICAvKiBzdGFydCBvZiBtYXRjaCAqLwotICAgcmVnb2ZmX3Qgcm1fZW87ICAgICAgLyogZW5kIG9mIG1hdGNoICovCi19IHJlZ21hdGNoX3Q7Ci0KLS8qIHJlZ2NvbXAoKSBmbGFncyAqLwotdHlwZWRlZiBlbnVtewotICAgUkVHX0JBU0lDID0gMDAwMCwKLSAgIFJFR19FWFRFTkRFRCA9IDAwMDEsCi0gICBSRUdfSUNBU0UgPSAwMDAyLAotICAgUkVHX05PU1VCID0gMDAwNCwKLSAgIFJFR19ORVdMSU5FID0gMDAxMCwKLSAgIFJFR19OT1NQRUMgPSAwMDIwLAotICAgUkVHX1BFTkQgPSAwMDQwLAotICAgUkVHX0RVTVAgPSAwMjAwLAotICAgUkVHX05PQ09MTEFURSA9IDA0MDAsCi0gICBSRUdfRVNDQVBFX0lOX0xJU1RTID0gMDEwMDAsCi0gICBSRUdfTkVXTElORV9BTFQgPSAwMjAwMCwKLSAgIFJFR19QRVJMRVggPSAwNDAwMCwKLQotICAgUkVHX1BFUkwgPSBSRUdfRVhURU5ERUQgfCBSRUdfTk9DT0xMQVRFIHwgUkVHX0VTQ0FQRV9JTl9MSVNUUyB8IFJFR19QRVJMRVgsCi0gICBSRUdfQVdLID0gUkVHX0VYVEVOREVEIHwgUkVHX0VTQ0FQRV9JTl9MSVNUUywKLSAgIFJFR19HUkVQID0gUkVHX0JBU0lDIHwgUkVHX05FV0xJTkVfQUxULAotICAgUkVHX0VHUkVQID0gUkVHX0VYVEVOREVEIHwgUkVHX05FV0xJTkVfQUxULAotCi0gICBSRUdfQVNTRVJUID0gMTUsCi0gICBSRUdfSU5WQVJHID0gMTYsCi0gICBSRUdfQVRPSSA9IDI1NSwgICAvKiBjb252ZXJ0IG5hbWUgdG8gbnVtYmVyICghKSAqLwotICAgUkVHX0lUT0EgPSAwNDAwICAgLyogY29udmVydCBudW1iZXIgdG8gbmFtZSAoISkgKi8KLX0gcmVnX2NvbXBfZmxhZ3M7Ci0KLS8qIHJlZ2V4ZWMoKSBmbGFncyAqLwotdHlwZWRlZiBlbnVtewotICAgUkVHX05PVEJPTCA9ICAgIDAwMDAxLAotICAgUkVHX05PVEVPTCA9ICAgIDAwMDAyLAotICAgUkVHX1NUQVJURU5EID0gIDAwMDA0Ci19IHJlZ19leGVjX2ZsYWdzOwotCi0vKgotICogUE9TSVggZXJyb3IgY29kZXM6Ci0gKi8KLXR5cGVkZWYgdW5zaWduZWQgcmVnX2Vycm9yX3Q7Ci10eXBlZGVmIHJlZ19lcnJvcl90IHJlZ19lcnJjb2RlX3Q7ICAvKiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAqLwotCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX05PRVJST1IgPSAwOyAgIC8qIFN1Y2Nlc3MuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19OT01BVENIID0gMTsgICAvKiBEaWRuJ3QgZmluZCBhIG1hdGNoIChmb3IgcmVnZXhlYykuICAqLwotCi0gIC8qIFBPU0lYIHJlZ2NvbXAgcmV0dXJuIGVycm9yIGNvZGVzLiAgKEluIHRoZSBvcmRlciBsaXN0ZWQgaW4gdGhlCi0gICAgIHN0YW5kYXJkLikgICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0JBRFBBVCA9IDI7ICAgIC8qIEludmFsaWQgcGF0dGVybi4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VDT0xMQVRFID0gMzsgIC8qIFVuZGVmaW5lZCBjb2xsYXRpbmcgZWxlbWVudC4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VDVFlQRSA9IDQ7ICAgIC8qIEludmFsaWQgY2hhcmFjdGVyIGNsYXNzIG5hbWUuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FRVNDQVBFID0gNTsgICAvKiBUcmFpbGluZyBiYWNrc2xhc2guICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FU1VCUkVHID0gNjsgICAvKiBJbnZhbGlkIGJhY2sgcmVmZXJlbmNlLiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRUJSQUNLID0gNzsgICAgLyogVW5tYXRjaGVkIGxlZnQgYnJhY2tldC4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VQQVJFTiA9IDg7ICAgIC8qIFBhcmVudGhlc2lzIGltYmFsYW5jZS4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VCUkFDRSA9IDk7ICAgIC8qIFVubWF0Y2hlZCBcey4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0JBREJSID0gMTA7ICAgIC8qIEludmFsaWQgY29udGVudHMgb2YgXHtcfS4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VSQU5HRSA9IDExOyAgIC8qIEludmFsaWQgcmFuZ2UgZW5kLiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRVNQQUNFID0gMTI7ICAgLyogUmFuIG91dCBvZiBtZW1vcnkuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19CQURSUFQgPSAxMzsgICAvKiBObyBwcmVjZWRpbmcgcmUgZm9yIHJlcGV0aXRpb24gb3AuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FRU5EID0gMTQ7ICAgICAvKiB1bmV4cGVjdGVkIGVuZCBvZiBleHByZXNzaW9uICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VTSVpFID0gMTU7ICAgIC8qIGV4cHJlc3Npb24gdG9vIGJpZyAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FUlBBUkVOID0gODsgICAvKiA9IFJFR19FUEFSRU4gOiB1bm1hdGNoZWQgcmlnaHQgcGFyZW50aGVzaXMgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRU1QVFkgPSAxNzsgICAgLyogZW1wdHkgZXhwcmVzc2lvbiAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FX01FTU9SWSA9IDE1OyAvKiA9IFJFR19FU0laRSA6IG91dCBvZiBtZW1vcnkgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRUNPTVBMRVhJVFkgPSAxODsgLyogY29tcGxleGl0eSB0b28gaGlnaCAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FU1RBQ0sgPSAxOTsgICAvKiBvdXQgb2Ygc3RhY2sgc3BhY2UgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRV9QRVJMID0gMjA7ICAgLyogUGVybCAoPy4uLikgZXJyb3IgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRV9VTktOT1dOID0gMjE7IC8qIHVua25vd24gZXJyb3IgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRU5PU1lTID0gMjE7ICAgLyogPSBSRUdfRV9VTktOT1dOIDogUmVzZXJ2ZWQuICovCi0KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgaW50IE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2NvbXBBKHJlZ2V4X3RBKiwgY29uc3QgY2hhciosIGludCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHJlZ3NpemVfdCBORE5CT09TVF9SRUdFWF9DQ0FMTCByZWdlcnJvckEoaW50LCBjb25zdCByZWdleF90QSosIGNoYXIqLCByZWdzaXplX3QpOwotTkROQk9PU1RfUkVHRVhfREVDTCBpbnQgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnZXhlY0EoY29uc3QgcmVnZXhfdEEqLCBjb25zdCBjaGFyKiwgcmVnc2l6ZV90LCByZWdtYXRjaF90KiwgaW50KTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBORE5CT09TVF9SRUdFWF9DQ0FMTCByZWdmcmVlQShyZWdleF90QSopOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCBpbnQgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnY29tcFcocmVnZXhfdFcqLCBjb25zdCB3Y2hhcl90KiwgaW50KTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgcmVnc2l6ZV90IE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2Vycm9yVyhpbnQsIGNvbnN0IHJlZ2V4X3RXKiwgd2NoYXJfdCosIHJlZ3NpemVfdCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIGludCBORE5CT09TVF9SRUdFWF9DQ0FMTCByZWdleGVjVyhjb25zdCByZWdleF90VyosIGNvbnN0IHdjaGFyX3QqLCByZWdzaXplX3QsIHJlZ21hdGNoX3QqLCBpbnQpOwotTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2ZyZWVXKHJlZ2V4X3RXKik7Ci0jZW5kaWYKLQotI2lmZGVmIFVOSUNPREUKLSNkZWZpbmUgcmVnY29tcCByZWdjb21wVwotI2RlZmluZSByZWdlcnJvciByZWdlcnJvclcKLSNkZWZpbmUgcmVnZXhlYyByZWdleGVjVwotI2RlZmluZSByZWdmcmVlIHJlZ2ZyZWVXCi0jZGVmaW5lIHJlZ2V4X3QgcmVnZXhfdFcKLSNlbHNlCi0jZGVmaW5lIHJlZ2NvbXAgcmVnY29tcEEKLSNkZWZpbmUgcmVnZXJyb3IgcmVnZXJyb3JBCi0jZGVmaW5lIHJlZ2V4ZWMgcmVnZXhlY0EKLSNkZWZpbmUgcmVnZnJlZSByZWdmcmVlQQotI2RlZmluZSByZWdleF90IHJlZ2V4X3RBCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0gLyogZXh0ZXJuICJDIiAqLwotfSAvKiBuYW1lc3BhY2UgKi8KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKLS8qCi0gKiBDKysgaGlnaCBsZXZlbCB3cmFwcGVyIGdvZXMgaGVyZToKLSAqLwotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotY2xhc3MgUmVnRXg7Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLWNsYXNzIFJlZ0V4RGF0YTsKLXN0cnVjdCBwcmVkMTsKLXN0cnVjdCBwcmVkMjsKLXN0cnVjdCBwcmVkMzsKLXN0cnVjdCBwcmVkNDsKLQotfSAgLyogbmFtZXNwYWNlIHJlX2RldGFpbCAqLwotCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKQotdHlwZWRlZiBib29sIChfX2NkZWNsICpHcmVwQ2FsbGJhY2spKGNvbnN0IFJlZ0V4JiBleHByZXNzaW9uKTsKLXR5cGVkZWYgYm9vbCAoX19jZGVjbCAqR3JlcEZpbGVDYWxsYmFjaykoY29uc3QgY2hhciogZmlsZSwgY29uc3QgUmVnRXgmIGV4cHJlc3Npb24pOwotdHlwZWRlZiBib29sIChfX2NkZWNsICpGaW5kRmlsZXNDYWxsYmFjaykoY29uc3QgY2hhciogZmlsZSk7Ci0jZWxzZQotdHlwZWRlZiBib29sICgqR3JlcENhbGxiYWNrKShjb25zdCBSZWdFeCYgZXhwcmVzc2lvbik7Ci10eXBlZGVmIGJvb2wgKCpHcmVwRmlsZUNhbGxiYWNrKShjb25zdCBjaGFyKiBmaWxlLCBjb25zdCBSZWdFeCYgZXhwcmVzc2lvbik7Ci10eXBlZGVmIGJvb2wgKCpGaW5kRmlsZXNDYWxsYmFjaykoY29uc3QgY2hhciogZmlsZSk7Ci0jZW5kaWYKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBSZWdFeAotewotcHJpdmF0ZToKLSAgIHJlX2RldGFpbDo6UmVnRXhEYXRhKiBwZGF0YTsKLXB1YmxpYzoKLSAgIFJlZ0V4KCk7Ci0gICBSZWdFeChjb25zdCBSZWdFeCYgbyk7Ci0gICB+UmVnRXgoKTsKLSAgIGV4cGxpY2l0IFJlZ0V4KGNvbnN0IGNoYXIqIGMsIGJvb2wgaWNhc2UgPSBmYWxzZSk7Ci0gICBleHBsaWNpdCBSZWdFeChjb25zdCBzdGQ6OnN0cmluZyYgcywgYm9vbCBpY2FzZSA9IGZhbHNlKTsKLSAgIFJlZ0V4JiBvcGVyYXRvcj0oY29uc3QgUmVnRXgmIG8pOwotICAgUmVnRXgmIG9wZXJhdG9yPShjb25zdCBjaGFyKiBwKTsKLSAgIFJlZ0V4JiBvcGVyYXRvcj0oY29uc3Qgc3RkOjpzdHJpbmcmIHMpeyByZXR1cm4gdGhpcy0+b3BlcmF0b3I9KHMuY19zdHIoKSk7IH0KLSAgIHVuc2lnbmVkIGludCBTZXRFeHByZXNzaW9uKGNvbnN0IGNoYXIqIHAsIGJvb2wgaWNhc2UgPSBmYWxzZSk7Ci0gICB1bnNpZ25lZCBpbnQgU2V0RXhwcmVzc2lvbihjb25zdCBzdGQ6OnN0cmluZyYgcywgYm9vbCBpY2FzZSA9IGZhbHNlKXsgcmV0dXJuIFNldEV4cHJlc3Npb24ocy5jX3N0cigpLCBpY2FzZSk7IH0KLSAgIHN0ZDo6c3RyaW5nIEV4cHJlc3Npb24oKWNvbnN0OwotICAgdW5zaWduZWQgaW50IGVycm9yX2NvZGUoKWNvbnN0OwotICAgLyoKLSAgICAqIG5vdyBtYXRjaGluZyBvcGVyYXRvcnM6Ci0gICAgKi8KLSAgIGJvb2wgTWF0Y2goY29uc3QgY2hhciogcCwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICBib29sIE1hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KSB7IHJldHVybiBNYXRjaChzLmNfc3RyKCksIGZsYWdzKTsgfQotICAgYm9vbCBTZWFyY2goY29uc3QgY2hhciogcCwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICBib29sIFNlYXJjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkgeyByZXR1cm4gU2VhcmNoKHMuY19zdHIoKSwgZmxhZ3MpOyB9Ci0gICB1bnNpZ25lZCBpbnQgR3JlcChHcmVwQ2FsbGJhY2sgY2IsIGNvbnN0IGNoYXIqIHAsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotICAgdW5zaWduZWQgaW50IEdyZXAoR3JlcENhbGxiYWNrIGNiLCBjb25zdCBzdGQ6OnN0cmluZyYgcywgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkgeyByZXR1cm4gR3JlcChjYiwgcy5jX3N0cigpLCBmbGFncyk7IH0KLSAgIHVuc2lnbmVkIGludCBHcmVwKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdiwgY29uc3QgY2hhciogcCwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICB1bnNpZ25lZCBpbnQgR3JlcChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHYsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KSB7IHJldHVybiBHcmVwKHYsIHMuY19zdHIoKSwgZmxhZ3MpOyB9Ci0gICB1bnNpZ25lZCBpbnQgR3JlcChzdGQ6OnZlY3RvcjxzdGQ6OnNpemVfdD4mIHYsIGNvbnN0IGNoYXIqIHAsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotICAgdW5zaWduZWQgaW50IEdyZXAoc3RkOjp2ZWN0b3I8c3RkOjpzaXplX3Q+JiB2LCBjb25zdCBzdGQ6OnN0cmluZyYgcywgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkgeyByZXR1cm4gR3JlcCh2LCBzLmNfc3RyKCksIGZsYWdzKTsgfQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9OT19GSUxFSVRFUgotICAgdW5zaWduZWQgaW50IEdyZXBGaWxlcyhHcmVwRmlsZUNhbGxiYWNrIGNiLCBjb25zdCBjaGFyKiBmaWxlcywgYm9vbCByZWN1cnNlID0gZmFsc2UsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotICAgdW5zaWduZWQgaW50IEdyZXBGaWxlcyhHcmVwRmlsZUNhbGxiYWNrIGNiLCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZXMsIGJvb2wgcmVjdXJzZSA9IGZhbHNlLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KSB7IHJldHVybiBHcmVwRmlsZXMoY2IsIGZpbGVzLmNfc3RyKCksIHJlY3Vyc2UsIGZsYWdzKTsgfQotICAgdW5zaWduZWQgaW50IEZpbmRGaWxlcyhGaW5kRmlsZXNDYWxsYmFjayBjYiwgY29uc3QgY2hhciogZmlsZXMsIGJvb2wgcmVjdXJzZSA9IGZhbHNlLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIHVuc2lnbmVkIGludCBGaW5kRmlsZXMoRmluZEZpbGVzQ2FsbGJhY2sgY2IsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlcywgYm9vbCByZWN1cnNlID0gZmFsc2UsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpIHsgcmV0dXJuIEZpbmRGaWxlcyhjYiwgZmlsZXMuY19zdHIoKSwgcmVjdXJzZSwgZmxhZ3MpOyB9Ci0jZW5kaWYKLQotICAgc3RkOjpzdHJpbmcgTWVyZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIGluLCBjb25zdCBzdGQ6OnN0cmluZyYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvcHkgPSB0cnVlLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIHN0ZDo6c3RyaW5nIE1lcmdlKGNvbnN0IGNoYXIqIGluLCBjb25zdCBjaGFyKiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29weSA9IHRydWUsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotCi0gICBzdGQ6OnNpemVfdCBTcGxpdChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHYsIHN0ZDo6c3RyaW5nJiBzLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0LCB1bnNpZ25lZCBtYXhfY291bnQgPSB+MCk7Ci0gICAvKgotICAgICogbm93IG9wZXJhdG9ycyBmb3IgcmV0dXJuaW5nIHdoYXQgbWF0Y2hlZCBpbiBtb3JlIGRldGFpbDoKLSAgICAqLwotICAgc3RkOjpzaXplX3QgUG9zaXRpb24oaW50IGkgPSAwKWNvbnN0OwotICAgc3RkOjpzaXplX3QgTGVuZ3RoKGludCBpID0gMCljb25zdDsKLSAgIGJvb2wgTWF0Y2hlZChpbnQgaSA9IDApY29uc3Q7Ci0gICBzdGQ6OnNpemVfdCBNYXJrcygpY29uc3Q7Ci0gICBzdGQ6OnN0cmluZyBXaGF0KGludCBpID0gMCljb25zdDsKLSAgIHN0ZDo6c3RyaW5nIG9wZXJhdG9yW10oaW50IGkpY29uc3QgeyByZXR1cm4gV2hhdChpKTsgfQotCi0gICBzdGF0aWMgY29uc3Qgc3RkOjpzaXplX3QgbnBvczsKLQotICAgZnJpZW5kIHN0cnVjdCByZV9kZXRhaWw6OnByZWQxOwotICAgZnJpZW5kIHN0cnVjdCByZV9kZXRhaWw6OnByZWQyOwotICAgZnJpZW5kIHN0cnVjdCByZV9kZXRhaWw6OnByZWQzOwotICAgZnJpZW5kIHN0cnVjdCByZV9kZXRhaWw6OnByZWQ0OwotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8qIG5hbWVzcGFjZSBuZG5ib29zdCAqLwotCi0jZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KLQotI2VuZGlmIC8qIGluY2x1ZGUgZ3VhcmQgKi8KLQotCi0KLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9lcnJvcl90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvZXJyb3JfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NGU5YzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9lcnJvcl90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDUKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGVycm9yX3R5cGUuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyByZWd1bGFyIGV4cHJlc3Npb24gZXJyb3IgdHlwZSBlbnVtZXJhdG9yLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0VSUk9SX1RZUEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0VSUk9SX1RZUEVfSFBQCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotbmFtZXNwYWNlIG5kbmJvb3N0ewotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotbmFtZXNwYWNlIHJlZ2V4X2NvbnN0YW50c3sKLQotZW51bSBlcnJvcl90eXBlewotCi0gICBlcnJvcl9vayA9IDAsICAgICAgICAgLyogbm90IHVzZWQgKi8KLSAgIGVycm9yX25vX21hdGNoID0gMSwgICAvKiBub3QgdXNlZCAqLwotICAgZXJyb3JfYmFkX3BhdHRlcm4gPSAyLAotICAgZXJyb3JfY29sbGF0ZSA9IDMsCi0gICBlcnJvcl9jdHlwZSA9IDQsCi0gICBlcnJvcl9lc2NhcGUgPSA1LAotICAgZXJyb3JfYmFja3JlZiA9IDYsCi0gICBlcnJvcl9icmFjayA9IDcsCi0gICBlcnJvcl9wYXJlbiA9IDgsCi0gICBlcnJvcl9icmFjZSA9IDksCi0gICBlcnJvcl9iYWRicmFjZSA9IDEwLAotICAgZXJyb3JfcmFuZ2UgPSAxMSwKLSAgIGVycm9yX3NwYWNlID0gMTIsCi0gICBlcnJvcl9iYWRyZXBlYXQgPSAxMywKLSAgIGVycm9yX2VuZCA9IDE0LCAgICAvKiBub3QgdXNlZCAqLwotICAgZXJyb3Jfc2l6ZSA9IDE1LAotICAgZXJyb3JfcmlnaHRfcGFyZW4gPSAxNiwgIC8qIG5vdCB1c2VkICovCi0gICBlcnJvcl9lbXB0eSA9IDE3LAotICAgZXJyb3JfY29tcGxleGl0eSA9IDE4LAotICAgZXJyb3Jfc3RhY2sgPSAxOSwKLSAgIGVycm9yX3BlcmxfZXh0ZW5zaW9uID0gMjAsCi0gICBlcnJvcl91bmtub3duID0gMjEKLX07Ci0KLX0KLX0KLSNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvZmlsZWl0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9maWxlaXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1Yjk5ZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9maWxlaXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTUgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBmaWxlaXRlci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHZhcmlvdXMgcGxhdGZvcm0gaW5kZXBlbmRlbnQgZmlsZSBhbmQKLSAgKiAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaXRlcmF0b3JzLCBwbHVzIGJpbmFyeSBmaWxlIGlucHV0IGluCi0gICogICAgICAgICAgICAgICAgdGhlIGZvcm0gb2YgY2xhc3MgbWFwX2ZpbGUuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVfRklMRUlURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JFX0ZJTEVJVEVSX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9OT19GSUxFSVRFUgotCi0jaWYgKGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0NZR1dJTjMyX18pKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi0jZXJyb3IgIlNvcnJ5LCBjYW4ndCBtaXggPHdpbmRvd3MuaD4gd2l0aCBTVEwgY29kZSBhbmQgZ2NjIGNvbXBpbGVyOiBpZiB5b3UgcmFuIGNvbmZpZ3VyZSwgdHJ5IGFnYWluIHdpdGggY29uZmlndXJlIC0tZGlzYWJsZS1tcy13aW5kb3dzIgotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GSV9XSU4zMl9NQVAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRklfUE9TSVhfRElSCi0jZWxpZiAoZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKFdJTjMyKSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GSV9XSU4zMl9NQVAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRklfV0lOMzJfRElSCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GSV9QT1NJWF9NQVAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRklfUE9TSVhfRElSCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfRklfV0lOMzJfTUFQKXx8ZGVmaW5lZChORE5CT09TVF9SRUdFWF9GSV9XSU4zMl9ESVIpCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX0RJUikKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLSAgIG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQU5TSV9BUElTCi10eXBlZGVmIFdJTjMyX0ZJTkRfREFUQUEgX2ZpX2ZpbmRfZGF0YTsKLSNlbHNlCi10eXBlZGVmIFdJTjMyX0ZJTkRfREFUQVcgX2ZpX2ZpbmRfZGF0YTsKLSNlbmRpZgotdHlwZWRlZiBIQU5ETEUgX2ZpX2ZpbmRfaGFuZGxlOwotCi0gICB9IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBfZmlfaW52YWxpZF9oYW5kbGUgSU5WQUxJRF9IQU5ETEVfVkFMVUUKLSNkZWZpbmUgX2ZpX2RpciBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9GSV9QT1NJWF9ESVIpCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxjY3R5cGU+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxjYXNzZXJ0PgotI2luY2x1ZGUgPGRpcmVudC5oPgotCi0jaWYgZGVmaW5lZChfX1NVTlBST19DQykKLXVzaW5nIHN0ZDo6bGlzdDsKLSNlbmRpZgotCi0jaWZuZGVmIE1BWF9QQVRICi0jZGVmaW5lIE1BWF9QQVRIIDI1NgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLSAgIG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0KLXN0cnVjdCBfZmlfZmluZF9kYXRhCi17Ci0gICB1bnNpZ25lZCBkd0ZpbGVBdHRyaWJ1dGVzOwotICAgY2hhciBjRmlsZU5hbWVbTUFYX1BBVEhdOwotfTsKLQotc3RydWN0IF9maV9wcml2X2RhdGE7Ci0KLXR5cGVkZWYgX2ZpX3ByaXZfZGF0YSogX2ZpX2ZpbmRfaGFuZGxlOwotI2RlZmluZSBfZmlfaW52YWxpZF9oYW5kbGUgMAotI2RlZmluZSBfZmlfZGlyIDEKLQotX2ZpX2ZpbmRfaGFuZGxlIF9maV9GaW5kRmlyc3RGaWxlKGNvbnN0IGNoYXIqIGxwRmlsZU5hbWUsIF9maV9maW5kX2RhdGEqIGxwRmluZEZpbGVEYXRhKTsKLWJvb2wgX2ZpX0ZpbmROZXh0RmlsZShfZmlfZmluZF9oYW5kbGUgaEZpbmRGaWxlLCAgIF9maV9maW5kX2RhdGEqIGxwRmluZEZpbGVEYXRhKTsKLWJvb2wgX2ZpX0ZpbmRDbG9zZShfZmlfZmluZF9oYW5kbGUgaEZpbmRGaWxlKTsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLQotICAgfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgRmluZEZpcnN0RmlsZQotICN1bmRlZiBGaW5kRmlyc3RGaWxlCi0jZW5kaWYKLSNpZmRlZiBGaW5kTmV4dEZpbGUKLSAjdW5kZWYgRmluZE5leHRGaWxlCi0jZW5kaWYKLSNpZmRlZiBGaW5kQ2xvc2UKLSAjdW5kZWYgRmluZENsb3NlCi0jZW5kaWYKLQotI2RlZmluZSBGaW5kRmlyc3RGaWxlQSBfZmlfRmluZEZpcnN0RmlsZQotI2RlZmluZSBGaW5kTmV4dEZpbGVBIF9maV9GaW5kTmV4dEZpbGUKLSNkZWZpbmUgRmluZENsb3NlIF9maV9GaW5kQ2xvc2UKLQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLSAgIG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9GSV9XSU4zMl9NQVAgLy8gd2luMzIgbWFwZmlsZQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIG1hcGZpbGUKLXsKLSAgIEhBTkRMRSBoZmlsZTsKLSAgIEhBTkRMRSBobWFwOwotICAgY29uc3QgY2hhciogX2ZpcnN0OwotICAgY29uc3QgY2hhciogX2xhc3Q7Ci1wdWJsaWM6Ci0KLSAgIHR5cGVkZWYgY29uc3QgY2hhciogaXRlcmF0b3I7Ci0KLSAgIG1hcGZpbGUoKXsgaGZpbGUgPSBobWFwID0gMDsgX2ZpcnN0ID0gX2xhc3QgPSAwOyB9Ci0gICBtYXBmaWxlKGNvbnN0IGNoYXIqIGZpbGUpeyBoZmlsZSA9IGhtYXAgPSAwOyBfZmlyc3QgPSBfbGFzdCA9IDA7IG9wZW4oZmlsZSk7IH0KLSAgIH5tYXBmaWxlKCl7IGNsb3NlKCk7IH0KLSAgIHZvaWQgb3Blbihjb25zdCBjaGFyKiBmaWxlKTsKLSAgIHZvaWQgY2xvc2UoKTsKLSAgIGNvbnN0IGNoYXIqIGJlZ2luKCl7IHJldHVybiBfZmlyc3Q7IH0KLSAgIGNvbnN0IGNoYXIqIGVuZCgpeyByZXR1cm4gX2xhc3Q7IH0KLSAgIHNpemVfdCBzaXplKCl7IHJldHVybiBfbGFzdCAtIF9maXJzdDsgfQotICAgYm9vbCB2YWxpZCgpeyByZXR1cm4gKGhmaWxlICE9IDApICYmIChoZmlsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSk7IH0KLX07Ci0KLQotI2Vsc2UKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBtYXBmaWxlX2l0ZXJhdG9yOwotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIG1hcGZpbGUKLXsKLSAgIHR5cGVkZWYgY2hhciogcG9pbnRlcjsKLSAgIHN0ZDo6RklMRSogaGZpbGU7Ci0gICBsb25nIGludCBfc2l6ZTsKLSAgIHBvaW50ZXIqIF9maXJzdDsKLSAgIHBvaW50ZXIqIF9sYXN0OwotICAgbXV0YWJsZSBzdGQ6Omxpc3Q8cG9pbnRlcio+IGNvbmRlbWVkOwotICAgZW51bSBzaXplcwotICAgewotICAgICAgYnVmX3NpemUgPSA0MDk2Ci0gICB9OwotICAgdm9pZCBsb2NrKHBvaW50ZXIqIG5vZGUpY29uc3Q7Ci0gICB2b2lkIHVubG9jayhwb2ludGVyKiBub2RlKWNvbnN0OwotcHVibGljOgotCi0gICB0eXBlZGVmIG1hcGZpbGVfaXRlcmF0b3IgaXRlcmF0b3I7Ci0KLSAgIG1hcGZpbGUoKXsgaGZpbGUgPSAwOyBfc2l6ZSA9IDA7IF9maXJzdCA9IF9sYXN0ID0gMDsgfQotICAgbWFwZmlsZShjb25zdCBjaGFyKiBmaWxlKXsgaGZpbGUgPSAwOyBfc2l6ZSA9IDA7IF9maXJzdCA9IF9sYXN0ID0gMDsgb3BlbihmaWxlKTsgfQotICAgfm1hcGZpbGUoKXsgY2xvc2UoKTsgfQotICAgdm9pZCBvcGVuKGNvbnN0IGNoYXIqIGZpbGUpOwotICAgdm9pZCBjbG9zZSgpOwotICAgaXRlcmF0b3IgYmVnaW4oKWNvbnN0OwotICAgaXRlcmF0b3IgZW5kKCljb25zdDsKLSAgIHVuc2lnbmVkIGxvbmcgc2l6ZSgpY29uc3R7IHJldHVybiBfc2l6ZTsgfQotICAgYm9vbCB2YWxpZCgpY29uc3R7IHJldHVybiBoZmlsZSAhPSAwOyB9Ci0gICBmcmllbmQgY2xhc3MgbWFwZmlsZV9pdGVyYXRvcjsKLX07Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgbWFwZmlsZV9pdGVyYXRvcgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUikgfHwgZGVmaW5lZChORE5CT09TVF9NU1ZDX1NURF9JVEVSQVRPUikKLTogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywgY2hhcj4KLSNlbmRpZgotewotICAgdHlwZWRlZiBtYXBmaWxlOjpwb2ludGVyIGludGVybmFsX3BvaW50ZXI7Ci0gICBpbnRlcm5hbF9wb2ludGVyKiBub2RlOwotICAgY29uc3QgbWFwZmlsZSogZmlsZTsKLSAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0OwotICAgbG9uZyBwb3NpdGlvbigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBmaWxlID8gKChub2RlIC0gZmlsZS0+X2ZpcnN0KSAqIG1hcGZpbGU6OmJ1Zl9zaXplICsgb2Zmc2V0KSA6IDA7Ci0gICB9Ci0gICB2b2lkIHBvc2l0aW9uKGxvbmcgcG9zKQotICAgewotICAgICAgaWYoZmlsZSkKLSAgICAgIHsKLSAgICAgICAgIG5vZGUgPSBmaWxlLT5fZmlyc3QgKyAocG9zIC8gbWFwZmlsZTo6YnVmX3NpemUpOwotICAgICAgICAgb2Zmc2V0ID0gcG9zICUgbWFwZmlsZTo6YnVmX3NpemU7Ci0gICAgICB9Ci0gICB9Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXIqICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgY29uc3QgY2hhciYgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgIG1hcGZpbGVfaXRlcmF0b3IoKSB7IG5vZGUgPSAwOyBmaWxlID0gMDsgb2Zmc2V0ID0gMDsgfQotICAgbWFwZmlsZV9pdGVyYXRvcihjb25zdCBtYXBmaWxlKiBmLCBsb25nIGFyZ19wb3NpdGlvbikKLSAgIHsKLSAgICAgIGZpbGUgPSBmOwotICAgICAgbm9kZSA9IGYtPl9maXJzdCArIGFyZ19wb3NpdGlvbiAvIG1hcGZpbGU6OmJ1Zl9zaXplOwotICAgICAgb2Zmc2V0ID0gYXJnX3Bvc2l0aW9uICUgbWFwZmlsZTo6YnVmX3NpemU7Ci0gICAgICBpZihmaWxlKQotICAgICAgICAgZmlsZS0+bG9jayhub2RlKTsKLSAgIH0KLSAgIG1hcGZpbGVfaXRlcmF0b3IoY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSkKLSAgIHsKLSAgICAgIGZpbGUgPSBpLmZpbGU7Ci0gICAgICBub2RlID0gaS5ub2RlOwotICAgICAgb2Zmc2V0ID0gaS5vZmZzZXQ7Ci0gICAgICBpZihmaWxlKQotICAgICAgICAgZmlsZS0+bG9jayhub2RlKTsKLSAgIH0KLSAgIH5tYXBmaWxlX2l0ZXJhdG9yKCkKLSAgIHsKLSAgICAgIGlmKGZpbGUgJiYgbm9kZSkKLSAgICAgICAgIGZpbGUtPnVubG9jayhub2RlKTsKLSAgIH0KLSAgIG1hcGZpbGVfaXRlcmF0b3ImIG9wZXJhdG9yID0gKGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGkpOwotICAgY2hhciBvcGVyYXRvciogKCljb25zdAotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKG5vZGUgPj0gZmlsZS0+X2ZpcnN0KTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChub2RlIDwgZmlsZS0+X2xhc3QpOwotICAgICAgcmV0dXJuIGZpbGUgPyAqKCpub2RlICsgc2l6ZW9mKGludCkgKyBvZmZzZXQpIDogY2hhcigwKTsKLSAgIH0KLSAgIGNoYXIgb3BlcmF0b3JbXSAobG9uZyBvZmYpY29uc3QKLSAgIHsKLSAgICAgIG1hcGZpbGVfaXRlcmF0b3IgdG1wKCp0aGlzKTsKLSAgICAgIHRtcCArPSBvZmY7Ci0gICAgICByZXR1cm4gKnRtcDsKLSAgIH0KLSAgIG1hcGZpbGVfaXRlcmF0b3ImIG9wZXJhdG9yKysgKCk7Ci0gICBtYXBmaWxlX2l0ZXJhdG9yIG9wZXJhdG9yKysgKGludCk7Ci0gICBtYXBmaWxlX2l0ZXJhdG9yJiBvcGVyYXRvci0tICgpOwotICAgbWFwZmlsZV9pdGVyYXRvciBvcGVyYXRvci0tIChpbnQpOwotCi0gICBtYXBmaWxlX2l0ZXJhdG9yJiBvcGVyYXRvciArPSAobG9uZyBvZmYpCi0gICB7Ci0gICAgICBwb3NpdGlvbihwb3NpdGlvbigpICsgb2ZmKTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIG1hcGZpbGVfaXRlcmF0b3ImIG9wZXJhdG9yIC09IChsb25nIG9mZikKLSAgIHsKLSAgICAgIHBvc2l0aW9uKHBvc2l0aW9uKCkgLSBvZmYpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotCi0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuIChpLmZpbGUgPT0gai5maWxlKSAmJiAoaS5ub2RlID09IGoubm9kZSkgJiYgKGkub2Zmc2V0ID09IGoub2Zmc2V0KTsKLSAgIH0KLQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSwgY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaikKLSAgIHsKLSAgICAgIHJldHVybiAhKGkgPT0gaik7Ci0gICB9Ci0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSwgY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaikKLSAgIHsKLSAgICAgIHJldHVybiBpLnBvc2l0aW9uKCkgPCBqLnBvc2l0aW9uKCk7Ci0gICB9Ci0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGopCi0gICB7Ci0gICAgICByZXR1cm4gaS5wb3NpdGlvbigpID4gai5wb3NpdGlvbigpOwotICAgfQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSwgY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaikKLSAgIHsKLSAgICAgIHJldHVybiBpLnBvc2l0aW9uKCkgPD0gai5wb3NpdGlvbigpOwotICAgfQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSwgY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaikKLSAgIHsKLSAgICAgIHJldHVybiBpLnBvc2l0aW9uKCkgPj0gai5wb3NpdGlvbigpOwotICAgfQotCi0gICBmcmllbmQgbWFwZmlsZV9pdGVyYXRvciBvcGVyYXRvciArIChjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBsb25nIG9mZik7Ci0gICBmcmllbmQgbWFwZmlsZV9pdGVyYXRvciBvcGVyYXRvciArIChsb25nIG9mZiwgY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSkKLSAgIHsKLSAgICAgIG1hcGZpbGVfaXRlcmF0b3IgdG1wKGkpOwotICAgICAgcmV0dXJuIHRtcCArPSBvZmY7Ci0gICB9Ci0gICBmcmllbmQgbWFwZmlsZV9pdGVyYXRvciBvcGVyYXRvciAtIChjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBsb25nIG9mZik7Ci0gICBmcmllbmQgaW5saW5lIGxvbmcgb3BlcmF0b3IgLSAoY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSwgY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaikKLSAgIHsKLSAgICAgIHJldHVybiBpLnBvc2l0aW9uKCkgLSBqLnBvc2l0aW9uKCk7Ci0gICB9Ci19OwotCi0jZW5kaWYKLQotLy8gX2ZpX3NlcCBkZXRlcm1pbmVzIHRoZSBkaXJlY3Rvcnkgc2VwYXJhdG9yLCBlaXRoZXIgJ1xcJyBvciAnLycKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgZXh0ZXJuIGNvbnN0IGNoYXIqIF9maV9zZXA7Ci0KLXN0cnVjdCBmaWxlX2l0ZXJhdG9yX3JlZgotewotICAgX2ZpX2ZpbmRfaGFuZGxlIGhmOwotICAgX2ZpX2ZpbmRfZGF0YSBfZGF0YTsKLSAgIGxvbmcgY291bnQ7Ci19OwotCi0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgZmlsZV9pdGVyYXRvciAKLXsKLSAgIGNoYXIqIF9yb290OwotICAgY2hhciogX3BhdGg7Ci0gICBjaGFyKiBwdHI7Ci0gICBmaWxlX2l0ZXJhdG9yX3JlZiogcmVmOwotCi1wdWJsaWM6Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBjb25zdCBjaGFyKiAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXIqKiAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgY29uc3QgY2hhciomICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnICAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgIGZpbGVfaXRlcmF0b3IoKTsKLSAgIGZpbGVfaXRlcmF0b3IoY29uc3QgY2hhciogd2lsZCk7Ci0gICB+ZmlsZV9pdGVyYXRvcigpOwotICAgZmlsZV9pdGVyYXRvcihjb25zdCBmaWxlX2l0ZXJhdG9yJik7Ci0gICBmaWxlX2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgZmlsZV9pdGVyYXRvciYpOwotICAgY29uc3QgY2hhciogcm9vdCgpY29uc3QgeyByZXR1cm4gX3Jvb3Q7IH0KLSAgIGNvbnN0IGNoYXIqIHBhdGgoKWNvbnN0IHsgcmV0dXJuIF9wYXRoOyB9Ci0gICBjb25zdCBjaGFyKiBuYW1lKCljb25zdCB7IHJldHVybiBwdHI7IH0KLSAgIF9maV9maW5kX2RhdGEqIGRhdGEoKSB7IHJldHVybiAmKHJlZi0+X2RhdGEpOyB9Ci0gICB2b2lkIG5leHQoKTsKLSAgIGZpbGVfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IG5leHQoKTsgcmV0dXJuICp0aGlzOyB9Ci0gICBmaWxlX2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KTsKLSAgIGNvbnN0IGNoYXIqIG9wZXJhdG9yKigpIHsgcmV0dXJuIHBhdGgoKTsgfQotCi0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGZpbGVfaXRlcmF0b3ImIGYxLCBjb25zdCBmaWxlX2l0ZXJhdG9yJiBmMikKLSAgIHsKLSAgICAgIHJldHVybiAoKGYxLnJlZi0+aGYgPT0gX2ZpX2ludmFsaWRfaGFuZGxlKSAmJiAoZjIucmVmLT5oZiA9PSBfZmlfaW52YWxpZF9oYW5kbGUpKTsKLSAgIH0KLQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBmaWxlX2l0ZXJhdG9yJiBmMSwgY29uc3QgZmlsZV9pdGVyYXRvciYgZjIpCi0gICB7Ci0gICAgICByZXR1cm4gIShmMSA9PSBmMik7Ci0gICB9Ci0KLX07Ci0KLS8vIGR3YSA5LzEzLzAwIC0gc3VwcHJlc3MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nCi1pbmxpbmUgYm9vbCBvcGVyYXRvciA8IChjb25zdCBmaWxlX2l0ZXJhdG9yJiwgY29uc3QgZmlsZV9pdGVyYXRvciYpCi17Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBkaXJlY3RvcnlfaXRlcmF0b3IKLXsKLSAgIGNoYXIqIF9yb290OwotICAgY2hhciogX3BhdGg7Ci0gICBjaGFyKiBwdHI7Ci0gICBmaWxlX2l0ZXJhdG9yX3JlZiogcmVmOwotCi1wdWJsaWM6Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBjb25zdCBjaGFyKiAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXIqKiAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgY29uc3QgY2hhciomICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnICAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgIGRpcmVjdG9yeV9pdGVyYXRvcigpOwotICAgZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IGNoYXIqIHdpbGQpOwotICAgfmRpcmVjdG9yeV9pdGVyYXRvcigpOwotICAgZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IGRpcmVjdG9yeV9pdGVyYXRvciYgb3RoZXIpOwotICAgZGlyZWN0b3J5X2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiBvdGhlcik7Ci0KLSAgIGNvbnN0IGNoYXIqIHJvb3QoKWNvbnN0IHsgcmV0dXJuIF9yb290OyB9Ci0gICBjb25zdCBjaGFyKiBwYXRoKCljb25zdCB7IHJldHVybiBfcGF0aDsgfQotICAgY29uc3QgY2hhciogbmFtZSgpY29uc3QgeyByZXR1cm4gcHRyOyB9Ci0gICBfZmlfZmluZF9kYXRhKiBkYXRhKCkgeyByZXR1cm4gJihyZWYtPl9kYXRhKTsgfQotICAgdm9pZCBuZXh0KCk7Ci0gICBkaXJlY3RvcnlfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IG5leHQoKTsgcmV0dXJuICp0aGlzOyB9Ci0gICBkaXJlY3RvcnlfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpOwotICAgY29uc3QgY2hhciogb3BlcmF0b3IqKCkgeyByZXR1cm4gcGF0aCgpOyB9Ci0KLSAgIHN0YXRpYyBjb25zdCBjaGFyKiBzZXBhcmF0b3IoKSB7IHJldHVybiBfZmlfc2VwOyB9Ci0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiBmMSwgY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiBmMikKLSAgIHsKLSAgICAgIHJldHVybiAoKGYxLnJlZi0+aGYgPT0gX2ZpX2ludmFsaWRfaGFuZGxlKSAmJiAoZjIucmVmLT5oZiA9PSBfZmlfaW52YWxpZF9oYW5kbGUpKTsKLSAgIH0KLQotCi0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IGRpcmVjdG9yeV9pdGVyYXRvciYgZjEsIGNvbnN0IGRpcmVjdG9yeV9pdGVyYXRvciYgZjIpCi0gICB7Ci0gICAgICByZXR1cm4gIShmMSA9PSBmMik7Ci0gICB9Ci0KLSAgIH07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIDwgKGNvbnN0IGRpcmVjdG9yeV9pdGVyYXRvciYsIGNvbnN0IGRpcmVjdG9yeV9pdGVyYXRvciYpCi17Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0KLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi11c2luZyBuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXJlY3RvcnlfaXRlcmF0b3I7Ci11c2luZyBuZG5ib29zdDo6cmVfZGV0YWlsOjpmaWxlX2l0ZXJhdG9yOwotdXNpbmcgbmRuYm9vc3Q6OnJlX2RldGFpbDo6bWFwZmlsZTsKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgICAgLy8gTkROQk9PU1RfUkVHRVhfTk9fRklMRUlURVIKLSNlbmRpZiAgICAgLy8gTkROQk9PU1RfUkVfRklMRUlURVJfSFBQCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2luc3RhbmNlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2luc3RhbmNlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NGUwMWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pbnN0YW5jZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgaW5zdGFuY2VzLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVmaW5lcyB0aG9zZSB0ZW1wbGF0ZSBpbnN0YW5jZXMgdGhhdCBhcmUgcGxhY2VkIGluIHRoZQotICAqICAgICAgICAgICAgICAgIGxpYnJhcnkgcmF0aGVyIHRoYW4gaW4gdGhlIHVzZXJzIG9iamVjdCBmaWxlcy4KLSAgKi8KLQotLy8KLS8vIG5vdGUgbm8gaW5jbHVkZSBndWFyZCwgd2UgbWF5IGluY2x1ZGUgdGhpcyBtdWx0aXBsZSB0aW1lczoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLS8vCi0vLyB0aGlzIGhlYWRlciBjYW4gYmUgaW5jbHVkZWQgbXVsdGlwbGUgdGltZXMsIGVhY2ggdGltZSB3aXRoCi0vLyBhIGRpZmZlcmVudCBjaGFyYWN0ZXIgdHlwZSwgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIG11c3QgYmUgZGVmaW5lZAotLy8gZmlyc3Q6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DSEFSX1QKLSMgIGVycm9yICJORE5CT09TVF9SRUdFWF9DSEFSX1Qgbm90IGRlZmluZWQiCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfVAotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UICwgbmRuYm9vc3Q6OnJlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1QgPgotI2VuZGlmCi0KLS8vCi0vLyB3aGF0IGZvbGxvd3MgaXMgY29tcGlsZXIgc3BlY2lmaWM6Ci0vLwotCi0jaWYgIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0KLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgICAgcHJhZ21hIG9wdGlvbiBwdXNoIC1KZ3gKLSMgIGVuZGlmCi0KLXRlbXBsYXRlIGNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYmFzaWNfcmVnZXg8IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+OwotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBtYXRjaF9yZXN1bHRzPCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqID47Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLXRlbXBsYXRlIGNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpwZXJsX21hdGNoZXI8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIGNvbnN0ICosIG1hdGNoX3Jlc3VsdHM8IGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogPjo6YWxsb2NhdG9yX3R5cGUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPjsKLSNlbmRpZgotCi0jICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSMgICAgIHByYWdtYSBvcHRpb24gcG9wCi0jICBlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IGRlZmluZWQoX19JQ0wpCi0KLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgICAgaWZkZWYgX19HTlVDX18KLSMgICAgICAgIGRlZmluZSB0ZW1wbGF0ZSBfX2V4dGVuc2lvbl9fIGV4dGVybiB0ZW1wbGF0ZQotIyAgICAgZWxzZQotIyAgICAgICAgaWYgTkROQk9PU1RfTVNWQyA+IDEzMTAKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMCi0jICAgICAgICBlbmRpZgotIyAgICAgICAgZGVmaW5lIHRlbXBsYXRlIGV4dGVybiB0ZW1wbGF0ZQotIyAgICAgZW5kaWYKLSMgIGVuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTAotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wgTkROQk9PU1RfUkVHRVhfREVDTAotI2VuZGlmCi0KLSMgIGlmZGVmIE5ETkJPT1NUX01TVkMKLSMgICAgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICAgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI1MSA0MjMxKQotIyAgICAgaWYgTkROQk9PU1RfTVNWQyA8IDE2MDAKLSMgICAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0NjYwKQotIyAgICAgZW5kaWYKLSMgIGVuZGlmCi0KLXRlbXBsYXRlIGNsYXNzIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wgYmFzaWNfcmVnZXg8IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+OwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTCBtYXRjaF9yZXN1bHRzPCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqID47Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjxORE5CT09TVF9SRUdFWF9DSEFSX1QgY29uc3QgKiwgbWF0Y2hfcmVzdWx0czwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiA+OjphbGxvY2F0b3JfdHlwZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+OwotI2VuZGlmCi0jaWYgIShkZWZpbmVkKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCKSAmJiAoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIgPD0gMSkpXAotICAgJiYgIShkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKSAmJiAoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gPD0gODAwKSlcCi0gICAmJiAhKGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikpXAotICAgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfSUNVX0lOU1RBTkNFUykKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMIG1hdGNoX3Jlc3VsdHM8IHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yID47Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjwgc3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IsIG1hdGNoX3Jlc3VsdHM8IHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yID46OmFsbG9jYXRvcl90eXBlLCBuZG5ib29zdDo6cmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCA+ID47Ci0jZW5kaWYKLSNlbmRpZgotCi0KLSMgIGlmZGVmIE5ETkJPT1NUX01TVkMKLSMgICAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSMgIGVuZGlmCi0KLSMgIGlmZGVmIHRlbXBsYXRlCi0jICAgICB1bmRlZiB0ZW1wbGF0ZQotIyAgZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wKLQotI2VsaWYgKGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSAzKSkgfHwgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFKQotCi0jICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSMgICAgIGlmZGVmIF9fR05VQ19fCi0jICAgICAgICBkZWZpbmUgdGVtcGxhdGUgX19leHRlbnNpb25fXyBleHRlcm4gdGVtcGxhdGUKLSMgICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSB0ZW1wbGF0ZSBleHRlcm4gdGVtcGxhdGUKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfSUNVX0lOU1RBTkNFUykKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1zdGQ6OmxvY2FsZSBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6aW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGwpOwotCi10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1jcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OnN0cmluZ190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojp0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAxLCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAyKSBjb25zdDsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLWNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6c3RyaW5nX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OnRyYW5zZm9ybShjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAxLCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAyKSBjb25zdDsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLWNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6c3RyaW5nX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46Omxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAxLCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAyKSBjb25zdDsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLXZvaWQgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojppbml0KCk7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1jcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNoYXJfY2xhc3NfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6bG9va3VwX2NsYXNzbmFtZV9pbXAoY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMSwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMikgY29uc3Q7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLWJvb2wgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojppc2N0eXBlKGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBjLCBjaGFyX2NsYXNzX3R5cGUgbWFzaykgY29uc3Q7Ci0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlCi10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1pbnQgY3BwX3JlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojp0b2koY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiYgZmlyc3QsIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogbGFzdCwgaW50IHJhZGl4KWNvbnN0OwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotc3RkOjpzdHJpbmcgY3BwX3JlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpjYXRhbG9nX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotc3RkOjpzdHJpbmcmIGNwcF9yZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Z2V0X2NhdGFsb2dfbmFtZV9pbnN0KCk7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1zdGQ6OnN0cmluZyBjcHBfcmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmdldF9jYXRhbG9nX25hbWUoKTsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotc3RhdGljX211dGV4JiBjcHBfcmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmdldF9tdXRleF9pbnN0KCk7Ci0jZW5kaWYKLSNlbmRpZgotCi10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIGJhc2ljX3JlZ2V4PE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+JiAKLSAgIGJhc2ljX3JlZ2V4PE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+Ojpkb19hc3NpZ24oCi0gICAgICBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAxLCAKLSAgICAgIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDIsIAotICAgICAgZmxhZ190eXBlIGYpOwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCBiYXNpY19yZWdleDxORE5CT09TVF9SRUdFWF9DSEFSX1QgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPjo6bG9jYWxlX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCAKLSAgIGJhc2ljX3JlZ2V4PE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+OjppbWJ1ZShsb2NhbGVfdHlwZSBsKTsKLQotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgCi0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCo+OjptYXliZV9hc3NpZ24oCi0gICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCo+JiBtKTsKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCBwZXJsX21hdGNoZXI8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIGNvbnN0ICosIG1hdGNoX3Jlc3VsdHM8IGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogPjo6YWxsb2NhdG9yX3R5cGUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPjo6Y29uc3RydWN0X2luaXQoCi0gICAgICBjb25zdCBiYXNpY19yZWdleDxORE5CT09TVF9SRUdFWF9DSEFSX1QgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgPiYgZSwgbWF0Y2hfZmxhZ190eXBlIGYpOwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCBib29sIHBlcmxfbWF0Y2hlcjxORE5CT09TVF9SRUdFWF9DSEFSX1QgY29uc3QgKiwgbWF0Y2hfcmVzdWx0czwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiA+OjphbGxvY2F0b3JfdHlwZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+OjptYXRjaCgpOwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCBib29sIHBlcmxfbWF0Y2hlcjxORE5CT09TVF9SRUdFWF9DSEFSX1QgY29uc3QgKiwgbWF0Y2hfcmVzdWx0czwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiA+OjphbGxvY2F0b3JfdHlwZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+OjpmaW5kKCk7Ci19IC8vIG5hbWVzcGFjZQotCi0jaWYgKGRlZmluZWQoX19HTElCQ1BQX18pIHx8IGRlZmluZWQoX19HTElCQ1hYX18pKSBcCi0gICAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9JQ1VfSU5TVEFOQ0VTKVwKLSAgICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKVwKLSAgICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0vLyBzdGQ6YmFzaWNfc3RyaW5nPD46OmNvbnN0X2l0ZXJhdG9yIGluc3RhbmNlcyBhcyB3ZWxsOgotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgCi0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yPjo6bWF5YmVfYXNzaWduKAotICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvcj4mIG0pOwotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIHBlcmxfbWF0Y2hlcjxzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciwgbWF0Y2hfcmVzdWx0czwgc3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IgPjo6YWxsb2NhdG9yX3R5cGUsIG5kbmJvb3N0OjpyZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UID4gPjo6Y29uc3RydWN0X2luaXQoCi0gICAgICBjb25zdCBiYXNpY19yZWdleDxORE5CT09TVF9SRUdFWF9DSEFSX1Q+JiBlLCBtYXRjaF9mbGFnX3R5cGUgZik7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgcGVybF9tYXRjaGVyPHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yLCBtYXRjaF9yZXN1bHRzPCBzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciA+OjphbGxvY2F0b3JfdHlwZSwgbmRuYm9vc3Q6OnJlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1QgPiA+OjptYXRjaCgpOwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCBib29sIHBlcmxfbWF0Y2hlcjxzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciwgbWF0Y2hfcmVzdWx0czwgc3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IgPjo6YWxsb2NhdG9yX3R5cGUsIG5kbmJvb3N0OjpyZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UID4gPjo6ZmluZCgpOwotfSAvLyBuYW1lc3BhY2UKLSNlbmRpZgotCi0jICBpZmRlZiB0ZW1wbGF0ZQotIyAgICAgdW5kZWYgdGVtcGxhdGUKLSMgIGVuZGlmCi0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SRUdFWF9OT19FWFRFUk5BTF9URU1QTEFURVMKLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2l0ZXJhdG9yX2NhdGVnb3J5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfY2F0ZWdvcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTA0MTdiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfY2F0ZWdvcnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9tYXRjaC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IEl0ZXJhdG9yIHRyYWl0cyBmb3Igc2VsZWN0aW5nIGFuIGl0ZXJhdG9yIHR5cGUgYXMKLSAgKiAgICAgICAgICAgICAgICBhbiBpbnRlZ3JhbCBjb25zdGFudCBleHByZXNzaW9uLgotICAqLwotCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfSVRFUkFUT1JfQ0FURUdPUllfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0lURVJBVE9SX0NBVEVHT1JZX0hQUAotCi0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLXN0cnVjdCBpc19yYW5kb21faW1wCi17Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMKLXByaXZhdGU6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEk+OjppdGVyYXRvcl9jYXRlZ29yeSBjYXQ7Ci1wdWJsaWM6Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8Y2F0Kiwgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyo+Ojp2YWx1ZSkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEk+Ci1zdHJ1Y3QgaXNfcmFuZG9tX3BvaW50ZXJfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGlzX3BvaW50ZXJfdHlwZT4KLXN0cnVjdCBpc19yYW5kb21faW1wX3NlbGVjdG9yCi17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgST4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfcmFuZG9tX2ltcDxJPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcmFuZG9tX2ltcF9zZWxlY3Rvcjx0cnVlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIEk+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX3JhbmRvbV9wb2ludGVyX2ltcDxJPiB0eXBlOwotICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEk+Ci1zdHJ1Y3QgaXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcgotewotcHJpdmF0ZToKLSAgIHR5cGVkZWYgZGV0YWlsOjppc19yYW5kb21faW1wX3NlbGVjdG9yPCA6Om5kbmJvb3N0Ojppc19wb2ludGVyPEk+Ojp2YWx1ZT4gc2VsZWN0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8ST4gYm91bmRfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYm91bmRfdHlwZTo6dHlwZSBhbnN3ZXI7Ci1wdWJsaWM6Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBhbnN3ZXI6OnZhbHVlKTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLXRlbXBsYXRlIDxjbGFzcyBJPgotY29uc3QgYm9vbCBpc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEk+Ojp2YWx1ZTsKLSNlbmRpZgotCi19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2l0ZXJhdG9yX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2l0ZXJhdG9yX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OTViMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pdGVyYXRvcl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBpdGVyYXRvcl90cmFpdHMuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBpdGVyYXRvciB0cmFpdHMgd29ya2Fyb3VuZHMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfSVRFUkFUT1JfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9JVEVSQVRPUl9UUkFJVFNfSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUykgfHwgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHMgCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVDo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVDo6dmFsdWVfdHlwZSAgICAgICAgdmFsdWVfdHlwZTsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1IpCi0gIHR5cGVkZWYgdHlwZW5hbWUgVDo6ZGlmZmVyZW5jZV90eXBlICAgZGlmZmVyZW5jZV90eXBlOwotICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnBvaW50ZXIgICAgICAgICAgIHBvaW50ZXI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVDo6cmVmZXJlbmNlICAgICAgICAgcmVmZXJlbmNlOwotI2Vsc2UKLSAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gIHR5cGVkZWYgdmFsdWVfdHlwZSogICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgdHlwZWRlZiB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzCi17Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBUKiBwb2ludGVyOwotICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgY29uc3RfcG9pbnRlcl9pdGVyYXRvcl90cmFpdHMKLXsKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIGNvbnN0IFQqIHBvaW50ZXI7Ci0gICB0eXBlZGVmIGNvbnN0IFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8Y2hhcio+IDogcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8Y2hhcj57fTsKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8Y29uc3QgY2hhcio+IDogY29uc3RfcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8Y2hhcj57fTsKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8d2NoYXJfdCo+IDogcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8d2NoYXJfdD57fTsKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8Y29uc3Qgd2NoYXJfdCo+IDogY29uc3RfcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8d2NoYXJfdD57fTsKLS8vCi0vLyB0aGUgZm9sbHdvaW5nIGFyZSBuZWVkZWQgZm9yIElDVSBzdXBwb3J0OgotLy8KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8dW5zaWduZWQgY2hhcio+IDogcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8Y2hhcj57fTsKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8Y29uc3QgdW5zaWduZWQgY2hhcio+IDogY29uc3RfcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8Y2hhcj57fTsKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8aW50Kj4gOiBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxpbnQ+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPGNvbnN0IGludCo+IDogY29uc3RfcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8aW50Pnt9OwotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8dW5zaWduZWQgc2hvcnQqPiA6IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPHVuc2lnbmVkIHNob3J0Pnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxjb25zdCB1bnNpZ25lZCBzaG9ydCo+IDogY29uc3RfcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8dW5zaWduZWQgc2hvcnQ+e307Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmIGRlZmluZWQoX19TVExfREVCVUcpCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPHN0ZDo6c3RyaW5nOjppdGVyYXRvcj4gOiBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IDogY29uc3RfcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8Y2hhcj57fTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8c3RkOjp3c3RyaW5nOjppdGVyYXRvcj4gOiBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czx3Y2hhcl90Pnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiA6IGNvbnN0X3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPHdjaGFyX3Q+e307Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fV1NUUklORwotI2VuZGlmIC8vIHN0cG9ydAotCi0jZWxzZQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHMgOiBwdWJsaWMgc3RkOjppdGVyYXRvcl90cmFpdHM8VD4ge307Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfZmxhZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tYXRjaF9mbGFncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNTJkMGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tYXRjaF9mbGFncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBtYXRjaF9mbGFncy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIG1hdGNoX2ZsYWdzIHR5cGUuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfTUFUQ0hfRkxBR1MKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfTUFUQ0hfRkxBR1MKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLW5hbWVzcGFjZSBuZG5ib29zdHsKLSAgIG5hbWVzcGFjZSByZWdleF9jb25zdGFudHN7Ci0jZW5kaWYKLQotdHlwZWRlZiBlbnVtIF9tYXRjaF9mbGFncwotewotICAgbWF0Y2hfZGVmYXVsdCA9IDAsCi0gICBtYXRjaF9ub3RfYm9sID0gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpcnN0IGlzIG5vdCBzdGFydCBvZiBsaW5lICovCi0gICBtYXRjaF9ub3RfZW9sID0gbWF0Y2hfbm90X2JvbCA8PCAxLCAgICAgICAgICAgICAgIC8qIGxhc3QgaXMgbm90IGVuZCBvZiBsaW5lICovCi0gICBtYXRjaF9ub3RfYm9iID0gbWF0Y2hfbm90X2VvbCA8PCAxLCAgICAgICAgICAgICAgIC8qIGZpcnN0IGlzIG5vdCBzdGFydCBvZiBidWZmZXIgKi8KLSAgIG1hdGNoX25vdF9lb2IgPSBtYXRjaF9ub3RfYm9iIDw8IDEsICAgICAgICAgICAgICAgLyogbGFzdCBpcyBub3QgZW5kIG9mIGJ1ZmZlciAqLwotICAgbWF0Y2hfbm90X2JvdyA9IG1hdGNoX25vdF9lb2IgPDwgMSwgICAgICAgICAgICAgICAvKiBmaXJzdCBpcyBub3Qgc3RhcnQgb2Ygd29yZCAqLwotICAgbWF0Y2hfbm90X2VvdyA9IG1hdGNoX25vdF9ib3cgPDwgMSwgICAgICAgICAgICAgICAvKiBsYXN0IGlzIG5vdCBlbmQgb2Ygd29yZCAqLwotICAgbWF0Y2hfbm90X2RvdF9uZXdsaW5lID0gbWF0Y2hfbm90X2VvdyA8PCAxLCAgICAgICAvKiBcbiBpcyBub3QgbWF0Y2hlZCBieSAnLicgKi8KLSAgIG1hdGNoX25vdF9kb3RfbnVsbCA9IG1hdGNoX25vdF9kb3RfbmV3bGluZSA8PCAxLCAgLyogJ1wwJyBpcyBub3QgbWF0Y2hlZCBieSAnLicgKi8KLSAgIG1hdGNoX3ByZXZfYXZhaWwgPSBtYXRjaF9ub3RfZG90X251bGwgPDwgMSwgICAgICAgLyogKi0tZmlyc3QgaXMgYSB2YWxpZCBleHByZXNzaW9uICovCi0gICBtYXRjaF9pbml0ID0gbWF0Y2hfcHJldl9hdmFpbCA8PCAxLCAgICAgICAgICAgICAgIC8qIGludGVybmFsIHVzZSAqLwotICAgbWF0Y2hfYW55ID0gbWF0Y2hfaW5pdCA8PCAxLCAgICAgICAgICAgICAgICAgICAgICAvKiBkb24ndCBjYXJlIHdoYXQgd2UgbWF0Y2ggKi8KLSAgIG1hdGNoX25vdF9udWxsID0gbWF0Y2hfYW55IDw8IDEsICAgICAgICAgICAgICAgICAgLyogc3RyaW5nIGNhbid0IGJlIG51bGwgKi8KLSAgIG1hdGNoX2NvbnRpbnVvdXMgPSBtYXRjaF9ub3RfbnVsbCA8PCAxLCAgICAgICAgICAgLyogZWFjaCBncmVwIG1hdGNoIG11c3QgY29udGludWUgZnJvbSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB1bmludGVydXB0ZWQgZnJvbSB0aGUgcHJldmlvdXMgb25lICovCi0gICBtYXRjaF9wYXJ0aWFsID0gbWF0Y2hfY29udGludW91cyA8PCAxLCAgICAgICAgICAgIC8qIGZpbmQgcGFydGlhbCBtYXRjaGVzICovCi0gICAKLSAgIG1hdGNoX3N0b3AgPSBtYXRjaF9wYXJ0aWFsIDw8IDEsICAgICAgICAgICAgICAgICAgLyogc3RvcCBhZnRlciBmaXJzdCBtYXRjaCAoZ3JlcCkgVjMgb25seSAqLwotICAgbWF0Y2hfbm90X2luaXRpYWxfbnVsbCA9IG1hdGNoX3N0b3AsICAgICAgICAgICAgICAvKiBkb24ndCBtYXRjaCBpbml0aWFsIG51bGwsIFY0IG9ubHkgKi8KLSAgIG1hdGNoX2FsbCA9IG1hdGNoX3N0b3AgPDwgMSwgICAgICAgICAgICAgICAgICAgICAgLyogbXVzdCBmaW5kIHRoZSB3aG9sZSBvZiBpbnB1dCBldmVuIGlmIG1hdGNoX2FueSBpcyBzZXQgKi8KLSAgIG1hdGNoX3BlcmwgPSBtYXRjaF9hbGwgPDwgMSwgICAgICAgICAgICAgICAgICAgICAgLyogVXNlIHBlcmwgbWF0Y2hpbmcgcnVsZXMgKi8KLSAgIG1hdGNoX3Bvc2l4ID0gbWF0Y2hfcGVybCA8PCAxLCAgICAgICAgICAgICAgICAgICAgLyogVXNlIFBPU0lYIG1hdGNoaW5nIHJ1bGVzICovCi0gICBtYXRjaF9ub3N1YnMgPSBtYXRjaF9wb3NpeCA8PCAxLCAgICAgICAgICAgICAgICAgIC8qIGRvbid0IHRyYXAgbWFya2VkIHN1YnMgKi8KLSAgIG1hdGNoX2V4dHJhID0gbWF0Y2hfbm9zdWJzIDw8IDEsICAgICAgICAgICAgICAgICAgLyogaW5jbHVkZSBmdWxsIGNhcHR1cmUgaW5mb3JtYXRpb24gZm9yIHJlcGVhdGVkIGNhcHR1cmVzICovCi0gICBtYXRjaF9zaW5nbGVfbGluZSA9IG1hdGNoX2V4dHJhIDw8IDEsICAgICAgICAgICAgIC8qIHRyZWF0IHRleHQgYXMgc2luZ2xlIGxpbmUgYW5kIGlnbm9yIGFueSBcbidzIHdoZW4gbWF0Y2hpbmcgXiBhbmQgJC4gKi8KLSAgIG1hdGNoX3VudXNlZDEgPSBtYXRjaF9zaW5nbGVfbGluZSA8PCAxLCAgICAgICAgICAgLyogdW51c2VkICovCi0gICBtYXRjaF91bnVzZWQyID0gbWF0Y2hfdW51c2VkMSA8PCAxLCAgICAgICAgICAgICAgIC8qIHVudXNlZCAqLwotICAgbWF0Y2hfdW51c2VkMyA9IG1hdGNoX3VudXNlZDIgPDwgMSwgICAgICAgICAgICAgICAvKiB1bnVzZWQgKi8KLSAgIG1hdGNoX21heCA9IG1hdGNoX3VudXNlZDMsCi0KLSAgIGZvcm1hdF9wZXJsID0gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcGVybCBzdHlsZSByZXBsYWNlbWVudCAqLwotICAgZm9ybWF0X2RlZmF1bHQgPSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkaXR0by4gKi8KLSAgIGZvcm1hdF9zZWQgPSBtYXRjaF9tYXggPDwgMSwgICAgICAgICAgICAgICAgICAgICAgLyogc2VkIHN0eWxlIHJlcGxhY2VtZW50LiAqLwotICAgZm9ybWF0X2FsbCA9IGZvcm1hdF9zZWQgPDwgMSwgICAgICAgICAgICAgICAgICAgICAvKiBlbmFibGUgYWxsIGV4dGVudGlvbnMgdG8gc3l0YXguICovCi0gICBmb3JtYXRfbm9fY29weSA9IGZvcm1hdF9hbGwgPDwgMSwgICAgICAgICAgICAgICAgIC8qIGRvbid0IGNvcHkgbm9uLW1hdGNoaW5nIHNlZ21lbnRzLiAqLwotICAgZm9ybWF0X2ZpcnN0X29ubHkgPSBmb3JtYXRfbm9fY29weSA8PCAxLCAgICAgICAgICAvKiBPbmx5IHJlcGxhY2UgZmlyc3Qgb2NjdXJhbmNlLiAqLwotICAgZm9ybWF0X2lzX2lmID0gZm9ybWF0X2ZpcnN0X29ubHkgPDwgMSwgICAgICAgICAgICAvKiBpbnRlcm5hbCB1c2Ugb25seS4gKi8KLSAgIGZvcm1hdF9saXRlcmFsID0gZm9ybWF0X2lzX2lmIDw8IDEgICAgICAgICAgICAgICAgLyogdHJlYXQgc3RyaW5nIGFzIGEgbGl0ZXJhbCAqLwotCi19IG1hdGNoX2ZsYWdzOwotCi0jaWYgKGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8IDEzMDApKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBtYXRjaF9mbGFnX3R5cGU7Ci0jZWxzZQotdHlwZWRlZiBtYXRjaF9mbGFncyBtYXRjaF9mbGFnX3R5cGU7Ci0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1pbmxpbmUgbWF0Y2hfZmxhZ3Mgb3BlcmF0b3ImKG1hdGNoX2ZsYWdzIG0xLCBtYXRjaF9mbGFncyBtMikKLXsgcmV0dXJuIHN0YXRpY19jYXN0PG1hdGNoX2ZsYWdzPihzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50MzJfdD4obTEpICYgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDMyX3Q+KG0yKSk7IH0KLWlubGluZSBtYXRjaF9mbGFncyBvcGVyYXRvcnwobWF0Y2hfZmxhZ3MgbTEsIG1hdGNoX2ZsYWdzIG0yKQoteyByZXR1cm4gc3RhdGljX2Nhc3Q8bWF0Y2hfZmxhZ3M+KHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQzMl90PihtMSkgfCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50MzJfdD4obTIpKTsgfQotaW5saW5lIG1hdGNoX2ZsYWdzIG9wZXJhdG9yXihtYXRjaF9mbGFncyBtMSwgbWF0Y2hfZmxhZ3MgbTIpCi17IHJldHVybiBzdGF0aWNfY2FzdDxtYXRjaF9mbGFncz4oc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDMyX3Q+KG0xKSBeIHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQzMl90PihtMikpOyB9Ci1pbmxpbmUgbWF0Y2hfZmxhZ3Mgb3BlcmF0b3J+KG1hdGNoX2ZsYWdzIG0xKQoteyByZXR1cm4gc3RhdGljX2Nhc3Q8bWF0Y2hfZmxhZ3M+KH5zdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50MzJfdD4obTEpKTsgfQotaW5saW5lIG1hdGNoX2ZsYWdzJiBvcGVyYXRvciY9KG1hdGNoX2ZsYWdzJiBtMSwgbWF0Y2hfZmxhZ3MgbTIpCi17IG0xID0gbTEmbTI7IHJldHVybiBtMTsgfQotaW5saW5lIG1hdGNoX2ZsYWdzJiBvcGVyYXRvcnw9KG1hdGNoX2ZsYWdzJiBtMSwgbWF0Y2hfZmxhZ3MgbTIpCi17IG0xID0gbTF8bTI7IHJldHVybiBtMTsgfQotaW5saW5lIG1hdGNoX2ZsYWdzJiBvcGVyYXRvcl49KG1hdGNoX2ZsYWdzJiBtMSwgbWF0Y2hfZmxhZ3MgbTIpCi17IG0xID0gbTFebTI7IHJldHVybiBtMTsgfQotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19IC8qIG5hbWVzcGFjZSByZWdleF9jb25zdGFudHMgKi8KLS8qCi0gKiBpbXBvcnQgbmFtZXMgaW50byBib29zdCBmb3IgYmFja3dhcmRzIGNvbXBhdGlibGl0eToKLSAqLwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGU7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQ7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9ib2w7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9lb2w7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9ib2I7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9lb2I7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9ib3c7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9lb3c7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9kb3RfbmV3bGluZTsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2RvdF9udWxsOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9wcmV2X2F2YWlsOwotLyogdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9pbml0OyAqLwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnk7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9udWxsOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9jb250aW51b3VzOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9wYXJ0aWFsOwotLyp1c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX3N0b3A7ICovCi11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2FsbDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfcGVybDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfcG9zaXg7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vc3ViczsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZXh0cmE7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX3NpbmdsZV9saW5lOwotLyp1c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX21heDsgKi8KLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2FsbDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X3NlZDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X3Blcmw7Ci11c2luZyByZWdleF9jb25zdGFudHM6OmZvcm1hdF9kZWZhdWx0OwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfbm9fY29weTsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2ZpcnN0X29ubHk7Ci0vKnVzaW5nIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2lzX2lmOyovCi0KLX0gLyogbmFtZXNwYWNlIG5kbmJvb3N0ICovCi0jZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KLSNlbmRpZiAvKiBpbmNsdWRlIGd1YXJkICovCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfcmVzdWx0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX3Jlc3VsdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmI5ODFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfcmVzdWx0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MDIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOQotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIG1hdGNoX3Jlc3VsdHMuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyB0ZW1wbGF0ZSBjbGFzcyBtYXRjaF9yZXN1bHRzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X01BVENIX1JFU1VMVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X01BVENIX1JFU1VMVFNfSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUxIDQyMzEpCi0jICBpZiBORE5CT09TVF9NU1ZDIDwgMTYwMAotIyAgICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ2NjApCi0jICBlbmRpZgotI2VuZGlmCi0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLWNsYXNzIG5hbWVkX3N1YmV4cHJlc3Npb25zOwotCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWNsYXNzIG1hdGNoX3Jlc3VsdHMKLXsgCi1wcml2YXRlOgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0gICB0eXBlZGVmICAgICAgICAgIHN0ZDo6dmVjdG9yPHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+LCBBbGxvY2F0b3I+IHZlY3Rvcl90eXBlOwotI2Vsc2UKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjp2ZWN0b3I8c3ViX21hdGNoPEJpZGlJdGVyYXRvcj4gPiAgICAgICAgICAgdmVjdG9yX3R5cGU7Ci0jZW5kaWYKLXB1YmxpYzogCi0gICB0eXBlZGVmICAgICAgICAgIHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0jaWYgICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IpICYmICEoZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pKQotICAgdHlwZWRlZiB0eXBlbmFtZSBBbGxvY2F0b3I6OmNvbnN0X3JlZmVyZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKLSNlbHNlCi0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcmVmZXJlbmNlOwotI2VuZGlmCi0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3JfdHlwZTo6Y29uc3RfaXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdF9pdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jYXRvcjo6c2l6ZV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBBbGxvY2F0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvcj46OnZhbHVlX3R5cGUgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIHJlX2RldGFpbDo6bmFtZWRfc3ViZXhwcmVzc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWRfc3ViX3R5cGU7Ci0KLSAgIC8vIGNvbnN0cnVjdC9jb3B5L2Rlc3Ryb3k6Ci0gICBleHBsaWNpdCBtYXRjaF9yZXN1bHRzKGNvbnN0IEFsbG9jYXRvciYgYSA9IEFsbG9jYXRvcigpKQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0gICAgICA6IG1fc3VicyhhKSwgbV9iYXNlKCksIG1fbGFzdF9jbG9zZWRfcGFyZW4oMCksIG1faXNfc2luZ3VsYXIodHJ1ZSkge30KLSNlbHNlCi0gICAgICA6IG1fc3VicygpLCBtX2Jhc2UoKSwgbV9sYXN0X2Nsb3NlZF9wYXJlbigwKSwgbV9pc19zaW5ndWxhcih0cnVlKSB7ICh2b2lkKWE7IH0KLSNlbmRpZgotICAgbWF0Y2hfcmVzdWx0cyhjb25zdCBtYXRjaF9yZXN1bHRzJiBtKQotICAgICAgOiBtX3N1YnMobS5tX3N1YnMpLCBtX25hbWVkX3N1YnMobS5tX25hbWVkX3N1YnMpLCBtX2xhc3RfY2xvc2VkX3BhcmVuKG0ubV9sYXN0X2Nsb3NlZF9wYXJlbiksIG1faXNfc2luZ3VsYXIobS5tX2lzX3Npbmd1bGFyKSAKLSAgIHsKLSAgICAgIGlmKCFtX2lzX3Npbmd1bGFyKQotICAgICAgewotICAgICAgICAgbV9iYXNlID0gbS5tX2Jhc2U7Ci0gICAgICAgICBtX251bGwgPSBtLm1fbnVsbDsKLSAgICAgIH0KLSAgIH0KLSAgIG1hdGNoX3Jlc3VsdHMmIG9wZXJhdG9yPShjb25zdCBtYXRjaF9yZXN1bHRzJiBtKQotICAgewotICAgICAgbV9zdWJzID0gbS5tX3N1YnM7Ci0gICAgICBtX25hbWVkX3N1YnMgPSBtLm1fbmFtZWRfc3ViczsKLSAgICAgIG1fbGFzdF9jbG9zZWRfcGFyZW4gPSBtLm1fbGFzdF9jbG9zZWRfcGFyZW47Ci0gICAgICBtX2lzX3Npbmd1bGFyID0gbS5tX2lzX3Npbmd1bGFyOwotICAgICAgaWYoIW1faXNfc2luZ3VsYXIpCi0gICAgICB7Ci0gICAgICAgICBtX2Jhc2UgPSBtLm1fYmFzZTsKLSAgICAgICAgIG1fbnVsbCA9IG0ubV9udWxsOwotICAgICAgfQotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgfm1hdGNoX3Jlc3VsdHMoKXt9Ci0KLSAgIC8vIHNpemU6Ci0gICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0Ci0gICB7IHJldHVybiBlbXB0eSgpID8gMCA6IG1fc3Vicy5zaXplKCkgLSAyOyB9Ci0gICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdAotICAgeyByZXR1cm4gbV9zdWJzLm1heF9zaXplKCk7IH0KLSAgIGJvb2wgZW1wdHkoKSBjb25zdAotICAgeyByZXR1cm4gbV9zdWJzLnNpemUoKSA8IDI7IH0KLSAgIC8vIGVsZW1lbnQgYWNjZXNzOgotICAgZGlmZmVyZW5jZV90eXBlIGxlbmd0aChpbnQgc3ViID0gMCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgc3ViICs9IDI7Ci0gICAgICBpZigoc3ViIDwgKGludCltX3N1YnMuc2l6ZSgpKSAmJiAoc3ViID4gMCkpCi0gICAgICAgICByZXR1cm4gbV9zdWJzW3N1Yl0ubGVuZ3RoKCk7Ci0gICAgICByZXR1cm4gMDsKLSAgIH0KLSAgIGRpZmZlcmVuY2VfdHlwZSBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIGNvbnN0IGNoYXJfdHlwZSogc3ViX2VuZCA9IHN1YjsKLSAgICAgIHdoaWxlKCpzdWJfZW5kKSArK3N1Yl9lbmQ7Ci0gICAgICByZXR1cm4gbGVuZ3RoKG5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoc3ViLCBzdWJfZW5kKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICBkaWZmZXJlbmNlX3R5cGUgbGVuZ3RoKGNvbnN0IGNoYXJUKiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIGNvbnN0IGNoYXJUKiBzdWJfZW5kID0gc3ViOwotICAgICAgd2hpbGUoKnN1Yl9lbmQpICsrc3ViX2VuZDsKLSAgICAgIHJldHVybiBsZW5ndGgobmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleChzdWIsIHN1Yl9lbmQpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBPgotICAgZGlmZmVyZW5jZV90eXBlIGxlbmd0aChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBPiYgc3ViKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGxlbmd0aChzdWIuY19zdHIoKSk7Ci0gICB9Ci0gICBkaWZmZXJlbmNlX3R5cGUgcG9zaXRpb24oc2l6ZV90eXBlIHN1YiA9IDApIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHN1YiArPSAyOwotICAgICAgaWYoc3ViIDwgbV9zdWJzLnNpemUoKSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+JiBzID0gbV9zdWJzW3N1Yl07Ci0gICAgICAgICBpZihzLm1hdGNoZWQgfHwgKHN1YiA9PSAyKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKChCaWRpSXRlcmF0b3IpKG1fYmFzZSksIChCaWRpSXRlcmF0b3IpKHMuZmlyc3QpKTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiB+c3RhdGljX2Nhc3Q8ZGlmZmVyZW5jZV90eXBlPigwKTsKLSAgIH0KLSAgIGRpZmZlcmVuY2VfdHlwZSBwb3NpdGlvbihjb25zdCBjaGFyX3R5cGUqIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIGNvbnN0IGNoYXJfdHlwZSogc3ViX2VuZCA9IHN1YjsKLSAgICAgIHdoaWxlKCpzdWJfZW5kKSArK3N1Yl9lbmQ7Ci0gICAgICByZXR1cm4gcG9zaXRpb24obmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleChzdWIsIHN1Yl9lbmQpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIGRpZmZlcmVuY2VfdHlwZSBwb3NpdGlvbihjb25zdCBjaGFyVCogc3ViKSBjb25zdAotICAgewotICAgICAgY29uc3QgY2hhclQqIHN1Yl9lbmQgPSBzdWI7Ci0gICAgICB3aGlsZSgqc3ViX2VuZCkgKytzdWJfZW5kOwotICAgICAgcmV0dXJuIHBvc2l0aW9uKG5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoc3ViLCBzdWJfZW5kKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQT4KLSAgIGRpZmZlcmVuY2VfdHlwZSBwb3NpdGlvbihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBPiYgc3ViKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIHBvc2l0aW9uKHN1Yi5jX3N0cigpKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIHN0cihpbnQgc3ViID0gMCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgc3ViICs9IDI7Ci0gICAgICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0gICAgICBpZihzdWIgPCAoaW50KW1fc3Vicy5zaXplKCkgJiYgKHN1YiA+IDApKQotICAgICAgewotICAgICAgICAgY29uc3Qgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4mIHMgPSBtX3N1YnNbc3ViXTsKLSAgICAgICAgIGlmKHMubWF0Y2hlZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHMuc3RyKCk7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgc3RyaW5nX3R5cGUgc3RyKGNvbnN0IGNoYXJfdHlwZSogc3ViKSBjb25zdAotICAgewotICAgICAgcmV0dXJuICgqdGhpcylbc3ViXS5zdHIoKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUcmFpdHMsIGNsYXNzIEE+Ci0gICBzdHJpbmdfdHlwZSBzdHIoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlLCBUcmFpdHMsIEE+JiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKCp0aGlzKVtzdWJdLnN0cigpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgc3RyaW5nX3R5cGUgc3RyKGNvbnN0IGNoYXJUKiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKCp0aGlzKVtzdWJdLnN0cigpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMsIGNsYXNzIEE+Ci0gICBzdHJpbmdfdHlwZSBzdHIoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQT4mIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoKnRoaXMpW3N1Yl0uc3RyKCk7Ci0gICB9Ci0gICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShpbnQgc3ViKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhciAmJiBtX3N1YnMuZW1wdHkoKSkKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICBzdWIgKz0gMjsKLSAgICAgIGlmKHN1YiA8IChpbnQpbV9zdWJzLnNpemUoKSAmJiAoc3ViID49IDApKQotICAgICAgewotICAgICAgICAgcmV0dXJuIG1fc3Vic1tzdWJdOwotICAgICAgfQotICAgICAgcmV0dXJuIG1fbnVsbDsKLSAgIH0KLSAgIC8vCi0gICAvLyBOYW1lZCBzdWItZXhwcmVzc2lvbnM6Ci0gICAvLwotICAgY29uc3RfcmVmZXJlbmNlIG5hbWVkX3N1YmV4cHJlc3Npb24oY29uc3QgY2hhcl90eXBlKiBpLCBjb25zdCBjaGFyX3R5cGUqIGopIGNvbnN0Ci0gICB7Ci0gICAgICAvLwotICAgICAgLy8gU2NhbiBmb3IgdGhlIGxlZnRtb3N0ICptYXRjaGVkKiBzdWJleHByZXNzaW9uIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lZDoKLSAgICAgIC8vCi0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHJlX2RldGFpbDo6bmFtZWRfc3ViZXhwcmVzc2lvbnM6OnJhbmdlX3R5cGUgciA9IG1fbmFtZWRfc3Vicy0+ZXF1YWxfcmFuZ2UoaSwgaik7Ci0gICAgICB3aGlsZSgoci5maXJzdCAhPSByLnNlY29uZCkgJiYgKCgqdGhpcylbci5maXJzdC0+aW5kZXhdLm1hdGNoZWQgPT0gZmFsc2UpKQotICAgICAgICAgKytyLmZpcnN0OwotICAgICAgcmV0dXJuIHIuZmlyc3QgIT0gci5zZWNvbmQgPyAoKnRoaXMpW3IuZmlyc3QtPmluZGV4XSA6IG1fbnVsbDsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIGNvbnN0X3JlZmVyZW5jZSBuYW1lZF9zdWJleHByZXNzaW9uKGNvbnN0IGNoYXJUKiBpLCBjb25zdCBjaGFyVCogaikgY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGNoYXJUKSA8PSBzaXplb2YoY2hhcl90eXBlKSk7Ci0gICAgICBpZihpID09IGopCi0gICAgICAgICByZXR1cm4gbV9udWxsOwotICAgICAgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiBzOwotICAgICAgd2hpbGUoaSAhPSBqKQotICAgICAgICAgcy5pbnNlcnQocy5lbmQoKSwgKmkrKyk7Ci0gICAgICByZXR1cm4gbmFtZWRfc3ViZXhwcmVzc2lvbigmKnMuYmVnaW4oKSwgJipzLmJlZ2luKCkgKyBzLnNpemUoKSk7Ci0gICB9Ci0gICBpbnQgbmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleChjb25zdCBjaGFyX3R5cGUqIGksIGNvbnN0IGNoYXJfdHlwZSogaikgY29uc3QKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBTY2FuIGZvciB0aGUgbGVmdG1vc3QgKm1hdGNoZWQqIHN1YmV4cHJlc3Npb24gd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVkLgotICAgICAgLy8gSWYgbm9uZSBmb3VuZCB0aGVuIHJldHVybiB0aGUgbGVmdG1vc3QgZXhwcmVzc2lvbiB3aXRoIHRoYXQgbmFtZSwKLSAgICAgIC8vIG90aGVyd2lzZSBhbiBpbnZhbGlkIGluZGV4OgotICAgICAgLy8KLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgcmVfZGV0YWlsOjpuYW1lZF9zdWJleHByZXNzaW9uczo6cmFuZ2VfdHlwZSBzLCByOwotICAgICAgcyA9IHIgPSBtX25hbWVkX3N1YnMtPmVxdWFsX3JhbmdlKGksIGopOwotICAgICAgd2hpbGUoKHIuZmlyc3QgIT0gci5zZWNvbmQpICYmICgoKnRoaXMpW3IuZmlyc3QtPmluZGV4XS5tYXRjaGVkID09IGZhbHNlKSkKLSAgICAgICAgICsrci5maXJzdDsKLSAgICAgIGlmKHIuZmlyc3QgPT0gci5zZWNvbmQpCi0gICAgICAgICByID0gczsKLSAgICAgIHJldHVybiByLmZpcnN0ICE9IHIuc2Vjb25kID8gci5maXJzdC0+aW5kZXggOiAtMjA7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICBpbnQgbmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleChjb25zdCBjaGFyVCogaSwgY29uc3QgY2hhclQqIGopIGNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihjaGFyVCkgPD0gc2l6ZW9mKGNoYXJfdHlwZSkpOwotICAgICAgaWYoaSA9PSBqKQotICAgICAgICAgcmV0dXJuIC0yMDsKLSAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gczsKLSAgICAgIHdoaWxlKGkgIT0gaikKLSAgICAgICAgIHMuaW5zZXJ0KHMuZW5kKCksICppKyspOwotICAgICAgcmV0dXJuIG5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoJipzLmJlZ2luKCksICYqcy5iZWdpbigpICsgcy5zaXplKCkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIFRyYWl0cywgY2xhc3MgQT4KLSAgIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZSwgVHJhaXRzLCBBPiYgcykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBuYW1lZF9zdWJleHByZXNzaW9uKHMuY19zdHIoKSwgcy5jX3N0cigpICsgcy5zaXplKCkpOwotICAgfQotICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oY29uc3QgY2hhcl90eXBlKiBwKSBjb25zdAotICAgewotICAgICAgY29uc3QgY2hhcl90eXBlKiBlID0gcDsKLSAgICAgIHdoaWxlKCplKSArK2U7Ci0gICAgICByZXR1cm4gbmFtZWRfc3ViZXhwcmVzc2lvbihwLCBlKTsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oY29uc3QgY2hhclQqIHApIGNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihjaGFyVCkgPD0gc2l6ZW9mKGNoYXJfdHlwZSkpOwotICAgICAgaWYoKnAgPT0gMCkKLSAgICAgICAgIHJldHVybiBtX251bGw7Ci0gICAgICBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+IHM7Ci0gICAgICB3aGlsZSgqcCkKLSAgICAgICAgIHMuaW5zZXJ0KHMuZW5kKCksICpwKyspOwotICAgICAgcmV0dXJuIG5hbWVkX3N1YmV4cHJlc3Npb24oJipzLmJlZ2luKCksICYqcy5iZWdpbigpICsgcy5zaXplKCkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMsIGNsYXNzIEE+Ci0gICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBPiYgbnMpIGNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihjaGFyVCkgPD0gc2l6ZW9mKGNoYXJfdHlwZSkpOwotICAgICAgaWYobnMuZW1wdHkoKSkKLSAgICAgICAgIHJldHVybiBtX251bGw7Ci0gICAgICBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+IHM7Ci0gICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCBucy5zaXplKCk7ICsraSkKLSAgICAgICAgIHMuaW5zZXJ0KHMuZW5kKCksIG5zW2ldKTsKLSAgICAgIHJldHVybiBuYW1lZF9zdWJleHByZXNzaW9uKCYqcy5iZWdpbigpLCAmKnMuYmVnaW4oKSArIHMuc2l6ZSgpKTsKLSAgIH0KLQotICAgY29uc3RfcmVmZXJlbmNlIHByZWZpeCgpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHJldHVybiAoKnRoaXMpWy0xXTsKLSAgIH0KLQotICAgY29uc3RfcmVmZXJlbmNlIHN1ZmZpeCgpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHJldHVybiAoKnRoaXMpWy0yXTsKLSAgIH0KLSAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAobV9zdWJzLnNpemUoKSA+IDIpID8gKG1fc3Vicy5iZWdpbigpICsgMikgOiBtX3N1YnMuZW5kKCk7Ci0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fc3Vicy5lbmQoKTsKLSAgIH0KLSAgIC8vIGZvcm1hdDoKLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgRnVuY3Rvcj4KLSAgIE91dHB1dEl0ZXJhdG9yIGZvcm1hdChPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3RvciBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gZm9ybWF0X2RlZmF1bHQpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpjb21wdXRlX2Z1bmN0b3JfdHlwZTxGdW5jdG9yLCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiwgT3V0cHV0SXRlcmF0b3I+Ojp0eXBlIEY7Ci0gICAgICBGIGZ1bmMoZm10KTsKLSAgICAgIHJldHVybiBmdW5jKCp0aGlzLCBvdXQsIGZsYWdzKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBGdW5jdG9yPgotICAgc3RyaW5nX3R5cGUgZm9ybWF0KEZ1bmN0b3IgZm10LCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBmb3JtYXRfZGVmYXVsdCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiByZXN1bHQ7Ci0gICAgICByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiA+IGkocmVzdWx0KTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OmNvbXB1dGVfZnVuY3Rvcl90eXBlPEZ1bmN0b3IsIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+LCByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiA+ID46OnR5cGUgRjsKLSAgICAgIEYgZnVuYyhmbXQpOwotCi0gICAgICBmdW5jKCp0aGlzLCBpLCBmbGFncyk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgLy8gZm9ybWF0IHdpdGggbG9jYWxlOgotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBGdW5jdG9yLCBjbGFzcyBSZWdleFQ+Ci0gICBPdXRwdXRJdGVyYXRvciBmb3JtYXQoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0b3IgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdleFQmIHJlKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHR5cGVuYW1lIFJlZ2V4VDo6dHJhaXRzX3R5cGU+IHRyYWl0c190eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OmNvbXB1dGVfZnVuY3Rvcl90eXBlPEZ1bmN0b3IsIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+LCBPdXRwdXRJdGVyYXRvciwgdHJhaXRzX3R5cGU+Ojp0eXBlIEY7Ci0gICAgICBGIGZ1bmMoZm10KTsKLSAgICAgIHJldHVybiBmdW5jKCp0aGlzLCBvdXQsIGZsYWdzLCByZS5nZXRfdHJhaXRzKCkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIFJlZ2V4VCwgY2xhc3MgRnVuY3Rvcj4KLSAgIHN0cmluZ190eXBlIGZvcm1hdChGdW5jdG9yIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnZXhUJiByZSkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0eXBlbmFtZSBSZWdleFQ6OnRyYWl0c190eXBlPiB0cmFpdHNfdHlwZTsKLSAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4gcmVzdWx0OwotICAgICAgcmVfZGV0YWlsOjpzdHJpbmdfb3V0X2l0ZXJhdG9yPHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4gPiBpKHJlc3VsdCk7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpjb21wdXRlX2Z1bmN0b3JfdHlwZTxGdW5jdG9yLCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiwgcmVfZGV0YWlsOjpzdHJpbmdfb3V0X2l0ZXJhdG9yPHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4gPiwgdHJhaXRzX3R5cGUgPjo6dHlwZSBGOwotICAgICAgRiBmdW5jKGZtdCk7Ci0KLSAgICAgIGZ1bmMoKnRoaXMsIGksIGZsYWdzLCByZS5nZXRfdHJhaXRzKCkpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLQotICAgY29uc3RfcmVmZXJlbmNlIGdldF9sYXN0X2Nsb3NlZF9wYXJlbigpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgcmV0dXJuIG1fbGFzdF9jbG9zZWRfcGFyZW4gPT0gMCA/IG1fbnVsbCA6ICgqdGhpcylbbV9sYXN0X2Nsb3NlZF9wYXJlbl07Ci0gICB9Ci0KLSAgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdAotICAgewotI2lmbmRlZiBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0gICAgICByZXR1cm4gbV9zdWJzLmdldF9hbGxvY2F0b3IoKTsKLSNlbHNlCi0gICAgIHJldHVybiBhbGxvY2F0b3JfdHlwZSgpOwotI2VuZGlmCi0gICB9Ci0gICB2b2lkIHN3YXAobWF0Y2hfcmVzdWx0cyYgdGhhdCkKLSAgIHsKLSAgICAgIHN0ZDo6c3dhcChtX3N1YnMsIHRoYXQubV9zdWJzKTsKLSAgICAgIHN0ZDo6c3dhcChtX25hbWVkX3N1YnMsIHRoYXQubV9uYW1lZF9zdWJzKTsKLSAgICAgIHN0ZDo6c3dhcChtX2xhc3RfY2xvc2VkX3BhcmVuLCB0aGF0Lm1fbGFzdF9jbG9zZWRfcGFyZW4pOwotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgIHsKLSAgICAgICAgIGlmKCF0aGF0Lm1faXNfc2luZ3VsYXIpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX2Jhc2UgPSB0aGF0Lm1fYmFzZTsKLSAgICAgICAgICAgIG1fbnVsbCA9IHRoYXQubV9udWxsOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZih0aGF0Lm1faXNfc2luZ3VsYXIpCi0gICAgICB7Ci0gICAgICAgICB0aGF0Lm1fYmFzZSA9IG1fYmFzZTsKLSAgICAgICAgIHRoYXQubV9udWxsID0gbV9udWxsOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgc3RkOjpzd2FwKG1fYmFzZSwgdGhhdC5tX2Jhc2UpOwotICAgICAgICAgc3RkOjpzd2FwKG1fbnVsbCwgdGhhdC5tX251bGwpOwotICAgICAgfQotICAgICAgc3RkOjpzd2FwKG1faXNfc2luZ3VsYXIsIHRoYXQubV9pc19zaW5ndWxhcik7Ci0gICB9Ci0gICBib29sIG9wZXJhdG9yPT0oY29uc3QgbWF0Y2hfcmVzdWx0cyYgdGhhdCljb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiB0aGF0Lm1faXNfc2luZ3VsYXI7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHRoYXQubV9pc19zaW5ndWxhcikKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAobV9zdWJzID09IHRoYXQubV9zdWJzKSAmJiAobV9iYXNlID09IHRoYXQubV9iYXNlKSAmJiAobV9sYXN0X2Nsb3NlZF9wYXJlbiA9PSB0aGF0Lm1fbGFzdF9jbG9zZWRfcGFyZW4pOwotICAgfQotICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG1hdGNoX3Jlc3VsdHMmIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuICEoKnRoaXMgPT0gdGhhdCk7IH0KLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICB0eXBlZGVmIHR5cGVuYW1lIHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+OjpjYXB0dXJlX3NlcXVlbmNlX3R5cGUgY2FwdHVyZV9zZXF1ZW5jZV90eXBlOwotCi0gICBjb25zdCBjYXB0dXJlX3NlcXVlbmNlX3R5cGUmIGNhcHR1cmVzKGludCBpKWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHJldHVybiAoKnRoaXMpW2ldLmNhcHR1cmVzKCk7Ci0gICB9Ci0jZW5kaWYKLQotICAgLy8KLSAgIC8vIHByaXZhdGUgYWNjZXNzIGZ1bmN0aW9uczoKLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfc2Vjb25kKEJpZGlJdGVyYXRvciBpKQotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKG1fc3Vicy5zaXplKCkgPiAyKTsKLSAgICAgIG1fc3Vic1syXS5zZWNvbmQgPSBpOwotICAgICAgbV9zdWJzWzJdLm1hdGNoZWQgPSB0cnVlOwotICAgICAgbV9zdWJzWzBdLmZpcnN0ID0gaTsKLSAgICAgIG1fc3Vic1swXS5tYXRjaGVkID0gKG1fc3Vic1swXS5maXJzdCAhPSBtX3N1YnNbMF0uc2Vjb25kKTsKLSAgICAgIG1fbnVsbC5maXJzdCA9IGk7Ci0gICAgICBtX251bGwuc2Vjb25kID0gaTsKLSAgICAgIG1fbnVsbC5tYXRjaGVkID0gZmFsc2U7Ci0gICAgICBtX2lzX3Npbmd1bGFyID0gZmFsc2U7Ci0gICB9Ci0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfc2Vjb25kKEJpZGlJdGVyYXRvciBpLCBzaXplX3R5cGUgcG9zLCBib29sIG0gPSB0cnVlLCBib29sIGVzY2FwZV9rID0gZmFsc2UpCi0gICB7Ci0gICAgICBpZihwb3MpCi0gICAgICAgICBtX2xhc3RfY2xvc2VkX3BhcmVuID0gc3RhdGljX2Nhc3Q8aW50Pihwb3MpOwotICAgICAgcG9zICs9IDI7Ci0gICAgICBORE5CT09TVF9BU1NFUlQobV9zdWJzLnNpemUoKSA+IHBvcyk7Ci0gICAgICBtX3N1YnNbcG9zXS5zZWNvbmQgPSBpOwotICAgICAgbV9zdWJzW3Bvc10ubWF0Y2hlZCA9IG07Ci0gICAgICBpZigocG9zID09IDIpICYmICFlc2NhcGVfaykKLSAgICAgIHsKLSAgICAgICAgIG1fc3Vic1swXS5maXJzdCA9IGk7Ci0gICAgICAgICBtX3N1YnNbMF0ubWF0Y2hlZCA9IChtX3N1YnNbMF0uZmlyc3QgIT0gbV9zdWJzWzBdLnNlY29uZCk7Ci0gICAgICAgICBtX251bGwuZmlyc3QgPSBpOwotICAgICAgICAgbV9udWxsLnNlY29uZCA9IGk7Ci0gICAgICAgICBtX251bGwubWF0Y2hlZCA9IGZhbHNlOwotICAgICAgICAgbV9pc19zaW5ndWxhciA9IGZhbHNlOwotICAgICAgfQotICAgfQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9zaXplKHNpemVfdHlwZSBuLCBCaWRpSXRlcmF0b3IgaSwgQmlkaUl0ZXJhdG9yIGopCi0gICB7Ci0gICAgICB2YWx1ZV90eXBlIHYoaik7Ci0gICAgICBzaXplX3R5cGUgbGVuID0gbV9zdWJzLnNpemUoKTsKLSAgICAgIGlmKGxlbiA+IG4gKyAyKQotICAgICAgewotICAgICAgICAgbV9zdWJzLmVyYXNlKG1fc3Vicy5iZWdpbigpK24rMiwgbV9zdWJzLmVuZCgpKTsKLSAgICAgICAgIHN0ZDo6ZmlsbChtX3N1YnMuYmVnaW4oKSwgbV9zdWJzLmVuZCgpLCB2KTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6ZmlsbChtX3N1YnMuYmVnaW4oKSwgbV9zdWJzLmVuZCgpLCB2KTsKLSAgICAgICAgIGlmKG4rMiAhPSBsZW4pCi0gICAgICAgICAgICBtX3N1YnMuaW5zZXJ0KG1fc3Vicy5lbmQoKSwgbisyLWxlbiwgdik7Ci0gICAgICB9Ci0gICAgICBtX3N1YnNbMV0uZmlyc3QgPSBpOwotICAgICAgbV9sYXN0X2Nsb3NlZF9wYXJlbiA9IDA7Ci0gICB9Ci0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X2Jhc2UoQmlkaUl0ZXJhdG9yIHBvcykKLSAgIHsKLSAgICAgIG1fYmFzZSA9IHBvczsKLSAgIH0KLSAgIEJpZGlJdGVyYXRvciBiYXNlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fYmFzZTsKLSAgIH0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfZmlyc3QoQmlkaUl0ZXJhdG9yIGkpCi0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQobV9zdWJzLnNpemUoKSA+IDIpOwotICAgICAgLy8gc2V0IHVwIHByZWZpeDoKLSAgICAgIG1fc3Vic1sxXS5zZWNvbmQgPSBpOwotICAgICAgbV9zdWJzWzFdLm1hdGNoZWQgPSAobV9zdWJzWzFdLmZpcnN0ICE9IGkpOwotICAgICAgLy8gc2V0IHVwICQwOgotICAgICAgbV9zdWJzWzJdLmZpcnN0ID0gaTsKLSAgICAgIC8vIHplcm8gb3V0IGV2ZXJ5dGhpbmcgZWxzZToKLSAgICAgIGZvcihzaXplX3R5cGUgbiA9IDM7IG4gPCBtX3N1YnMuc2l6ZSgpOyArK24pCi0gICAgICB7Ci0gICAgICAgICBtX3N1YnNbbl0uZmlyc3QgPSBtX3N1YnNbbl0uc2Vjb25kID0gbV9zdWJzWzBdLnNlY29uZDsKLSAgICAgICAgIG1fc3Vic1tuXS5tYXRjaGVkID0gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X2ZpcnN0KEJpZGlJdGVyYXRvciBpLCBzaXplX3R5cGUgcG9zLCBib29sIGVzY2FwZV9rID0gZmFsc2UpCi0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQocG9zKzIgPCBtX3N1YnMuc2l6ZSgpKTsKLSAgICAgIGlmKHBvcyB8fCBlc2NhcGVfaykKLSAgICAgIHsKLSAgICAgICAgIG1fc3Vic1twb3MrMl0uZmlyc3QgPSBpOwotICAgICAgICAgaWYoZXNjYXBlX2spCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3N1YnNbMV0uc2Vjb25kID0gaTsKLSAgICAgICAgICAgIG1fc3Vic1sxXS5tYXRjaGVkID0gKG1fc3Vic1sxXS5maXJzdCAhPSBtX3N1YnNbMV0uc2Vjb25kKTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHNldF9maXJzdChpKTsKLSAgIH0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBtYXliZV9hc3NpZ24oY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0pOwotCi0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X25hbWVkX3N1YnMobmRuYm9vc3Q6OnNoYXJlZF9wdHI8bmFtZWRfc3ViX3R5cGU+IHN1YnMpCi0gICB7Ci0gICAgICBtX25hbWVkX3N1YnMgPSBzdWJzOwotICAgfQotCi1wcml2YXRlOgotICAgLy8KLSAgIC8vIEVycm9yIGhhbmRsZXIgY2FsbGVkIHdoZW4gYW4gdW5pbml0aWFsaXplZCBtYXRjaF9yZXN1bHRzIGlzIGFjY2Vzc2VkOgotICAgLy8KLSAgIHN0YXRpYyB2b2lkIHJhaXNlX2xvZ2ljX2Vycm9yKCkKLSAgIHsKLSAgICAgIHN0ZDo6bG9naWNfZXJyb3IgZSgiQXR0ZW1wdCB0byBhY2Nlc3MgYW4gdW5pbml0aWFsemVkIG5kbmJvb3N0OjptYXRjaF9yZXN1bHRzPD4gY2xhc3MuIik7Ci0gICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotICAgfQotCi0KLSAgIHZlY3Rvcl90eXBlICAgICAgICAgICAgbV9zdWJzOyAgICAgICAgICAgICAgICAgICAgICAvLyBzdWJleHByZXNzaW9ucwotICAgQmlkaUl0ZXJhdG9yICAgbV9iYXNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSBzZWFyY2ggc3RhcnRlZCBmcm9tCi0gICBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiBtX251bGw7ICAgICAgICAgICAgICAgICAgICAgLy8gYSBudWxsIG1hdGNoCi0gICBuZG5ib29zdDo6c2hhcmVkX3B0cjxuYW1lZF9zdWJfdHlwZT4gbV9uYW1lZF9zdWJzOyAgICAgLy8gU2hhcmVkIGNvcHkgb2YgbmFtZWQgc3VicyBpbiB0aGUgcmVnZXggb2JqZWN0Ci0gICBpbnQgbV9sYXN0X2Nsb3NlZF9wYXJlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGFzdCApIHRvIGJlIHNlZW4gLSB1c2VkIGZvciBmb3JtYXR0aW5nCi0gICBib29sIG1faXNfc2luZ3VsYXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHJ1ZSBpZiBvdXIgc3RvcmVkIGl0ZXJhdG9ycyBhcmUgc2luZ3VsYXIKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLXZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPjo6bWF5YmVfYXNzaWduKGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtKQotewotICAgaWYobV9pc19zaW5ndWxhcikKLSAgIHsKLSAgICAgICp0aGlzID0gbTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIGNvbnN0X2l0ZXJhdG9yIHAxLCBwMjsKLSAgIHAxID0gYmVnaW4oKTsKLSAgIHAyID0gbS5iZWdpbigpOwotICAgLy8KLSAgIC8vIERpc3RhbmNlcyBhcmUgbWVhc3VyZWQgZnJvbSB0aGUgc3RhcnQgb2YgKnRoaXMqIG1hdGNoLCB1bmxlc3MgdGhpcyBpc24ndAotICAgLy8gYSB2YWxpZCBtYXRjaCBpbiB3aGljaCBjYXNlIHdlIHVzZSB0aGUgc3RhcnQgb2YgdGhlIHdob2xlIHNlcXVlbmNlLiAgTm90ZSB0aGF0Ci0gICAvLyBubyBzdWJzZXF1ZW50IG1hdGNoLWNhbmRpZGF0ZSBjYW4gZXZlciBiZSB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgbWF0Y2ggZm91bmQuCi0gICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3aGVuIHdlIGFyZSB1c2luZyBiaWRpcmVjdGlvbmFsIGl0ZXJhdG9ycywgdGhhdCBkaXN0YW5jZXMgCi0gICAvLyBtZWFzdXJlZCBhcmUgYXMgc2hvcnQgYXMgcG9zc2libGUsIGFuZCB0aGVyZWZvcmUgYXMgZWZmaWNpZW50IGFzIHBvc3NpYmxlCi0gICAvLyB0byBjb21wdXRlLiAgRmluYWxseSBub3RlIHRoYXQgd2UgZG9uJ3QgdXNlIHRoZSAibWF0Y2hlZCIgZGF0YSBtZW1iZXIgdG8gdGVzdAotICAgLy8gd2hldGhlciBhIHN1Yi1leHByZXNzaW9uIGlzIGEgdmFsaWQgbWF0Y2gsIGJlY2F1c2UgcGFydGlhbCBtYXRjaGVzIHNldCB0aGlzCi0gICAvLyB0byBmYWxzZSBmb3Igc3ViLWV4cHJlc3Npb24gMC4KLSAgIC8vCi0gICBCaWRpSXRlcmF0b3IgbF9lbmQgPSB0aGlzLT5zdWZmaXgoKS5zZWNvbmQ7Ci0gICBCaWRpSXRlcmF0b3IgbF9iYXNlID0gKHAxLT5maXJzdCA9PSBsX2VuZCkgPyB0aGlzLT5wcmVmaXgoKS5maXJzdCA6ICgqdGhpcylbMF0uZmlyc3Q7Ci0gICBkaWZmZXJlbmNlX3R5cGUgbGVuMSA9IDA7Ci0gICBkaWZmZXJlbmNlX3R5cGUgbGVuMiA9IDA7Ci0gICBkaWZmZXJlbmNlX3R5cGUgYmFzZTEgPSAwOwotICAgZGlmZmVyZW5jZV90eXBlIGJhc2UyID0gMDsKLSAgIHN0ZDo6c2l6ZV90IGk7Ci0gICBmb3IoaSA9IDA7IGkgPCBzaXplKCk7ICsraSwgKytwMSwgKytwMikKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBMZWZ0bW9zdCB0YWtlcyBwcmlvcml0eSBvdmVyIGxvbmdlc3Q7IGhhbmRsZSBzcGVjaWFsIGNhc2VzCi0gICAgICAvLyB3aGVyZSBkaXN0YW5jZXMgbmVlZCBub3QgYmUgY29tcHV0ZWQgZmlyc3QgKGFuIG9wdGltaXNhdGlvbgotICAgICAgLy8gZm9yIGJpZGlyZWN0aW9uYWwgaXRlcmF0b3JzOiBlbnN1cmUgdGhhdCB3ZSBkb24ndCBhY2NpZGVudGx5Ci0gICAgICAvLyBjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBhcyB0aGlzIGNhbiBiZSByZWFsbHkKLSAgICAgIC8vIGV4cGVuc2l2ZSkuCi0gICAgICAvLwotICAgICAgaWYocDEtPmZpcnN0ID09IGxfZW5kKQotICAgICAgewotICAgICAgICAgaWYocDItPmZpcnN0ICE9IGxfZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gcDIgbXVzdCBiZSBiZXR0ZXIgdGhhbiBwMSwgYW5kIG5vIG5lZWQgdG8gY2FsY3VsYXRlCi0gICAgICAgICAgICAvLyBhY3R1YWwgZGlzdGFuY2VzOgotICAgICAgICAgICAgYmFzZTEgPSAxOwotICAgICAgICAgICAgYmFzZTIgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyAqcDEgYW5kICpwMiBhcmUgZWl0aGVyIHVubWF0Y2hlZCBvciBtYXRjaCBlbmQtb2Ygc2VxdWVuY2UsCi0gICAgICAgICAgICAvLyBlaXRoZXIgd2F5IG5vIG5lZWQgdG8gY2FsY3VsYXRlIGRpc3RhbmNlczoKLSAgICAgICAgICAgIGlmKChwMS0+bWF0Y2hlZCA9PSBmYWxzZSkgJiYgKHAyLT5tYXRjaGVkID09IHRydWUpKQotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZigocDEtPm1hdGNoZWQgPT0gdHJ1ZSkgJiYgKHAyLT5tYXRjaGVkID09IGZhbHNlKSkKLSAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZihwMi0+Zmlyc3QgPT0gbF9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBwMSBiZXR0ZXIgdGhhbiBwMiwgYW5kIG5vIG5lZWQgdG8gY2FsY3VsYXRlIGRpc3RhbmNlczoKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGJhc2UxID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShsX2Jhc2UsIHAxLT5maXJzdCk7Ci0gICAgICBiYXNlMiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobF9iYXNlLCBwMi0+Zmlyc3QpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKGJhc2UxID49IDApOwotICAgICAgTkROQk9PU1RfQVNTRVJUKGJhc2UyID49IDApOwotICAgICAgaWYoYmFzZTEgPCBiYXNlMikgcmV0dXJuOwotICAgICAgaWYoYmFzZTIgPCBiYXNlMSkgYnJlYWs7Ci0KLSAgICAgIGxlbjEgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKChCaWRpSXRlcmF0b3IpcDEtPmZpcnN0LCAoQmlkaUl0ZXJhdG9yKXAxLT5zZWNvbmQpOwotICAgICAgbGVuMiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoKEJpZGlJdGVyYXRvcilwMi0+Zmlyc3QsIChCaWRpSXRlcmF0b3IpcDItPnNlY29uZCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQobGVuMSA+PSAwKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChsZW4yID49IDApOwotICAgICAgaWYoKGxlbjEgIT0gbGVuMikgfHwgKChwMS0+bWF0Y2hlZCA9PSBmYWxzZSkgJiYgKHAyLT5tYXRjaGVkID09IHRydWUpKSkKLSAgICAgICAgIGJyZWFrOwotICAgICAgaWYoKHAxLT5tYXRjaGVkID09IHRydWUpICYmIChwMi0+bWF0Y2hlZCA9PSBmYWxzZSkpCi0gICAgICAgICByZXR1cm47Ci0gICB9Ci0gICBpZihpID09IHNpemUoKSkKLSAgICAgIHJldHVybjsKLSAgIGlmKGJhc2UyIDwgYmFzZTEpCi0gICAgICAqdGhpcyA9IG07Ci0gICBlbHNlIGlmKChsZW4yID4gbGVuMSkgfHwgKChwMS0+bWF0Y2hlZCA9PSBmYWxzZSkgJiYgKHAyLT5tYXRjaGVkID09IHRydWUpKSApCi0gICAgICAqdGhpcyA9IG07Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLXZvaWQgc3dhcChtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgYSwgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIGIpCi17Ci0gICBhLnN3YXAoYik7Ci19Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULCB0cmFpdHM+JgotICAgb3BlcmF0b3IgPDwgKHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCwgdHJhaXRzPiYgb3MsCi0gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIHMpCi17Ci0gICByZXR1cm4gKG9zIDw8IHMuc3RyKCkpOwotfQotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLXN0ZDo6b3N0cmVhbSYgb3BlcmF0b3IgPDwgKHN0ZDo6b3N0cmVhbSYgb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgcykKLXsKLSAgIHJldHVybiAob3MgPDwgcy5zdHIoKSk7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tZW1fYmxvY2tfY2FjaGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tZW1fYmxvY2tfY2FjaGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTcxYTNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvbWVtX2Jsb2NrX2NhY2hlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSAvKgotICogQ29weXJpZ2h0IChjKSAyMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgbWVtX2Jsb2NrX2NhY2hlLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogbWVtb3J5IGJsb2NrIGNhY2hlIHVzZWQgYnkgdGhlIG5vbi1yZWN1cnNpdmUgbWF0Y2hlci4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9NRU1fQkxPQ0tfQ0FDSEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X01FTV9CTE9DS19DQUNIRV9IUFAKLQotI2luY2x1ZGUgPG5ldz4KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvc3RhdGljX211dGV4LmhwcD4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi1zdHJ1Y3QgbWVtX2Jsb2NrX25vZGUKLXsKLSAgIG1lbV9ibG9ja19ub2RlKiBuZXh0OwotfTsKLQotc3RydWN0IG1lbV9ibG9ja19jYWNoZQotewotICAgLy8gdGhpcyBtZW1iZXIgaGFzIHRvIGJlIHN0YXRpY2FsbHkgaW5pdGlhbHNlZDoKLSAgIG1lbV9ibG9ja19ub2RlKiBuZXh0OwotICAgdW5zaWduZWQgY2FjaGVkX2Jsb2NrczsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgbmRuYm9vc3Q6OnN0YXRpY19tdXRleCBtdXQ7Ci0jZW5kaWYKLQotICAgfm1lbV9ibG9ja19jYWNoZSgpCi0gICB7Ci0gICAgICB3aGlsZShuZXh0KQotICAgICAgewotICAgICAgICAgbWVtX2Jsb2NrX25vZGUqIG9sZCA9IG5leHQ7Ci0gICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dDsKLSAgICAgICAgIDo6b3BlcmF0b3IgZGVsZXRlKG9sZCk7Ci0gICAgICB9Ci0gICB9Ci0gICB2b2lkKiBnZXQoKQotICAgewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICAgICBuZG5ib29zdDo6c3RhdGljX211dGV4OjpzY29wZWRfbG9jayBnKG11dCk7Ci0jZW5kaWYKLSAgICAgaWYobmV4dCkKLSAgICAgIHsKLSAgICAgICAgIG1lbV9ibG9ja19ub2RlKiByZXN1bHQgPSBuZXh0OwotICAgICAgICAgbmV4dCA9IG5leHQtPm5leHQ7Ci0gICAgICAgICAtLWNhY2hlZF9ibG9ja3M7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgcmV0dXJuIDo6b3BlcmF0b3IgbmV3KE5ETkJPT1NUX1JFR0VYX0JMT0NLU0laRSk7Ci0gICB9Ci0gICB2b2lkIHB1dCh2b2lkKiBwKQotICAgewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICAgICBuZG5ib29zdDo6c3RhdGljX211dGV4OjpzY29wZWRfbG9jayBnKG11dCk7Ci0jZW5kaWYKLSAgICAgIGlmKGNhY2hlZF9ibG9ja3MgPj0gTkROQk9PU1RfUkVHRVhfTUFYX0NBQ0hFX0JMT0NLUykKLSAgICAgIHsKLSAgICAgICAgIDo6b3BlcmF0b3IgZGVsZXRlKHApOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgbWVtX2Jsb2NrX25vZGUqIG9sZCA9IHN0YXRpY19jYXN0PG1lbV9ibG9ja19ub2RlKj4ocCk7Ci0gICAgICAgICBvbGQtPm5leHQgPSBuZXh0OwotICAgICAgICAgbmV4dCA9IG9sZDsKLSAgICAgICAgICsrY2FjaGVkX2Jsb2NrczsKLSAgICAgIH0KLSAgIH0KLX07Ci0KLWV4dGVybiBtZW1fYmxvY2tfY2FjaGUgYmxvY2tfY2FjaGU7Ci0KLX0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0Y2YwYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTg3ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BVENIRVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9pdGVyYXRvcl9jYXRlZ29yeS5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODAwKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8vCi0vLyBlcnJvciBjaGVja2luZyBBUEk6Ci0vLwotTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgdmVyaWZ5X29wdGlvbnMobmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIGVmLCBtYXRjaF9mbGFnX3R5cGUgbWYpOwotLy8KLS8vIGZ1bmN0aW9uIGNhbl9zdGFydDoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgYm9vbCBjYW5fc3RhcnQoY2hhclQgYywgY29uc3QgdW5zaWduZWQgY2hhciogbWFwLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICByZXR1cm4gKChjIDwgc3RhdGljX2Nhc3Q8Y2hhclQ+KDApKSA/IHRydWUgOiAoKGMgPj0gc3RhdGljX2Nhc3Q8Y2hhclQ+KDEgPDwgQ0hBUl9CSVQpKSA/IHRydWUgOiBtYXBbY10gJiBtYXNrKSk7Ci19Ci1pbmxpbmUgYm9vbCBjYW5fc3RhcnQoY2hhciBjLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIHJldHVybiBtYXBbKHVuc2lnbmVkIGNoYXIpY10gJiBtYXNrOwotfQotaW5saW5lIGJvb2wgY2FuX3N0YXJ0KHNpZ25lZCBjaGFyIGMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgcmV0dXJuIG1hcFsodW5zaWduZWQgY2hhciljXSAmIG1hc2s7Ci19Ci1pbmxpbmUgYm9vbCBjYW5fc3RhcnQodW5zaWduZWQgY2hhciBjLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIHJldHVybiBtYXBbY10gJiBtYXNrOwotfQotaW5saW5lIGJvb2wgY2FuX3N0YXJ0KHVuc2lnbmVkIHNob3J0IGMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgcmV0dXJuICgoYyA+PSAoMSA8PCBDSEFSX0JJVCkpID8gdHJ1ZSA6IG1hcFtjXSAmIG1hc2spOwotfQotI2lmICFkZWZpbmVkKF9faHB1eCkgJiYgIWRlZmluZWQoX19XSU5TQ1dfXykvLyBXQ0hBUl9NSU4gbm90IHVzYWJsZSBpbiBwcC1kaXJlY3RpdmVzLgotI2lmIGRlZmluZWQoV0NIQVJfTUlOKSAmJiAoV0NIQVJfTUlOID09IDApICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotaW5saW5lIGJvb2wgY2FuX3N0YXJ0KHdjaGFyX3QgYywgY29uc3QgdW5zaWduZWQgY2hhciogbWFwLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICByZXR1cm4gKChjID49IHN0YXRpY19jYXN0PHdjaGFyX3Q+KDF1IDw8IENIQVJfQklUKSkgPyB0cnVlIDogbWFwW2NdICYgbWFzayk7Ci19Ci0jZW5kaWYKLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotaW5saW5lIGJvb2wgY2FuX3N0YXJ0KHVuc2lnbmVkIGludCBjLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIHJldHVybiAoKChjID49IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oMXUgPDwgQ0hBUl9CSVQpKSA/IHRydWUgOiBtYXBbY10gJiBtYXNrKSk7Ci19Ci0jZW5kaWYKLQotCi0vLwotLy8gVW5mb3J0dW5hdGVseSBSb2d1ZSBXYXZlcyBzdGFuZGFyZCBsaWJyYXJ5IGFwcGVhcnMgdG8gaGF2ZSBhIGJ1ZwotLy8gaW4gc3RkOjpiYXNpY19zdHJpbmc6OmNvbXBhcmUgdGhhdCByZXN1bHRzIGluIGVyb25lb3VzIGFuc3dlcnMKLS8vIGluIHNvbWUgY2FzZXMgKHRlc3RlZCB3aXRoIEJvcmxhbmQgQysrIDUuMSwgUm9ndWUgV2F2ZSBsaWIgdmVyc2lvbgotLy8gMHgwMjAxMDEpIHRoZSB0ZXN0IGNhc2Ugd2FzOgotLy8gezM5MTM1LDB9IDwgezB4ZmYsMH0KLS8vIHdoaWNoIHN1Y2NlZWRzIHdoZW4gaXQgc2hvdWxkIG5vdC4KLS8vCi0jaWZuZGVmIF9SV1NURF9WRVIKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApCi10ZW1wbGF0ZSA8Y2xhc3MgQywgY2xhc3MgVCwgY2xhc3MgQT4KLWlubGluZSBpbnQgc3RyaW5nX2NvbXBhcmUoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8QyxULEE+JiBzLCBjb25zdCBDKiBwKQoteyAKLSAgIGlmKDAgPT0gKnApCi0gICB7Ci0gICAgICBpZihzLmVtcHR5KCkgfHwgKChzLnNpemUoKSA9PSAxKSAmJiAoc1swXSA9PSAwKSkpCi0gICAgICAgICByZXR1cm4gMDsKLSAgIH0KLSAgIHJldHVybiBzLmNvbXBhcmUocCk7IAotfQotI2VuZGlmCi0jZWxzZQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkKLXRlbXBsYXRlIDxjbGFzcyBDLCBjbGFzcyBULCBjbGFzcyBBPgotaW5saW5lIGludCBzdHJpbmdfY29tcGFyZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDLFQsQT4mIHMsIGNvbnN0IEMqIHApCi17IAotICAgaWYoMCA9PSAqcCkKLSAgIHsKLSAgICAgIGlmKHMuZW1wdHkoKSB8fCAoKHMuc2l6ZSgpID09IDEpICYmIChzWzBdID09IDApKSkKLSAgICAgICAgIHJldHVybiAwOwotICAgfQotICAgcmV0dXJuIHMuY29tcGFyZShwKTsgCi19Ci0jZW5kaWYKLWlubGluZSBpbnQgc3RyaW5nX2NvbXBhcmUoY29uc3Qgc3RkOjpzdHJpbmcmIHMsIGNvbnN0IGNoYXIqIHApCi17IHJldHVybiBzdGQ6OnN0cmNtcChzLmNfc3RyKCksIHApOyB9Ci0jIGlmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLWlubGluZSBpbnQgc3RyaW5nX2NvbXBhcmUoY29uc3Qgc3RkOjp3c3RyaW5nJiBzLCBjb25zdCB3Y2hhcl90KiBwKQoteyByZXR1cm4gc3RkOjp3Y3NjbXAocy5jX3N0cigpLCBwKTsgfQotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBTZXEsIGNsYXNzIEM+Ci1pbmxpbmUgaW50IHN0cmluZ19jb21wYXJlKGNvbnN0IFNlcSYgcywgY29uc3QgQyogcCkKLXsKLSAgIHN0ZDo6c2l6ZV90IGkgPSAwOwotICAgd2hpbGUoKGkgPCBzLnNpemUoKSkgJiYgKHBbaV0gPT0gc1tpXSkpCi0gICB7Ci0gICAgICArK2k7Ci0gICB9Ci0gICByZXR1cm4gKGkgPT0gcy5zaXplKCkpID8gLXBbaV0gOiBzW2ldIC0gcFtpXTsKLX0KLSMgZGVmaW5lIFNUUl9DT01QKHMscCkgc3RyaW5nX2NvbXBhcmUocyxwKQotCi10ZW1wbGF0ZTxjbGFzcyBjaGFyVD4KLWlubGluZSBjb25zdCBjaGFyVCogcmVfc2tpcF9wYXN0X251bGwoY29uc3QgY2hhclQqIHApCi17Ci0gIHdoaWxlICgqcCAhPSBzdGF0aWNfY2FzdDxjaGFyVD4oMCkpICsrcDsKLSAgcmV0dXJuICsrcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzX3R5cGUsIGNsYXNzIGNoYXJfY2xhc3NUPgotaXRlcmF0b3IgTkROQk9PU1RfUkVHRVhfQ0FMTCByZV9pc19zZXRfbWVtYmVyKGl0ZXJhdG9yIG5leHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVfc2V0X2xvbmc8Y2hhcl9jbGFzc1Q+KiBzZXRfLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzX3R5cGU+JiBlLCBib29sIGljYXNlKQoteyAgIAotICAgY29uc3QgY2hhclQqIHAgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXJUKj4oc2V0XysxKTsKLSAgIGl0ZXJhdG9yIHB0cjsKLSAgIHVuc2lnbmVkIGludCBpOwotICAgLy9ib29sIGljYXNlID0gZS5tX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjppY2FzZTsKLQotICAgaWYobmV4dCA9PSBsYXN0KSByZXR1cm4gbmV4dDsKLQotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6c3RyaW5nX3R5cGUgdHJhaXRzX3N0cmluZ190eXBlOwotICAgY29uc3QgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzX3R5cGU+JiB0cmFpdHNfaW5zdCA9ICooZS5tX3B0cmFpdHMpOwotICAgCi0gICAvLyBkd2EgOS8xMy8wMCBzdXBwcmVzcyBpbmNvcnJlY3QgTVNWQyB3YXJuaW5nIC0gaXQgY2xhaW1zIHRoaXMgaXMgbmV2ZXIKLSAgIC8vIHJlZmVyZW5jZWQKLSAgICh2b2lkKXRyYWl0c19pbnN0OwotCi0gICAvLyB0cnkgYW5kIG1hdGNoIGEgc2luZ2xlIGNoYXJhY3RlciwgY291bGQgYmUgYSBtdWx0aS1jaGFyYWN0ZXIKLSAgIC8vIGNvbGxhdGluZyBlbGVtZW50Li4uCi0gICBmb3IoaSA9IDA7IGkgPCBzZXRfLT5jc2luZ2xlczsgKytpKQotICAgewotICAgICAgcHRyID0gbmV4dDsKLSAgICAgIGlmKCpwID09IHN0YXRpY19jYXN0PGNoYXJUPigwKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHRyZWF0IG51bGwgc3RyaW5nIGFzIHNwZWNpYWwgY2FzZToKLSAgICAgICAgIGlmKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcHRyLCBpY2FzZSkgIT0gKnApCi0gICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSgqcCA9PSBzdGF0aWNfY2FzdDxjaGFyVD4oMCkpKytwOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gc2V0Xy0+aXNub3QgPyBuZXh0IDogKHB0ciA9PSBuZXh0KSA/ICsrbmV4dCA6IHB0cjsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHdoaWxlKCpwICYmIChwdHIgIT0gbGFzdCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnB0ciwgaWNhc2UpICE9ICpwKQotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICArK3B0cjsKLSAgICAgICAgIH0KLQotICAgICAgICAgaWYoKnAgPT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KDApKSAvLyBpZiBudWxsIHdlJ3ZlIG1hdGNoZWQKLSAgICAgICAgICAgIHJldHVybiBzZXRfLT5pc25vdCA/IG5leHQgOiAocHRyID09IG5leHQpID8gKytuZXh0IDogcHRyOwotCi0gICAgICAgICBwID0gcmVfc2tpcF9wYXN0X251bGwocCk7ICAgICAvLyBza2lwIG51bGwKLSAgICAgIH0KLSAgIH0KLQotICAgY2hhclQgY29sID0gdHJhaXRzX2luc3QudHJhbnNsYXRlKCpuZXh0LCBpY2FzZSk7Ci0KLQotICAgaWYoc2V0Xy0+Y3JhbmdlcyB8fCBzZXRfLT5jZXF1aXZhbGVudHMpCi0gICB7Ci0gICAgICB0cmFpdHNfc3RyaW5nX3R5cGUgczE7Ci0gICAgICAvLwotICAgICAgLy8gdHJ5IGFuZCBtYXRjaCBhIHJhbmdlLCBOQiBvbmx5IGEgc2luZ2xlIGNoYXJhY3RlciBjYW4gbWF0Y2gKLSAgICAgIGlmKHNldF8tPmNyYW5nZXMpCi0gICAgICB7Ci0gICAgICAgICBpZigoZS5tX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpjb2xsYXRlKSA9PSAwKQotICAgICAgICAgICAgczEuYXNzaWduKDEsIGNvbCk7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyVCBhWzJdID0geyBjb2wsIGNoYXJUKDApLCB9OwotICAgICAgICAgICAgczEgPSB0cmFpdHNfaW5zdC50cmFuc2Zvcm0oYSwgYSArIDEpOwotICAgICAgICAgfQotICAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2V0Xy0+Y3JhbmdlczsgKytpKQotICAgICAgICAgewotICAgICAgICAgICAgaWYoU1RSX0NPTVAoczEsIHApID49IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBkb3sgKytwOyB9d2hpbGUoKnApOwotICAgICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgICAgaWYoU1RSX0NPTVAoczEsIHApIDw9IDApCi0gICAgICAgICAgICAgICAgICByZXR1cm4gc2V0Xy0+aXNub3QgPyBuZXh0IDogKytuZXh0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gc2tpcCBmaXJzdCBzdHJpbmcKLSAgICAgICAgICAgICAgIGRveyArK3A7IH13aGlsZSgqcCk7Ci0gICAgICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBza2lwIHNlY29uZCBzdHJpbmcKLSAgICAgICAgICAgIGRveyArK3A7IH13aGlsZSgqcCk7Ci0gICAgICAgICAgICArK3A7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLwotICAgICAgLy8gdHJ5IGFuZCBtYXRjaCBhbiBlcXVpdmFsZW5jZSBjbGFzcywgTkIgb25seSBhIHNpbmdsZSBjaGFyYWN0ZXIgY2FuIG1hdGNoCi0gICAgICBpZihzZXRfLT5jZXF1aXZhbGVudHMpCi0gICAgICB7Ci0gICAgICAgICBjaGFyVCBhWzJdID0geyBjb2wsIGNoYXJUKDApLCB9OwotICAgICAgICAgczEgPSB0cmFpdHNfaW5zdC50cmFuc2Zvcm1fcHJpbWFyeShhLCBhICsxKTsKLSAgICAgICAgIGZvcihpID0gMDsgaSA8IHNldF8tPmNlcXVpdmFsZW50czsgKytpKQotICAgICAgICAgewotICAgICAgICAgICAgaWYoU1RSX0NPTVAoczEsIHApID09IDApCi0gICAgICAgICAgICAgICByZXR1cm4gc2V0Xy0+aXNub3QgPyBuZXh0IDogKytuZXh0OwotICAgICAgICAgICAgLy8gc2tpcCBzdHJpbmcKLSAgICAgICAgICAgIGRveyArK3A7IH13aGlsZSgqcCk7Ci0gICAgICAgICAgICArK3A7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci0gICBpZih0cmFpdHNfaW5zdC5pc2N0eXBlKGNvbCwgc2V0Xy0+Y2NsYXNzZXMpID09IHRydWUpCi0gICAgICByZXR1cm4gc2V0Xy0+aXNub3QgPyBuZXh0IDogKytuZXh0OwotICAgaWYoKHNldF8tPmNuY2xhc3NlcyAhPSAwKSAmJiAodHJhaXRzX2luc3QuaXNjdHlwZShjb2wsIHNldF8tPmNuY2xhc3NlcykgPT0gZmFsc2UpKQotICAgICAgcmV0dXJuIHNldF8tPmlzbm90ID8gbmV4dCA6ICsrbmV4dDsKLSAgIHJldHVybiBzZXRfLT5pc25vdCA/ICsrbmV4dCA6IG5leHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1jbGFzcyByZXBlYXRlcl9jb3VudAotewotICAgcmVwZWF0ZXJfY291bnQqKiBzdGFjazsKLSAgIHJlcGVhdGVyX2NvdW50KiBuZXh0OwotICAgaW50IHN0YXRlX2lkOwotICAgc3RkOjpzaXplX3QgY291bnQ7ICAgICAgICAvLyB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgc28gZmFyCi0gICBCaWRpSXRlcmF0b3Igc3RhcnRfcG9zOyAgIC8vIHdoZXJlIHRoZSBsYXN0IHJlcGVhdCBzdGFydGVkCi1wdWJsaWM6Ci0gICByZXBlYXRlcl9jb3VudChyZXBlYXRlcl9jb3VudCoqIHMpCi0gICB7Ci0gICAgICBzdGFjayA9IHM7Ci0gICAgICBuZXh0ID0gMDsKLSAgICAgIHN0YXRlX2lkID0gLTE7Ci0gICAgICBjb3VudCA9IDA7Ci0gICB9Ci0gICByZXBlYXRlcl9jb3VudChpbnQgaSwgcmVwZWF0ZXJfY291bnQqKiBzLCBCaWRpSXRlcmF0b3Igc3RhcnQpCi0gICAgICA6IHN0YXJ0X3BvcyhzdGFydCkKLSAgIHsKLSAgICAgIHN0YXRlX2lkID0gaTsKLSAgICAgIHN0YWNrID0gczsKLSAgICAgIG5leHQgPSAqc3RhY2s7Ci0gICAgICAqc3RhY2sgPSB0aGlzOwotICAgICAgaWYoc3RhdGVfaWQgPiBuZXh0LT5zdGF0ZV9pZCkKLSAgICAgICAgIGNvdW50ID0gMDsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHJlcGVhdGVyX2NvdW50KiBwID0gbmV4dDsKLSAgICAgICAgIHdoaWxlKHAgJiYgKHAtPnN0YXRlX2lkICE9IHN0YXRlX2lkKSkKLSAgICAgICAgICAgIHAgPSBwLT5uZXh0OwotICAgICAgICAgaWYocCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGNvdW50ID0gcC0+Y291bnQ7Ci0gICAgICAgICAgICBzdGFydF9wb3MgPSBwLT5zdGFydF9wb3M7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb3VudCA9IDA7Ci0gICAgICB9Ci0gICB9Ci0gICB+cmVwZWF0ZXJfY291bnQoKQotICAgewotICAgICAgaWYobmV4dCkKLSAgICAgICAgICpzdGFjayA9IG5leHQ7Ci0gICB9Ci0gICBzdGQ6OnNpemVfdCBnZXRfY291bnQoKSB7IHJldHVybiBjb3VudDsgfQotICAgaW50IGdldF9pZCgpIHsgcmV0dXJuIHN0YXRlX2lkOyB9Ci0gICBzdGQ6OnNpemVfdCBvcGVyYXRvcisrKCkgeyByZXR1cm4gKytjb3VudDsgfQotICAgYm9vbCBjaGVja19udWxsX3JlcGVhdChjb25zdCBCaWRpSXRlcmF0b3ImIHBvcywgc3RkOjpzaXplX3QgbWF4KQotICAgewotICAgICAgLy8gdGhpcyBpcyBjYWxsZWQgd2hlbiB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgYSBuZXcgcmVwZWF0LAotICAgICAgLy8gaWYgdGhlIGxhc3Qgb25lIHdhcyBOVUxMIG1vdmUgb3VyIGNvdW50IHRvIG1heCwKLSAgICAgIC8vIG90aGVyd2lzZSBzYXZlIHRoZSBjdXJyZW50IHBvc2l0aW9uLgotICAgICAgYm9vbCByZXN1bHQgPSAoY291bnQgPT0gMCkgPyBmYWxzZSA6IChwb3MgPT0gc3RhcnRfcG9zKTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgIGNvdW50ID0gbWF4OwotICAgICAgZWxzZQotICAgICAgICAgc3RhcnRfcG9zID0gcG9zOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLX07Ci0KLXN0cnVjdCBzYXZlZF9zdGF0ZTsKLQotZW51bSBzYXZlZF9zdGF0ZV90eXBlCi17Ci0gICBzYXZlZF90eXBlX2VuZCA9IDAsCi0gICBzYXZlZF90eXBlX3BhcmVuID0gMSwKLSAgIHNhdmVkX3R5cGVfcmVjdXJzZSA9IDIsCi0gICBzYXZlZF90eXBlX2Fzc2VydGlvbiA9IDMsCi0gICBzYXZlZF9zdGF0ZV9hbHQgPSA0LAotICAgc2F2ZWRfc3RhdGVfcmVwZWF0ZXJfY291bnQgPSA1LAotICAgc2F2ZWRfc3RhdGVfZXh0cmFfYmxvY2sgPSA2LAotICAgc2F2ZWRfc3RhdGVfZ3JlZWR5X3NpbmdsZV9yZXBlYXQgPSA3LAotICAgc2F2ZWRfc3RhdGVfcmVwX3Nsb3dfZG90ID0gOCwKLSAgIHNhdmVkX3N0YXRlX3JlcF9mYXN0X2RvdCA9IDksCi0gICBzYXZlZF9zdGF0ZV9yZXBfY2hhciA9IDEwLAotICAgc2F2ZWRfc3RhdGVfcmVwX3Nob3J0X3NldCA9IDExLAotICAgc2F2ZWRfc3RhdGVfcmVwX2xvbmdfc2V0ID0gMTIsCi0gICBzYXZlZF9zdGF0ZV9ub25fZ3JlZWR5X2xvbmdfcmVwZWF0ID0gMTMsIAotICAgc2F2ZWRfc3RhdGVfY291bnQgPSAxNAotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdHM+Ci1zdHJ1Y3QgcmVjdXJzaW9uX2luZm8KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUmVzdWx0czo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSB2YWx1ZV90eXBlOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgIGludCBpZHg7Ci0gICBjb25zdCByZV9zeW50YXhfYmFzZSogcHJldHVybl9hZGRyZXNzOwotICAgUmVzdWx0cyByZXN1bHRzOwotICAgcmVwZWF0ZXJfY291bnQ8aXRlcmF0b3I+KiByZXBlYXRlcl9zdGFjazsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI1MSA0MjMxKQotIyAgaWYgTkROQk9PU1RfTVNWQyA8IDE2MDAKLSMgICAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0NjYwKQotIyAgZW5kaWYKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWNsYXNzIHBlcmxfbWF0Y2hlcgotewotcHVibGljOgotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPiBzZWxmX3R5cGU7Ci0gICB0eXBlZGVmIGJvb2wgKHNlbGZfdHlwZTo6Km1hdGNoZXJfcHJvY190eXBlKSh2b2lkKTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgdHJhaXRzX3NpemVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgaXNfYnl0ZTxjaGFyX3R5cGU+Ojp3aWR0aF90eXBlIHdpZHRoX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiByZXN1bHRzX3R5cGU7Ci0KLSAgIHBlcmxfbWF0Y2hlcihCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBlbmQsIAotICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIHdoYXQsIAotICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhcl90eXBlLCB0cmFpdHM+JiBlLAotICAgICAgbWF0Y2hfZmxhZ190eXBlIGYsCi0gICAgICBCaWRpSXRlcmF0b3IgbF9iYXNlKQotICAgICAgOiAgbV9yZXN1bHQod2hhdCksIGJhc2UoZmlyc3QpLCBsYXN0KGVuZCksIAotICAgICAgICAgcG9zaXRpb24oZmlyc3QpLCBiYWNrc3RvcChsX2Jhc2UpLCByZShlKSwgdHJhaXRzX2luc3QoZS5nZXRfdHJhaXRzKCkpLCAKLSAgICAgICAgIG1faW5kZXBlbmRlbnQoZmFsc2UpLCBuZXh0X2NvdW50KCZyZXBfb2JqKSwgcmVwX29iaigmbmV4dF9jb3VudCkKLSAgIHsKLSAgICAgIGNvbnN0cnVjdF9pbml0KGUsIGYpOwotICAgfQotCi0gICBib29sIG1hdGNoKCk7Ci0gICBib29sIGZpbmQoKTsKLQotICAgdm9pZCBzZXRmKG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgeyBtX21hdGNoX2ZsYWdzIHw9IGY7IH0KLSAgIHZvaWQgdW5zZXRmKG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgeyBtX21hdGNoX2ZsYWdzICY9IH5mOyB9Ci0KLXByaXZhdGU6Ci0gICB2b2lkIGNvbnN0cnVjdF9pbml0KGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJfdHlwZSwgdHJhaXRzPiYgZSwgbWF0Y2hfZmxhZ190eXBlIGYpOwotCi0gICBib29sIGZpbmRfaW1wKCk7Ci0gICBib29sIG1hdGNoX2ltcCgpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotICAgdHlwZWRlZiBib29sIChwZXJsX21hdGNoZXI6Oipwcm90ZWN0ZWRfcHJvY190eXBlKSgpOwotICAgYm9vbCBwcm90ZWN0ZWRfY2FsbChwcm90ZWN0ZWRfcHJvY190eXBlKTsKLSNlbmRpZgotICAgdm9pZCBlc3RpbWF0ZV9tYXhfc3RhdGVfY291bnQoc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyopOwotICAgdm9pZCBlc3RpbWF0ZV9tYXhfc3RhdGVfY291bnQodm9pZCopOwotICAgYm9vbCBtYXRjaF9wcmVmaXgoKTsKLSAgIGJvb2wgbWF0Y2hfYWxsX3N0YXRlcygpOwotCi0gICAvLyBtYXRjaCBwcm9jcywgc3RvcmVkIGluIHNfbWF0Y2hfdnRhYmxlOgotICAgYm9vbCBtYXRjaF9zdGFydG1hcmsoKTsKLSAgIGJvb2wgbWF0Y2hfZW5kbWFyaygpOwotICAgYm9vbCBtYXRjaF9saXRlcmFsKCk7Ci0gICBib29sIG1hdGNoX3N0YXJ0X2xpbmUoKTsKLSAgIGJvb2wgbWF0Y2hfZW5kX2xpbmUoKTsKLSAgIGJvb2wgbWF0Y2hfd2lsZCgpOwotICAgYm9vbCBtYXRjaF9tYXRjaCgpOwotICAgYm9vbCBtYXRjaF93b3JkX2JvdW5kYXJ5KCk7Ci0gICBib29sIG1hdGNoX3dpdGhpbl93b3JkKCk7Ci0gICBib29sIG1hdGNoX3dvcmRfc3RhcnQoKTsKLSAgIGJvb2wgbWF0Y2hfd29yZF9lbmQoKTsKLSAgIGJvb2wgbWF0Y2hfYnVmZmVyX3N0YXJ0KCk7Ci0gICBib29sIG1hdGNoX2J1ZmZlcl9lbmQoKTsKLSAgIGJvb2wgbWF0Y2hfYmFja3JlZigpOwotICAgYm9vbCBtYXRjaF9sb25nX3NldCgpOwotICAgYm9vbCBtYXRjaF9zZXQoKTsKLSAgIGJvb2wgbWF0Y2hfanVtcCgpOwotICAgYm9vbCBtYXRjaF9hbHQoKTsKLSAgIGJvb2wgbWF0Y2hfcmVwKCk7Ci0gICBib29sIG1hdGNoX2NvbWJpbmluZygpOwotICAgYm9vbCBtYXRjaF9zb2Z0X2J1ZmZlcl9lbmQoKTsKLSAgIGJvb2wgbWF0Y2hfcmVzdGFydF9jb250aW51ZSgpOwotICAgYm9vbCBtYXRjaF9sb25nX3NldF9yZXBlYXQoKTsKLSAgIGJvb2wgbWF0Y2hfc2V0X3JlcGVhdCgpOwotICAgYm9vbCBtYXRjaF9jaGFyX3JlcGVhdCgpOwotICAgYm9vbCBtYXRjaF9kb3RfcmVwZWF0X2Zhc3QoKTsKLSAgIGJvb2wgbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0gICBib29sIG1hdGNoX2RvdF9yZXBlYXRfZGlzcGF0Y2goKQotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUgPyBtYXRjaF9kb3RfcmVwZWF0X2Zhc3QoKSA6IG1hdGNoX2RvdF9yZXBlYXRfc2xvdygpOwotICAgfQotICAgYm9vbCBtYXRjaF9iYWNrc3RlcCgpOwotICAgYm9vbCBtYXRjaF9hc3NlcnRfYmFja3JlZigpOwotICAgYm9vbCBtYXRjaF90b2dnbGVfY2FzZSgpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX1JFQ1VSU0lWRQotICAgYm9vbCBiYWNrdHJhY2tfdGlsbF9tYXRjaChzdGQ6OnNpemVfdCBjb3VudCk7Ci0jZW5kaWYKLSAgIGJvb2wgbWF0Y2hfcmVjdXJzaW9uKCk7Ci0KLSAgIC8vIGZpbmQgcHJvY3Mgc3RvcmVkIGluIHNfZmluZF92dGFibGU6Ci0gICBib29sIGZpbmRfcmVzdGFydF9hbnkoKTsKLSAgIGJvb2wgZmluZF9yZXN0YXJ0X3dvcmQoKTsKLSAgIGJvb2wgZmluZF9yZXN0YXJ0X2xpbmUoKTsKLSAgIGJvb2wgZmluZF9yZXN0YXJ0X2J1ZigpOwotICAgYm9vbCBmaW5kX3Jlc3RhcnRfbGl0KCk7Ci0KLXByaXZhdGU6Ci0gICAvLyBmaW5hbCByZXN1bHQgc3RydWN0dXJlIHRvIGJlIGZpbGxlZCBpbjoKLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtX3Jlc3VsdDsKLSAgIC8vIHRlbXBvcmFyeSByZXN1bHQgZm9yIFBPU0lYIG1hdGNoZXM6Ci0gICBzY29wZWRfcHRyPG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+ID4gbV90ZW1wX21hdGNoOwotICAgLy8gcG9pbnRlciB0byBhY3R1YWwgcmVzdWx0IHN0cnVjdHVyZSB0byBmaWxsIGluOgotICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4qIG1fcHJlc3VsdDsKLSAgIC8vIHN0YXJ0IG9mIHNlcXVlbmNlIGJlaW5nIHNlYXJjaGVkOgotICAgQmlkaUl0ZXJhdG9yIGJhc2U7Ci0gICAvLyBlbmQgb2Ygc2VxdWVuY2UgYmVpbmcgc2VhcmNoZWQ6Ci0gICBCaWRpSXRlcmF0b3IgbGFzdDsgCi0gICAvLyBjdXJyZW50IGNoYXJhY3RlciBiZWluZyBleGFtaW5lZDoKLSAgIEJpZGlJdGVyYXRvciBwb3NpdGlvbjsKLSAgIC8vIHdoZXJlIHRvIHJlc3RhcnQgbmV4dCBzZWFyY2ggYWZ0ZXIgZmFpbGVkIG1hdGNoIGF0dGVtcHQ6Ci0gICBCaWRpSXRlcmF0b3IgcmVzdGFydDsKLSAgIC8vIHdoZXJlIHRoZSBjdXJyZW50IHNlYXJjaCBzdGFydGVkIGZyb20sIGFjdHMgYXMgYmFzZSBmb3IgJGAgZHVyaW5nIGdyZXA6Ci0gICBCaWRpSXRlcmF0b3Igc2VhcmNoX2Jhc2U7Ci0gICAvLyBob3cgZmFyIHdlIGNhbiBnbyBiYWNrIHdoZW4gbWF0Y2hpbmcgbG9va2JlaGluZDoKLSAgIEJpZGlJdGVyYXRvciBiYWNrc3RvcDsKLSAgIC8vIHRoZSBleHByZXNzaW9uIGJlaW5nIGV4YW1pbmVkOgotICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhcl90eXBlLCB0cmFpdHM+JiByZTsKLSAgIC8vIHRoZSBleHByZXNzaW9uJ3MgdHJhaXRzIGNsYXNzOgotICAgY29uc3QgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzPiYgdHJhaXRzX2luc3Q7Ci0gICAvLyB0aGUgbmV4dCBzdGF0ZSBpbiB0aGUgbWFjaGluZSBiZWluZyBtYXRjaGVkOgotICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzdGF0ZTsKLSAgIC8vIG1hdGNoaW5nIGZsYWdzIGluIHVzZToKLSAgIG1hdGNoX2ZsYWdfdHlwZSBtX21hdGNoX2ZsYWdzOwotICAgLy8gaG93IG1hbnkgc3RhdGVzIHdlIGhhdmUgZXhhbWluZWQgc28gZmFyOgotICAgc3RkOjpwdHJkaWZmX3Qgc3RhdGVfY291bnQ7Ci0gICAvLyBtYXggbnVtYmVyIG9mIHN0YXRlcyB0byBleGFtaW5lIGJlZm9yZSBnaXZpbmcgdXA6Ci0gICBzdGQ6OnB0cmRpZmZfdCBtYXhfc3RhdGVfY291bnQ7Ci0gICAvLyB3aGV0aGVyIHdlIHNob3VsZCBpZ25vcmUgY2FzZSBvciBub3Q6Ci0gICBib29sIGljYXNlOwotICAgLy8gc2V0IHRvIHRydWUgd2hlbiAocG9zaXRpb24gPT0gbGFzdCksIGluZGljYXRlcyB0aGF0IHdlIG1heSBoYXZlIGEgcGFydGlhbCBtYXRjaDoKLSAgIGJvb2wgbV9oYXNfcGFydGlhbF9tYXRjaDsKLSAgIC8vIHNldCB0byB0cnVlIHdoZW5ldmVyIHdlIGdldCBhIG1hdGNoOgotICAgYm9vbCBtX2hhc19mb3VuZF9tYXRjaDsKLSAgIC8vIHNldCB0byB0cnVlIHdoZW5ldmVyIHdlJ3JlIGluc2lkZSBhbiBpbmRlcGVuZGVudCBzdWItZXhwcmVzc2lvbjoKLSAgIGJvb2wgbV9pbmRlcGVuZGVudDsKLSAgIC8vIHRoZSBjdXJyZW50IHJlcGVhdCBiZWluZyBleGFtaW5lZDoKLSAgIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4qIG5leHRfY291bnQ7Ci0gICAvLyB0aGUgZmlyc3QgcmVwZWF0IGJlaW5nIGV4YW1pbmVkICh0b3Agb2YgbGlua2VkIGxpc3QpOgotICAgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPiByZXBfb2JqOwotICAgLy8gdGhlIG1hc2sgdG8gcGFzcyB3aGVuIG1hdGNoaW5nIHdvcmQgYm91bmRhcmllczoKLSAgIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fd29yZF9tYXNrOwotICAgLy8gdGhlIGJpdG1hc2sgdG8gdXNlIHdoZW4gZGV0ZXJtaW5pbmcgd2hldGhlciBhIG1hdGNoX2FueSBtYXRjaGVzIGEgbmV3bGluZSBvciBub3Q6Ci0gICB1bnNpZ25lZCBjaGFyIG1hdGNoX2FueV9tYXNrOwotICAgLy8gcmVjdXJzaW9uIGluZm9ybWF0aW9uOgotICAgc3RkOjp2ZWN0b3I8cmVjdXJzaW9uX2luZm88cmVzdWx0c190eXBlPiA+IHJlY3Vyc2lvbl9zdGFjazsKLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUKLSAgIC8vCi0gICAvLyBhZGRpdGlvbmFsIG1lbWJlcnMgZm9yIG5vbi1yZWN1cnNpdmUgdmVyc2lvbjoKLSAgIC8vCi0gICB0eXBlZGVmIGJvb2wgKHNlbGZfdHlwZTo6KnVud2luZF9wcm9jX3R5cGUpKGJvb2wpOwotCi0gICB2b2lkIGV4dGVuZF9zdGFjaygpOwotICAgYm9vbCB1bndpbmQoYm9vbCk7Ci0gICBib29sIHVud2luZF9lbmQoYm9vbCk7Ci0gICBib29sIHVud2luZF9wYXJlbihib29sKTsKLSAgIGJvb2wgdW53aW5kX3JlY3Vyc2lvbl9zdG9wcGVyKGJvb2wpOwotICAgYm9vbCB1bndpbmRfYXNzZXJ0aW9uKGJvb2wpOwotICAgYm9vbCB1bndpbmRfYWx0KGJvb2wpOwotICAgYm9vbCB1bndpbmRfcmVwZWF0ZXJfY291bnRlcihib29sKTsKLSAgIGJvb2wgdW53aW5kX2V4dHJhX2Jsb2NrKGJvb2wpOwotICAgYm9vbCB1bndpbmRfZ3JlZWR5X3NpbmdsZV9yZXBlYXQoYm9vbCk7Ci0gICBib29sIHVud2luZF9zbG93X2RvdF9yZXBlYXQoYm9vbCk7Ci0gICBib29sIHVud2luZF9mYXN0X2RvdF9yZXBlYXQoYm9vbCk7Ci0gICBib29sIHVud2luZF9jaGFyX3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX3Nob3J0X3NldF9yZXBlYXQoYm9vbCk7Ci0gICBib29sIHVud2luZF9sb25nX3NldF9yZXBlYXQoYm9vbCk7Ci0gICBib29sIHVud2luZF9ub25fZ3JlZWR5X3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX3JlY3Vyc2lvbihib29sKTsKLSAgIGJvb2wgdW53aW5kX3JlY3Vyc2lvbl9wb3AoYm9vbCk7Ci0gICB2b2lkIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgdm9pZCBwdXNoX21hdGNoZWRfcGFyZW4oaW50IGluZGV4LCBjb25zdCBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiYgc3ViKTsKLSAgIHZvaWQgcHVzaF9yZWN1cnNpb25fc3RvcHBlcigpOwotICAgdm9pZCBwdXNoX2Fzc2VydGlvbihjb25zdCByZV9zeW50YXhfYmFzZSogcHMsIGJvb2wgcG9zaXRpdmUpOwotICAgdm9pZCBwdXNoX2FsdChjb25zdCByZV9zeW50YXhfYmFzZSogcHMpOwotICAgdm9pZCBwdXNoX3JlcGVhdGVyX2NvdW50KGludCBpLCByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+Kiogcyk7Ci0gICB2b2lkIHB1c2hfc2luZ2xlX3JlcGVhdChzdGQ6OnNpemVfdCBjLCBjb25zdCByZV9yZXBlYXQqIHIsIEJpZGlJdGVyYXRvciBsYXN0X3Bvc2l0aW9uLCBpbnQgc3RhdGVfaWQpOwotICAgdm9pZCBwdXNoX25vbl9ncmVlZHlfcmVwZWF0KGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcyk7Ci0gICB2b2lkIHB1c2hfcmVjdXJzaW9uKGludCBpZHgsIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwLCByZXN1bHRzX3R5cGUqIHByZXN1bHRzKTsKLSAgIHZvaWQgcHVzaF9yZWN1cnNpb25fcG9wKCk7Ci0KLSAgIC8vIHBvaW50ZXIgdG8gYmFzZSBvZiBzdGFjazoKLSAgIHNhdmVkX3N0YXRlKiBtX3N0YWNrX2Jhc2U7Ci0gICAvLyBwb2ludGVyIHRvIGN1cnJlbnQgc3RhY2sgcG9zaXRpb246Ci0gICBzYXZlZF9zdGF0ZSogbV9iYWNrdXBfc3RhdGU7Ci0gICAvLyBkZXRlcm1pbmVzIHdoYXQgdmFsdWUgdG8gcmV0dXJuIHdoZW4gdW53aW5kaW5nIGZyb20gcmVjdXJzaW9uLAotICAgLy8gYWxsb3dzIGZvciBtaXhlZCByZWN1cnNpdmUvbm9uLXJlY3Vyc2l2ZSBhbGdvcml0aG06Ci0gICBib29sIG1fcmVjdXJzaXZlX3Jlc3VsdDsKLSAgIC8vIGhvdyBtYW55IG1lbW9yeSBibG9ja3MgaGF2ZSB3ZSB1c2VkIHVwPzoKLSAgIHVuc2lnbmVkIHVzZWRfYmxvY2tfY291bnQ7Ci0jZW5kaWYKLQotICAgLy8gdGhlc2Ugb3BlcmF0aW9ucyBhcmVuJ3QgYWxsb3dlZCwgc28gYXJlIGRlY2xhcmVkIHByaXZhdGUsCi0gICAvLyBib2RpZXMgYXJlIHByb3ZpZGVkIHRvIGtlZXAgZXhwbGljaXQtaW5zdGFudGlhdGlvbiByZXF1ZXN0cyBoYXBweToKLSAgIHBlcmxfbWF0Y2hlciYgb3BlcmF0b3I9KGNvbnN0IHBlcmxfbWF0Y2hlciYpCi0gICB7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICBwZXJsX21hdGNoZXIoY29uc3QgcGVybF9tYXRjaGVyJiB0aGF0KQotICAgICAgOiBtX3Jlc3VsdCh0aGF0Lm1fcmVzdWx0KSwgcmUodGhhdC5yZSksIHRyYWl0c19pbnN0KHRoYXQudHJhaXRzX2luc3QpLCByZXBfb2JqKDApIHt9Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8vCi0vLyBpbmNsdWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBwZXJsX21hdGNoZXI6Ci0vLwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX1JFQ1VSU0lWRQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9yZWN1cnNpdmUuaHBwPgotI2Vsc2UKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfbm9uX3JlY3Vyc2l2ZS5ocHA+Ci0jZW5kaWYKLS8vIHRoaXMgb25lIGhhcyB0byBiZSBsYXN0OgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9jb21tb24uaHBwPgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfY29tbW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX2NvbW1vbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNWZlZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfY29tbW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5NiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHBlcmxfbWF0Y2hlcl9jb21tb24uY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWZpbml0aW9ucyBvZiBwZXJsX21hdGNoZXIgbWVtYmVyIGZ1bmN0aW9ucyB0aGF0IGFyZSAKLSAgKiAgICAgICAgICAgICAgICBjb21tb24gdG8gYm90aCB0aGUgcmVjdXJzaXZlIGFuZCBub24tcmVjdXJzaXZlIHZlcnNpb25zLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1BFUkxfTUFUQ0hFUl9DT01NT05fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1BFUkxfTUFUQ0hFUl9DT01NT05fSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIF9fQk9STEFORENfXwotIyAgcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMDggLXctODA2NgotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ4MDApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci12b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6Y29uc3RydWN0X2luaXQoY29uc3QgYmFzaWNfcmVnZXg8Y2hhcl90eXBlLCB0cmFpdHM+JiBlLCBtYXRjaF9mbGFnX3R5cGUgZikKLXsgCi0gICB0eXBlZGVmIHR5cGVuYW1lIHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpSXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeSBjYXRlZ29yeTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfcmVnZXg8Y2hhcl90eXBlLCB0cmFpdHM+OjpmbGFnX3R5cGUgZXhwcmVzc2lvbl9mbGFnX3R5cGU7Ci0gICAKLSAgIGlmKGUuZW1wdHkoKSkKLSAgIHsKLSAgICAgIC8vIHByZWNvbmRpdGlvbiBmYWlsdXJlOiBlIGlzIG5vdCBhIHZhbGlkIHJlZ2V4LgotICAgICAgc3RkOjppbnZhbGlkX2FyZ3VtZW50IGV4KCJJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QiKTsKLSAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZXgpOwotICAgfQotICAgcHN0YXRlID0gMDsKLSAgIG1fbWF0Y2hfZmxhZ3MgPSBmOwotICAgZXN0aW1hdGVfbWF4X3N0YXRlX2NvdW50KHN0YXRpY19jYXN0PGNhdGVnb3J5Kj4oMCkpOwotICAgZXhwcmVzc2lvbl9mbGFnX3R5cGUgcmVfZiA9IHJlLmZsYWdzKCk7Ci0gICBpY2FzZSA9IHJlX2YgJiByZWdleF9jb25zdGFudHM6OmljYXNlOwotICAgaWYoIShtX21hdGNoX2ZsYWdzICYgKG1hdGNoX3Blcmx8bWF0Y2hfcG9zaXgpKSkKLSAgIHsKLSAgICAgIGlmKChyZV9mICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGV8cmVnYmFzZTo6bm9fcGVybF9leCkpID09IDApCi0gICAgICAgICBtX21hdGNoX2ZsYWdzIHw9IG1hdGNoX3Blcmw7Ci0gICAgICBlbHNlIGlmKChyZV9mICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGV8cmVnYmFzZTo6ZW1hY3NfZXgpKSA9PSAocmVnYmFzZTo6YmFzaWNfc3ludGF4X2dyb3VwfHJlZ2Jhc2U6OmVtYWNzX2V4KSkKLSAgICAgICAgIG1fbWF0Y2hfZmxhZ3MgfD0gbWF0Y2hfcGVybDsKLSAgICAgIGVsc2UgaWYoKHJlX2YgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZXxyZWdiYXNlOjpsaXRlcmFsKSkgPT0gKHJlZ2Jhc2U6OmxpdGVyYWwpKQotICAgICAgICAgbV9tYXRjaF9mbGFncyB8PSBtYXRjaF9wZXJsOwotICAgICAgZWxzZQotICAgICAgICAgbV9tYXRjaF9mbGFncyB8PSBtYXRjaF9wb3NpeDsKLSAgIH0KLSAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wb3NpeCkKLSAgIHsKLSAgICAgIG1fdGVtcF9tYXRjaC5yZXNldChuZXcgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4oKSk7Ci0gICAgICBtX3ByZXN1bHQgPSBtX3RlbXBfbWF0Y2guZ2V0KCk7Ci0gICB9Ci0gICBlbHNlCi0gICAgICBtX3ByZXN1bHQgPSAmbV9yZXN1bHQ7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRQotICAgbV9zdGFja19iYXNlID0gMDsKLSAgIG1fYmFja3VwX3N0YXRlID0gMDsKLSNlbmRpZgotICAgLy8gZmluZCB0aGUgdmFsdWUgdG8gdXNlIGZvciBtYXRjaGluZyB3b3JkIGJvdW5kYXJpZXM6Ci0gICBtX3dvcmRfbWFzayA9IHJlLmdldF9kYXRhKCkubV93b3JkX21hc2s7IAotICAgLy8gZmluZCBiaXRtYXNrIHRvIHVzZSBmb3IgbWF0Y2hpbmcgJy4nOgotICAgbWF0Y2hfYW55X21hc2sgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigoZiAmIG1hdGNoX25vdF9kb3RfbmV3bGluZSkgPyByZV9kZXRhaWw6OnRlc3Rfbm90X25ld2xpbmUgOiByZV9kZXRhaWw6OnRlc3RfbmV3bGluZSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmVzdGltYXRlX21heF9zdGF0ZV9jb3VudChzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKikKLXsKLSAgIC8vCi0gICAvLyBIb3cgbWFueSBzdGF0ZXMgc2hvdWxkIHdlIGFsbG93IG91ciBtYWNoaW5lIHRvIHZpc2l0IGJlZm9yZSBnaXZpbmcgdXA/Ci0gICAvLyBUaGlzIGlzIGEgaGV1cmlzdGljOiBpdCB0YWtlcyB0aGUgZ3JlYXRlciBvZiBPKE5eMikgYW5kIE8oTlNeMikKLSAgIC8vIHdoZXJlIE4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLCBhbmQgUyBpcyB0aGUgbnVtYmVyIG9mIHN0YXRlcwotICAgLy8gaW4gdGhlIG1hY2hpbmUuICBJdCdzIHRlbXB0aW5nIHRvIHVwIHRoaXMgdG8gTyhOXjJTKSBvciBldmVuIE8oTl4yU14yKQotICAgLy8gYnV0IHRoZXNlIHRha2UgdW5yZWFzb25hYmx5IGFtb3VudHMgb2YgdGltZSB0byBiYWxlIG91dCBpbiBwYXRob2xvZ2ljYWwKLSAgIC8vIGNhc2VzLgotICAgLy8KLSAgIC8vIENhbGN1bGF0ZSBOU14yIGZpcnN0OgotICAgLy8KLSAgIHN0YXRpYyBjb25zdCBzdGQ6OnB0cmRpZmZfdCBrID0gMTAwMDAwOwotICAgc3RkOjpwdHJkaWZmX3QgZGlzdCA9IG5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKGJhc2UsIGxhc3QpOwotICAgaWYoZGlzdCA9PSAwKQotICAgICAgZGlzdCA9IDE7Ci0gICBzdGQ6OnB0cmRpZmZfdCBzdGF0ZXMgPSByZS5zaXplKCk7Ci0gICBpZihzdGF0ZXMgPT0gMCkKLSAgICAgIHN0YXRlcyA9IDE7Ci0gICBzdGF0ZXMgKj0gc3RhdGVzOwotICAgaWYoKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpwdHJkaWZmX3Q+OjptYXgpKCkgLyBkaXN0IDwgc3RhdGVzKQotICAgewotICAgICAgbWF4X3N0YXRlX2NvdW50ID0gKHN0ZDo6bWluKSgoc3RkOjpwdHJkaWZmX3QpTkROQk9PU1RfUkVHRVhfTUFYX1NUQVRFX0NPVU5ULCAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAtIDIpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgc3RhdGVzICo9IGRpc3Q7Ci0gICBpZigoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAtIGsgPCBzdGF0ZXMpCi0gICB7Ci0gICAgICBtYXhfc3RhdGVfY291bnQgPSAoc3RkOjptaW4pKChzdGQ6OnB0cmRpZmZfdClORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQsIChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC0gMik7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICBzdGF0ZXMgKz0gazsKLQotICAgbWF4X3N0YXRlX2NvdW50ID0gc3RhdGVzOwotCi0gICAvLwotICAgLy8gTm93IGNhbGN1bGF0ZSBOXjI6Ci0gICAvLwotICAgc3RhdGVzID0gZGlzdDsKLSAgIGlmKChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC8gZGlzdCA8IHN0YXRlcykKLSAgIHsKLSAgICAgIG1heF9zdGF0ZV9jb3VudCA9IChzdGQ6Om1pbikoKHN0ZDo6cHRyZGlmZl90KU5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVCwgKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpwdHJkaWZmX3Q+OjptYXgpKCkgLSAyKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIHN0YXRlcyAqPSBkaXN0OwotICAgaWYoKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpwdHJkaWZmX3Q+OjptYXgpKCkgLSBrIDwgc3RhdGVzKQotICAgewotICAgICAgbWF4X3N0YXRlX2NvdW50ID0gKHN0ZDo6bWluKSgoc3RkOjpwdHJkaWZmX3QpTkROQk9PU1RfUkVHRVhfTUFYX1NUQVRFX0NPVU5ULCAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAtIDIpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgc3RhdGVzICs9IGs7Ci0gICAvLwotICAgLy8gTl4yIGNhbiBiZSBhIHZlcnkgbGFyZ2UgbnVtYmVyIGluZGVlZCwgdG8gcHJldmVudCB0aGluZ3MgZ2V0dGluZyBvdXQKLSAgIC8vIG9mIGNvbnRyb2wsIGNhcCB0aGUgbWF4IHN0YXRlczoKLSAgIC8vCi0gICBpZihzdGF0ZXMgPiBORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQpCi0gICAgICBzdGF0ZXMgPSBORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQ7Ci0gICAvLwotICAgLy8gSWYgKHRoZSBwb3NzaWJseSBjYXBwZWQpIE5eMiBpcyBsYXJnZXIgdGhhbiBvdXIgZmlyc3QgZXN0aW1hdGUsCi0gICAvLyB1c2UgdGhpcyBpbnN0ZWFkOgotICAgLy8KLSAgIGlmKHN0YXRlcyA+IG1heF9zdGF0ZV9jb3VudCkKLSAgICAgIG1heF9zdGF0ZV9jb3VudCA9IHN0YXRlczsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmVzdGltYXRlX21heF9zdGF0ZV9jb3VudCh2b2lkKikKLXsKLSAgIC8vIHdlIGRvbid0IGtub3cgaG93IGxvbmcgdGhlIHNlcXVlbmNlIGlzOgotICAgbWF4X3N0YXRlX2NvdW50ID0gTkROQk9PU1RfUkVHRVhfTUFYX1NUQVRFX0NPVU5UOwotfQotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHJvdGVjdGVkX2NhbGwoCi0gICBwcm90ZWN0ZWRfcHJvY190eXBlIHByb2MpCi17Ci0gICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNvbmNyZXRlX3Byb3RlY3RlZF9jYWxsCi0gICAgICA8cGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+ID4KLSAgICAgIG9iaih0aGlzLCBwcm9jKTsKLSAgIHJldHVybiBvYmouZXhlY3V0ZSgpOwotCi19Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoKCkKLXsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQKLSAgIHJldHVybiBwcm90ZWN0ZWRfY2FsbCgmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9pbXApOwotI2Vsc2UKLSAgIHJldHVybiBtYXRjaF9pbXAoKTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9pbXAoKQotewotICAgLy8gaW5pdGlhbGlzZSBvdXIgc3RhY2sgaWYgd2UgYXJlIG5vbi1yZWN1cnNpdmU6Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRQotICAgc2F2ZV9zdGF0ZV9pbml0IGluaXQoJm1fc3RhY2tfYmFzZSwgJm1fYmFja3VwX3N0YXRlKTsKLSAgIHVzZWRfYmxvY2tfY291bnQgPSBORE5CT09TVF9SRUdFWF9NQVhfQkxPQ0tTOwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICB0cnl7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAvLyByZXNldCBvdXIgc3RhdGUgbWFjaGluZToKLSAgIHBvc2l0aW9uID0gYmFzZTsKLSAgIHNlYXJjaF9iYXNlID0gYmFzZTsKLSAgIHN0YXRlX2NvdW50ID0gMDsKLSAgIG1fbWF0Y2hfZmxhZ3MgfD0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbGw7Ci0gICBtX3ByZXN1bHQtPnNldF9zaXplKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm9zdWJzKSA/IDEgOiByZS5tYXJrX2NvdW50KCksIHNlYXJjaF9iYXNlLCBsYXN0KTsKLSAgIG1fcHJlc3VsdC0+c2V0X2Jhc2UoYmFzZSk7Ci0gICBtX3ByZXN1bHQtPnNldF9uYW1lZF9zdWJzKHRoaXMtPnJlLmdldF9uYW1lZF9zdWJzKCkpOwotICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX3Bvc2l4KQotICAgICAgbV9yZXN1bHQgPSAqbV9wcmVzdWx0OwotICAgdmVyaWZ5X29wdGlvbnMocmUuZmxhZ3MoKSwgbV9tYXRjaF9mbGFncyk7Ci0gICBpZigwID09IG1hdGNoX3ByZWZpeCgpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgcmV0dXJuIChtX3Jlc3VsdFswXS5zZWNvbmQgPT0gbGFzdCkgJiYgKG1fcmVzdWx0WzBdLmZpcnN0ID09IGJhc2UpOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgfQotICAgY2F0Y2goLi4uKQotICAgewotICAgICAgLy8gdW53aW5kIGFsbCBwdXNoZWQgc3RhdGVzLCBhcGFydCBmcm9tIGFueXRoaW5nIGVsc2UgdGhpcwotICAgICAgLy8gZW5zdXJlcyB0aGF0IGFsbCB0aGUgc3RhdGVzIGFyZSBjb3JyZWN0bHkgZGVzdHJ1Y3RlZAotICAgICAgLy8gbm90IGp1c3QgdGhlIG1lbW9yeSBmcmVlZC4KLSAgICAgIHdoaWxlKHVud2luZCh0cnVlKSl7fQotICAgICAgdGhyb3c7Ci0gICB9Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmQoKQotewotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotICAgcmV0dXJuIHByb3RlY3RlZF9jYWxsKCZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfaW1wKTsKLSNlbHNlCi0gICByZXR1cm4gZmluZF9pbXAoKTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX2ltcCgpCi17Ci0gICBzdGF0aWMgbWF0Y2hlcl9wcm9jX3R5cGUgY29uc3Qgc19maW5kX3Z0YWJsZVs3XSA9IAotICAgewotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2FueSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF93b3JkLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2xpbmUsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfYnVmLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcHJlZml4LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2xpdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF9saXQsCi0gICB9OwotCi0gICAvLyBpbml0aWFsaXNlIG91ciBzdGFjayBpZiB3ZSBhcmUgbm9uLXJlY3Vyc2l2ZToKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFCi0gICBzYXZlX3N0YXRlX2luaXQgaW5pdCgmbV9zdGFja19iYXNlLCAmbV9iYWNrdXBfc3RhdGUpOwotICAgdXNlZF9ibG9ja19jb3VudCA9IE5ETkJPT1NUX1JFR0VYX01BWF9CTE9DS1M7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgIHRyeXsKLSNlbmRpZgotI2VuZGlmCi0KLSAgIHN0YXRlX2NvdW50ID0gMDsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9pbml0KSA9PSAwKQotICAgewotICAgICAgLy8gcmVzZXQgb3VyIHN0YXRlIG1hY2hpbmU6Ci0gICAgICBzZWFyY2hfYmFzZSA9IHBvc2l0aW9uID0gYmFzZTsKLSAgICAgIHBzdGF0ZSA9IHJlLmdldF9maXJzdF9zdGF0ZSgpOwotICAgICAgbV9wcmVzdWx0LT5zZXRfc2l6ZSgobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vc3VicykgPyAxIDogcmUubWFya19jb3VudCgpLCBiYXNlLCBsYXN0KTsKLSAgICAgIG1fcHJlc3VsdC0+c2V0X2Jhc2UoYmFzZSk7Ci0gICAgICBtX3ByZXN1bHQtPnNldF9uYW1lZF9zdWJzKHRoaXMtPnJlLmdldF9uYW1lZF9zdWJzKCkpOwotICAgICAgbV9tYXRjaF9mbGFncyB8PSByZWdleF9jb25zdGFudHM6Om1hdGNoX2luaXQ7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBzdGFydCBhZ2FpbjoKLSAgICAgIHNlYXJjaF9iYXNlID0gcG9zaXRpb24gPSBtX3Jlc3VsdFswXS5zZWNvbmQ7Ci0gICAgICAvLyBJZiBsYXN0IG1hdGNoIHdhcyBudWxsIGFuZCBtYXRjaF9ub3RfbnVsbCB3YXMgbm90IHNldCB0aGVuIGluY3JlbWVudAotICAgICAgLy8gb3VyIHN0YXJ0IHBvc2l0aW9uLCBvdGhlcndpc2Ugd2UgZ28gaW50byBhbiBpbmZpbml0ZSBsb29wOgotICAgICAgaWYoKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X251bGwpID09IDApICYmIChtX3Jlc3VsdC5sZW5ndGgoKSA9PSAwKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBlbHNlIAotICAgICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIH0KLSAgICAgIC8vIHJlc2V0ICRgIHN0YXJ0OgotICAgICAgbV9wcmVzdWx0LT5zZXRfc2l6ZSgobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vc3VicykgPyAxIDogcmUubWFya19jb3VudCgpLCBzZWFyY2hfYmFzZSwgbGFzdCk7Ci0gICAgICAvL2lmKChiYXNlICE9IHNlYXJjaF9iYXNlKSAmJiAoYmFzZSA9PSBiYWNrc3RvcCkpCi0gICAgICAvLyAgIG1fbWF0Y2hfZmxhZ3MgfD0gbWF0Y2hfcHJldl9hdmFpbDsKLSAgIH0KLSAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wb3NpeCkKLSAgIHsKLSAgICAgIG1fcmVzdWx0LnNldF9zaXplKHJlLm1hcmtfY291bnQoKSwgYmFzZSwgbGFzdCk7Ci0gICAgICBtX3Jlc3VsdC5zZXRfYmFzZShiYXNlKTsKLSAgIH0KLQotICAgdmVyaWZ5X29wdGlvbnMocmUuZmxhZ3MoKSwgbV9tYXRjaF9mbGFncyk7Ci0gICAvLyBmaW5kIG91dCB3aGF0IGtpbmQgb2YgZXhwcmVzc2lvbiB3ZSBoYXZlOgotICAgdW5zaWduZWQgdHlwZSA9IChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfY29udGludW91cykgPyAKLSAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocmVnYmFzZTo6cmVzdGFydF9jb250aW51ZSkgCi0gICAgICAgICA6IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocmUuZ2V0X3Jlc3RhcnRfdHlwZSgpKTsKLQotICAgLy8gY2FsbCB0aGUgYXBwcm9wcmlhdGUgc2VhcmNoIHJvdXRpbmU6Ci0gICBtYXRjaGVyX3Byb2NfdHlwZSBwcm9jID0gc19maW5kX3Z0YWJsZVt0eXBlXTsKLSAgIHJldHVybiAodGhpcy0+KnByb2MpKCk7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICB9Ci0gICBjYXRjaCguLi4pCi0gICB7Ci0gICAgICAvLyB1bndpbmQgYWxsIHB1c2hlZCBzdGF0ZXMsIGFwYXJ0IGZyb20gYW55dGhpbmcgZWxzZSB0aGlzCi0gICAgICAvLyBlbnN1cmVzIHRoYXQgYWxsIHRoZSBzdGF0ZXMgYXJlIGNvcnJlY3RseSBkZXN0cnVjdGVkCi0gICAgICAvLyBub3QganVzdCB0aGUgbWVtb3J5IGZyZWVkLgotICAgICAgd2hpbGUodW53aW5kKHRydWUpKXt9Ci0gICAgICB0aHJvdzsKLSAgIH0KLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9wcmVmaXgoKQotewotICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IGZhbHNlOwotICAgbV9oYXNfZm91bmRfbWF0Y2ggPSBmYWxzZTsKLSAgIHBzdGF0ZSA9IHJlLmdldF9maXJzdF9zdGF0ZSgpOwotICAgbV9wcmVzdWx0LT5zZXRfZmlyc3QocG9zaXRpb24pOwotICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgaWYoIW1faGFzX2ZvdW5kX21hdGNoICYmIG1faGFzX3BhcnRpYWxfbWF0Y2ggJiYgKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSkKLSAgIHsKLSAgICAgIG1faGFzX2ZvdW5kX21hdGNoID0gdHJ1ZTsKLSAgICAgIG1fcHJlc3VsdC0+c2V0X3NlY29uZChsYXN0LCAwLCBmYWxzZSk7Ci0gICAgICBwb3NpdGlvbiA9IGxhc3Q7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3Bvc2l4KSA9PSBtYXRjaF9wb3NpeCkKLSAgICAgIHsKLSAgICAgICAgIG1fcmVzdWx0Lm1heWJlX2Fzc2lnbigqbV9wcmVzdWx0KTsKLSAgICAgIH0KLSAgIH0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgaWYobV9oYXNfZm91bmRfbWF0Y2ggJiYgKG1hdGNoX2V4dHJhICYgbV9tYXRjaF9mbGFncykpCi0gICB7Ci0gICAgICAvLwotICAgICAgLy8gd2UgaGF2ZSBhIG1hdGNoLCByZXZlcnNlIHRoZSBjYXB0dXJlIGluZm9ybWF0aW9uOgotICAgICAgLy8KLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJlc3VsdC0+c2l6ZSgpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICB0eXBlbmFtZSBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPjo6Y2FwdHVyZV9zZXF1ZW5jZV90eXBlICYgc2VxID0gKCgqbV9wcmVzdWx0KVtpXSkuZ2V0X2NhcHR1cmVzKCk7Ci0gICAgICAgICBzdGQ6OnJldmVyc2Uoc2VxLmJlZ2luKCksIHNlcS5lbmQoKSk7Ci0gICAgICB9Ci0gICB9Ci0jZW5kaWYKLSAgIGlmKCFtX2hhc19mb3VuZF9tYXRjaCkKLSAgICAgIHBvc2l0aW9uID0gcmVzdGFydDsgLy8gcmVzZXQgc2VhcmNoIHBvc3Rpb24KLSAgIHJldHVybiBtX2hhc19mb3VuZF9tYXRjaDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbGl0ZXJhbCgpCi17Ci0gICB1bnNpZ25lZCBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfbGl0ZXJhbCo+KHBzdGF0ZSktPmxlbmd0aDsKLSAgIGNvbnN0IGNoYXJfdHlwZSogd2hhdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgcmVfbGl0ZXJhbCo+KHBzdGF0ZSkgKyAxKTsKLSAgIC8vCi0gICAvLyBjb21wYXJlIHN0cmluZyB3aXRoIHdoYXQgd2Ugc3RvcmVkIGluCi0gICAvLyBvdXIgcmVjb3JkczoKLSAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW47ICsraSwgKytwb3NpdGlvbikKLSAgIHsKLSAgICAgIGlmKChwb3NpdGlvbiA9PSBsYXN0KSB8fCAodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpICE9IHdoYXRbaV0pKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc3RhcnRfbGluZSgpCi17Ci0gICBpZihwb3NpdGlvbiA9PSBiYWNrc3RvcCkKLSAgIHsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcHJldl9hdmFpbCkgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2JvbCkgPT0gMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9zaW5nbGVfbGluZSkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgLy8gY2hlY2sgdGhlIHByZXZpb3VzIHZhbHVlIGNoYXJhY3RlcjoKLSAgIEJpZGlJdGVyYXRvciB0KHBvc2l0aW9uKTsKLSAgIC0tdDsKLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICBpZihpc19zZXBhcmF0b3IoKnQpICYmICEoKCp0ID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xyJykpICYmICgqcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXG4nKSkpICkKLSAgICAgIHsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlIGlmKGlzX3NlcGFyYXRvcigqdCkpCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRfbGluZSgpCi17Ci0gICBpZihwb3NpdGlvbiAhPSBsYXN0KQotICAgewotICAgICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX3NpbmdsZV9saW5lKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgLy8gd2UncmUgbm90IHlldCBhdCB0aGUgZW5kIHNvICpmaXJzdCBpcyBhbHdheXMgdmFsaWQ6Ci0gICAgICBpZihpc19zZXBhcmF0b3IoKnBvc2l0aW9uKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKChwb3NpdGlvbiAhPSBiYWNrc3RvcCkgfHwgKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wcmV2X2F2YWlsKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGNoZWNrIHRoYXQgd2UncmUgbm90IGluIHRoZSBtaWRkbGUgb2YgXHJcbiBzZXF1ZW5jZQotICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIHQocG9zaXRpb24pOwotICAgICAgICAgICAgLS10OwotICAgICAgICAgICAgaWYoKCp0ID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xyJykpICYmICgqcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXG4nKSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgfQotICAgZWxzZSBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9lb2wpID09IDApCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93aWxkKCkKLXsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpIAotICAgICAgcmV0dXJuIGZhbHNlOwotICAgaWYoaXNfc2VwYXJhdG9yKCpwb3NpdGlvbikgJiYgKChtYXRjaF9hbnlfbWFzayAmIHN0YXRpY19jYXN0PGNvbnN0IHJlX2RvdCo+KHBzdGF0ZSktPm1hc2spID09IDApKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgaWYoKCpwb3NpdGlvbiA9PSBjaGFyX3R5cGUoMCkpICYmIChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2RvdF9udWxsKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgKytwb3NpdGlvbjsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX2JvdW5kYXJ5KCkKLXsKLSAgIGJvb2wgYjsgLy8gaW5kY2F0ZXMgd2hldGhlciBuZXh0IGNoYXJhY3RlciBpcyBhIHdvcmQgY2hhcmFjdGVyCi0gICBpZihwb3NpdGlvbiAhPSBsYXN0KQotICAgewotICAgICAgLy8gcHJldiBhbmQgdGhpcyBjaGFyYWN0ZXIgbXVzdCBiZSBvcHBvc2l0ZXM6Ci0gICAjaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUpICYmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA9PSAyKSAmJiAoX19HTlVDX01JTk9SX18gPCA5NSkKLSAgICAgIGIgPSB0cmFpdHM6OmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzayk7Ci0gICAjZWxzZQotICAgICAgYiA9IHRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzayk7Ci0gICAjZW5kaWYKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIGIgPSAobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9lb3cpID8gdHJ1ZSA6IGZhbHNlOwotICAgfQotICAgaWYoKHBvc2l0aW9uID09IGJhY2tzdG9wKSAmJiAoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wcmV2X2F2YWlsKSA9PSAwKSkKLSAgIHsKLSAgICAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfYm93KQotICAgICAgICAgYiBePSB0cnVlOwotICAgICAgZWxzZQotICAgICAgICAgYiBePSBmYWxzZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC0tcG9zaXRpb247Ci0gICAgICBiIF49IHRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzayk7Ci0gICAgICArK3Bvc2l0aW9uOwotICAgfQotICAgaWYoYikKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7IC8vIG5vIG1hdGNoIGlmIHdlIGdldCB0byBoZXJlLi4uCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dpdGhpbl93b3JkKCkKLXsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAvLyBib3RoIHByZXYgYW5kIHRoaXMgY2hhcmFjdGVyIG11c3QgYmUgbV93b3JkX21hc2s6Ci0gICBib29sIHByZXYgPSB0cmFpdHNfaW5zdC5pc2N0eXBlKCpwb3NpdGlvbiwgbV93b3JkX21hc2spOwotICAgewotICAgICAgYm9vbCBiOwotICAgICAgaWYoKHBvc2l0aW9uID09IGJhY2tzdG9wKSAmJiAoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wcmV2X2F2YWlsKSA9PSAwKSkgCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAtLXBvc2l0aW9uOwotICAgICAgICAgYiA9IHRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzayk7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgaWYoYiA9PSBwcmV2KQotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd29yZF9zdGFydCgpCi17Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgcmV0dXJuIGZhbHNlOyAvLyBjYW4ndCBiZSBzdGFydGluZyBhIHdvcmQgaWYgd2UncmUgYWxyZWFkeSBhdCB0aGUgZW5kIG9mIGlucHV0Ci0gICBpZighdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKSkKLSAgICAgIHJldHVybiBmYWxzZTsgLy8gbmV4dCBjaGFyYWN0ZXIgaXNuJ3QgYSB3b3JkIGNoYXJhY3RlcgotICAgaWYoKHBvc2l0aW9uID09IGJhY2tzdG9wKSAmJiAoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wcmV2X2F2YWlsKSA9PSAwKSkKLSAgIHsKLSAgICAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfYm93KQotICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBubyBwcmV2aW91cyBpbnB1dAotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gb3RoZXJ3aXNlIGluc2lkZSBidWZmZXI6Ci0gICAgICBCaWRpSXRlcmF0b3IgdChwb3NpdGlvbik7Ci0gICAgICAtLXQ7Ci0gICAgICBpZih0cmFpdHNfaW5zdC5pc2N0eXBlKCp0LCBtX3dvcmRfbWFzaykpCi0gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHByZXZpb3VzIGNoYXJhY3RlciBub3Qgbm9uLXdvcmQKLSAgIH0KLSAgIC8vIE9LIHdlIGhhdmUgYSBtYXRjaDoKLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfZW5kKCkKLXsKLSAgIGlmKChwb3NpdGlvbiA9PSBiYWNrc3RvcCkgJiYgKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcHJldl9hdmFpbCkgPT0gMCkpCi0gICAgICByZXR1cm4gZmFsc2U7ICAvLyBzdGFydCBvZiBidWZmZXIgY2FuJ3QgYmUgZW5kIG9mIHdvcmQKLSAgIEJpZGlJdGVyYXRvciB0KHBvc2l0aW9uKTsKLSAgIC0tdDsKLSAgIGlmKHRyYWl0c19pbnN0LmlzY3R5cGUoKnQsIG1fd29yZF9tYXNrKSA9PSBmYWxzZSkKLSAgICAgIHJldHVybiBmYWxzZTsgIC8vIHByZXZpb3VzIGNoYXJhY3RlciB3YXNuJ3QgYSB3b3JkIGNoYXJhY3RlcgotCi0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9lb3cpCi0gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGVuZCBvZiBidWZmZXIgYnV0IG5vdCBlbmQgb2Ygd29yZAotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gb3RoZXJ3aXNlIGluc2lkZSBidWZmZXI6Ci0gICAgICBpZih0cmFpdHNfaW5zdC5pc2N0eXBlKCpwb3NpdGlvbiwgbV93b3JkX21hc2spKQotICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBuZXh0IGNoYXJhY3RlciBpcyBhIHdvcmQgY2hhcmFjdGVyCi0gICB9Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOyAgICAgIC8vIGlmIHdlIGZhbGwgdGhyb3VnaCB0byBoZXJlIHRoZW4gd2UndmUgc3VjY2VlZGVkCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2J1ZmZlcl9zdGFydCgpCi17Ci0gICBpZigocG9zaXRpb24gIT0gYmFja3N0b3ApIHx8IChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2JvYikpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAvLyBPSyBtYXRjaDoKLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2J1ZmZlcl9lbmQoKQotewotICAgaWYoKHBvc2l0aW9uICE9IGxhc3QpIHx8IChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2VvYikpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAvLyBPSyBtYXRjaDoKLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2JhY2tyZWYoKQotewotICAgLy8KLSAgIC8vIENvbXBhcmUgd2l0aCB3aGF0IHdlIHByZXZpb3VzbHkgbWF0Y2hlZC4KLSAgIC8vIE5vdGUgdGhhdCB0aGlzIHN1Y2NlZWRzIGlmIHRoZSBiYWNrcmVmIGRpZCBub3QgcGFydGlzaXBhdGUKLSAgIC8vIGluIHRoZSBtYXRjaCwgdGhpcyBpcyBpbiBsaW5lIHdpdGggRUNNQVNjcmlwdCwgYnV0IG5vdCBQZXJsCi0gICAvLyBvciBQQ1JFLgotICAgLy8KLSAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0gICBpZihpbmRleCA+PSAxMDAwMCkKLSAgIHsKLSAgICAgIG5hbWVkX3N1YmV4cHJlc3Npb25zOjpyYW5nZV90eXBlIHIgPSByZS5nZXRfZGF0YSgpLmVxdWFsX3JhbmdlKGluZGV4KTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChyLmZpcnN0ICE9IHIuc2Vjb25kKTsKLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgICBpbmRleCA9IHIuZmlyc3QtPmluZGV4OwotICAgICAgICAgKytyLmZpcnN0OwotICAgICAgfXdoaWxlKChyLmZpcnN0ICE9IHIuc2Vjb25kKSAmJiAoKCptX3ByZXN1bHQpW2luZGV4XS5tYXRjaGVkICE9IHRydWUpKTsKLSAgIH0KLQotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wZXJsKSAmJiAhKCptX3ByZXN1bHQpW2luZGV4XS5tYXRjaGVkKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICBCaWRpSXRlcmF0b3IgaSA9ICgqbV9wcmVzdWx0KVtpbmRleF0uZmlyc3Q7Ci0gICBCaWRpSXRlcmF0b3IgaiA9ICgqbV9wcmVzdWx0KVtpbmRleF0uc2Vjb25kOwotICAgd2hpbGUoaSAhPSBqKQotICAgewotICAgICAgaWYoKHBvc2l0aW9uID09IGxhc3QpIHx8ICh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgIT0gdHJhaXRzX2luc3QudHJhbnNsYXRlKCppLCBpY2FzZSkpKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgKytpOwotICAgICAgKytwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xvbmdfc2V0KCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgY2hhcl9jbGFzc190eXBlOwotICAgLy8gbGV0IHRoZSB0cmFpdHMgY2xhc3MgZG8gdGhlIHdvcms6Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgQmlkaUl0ZXJhdG9yIHQgPSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzdGF0aWNfY2FzdDxjb25zdCByZV9zZXRfbG9uZzxjaGFyX2NsYXNzX3R5cGU+Kj4ocHN0YXRlKSwgcmUuZ2V0X2RhdGEoKSwgaWNhc2UpOwotICAgaWYodCAhPSBwb3NpdGlvbikKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcG9zaXRpb24gPSB0OwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NldCgpCi17Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgaWYoc3RhdGljX2Nhc3Q8Y29uc3QgcmVfc2V0Kj4ocHN0YXRlKS0+X21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgKytwb3NpdGlvbjsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9qdW1wKCkKLXsKLSAgIHBzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUpLT5hbHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9jb21iaW5pbmcoKQotewotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKGlzX2NvbWJpbmluZyh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgKytwb3NpdGlvbjsKLSAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiBpc19jb21iaW5pbmcodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKSkKLSAgICAgICsrcG9zaXRpb247Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zb2Z0X2J1ZmZlcl9lbmQoKQotewotICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9lb2IpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBCaWRpSXRlcmF0b3IgcChwb3NpdGlvbik7Ci0gICB3aGlsZSgocCAhPSBsYXN0KSAmJiBpc19zZXBhcmF0b3IodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwLCBpY2FzZSkpKSsrcDsKLSAgIGlmKHAgIT0gbGFzdCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3Jlc3RhcnRfY29udGludWUoKQotewotICAgaWYocG9zaXRpb24gPT0gc2VhcmNoX2Jhc2UpCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9iYWNrc3RlcCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0gICBpZiggOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSkKLSAgIHsKLSAgICAgIHN0ZDo6cHRyZGlmZl90IG1heGxlbiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoYmFja3N0b3AsIHBvc2l0aW9uKTsKLSAgICAgIGlmKG1heGxlbiA8IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXgpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBzdGQ6OmFkdmFuY2UocG9zaXRpb24sIC1zdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4KTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIGludCBjID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLSAgICAgIHdoaWxlKGMtLSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHBvc2l0aW9uID09IGJhY2tzdG9wKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgLS1wb3NpdGlvbjsKLSAgICAgIH0KLSAgIH0KLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYXNzZXJ0X2JhY2tyZWYoKQotewotICAgLy8gcmV0dXJuIHRydWUgaWYgbWFya2VkIHN1Yi1leHByZXNzaW9uIE4gaGFzIGJlZW4gbWF0Y2hlZDoKLSAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0gICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgaWYoaW5kZXggPT0gOTk5OSkKLSAgIHsKLSAgICAgIC8vIE1hZ2ljIHZhbHVlIGZvciBhIChERUZJTkUpIGJsb2NrOgotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgZWxzZSBpZihpbmRleCA+IDApCi0gICB7Ci0gICAgICAvLyBIYXZlIHdlIG1hdGNoZWQgc3ViZXhwcmVzc2lvbiAiaW5kZXgiPwotICAgICAgLy8gQ2hlY2sgaWYgaW5kZXggaXMgYSBoYXNoIHZhbHVlOgotICAgICAgaWYoaW5kZXggPj0gMTAwMDApCi0gICAgICB7Ci0gICAgICAgICBuYW1lZF9zdWJleHByZXNzaW9uczo6cmFuZ2VfdHlwZSByID0gcmUuZ2V0X2RhdGEoKS5lcXVhbF9yYW5nZShpbmRleCk7Ci0gICAgICAgICB3aGlsZShyLmZpcnN0ICE9IHIuc2Vjb25kKQotICAgICAgICAgewotICAgICAgICAgICAgaWYoKCptX3ByZXN1bHQpW3IuZmlyc3QtPmluZGV4XS5tYXRjaGVkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKytyLmZpcnN0OwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgcmVzdWx0ID0gKCptX3ByZXN1bHQpW2luZGV4XS5tYXRjaGVkOwotICAgICAgfQotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBIYXZlIHdlIHJlY3Vyc2VkIGludG8gc3ViZXhwcmVzc2lvbiAiaW5kZXgiPwotICAgICAgLy8gSWYgaW5kZXggPT0gMCB0aGVuIGNoZWNrIGZvciBhbnkgcmVjdXJzaW9uIGF0IGFsbCwgb3RoZXJ3aXNlIGZvciByZWN1cnNpb24gdG8gLWluZGV4LTEuCi0gICAgICBpbnQgaWR4ID0gLWluZGV4LTE7Ci0gICAgICBpZihpZHggPj0gMTAwMDApCi0gICAgICB7Ci0gICAgICAgICBuYW1lZF9zdWJleHByZXNzaW9uczo6cmFuZ2VfdHlwZSByID0gcmUuZ2V0X2RhdGEoKS5lcXVhbF9yYW5nZShpZHgpOwotICAgICAgICAgaW50IHN0YWNrX2luZGV4ID0gcmVjdXJzaW9uX3N0YWNrLmVtcHR5KCkgPyAtMSA6IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4OwotICAgICAgICAgd2hpbGUoci5maXJzdCAhPSByLnNlY29uZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdCB8PSAoc3RhY2tfaW5kZXggPT0gci5maXJzdC0+aW5kZXgpOwotICAgICAgICAgICAgaWYocmVzdWx0KWJyZWFrOwotICAgICAgICAgICAgKytyLmZpcnN0OwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgcmVzdWx0ID0gIXJlY3Vyc2lvbl9zdGFjay5lbXB0eSgpICYmICgocmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHggPT0gaWR4KSB8fCAoaW5kZXggPT0gMCkpOwotICAgICAgfQotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF90b2dnbGVfY2FzZSgpCi17Ci0gICAvLyBjaGFuZ2Ugb3VyIGNhc2Ugc2Vuc2l0aXZpdHk6Ci0gICB0aGlzLT5pY2FzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2Nhc2UqPihwc3RhdGUpLT5pY2FzZTsKLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2FueSgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0gICBjb25zdCB1bnNpZ25lZCBjaGFyKiBfbWFwID0gcmUuZ2V0X21hcCgpOwotICAgd2hpbGUodHJ1ZSkKLSAgIHsKLSAgICAgIC8vIHNraXAgZXZlcnl0aGluZyB3ZSBjYW4ndCBtYXRjaDoKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgX21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza19hbnkpICkKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgewotICAgICAgICAgLy8gcnVuIG91dCBvZiBjaGFyYWN0ZXJzLCB0cnkgYSBudWxsIG1hdGNoIGlmIHBvc3NpYmxlOgotICAgICAgICAgaWYocmUuY2FuX2JlX251bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBtYXRjaF9wcmVmaXgoKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgLy8gbm93IHRyeSBhbmQgb2J0YWluIGEgbWF0Y2g6Ci0gICAgICBpZihtYXRjaF9wcmVmaXgoKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICsrcG9zaXRpb247Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfd29yZCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0gICAvLyBkbyBzZWFyY2ggb3B0aW1pc2VkIGZvciB3b3JkIHN0YXJ0czoKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9tYXAgPSByZS5nZXRfbWFwKCk7Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpIHx8IChwb3NpdGlvbiAhPSBiYXNlKSkKLSAgICAgIC0tcG9zaXRpb247Ci0gICBlbHNlIGlmKG1hdGNoX3ByZWZpeCgpKQotICAgICAgcmV0dXJuIHRydWU7Ci0gICBkbwotICAgewotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmIHRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzaykpCi0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmICF0cmFpdHNfaW5zdC5pc2N0eXBlKCpwb3NpdGlvbiwgbV93b3JkX21hc2spKQotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICBicmVhazsKLQotICAgICAgaWYoY2FuX3N0YXJ0KCpwb3NpdGlvbiwgX21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza19hbnkpICkKLSAgICAgIHsKLSAgICAgICAgIGlmKG1hdGNoX3ByZWZpeCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgYnJlYWs7Ci0gICB9IHdoaWxlKHRydWUpOwotICAgcmV0dXJuIGZhbHNlOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2xpbmUoKQotewotICAgLy8gZG8gc2VhcmNoIG9wdGltaXNlZCBmb3IgbGluZSBzdGFydHM6Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyKiBfbWFwID0gcmUuZ2V0X21hcCgpOwotICAgaWYobWF0Y2hfcHJlZml4KCkpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIHdoaWxlKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgIWlzX3NlcGFyYXRvcigqcG9zaXRpb24pKQotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICArK3Bvc2l0aW9uOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgIHsKLSAgICAgICAgIGlmKHJlLmNhbl9iZV9udWxsKCkgJiYgbWF0Y2hfcHJlZml4KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLQotICAgICAgaWYoIGNhbl9zdGFydCgqcG9zaXRpb24sIF9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfYW55KSApCi0gICAgICB7Ci0gICAgICAgICBpZihtYXRjaF9wcmVmaXgoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIC8vKytwb3NpdGlvbjsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2J1ZigpCi17Ci0gICBpZigocG9zaXRpb24gPT0gYmFzZSkgJiYgKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2JvYikgPT0gMCkpCi0gICAgICByZXR1cm4gbWF0Y2hfcHJlZml4KCk7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF9saXQoKQotewotI2lmIDAKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICByZXR1cm4gZmFsc2U7IC8vIGNhbid0IHBvc3NpYmx5IG1hdGNoIGlmIHdlJ3JlIGF0IHRoZSBlbmQgYWxyZWFkeQotCi0gICB1bnNpZ25lZCB0eXBlID0gKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9jb250aW51b3VzKSA/IAotICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyZWdiYXNlOjpyZXN0YXJ0X2NvbnRpbnVlKSAKLSAgICAgICAgIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyZS5nZXRfcmVzdGFydF90eXBlKCkpOwotCi0gICBjb25zdCBrbXBfaW5mbzxjaGFyX3R5cGU+KiBpbmZvID0gYWNjZXNzOjpnZXRfa21wKHJlKTsKLSAgIGludCBsZW4gPSBpbmZvLT5sZW47Ci0gICBjb25zdCBjaGFyX3R5cGUqIHggPSBpbmZvLT5wc3RyOwotICAgaW50IGogPSAwOyAKLSAgIHdoaWxlIChwb3NpdGlvbiAhPSBsYXN0KSAKLSAgIHsKLSAgICAgIHdoaWxlKChqID4gLTEpICYmICh4W2pdICE9IHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSkpIAotICAgICAgICAgaiA9IGluZm8tPmttcF9uZXh0W2pdOwotICAgICAgKytwb3NpdGlvbjsKLSAgICAgICsrajsKLSAgICAgIGlmKGogPj0gbGVuKSAKLSAgICAgIHsKLSAgICAgICAgIGlmKHR5cGUgPT0gcmVnYmFzZTo6cmVzdGFydF9maXhlZF9saXQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmFkdmFuY2UocG9zaXRpb24sIC1qKTsKLSAgICAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgICAgICAgIHN0ZDo6YWR2YW5jZShyZXN0YXJ0LCBsZW4pOwotICAgICAgICAgICAgbV9yZXN1bHQuc2V0X2ZpcnN0KHBvc2l0aW9uKTsKLSAgICAgICAgICAgIG1fcmVzdWx0LnNldF9zZWNvbmQocmVzdGFydCk7Ci0gICAgICAgICAgICBwb3NpdGlvbiA9IHJlc3RhcnQ7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgICAgICAgIHN0ZDo6YWR2YW5jZShwb3NpdGlvbiwgLWopOwotICAgICAgICAgICAgaWYobWF0Y2hfcHJlZml4KCkpCi0gICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZvcihpbnQgayA9IDA7IChyZXN0YXJ0ICE9IHBvc2l0aW9uKSAmJiAoayA8IGopOyArK2ssIC0tcmVzdGFydCkKLSAgICAgICAgICAgICAgICAgICAgIHt9IC8vIGR3YSAxMC8yMC8yMDAwIC0gd2FybmluZyBzdXBwcmVzc2lvbiBmb3IgTVdDVwotICAgICAgICAgICAgICAgaWYocmVzdGFydCAhPSBsYXN0KQotICAgICAgICAgICAgICAgICAgKytyZXN0YXJ0OwotICAgICAgICAgICAgICAgcG9zaXRpb24gPSByZXN0YXJ0OwotICAgICAgICAgICAgICAgaiA9IDA7ICAvL3dlIGNvdWxkIGRvIGJldHRlciB0aGFuIHRoaXMuLi4KLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgIH0KLSAgIH0KLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIGopCi0gICB7Ci0gICAgICAvLyB3ZSBuZWVkIHRvIGNoZWNrIGZvciBhIHBhcnRpYWwgbWF0Y2g6Ci0gICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICBzdGQ6OmFkdmFuY2UocG9zaXRpb24sIC1qKTsKLSAgICAgIHJldHVybiBtYXRjaF9wcmVmaXgoKTsKLSAgIH0KLSNlbmRpZgotICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jICBwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9ub25fcmVjdXJzaXZlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX25vbl9yZWN1cnNpdmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjg4NTZjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX25vbl9yZWN1cnNpdmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY0MiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHBlcmxfbWF0Y2hlcl9jb21tb24uY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWZpbml0aW9ucyBvZiBwZXJsX21hdGNoZXIgbWVtYmVyIGZ1bmN0aW9ucyB0aGF0IGFyZSAKLSAgKiAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byB0aGUgbm9uLXJlY3Vyc2l2ZSBpbXBsZW1lbnRhdGlvbi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9QRVJMX01BVENIRVJfTk9OX1JFQ1VSU0lWRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUEVSTF9NQVRDSEVSX05PTl9SRUNVUlNJVkVfSFBQCi0KLSNpbmNsdWRlIDxuZXc+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwMCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSB2b2lkIGlucGxhY2VfZGVzdHJveShUKiBwKQotewotICAgKHZvaWQpcDsgIC8vIHdhcm5pbmcgc3VwcHJlc3Npb24KLSAgIHAtPn5UKCk7Ci19Ci0KLXN0cnVjdCBzYXZlZF9zdGF0ZQotewotICAgdW5pb257Ci0gICAgICB1bnNpZ25lZCBpbnQgc3RhdGVfaWQ7Ci0gICAgICAvLyB0aGlzIHBhZGRpbmcgZW5zdXJlcyBjb3JyZWN0IGFsaWdubWVudCBvbiA2NC1iaXQgcGxhdGZvcm1zOgotICAgICAgc3RkOjpzaXplX3QgcGFkZGluZzE7Ci0gICAgICBzdGQ6OnB0cmRpZmZfdCBwYWRkaW5nMjsKLSAgICAgIHZvaWQqIHBhZGRpbmczOwotICAgfTsKLSAgIHNhdmVkX3N0YXRlKHVuc2lnbmVkIGkpIDogc3RhdGVfaWQoaSkge30KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdHJ1Y3Qgc2F2ZWRfbWF0Y2hlZF9wYXJlbiA6IHB1YmxpYyBzYXZlZF9zdGF0ZQotewotICAgaW50IGluZGV4OwotICAgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4gc3ViOwotICAgc2F2ZWRfbWF0Y2hlZF9wYXJlbihpbnQgaSwgY29uc3Qgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4mIHMpIDogc2F2ZWRfc3RhdGUoMSksIGluZGV4KGkpLCBzdWIocyl7fTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdHJ1Y3Qgc2F2ZWRfcG9zaXRpb24gOiBwdWJsaWMgc2F2ZWRfc3RhdGUKLXsKLSAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwc3RhdGU7Ci0gICBCaWRpSXRlcmF0b3IgcG9zaXRpb247Ci0gICBzYXZlZF9wb3NpdGlvbihjb25zdCByZV9zeW50YXhfYmFzZSogcHMsIEJpZGlJdGVyYXRvciBwb3MsIGludCBpKSA6IHNhdmVkX3N0YXRlKGkpLCBwc3RhdGUocHMpLCBwb3NpdGlvbihwb3Mpe307Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotc3RydWN0IHNhdmVkX2Fzc2VydGlvbiA6IHB1YmxpYyBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Ci17Ci0gICBib29sIHBvc2l0aXZlOwotICAgc2F2ZWRfYXNzZXJ0aW9uKGJvb2wgcCwgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzLCBCaWRpSXRlcmF0b3IgcG9zKSAKLSAgICAgIDogc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPihwcywgcG9zLCBzYXZlZF90eXBlX2Fzc2VydGlvbiksIHBvc2l0aXZlKHApe307Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotc3RydWN0IHNhdmVkX3JlcGVhdGVyIDogcHVibGljIHNhdmVkX3N0YXRlCi17Ci0gICByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+IGNvdW50OwotICAgc2F2ZWRfcmVwZWF0ZXIoaW50IGksIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4qKiBzLCBCaWRpSXRlcmF0b3Igc3RhcnQpIAotICAgICAgOiBzYXZlZF9zdGF0ZShzYXZlZF9zdGF0ZV9yZXBlYXRlcl9jb3VudCksIGNvdW50KGkscyxzdGFydCl7fQotfTsKLQotc3RydWN0IHNhdmVkX2V4dHJhX2Jsb2NrIDogcHVibGljIHNhdmVkX3N0YXRlCi17Ci0gICBzYXZlZF9zdGF0ZSAqYmFzZSwgKmVuZDsKLSAgIHNhdmVkX2V4dHJhX2Jsb2NrKHNhdmVkX3N0YXRlKiBiLCBzYXZlZF9zdGF0ZSogZSkgCi0gICAgICA6IHNhdmVkX3N0YXRlKHNhdmVkX3N0YXRlX2V4dHJhX2Jsb2NrKSwgYmFzZShiKSwgZW5kKGUpIHt9Ci19OwotCi1zdHJ1Y3Qgc2F2ZV9zdGF0ZV9pbml0Ci17Ci0gICBzYXZlZF9zdGF0ZSoqIHN0YWNrOwotICAgc2F2ZV9zdGF0ZV9pbml0KHNhdmVkX3N0YXRlKiogYmFzZSwgc2F2ZWRfc3RhdGUqKiBlbmQpCi0gICAgICA6IHN0YWNrKGJhc2UpCi0gICB7Ci0gICAgICAqYmFzZSA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4oZ2V0X21lbV9ibG9jaygpKTsKLSAgICAgICplbmQgPSByZWludGVycHJldF9jYXN0PHNhdmVkX3N0YXRlKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oKmJhc2UpK05ETkJPT1NUX1JFR0VYX0JMT0NLU0laRSk7Ci0gICAgICAtLSgqZW5kKTsKLSAgICAgICh2b2lkKSBuZXcgKCplbmQpc2F2ZWRfc3RhdGUoMCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoKmVuZCA+ICpiYXNlKTsKLSAgIH0KLSAgIH5zYXZlX3N0YXRlX2luaXQoKQotICAgewotICAgICAgcHV0X21lbV9ibG9jaygqc3RhY2spOwotICAgICAgKnN0YWNrID0gMDsKLSAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdHJ1Y3Qgc2F2ZWRfc2luZ2xlX3JlcGVhdCA6IHB1YmxpYyBzYXZlZF9zdGF0ZQotewotICAgc3RkOjpzaXplX3QgY291bnQ7Ci0gICBjb25zdCByZV9yZXBlYXQqIHJlcDsKLSAgIEJpZGlJdGVyYXRvciBsYXN0X3Bvc2l0aW9uOwotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdChzdGQ6OnNpemVfdCBjLCBjb25zdCByZV9yZXBlYXQqIHIsIEJpZGlJdGVyYXRvciBscCwgaW50IGFyZ19pZCkgCi0gICAgICA6IHNhdmVkX3N0YXRlKGFyZ19pZCksIGNvdW50KGMpLCByZXAociksIGxhc3RfcG9zaXRpb24obHApe30KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHRzPgotc3RydWN0IHNhdmVkX3JlY3Vyc2lvbiA6IHB1YmxpYyBzYXZlZF9zdGF0ZQotewotICAgc2F2ZWRfcmVjdXJzaW9uKGludCBpZHgsIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwLCBSZXN1bHRzKiBwcikgCi0gICAgICA6IHNhdmVkX3N0YXRlKDE0KSwgcmVjdXJzaW9uX2lkKGlkeCksIHByZXR1cm5fYWRkcmVzcyhwKSwgcmVzdWx0cygqcHIpCi0gICB7fQotICAgaW50IHJlY3Vyc2lvbl9pZDsKLSAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcmV0dXJuX2FkZHJlc3M7Ci0gICBSZXN1bHRzIHJlc3VsdHM7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9hbGxfc3RhdGVzKCkKLXsKLSAgIHN0YXRpYyBtYXRjaGVyX3Byb2NfdHlwZSBjb25zdCBzX21hdGNoX3Z0YWJsZVszMF0gPSAKLSAgIHsKLSAgICAgICgmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zdGFydG1hcmspLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZW5kbWFyaywKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xpdGVyYWwsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zdGFydF9saW5lLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZW5kX2xpbmUsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93aWxkLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbWF0Y2gsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX2JvdW5kYXJ5LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd2l0aGluX3dvcmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX3N0YXJ0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd29yZF9lbmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9idWZmZXJfc3RhcnQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9idWZmZXJfZW5kLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYmFja3JlZiwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xvbmdfc2V0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc2V0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfanVtcCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2FsdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3JlcCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2NvbWJpbmluZywKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NvZnRfYnVmZmVyX2VuZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3Jlc3RhcnRfY29udGludWUsCi0gICAgICAvLyBBbHRob3VnaCB0aGlzIG5leHQgbGluZSAqc2hvdWxkKiBiZSBldmFsdWF0ZWQgYXQgY29tcGlsZSB0aW1lLCBpbiBwcmFjdGljZQotICAgICAgLy8gc29tZSBjb21waWxlcnMgKFZDKyspIGVtaXQgcnVuLXRpbWUgaW5pdGlhbGlzYXRpb24gd2hpY2ggYnJlYWtzIHRocmVhZAotICAgICAgLy8gc2FmZXR5LCBzbyB1c2UgYSBkaXNwYXRjaCBmdW5jdGlvbiBpbnN0ZWFkOgotICAgICAgLy8oOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSA/ICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfZmFzdCA6ICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfc2xvdyksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X2Rpc3BhdGNoLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfY2hhcl9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zZXRfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXRfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYmFja3N0ZXAsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9hc3NlcnRfYmFja3JlZiwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3RvZ2dsZV9jYXNlLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVjdXJzaW9uLAotICAgfTsKLQotICAgcHVzaF9yZWN1cnNpb25fc3RvcHBlcigpOwotICAgZG97Ci0gICAgICB3aGlsZShwc3RhdGUpCi0gICAgICB7Ci0gICAgICAgICBtYXRjaGVyX3Byb2NfdHlwZSBwcm9jID0gc19tYXRjaF92dGFibGVbcHN0YXRlLT50eXBlXTsKLSAgICAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICAgICBpZighKHRoaXMtPipwcm9jKSgpKQotICAgICAgICAgewotICAgICAgICAgICAgaWYoc3RhdGVfY291bnQgPiBtYXhfc3RhdGVfY291bnQpCi0gICAgICAgICAgICAgICByYWlzZV9lcnJvcih0cmFpdHNfaW5zdCwgcmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb21wbGV4aXR5KTsKLSAgICAgICAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIChwb3NpdGlvbiAhPSBzZWFyY2hfYmFzZSkpCi0gICAgICAgICAgICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgIGJvb2wgc3VjY2Vzc2Z1bF91bndpbmQgPSB1bndpbmQoZmFsc2UpOwotICAgICAgICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHNlYXJjaF9iYXNlKSkKLSAgICAgICAgICAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgaWYoZmFsc2UgPT0gc3VjY2Vzc2Z1bF91bndpbmQpCi0gICAgICAgICAgICAgICByZXR1cm4gbV9yZWN1cnNpdmVfcmVzdWx0OwotICAgICAgICAgfQotICAgICAgfQotICAgfXdoaWxlKHVud2luZCh0cnVlKSk7Ci0gICByZXR1cm4gbV9yZWN1cnNpdmVfcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLXZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpleHRlbmRfc3RhY2soKQotewotICAgaWYodXNlZF9ibG9ja19jb3VudCkKLSAgIHsKLSAgICAgIC0tdXNlZF9ibG9ja19jb3VudDsKLSAgICAgIHNhdmVkX3N0YXRlKiBzdGFja19iYXNlOwotICAgICAgc2F2ZWRfc3RhdGUqIGJhY2t1cF9zdGF0ZTsKLSAgICAgIHN0YWNrX2Jhc2UgPSBzdGF0aWNfY2FzdDxzYXZlZF9zdGF0ZSo+KGdldF9tZW1fYmxvY2soKSk7Ci0gICAgICBiYWNrdXBfc3RhdGUgPSByZWludGVycHJldF9jYXN0PHNhdmVkX3N0YXRlKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc3RhY2tfYmFzZSkrTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFKTsKLSAgICAgIHNhdmVkX2V4dHJhX2Jsb2NrKiBibG9jayA9IHN0YXRpY19jYXN0PHNhdmVkX2V4dHJhX2Jsb2NrKj4oYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tYmxvY2s7Ci0gICAgICAodm9pZCkgbmV3IChibG9jaykgc2F2ZWRfZXh0cmFfYmxvY2sobV9zdGFja19iYXNlLCBtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICBtX3N0YWNrX2Jhc2UgPSBzdGFja19iYXNlOwotICAgICAgbV9iYWNrdXBfc3RhdGUgPSBibG9jazsKLSAgIH0KLSAgIGVsc2UKLSAgICAgIHJhaXNlX2Vycm9yKHRyYWl0c19pbnN0LCByZWdleF9jb25zdGFudHM6OmVycm9yX3N0YWNrKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfbWF0Y2hlZF9wYXJlbihpbnQgaW5kZXgsIGNvbnN0IHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+JiBzdWIpCi17Ci0gICAvL05ETkJPT1NUX0FTU0VSVChpbmRleCk7Ci0gICBzYXZlZF9tYXRjaGVkX3BhcmVuPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX21hdGNoZWRfcGFyZW48QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9tYXRjaGVkX3BhcmVuPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9tYXRjaGVkX3BhcmVuPEJpZGlJdGVyYXRvcj4oaW5kZXgsIHN1Yik7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfcmVjdXJzaW9uX3N0b3BwZXIoKQotewotICAgc2F2ZWRfc3RhdGUqIHBtcCA9IG1fYmFja3VwX3N0YXRlOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IG1fYmFja3VwX3N0YXRlOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfc3RhdGUoc2F2ZWRfdHlwZV9yZWN1cnNlKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9hc3NlcnRpb24oY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzLCBib29sIHBvc2l0aXZlKQotewotICAgc2F2ZWRfYXNzZXJ0aW9uPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX2Fzc2VydGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX2Fzc2VydGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfYXNzZXJ0aW9uPEJpZGlJdGVyYXRvcj4ocG9zaXRpdmUsIHBzLCBwb3NpdGlvbik7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfYWx0KGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcykKLXsKLSAgIHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4ocHMsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9hbHQpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX25vbl9ncmVlZHlfcmVwZWF0KGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcykKLXsKLSAgIHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4ocHMsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9ub25fZ3JlZWR5X2xvbmdfcmVwZWF0KTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9yZXBlYXRlcl9jb3VudChpbnQgaSwgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPioqIHMpCi17Ci0gICBzYXZlZF9yZXBlYXRlcjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9yZXBlYXRlcjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9yZXBlYXRlcjxCaWRpSXRlcmF0b3I+KGksIHMsIHBvc2l0aW9uKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9zaW5nbGVfcmVwZWF0KHN0ZDo6c2l6ZV90IGMsIGNvbnN0IHJlX3JlcGVhdCogciwgQmlkaUl0ZXJhdG9yIGxhc3RfcG9zaXRpb24sIGludCBzdGF0ZV9pZCkKLXsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPihjLCByLCBsYXN0X3Bvc2l0aW9uLCBzdGF0ZV9pZCk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfcmVjdXJzaW9uKGludCBpZHgsIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwLCByZXN1bHRzX3R5cGUqIHByZXN1bHRzKQotewotICAgc2F2ZWRfcmVjdXJzaW9uPHJlc3VsdHNfdHlwZT4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3JlY3Vyc2lvbjxyZXN1bHRzX3R5cGU+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3JlY3Vyc2lvbjxyZXN1bHRzX3R5cGU+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfcmVjdXJzaW9uPHJlc3VsdHNfdHlwZT4oaWR4LCBwLCBwcmVzdWx0cyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc3RhcnRtYXJrKCkKLXsKLSAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0gICBpY2FzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aWNhc2U7Ci0gICBzd2l0Y2goaW5kZXgpCi0gICB7Ci0gICBjYXNlIDA6Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAtMToKLSAgIGNhc2UgLTI6Ci0gICAgICB7Ci0gICAgICAgICAvLyBmb3J3YXJkIGxvb2thaGVhZCBhc3NlcnQ6Ci0gICAgICAgICBjb25zdCByZV9zeW50YXhfYmFzZSogbmV4dF9wc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlLT5uZXh0LnApLT5hbHQucC0+bmV4dC5wOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgIHB1c2hfYXNzZXJ0aW9uKG5leHRfcHN0YXRlLCBpbmRleCA9PSAtMSk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2UgLTM6Ci0gICAgICB7Ci0gICAgICAgICAvLyBpbmRlcGVuZGVudCBzdWItZXhwcmVzc2lvbiwgY3VycmVudGx5IHRoaXMgaXMgYWx3YXlzIHJlY3Vyc2l2ZToKLSAgICAgICAgIGJvb2wgb2xkX2luZGVwZW5kZW50ID0gbV9pbmRlcGVuZGVudDsKLSAgICAgICAgIG1faW5kZXBlbmRlbnQgPSB0cnVlOwotICAgICAgICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIG5leHRfcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZS0+bmV4dC5wKS0+YWx0LnAtPm5leHQucDsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICBib29sIHIgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICAgICBwc3RhdGUgPSBuZXh0X3BzdGF0ZTsKLSAgICAgICAgIG1faW5kZXBlbmRlbnQgPSBvbGRfaW5kZXBlbmRlbnQ7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgICAgICAgIGlmKHIgJiYgKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9leHRyYSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gb3VyIGNhcHR1cmVzIGhhdmUgYmVlbiBzdG9yZWQgaW4gKm1fcHJlc3VsdAotICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB1bnBhY2sgdGhlbSwgYW5kIGluc2VydCB0aGVtCi0gICAgICAgICAgICAvLyBiYWNrIGluIHRoZSByaWdodCBvcmRlciB3aGVuIHdlIHVud2luZCB0aGUgc3RhY2s6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4gdGVtcF9tYXRjaCgqbV9wcmVzdWx0KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGk7Ci0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCB0ZW1wX21hdGNoLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgKCptX3ByZXN1bHQpW2ldLmdldF9jYXB0dXJlcygpLmNsZWFyKCk7Ci0gICAgICAgICAgICAvLyBtYXRjaCBldmVyeXRoaW5nIGVsc2U6Ci0gICAgICAgICAgICByID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgICAgLy8gbm93IHBsYWNlIHRoZSBzdG9yZWQgY2FwdHVyZXMgYmFjazoKLSAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHRlbXBfbWF0Y2guc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+OjpjYXB0dXJlX3NlcXVlbmNlX3R5cGUgc2VxOwotICAgICAgICAgICAgICAgc2VxJiBzMSA9ICgqbV9wcmVzdWx0KVtpXS5nZXRfY2FwdHVyZXMoKTsKLSAgICAgICAgICAgICAgIGNvbnN0IHNlcSYgczIgPSB0ZW1wX21hdGNoW2ldLmNhcHR1cmVzKCk7Ci0gICAgICAgICAgICAgICBzMS5pbnNlcnQoCi0gICAgICAgICAgICAgICAgICBzMS5lbmQoKSwgCi0gICAgICAgICAgICAgICAgICBzMi5iZWdpbigpLCAKLSAgICAgICAgICAgICAgICAgIHMyLmVuZCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICB9Ci0gICBjYXNlIC00OgotICAgICAgewotICAgICAgLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbjoKLSAgICAgIGNvbnN0IHJlX2FsdCogYWx0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYWx0Kj4ocHN0YXRlLT5uZXh0LnApOwotICAgICAgTkROQk9PU1RfQVNTRVJUKGFsdC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9hbHQpOwotICAgICAgcHN0YXRlID0gYWx0LT5uZXh0LnA7Ci0gICAgICBpZihwc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYpCi0gICAgICB7Ci0gICAgICAgICBpZighbWF0Y2hfYXNzZXJ0X2JhY2tyZWYoKSkKLSAgICAgICAgICAgIHBzdGF0ZSA9IGFsdC0+YWx0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC8vIHplcm8gd2lkdGggYXNzZXJ0aW9uLCBoYXZlIHRvIG1hdGNoIHRoaXMgcmVjdXJzaXZlbHk6Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQocHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyayk7Ci0gICAgICAgICBib29sIG5lZ2F0ZWQgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4ID09IC0yOwotICAgICAgICAgQmlkaUl0ZXJhdG9yIHNhdmVkX3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICBjb25zdCByZV9zeW50YXhfYmFzZSogbmV4dF9wc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlLT5uZXh0LnApLT5hbHQucC0+bmV4dC5wOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgIGJvb2wgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIHBvc2l0aW9uID0gc2F2ZWRfcG9zaXRpb247Ci0gICAgICAgICBpZihuZWdhdGVkKQotICAgICAgICAgICAgciA9ICFyOwotICAgICAgICAgaWYocikKLSAgICAgICAgICAgIHBzdGF0ZSA9IG5leHRfcHN0YXRlOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgcHN0YXRlID0gYWx0LT5hbHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgfQotICAgY2FzZSAtNToKLSAgICAgIHsKLSAgICAgICAgIHB1c2hfbWF0Y2hlZF9wYXJlbigwLCAoKm1fcHJlc3VsdClbMF0pOwotICAgICAgICAgbV9wcmVzdWx0LT5zZXRfZmlyc3QocG9zaXRpb24sIDAsIHRydWUpOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGRlZmF1bHQ6Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoaW5kZXggPiAwKTsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm9zdWJzKSA9PSAwKQotICAgICAgewotICAgICAgICAgcHVzaF9tYXRjaGVkX3BhcmVuKGluZGV4LCAoKm1fcHJlc3VsdClbaW5kZXhdKTsKLSAgICAgICAgIG1fcHJlc3VsdC0+c2V0X2ZpcnN0KHBvc2l0aW9uLCBpbmRleCk7Ci0gICAgICB9Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIGJyZWFrOwotICAgfQotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2FsdCgpCi17Ci0gICBib29sIHRha2VfZmlyc3QsIHRha2Vfc2Vjb25kOwotICAgY29uc3QgcmVfYWx0KiBqbXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9hbHQqPihwc3RhdGUpOwotCi0gICAvLyBmaW5kIG91dCB3aGljaCBvZiB0aGVzZSB0d28gYWx0ZXJuYXRpdmVzIHdlIG5lZWQgdG8gdGFrZToKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICB0YWtlX2ZpcnN0ID0gam1wLT5jYW5fYmVfbnVsbCAmIG1hc2tfdGFrZTsKLSAgICAgIHRha2Vfc2Vjb25kID0gam1wLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSBjYW5fc3RhcnQoKnBvc2l0aW9uLCBqbXAtPl9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfdGFrZSk7Ci0gICAgICB0YWtlX3NlY29uZCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIGptcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza19za2lwKTsKLSAgfQotCi0gICBpZih0YWtlX2ZpcnN0KQotICAgewotICAgICAgLy8gd2UgY2FuIHRha2UgdGhlIGZpcnN0IGFsdGVybmF0aXZlLAotICAgICAgLy8gc2VlIGlmIHdlIG5lZWQgdG8gcHVzaCBuZXh0IGFsdGVybmF0aXZlOgotICAgICAgaWYodGFrZV9zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICBwdXNoX2FsdChqbXAtPmFsdC5wKTsKLSAgICAgIH0KLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZih0YWtlX3NlY29uZCkKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IGptcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsgIC8vIG5laXRoZXIgb3B0aW9uIGlzIHBvc3NpYmxlCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3JlcCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3IDQyNDQpCi0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2IC13LTgwMDQKLSNlbmRpZgotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotCi0gICAvLyBmaW5kIG91dCB3aGljaCBvZiB0aGVzZSB0d28gYWx0ZXJuYXRpdmVzIHdlIG5lZWQgdG8gdGFrZToKLSAgIGJvb2wgdGFrZV9maXJzdCwgdGFrZV9zZWNvbmQ7Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgdGFrZV9maXJzdCA9IHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3Rha2U7Ci0gICAgICB0YWtlX3NlY29uZCA9IHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXA7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICB0YWtlX2ZpcnN0ID0gY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCAodW5zaWduZWQgY2hhciltYXNrX3Rha2UpOwotICAgICAgdGFrZV9zZWNvbmQgPSBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfc2tpcCk7Ci0gICB9Ci0KLSAgIGlmKChtX2JhY2t1cF9zdGF0ZS0+c3RhdGVfaWQgIT0gc2F2ZWRfc3RhdGVfcmVwZWF0ZXJfY291bnQpIAotICAgICAgfHwgKHN0YXRpY19jYXN0PHNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSktPmNvdW50LmdldF9pZCgpICE9IHJlcC0+c3RhdGVfaWQpCi0gICAgICB8fCAobmV4dF9jb3VudC0+Z2V0X2lkKCkgIT0gcmVwLT5zdGF0ZV9pZCkpCi0gICB7Ci0gICAgICAvLyB3ZSdyZSBtb3ZpbmcgdG8gYSBkaWZmZXJlbnQgcmVwZWF0IGZyb20gdGhlIGxhc3QKLSAgICAgIC8vIG9uZSwgc28gc2V0IHVwIGEgY291bnRlciBvYmplY3Q6Ci0gICAgICBwdXNoX3JlcGVhdGVyX2NvdW50KHJlcC0+c3RhdGVfaWQsICZuZXh0X2NvdW50KTsKLSAgIH0KLSAgIC8vCi0gICAvLyBJZiB3ZSd2ZSBoYWQgYXQgbGVhc3Qgb25lIHJlcGVhdCBhbHJlYWR5LCBhbmQgdGhlIGxhc3Qgb25lIAotICAgLy8gbWF0Y2hlZCB0aGUgTlVMTCBzdHJpbmcgdGhlbiBzZXQgdGhlIHJlcGVhdCBjb3VudCB0bwotICAgLy8gbWF4aW11bToKLSAgIC8vCi0gICBuZXh0X2NvdW50LT5jaGVja19udWxsX3JlcGVhdChwb3NpdGlvbiwgcmVwLT5tYXgpOwotCi0gICBpZihuZXh0X2NvdW50LT5nZXRfY291bnQoKSA8IHJlcC0+bWluKQotICAgewotICAgICAgLy8gd2UgbXVzdCB0YWtlIHRoZSByZXBlYXQ6Ci0gICAgICBpZih0YWtlX2ZpcnN0KQotICAgICAgewotICAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGNvdW50ZXI6Ci0gICAgICAgICArKygqbmV4dF9jb3VudCk7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotCi0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIC8vIHRyeSBhbmQgdGFrZSB0aGUgcmVwZWF0IGlmIHdlIGNhbjoKLSAgICAgIGlmKChuZXh0X2NvdW50LT5nZXRfY291bnQoKSA8IHJlcC0+bWF4KSAmJiB0YWtlX2ZpcnN0KQotICAgICAgewotICAgICAgICAgaWYodGFrZV9zZWNvbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBzdG9yZSBwb3NpdGlvbiBpbiBjYXNlIHdlIGZhaWw6Ci0gICAgICAgICAgICBwdXNoX2FsdChyZXAtPmFsdC5wKTsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIGluY3JlYXNlIHRoZSBjb3VudGVyOgotICAgICAgICAgKysoKm5leHRfY291bnQpOwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYodGFrZV9zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7IC8vIGNhbid0IHRha2UgYW55dGhpbmcsIGZhaWwuLi4KLSAgIH0KLSAgIGVsc2UgLy8gbm9uLWdyZWVkeQotICAgewotICAgICAgLy8gdHJ5IGFuZCBza2lwIHRoZSByZXBlYXQgaWYgd2UgY2FuOgotICAgICAgaWYodGFrZV9zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICBpZigobmV4dF9jb3VudC0+Z2V0X2NvdW50KCkgPCByZXAtPm1heCkgJiYgdGFrZV9maXJzdCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIHN0b3JlIHBvc2l0aW9uIGluIGNhc2Ugd2UgZmFpbDoKLSAgICAgICAgICAgIHB1c2hfbm9uX2dyZWVkeV9yZXBlYXQocmVwLT5uZXh0LnApOwotICAgICAgICAgfQotICAgICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgaWYoKG5leHRfY291bnQtPmdldF9jb3VudCgpIDwgcmVwLT5tYXgpICYmIHRha2VfZmlyc3QpCi0gICAgICB7Ci0gICAgICAgICAvLyBpbmNyZWFzZSB0aGUgY291bnRlcjoKLSAgICAgICAgICsrKCpuZXh0X2NvdW50KTsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9zbG93KCkKLXsKLSAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIHJlX3N5bnRheF9iYXNlKiBwc2luZ2xlID0gcmVwLT5uZXh0LnA7Ci0gICAvLyBtYXRjaCBjb21wdWxzYXJ5IHJlcGVhdHMgZmlyc3Q6Ci0gICB3aGlsZShjb3VudCA8IHJlcC0+bWluKQotICAgewotICAgICAgcHN0YXRlID0gcHNpbmdsZTsKLSAgICAgIGlmKCFtYXRjaF93aWxkKCkpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICArK2NvdW50OwotICAgfQotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBpZihncmVlZHkpCi0gICB7Ci0gICAgICAvLyByZXBlYXQgZm9yIGFzIGxvbmcgYXMgd2UgY2FuOgotICAgICAgd2hpbGUoY291bnQgPCByZXAtPm1heCkKLSAgICAgIHsKLSAgICAgICAgIHBzdGF0ZSA9IHBzaW5nbGU7Ci0gICAgICAgICBpZighbWF0Y2hfd2lsZCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgICAgLy8gcmVtZW1iZXIgd2hlcmUgd2UgZ290IHRvIGlmIHRoaXMgaXMgYSBsZWFkaW5nIHJlcGVhdDoKLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIC8vIHB1c2ggYmFja3RyYWNrIGluZm8gaWYgYXZhaWxhYmxlOgotICAgICAgaWYoY291bnQgLSByZXAtPm1pbikKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfZ3JlZWR5X3NpbmdsZV9yZXBlYXQpOwotICAgICAgLy8ganVtcCB0byBuZXh0IHN0YXRlOgotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gbm9uLWdyZWVkeSwgcHVzaCBzdGF0ZSBhbmQgcmV0dXJuIHRydWUgaWYgd2UgY2FuIHNraXA6Ci0gICAgICBpZihjb3VudCA8IHJlcC0+bWF4KQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9yZXBfc2xvd19kb3QpOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiAocG9zaXRpb24gPT0gbGFzdCkgPyAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkgOiBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCk7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfZmFzdCgpCi17Ci0gICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2RvdF9udWxsKQotICAgICAgcmV0dXJuIG1hdGNoX2RvdF9yZXBlYXRfc2xvdygpOwotICAgaWYoKHN0YXRpY19jYXN0PGNvbnN0IHJlX2RvdCo+KHBzdGF0ZS0+bmV4dC5wKS0+bWFzayAmIG1hdGNoX2FueV9tYXNrKSA9PSAwKQotICAgICAgcmV0dXJuIG1hdGNoX2RvdF9yZXBlYXRfc2xvdygpOwotCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIHVuc2lnbmVkIGNvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW4pKSk7Ci0gICBpZihyZXAtPm1pbiA+IGNvdW50KQotICAgewotICAgICAgcG9zaXRpb24gPSBsYXN0OwotICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gbm90IGVub3VnaCB0ZXh0IGxlZnQgdG8gbWF0Y2gKLSAgIH0KLSAgIHN0ZDo6YWR2YW5jZShwb3NpdGlvbiwgY291bnQpOwotCi0gICBpZihncmVlZHkpCi0gICB7Ci0gICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICAvLyBwdXNoIGJhY2t0cmFjayBpbmZvIGlmIGF2YWlsYWJsZToKLSAgICAgIGlmKGNvdW50IC0gcmVwLT5taW4pCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX2dyZWVkeV9zaW5nbGVfcmVwZWF0KTsKLSAgICAgIC8vIGp1bXAgdG8gbmV4dCBzdGF0ZToKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG5vbi1ncmVlZHksIHB1c2ggc3RhdGUgYW5kIHJldHVybiB0cnVlIGlmIHdlIGNhbiBza2lwOgotICAgICAgaWYoY291bnQgPCByZXAtPm1heCkKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfcmVwX2Zhc3RfZG90KTsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gKHBvc2l0aW9uID09IGxhc3QpID8gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApIDogY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9jaGFyX3JlcGVhdCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMDggLXctODA2NiAtdy04MDA0Ci0jZW5kaWYKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIE5ETkJPT1NUX0FTU0VSVCgxID09IHN0YXRpY19jYXN0PGNvbnN0IHJlX2xpdGVyYWwqPihyZXAtPm5leHQucCktPmxlbmd0aCk7Ci0gICBjb25zdCBjaGFyX3R5cGUgd2hhdCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KHN0YXRpY19jYXN0PGNvbnN0IHJlX2xpdGVyYWwqPihyZXAtPm5leHQucCkgKyAxKTsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gMDsKLSAgIC8vCi0gICAvLyBzdGFydCBieSB3b3JraW5nIG91dCBob3cgbXVjaCB3ZSBjYW4gc2tpcDoKLSAgIC8vCi0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIHN0ZDo6c2l6ZV90IGRlc2lyZWQgPSBncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluOwotICAgaWYoOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSkKLSAgIHsKLSAgICAgIEJpZGlJdGVyYXRvciBlbmQgPSBwb3NpdGlvbjsKLSAgICAgIHN0ZDo6YWR2YW5jZShlbmQsIChzdGQ6Om1pbikoKHN0ZDo6c2l6ZV90KTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpLCBkZXNpcmVkKSk7Ci0gICAgICBCaWRpSXRlcmF0b3Igb3JpZ2luKHBvc2l0aW9uKTsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBlbmQpICYmICh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgPT0gd2hhdCkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgY291bnQgPSAodW5zaWduZWQpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShvcmlnaW4sIHBvc2l0aW9uKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHdoaWxlKChjb3VudCA8IGRlc2lyZWQpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpID09IHdoYXQpKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICB9Ci0KLSAgIGlmKGNvdW50IDwgcmVwLT5taW4pCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIC8vIHB1c2ggYmFja3RyYWNrIGluZm8gaWYgYXZhaWxhYmxlOgotICAgICAgaWYoY291bnQgLSByZXAtPm1pbikKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfZ3JlZWR5X3NpbmdsZV9yZXBlYXQpOwotICAgICAgLy8ganVtcCB0byBuZXh0IHN0YXRlOgotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gbm9uLWdyZWVkeSwgcHVzaCBzdGF0ZSBhbmQgcmV0dXJuIHRydWUgaWYgd2UgY2FuIHNraXA6Ci0gICAgICBpZihjb3VudCA8IHJlcC0+bWF4KQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9yZXBfY2hhcik7Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIChwb3NpdGlvbiA9PSBsYXN0KSA/IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSA6IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKTsKLSAgIH0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zZXRfcmVwZWF0KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2IC13LTgwMDQKLSNlbmRpZgotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgY29uc3QgdW5zaWduZWQgY2hhciogbWFwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfc2V0Kj4ocmVwLT5uZXh0LnApLT5fbWFwOwotICAgc3RkOjpzaXplX3QgY291bnQgPSAwOwotICAgLy8KLSAgIC8vIHN0YXJ0IGJ5IHdvcmtpbmcgb3V0IGhvdyBtdWNoIHdlIGNhbiBza2lwOgotICAgLy8KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgc3RkOjpzaXplX3QgZGVzaXJlZCA9IGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW47Ci0gICBpZig6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlKQotICAgewotICAgICAgQmlkaUl0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uOwotICAgICAgc3RkOjphZHZhbmNlKGVuZCwgKHN0ZDo6bWluKSgoc3RkOjpzaXplX3QpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCksIGRlc2lyZWQpKTsKLSAgICAgIEJpZGlJdGVyYXRvciBvcmlnaW4ocG9zaXRpb24pOwotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGVuZCkgJiYgbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSldKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIH0KLSAgICAgIGNvdW50ID0gKHVuc2lnbmVkKTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2Uob3JpZ2luLCBwb3NpdGlvbik7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICB3aGlsZSgoY291bnQgPCBkZXNpcmVkKSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSldKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICB9Ci0KLSAgIGlmKGNvdW50IDwgcmVwLT5taW4pCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIC8vIHB1c2ggYmFja3RyYWNrIGluZm8gaWYgYXZhaWxhYmxlOgotICAgICAgaWYoY291bnQgLSByZXAtPm1pbikKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfZ3JlZWR5X3NpbmdsZV9yZXBlYXQpOwotICAgICAgLy8ganVtcCB0byBuZXh0IHN0YXRlOgotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gbm9uLWdyZWVkeSwgcHVzaCBzdGF0ZSBhbmQgcmV0dXJuIHRydWUgaWYgd2UgY2FuIHNraXA6Ci0gICAgICBpZihjb3VudCA8IHJlcC0+bWF4KQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9yZXBfc2hvcnRfc2V0KTsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gKHBvc2l0aW9uID09IGxhc3QpID8gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApIDogY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApOwotICAgfQotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xvbmdfc2V0X3JlcGVhdCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMDggLXctODA2NiAtdy04MDA0Ci0jZW5kaWYKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgY29uc3QgcmVfc2V0X2xvbmc8bV90eXBlPiogc2V0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfc2V0X2xvbmc8bV90eXBlPio+KHBzdGF0ZS0+bmV4dC5wKTsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gMDsKLSAgIC8vCi0gICAvLyBzdGFydCBieSB3b3JraW5nIG91dCBob3cgbXVjaCB3ZSBjYW4gc2tpcDoKLSAgIC8vCi0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIHN0ZDo6c2l6ZV90IGRlc2lyZWQgPSBncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluOwotICAgaWYoOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSkKLSAgIHsKLSAgICAgIEJpZGlJdGVyYXRvciBlbmQgPSBwb3NpdGlvbjsKLSAgICAgIHN0ZDo6YWR2YW5jZShlbmQsIChzdGQ6Om1pbikoKHN0ZDo6c2l6ZV90KTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpLCBkZXNpcmVkKSk7Ci0gICAgICBCaWRpSXRlcmF0b3Igb3JpZ2luKHBvc2l0aW9uKTsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBlbmQpICYmIChwb3NpdGlvbiAhPSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgY291bnQgPSAodW5zaWduZWQpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShvcmlnaW4sIHBvc2l0aW9uKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHdoaWxlKChjb3VudCA8IGRlc2lyZWQpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAocG9zaXRpb24gIT0gcmVfaXNfc2V0X21lbWJlcihwb3NpdGlvbiwgbGFzdCwgc2V0LCByZS5nZXRfZGF0YSgpLCBpY2FzZSkpKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICB9Ci0KLSAgIGlmKGNvdW50IDwgcmVwLT5taW4pCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIC8vIHB1c2ggYmFja3RyYWNrIGluZm8gaWYgYXZhaWxhYmxlOgotICAgICAgaWYoY291bnQgLSByZXAtPm1pbikKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfZ3JlZWR5X3NpbmdsZV9yZXBlYXQpOwotICAgICAgLy8ganVtcCB0byBuZXh0IHN0YXRlOgotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gbm9uLWdyZWVkeSwgcHVzaCBzdGF0ZSBhbmQgcmV0dXJuIHRydWUgaWYgd2UgY2FuIHNraXA6Ci0gICAgICBpZihjb3VudCA8IHJlcC0+bWF4KQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9yZXBfbG9uZ19zZXQpOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiAocG9zaXRpb24gPT0gbGFzdCkgPyAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkgOiBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCk7Ci0gICB9Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVjdXJzaW9uKCkKLXsKLSAgIE5ETkJPT1NUX0FTU0VSVChwc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfcmVjdXJzZSk7Ci0gICAvLwotICAgLy8gQmFja3VwIGNhbGwgc3RhY2s6Ci0gICAvLwotICAgcHVzaF9yZWN1cnNpb25fcG9wKCk7Ci0gICAvLwotICAgLy8gU2V0IG5ldyBjYWxsIHN0YWNrOgotICAgLy8KLSAgIGlmKHJlY3Vyc2lvbl9zdGFjay5jYXBhY2l0eSgpID09IDApCi0gICB7Ci0gICAgICByZWN1cnNpb25fc3RhY2sucmVzZXJ2ZSg1MCk7Ci0gICB9Ci0gICByZWN1cnNpb25fc3RhY2sucHVzaF9iYWNrKHJlY3Vyc2lvbl9pbmZvPHJlc3VsdHNfdHlwZT4oKSk7Ci0gICByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzcyA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzID0gKm1fcHJlc3VsdDsKLSAgIGlmKHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlY3Vyc2UqPihwc3RhdGUpLT5zdGF0ZV9pZCA+IDApCi0gICB7Ci0gICAgICBwdXNoX3JlcGVhdGVyX2NvdW50KHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlY3Vyc2UqPihwc3RhdGUpLT5zdGF0ZV9pZCwgJm5leHRfY291bnQpOwotICAgfQotICAgcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZSktPmFsdC5wOwotICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotCi0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZW5kbWFyaygpCi17Ci0gICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotICAgaWNhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmljYXNlOwotICAgaWYoaW5kZXggPiAwKQotICAgewotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3N1YnMpID09IDApCi0gICAgICB7Ci0gICAgICAgICBtX3ByZXN1bHQtPnNldF9zZWNvbmQocG9zaXRpb24sIGluZGV4KTsKLSAgICAgIH0KLSAgICAgIGlmKCFyZWN1cnNpb25fc3RhY2suZW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKGluZGV4ID09IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4KQotICAgICAgICAgewotICAgICAgICAgICAgcHN0YXRlID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3M7Ci0gICAgICAgICAgICAqbV9wcmVzdWx0ID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzOwotICAgICAgICAgICAgcHVzaF9yZWN1cnNpb24ocmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHgsIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzLCAmcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzKTsKLSAgICAgICAgICAgIHJlY3Vyc2lvbl9zdGFjay5wb3BfYmFjaygpOwotICAgICAgICAgfQotICAgICAgfQotICAgfQotICAgZWxzZSBpZigoaW5kZXggPCAwKSAmJiAoaW5kZXggIT0gLTQpKQotICAgewotICAgICAgLy8gbWF0Y2hlZCBmb3J3YXJkIGxvb2thaGVhZDoKLSAgICAgIHBzdGF0ZSA9IDA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX21hdGNoKCkKLXsKLSAgIGlmKCFyZWN1cnNpb25fc3RhY2suZW1wdHkoKSkKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgwID09IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4KTsKLSAgICAgIHBzdGF0ZSA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzOwotICAgICAgKm1fcHJlc3VsdCA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0czsKLSAgICAgIHB1c2hfcmVjdXJzaW9uKHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4LCByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzcywgJnJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0cyk7Ci0gICAgICByZWN1cnNpb25fc3RhY2sucG9wX2JhY2soKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfbnVsbCkgJiYgKHBvc2l0aW9uID09ICgqbV9wcmVzdWx0KVswXS5maXJzdCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX2FsbCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9pbml0aWFsX251bGwpICYmIChwb3NpdGlvbiA9PSBzZWFyY2hfYmFzZSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBtX3ByZXN1bHQtPnNldF9zZWNvbmQocG9zaXRpb24pOwotICAgcHN0YXRlID0gMDsKLSAgIG1faGFzX2ZvdW5kX21hdGNoID0gdHJ1ZTsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcG9zaXgpID09IG1hdGNoX3Bvc2l4KQotICAgewotICAgICAgbV9yZXN1bHQubWF5YmVfYXNzaWduKCptX3ByZXN1bHQpOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9hbnkpID09IDApCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgIGlmKG1hdGNoX2V4dHJhICYgbV9tYXRjaF9mbGFncykKLSAgIHsKLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJlc3VsdC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICBpZigoKm1fcHJlc3VsdClbaV0ubWF0Y2hlZCkKLSAgICAgICAgICAgICgoKm1fcHJlc3VsdClbaV0pLmdldF9jYXB0dXJlcygpLnB1c2hfYmFjaygoKm1fcHJlc3VsdClbaV0pOwotICAgfQotI2VuZGlmCi0gICByZXR1cm4gdHJ1ZTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotVW53aW5kIGFuZCBhc3NvY2lhdGVkIHByb2NlZWR1cmVzIGZvbGxvdywgdGhlc2UgcGVyZm9ybSB3aGF0IG5vcm1hbCBzdGFjawotdW53aW5kaW5nIGRvZXMgaW4gdGhlIHJlY3Vyc2l2ZSBpbXBsZW1lbnRhdGlvbi4KLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kKGJvb2wgaGF2ZV9tYXRjaCkKLXsKLSAgIHN0YXRpYyB1bndpbmRfcHJvY190eXBlIGNvbnN0IHNfdW53aW5kX3RhYmxlWzE4XSA9IAotICAgewotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2VuZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9wYXJlbiwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9yZWN1cnNpb25fc3RvcHBlciwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9hc3NlcnRpb24sCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfYWx0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlcGVhdGVyX2NvdW50ZXIsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZXh0cmFfYmxvY2ssCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZ3JlZWR5X3NpbmdsZV9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfc2xvd19kb3RfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2Zhc3RfZG90X3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9jaGFyX3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9zaG9ydF9zZXRfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2xvbmdfc2V0X3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9ub25fZ3JlZWR5X3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9yZWN1cnNpb24sCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcmVjdXJzaW9uX3BvcCwKLSAgIH07Ci0KLSAgIG1fcmVjdXJzaXZlX3Jlc3VsdCA9IGhhdmVfbWF0Y2g7Ci0gICB1bndpbmRfcHJvY190eXBlIHVud2luZGVyOwotICAgYm9vbCBjb250OwotICAgLy8KLSAgIC8vIGtlZXAgdW53aW5kaW5nIG91ciBzdGFjayB1bnRpbCB3ZSBoYXZlIHNvbWV0aGluZyB0byBkbzoKLSAgIC8vCi0gICBkbwotICAgewotICAgICAgdW53aW5kZXIgPSBzX3Vud2luZF90YWJsZVttX2JhY2t1cF9zdGF0ZS0+c3RhdGVfaWRdOwotICAgICAgY29udCA9ICh0aGlzLT4qdW53aW5kZXIpKG1fcmVjdXJzaXZlX3Jlc3VsdCk7Ci0gICB9d2hpbGUoY29udCk7Ci0gICAvLwotICAgLy8gcmV0dXJuIHRydWUgaWYgd2UgaGF2ZSBtb3JlIHN0YXRlcyB0byB0cnk6Ci0gICAvLwotICAgcmV0dXJuIHBzdGF0ZSA/IHRydWUgOiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2VuZChib29sKQotewotICAgcHN0YXRlID0gMDsgICAvLyBub3RoaW5nIGxlZnQgdG8gc2VhcmNoCi0gICByZXR1cm4gZmFsc2U7IC8vIGVuZCBvZiBzdGFjayBub3RoaW5nIG1vcmUgdG8gc2VhcmNoCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9wYXJlbihib29sIGhhdmVfbWF0Y2gpCi17Ci0gICBzYXZlZF9tYXRjaGVkX3BhcmVuPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX21hdGNoZWRfcGFyZW48QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC8vIHJlc3RvcmUgcHJldmlvdXMgdmFsdWVzIGlmIG5vIG1hdGNoIHdhcyBmb3VuZDoKLSAgIGlmKGhhdmVfbWF0Y2ggPT0gZmFsc2UpCi0gICB7Ci0gICAgICBtX3ByZXN1bHQtPnNldF9maXJzdChwbXAtPnN1Yi5maXJzdCwgcG1wLT5pbmRleCwgcG1wLT5pbmRleCA9PSAwKTsKLSAgICAgIG1fcHJlc3VsdC0+c2V0X3NlY29uZChwbXAtPnN1Yi5zZWNvbmQsIHBtcC0+aW5kZXgsIHBtcC0+c3ViLm1hdGNoZWQsIHBtcC0+aW5kZXggPT0gMCk7Ci0gICB9Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgIC8vCi0gICAvLyB3ZSBoYXZlIGEgbWF0Y2gsIHB1c2ggdGhlIGNhcHR1cmUgaW5mb3JtYXRpb24gb250byB0aGUgc3RhY2s6Ci0gICAvLwotICAgZWxzZSBpZihwbXAtPnN1Yi5tYXRjaGVkICYmIChtYXRjaF9leHRyYSAmIG1fbWF0Y2hfZmxhZ3MpKQotICAgICAgKCgqbV9wcmVzdWx0KVtwbXAtPmluZGV4XSkuZ2V0X2NhcHR1cmVzKCkucHVzaF9iYWNrKHBtcC0+c3ViKTsKLSNlbmRpZgotICAgLy8gdW53aW5kIHN0YWNrOgotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXArMTsKLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXApOwotICAgcmV0dXJuIHRydWU7IC8vIGtlZXAgbG9va2luZwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcmVjdXJzaW9uX3N0b3BwZXIoYm9vbCkKLXsKLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShtX2JhY2t1cF9zdGF0ZSsrKTsKLSAgIHBzdGF0ZSA9IDA7ICAgLy8gbm90aGluZyBsZWZ0IHRvIHNlYXJjaAotICAgcmV0dXJuIGZhbHNlOyAvLyBlbmQgb2Ygc3RhY2sgbm90aGluZyBtb3JlIHRvIHNlYXJjaAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfYXNzZXJ0aW9uKGJvb2wgcikKLXsKLSAgIHNhdmVkX2Fzc2VydGlvbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9hc3NlcnRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIHBzdGF0ZSA9IHBtcC0+cHN0YXRlOwotICAgcG9zaXRpb24gPSBwbXAtPnBvc2l0aW9uOwotICAgYm9vbCByZXN1bHQgPSAociA9PSBwbXAtPnBvc2l0aXZlKTsKLSAgIG1fcmVjdXJzaXZlX3Jlc3VsdCA9IHBtcC0+cG9zaXRpdmUgPyByIDogIXI7Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gIXJlc3VsdDsgLy8gcmV0dXJuIGZhbHNlIGlmIHRoZSBhc3NlcnRpb24gd2FzIG1hdGNoZWQgdG8gc3RvcCBzZWFyY2guCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9hbHQoYm9vbCByKQotewotICAgc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIGlmKCFyKQotICAgewotICAgICAgcHN0YXRlID0gcG1wLT5wc3RhdGU7Ci0gICAgICBwb3NpdGlvbiA9IHBtcC0+cG9zaXRpb247Ci0gICB9Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gcjsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9yZXBlYXRlcl9jb3VudGVyKGJvb2wpCi17Ci0gICBzYXZlZF9yZXBlYXRlcjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9yZXBlYXRlcjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCsrKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotICAgcmV0dXJuIHRydWU7IC8vIGtlZXAgbG9va2luZwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZXh0cmFfYmxvY2soYm9vbCkKLXsKLSAgIHNhdmVkX2V4dHJhX2Jsb2NrKiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9leHRyYV9ibG9jayo+KG1fYmFja3VwX3N0YXRlKTsKLSAgIHZvaWQqIGNvbmRlbW1lZCA9IG1fc3RhY2tfYmFzZTsKLSAgIG1fc3RhY2tfYmFzZSA9IHBtcC0+YmFzZTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wLT5lbmQ7Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKTsKLSAgIHB1dF9tZW1fYmxvY2soY29uZGVtbWVkKTsKLSAgIHJldHVybiB0cnVlOyAvLyBrZWVwIGxvb2tpbmcKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpCi17Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qIHAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocCsrKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2dyZWVkeV9zaW5nbGVfcmVwZWF0KGJvb2wgcikKLXsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotCi0gICAvLyBpZiB3ZSBoYXZlIGEgbWF0Y2gsIGp1c3QgZGlzY2FyZCB0aGlzIHN0YXRlOgotICAgaWYocikgCi0gICB7Ci0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHBtcC0+cmVwOwotICAgc3RkOjpzaXplX3QgY291bnQgPSBwbXAtPmNvdW50OwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+YWx0LnAgIT0gMCk7Ci0KLSAgIGNvdW50IC09IHJlcC0+bWluOwotICAgCi0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSkKLSAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotCi0gICBORE5CT09TVF9BU1NFUlQoY291bnQpOwotICAgcG9zaXRpb24gPSBwbXAtPmxhc3RfcG9zaXRpb247Ci0KLSAgIC8vIGJhY2t0cmFjayB0aWxsIHdlIGNhbiBza2lwIG91dDoKLSAgIGRvCi0gICB7Ci0gICAgICAtLXBvc2l0aW9uOwotICAgICAgLS1jb3VudDsKLSAgICAgICsrc3RhdGVfY291bnQ7Ci0gICB9d2hpbGUoY291bnQgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSk7Ci0KLSAgIC8vIGlmIHdlJ3ZlIGhpdCBiYXNlLCBkZXN0cm95IHRoaXMgc3RhdGU6Ci0gICBpZihjb3VudCA9PSAwKQotICAgewotICAgICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICAgICBpZighY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBwbXAtPmNvdW50ID0gY291bnQgKyByZXAtPm1pbjsKLSAgICAgIHBtcC0+bGFzdF9wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgfQotICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3Nsb3dfZG90X3JlcGVhdChib29sIHIpCi17Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLQotICAgLy8gaWYgd2UgaGF2ZSBhIG1hdGNoLCBqdXN0IGRpc2NhcmQgdGhpcyBzdGF0ZToKLSAgIGlmKHIpIAotICAgewotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLQotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBwbXAtPnJlcDsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gcG1wLT5jb3VudDsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfZG90X3JlcCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5hbHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF93aWxkKTsKLQotICAgTkROQk9PU1RfQVNTRVJUKGNvdW50IDwgcmVwLT5tYXgpOwotICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICBwb3NpdGlvbiA9IHBtcC0+bGFzdF9wb3NpdGlvbjsKLQotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIHdpbmQgZm9yd2FyZCB1bnRpbCB3ZSBjYW4gc2tpcCBvdXQgb2YgdGhlIHJlcGVhdDoKLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgICBpZighbWF0Y2hfd2lsZCgpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gZmFpbGVkIHJlcGVhdCBtYXRjaCwgZGlzY2FyZCB0aGlzIHN0YXRlIGFuZCBsb29rIGZvciBhbm90aGVyOgotICAgICAgICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICArK3N0YXRlX2NvdW50OwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICB9d2hpbGUoKGNvdW50IDwgcmVwLT5tYXgpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKTsKLSAgIH0gICAKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOiAKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHNlYXJjaF9iYXNlKSkKLSAgICAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotICAgICAgaWYoMCA9PSAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UgaWYoY291bnQgPT0gcmVwLT5tYXgpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOiAKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgaWYoIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgcG1wLT5jb3VudCA9IGNvdW50OwotICAgICAgcG1wLT5sYXN0X3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICB9Ci0gICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZmFzdF9kb3RfcmVwZWF0KGJvb2wgcikKLXsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotCi0gICAvLyBpZiB3ZSBoYXZlIGEgbWF0Y2gsIGp1c3QgZGlzY2FyZCB0aGlzIHN0YXRlOgotICAgaWYocikgCi0gICB7Ci0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHBtcC0+cmVwOwotICAgc3RkOjpzaXplX3QgY291bnQgPSBwbXAtPmNvdW50OwotCi0gICBORE5CT09TVF9BU1NFUlQoY291bnQgPCByZXAtPm1heCk7Ci0gICBwb3NpdGlvbiA9IHBtcC0+bGFzdF9wb3NpdGlvbjsKLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0KLSAgICAgIC8vIHdpbmQgZm9yd2FyZCB1bnRpbCB3ZSBjYW4gc2tpcCBvdXQgb2YgdGhlIHJlcGVhdDoKLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICB9d2hpbGUoKGNvdW50IDwgcmVwLT5tYXgpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKTsKLSAgIH0KLQotICAgLy8gcmVtZW1iZXIgd2hlcmUgd2UgZ290IHRvIGlmIHRoaXMgaXMgYSBsZWFkaW5nIHJlcGVhdDoKLSAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOiAKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHNlYXJjaF9iYXNlKSkKLSAgICAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotICAgICAgaWYoMCA9PSAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UgaWYoY291bnQgPT0gcmVwLT5tYXgpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOiAKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgaWYoIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgcG1wLT5jb3VudCA9IGNvdW50OwotICAgICAgcG1wLT5sYXN0X3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICB9Ci0gICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfY2hhcl9yZXBlYXQoYm9vbCByKQotewotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0KLSAgIC8vIGlmIHdlIGhhdmUgYSBtYXRjaCwganVzdCBkaXNjYXJkIHRoaXMgc3RhdGU6Ci0gICBpZihyKSAKLSAgIHsKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gcG1wLT5yZXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IHBtcC0+Y291bnQ7Ci0gICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgIGNvbnN0IGNoYXJfdHlwZSB3aGF0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgcmVfbGl0ZXJhbCo+KHBzdGF0ZSkgKyAxKTsKLSAgIHBvc2l0aW9uID0gcG1wLT5sYXN0X3Bvc2l0aW9uOwotCi0gICBORE5CT09TVF9BU1NFUlQocmVwLT50eXBlID09IHN5bnRheF9lbGVtZW50X2NoYXJfcmVwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPmFsdC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wLT50eXBlID09IHN5bnRheF9lbGVtZW50X2xpdGVyYWwpOwotICAgTkROQk9PU1RfQVNTRVJUKGNvdW50IDwgcmVwLT5tYXgpOwotCi0gICBpZihwb3NpdGlvbiAhPSBsYXN0KQotICAgewotICAgICAgLy8gd2luZCBmb3J3YXJkIHVudGlsIHdlIGNhbiBza2lwIG91dCBvZiB0aGUgcmVwZWF0OgotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgIGlmKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSAhPSB3aGF0KQotICAgICAgICAgewotICAgICAgICAgICAgLy8gZmFpbGVkIHJlcGVhdCBtYXRjaCwgZGlzY2FyZCB0aGlzIHN0YXRlIGFuZCBsb29rIGZvciBhbm90aGVyOgotICAgICAgICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICArKyBwb3NpdGlvbjsKLSAgICAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgIH13aGlsZSgoY291bnQgPCByZXAtPm1heCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpOwotICAgfSAgIAotICAgLy8gcmVtZW1iZXIgd2hlcmUgd2UgZ290IHRvIGlmIHRoaXMgaXMgYSBsZWFkaW5nIHJlcGVhdDoKLSAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOiAKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHNlYXJjaF9iYXNlKSkKLSAgICAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotICAgICAgaWYoMCA9PSAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UgaWYoY291bnQgPT0gcmVwLT5tYXgpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOiAKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgaWYoIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgcG1wLT5jb3VudCA9IGNvdW50OwotICAgICAgcG1wLT5sYXN0X3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICB9Ci0gICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfc2hvcnRfc2V0X3JlcGVhdChib29sIHIpCi17Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLQotICAgLy8gaWYgd2UgaGF2ZSBhIG1hdGNoLCBqdXN0IGRpc2NhcmQgdGhpcyBzdGF0ZToKLSAgIGlmKHIpIAotICAgewotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLQotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBwbXAtPnJlcDsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gcG1wLT5jb3VudDsKLSAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgY29uc3QgdW5zaWduZWQgY2hhciogbWFwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfc2V0Kj4ocmVwLT5uZXh0LnApLT5fbWFwOwotICAgcG9zaXRpb24gPSBwbXAtPmxhc3RfcG9zaXRpb247Ci0KLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5hbHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zZXQpOwotICAgTkROQk9PU1RfQVNTRVJUKGNvdW50IDwgcmVwLT5tYXgpOwotICAgCi0gICBpZihwb3NpdGlvbiAhPSBsYXN0KQotICAgewotICAgICAgLy8gd2luZCBmb3J3YXJkIHVudGlsIHdlIGNhbiBza2lwIG91dCBvZiB0aGUgcmVwZWF0OgotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgIGlmKCFtYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBmYWlsZWQgcmVwZWF0IG1hdGNoLCBkaXNjYXJkIHRoaXMgc3RhdGUgYW5kIGxvb2sgZm9yIGFub3RoZXI6Ci0gICAgICAgICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICsrIHBvc2l0aW9uOwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgfXdoaWxlKChjb3VudCA8IHJlcC0+bWF4KSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSk7Ci0gICB9ICAgCi0gICAvLyByZW1lbWJlciB3aGVyZSB3ZSBnb3QgdG8gaWYgdGhpcyBpcyBhIGxlYWRpbmcgcmVwZWF0OgotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICBpZigwID09IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZSBpZihjb3VudCA9PSByZXAtPm1heCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZighY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBwbXAtPmNvdW50ID0gY291bnQ7Ci0gICAgICBwbXAtPmxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9sb25nX3NldF9yZXBlYXQoYm9vbCByKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLQotICAgLy8gaWYgd2UgaGF2ZSBhIG1hdGNoLCBqdXN0IGRpc2NhcmQgdGhpcyBzdGF0ZToKLSAgIGlmKHIpCi0gICB7Ci0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHBtcC0+cmVwOwotICAgc3RkOjpzaXplX3QgY291bnQgPSBwbXAtPmNvdW50OwotICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICBjb25zdCByZV9zZXRfbG9uZzxtX3R5cGU+KiBzZXQgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9zZXRfbG9uZzxtX3R5cGU+Kj4ocHN0YXRlKTsKLSAgIHBvc2l0aW9uID0gcG1wLT5sYXN0X3Bvc2l0aW9uOwotCi0gICBORE5CT09TVF9BU1NFUlQocmVwLT50eXBlID09IHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5hbHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9sb25nX3NldCk7Ci0gICBORE5CT09TVF9BU1NFUlQoY291bnQgPCByZXAtPm1heCk7Ci0KLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyB3aW5kIGZvcndhcmQgdW50aWwgd2UgY2FuIHNraXAgb3V0IG9mIHRoZSByZXBlYXQ6Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgaWYocG9zaXRpb24gPT0gcmVfaXNfc2V0X21lbWJlcihwb3NpdGlvbiwgbGFzdCwgc2V0LCByZS5nZXRfZGF0YSgpLCBpY2FzZSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBmYWlsZWQgcmVwZWF0IG1hdGNoLCBkaXNjYXJkIHRoaXMgc3RhdGUgYW5kIGxvb2sgZm9yIGFub3RoZXI6Ci0gICAgICAgICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICArK3N0YXRlX2NvdW50OwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICB9d2hpbGUoKGNvdW50IDwgcmVwLT5tYXgpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKTsKLSAgIH0gICAKLSAgIC8vIHJlbWVtYmVyIHdoZXJlIHdlIGdvdCB0byBpZiB0aGlzIGlzIGEgbGVhZGluZyByZXBlYXQ6Ci0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZToKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHNlYXJjaF9iYXNlKSkKLSAgICAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotICAgICAgaWYoMCA9PSAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UgaWYoY291bnQgPT0gcmVwLT5tYXgpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOiAKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgaWYoIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgcG1wLT5jb3VudCA9IGNvdW50OwotICAgICAgcG1wLT5sYXN0X3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICB9Ci0gICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfbm9uX2dyZWVkeV9yZXBlYXQoYm9vbCByKQotewotICAgc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIGlmKCFyKQotICAgewotICAgICAgcG9zaXRpb24gPSBwbXAtPnBvc2l0aW9uOwotICAgICAgcHN0YXRlID0gcG1wLT5wc3RhdGU7Ci0gICAgICArKygqbmV4dF9jb3VudCk7Ci0gICB9Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gcjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlY3Vyc2lvbihib29sIHIpCi17Ci0gICBzYXZlZF9yZWN1cnNpb248cmVzdWx0c190eXBlPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcmVjdXJzaW9uPHJlc3VsdHNfdHlwZT4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBpZighcikKLSAgIHsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5wdXNoX2JhY2socmVjdXJzaW9uX2luZm88cmVzdWx0c190eXBlPigpKTsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4ID0gcG1wLT5yZWN1cnNpb25faWQ7Ci0gICAgICByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzcyA9IHBtcC0+cHJldHVybl9hZGRyZXNzOwotICAgICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzID0gcG1wLT5yZXN1bHRzOwotICAgfQotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCsrKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9yZWN1cnNpb25fcG9wKGJvb2wgcikKLXsKLSAgIHNhdmVkX3N0YXRlKiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zdGF0ZSo+KG1fYmFja3VwX3N0YXRlKTsKLSAgIGlmKCFyKQotICAgewotICAgICAgcmVjdXJzaW9uX3N0YWNrLnBvcF9iYWNrKCk7Ci0gICB9Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci12b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9yZWN1cnNpb25fcG9wKCkKLXsKLSAgIHNhdmVkX3N0YXRlKiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zdGF0ZSo+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zdGF0ZSo+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX3N0YXRlKDE1KTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotLyoKLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9wYXJlbnRoZXNpc19wb3AoYm9vbCByKQotewotICAgc2F2ZWRfc3RhdGUqIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgaWYoIXIpCi0gICB7Ci0gICAgICAtLXBhcmVudGhlc2lzX3N0YWNrX3Bvc2l0aW9uOwotICAgfQotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCsrKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfcGFyZW50aGVzaXNfcG9wKCkKLXsKLSAgIHNhdmVkX3N0YXRlKiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zdGF0ZSo+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zdGF0ZSo+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX3N0YXRlKDE2KTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcGFyZW50aGVzaXNfcHVzaChib29sIHIpCi17Ci0gICBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgaWYoIXIpCi0gICB7Ci0gICAgICBwYXJlbnRoZXNpc19zdGFja1twYXJlbnRoZXNpc19zdGFja19wb3NpdGlvbisrXSA9IHBtcC0+cG9zaXRpb247Ci0gICB9Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfcGFyZW50aGVzaXNfcHVzaChCaWRpSXRlcmF0b3IgcCkKLXsKLSAgIHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4oMCwgcCwgMTcpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0qLwotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfcmVjdXJzaXZlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX3JlY3Vyc2l2ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZWU2YmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfcmVjdXJzaXZlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHBlcmxfbWF0Y2hlcl9jb21tb24uY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWZpbml0aW9ucyBvZiBwZXJsX21hdGNoZXIgbWVtYmVyIGZ1bmN0aW9ucyB0aGF0IGFyZSAKLSAgKiAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byB0aGUgcmVjdXJzaXZlIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1BFUkxfTUFUQ0hFUl9SRUNVUlNJVkVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1BFUkxfTUFUQ0hFUl9SRUNVUlNJVkVfSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ4MDApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLWNsYXNzIGJhY2t1cF9zdWJleAotewotICAgaW50IGluZGV4OwotICAgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4gc3ViOwotcHVibGljOgotICAgdGVtcGxhdGUgPGNsYXNzIEE+Ci0gICBiYWNrdXBfc3ViZXgoY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEE+JiB3LCBpbnQgaSkKLSAgICAgIDogaW5kZXgoaSksIHN1Yih3W2ldLCBmYWxzZSkge30KLSAgIHRlbXBsYXRlIDxjbGFzcyBBPgotICAgdm9pZCByZXN0b3JlKG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBPiYgdykKLSAgIHsKLSAgICAgIHcuc2V0X2ZpcnN0KHN1Yi5maXJzdCwgaW5kZXgsIGluZGV4ID09IDApOwotICAgICAgdy5zZXRfc2Vjb25kKHN1Yi5zZWNvbmQsIGluZGV4LCBzdWIubWF0Y2hlZCwgaW5kZXggPT0gMCk7Ci0gICB9Ci0gICBjb25zdCBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiYgZ2V0KCkgeyByZXR1cm4gc3ViOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9hbGxfc3RhdGVzKCkKLXsKLSAgIHN0YXRpYyBtYXRjaGVyX3Byb2NfdHlwZSBjb25zdCBzX21hdGNoX3Z0YWJsZVszMF0gPSAKLSAgIHsKLSAgICAgICgmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zdGFydG1hcmspLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZW5kbWFyaywKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xpdGVyYWwsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zdGFydF9saW5lLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZW5kX2xpbmUsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93aWxkLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbWF0Y2gsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX2JvdW5kYXJ5LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd2l0aGluX3dvcmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX3N0YXJ0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd29yZF9lbmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9idWZmZXJfc3RhcnQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9idWZmZXJfZW5kLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYmFja3JlZiwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xvbmdfc2V0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc2V0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfanVtcCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2FsdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3JlcCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2NvbWJpbmluZywKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NvZnRfYnVmZmVyX2VuZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3Jlc3RhcnRfY29udGludWUsCi0gICAgICAvLyBBbHRob3VnaCB0aGlzIG5leHQgbGluZSAqc2hvdWxkKiBiZSBldmFsdWF0ZWQgYXQgY29tcGlsZSB0aW1lLCBpbiBwcmFjdGljZQotICAgICAgLy8gc29tZSBjb21waWxlcnMgKFZDKyspIGVtaXQgcnVuLXRpbWUgaW5pdGlhbGlzYXRpb24gd2hpY2ggYnJlYWtzIHRocmVhZAotICAgICAgLy8gc2FmZXR5LCBzbyB1c2UgYSBkaXNwYXRjaCBmdW5jdGlvbiBpbnN0ZWFkOgotICAgICAgLy8oOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSA/ICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfZmFzdCA6ICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfc2xvdyksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X2Rpc3BhdGNoLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfY2hhcl9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zZXRfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXRfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYmFja3N0ZXAsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9hc3NlcnRfYmFja3JlZiwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3RvZ2dsZV9jYXNlLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVjdXJzaW9uLAotICAgfTsKLQotICAgaWYoc3RhdGVfY291bnQgPiBtYXhfc3RhdGVfY291bnQpCi0gICAgICByYWlzZV9lcnJvcih0cmFpdHNfaW5zdCwgcmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb21wbGV4aXR5KTsKLSAgIHdoaWxlKHBzdGF0ZSkKLSAgIHsKLSAgICAgIG1hdGNoZXJfcHJvY190eXBlIHByb2MgPSBzX21hdGNoX3Z0YWJsZVtwc3RhdGUtPnR5cGVdOwotICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIGlmKCEodGhpcy0+KnByb2MpKCkpCi0gICAgICB7Ci0gICAgICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zdGFydG1hcmsoKQotewotICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLSAgIGljYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pY2FzZTsKLSAgIGJvb2wgciA9IHRydWU7Ci0gICBzd2l0Y2goaW5kZXgpCi0gICB7Ci0gICBjYXNlIDA6Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAtMToKLSAgIGNhc2UgLTI6Ci0gICAgICB7Ci0gICAgICAgICAvLyBmb3J3YXJkIGxvb2thaGVhZCBhc3NlcnQ6Ci0gICAgICAgICBCaWRpSXRlcmF0b3Igb2xkX3Bvc2l0aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBuZXh0X3BzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIHBzdGF0ZSA9IG5leHRfcHN0YXRlOwotICAgICAgICAgcG9zaXRpb24gPSBvbGRfcG9zaXRpb247Ci0gICAgICAgICBpZigociAmJiAoaW5kZXggIT0gLTEpKSB8fCAoIXIgJiYgKGluZGV4ICE9IC0yKSkpCi0gICAgICAgICAgICByID0gZmFsc2U7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICByID0gdHJ1ZTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSAtMzoKLSAgICAgIHsKLSAgICAgICAgIC8vIGluZGVwZW5kZW50IHN1Yi1leHByZXNzaW9uOgotICAgICAgICAgYm9vbCBvbGRfaW5kZXBlbmRlbnQgPSBtX2luZGVwZW5kZW50OwotICAgICAgICAgbV9pbmRlcGVuZGVudCA9IHRydWU7Ci0gICAgICAgICBjb25zdCByZV9zeW50YXhfYmFzZSogbmV4dF9wc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlLT5uZXh0LnApLT5hbHQucC0+bmV4dC5wOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgIHIgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICAgICBwc3RhdGUgPSBuZXh0X3BzdGF0ZTsKLSAgICAgICAgIG1faW5kZXBlbmRlbnQgPSBvbGRfaW5kZXBlbmRlbnQ7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgICAgICAgIGlmKHIgJiYgKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9leHRyYSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gb3VyIGNhcHR1cmVzIGhhdmUgYmVlbiBzdG9yZWQgaW4gKm1fcHJlc3VsdAotICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB1bnBhY2sgdGhlbSwgYW5kIGluc2VydCB0aGVtCi0gICAgICAgICAgICAvLyBiYWNrIGluIHRoZSByaWdodCBvcmRlciB3aGVuIHdlIHVud2luZCB0aGUgc3RhY2s6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgdW5zaWduZWQgaTsKLSAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+IHRtKCptX3ByZXN1bHQpOwotICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgdG0uc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAoKm1fcHJlc3VsdClbaV0uZ2V0X2NhcHR1cmVzKCkuY2xlYXIoKTsKLSAgICAgICAgICAgIC8vIG1hdGNoIGV2ZXJ5dGhpbmcgZWxzZToKLSAgICAgICAgICAgIHIgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICAgICAgICAvLyBub3cgcGxhY2UgdGhlIHN0b3JlZCBjYXB0dXJlcyBiYWNrOgotICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgdG0uc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+OjpjYXB0dXJlX3NlcXVlbmNlX3R5cGUgc2VxOwotICAgICAgICAgICAgICAgc2VxJiBzMSA9ICgqbV9wcmVzdWx0KVtpXS5nZXRfY2FwdHVyZXMoKTsKLSAgICAgICAgICAgICAgIGNvbnN0IHNlcSYgczIgPSB0bVtpXS5jYXB0dXJlcygpOwotICAgICAgICAgICAgICAgczEuaW5zZXJ0KAotICAgICAgICAgICAgICAgICAgczEuZW5kKCksIAotICAgICAgICAgICAgICAgICAgczIuYmVnaW4oKSwgCi0gICAgICAgICAgICAgICAgICBzMi5lbmQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSAtNDoKLSAgICAgIHsKLSAgICAgIC8vIGNvbmRpdGlvbmFsIGV4cHJlc3Npb246Ci0gICAgICBjb25zdCByZV9hbHQqIGFsdCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2FsdCo+KHBzdGF0ZS0+bmV4dC5wKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChhbHQtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfYWx0KTsKLSAgICAgIHBzdGF0ZSA9IGFsdC0+bmV4dC5wOwotICAgICAgaWYocHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmKQotICAgICAgewotICAgICAgICAgaWYoIW1hdGNoX2Fzc2VydF9iYWNrcmVmKCkpCi0gICAgICAgICAgICBwc3RhdGUgPSBhbHQtPmFsdC5wOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAvLyB6ZXJvIHdpZHRoIGFzc2VydGlvbiwgaGF2ZSB0byBtYXRjaCB0aGlzIHJlY3Vyc2l2ZWx5OgotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHBzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmspOwotICAgICAgICAgYm9vbCBuZWdhdGVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleCA9PSAtMjsKLSAgICAgICAgIEJpZGlJdGVyYXRvciBzYXZlZF9wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIG5leHRfcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZS0+bmV4dC5wKS0+YWx0LnAtPm5leHQucDsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICBib29sIHJlcyA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIHBvc2l0aW9uID0gc2F2ZWRfcG9zaXRpb247Ci0gICAgICAgICBpZihuZWdhdGVkKQotICAgICAgICAgICAgcmVzID0gIXJlczsKLSAgICAgICAgIGlmKHJlcykKLSAgICAgICAgICAgIHBzdGF0ZSA9IG5leHRfcHN0YXRlOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgcHN0YXRlID0gYWx0LT5hbHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgfQotICAgY2FzZSAtNToKLSAgICAgIHsKLSAgICAgICAgIC8vIFJlc2V0IHN0YXJ0IG9mICQwLCBzaW5jZSB3ZSBoYXZlIGEgXEsgZXNjYXBlCi0gICAgICAgICBiYWNrdXBfc3ViZXg8QmlkaUl0ZXJhdG9yPiBzdWIoKm1fcHJlc3VsdCwgMCk7Ci0gICAgICAgICBtX3ByZXN1bHQtPnNldF9maXJzdChwb3NpdGlvbiwgMCwgdHJ1ZSk7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICAgIHIgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICAgICBpZihyID09IGZhbHNlKQotICAgICAgICAgICAgc3ViLnJlc3RvcmUoKm1fcHJlc3VsdCk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGRlZmF1bHQ6Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoaW5kZXggPiAwKTsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm9zdWJzKSA9PSAwKQotICAgICAgewotICAgICAgICAgYmFja3VwX3N1YmV4PEJpZGlJdGVyYXRvcj4gc3ViKCptX3ByZXN1bHQsIGluZGV4KTsKLSAgICAgICAgIG1fcHJlc3VsdC0+c2V0X2ZpcnN0KHBvc2l0aW9uLCBpbmRleCk7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICAgIHIgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICAgICBpZihyID09IGZhbHNlKQotICAgICAgICAgICAgc3ViLnJlc3RvcmUoKm1fcHJlc3VsdCk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgICAgICAgIC8vCi0gICAgICAgICAvLyB3ZSBoYXZlIGEgbWF0Y2gsIHB1c2ggdGhlIGNhcHR1cmUgaW5mb3JtYXRpb24gb250byB0aGUgc3RhY2s6Ci0gICAgICAgICAvLwotICAgICAgICAgZWxzZSBpZihzdWIuZ2V0KCkubWF0Y2hlZCAmJiAobWF0Y2hfZXh0cmEgJiBtX21hdGNoX2ZsYWdzKSkKLSAgICAgICAgICAgICgoKm1fcHJlc3VsdClbaW5kZXhdKS5nZXRfY2FwdHVyZXMoKS5wdXNoX2JhY2soc3ViLmdldCgpKTsKLSNlbmRpZgotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIH0KLSAgIHJldHVybiByOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9hbHQoKQotewotICAgYm9vbCB0YWtlX2ZpcnN0LCB0YWtlX3NlY29uZDsKLSAgIGNvbnN0IHJlX2FsdCogam1wID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYWx0Kj4ocHN0YXRlKTsKLQotICAgLy8gZmluZCBvdXQgd2hpY2ggb2YgdGhlc2UgdHdvIGFsdGVybmF0aXZlcyB3ZSBuZWVkIHRvIHRha2U6Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgdGFrZV9maXJzdCA9IGptcC0+Y2FuX2JlX251bGwgJiBtYXNrX3Rha2U7Ci0gICAgICB0YWtlX3NlY29uZCA9IGptcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXA7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICB0YWtlX2ZpcnN0ID0gY2FuX3N0YXJ0KCpwb3NpdGlvbiwgam1wLT5fbWFwLCAodW5zaWduZWQgY2hhciltYXNrX3Rha2UpOwotICAgICAgdGFrZV9zZWNvbmQgPSBjYW5fc3RhcnQoKnBvc2l0aW9uLCBqbXAtPl9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfc2tpcCk7Ci0gIH0KLQotICAgaWYodGFrZV9maXJzdCkKLSAgIHsKLSAgICAgIC8vIHdlIGNhbiB0YWtlIHRoZSBmaXJzdCBhbHRlcm5hdGl2ZSwKLSAgICAgIC8vIHNlZSBpZiB3ZSBuZWVkIHRvIHB1c2ggbmV4dCBhbHRlcm5hdGl2ZToKLSAgICAgIGlmKHRha2Vfc2Vjb25kKQotICAgICAgewotICAgICAgICAgQmlkaUl0ZXJhdG9yIG9sZHBvc2l0aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBvbGRfcHN0YXRlID0gam1wLT5hbHQucDsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgaWYoIW1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHBzdGF0ZSA9IG9sZF9wc3RhdGU7Ci0gICAgICAgICAgICBwb3NpdGlvbiA9IG9sZHBvc2l0aW9uOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYodGFrZV9zZWNvbmQpCi0gICB7Ci0gICAgICBwc3RhdGUgPSBqbXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7ICAvLyBuZWl0aGVyIG9wdGlvbiBpcyBwb3NzaWJsZQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZXAoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNyA0MjQ0KQotI2VuZGlmCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICAvLwotICAgLy8gQWx3YXlzIGNvcHkgdGhlIHJlcGVhdCBjb3VudCwgc28gdGhhdCB0aGUgc3RhdGUgaXMgcmVzdG9yZWQKLSAgIC8vIHdoZW4gd2UgZXhpdCB0aGlzIHNjb3BlOgotICAgLy8KLSAgIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4gcihyZXAtPnN0YXRlX2lkLCAmbmV4dF9jb3VudCwgcG9zaXRpb24pOwotICAgLy8KLSAgIC8vIElmIHdlJ3ZlIGhhZCBhdCBsZWFzdCBvbmUgcmVwZWF0IGFscmVhZHksIGFuZCB0aGUgbGFzdCBvbmUgCi0gICAvLyBtYXRjaGVkIHRoZSBOVUxMIHN0cmluZyB0aGVuIHNldCB0aGUgcmVwZWF0IGNvdW50IHRvCi0gICAvLyBtYXhpbXVtOgotICAgLy8KLSAgIG5leHRfY291bnQtPmNoZWNrX251bGxfcmVwZWF0KHBvc2l0aW9uLCByZXAtPm1heCk7Ci0KLSAgIC8vIGZpbmQgb3V0IHdoaWNoIG9mIHRoZXNlIHR3byBhbHRlcm5hdGl2ZXMgd2UgbmVlZCB0byB0YWtlOgotICAgYm9vbCB0YWtlX2ZpcnN0LCB0YWtlX3NlY29uZDsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICB0YWtlX2ZpcnN0ID0gcmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfdGFrZTsKLSAgICAgIHRha2Vfc2Vjb25kID0gcmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfdGFrZSk7Ci0gICAgICB0YWtlX3NlY29uZCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza19za2lwKTsKLSAgIH0KLQotICAgaWYobmV4dF9jb3VudC0+Z2V0X2NvdW50KCkgPCByZXAtPm1pbikKLSAgIHsKLSAgICAgIC8vIHdlIG11c3QgdGFrZSB0aGUgcmVwZWF0OgotICAgICAgaWYodGFrZV9maXJzdCkKLSAgICAgIHsKLSAgICAgICAgIC8vIGluY3JlYXNlIHRoZSBjb3VudGVyOgotICAgICAgICAgKysoKm5leHRfY291bnQpOwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICAgICByZXR1cm4gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBpZihncmVlZHkpCi0gICB7Ci0gICAgICAvLyB0cnkgYW5kIHRha2UgdGhlIHJlcGVhdCBpZiB3ZSBjYW46Ci0gICAgICBpZigobmV4dF9jb3VudC0+Z2V0X2NvdW50KCkgPCByZXAtPm1heCkgJiYgdGFrZV9maXJzdCkKLSAgICAgIHsKLSAgICAgICAgIC8vIHN0b3JlIHBvc2l0aW9uIGluIGNhc2Ugd2UgZmFpbDoKLSAgICAgICAgIEJpZGlJdGVyYXRvciBwb3MgPSBwb3NpdGlvbjsKLSAgICAgICAgIC8vIGluY3JlYXNlIHRoZSBjb3VudGVyOgotICAgICAgICAgKysoKm5leHRfY291bnQpOwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIC8vIGZhaWxlZCByZXBlYXQsIHJlc2V0IHBvc2lzdGlvbiBhbmQgZmFsbCB0aHJvdWdoIGZvciBhbHRlcm5hdGl2ZToKLSAgICAgICAgIHBvc2l0aW9uID0gcG9zOwotICAgICAgfQotICAgICAgaWYodGFrZV9zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7IC8vIGNhbid0IHRha2UgYW55dGhpbmcsIGZhaWwuLi4KLSAgIH0KLSAgIGVsc2UgLy8gbm9uLWdyZWVkeQotICAgewotICAgICAgLy8gdHJ5IGFuZCBza2lwIHRoZSByZXBlYXQgaWYgd2UgY2FuOgotICAgICAgaWYodGFrZV9zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBzdG9yZSBwb3NpdGlvbiBpbiBjYXNlIHdlIGZhaWw6Ci0gICAgICAgICBCaWRpSXRlcmF0b3IgcG9zID0gcG9zaXRpb247Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgICAgaWYobWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAvLyBmYWlsZWQgYWx0ZXJuYXRpdmUsIHJlc2V0IHBvc2lzdGlvbiBhbmQgZmFsbCB0aHJvdWdoIGZvciByZXBlYXQ6Ci0gICAgICAgICBwb3NpdGlvbiA9IHBvczsKLSAgICAgIH0KLSAgICAgIGlmKChuZXh0X2NvdW50LT5nZXRfY291bnQoKSA8IHJlcC0+bWF4KSAmJiB0YWtlX2ZpcnN0KQotICAgICAgewotICAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGNvdW50ZXI6Ci0gICAgICAgICArKygqbmV4dF9jb3VudCk7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgICAgIHJldHVybiBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X3Nsb3coKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgcmVfc3ludGF4X2Jhc2UqIHBzaW5nbGUgPSByZXAtPm5leHQucDsKLSAgIC8vIG1hdGNoIGNvbXB1bHNhcnkgcmVwZWF0cyBmaXJzdDoKLSAgIHdoaWxlKGNvdW50IDwgcmVwLT5taW4pCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwc2luZ2xlOwotICAgICAgaWYoIW1hdGNoX3dpbGQoKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICsrY291bnQ7Ci0gICB9Ci0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIC8vIG5vcm1hbCByZXBlYXQ6Ci0gICAgICB3aGlsZShjb3VudCA8IHJlcC0+bWF4KQotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcHNpbmdsZTsKLSAgICAgICAgIGlmKCFtYXRjaF93aWxkKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICBwc3RhdGUgPSByZXA7Ci0gICAgICByZXR1cm4gYmFja3RyYWNrX3RpbGxfbWF0Y2goY291bnQgLSByZXAtPm1pbik7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBub24tZ3JlZWR5LCBrZWVwIHRyeWluZyB0aWxsIHdlIGdldCBhIG1hdGNoOgotICAgICAgQmlkaUl0ZXJhdG9yIHNhdmVfcG9zOwotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChyZXAtPm1heCA9PSBVSU5UX01BWCkpCi0gICAgICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgICAgc2F2ZV9wb3MgPSBwb3NpdGlvbjsKLSAgICAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGlmKGNvdW50ID49IHJlcC0+bWF4KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgKytjb3VudDsKLSAgICAgICAgIHBzdGF0ZSA9IHBzaW5nbGU7Ci0gICAgICAgICBwb3NpdGlvbiA9IHNhdmVfcG9zOwotICAgICAgICAgaWYoIW1hdGNoX3dpbGQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH13aGlsZSh0cnVlKTsKLSAgIH0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfZmFzdCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0gICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2RvdF9udWxsKQotICAgICAgcmV0dXJuIG1hdGNoX2RvdF9yZXBlYXRfc2xvdygpOwotICAgaWYoKHN0YXRpY19jYXN0PGNvbnN0IHJlX2RvdCo+KHBzdGF0ZS0+bmV4dC5wKS0+bWFzayAmIG1hdGNoX2FueV9tYXNrKSA9PSAwKQotICAgICAgcmV0dXJuIG1hdGNoX2RvdF9yZXBlYXRfc2xvdygpOwotICAgLy8KLSAgIC8vIHN0YXJ0IGJ5IHdvcmtpbmcgb3V0IGhvdyBtdWNoIHdlIGNhbiBza2lwOgotICAgLy8KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNjcpCi0jZW5kaWYKLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgc3RkOjpzaXplX3QgY291bnQgPSAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90Pig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKHBvc2l0aW9uLCBsYXN0KSksIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluKSk7Ci0gICBpZihyZXAtPm1pbiA+IGNvdW50KQotICAgewotICAgICAgcG9zaXRpb24gPSBsYXN0OwotICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gbm90IGVub3VnaCB0ZXh0IGxlZnQgdG8gbWF0Y2gKLSAgIH0KLSAgIHN0ZDo6YWR2YW5jZShwb3NpdGlvbiwgY291bnQpOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSAmJiBncmVlZHkpCi0gICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBpZihncmVlZHkpCi0gICAgICByZXR1cm4gYmFja3RyYWNrX3RpbGxfbWF0Y2goY291bnQgLSByZXAtPm1pbik7Ci0KLSAgIC8vIG5vbi1ncmVlZHksIGtlZXAgdHJ5aW5nIHRpbGwgd2UgZ2V0IGEgbWF0Y2g6Ci0gICBCaWRpSXRlcmF0b3Igc2F2ZV9wb3M7Ci0gICBkbwotICAgewotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmIChjb3VudCA8IHJlcC0+bWF4KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAocmVwLT5tYXggPT0gVUlOVF9NQVgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHNhdmVfcG9zID0gcG9zaXRpb247Ci0gICAgICArK3N0YXRlX2NvdW50OwotICAgICAgaWYobWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBpZihjb3VudCA+PSByZXAtPm1heCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGlmKHNhdmVfcG9zID09IGxhc3QpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBwb3NpdGlvbiA9ICsrc2F2ZV9wb3M7Ci0gICAgICArK2NvdW50OwotICAgfXdoaWxlKHRydWUpOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfY2hhcl9yZXBlYXQoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNjcpCi0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2IC13LTgwMDQKLSNlbmRpZgotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgTkROQk9PU1RfQVNTRVJUKDEgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfbGl0ZXJhbCo+KHJlcC0+bmV4dC5wKS0+bGVuZ3RoKTsKLSAgIGNvbnN0IGNoYXJfdHlwZSB3aGF0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgcmVfbGl0ZXJhbCo+KHJlcC0+bmV4dC5wKSArIDEpOwotICAgLy8KLSAgIC8vIHN0YXJ0IGJ5IHdvcmtpbmcgb3V0IGhvdyBtdWNoIHdlIGNhbiBza2lwOgotICAgLy8KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgc3RkOjpzaXplX3QgY291bnQsIGRlc2lyZWQ7Ci0gICBpZig6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlKQotICAgewotICAgICAgZGVzaXJlZCA9IAotICAgICAgICAgKHN0ZDo6bWluKSgKLSAgICAgICAgICAgIChzdGQ6OnNpemVfdCkoZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbiksCi0gICAgICAgICAgICAoc3RkOjpzaXplX3QpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCkpOwotICAgICAgY291bnQgPSBkZXNpcmVkOwotICAgICAgKytkZXNpcmVkOwotICAgICAgaWYoaWNhc2UpCi0gICAgICB7Ci0gICAgICAgICB3aGlsZSgtLWRlc2lyZWQgJiYgKHRyYWl0c19pbnN0LnRyYW5zbGF0ZV9ub2Nhc2UoKnBvc2l0aW9uKSA9PSB3aGF0KSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICB3aGlsZSgtLWRlc2lyZWQgJiYgKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24pID09IHdoYXQpKQotICAgICAgICAgewotICAgICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGNvdW50ID0gY291bnQgLSBkZXNpcmVkOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgY291bnQgPSAwOwotICAgICAgZGVzaXJlZCA9IGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW47Ci0gICAgICB3aGlsZSgoY291bnQgPCBkZXNpcmVkKSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSA9PSB3aGF0KSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgfQotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmIGdyZWVkeSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKGNvdW50IDwgcmVwLT5taW4pCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIGlmKGdyZWVkeSkKLSAgICAgIHJldHVybiBiYWNrdHJhY2tfdGlsbF9tYXRjaChjb3VudCAtIHJlcC0+bWluKTsKLQotICAgLy8gbm9uLWdyZWVkeSwga2VlcCB0cnlpbmcgdGlsbCB3ZSBnZXQgYSBtYXRjaDoKLSAgIEJpZGlJdGVyYXRvciBzYXZlX3BvczsKLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICB7Ci0gICAgICAgICBpZigodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpID09IHdoYXQpKQotICAgICAgICAgewotICAgICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyBjb3VubGRuJ3QgcmVwZWF0IGV2ZW4gdGhvdWdoIGl0IHdhcyB0aGUgb25seSBvcHRpb24KLSAgICAgIH0KLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChyZXAtPm1heCA9PSBVSU5UX01BWCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgc2F2ZV9wb3MgPSBwb3NpdGlvbjsKLSAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGlmKGNvdW50ID49IHJlcC0+bWF4KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgcG9zaXRpb24gPSBzYXZlX3BvczsKLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgPT0gd2hhdCkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfXdoaWxlKHRydWUpOwotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NldF9yZXBlYXQoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYgLXctODAwNAotI2VuZGlmCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9zZXQqPihyZXAtPm5leHQucCktPl9tYXA7Ci0gICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAvLwotICAgLy8gc3RhcnQgYnkgd29ya2luZyBvdXQgaG93IG11Y2ggd2UgY2FuIHNraXA6Ci0gICAvLwotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBzdGQ6OnNpemVfdCBkZXNpcmVkID0gZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbjsKLSAgIGlmKDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUpCi0gICB7Ci0gICAgICBCaWRpSXRlcmF0b3IgZW5kID0gcG9zaXRpb247Ci0gICAgICBzdGQ6OmFkdmFuY2UoZW5kLCAoc3RkOjptaW4pKChzdGQ6OnNpemVfdCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKHBvc2l0aW9uLCBsYXN0KSwgZGVzaXJlZCkpOwotICAgICAgQmlkaUl0ZXJhdG9yIG9yaWdpbihwb3NpdGlvbik7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gZW5kKSAmJiBtYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgY291bnQgPSAodW5zaWduZWQpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShvcmlnaW4sIHBvc2l0aW9uKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHdoaWxlKChjb3VudCA8IGRlc2lyZWQpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiBtYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgIH0KLSAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSAmJiBncmVlZHkpCi0gICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBpZihjb3VudCA8IHJlcC0+bWluKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICBpZihncmVlZHkpCi0gICAgICByZXR1cm4gYmFja3RyYWNrX3RpbGxfbWF0Y2goY291bnQgLSByZXAtPm1pbik7Ci0KLSAgIC8vIG5vbi1ncmVlZHksIGtlZXAgdHJ5aW5nIHRpbGwgd2UgZ2V0IGEgbWF0Y2g6Ci0gICBCaWRpSXRlcmF0b3Igc2F2ZV9wb3M7Ci0gICBkbwotICAgewotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmIChjb3VudCA8IHJlcC0+bWF4KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgewotICAgICAgICAgaWYobWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSldKQotICAgICAgICAgewotICAgICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyBjb3VubGRuJ3QgcmVwZWF0IGV2ZW4gdGhvdWdoIGl0IHdhcyB0aGUgb25seSBvcHRpb24KLSAgICAgIH0KLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChyZXAtPm1heCA9PSBVSU5UX01BWCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgc2F2ZV9wb3MgPSBwb3NpdGlvbjsKLSAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGlmKGNvdW50ID49IHJlcC0+bWF4KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgcG9zaXRpb24gPSBzYXZlX3BvczsKLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZihtYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIH13aGlsZSh0cnVlKTsKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9sb25nX3NldF9yZXBlYXQoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYgLXctODAwNAotI2VuZGlmCi0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIGNoYXJfY2xhc3NfdHlwZTsKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIGNvbnN0IHJlX3NldF9sb25nPGNoYXJfY2xhc3NfdHlwZT4qIHNldCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldF9sb25nPGNoYXJfY2xhc3NfdHlwZT4qPihwc3RhdGUtPm5leHQucCk7Ci0gICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAvLwotICAgLy8gc3RhcnQgYnkgd29ya2luZyBvdXQgaG93IG11Y2ggd2UgY2FuIHNraXA6Ci0gICAvLwotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBzdGQ6OnNpemVfdCBkZXNpcmVkID0gZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbjsKLSAgIGlmKDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUpCi0gICB7Ci0gICAgICBCaWRpSXRlcmF0b3IgZW5kID0gcG9zaXRpb247Ci0gICAgICBzdGQ6OmFkdmFuY2UoZW5kLCAoc3RkOjptaW4pKChzdGQ6OnNpemVfdCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKHBvc2l0aW9uLCBsYXN0KSwgZGVzaXJlZCkpOwotICAgICAgQmlkaUl0ZXJhdG9yIG9yaWdpbihwb3NpdGlvbik7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gZW5kKSAmJiAocG9zaXRpb24gIT0gcmVfaXNfc2V0X21lbWJlcihwb3NpdGlvbiwgbGFzdCwgc2V0LCByZS5nZXRfZGF0YSgpLCBpY2FzZSkpKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIH0KLSAgICAgIGNvdW50ID0gKHVuc2lnbmVkKTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2Uob3JpZ2luLCBwb3NpdGlvbik7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICB3aGlsZSgoY291bnQgPCBkZXNpcmVkKSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHNldCwgcmUuZ2V0X2RhdGEoKSwgaWNhc2UpKSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgfQotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmIGdyZWVkeSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKGNvdW50IDwgcmVwLT5taW4pCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIGlmKGdyZWVkeSkKLSAgICAgIHJldHVybiBiYWNrdHJhY2tfdGlsbF9tYXRjaChjb3VudCAtIHJlcC0+bWluKTsKLQotICAgLy8gbm9uLWdyZWVkeSwga2VlcCB0cnlpbmcgdGlsbCB3ZSBnZXQgYSBtYXRjaDoKLSAgIEJpZGlJdGVyYXRvciBzYXZlX3BvczsKLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICB7Ci0gICAgICAgICBpZihwb3NpdGlvbiAhPSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gY291bmxkbid0IHJlcGVhdCBldmVuIHRob3VnaCBpdCB3YXMgdGhlIG9ubHkgb3B0aW9uCi0gICAgICB9Ci0gICAgICBpZigocmVwLT5sZWFkaW5nKSAmJiAocmVwLT5tYXggPT0gVUlOVF9NQVgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHNhdmVfcG9zID0gcG9zaXRpb247Ci0gICAgICArK3N0YXRlX2NvdW50OwotICAgICAgaWYobWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBpZihjb3VudCA+PSByZXAtPm1heCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIHBvc2l0aW9uID0gc2F2ZV9wb3M7Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgaWYocG9zaXRpb24gIT0gcmVfaXNfc2V0X21lbWJlcihwb3NpdGlvbiwgbGFzdCwgc2V0LCByZS5nZXRfZGF0YSgpLCBpY2FzZSkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIH13aGlsZSh0cnVlKTsKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpiYWNrdHJhY2tfdGlsbF9tYXRjaChzdGQ6OnNpemVfdCBjb3VudCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpKQotICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIEJpZGlJdGVyYXRvciBiYWNrdHJhY2sgPSBwb3NpdGlvbjsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICBpZihyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSAKLSAgICAgIHsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGlmKGNvdW50KQotICAgICAgewotICAgICAgICAgcG9zaXRpb24gPSAtLWJhY2t0cmFjazsKLSAgICAgICAgIC0tY291bnQ7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBkbwotICAgewotICAgICAgd2hpbGUoY291bnQgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgIHsKLSAgICAgICAgIC0tcG9zaXRpb247Ci0gICAgICAgICAtLWNvdW50OwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIH0KLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICBiYWNrdHJhY2sgPSBwb3NpdGlvbjsKLSAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgaWYoY291bnQgPT0gMCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIHBvc2l0aW9uID0gLS1iYWNrdHJhY2s7Ci0gICAgICArK3N0YXRlX2NvdW50OwotICAgICAgLS1jb3VudDsKLSAgIH13aGlsZSh0cnVlKTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3JlY3Vyc2lvbigpCi17Ci0gICBORE5CT09TVF9BU1NFUlQocHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3JlY3Vyc2UpOwotICAgLy8KLSAgIC8vIFNldCBuZXcgY2FsbCBzdGFjazoKLSAgIC8vCi0gICBpZihyZWN1cnNpb25fc3RhY2suY2FwYWNpdHkoKSA9PSAwKQotICAgewotICAgICAgcmVjdXJzaW9uX3N0YWNrLnJlc2VydmUoNTApOwotICAgfQotICAgcmVjdXJzaW9uX3N0YWNrLnB1c2hfYmFjayhyZWN1cnNpb25faW5mbzxyZXN1bHRzX3R5cGU+KCkpOwotICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3MgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0cyA9ICptX3ByZXN1bHQ7Ci0gICByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlcGVhdGVyX3N0YWNrID0gbmV4dF9jb3VudDsKLSAgIHBzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUpLT5hbHQucDsKLSAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLQotICAgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPiogc2F2ZWQgPSBuZXh0X2NvdW50OwotICAgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPiByKCZuZXh0X2NvdW50KTsgLy8gcmVzZXRzIGFsbCByZXBlYXQgY291bnRzIHNpbmNlIHdlJ3JlIHJlY3Vyc2luZyBhbmQgc3RhcnRpbmcgZnJlc2ggb24gdGhvc2UKLSAgIG5leHRfY291bnQgPSAmcjsKLSAgIGJvb2wgcmVzdWx0ID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgbmV4dF9jb3VudCA9IHNhdmVkOwotCi0gICBpZighcmVzdWx0KQotICAgewotICAgICAgbmV4dF9jb3VudCA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVwZWF0ZXJfc3RhY2s7Ci0gICAgICAqbV9wcmVzdWx0ID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzOwotICAgICAgcmVjdXJzaW9uX3N0YWNrLnBvcF9iYWNrKCk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZW5kbWFyaygpCi17Ci0gICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotICAgaWNhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmljYXNlOwotICAgaWYoaW5kZXggPiAwKQotICAgewotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3N1YnMpID09IDApCi0gICAgICB7Ci0gICAgICAgICBtX3ByZXN1bHQtPnNldF9zZWNvbmQocG9zaXRpb24sIGluZGV4KTsKLSAgICAgIH0KLSAgICAgIGlmKCFyZWN1cnNpb25fc3RhY2suZW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKGluZGV4ID09IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4KQotICAgICAgICAgewotICAgICAgICAgICAgcmVjdXJzaW9uX2luZm88cmVzdWx0c190eXBlPiBzYXZlZCA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCk7Ci0gICAgICAgICAgICByZWN1cnNpb25fc3RhY2sucG9wX2JhY2soKTsKLSAgICAgICAgICAgIHBzdGF0ZSA9IHNhdmVkLnByZXR1cm5fYWRkcmVzczsKLSAgICAgICAgICAgIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4qIHNhdmVkX2NvdW50ID0gbmV4dF9jb3VudDsKLSAgICAgICAgICAgIG5leHRfY291bnQgPSBzYXZlZC5yZXBlYXRlcl9zdGFjazsKLSAgICAgICAgICAgICptX3ByZXN1bHQgPSBzYXZlZC5yZXN1bHRzOwotICAgICAgICAgICAgaWYoIW1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJlY3Vyc2lvbl9zdGFjay5wdXNoX2JhY2soc2F2ZWQpOwotICAgICAgICAgICAgICAgbmV4dF9jb3VudCA9IHNhdmVkX2NvdW50OwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgfQotICAgfQotICAgZWxzZSBpZigoaW5kZXggPCAwKSAmJiAoaW5kZXggIT0gLTQpKQotICAgewotICAgICAgLy8gbWF0Y2hlZCBmb3J3YXJkIGxvb2thaGVhZDoKLSAgICAgIHBzdGF0ZSA9IDA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHBzdGF0ZSA9IHBzdGF0ZSA/IHBzdGF0ZS0+bmV4dC5wIDogMDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9tYXRjaCgpCi17Ci0gICBpZighcmVjdXJzaW9uX3N0YWNrLmVtcHR5KCkpCi0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoMCA9PSByZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCk7Ci0gICAgICBjb25zdCByZV9zeW50YXhfYmFzZSogc2F2ZWRfc3RhdGUgPSBwc3RhdGUgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzczsKLSAgICAgICptX3ByZXN1bHQgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHM7Ci0gICAgICByZWN1cnNpb25fc3RhY2sucG9wX2JhY2soKTsKLSAgICAgIGlmKCFtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICB7Ci0gICAgICAgICByZWN1cnNpb25fc3RhY2sucHVzaF9iYWNrKHJlY3Vyc2lvbl9pbmZvPHJlc3VsdHNfdHlwZT4oKSk7Ci0gICAgICAgICByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzcyA9IHNhdmVkX3N0YXRlOwotICAgICAgICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzID0gKm1fcHJlc3VsdDsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfbnVsbCkgJiYgKHBvc2l0aW9uID09ICgqbV9wcmVzdWx0KVswXS5maXJzdCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX2FsbCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9pbml0aWFsX251bGwpICYmIChwb3NpdGlvbiA9PSBzZWFyY2hfYmFzZSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBtX3ByZXN1bHQtPnNldF9zZWNvbmQocG9zaXRpb24pOwotICAgcHN0YXRlID0gMDsKLSAgIG1faGFzX2ZvdW5kX21hdGNoID0gdHJ1ZTsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcG9zaXgpID09IG1hdGNoX3Bvc2l4KQotICAgewotICAgICAgbV9yZXN1bHQubWF5YmVfYXNzaWduKCptX3ByZXN1bHQpOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9hbnkpID09IDApCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgIGlmKG1hdGNoX2V4dHJhICYgbV9tYXRjaF9mbGFncykKLSAgIHsKLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJlc3VsdC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICBpZigoKm1fcHJlc3VsdClbaV0ubWF0Y2hlZCkKLSAgICAgICAgICAgICgoKm1fcHJlc3VsdClbaV0pLmdldF9jYXB0dXJlcygpLnB1c2hfYmFjaygoKm1fcHJlc3VsdClbaV0pOwotICAgfQotI2VuZGlmCi0gICByZXR1cm4gdHJ1ZTsKLX0KLQotCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcHJpbWFyeV90cmFuc2Zvcm0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wcmltYXJ5X3RyYW5zZm9ybS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjOWJjNjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wcmltYXJ5X3RyYW5zZm9ybS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEU6ICAgICAgICBwcmltYXJ5X3RyYW5zZm9ybS5ocHAKLSAgKiAgIFZFUlNJT046ICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IEhldXJpc3RpY2FsbHkgZGV0ZXJtaW5lcyB0aGUgc29ydCBzdHJpbmcgZm9ybWF0IGluIHVzZQotICAqICAgICAgICAgICAgICAgIGJ5IHRoZSBjdXJyZW50IGxvY2FsZS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9QUklNQVJZX1RSQU5TRk9STQotI2RlZmluZSBORE5CT09TVF9SRUdFWF9QUklNQVJZX1RSQU5TRk9STQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLSAgIG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLQotZW51bXsKLSAgIHNvcnRfQywKLSAgIHNvcnRfZml4ZWQsCi0gICBzb3J0X2RlbGltLAotICAgc29ydF91bmtub3duCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgY2hhclQ+Ci11bnNpZ25lZCBjb3VudF9jaGFycyhjb25zdCBTJiBzLCBjaGFyVCBjKQotewotICAgLy8KLSAgIC8vIENvdW50IGhvdyBtYW55IG9jY3VyYW5jZXMgb2YgY2hhcmFjdGVyIGMgb2NjdXIKLSAgIC8vIGluIHN0cmluZyBzOiBpZiBjIGlzIGEgZGVsaW1ldGVyIGJldHdlZW4gY29sbGF0aW9uCi0gICAvLyBmaWVsZHMsIHRoZW4gdGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgdmFsdWUgZm9yIGFsbAotICAgLy8gc29ydCBrZXlzOgotICAgLy8KLSAgIHVuc2lnbmVkIGludCBjb3VudCA9IDA7Ci0gICBmb3IodW5zaWduZWQgcG9zID0gMDsgcG9zIDwgcy5zaXplKCk7ICsrcG9zKQotICAgewotICAgICAgaWYoc1twb3NdID09IGMpICsrY291bnQ7Ci0gICB9Ci0gICByZXR1cm4gY291bnQ7Ci19Ci0KLQotdGVtcGxhdGUgPGNsYXNzIHRyYWl0cywgY2xhc3MgY2hhclQ+Ci11bnNpZ25lZCBmaW5kX3NvcnRfc3ludGF4KGNvbnN0IHRyYWl0cyogcHQsIGNoYXJUKiBkZWxpbSkKLXsKLSAgIC8vCi0gICAvLyBjb21wYXJlICdhJyB3aXRoICdBJyB0byBzZWUgaG93IHNpbWlsYXIgdGhleSBhcmUsCi0gICAvLyBzaG91bGQgcmVhbGx5IHVzZSBhLWFjY3V0ZSBidXQgd2UgY2FuJ3QgcG9ydGFibHkgZG8gdGhhdCwKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6c3RyaW5nX3R5cGUgc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl90eXBlIGNoYXJfdHlwZTsKLQotICAgLy8gU3VwcHJlc3MgaW5jb3JyZWN0IHdhcm5pbmcgZm9yIE1TVkMKLSAgICh2b2lkKXB0OwotCi0gICBjaGFyX3R5cGUgYVsyXSA9IHsnYScsICdcMCcsIH07Ci0gICBzdHJpbmdfdHlwZSBzYShwdC0+dHJhbnNmb3JtKGEsIGErMSkpOwotICAgaWYoc2EgPT0gYSkKLSAgIHsKLSAgICAgICpkZWxpbSA9IDA7Ci0gICAgICByZXR1cm4gc29ydF9DOwotICAgfQotICAgY2hhcl90eXBlIEFbMl0gPSB7ICdBJywgJ1wwJywgfTsKLSAgIHN0cmluZ190eXBlIHNBKHB0LT50cmFuc2Zvcm0oQSwgQSsxKSk7Ci0gICBjaGFyX3R5cGUgY1syXSA9IHsgJzsnLCAnXDAnLCB9OwotICAgc3RyaW5nX3R5cGUgc2MocHQtPnRyYW5zZm9ybShjLCBjKzEpKTsKLQotICAgaW50IHBvcyA9IDA7Ci0gICB3aGlsZSgocG9zIDw9IHN0YXRpY19jYXN0PGludD4oc2Euc2l6ZSgpKSkgJiYgKHBvcyA8PSBzdGF0aWNfY2FzdDxpbnQ+KHNBLnNpemUoKSkpICYmIChzYVtwb3NdID09IHNBW3Bvc10pKSArK3BvczsKLSAgIC0tcG9zOwotICAgaWYocG9zIDwgMCkKLSAgIHsKLSAgICAgICpkZWxpbSA9IDA7Ci0gICAgICByZXR1cm4gc29ydF91bmtub3duOwotICAgfQotICAgLy8KLSAgIC8vIGF0IHRoaXMgcG9pbnQgc2FbcG9zXSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBhIGZpeGVkIHdpZHRoIGZpZWxkCi0gICAvLyBvciB0aGUgY2hhcmFjdGVyIHRoYXQgYWN0cyBhcyBhIGRlbGltaXRlcjoKLSAgIC8vCi0gICBjaGFyVCBtYXliZV9kZWxpbSA9IHNhW3Bvc107Ci0gICBpZigocG9zICE9IDApICYmIChjb3VudF9jaGFycyhzYSwgbWF5YmVfZGVsaW0pID09IGNvdW50X2NoYXJzKHNBLCBtYXliZV9kZWxpbSkpICYmIChjb3VudF9jaGFycyhzYSwgbWF5YmVfZGVsaW0pID09IGNvdW50X2NoYXJzKHNjLCBtYXliZV9kZWxpbSkpKQotICAgewotICAgICAgKmRlbGltID0gbWF5YmVfZGVsaW07Ci0gICAgICByZXR1cm4gc29ydF9kZWxpbTsKLSAgIH0KLSAgIC8vCi0gICAvLyBPSyBkb2VuJ3QgbG9vayBsaWtlIGEgZGVsaW1pdGVyLCB0cnkgZm9yIGZpeGVkIHdpZHRoIGZpZWxkOgotICAgLy8KLSAgIGlmKChzYS5zaXplKCkgPT0gc0Euc2l6ZSgpKSAmJiAoc2Euc2l6ZSgpID09IHNjLnNpemUoKSkpCi0gICB7Ci0gICAgICAvLyBub3RlIGFzc3VtZXMgdGhhdCB0aGUgZml4ZWQgd2lkdGggZmllbGQgaXMgbGVzcyB0aGFuCi0gICAgICAvLyAobnVtZXJpY19saW1pdHM8Y2hhclQ+OjptYXgpKCksIHNob3VsZCBiZSB0cnVlIGZvciBhbGwgdHlwZXMKLSAgICAgIC8vIEkgY2FuJ3QgaW1hZ2luZSAxMjcgY2hhcmFjdGVyIGZpZWxkcy4uLgotICAgICAgKmRlbGltID0gc3RhdGljX2Nhc3Q8Y2hhclQ+KCsrcG9zKTsKLSAgICAgIHJldHVybiBzb3J0X2ZpeGVkOwotICAgfQotICAgLy8KLSAgIC8vIGRvbid0IGtub3cgd2hhdCBpdCBpczoKLSAgIC8vCi0gICAqZGVsaW0gPSAwOwotICAgcmV0dXJuIHNvcnRfdW5rbm93bjsKLX0KLQotCi0gICB9IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcHJvdGVjdGVkX2NhbGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wcm90ZWN0ZWRfY2FsbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NjE1ZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wcm90ZWN0ZWRfY2FsbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGJhc2ljX3JlZ2V4X2NyZWF0b3IuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19yZWdleF9jcmVhdG9yIHdoaWNoIGZpbGxzIGluCi0gICogICAgICAgICAgICAgICAgdGhlIGRhdGEgbWVtYmVycyBvZiBhIHJlZ2V4X2RhdGEgb2JqZWN0LgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1BST1RFQ1RFRF9DQUxMX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9QUk9URUNURURfQ0FMTF9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGFic3RyYWN0X3Byb3RlY3RlZF9jYWxsCi17Ci1wdWJsaWM6Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgZXhlY3V0ZSgpY29uc3Q7Ci0gICAvLyB0aGlzIHN0b3BzIGdjYy00IGZyb20gY29tcGxhaW5pbmc6Ci0gICB2aXJ0dWFsIH5hYnN0cmFjdF9wcm90ZWN0ZWRfY2FsbCgpe30KLXByaXZhdGU6Ci0gICB2aXJ0dWFsIGJvb2wgY2FsbCgpY29uc3QgPSAwOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1jbGFzcyBjb25jcmV0ZV9wcm90ZWN0ZWRfY2FsbAotICAgOiBwdWJsaWMgYWJzdHJhY3RfcHJvdGVjdGVkX2NhbGwKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgYm9vbCAoVDo6KnByb2NfdHlwZSkoKTsKLSAgIGNvbmNyZXRlX3Byb3RlY3RlZF9jYWxsKFQqIG8sIHByb2NfdHlwZSBwKQotICAgICAgOiBvYmoobyksIHByb2MocCkge30KLXByaXZhdGU6Ci0gICB2aXJ0dWFsIGJvb2wgY2FsbCgpY29uc3Q7Ci0gICBUKiBvYmo7Ci0gICBwcm9jX3R5cGUgcHJvYzsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotYm9vbCBjb25jcmV0ZV9wcm90ZWN0ZWRfY2FsbDxUPjo6Y2FsbCgpY29uc3QKLXsKLSAgIHJldHVybiAob2JqLT4qcHJvYykoKTsKLX0KLQotfQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnYmFzZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2Jhc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzUyNDY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnYmFzZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2Jhc2UuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBjbGFzcyByZWdiYXNlLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0JBU0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0JBU0VfSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotLy8KLS8vIGNsYXNzIHJlZ2Jhc2UKLS8vIGhhbmRsZXMgZXJyb3IgY29kZXMgYW5kIGZsYWdzCi0vLwotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCByZWdiYXNlCi17Ci1wdWJsaWM6Ci0gICBlbnVtIGZsYWdfdHlwZV8KLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBEaXZpZGUgdGhlIGZsYWdzIHVwIGludG8gbG9naWNhbCBncm91cHM6Ci0gICAgICAvLyBiaXRzIDAtNyBpbmRpY2F0ZSBtYWluIHN5bmF0eCB0eXBlLgotICAgICAgLy8gYml0cyA4LTE1IGluZGljYXRlIHN5bnRheCBzdWJ0eXBlLgotICAgICAgLy8gYml0cyAxNi0zMSBpbmRpY2F0ZSBvcHRpb25zIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwKLSAgICAgIC8vIHJlZ2V4IHN5bnRheGVzLgotICAgICAgLy8gSW4gYWxsIGNhc2VzIHRoZSBkZWZhdWx0IGlzIDAuCi0gICAgICAvLwotICAgICAgLy8gTWFpbiBzeW5hdHggZ3JvdXA6Ci0gICAgICAvLwotICAgICAgcGVybF9zeW50YXhfZ3JvdXAgPSAwLCAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0Ci0gICAgICBiYXNpY19zeW50YXhfZ3JvdXAgPSAxLCAgICAgICAgICAgICAgICAgICAgIC8vIFBPU0lYIGJhc2ljCi0gICAgICBsaXRlcmFsID0gMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbCBjaGFyYWN0ZXJzIGFyZSBsaXRlcmFscwotICAgICAgbWFpbl9vcHRpb25fdHlwZSA9IGxpdGVyYWwgfCBiYXNpY19zeW50YXhfZ3JvdXAgfCBwZXJsX3N5bnRheF9ncm91cCwgLy8gZXZlcnl0aGluZyEKLSAgICAgIC8vCi0gICAgICAvLyBvcHRpb25zIHNwZWNpZmljIHRvIHBlcmwgZ3JvdXA6Ci0gICAgICAvLwotICAgICAgbm9fYmtfcmVmcyA9IDEgPDwgOCwgICAgICAgICAgICAgICAgICAgICAgICAvLyBcZCBub3QgYWxsb3dlZAotICAgICAgbm9fcGVybF9leCA9IDEgPDwgOSwgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlIHBlcmwgZXh0ZW5zaW9ucwotICAgICAgbm9fbW9kX20gPSAxIDw8IDEwLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlIFBlcmwgbSBtb2RpZmllcgotICAgICAgbW9kX3ggPSAxIDw8IDExLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQZXJsIHggbW9kaWZpZXIKLSAgICAgIG1vZF9zID0gMSA8PCAxMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yY2UgcyBtb2RpZmllciBvbiAob3ZlcnJpZGVzIG1hdGNoX25vdF9kb3RfbmV3bGluZSkKLSAgICAgIG5vX21vZF9zID0gMSA8PCAxMywgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yY2UgcyBtb2RpZmllciBvZmYgKG92ZXJyaWRlcyBtYXRjaF9ub3RfZG90X25ld2xpbmUpCi0KLSAgICAgIC8vCi0gICAgICAvLyBvcHRpb25zIHNwZWNpZmljIHRvIGJhc2ljIGdyb3VwOgotICAgICAgLy8KLSAgICAgIG5vX2NoYXJfY2xhc3NlcyA9IDEgPDwgOCwgICAgICAgICAgICAgICAgICAgLy8gW1s6Q0xBU1M6XV0gbm90IGFsbG93ZWQKLSAgICAgIG5vX2ludGVydmFscyA9IDEgPDwgOSwgICAgICAgICAgICAgICAgICAgICAgLy8ge3gseX0gbm90IGFsbG93ZWQKLSAgICAgIGJrX3BsdXNfcW0gPSAxIDw8IDEwLCAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlcyBcKyBhbmQgXD8KLSAgICAgIGJrX3ZiYXIgPSAxIDw8IDExLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIFx8IGZvciBhbHRlcm5hdGl2ZXMKLSAgICAgIGVtYWNzX2V4ID0gMSA8PCAxMiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyBlbWFjcyBleHRlbnNpb25zCi0KLSAgICAgIC8vCi0gICAgICAvLyBvcHRpb25zIGNvbW1vbiB0byBhbGwgZ3JvdXBzOgotICAgICAgLy8KLSAgICAgIG5vX2VzY2FwZV9pbl9saXN0cyA9IDEgPDwgMTYsICAgICAgICAgICAgICAgICAgICAgLy8gJ1wnIG5vdCBzcGVjaWFsIGluc2lkZSBbLi4uXQotICAgICAgbmV3bGluZV9hbHQgPSAxIDw8IDE3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBcbiBpcyB0aGUgc2FtZSBhcyB8Ci0gICAgICBub19leGNlcHQgPSAxIDw8IDE4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vIGV4Y2VwdGlvbiBvbiBlcnJvcgotICAgICAgZmFpbGJpdCA9IDEgPDwgMTksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlcnJvciBmbGFnCi0gICAgICBpY2FzZSA9IDEgPDwgMjAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgYXJlIG1hdGNoZWQgcmVnYXJkbGVzcyBvZiBjYXNlCi0gICAgICBub2NvbGxhdGUgPSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHVzZSBsb2NhbGUgc3BlY2lmaWMgY29sbGF0aW9uIChkZXByZWNhdGVkKQotICAgICAgY29sbGF0ZSA9IDEgPDwgMjEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgbG9jYWxlIHNwZWNpZmljIGNvbGxhdGlvbgotICAgICAgbm9zdWJzID0gMSA8PCAyMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBtYXJrIHN1Yi1leHByZXNzaW9ucwotICAgICAgc2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uID0gMSA8PCAyMywgICAgICAgICAgICAvLyBzYXZlIHN1YmV4cHJlc3Npb24gbG9jYXRpb25zCi0gICAgICBub19lbXB0eV9leHByZXNzaW9ucyA9IDEgPDwgMjQsICAgICAgICAgICAgICAgICAgIC8vIG5vIGVtcHR5IGV4cHJlc3Npb25zIGFsbG93ZWQKLSAgICAgIG9wdGltaXplID0gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IHJlYWxseSBzdXBwb3J0ZWQKLSAgICAgIAotCi0KLSAgICAgIGJhc2ljID0gYmFzaWNfc3ludGF4X2dyb3VwIHwgY29sbGF0ZSB8IG5vX2VzY2FwZV9pbl9saXN0cywKLSAgICAgIGV4dGVuZGVkID0gbm9fYmtfcmVmcyB8IGNvbGxhdGUgfCBub19wZXJsX2V4IHwgbm9fZXNjYXBlX2luX2xpc3RzLAotICAgICAgbm9ybWFsID0gMCwKLSAgICAgIGVtYWNzID0gYmFzaWNfc3ludGF4X2dyb3VwIHwgY29sbGF0ZSB8IGVtYWNzX2V4IHwgYmtfdmJhciwKLSAgICAgIGF3ayA9IG5vX2JrX3JlZnMgfCBjb2xsYXRlIHwgbm9fcGVybF9leCwKLSAgICAgIGdyZXAgPSBiYXNpYyB8IG5ld2xpbmVfYWx0LAotICAgICAgZWdyZXAgPSBleHRlbmRlZCB8IG5ld2xpbmVfYWx0LAotICAgICAgc2VkID0gYmFzaWMsCi0gICAgICBwZXJsID0gbm9ybWFsLAotICAgICAgRUNNQVNjcmlwdCA9IG5vcm1hbCwKLSAgICAgIEphdmFTY3JpcHQgPSBub3JtYWwsCi0gICAgICBKU2NyaXB0ID0gbm9ybWFsCi0gICB9OwotICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgZmxhZ190eXBlOwotCi0gICBlbnVtIHJlc3RhcnRfaW5mbwotICAgewotICAgICAgcmVzdGFydF9hbnkgPSAwLAotICAgICAgcmVzdGFydF93b3JkID0gMSwKLSAgICAgIHJlc3RhcnRfbGluZSA9IDIsCi0gICAgICByZXN0YXJ0X2J1ZiA9IDMsCi0gICAgICByZXN0YXJ0X2NvbnRpbnVlID0gNCwKLSAgICAgIHJlc3RhcnRfbGl0ID0gNSwKLSAgICAgIHJlc3RhcnRfZml4ZWRfbGl0ID0gNiwgCi0gICAgICByZXN0YXJ0X2NvdW50ID0gNwotICAgfTsKLX07Ci0KLS8vCi0vLyBwcm92aWRlIHN0ZCBsaWIgcHJvcG9zYWwgY29tcGF0aWJsZSBjb25zdGFudHM6Ci0vLwotbmFtZXNwYWNlIHJlZ2V4X2NvbnN0YW50c3sKLQotICAgZW51bSBmbGFnX3R5cGVfCi0gICB7Ci0KLSAgICAgIG5vX2V4Y2VwdCA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vX2V4Y2VwdCwKLSAgICAgIGZhaWxiaXQgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpmYWlsYml0LAotICAgICAgbGl0ZXJhbCA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmxpdGVyYWwsCi0gICAgICBpY2FzZSA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmljYXNlLAotICAgICAgbm9jb2xsYXRlID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9jb2xsYXRlLAotICAgICAgY29sbGF0ZSA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmNvbGxhdGUsCi0gICAgICBub3N1YnMgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub3N1YnMsCi0gICAgICBvcHRpbWl6ZSA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om9wdGltaXplLAotICAgICAgYmtfcGx1c19xbSA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmJrX3BsdXNfcW0sCi0gICAgICBia192YmFyID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6YmtfdmJhciwKLSAgICAgIG5vX2ludGVydmFscyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vX2ludGVydmFscywKLSAgICAgIG5vX2NoYXJfY2xhc3NlcyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vX2NoYXJfY2xhc3NlcywKLSAgICAgIG5vX2VzY2FwZV9pbl9saXN0cyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vX2VzY2FwZV9pbl9saXN0cywKLSAgICAgIG5vX21vZF9tID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9fbW9kX20sCi0gICAgICBtb2RfeCA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om1vZF94LAotICAgICAgbW9kX3MgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjptb2RfcywKLSAgICAgIG5vX21vZF9zID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9fbW9kX3MsCi0gICAgICBzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24gPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24sCi0gICAgICBub19lbXB0eV9leHByZXNzaW9ucyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vX2VtcHR5X2V4cHJlc3Npb25zLAotCi0gICAgICBiYXNpYyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmJhc2ljLAotICAgICAgZXh0ZW5kZWQgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpleHRlbmRlZCwKLSAgICAgIG5vcm1hbCA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vcm1hbCwKLSAgICAgIGVtYWNzID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6ZW1hY3MsCi0gICAgICBhd2sgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjphd2ssCi0gICAgICBncmVwID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6Z3JlcCwKLSAgICAgIGVncmVwID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6ZWdyZXAsCi0gICAgICBzZWQgPSBiYXNpYywKLSAgICAgIHBlcmwgPSBub3JtYWwsCi0gICAgICBFQ01BU2NyaXB0ID0gbm9ybWFsLAotICAgICAgSmF2YVNjcmlwdCA9IG5vcm1hbCwKLSAgICAgIEpTY3JpcHQgPSBub3JtYWwKLSAgIH07Ci0gICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmZsYWdfdHlwZSBzeW50YXhfb3B0aW9uX3R5cGU7Ci0KLX0gLy8gbmFtZXNwYWNlIHJlZ2V4X2NvbnN0YW50cwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmQzMTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleC5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIG5kbmJvb3N0OjpiYXNpY19yZWdleDw+IGFuZCBhc3NvY2lhdGVkCi0gICogICAgICAgICAgICAgICAgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLiBUaGlzIGhlYWRlciBpcyB0aGUgbWFpbgotICAqICAgICAgICAgICAgICAgIGVudHJ5IHBvaW50IGZvciB0aGUgdGVtcGxhdGUgcmVnZXggY29kZS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRV9SRUdFWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVfUkVHRVhfSFBQX0lOQ0xVREVECi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0vLyB3aGF0IGZvbGxvd3MgaXMgYWxsIEMrKyBkb24ndCBpbmNsdWRlIGluIEMgYnVpbGRzISEKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9XT1JLQVJPVU5EX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3dvcmthcm91bmQuaHBwPgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfRldEX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4X2Z3ZC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3JlZ2V4X3RyYWl0cy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfUkFXX0JVRkZFUl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9lcnJvcl90eXBlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9NQVRDSF9GTEFHUwotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX2ZsYWdzLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9SQVdfQlVGRkVSX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Jhd19idWZmZXIuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFX1BBVF9FWENFUFRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGF0dGVybl9leGNlcHQuaHBwPgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfQ0hBUl9SRUdFWF9UUkFJVFNfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvY2hhcl9yZWdleF90cmFpdHMuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1NUQVRFU19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9zdGF0ZXMuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0JBU0VfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnYmFzZS5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfSVRFUkFUT1JfVFJBSVRTX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXguaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0JBU0lDX1JFR0VYX0NSRUFUT1JfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfY3JlYXRvci5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfUEFSU0VSX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X3BhcnNlci5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfU1VCX01BVENIX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3N1Yl9tYXRjaC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfRk9STUFUX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2Zvcm1hdC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfTUFUQ0hfUkVTVUxUU19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9tYXRjaF9yZXN1bHRzLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9QUk9URUNURURfQ0FMTF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9wcm90ZWN0ZWRfY2FsbC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hFUl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXIuaHBwPgotI2VuZGlmCi0vLwotLy8gdGVtcGxhdGUgaW5zdGFuY2VzOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIGNoYXIKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OQVJST1dfSU5TVEFOVElBVEUKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvaW5zdGFuY2VzLmhwcD4KLSN1bmRlZiBORE5CT09TVF9SRUdFWF9DSEFSX1QKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgdW5kZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9DSEFSX1Qgd2NoYXJfdAotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX1dJREVfSU5TVEFOVElBVEUKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvaW5zdGFuY2VzLmhwcD4KLSN1bmRlZiBORE5CT09TVF9SRUdFWF9DSEFSX1QKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgdW5kZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpICYmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QpCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NIQVJfVCB1bnNpZ25lZCBzaG9ydAotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX1VTX0lOU1RBTlRJQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2luc3RhbmNlcy5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfUkVHRVhfQ0hBUl9UCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSMgIHVuZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT19GV0QKLXR5cGVkZWYgYmFzaWNfcmVnZXg8Y2hhciwgcmVnZXhfdHJhaXRzPGNoYXI+ID4gcmVnZXg7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdHlwZWRlZiBiYXNpY19yZWdleDx3Y2hhcl90LCByZWdleF90cmFpdHM8d2NoYXJfdD4gPiB3cmVnZXg7Ci0jZW5kaWYKLSNlbmRpZgotCi10eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhcio+IGNtYXRjaDsKLXR5cGVkZWYgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHNtYXRjaDsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+IHdjbWF0Y2g7Ci10eXBlZGVmIG1hdGNoX3Jlc3VsdHM8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gd3NtYXRjaDsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9tYXRjaC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfU0VBUkNIX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3NlYXJjaC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfSVRFUkFUT1JfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfaXRlcmF0b3IuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9HUkVQX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2dyZXAuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1JFUExBQ0VfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmVwbGFjZS5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfTUVSR0VfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfbWVyZ2UuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NQTElUX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3NwbGl0LmhwcD4KLSNlbmRpZgotCi0jZW5kaWYgIC8vIF9fY3BsdXNwbHVzCi0KLSNlbmRpZiAgLy8gaW5jbHVkZQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2Zvcm1hdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2Zvcm1hdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMzk3YTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9mb3JtYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE1NiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5IEpvaG4gTWFkZG9jawotICogQ29weXJpZ2h0IDIwMDggRXJpYyBOaWVibGVyLiAKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfZm9ybWF0LmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgZm9ybWF0dGluZyBvdXRwdXQgcm91dGluZXMgZm9yIHNlYXJjaCBhbmQgcmVwbGFjZQotICAqICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuICBOb3RlIHRoaXMgaXMgYW4gaW50ZXJuYWwgaGVhZGVyIGZpbGUgaW5jbHVkZWQKLSAgKiAgICAgICAgICAgICAgICBieSByZWdleC5ocHAsIGRvIG5vdCBpbmNsdWRlIG9uIGl0cyBvd24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfRk9STUFUX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GT1JNQVRfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLy8KLS8vIEZvcndhcmQgZGVjbGFyYXRpb246Ci0vLwotICAgdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdGQ6OnZlY3RvcjxzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiA+OjphbGxvY2F0b3JfdHlwZSA+Ci1jbGFzcyBtYXRjaF9yZXN1bHRzOwotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0vLwotLy8gc3RydWN0IHRyaXZpYWxfZm9ybWF0X3RyYWl0czoKLS8vIGRlZmluZXMgbWluaW11bSBsb2NhbGlzYXRpb24gc3VwcG9ydCBmb3IgZm9ybWF0dGluZwotLy8gaW4gdGhlIGNhc2UgdGhhdCB0aGUgYWN0dWFsIHJlZ2V4IHRyYWl0cyBpcyB1bmF2YWlsYWJsZS4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdHJ1Y3QgdHJpdmlhbF9mb3JtYXRfdHJhaXRzCi17Ci0gICB0eXBlZGVmIGNoYXJUIGNoYXJfdHlwZTsKLQotICAgc3RhdGljIHN0ZDo6cHRyZGlmZl90IGxlbmd0aChjb25zdCBjaGFyVCogcCkKLSAgIHsKLSAgICAgIHJldHVybiBnbG9iYWxfbGVuZ3RoKHApOwotICAgfQotICAgc3RhdGljIGNoYXJUIHRvbG93ZXIoY2hhclQgYykKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6Omdsb2JhbF9sb3dlcihjKTsKLSAgIH0KLSAgIHN0YXRpYyBjaGFyVCB0b3VwcGVyKGNoYXJUIGMpCi0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnbG9iYWxfdXBwZXIoYyk7Ci0gICB9Ci0gICBzdGF0aWMgaW50IHZhbHVlKGNvbnN0IGNoYXJUIGMsIGludCByYWRpeCkKLSAgIHsKLSAgICAgIGludCByZXN1bHQgPSBnbG9iYWxfdmFsdWUoYyk7Ci0gICAgICByZXR1cm4gcmVzdWx0ID49IHJhZGl4ID8gLTEgOiByZXN1bHQ7Ci0gICB9Ci0gICBpbnQgdG9pKGNvbnN0IGNoYXJUKiYgcDEsIGNvbnN0IGNoYXJUKiBwMiwgaW50IHJhZGl4KWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gZ2xvYmFsX3RvaShwMSwgcDIsIHJhZGl4LCAqdGhpcyk7Ci0gICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci1jbGFzcyBiYXNpY19yZWdleF9mb3JtYXR0ZXIKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotICAgYmFzaWNfcmVnZXhfZm9ybWF0dGVyKE91dHB1dEl0ZXJhdG9yIG8sIGNvbnN0IFJlc3VsdHMmIHIsIGNvbnN0IHRyYWl0cyYgdCkKLSAgICAgIDogbV90cmFpdHModCksIG1fcmVzdWx0cyhyKSwgbV9vdXQobyksIG1fc3RhdGUob3V0cHV0X2NvcHkpLCBtX3Jlc3RvcmVfc3RhdGUob3V0cHV0X2NvcHkpLCBtX2hhdmVfY29uZGl0aW9uYWwoZmFsc2UpIHt9Ci0gICBPdXRwdXRJdGVyYXRvciBmb3JtYXQoRm9yd2FyZEl0ZXIgcDEsIEZvcndhcmRJdGVyIHAyLCBtYXRjaF9mbGFnX3R5cGUgZik7Ci0gICBPdXRwdXRJdGVyYXRvciBmb3JtYXQoRm9yd2FyZEl0ZXIgcDEsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgewotICAgICAgcmV0dXJuIGZvcm1hdChwMSwgcDEgKyBtX3RyYWl0cy5sZW5ndGgocDEpLCBmKTsKLSAgIH0KLXByaXZhdGU6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIFJlc3VsdHM6OnZhbHVlX3R5cGUgc3ViX21hdGNoX3R5cGU7Ci0gICBlbnVtIG91dHB1dF9zdGF0ZQotICAgewotICAgICAgb3V0cHV0X2NvcHksCi0gICAgICBvdXRwdXRfbmV4dF9sb3dlciwKLSAgICAgIG91dHB1dF9uZXh0X3VwcGVyLAotICAgICAgb3V0cHV0X2xvd2VyLAotICAgICAgb3V0cHV0X3VwcGVyLAotICAgICAgb3V0cHV0X25vbmUKLSAgIH07Ci0KLSAgIHZvaWQgcHV0KGNoYXJfdHlwZSBjKTsKLSAgIHZvaWQgcHV0KGNvbnN0IHN1Yl9tYXRjaF90eXBlJiBzdWIpOwotICAgdm9pZCBmb3JtYXRfYWxsKCk7Ci0gICB2b2lkIGZvcm1hdF9wZXJsKCk7Ci0gICB2b2lkIGZvcm1hdF9lc2NhcGUoKTsKLSAgIHZvaWQgZm9ybWF0X2NvbmRpdGlvbmFsKCk7Ci0gICB2b2lkIGZvcm1hdF91bnRpbF9zY29wZV9lbmQoKTsKLSAgIGJvb2wgaGFuZGxlX3BlcmxfdmVyYihib29sIGhhdmVfYnJhY2UpOwotCi0gICBpbmxpbmUgdHlwZW5hbWUgUmVzdWx0czo6dmFsdWVfdHlwZSBjb25zdCYgZ2V0X25hbWVkX3N1YihGb3J3YXJkSXRlciBpLCBGb3J3YXJkSXRlciBqLCBjb25zdCBtcGw6OmZhbHNlXyYpCi0gICB7Ci0gICAgICBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+IHYoaSwgaik7Ci0gICAgICByZXR1cm4gKGkgIT0gaikgPyB0aGlzLT5tX3Jlc3VsdHMubmFtZWRfc3ViZXhwcmVzc2lvbigmdlswXSwgJnZbMF0gKyB2LnNpemUoKSkKLSAgICAgICAgIDogdGhpcy0+bV9yZXN1bHRzLm5hbWVkX3N1YmV4cHJlc3Npb24oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4oMCksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KDApKTsKLSAgIH0KLSAgIGlubGluZSB0eXBlbmFtZSBSZXN1bHRzOjp2YWx1ZV90eXBlIGNvbnN0JiBnZXRfbmFtZWRfc3ViKEZvcndhcmRJdGVyIGksIEZvcndhcmRJdGVyIGosIGNvbnN0IG1wbDo6dHJ1ZV8mKQotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fcmVzdWx0cy5uYW1lZF9zdWJleHByZXNzaW9uKGksIGopOwotICAgfQotICAgaW5saW5lIHR5cGVuYW1lIFJlc3VsdHM6OnZhbHVlX3R5cGUgY29uc3QmIGdldF9uYW1lZF9zdWIoRm9yd2FyZEl0ZXIgaSwgRm9yd2FyZEl0ZXIgaikKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPEZvcndhcmRJdGVyLCBjb25zdCBjaGFyX3R5cGUqPjo6dHlwZSB0YWdfdHlwZTsKLSAgICAgIHJldHVybiBnZXRfbmFtZWRfc3ViKGksIGosIHRhZ190eXBlKCkpOwotICAgfQotICAgaW5saW5lIGludCBnZXRfbmFtZWRfc3ViX2luZGV4KEZvcndhcmRJdGVyIGksIEZvcndhcmRJdGVyIGosIGNvbnN0IG1wbDo6ZmFsc2VfJikKLSAgIHsKLSAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gdihpLCBqKTsKLSAgICAgIHJldHVybiAoaSAhPSBqKSA/IHRoaXMtPm1fcmVzdWx0cy5uYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KCZ2WzBdLCAmdlswXSArIHYuc2l6ZSgpKQotICAgICAgICAgOiB0aGlzLT5tX3Jlc3VsdHMubmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleChzdGF0aWNfY2FzdDxjb25zdCBjaGFyX3R5cGUqPigwKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4oMCkpOwotICAgfQotICAgaW5saW5lIGludCBnZXRfbmFtZWRfc3ViX2luZGV4KEZvcndhcmRJdGVyIGksIEZvcndhcmRJdGVyIGosIGNvbnN0IG1wbDo6dHJ1ZV8mKQotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fcmVzdWx0cy5uYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KGksIGopOwotICAgfQotICAgaW5saW5lIGludCBnZXRfbmFtZWRfc3ViX2luZGV4KEZvcndhcmRJdGVyIGksIEZvcndhcmRJdGVyIGopCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxGb3J3YXJkSXRlciwgY29uc3QgY2hhcl90eXBlKj46OnR5cGUgdGFnX3R5cGU7Ci0gICAgICByZXR1cm4gZ2V0X25hbWVkX3N1Yl9pbmRleChpLCBqLCB0YWdfdHlwZSgpKTsKLSAgIH0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0gICAvLyBtc3ZjLTguMCBpc3N1ZXMgYSBzcHVyaW91cyB3YXJuaW5nIG9uIHRoZSBjYWxsIHRvIHN0ZDo6YWR2YW5jZSBoZXJlOgotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2VuZGlmCi0gICBpbmxpbmUgaW50IHRvaShGb3J3YXJkSXRlciYgaSwgRm9yd2FyZEl0ZXIgaiwgaW50IGJhc2UsIGNvbnN0IG5kbmJvb3N0OjptcGw6OmZhbHNlXyYpCi0gICB7Ci0gICAgICBpZihpICE9IGopCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+IHYoaSwgaik7Ci0gICAgICAgICBjb25zdCBjaGFyX3R5cGUqIHN0YXJ0ID0gJnZbMF07Ci0gICAgICAgICBjb25zdCBjaGFyX3R5cGUqIHBvcyA9IHN0YXJ0OwotICAgICAgICAgaW50IHIgPSBtX3RyYWl0cy50b2kocG9zLCAmdlswXSArIHYuc2l6ZSgpLCBiYXNlKTsKLSAgICAgICAgIHN0ZDo6YWR2YW5jZShpLCBwb3MgLSBzdGFydCk7Ci0gICAgICAgICByZXR1cm4gcjsKLSAgICAgIH0KLSAgICAgIHJldHVybiAtMTsKLSAgIH0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0gICBpbmxpbmUgaW50IHRvaShGb3J3YXJkSXRlciYgaSwgRm9yd2FyZEl0ZXIgaiwgaW50IGJhc2UsIGNvbnN0IG5kbmJvb3N0OjptcGw6OnRydWVfJikKLSAgIHsKLSAgICAgIHJldHVybiBtX3RyYWl0cy50b2koaSwgaiwgYmFzZSk7Ci0gICB9Ci0gICBpbmxpbmUgaW50IHRvaShGb3J3YXJkSXRlciYgaSwgRm9yd2FyZEl0ZXIgaiwgaW50IGJhc2UpCi0gICB7Ci0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSAmJiAoKF9fSU5URUxfQ09NUElMRVIgPT0gOTk5OSkgfHwgKF9fSU5URUxfQ09NUElMRVIgPT0gMTIxMCkpCi0gICAgICAvLyBXb3JrYXJvdW5kIGZvciBJbnRlbCBzdXBwb3J0IGlzc3VlICM2NTY2NTQuCi0gICAgICAvLyBTZWUgYWxzbyBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvNjM1OQotICAgICAgcmV0dXJuIHRvaShpLCBqLCBiYXNlLCBtcGw6OmZhbHNlXygpKTsKLSNlbHNlCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxGb3J3YXJkSXRlciwgY29uc3QgY2hhcl90eXBlKiY+Ojp0eXBlIHRhZ190eXBlOwotICAgICAgcmV0dXJuIHRvaShpLCBqLCBiYXNlLCB0YWdfdHlwZSgpKTsKLSNlbmRpZgotICAgfQotCi0gICBjb25zdCB0cmFpdHMmICAgIG1fdHJhaXRzOyAgICAgICAvLyB0aGUgdHJhaXRzIGNsYXNzIGZvciBsb2NhbGlzZWQgZm9ybWF0dGluZyBvcGVyYXRpb25zCi0gICBjb25zdCBSZXN1bHRzJiAgIG1fcmVzdWx0czsgICAgIC8vIHRoZSBtYXRjaF9yZXN1bHRzIGJlaW5nIHVzZWQuCi0gICBPdXRwdXRJdGVyYXRvciAgIG1fb3V0OyAgICAgICAgIC8vIHdoZXJlIHRvIHNlbmQgb3V0cHV0LgotICAgRm9yd2FyZEl0ZXIgICAgICBtX3Bvc2l0aW9uOyAgLy8gZm9ybWF0IHN0cmluZywgY3VycmVudCBwb3NpdGlvbgotICAgRm9yd2FyZEl0ZXIgICAgICBtX2VuZDsgICAgICAgLy8gZm9ybWF0IHN0cmluZyBlbmQKLSAgIG1hdGNoX2ZsYWdfdHlwZSAgbV9mbGFnczsgICAgICAvLyBmb3JtYXQgZmxhZ3MgdG8gdXNlCi0gICBvdXRwdXRfc3RhdGUgICAgIG1fc3RhdGU7ICAgICAgLy8gd2hhdCB0byBkbyB3aXRoIHRoZSBuZXh0IGNoYXJhY3RlcgotICAgb3V0cHV0X3N0YXRlICAgICBtX3Jlc3RvcmVfc3RhdGU7ICAvLyB3aGF0IHN0YXRlIHRvIHJlc3RvcmUgdG8uCi0gICBib29sICAgICAgICAgICAgIG1faGF2ZV9jb25kaXRpb25hbDsgLy8gd2UgYXJlIHBhcnNpbmcgYSBjb25kaXRpb25hbAotcHJpdmF0ZToKLSAgIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcihjb25zdCBiYXNpY19yZWdleF9mb3JtYXR0ZXImKTsKLSAgIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3JlZ2V4X2Zvcm1hdHRlciYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotT3V0cHV0SXRlcmF0b3IgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6Zm9ybWF0KEZvcndhcmRJdGVyIHAxLCBGb3J3YXJkSXRlciBwMiwgbWF0Y2hfZmxhZ190eXBlIGYpCi17Ci0gICBtX3Bvc2l0aW9uID0gcDE7Ci0gICBtX2VuZCA9IHAyOwotICAgbV9mbGFncyA9IGY7Ci0gICBmb3JtYXRfYWxsKCk7Ci0gICByZXR1cm4gbV9vdXQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6Zm9ybWF0X2FsbCgpCi17Ci0gICAvLyBvdmVyIGFuZCBvdmVyOgotICAgd2hpbGUobV9wb3NpdGlvbiAhPSBtX2VuZCkKLSAgIHsKLSAgICAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgIGNhc2UgJyYnOgotICAgICAgICAgaWYobV9mbGFncyAmIDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X3NlZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHB1dChtX3Jlc3VsdHNbMF0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBwdXQoKm1fcG9zaXRpb24rKyk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgIGZvcm1hdF9lc2NhcGUoKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnKCc6Ci0gICAgICAgICBpZihtX2ZsYWdzICYgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2FsbCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGJvb2wgaGF2ZV9jb25kaXRpb25hbCA9IG1faGF2ZV9jb25kaXRpb25hbDsKLSAgICAgICAgICAgIG1faGF2ZV9jb25kaXRpb25hbCA9IGZhbHNlOwotICAgICAgICAgICAgZm9ybWF0X3VudGlsX3Njb3BlX2VuZCgpOwotICAgICAgICAgICAgbV9oYXZlX2NvbmRpdGlvbmFsID0gaGF2ZV9jb25kaXRpb25hbDsKLSAgICAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoKm1fcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignKScpKTsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsgIC8vIHNraXAgdGhlIGNsb3NpbmcgJyknCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbik7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJyknOgotICAgICAgICAgaWYobV9mbGFncyAmIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmZvcm1hdF9hbGwpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICBwdXQoKm1fcG9zaXRpb24pOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICc6JzoKLSAgICAgICAgIGlmKChtX2ZsYWdzICYgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2FsbCkgJiYgbV9oYXZlX2NvbmRpdGlvbmFsKQotICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKTsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnPyc6Ci0gICAgICAgICBpZihtX2ZsYWdzICYgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2FsbCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZvcm1hdF9jb25kaXRpb25hbCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBwdXQoKm1fcG9zaXRpb24pOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICckJzoKLSAgICAgICAgIGlmKChtX2ZsYWdzICYgZm9ybWF0X3NlZCkgPT0gMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZvcm1hdF9wZXJsKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIG5vdCBhIHNwZWNpYWwgY2hhcmFjdGVyOgotICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKTsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci12b2lkIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjxPdXRwdXRJdGVyYXRvciwgUmVzdWx0cywgdHJhaXRzLCBGb3J3YXJkSXRlcj46OmZvcm1hdF9wZXJsKCkKLXsKLSAgIC8vCi0gICAvLyBPbiBlbnRyeSAqbV9wb3NpdGlvbiBwb2ludHMgdG8gYSAnJCcgY2hhcmFjdGVyCi0gICAvLyBvdXRwdXQgdGhlIGluZm9ybWF0aW9uIHRoYXQgZ29lcyB3aXRoIGl0OgotICAgLy8KLSAgIE5ETkJPT1NUX0FTU0VSVCgqbV9wb3NpdGlvbiA9PSAnJCcpOwotICAgLy8KLSAgIC8vIHNlZSBpZiB0aGlzIGlzIGEgdHJhaWxpbmcgJyQnOgotICAgLy8KLSAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHB1dCgqbV9wb3NpdGlvbik7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICAvLwotICAgLy8gT0sgZmluZCBvdXQgd2hhdCBraW5kIGl0IGlzOgotICAgLy8KLSAgIGJvb2wgaGF2ZV9icmFjZSA9IGZhbHNlOwotICAgRm9yd2FyZEl0ZXIgc2F2ZV9wb3NpdGlvbiA9IG1fcG9zaXRpb247Ci0gICBzd2l0Y2goKm1fcG9zaXRpb24pCi0gICB7Ci0gICBjYXNlICcmJzoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHNbMF0pOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICdgJzoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHMucHJlZml4KCkpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICdcJyc6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBwdXQodGhpcy0+bV9yZXN1bHRzLnN1ZmZpeCgpKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnJCc6Ci0gICAgICBwdXQoKm1fcG9zaXRpb24rKyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJysnOgotICAgICAgaWYoKCsrbV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09ICd7JykpCi0gICAgICB7Ci0gICAgICAgICBGb3J3YXJkSXRlciBiYXNlID0gKyttX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiAhPSAnfScpKSArK21fcG9zaXRpb247Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uICE9IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gTmFtZWQgc3ViLWV4cHJlc3Npb246Ci0gICAgICAgICAgICBwdXQoZ2V0X25hbWVkX3N1YihiYXNlLCBtX3Bvc2l0aW9uKSk7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fcG9zaXRpb24gPSAtLWJhc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwdXQoKHRoaXMtPm1fcmVzdWx0cylbdGhpcy0+bV9yZXN1bHRzLnNpemUoKSA+IDEgPyBzdGF0aWNfY2FzdDxpbnQ+KHRoaXMtPm1fcmVzdWx0cy5zaXplKCkgLSAxKSA6IDFdKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAneyc6Ci0gICAgICBoYXZlX2JyYWNlID0gdHJ1ZTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgZGVmYXVsdDoKLSAgICAgIC8vIHNlZSBpZiB3ZSBoYXZlIGEgbnVtYmVyOgotICAgICAgewotICAgICAgICAgc3RkOjpwdHJkaWZmX3QgbGVuID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX3Bvc2l0aW9uLCBtX2VuZCk7Ci0gICAgICAgICAvL2xlbiA9IChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDIpLCBsZW4pOwotICAgICAgICAgaW50IHYgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIGxlbiwgMTApOwotICAgICAgICAgaWYoKHYgPCAwKSB8fCAoaGF2ZV9icmFjZSAmJiAoKG1fcG9zaXRpb24gPT0gbV9lbmQpIHx8ICgqbV9wb3NpdGlvbiAhPSAnfScpKSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBMb29rIGZvciBhIFBlcmwtNS4xMCB2ZXJiOgotICAgICAgICAgICAgaWYoIWhhbmRsZV9wZXJsX3ZlcmIoaGF2ZV9icmFjZSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBsZWF2ZSB0aGUgJCBhcyBpcywgYW5kIGNhcnJ5IG9uOgotICAgICAgICAgICAgICAgbV9wb3NpdGlvbiA9IC0tc2F2ZV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHB1dCgqbV9wb3NpdGlvbik7Ci0gICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIG90aGVyd2lzZSBvdXRwdXQgc3ViIHY6Ci0gICAgICAgICBwdXQodGhpcy0+bV9yZXN1bHRzW3ZdKTsKLSAgICAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICB9Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLWJvb2wgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6aGFuZGxlX3BlcmxfdmVyYihib29sIGhhdmVfYnJhY2UpCi17Ci0gICAvLyAKLSAgIC8vIFdlIG1heSBoYXZlIGEgY2FwaXRhbGlzZWQgc3RyaW5nIGNvbnRhaW5pbmcgYSBQZXJsIGFjdGlvbjoKLSAgIC8vCi0gICBzdGF0aWMgY29uc3QgY2hhcl90eXBlIE1BVENIW10gPSB7ICdNJywgJ0EnLCAnVCcsICdDJywgJ0gnIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhcl90eXBlIFBSRU1BVENIW10gPSB7ICdQJywgJ1InLCAnRScsICdNJywgJ0EnLCAnVCcsICdDJywgJ0gnIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhcl90eXBlIFBPU1RNQVRDSFtdID0geyAnUCcsICdPJywgJ1MnLCAnVCcsICdNJywgJ0EnLCAnVCcsICdDJywgJ0gnIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhcl90eXBlIExBU1RfUEFSRU5fTUFUQ0hbXSA9IHsgJ0wnLCAnQScsICdTJywgJ1QnLCAnXycsICdQJywgJ0EnLCAnUicsICdFJywgJ04nLCAnXycsICdNJywgJ0EnLCAnVCcsICdDJywgJ0gnIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhcl90eXBlIExBU1RfU1VCTUFUQ0hfUkVTVUxUW10gPSB7ICdMJywgJ0EnLCAnUycsICdUJywgJ18nLCAnUycsICdVJywgJ0InLCAnTScsICdBJywgJ1QnLCAnQycsICdIJywgJ18nLCAnUicsICdFJywgJ1MnLCAnVScsICdMJywgJ1QnIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhcl90eXBlIExBU1RfU1VCTUFUQ0hfUkVTVUxUX0FMVFtdID0geyAnXicsICdOJyB9OwotCi0gICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgaWYoaGF2ZV9icmFjZSAmJiAoKm1fcG9zaXRpb24gPT0gJ14nKSkKLSAgICAgICsrbV9wb3NpdGlvbjsKLQotICAgc3RkOjpwdHJkaWZmX3QgbWF4X2xlbiA9IG1fZW5kIC0gbV9wb3NpdGlvbjsKLQotICAgaWYoKG1heF9sZW4gPj0gNSkgJiYgc3RkOjplcXVhbChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgNSwgTUFUQ0gpKQotICAgewotICAgICAgbV9wb3NpdGlvbiArPSA1OwotICAgICAgaWYoaGF2ZV9icmFjZSkKLSAgICAgIHsKLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gJ30nKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fcG9zaXRpb24gLT0gNTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHNbMF0pOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobWF4X2xlbiA+PSA4KSAmJiBzdGQ6OmVxdWFsKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyA4LCBQUkVNQVRDSCkpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uICs9IDg7Ci0gICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgewotICAgICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSAnfScpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSA4OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0cy5wcmVmaXgoKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKChtYXhfbGVuID49IDkpICYmIHN0ZDo6ZXF1YWwobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIDksIFBPU1RNQVRDSCkpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uICs9IDk7Ci0gICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgewotICAgICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSAnfScpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSA5OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0cy5zdWZmaXgoKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKChtYXhfbGVuID49IDE2KSAmJiBzdGQ6OmVxdWFsKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyAxNiwgTEFTVF9QQVJFTl9NQVRDSCkpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uICs9IDE2OwotICAgICAgaWYoaGF2ZV9icmFjZSkKLSAgICAgIHsKLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gJ30nKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fcG9zaXRpb24gLT0gMTY7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwdXQoKHRoaXMtPm1fcmVzdWx0cylbdGhpcy0+bV9yZXN1bHRzLnNpemUoKSA+IDEgPyBzdGF0aWNfY2FzdDxpbnQ+KHRoaXMtPm1fcmVzdWx0cy5zaXplKCkgLSAxKSA6IDFdKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYoKG1heF9sZW4gPj0gMjApICYmIHN0ZDo6ZXF1YWwobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIDIwLCBMQVNUX1NVQk1BVENIX1JFU1VMVCkpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uICs9IDIwOwotICAgICAgaWYoaGF2ZV9icmFjZSkKLSAgICAgIHsKLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gJ30nKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fcG9zaXRpb24gLT0gMjA7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwdXQodGhpcy0+bV9yZXN1bHRzLmdldF9sYXN0X2Nsb3NlZF9wYXJlbigpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYoKG1heF9sZW4gPj0gMikgJiYgc3RkOjplcXVhbChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgMiwgTEFTVF9TVUJNQVRDSF9SRVNVTFRfQUxUKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gKz0gMjsKLSAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICB7Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09ICd9JykpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uIC09IDI7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwdXQodGhpcy0+bV9yZXN1bHRzLmdldF9sYXN0X2Nsb3NlZF9wYXJlbigpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci12b2lkIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjxPdXRwdXRJdGVyYXRvciwgUmVzdWx0cywgdHJhaXRzLCBGb3J3YXJkSXRlcj46OmZvcm1hdF9lc2NhcGUoKQotewotICAgLy8gc2tpcCB0aGUgZXNjYXBlIGFuZCBjaGVjayBmb3IgdHJhaWxpbmcgZXNjYXBlOgotICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xcJykpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgLy8gbm93IHN3aXRjaCBvbiB0aGUgZXNjYXBlIHR5cGU6Ci0gICBzd2l0Y2goKm1fcG9zaXRpb24pCi0gICB7Ci0gICBjYXNlICdhJzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcYScpKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnZic6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXGYnKSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ24nOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xuJykpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICdyJzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdccicpKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAndCc6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXHQnKSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ3YnOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1x2JykpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICd4JzoKLSAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCd4JykpOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgLy8gbWF5YmUgaGF2ZSBceHtkZGR9Ci0gICAgICBpZigqbV9wb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCd7JykpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBpbnQgdmFsID0gdGhpcy0+dG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxNik7Ci0gICAgICAgICBpZih2YWwgPCAwKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gaW52YWxpZCB2YWx1ZSB0cmVhdCBldmVyeXRoaW5nIGFzIGxpdGVyYWxzOgotICAgICAgICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ3gnKSk7Ci0gICAgICAgICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPigneycpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uID09IG1fZW5kKSB8fCAoKm1fcG9zaXRpb24gIT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignfScpKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKCptX3Bvc2l0aW9uICE9IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xcJykpCi0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBwdXQoKm1fcG9zaXRpb24rKyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPih2YWwpKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6cHRyZGlmZl90IGxlbiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9wb3NpdGlvbiwgbV9lbmQpOwotICAgICAgICAgbGVuID0gKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMiksIGxlbik7Ci0gICAgICAgICBpbnQgdmFsID0gdGhpcy0+dG9pKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBsZW4sIDE2KTsKLSAgICAgICAgIGlmKHZhbCA8IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBwdXQoKm1fcG9zaXRpb24rKyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPih2YWwpKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgY2FzZSAnYyc6Ci0gICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICBwdXQoKm1fcG9zaXRpb24rKyk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPigqbV9wb3NpdGlvbisrICUgMzIpKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnZSc6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPigyNykpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotICAgICAgLy8gc2VlIGlmIHdlIGhhdmUgYSBwZXJsIHNwZWNpZmljIGVzY2FwZToKLSAgICAgIGlmKChtX2ZsYWdzICYgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X3NlZCkgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIGJvb2wgYnJlYWtvdXQgPSBmYWxzZTsKLSAgICAgICAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgICAgICAgIHsKLSAgICAgICAgIGNhc2UgJ2wnOgotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgbV9yZXN0b3JlX3N0YXRlID0gbV9zdGF0ZTsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBvdXRwdXRfbmV4dF9sb3dlcjsKLSAgICAgICAgICAgIGJyZWFrb3V0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSAnTCc6Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBtX3N0YXRlID0gb3V0cHV0X2xvd2VyOwotICAgICAgICAgICAgYnJlYWtvdXQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fcmVzdG9yZV9zdGF0ZSA9IG1fc3RhdGU7Ci0gICAgICAgICAgICBtX3N0YXRlID0gb3V0cHV0X25leHRfdXBwZXI7Ci0gICAgICAgICAgICBicmVha291dCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgJ1UnOgotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgbV9zdGF0ZSA9IG91dHB1dF91cHBlcjsKLSAgICAgICAgICAgIGJyZWFrb3V0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSAnRSc6Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBtX3N0YXRlID0gb3V0cHV0X2NvcHk7Ci0gICAgICAgICAgICBicmVha291dCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKGJyZWFrb3V0KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICAvLyBzZWUgaWYgd2UgaGF2ZSBhIFxuIHNlZCBzdHlsZSBiYWNrcmVmZXJlbmNlOgotICAgICAgc3RkOjpwdHJkaWZmX3QgbGVuID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX3Bvc2l0aW9uLCBtX2VuZCk7Ci0gICAgICBsZW4gPSAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigxKSwgbGVuKTsKLSAgICAgIGludCB2ID0gdGhpcy0+dG9pKG1fcG9zaXRpb24sIG1fcG9zaXRpb24rbGVuLCAxMCk7Ci0gICAgICBpZigodiA+IDApIHx8ICgodiA9PSAwKSAmJiAobV9mbGFncyAmIDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X3NlZCkpKQotICAgICAgewotICAgICAgICAgcHV0KG1fcmVzdWx0c1t2XSk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYodiA9PSAwKQotICAgICAgewotICAgICAgICAgLy8gb2N0YWwgZWNhcGUgc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICBsZW4gPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fcG9zaXRpb24sIG1fZW5kKTsKLSAgICAgICAgIGxlbiA9IChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDQpLCBsZW4pOwotICAgICAgICAgdiA9IHRoaXMtPnRvaShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbGVuLCA4KTsKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCh2ID49IDApOwotICAgICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4odikpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICAvLyBPdGhlcndpc2Ugb3V0cHV0IHRoZSBjaGFyYWN0ZXIgImFzIGlzIjoKLSAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgIGJyZWFrOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci12b2lkIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjxPdXRwdXRJdGVyYXRvciwgUmVzdWx0cywgdHJhaXRzLCBGb3J3YXJkSXRlcj46OmZvcm1hdF9jb25kaXRpb25hbCgpCi17Ci0gICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgLy8gb29wcyB0cmFpbGluZyAnPyc6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignPycpKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIGludCB2OwotICAgaWYoKm1fcG9zaXRpb24gPT0gJ3snKQotICAgewotICAgICAgRm9yd2FyZEl0ZXIgYmFzZSA9IG1fcG9zaXRpb247Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB2ID0gdGhpcy0+dG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxMCk7Ci0gICAgICBpZih2IDwgMCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFRyeSBhIG5hbWVkIHN1YmV4cHJlc3Npb246Ci0gICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uICE9ICd9JykpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB2ID0gdGhpcy0+Z2V0X25hbWVkX3N1Yl9pbmRleChiYXNlICsgMSwgbV9wb3NpdGlvbik7Ci0gICAgICB9Ci0gICAgICBpZigodiA8IDApIHx8ICgqbV9wb3NpdGlvbiAhPSAnfScpKQotICAgICAgewotICAgICAgICAgbV9wb3NpdGlvbiA9IGJhc2U7Ci0gICAgICAgICAvLyBvb3BzIHRyYWlsaW5nICc/JzoKLSAgICAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCc/JykpOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgLy8gU2tpcCB0cmFpbGluZyAnfSc6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fcG9zaXRpb24sIG1fZW5kKTsKLSAgICAgIGxlbiA9IChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDIpLCBsZW4pOwotICAgICAgdiA9IHRoaXMtPnRvaShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbGVuLCAxMCk7Ci0gICB9Ci0gICBpZih2IDwgMCkKLSAgIHsKLSAgICAgIC8vIG9vcHMgbm90IGEgbnVtYmVyOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJz8nKSk7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0KLSAgIC8vIG91dHB1dCB2YXJpZXMgZGVwZW5kaW5nIHVwb24gd2hldGhlciBzdWItZXhwcmVzc2lvbiB2IG1hdGNoZWQgb3Igbm90OgotICAgaWYobV9yZXN1bHRzW3ZdLm1hdGNoZWQpCi0gICB7Ci0gICAgICBtX2hhdmVfY29uZGl0aW9uYWwgPSB0cnVlOwotICAgICAgZm9ybWF0X2FsbCgpOwotICAgICAgbV9oYXZlX2NvbmRpdGlvbmFsID0gZmFsc2U7Ci0gICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJzonKSkpCi0gICAgICB7Ci0gICAgICAgICAvLyBza2lwIHRoZSAnOic6Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAvLyBzYXZlIG91dHB1dCBzdGF0ZSwgdGhlbiB0dXJuIGl0IG9mZjoKLSAgICAgICAgIG91dHB1dF9zdGF0ZSBzYXZlZF9zdGF0ZSA9IG1fc3RhdGU7Ci0gICAgICAgICBtX3N0YXRlID0gb3V0cHV0X25vbmU7Ci0gICAgICAgICAvLyBmb3JtYXQgdGhlIHJlc3Qgb2YgdGhpcyBzY29wZToKLSAgICAgICAgIGZvcm1hdF91bnRpbF9zY29wZV9lbmQoKTsKLSAgICAgICAgIC8vIHJlc3RvcmUgb3V0cHV0IHN0YXRlOgotICAgICAgICAgbV9zdGF0ZSA9IHNhdmVkX3N0YXRlOwotICAgICAgfQotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gc2F2ZSBvdXRwdXQgc3RhdGUsIHRoZW4gdHVybiBpdCBvZmY6Ci0gICAgICBvdXRwdXRfc3RhdGUgc2F2ZWRfc3RhdGUgPSBtX3N0YXRlOwotICAgICAgbV9zdGF0ZSA9IG91dHB1dF9ub25lOwotICAgICAgLy8gZm9ybWF0IHVudGlsICc6JyBvciAnKSc6Ci0gICAgICBtX2hhdmVfY29uZGl0aW9uYWwgPSB0cnVlOwotICAgICAgZm9ybWF0X2FsbCgpOwotICAgICAgbV9oYXZlX2NvbmRpdGlvbmFsID0gZmFsc2U7Ci0gICAgICAvLyByZXN0b3JlIHN0YXRlOgotICAgICAgbV9zdGF0ZSA9IHNhdmVkX3N0YXRlOwotICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCc6JykpKQotICAgICAgewotICAgICAgICAgLy8gc2tpcCB0aGUgJzonOgotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgLy8gZm9ybWF0IHRoZSByZXN0IG9mIHRoaXMgc2NvcGU6Ci0gICAgICAgICBmb3JtYXRfdW50aWxfc2NvcGVfZW5kKCk7Ci0gICAgICB9Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6Zm9ybWF0X3VudGlsX3Njb3BlX2VuZCgpCi17Ci0gICBkbwotICAgewotICAgICAgZm9ybWF0X2FsbCgpOwotICAgICAgaWYoKG1fcG9zaXRpb24gPT0gbV9lbmQpIHx8ICgqbV9wb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCcpJykpKQotICAgICAgICAgcmV0dXJuOwotICAgICAgcHV0KCptX3Bvc2l0aW9uKyspOwotICAgfXdoaWxlKG1fcG9zaXRpb24gIT0gbV9lbmQpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci12b2lkIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjxPdXRwdXRJdGVyYXRvciwgUmVzdWx0cywgdHJhaXRzLCBGb3J3YXJkSXRlcj46OnB1dChjaGFyX3R5cGUgYykKLXsKLSAgIC8vIHdyaXRlIGEgc2luZ2xlIGNoYXJhY3RlciB0byBvdXRwdXQKLSAgIC8vIGFjY29yZGluZyB0byB3aGljaCBjYXNlIHRyYW5zbGF0aW9uIG1vZGUgd2UgYXJlIGluOgotICAgc3dpdGNoKHRoaXMtPm1fc3RhdGUpCi0gICB7Ci0gICBjYXNlIG91dHB1dF9ub25lOgotICAgICAgcmV0dXJuOwotICAgY2FzZSBvdXRwdXRfbmV4dF9sb3dlcjoKLSAgICAgIGMgPSBtX3RyYWl0cy50b2xvd2VyKGMpOwotICAgICAgdGhpcy0+bV9zdGF0ZSA9IG1fcmVzdG9yZV9zdGF0ZTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSBvdXRwdXRfbmV4dF91cHBlcjoKLSAgICAgIGMgPSBtX3RyYWl0cy50b3VwcGVyKGMpOwotICAgICAgdGhpcy0+bV9zdGF0ZSA9IG1fcmVzdG9yZV9zdGF0ZTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSBvdXRwdXRfbG93ZXI6Ci0gICAgICBjID0gbV90cmFpdHMudG9sb3dlcihjKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSBvdXRwdXRfdXBwZXI6Ci0gICAgICBjID0gbV90cmFpdHMudG91cHBlcihjKTsKLSAgICAgIGJyZWFrOwotICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICAgfQotICAgKm1fb3V0ID0gYzsKLSAgICsrbV9vdXQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6cHV0KGNvbnN0IHN1Yl9tYXRjaF90eXBlJiBzdWIpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN1Yl9tYXRjaF90eXBlOjppdGVyYXRvciBpdGVyYXRvcl90eXBlOwotICAgaXRlcmF0b3JfdHlwZSBpID0gc3ViLmZpcnN0OwotICAgd2hpbGUoaSAhPSBzdWIuc2Vjb25kKQotICAgewotICAgICAgcHV0KCppKTsKLSAgICAgICsraTsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIFM+Ci1jbGFzcyBzdHJpbmdfb3V0X2l0ZXJhdG9yCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotICAgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcsIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGU+Ci0jZW5kaWYKLXsKLSAgIFMqIG91dDsKLXB1YmxpYzoKLSAgIHN0cmluZ19vdXRfaXRlcmF0b3IoUyYgcykgOiBvdXQoJnMpIHt9Ci0gICBzdHJpbmdfb3V0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgIHN0cmluZ19vdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQotICAgc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgIHN0cmluZ19vdXRfaXRlcmF0b3ImIG9wZXJhdG9yPSh0eXBlbmFtZSBTOjp2YWx1ZV90eXBlIHYpIAotICAgeyAKLSAgICAgIG91dC0+YXBwZW5kKDEsIHYpOyAKLSAgICAgIHJldHVybiAqdGhpczsgCi0gICB9Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHZhbHVlX3R5cGUqIHBvaW50ZXI7Ci0gICB0eXBlZGVmIHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBBbGxvYywgY2xhc3MgRm9yd2FyZEl0ZXIsIGNsYXNzIHRyYWl0cz4KLU91dHB1dEl0ZXJhdG9yIHJlZ2V4X2Zvcm1hdF9pbXAoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEl0ZXJhdG9yLCBBbGxvYz4mIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyIHAxLCBGb3J3YXJkSXRlciBwMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFpdHMmIHQKLSAgICAgICAgICAgICAgICAgICAgICAgICApCi17Ci0gICBpZihmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2xpdGVyYWwpCi0gICB7Ci0gICAgICByZXR1cm4gcmVfZGV0YWlsOjpjb3B5KHAxLCBwMiwgb3V0KTsKLSAgIH0KLQotICAgcmVfZGV0YWlsOjpiYXNpY19yZWdleF9mb3JtYXR0ZXI8Ci0gICAgICBPdXRwdXRJdGVyYXRvciwgCi0gICAgICBtYXRjaF9yZXN1bHRzPEl0ZXJhdG9yLCBBbGxvYz4sIAotICAgICAgdHJhaXRzLCBGb3J3YXJkSXRlcj4gZihvdXQsIG0sIHQpOwotICAgcmV0dXJuIGYuZm9ybWF0KHAxLCBwMiwgZmxhZ3MpOwotfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotCi1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9ERUYoY29uc3RfaXRlcmF0b3IpCi0KLXN0cnVjdCBhbnlfdHlwZSAKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgYW55X3R5cGUoY29uc3QgVCYpOyAKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgYW55X3R5cGUoY29uc3QgVCYsIGNvbnN0IFUmKTsgCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgVj4KLSAgIGFueV90eXBlKGNvbnN0IFQmLCBjb25zdCBVJiwgY29uc3QgViYpOyAKLX07Ci10eXBlZGVmIGNoYXIgbm9fdHlwZTsKLXR5cGVkZWYgY2hhciAoJnVuYXJ5X3R5cGUpWzJdOwotdHlwZWRlZiBjaGFyICgmYmluYXJ5X3R5cGUpWzNdOwotdHlwZWRlZiBjaGFyICgmdGVybmFyeV90eXBlKVs0XTsKLQotbm9fdHlwZSBjaGVja19pc19mb3JtYXR0ZXIodW5hcnlfdHlwZSwgYmluYXJ5X3R5cGUsIHRlcm5hcnlfdHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdW5hcnlfdHlwZSBjaGVja19pc19mb3JtYXR0ZXIoVCBjb25zdCAmLCBiaW5hcnlfdHlwZSwgdGVybmFyeV90eXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1iaW5hcnlfdHlwZSBjaGVja19pc19mb3JtYXR0ZXIodW5hcnlfdHlwZSwgVCBjb25zdCAmLCB0ZXJuYXJ5X3R5cGUpOwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWJpbmFyeV90eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcihUIGNvbnN0ICYsIFUgY29uc3QgJiwgdGVybmFyeV90eXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci10ZXJuYXJ5X3R5cGUgY2hlY2tfaXNfZm9ybWF0dGVyKHVuYXJ5X3R5cGUsIGJpbmFyeV90eXBlLCBUIGNvbnN0ICYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXRlcm5hcnlfdHlwZSBjaGVja19pc19mb3JtYXR0ZXIoVCBjb25zdCAmLCBiaW5hcnlfdHlwZSwgVSBjb25zdCAmKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci10ZXJuYXJ5X3R5cGUgY2hlY2tfaXNfZm9ybWF0dGVyKHVuYXJ5X3R5cGUsIFQgY29uc3QgJiwgVSBjb25zdCAmKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci10ZXJuYXJ5X3R5cGUgY2hlY2tfaXNfZm9ybWF0dGVyKFQgY29uc3QgJiwgVSBjb25zdCAmLCBWIGNvbnN0ICYpOwotCi1zdHJ1Y3QgdW5hcnlfYmluYXJ5X3Rlcm5hcnkKLXsKLSAgICB0eXBlZGVmIHVuYXJ5X3R5cGUgKCp1bmFyeV9mdW4pKGFueV90eXBlKTsKLSAgICB0eXBlZGVmIGJpbmFyeV90eXBlICgqYmluYXJ5X2Z1bikoYW55X3R5cGUsIGFueV90eXBlKTsKLSAgICB0eXBlZGVmIHRlcm5hcnlfdHlwZSAoKnRlcm5hcnlfZnVuKShhbnlfdHlwZSwgYW55X3R5cGUsIGFueV90eXBlKTsKLSAgICBvcGVyYXRvciB1bmFyeV9mdW4oKTsKLSAgICBvcGVyYXRvciBiaW5hcnlfZnVuKCk7Ci0gICAgb3BlcmF0b3IgdGVybmFyeV9mdW4oKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZvcm1hdHRlciwgYm9vbCBJc0Z1bmN0aW9uID0gbmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPEZvcm1hdHRlcj46OnZhbHVlPgotc3RydWN0IGZvcm1hdHRlcl93cmFwcGVyCi0gIDogRm9ybWF0dGVyCi0gICwgdW5hcnlfYmluYXJ5X3Rlcm5hcnkKLXsKLSAgIGZvcm1hdHRlcl93cmFwcGVyKCl7fQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRm9ybWF0dGVyPgotc3RydWN0IGZvcm1hdHRlcl93cmFwcGVyPEZvcm1hdHRlciwgdHJ1ZT4KLSAgOiB1bmFyeV9iaW5hcnlfdGVybmFyeQotewotICAgIG9wZXJhdG9yIEZvcm1hdHRlciAqKCk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGb3JtYXR0ZXI+Ci1zdHJ1Y3QgZm9ybWF0dGVyX3dyYXBwZXI8Rm9ybWF0dGVyICosIGZhbHNlPgotICA6IHVuYXJ5X2JpbmFyeV90ZXJuYXJ5Ci17Ci0gICAgb3BlcmF0b3IgRm9ybWF0dGVyICooKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBNLCBjbGFzcyBPPgotc3RydWN0IGZvcm1hdF90cmFpdHNfaW1wCi17Ci1wcml2YXRlOgotICAgLy8KLSAgIC8vIEYgbXVzdCBiZSBhIHBvaW50ZXIsIGEgZnVuY3Rpb24sIG9yIGEgY2xhc3Mgd2l0aCBhIGZ1bmN0aW9uIGNhbGwgb3BlcmF0b3I6Ci0gICAvLwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoOjpuZG5ib29zdDo6aXNfcG9pbnRlcjxGPjo6dmFsdWUgfHwgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248Rj46OnZhbHVlIHx8IDo6bmRuYm9vc3Q6OmlzX2NsYXNzPEY+Ojp2YWx1ZSkpOwotICAgc3RhdGljIGZvcm1hdHRlcl93cmFwcGVyPHR5cGVuYW1lIHVud3JhcF9yZWZlcmVuY2U8Rj46OnR5cGU+IGY7Ci0gICBzdGF0aWMgTSBtOwotICAgc3RhdGljIE8gb3V0OwotICAgc3RhdGljIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmbGFnczsKLXB1YmxpYzoKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gc2l6ZW9mKGNoZWNrX2lzX2Zvcm1hdHRlcihmKG0pLCBmKG0sIG91dCksIGYobSwgb3V0LCBmbGFncykpKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgTSwgY2xhc3MgTz4KLXN0cnVjdCBmb3JtYXRfdHJhaXRzCi17Ci1wdWJsaWM6Ci0gICAvLyAKLSAgIC8vIFR5cGUgaXMgbXBsOjppbnRfPE4+IHdoZXJlIE4gaXMgb25lIG9mOgotICAgLy8KLSAgIC8vIDAgOiBGIGlzIGEgcG9pbnRlciB0byBhIHByZXN1bWFibHkgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KLSAgIC8vIDEgOiBGIGlzIGEgY2hhcmFjdGVyLWNvbnRhaW5lciBzdWNoIGFzIGEgc3RkOjpzdHJpbmcuCi0gICAvLyAyIDogRiBpcyBhIFVuYXJ5IEZ1bmN0b3IuCi0gICAvLyAzIDogRiBpcyBhIEJpbmFyeSBGdW5jdG9yLgotICAgLy8gNCA6IEYgaXMgYSBUZXJuYXJ5IEZ1bmN0b3IuCi0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bXBsOjppZl88Ci0gICAgICBuZG5ib29zdDo6bXBsOjphbmRfPG5kbmJvb3N0Ojppc19wb2ludGVyPEY+LCBuZG5ib29zdDo6bXBsOjpub3RfPG5kbmJvb3N0Ojppc19mdW5jdGlvbjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8Rj46OnR5cGU+ID4gPiwKLSAgICAgIG5kbmJvb3N0OjptcGw6OmludF88MD4sCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6bXBsOjppZl88Ci0gICAgICAgICBoYXNfY29uc3RfaXRlcmF0b3I8Rj4sCi0gICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDE+LAotICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50Xzxmb3JtYXRfdHJhaXRzX2ltcDxGLCBNLCBPPjo6dmFsdWU+Ci0gICAgICA+Ojp0eXBlCi0gICA+Ojp0eXBlIHR5cGU7Ci0gICAvLwotICAgLy8gVGhpcyBzdGF0aWMgYXNzZXJ0aW9uIHdpbGwgZmFpbCBpZiB0aGUgZnVuY3RvciBwYXNzZWQgZG9lcyBub3QgYWNjZXB0Ci0gICAvLyB0aGUgc2FtZSB0eXBlIG9mIGFyZ3VtZW50cyBwYXNzZWQuCi0gICAvLwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggbmRuYm9vc3Q6OmlzX2NsYXNzPEY+Ojp2YWx1ZSAmJiAhaGFzX2NvbnN0X2l0ZXJhdG9yPEY+Ojp2YWx1ZSA/ICh0eXBlOjp2YWx1ZSA+IDEpIDogdHJ1ZSk7Ci19OwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19TRklOQUUKLQotdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIE0sIGNsYXNzIE8+Ci1zdHJ1Y3QgZm9ybWF0X3RyYWl0cwotewotcHVibGljOgotICAgLy8gCi0gICAvLyBUeXBlIGlzIG1wbDo6aW50XzxOPiB3aGVyZSBOIGlzIG9uZSBvZjoKLSAgIC8vCi0gICAvLyAwIDogRiBpcyBhIHBvaW50ZXIgdG8gYSBwcmVzdW1hYmx5IG51bGwtdGVybWluYXRlZCBzdHJpbmcuCi0gICAvLyAxIDogRiBpcyBhIGNoYXJhY3Rlci1jb250YWluZXIgc3VjaCBhcyBhIHN0ZDo6c3RyaW5nLgotICAgLy8KLSAgIC8vIE90aGVyIG9wdGlvbnMgc3VjaCBhcyBGIGJlaW5nIGEgRnVuY3RvciBhcmUgbm90IHN1cHBvcnRlZCB3aXRob3V0Ci0gICAvLyBTRklOQUUgc3VwcG9ydC4KLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptcGw6OmlmXzwKLSAgICAgIG5kbmJvb3N0Ojppc19wb2ludGVyPEY+LAotICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiwKLSAgICAgIG5kbmJvb3N0OjptcGw6OmludF88MT4KLSAgID46OnR5cGUgdHlwZTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19TRklOQUUKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2UsIGNsYXNzIE1hdGNoPgotc3RydWN0IGZvcm1hdF9mdW5jdG9yMwotewotICAgZm9ybWF0X2Z1bmN0b3IzKEJhc2UgYikgOiBmdW5jKGIpIHt9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcj4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgZikKLSAgIHsKLSAgICAgIHJldHVybiBuZG5ib29zdDo6dW53cmFwX3JlZihmdW5jKShtLCBpLCBmKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyLCBjbGFzcyBUcmFpdHM+Ci0gICBPdXRwdXRJdGVyIG9wZXJhdG9yKCkoY29uc3QgTWF0Y2gmIG0sIE91dHB1dEl0ZXIgaSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIGYsIGNvbnN0IFRyYWl0cyYpCi0gICB7Ci0gICAgICByZXR1cm4gKCp0aGlzKShtLCBpLCBmKTsKLSAgIH0KLXByaXZhdGU6Ci0gICBCYXNlIGZ1bmM7Ci0gICBmb3JtYXRfZnVuY3RvcjMoY29uc3QgZm9ybWF0X2Z1bmN0b3IzJik7Ci0gICBmb3JtYXRfZnVuY3RvcjMmIG9wZXJhdG9yPShjb25zdCBmb3JtYXRfZnVuY3RvcjMmKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlLCBjbGFzcyBNYXRjaD4KLXN0cnVjdCBmb3JtYXRfZnVuY3RvcjIKLXsKLSAgIGZvcm1hdF9mdW5jdG9yMihCYXNlIGIpIDogZnVuYyhiKSB7fQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXI+Ci0gICBPdXRwdXRJdGVyIG9wZXJhdG9yKCkoY29uc3QgTWF0Y2gmIG0sIE91dHB1dEl0ZXIgaSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIC8qZiovKQotICAgewotICAgICAgcmV0dXJuIG5kbmJvb3N0Ojp1bndyYXBfcmVmKGZ1bmMpKG0sIGkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXIsIGNsYXNzIFRyYWl0cz4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgZiwgY29uc3QgVHJhaXRzJikKLSAgIHsKLSAgICAgIHJldHVybiAoKnRoaXMpKG0sIGksIGYpOwotICAgfQotcHJpdmF0ZToKLSAgIEJhc2UgZnVuYzsKLSAgIGZvcm1hdF9mdW5jdG9yMihjb25zdCBmb3JtYXRfZnVuY3RvcjImKTsKLSAgIGZvcm1hdF9mdW5jdG9yMiYgb3BlcmF0b3I9KGNvbnN0IGZvcm1hdF9mdW5jdG9yMiYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2UsIGNsYXNzIE1hdGNoPgotc3RydWN0IGZvcm1hdF9mdW5jdG9yMQotewotICAgZm9ybWF0X2Z1bmN0b3IxKEJhc2UgYikgOiBmdW5jKGIpIHt9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBPdXRwdXRJdGVyPgotICAgT3V0cHV0SXRlciBkb19mb3JtYXRfc3RyaW5nKGNvbnN0IFMmIHMsIE91dHB1dEl0ZXIgaSkKLSAgIHsKLSAgICAgIHJldHVybiByZV9kZXRhaWw6OmNvcHkocy5iZWdpbigpLCBzLmVuZCgpLCBpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBPdXRwdXRJdGVyPgotICAgaW5saW5lIE91dHB1dEl0ZXIgZG9fZm9ybWF0X3N0cmluZyhjb25zdCBTKiBzLCBPdXRwdXRJdGVyIGkpCi0gICB7Ci0gICAgICB3aGlsZShzICYmICpzKQotICAgICAgewotICAgICAgICAgKmkgPSAqczsKLSAgICAgICAgICsraTsKLSAgICAgICAgICsrczsKLSAgICAgIH0KLSAgICAgIHJldHVybiBpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXI+Ci0gICBPdXRwdXRJdGVyIG9wZXJhdG9yKCkoY29uc3QgTWF0Y2gmIG0sIE91dHB1dEl0ZXIgaSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIC8qZiovKQotICAgewotICAgICAgcmV0dXJuIGRvX2Zvcm1hdF9zdHJpbmcobmRuYm9vc3Q6OnVud3JhcF9yZWYoZnVuYykobSksIGkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXIsIGNsYXNzIFRyYWl0cz4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgZiwgY29uc3QgVHJhaXRzJikKLSAgIHsKLSAgICAgIHJldHVybiAoKnRoaXMpKG0sIGksIGYpOwotICAgfQotcHJpdmF0ZToKLSAgIEJhc2UgZnVuYzsKLSAgIGZvcm1hdF9mdW5jdG9yMShjb25zdCBmb3JtYXRfZnVuY3RvcjEmKTsKLSAgIGZvcm1hdF9mdW5jdG9yMSYgb3BlcmF0b3I9KGNvbnN0IGZvcm1hdF9mdW5jdG9yMSYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBNYXRjaCwgY2xhc3MgVHJhaXRzPgotc3RydWN0IGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nCi17Ci0gICBmb3JtYXRfZnVuY3Rvcl9jX3N0cmluZyhjb25zdCBjaGFyVCogcHMpIDogZnVuYyhwcykge30KLQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXI+Ci0gICBPdXRwdXRJdGVyIG9wZXJhdG9yKCkoY29uc3QgTWF0Y2gmIG0sIE91dHB1dEl0ZXIgaSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIGYsIGNvbnN0IFRyYWl0cyYgdCA9IFRyYWl0cygpKQotICAgewotICAgICAgLy90eXBlZGVmIHR5cGVuYW1lIE1hdGNoOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotICAgICAgY29uc3QgY2hhclQqIGVuZCA9IGZ1bmM7Ci0gICAgICB3aGlsZSgqZW5kKSArK2VuZDsKLSAgICAgIHJldHVybiByZWdleF9mb3JtYXRfaW1wKGksIG0sIGZ1bmMsIGVuZCwgZiwgdCk7Ci0gICB9Ci1wcml2YXRlOgotICAgY29uc3QgY2hhclQqIGZ1bmM7Ci0gICBmb3JtYXRfZnVuY3Rvcl9jX3N0cmluZyhjb25zdCBmb3JtYXRfZnVuY3Rvcl9jX3N0cmluZyYpOwotICAgZm9ybWF0X2Z1bmN0b3JfY19zdHJpbmcmIG9wZXJhdG9yPShjb25zdCBmb3JtYXRfZnVuY3Rvcl9jX3N0cmluZyYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lciwgY2xhc3MgTWF0Y2gsIGNsYXNzIFRyYWl0cz4KLXN0cnVjdCBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXIKLXsKLSAgIGZvcm1hdF9mdW5jdG9yX2NvbnRhaW5lcihjb25zdCBDb250YWluZXImIGMpIDogZnVuYyhjKSB7fQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcj4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgZiwgY29uc3QgVHJhaXRzJiB0ID0gVHJhaXRzKCkpCi0gICB7Ci0gICAgICAvL3R5cGVkZWYgdHlwZW5hbWUgTWF0Y2g6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0gICAgICByZXR1cm4gcmVfZGV0YWlsOjpyZWdleF9mb3JtYXRfaW1wKGksIG0sIGZ1bmMuYmVnaW4oKSwgZnVuYy5lbmQoKSwgZiwgdCk7Ci0gICB9Ci1wcml2YXRlOgotICAgY29uc3QgQ29udGFpbmVyJiBmdW5jOwotICAgZm9ybWF0X2Z1bmN0b3JfY29udGFpbmVyKGNvbnN0IGZvcm1hdF9mdW5jdG9yX2NvbnRhaW5lciYpOwotICAgZm9ybWF0X2Z1bmN0b3JfY29udGFpbmVyJiBvcGVyYXRvcj0oY29uc3QgZm9ybWF0X2Z1bmN0b3JfY29udGFpbmVyJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgRnVuYywgY2xhc3MgTWF0Y2gsIGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBUcmFpdHMgPSByZV9kZXRhaWw6OnRyaXZpYWxfZm9ybWF0X3RyYWl0czx0eXBlbmFtZSBNYXRjaDo6Y2hhcl90eXBlPiA+Ci1zdHJ1Y3QgY29tcHV0ZV9mdW5jdG9yX3R5cGUKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZm9ybWF0X3RyYWl0czxGdW5jLCBNYXRjaCwgT3V0cHV0SXRlcmF0b3I+Ojp0eXBlIHRhZzsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjwgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9wb2ludGVyPEZ1bmM+Ojp0eXBlPjo6dHlwZSBtYXliZV9jaGFyX3R5cGU7Ci0KLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPHRhZywgbXBsOjppbnRfPDA+ID4sIGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nPG1heWJlX2NoYXJfdHlwZSwgTWF0Y2gsIFRyYWl0cz4sCi0gICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8dGFnLCBtcGw6OmludF88MT4gPiwgZm9ybWF0X2Z1bmN0b3JfY29udGFpbmVyPEZ1bmMsIE1hdGNoLCBUcmFpdHM+LAotICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPHRhZywgbXBsOjppbnRfPDI+ID4sIGZvcm1hdF9mdW5jdG9yMTxGdW5jLCBNYXRjaD4sCi0gICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8dGFnLCBtcGw6OmludF88Mz4gPiwgZm9ybWF0X2Z1bmN0b3IyPEZ1bmMsIE1hdGNoPiwgCi0gICAgICAgICAgICAgICBmb3JtYXRfZnVuY3RvcjM8RnVuYywgTWF0Y2g+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICA+Ojp0eXBlCi0gICAgICA+Ojp0eXBlCi0gICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBGdW5jdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHJlZ2V4X2Zvcm1hdChPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8SXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0b3IgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBmb3JtYXRfYWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKQotewotICAgcmV0dXJuIG0uZm9ybWF0KG91dCwgZm10LCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBGdW5jdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIG1hdGNoX3Jlc3VsdHM8SXRlcmF0b3IsIEFsbG9jYXRvcj46OmNoYXJfdHlwZT4gcmVnZXhfZm9ybWF0KGNvbnN0IG1hdGNoX3Jlc3VsdHM8SXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdG9yIGZtdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IGZvcm1hdF9hbGwpCi17Ci0gICByZXR1cm4gbS5mb3JtYXQoZm10LCBmbGFncyk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9SRUdFWF9GT1JNQVRfSFBQCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ODA1MGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X2Z3ZC5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IEZvcndhcmQgZGVjbGFyZXMgbmRuYm9vc3Q6OmJhc2ljX3JlZ2V4PD4gYW5kCi0gICogICAgICAgICAgICAgICAgYXNzb2NpYXRlZCB0eXBlZGVmcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZXRF9IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0vLwotLy8gZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0ZXRCBpZiB0aGlzCi0vLyBoZWFkZXIgZG9lc24ndCB3b3JrIQotLy8KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT19GV0QKLSMgIGlmbmRlZiBORE5CT09TVF9SRV9SRUdFWF9IUFAKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4LmhwcD4KLSMgIGVuZGlmCi0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIGNwcF9yZWdleF90cmFpdHM7Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdHJ1Y3QgY19yZWdleF90cmFpdHM7Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyB3MzJfcmVnZXhfdHJhaXRzOwotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfVVNFX1dJTjMyX0xPQ0FMRQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBpbXBsZW1lbnRhdGlvblQgPSB3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPiA+Ci1zdHJ1Y3QgcmVnZXhfdHJhaXRzOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRSkKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgaW1wbGVtZW50YXRpb25UID0gY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD4gPgotc3RydWN0IHJlZ2V4X3RyYWl0czsKLSNlbHNlCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIGltcGxlbWVudGF0aW9uVCA9IGNfcmVnZXhfdHJhaXRzPGNoYXJUPiA+Ci1zdHJ1Y3QgcmVnZXhfdHJhaXRzOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzID0gcmVnZXhfdHJhaXRzPGNoYXJUPiA+Ci1jbGFzcyBiYXNpY19yZWdleDsKLQotdHlwZWRlZiBiYXNpY19yZWdleDxjaGFyLCByZWdleF90cmFpdHM8Y2hhcj4gPiByZWdleDsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10eXBlZGVmIGJhc2ljX3JlZ2V4PHdjaGFyX3QsIHJlZ2V4X3RyYWl0czx3Y2hhcl90PiA+IHdyZWdleDsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX05PX0ZXRAotCi0jZW5kaWYKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9ncmVwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZ3JlcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNzg5ZDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9ncmVwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfZ3JlcC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIHJlZ2V4X2dyZXAgaW1wbGVtZW50YXRpb24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfR1JFUF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfR1JFUF9IUFAKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLy8KLS8vIHJlZ2V4X2dyZXA6Ci0vLyBmaW5kIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyB3aXRoaW4gdGhlIHNlcXVlbmNlIGZpcnN0IGxhc3Q6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIFByZWRpY2F0ZSwgY2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHVuc2lnbmVkIGludCByZWdleF9ncmVwKFByZWRpY2F0ZSBmb28sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvciBmaXJzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgaWYoZS5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpmYWlsYml0KQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICB0eXBlZGVmIHR5cGVuYW1lIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yPjo6YWxsb2NhdG9yX3R5cGUgbWF0Y2hfYWxsb2NhdG9yX3R5cGU7Ci0KLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yPiBtOwotICAgcmVfZGV0YWlsOjpwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBtYXRjaF9hbGxvY2F0b3JfdHlwZSwgdHJhaXRzPiBtYXRjaGVyKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgZmlyc3QpOwotICAgdW5zaWduZWQgaW50IGNvdW50ID0gMDsKLSAgIHdoaWxlKG1hdGNoZXIuZmluZCgpKQotICAgewotICAgICAgKytjb3VudDsKLSAgICAgIGlmKDAgPT0gZm9vKG0pKQotICAgICAgICAgcmV0dXJuIGNvdW50OyAvLyBjYWxsZXIgZG9lc24ndCB3YW50IHRvIGdvIG9uCi0gICAgICBpZihtWzBdLnNlY29uZCA9PSBsYXN0KQotICAgICAgICAgcmV0dXJuIGNvdW50OyAvLyB3ZSd2ZSByZWFjaGVkIHRoZSBlbmQsIGRvbid0IHRyeSBhbmQgZmluZCBhbiBleHRyYSBudWxsIG1hdGNoLgotICAgICAgaWYobS5sZW5ndGgoKSA9PSAwKQotICAgICAgewotICAgICAgICAgaWYobVswXS5zZWNvbmQgPT0gbGFzdCkKLSAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgIC8vIHdlIGZvdW5kIGEgTlVMTC1tYXRjaCwgbm93IHRyeSB0byBmaW5kCi0gICAgICAgICAvLyBhIG5vbi1OVUxMIG9uZSBhdCB0aGUgc2FtZSBwb3NpdGlvbjoKLSAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBtYXRjaF9hbGxvY2F0b3JfdHlwZT4gbTIobSk7Ci0gICAgICAgICBtYXRjaGVyLnNldGYobWF0Y2hfbm90X251bGwgfCBtYXRjaF9jb250aW51b3VzKTsKLSAgICAgICAgIGlmKG1hdGNoZXIuZmluZCgpKQotICAgICAgICAgewotICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICAgIGlmKDAgPT0gZm9vKG0pKQotICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgLy8gcmVzZXQgbWF0Y2ggYmFjayB0byB3aGVyZSBpdCB3YXM6Ci0gICAgICAgICAgICBtID0gbTI7Ci0gICAgICAgICB9Ci0gICAgICAgICBtYXRjaGVyLnVuc2V0ZigobWF0Y2hfbm90X251bGwgfCBtYXRjaF9jb250aW51b3VzKSAmIH5mbGFncyk7Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gY291bnQ7Ci19Ci0KLS8vCi0vLyByZWdleF9ncmVwIGNvbnZlbmllbmNlIGludGVyZmFjZXM6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0vLwotLy8gdGhpcyBpc24ndCByZWFsbHkgYSBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uLCBidXQgdGVtcGxhdGUgZnVuY3Rpb24KLS8vIG92ZXJsb2FkaW5nIC0gaWYgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uCi0vLyB0aGVuIGl0IHJlYWxseSB3b24ndCBzdXBwb3J0IHRoaXMgZWl0aGVyOgotdGVtcGxhdGUgPGNsYXNzIFByZWRpY2F0ZSwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB1bnNpZ25lZCBpbnQgcmVnZXhfZ3JlcChQcmVkaWNhdGUgZm9vLCBjb25zdCBjaGFyVCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfZ3JlcChmb28sIHN0ciwgc3RyICsgdHJhaXRzOjpsZW5ndGgoc3RyKSwgZSwgZmxhZ3MpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlLCBjbGFzcyBTVCwgY2xhc3MgU0EsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdW5zaWduZWQgaW50IHJlZ2V4X2dyZXAoUHJlZGljYXRlIGZvbywgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHMsIAotICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfZ3JlcChmb28sIHMuYmVnaW4oKSwgcy5lbmQoKSwgZSwgZmxhZ3MpOwotfQotI2Vsc2UgIC8vIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24KLWlubGluZSB1bnNpZ25lZCBpbnQgcmVnZXhfZ3JlcChib29sICgqZm9vKShjb25zdCBjbWF0Y2gmKSwgY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfZ3JlcChmb28sIHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgZSwgZmxhZ3MpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLWlubGluZSB1bnNpZ25lZCBpbnQgcmVnZXhfZ3JlcChib29sICgqZm9vKShjb25zdCB3Y21hdGNoJiksIGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9ncmVwKGZvbywgc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgZSwgZmxhZ3MpOwotfQotI2VuZGlmCi1pbmxpbmUgdW5zaWduZWQgaW50IHJlZ2V4X2dyZXAoYm9vbCAoKmZvbykoY29uc3QgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+JiksIGNvbnN0IHN0ZDo6c3RyaW5nJiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9ncmVwKGZvbywgcy5iZWdpbigpLCBzLmVuZCgpLCBlLCBmbGFncyk7Ci19Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotaW5saW5lIHVuc2lnbmVkIGludCByZWdleF9ncmVwKGJvb2wgKCpmb28pKGNvbnN0IG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiYpLCAKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2dyZXAoZm9vLCBzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZsYWdzKTsKLX0KLSNlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9HUkVQX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzAxMzZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAzCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfaXRlcmF0b3IuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyByZWdleF9pdGVyYXRvciBpbXBsZW1lbnRhdGlvbi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfSVRFUkFUT1JfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIAotICAgICAgICAgIGNsYXNzIGNoYXJULAotICAgICAgICAgIGNsYXNzIHRyYWl0cz4KLWNsYXNzIHJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uIAotewotICAgdHlwZWRlZiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiByZWdleF90eXBlOwotCi0gICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gd2hhdDsgIC8vIGN1cnJlbnQgbWF0Y2gKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBiYXNlOyAgLy8gc3RhcnQgb2Ygc2VxdWVuY2UKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBlbmQ7ICAgLy8gZW5kIG9mIHNlcXVlbmNlCi0gICBjb25zdCByZWdleF90eXBlICAgICAgICAgICAgICAgICAgICAgcmU7ICAgLy8gdGhlIGV4cHJlc3Npb24KLSAgIG1hdGNoX2ZsYWdfdHlwZSAgICAgICAgICAgICAgICAgICAgICBmbGFnczsgLy8gZmxhZ3MgZm9yIG1hdGNoaW5nCi0KLXB1YmxpYzoKLSAgIHJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogYmFzZSgpLCBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZil7fQotICAgYm9vbCBpbml0KEJpZGlyZWN0aW9uYWxJdGVyYXRvciBmaXJzdCkKLSAgIHsKLSAgICAgIGJhc2UgPSBmaXJzdDsKLSAgICAgIHJldHVybiByZWdleF9zZWFyY2goZmlyc3QsIGVuZCwgd2hhdCwgcmUsIGZsYWdzKTsKLSAgIH0KLSAgIGJvb2wgY29tcGFyZShjb25zdCByZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgdGhhdCkKLSAgIHsKLSAgICAgIGlmKHRoaXMgPT0gJnRoYXQpIHJldHVybiB0cnVlOwotICAgICAgcmV0dXJuICgmcmUuZ2V0X2RhdGEoKSA9PSAmdGhhdC5yZS5nZXRfZGF0YSgpKSAmJiAoZW5kID09IHRoYXQuZW5kKSAmJiAoZmxhZ3MgPT0gdGhhdC5mbGFncykgJiYgKHdoYXRbMF0uZmlyc3QgPT0gdGhhdC53aGF0WzBdLmZpcnN0KSAmJiAod2hhdFswXS5zZWNvbmQgPT0gdGhhdC53aGF0WzBdLnNlY29uZCk7Ci0gICB9Ci0gICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4mIGdldCgpCi0gICB7IHJldHVybiB3aGF0OyB9Ci0gICBib29sIG5leHQoKQotICAgewotICAgICAgLy9pZih3aGF0LnByZWZpeCgpLmZpcnN0ICE9IHdoYXRbMF0uc2Vjb25kKQotICAgICAgLy8gICBmbGFncyB8PSBtYXRjaF9wcmV2X2F2YWlsOwotICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIG5leHRfc3RhcnQgPSB3aGF0WzBdLnNlY29uZDsKLSAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmKGZsYWdzKTsKLSAgICAgIGlmKCF3aGF0Lmxlbmd0aCgpIHx8IChmICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9wb3NpeCkpCi0gICAgICAgICBmIHw9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2luaXRpYWxfbnVsbDsKLSAgICAgIC8vaWYoYmFzZSAhPSBuZXh0X3N0YXJ0KQotICAgICAgLy8gICBmIHw9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvYjsKLSAgICAgIGJvb2wgcmVzdWx0ID0gcmVnZXhfc2VhcmNoKG5leHRfc3RhcnQsIGVuZCwgd2hhdCwgcmUsIGYsIGJhc2UpOwotICAgICAgaWYocmVzdWx0KQotICAgICAgICAgd2hhdC5zZXRfYmFzZShiYXNlKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci1wcml2YXRlOgotICAgcmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24mIG9wZXJhdG9yPShjb25zdCByZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgCi0gICAgICAgICAgY2xhc3MgY2hhclQgPSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OnZhbHVlX3R5cGUsCi0gICAgICAgICAgY2xhc3MgdHJhaXRzID0gcmVnZXhfdHJhaXRzPGNoYXJUPiA+Ci1jbGFzcyByZWdleF9pdGVyYXRvciAKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPAotICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgCi0gICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4sCi0gICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUsCi0gICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4qLAotICAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+JiA+ICAgICAgICAgCi0jZW5kaWYKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIHJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uPEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgY2hhclQsIHRyYWl0cz4gaW1wbDsKLSAgIHR5cGVkZWYgc2hhcmVkX3B0cjxpbXBsPiBwaW1wbDsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgICAgICAgICAgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4gICAgICAgICAgICAgICAgICAgcmVnZXhfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+ICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOyAKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgIAotICAgcmVnZXhfaXRlcmF0b3IoKXt9Ci0gICByZWdleF9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIAotICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXhfdHlwZSYgcmUsIAotICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgICAgIH0KLSAgIH0KLSAgIHJlZ2V4X2l0ZXJhdG9yKGNvbnN0IHJlZ2V4X2l0ZXJhdG9yJiB0aGF0KQotICAgICAgOiBwZGF0YSh0aGF0LnBkYXRhKSB7fQotICAgcmVnZXhfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCByZWdleF9pdGVyYXRvciYgdGhhdCkKLSAgIHsKLSAgICAgIHBkYXRhID0gdGhhdC5wZGF0YTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCByZWdleF9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyAKLSAgICAgIGlmKChwZGF0YS5nZXQoKSA9PSAwKSB8fCAodGhhdC5wZGF0YS5nZXQoKSA9PSAwKSkKLSAgICAgICAgIHJldHVybiBwZGF0YS5nZXQoKSA9PSB0aGF0LnBkYXRhLmdldCgpOwotICAgICAgcmV0dXJuIHBkYXRhLT5jb21wYXJlKCoodGhhdC5wZGF0YS5nZXQoKSkpOyAKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCByZWdleF9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyByZXR1cm4gISgqdGhpcyA9PSB0aGF0KTsgfQotICAgY29uc3QgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCljb25zdAotICAgeyByZXR1cm4gcGRhdGEtPmdldCgpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCljb25zdAotICAgeyByZXR1cm4gJihwZGF0YS0+Z2V0KCkpOyB9Ci0gICByZWdleF9pdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICB7Ci0gICAgICBjb3coKTsKLSAgICAgIGlmKDAgPT0gcGRhdGEtPm5leHQoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICByZWdleF9pdGVyYXRvciBvcGVyYXRvcisrKGludCkKLSAgIHsKLSAgICAgIHJlZ2V4X2l0ZXJhdG9yIHJlc3VsdCgqdGhpcyk7Ci0gICAgICArKygqdGhpcyk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotcHJpdmF0ZToKLQotICAgcGltcGwgcGRhdGE7Ci0KLSAgIHZvaWQgY293KCkKLSAgIHsKLSAgICAgIC8vIGNvcHktb24td3JpdGUKLSAgICAgIGlmKHBkYXRhLmdldCgpICYmICFwZGF0YS51bmlxdWUoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KG5ldyBpbXBsKCoocGRhdGEuZ2V0KCkpKSk7Ci0gICAgICB9Ci0gICB9Ci19OwotCi10eXBlZGVmIHJlZ2V4X2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiBjcmVnZXhfaXRlcmF0b3I7Ci10eXBlZGVmIHJlZ2V4X2l0ZXJhdG9yPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gc3JlZ2V4X2l0ZXJhdG9yOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgcmVnZXhfaXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+IHdjcmVnZXhfaXRlcmF0b3I7Ci10eXBlZGVmIHJlZ2V4X2l0ZXJhdG9yPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHdzcmVnZXhfaXRlcmF0b3I7Ci0jZW5kaWYKLQotLy8gbWFrZV9yZWdleF9pdGVyYXRvcjoKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHJlZ2V4X2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4gbWFrZV9yZWdleF9pdGVyYXRvcihjb25zdCBjaGFyVCogcCwgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfaXRlcmF0b3I8Y29uc3QgY2hhclQqLCBjaGFyVCwgdHJhaXRzPihwLCBwK3RyYWl0czo6bGVuZ3RoKHApLCBlLCBtKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBTVCwgY2xhc3MgU0E+Ci1pbmxpbmUgcmVnZXhfaXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgbSk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0lURVJBVE9SX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X21hdGNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfbWF0Y2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWY5YjliLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfbWF0Y2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzgyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9tYXRjaC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyBhbGdvcml0aG1zLgotICAqICAgICAgICAgICAgICAgIE5vdGUgdGhpcyBpcyBhbiBpbnRlcm5hbCBoZWFkZXIgZmlsZSBpbmNsdWRlZAotICAqICAgICAgICAgICAgICAgIGJ5IHJlZ2V4LmhwcCwgZG8gbm90IGluY2x1ZGUgb24gaXRzIG93bi4KLSAgKi8KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9NQVRDSF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8vCi0vLyBwcm9jIHJlZ2V4X21hdGNoCi0vLyByZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hlcwotLy8gdGhlIHdob2xlIG9mIHRoZSBpbnB1dC4gIEZpbGxzIGluIHdoYXQgbWF0Y2hlZCBpbiBtLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcmVnZXhfbWF0Y2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmVfZGV0YWlsOjpwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz4gbWF0Y2hlcihmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIGZpcnN0KTsKLSAgIHJldHVybiBtYXRjaGVyLm1hdGNoKCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgaXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIHJlZ2V4X21hdGNoKGl0ZXJhdG9yIGZpcnN0LCBpdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxpdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0vLwotLy8gcXVlcnlfbWF0Y2ggY29udmVuaWVuY2UgaW50ZXJmYWNlczoKLSNpZm5kZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLS8vCi0vLyB0aGlzIGlzbid0IHJlYWxseSBhIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24sIGJ1dCB0ZW1wbGF0ZSBmdW5jdGlvbgotLy8gb3ZlcmxvYWRpbmcgLSBpZiB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IHBhcnRpYWwgc3BlY2lhbGlzYXRpb24KLS8vIHRoZW4gaXQgcmVhbGx5IHdvbid0IHN1cHBvcnQgdGhpcyBlaXRoZXI6Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhclQqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXJUKiwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgdHJhaXRzOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcywgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyVCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXJUKj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHRyYWl0czo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHMsIAotICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKLSAgIG1hdGNoX3Jlc3VsdHM8aXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbHNlICAvLyBwYXJ0aWFsIG9yZGVyaW5nCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhcio+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCBjcHBfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCBjcHBfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhcio+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCBjX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgY19yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIHczMl9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIHczMl9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHdjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHdjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgY3BwX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNwcF9yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHdjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgY19yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgd2NtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCB3MzJfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgdzMyX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi0jZW5kaWYKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNtYXRjaCYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgc21hdGNoJiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgY3BwX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCBjcHBfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNtYXRjaCYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNtYXRjaCYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIHczMl9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgdzMyX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNwcF9yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgY3BwX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCB3MzJfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIHczMl9yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotI2VuZGlmCi0KLSNlbmRpZgotCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAgLy8gTkROQk9PU1RfUkVHRVhfTUFUQ0hfSFBQCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X21lcmdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfbWVyZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWI5MTRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfbWVyZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X2Zvcm1hdC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIGZvcm1hdHRpbmcgb3V0cHV0IHJvdXRpbmVzIGZvciBzZWFyY2ggYW5kIHJlcGxhY2UKLSAgKiAgICAgICAgICAgICAgICBvcGVyYXRpb25zLiAgTm90ZSB0aGlzIGlzIGFuIGludGVybmFsIGhlYWRlciBmaWxlIGluY2x1ZGVkCi0gICogICAgICAgICAgICAgICAgYnkgcmVnZXguaHBwLCBkbyBub3QgaW5jbHVkZSBvbiBpdHMgb3duLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX01FUkdFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9NRVJHRV9IUFAKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBjaGFyVD4KLWlubGluZSBPdXRwdXRJdGVyYXRvciByZWdleF9tZXJnZShPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhclQqIGZtdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9yZXBsYWNlKG91dCwgZmlyc3QsIGxhc3QsIGUsIGZtdCwgZmxhZ3MpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJUPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHJlZ2V4X21lcmdlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21lcmdlKG91dCwgZmlyc3QsIGxhc3QsIGUsIGZtdC5jX3N0cigpLCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJUPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiByZWdleF9tZXJnZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9yZXBsYWNlKHMsIGUsIGZtdCwgZmxhZ3MpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgdHJhaXRzLCBjbGFzcyBjaGFyVD4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gcmVnZXhfbWVyZ2UoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3JlcGxhY2UocywgZSwgZm10LCBmbGFncyk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9NRVJHRV9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Jhd19idWZmZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9yYXdfYnVmZmVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk5MDM1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Jhd19idWZmZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9yYXdfYnVmZmVyLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUmF3IGNoYXJhY3RlciBidWZmZXIgZm9yIHJlZ2V4IGNvZGUuCi0gICogICAgICAgICAgICAgICAgTm90ZSB0aGlzIGlzIGFuIGludGVybmFsIGhlYWRlciBmaWxlIGluY2x1ZGVkCi0gICogICAgICAgICAgICAgICAgYnkgcmVnZXguaHBwLCBkbyBub3QgaW5jbHVkZSBvbiBpdHMgb3duLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1JBV19CVUZGRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1JBV19CVUZGRVJfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0gICBuYW1lc3BhY2UgcmVfZGV0YWlsewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXN0cnVjdCBlbXB0eV9wYWRkaW5ne307Ci0KLXVuaW9uIHBhZGRpbmcKLXsKLSAgIHZvaWQqIHA7Ci0gICB1bnNpZ25lZCBpbnQgaTsKLX07Ci0KLXRlbXBsYXRlIDxpbnQgTj4KLXN0cnVjdCBwYWRkaW5nMwotewotICAgZW51bXsKLSAgICAgIHBhZGRpbmdfc2l6ZSA9IDgsCi0gICAgICBwYWRkaW5nX21hc2sgPSA3Ci0gICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBhZGRpbmczPDI+Ci17Ci0gICBlbnVtewotICAgICAgcGFkZGluZ19zaXplID0gMiwKLSAgICAgIHBhZGRpbmdfbWFzayA9IDEKLSAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGFkZGluZzM8ND4KLXsKLSAgIGVudW17Ci0gICAgICBwYWRkaW5nX3NpemUgPSA0LAotICAgICAgcGFkZGluZ19tYXNrID0gMwotICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwYWRkaW5nMzw4PgotewotICAgZW51bXsKLSAgICAgIHBhZGRpbmdfc2l6ZSA9IDgsCi0gICAgICBwYWRkaW5nX21hc2sgPSA3Ci0gICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBhZGRpbmczPDE2PgotewotICAgZW51bXsKLSAgICAgIHBhZGRpbmdfc2l6ZSA9IDE2LAotICAgICAgcGFkZGluZ19tYXNrID0gMTUKLSAgIH07Ci19OwotCi1lbnVtewotICAgcGFkZGluZ19zaXplID0gcGFkZGluZzM8c2l6ZW9mKHBhZGRpbmcpPjo6cGFkZGluZ19zaXplLAotICAgcGFkZGluZ19tYXNrID0gcGFkZGluZzM8c2l6ZW9mKHBhZGRpbmcpPjo6cGFkZGluZ19tYXNrCi19OwotCi0vLwotLy8gY2xhc3MgcmF3X3N0b3JhZ2UKLS8vIGJhc2ljYWxseSB0aGlzIGlzIGEgc2ltcGxpZmllZCB2ZWN0b3I8dW5zaWduZWQgY2hhcj4KLS8vIHRoaXMgaXMgdXNlZCBieSBiYXNpY19yZWdleCBmb3IgZXhwcmVzc2lvbiBzdG9yYWdlCi0vLwotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHJhd19zdG9yYWdlCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIqICAgICAgICBwb2ludGVyOwotcHJpdmF0ZToKLSAgIHBvaW50ZXIgbGFzdCwgc3RhcnQsIGVuZDsKLXB1YmxpYzoKLQotICAgcmF3X3N0b3JhZ2UoKTsKLSAgIHJhd19zdG9yYWdlKHNpemVfdHlwZSBuKTsKLQotICAgfnJhd19zdG9yYWdlKCkKLSAgIHsKLSAgICAgIDo6b3BlcmF0b3IgZGVsZXRlKHN0YXJ0KTsKLSAgIH0KLQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHJlc2l6ZShzaXplX3R5cGUgbik7Ci0gICAKLSAgIHZvaWQqIE5ETkJPT1NUX1JFR0VYX0NBTEwgZXh0ZW5kKHNpemVfdHlwZSBuKQotICAgewotICAgICAgaWYoc2l6ZV90eXBlKGxhc3QgLSBlbmQpIDwgbikKLSAgICAgICAgIHJlc2l6ZShuICsgKGVuZCAtIHN0YXJ0KSk7Ci0gICAgICByZWdpc3RlciBwb2ludGVyIHJlc3VsdCA9IGVuZDsKLSAgICAgIGVuZCArPSBuOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLQotICAgdm9pZCogTkROQk9PU1RfUkVHRVhfQ0FMTCBpbnNlcnQoc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4pOwotCi0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBzaXplKCkKLSAgIHsKLSAgICAgIHJldHVybiBlbmQgLSBzdGFydDsKLSAgIH0KLQotICAgc2l6ZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgY2FwYWNpdHkoKQotICAgewotICAgICAgcmV0dXJuIGxhc3QgLSBzdGFydDsKLSAgIH0KLQotICAgdm9pZCogTkROQk9PU1RfUkVHRVhfQ0FMTCBkYXRhKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHN0YXJ0OwotICAgfQotCi0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBpbmRleCh2b2lkKiBwdHIpCi0gICB7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cG9pbnRlcj4ocHRyKSAtIHN0YXRpY19jYXN0PHBvaW50ZXI+KGRhdGEoKSk7Ci0gICB9Ci0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBjbGVhcigpCi0gICB7Ci0gICAgICBlbmQgPSBzdGFydDsKLSAgIH0KLQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIGFsaWduKCkKLSAgIHsKLSAgICAgIC8vIG1vdmUgZW5kIHVwIHRvIGEgYm91bmRhcnk6Ci0gICAgICBlbmQgPSBzdGFydCArICgoKGVuZCAtIHN0YXJ0KSArIHBhZGRpbmdfbWFzaykgJiB+cGFkZGluZ19tYXNrKTsKLSAgIH0KLSAgIHZvaWQgc3dhcChyYXdfc3RvcmFnZSYgdGhhdCkKLSAgIHsKLSAgICAgIHN0ZDo6c3dhcChzdGFydCwgdGhhdC5zdGFydCk7Ci0gICAgICBzdGQ6OnN3YXAoZW5kLCB0aGF0LmVuZCk7Ci0gICAgICBzdGQ6OnN3YXAobGFzdCwgdGhhdC5sYXN0KTsKLSAgfQotfTsKLQotaW5saW5lIHJhd19zdG9yYWdlOjpyYXdfc3RvcmFnZSgpCi17Ci0gICBsYXN0ID0gc3RhcnQgPSBlbmQgPSAwOwotfQotCi1pbmxpbmUgcmF3X3N0b3JhZ2U6OnJhd19zdG9yYWdlKHNpemVfdHlwZSBuKQotewotICAgc3RhcnQgPSBlbmQgPSBzdGF0aWNfY2FzdDxwb2ludGVyPig6Om9wZXJhdG9yIG5ldyhuKSk7Ci0gICBORE5CT09TVF9SRUdFWF9OT0VIX0FTU0VSVChzdGFydCkKLSAgIGxhc3QgPSBzdGFydCArIG47Ci19Ci0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9yZXBsYWNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmVwbGFjZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMjRmYTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9yZXBsYWNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDkKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9mb3JtYXQuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyBmb3JtYXR0aW5nIG91dHB1dCByb3V0aW5lcyBmb3Igc2VhcmNoIGFuZCByZXBsYWNlCi0gICogICAgICAgICAgICAgICAgb3BlcmF0aW9ucy4gIE5vdGUgdGhpcyBpcyBhbiBpbnRlcm5hbCBoZWFkZXIgZmlsZSBpbmNsdWRlZAotICAqICAgICAgICAgICAgICAgIGJ5IHJlZ2V4LmhwcCwgZG8gbm90IGluY2x1ZGUgb24gaXRzIG93bi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9SRVBMQUNFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9SRVBMQUNFX0hQUAotCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBjaGFyVCwgY2xhc3MgRm9ybWF0dGVyPgotT3V0cHV0SXRlcmF0b3IgcmVnZXhfcmVwbGFjZShPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIgZm10LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmVnZXhfaXRlcmF0b3I8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBpKGZpcnN0LCBsYXN0LCBlLCBmbGFncyk7Ci0gICByZWdleF9pdGVyYXRvcjxCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IGo7Ci0gICBpZihpID09IGopCi0gICB7Ci0gICAgICBpZighKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfbm9fY29weSkpCi0gICAgICAgICBvdXQgPSByZV9kZXRhaWw6OmNvcHkoZmlyc3QsIGxhc3QsIG91dCk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdF9tKGZpcnN0KTsKLSAgICAgIHdoaWxlKGkgIT0gaikKLSAgICAgIHsKLSAgICAgICAgIGlmKCEoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5KSkKLSAgICAgICAgICAgIG91dCA9IHJlX2RldGFpbDo6Y29weShpLT5wcmVmaXgoKS5maXJzdCwgaS0+cHJlZml4KCkuc2Vjb25kLCBvdXQpOyAKLSAgICAgICAgIG91dCA9IGktPmZvcm1hdChvdXQsIGZtdCwgZmxhZ3MsIGUpOwotICAgICAgICAgbGFzdF9tID0gKCppKVswXS5zZWNvbmQ7Ci0gICAgICAgICBpZihmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2ZpcnN0X29ubHkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICsraTsKLSAgICAgIH0KLSAgICAgIGlmKCEoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5KSkKLSAgICAgICAgIG91dCA9IHJlX2RldGFpbDo6Y29weShsYXN0X20sIGxhc3QsIG91dCk7Ci0gICB9Ci0gICByZXR1cm4gb3V0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgdHJhaXRzLCBjbGFzcyBjaGFyVCwgY2xhc3MgRm9ybWF0dGVyPgotc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHJlZ2V4X3JlcGxhY2UoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gcmVzdWx0OwotICAgcmVfZGV0YWlsOjpzdHJpbmdfb3V0X2l0ZXJhdG9yPHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiA+IGkocmVzdWx0KTsKLSAgIHJlZ2V4X3JlcGxhY2UoaSwgcy5iZWdpbigpLCBzLmVuZCgpLCBlLCBmbXQsIGZsYWdzKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9SRVBMQUNFX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc2VhcmNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc2VhcmNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE0ODBmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3NlYXJjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTcgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3NlYXJjaC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIHJlZ2V4X3NlYXJjaCBpbXBsZW1lbnRhdGlvbi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9TRUFSQ0hfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1NFQVJDSF9IUFAKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCByZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIGZpcnN0KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCByZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3IgYmFzZSkKLXsKLSAgIGlmKGUuZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6ZmFpbGJpdCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgcmVfZGV0YWlsOjpwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz4gbWF0Y2hlcihmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIGJhc2UpOwotICAgcmV0dXJuIG1hdGNoZXIuZmluZCgpOwotfQotCi0vLwotLy8gcmVnZXhfc2VhcmNoIGNvbnZlbmllbmNlIGludGVyZmFjZXM6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0vLwotLy8gdGhpcyBpc24ndCByZWFsbHkgYSBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uLCBidXQgdGVtcGxhdGUgZnVuY3Rpb24KLS8vIG92ZXJsb2FkaW5nIC0gaWYgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uCi0vLyB0aGVuIGl0IHJlYWxseSB3b24ndCBzdXBwb3J0IHRoaXMgZWl0aGVyOgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBjaGFyVCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhclQqLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHN0ciwgc3RyICsgdHJhaXRzOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHMsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci0jZWxzZSAgLy8gcGFydGlhbCBvdmVybG9hZHM6Ci1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBjaGFyKiBmaXJzdCwgY29uc3QgY2hhciogbGFzdCwgCi0gICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgY21hdGNoIG07Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgd2NtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zZWFyY2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHdjaGFyX3QqIGZpcnN0LCBjb25zdCB3Y2hhcl90KiBsYXN0LCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgd2NtYXRjaCBtOwotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBzbWF0Y2gmIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgd3NtYXRjaCYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcmVnZXhfc2VhcmNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIGlmKGUuZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6ZmFpbGJpdCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3I+IG07Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yPjo6YWxsb2NhdG9yX3R5cGUgbWF0Y2hfYWxsb2NfdHlwZTsKLSAgIHJlX2RldGFpbDo6cGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgbWF0Y2hfYWxsb2NfdHlwZSwgdHJhaXRzPiBtYXRjaGVyKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55LCBmaXJzdCk7Ci0gICByZXR1cm4gbWF0Y2hlci5maW5kKCk7Ci19Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3QgY2hhclQqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzdHIsIHN0ciArIHRyYWl0czo6bGVuZ3RoKHN0ciksIGUsIGZsYWdzKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFNULCBjbGFzcyBTQSwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcywgCi0gICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBlLCBmbGFncyk7Ci19Ci0jZWxzZSAgLy8gbm9uLXRlbXBsYXRlIGZ1bmN0aW9uIG92ZXJsb2FkcwotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgY21hdGNoIG07Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHdjbWF0Y2ggbTsKLSAgIHJldHVybiByZWdleF9zZWFyY2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgc21hdGNoIG07Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgd3NtYXRjaCBtOwotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fV1JFR0VYCi0KLSNlbmRpZiAvLyBwYXJ0aWFsIG92ZXJsb2FkCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9TRUFSQ0hfSFBQCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9zcGxpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3NwbGl0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RjNjdiMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3NwbGl0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3NwbGl0LmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogSW1wbGVtZW50cyByZWdleF9zcGxpdCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMuCi0gICogICAgICAgICAgICAgICAgTm90ZSB0aGlzIGlzIGFuIGludGVybmFsIGhlYWRlciBmaWxlIGluY2x1ZGVkCi0gICogICAgICAgICAgICAgICAgYnkgcmVnZXguaHBwLCBkbyBub3QgaW5jbHVkZSBvbiBpdHMgb3duLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NQTElUX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9TUExJVF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwMCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jb25zdCBiYXNpY19yZWdleDxjaGFyVD4mIGdldF9kZWZhdWx0X2V4cHJlc3Npb24oY2hhclQpCi17Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgZXhwcmVzc2lvbl90ZXh0WzRdID0geyAnXFwnLCAncycsICcrJywgJ1wwMCcsIH07Ci0gICBzdGF0aWMgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQ+IGUoZXhwcmVzc2lvbl90ZXh0KTsKLSAgIHJldHVybiBlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMxLCBjbGFzcyBBbGxvYzE+Ci1jbGFzcyBzcGxpdF9wcmVkCi17Ci0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+IHN0cmluZ190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzdHJpbmdfdHlwZTo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3JfdHlwZTsKLSAgIGl0ZXJhdG9yX3R5cGUqIHBfbGFzdDsKLSAgIE91dHB1dEl0ZXJhdG9yKiBwX291dDsKLSAgIHN0ZDo6c2l6ZV90KiBwX21heDsKLSAgIHN0ZDo6c2l6ZV90IGluaXRpYWxfbWF4OwotcHVibGljOgotICAgc3BsaXRfcHJlZChpdGVyYXRvcl90eXBlKiBhLCBPdXRwdXRJdGVyYXRvciogYiwgc3RkOjpzaXplX3QqIGMpCi0gICAgICA6IHBfbGFzdChhKSwgcF9vdXQoYiksIHBfbWF4KGMpLCBpbml0aWFsX21heCgqYykge30KLQotICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IG1hdGNoX3Jlc3VsdHM8aXRlcmF0b3JfdHlwZT4mIHdoYXQpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzMSwgY2xhc3MgQWxsb2MxPgotYm9vbCBzcGxpdF9wcmVkPE91dHB1dEl0ZXJhdG9yLCBjaGFyVCwgVHJhaXRzMSwgQWxsb2MxPjo6b3BlcmF0b3IoKQotICAgKGNvbnN0IG1hdGNoX3Jlc3VsdHM8aXRlcmF0b3JfdHlwZT4mIHdoYXQpCi17Ci0gICAqcF9sYXN0ID0gd2hhdFswXS5zZWNvbmQ7Ci0gICBpZih3aGF0LnNpemUoKSA+IDEpCi0gICB7Ci0gICAgICAvLyBvdXRwdXQgc3ViLWV4cHJlc3Npb25zIG9ubHk6Ci0gICAgICBmb3IodW5zaWduZWQgaSA9IDE7IGkgPCB3aGF0LnNpemUoKTsgKytpKQotICAgICAgewotICAgICAgICAgKigqcF9vdXQpID0gd2hhdC5zdHIoaSk7Ci0gICAgICAgICArKygqcF9vdXQpOwotICAgICAgICAgaWYoMCA9PSAtLSpwX21heCkgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgcmV0dXJuICpwX21heCAhPSAwOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gb3V0cHV0ICRgIG9ubHkgaWYgaXQncyBub3QtbnVsbCBvciBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dDoKLSAgICAgIGNvbnN0IHN1Yl9tYXRjaDxpdGVyYXRvcl90eXBlPiYgc3ViID0gd2hhdFstMV07Ci0gICAgICBpZigoc3ViLmZpcnN0ICE9IHN1Yi5zZWNvbmQpIHx8ICgqcF9tYXggIT0gaW5pdGlhbF9tYXgpKQotICAgICAgewotICAgICAgICAgKigqcF9vdXQpID0gc3ViLnN0cigpOwotICAgICAgICAgKysoKnBfb3V0KTsKLSAgICAgICAgIHJldHVybiAtLSpwX21heDsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBpbml0aWFsIG51bGwsIGRvIG5vdGhpbmc6Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0czEsIGNsYXNzIEFsbG9jMSwgY2xhc3MgVHJhaXRzMj4KLXN0ZDo6c2l6ZV90IHJlZ2V4X3NwbGl0KE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzMSwgQWxsb2MxPiYgcywgCi0gICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIFRyYWl0czI+JiBlLAotICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBtYXhfc3BsaXQpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+Ojpjb25zdF9pdGVyYXRvciAgY2lfdDsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBtYXRjaF9yZXN1bHRzPGNpX3Q+OjphbGxvY2F0b3JfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2FsbG9jYXRvcjsKLSAgIGNpX3QgbGFzdCA9IHMuYmVnaW4oKTsKLSAgIHN0ZDo6c2l6ZV90IGluaXRfc2l6ZSA9IG1heF9zcGxpdDsKLSAgIHJlX2RldGFpbDo6c3BsaXRfcHJlZDxPdXRwdXRJdGVyYXRvciwgY2hhclQsIFRyYWl0czEsIEFsbG9jMT4gcHJlZCgmbGFzdCwgJm91dCwgJm1heF9zcGxpdCk7Ci0gICBjaV90IGksIGo7Ci0gICBpID0gcy5iZWdpbigpOwotICAgaiA9IHMuZW5kKCk7Ci0gICByZWdleF9ncmVwKHByZWQsIGksIGosIGUsIGZsYWdzKTsKLSAgIC8vCi0gICAvLyBpZiB0aGVyZSBpcyBzdGlsbCBpbnB1dCBsZWZ0LCBkbyBhIGZpbmFsIHB1c2ggYXMgbG9uZyBhcyBtYXhfc3BsaXQKLSAgIC8vIGlzIG5vdCBleGhhdXN0ZWQsIGFuZCB3ZSdyZSBub3Qgc3BsaXR0aW5nIHN1Yi1leHByZXNzaW9ucyByYXRoZXIgCi0gICAvLyB0aGFuIHdoaXRlc3BhY2U6Ci0gICBpZihtYXhfc3BsaXQgJiYgKGxhc3QgIT0gcy5lbmQoKSkgJiYgKGUubWFya19jb3VudCgpID09IDEpKQotICAgewotICAgICAgKm91dCA9IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+KChjaV90KWxhc3QsIChjaV90KXMuZW5kKCkpOwotICAgICAgKytvdXQ7Ci0gICAgICBsYXN0ID0gcy5lbmQoKTsKLSAgICAgIC0tbWF4X3NwbGl0OwotICAgfQotICAgLy8KLSAgIC8vIGRlbGV0ZSBmcm9tIHRoZSBzdHJpbmcgZXZlcnl0aGluZyB0aGF0IGhhcyBiZWVuIHByb2Nlc3NlZCBzbyBmYXI6Ci0gICBzLmVyYXNlKDAsIGxhc3QgLSBzLmJlZ2luKCkpOwotICAgLy8KLSAgIC8vIHJldHVybiB0aGUgbnVtYmVyIG9mIG5ldyByZWNvcmRzIHB1c2hlZDoKLSAgIHJldHVybiBpbml0X3NpemUgLSBtYXhfc3BsaXQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0czEsIGNsYXNzIEFsbG9jMSwgY2xhc3MgVHJhaXRzMj4KLWlubGluZSBzdGQ6OnNpemVfdCByZWdleF9zcGxpdChPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0czEsIEFsbG9jMT4mIHMsIAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCBUcmFpdHMyPiYgZSwKLSAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NwbGl0KG91dCwgcywgZSwgZmxhZ3MsIFVJTlRfTUFYKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzMSwgY2xhc3MgQWxsb2MxPgotaW5saW5lIHN0ZDo6c2l6ZV90IHJlZ2V4X3NwbGl0KE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzMSwgQWxsb2MxPiYgcykKLXsKLSAgIHJldHVybiByZWdleF9zcGxpdChvdXQsIHMsIHJlX2RldGFpbDo6Z2V0X2RlZmF1bHRfZXhwcmVzc2lvbihjaGFyVCgwKSksIG1hdGNoX2RlZmF1bHQsIFVJTlRfTUFYKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90b2tlbl9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNjFjOWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90b2tlbl9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF90b2tlbl9pdGVyYXRvci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9UT0tFTl9JVEVSQVRPUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sID49IDB4NTYwKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTcwKSkpXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMykpCi0vLwotLy8gQm9ybGFuZCBDKysgQnVpbGRlciA2LCBhbmQgVmlzdWFsIEMrKyA2LAotLy8gY2FuJ3QgY29wZSB3aXRoIHRoZSBhcnJheSB0ZW1wbGF0ZSBjb25zdHJ1Y3RvcgotLy8gc28gd2UgaGF2ZSBhIHRlbXBsYXRlIG1lbWJlciB0aGF0IHdpbGwgYWNjZXB0IGFueSB0eXBlIGFzIAotLy8gYXJndW1lbnQsIGFuZCB0aGVuIGFzc2VydCB0aGF0IGlzIHJlYWxseSBpcyBhbiBhcnJheToKLS8vCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPiAxMzAwKQotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDcwMCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLAotICAgICAgICAgIGNsYXNzIGNoYXJULAotICAgICAgICAgIGNsYXNzIHRyYWl0cz4KLWNsYXNzIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uIAotewotICAgdHlwZWRlZiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiByZWdleF90eXBlOwotICAgdHlwZWRlZiBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiAgICAgIHZhbHVlX3R5cGU7Ci0KLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiB3aGF0OyAgIC8vIGN1cnJlbnQgbWF0Y2gKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBiYXNlOyAgICAvLyBzdGFydCBvZiBzZWFyY2ggYXJlYQotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGVuZDsgICAgLy8gZW5kIG9mIHNlYXJjaCBhcmVhCi0gICBjb25zdCByZWdleF90eXBlICAgICAgICAgICAgICAgICAgICAgcmU7ICAgIC8vIHRoZSBleHByZXNzaW9uCi0gICBtYXRjaF9mbGFnX3R5cGUgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M7ICAvLyBtYXRjaCBmbGFncwotICAgdmFsdWVfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsgLy8gdGhlIGN1cnJlbnQgc3RyaW5nIHJlc3VsdAotICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE47ICAgICAgLy8gdGhlIGN1cnJlbnQgc3ViLWV4cHJlc3Npb24gYmVpbmcgZW51bWVyYXRlZAotICAgc3RkOjp2ZWN0b3I8aW50PiAgICAgICAgICAgICAgICAgICAgIHN1YnM7ICAgLy8gdGhlIHN1Yi1leHByZXNzaW9ucyB0byBlbnVtZXJhdGUKLQotcHVibGljOgotICAgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGludCBzdWIsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZil7IHN1YnMucHVzaF9iYWNrKHN1Yik7IH0KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiB2LCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpLCBzdWJzKHYpe30KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSNpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sID49IDB4NTYwKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTcwKSkpXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMykpIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjA3MDApCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBjb25zdCBUJiBzdWJtYXRjaGVzLCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpCi0gICB7Ci0gICAgICAvLyBhc3NlcnQgdGhhdCBUIHJlYWxseSBpcyBhbiBhcnJheToKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlKTsKLSAgICAgIGNvbnN0IHN0ZDo6c2l6ZV90IGFycmF5X3NpemUgPSBzaXplb2YoVCkgLyBzaXplb2Yoc3VibWF0Y2hlc1swXSk7Ci0gICAgICBmb3Ioc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBzdWJzLnB1c2hfYmFjayhzdWJtYXRjaGVzW2ldKTsKLSAgICAgIH0KLSAgIH0KLSNlbHNlCi0gICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgQ04+Ci0gICByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgY29uc3QgaW50ICgmc3VibWF0Y2hlcylbQ05dLCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpCi0gICB7Ci0gICAgICBmb3Ioc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBDTjsgKytpKQotICAgICAgewotICAgICAgICAgc3Vicy5wdXNoX2JhY2soc3VibWF0Y2hlc1tpXSk7Ci0gICAgICB9Ci0gICB9Ci0jZW5kaWYKLSNlbmRpZgotICAgYm9vbCBpbml0KEJpZGlyZWN0aW9uYWxJdGVyYXRvciBmaXJzdCkKLSAgIHsKLSAgICAgIE4gPSAwOwotICAgICAgYmFzZSA9IGZpcnN0OwotICAgICAgaWYocmVnZXhfc2VhcmNoKGZpcnN0LCBlbmQsIHdoYXQsIHJlLCBmbGFncywgYmFzZSkgPT0gdHJ1ZSkKLSAgICAgIHsKLSAgICAgICAgIE4gPSAwOwotICAgICAgICAgcmVzdWx0ID0gKChzdWJzW05dID09IC0xKSA/IHdoYXQucHJlZml4KCkgOiB3aGF0WyhpbnQpc3Vic1tOXV0pOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKChzdWJzW05dID09IC0xKSAmJiAoZmlyc3QgIT0gZW5kKSkKLSAgICAgIHsKLSAgICAgICAgIHJlc3VsdC5maXJzdCA9IGZpcnN0OwotICAgICAgICAgcmVzdWx0LnNlY29uZCA9IGVuZDsKLSAgICAgICAgIHJlc3VsdC5tYXRjaGVkID0gKGZpcnN0ICE9IGVuZCk7Ci0gICAgICAgICBOID0gLTE7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGJvb2wgY29tcGFyZShjb25zdCByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgdGhhdCkKLSAgIHsKLSAgICAgIGlmKHRoaXMgPT0gJnRoYXQpIHJldHVybiB0cnVlOwotICAgICAgcmV0dXJuICgmcmUuZ2V0X2RhdGEoKSA9PSAmdGhhdC5yZS5nZXRfZGF0YSgpKSAKLSAgICAgICAgICYmIChlbmQgPT0gdGhhdC5lbmQpIAotICAgICAgICAgJiYgKGZsYWdzID09IHRoYXQuZmxhZ3MpIAotICAgICAgICAgJiYgKE4gPT0gdGhhdC5OKSAKLSAgICAgICAgICYmICh3aGF0WzBdLmZpcnN0ID09IHRoYXQud2hhdFswXS5maXJzdCkgCi0gICAgICAgICAmJiAod2hhdFswXS5zZWNvbmQgPT0gdGhhdC53aGF0WzBdLnNlY29uZCk7Ci0gICB9Ci0gICBjb25zdCB2YWx1ZV90eXBlJiBnZXQoKQotICAgeyByZXR1cm4gcmVzdWx0OyB9Ci0gICBib29sIG5leHQoKQotICAgewotICAgICAgaWYoTiA9PSAtMSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGlmKE4rMSA8IChpbnQpc3Vicy5zaXplKCkpCi0gICAgICB7Ci0gICAgICAgICArK047Ci0gICAgICAgICByZXN1bHQgPSgoc3Vic1tOXSA9PSAtMSkgPyB3aGF0LnByZWZpeCgpIDogd2hhdFtzdWJzW05dXSk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIC8vaWYod2hhdC5wcmVmaXgoKS5maXJzdCAhPSB3aGF0WzBdLnNlY29uZCkKLSAgICAgIC8vICAgZmxhZ3MgfD0gLyptYXRjaF9wcmV2X2F2YWlsIHwqLyByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9ib2I7Ci0gICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdF9lbmQod2hhdFswXS5zZWNvbmQpOwotICAgICAgaWYocmVnZXhfc2VhcmNoKGxhc3RfZW5kLCBlbmQsIHdoYXQsIHJlLCAoKHdoYXRbMF0uZmlyc3QgPT0gd2hhdFswXS5zZWNvbmQpID8gZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9pbml0aWFsX251bGwgOiBmbGFncyksIGJhc2UpKQotICAgICAgewotICAgICAgICAgTiA9MDsKLSAgICAgICAgIHJlc3VsdCA9KChzdWJzW05dID09IC0xKSA/IHdoYXQucHJlZml4KCkgOiB3aGF0W3N1YnNbTl1dKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZSBpZigobGFzdF9lbmQgIT0gZW5kKSAmJiAoc3Vic1swXSA9PSAtMSkpCi0gICAgICB7Ci0gICAgICAgICBOID0tMTsKLSAgICAgICAgIHJlc3VsdC5maXJzdCA9IGxhc3RfZW5kOwotICAgICAgICAgcmVzdWx0LnNlY29uZCA9IGVuZDsKLSAgICAgICAgIHJlc3VsdC5tYXRjaGVkID0gKGxhc3RfZW5kICE9IGVuZCk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLXByaXZhdGU6Ci0gICByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCAKLSAgICAgICAgICBjbGFzcyBjaGFyVCA9IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSwKLSAgICAgICAgICBjbGFzcyB0cmFpdHMgPSByZWdleF90cmFpdHM8Y2hhclQ+ID4KLWNsYXNzIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yIAotI2lmbmRlZiBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSAgIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8Ci0gICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCAKLSAgICAgICAgIHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+LAotICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlLAotICAgICAgICAgY29uc3Qgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4qLAotICAgICAgICAgY29uc3Qgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4mID4gICAgICAgICAKLSNlbmRpZgotewotcHJpdmF0ZToKLSAgIHR5cGVkZWYgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb248QmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBpbXBsOwotICAgdHlwZWRlZiBzaGFyZWRfcHRyPGltcGw+IHBpbXBsOwotcHVibGljOgotICAgdHlwZWRlZiAgICAgICAgICBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiAgICAgICAgICAgICAgICAgICByZWdleF90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7IAotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotICAgCi0gICByZWdleF90b2tlbl9pdGVyYXRvcigpe30KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgY29uc3QgcmVnZXhfdHlwZSYgcmUsIAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN1Ym1hdGNoID0gMCwgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIHN1Ym1hdGNoLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICB9Ci0gICByZWdleF90b2tlbl9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoZXMsIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaGVzLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjA3MDApCi0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA+PSAweDU2MCkgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU3MCkpKVwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICByZWdleF90b2tlbl9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYgc3VibWF0Y2hlcywgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIHN1Ym1hdGNoZXMsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgIH0KLSNlbHNlCi0gICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKCZzdWJtYXRjaGVzKVtOXSwgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIHN1Ym1hdGNoZXMsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgIH0KLSNlbmRpZgotI2VuZGlmCi0gICByZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCByZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCkKLSAgICAgIDogcGRhdGEodGhhdC5wZGF0YSkge30KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgcmVnZXhfdG9rZW5faXRlcmF0b3ImIHRoYXQpCi0gICB7Ci0gICAgICBwZGF0YSA9IHRoYXQucGRhdGE7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICBib29sIG9wZXJhdG9yPT0oY29uc3QgcmVnZXhfdG9rZW5faXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsgCi0gICAgICBpZigocGRhdGEuZ2V0KCkgPT0gMCkgfHwgKHRoYXQucGRhdGEuZ2V0KCkgPT0gMCkpCi0gICAgICAgICByZXR1cm4gcGRhdGEuZ2V0KCkgPT0gdGhhdC5wZGF0YS5nZXQoKTsKLSAgICAgIHJldHVybiBwZGF0YS0+Y29tcGFyZSgqKHRoYXQucGRhdGEuZ2V0KCkpKTsgCi0gICB9Ci0gICBib29sIG9wZXJhdG9yIT0oY29uc3QgcmVnZXhfdG9rZW5faXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuICEoKnRoaXMgPT0gdGhhdCk7IH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpY29uc3QKLSAgIHsgcmV0dXJuIHBkYXRhLT5nZXQoKTsgfQotICAgY29uc3QgdmFsdWVfdHlwZSogb3BlcmF0b3ItPigpY29uc3QKLSAgIHsgcmV0dXJuICYocGRhdGEtPmdldCgpKTsgfQotICAgcmVnZXhfdG9rZW5faXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgewotICAgICAgY293KCk7Ci0gICAgICBpZigwID09IHBkYXRhLT5uZXh0KCkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgICAgfQotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgcmVnZXhfdG9rZW5faXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpCi0gICB7Ci0gICAgICByZWdleF90b2tlbl9pdGVyYXRvciByZXN1bHQoKnRoaXMpOwotICAgICAgKysoKnRoaXMpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLXByaXZhdGU6Ci0KLSAgIHBpbXBsIHBkYXRhOwotCi0gICB2b2lkIGNvdygpCi0gICB7Ci0gICAgICAvLyBjb3B5LW9uLXdyaXRlCi0gICAgICBpZihwZGF0YS5nZXQoKSAmJiAhcGRhdGEudW5pcXVlKCkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldChuZXcgaW1wbCgqKHBkYXRhLmdldCgpKSkpOwotICAgICAgfQotICAgfQotfTsKLQotdHlwZWRlZiByZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4gY3JlZ2V4X3Rva2VuX2l0ZXJhdG9yOwotdHlwZWRlZiByZWdleF90b2tlbl9pdGVyYXRvcjxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHNyZWdleF90b2tlbl9pdGVyYXRvcjsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10eXBlZGVmIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPiB3Y3JlZ2V4X3Rva2VuX2l0ZXJhdG9yOwotdHlwZWRlZiByZWdleF90b2tlbl9pdGVyYXRvcjxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiB3c3JlZ2V4X3Rva2VuX2l0ZXJhdG9yOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4gbWFrZV9yZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyVCogcCwgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIGludCBzdWJtYXRjaCA9IDAsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhclQqLCBjaGFyVCwgdHJhaXRzPihwLCBwK3RyYWl0czo6bGVuZ3RoKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgU1QsIGNsYXNzIFNBPgotaW5saW5lIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgY2hhclQsIHRyYWl0cz4gbWFrZV9yZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCwgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIGludCBzdWJtYXRjaCA9IDAsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPihwLmJlZ2luKCksIHAuZW5kKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgc3RkOjpzaXplX3QgTj4KLWlubGluZSByZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+IG1ha2VfcmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgY2hhclQqIHAsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCBjb25zdCBpbnQgKCZzdWJtYXRjaClbTl0sIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhclQqLCBjaGFyVCwgdHJhaXRzPihwLCBwK3RyYWl0czo6bGVuZ3RoKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgU1QsIGNsYXNzIFNBLCBzdGQ6OnNpemVfdCBOPgotaW5saW5lIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgY2hhclQsIHRyYWl0cz4gbWFrZV9yZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCwgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIGNvbnN0IGludCAoJnN1Ym1hdGNoKVtOXSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSByZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+IG1ha2VfcmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgY2hhclQqIHAsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+KHAsIHArdHJhaXRzOjpsZW5ndGgocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBTVCwgY2xhc3MgU0E+Ci1pbmxpbmUgcmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2gsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPihwLmJlZ2luKCksIHAuZW5kKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPiAxMzAwKQotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9UT0tFTl9JVEVSQVRPUl9IUFAKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTkxYmI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMwotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF90cmFpdHMuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyByZWd1bGFyIGV4cHJlc3Npb24gdHJhaXRzIGNsYXNzZXMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfV09SS0FST1VORF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF93b3JrYXJvdW5kLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9TWU5UQVhfVFlQRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9zeW50YXhfdHlwZS5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfRVJST1JfVFlQRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9lcnJvcl90eXBlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfREVGQVVMVFNfSFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzX2RlZmF1bHRzLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jICBpZm5kZWYgTkROQk9PU1RfQ1BQX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2NwcF9yZWdleF90cmFpdHMuaHBwPgotIyAgZW5kaWYKLSNlbmRpZgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDU2MCkKLSMgIGlmbmRlZiBORE5CT09TVF9DX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2NfcmVnZXhfdHJhaXRzLmhwcD4KLSMgIGVuZGlmCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotIyAgaWZuZGVmIE5ETkJPT1NUX1czMl9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC93MzJfcmVnZXhfdHJhaXRzLmhwcD4KLSMgIGVuZGlmCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfRldEX0hQUF9JTkNMVURFRAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4X2Z3ZC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcCIKLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgaW1wbGVtZW50YXRpb25UID4KLXN0cnVjdCByZWdleF90cmFpdHMgOiBwdWJsaWMgaW1wbGVtZW50YXRpb25UCi17Ci0gICByZWdleF90cmFpdHMoKSA6IGltcGxlbWVudGF0aW9uVCgpIHt9Ci19OwotCi0vLwotLy8gY2xhc3MgcmVnZXhfdHJhaXRzX3dyYXBwZXIuCi0vLyB0aGlzIGlzIHdoYXQgb3VyIGltcGxlbWVudGF0aW9uIHdpbGwgYWN0dWFsbHkgc3RvcmU7Ci0vLyBpdCBwcm92aWRlcyBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgIm9wdGlvbmFsIgotLy8gaW50ZXJmYWNlcyB0aGF0IHdlIHN1cHBvcnQsIGluIGFkZGl0aW9uIHRvIHRoZQotLy8gcmVxdWlyZWQgInN0YW5kYXJkIiBvbmVzOgotLy8KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjAwMDApCi1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9ERUYoYm9vc3RfZXh0ZW5zaW9uc190YWcpCi0jZWxzZQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBoYXNfYm9vc3RfZXh0ZW5zaW9uc190YWcKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VUPgotc3RydWN0IGRlZmF1bHRfd3JhcHBlciA6IHB1YmxpYyBCYXNlVAotewotICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlVDo6Y2hhcl90eXBlIGNoYXJfdHlwZTsKLSAgIHN0ZDo6c3RyaW5nIGVycm9yX3N0cmluZyg6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgZSljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKGUpOwotICAgfQotICAgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW50YXhfdHlwZShjaGFyX3R5cGUgYyljb25zdAotICAgewotICAgICAgcmV0dXJuICgoYyAmIDB4N2YpID09IGMpID8gZ2V0X2RlZmF1bHRfc3ludGF4X3R5cGUoc3RhdGljX2Nhc3Q8Y2hhcj4oYykpIDogOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2hhcjsKLSAgIH0KLSAgIDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZShjaGFyX3R5cGUgYyljb25zdAotICAgewotICAgICAgcmV0dXJuICgoYyAmIDB4N2YpID09IGMpID8gZ2V0X2RlZmF1bHRfZXNjYXBlX3N5bnRheF90eXBlKHN0YXRpY19jYXN0PGNoYXI+KGMpKSA6IDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfaWRlbnRpdHk7Ci0gICB9Ci0gICBpbnQgdG9pKGNvbnN0IGNoYXJfdHlwZSomIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyLCBpbnQgcmFkaXgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6Omdsb2JhbF90b2kocDEsIHAyLCByYWRpeCwgKnRoaXMpOwotICAgfQotICAgY2hhcl90eXBlIHRyYW5zbGF0ZShjaGFyX3R5cGUgYywgYm9vbCBpY2FzZSljb25zdAotICAgewotICAgICAgcmV0dXJuIChpY2FzZSA/IHRoaXMtPnRyYW5zbGF0ZV9ub2Nhc2UoYykgOiB0aGlzLT50cmFuc2xhdGUoYykpOwotICAgfQotICAgY2hhcl90eXBlIHRyYW5zbGF0ZShjaGFyX3R5cGUgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIEJhc2VUOjp0cmFuc2xhdGUoYyk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdG9sb3dlcihjaGFyX3R5cGUgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX2xvd2VyKGMpOwotICAgfQotICAgY2hhcl90eXBlIHRvdXBwZXIoY2hhcl90eXBlIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6Omdsb2JhbF91cHBlcihjKTsKLSAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlVCwgYm9vbCBoYXNfZXh0ZW5zaW9ucz4KLXN0cnVjdCBjb21wdXRlX3dyYXBwZXJfYmFzZQotewotICAgdHlwZWRlZiBCYXNlVCB0eXBlOwotfTsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDAwMCkKLXRlbXBsYXRlIDxjbGFzcyBCYXNlVD4KLXN0cnVjdCBjb21wdXRlX3dyYXBwZXJfYmFzZTxCYXNlVCwgZmFsc2U+Ci17Ci0gICB0eXBlZGVmIGRlZmF1bHRfd3JhcHBlcjxCYXNlVD4gdHlwZTsKLX07Ci0jZWxzZQotdGVtcGxhdGUgPD4KLXN0cnVjdCBjb21wdXRlX3dyYXBwZXJfYmFzZTxjX3JlZ2V4X3RyYWl0czxjaGFyPiwgZmFsc2U+Ci17Ci0gICB0eXBlZGVmIGRlZmF1bHRfd3JhcHBlcjxjX3JlZ2V4X3RyYWl0czxjaGFyPiA+IHR5cGU7Ci19OwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgY29tcHV0ZV93cmFwcGVyX2Jhc2U8Y19yZWdleF90cmFpdHM8d2NoYXJfdD4sIGZhbHNlPgotewotICAgdHlwZWRlZiBkZWZhdWx0X3dyYXBwZXI8Y19yZWdleF90cmFpdHM8d2NoYXJfdD4gPiB0eXBlOwotfTsKLSNlbmRpZgotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZVQ+Ci1zdHJ1Y3QgcmVnZXhfdHJhaXRzX3dyYXBwZXIgCi0gICA6IHB1YmxpYyA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNvbXB1dGVfd3JhcHBlcl9iYXNlPAotICAgICAgICAgICAgICAgQmFzZVQsIAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpoYXNfYm9vc3RfZXh0ZW5zaW9uc190YWc8QmFzZVQ+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotewotICAgcmVnZXhfdHJhaXRzX3dyYXBwZXIoKXt9Ci1wcml2YXRlOgotICAgcmVnZXhfdHJhaXRzX3dyYXBwZXIoY29uc3QgcmVnZXhfdHJhaXRzX3dyYXBwZXImKTsKLSAgIHJlZ2V4X3RyYWl0c193cmFwcGVyJiBvcGVyYXRvcj0oY29uc3QgcmVnZXhfdHJhaXRzX3dyYXBwZXImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vIGluY2x1ZGUKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHNfZGVmYXVsdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHNfZGVmYXVsdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjRmYzI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzX2RlZmF1bHRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF90cmFpdHNfZGVmYXVsdHMuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBBUEkncyBmb3IgYWNjZXNzIHRvIHJlZ2V4X3RyYWl0cyBkZWZhdWx0IHByb3BlcnRpZXMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0RFRkFVTFRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfREVGQVVMVFNfSFBQX0lOQ0xVREVECi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9TWU5UQVhfVFlQRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9zeW50YXhfdHlwZS5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfRVJST1JfVFlQRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9lcnJvcl90eXBlLmhwcD4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGR7Ci0gICB1c2luZyA6OnN0cmxlbjsKLX0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLQotLy8KLS8vIGhlbHBlcnMgdG8gc3VwcHJlc3Mgd2FybmluZ3M6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGJvb2wgaXNfZXh0ZW5kZWQoY2hhclQgYykKLXsgcmV0dXJuIGMgPiAyNTY7IH0KLWlubGluZSBib29sIGlzX2V4dGVuZGVkKGNoYXIpCi17IHJldHVybiBmYWxzZTsgfQotCi0KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY29uc3QgY2hhciogTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRfZGVmYXVsdF9zeW50YXgocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBuKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY29uc3QgY2hhciogTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIG4pOwotTkROQk9PU1RfUkVHRVhfREVDTCByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2V0X2RlZmF1bHRfc3ludGF4X3R5cGUoY2hhciBjKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRfZGVmYXVsdF9lc2NhcGVfc3ludGF4X3R5cGUoY2hhciBjKTsKLQotLy8gaXMgY2hhclQgYyBhIGNvbWJpbmluZyBjaGFyYWN0ZXI/Ci1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBpc19jb21iaW5pbmdfaW1wbGVtZW50YXRpb24odWludF9sZWFzdDE2X3Qgcyk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBib29sIGlzX2NvbWJpbmluZyhjaGFyVCBjKQotewotICAgcmV0dXJuIChjIDw9IHN0YXRpY19jYXN0PGNoYXJUPigwKSkgPyBmYWxzZSA6ICgoYyA+PSBzdGF0aWNfY2FzdDxjaGFyVD4oKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludF9sZWFzdDE2X3Q+OjptYXgpKCkpKSA/IGZhbHNlIDogaXNfY29tYmluaW5nX2ltcGxlbWVudGF0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihjKSkpOwotfQotdGVtcGxhdGUgPD4KLWlubGluZSBib29sIGlzX2NvbWJpbmluZzxjaGFyPihjaGFyKQotewotICAgcmV0dXJuIGZhbHNlOwotfQotdGVtcGxhdGUgPD4KLWlubGluZSBib29sIGlzX2NvbWJpbmluZzxzaWduZWQgY2hhcj4oc2lnbmVkIGNoYXIpCi17Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci10ZW1wbGF0ZSA8PgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nPHVuc2lnbmVkIGNoYXI+KHVuc2lnbmVkIGNoYXIpCi17Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0jaWYgIWRlZmluZWQoX19ocHV4KSAmJiAhZGVmaW5lZChfX1dJTlNDV19fKSAvLyBjYW4ndCB1c2UgV0NIQVJfTUFYL01JTiBpbiBwcC1kaXJlY3RpdmVzCi0jaWZkZWYgX01TQ19WRVIKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIGlzX2NvbWJpbmluZzx3Y2hhcl90Pih3Y2hhcl90IGMpCi17Ci0gICByZXR1cm4gaXNfY29tYmluaW5nX2ltcGxlbWVudGF0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihjKSk7Ci19Ci0jZWxpZiAhZGVmaW5lZChfX0RFQ0NYWCkgJiYgIWRlZmluZWQoX19vc2ZfXykgJiYgIWRlZmluZWQoX19PU0ZfXykgJiYgZGVmaW5lZChXQ0hBUl9NSU4pICYmIChXQ0hBUl9NSU4gPT0gMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi0jaWYgZGVmaW5lZChXQ0hBUl9NQVgpICYmIChXQ0hBUl9NQVggPD0gVVNIUlRfTUFYKQotdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nPHdjaGFyX3Q+KHdjaGFyX3QgYykKLXsKLSAgIHJldHVybiBpc19jb21iaW5pbmdfaW1wbGVtZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGMpKTsKLX0KLSNlbHNlCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBpc19jb21iaW5pbmc8d2NoYXJfdD4od2NoYXJfdCBjKQotewotICAgcmV0dXJuIChjID49IChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnRfbGVhc3QxNl90Pjo6bWF4KSgpKSA/IGZhbHNlIDogaXNfY29tYmluaW5nX2ltcGxlbWVudGF0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihjKSk7Ci19Ci0jZW5kaWYKLSNlbmRpZgotI2VuZGlmCi0KLS8vCi0vLyBpcyBhIGNoYXJUIGMgYSBsaW5lIHNlcGFyYXRvcj8KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgYm9vbCBpc19zZXBhcmF0b3IoY2hhclQgYykKLXsKLSAgIHJldHVybiBORE5CT09TVF9SRUdFWF9NQUtFX0JPT0woCi0gICAgICAoYyA9PSBzdGF0aWNfY2FzdDxjaGFyVD4oJ1xuJykpCi0gICAgICB8fCAoYyA9PSBzdGF0aWNfY2FzdDxjaGFyVD4oJ1xyJykpCi0gICAgICB8fCAoYyA9PSBzdGF0aWNfY2FzdDxjaGFyVD4oJ1xmJykpCi0gICAgICB8fCAoc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQxNl90PihjKSA9PSAweDIwMjh1KQotICAgICAgfHwgKHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50MTZfdD4oYykgPT0gMHgyMDI5dSkKLSAgICAgIHx8IChzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDE2X3Q+KGMpID09IDB4ODV1KSk7Ci19Ci10ZW1wbGF0ZSA8PgotaW5saW5lIGJvb2wgaXNfc2VwYXJhdG9yPGNoYXI+KGNoYXIgYykKLXsKLSAgIHJldHVybiBORE5CT09TVF9SRUdFWF9NQUtFX0JPT0woKGMgPT0gJ1xuJykgfHwgKGMgPT0gJ1xyJykgfHwgKGMgPT0gJ1xmJykpOwotfQotCi0vLwotLy8gZ2V0IGEgZGVmYXVsdCBjb2xsYXRpbmcgZWxlbWVudDoKLS8vCi1ORE5CT09TVF9SRUdFWF9ERUNMIHN0ZDo6c3RyaW5nIE5ETkJPT1NUX1JFR0VYX0NBTEwgbG9va3VwX2RlZmF1bHRfY29sbGF0ZV9uYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKLQotLy8KLS8vIGdldCB0aGUgc3RhdGVfaWQgb2YgYSBjaGFyYWN0ZXIgY2xhc2lmaWNhdGlvbiwgdGhlIGluZGl2aWR1YWwKLS8vIHRyYWl0cyBjbGFzc2VzIHRoZW4gdHJhbnNmb3JtIHRoYXQgc3RhdGVfaWQgaW50byBhIGJpdG1hc2s6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RydWN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlCi17Ci0gICBjb25zdCBjaGFyVCogcDE7Ci0gICBjb25zdCBjaGFyVCogcDI7Ci0KLSAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgY2hhcmFjdGVyX3BvaW50ZXJfcmFuZ2UmIHIpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBzdGQ6OmxleGljb2dyYXBoaWNhbF9jb21wYXJlKHAxLCBwMiwgci5wMSwgci5wMik7Ci0gICB9Ci0gICBib29sIG9wZXJhdG9yID09IChjb25zdCBjaGFyYWN0ZXJfcG9pbnRlcl9yYW5nZSYgciljb25zdAotICAgewotICAgICAgLy8gTm90IG9ubHkgZG8gd2UgY2hlY2sgdGhhdCB0aGUgcmFuZ2VzIGFyZSBvZiBlcXVhbCBzaXplIGJlZm9yZQotICAgICAgLy8gY2FsbGluZyBzdGQ6OmVxdWFsLCBidXQgdGhlcmUgaXMgbm8gb3RoZXIgYWxnb3JpdGhtIGF2YWlsYWJsZToKLSAgICAgIC8vIG5vdCBldmVuIGEgbm9uLXN0YW5kYXJkIE1TIG9uZS4gIFNvIGZvcndhcmQgdG8gdW5jaGVja2VkX2VxdWFsCi0gICAgICAvLyBpbiB0aGUgTVMgY2FzZS4KLSAgICAgIHJldHVybiAoKHAyIC0gcDEpID09IChyLnAyIC0gci5wMSkpICYmIHJlX2RldGFpbDo6ZXF1YWwocDEsIHAyLCByLnAxKTsKLSAgIH0KLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbnQgZ2V0X2RlZmF1bHRfY2xhc3NfaWQoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpCi17Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgZGF0YVs3M10gPSB7Ci0gICAgICAnYScsICdsJywgJ24nLCAndScsICdtJywKLSAgICAgICdhJywgJ2wnLCAncCcsICdoJywgJ2EnLAotICAgICAgJ2InLCAnbCcsICdhJywgJ24nLCAnaycsCi0gICAgICAnYycsICduJywgJ3QnLCAncicsICdsJywKLSAgICAgICdkJywgJ2knLCAnZycsICdpJywgJ3QnLAotICAgICAgJ2cnLCAncicsICdhJywgJ3AnLCAnaCcsCi0gICAgICAnbCcsICdvJywgJ3cnLCAnZScsICdyJywKLSAgICAgICdwJywgJ3InLCAnaScsICduJywgJ3QnLAotICAgICAgJ3AnLCAndScsICduJywgJ2MnLCAndCcsCi0gICAgICAncycsICdwJywgJ2EnLCAnYycsICdlJywKLSAgICAgICd1JywgJ24nLCAnaScsICdjJywgJ28nLCAnZCcsICdlJywKLSAgICAgICd1JywgJ3AnLCAncCcsICdlJywgJ3InLAotICAgICAgJ3YnLAotICAgICAgJ3cnLCAnbycsICdyJywgJ2QnLAotICAgICAgJ3gnLCAnZCcsICdpJywgJ2cnLCAnaScsICd0JywKLSAgIH07Ci0KLSAgIHN0YXRpYyBjb25zdCBjaGFyYWN0ZXJfcG9pbnRlcl9yYW5nZTxjaGFyVD4gcmFuZ2VzWzIxXSA9Ci0gICB7Ci0gICAgICB7ZGF0YSswLCBkYXRhKzUsfSwgLy8gYWxudW0KLSAgICAgIHtkYXRhKzUsIGRhdGErMTAsfSwgLy8gYWxwaGEKLSAgICAgIHtkYXRhKzEwLCBkYXRhKzE1LH0sIC8vIGJsYW5rCi0gICAgICB7ZGF0YSsxNSwgZGF0YSsyMCx9LCAvLyBjbnRybAotICAgICAge2RhdGErMjAsIGRhdGErMjEsfSwgLy8gZAotICAgICAge2RhdGErMjAsIGRhdGErMjUsfSwgLy8gZGlnaXQKLSAgICAgIHtkYXRhKzI1LCBkYXRhKzMwLH0sIC8vIGdyYXBoCi0gICAgICB7ZGF0YSsyOSwgZGF0YSszMCx9LCAvLyBoCi0gICAgICB7ZGF0YSszMCwgZGF0YSszMSx9LCAvLyBsCi0gICAgICB7ZGF0YSszMCwgZGF0YSszNSx9LCAvLyBsb3dlcgotICAgICAge2RhdGErMzUsIGRhdGErNDAsfSwgLy8gcHJpbnQKLSAgICAgIHtkYXRhKzQwLCBkYXRhKzQ1LH0sIC8vIHB1bmN0Ci0gICAgICB7ZGF0YSs0NSwgZGF0YSs0Nix9LCAvLyBzCi0gICAgICB7ZGF0YSs0NSwgZGF0YSs1MCx9LCAvLyBzcGFjZQotICAgICAge2RhdGErNTcsIGRhdGErNTgsfSwgLy8gdQotICAgICAge2RhdGErNTAsIGRhdGErNTcsfSwgLy8gdW5pY29kZQotICAgICAge2RhdGErNTcsIGRhdGErNjIsfSwgLy8gdXBwZXIKLSAgICAgIHtkYXRhKzYyLCBkYXRhKzYzLH0sIC8vIHYKLSAgICAgIHtkYXRhKzYzLCBkYXRhKzY0LH0sIC8vIHcKLSAgICAgIHtkYXRhKzYzLCBkYXRhKzY3LH0sIC8vIHdvcmQKLSAgICAgIHtkYXRhKzY3LCBkYXRhKzczLH0sIC8vIHhkaWdpdAotICAgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyYWN0ZXJfcG9pbnRlcl9yYW5nZTxjaGFyVD4qIHJhbmdlc19iZWdpbiA9IHJhbmdlczsKLSAgIHN0YXRpYyBjb25zdCBjaGFyYWN0ZXJfcG9pbnRlcl9yYW5nZTxjaGFyVD4qIHJhbmdlc19lbmQgPSByYW5nZXMgKyAoc2l6ZW9mKHJhbmdlcykvc2l6ZW9mKHJhbmdlc1swXSkpOwotCi0gICBjaGFyYWN0ZXJfcG9pbnRlcl9yYW5nZTxjaGFyVD4gdCA9IHsgcDEsIHAyLCB9OwotICAgY29uc3QgY2hhcmFjdGVyX3BvaW50ZXJfcmFuZ2U8Y2hhclQ+KiBwID0gc3RkOjpsb3dlcl9ib3VuZChyYW5nZXNfYmVnaW4sIHJhbmdlc19lbmQsIHQpOwotICAgaWYoKHAgIT0gcmFuZ2VzX2VuZCkgJiYgKHQgPT0gKnApKQotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocCAtIHJhbmdlcyk7Ci0gICByZXR1cm4gLTE7Ci19Ci0KLS8vCi0vLyBoZWxwZXIgZnVuY3Rpb25zOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6cHRyZGlmZl90IGdsb2JhbF9sZW5ndGgoY29uc3QgY2hhclQqIHApCi17Ci0gICBzdGQ6OnB0cmRpZmZfdCBuID0gMDsKLSAgIHdoaWxlKCpwKQotICAgewotICAgICAgKytwOwotICAgICAgKytuOwotICAgfQotICAgcmV0dXJuIG47Ci19Ci10ZW1wbGF0ZTw+Ci1pbmxpbmUgc3RkOjpwdHJkaWZmX3QgZ2xvYmFsX2xlbmd0aDxjaGFyPihjb25zdCBjaGFyKiBwKQotewotICAgcmV0dXJuIChzdGQ6OnN0cmxlbikocCk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdGVtcGxhdGU8PgotaW5saW5lIHN0ZDo6cHRyZGlmZl90IGdsb2JhbF9sZW5ndGg8d2NoYXJfdD4oY29uc3Qgd2NoYXJfdCogcCkKLXsKLSAgIHJldHVybiAoc3RkOjp3Y3NsZW4pKHApOwotfQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgY2hhclQgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfbG93ZXIoY2hhclQgYykKLXsKLSAgIHJldHVybiBjOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGNoYXJUIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX3VwcGVyKGNoYXJUIGMpCi17Ci0gICByZXR1cm4gYzsKLX0KLQotTkROQk9PU1RfUkVHRVhfREVDTCBjaGFyIE5ETkJPT1NUX1JFR0VYX0NBTEwgZG9fZ2xvYmFsX2xvd2VyKGNoYXIgYyk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIGNoYXIgTkROQk9PU1RfUkVHRVhfQ0FMTCBkb19nbG9iYWxfdXBwZXIoY2hhciBjKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIHdjaGFyX3QgTkROQk9PU1RfUkVHRVhfQ0FMTCBkb19nbG9iYWxfbG93ZXIod2NoYXJfdCBjKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgd2NoYXJfdCBORE5CT09TVF9SRUdFWF9DQUxMIGRvX2dsb2JhbF91cHBlcih3Y2hhcl90IGMpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdW5zaWduZWQgc2hvcnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBkb19nbG9iYWxfbG93ZXIodW5zaWduZWQgc2hvcnQgYyk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHVuc2lnbmVkIHNob3J0IE5ETkJPT1NUX1JFR0VYX0NBTEwgZG9fZ2xvYmFsX3VwcGVyKHVuc2lnbmVkIHNob3J0IGMpOwotI2VuZGlmCi0vLwotLy8gVGhpcyBzdWNrczogZGVjbGFyZSB0ZW1wbGF0ZSBzcGVjaWFsaXNhdGlvbnMgb2YgZ2xvYmFsX2xvd2VyL2dsb2JhbF91cHBlcgotLy8gdGhhdCBqdXN0IGZvcndhcmQgdG8gdGhlIG5vbi10ZW1wbGF0ZSBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMuICBXZSBkbwotLy8gdGhpcyBiZWNhdXNlIHRoZXJlIGlzIG9uZSBjb21waWxlciAoQ29tcGFxIFRydTY0IEMrKykgdGhhdCBkb2Vzbid0IHNlZW0KLS8vIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0ZW1wbGF0ZXMgYW5kIG5vbi10ZW1wbGF0ZSBvdmVybG9hZHMuLi4uCi0vLyB3aGF0J3MgbW9yZSwgdGhlIHByaW1hcnkgdGVtcGxhdGUsIHBsdXMgYWxsIG92ZXJsb2FkcyBoYXZlIHRvIGJlCi0vLyBkZWZpbmVkIGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQgKGlmIG9uZSBpcyBpbmxpbmUgdGhleSBhbGwgbXVzdCBiZSkKLS8vIG90aGVyd2lzZSB0aGUgImxvY2FsIHRlbXBsYXRlIGluc3RhbnRpYXRpb24iIGNvbXBpbGVyIG9wdGlvbiBjYW4gcGljawotLy8gdGhlIHdyb25nIGluc3RhbnRpYXRpb24gd2hlbiBsaW5raW5nOgotLy8KLXRlbXBsYXRlPD4gaW5saW5lIGNoYXIgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfbG93ZXI8Y2hhcj4oY2hhciBjKXsgcmV0dXJuIGRvX2dsb2JhbF9sb3dlcihjKTsgfQotdGVtcGxhdGU8PiBpbmxpbmUgY2hhciBORE5CT09TVF9SRUdFWF9DQUxMIGdsb2JhbF91cHBlcjxjaGFyPihjaGFyIGMpeyByZXR1cm4gZG9fZ2xvYmFsX3VwcGVyKGMpOyB9Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdGVtcGxhdGU8PiBpbmxpbmUgd2NoYXJfdCBORE5CT09TVF9SRUdFWF9DQUxMIGdsb2JhbF9sb3dlcjx3Y2hhcl90Pih3Y2hhcl90IGMpeyByZXR1cm4gZG9fZ2xvYmFsX2xvd2VyKGMpOyB9Ci10ZW1wbGF0ZTw+IGlubGluZSB3Y2hhcl90IE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX3VwcGVyPHdjaGFyX3Q+KHdjaGFyX3QgYyl7IHJldHVybiBkb19nbG9iYWxfdXBwZXIoYyk7IH0KLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi10ZW1wbGF0ZTw+IGlubGluZSB1bnNpZ25lZCBzaG9ydCBORE5CT09TVF9SRUdFWF9DQUxMIGdsb2JhbF9sb3dlcjx1bnNpZ25lZCBzaG9ydD4odW5zaWduZWQgc2hvcnQgYyl7IHJldHVybiBkb19nbG9iYWxfbG93ZXIoYyk7IH0KLXRlbXBsYXRlPD4gaW5saW5lIHVuc2lnbmVkIHNob3J0IE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX3VwcGVyPHVuc2lnbmVkIHNob3J0Pih1bnNpZ25lZCBzaG9ydCBjKXsgcmV0dXJuIGRvX2dsb2JhbF91cHBlcihjKTsgfQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWludCBnbG9iYWxfdmFsdWUoY2hhclQgYykKLXsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCB6ZXJvID0gJzAnOwotICAgc3RhdGljIGNvbnN0IGNoYXJUIG5pbmUgPSAnOSc7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgYSA9ICdhJzsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBmID0gJ2YnOwotICAgc3RhdGljIGNvbnN0IGNoYXJUIEEgPSAnQSc7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgRiA9ICdGJzsKLQotICAgaWYoYyA+IGYpIHJldHVybiAtMTsKLSAgIGlmKGMgPj0gYSkgcmV0dXJuIDEwICsgKGMgLSBhKTsKLSAgIGlmKGMgPiBGKSByZXR1cm4gLTE7Ci0gICBpZihjID49IEEpIHJldHVybiAxMCArIChjIC0gQSk7Ci0gICBpZihjID4gbmluZSkgcmV0dXJuIC0xOwotICAgaWYoYyA+PSB6ZXJvKSByZXR1cm4gYyAtIHplcm87Ci0gICByZXR1cm4gLTE7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWludCBnbG9iYWxfdG9pKGNvbnN0IGNoYXJUKiYgcDEsIGNvbnN0IGNoYXJUKiBwMiwgaW50IHJhZGl4LCBjb25zdCB0cmFpdHMmIHQpCi17Ci0gICAodm9pZCl0OyAvLyB3YXJuaW5nIHN1cHByZXNzaW9uCi0gICBpbnQgbmV4dF92YWx1ZSA9IHQudmFsdWUoKnAxLCByYWRpeCk7Ci0gICBpZigocDEgPT0gcDIpIHx8IChuZXh0X3ZhbHVlIDwgMCkgfHwgKG5leHRfdmFsdWUgPj0gcmFkaXgpKQotICAgICAgcmV0dXJuIC0xOwotICAgaW50IHJlc3VsdCA9IDA7Ci0gICB3aGlsZShwMSAhPSBwMikKLSAgIHsKLSAgICAgIG5leHRfdmFsdWUgPSB0LnZhbHVlKCpwMSwgcmFkaXgpOwotICAgICAgaWYoKG5leHRfdmFsdWUgPCAwKSB8fCAobmV4dF92YWx1ZSA+PSByYWRpeCkpCi0gICAgICAgICBicmVhazsKLSAgICAgIHJlc3VsdCAqPSByYWRpeDsKLSAgICAgIHJlc3VsdCArPSBuZXh0X3ZhbHVlOwotICAgICAgKytwMTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBjb25zdCBjaGFyVCogZ2V0X2VzY2FwZV9SX3N0cmluZygpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDMwOSA0MjQ1KQotI2VuZGlmCi0gICBzdGF0aWMgY29uc3QgY2hhclQgZTFbXSA9IHsgJygnLCAnPycsICc+JywgJ1x4MEQnLCAnXHgwQScsICc/JywKLSAgICAgICd8JywgJ1snLCAnXHgwQScsICdceDBCJywgJ1x4MEMnLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPignXHg4NScpLCAnXFwnLCAneCcsICd7JywgJzInLCAnMCcsICcyJywgJzgnLCAnfScsCi0gICAgICAgICAgICAgICAgJ1xcJywgJ3gnLCAneycsICcyJywgJzAnLCAnMicsICc5JywgJ30nLCAnXScsICcpJywgJ1wwJyB9OwotICAgc3RhdGljIGNvbnN0IGNoYXJUIGUyW10gPSB7ICcoJywgJz8nLCAnPicsICdceDBEJywgJ1x4MEEnLCAnPycsCi0gICAgICAnfCcsICdbJywgJ1x4MEEnLCAnXHgwQicsICdceDBDJywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oJ1x4ODUnKSwgJ10nLCAnKScsICdcMCcgfTsKLQotICAgY2hhclQgYyA9IHN0YXRpY19jYXN0PGNoYXJUPigweDIwMjl1KTsKLSAgIGJvb2wgYiA9IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYykgPT0gMHgyMDI5dSk7Ci0KLSAgIHJldHVybiAoYiA/IGUxIDogZTIpOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8PgotaW5saW5lIGNvbnN0IGNoYXIqIGdldF9lc2NhcGVfUl9zdHJpbmc8Y2hhcj4oKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQzMDkpCi0jZW5kaWYKLSAgIHN0YXRpYyBjb25zdCBjaGFyIGUyW10gPSB7ICcoJywgJz8nLCAnPicsICdceDBEJywgJ1x4MEEnLCAnPycsCi0gICAgICAnfCcsICdbJywgJ1x4MEEnLCAnXHgwQicsICdceDBDJywgJ1x4ODUnLCAnXScsICcpJywgJ1wwJyB9OwotICAgcmV0dXJuIGUyOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi19IC8vIHJlX2RldGFpbAotfSAvLyBib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF93b3JrYXJvdW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfd29ya2Fyb3VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ZDQzODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF93b3JrYXJvdW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfd29ya2Fyb3VuZHMuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBNaXNjIHdvcmthcm91bmRzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1dPUktBUk9VTkRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1dPUktBUk9VTkRfSFBQCi0KLQotI2luY2x1ZGUgPG5ldz4KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxjYXNzZXJ0PgotI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxjbGltaXRzPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Njb3BlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Njb3BlZF9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2xfZndkLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotIyAgIGluY2x1ZGUgPGxvY2FsZT4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLW5hbWVzcGFjZSBzdGR7Ci0gICB1c2luZyA6OnNwcmludGY7IHVzaW5nIDo6c3RyY3B5OyB1c2luZyA6OnN0cmNhdDsgdXNpbmcgOjpzdHJsZW47Ci19Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgcmVfZGV0YWlsewotI2lmZGVmIE5ETkJPT1NUX05PX1NURF9ESVNUQU5DRQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdGQ6OnB0cmRpZmZfdCBkaXN0YW5jZShjb25zdCBUJiB4LCBjb25zdCBUJiB5KQoteyByZXR1cm4geSAtIHg7IH0KLSNlbHNlCi11c2luZyBzdGQ6OmRpc3RhbmNlOwotI2VuZGlmCi19fQotCi0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT19CT09MCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFLRV9CT09MKHgpIHN0YXRpY19jYXN0PGJvb2w+KCh4KSA/IHRydWUgOiBmYWxzZSkKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFLRV9CT09MKHgpIHN0YXRpY19jYXN0PGJvb2w+KHgpCi0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIEZpeCBicm9rZW4gYnJva2VuIG5hbWVzcGFjZSBzdXBwb3J0OgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLQotbmFtZXNwYWNlIHN0ZHsKLSAgIHVzaW5nIDo6cHRyZGlmZl90OwotICAgdXNpbmcgOjpzaXplX3Q7Ci0gICB1c2luZyA6OmFiczsKLSAgIHVzaW5nIDo6bWVtc2V0OwotICAgdXNpbmcgOjptZW1jcHk7Ci19Ci0KLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgaGVscGVyIGZ1bmN0aW9ucyBwb2ludGVyX2NvbnN0cnVjdC9wb2ludGVyX2Rlc3Ryb3k6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgcmVfZGV0YWlsewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nIChwdXNoKQotI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDEwMCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSB2b2lkIHBvaW50ZXJfZGVzdHJveShUKiBwKQoteyBwLT5+VCgpOyAodm9pZClwOyB9Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcgKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSB2b2lkIHBvaW50ZXJfY29uc3RydWN0KFQqIHAsIGNvbnN0IFQmIHQpCi17IG5ldyAocCkgVCh0KTsgfQotCi19fSAvLyBuYW1lc3BhY2VzCi0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIGhlbHBlciBmdW5jdGlvbiBjb3B5OgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIHJlX2RldGFpbHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPj0xNDAwKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwxNjAwKSAmJiBkZWZpbmVkKF9DUFBMSUJfVkVSKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCKSAmJiAhKGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikpCi0gICAvLwotICAgLy8gTVNWQyA4IHdpbGwgZWl0aGVyIGVtaXQgd2FybmluZ3Mgb3IgZWxzZSByZWZ1c2UgdG8gY29tcGlsZQotICAgLy8gY29kZSB0aGF0IG1ha2VzIHBlcmZlY3RseSBsZWdpdGltYXRlIHVzZSBvZiBzdGQ6OmNvcHksIHdoZW4KLSAgIC8vIHRoZSBPdXRwdXRJdGVyYXRvciB0eXBlIGlzIGEgdXNlci1kZWZpbmVkIGNsYXNzIChhcHBhcmVudGx5IGFsbCB1c2VyIAotICAgLy8gZGVmaW5lZCBpdGVyYXRvcnMgYXJlICJ1bnNhZmUiKS4gIFRoaXMgY29kZSB3b3JrcyBhcm91bmQgdGhhdDoKLSAgIC8vCi0gICB0ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yLCBjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLSAgIGlubGluZSBPdXRwdXRJdGVyYXRvciBjb3B5KAotICAgICAgSW5wdXRJdGVyYXRvciBmaXJzdCwgCi0gICAgICBJbnB1dEl0ZXJhdG9yIGxhc3QsIAotICAgICAgT3V0cHV0SXRlcmF0b3IgZGVzdAotICAgKQotICAgewotICAgICAgcmV0dXJuIHN0ZGV4dDo6dW5jaGVja2VkX2NvcHkoZmlyc3QsIGxhc3QsIGRlc3QpOwotICAgfQotICAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRvcjEsIGNsYXNzIElucHV0SXRlcmF0b3IyPgotICAgaW5saW5lIGJvb2wgZXF1YWwoCi0gICAgICBJbnB1dEl0ZXJhdG9yMSBmaXJzdCwgCi0gICAgICBJbnB1dEl0ZXJhdG9yMSBsYXN0LCAKLSAgICAgIElucHV0SXRlcmF0b3IyIHdpdGgKLSAgICkKLSAgIHsKLSAgICAgIHJldHVybiBzdGRleHQ6OnVuY2hlY2tlZF9lcXVhbChmaXJzdCwgbGFzdCwgd2l0aCk7Ci0gICB9Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID4gMTUwMCkKLSAgIC8vCi0gICAvLyBNU1ZDIDEwIHdpbGwgZWl0aGVyIGVtaXQgd2FybmluZ3Mgb3IgZWxzZSByZWZ1c2UgdG8gY29tcGlsZQotICAgLy8gY29kZSB0aGF0IG1ha2VzIHBlcmZlY3RseSBsZWdpdGltYXRlIHVzZSBvZiBzdGQ6OmNvcHksIHdoZW4KLSAgIC8vIHRoZSBPdXRwdXRJdGVyYXRvciB0eXBlIGlzIGEgdXNlci1kZWZpbmVkIGNsYXNzIChhcHBhcmVudGx5IGFsbCB1c2VyIAotICAgLy8gZGVmaW5lZCBpdGVyYXRvcnMgYXJlICJ1bnNhZmUiKS4gIFdoYXQncyBtb3JlIE1pY3Jvc29mdCBoYXZlIHJlbW92ZWQgdGhlaXIKLSAgIC8vIG5vbi1zdGFuZGFyZCAidW5jaGVja2VkIiB2ZXJzaW9ucywgZXZlbiB0aG91Z2ggdGhlaXIgc3RpbGwgaW4gdGhlIE1TCi0gICAvLyBkb2N1bWVudGF0aW9uISEgV29yayBhcm91bmQgdGhpcyBhcyBiZXN0IHdlIGNhbjogCi0gICAvLwotICAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRvciwgY2xhc3MgT3V0cHV0SXRlcmF0b3I+Ci0gICBpbmxpbmUgT3V0cHV0SXRlcmF0b3IgY29weSgKLSAgICAgIElucHV0SXRlcmF0b3IgZmlyc3QsIAotICAgICAgSW5wdXRJdGVyYXRvciBsYXN0LCAKLSAgICAgIE91dHB1dEl0ZXJhdG9yIGRlc3QKLSAgICkKLSAgIHsKLSAgICAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICAgICAgICAqZGVzdCsrID0gKmZpcnN0Kys7Ci0gICAgICByZXR1cm4gZGVzdDsKLSAgIH0KLSAgIHRlbXBsYXRlPGNsYXNzIElucHV0SXRlcmF0b3IxLCBjbGFzcyBJbnB1dEl0ZXJhdG9yMj4KLSAgIGlubGluZSBib29sIGVxdWFsKAotICAgICAgSW5wdXRJdGVyYXRvcjEgZmlyc3QsIAotICAgICAgSW5wdXRJdGVyYXRvcjEgbGFzdCwgCi0gICAgICBJbnB1dEl0ZXJhdG9yMiB3aXRoCi0gICApCi0gICB7Ci0gICAgICB3aGlsZShmaXJzdCAhPSBsYXN0KQotICAgICAgICAgaWYoKmZpcnN0KysgIT0gKndpdGgrKykgcmV0dXJuIGZhbHNlOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0jZWxzZSAKLSAgIHVzaW5nIHN0ZDo6Y29weTsgCi0gICB1c2luZyBzdGQ6OmVxdWFsOyAKLSNlbmRpZiAKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPj0xNDAwKSAmJiBkZWZpbmVkKF9fU1REQ19XQU5UX1NFQ1VSRV9MSUJfXykgJiYgX19TVERDX1dBTlRfU0VDVVJFX0xJQl9fIAotCi0gICAvLyB1c2Ugc2FmZSB2ZXJzaW9ucyBvZiBzdHJjcHkgZXRjOgotICAgdXNpbmcgOjpzdHJjcHlfczsKLSAgIHVzaW5nIDo6c3RyY2F0X3M7Ci0jZWxzZQotICAgaW5saW5lIHN0ZDo6c2l6ZV90IHN0cmNweV9zKAotICAgICAgY2hhciAqc3RyRGVzdGluYXRpb24sCi0gICAgICBzdGQ6OnNpemVfdCBzaXplSW5CeXRlcywKLSAgICAgIGNvbnN0IGNoYXIgKnN0clNvdXJjZSAKLSAgICkKLSAgIHsKLSAgICAgIGlmKHN0ZDo6c3RybGVuKHN0clNvdXJjZSkrMSA+IHNpemVJbkJ5dGVzKQotICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICBzdGQ6OnN0cmNweShzdHJEZXN0aW5hdGlvbiwgc3RyU291cmNlKTsKLSAgICAgIHJldHVybiAwOwotICAgfQotICAgaW5saW5lIHN0ZDo6c2l6ZV90IHN0cmNhdF9zKAotICAgICAgY2hhciAqc3RyRGVzdGluYXRpb24sCi0gICAgICBzdGQ6OnNpemVfdCBzaXplSW5CeXRlcywKLSAgICAgIGNvbnN0IGNoYXIgKnN0clNvdXJjZSAKLSAgICkKLSAgIHsKLSAgICAgIGlmKHN0ZDo6c3RybGVuKHN0clNvdXJjZSkgKyBzdGQ6OnN0cmxlbihzdHJEZXN0aW5hdGlvbikgKyAxID4gc2l6ZUluQnl0ZXMpCi0gICAgICAgICByZXR1cm4gMTsKLSAgICAgIHN0ZDo6c3RyY2F0KHN0ckRlc3RpbmF0aW9uLCBzdHJTb3VyY2UpOwotICAgICAgcmV0dXJuIDA7Ci0gICB9Ci0KLSNlbmRpZgotCi0gICBpbmxpbmUgdm9pZCBvdmVyZmxvd19lcnJvcl9pZl9ub3RfemVybyhzdGQ6OnNpemVfdCBpKQotICAgewotICAgICAgaWYoaSkKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6b3ZlcmZsb3dfZXJyb3IgZSgiU3RyaW5nIGJ1ZmZlciB0b28gc21hbGwiKTsKLSAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZSk7Ci0gICAgICB9Ci0gICB9Ci0KLX19IC8vIG5hbWVzcGFjZXMKLQotI2VuZGlmIC8vIF9fY3BsdXNwbHVzCi0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3RhdGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3RhdGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY5OGZhMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N0YXRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHN0YXRlcy5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIGludGVybmFsIHN0YXRlIG1hY2hpbmUgc3RydWN0dXJlcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9TVEFURVNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1NUQVRFU19IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0vKioqIG1hc2tfdHlwZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1XaGVuZXZlciB3ZSBoYXZlIGEgY2hvaWNlIG9mIHR3byBhbHRlcm5hdGl2ZXMsIHdlIHVzZSBhbiBhcnJheSBvZiBieXRlcwotdG8gaW5kaWNhdGUgd2hpY2ggb2YgdGhlIHR3byBhbHRlcm5hdGl2ZXMgaXQgaXMgcG9zc2libGUgdG8gdGFrZSBmb3IgYW55Ci1naXZlbiBpbnB1dCBjaGFyYWN0ZXIuICBJZiBtYXNrX3Rha2UgaXMgc2V0LCB0aGVuIHdlIGNhbiB0YWtlIHRoZSBuZXh0IAotc3RhdGUsIGFuZCBpZiBtYXNrX3NraXAgaXMgc2V0IHRoZW4gd2UgY2FuIHRha2UgdGhlIGFsdGVybmF0aXZlLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1lbnVtIG1hc2tfdHlwZQotewotICAgbWFza190YWtlID0gMSwKLSAgIG1hc2tfc2tpcCA9IDIsCi0gICBtYXNrX2luaXQgPSA0LAotICAgbWFza19hbnkgPSBtYXNrX3NraXAgfCBtYXNrX3Rha2UsCi0gICBtYXNrX2FsbCA9IG1hc2tfYW55Ci19OwotCi0vKioqIGhlbHBlcnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotVGhlc2UgaGVscGVycyBsZXQgdXMgdXNlIGZ1bmN0aW9uIG92ZXJsb2FkIHJlc29sdXRpb24gdG8gZGV0ZWN0IHdoZXRoZXIKLXdlIGhhdmUgbmFycm93IG9yIHdpZGUgY2hhcmFjdGVyIHN0cmluZ3M6Ci0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCBfbmFycm93X3R5cGV7fTsKLXN0cnVjdCBfd2lkZV90eXBle307Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+IHN0cnVjdCBpc19ieXRlOwotdGVtcGxhdGU8PiAgICAgICAgICAgICBzdHJ1Y3QgaXNfYnl0ZTxjaGFyPiAgICAgICAgIHsgdHlwZWRlZiBfbmFycm93X3R5cGUgd2lkdGhfdHlwZTsgfTsKLXRlbXBsYXRlPD4gICAgICAgICAgICAgc3RydWN0IGlzX2J5dGU8dW5zaWduZWQgY2hhcj57IHR5cGVkZWYgX25hcnJvd190eXBlIHdpZHRoX3R5cGU7IH07Ci10ZW1wbGF0ZTw+ICAgICAgICAgICAgIHN0cnVjdCBpc19ieXRlPHNpZ25lZCBjaGFyPiAgeyB0eXBlZGVmIF9uYXJyb3dfdHlwZSB3aWR0aF90eXBlOyB9OwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPiBzdHJ1Y3QgaXNfYnl0ZSAgICAgICAgICAgICAgIHsgdHlwZWRlZiBfd2lkZV90eXBlIHdpZHRoX3R5cGU7IH07Ci0KLS8qKiogZW51bSBzeW50YXhfZWxlbWVudF90eXBlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotRXZlcnkgcmVjb3JkIGluIHRoZSBzdGF0ZSBtYWNoaW5lIGZhbGxzIGludG8gb25lIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXM6Ci0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLWVudW0gc3ludGF4X2VsZW1lbnRfdHlwZQotewotICAgLy8gc3RhcnQgb2YgYSBtYXJrZWQgc3ViLWV4cHJlc3Npb24sIG9yIHBlcmwtc3R5bGUgKD8uLi4pIGV4dGVuc2lvbgotICAgc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrID0gMCwKLSAgIC8vIGVuZCBvZiBhIG1hcmtlZCBzdWItZXhwcmVzc2lvbiwgb3IgcGVybC1zdHlsZSAoPy4uLikgZXh0ZW5zaW9uCi0gICBzeW50YXhfZWxlbWVudF9lbmRtYXJrID0gc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrICsgMSwKLSAgIC8vIGFueSBzZXF1ZW5jZSBvZiBsaXRlcmFsIGNoYXJhY3RlcnMKLSAgIHN5bnRheF9lbGVtZW50X2xpdGVyYWwgPSBzeW50YXhfZWxlbWVudF9lbmRtYXJrICsgMSwKLSAgIC8vIHN0YXJ0IG9mIGxpbmUgYXNzZXJ0aW9uOiBeCi0gICBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lID0gc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCArIDEsCi0gICAvLyBlbmQgb2YgbGluZSBhc3NlcnRpb24gJAotICAgc3ludGF4X2VsZW1lbnRfZW5kX2xpbmUgPSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lICsgMSwKLSAgIC8vIG1hdGNoIGFueSBjaGFyYWN0ZXI6IC4KLSAgIHN5bnRheF9lbGVtZW50X3dpbGQgPSBzeW50YXhfZWxlbWVudF9lbmRfbGluZSArIDEsCi0gICAvLyBlbmQgb2YgZXhwcmVzc2lvbjogd2UgaGF2ZSBhIG1hdGNoIHdoZW4gd2UgZ2V0IGhlcmUKLSAgIHN5bnRheF9lbGVtZW50X21hdGNoID0gc3ludGF4X2VsZW1lbnRfd2lsZCArIDEsCi0gICAvLyBwZXJsIHN0eWxlIHdvcmQgYm91bmRhcnk6IFxiCi0gICBzeW50YXhfZWxlbWVudF93b3JkX2JvdW5kYXJ5ID0gc3ludGF4X2VsZW1lbnRfbWF0Y2ggKyAxLAotICAgLy8gcGVybCBzdHlsZSB3aXRoaW4gd29yZCBib3VuZGFyeTogXEIKLSAgIHN5bnRheF9lbGVtZW50X3dpdGhpbl93b3JkID0gc3ludGF4X2VsZW1lbnRfd29yZF9ib3VuZGFyeSArIDEsCi0gICAvLyBzdGFydCBvZiB3b3JkIGFzc2VydGlvbjogXDwKLSAgIHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQgPSBzeW50YXhfZWxlbWVudF93aXRoaW5fd29yZCArIDEsCi0gICAvLyBlbmQgb2Ygd29yZCBhc3NlcnRpb246IFw+Ci0gICBzeW50YXhfZWxlbWVudF93b3JkX2VuZCA9IHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQgKyAxLAotICAgLy8gc3RhcnQgb2YgYnVmZmVyIGFzc2VydGlvbjogXGAKLSAgIHN5bnRheF9lbGVtZW50X2J1ZmZlcl9zdGFydCA9IHN5bnRheF9lbGVtZW50X3dvcmRfZW5kICsgMSwKLSAgIC8vIGVuZCBvZiBidWZmZXIgYXNzZXJ0aW9uOiBcJwotICAgc3ludGF4X2VsZW1lbnRfYnVmZmVyX2VuZCA9IHN5bnRheF9lbGVtZW50X2J1ZmZlcl9zdGFydCArIDEsCi0gICAvLyBiYWNrcmVmZXJlbmNlIHRvIHByZXZpb3VzbHkgbWF0Y2hlZCBzdWItZXhwcmVzc2lvbgotICAgc3ludGF4X2VsZW1lbnRfYmFja3JlZiA9IHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQgKyAxLAotICAgLy8gZWl0aGVyIGEgd2lkZSBjaGFyYWN0ZXIgc2V0IFsuLl0gb3Igb25lIHdpdGggbXVsdGljaGFyYWN0ZXIgY29sbGF0aW5nIGVsZW1lbnRzOgotICAgc3ludGF4X2VsZW1lbnRfbG9uZ19zZXQgPSBzeW50YXhfZWxlbWVudF9iYWNrcmVmICsgMSwKLSAgIC8vIG5hcnJvdyBjaGFyYWN0ZXIgc2V0OiBbLi4uXQotICAgc3ludGF4X2VsZW1lbnRfc2V0ID0gc3ludGF4X2VsZW1lbnRfbG9uZ19zZXQgKyAxLAotICAgLy8ganVtcCB0byBhIG5ldyBzdGF0ZSBpbiB0aGUgbWFjaGluZToKLSAgIHN5bnRheF9lbGVtZW50X2p1bXAgPSBzeW50YXhfZWxlbWVudF9zZXQgKyAxLAotICAgLy8gY2hvb3NlIGJldHdlZW4gdHdvIHByb2R1Y3Rpb24gc3RhdGVzOgotICAgc3ludGF4X2VsZW1lbnRfYWx0ID0gc3ludGF4X2VsZW1lbnRfanVtcCArIDEsCi0gICAvLyBhIHJlcGVhdAotICAgc3ludGF4X2VsZW1lbnRfcmVwID0gc3ludGF4X2VsZW1lbnRfYWx0ICsgMSwKLSAgIC8vIG1hdGNoIGEgY29tYmluaW5nIGNoYXJhY3RlciBzZXF1ZW5jZQotICAgc3ludGF4X2VsZW1lbnRfY29tYmluaW5nID0gc3ludGF4X2VsZW1lbnRfcmVwICsgMSwKLSAgIC8vIHBlcmwgc3R5bGUgc29mdCBidWZmZXIgZW5kOiBcegotICAgc3ludGF4X2VsZW1lbnRfc29mdF9idWZmZXJfZW5kID0gc3ludGF4X2VsZW1lbnRfY29tYmluaW5nICsgMSwKLSAgIC8vIHBlcmwgc3R5bGUgY29udGludWF0aW9uOiBcRwotICAgc3ludGF4X2VsZW1lbnRfcmVzdGFydF9jb250aW51ZSA9IHN5bnRheF9lbGVtZW50X3NvZnRfYnVmZmVyX2VuZCArIDEsCi0gICAvLyBzaW5nbGUgY2hhcmFjdGVyIHJlcGVhdHM6Ci0gICBzeW50YXhfZWxlbWVudF9kb3RfcmVwID0gc3ludGF4X2VsZW1lbnRfcmVzdGFydF9jb250aW51ZSArIDEsCi0gICBzeW50YXhfZWxlbWVudF9jaGFyX3JlcCA9IHN5bnRheF9lbGVtZW50X2RvdF9yZXAgKyAxLAotICAgc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcCA9IHN5bnRheF9lbGVtZW50X2NoYXJfcmVwICsgMSwKLSAgIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcCA9IHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXAgKyAxLAotICAgLy8gYSBiYWNrc3RlcCBmb3IgbG9va2JlaGluZCByZXBlYXRzOgotICAgc3ludGF4X2VsZW1lbnRfYmFja3N0ZXAgPSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXAgKyAxLAotICAgLy8gYW4gYXNzZXJ0aW9uIHRoYXQgYSBtYXJrIHdhcyBtYXRjaGVkOgotICAgc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYgPSBzeW50YXhfZWxlbWVudF9iYWNrc3RlcCArIDEsCi0gICBzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZSA9IHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmICsgMSwKLSAgIC8vIGEgcmVjdXJzaXZlIGV4cHJlc3Npb246Ci0gICBzeW50YXhfZWxlbWVudF9yZWN1cnNlID0gc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UgKyAxCi19OwotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfREVCVUcKLS8vIGR3YSAwOS8yNi8wMCAtIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IGFuIGFtYmlndW91cyBjb252ZXJzaW9uCi1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiwgc3ludGF4X2VsZW1lbnRfdHlwZSk7Ci0jZW5kaWYKLQotc3RydWN0IHJlX3N5bnRheF9iYXNlOwotCi0vKioqIHVuaW9uIG9mZnNldF90eXBlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotUG9pbnRzIHRvIGFub3RoZXIgc3RhdGUgaW4gdGhlIG1hY2hpbmUuICBEdXJpbmcgbWFjaGluZSBjb25zdHJ1Y3Rpb24KLXdlIHVzZSBpbnRlZ3JhbCBvZmZzZXRzLCBidXQgdGhlc2UgYXJlIGNvbnZlcnRlZCB0byBwb2ludGVycyBiZWZvcmUKLWV4ZWN1dGlvbiBvZiB0aGUgbWFjaGluZS4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdW5pb24gb2Zmc2V0X3R5cGUKLXsKLSAgIHJlX3N5bnRheF9iYXNlKiAgIHA7Ci0gICBzdGQ6OnB0cmRpZmZfdCAgICBpOwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfc3ludGF4X2Jhc2UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUJhc2UgY2xhc3MgZm9yIGFsbCBzdGF0ZXMgaW4gdGhlIG1hY2hpbmUuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9zeW50YXhfYmFzZQotewotICAgc3ludGF4X2VsZW1lbnRfdHlwZSAgIHR5cGU7ICAgICAgICAgLy8gd2hhdCBraW5kIG9mIHN0YXRlIHRoaXMgaXMKLSAgIG9mZnNldF90eXBlICAgICAgICAgICBuZXh0OyAgICAgICAgIC8vIG5leHQgc3RhdGUgaW4gdGhlIG1hY2hpbmUKLX07Ci0KLS8qKiogc3RydWN0IHJlX2JyYWNlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1BIG1hcmtlZCBwYXJlbnRoZXNpcy4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX2JyYWNlIDogcHVibGljIHJlX3N5bnRheF9iYXNlCi17Ci0gICAvLyBUaGUgaW5kZXggdG8gbWF0Y2gsIGNhbiBiZSB6ZXJvIChkb24ndCBtYXJrIHRoZSBzdWItZXhwcmVzc2lvbikKLSAgIC8vIG9yIG5lZ2F0aXZlIChmb3IgcGVybCBzdHlsZSAoPy4uLikgZXh0ZW50aW9ucyk6Ci0gICBpbnQgaW5kZXg7Ci0gICBib29sIGljYXNlOwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfZG90ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1NYXRjaCBhbnl0aGluZy4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotZW51bQotewotICAgZG9udF9jYXJlID0gMSwKLSAgIGZvcmNlX25vdF9uZXdsaW5lID0gMCwKLSAgIGZvcmNlX25ld2xpbmUgPSAyLAotCi0gICB0ZXN0X25vdF9uZXdsaW5lID0gMiwKLSAgIHRlc3RfbmV3bGluZSA9IDMKLX07Ci1zdHJ1Y3QgcmVfZG90IDogcHVibGljIHJlX3N5bnRheF9iYXNlCi17Ci0gICB1bnNpZ25lZCBjaGFyIG1hc2s7Ci19OwotCi0vKioqIHN0cnVjdCByZV9saXRlcmFsICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQSBzdHJpbmcgb2YgbGl0ZXJhbHMsIGZvbGxvd2luZyB0aGlzIHN0cnVjdHVyZSB3aWxsIGJlIGFuIAotYXJyYXkgb2YgY2hhcmFjdGVyczogY2hhclRbbGVuZ3RoXQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgcmVfbGl0ZXJhbCA6IHB1YmxpYyByZV9zeW50YXhfYmFzZQotewotICAgdW5zaWduZWQgaW50IGxlbmd0aDsKLX07Ci0KLS8qKiogc3RydWN0IHJlX2Nhc2UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1JbmRpY2F0ZXMgd2hldGhlciB3ZSBhcmUgbW92aW5nIHRvIGEgY2FzZSBpbnNlbnNpdmUgYmxvY2sgb3Igbm90Ci0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9jYXNlIDogcHVibGljIHJlX3N5bnRheF9iYXNlCi17Ci0gICBib29sIGljYXNlOwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfc2V0X2xvbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUEgd2lkZSBjaGFyYWN0ZXIgc2V0IG9mIGNoYXJhY3RlcnMsIGZvbGxvd2luZyB0aGlzIHN0cnVjdHVyZSB3aWxsIGJlCi1hbiBhcnJheSBvZiB0eXBlIGNoYXJUOgotRmlyc3QgY3NpbmdsZXMgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MKLVRoZW4gMiAqIGNyYW5nZXMgTlVMTCB0ZXJtaW5hdGVkIHN0cmluZ3MKLVRoZW4gY2VxdWl2YWxlbnRzIE5VTEwgdGVybWluYXRlZCBzdHJpbmdzCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXRlbXBsYXRlIDxjbGFzcyBtYXNrX3R5cGU+Ci1zdHJ1Y3QgcmVfc2V0X2xvbmcgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGNzaW5nbGVzLCBjcmFuZ2VzLCBjZXF1aXZhbGVudHM7Ci0gICBtYXNrX3R5cGUgICAgICAgICAgICAgICBjY2xhc3NlczsKLSAgIG1hc2tfdHlwZSAgICAgICAgICAgICAgIGNuY2xhc3NlczsKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGlzbm90OwotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgc2luZ2xldG9uOwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfc2V0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUEgc2V0IG9mIG5hcnJvdy1jaGFyYWN0ZXJzLCBtYXRjaGVzIGFueSBvZiBfbWFwIHdoaWNoIGlzIG5vbmUtemVybwotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgcmVfc2V0IDogcHVibGljIHJlX3N5bnRheF9iYXNlCi17Ci0gICB1bnNpZ25lZCBjaGFyIF9tYXBbMSA8PCBDSEFSX0JJVF07Ci19OwotCi0vKioqIHN0cnVjdCByZV9qdW1wICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotSnVtcCB0byBhIG5ldyBsb2NhdGlvbiBpbiB0aGUgbWFjaGluZSAobm90IG5leHQpLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgcmVfanVtcCA6IHB1YmxpYyByZV9zeW50YXhfYmFzZQotewotICAgb2Zmc2V0X3R5cGUgICAgIGFsdDsgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIHRvIGp1bXAgdG8KLX07Ci0KLS8qKiogc3RydWN0IHJlX2FsdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUp1bXAgdG8gYSBuZXcgbG9jYXRpb24gaW4gdGhlIG1hY2hpbmUgKHBvc3NpYmx5IG5leHQpLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgcmVfYWx0IDogcHVibGljIHJlX2p1bXAKLXsKLSAgIHVuc2lnbmVkIGNoYXIgICBfbWFwWzEgPDwgQ0hBUl9CSVRdOyAvLyB3aGljaCBjaGFyYWN0ZXJzIGNhbiB0YWtlIHRoZSBqdW1wCi0gICB1bnNpZ25lZCBpbnQgICAgY2FuX2JlX251bGw7ICAgICAgICAgLy8gdHJ1ZSBpZiB3ZSBtYXRjaCBhIE5VTEwgc3RyaW5nCi19OwotCi0vKioqIHN0cnVjdCByZV9yZXBlYXQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotUmVwZWF0IGEgc2VjdGlvbiBvZiB0aGUgbWFjaGluZQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgcmVfcmVwZWF0IDogcHVibGljIHJlX2FsdAotewotICAgc3RkOjpzaXplX3QgICBtaW4sIG1heDsgIC8vIG1pbiBhbmQgbWF4IGFsbG93YWJsZSByZXBlYXRzCi0gICBpbnQgICAgICAgICAgIHN0YXRlX2lkOyAgICAgICAgLy8gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVwZWF0Ci0gICBib29sICAgICAgICAgIGxlYWRpbmc7ICAgLy8gVHJ1ZSBpZiB0aGlzIHJlcGVhdCBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIG1hY2hpbmUgKGxldHMgdXMgb3B0aW1pemUgc29tZSBzZWFyY2hlcykKLSAgIGJvb2wgICAgICAgICAgZ3JlZWR5OyAgICAvLyBUcnVlIGlmIHRoaXMgaXMgYSBncmVlZHkgcmVwZWF0Ci19OwotCi0vKioqIHN0cnVjdCByZV9yZWN1cnNlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotUmVjdXJzZSB0byBhIHBhcnRpY3VsYXIgc3ViZXhwcmVzc2lvbi4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgcmVfcmVjdXJzZSA6IHB1YmxpYyByZV9qdW1wCi17Ci0gICBpbnQgc3RhdGVfaWQ7ICAgICAgICAgICAgIC8vIGlkZW50aWZpZXIgb2YgZmlyc3QgbmVzdGVkIHJlcGVhdCB3aXRoaW4gdGhlIHJlY3Vyc2lvbi4KLX07Ci0KLS8qKiogZW51bSByZV9qdW1wX3NpemVfdHlwZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1Qcm92aWRlcyBjb21waWxlZCBzaXplIG9mIHJlX2p1bXAgc3RydWN0dXJlIChhbGxvd2luZyBmb3IgdHJhaWxpbmcgYWxpZ25tZW50KS4KLVdlIHByb3ZpZGUgdGhpcyBzbyB3ZSBrbm93IGhvdyBtYW55Ynl0ZXMgdG8gaW5zZXJ0IHdoZW4gY29uc3RydWN0aW5nIHRoZSBtYWNoaW5lCi0oVGhlIHZhbHVlIG9mIHBhZGRpbmdfbWFzayBpcyBkZWZpbmVkIGluIHJlZ2V4X3Jhd19idWZmZXIuaHBwKS4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotZW51bSByZV9qdW1wX3NpemVfdHlwZQotewotICAgcmVfanVtcF9zaXplID0gKHNpemVvZihyZV9qdW1wKSArIHBhZGRpbmdfbWFzaykgJiB+KHBhZGRpbmdfbWFzayksCi0gICByZV9yZXBlYXRlcl9zaXplID0gKHNpemVvZihyZV9yZXBlYXQpICsgcGFkZGluZ19tYXNrKSAmIH4ocGFkZGluZ19tYXNrKSwKLSAgIHJlX2FsdF9zaXplID0gKHNpemVvZihyZV9hbHQpICsgcGFkZGluZ19tYXNrKSAmIH4ocGFkZGluZ19tYXNrKQotfTsKLQotLyoqKiBwcm9jIHJlX2lzX3NldF9tZW1iZXIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1Gb3J3YXJkIGRlY2xhcmF0aW9uOiB3ZSdsbCBuZWVkIHRoaXMgb25lIGxhdGVyLi4uCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXN0cnVjdCByZWdleF9kYXRhOwotCi10ZW1wbGF0ZSA8Y2xhc3MgaXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHNfdHlwZSwgY2xhc3MgY2hhcl9jbGFzc1Q+Ci1pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIHJlX2lzX3NldF9tZW1iZXIoaXRlcmF0b3IgbmV4dCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZV9zZXRfbG9uZzxjaGFyX2NsYXNzVD4qIHNldF8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleF9kYXRhPGNoYXJULCB0cmFpdHNfdHlwZT4mIGUsIGJvb2wgaWNhc2UpOwotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N1Yl9tYXRjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N1Yl9tYXRjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMWNjODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zdWJfbWF0Y2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBzdWJfbWF0Y2guY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyB0ZW1wbGF0ZSBjbGFzcyBzdWJfbWF0Y2guCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfU1VCX01BVENIX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9TVUJfTUFUQ0hfSFBQCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotc3RydWN0IHN1Yl9tYXRjaCA6IHB1YmxpYyBzdGQ6OnBhaXI8QmlkaUl0ZXJhdG9yLCBCaWRpSXRlcmF0b3I+Ci17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlJdGVyYXRvcj46OnZhbHVlX3R5cGUgICAgICAgdmFsdWVfdHlwZTsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0jZWxzZQotICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgIGRpZmZlcmVuY2VfdHlwZTsKLSNlbmRpZgotICAgdHlwZWRlZiAgICAgICAgICBCaWRpSXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIEJpZGlJdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICB0eXBlZGVmICAgICAgICAgIEJpZGlJdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3I7Ci0KLSAgIGJvb2wgbWF0Y2hlZDsKLQotICAgc3ViX21hdGNoKCkgOiBzdGQ6OnBhaXI8QmlkaUl0ZXJhdG9yLCBCaWRpSXRlcmF0b3I+KCksIG1hdGNoZWQoZmFsc2UpIHt9Ci0gICBzdWJfbWF0Y2goQmlkaUl0ZXJhdG9yIGkpIDogc3RkOjpwYWlyPEJpZGlJdGVyYXRvciwgQmlkaUl0ZXJhdG9yPihpLCBpKSwgbWF0Y2hlZChmYWxzZSkge30KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMClcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4MDU1MSlcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0RFQ0NYWF9WRVIsIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDU5MDA0MikpCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQT4KLSAgIG9wZXJhdG9yIHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGUsIFQsIEE+ICgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtYXRjaGVkID8gc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZSwgVCwgQT4odGhpcy0+Zmlyc3QsIHRoaXMtPnNlY29uZCkgOiBzdGQ6OmJhc2ljX3N0cmluZzx2YWx1ZV90eXBlLCBULCBBPigpOwotICAgfQotI2Vsc2UKLSAgIG9wZXJhdG9yIHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGU+ICgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBzdHIoKTsKLSAgIH0KLSNlbmRpZgotICAgZGlmZmVyZW5jZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbGVuZ3RoKCljb25zdAotICAgewotICAgICAgZGlmZmVyZW5jZV90eXBlIG4gPSBtYXRjaGVkID8gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZSgoQmlkaUl0ZXJhdG9yKXRoaXMtPmZpcnN0LCAoQmlkaUl0ZXJhdG9yKXRoaXMtPnNlY29uZCkgOiAwOwotICAgICAgcmV0dXJuIG47Ci0gICB9Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx2YWx1ZV90eXBlPiBzdHIoKWNvbnN0Ci0gICB7Ci0gICAgICBzdGQ6OmJhc2ljX3N0cmluZzx2YWx1ZV90eXBlPiByZXN1bHQ7Ci0gICAgICBpZihtYXRjaGVkKQotICAgICAgewotICAgICAgICAgc3RkOjpzaXplX3QgbGVuID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZSgoQmlkaUl0ZXJhdG9yKXRoaXMtPmZpcnN0LCAoQmlkaUl0ZXJhdG9yKXRoaXMtPnNlY29uZCk7Ci0gICAgICAgICByZXN1bHQucmVzZXJ2ZShsZW4pOwotICAgICAgICAgQmlkaUl0ZXJhdG9yIGkgPSB0aGlzLT5maXJzdDsKLSAgICAgICAgIHdoaWxlKGkgIT0gdGhpcy0+c2Vjb25kKQotICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgxLCAqaSk7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotICAgaW50IGNvbXBhcmUoY29uc3Qgc3ViX21hdGNoJiBzKWNvbnN0Ci0gICB7Ci0gICAgICBpZihtYXRjaGVkICE9IHMubWF0Y2hlZCkKLSAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1hdGNoZWQpIC0gc3RhdGljX2Nhc3Q8aW50PihzLm1hdGNoZWQpOwotICAgICAgcmV0dXJuIHN0cigpLmNvbXBhcmUocy5zdHIoKSk7Ci0gICB9Ci0gICBpbnQgY29tcGFyZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx2YWx1ZV90eXBlPiYgcyljb25zdAotICAgewotICAgICAgcmV0dXJuIHN0cigpLmNvbXBhcmUocyk7Ci0gICB9Ci0gICBpbnQgY29tcGFyZShjb25zdCB2YWx1ZV90eXBlKiBwKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gc3RyKCkuY29tcGFyZShwKTsKLSAgIH0KLQotICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHN1Yl9tYXRjaCYgdGhhdCljb25zdAotICAgeyByZXR1cm4gY29tcGFyZSh0aGF0KSA9PSAwOyB9Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3IgIT0oY29uc3Qgc3ViX21hdGNoJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiBjb21wYXJlKHRoYXQpICE9IDA7IH0KLSAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IHN1Yl9tYXRjaCYgdGhhdCljb25zdAotICAgeyByZXR1cm4gY29tcGFyZSh0aGF0KSA8IDA7IH0KLSAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IHN1Yl9tYXRjaCYgdGhhdCljb25zdAotICAgeyByZXR1cm4gY29tcGFyZSh0aGF0KSA+IDA7IH0KLSAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBzdWJfbWF0Y2gmIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuIGNvbXBhcmUodGhhdCkgPD0gMDsgfQotICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IHN1Yl9tYXRjaCYgdGhhdCljb25zdAotICAgeyByZXR1cm4gY29tcGFyZSh0aGF0KSA+PSAwOyB9Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiA+IGNhcHR1cmVfc2VxdWVuY2VfdHlwZTsKLQotICAgY29uc3QgY2FwdHVyZV9zZXF1ZW5jZV90eXBlJiBjYXB0dXJlcygpY29uc3QKLSAgIHsKLSAgICAgIGlmKCFtX2NhcHR1cmVzKSAKLSAgICAgICAgIG1fY2FwdHVyZXMucmVzZXQobmV3IGNhcHR1cmVfc2VxdWVuY2VfdHlwZSgpKTsKLSAgICAgIHJldHVybiAqbV9jYXB0dXJlczsKLSAgIH0KLSAgIC8vCi0gICAvLyBQcml2YXRlIGltcGxlbWVudGF0aW9uIEFQSTogRE8gTk9UIFVTRSEKLSAgIC8vCi0gICBjYXB0dXJlX3NlcXVlbmNlX3R5cGUmIGdldF9jYXB0dXJlcygpY29uc3QKLSAgIHsKLSAgICAgIGlmKCFtX2NhcHR1cmVzKSAKLSAgICAgICAgIG1fY2FwdHVyZXMucmVzZXQobmV3IGNhcHR1cmVfc2VxdWVuY2VfdHlwZSgpKTsKLSAgICAgIHJldHVybiAqbV9jYXB0dXJlczsKLSAgIH0KLQotcHJpdmF0ZToKLSAgIG11dGFibGUgbmRuYm9vc3Q6OnNjb3BlZF9wdHI8Y2FwdHVyZV9zZXF1ZW5jZV90eXBlPiBtX2NhcHR1cmVzOwotcHVibGljOgotCi0jZW5kaWYKLSAgIHN1Yl9tYXRjaChjb25zdCBzdWJfbWF0Y2gmIHRoYXQsIGJvb2wgCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgICAgIGRlZXBfY29weQotI2VuZGlmCi0gICAgICA9IHRydWUKLSAgICAgICkgCi0gICAgICA6IHN0ZDo6cGFpcjxCaWRpSXRlcmF0b3IsIEJpZGlJdGVyYXRvcj4odGhhdCksIAotICAgICAgICBtYXRjaGVkKHRoYXQubWF0Y2hlZCkgCi0gICB7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgICAgIGlmKHRoYXQubV9jYXB0dXJlcykKLSAgICAgICAgIGlmKGRlZXBfY29weSkKLSAgICAgICAgICAgIG1fY2FwdHVyZXMucmVzZXQobmV3IGNhcHR1cmVfc2VxdWVuY2VfdHlwZSgqKHRoYXQubV9jYXB0dXJlcykpKTsKLSNlbmRpZgotICAgfQotICAgc3ViX21hdGNoJiBvcGVyYXRvcj0oY29uc3Qgc3ViX21hdGNoJiB0aGF0KQotICAgewotICAgICAgdGhpcy0+Zmlyc3QgPSB0aGF0LmZpcnN0OwotICAgICAgdGhpcy0+c2Vjb25kID0gdGhhdC5zZWNvbmQ7Ci0gICAgICBtYXRjaGVkID0gdGhhdC5tYXRjaGVkOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICAgICBpZih0aGF0Lm1fY2FwdHVyZXMpCi0gICAgICAgICBnZXRfY2FwdHVyZXMoKSA9ICoodGhhdC5tX2NhcHR1cmVzKTsKLSNlbmRpZgotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotCi0KLSNpZmRlZiBORE5CT09TVF9PTERfUkVHRVhfSAotICAgLy8KLSAgIC8vIHRoZSBmb2xsb3dpbmcgYXJlIGRlcHJlY2F0ZWQsIGRvIG5vdCB1c2UhIQotICAgLy8KLSAgIG9wZXJhdG9yIGludCgpY29uc3Q7Ci0gICBvcGVyYXRvciB1bnNpZ25lZCBpbnQoKWNvbnN0OwotICAgb3BlcmF0b3Igc2hvcnQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKHNob3J0KShpbnQpKCp0aGlzKTsKLSAgIH0KLSAgIG9wZXJhdG9yIHVuc2lnbmVkIHNob3J0KCljb25zdAotICAgewotICAgICAgcmV0dXJuICh1bnNpZ25lZCBzaG9ydCkodW5zaWduZWQgaW50KSgqdGhpcyk7Ci0gICB9Ci0jZW5kaWYKLX07Ci0KLXR5cGVkZWYgc3ViX21hdGNoPGNvbnN0IGNoYXIqPiBjc3ViX21hdGNoOwotdHlwZWRlZiBzdWJfbWF0Y2g8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBzc3ViX21hdGNoOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgc3ViX21hdGNoPGNvbnN0IHdjaGFyX3QqPiB3Y3N1Yl9tYXRjaDsKLXR5cGVkZWYgc3ViX21hdGNoPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHdzc3ViX21hdGNoOwotI2VuZGlmCi0KLS8vIGNvbXBhcmlzb24gdG8gc3RkOjpiYXNpY19zdHJpbmc8PiBwYXJ0IDE6Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIHMuY29tcGFyZShtLnN0cigpKSA9PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIHMuY29tcGFyZShtLnN0cigpKSAhPSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBzLmNvbXBhcmUobS5zdHIoKSkgPCAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIHMuY29tcGFyZShtLnN0cigpKSA8PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIHMuY29tcGFyZShtLnN0cigpKSA+PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBzLmNvbXBhcmUobS5zdHIoKSkgPiAwOyB9Ci0vLyBjb21wYXJpc29uIHRvIHN0ZDo6YmFzaWNfc3RyaW5nPD4gcGFydCAyOgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgIT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDwgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA8IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPiAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA8PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA+PSAwOyB9Ci0vLyBjb21wYXJpc29uIHRvIGNvbnN0IGNoYXJUKiBwYXJ0IDE6Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA9PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSAhPSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID4gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA8IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID49IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID49IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDw9IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpIDw9IDA7IH0KLS8vIGNvbXBhcmlzb24gdG8gY29uc3QgY2hhclQqIHBhcnQgMjoKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID09ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID09IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yICE9ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpICE9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDwgKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPiAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpIDwgMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPj0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPD0gMDsgfQotCi0vLyBjb21wYXJpc29uIHRvIGNvbnN0IGNoYXJUJiBwYXJ0IDE6Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpICE9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID4gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpID4gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPCAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPj0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpIDw9IDA7IH0KLS8vIGNvbXBhcmlzb24gdG8gY29uc3QgY2hhclQqIHBhcnQgMjoKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID09ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA9PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgIT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPiAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA8IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yIDw9ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA+PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPD0gMDsgfQotCi0vLyBhZGRpdGlvbiBvcGVyYXRvcnM6Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+IAotb3BlcmF0b3IgKyAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4gcmVzdWx0OwotICAgcmVzdWx0LnJlc2VydmUocy5zaXplKCkgKyBtLmxlbmd0aCgpICsgMSk7Ci0gICByZXR1cm4gcmVzdWx0LmFwcGVuZChzKS5hcHBlbmQobS5maXJzdCwgbS5zZWNvbmQpOwotfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiAKLW9wZXJhdG9yICsgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcykKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+IHJlc3VsdDsKLSAgIHJlc3VsdC5yZXNlcnZlKHMuc2l6ZSgpICsgbS5sZW5ndGgoKSArIDEpOwotICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQobS5maXJzdCwgbS5zZWNvbmQpLmFwcGVuZChzKTsKLX0KLSNpZiAhKGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkpCi10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IHJlc3VsdDsKLSAgIHJlc3VsdC5yZXNlcnZlKHN0ZDo6Y2hhcl90cmFpdHM8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPjo6bGVuZ3RoKHMpICsgbS5sZW5ndGgoKSArIDEpOwotICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQocykuYXBwZW5kKG0uZmlyc3QsIG0uc2Vjb25kKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IAotb3BlcmF0b3IgKyAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCAqIHMpCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IHJlc3VsdDsKLSAgIHJlc3VsdC5yZXNlcnZlKHN0ZDo6Y2hhcl90cmFpdHM8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPjo6bGVuZ3RoKHMpICsgbS5sZW5ndGgoKSArIDEpOwotICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQobS5maXJzdCwgbS5zZWNvbmQpLmFwcGVuZChzKTsKLX0KLSNlbHNlCi0vLyB3b3J3YXJvdW5kIHZlcnNpb25zOgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gCi1vcGVyYXRvciArICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQotewotICAgcmV0dXJuIHMgKyBtLnN0cigpOwotfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gCi1vcGVyYXRvciArIChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0ICogcykKLXsKLSAgIHJldHVybiBtLnN0cigpICsgczsKLX0KLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gCi1vcGVyYXRvciArICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiByZXN1bHQ7Ci0gICByZXN1bHQucmVzZXJ2ZShtLmxlbmd0aCgpICsgMik7Ci0gICByZXR1cm4gcmVzdWx0LmFwcGVuZCgxLCBzKS5hcHBlbmQobS5maXJzdCwgbS5zZWNvbmQpOwotfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gCi1vcGVyYXRvciArIChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzKQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiByZXN1bHQ7Ci0gICByZXN1bHQucmVzZXJ2ZShtLmxlbmd0aCgpICsgMik7Ci0gICByZXR1cm4gcmVzdWx0LmFwcGVuZChtLmZpcnN0LCBtLnNlY29uZCkuYXBwZW5kKDEsIHMpOwotfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gCi1vcGVyYXRvciArIChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtMSwKLSAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0yKQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiByZXN1bHQ7Ci0gICByZXN1bHQucmVzZXJ2ZShtMS5sZW5ndGgoKSArIG0yLmxlbmd0aCgpICsgMSk7Ci0gICByZXR1cm4gcmVzdWx0LmFwcGVuZChtMS5maXJzdCwgbTEuc2Vjb25kKS5hcHBlbmQobTIuZmlyc3QsIG0yLnNlY29uZCk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLXN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCwgdHJhaXRzPiYKLSAgIG9wZXJhdG9yIDw8IChzdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsIHRyYWl0cz4mIG9zLAotICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIHMpCi17Ci0gICByZXR1cm4gKG9zIDw8IHMuc3RyKCkpOwotfQotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLXN0ZDo6b3N0cmVhbSYgb3BlcmF0b3IgPDwgKHN0ZDo6b3N0cmVhbSYgb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBzKQotewotICAgcmV0dXJuIChvcyA8PCBzLnN0cigpKTsKLX0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfT0xEX1JFR0VYX0gKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBjaGFyVD4KLWludCBkb190b2koQmlkaUl0ZXJhdG9yIGksIEJpZGlJdGVyYXRvciBqLCBjaGFyIGMsIGludCByYWRpeCkKLXsKLSAgIHN0ZDo6c3RyaW5nIHMoaSwgaik7Ci0gICBjaGFyKiBwOwotICAgaW50IHJlc3VsdCA9IHN0ZDo6c3RydG9sKHMuY19zdHIoKSwgJnAsIHJhZGl4KTsKLSAgIGlmKCpwKXJhaXNlX3JlZ2V4X2V4Y2VwdGlvbigiQmFkIHN1Yi1leHByZXNzaW9uIik7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0vLwotLy8gaGVscGVyOgotdGVtcGxhdGUgPGNsYXNzIEksIGNsYXNzIGNoYXJUPgotaW50IGRvX3RvaShJJiBpLCBJIGosIGNoYXJUIGMpCi17Ci0gICBpbnQgcmVzdWx0ID0gMDsKLSAgIHdoaWxlKChpICE9IGopICYmIChpc2RpZ2l0KCppKSkpCi0gICB7Ci0gICAgICByZXN1bHQgPSByZXN1bHQqMTAgKyAoKmkgLSAnMCcpOwotICAgICAgKytpOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLX0KLQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotc3ViX21hdGNoPEJpZGlJdGVyYXRvcj46Om9wZXJhdG9yIGludCgpY29uc3QKLXsKLSAgIEJpZGlJdGVyYXRvciBpID0gZmlyc3Q7Ci0gICBCaWRpSXRlcmF0b3IgaiA9IHNlY29uZDsKLSAgIGlmKGkgPT0gailyYWlzZV9yZWdleF9leGNlcHRpb24oIkJhZCBzdWItZXhwcmVzc2lvbiIpOwotICAgaW50IG5lZyA9IDE7Ci0gICBpZigoaSAhPSBqKSAmJiAoKmkgPT0gJy0nKSkKLSAgIHsKLSAgICAgIG5lZyA9IC0xOwotICAgICAgKytpOwotICAgfQotICAgbmVnICo9IHJlX2RldGFpbDo6ZG9fdG9pKGksIGosICppKTsKLSAgIGlmKGkgIT0gailyYWlzZV9yZWdleF9leGNlcHRpb24oIkJhZCBzdWItZXhwcmVzc2lvbiIpOwotICAgcmV0dXJuIG5lZzsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPjo6b3BlcmF0b3IgdW5zaWduZWQgaW50KCljb25zdAotewotICAgQmlkaUl0ZXJhdG9yIGkgPSBmaXJzdDsKLSAgIEJpZGlJdGVyYXRvciBqID0gc2Vjb25kOwotICAgaWYoaSA9PSBqKQotICAgICAgcmFpc2VfcmVnZXhfZXhjZXB0aW9uKCJCYWQgc3ViLWV4cHJlc3Npb24iKTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3RvaShpLCBqLCAqZmlyc3QpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3ludGF4X3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zeW50YXhfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YzUxNzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zeW50YXhfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgc3ludGF4X3R5cGUuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyByZWd1bGFyIGV4cHJlc3Npb24gc3luYXR4IHR5cGUgZW51bWVyYXRvci4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9TWU5UQVhfVFlQRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfU1lOVEFYX1RZUEVfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZWdleF9jb25zdGFudHN7Ci0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBzeW50YXhfdHlwZTsKLQotLy8KLS8vIHZhbHVlcyBjaG9zZW4gYXJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgdmVyc2lvbjoKLS8vCi1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2NoYXIgPSAwOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9vcGVuX21hcmsgPSAxOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9jbG9zZV9tYXJrID0gMjsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfZG9sbGFyID0gMzsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfY2FyZXQgPSA0Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9kb3QgPSA1Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9zdGFyID0gNjsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfcGx1cyA9IDc7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X3F1ZXN0aW9uID0gODsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfb3Blbl9zZXQgPSA5Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9jbG9zZV9zZXQgPSAxMDsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfb3IgPSAxMTsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfZXNjYXBlID0gMTI7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2Rhc2ggPSAxNDsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfb3Blbl9icmFjZSA9IDE1Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9jbG9zZV9icmFjZSA9IDE2Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9kaWdpdCA9IDE3Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9jb21tYSA9IDI3Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9lcXVhbCA9IDM3Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9jb2xvbiA9IDM2Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9ub3QgPSA1MzsKLQotLy8gZXh0ZW5zaW9uczoKLQotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9oYXNoID0gMTM7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X25ld2xpbmUgPSAyNjsKLQotLy8gZXNjYXBlczoKLQotdHlwZWRlZiBzeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGU7Ci0KLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfd29yZF9hc3NlcnQgPSAxODsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfbm90X3dvcmRfYXNzZXJ0ID0gMTk7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2NvbnRyb2xfZiA9IDI5Owotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9jb250cm9sX24gPSAzMDsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfY29udHJvbF9yID0gMzE7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2NvbnRyb2xfdCA9IDMyOwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9jb250cm9sX3YgPSAzMzsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfYXNjaWlfY29udHJvbCA9IDM1Owotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9oZXggPSAzNDsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfdW5pY29kZSA9IDA7IC8vIG5vdCB1c2VkCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2lkZW50aXR5ID0gMDsgLy8gbm90IHVzZWQKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfYmFja3JlZiA9IHN5bnRheF9kaWdpdDsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfZGVjaW1hbCA9IHN5bnRheF9kaWdpdDsgLy8gbm90IHVzZWQKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfY2xhc3MgPSAyMjsgCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX25vdF9jbGFzcyA9IDIzOyAKLQotLy8gZXh0ZW5zaW9uczoKLQotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9sZWZ0X3dvcmQgPSAyMDsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfcmlnaHRfd29yZCA9IDIxOwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9zdGFydF9idWZmZXIgPSAyNDsgICAgICAgICAgICAgICAgIC8vIGZvciBcYAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9lbmRfYnVmZmVyID0gMjU7ICAgICAgICAgICAgICAgICAgIC8vIGZvciBcJwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9jb250cm9sX2EgPSAyODsgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcYQotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9lID0gMzg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcZQotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9FID0gNDc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcUVxFCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX1EgPSA0ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxRXEUKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfWCA9IDQ5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXFgKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfQyA9IDUwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXEMKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfWiA9IDUxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXFoKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfRyA9IDUyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXEcKLQotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9wcm9wZXJ0eSA9IDU0OyAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBccAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9ub3RfcHJvcGVydHkgPSA1NTsgICAgICAgICAgICAgICAgIC8vIGZvciBcUAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9uYW1lZF9jaGFyID0gNTY7ICAgICAgICAgICAgICAgICAgIC8vIGZvciBcTgotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9leHRlbmRlZF9iYWNrcmVmID0gNTc7ICAgICAgICAgICAgIC8vIGZvciBcZwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9yZXNldF9zdGFydF9tYXJrID0gNTg7ICAgICAgICAgICAgIC8vIGZvciBcSwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9saW5lX2VuZGluZyA9IDU5OyAgICAgICAgICAgICAgICAgIC8vIGZvciBcUgotCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIHN5bnRheF9tYXggPSA2MDsKLQotfQotfQotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC91MzJyZWdleF9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3UzMnJlZ2V4X2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcxNDlmNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3UzMnJlZ2V4X2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMwotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHUzMnJlZ2V4X2l0ZXJhdG9yLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgdTMycmVnZXhfaXRlcmF0b3IgaW1wbGVtZW50YXRpb24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfVTMyUkVHRVhfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1UzMlJFR0VYX0lURVJBVE9SX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ci1jbGFzcyB1MzJyZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiAKLXsKLSAgIHR5cGVkZWYgdTMycmVnZXggcmVnZXhfdHlwZTsKLQotICAgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+IHdoYXQ7ICAvLyBjdXJyZW50IG1hdGNoCi0gICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgICAgICAgICAgICAgICAgYmFzZTsgIC8vIHN0YXJ0IG9mIHNlcXVlbmNlCi0gICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgICAgICAgICAgICAgICAgZW5kOyAgIC8vIGVuZCBvZiBzZXF1ZW5jZQotICAgY29uc3QgcmVnZXhfdHlwZSAgICAgICAgICAgICAgICAgICAgIHJlOyAgIC8vIHRoZSBleHByZXNzaW9uCi0gICBtYXRjaF9mbGFnX3R5cGUgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M7IC8vIGZsYWdzIGZvciBtYXRjaGluZwotCi1wdWJsaWM6Ci0gICB1MzJyZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGJhc2UoKSwgZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpe30KLSAgIGJvb2wgaW5pdChCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QpCi0gICB7Ci0gICAgICBiYXNlID0gZmlyc3Q7Ci0gICAgICByZXR1cm4gdTMycmVnZXhfc2VhcmNoKGZpcnN0LCBlbmQsIHdoYXQsIHJlLCBmbGFncywgYmFzZSk7Ci0gICB9Ci0gICBib29sIGNvbXBhcmUoY29uc3QgdTMycmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24mIHRoYXQpCi0gICB7Ci0gICAgICBpZih0aGlzID09ICZ0aGF0KSByZXR1cm4gdHJ1ZTsKLSAgICAgIHJldHVybiAoJnJlLmdldF9kYXRhKCkgPT0gJnRoYXQucmUuZ2V0X2RhdGEoKSkgJiYgKGVuZCA9PSB0aGF0LmVuZCkgJiYgKGZsYWdzID09IHRoYXQuZmxhZ3MpICYmICh3aGF0WzBdLmZpcnN0ID09IHRoYXQud2hhdFswXS5maXJzdCkgJiYgKHdoYXRbMF0uc2Vjb25kID09IHRoYXQud2hhdFswXS5zZWNvbmQpOwotICAgfQotICAgY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+JiBnZXQoKQotICAgeyByZXR1cm4gd2hhdDsgfQotICAgYm9vbCBuZXh0KCkKLSAgIHsKLSAgICAgIC8vaWYod2hhdC5wcmVmaXgoKS5maXJzdCAhPSB3aGF0WzBdLnNlY29uZCkKLSAgICAgIC8vICAgZmxhZ3MgfD0gbWF0Y2hfcHJldl9hdmFpbDsKLSAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBuZXh0X3N0YXJ0ID0gd2hhdFswXS5zZWNvbmQ7Ci0gICAgICBtYXRjaF9mbGFnX3R5cGUgZihmbGFncyk7Ci0gICAgICBpZighd2hhdC5sZW5ndGgoKSkKLSAgICAgICAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfaW5pdGlhbF9udWxsOwotICAgICAgLy9pZihiYXNlICE9IG5leHRfc3RhcnQpCi0gICAgICAvLyAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfYm9iOwotICAgICAgYm9vbCByZXN1bHQgPSB1MzJyZWdleF9zZWFyY2gobmV4dF9zdGFydCwgZW5kLCB3aGF0LCByZSwgZiwgYmFzZSk7Ci0gICAgICBpZihyZXN1bHQpCi0gICAgICAgICB3aGF0LnNldF9iYXNlKGJhc2UpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLXByaXZhdGU6Ci0gICB1MzJyZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IHUzMnJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgotY2xhc3MgdTMycmVnZXhfaXRlcmF0b3IgCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotICAgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjwKLSAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIAotICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+LAotICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlLAotICAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+KiwKLSAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiYgPiAgICAgICAgIAotI2VuZGlmCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiB1MzJyZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbjxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+IGltcGw7Ci0gICB0eXBlZGVmIHNoYXJlZF9wdHI8aW1wbD4gcGltcGw7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmICAgICAgICAgIHUzMnJlZ2V4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+ICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOyAKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgIAotICAgdTMycmVnZXhfaXRlcmF0b3IoKXt9Ci0gICB1MzJyZWdleF9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIAotICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXhfdHlwZSYgcmUsIAotICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgICAgIH0KLSAgIH0KLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yKGNvbnN0IHUzMnJlZ2V4X2l0ZXJhdG9yJiB0aGF0KQotICAgICAgOiBwZGF0YSh0aGF0LnBkYXRhKSB7fQotICAgdTMycmVnZXhfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCB1MzJyZWdleF9pdGVyYXRvciYgdGhhdCkKLSAgIHsKLSAgICAgIHBkYXRhID0gdGhhdC5wZGF0YTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1MzJyZWdleF9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyAKLSAgICAgIGlmKChwZGF0YS5nZXQoKSA9PSAwKSB8fCAodGhhdC5wZGF0YS5nZXQoKSA9PSAwKSkKLSAgICAgICAgIHJldHVybiBwZGF0YS5nZXQoKSA9PSB0aGF0LnBkYXRhLmdldCgpOwotICAgICAgcmV0dXJuIHBkYXRhLT5jb21wYXJlKCoodGhhdC5wZGF0YS5nZXQoKSkpOyAKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCB1MzJyZWdleF9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyByZXR1cm4gISgqdGhpcyA9PSB0aGF0KTsgfQotICAgY29uc3QgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCljb25zdAotICAgeyByZXR1cm4gcGRhdGEtPmdldCgpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCljb25zdAotICAgeyByZXR1cm4gJihwZGF0YS0+Z2V0KCkpOyB9Ci0gICB1MzJyZWdleF9pdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICB7Ci0gICAgICBjb3coKTsKLSAgICAgIGlmKDAgPT0gcGRhdGEtPm5leHQoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICB1MzJyZWdleF9pdGVyYXRvciBvcGVyYXRvcisrKGludCkKLSAgIHsKLSAgICAgIHUzMnJlZ2V4X2l0ZXJhdG9yIHJlc3VsdCgqdGhpcyk7Ci0gICAgICArKygqdGhpcyk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotcHJpdmF0ZToKLQotICAgcGltcGwgcGRhdGE7Ci0KLSAgIHZvaWQgY293KCkKLSAgIHsKLSAgICAgIC8vIGNvcHktb24td3JpdGUKLSAgICAgIGlmKHBkYXRhLmdldCgpICYmICFwZGF0YS51bmlxdWUoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KG5ldyBpbXBsKCoocGRhdGEuZ2V0KCkpKSk7Ci0gICAgICB9Ci0gICB9Ci19OwotCi10eXBlZGVmIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiB1dGY4cmVnZXhfaXRlcmF0b3I7Ci10eXBlZGVmIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gdXRmMTZyZWdleF9pdGVyYXRvcjsKLXR5cGVkZWYgdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgVUNoYXIzMio+IHV0ZjMycmVnZXhfaXRlcmF0b3I7Ci0KLWlubGluZSB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBjaGFyKj4gbWFrZV91MzJyZWdleF9pdGVyYXRvcihjb25zdCBjaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBjaGFyKj4ocCwgcCtzdGQ6OnN0cmxlbihwKSwgZSwgbSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPiBtYWtlX3UzMnJlZ2V4X2l0ZXJhdG9yKGNvbnN0IHdjaGFyX3QqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPihwLCBwK3N0ZDo6d2NzbGVuKHApLCBlLCBtKTsKLX0KLSNlbmRpZgotI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmIChVX1NJWkVPRl9XQ0hBUl9UICE9IDIpCi1pbmxpbmUgdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgVUNoYXIqPiBtYWtlX3UzMnJlZ2V4X2l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBVQ2hhcio+KHAsIHArdV9zdHJsZW4ocCksIGUsIG0pOwotfQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci1pbmxpbmUgdTMycmVnZXhfaXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvcj4gbWFrZV91MzJyZWdleF9pdGVyYXRvcihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz4mIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJfdHlwZTsKLSAgIHJldHVybiB1MzJyZWdleF9pdGVyYXRvcjxpdGVyX3R5cGU+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgbSk7Ci19Ci1pbmxpbmUgdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgVUNoYXIqPiBtYWtlX3UzMnJlZ2V4X2l0ZXJhdG9yKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCBjb25zdCB1MzJyZWdleCYgZSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBVQ2hhcio+KHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBlLCBtKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0lURVJBVE9SX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGQ0MGNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzc3ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAzCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyB1MzJyZWdleF90b2tlbl9pdGVyYXRvciBpbXBsZW1lbnRhdGlvbi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9VMzJSRUdFWF9UT0tFTl9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfVTMyUkVHRVhfVE9LRU5fSVRFUkFUT1JfSFBQCi0KLSNpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sID49IDB4NTYwKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTcwKSkpXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMykpCi0vLwotLy8gQm9ybGFuZCBDKysgQnVpbGRlciA2LCBhbmQgVmlzdWFsIEMrKyA2LAotLy8gY2FuJ3QgY29wZSB3aXRoIHRoZSBhcnJheSB0ZW1wbGF0ZSBjb25zdHJ1Y3RvcgotLy8gc28gd2UgaGF2ZSBhIHRlbXBsYXRlIG1lbWJlciB0aGF0IHdpbGwgYWNjZXB0IGFueSB0eXBlIGFzIAotLy8gYXJndW1lbnQsIGFuZCB0aGVuIGFzc2VydCB0aGF0IGlzIHJlYWxseSBpcyBhbiBhcnJheToKLS8vCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID4gMTMwMCkKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ3MDApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4KLWNsYXNzIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uIAotewotICAgdHlwZWRlZiB1MzJyZWdleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4X3R5cGU7Ci0gICB0eXBlZGVmIHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+ICAgICAgdmFsdWVfdHlwZTsKLQotICAgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+IHdoYXQ7ICAgLy8gY3VycmVudCBtYXRjaAotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGVuZDsgICAgLy8gZW5kIG9mIHNlYXJjaCBhcmVhCi0gICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgICAgICAgICAgICAgICAgYmFzZTsgICAvLyBzdGFydCBvZiBzZWFyY2ggYXJlYQotICAgY29uc3QgcmVnZXhfdHlwZSAgICAgICAgICAgICAgICAgICAgIHJlOyAgICAgLy8gdGhlIGV4cHJlc3Npb24KLSAgIG1hdGNoX2ZsYWdfdHlwZSAgICAgICAgICAgICAgICAgICAgICBmbGFnczsgIC8vIG1hdGNoIGZsYWdzCi0gICB2YWx1ZV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OyAvLyB0aGUgY3VycmVudCBzdHJpbmcgcmVzdWx0Ci0gICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTjsgICAgICAvLyB0aGUgY3VycmVudCBzdWItZXhwcmVzc2lvbiBiZWluZyBlbnVtZXJhdGVkCi0gICBzdGQ6OnZlY3RvcjxpbnQ+ICAgICAgICAgICAgICAgICAgICAgc3ViczsgICAvLyB0aGUgc3ViLWV4cHJlc3Npb25zIHRvIGVudW1lcmF0ZQotCi1wdWJsaWM6Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgaW50IHN1YiwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKXsgc3Vicy5wdXNoX2JhY2soc3ViKTsgfQotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHYsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZiksIHN1YnModil7fQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgLy8gY2FuJ3QgcmVsaWFibHkgZ2V0IHRoaXMgdG8gd29yay4uLi4KLSNlbGlmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSlcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGNvbnN0IFQmIHN1Ym1hdGNoZXMsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZikKLSAgIHsKLSAgICAgIC8vIGFzc2VydCB0aGF0IFQgcmVhbGx5IGlzIGFuIGFycmF5OgotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUpOwotICAgICAgY29uc3Qgc3RkOjpzaXplX3QgYXJyYXlfc2l6ZSA9IHNpemVvZihUKSAvIHNpemVvZihzdWJtYXRjaGVzWzBdKTsKLSAgICAgIGZvcihzdGQ6OnNpemVfdCBpID0gMDsgaSA8IGFycmF5X3NpemU7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHN1YnMucHVzaF9iYWNrKHN1Ym1hdGNoZXNbaV0pOwotICAgICAgfQotICAgfQotI2Vsc2UKLSAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBDTj4KLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBjb25zdCBpbnQgKCZzdWJtYXRjaGVzKVtDTl0sIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZikKLSAgIHsKLSAgICAgIGZvcihzdGQ6OnNpemVfdCBpID0gMDsgaSA8IENOOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBzdWJzLnB1c2hfYmFjayhzdWJtYXRjaGVzW2ldKTsKLSAgICAgIH0KLSAgIH0KLSNlbmRpZgotCi0gICBib29sIGluaXQoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0KQotICAgewotICAgICAgYmFzZSA9IGZpcnN0OwotICAgICAgTiA9IDA7Ci0gICAgICBpZih1MzJyZWdleF9zZWFyY2goZmlyc3QsIGVuZCwgd2hhdCwgcmUsIGZsYWdzLCBiYXNlKSA9PSB0cnVlKQotICAgICAgewotICAgICAgICAgTiA9IDA7Ci0gICAgICAgICByZXN1bHQgPSAoKHN1YnNbTl0gPT0gLTEpID8gd2hhdC5wcmVmaXgoKSA6IHdoYXRbKGludClzdWJzW05dXSk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoKHN1YnNbTl0gPT0gLTEpICYmIChmaXJzdCAhPSBlbmQpKQotICAgICAgewotICAgICAgICAgcmVzdWx0LmZpcnN0ID0gZmlyc3Q7Ci0gICAgICAgICByZXN1bHQuc2Vjb25kID0gZW5kOwotICAgICAgICAgcmVzdWx0Lm1hdGNoZWQgPSAoZmlyc3QgIT0gZW5kKTsKLSAgICAgICAgIE4gPSAtMTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgYm9vbCBjb21wYXJlKGNvbnN0IHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiB0aGF0KQotICAgewotICAgICAgaWYodGhpcyA9PSAmdGhhdCkgcmV0dXJuIHRydWU7Ci0gICAgICByZXR1cm4gKCZyZS5nZXRfZGF0YSgpID09ICZ0aGF0LnJlLmdldF9kYXRhKCkpIAotICAgICAgICAgJiYgKGVuZCA9PSB0aGF0LmVuZCkgCi0gICAgICAgICAmJiAoZmxhZ3MgPT0gdGhhdC5mbGFncykgCi0gICAgICAgICAmJiAoTiA9PSB0aGF0Lk4pIAotICAgICAgICAgJiYgKHdoYXRbMF0uZmlyc3QgPT0gdGhhdC53aGF0WzBdLmZpcnN0KSAKLSAgICAgICAgICYmICh3aGF0WzBdLnNlY29uZCA9PSB0aGF0LndoYXRbMF0uc2Vjb25kKTsKLSAgIH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUmIGdldCgpCi0gICB7IHJldHVybiByZXN1bHQ7IH0KLSAgIGJvb2wgbmV4dCgpCi0gICB7Ci0gICAgICBpZihOID09IC0xKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgaWYoTisxIDwgKGludClzdWJzLnNpemUoKSkKLSAgICAgIHsKLSAgICAgICAgICsrTjsKLSAgICAgICAgIHJlc3VsdCA9KChzdWJzW05dID09IC0xKSA/IHdoYXQucHJlZml4KCkgOiB3aGF0W3N1YnNbTl1dKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgLy9pZih3aGF0LnByZWZpeCgpLmZpcnN0ICE9IHdoYXRbMF0uc2Vjb25kKQotICAgICAgLy8gICBmbGFncyB8PSBtYXRjaF9wcmV2X2F2YWlsIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfYm9iOwotICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3RfZW5kKHdoYXRbMF0uc2Vjb25kKTsKLSAgICAgIGlmKHUzMnJlZ2V4X3NlYXJjaChsYXN0X2VuZCwgZW5kLCB3aGF0LCByZSwgKCh3aGF0WzBdLmZpcnN0ID09IHdoYXRbMF0uc2Vjb25kKSA/IGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfaW5pdGlhbF9udWxsIDogZmxhZ3MpLCBiYXNlKSkKLSAgICAgIHsKLSAgICAgICAgIE4gPTA7Ci0gICAgICAgICByZXN1bHQgPSgoc3Vic1tOXSA9PSAtMSkgPyB3aGF0LnByZWZpeCgpIDogd2hhdFtzdWJzW05dXSk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoKGxhc3RfZW5kICE9IGVuZCkgJiYgKHN1YnNbMF0gPT0gLTEpKQotICAgICAgewotICAgICAgICAgTiA9LTE7Ci0gICAgICAgICByZXN1bHQuZmlyc3QgPSBsYXN0X2VuZDsKLSAgICAgICAgIHJlc3VsdC5zZWNvbmQgPSBlbmQ7Ci0gICAgICAgICByZXN1bHQubWF0Y2hlZCA9IChsYXN0X2VuZCAhPSBlbmQpOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci1wcml2YXRlOgotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24mIG9wZXJhdG9yPShjb25zdCB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4KLWNsYXNzIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yIAotI2lmbmRlZiBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSAgIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8Ci0gICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCAKLSAgICAgICAgIHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+LAotICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlLAotICAgICAgICAgY29uc3Qgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4qLAotICAgICAgICAgY29uc3Qgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4mID4gICAgICAgICAKLSNlbmRpZgotewotcHJpdmF0ZToKLSAgIHR5cGVkZWYgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb248QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiBpbXBsOwotICAgdHlwZWRlZiBzaGFyZWRfcHRyPGltcGw+IHBpbXBsOwotcHVibGljOgotICAgdHlwZWRlZiAgICAgICAgICB1MzJyZWdleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4X3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsgCi0gICB0eXBlZGVmICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAKLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKCl7fQotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3VibWF0Y2ggPSAwLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2gsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgIH0KLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgY29uc3QgcmVnZXhfdHlwZSYgcmUsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2hlcywgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIHN1Ym1hdGNoZXMsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgIH0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgIC8vIGNhbid0IHJlbGlhYmx5IGdldCB0aGlzIHRvIHdvcmsuLi4uCi0jZWxpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sID49IDB4NTYwKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTcwKSkpXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMykpIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjA3MDApCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiBzdWJtYXRjaGVzLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2hlcywgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotI2Vsc2UKLSAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAoJnN1Ym1hdGNoZXMpW05dLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2hlcywgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotI2VuZGlmCi0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCB1MzJyZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCkKLSAgICAgIDogcGRhdGEodGhhdC5wZGF0YSkge30KLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgdTMycmVnZXhfdG9rZW5faXRlcmF0b3ImIHRoYXQpCi0gICB7Ci0gICAgICBwZGF0YSA9IHRoYXQucGRhdGE7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICBib29sIG9wZXJhdG9yPT0oY29uc3QgdTMycmVnZXhfdG9rZW5faXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsgCi0gICAgICBpZigocGRhdGEuZ2V0KCkgPT0gMCkgfHwgKHRoYXQucGRhdGEuZ2V0KCkgPT0gMCkpCi0gICAgICAgICByZXR1cm4gcGRhdGEuZ2V0KCkgPT0gdGhhdC5wZGF0YS5nZXQoKTsKLSAgICAgIHJldHVybiBwZGF0YS0+Y29tcGFyZSgqKHRoYXQucGRhdGEuZ2V0KCkpKTsgCi0gICB9Ci0gICBib29sIG9wZXJhdG9yIT0oY29uc3QgdTMycmVnZXhfdG9rZW5faXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuICEoKnRoaXMgPT0gdGhhdCk7IH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpY29uc3QKLSAgIHsgcmV0dXJuIHBkYXRhLT5nZXQoKTsgfQotICAgY29uc3QgdmFsdWVfdHlwZSogb3BlcmF0b3ItPigpY29uc3QKLSAgIHsgcmV0dXJuICYocGRhdGEtPmdldCgpKTsgfQotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgewotICAgICAgY293KCk7Ci0gICAgICBpZigwID09IHBkYXRhLT5uZXh0KCkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgICAgfQotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpCi0gICB7Ci0gICAgICB1MzJyZWdleF90b2tlbl9pdGVyYXRvciByZXN1bHQoKnRoaXMpOwotICAgICAgKysoKnRoaXMpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLXByaXZhdGU6Ci0KLSAgIHBpbXBsIHBkYXRhOwotCi0gICB2b2lkIGNvdygpCi0gICB7Ci0gICAgICAvLyBjb3B5LW9uLXdyaXRlCi0gICAgICBpZihwZGF0YS5nZXQoKSAmJiAhcGRhdGEudW5pcXVlKCkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldChuZXcgaW1wbCgqKHBkYXRhLmdldCgpKSkpOwotICAgICAgfQotICAgfQotfTsKLQotdHlwZWRlZiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4gdXRmOHJlZ2V4X3Rva2VuX2l0ZXJhdG9yOwotdHlwZWRlZiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IHV0ZjE2cmVnZXhfdG9rZW5faXRlcmF0b3I7Ci10eXBlZGVmIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyMzIqPiB1dGYzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yOwotCi0vLyBjb25zdHJ1Y3Rpb24gZnJvbSBhbiBpbnRlZ3JhbCBzdWJfbWF0Y2ggc3RhdGVfaWQ6Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgY2hhciogcCwgY29uc3QgdTMycmVnZXgmIGUsIGludCBzdWJtYXRjaCA9IDAsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhcio+KHAsIHArc3RkOjpzdHJsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgd2NoYXJfdCogcCwgY29uc3QgdTMycmVnZXgmIGUsIGludCBzdWJtYXRjaCA9IDAsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+KHAsIHArc3RkOjp3Y3NsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNlbmRpZgotI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmIChVX1NJWkVPRl9XQ0hBUl9UICE9IDIpCi1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+KHAsIHArdV9zdHJsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jPgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3I+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+JiBwLCBjb25zdCB1MzJyZWdleCYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvciBpdGVyX3R5cGU7Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8aXRlcl90eXBlPihwLmJlZ2luKCksIHAuZW5kKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIGNvbnN0IHUzMnJlZ2V4JiBlLCBpbnQgc3VibWF0Y2ggPSAwLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLS8vIGNvbnN0cnVjdGlvbiBmcm9tIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5OgotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgY2hhciogcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IGludCAoJnN1Ym1hdGNoKVtOXSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4ocCwgcCtzdGQ6OnN0cmxlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHdjaGFyX3QqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBpbnQgKCZzdWJtYXRjaClbTl0sIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+KHAsIHArc3RkOjp3Y3NsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNlbmRpZgotI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmIChVX1NJWkVPRl9XQ0hBUl9UICE9IDIpCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgVUNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBpbnQgKCZzdWJtYXRjaClbTl0sIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPihwLCBwK3Vfc3RybGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYywgc3RkOjpzaXplX3QgTj4KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPiYgcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IGludCAoJnN1Ym1hdGNoKVtOXSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvciBpdGVyX3R5cGU7Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8aXRlcl90eXBlPihwLmJlZ2luKCksIHAuZW5kKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IGludCAoJnN1Ym1hdGNoKVtOXSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+KHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jZW5kaWYgLy8gTkROQk9PU1RfTVNWQyA8IDEzMDAKLQotLy8gY29uc3RydWN0aW9uIGZyb20gYSB2ZWN0b3Igb2Ygc3ViX21hdGNoIHN0YXRlX2lkJ3M6Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgY2hhciogcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPihwLCBwK3N0ZDo6c3RybGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHdjaGFyX3QqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4ocCwgcCtzdGQ6Ondjc2xlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikKLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgVUNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+KHAsIHArdV9zdHJsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jPgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3I+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+JiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2gsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3IgaXRlcl90eXBlOwotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGl0ZXJfdHlwZT4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2gsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPihzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+IDEzMDApCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9UT0tFTl9JVEVSQVRPUl9IUFAKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC93MzJfcmVnZXhfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdzMyX3JlZ2V4X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZmIxODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC93MzJfcmVnZXhfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICB3MzJfcmVnZXhfdHJhaXRzLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgcmVndWxhciBleHByZXNzaW9uIHRyYWl0cyBjbGFzcyB3MzJfcmVnZXhfdHJhaXRzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1czMl9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1czMl9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTkROQk9PU1RfUkVfUEFUX0VYQ0VQVF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wYXR0ZXJuX2V4Y2VwdC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0RFRkFVTFRTX0hQUF9JTkNMVURFRAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0c19kZWZhdWx0cy5ocHA+Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvc3RhdGljX211dGV4LmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9QUklNQVJZX1RSQU5TRk9STQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3ByaW1hcnlfdHJhbnNmb3JtLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9PQkpFQ1RfQ0FDSEVfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGVuZGluZy9vYmplY3RfY2FjaGUuaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDc4NikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MDApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0eyAKLQotLy8KLS8vIGZvcndhcmQgZGVjbGFyYXRpb24gaXMgbmVlZGVkIGJ5IHNvbWUgY29tcGlsZXJzOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIHczMl9yZWdleF90cmFpdHM7Ci0gICAKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8vCi0vLyBzdGFydCBieSB0eXBlZGVmZmluZyB0aGUgdHlwZXMgd2UnbGwgbmVlZDoKLS8vCi10eXBlZGVmIDo6bmRuYm9vc3Q6OnVpbnQzMl90IGxjaWRfdHlwZTsgICAvLyBwbGFjZWhvbGRlciBmb3IgTENJRC4KLXR5cGVkZWYgOjpuZG5ib29zdDo6c2hhcmVkX3B0cjx2b2lkPiBjYXRfdHlwZTsgLy8gcGxhY2Vob2xkZXIgZm9yIGRsbCBIQU5ETEUuCi0KLS8vCi0vLyB0aGVuIGFkZCB3cmFwcGVycyBhcm91bmQgdGhlIGFjdHVhbCBXaW4zMiBBUEkncyAoaWUgaW1wbGVtZW50YXRpb24gaGlkaW5nKToKLS8vCi1ORE5CT09TVF9SRUdFWF9ERUNMIGxjaWRfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9nZXRfZGVmYXVsdF9sb2NhbGUoKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pc19sb3dlcihjaGFyLCBsY2lkX3R5cGUpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pc19sb3dlcih3Y2hhcl90LCBsY2lkX3R5cGUpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXNfbG93ZXIodW5zaWduZWQgc2hvcnQgY2EsIGxjaWRfdHlwZSBzdGF0ZV9pZCk7Ci0jZW5kaWYKLSNlbmRpZgotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzX3VwcGVyKGNoYXIsIGxjaWRfdHlwZSk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzX3VwcGVyKHdjaGFyX3QsIGxjaWRfdHlwZSk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pc191cHBlcih1bnNpZ25lZCBzaG9ydCBjYSwgbGNpZF90eXBlIHN0YXRlX2lkKTsKLSNlbmRpZgotI2VuZGlmCi1ORE5CT09TVF9SRUdFWF9ERUNMIGNhdF90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2NhdF9vcGVuKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgc3RkOjpzdHJpbmcgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfY2F0X2dldChjb25zdCBjYXRfdHlwZSYgY2F0LCBsY2lkX3R5cGUgc3RhdGVfaWQsIGludCBpLCBjb25zdCBzdGQ6OnN0cmluZyYgZGVmKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIHN0ZDo6d3N0cmluZyBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9jYXRfZ2V0KGNvbnN0IGNhdF90eXBlJiBjYXQsIGxjaWRfdHlwZSBzdGF0ZV9pZCwgaW50IGksIGNvbnN0IHN0ZDo6d3N0cmluZyYgZGVmKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotTkROQk9PU1RfUkVHRVhfREVDTCBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBzaG9ydD4gTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfY2F0X2dldChjb25zdCBjYXRfdHlwZSYgY2F0LCBsY2lkX3R5cGUsIGludCBpLCBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBzaG9ydD4mIGRlZik7Ci0jZW5kaWYKLSNlbmRpZgotTkROQk9PU1RfUkVHRVhfREVDTCBzdGQ6OnN0cmluZyBORE5CT09TVF9SRUdFWF9DQUxMIHczMl90cmFuc2Zvcm0obGNpZF90eXBlIHN0YXRlX2lkLCBjb25zdCBjaGFyKiBwMSwgY29uc3QgY2hhciogcDIpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgc3RkOjp3c3RyaW5nIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX3RyYW5zZm9ybShsY2lkX3R5cGUgc3RhdGVfaWQsIGNvbnN0IHdjaGFyX3QqIHAxLCBjb25zdCB3Y2hhcl90KiBwMik7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgc3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgc2hvcnQ+IE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX3RyYW5zZm9ybShsY2lkX3R5cGUgc3RhdGVfaWQsIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMSwgY29uc3QgdW5zaWduZWQgc2hvcnQqIHAyKTsKLSNlbmRpZgotI2VuZGlmCi1ORE5CT09TVF9SRUdFWF9ERUNMIGNoYXIgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdG9sb3dlcihjaGFyIGMsIGxjaWRfdHlwZSk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCB3Y2hhcl90IE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX3RvbG93ZXIod2NoYXJfdCBjLCBsY2lkX3R5cGUpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi1ORE5CT09TVF9SRUdFWF9ERUNMIHVuc2lnbmVkIHNob3J0IE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX3RvbG93ZXIodW5zaWduZWQgc2hvcnQgYywgbGNpZF90eXBlIHN0YXRlX2lkKTsKLSNlbmRpZgotI2VuZGlmCi1ORE5CT09TVF9SRUdFWF9ERUNMIGNoYXIgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdG91cHBlcihjaGFyIGMsIGxjaWRfdHlwZSk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCB3Y2hhcl90IE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX3RvdXBwZXIod2NoYXJfdCBjLCBsY2lkX3R5cGUpOwotI2VuZGlmCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXMobGNpZF90eXBlLCBuZG5ib29zdDo6dWludDMyX3QgbWFzaywgY2hhciBjKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXMobGNpZF90eXBlLCBuZG5ib29zdDo6dWludDMyX3QgbWFzaywgd2NoYXJfdCBjKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzKGxjaWRfdHlwZSBzdGF0ZV9pZCwgbmRuYm9vc3Q6OnVpbnQzMl90IG0sIHVuc2lnbmVkIHNob3J0IGMpOwotI2VuZGlmCi0jZW5kaWYKLS8vCi0vLyBjbGFzcyB3MzJfcmVnZXhfdHJhaXRzX2Jhc2U6Ci0vLyBhY3RzIGFzIGEgY29udGFpbmVyIGZvciBsb2NhbGUgYW5kIHRoZSBmYWNldHMgd2UgYXJlIHVzaW5nLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0cnVjdCB3MzJfcmVnZXhfdHJhaXRzX2Jhc2UKLXsKLSAgIHczMl9yZWdleF90cmFpdHNfYmFzZShsY2lkX3R5cGUgbCkKLSAgIHsgaW1idWUobCk7IH0KLSAgIGxjaWRfdHlwZSBpbWJ1ZShsY2lkX3R5cGUgbCk7Ci0KLSAgIGxjaWRfdHlwZSBtX2xvY2FsZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBsY2lkX3R5cGUgdzMyX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPjo6aW1idWUobGNpZF90eXBlIGwpCi17Ci0gICBsY2lkX3R5cGUgcmVzdWx0KG1fbG9jYWxlKTsKLSAgIG1fbG9jYWxlID0gbDsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBjbGFzcyB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI6Ci0vLyBpbXBsZW1lbnRzIG1ldGhvZHMgdGhhdCByZXF1aXJlIHNwZWNpYWxpc2F0aW9uIGZvciBuYXJyb3cgY2hhcmFjdGVyczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIgOiBwdWJsaWMgdzMyX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPgotewotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6bWFwPGNoYXJULCByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlPiBtYXBfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwX3R5cGU6OmNvbnN0X2l0ZXJhdG9yIG1hcF9pdGVyYXRvcl90eXBlOwotcHVibGljOgotICAgdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyKGNvbnN0IGxjaWRfdHlwZSBsKTsKLQotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW50YXhfdHlwZShjaGFyVCBjKWNvbnN0Ci0gICB7Ci0gICAgICBtYXBfaXRlcmF0b3JfdHlwZSBpID0gbV9jaGFyX21hcC5maW5kKGMpOwotICAgICAgcmV0dXJuICgoaSA9PSBtX2NoYXJfbWFwLmVuZCgpKSA/IDAgOiBpLT5zZWNvbmQpOwotICAgfQotICAgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICBtYXBfaXRlcmF0b3JfdHlwZSBpID0gbV9jaGFyX21hcC5maW5kKGMpOwotICAgICAgaWYoaSA9PSBtX2NoYXJfbWFwLmVuZCgpKQotICAgICAgewotICAgICAgICAgaWYoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfaXNfbG93ZXIoYywgdGhpcy0+bV9sb2NhbGUpKSByZXR1cm4gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jbGFzczsKLSAgICAgICAgIGlmKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2lzX3VwcGVyKGMsIHRoaXMtPm1fbG9jYWxlKSkgcmV0dXJuIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbm90X2NsYXNzOwotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gaS0+c2Vjb25kOwotICAgfQotICAgY2hhclQgdG9sb3dlcihjaGFyVCBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfdG9sb3dlcihjLCB0aGlzLT5tX2xvY2FsZSk7Ci0gICB9Ci0gICBib29sIGlzY3R5cGUobmRuYm9vc3Q6OnVpbnQzMl90IG1hc2ssIGNoYXJUIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9pcyh0aGlzLT5tX2xvY2FsZSwgbWFzaywgYyk7Ci0gICB9Ci0KLXByaXZhdGU6Ci0gICBzdHJpbmdfdHlwZSBnZXRfZGVmYXVsdF9tZXNzYWdlKHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUpOwotICAgLy8gVE9ETzogdXNlIGEgaGFzaCB0YWJsZSB3aGVuIGF2YWlsYWJsZSEKLSAgIG1hcF90eXBlIG1fY2hhcl9tYXA7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci13MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+Ojp3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUgbCkgCi0gICA6IHczMl9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD4obCkKLXsKLSAgIC8vIHdlIG5lZWQgdG8gc3RhcnQgYnkgaW5pdGlhbGlzaW5nIG91ciBzeW50YXggbWFwIHNvIHdlIGtub3cgd2hpY2gKLSAgIC8vIGNoYXJhY3RlciBpcyB1c2VkIGZvciB3aGljaCBwdXJwb3NlOgotICAgY2F0X3R5cGUgY2F0OwotICAgc3RkOjpzdHJpbmcgY2F0X25hbWUodzMyX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9jYXRhbG9nX25hbWUoKSk7Ci0gICBpZihjYXRfbmFtZS5zaXplKCkpCi0gICB7Ci0gICAgICBjYXQgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9jYXRfb3BlbihjYXRfbmFtZSk7Ci0gICAgICBpZighY2F0KQotICAgICAgewotICAgICAgICAgc3RkOjpzdHJpbmcgbSgiVW5hYmxlIHRvIG9wZW4gbWVzc2FnZSBjYXRhbG9nOiAiKTsKLSAgICAgICAgIHN0ZDo6cnVudGltZV9lcnJvciBlcnIobSArIGNhdF9uYW1lKTsKLSAgICAgICAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OnJhaXNlX3J1bnRpbWVfZXJyb3IoZXJyKTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBpZiB3ZSBoYXZlIGEgdmFsaWQgY2F0YWxvZyB0aGVuIGxvYWQgb3VyIG1lc3NhZ2VzOgotICAgLy8KLSAgIGlmKGNhdCkKLSAgIHsKLSAgICAgIGZvcihyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIGkgPSAxOyBpIDwgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbWF4OyArK2kpCi0gICAgICB7Ci0gICAgICAgICBzdHJpbmdfdHlwZSBtc3MgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9jYXRfZ2V0KGNhdCwgdGhpcy0+bV9sb2NhbGUsIGksIGdldF9kZWZhdWx0X21lc3NhZ2UoaSkpOwotICAgICAgICAgZm9yKHR5cGVuYW1lIHN0cmluZ190eXBlOjpzaXplX3R5cGUgaiA9IDA7IGogPCBtc3Muc2l6ZSgpOyArK2opCi0gICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5tX2NoYXJfbWFwW21zc1tqXV0gPSBpOwotICAgICAgICAgfQotICAgICAgfQotICAgfQotICAgZWxzZQotICAgewotICAgICAgZm9yKHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgaSA9IDE7IGkgPCByZWdleF9jb25zdGFudHM6OnN5bnRheF9tYXg7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IGNoYXIqIHB0ciA9IGdldF9kZWZhdWx0X3N5bnRheChpKTsKLSAgICAgICAgIHdoaWxlKHB0ciAmJiAqcHRyKQotICAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+bV9jaGFyX21hcFtzdGF0aWNfY2FzdDxjaGFyVD4oKnB0cildID0gaTsKLSAgICAgICAgICAgICsrcHRyOwotICAgICAgICAgfQotICAgICAgfQotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+OjpzdHJpbmdfdHlwZSAKLSAgIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD46OmdldF9kZWZhdWx0X21lc3NhZ2UocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBpKQotewotICAgY29uc3QgY2hhciogcHRyID0gZ2V0X2RlZmF1bHRfc3ludGF4KGkpOwotICAgc3RyaW5nX3R5cGUgcmVzdWx0OwotICAgd2hpbGUocHRyICYmICpwdHIpCi0gICB7Ci0gICAgICByZXN1bHQuYXBwZW5kKDEsIHN0YXRpY19jYXN0PGNoYXJUPigqcHRyKSk7Ci0gICAgICArK3B0cjsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBzcGVjaWFsaXNlZCB2ZXJzaW9uIGZvciBuYXJyb3cgY2hhcmFjdGVyczoKLS8vCi10ZW1wbGF0ZSA8PgotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhcj4gOiBwdWJsaWMgdzMyX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXI+Ci17Ci0gICB0eXBlZGVmIHN0ZDo6c3RyaW5nIHN0cmluZ190eXBlOwotcHVibGljOgotICAgdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6bGNpZF90eXBlIGwpCi0gICA6IHczMl9yZWdleF90cmFpdHNfYmFzZTxjaGFyPihsKQotICAgewotICAgICAgaW5pdCgpOwotICAgfQotCi0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXIgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fY2hhcl9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldOwotICAgfQotICAgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXIgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2NoYXJfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsKLSAgIH0KLSAgIGNoYXIgdG9sb3dlcihjaGFyIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2xvd2VyX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV07Ci0gICB9Ci0gICBib29sIGlzY3R5cGUobmRuYm9vc3Q6OnVpbnQzMl90IG1hc2ssIGNoYXIgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fdHlwZV9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldICYgbWFzazsKLSAgIH0KLQotcHJpdmF0ZToKLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgbV9jaGFyX21hcFsxdSA8PCBDSEFSX0JJVF07Ci0gICBjaGFyIG1fbG93ZXJfbWFwWzF1IDw8IENIQVJfQklUXTsKLSAgIG5kbmJvb3N0Ojp1aW50MTZfdCBtX3R5cGVfbWFwWzF1IDw8IENIQVJfQklUXTsKLSAgIHZvaWQgaW5pdCgpOwotfTsKLQotLy8KLS8vIGNsYXNzIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb246Ci0vLyBwcm92aWRlcyBwaW1wbCBpbXBsZW1lbnRhdGlvbiBmb3IgdzMyX3JlZ2V4X3RyYWl0cy4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uIDogcHVibGljIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD4KLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdzMyX3JlZ2V4X3RyYWl0czxjaGFyVD46OmNoYXJfY2xhc3NfdHlwZSBjaGFyX2NsYXNzX3R5cGU7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX3dvcmQgPSAweDA0MDApOyAvLyBtdXN0IGJlIEMxX0RFRklORUQgPDwgMQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza191bmljb2RlID0gMHgwODAwKTsgLy8gbXVzdCBiZSBDMV9ERUZJTkVEIDw8IDIKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfaG9yaXpvbnRhbCA9IDB4MTAwMCk7IC8vIG11c3QgYmUgQzFfREVGSU5FRCA8PCAzCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX3ZlcnRpY2FsID0gMHgyMDAwKTsgLy8gbXVzdCBiZSBDMV9ERUZJTkVEIDw8IDQKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfYmFzZSA9IDB4M2ZmKTsgIC8vIGFsbCB0aGUgbWFza3MgdXNlZCBieSB0aGUgQ1RfQ1RZUEUxIGdyb3VwCi0KLSAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHN0cmluZ190eXBlOwotICAgdHlwZWRlZiBjaGFyVCBjaGFyX3R5cGU7Ci0gICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6bGNpZF90eXBlIGwpOwotICAgc3RkOjpzdHJpbmcgZXJyb3Jfc3RyaW5nKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBuKSBjb25zdAotICAgewotICAgICAgaWYoIW1fZXJyb3Jfc3RyaW5ncy5lbXB0eSgpKQotICAgICAgewotICAgICAgICAgc3RkOjptYXA8aW50LCBzdGQ6OnN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHAgPSBtX2Vycm9yX3N0cmluZ3MuZmluZChuKTsKLSAgICAgICAgIHJldHVybiAocCA9PSBtX2Vycm9yX3N0cmluZ3MuZW5kKCkpID8gc3RkOjpzdHJpbmcoZ2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKG4pKSA6IHAtPnNlY29uZDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcobik7Ci0gICB9Ci0gICBjaGFyX2NsYXNzX3R5cGUgbG9va3VwX2NsYXNzbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIGNoYXJfY2xhc3NfdHlwZSByZXN1bHQgPSBsb29rdXBfY2xhc3NuYW1lX2ltcChwMSwgcDIpOwotICAgICAgaWYocmVzdWx0ID09IDApCi0gICAgICB7Ci0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0cmluZ190eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBlOwotICAgICAgICAgc3RyaW5nX3R5cGUgdGVtcChwMSwgcDIpOwotICAgICAgICAgZm9yKHNpemVfdHlwZSBpID0gMDsgaSA8IHRlbXAuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICB0ZW1wW2ldID0gdGhpcy0+dG9sb3dlcih0ZW1wW2ldKTsKLSAgICAgICAgIHJlc3VsdCA9IGxvb2t1cF9jbGFzc25hbWVfaW1wKCYqdGVtcC5iZWdpbigpLCAmKnRlbXAuYmVnaW4oKSArIHRlbXAuc2l6ZSgpKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSBsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0OwotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0OwotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX3RyYW5zZm9ybSh0aGlzLT5tX2xvY2FsZSwgcDEsIHAyKTsKLSAgIH0KLXByaXZhdGU6Ci0gICBzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPiAgICAgbV9lcnJvcl9zdHJpbmdzOyAgIC8vIGVycm9yIG1lc3NhZ2VzIGluZGV4ZWQgYnkgbnVtYmVyaWMgSUQKLSAgIHN0ZDo6bWFwPHN0cmluZ190eXBlLCBjaGFyX2NsYXNzX3R5cGU+ICBtX2N1c3RvbV9jbGFzc19uYW1lczsgLy8gY2hhcmFjdGVyIGNsYXNzIG5hbWVzCi0gICBzdGQ6Om1hcDxzdHJpbmdfdHlwZSwgc3RyaW5nX3R5cGU+ICAgICAgbV9jdXN0b21fY29sbGF0ZV9uYW1lczsgLy8gY29sbGF0aW5nIGVsZW1lbnQgbmFtZXMKLSAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICBtX2NvbGxhdGVfdHlwZTsgICAgLy8gdGhlIGZvcm0gb2YgdGhlIGNvbGxhdGlvbiBzdHJpbmcKLSAgIGNoYXJUICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbGxhdGVfZGVsaW07ICAgLy8gdGhlIGNvbGxhdGlvbiBncm91cCBkZWxpbWl0ZXIKLSAgIC8vCi0gICAvLyBoZWxwZXJzOgotICAgLy8KLSAgIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfY2xhc3NuYW1lX2ltcChjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6c3RyaW5nX3R5cGUgCi0gICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6dHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci17Ci0gICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0gICAvLwotICAgLy8gV2hhdCB3ZSBkbyBoZXJlIGRlcGVuZHMgdXBvbiB0aGUgZm9ybWF0IG9mIHRoZSBzb3J0IGtleSByZXR1cm5lZCBieQotICAgLy8gc29ydCBrZXkgcmV0dXJuZWQgYnkgdGhpcy0+dHJhbnNmb3JtOgotICAgLy8KLSAgIHN3aXRjaChtX2NvbGxhdGVfdHlwZSkKLSAgIHsKLSAgIGNhc2Ugc29ydF9DOgotICAgY2FzZSBzb3J0X3Vua25vd246Ci0gICAgICAvLyB0aGUgYmVzdCB3ZSBjYW4gZG8gaXMgdHJhbnNsYXRlIHRvIGxvd2VyIGNhc2UsIHRoZW4gZ2V0IGEgcmVndWxhciBzb3J0IGtleToKLSAgICAgIHsKLSAgICAgICAgIHJlc3VsdC5hc3NpZ24ocDEsIHAyKTsKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBzaXplX3R5cGU7Ci0gICAgICAgICBmb3Ioc2l6ZV90eXBlIGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKQotICAgICAgICAgICAgcmVzdWx0W2ldID0gdGhpcy0+dG9sb3dlcihyZXN1bHRbaV0pOwotICAgICAgICAgcmVzdWx0ID0gdGhpcy0+dHJhbnNmb3JtKCYqcmVzdWx0LmJlZ2luKCksICYqcmVzdWx0LmJlZ2luKCkgKyByZXN1bHQuc2l6ZSgpKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSBzb3J0X2ZpeGVkOgotICAgICAgewotICAgICAgICAgLy8gZ2V0IGEgcmVndWxhciBzb3J0IGtleSwgYW5kIHRoZW4gdHJ1bmNhdGUgaXQ6Ci0gICAgICAgICByZXN1bHQuYXNzaWduKHRoaXMtPnRyYW5zZm9ybShwMSwgcDIpKTsKLSAgICAgICAgIHJlc3VsdC5lcmFzZSh0aGlzLT5tX2NvbGxhdGVfZGVsaW0pOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHNvcnRfZGVsaW06Ci0gICAgICAgICAvLyBnZXQgYSByZWd1bGFyIHNvcnQga2V5LCBhbmQgdGhlbiB0cnVuY2F0ZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBkZWxpbToKLSAgICAgICAgIHJlc3VsdC5hc3NpZ24odGhpcy0+dHJhbnNmb3JtKHAxLCBwMikpOwotICAgICAgICAgc3RkOjpzaXplX3QgaTsKLSAgICAgICAgIGZvcihpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKHJlc3VsdFtpXSA9PSBtX2NvbGxhdGVfZGVsaW0pCi0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIHJlc3VsdC5lcmFzZShpKTsKLSAgICAgICAgIGJyZWFrOwotICAgfQotICAgaWYocmVzdWx0LmVtcHR5KCkpCi0gICAgICByZXN1bHQgPSBzdHJpbmdfdHlwZSgxLCBjaGFyVCgwKSk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6c3RyaW5nX3R5cGUgCi0gICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Om1hcDxzdHJpbmdfdHlwZSwgc3RyaW5nX3R5cGU+Ojpjb25zdF9pdGVyYXRvciBpdGVyX3R5cGU7Ci0gICBpZihtX2N1c3RvbV9jb2xsYXRlX25hbWVzLnNpemUoKSkKLSAgIHsKLSAgICAgIGl0ZXJfdHlwZSBwb3MgPSBtX2N1c3RvbV9jb2xsYXRlX25hbWVzLmZpbmQoc3RyaW5nX3R5cGUocDEsIHAyKSk7Ci0gICAgICBpZihwb3MgIT0gbV9jdXN0b21fY29sbGF0ZV9uYW1lcy5lbmQoKSkKLSAgICAgICAgIHJldHVybiBwb3MtPnNlY29uZDsKLSAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMClcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4MDU1MSkKLSAgIHN0ZDo6c3RyaW5nIG5hbWUocDEsIHAyKTsKLSNlbHNlCi0gICBzdGQ6OnN0cmluZyBuYW1lOwotICAgY29uc3QgY2hhclQqIHAwID0gcDE7Ci0gICB3aGlsZShwMCAhPSBwMikKLSAgICAgIG5hbWUuYXBwZW5kKDEsIGNoYXIoKnAwKyspKTsKLSNlbmRpZgotICAgbmFtZSA9IGxvb2t1cF9kZWZhdWx0X2NvbGxhdGVfbmFtZShuYW1lKTsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMClcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4MDU1MSkKLSAgIGlmKG5hbWUuc2l6ZSgpKQotICAgICAgcmV0dXJuIHN0cmluZ190eXBlKG5hbWUuYmVnaW4oKSwgbmFtZS5lbmQoKSk7Ci0jZWxzZQotICAgaWYobmFtZS5zaXplKCkpCi0gICB7Ci0gICAgICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0gICAgICB0eXBlZGVmIHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvciBpdGVyOwotICAgICAgaXRlciBiID0gbmFtZS5iZWdpbigpOwotICAgICAgaXRlciBlID0gbmFtZS5lbmQoKTsKLSAgICAgIHdoaWxlKGIgIT0gZSkKLSAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSwgY2hhclQoKmIrKykpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSNlbmRpZgotICAgaWYocDIgLSBwMSA9PSAxKQotICAgICAgcmV0dXJuIHN0cmluZ190eXBlKDEsICpwMSk7Ci0gICByZXR1cm4gc3RyaW5nX3R5cGUoKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUgbCkKLTogdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPihsKQotewotICAgY2F0X3R5cGUgY2F0OwotICAgc3RkOjpzdHJpbmcgY2F0X25hbWUodzMyX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9jYXRhbG9nX25hbWUoKSk7Ci0gICBpZihjYXRfbmFtZS5zaXplKCkpCi0gICB7Ci0gICAgICBjYXQgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9jYXRfb3BlbihjYXRfbmFtZSk7Ci0gICAgICBpZighY2F0KQotICAgICAgewotICAgICAgICAgc3RkOjpzdHJpbmcgbSgiVW5hYmxlIHRvIG9wZW4gbWVzc2FnZSBjYXRhbG9nOiAiKTsKLSAgICAgICAgIHN0ZDo6cnVudGltZV9lcnJvciBlcnIobSArIGNhdF9uYW1lKTsKLSAgICAgICAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OnJhaXNlX3J1bnRpbWVfZXJyb3IoZXJyKTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBpZiB3ZSBoYXZlIGEgdmFsaWQgY2F0YWxvZyB0aGVuIGxvYWQgb3VyIG1lc3NhZ2VzOgotICAgLy8KLSAgIGlmKGNhdCkKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBFcnJvciBtZXNzYWdlczoKLSAgICAgIC8vCi0gICAgICBmb3IobmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBpID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZT4oMCk7IAotICAgICAgICAgaSA8PSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl91bmtub3duOyAKLSAgICAgICAgIGkgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlPihpICsgMSkpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyKiBwID0gZ2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKGkpOwotICAgICAgICAgc3RyaW5nX3R5cGUgZGVmYXVsdF9tZXNzYWdlOwotICAgICAgICAgd2hpbGUoKnApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBkZWZhdWx0X21lc3NhZ2UuYXBwZW5kKDEsIHN0YXRpY19jYXN0PGNoYXJUPigqcCkpOwotICAgICAgICAgICAgKytwOwotICAgICAgICAgfQotICAgICAgICAgc3RyaW5nX3R5cGUgcyA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2NhdF9nZXQoY2F0LCB0aGlzLT5tX2xvY2FsZSwgaSsyMDAsIGRlZmF1bHRfbWVzc2FnZSk7Ci0gICAgICAgICBzdGQ6OnN0cmluZyByZXN1bHQ7Ci0gICAgICAgICBmb3Ioc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBqID0gMDsgaiA8IHMuc2l6ZSgpOyArK2opCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKDEsIHN0YXRpY19jYXN0PGNoYXI+KHNbal0pKTsKLSAgICAgICAgIH0KLSAgICAgICAgIG1fZXJyb3Jfc3RyaW5nc1tpXSA9IHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIC8vCi0gICAgICAvLyBDdXN0b20gY2xhc3MgbmFtZXM6Ci0gICAgICAvLwotICAgICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrc1sxNF0gPSAKLSAgICAgIHsKLSAgICAgICAgIDB4MDEwNHUsIC8vIEMxX0FMUEhBIHwgQzFfRElHSVQKLSAgICAgICAgIDB4MDEwMHUsIC8vIEMxX0FMUEhBCi0gICAgICAgICAweDAwMjB1LCAvLyBDMV9DTlRSTAotICAgICAgICAgMHgwMDA0dSwgLy8gQzFfRElHSVQKLSAgICAgICAgICh+KDB4MDAyMHV8MHgwMDA4dSkgJiAweDAxZmZ1KSB8IDB4MDQwMHUsIC8vIG5vdCBDMV9DTlRSTCBvciBDMV9TUEFDRQotICAgICAgICAgMHgwMDAydSwgLy8gQzFfTE9XRVIKLSAgICAgICAgICh+MHgwMDIwdSAmIDB4MDFmZnUpIHwgMHgwNDAwLCAvLyBub3QgQzFfQ05UUkwKLSAgICAgICAgIDB4MDAxMHUsIC8vIEMxX1BVTkNUCi0gICAgICAgICAweDAwMDh1LCAvLyBDMV9TUEFDRQotICAgICAgICAgMHgwMDAxdSwgLy8gQzFfVVBQRVIKLSAgICAgICAgIDB4MDA4MHUsIC8vIEMxX1hESUdJVAotICAgICAgICAgMHgwMDQwdSwgLy8gQzFfQkxBTksKLSAgICAgICAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3dvcmQsCi0gICAgICAgICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlLAotICAgICAgfTsKLSAgICAgIHN0YXRpYyBjb25zdCBzdHJpbmdfdHlwZSBudWxsX3N0cmluZzsKLSAgICAgIGZvcih1bnNpZ25lZCBpbnQgaiA9IDA7IGogPD0gMTM7ICsraikKLSAgICAgIHsKLSAgICAgICAgIHN0cmluZ190eXBlIHMoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfY2F0X2dldChjYXQsIHRoaXMtPm1fbG9jYWxlLCBqKzMwMCwgbnVsbF9zdHJpbmcpKTsKLSAgICAgICAgIGlmKHMuc2l6ZSgpKQotICAgICAgICAgICAgdGhpcy0+bV9jdXN0b21fY2xhc3NfbmFtZXNbc10gPSBtYXNrc1tqXTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBnZXQgdGhlIGNvbGxhdGlvbiBmb3JtYXQgdXNlZCBieSBtX3Bjb2xsYXRlOgotICAgLy8KLSAgIG1fY29sbGF0ZV90eXBlID0gcmVfZGV0YWlsOjpmaW5kX3NvcnRfc3ludGF4KHRoaXMsICZtX2NvbGxhdGVfZGVsaW0pOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIAotICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Omxvb2t1cF9jbGFzc25hbWVfaW1wKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotewotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrc1syMl0gPSAKLSAgIHsKLSAgICAgIDAsCi0gICAgICAweDAxMDR1LCAvLyBDMV9BTFBIQSB8IEMxX0RJR0lUCi0gICAgICAweDAxMDB1LCAvLyBDMV9BTFBIQQotICAgICAgMHgwMDQwdSwgLy8gQzFfQkxBTksKLSAgICAgIDB4MDAyMHUsIC8vIEMxX0NOVFJMCi0gICAgICAweDAwMDR1LCAvLyBDMV9ESUdJVAotICAgICAgMHgwMDA0dSwgLy8gQzFfRElHSVQKLSAgICAgICh+KDB4MDAyMHV8MHgwMDA4dXwweDAwNDApICYgMHgwMWZmdSkgfCAweDA0MDB1LCAvLyBub3QgQzFfQ05UUkwgb3IgQzFfU1BBQ0Ugb3IgQzFfQkxBTksKLSAgICAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2hvcml6b250YWwsIAotICAgICAgMHgwMDAydSwgLy8gQzFfTE9XRVIKLSAgICAgIDB4MDAwMnUsIC8vIEMxX0xPV0VSCi0gICAgICAofjB4MDAyMHUgJiAweDAxZmZ1KSB8IDB4MDQwMCwgLy8gbm90IEMxX0NOVFJMCi0gICAgICAweDAwMTB1LCAvLyBDMV9QVU5DVAotICAgICAgMHgwMDA4dSwgLy8gQzFfU1BBQ0UKLSAgICAgIDB4MDAwOHUsIC8vIEMxX1NQQUNFCi0gICAgICAweDAwMDF1LCAvLyBDMV9VUFBFUgotICAgICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdW5pY29kZSwKLSAgICAgIDB4MDAwMXUsIC8vIEMxX1VQUEVSCi0gICAgICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbCwgCi0gICAgICAweDAxMDR1IHwgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCwgCi0gICAgICAweDAxMDR1IHwgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCwgCi0gICAgICAweDAwODB1LCAvLyBDMV9YRElHSVQKLSAgIH07Ci0gICBpZihtX2N1c3RvbV9jbGFzc19uYW1lcy5zaXplKCkpCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFwPHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiwgY2hhcl9jbGFzc190eXBlPjo6Y29uc3RfaXRlcmF0b3IgbWFwX2l0ZXI7Ci0gICAgICBtYXBfaXRlciBwb3MgPSBtX2N1c3RvbV9jbGFzc19uYW1lcy5maW5kKHN0cmluZ190eXBlKHAxLCBwMikpOwotICAgICAgaWYocG9zICE9IG1fY3VzdG9tX2NsYXNzX25hbWVzLmVuZCgpKQotICAgICAgICAgcmV0dXJuIHBvcy0+c2Vjb25kOwotICAgfQotICAgc3RkOjpzaXplX3Qgc3RhdGVfaWQgPSAxICsgcmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9jbGFzc19pZChwMSwgcDIpOwotICAgaWYoc3RhdGVfaWQgPCBzaXplb2YobWFza3MpIC8gc2l6ZW9mKG1hc2tzWzBdKSkKLSAgICAgIHJldHVybiBtYXNrc1tzdGF0ZV9pZF07Ci0gICByZXR1cm4gbWFza3NbMF07Ci19Ci0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotbmRuYm9vc3Q6OnNoYXJlZF9wdHI8Y29uc3QgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPiBjcmVhdGVfdzMyX3JlZ2V4X3RyYWl0cyg6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSBsIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKGNoYXJUKSkKLXsKLSAgIC8vIFRPRE86IGNyZWF0ZSBhIGNhY2hlIGZvciBwcmV2aW91c2x5IGNvbnN0cnVjdGVkIG9iamVjdHMuCi0gICByZXR1cm4gbmRuYm9vc3Q6Om9iamVjdF9jYWNoZTwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUsIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+ID46OmdldChsLCA1KTsKLX0KLQotfSAvLyByZV9kZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgdzMyX3JlZ2V4X3RyYWl0cwotewotcHVibGljOgotICAgdHlwZWRlZiBjaGFyVCAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiAgc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6bGNpZF90eXBlIGxvY2FsZV90eXBlOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgICAgICAgICBjaGFyX2NsYXNzX3R5cGU7Ci0KLSAgIHN0cnVjdCBib29zdF9leHRlbnNpb25zX3RhZ3t9OwotCi0gICB3MzJfcmVnZXhfdHJhaXRzKCkKLSAgICAgIDogbV9waW1wbChyZV9kZXRhaWw6OmNyZWF0ZV93MzJfcmVnZXhfdHJhaXRzPGNoYXJUPig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9nZXRfZGVmYXVsdF9sb2NhbGUoKSkpCi0gICB7IH0KLSAgIHN0YXRpYyBzaXplX3R5cGUgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogcCkKLSAgIHsKLSAgICAgIHJldHVybiBzdGQ6OmNoYXJfdHJhaXRzPGNoYXJUPjo6bGVuZ3RoKHApOwotICAgfQotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW50YXhfdHlwZShjaGFyVCBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+c3ludGF4X3R5cGUoYyk7Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5lc2NhcGVfc3ludGF4X3R5cGUoYyk7Ci0gICB9Ci0gICBjaGFyVCB0cmFuc2xhdGUoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBjOwotICAgfQotICAgY2hhclQgdHJhbnNsYXRlX25vY2FzZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fcGltcGwtPnRvbG93ZXIoYyk7Ci0gICB9Ci0gICBjaGFyVCB0cmFuc2xhdGUoY2hhclQgYywgYm9vbCBpY2FzZSkgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBpY2FzZSA/IHRoaXMtPm1fcGltcGwtPnRvbG93ZXIoYykgOiBjOwotICAgfQotICAgY2hhclQgdG9sb3dlcihjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fcGltcGwtPnRvbG93ZXIoYyk7Ci0gICB9Ci0gICBjaGFyVCB0b3VwcGVyKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfdG91cHBlcihjLCB0aGlzLT5tX3BpbXBsLT5tX2xvY2FsZSk7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm0oY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfdHJhbnNmb3JtKHRoaXMtPm1fcGltcGwtPm1fbG9jYWxlLCBwMSwgcDIpOwotICAgfQotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+dHJhbnNmb3JtX3ByaW1hcnkocDEsIHAyKTsKLSAgIH0KLSAgIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfY2xhc3NuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmxvb2t1cF9jbGFzc25hbWUocDEsIHAyKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5sb29rdXBfY29sbGF0ZW5hbWUocDEsIHAyKTsKLSAgIH0KLSAgIGJvb2wgaXNjdHlwZShjaGFyVCBjLCBjaGFyX2NsYXNzX3R5cGUgZikgY29uc3QKLSAgIHsKLSAgICAgIGlmKChmICYgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19iYXNlKSAKLSAgICAgICAgICYmICh0aGlzLT5tX3BpbXBsLT5pc2N0eXBlKGYgJiByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2Jhc2UsIGMpKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZSBpZigoZiAmIHJlX2RldGFpbDo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdW5pY29kZSkgJiYgcmVfZGV0YWlsOjppc19leHRlbmRlZChjKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZSBpZigoZiAmIHJlX2RldGFpbDo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCkgJiYgKGMgPT0gJ18nKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZSBpZigoZiAmIHJlX2RldGFpbDo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdmVydGljYWwpCi0gICAgICAgICAmJiAoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjppc19zZXBhcmF0b3IoYykgfHwgKGMgPT0gJ1x2JykpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ob3Jpem9udGFsKSAKLSAgICAgICAgICYmIHRoaXMtPmlzY3R5cGUoYywgMHgwMDA4dSkgJiYgIXRoaXMtPmlzY3R5cGUoYywgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGludCB0b2koY29uc3QgY2hhclQqJiBwMSwgY29uc3QgY2hhclQqIHAyLCBpbnQgcmFkaXgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6Omdsb2JhbF90b2kocDEsIHAyLCByYWRpeCwgKnRoaXMpOwotICAgfQotICAgaW50IHZhbHVlKGNoYXJUIGMsIGludCByYWRpeCljb25zdAotICAgewotICAgICAgaW50IHJlc3VsdCA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX3ZhbHVlKGMpOwotICAgICAgcmV0dXJuIHJlc3VsdCA8IHJhZGl4ID8gcmVzdWx0IDogLTE7Ci0gICB9Ci0gICBsb2NhbGVfdHlwZSBpbWJ1ZShsb2NhbGVfdHlwZSBsKQotICAgewotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUgcmVzdWx0KGdldGxvYygpKTsKLSAgICAgIG1fcGltcGwgPSByZV9kZXRhaWw6OmNyZWF0ZV93MzJfcmVnZXhfdHJhaXRzPGNoYXJUPihsKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBsb2NhbGVfdHlwZSBnZXRsb2MoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+bV9sb2NhbGU7Ci0gICB9Ci0gICBzdGQ6OnN0cmluZyBlcnJvcl9zdHJpbmcocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIG4pIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+ZXJyb3Jfc3RyaW5nKG4pOwotICAgfQotCi0gICAvLwotICAgLy8gZXh0ZW5zaW9uOgotICAgLy8gc2V0IHRoZSBuYW1lIG9mIHRoZSBtZXNzYWdlIGNhdGFsb2cgaW4gdXNlIChkZWZhdWx0cyB0byAiYm9vc3RfcmVnZXgiKS4KLSAgIC8vCi0gICBzdGF0aWMgc3RkOjpzdHJpbmcgY2F0YWxvZ19uYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyBnZXRfY2F0YWxvZ19uYW1lKCk7Ci0KLXByaXZhdGU6Ci0gICBuZG5ib29zdDo6c2hhcmVkX3B0cjxjb25zdCByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+ID4gbV9waW1wbDsKLSAgIC8vCi0gICAvLyBjYXRhbG9nIG5hbWUgaGFuZGxlcjoKLSAgIC8vCi0gICBzdGF0aWMgc3RkOjpzdHJpbmcmIGdldF9jYXRhbG9nX25hbWVfaW5zdCgpOwotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgIHN0YXRpYyBzdGF0aWNfbXV0ZXgmIGdldF9tdXRleF9pbnN0KCk7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6c3RyaW5nIHczMl9yZWdleF90cmFpdHM8Y2hhclQ+OjpjYXRhbG9nX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgIHN0YXRpY19tdXRleDo6c2NvcGVkX2xvY2sgbGsoZ2V0X211dGV4X2luc3QoKSk7Ci0jZW5kaWYKLSAgIHN0ZDo6c3RyaW5nIHJlc3VsdChnZXRfY2F0YWxvZ19uYW1lX2luc3QoKSk7Ci0gICBnZXRfY2F0YWxvZ19uYW1lX2luc3QoKSA9IG5hbWU7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OnN0cmluZyYgdzMyX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9jYXRhbG9nX25hbWVfaW5zdCgpCi17Ci0gICBzdGF0aWMgc3RkOjpzdHJpbmcgc19uYW1lOwotICAgcmV0dXJuIHNfbmFtZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpzdHJpbmcgdzMyX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9jYXRhbG9nX25hbWUoKQotewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICBzdGF0aWNfbXV0ZXg6OnNjb3BlZF9sb2NrIGxrKGdldF9tdXRleF9pbnN0KCkpOwotI2VuZGlmCi0gICBzdGQ6OnN0cmluZyByZXN1bHQoZ2V0X2NhdGFsb2dfbmFtZV9pbnN0KCkpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGF0aWNfbXV0ZXgmIHczMl9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfbXV0ZXhfaW5zdCgpCi17Ci0gICBzdGF0aWMgc3RhdGljX211dGV4IHNfbXV0ZXggPSBORE5CT09TVF9TVEFUSUNfTVVURVhfSU5JVDsKLSAgIHJldHVybiBzX211dGV4OwotfQotI2VuZGlmCi0KLQotfSAvLyBib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2U0ZWQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXhfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JlZ2V4IGZvciBkb2N1bWVudGF0aW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X2Z3ZC5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IEZvcndhcmQgZGVjbGFyZXMgbmRuYm9vc3Q6OmJhc2ljX3JlZ2V4PD4gYW5kCi0gICogICAgICAgICAgICAgICAgYXNzb2NpYXRlZCB0eXBlZGVmcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9GV0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZXRF9IUFAKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZndkLmhwcD4KLQotI2VuZGlmCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc2NvcGVkX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc2NvcGVkX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTliZjY4Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Njb3BlZF9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NDT1BFRF9BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0FSUkFZX0hQUF9JTkNMVURFRAotCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3Njb3BlZF9hcnJheS5odG0KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2NvcGVkX2FycmF5LmhwcD4KLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NDT1BFRF9BUlJBWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Njb3BlZF9wdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDNiYjQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NDT1BFRF9QVFJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9QVFJfSFBQX0lOQ0xVREVECi0KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2NvcGVkX3B0ci5odG0KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2NvcGVkX3B0ci5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NDT1BFRF9QVFJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NoYXJlZF9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NoYXJlZF9hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0Y2VjMjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zaGFyZWRfYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TSEFSRURfQVJSQVlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NIQVJFRF9BUlJBWV9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBzaGFyZWRfYXJyYXkuaHBwCi0vLwotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2hhcmVkX2FycmF5Lmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX2FycmF5LmhwcD4KLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NIQVJFRF9BUlJBWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NoYXJlZF9wdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2ZmOGQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NIQVJFRF9QVFJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NIQVJFRF9QVFJfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgc2hhcmVkX3B0ci5ocHAKLS8vCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcD4KLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NIQVJFRF9QVFJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9hbGxvY2F0ZV9zaGFyZWRfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvYWxsb2NhdGVfc2hhcmVkX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU5MWJmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9hbGxvY2F0ZV9zaGFyZWRfYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR2xlbiBKb3NlcGggRmVybmFuZGVzCi0gKiBnbGVuZmUgYXQgbGl2ZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0gKiBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQKLSAqIG9yIGNvcHkgYXQgaHR0cDovL2Jvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKi8KLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0FMTE9DQVRFX1NIQVJFRF9BUlJBWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0FMTE9DQVRFX1NIQVJFRF9BUlJBWV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FsbG9jYXRlX2FycmF5X2hlbHBlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV9kZWxldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9pZl9hcnJheS5ocHA+Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0jaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwgc3RkOjpzaXplX3Qgc2l6ZSkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IHNpemUgKiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltdPiBhMShhbGxvY2F0b3IsIG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0KHAyKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBzaXplLCBBcmdzJiYuLi4gYXJncykgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IHNpemUgKiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltdPiBhMShhbGxvY2F0b3IsIG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0KHAyLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEEsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLCBBcmdzJiYuLi4gYXJncykgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbTl0+IGExKGFsbG9jYXRvciwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwgY29uc3QgVCYgbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBUMyogcDMgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbTl0+IGExKGFsbG9jYXRvciwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDMgPSByZWludGVycHJldF9jYXN0PFQzKj4obGlzdCk7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0X2xpc3QocDIsIHAzKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwgc3RkOjpzaXplX3Qgc2l6ZSwKLSAgICAgICAgY29uc3QgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUmIGxpc3QpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUMiBUMzsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBNID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIFQzKiBwMyA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gTSAqIHNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltdPiBhMShhbGxvY2F0b3IsIG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAzID0gcmVpbnRlcnByZXRfY2FzdDxUMyo+KGxpc3QpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+dGVtcGxhdGUgaW5pdF9saXN0PE0+KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwKLSAgICAgICAgY29uc3QgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUmIGxpc3QpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUMiBUMzsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBNID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplLAotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIFQzKiBwMyA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltOXT4gYTEoYWxsb2NhdG9yLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0KTsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPnRlbXBsYXRlIGluaXRfbGlzdDxNPihwMiwgcDMpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLAotICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGU+IGxpc3QpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUMiBUMzsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBsaXN0LnNpemUoKSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDMgPSByZWludGVycHJldF9jYXN0PFQzKj4obGlzdC5iZWdpbigpKTsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXRfbGlzdChwMiwgcDMpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsIHN0ZDo6c2l6ZV90IHNpemUsCi0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VD46OnR5cGUmJiB2YWx1ZSkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IHNpemUgKiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltdPiBhMShhbGxvY2F0b3IsIG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0KHAyLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPFQyPih2YWx1ZSkpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsCi0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VD46OnR5cGUmJiB2YWx1ZSkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbTl0+IGExKGFsbG9jYXRvciwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8VDI+KHZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNlbmRpZgotI2VuZGlmCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWRfbm9pbml0KGNvbnN0IEEmIGFsbG9jYXRvciwgc3RkOjpzaXplX3Qgc2l6ZSkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IHNpemUgKiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltdPiBhMShhbGxvY2F0b3IsIG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5ub2luaXQocDIpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZF9ub2luaXQoY29uc3QgQSYgYWxsb2NhdG9yKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltOXT4gYTEoYWxsb2NhdG9yLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+bm9pbml0KHAyKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2JhZF93ZWFrX3B0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9iYWRfd2Vha19wdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODA4M2M0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2JhZF93ZWFrX3B0ci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9CQURfV0VBS19QVFJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9CQURfV0VBS19QVFJfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L3NtYXJ0X3B0ci9iYWRfd2Vha19wdHIuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxleGNlcHRpb24+Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSMgcHJhZ21hIHdhcm4gLTgwMjYgICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGV4Y2VwLiBzcGVjLiBhcmUgbm90IGV4cGFuZGVkIGlubGluZQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0vLyBUaGUgc3RhbmRhcmQgbGlicmFyeSB0aGF0IGNvbWVzIHdpdGggQm9ybGFuZCBDKysgNS41LjEsIDUuNi40Ci0vLyBkZWZpbmVzIHN0ZDo6ZXhjZXB0aW9uIGFuZCBpdHMgbWVtYmVycyBhcyBoYXZpbmcgQyBjYWxsaW5nCi0vLyBjb252ZW50aW9uICgtcGMpLiBXaGVuIHRoZSBkZWZpbml0aW9uIG9mIGJhZF93ZWFrX3B0cgotLy8gaXMgY29tcGlsZWQgd2l0aCAtcHMsIHRoZSBjb21waWxlciBpc3N1ZXMgYW4gZXJyb3IuCi0vLyBIZW5jZSwgdGhlIHRlbXBvcmFyeSAjcHJhZ21hIG9wdGlvbiAtcGMgYmVsb3cuCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgX19CT1JMQU5EQ19fIDw9IDB4NTY0Ci0jIHByYWdtYSBvcHRpb24gcHVzaCAtcGMKLSNlbmRpZgotCi1jbGFzcyBiYWRfd2Vha19wdHI6IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbgotewotcHVibGljOgotCi0gICAgdmlydHVhbCBjaGFyIGNvbnN0ICogd2hhdCgpIGNvbnN0IHRocm93KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAidHIxOjpiYWRfd2Vha19wdHIiOwotICAgIH0KLX07Ci0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgX19CT1JMQU5EQ19fIDw9IDB4NTY0Ci0jIHByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIF9fQk9STEFORENfXwotIyBwcmFnbWEgd2FybiAuODAyNiAgICAgLy8gRnVuY3Rpb25zIHdpdGggZXhjZXAuIHNwZWMuIGFyZSBub3QgZXhwYW5kZWQgaW5saW5lCi0jZW5kaWYKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9CQURfV0VBS19QVFJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYWxsb2NhdGVfYXJyYXlfaGVscGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hbGxvY2F0ZV9hcnJheV9oZWxwZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTgwMWRjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hbGxvY2F0ZV9hcnJheV9oZWxwZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR2xlbiBKb3NlcGggRmVybmFuZGVzIAotICogZ2xlbmZlIGF0IGxpdmUgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCAKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCAKLSAqIG9yIGNvcHkgYXQgaHR0cDovL2Jvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKi8KLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BTExPQ0FURV9BUlJBWV9IRUxQRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQUxMT0NBVEVfQVJSQVlfSEVMUEVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgWSA9IGNoYXI+Ci0gICAgICAgIGNsYXNzIGFsbG9jYXRlX2FycmF5X2hlbHBlcjsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgWT4KLSAgICAgICAgY2xhc3MgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbXSwgWT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQTksIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBZOT4KLSAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBhbGxvY2F0ZV9hcnJheV9oZWxwZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEE6OnRlbXBsYXRlIHJlYmluZDxZPiAgIDo6b3RoZXIgQTI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEE6OnRlbXBsYXRlIHJlYmluZDxjaGFyPjo6b3RoZXIgQTM7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OnZhbHVlX3R5cGUgICAgICB2YWx1ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6cG9pbnRlciAgICAgICAgIHBvaW50ZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpjb25zdF9wb2ludGVyICAgY29uc3RfcG9pbnRlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OnJlZmVyZW5jZSAgICAgICByZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpjb25zdF9yZWZlcmVuY2UgY29uc3RfcmVmZXJlbmNlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6c2l6ZV90eXBlICAgICAgIHNpemVfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgc3RydWN0IHJlYmluZCB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtdLCBVPiBvdGhlcjsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBhbGxvY2F0ZV9hcnJheV9oZWxwZXIoY29uc3QgQSYgYWxsb2NhdG9yXywgc3RkOjpzaXplX3Qgc2l6ZV8sIFQqKiBkYXRhXykKLSAgICAgICAgICAgICAgICA6IGFsbG9jYXRvcihhbGxvY2F0b3JfKSwKLSAgICAgICAgICAgICAgICAgIHNpemUoc2l6ZW9mKFQpICogc2l6ZV8pLAotICAgICAgICAgICAgICAgICAgZGF0YShkYXRhXykgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgICAgIGFsbG9jYXRlX2FycmF5X2hlbHBlcihjb25zdCBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtdLCBVPiYgb3RoZXIpIAotICAgICAgICAgICAgICAgIDogYWxsb2NhdG9yKG90aGVyLmFsbG9jYXRvciksCi0gICAgICAgICAgICAgICAgICBzaXplKG90aGVyLnNpemUpLAotICAgICAgICAgICAgICAgICAgZGF0YShvdGhlci5kYXRhKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIHZhbHVlKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5hZGRyZXNzKHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0X3BvaW50ZXIgYWRkcmVzcyhjb25zdF9yZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFkZHJlc3ModmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IubWF4X3NpemUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWxsb2NhdGUoc2l6ZV90eXBlIGNvdW50LCBjb25zdCB2b2lkKiB2YWx1ZSA9IDApIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBhMSA9IG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gY291bnQgKiBzaXplb2YoWSkgKyBhMSAtIDE7Ci0gICAgICAgICAgICAgICAgY2hhciogIHAxID0gQTMoYWxsb2NhdG9yKS5hbGxvY2F0ZShuMSArIHNpemUsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDIgPSBwMSArIG4xOwotICAgICAgICAgICAgICAgIHdoaWxlIChzdGQ6OnNpemVfdChwMikgJSBhMSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHAyLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4ocDIpOwotICAgICAgICAgICAgICAgIHJldHVybiAgcmVpbnRlcnByZXRfY2FzdDxZKj4ocDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIgbWVtb3J5LCBzaXplX3R5cGUgY291bnQpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBhMSA9IG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gY291bnQgKiBzaXplb2YoWSkgKyBhMSAtIDE7Ci0gICAgICAgICAgICAgICAgY2hhciogIHAxID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWVtb3J5KTsKLSAgICAgICAgICAgICAgICBBMyhhbGxvY2F0b3IpLmRlYWxsb2NhdGUocDEsIG4xICsgc2l6ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGNvbnN0cnVjdChwb2ludGVyIG1lbW9yeSwgY29uc3QgWSYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBhbGxvY2F0b3IuY29uc3RydWN0KG1lbW9yeSwgdmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZXN0cm95KHBvaW50ZXIgbWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgYWxsb2NhdG9yLmRlc3Ryb3kobWVtb3J5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbXSwgVT4mIG90aGVyKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvciA9PSBvdGhlci5hbGxvY2F0b3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW10sIFU+JiBvdGhlcikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgCi0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBBMiBhbGxvY2F0b3I7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBzaXplOwotICAgICAgICAgICAgVCoqIGRhdGE7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4sIHR5cGVuYW1lIFk+Ci0gICAgICAgIGNsYXNzIGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW05dLCBZPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBOSwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFk5PgotICAgICAgICAgICAgZnJpZW5kIGNsYXNzIGFsbG9jYXRlX2FycmF5X2hlbHBlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPFk+ICAgOjpvdGhlciBBMjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPGNoYXI+OjpvdGhlciBBMzsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6dmFsdWVfdHlwZSAgICAgIHZhbHVlX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpwb2ludGVyICAgICAgICAgcG9pbnRlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OmNvbnN0X3BvaW50ZXIgICBjb25zdF9wb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6cmVmZXJlbmNlICAgICAgIHJlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9yZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpzaXplX3R5cGUgICAgICAgc2l6ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmViaW5kIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW05dLCBVPiBvdGhlcjsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBhbGxvY2F0ZV9hcnJheV9oZWxwZXIoY29uc3QgQSYgYWxsb2NhdG9yXywgVCoqIGRhdGFfKQotICAgICAgICAgICAgICAgIDogYWxsb2NhdG9yKGFsbG9jYXRvcl8pLAotICAgICAgICAgICAgICAgICAgZGF0YShkYXRhXykgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgICAgIGFsbG9jYXRlX2FycmF5X2hlbHBlcihjb25zdCBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtOXSwgVT4mIG90aGVyKSAKLSAgICAgICAgICAgICAgICA6IGFsbG9jYXRvcihvdGhlci5hbGxvY2F0b3IpLAotICAgICAgICAgICAgICAgICAgZGF0YShvdGhlci5kYXRhKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIHZhbHVlKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5hZGRyZXNzKHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0X3BvaW50ZXIgYWRkcmVzcyhjb25zdF9yZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFkZHJlc3ModmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IubWF4X3NpemUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWxsb2NhdGUoc2l6ZV90eXBlIGNvdW50LCBjb25zdCB2b2lkKiB2YWx1ZSA9IDApIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBhMSA9IG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gY291bnQgKiBzaXplb2YoWSkgKyBhMSAtIDE7Ci0gICAgICAgICAgICAgICAgY2hhciogIHAxID0gQTMoYWxsb2NhdG9yKS5hbGxvY2F0ZShuMSArIE4xLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgY2hhciogIHAyID0gcDEgKyBuMTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoc3RkOjpzaXplX3QocDIpICUgYTEgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBwMi0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHAyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gIHJlaW50ZXJwcmV0X2Nhc3Q8WSo+KHAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIG1lbW9yeSwgc2l6ZV90eXBlIGNvdW50KSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgYTEgPSBuZG5ib29zdDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZTsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IGNvdW50ICogc2l6ZW9mKFkpICsgYTEgLSAxOwotICAgICAgICAgICAgICAgIGNoYXIqICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1lbW9yeSk7Ci0gICAgICAgICAgICAgICAgQTMoYWxsb2NhdG9yKS5kZWFsbG9jYXRlKHAxLCBuMSArIE4xKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgY29uc3RydWN0KHBvaW50ZXIgbWVtb3J5LCBjb25zdCBZJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGFsbG9jYXRvci5jb25zdHJ1Y3QobWVtb3J5LCB2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlc3Ryb3kocG9pbnRlciBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBhbGxvY2F0b3IuZGVzdHJveShtZW1vcnkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtOXSwgVT4mIG90aGVyKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvciA9PSBvdGhlci5hbGxvY2F0b3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW05dLCBVPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IAotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICAgICAgTjEgPSBOICogc2l6ZW9mKFQpCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgQTIgYWxsb2NhdG9yOwotICAgICAgICAgICAgVCoqIGRhdGE7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV9kZWxldGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV9kZWxldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdhZTlmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfZGVsZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FSUkFZX0RFTEVURVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVJSQVlfREVMRVRFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdXRpbGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9mb3J3YXJkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgY2xhc3MgYXJyYXlfZGVsZXRlcjsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgY2xhc3MgYXJyYXlfZGVsZXRlcjxUW10+IHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgYXJyYXlfZGVsZXRlcihzdGQ6OnNpemVfdCBzaXplXykKLSAgICAgICAgICAgICAgICA6IHNpemUoc2l6ZV8pLAotICAgICAgICAgICAgICAgICAgb2JqZWN0KDApIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH5hcnJheV9kZWxldGVyKCkgewotICAgICAgICAgICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShvYmplY3QsIHNpemUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgaW5pdChUKiBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0KG1lbW9yeSwgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICAgICAgdm9pZCBpbml0KFQqIG1lbW9yeSwgVCYmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdF92YWx1ZShtZW1vcnksIHNpemUsIHNwX2ZvcndhcmQ8VD4odmFsdWUpKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgICAgICAgICB2b2lkIGluaXQoVCogbWVtb3J5LCBBcmdzJiYuLi4gYXJncykgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXRfYXJncyhtZW1vcnksIHNpemUsIHNwX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotI2VuZGlmCi0gICAgICAgICAgICB2b2lkIGluaXRfbGlzdChUKiBtZW1vcnksIGNvbnN0IFQqIGxpc3QpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X2xpc3QobWVtb3J5LCBzaXplLCBsaXN0KTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBNPgotICAgICAgICAgICAgdm9pZCBpbml0X2xpc3QoVCogbWVtb3J5LCBjb25zdCBUKiBsaXN0KSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdF9saXN0PFQsIE0+KG1lbW9yeSwgc2l6ZSwgbGlzdCk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBub2luaXQoVCogbWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfbm9pbml0KG1lbW9yeSwgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBvcGVyYXRvcigpKGNvbnN0IHZvaWQqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9iamVjdCkgewotICAgICAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG9iamVjdCwgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9iamVjdCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZTsKLSAgICAgICAgICAgIFQqIG9iamVjdDsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICAgICAgY2xhc3MgYXJyYXlfZGVsZXRlcjxUW05dPiB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIGFycmF5X2RlbGV0ZXIoKQotICAgICAgICAgICAgICAgIDogb2JqZWN0KDApIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH5hcnJheV9kZWxldGVyKCkgewotICAgICAgICAgICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShvYmplY3QsIE4pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgaW5pdChUKiBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0KG1lbW9yeSwgTik7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICAgICAgdm9pZCBpbml0KFQqIG1lbW9yeSwgVCYmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdF92YWx1ZShtZW1vcnksIE4sIHNwX2ZvcndhcmQ8VD4odmFsdWUpKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgICAgICAgICB2b2lkIGluaXQoVCogbWVtb3J5LCBBcmdzJiYuLi4gYXJncykgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXRfYXJncyhtZW1vcnksIE4sIHNwX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotI2VuZGlmCi0gICAgICAgICAgICB2b2lkIGluaXRfbGlzdChUKiBtZW1vcnksIGNvbnN0IFQqIGxpc3QpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X2xpc3QobWVtb3J5LCBOLCBsaXN0KTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBNPgotICAgICAgICAgICAgdm9pZCBpbml0X2xpc3QoVCogbWVtb3J5LCBjb25zdCBUKiBsaXN0KSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdF9saXN0PFQsIE0+KG1lbW9yeSwgTiwgbGlzdCk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBub2luaXQoVCogbWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfbm9pbml0KG1lbW9yeSwgTik7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBvcGVyYXRvcigpKGNvbnN0IHZvaWQqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9iamVjdCkgewotICAgICAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG9iamVjdCwgTik7Ci0gICAgICAgICAgICAgICAgICAgIG9iamVjdCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgVCogb2JqZWN0OwotICAgICAgICB9OwotICAgIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzliNzc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMgCi0gKiBnbGVuZmUgYXQgbGl2ZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FSUkFZX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BUlJBWV9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfYmFzZSB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGFycmF5X2Jhc2U8VFtdPiB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFycmF5X2Jhc2U8VD46OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICAgICAgc3RydWN0IGFycmF5X2Jhc2U8VFtOXT4gewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcnJheV9iYXNlPFQ+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBhcnJheV90b3RhbCB7Ci0gICAgICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgICAgICBzaXplID0gMQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICAgICAgc3RydWN0IGFycmF5X3RvdGFsPFRbTl0+IHsKLSAgICAgICAgICAgIGVudW0gewotICAgICAgICAgICAgICAgIHNpemUgPSBOICogYXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotICAgICAgICBzdHJ1Y3QgYXJyYXlfaW5uZXI7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBhcnJheV9pbm5lcjxUW10+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfaW5uZXI8VFtOXT4gewotICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV91dGlsaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV91dGlsaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY5NjM2NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdXRpbGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMgCi0gKiBnbGVuZmUgYXQgbGl2ZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FSUkFZX1VUSUxJVFlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVJSQVlfVVRJTElUWV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9kZXN0cm95KFQqLCBzdGQ6OnNpemVfdCwgbmRuYm9vc3Q6OnRydWVfdHlwZSkgewotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2Rlc3Ryb3koVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplLCBuZG5ib29zdDo6ZmFsc2VfdHlwZSkgewotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gc2l6ZTsgaSA+IDA7ICkgewotICAgICAgICAgICAgICAgIG1lbW9yeVstLWldLn5UKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfZGVzdHJveShUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUpIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+IHR5cGU7Ci0gICAgICAgICAgICBhcnJheV9kZXN0cm95KG1lbW9yeSwgc2l6ZSwgdHlwZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfaW5pdChUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIG5kbmJvb3N0Ojp0cnVlX3R5cGUpIHsKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICBtZW1vcnlbaV0gPSBUKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfaW5pdChUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIG5kbmJvb3N0OjpmYWxzZV90eXBlKSB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGkgPSAwOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShtZW1vcnksIGkpOwotICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFQoKTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2luaXQoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjxUPiB0eXBlOyAgICAgICAgICAgIAotICAgICAgICAgICAgYXJyYXlfaW5pdChtZW1vcnksIHNpemUsIHR5cGUpOwotICAgICAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2luaXRfdmFsdWUoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplLCBUJiYgdmFsdWUpIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgICAgICAgICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICAgICAgOjpuZXcocDEpIFQodmFsdWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kobWVtb3J5LCBpKTsKLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9pbml0X2FyZ3MoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplLCBBcmdzJiYuLi4gYXJncykgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBpID0gMDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZm9yICg7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVChhcmdzLi4uKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG1lbW9yeSwgaSk7Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVChhcmdzLi4uKTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9Ci0jZW5kaWYKLSNlbmRpZgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9pbml0X2xpc3QoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplLCBjb25zdCBUKiBsaXN0KSB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGkgPSAwOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKGxpc3RbaV0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kobWVtb3J5LCBpKTsKLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKGxpc3RbaV0pOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfaW5pdF9saXN0KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgY29uc3QgVCogbGlzdCkgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBpID0gMDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZm9yICg7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVChsaXN0W2kgJSBOXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShtZW1vcnksIGkpOwotICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFQobGlzdFtpICUgTl0pOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfbm9pbml0KFQqLCBzdGQ6OnNpemVfdCwgbmRuYm9vc3Q6OnRydWVfdHlwZSkgewotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X25vaW5pdChUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIG5kbmJvb3N0OjpmYWxzZV90eXBlKSB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGkgPSAwOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kobWVtb3J5LCBpKTsKLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfbm9pbml0KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSkgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I8VD4gdHlwZTsKLSAgICAgICAgICAgIGFycmF5X25vaW5pdChtZW1vcnksIHNpemUsIHR5cGUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNTVmMjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9hdG9taWNfY291bnQuaHBwIC0gdGhyZWFkL1NNUCBzYWZlIHJlZmVyZW5jZSBjb3VudGVyCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgdHlwZWRlZiA8aW1wbGVtZW50YXRpb24tZGVmaW5lZD4gbmRuYm9vc3Q6OmRldGFpbDo6YXRvbWljX2NvdW50OwotLy8KLS8vICBhdG9taWNfY291bnQgYShuKTsKLS8vCi0vLyAgICAobiBpcyBjb252ZXJ0aWJsZSB0byBsb25nKQotLy8KLS8vICAgIEVmZmVjdHM6IENvbnN0cnVjdHMgYW4gYXRvbWljX2NvdW50IHdpdGggYW4gaW5pdGlhbCB2YWx1ZSBvZiBuCi0vLwotLy8gIGE7Ci0vLwotLy8gICAgUmV0dXJuczogKGxvbmcpIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEKLS8vCi0vLyAgKythOwotLy8KLS8vICAgIEVmZmVjdHM6IEF0b21pY2FsbHkgaW5jcmVtZW50cyB0aGUgdmFsdWUgb2YgYQotLy8gICAgUmV0dXJuczogKGxvbmcpIHRoZSBuZXcgdmFsdWUgb2YgYQotLy8KLS8vICAtLWE7Ci0vLwotLy8gICAgRWZmZWN0czogQXRvbWljYWxseSBkZWNyZW1lbnRzIHRoZSB2YWx1ZSBvZiBhCi0vLyAgICBSZXR1cm5zOiAobG9uZykgdGhlIG5ldyB2YWx1ZSBvZiBhCi0vLwotLy8gICAgSW1wb3J0YW50IG5vdGU6IHdoZW4gLS1hIHJldHVybnMgemVybywgaXQgbXVzdCBhY3QgYXMgYQotLy8gICAgICByZWFkIG1lbW9yeSBiYXJyaWVyIChSTUIpOyBpLmUuIHRoZSBjYWxsaW5nIHRocmVhZCBtdXN0Ci0vLyAgICAgIGhhdmUgYSBzeW5jaHJvbml6ZWQgdmlldyBvZiB0aGUgbWVtb3J5Ci0vLwotLy8gICAgT24gSW50ZWwgSUEtMzIgKHg4NikgbWVtb3J5IGlzIGFsd2F5cyBzeW5jaHJvbml6ZWQsIHNvIHRoaXMKLS8vICAgICAgaXMgbm90IGEgcHJvYmxlbS4KLS8vCi0vLyAgICBPbiBtYW55IGFyY2hpdGVjdHVyZXMgdGhlIGF0b21pYyBpbnN0cnVjdGlvbnMgYWxyZWFkeSBhY3QgYXMKLS8vICAgICAgYSBtZW1vcnkgYmFycmllci4KLS8vCi0vLyAgICBUaGlzIHByb3BlcnR5IGlzIG5lY2Vzc2FyeSBmb3IgcHJvcGVyIHJlZmVyZW5jZSBjb3VudGluZywgc2luY2UKLS8vICAgICAgYSB0aHJlYWQgY2FuIHVwZGF0ZSB0aGUgY29udGVudHMgb2YgYSBzaGFyZWQgb2JqZWN0LCB0aGVuCi0vLyAgICAgIHJlbGVhc2UgaXRzIHJlZmVyZW5jZSwgYW5kIGFub3RoZXIgdGhyZWFkIG1heSBpbW1lZGlhdGVseQotLy8gICAgICByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZSBjYXVzaW5nIG9iamVjdCBkZXN0cnVjdGlvbi4KLS8vCi0vLyAgICBUaGUgZGVzdHJ1Y3RvciBuZWVkcyB0byBoYXZlIGEgc3luY2hyb25pemVkIHZpZXcgb2YgdGhlCi0vLyAgICAgIG9iamVjdCB0byBwZXJmb3JtIHByb3BlciBjbGVhbnVwLgotLy8KLS8vICAgIE9yaWdpbmFsIGV4YW1wbGUgYnkgQWxleGFuZGVyIFRlcmVraG92OgotLy8KLS8vICAgIEdpdmVuOgotLy8KLS8vICAgIC0gYSBtdXRhYmxlIHNoYXJlZCBvYmplY3QgT0JKOwotLy8gICAgLSB0d28gdGhyZWFkcyBUSFJFQUQxIGFuZCBUSFJFQUQyIGVhY2ggaG9sZGluZyAKLS8vICAgICAgYSBwcml2YXRlIHNtYXJ0X3B0ciBvYmplY3QgcG9pbnRpbmcgdG8gdGhhdCBPQkouCi0vLwotLy8gICAgdDE6IFRIUkVBRDEgdXBkYXRlcyBPQkogKHRocmVhZC1zYWZlIHZpYSBzb21lIHN5bmNocm9uaXphdGlvbikKLS8vICAgICAgYW5kIGEgZmV3IGN5Y2xlcyBsYXRlciAoYWZ0ZXIgInVubG9jayIpIGRlc3Ryb3lzIHNtYXJ0X3B0cjsKLS8vCi0vLyAgICB0MjogVEhSRUFEMiBkZXN0cm95cyBzbWFydF9wdHIgV0lUSE9VVCBkb2luZyBhbnkgc3luY2hyb25pemF0aW9uIAotLy8gICAgICB3aXRoIHJlc3BlY3QgdG8gc2hhcmVkIG11dGFibGUgb2JqZWN0IE9CSjsgT0JKIGRlc3RydWN0b3JzCi0vLyAgICAgIGFyZSBjYWxsZWQgZHJpdmVuIGJ5IHNtYXJ0X3B0ciBpbnRlcmZhY2UuLi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaGFzX3N5bmMuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXR5cGVkZWYgbG9uZyBhdG9taWNfY291bnQ7Ci0KLX0KLQotfQotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0FDX1VTRV9QVEhSRUFEUykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3B0aHJlYWRzLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggX19HTlVDX18gKSAmJiAoIGRlZmluZWQoIF9faTM4Nl9fICkgfHwgZGVmaW5lZCggX194ODZfNjRfXyApICkKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djY194ODYuaHBwPgotCi0jZWxpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3dpbjMyLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggTkROQk9PU1RfU1BfSEFTX1NZTkMgKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfc3luYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoX19HTElCQ1BQX18pIHx8IGRlZmluZWQoX19HTElCQ1hYX18pCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9nY2MuaHBwPgotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19QVEhSRUFEUykKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0FDX1VTRV9QVEhSRUFEUwotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfcHRocmVhZHMuaHBwPgotCi0jZWxzZQotCi0vLyBVc2UgI2RlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMgdG8gYXZvaWQgdGhlIGVycm9yCi0jZXJyb3IgVW5yZWNvZ25pemVkIHRocmVhZGluZyBwbGF0Zm9ybQotCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MjBjZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9nY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9HQ0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19IUFBfSU5DTFVERUQKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvYXRvbWljX2NvdW50X2djYy5ocHAKLS8vCi0vLyAgYXRvbWljX2NvdW50IGZvciBHTlUgbGlic3RkYysrIHYzCi0vLwotLy8gIGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL3BvcnRpbmcvVGhyZWFkLXNhZmV0eS5odG1sCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAoYykgMjAwMiBMYXJzIEd1bGxpayBCavhubmVzIDxsYXJzYmpAbHl4Lm9yZz4KLS8vICBDb3B5cmlnaHQgMjAwMy0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2lmIF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18gPj0gNDAyCi0jIGluY2x1ZGUgPGV4dC9hdG9taWNpdHkuaD4gCi0jZWxzZSAKLSMgaW5jbHVkZSA8Yml0cy9hdG9taWNpdHkuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgLy8gZysrIDMuNCsKLQotdXNpbmcgX19nbnVfY3h4OjpfX2F0b21pY19hZGQ7Ci11c2luZyBfX2dudV9jeHg6Ol9fZXhjaGFuZ2VfYW5kX2FkZDsKLQotI2VuZGlmCi0KLWNsYXNzIGF0b21pY19jb3VudAotewotcHVibGljOgotCi0gICAgZXhwbGljaXQgYXRvbWljX2NvdW50KCBsb25nIHYgKSA6IHZhbHVlXyggdiApIHt9Ci0KLSAgICBsb25nIG9wZXJhdG9yKysoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIF9fZXhjaGFuZ2VfYW5kX2FkZCggJnZhbHVlXywgKzEgKSArIDE7Ci0gICAgfQotCi0gICAgbG9uZyBvcGVyYXRvci0tKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBfX2V4Y2hhbmdlX2FuZF9hZGQoICZ2YWx1ZV8sIC0xICkgLSAxOwotICAgIH0KLQotICAgIG9wZXJhdG9yIGxvbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIF9fZXhjaGFuZ2VfYW5kX2FkZCggJnZhbHVlXywgMCApOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIGF0b21pY19jb3VudChhdG9taWNfY291bnQgY29uc3QgJik7Ci0gICAgYXRvbWljX2NvdW50ICYgb3BlcmF0b3I9KGF0b21pY19jb3VudCBjb25zdCAmKTsKLQotICAgIG11dGFibGUgX0F0b21pY193b3JkIHZhbHVlXzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9HQ0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djY194ODYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9nY2NfeDg2LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRiMWUxZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djY194ODYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9HQ0NfWDg2X0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9HQ0NfWDg2X0hQUF9JTkNMVURFRAotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9hdG9taWNfY291bnRfZ2NjX3g4Ni5ocHAKLS8vCi0vLyAgYXRvbWljX2NvdW50IGZvciBnKysgb24gNDg2Ky9BTUQ2NAotLy8KLS8vICBDb3B5cmlnaHQgMjAwNyBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIGF0b21pY19jb3VudAotewotcHVibGljOgotCi0gICAgZXhwbGljaXQgYXRvbWljX2NvdW50KCBsb25nIHYgKSA6IHZhbHVlXyggc3RhdGljX2Nhc3Q8IGludCA+KCB2ICkgKSB7fQotCi0gICAgbG9uZyBvcGVyYXRvcisrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggJnZhbHVlXywgKzEgKSArIDE7Ci0gICAgfQotCi0gICAgbG9uZyBvcGVyYXRvci0tKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggJnZhbHVlXywgLTEgKSAtIDE7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgbG9uZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoICZ2YWx1ZV8sIDAgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBhdG9taWNfY291bnQoYXRvbWljX2NvdW50IGNvbnN0ICYpOwotICAgIGF0b21pY19jb3VudCAmIG9wZXJhdG9yPShhdG9taWNfY291bnQgY29uc3QgJik7Ci0KLSAgICBtdXRhYmxlIGludCB2YWx1ZV87Ci0KLXByaXZhdGU6Ci0KLSAgICBzdGF0aWMgaW50IGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCBpbnQgKiBwdywgaW50IGR2ICkKLSAgICB7Ci0gICAgICAgIC8vIGludCByID0gKnB3OwotICAgICAgICAvLyAqcHcgKz0gZHY7Ci0gICAgICAgIC8vIHJldHVybiByOwotCi0gICAgICAgIGludCByOwotCi0gICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fCi0gICAgICAgICgKLSAgICAgICAgICAgICJsb2NrXG5cdCIKLSAgICAgICAgICAgICJ4YWRkICUxLCAlMCI6Ci0gICAgICAgICAgICAiK20iKCAqcHcgKSwgIj1yIiggciApOiAvLyBvdXRwdXRzICglMCwgJTEpCi0gICAgICAgICAgICAiMSIoIGR2ICk6IC8vIGlucHV0cyAoJTIgPT0gJTEpCi0gICAgICAgICAgICAibWVtb3J5IiwgImNjIiAvLyBjbG9iYmVycwotICAgICAgICApOwotCi0gICAgICAgIHJldHVybiByOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9HQ0NfWDg2X0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9wdGhyZWFkcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3B0aHJlYWRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYwY2JlOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3B0aHJlYWRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfUFRIUkVBRFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1BUSFJFQURTX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9hdG9taWNfY291bnRfcHRocmVhZHMuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0KLS8vCi0vLyAgVGhlIGdlbmVyaWMgcHRocmVhZF9tdXRleC1iYXNlZCBpbXBsZW1lbnRhdGlvbiBzb21ldGltZXMgbGVhZHMgdG8KLS8vICAgIGluZWZmaWNpZW5jaWVzLiBFeGFtcGxlOiBhIGNsYXNzIHdpdGggdHdvIGF0b21pY19jb3VudCBtZW1iZXJzCi0vLyAgICBjYW4gZ2V0IGF3YXkgd2l0aCBhIHNpbmdsZSBtdXRleC4KLS8vCi0vLyAgVXNlcnMgY2FuIGRldGVjdCB0aGlzIHNpdHVhdGlvbiBieSBjaGVja2luZyBORE5CT09TVF9BQ19VU0VfUFRIUkVBRFMuCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBhdG9taWNfY291bnQKLXsKLXByaXZhdGU6Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgc2NvcGVkX2xvY2socHRocmVhZF9tdXRleF90ICYgbSk6IG1fKG0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbV8pOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNjb3BlZF9sb2NrKCkKLSAgICAgICAgewotICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm1fKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLQotICAgICAgICBwdGhyZWFkX211dGV4X3QgJiBtXzsKLSAgICB9OwotCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBhdG9taWNfY291bnQobG9uZyB2KTogdmFsdWVfKHYpCi0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2luaXQoJm11dGV4XywgMCk7Ci0gICAgfQotCi0gICAgfmF0b21pY19jb3VudCgpCi0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4Xyk7Ci0gICAgfQotCi0gICAgbG9uZyBvcGVyYXRvcisrKCkKLSAgICB7Ci0gICAgICAgIHNjb3BlZF9sb2NrIGxvY2sobXV0ZXhfKTsKLSAgICAgICAgcmV0dXJuICsrdmFsdWVfOwotICAgIH0KLQotICAgIGxvbmcgb3BlcmF0b3ItLSgpCi0gICAgewotICAgICAgICBzY29wZWRfbG9jayBsb2NrKG11dGV4Xyk7Ci0gICAgICAgIHJldHVybiAtLXZhbHVlXzsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBsb25nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHNjb3BlZF9sb2NrIGxvY2sobXV0ZXhfKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlXzsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBhdG9taWNfY291bnQoYXRvbWljX2NvdW50IGNvbnN0ICYpOwotICAgIGF0b21pY19jb3VudCAmIG9wZXJhdG9yPShhdG9taWNfY291bnQgY29uc3QgJik7Ci0KLSAgICBtdXRhYmxlIHB0aHJlYWRfbXV0ZXhfdCBtdXRleF87Ci0gICAgbG9uZyB2YWx1ZV87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfUFRIUkVBRFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3N5bmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9zeW5jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUxZmE0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3N5bmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9TWU5DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9TWU5DX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9hdG9taWNfY291bnRfc3luYy5ocHAKLS8vCi0vLyAgYXRvbWljX2NvdW50IGZvciBnKysgNC4xKwotLy8KLS8vICBodHRwOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC4xLjEvZ2NjL0F0b21pYy1CdWlsdGlucy5odG1sCi0vLwotLy8gIENvcHlyaWdodCAyMDA3IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2lmIGRlZmluZWQoIF9faWE2NF9fICkgJiYgZGVmaW5lZCggX19JTlRFTF9DT01QSUxFUiApCi0jIGluY2x1ZGUgPGlhNjRpbnRyaW4uaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBhdG9taWNfY291bnQKLXsKLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IGF0b21pY19jb3VudCggbG9uZyB2ICkgOiB2YWx1ZV8oIHYgKSB7fQotCi0gICAgbG9uZyBvcGVyYXRvcisrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBfX3N5bmNfYWRkX2FuZF9mZXRjaCggJnZhbHVlXywgMSApOwotICAgIH0KLQotICAgIGxvbmcgb3BlcmF0b3ItLSgpCi0gICAgewotICAgICAgICByZXR1cm4gX19zeW5jX2FkZF9hbmRfZmV0Y2goICZ2YWx1ZV8sIC0xICk7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgbG9uZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gX19zeW5jX2ZldGNoX2FuZF9hZGQoICZ2YWx1ZV8sIDAgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBhdG9taWNfY291bnQoYXRvbWljX2NvdW50IGNvbnN0ICYpOwotICAgIGF0b21pY19jb3VudCAmIG9wZXJhdG9yPShhdG9taWNfY291bnQgY29uc3QgJik7Ci0KLSAgICBtdXRhYmxlIGxvbmcgdmFsdWVfOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1NZTkNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3dpbjMyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfd2luMzIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWMyYjE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfd2luMzIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9XSU4zMl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfV0lOMzJfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9hdG9taWNfY291bnRfd2luMzIuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMS0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIGF0b21pY19jb3VudAotewotcHVibGljOgotCi0gICAgZXhwbGljaXQgYXRvbWljX2NvdW50KCBsb25nIHYgKTogdmFsdWVfKCB2ICkKLSAgICB7Ci0gICAgfQotCi0gICAgbG9uZyBvcGVyYXRvcisrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTkNSRU1FTlQoICZ2YWx1ZV8gKTsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yLS0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0RFQ1JFTUVOVCggJnZhbHVlXyApOwotICAgIH0KLQotICAgIG9wZXJhdG9yIGxvbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgY29uc3Qgdm9sYXRpbGUgJj4oIHZhbHVlXyApOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIGF0b21pY19jb3VudCggYXRvbWljX2NvdW50IGNvbnN0ICYgKTsKLSAgICBhdG9taWNfY291bnQgJiBvcGVyYXRvcj0oIGF0b21pY19jb3VudCBjb25zdCAmICk7Ci0KLSAgICBsb25nIHZhbHVlXzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9XSU4zMl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbGlnaHR3ZWlnaHRfbXV0ZXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2FhY2Y0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTElHSFRXRUlHSFRfTVVURVhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTElHSFRXRUlHSFRfTVVURVhfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHAgLSBsaWdodHdlaWdodCBtdXRleAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIHR5cGVkZWYgPHVuc3BlY2lmaWVkPiBuZG5ib29zdDo6ZGV0YWlsOjpsaWdodHdlaWdodF9tdXRleDsKLS8vCi0vLyAgbmRuYm9vc3Q6OmRldGFpbDo6bGlnaHR3ZWlnaHRfbXV0ZXggaXMgYSBoZWFkZXItb25seSBpbXBsZW1lbnRhdGlvbiBvZgotLy8gIGEgc3Vic2V0IG9mIHRoZSBNdXRleCBjb25jZXB0IHJlcXVpcmVtZW50czoKLS8vCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvZG9jL2h0bWwvdGhyZWFkcy9jb25jZXB0cy5odG1sI3RocmVhZHMuY29uY2VwdHMuTXV0ZXgKLS8vCi0vLyAgSXQgbWFwcyB0byBhIENSSVRJQ0FMX1NFQ1RJT04gb24gV2luZG93cyBvciBhIHB0aHJlYWRfbXV0ZXggb24gUE9TSVguCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19USFJFQURTKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fbm9wLmhwcD4KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1BUSFJFQURTKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fcHRocmVhZHMuaHBwPgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfV0lOVEhSRUFEUykgfHwgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV93aW4zMl9jcy5ocHA+Ci0jZWxzZQotLy8gVXNlICNkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9USFJFQURTIHRvIGF2b2lkIHRoZSBlcnJvcgotIyAgZXJyb3IgVW5yZWNvZ25pemVkIHRocmVhZGluZyBwbGF0Zm9ybQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTElHSFRXRUlHSFRfTVVURVhfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX25vcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX25vcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZjU2Y2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9ub3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xXTV9OT1BfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX05PUF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2x3bV9ub3AuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIGxpZ2h0d2VpZ2h0X211dGV4Ci17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIGxpZ2h0d2VpZ2h0X211dGV4IHNjb3BlZF9sb2NrOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX05PUF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fcHRocmVhZHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9wdGhyZWFkcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YTYwY2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9wdGhyZWFkcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX1BUSFJFQURTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xXTV9QVEhSRUFEU19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2x3bV9wdGhyZWFkcy5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8cHRocmVhZC5oPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBsaWdodHdlaWdodF9tdXRleAotewotcHJpdmF0ZToKLQotICAgIHB0aHJlYWRfbXV0ZXhfdCBtXzsKLQotICAgIGxpZ2h0d2VpZ2h0X211dGV4KGxpZ2h0d2VpZ2h0X211dGV4IGNvbnN0ICYpOwotICAgIGxpZ2h0d2VpZ2h0X211dGV4ICYgb3BlcmF0b3I9KGxpZ2h0d2VpZ2h0X211dGV4IGNvbnN0ICYpOwotCi1wdWJsaWM6Ci0KLSAgICBsaWdodHdlaWdodF9tdXRleCgpCi0gICAgewotCi0vLyBIUFVYIDEwLjIwIC8gRENFIGhhcyBhIG5vbnN0YW5kYXJkIHB0aHJlYWRfbXV0ZXhfaW5pdAotCi0jaWYgZGVmaW5lZChfX2hwdXgpICYmIGRlZmluZWQoX0RFQ1RIUkVBRFNfKQotICAgICAgICBORE5CT09TVF9WRVJJRlkoIHB0aHJlYWRfbXV0ZXhfaW5pdCggJm1fLCBwdGhyZWFkX211dGV4YXR0cl9kZWZhdWx0ICkgPT0gMCApOwotI2Vsc2UKLSAgICAgICAgTkROQk9PU1RfVkVSSUZZKCBwdGhyZWFkX211dGV4X2luaXQoICZtXywgMCApID09IDAgKTsKLSNlbmRpZgotICAgIH0KLQotICAgIH5saWdodHdlaWdodF9tdXRleCgpCi0gICAgewotICAgICAgICBORE5CT09TVF9WRVJJRlkoIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSggJm1fICkgPT0gMCApOwotICAgIH0KLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrOwotICAgIGZyaWVuZCBjbGFzcyBzY29wZWRfbG9jazsKLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgcHRocmVhZF9tdXRleF90ICYgbV87Ci0KLSAgICAgICAgc2NvcGVkX2xvY2soc2NvcGVkX2xvY2sgY29uc3QgJik7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KHNjb3BlZF9sb2NrIGNvbnN0ICYpOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHNjb3BlZF9sb2NrKGxpZ2h0d2VpZ2h0X211dGV4ICYgbSk6IG1fKG0ubV8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1ZFUklGWSggcHRocmVhZF9tdXRleF9sb2NrKCAmbV8gKSA9PSAwICk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9WRVJJRlkoIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKSA9PSAwICk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX1BUSFJFQURTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV93aW4zMl9jcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3dpbjMyX2NzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdkZWY5OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3dpbjMyX2NzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX1dJTjMyX0NTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xXTV9XSU4zMl9DU19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2x3bV93aW4zMl9jcy5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzIFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2lmZGVmIE5ETkJPT1NUX1VTRV9XSU5ET1dTX0gKLSMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWZuZGVmIE5ETkJPT1NUX1VTRV9XSU5ET1dTX0gKLQotc3RydWN0IGNyaXRpY2FsX3NlY3Rpb24KLXsKLSAgICBzdHJ1Y3QgY3JpdGljYWxfc2VjdGlvbl9kZWJ1ZyAqIERlYnVnSW5mbzsKLSAgICBsb25nIExvY2tDb3VudDsKLSAgICBsb25nIFJlY3Vyc2lvbkNvdW50OwotICAgIHZvaWQgKiBPd25pbmdUaHJlYWQ7Ci0gICAgdm9pZCAqIExvY2tTZW1hcGhvcmU7Ci0jaWYgZGVmaW5lZChfV0lONjQpCi0gICAgdW5zaWduZWQgX19pbnQ2NCBTcGluQ291bnQ7Ci0jZWxzZQotICAgIHVuc2lnbmVkIGxvbmcgU3BpbkNvdW50OwotI2VuZGlmCi19OwotCi1leHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fc3RkY2FsbCBJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb24gKik7Ci1leHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fc3RkY2FsbCBFbnRlckNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uICopOwotZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX3N0ZGNhbGwgTGVhdmVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbiAqKTsKLWV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIERlbGV0ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uICopOwotCi0jZWxzZQotCi10eXBlZGVmIDo6Q1JJVElDQUxfU0VDVElPTiBjcml0aWNhbF9zZWN0aW9uOwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9VU0VfV0lORE9XU19ICi0KLWNsYXNzIGxpZ2h0d2VpZ2h0X211dGV4Ci17Ci1wcml2YXRlOgotCi0gICAgY3JpdGljYWxfc2VjdGlvbiBjc187Ci0KLSAgICBsaWdodHdlaWdodF9tdXRleChsaWdodHdlaWdodF9tdXRleCBjb25zdCAmKTsKLSAgICBsaWdodHdlaWdodF9tdXRleCAmIG9wZXJhdG9yPShsaWdodHdlaWdodF9tdXRleCBjb25zdCAmKTsKLQotcHVibGljOgotCi0gICAgbGlnaHR3ZWlnaHRfbXV0ZXgoKQotICAgIHsKLSAgICAgICAgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbigmY3NfKTsKLSAgICB9Ci0KLSAgICB+bGlnaHR3ZWlnaHRfbXV0ZXgoKQotICAgIHsKLSAgICAgICAgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKCZjc18pOwotICAgIH0KLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrOwotICAgIGZyaWVuZCBjbGFzcyBzY29wZWRfbG9jazsKLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgbGlnaHR3ZWlnaHRfbXV0ZXggJiBtXzsKLQotICAgICAgICBzY29wZWRfbG9jayhzY29wZWRfbG9jayBjb25zdCAmKTsKLSAgICAgICAgc2NvcGVkX2xvY2sgJiBvcGVyYXRvcj0oc2NvcGVkX2xvY2sgY29uc3QgJik7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgZXhwbGljaXQgc2NvcGVkX2xvY2sobGlnaHR3ZWlnaHRfbXV0ZXggJiBtKTogbV8obSkKLSAgICAgICAgewotICAgICAgICAgICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJm1fLmNzXyk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBMZWF2ZUNyaXRpY2FsU2VjdGlvbigmbV8uY3NfKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fV0lOMzJfQ1NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbWFrZV9hcnJheV9oZWxwZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL21ha2VfYXJyYXlfaGVscGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA1YjYwMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbWFrZV9hcnJheV9oZWxwZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR2xlbiBKb3NlcGggRmVybmFuZGVzIAotICogZ2xlbmZlIGF0IGxpdmUgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCAKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCAKLSAqIG9yIGNvcHkgYXQgaHR0cDovL2Jvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKi8KLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9NQUtFX0FSUkFZX0hFTFBFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9NQUtFX0FSUkFZX0hFTFBFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFkgPSBjaGFyPgotICAgICAgICBjbGFzcyBtYWtlX2FycmF5X2hlbHBlcjsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgWT4KLSAgICAgICAgY2xhc3MgbWFrZV9hcnJheV9oZWxwZXI8VFtdLCBZPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMiwgdHlwZW5hbWUgWTI+Ci0gICAgICAgICAgICBmcmllbmQgY2xhc3MgbWFrZV9hcnJheV9oZWxwZXI7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHR5cGVkZWYgWSAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgWSogICAgICAgICAgcG9pbnRlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgWSogICAgY29uc3RfcG9pbnRlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgWSYgICAgICAgICAgcmVmZXJlbmNlOwotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBZJiAgICBjb25zdF9yZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgcHRyZGlmZl90ICAgZGlmZmVyZW5jZV90eXBlOwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIHN0cnVjdCByZWJpbmQgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgbWFrZV9hcnJheV9oZWxwZXI8VFtdLCBVPiBvdGhlcjsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBtYWtlX2FycmF5X2hlbHBlcihzdGQ6OnNpemVfdCBzaXplXywgVCoqIGRhdGFfKQotICAgICAgICAgICAgICAgIDogc2l6ZShzaXplb2YoVCkgKiBzaXplXyksCi0gICAgICAgICAgICAgICAgICBkYXRhKGRhdGFfKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgbWFrZV9hcnJheV9oZWxwZXIoY29uc3QgbWFrZV9hcnJheV9oZWxwZXI8VFtdLCBVPiYgb3RoZXIpIAotICAgICAgICAgICAgICAgIDogc2l6ZShvdGhlci5zaXplKSwKLSAgICAgICAgICAgICAgICAgIGRhdGEob3RoZXIuZGF0YSkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhZGRyZXNzKHJlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAmdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdF9wb2ludGVyIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIHZhbHVlKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZ2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KC0xKSAvIHNpemVvZihZKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWxsb2NhdGUoc2l6ZV90eXBlIGNvdW50LCBjb25zdCB2b2lkKiA9IDApIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBhMSA9IG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gY291bnQgKiBzaXplb2YoWSkgKyBhMSAtIDE7Ci0gICAgICAgICAgICAgICAgdm9pZCogIHAxID0gOjpvcGVyYXRvciBuZXcobjEgKyBzaXplKTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDIgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocDEpICsgbjE7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHN0ZDo6c2l6ZV90KHAyKSAlIGExICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcDItLTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKmRhdGEgPSByZWludGVycHJldF9jYXN0PFQqPihwMik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICByZWludGVycHJldF9jYXN0PFkqPihwMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlYWxsb2NhdGUocG9pbnRlciBtZW1vcnksIHNpemVfdHlwZSkgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5OwotICAgICAgICAgICAgICAgIDo6b3BlcmF0b3IgZGVsZXRlKHAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgY29uc3RydWN0KHBvaW50ZXIgbWVtb3J5LCBjb25zdCBZJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5OwotICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBZKHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZGVzdHJveShwb2ludGVyIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIG1lbW9yeS0+flkoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgbWFrZV9hcnJheV9oZWxwZXI8VFtdLCBVPiYpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgbWFrZV9hcnJheV9oZWxwZXI8VFtdLCBVPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IAotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZTsKLSAgICAgICAgICAgIFQqKiBkYXRhOwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOLCB0eXBlbmFtZSBZPgotICAgICAgICBjbGFzcyBtYWtlX2FycmF5X2hlbHBlcjxUW05dLCBZPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMiwgdHlwZW5hbWUgWTI+Ci0gICAgICAgICAgICBmcmllbmQgY2xhc3MgbWFrZV9hcnJheV9oZWxwZXI7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHR5cGVkZWYgWSAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgWSogICAgICAgICAgcG9pbnRlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgWSogICAgY29uc3RfcG9pbnRlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgWSYgICAgICAgICAgcmVmZXJlbmNlOwotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBZJiAgICBjb25zdF9yZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgcHRyZGlmZl90ICAgZGlmZmVyZW5jZV90eXBlOwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIHN0cnVjdCByZWJpbmQgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgbWFrZV9hcnJheV9oZWxwZXI8VFtOXSwgVT4gb3RoZXI7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbWFrZV9hcnJheV9oZWxwZXIoVCoqIGRhdGFfKQotICAgICAgICAgICAgICAgIDogZGF0YShkYXRhXykgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgICAgIG1ha2VfYXJyYXlfaGVscGVyKGNvbnN0IG1ha2VfYXJyYXlfaGVscGVyPFRbTl0sIFU+JiBvdGhlcikgCi0gICAgICAgICAgICAgICAgOiBkYXRhKG90aGVyLmRhdGEpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJnZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAmdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigtMSkgLyBzaXplb2YoWSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludGVyIGFsbG9jYXRlKHNpemVfdHlwZSBjb3VudCwgY29uc3Qgdm9pZCogPSAwKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgYTEgPSBuZG5ib29zdDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZTsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IGNvdW50ICogc2l6ZW9mKFkpICsgYTEgLSAxOwotICAgICAgICAgICAgICAgIHZvaWQqICBwMSA9IDo6b3BlcmF0b3IgbmV3KG4xICsgTjEpOwotICAgICAgICAgICAgICAgIGNoYXIqICBwMiA9IHN0YXRpY19jYXN0PGNoYXIqPihwMSkgKyBuMTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoc3RkOjpzaXplX3QocDIpICUgYTEgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBwMi0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHAyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gIHJlaW50ZXJwcmV0X2Nhc3Q8WSo+KHAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIG1lbW9yeSwgc2l6ZV90eXBlKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnk7Ci0gICAgICAgICAgICAgICAgOjpvcGVyYXRvciBkZWxldGUocDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBjb25zdHJ1Y3QocG9pbnRlciBtZW1vcnksIGNvbnN0IFkmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFkodmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZXN0cm95KHBvaW50ZXIgbWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgbWVtb3J5LT5+WSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBtYWtlX2FycmF5X2hlbHBlcjxUW05dLCBVPiYpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgbWFrZV9hcnJheV9oZWxwZXI8VFtOXSwgVT4mIG90aGVyKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyAKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIGVudW0gewotICAgICAgICAgICAgICAgIE4xID0gTiAqIHNpemVvZihUKQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIFQqKiBkYXRhOwotICAgICAgICB9OwotICAgIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvb3BlcmF0b3JfYm9vbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvb3BlcmF0b3JfYm9vbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOWVmZjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL29wZXJhdG9yX2Jvb2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLy8gIFRoaXMgaGVhZGVyIGludGVudGlvbmFsbHkgaGFzIG5vIGluY2x1ZGUgZ3VhcmRzLgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwOSwgMjAxMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sICgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHggIT0gMDsKLSAgICB9Ci0KLSNlbGlmICggZGVmaW5lZChfX1NVTlBST19DQykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgPCAweDU3MCkgKSB8fCBkZWZpbmVkKF9fQ0lOVF9fKQotCi0gICAgb3BlcmF0b3IgYm9vbCAoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4ICE9IDA7Ci0gICAgfQotCi0jZWxpZiBkZWZpbmVkKCBfTUFOQUdFRCApCi0KLSAgICBzdGF0aWMgdm9pZCB1bnNwZWNpZmllZF9ib29sKCB0aGlzX3R5cGUqKiogKQotICAgIHsKLSAgICB9Ci0KLSAgICB0eXBlZGVmIHZvaWQgKCp1bnNwZWNpZmllZF9ib29sX3R5cGUpKCB0aGlzX3R5cGUqKiogKTsKLQotICAgIG9wZXJhdG9yIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHggPT0gMD8gMDogdW5zcGVjaWZpZWRfYm9vbDsKLSAgICB9Ci0KLSNlbGlmIFwKLSAgICAoIGRlZmluZWQoX19NV0VSS1NfXykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8IDB4MzIwMCkgKSB8fCBcCi0gICAgKCBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA8IDMwNCkgKSB8fCBcCi0gICAgKCBkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8PSAweDU5MCkgKQotCi0gICAgdHlwZWRlZiBlbGVtZW50X3R5cGUgKiAodGhpc190eXBlOjoqdW5zcGVjaWZpZWRfYm9vbF90eXBlKSgpIGNvbnN0OwotCi0gICAgb3BlcmF0b3IgdW5zcGVjaWZpZWRfYm9vbF90eXBlKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCA9PSAwPyAwOiAmdGhpc190eXBlOjpnZXQ7Ci0gICAgfQotCi0jZWxzZQotCi0gICAgdHlwZWRlZiBlbGVtZW50X3R5cGUgKiB0aGlzX3R5cGU6Oip1bnNwZWNpZmllZF9ib29sX3R5cGU7Ci0KLSAgICBvcGVyYXRvciB1bnNwZWNpZmllZF9ib29sX3R5cGUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4ID09IDA/IDA6ICZ0aGlzX3R5cGU6OnB4OwotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLyBvcGVyYXRvciEgaXMgcmVkdW5kYW50LCBidXQgc29tZSBjb21waWxlcnMgbmVlZCBpdAotICAgIGJvb2wgb3BlcmF0b3IhICgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHggPT0gMDsKLSAgICB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvcXVpY2tfYWxsb2NhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9xdWlja19hbGxvY2F0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmYwNjY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9xdWlja19hbGxvY2F0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9RVUlDS19BTExPQ0FUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfUVVJQ0tfQUxMT0NBVE9SX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvcXVpY2tfYWxsb2NhdG9yLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDMgRGF2aWQgQWJyYWhhbXMKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDMgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbGlnaHR3ZWlnaHRfbXV0ZXguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZXc+ICAgICAgICAgICAgICAvLyA6Om9wZXJhdG9yIG5ldywgOjpvcGVyYXRvciBkZWxldGUKLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAvLyBzdGQ6OnNpemVfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi10ZW1wbGF0ZTx1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBhbGlnbl8+IHVuaW9uIGZyZWVibG9jawotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfd2l0aF9hbGlnbm1lbnQ8YWxpZ25fPjo6dHlwZSBhbGlnbmVyX3R5cGU7Ci0gICAgYWxpZ25lcl90eXBlIGFsaWduZXI7Ci0gICAgY2hhciBieXRlc1tzaXplXTsKLSAgICBmcmVlYmxvY2sgKiBuZXh0OwotfTsKLQotdGVtcGxhdGU8dW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgYWxpZ25fPiBzdHJ1Y3QgYWxsb2NhdG9yX2ltcGwKLXsKLSAgICB0eXBlZGVmIGZyZWVibG9jazxzaXplLCBhbGlnbl8+IGJsb2NrOwotCi0gICAgLy8gSXQgbWF5IHNlZW0gb2RkIHRvIHVzZSBzdWNoIHNtYWxsIHBhZ2VzLgotICAgIC8vCi0gICAgLy8gSG93ZXZlciwgb24gYSB0eXBpY2FsIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gdGhhdCB1c2VzCi0gICAgLy8gdGhlIE9TIGFsbG9jYXRvciwgIm5vcm1hbCBzaXplIiBwYWdlcyBpbnRlcmFjdCB3aXRoIHRoZQotICAgIC8vICJvcmRpbmFyeSIgb3BlcmF0b3IgbmV3LCBzbG93aW5nIGl0IGRvd24gZHJhbWF0aWNhbGx5LgotICAgIC8vCi0gICAgLy8gNTEyIGJ5dGUgcGFnZXMgYXJlIGhhbmRsZWQgYnkgdGhlIHNtYWxsIG9iamVjdCBhbGxvY2F0b3IsCi0gICAgLy8gYW5kIGRvbid0IGludGVyZmVyZSB3aXRoIDo6bmV3LgotICAgIC8vCi0gICAgLy8gVGhlIG90aGVyIGFsdGVybmF0aXZlIGlzIHRvIHVzZSBtdWNoIGJpZ2dlciBwYWdlcyAoMU0uKQotICAgIC8vCi0gICAgLy8gSXQgaXMgc3VycHJpc2luZ2x5IGVhc3kgdG8gaGl0IHBhdGhvbG9naWNhbCBiZWhhdmlvciBieQotICAgIC8vIHZhcnlpbmcgdGhlIHBhZ2Ugc2l6ZS4gZysrIDIuOTYgb24gUmVkIEhhdCBMaW51eCA3LjIsCi0gICAgLy8gZm9yIGV4YW1wbGUsIHBhc3Npb25hdGVseSBkaXNsaWtlcyA0OTYuIDUxMiBzZWVtcyBPSy4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUUFfUEFHRV9TSVpFKQotCi0gICAgZW51bSB7IGl0ZW1zX3Blcl9wYWdlID0gTkROQk9PU1RfUUFfUEFHRV9TSVpFIC8gc2l6ZSB9OwotCi0jZWxzZQotCi0gICAgZW51bSB7IGl0ZW1zX3Blcl9wYWdlID0gNTEyIC8gc2l6ZSB9OyAvLyAxMDQ4NTYwIC8gc2l6ZQotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0KLSAgICBzdGF0aWMgbGlnaHR3ZWlnaHRfbXV0ZXggJiBtdXRleCgpCi0gICAgewotICAgICAgICBzdGF0aWMgZnJlZWJsb2NrPCBzaXplb2YoIGxpZ2h0d2VpZ2h0X211dGV4ICksIG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8IGxpZ2h0d2VpZ2h0X211dGV4ID46OnZhbHVlID4gZmJtOwotICAgICAgICBzdGF0aWMgbGlnaHR3ZWlnaHRfbXV0ZXggKiBwbSA9IG5ldyggJmZibSApIGxpZ2h0d2VpZ2h0X211dGV4OwotICAgICAgICByZXR1cm4gKnBtOwotICAgIH0KLQotICAgIHN0YXRpYyBsaWdodHdlaWdodF9tdXRleCAqIG11dGV4X2luaXQ7Ci0KLSNlbmRpZgotCi0gICAgc3RhdGljIGJsb2NrICogZnJlZTsKLSAgICBzdGF0aWMgYmxvY2sgKiBwYWdlOwotICAgIHN0YXRpYyB1bnNpZ25lZCBsYXN0OwotCi0gICAgc3RhdGljIGlubGluZSB2b2lkICogYWxsb2MoKQotICAgIHsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgICAgICBsaWdodHdlaWdodF9tdXRleDo6c2NvcGVkX2xvY2sgbG9jayggbXV0ZXgoKSApOwotI2VuZGlmCi0gICAgICAgIGlmKGJsb2NrICogeCA9IGZyZWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZyZWUgPSB4LT5uZXh0OwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZihsYXN0ID09IGl0ZW1zX3Blcl9wYWdlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vICJMaXN0ZW4gdG8gbWUgY2FyZWZ1bGx5OiB0aGVyZSBpcyBubyBtZW1vcnkgbGVhayIKLSAgICAgICAgICAgICAgICAvLyAtLSBTY290dCBNZXllcnMsIEVmZiBDKysgMm5kIEVkIEl0ZW0gMTAKLSAgICAgICAgICAgICAgICBwYWdlID0gOjpuZXcgYmxvY2tbaXRlbXNfcGVyX3BhZ2VdOwotICAgICAgICAgICAgICAgIGxhc3QgPSAwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gJnBhZ2VbbGFzdCsrXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCAqIGFsbG9jKHN0ZDo6c2l6ZV90IG4pCi0gICAgewotICAgICAgICBpZihuICE9IHNpemUpIC8vIGNsYXNzLXNwZWNpZmljIG5ldyBjYWxsZWQgZm9yIGEgZGVyaXZlZCBvYmplY3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6b3BlcmF0b3IgbmV3KG4pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICAgICAgICAgICBsaWdodHdlaWdodF9tdXRleDo6c2NvcGVkX2xvY2sgbG9jayggbXV0ZXgoKSApOwotI2VuZGlmCi0gICAgICAgICAgICBpZihibG9jayAqIHggPSBmcmVlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZyZWUgPSB4LT5uZXh0OwotICAgICAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmKGxhc3QgPT0gaXRlbXNfcGVyX3BhZ2UpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBwYWdlID0gOjpuZXcgYmxvY2tbaXRlbXNfcGVyX3BhZ2VdOwotICAgICAgICAgICAgICAgICAgICBsYXN0ID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gJnBhZ2VbbGFzdCsrXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBkZWFsbG9jKHZvaWQgKiBwdikKLSAgICB7Ci0gICAgICAgIGlmKHB2ICE9IDApIC8vIDE4LjQuMS4xLzEzCi0gICAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgICAgICAgICAgbGlnaHR3ZWlnaHRfbXV0ZXg6OnNjb3BlZF9sb2NrIGxvY2soIG11dGV4KCkgKTsKLSNlbmRpZgotICAgICAgICAgICAgYmxvY2sgKiBwYiA9IHN0YXRpY19jYXN0PGJsb2NrICo+KHB2KTsKLSAgICAgICAgICAgIHBiLT5uZXh0ID0gZnJlZTsKLSAgICAgICAgICAgIGZyZWUgPSBwYjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBkZWFsbG9jKHZvaWQgKiBwdiwgc3RkOjpzaXplX3QgbikKLSAgICB7Ci0gICAgICAgIGlmKG4gIT0gc2l6ZSkgLy8gY2xhc3Mtc3BlY2lmaWMgZGVsZXRlIGNhbGxlZCBmb3IgYSBkZXJpdmVkIG9iamVjdAotICAgICAgICB7Ci0gICAgICAgICAgICA6Om9wZXJhdG9yIGRlbGV0ZShwdik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihwdiAhPSAwKSAvLyAxOC40LjEuMS8xMwotICAgICAgICB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgICAgICAgICAgIGxpZ2h0d2VpZ2h0X211dGV4OjpzY29wZWRfbG9jayBsb2NrKCBtdXRleCgpICk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJsb2NrICogcGIgPSBzdGF0aWNfY2FzdDxibG9jayAqPihwdik7Ci0gICAgICAgICAgICBwYi0+bmV4dCA9IGZyZWU7Ci0gICAgICAgICAgICBmcmVlID0gcGI7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLQotdGVtcGxhdGU8dW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgYWxpZ25fPgotICBsaWdodHdlaWdodF9tdXRleCAqIGFsbG9jYXRvcl9pbXBsPHNpemUsIGFsaWduXz46Om11dGV4X2luaXQgPSAmYWxsb2NhdG9yX2ltcGw8c2l6ZSwgYWxpZ25fPjo6bXV0ZXgoKTsKLQotI2VuZGlmCi0KLXRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGFsaWduXz4KLSAgZnJlZWJsb2NrPHNpemUsIGFsaWduXz4gKiBhbGxvY2F0b3JfaW1wbDxzaXplLCBhbGlnbl8+OjpmcmVlID0gMDsKLQotdGVtcGxhdGU8dW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgYWxpZ25fPgotICBmcmVlYmxvY2s8c2l6ZSwgYWxpZ25fPiAqIGFsbG9jYXRvcl9pbXBsPHNpemUsIGFsaWduXz46OnBhZ2UgPSAwOwotCi10ZW1wbGF0ZTx1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBhbGlnbl8+Ci0gIHVuc2lnbmVkIGFsbG9jYXRvcl9pbXBsPHNpemUsIGFsaWduXz46Omxhc3QgPSBhbGxvY2F0b3JfaW1wbDxzaXplLCBhbGlnbl8+OjppdGVtc19wZXJfcGFnZTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBxdWlja19hbGxvY2F0b3I6IHB1YmxpYyBhbGxvY2F0b3JfaW1wbDwgc2l6ZW9mKFQpLCBuZG5ib29zdDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZSA+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfUVVJQ0tfQUxMT0NBVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9hcnJheV9ubXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9hcnJheV9ubXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTk3NjM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfYXJyYXlfbm10LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX0FSUkFZX05NVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfQVJSQVlfTk1UX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIGRldGFpbC9zaGFyZWRfYXJyYXlfbm10LmhwcCAtIHNoYXJlZF9hcnJheS5ocHAgd2l0aG91dCBtZW1iZXIgdGVtcGxhdGVzCi0vLwotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2hhcmVkX2FycmF5Lmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcD4KLQotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgIC8vIGZvciBzdGQ6OnB0cmRpZmZfdAotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgIC8vIGZvciBzdGQ6OnN3YXAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPiAgICAgICAvLyBmb3Igc3RkOjpsZXNzCi0jaW5jbHVkZSA8bmV3PiAgICAgICAgICAgICAgLy8gZm9yIHN0ZDo6YmFkX2FsbG9jCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBzaGFyZWRfYXJyYXkKLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIGRldGFpbDo6YXRvbWljX2NvdW50IGNvdW50X3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgVCBlbGVtZW50X3R5cGU7Ci0gICAgICAKLSAgICBleHBsaWNpdCBzaGFyZWRfYXJyYXkoVCAqIHAgPSAwKTogcHgocCkKLSAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICB0cnkgIC8vIHByZXZlbnQgbGVhayBpZiBuZXcgdGhyb3dzCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBuID0gbmV3IGNvdW50X3R5cGUoMSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9hcnJheV9kZWxldGUocCk7Ci0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgfQotCi0jZWxzZQotCi0gICAgICAgIHBuID0gbmV3IGNvdW50X3R5cGUoMSk7Ci0KLSAgICAgICAgaWYocG4gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfYXJyYXlfZGVsZXRlKHApOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6OmJhZF9hbGxvYygpKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLSAgICB9Ci0KLSAgICB+c2hhcmVkX2FycmF5KCkKLSAgICB7Ci0gICAgICAgIGlmKC0tKnBuID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2FycmF5X2RlbGV0ZShweCk7Ci0gICAgICAgICAgICBkZWxldGUgcG47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzaGFyZWRfYXJyYXkoc2hhcmVkX2FycmF5IGNvbnN0ICYgcikgOiBweChyLnB4KSAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBwbiA9IHIucG47Ci0gICAgICAgICsrKnBuOwotICAgIH0KLQotICAgIHNoYXJlZF9hcnJheSAmIG9wZXJhdG9yPShzaGFyZWRfYXJyYXkgY29uc3QgJiByKQotICAgIHsKLSAgICAgICAgc2hhcmVkX2FycmF5KHIpLnN3YXAoKnRoaXMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdm9pZCByZXNldChUICogcCA9IDApCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQocCA9PSAwIHx8IHAgIT0gcHgpOwotICAgICAgICBzaGFyZWRfYXJyYXkocCkuc3dhcCgqdGhpcyk7Ci0gICAgfQotCi0gICAgVCAqIGdldCgpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBweDsKLSAgICB9Ci0KLSAgICBUICYgb3BlcmF0b3JbXShzdGQ6OnB0cmRpZmZfdCBpKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQocHggIT0gMCk7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChpID49IDApOwotICAgICAgICByZXR1cm4gcHhbaV07Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICByZXR1cm4gKnBuOwotICAgIH0KLQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgcmV0dXJuICpwbiA9PSAxOwotICAgIH0KLQotICAgIHZvaWQgc3dhcChzaGFyZWRfYXJyYXk8VD4gJiBvdGhlcikgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgc3RkOjpzd2FwKHB4LCBvdGhlci5weCk7Ci0gICAgICAgIHN0ZDo6c3dhcChwbiwgb3RoZXIucG4pOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIFQgKiBweDsgICAgICAgICAgICAvLyBjb250YWluZWQgcG9pbnRlcgotICAgIGNvdW50X3R5cGUgKiBwbjsgICAvLyBwdHIgdG8gcmVmZXJlbmNlIGNvdW50ZXIKLSAgICAgIAotfTsgIC8vIHNoYXJlZF9hcnJheQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGEsIHNoYXJlZF9hcnJheTxVPiBjb25zdCAmIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBhLCBzaGFyZWRfYXJyYXk8VT4gY29uc3QgJiBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPChzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBhLCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBiKQotewotICAgIHJldHVybiBzdGQ6Omxlc3M8VCo+KCkoYS5nZXQoKSwgYi5nZXQoKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgc3dhcChzaGFyZWRfYXJyYXk8VD4gJiBhLCBzaGFyZWRfYXJyYXk8VD4gJiBiKQotewotICAgIGEuc3dhcChiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX0FSUkFZX05NVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfY291bnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9jb3VudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViYTcxOTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9jb3VudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MDMgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9DT1VOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfQ09VTlRfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zaGFyZWRfY291bnQuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jIHByYWdtYSB3YXJuIC04MDI3ICAgICAvLyBGdW5jdGlvbnMgY29udGFpbmluZyB0cnkgYXJlIG5vdCBleHBhbmRlZCBpbmxpbmUKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvYmFkX3dlYWtfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLS8vIEluIG9yZGVyIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB3aXRoIEJvb3N0LlRSMQotLy8gd2UgbWFrZSBzdXJlIHRoYXQgb3VyIGluY2x1ZGUgb2YgPG1lbW9yeT4gZG9lc24ndCB0cnkgdG8KLS8vIHB1bGwgaW4gdGhlIFRSMSBoZWFkZXJzOiB0aGF0J3Mgd2h5IHdlIHVzZSB0aGlzIGhlYWRlciAKLS8vIHJhdGhlciB0aGFuIGluY2x1ZGluZyA8bWVtb3J5PiBkaXJlY3RseToKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL21lbW9yeS5ocHA+ICAvLyBzdGQ6OmF1dG9fcHRyCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4gICAgICAgLy8gc3RkOjpsZXNzCi0KLSNpZmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0jIGluY2x1ZGUgPG5ldz4gICAgICAgICAgICAgIC8vIHN0ZDo6YmFkX2FsbG9jCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIgKQotIyBpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotCi1pbnQgY29uc3Qgc2hhcmVkX2NvdW50X2lkID0gMHgyQzM1RjEwMTsKLWludCBjb25zdCAgIHdlYWtfY291bnRfaWQgPSAweDI5OEMzOEE0OwotCi0jZW5kaWYKLQotc3RydWN0IHNwX25vdGhyb3dfdGFnIHt9OwotCi10ZW1wbGF0ZTwgY2xhc3MgRCA+IHN0cnVjdCBzcF9pbnBsYWNlX3RhZwotewotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIgKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IGNsYXNzIHNwX3JlZmVyZW5jZV93cmFwcGVyCi17IAotcHVibGljOgotCi0gICAgZXhwbGljaXQgc3BfcmVmZXJlbmNlX3dyYXBwZXIoIFQgJiB0KTogdF8oIG5kbmJvb3N0OjphZGRyZXNzb2YoIHQgKSApCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBZID4gdm9pZCBvcGVyYXRvcigpKCBZICogcCApIGNvbnN0Ci0gICAgewotICAgICAgICAoKnRfKSggcCApOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIFQgKiB0XzsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBEID4gc3RydWN0IHNwX2NvbnZlcnRfcmVmZXJlbmNlCi17Ci0gICAgdHlwZWRlZiBEIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgRCA+IHN0cnVjdCBzcF9jb252ZXJ0X3JlZmVyZW5jZTwgRCYgPgotewotICAgIHR5cGVkZWYgc3BfcmVmZXJlbmNlX3dyYXBwZXI8IEQgPiB0eXBlOwotfTsKLQotI2VuZGlmCi0KLWNsYXNzIHdlYWtfY291bnQ7Ci0KLWNsYXNzIHNoYXJlZF9jb3VudAotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSAqIHBpXzsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgIGludCBpZF87Ci0jZW5kaWYKLQotICAgIGZyaWVuZCBjbGFzcyB3ZWFrX2NvdW50OwotCi1wdWJsaWM6Ci0KLSAgICBzaGFyZWRfY291bnQoKTogcGlfKDApIC8vIG5vdGhyb3cKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGV4cGxpY2l0IHNoYXJlZF9jb3VudCggWSAqIHAgKTogcGlfKCAwICkKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHBpXyA9IG5ldyBzcF9jb3VudGVkX2ltcGxfcDxZPiggcCApOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfZGVsZXRlKCBwICk7Ci0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgfQotCi0jZWxzZQotCi0gICAgICAgIHBpXyA9IG5ldyBzcF9jb3VudGVkX2ltcGxfcDxZPiggcCApOwotCi0gICAgICAgIGlmKCBwaV8gPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2RlbGV0ZSggcCApOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbiggc3RkOjpiYWRfYWxsb2MoKSApOwotICAgICAgICB9Ci0KLSNlbmRpZgotICAgIH0KLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX01TVkMgKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8PSAxMjAwICkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBEPiBzaGFyZWRfY291bnQoIFkgKiBwLCBEIGQgKTogcGlfKDApCi0jZWxzZQotICAgIHRlbXBsYXRlPGNsYXNzIFAsIGNsYXNzIEQ+IHNoYXJlZF9jb3VudCggUCBwLCBEIGQgKTogcGlfKDApCi0jZW5kaWYKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotI2lmIGRlZmluZWQoIE5ETkJPT1NUX01TVkMgKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8PSAxMjAwICkKLSAgICAgICAgdHlwZWRlZiBZKiBQOwotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wZDxQLCBEPihwLCBkKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCguLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGQocCk7IC8vIGRlbGV0ZSBwCi0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgfQotCi0jZWxzZQotCi0gICAgICAgIHBpXyA9IG5ldyBzcF9jb3VudGVkX2ltcGxfcGQ8UCwgRD4ocCwgZCk7Ci0KLSAgICAgICAgaWYocGlfID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGQocCk7IC8vIGRlbGV0ZSBwCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6YmFkX2FsbG9jKCkpOwotICAgICAgICB9Ci0KLSNlbmRpZgotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORyApCi0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgUCwgY2xhc3MgRCA+IHNoYXJlZF9jb3VudCggUCBwLCBzcF9pbnBsYWNlX3RhZzxEPiApOiBwaV8oIDAgKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wZDwgUCwgRCA+KCBwICk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goIC4uLiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEQ6Om9wZXJhdG9yX2ZuKCBwICk7IC8vIGRlbGV0ZSBwCi0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgfQotCi0jZWxzZQotCi0gICAgICAgIHBpXyA9IG5ldyBzcF9jb3VudGVkX2ltcGxfcGQ8IFAsIEQgPiggcCApOwotCi0gICAgICAgIGlmKCBwaV8gPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEQ6Om9wZXJhdG9yX2ZuKCBwICk7IC8vIGRlbGV0ZSBwCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKCBzdGQ6OmJhZF9hbGxvYygpICk7Ci0gICAgICAgIH0KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgIH0KLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORyApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBQLCBjbGFzcyBELCBjbGFzcyBBPiBzaGFyZWRfY291bnQoIFAgcCwgRCBkLCBBIGEgKTogcGlfKCAwICkKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICB0eXBlZGVmIHNwX2NvdW50ZWRfaW1wbF9wZGE8UCwgRCwgQT4gaW1wbF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEE6OnRlbXBsYXRlIHJlYmluZDwgaW1wbF90eXBlID46Om90aGVyIEEyOwotCi0gICAgICAgIEEyIGEyKCBhICk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgICBwaV8gPSBhMi5hbGxvY2F0ZSggMSwgc3RhdGljX2Nhc3Q8IGltcGxfdHlwZSogPiggMCApICk7Ci0gICAgICAgICAgICBuZXcoIHN0YXRpY19jYXN0PCB2b2lkKiA+KCBwaV8gKSApIGltcGxfdHlwZSggcCwgZCwgYSApOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgZCggcCApOwotCi0gICAgICAgICAgICBpZiggcGlfICE9IDAgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGEyLmRlYWxsb2NhdGUoIHN0YXRpY19jYXN0PCBpbXBsX3R5cGUqID4oIHBpXyApLCAxICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcGlfID0gYTIuYWxsb2NhdGUoIDEsIHN0YXRpY19jYXN0PCBpbXBsX3R5cGUqID4oIDAgKSApOwotCi0gICAgICAgIGlmKCBwaV8gIT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldyggc3RhdGljX2Nhc3Q8IHZvaWQqID4oIHBpXyApICkgaW1wbF90eXBlKCBwLCBkLCBhICk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBkKCBwICk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKCBzdGQ6OmJhZF9hbGxvYygpICk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HICkKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBQLCBjbGFzcyBELCBjbGFzcyBBID4gc2hhcmVkX2NvdW50KCBQIHAsIHNwX2lucGxhY2VfdGFnPCBEID4sIEEgYSApOiBwaV8oIDAgKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgc3BfY291bnRlZF9pbXBsX3BkYTwgUCwgRCwgQSA+IGltcGxfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8IGltcGxfdHlwZSA+OjpvdGhlciBBMjsKLQotICAgICAgICBBMiBhMiggYSApOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgICAgcGlfID0gYTIuYWxsb2NhdGUoIDEsIHN0YXRpY19jYXN0PCBpbXBsX3R5cGUqID4oIDAgKSApOwotICAgICAgICAgICAgbmV3KCBzdGF0aWNfY2FzdDwgdm9pZCogPiggcGlfICkgKSBpbXBsX3R5cGUoIHAsIGEgKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCguLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIEQ6Om9wZXJhdG9yX2ZuKCBwICk7Ci0KLSAgICAgICAgICAgIGlmKCBwaV8gIT0gMCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYTIuZGVhbGxvY2F0ZSggc3RhdGljX2Nhc3Q8IGltcGxfdHlwZSogPiggcGlfICksIDEgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgIH0KLQotI2Vsc2UKLQotICAgICAgICBwaV8gPSBhMi5hbGxvY2F0ZSggMSwgc3RhdGljX2Nhc3Q8IGltcGxfdHlwZSogPiggMCApICk7Ci0KLSAgICAgICAgaWYoIHBpXyAhPSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgbmV3KCBzdGF0aWNfY2FzdDwgdm9pZCogPiggcGlfICkgKSBpbXBsX3R5cGUoIHAsIGEgKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIEQ6Om9wZXJhdG9yX2ZuKCBwICk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKCBzdGQ6OmJhZF9hbGxvYygpICk7Ci0gICAgICAgIH0KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgIH0KLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORyApCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVVUT19QVFIKLQotICAgIC8vIGF1dG9fcHRyPFk+IGlzIHNwZWNpYWwgY2FzZWQgdG8gcHJvdmlkZSB0aGUgc3Ryb25nIGd1YXJhbnRlZQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBleHBsaWNpdCBzaGFyZWRfY291bnQoIHN0ZDo6YXV0b19wdHI8WT4gJiByICk6IHBpXyggbmV3IHNwX2NvdW50ZWRfaW1wbF9wPFk+KCByLmdldCgpICkgKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0jaWZkZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIGlmKCBwaV8gPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpiYWRfYWxsb2MoKSk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0KLSAgICAgICAgci5yZWxlYXNlKCk7Ci0gICAgfQotCi0jZW5kaWYgCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQ+Ci0gICAgZXhwbGljaXQgc2hhcmVkX2NvdW50KCBzdGQ6OnVuaXF1ZV9wdHI8WSwgRD4gJiByICk6IHBpXyggMCApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzcF9jb252ZXJ0X3JlZmVyZW5jZTxEPjo6dHlwZSBEMjsKLQotICAgICAgICBEMiBkMiggci5nZXRfZGVsZXRlcigpICk7Ci0gICAgICAgIHBpXyA9IG5ldyBzcF9jb3VudGVkX2ltcGxfcGQ8IHR5cGVuYW1lIHN0ZDo6dW5pcXVlX3B0cjxZLCBEPjo6cG9pbnRlciwgRDIgPiggci5nZXQoKSwgZDIgKTsKLQotI2lmZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICBpZiggcGlfID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKCBzdGQ6OmJhZF9hbGxvYygpICk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0KLSAgICAgICAgci5yZWxlYXNlKCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIH5zaGFyZWRfY291bnQoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggcGlfICE9IDAgKSBwaV8tPnJlbGVhc2UoKTsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgaWRfID0gMDsKLSNlbmRpZgotICAgIH0KLQotICAgIHNoYXJlZF9jb3VudChzaGFyZWRfY291bnQgY29uc3QgJiByKTogcGlfKHIucGlfKSAvLyBub3Rocm93Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgaWYoIHBpXyAhPSAwICkgcGlfLT5hZGRfcmVmX2NvcHkoKTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgc2hhcmVkX2NvdW50KHNoYXJlZF9jb3VudCAmJiByKTogcGlfKHIucGlfKSAvLyBub3Rocm93Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgci5waV8gPSAwOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBleHBsaWNpdCBzaGFyZWRfY291bnQod2Vha19jb3VudCBjb25zdCAmIHIpOyAvLyB0aHJvd3MgYmFkX3dlYWtfcHRyIHdoZW4gci51c2VfY291bnQoKSA9PSAwCi0gICAgc2hhcmVkX2NvdW50KCB3ZWFrX2NvdW50IGNvbnN0ICYgciwgc3Bfbm90aHJvd190YWcgKTsgLy8gY29uc3RydWN0cyBhbiBlbXB0eSAqdGhpcyB3aGVuIHIudXNlX2NvdW50KCkgPT0gMAotCi0gICAgc2hhcmVkX2NvdW50ICYgb3BlcmF0b3I9IChzaGFyZWRfY291bnQgY29uc3QgJiByKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBzcF9jb3VudGVkX2Jhc2UgKiB0bXAgPSByLnBpXzsKLQotICAgICAgICBpZiggdG1wICE9IHBpXyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKCB0bXAgIT0gMCApIHRtcC0+YWRkX3JlZl9jb3B5KCk7Ci0gICAgICAgICAgICBpZiggcGlfICE9IDAgKSBwaV8tPnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHBpXyA9IHRtcDsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoc2hhcmVkX2NvdW50ICYgcikgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgc3BfY291bnRlZF9iYXNlICogdG1wID0gci5waV87Ci0gICAgICAgIHIucGlfID0gcGlfOwotICAgICAgICBwaV8gPSB0bXA7Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gcGlfICE9IDA/IHBpXy0+dXNlX2NvdW50KCk6IDA7Ci0gICAgfQotCi0gICAgYm9vbCB1bmlxdWUoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gdXNlX2NvdW50KCkgPT0gMTsKLSAgICB9Ci0KLSAgICBib29sIGVtcHR5KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHBpXyA9PSAwOwotICAgIH0KLQotICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KHNoYXJlZF9jb3VudCBjb25zdCAmIGEsIHNoYXJlZF9jb3VudCBjb25zdCAmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5waV8gPT0gYi5waV87Ci0gICAgfQotCi0gICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPChzaGFyZWRfY291bnQgY29uc3QgJiBhLCBzaGFyZWRfY291bnQgY29uc3QgJiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bGVzczxzcF9jb3VudGVkX2Jhc2UgKj4oKSggYS5waV8sIGIucGlfICk7Ci0gICAgfQotCi0gICAgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwaV8/IHBpXy0+Z2V0X2RlbGV0ZXIoIHRpICk6IDA7Ci0gICAgfQotCi0gICAgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBpXz8gcGlfLT5nZXRfdW50eXBlZF9kZWxldGVyKCk6IDA7Ci0gICAgfQotfTsKLQotCi1jbGFzcyB3ZWFrX2NvdW50Ci17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlICogcGlfOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgaW50IGlkXzsKLSNlbmRpZgotCi0gICAgZnJpZW5kIGNsYXNzIHNoYXJlZF9jb3VudDsKLQotcHVibGljOgotCi0gICAgd2Vha19jb3VudCgpOiBwaV8oMCkgLy8gbm90aHJvdwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyh3ZWFrX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgIH0KLQotICAgIHdlYWtfY291bnQoc2hhcmVkX2NvdW50IGNvbnN0ICYgcik6IHBpXyhyLnBpXykgLy8gbm90aHJvdwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyh3ZWFrX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICBpZihwaV8gIT0gMCkgcGlfLT53ZWFrX2FkZF9yZWYoKTsKLSAgICB9Ci0KLSAgICB3ZWFrX2NvdW50KHdlYWtfY291bnQgY29uc3QgJiByKTogcGlfKHIucGlfKSAvLyBub3Rocm93Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHdlYWtfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIGlmKHBpXyAhPSAwKSBwaV8tPndlYWtfYWRkX3JlZigpOwotICAgIH0KLQotLy8gTW92ZSBzdXBwb3J0Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgd2Vha19jb3VudCh3ZWFrX2NvdW50ICYmIHIpOiBwaV8oci5waV8pIC8vIG5vdGhyb3cKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8od2Vha19jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgci5waV8gPSAwOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB+d2Vha19jb3VudCgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKHBpXyAhPSAwKSBwaV8tPndlYWtfcmVsZWFzZSgpOwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBpZF8gPSAwOwotI2VuZGlmCi0gICAgfQotCi0gICAgd2Vha19jb3VudCAmIG9wZXJhdG9yPSAoc2hhcmVkX2NvdW50IGNvbnN0ICYgcikgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgc3BfY291bnRlZF9iYXNlICogdG1wID0gci5waV87Ci0KLSAgICAgICAgaWYoIHRtcCAhPSBwaV8gKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZih0bXAgIT0gMCkgdG1wLT53ZWFrX2FkZF9yZWYoKTsKLSAgICAgICAgICAgIGlmKHBpXyAhPSAwKSBwaV8tPndlYWtfcmVsZWFzZSgpOwotICAgICAgICAgICAgcGlfID0gdG1wOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHdlYWtfY291bnQgJiBvcGVyYXRvcj0gKHdlYWtfY291bnQgY29uc3QgJiByKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBzcF9jb3VudGVkX2Jhc2UgKiB0bXAgPSByLnBpXzsKLQotICAgICAgICBpZiggdG1wICE9IHBpXyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKHRtcCAhPSAwKSB0bXAtPndlYWtfYWRkX3JlZigpOwotICAgICAgICAgICAgaWYocGlfICE9IDApIHBpXy0+d2Vha19yZWxlYXNlKCk7Ci0gICAgICAgICAgICBwaV8gPSB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKHdlYWtfY291bnQgJiByKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBzcF9jb3VudGVkX2Jhc2UgKiB0bXAgPSByLnBpXzsKLSAgICAgICAgci5waV8gPSBwaV87Ci0gICAgICAgIHBpXyA9IHRtcDsKLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBwaV8gIT0gMD8gcGlfLT51c2VfY291bnQoKTogMDsKLSAgICB9Ci0KLSAgICBib29sIGVtcHR5KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHBpXyA9PSAwOwotICAgIH0KLQotICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KHdlYWtfY291bnQgY29uc3QgJiBhLCB3ZWFrX2NvdW50IGNvbnN0ICYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLnBpXyA9PSBiLnBpXzsKLSAgICB9Ci0KLSAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I8KHdlYWtfY291bnQgY29uc3QgJiBhLCB3ZWFrX2NvdW50IGNvbnN0ICYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Omxlc3M8c3BfY291bnRlZF9iYXNlICo+KCkoYS5waV8sIGIucGlfKTsKLSAgICB9Ci19OwotCi1pbmxpbmUgc2hhcmVkX2NvdW50OjpzaGFyZWRfY291bnQoIHdlYWtfY291bnQgY29uc3QgJiByICk6IHBpXyggci5waV8gKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLXsKLSAgICBpZiggcGlfID09IDAgfHwgIXBpXy0+YWRkX3JlZl9sb2NrKCkgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbiggbmRuYm9vc3Q6OmJhZF93ZWFrX3B0cigpICk7Ci0gICAgfQotfQotCi1pbmxpbmUgc2hhcmVkX2NvdW50OjpzaGFyZWRfY291bnQoIHdlYWtfY291bnQgY29uc3QgJiByLCBzcF9ub3Rocm93X3RhZyApOiBwaV8oIHIucGlfICkKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi17Ci0gICAgaWYoIHBpXyAhPSAwICYmICFwaV8tPmFkZF9yZWZfbG9jaygpICkKLSAgICB7Ci0gICAgICAgIHBpXyA9IDA7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIF9fQk9STEFORENfXwotIyBwcmFnbWEgd2FybiAuODAyNyAgICAgLy8gRnVuY3Rpb25zIGNvbnRhaW5pbmcgdHJ5IGFyZSBub3QgZXhwYW5kZWQgaW5saW5lCi0jZW5kaWYKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX0NPVU5UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9wdHJfbm10LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfcHRyX25tdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MzY4YjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9wdHJfbm10LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX1BUUl9OTVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX1BUUl9OTVRfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgZGV0YWlsL3NoYXJlZF9wdHJfbm10LmhwcCAtIHNoYXJlZF9wdHIuaHBwIHdpdGhvdXQgbWVtYmVyIHRlbXBsYXRlcwotLy8KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0jIGluY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgLy8gZm9yIHN0ZDo6YXV0b19wdHIKLSNlbmRpZgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgLy8gZm9yIHN0ZDo6c3dhcAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+ICAgICAgIC8vIGZvciBzdGQ6Omxlc3MKLSNpbmNsdWRlIDxuZXc+ICAgICAgICAgICAgICAvLyBmb3Igc3RkOjpiYWRfYWxsb2MKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHNoYXJlZF9wdHIKLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIGRldGFpbDo6YXRvbWljX2NvdW50IGNvdW50X3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgVCBlbGVtZW50X3R5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0KLSAgICBleHBsaWNpdCBzaGFyZWRfcHRyKFQgKiBwID0gMCk6IHB4KHApCi0gICAgewotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgdHJ5ICAvLyBwcmV2ZW50IGxlYWsgaWYgbmV3IHRocm93cwotICAgICAgICB7Ci0gICAgICAgICAgICBwbiA9IG5ldyBjb3VudF90eXBlKDEpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfZGVsZXRlKHApOwotICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgIH0KLQotI2Vsc2UKLQotICAgICAgICBwbiA9IG5ldyBjb3VudF90eXBlKDEpOwotCi0gICAgICAgIGlmKHBuID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2RlbGV0ZShwKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpiYWRfYWxsb2MoKSk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0gICAgfQotCi0gICAgfnNoYXJlZF9wdHIoKQotICAgIHsKLSAgICAgICAgaWYoLS0qcG4gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfZGVsZXRlKHB4KTsKLSAgICAgICAgICAgIGRlbGV0ZSBwbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHNoYXJlZF9wdHIoc2hhcmVkX3B0ciBjb25zdCAmIHIpOiBweChyLnB4KSAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBwbiA9IHIucG47Ci0gICAgICAgICsrKnBuOwotICAgIH0KLQotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oc2hhcmVkX3B0ciBjb25zdCAmIHIpCi0gICAgewotICAgICAgICBzaGFyZWRfcHRyKHIpLnN3YXAoKnRoaXMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0KLSAgICBleHBsaWNpdCBzaGFyZWRfcHRyKHN0ZDo6YXV0b19wdHI8VD4gJiByKQotICAgIHsgCi0gICAgICAgIHBuID0gbmV3IGNvdW50X3R5cGUoMSk7IC8vIG1heSB0aHJvdwotICAgICAgICBweCA9IHIucmVsZWFzZSgpOyAvLyBmaXg6IG1vdmVkIGhlcmUgdG8gc3RvcCBsZWFrIGlmIG5ldyB0aHJvd3MKLSAgICB9IAotCi0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPShzdGQ6OmF1dG9fcHRyPFQ+ICYgcikKLSAgICB7Ci0gICAgICAgIHNoYXJlZF9wdHIocikuc3dhcCgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdm9pZCByZXNldChUICogcCA9IDApCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQocCA9PSAwIHx8IHAgIT0gcHgpOwotICAgICAgICBzaGFyZWRfcHRyKHApLnN3YXAoKnRoaXMpOwotICAgIH0KLQotICAgIFQgJiBvcGVyYXRvciooKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQocHggIT0gMCk7Ci0gICAgICAgIHJldHVybiAqcHg7Ci0gICAgfQotCi0gICAgVCAqIG9wZXJhdG9yLT4oKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQocHggIT0gMCk7Ci0gICAgICAgIHJldHVybiBweDsKLSAgICB9Ci0KLSAgICBUICogZ2V0KCkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgcmV0dXJuICpwbjsKLSAgICB9Ci0KLSAgICBib29sIHVuaXF1ZSgpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHJldHVybiAqcG4gPT0gMTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzd2FwKHNoYXJlZF9wdHI8VD4gJiBvdGhlcikgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgc3RkOjpzd2FwKHB4LCBvdGhlci5weCk7Ci0gICAgICAgIHN0ZDo6c3dhcChwbiwgb3RoZXIucG4pOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIFQgKiBweDsgICAgICAgICAgICAvLyBjb250YWluZWQgcG9pbnRlcgotICAgIGNvdW50X3R5cGUgKiBwbjsgICAvLyBwdHIgdG8gcmVmZXJlbmNlIGNvdW50ZXIKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oc2hhcmVkX3B0cjxUPiBjb25zdCAmIGEsIHNoYXJlZF9wdHI8VT4gY29uc3QgJiBiKQotewotICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oc2hhcmVkX3B0cjxUPiBjb25zdCAmIGEsIHNoYXJlZF9wdHI8VT4gY29uc3QgJiBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPChzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYSwgc2hhcmVkX3B0cjxUPiBjb25zdCAmIGIpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bGVzczxUKj4oKShhLmdldCgpLCBiLmdldCgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzd2FwKHNoYXJlZF9wdHI8VD4gJiBhLCBzaGFyZWRfcHRyPFQ+ICYgYikKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLS8vIGdldF9wb2ludGVyKCkgZW5hYmxlcyBuZG5ib29zdDo6bWVtX2ZuIHRvIHJlY29nbml6ZSBzaGFyZWRfcHRyCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBUICogZ2V0X3BvaW50ZXIoc2hhcmVkX3B0cjxUPiBjb25zdCAmIHApCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9QVFJfTk1UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvbnZlcnRpYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb252ZXJ0aWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOGI2YjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvbnZlcnRpYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT05WRVJUSUJMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT05WRVJUSUJMRV9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBkZXRhaWwvc3BfY29udmVydGlibGUuaHBwCi0vLwotLy8gIENvcHlyaWdodCAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKSAmJiBkZWZpbmVkKCBORE5CT09TVF9OT19TRklOQUUgKQotIyBkZWZpbmUgTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkgJiYgZGVmaW5lZCggX19HTlVDX18gKSAmJiAoIF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18gPCAzMDMgKQotIyBkZWZpbmUgTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkgJiYgZGVmaW5lZCggX19CT1JMQU5EQ19fICkgJiYgKCBfX0JPUkxBTkRDX18gPCAweDYzMCApCi0jIGRlZmluZSBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi10ZW1wbGF0ZTwgY2xhc3MgWSwgY2xhc3MgVCA+IHN0cnVjdCBzcF9jb252ZXJ0aWJsZQotewotICAgIHR5cGVkZWYgY2hhciAoJnllcykgWzFdOwotICAgIHR5cGVkZWYgY2hhciAoJm5vKSAgWzJdOwotCi0gICAgc3RhdGljIHllcyBmKCBUKiApOwotICAgIHN0YXRpYyBubyAgZiggLi4uICk7Ci0KLSAgICBlbnVtIF92dCB7IHZhbHVlID0gc2l6ZW9mKCAoZikoIHN0YXRpY19jYXN0PFkqPigwKSApICkgPT0gc2l6ZW9mKHllcykgfTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBZLCBjbGFzcyBUID4gc3RydWN0IHNwX2NvbnZlcnRpYmxlPCBZLCBUW10gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBmYWxzZSB9OwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFksIGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfY29udmVydGlibGU8IFlbXSwgVFtdID4KLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gc3BfY29udmVydGlibGU8IFlbMV0sIFRbMV0gPjo6dmFsdWUgfTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBZLCBzdGQ6OnNpemVfdCBOLCBjbGFzcyBUID4gc3RydWN0IHNwX2NvbnZlcnRpYmxlPCBZW05dLCBUW10gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBzcF9jb252ZXJ0aWJsZTwgWVsxXSwgVFsxXSA+Ojp2YWx1ZSB9OwotfTsKLQotc3RydWN0IHNwX2VtcHR5Ci17Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBzcF9lbmFibGVfaWZfY29udmVydGlibGVfaW1wbDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlX2ltcGw8dHJ1ZT4KLXsKLSAgICB0eXBlZGVmIHNwX2VtcHR5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzcF9lbmFibGVfaWZfY29udmVydGlibGVfaW1wbDxmYWxzZT4KLXsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBZLCBjbGFzcyBUID4gc3RydWN0IHNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZTogcHVibGljIHNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZV9pbXBsPCBzcF9jb252ZXJ0aWJsZTwgWSwgVCA+Ojp2YWx1ZSA+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPTlZFUlRJQkxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ3ZjgyYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgMjAwNSwgMjAwNiBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaGFzX3N5bmMuaHBwPgotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfU1BfRElTQUJMRV9USFJFQURTICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfbnQuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBORE5CT09TVF9TUF9VU0VfU1BJTkxPQ0sgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zcGluLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggTkROQk9PU1RfU1BfVVNFX1BUSFJFQURTICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfcHQuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfU1BfRU5BQkxFX1RIUkVBRFMgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfRElTQUJMRV9XSU4zMiApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX250LmhwcD4KLQotI2VsaWYgZGVmaW5lZCggX19TTkNfXyApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NuY19wczMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggZGVmaW5lZCggX19pMzg2X18gKSB8fCBkZWZpbmVkKCBfX3g4Nl82NF9fICkgKSAmJiAhZGVmaW5lZChfX1BBVEhTQ0FMRV9fKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfeDg2LmhwcD4KLQotI2VsaWYgZGVmaW5lZChfX0hQX2FDQykgJiYgZGVmaW5lZChfX2lhNjQpCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2FjY19pYTY0LmhwcD4KLQotI2VsaWYgZGVmaW5lZCggX19HTlVDX18gKSAmJiBkZWZpbmVkKCBfX2lhNjRfXyApICYmICFkZWZpbmVkKCBfX0lOVEVMX0NPTVBJTEVSICkgJiYgIWRlZmluZWQoX19QQVRIU0NBTEVfXykKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX2lhNjQuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX0lCTUNQUF9fICkgJiYgZGVmaW5lZCggX19wb3dlcnBjICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdmFjcHBfcHBjLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggX19NV0VSS1NfXyApICYmIGRlZmluZWQoIF9fUE9XRVJQQ19fICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfY3dfcHBjLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggX19HTlVDX18gKSAmJiAoIGRlZmluZWQoIF9fcG93ZXJwY19fICkgfHwgZGVmaW5lZCggX19wcGNfXyApIHx8IGRlZmluZWQoIF9fcHBjICkgKSAmJiAhZGVmaW5lZChfX1BBVEhTQ0FMRV9fKSAmJiAhZGVmaW5lZCggX0FJWCApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19wcGMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggZGVmaW5lZCggX19taXBzX18gKSB8fCBkZWZpbmVkKCBfbWlwcyApICkgJiYgIWRlZmluZWQoX19QQVRIU0NBTEVfXykKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX21pcHMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBORE5CT09TVF9TUF9IQVNfU1lOQyApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3N5bmMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoIGRlZmluZWQoIF9fc3BhcmN2OSApIHx8ICggZGVmaW5lZCggX19zcGFyY3Y4ICkgJiYgKCBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fID49IDQwMiApICkgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2Nfc3BhcmMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBXSU4zMiApIHx8IGRlZmluZWQoIF9XSU4zMiApIHx8IGRlZmluZWQoIF9fV0lOMzJfXyApIHx8IGRlZmluZWQoX19DWUdXSU5fXykKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdzMyLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggX0FJWCApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2FpeC5ocHA+Ci0KLSNlbGlmICFkZWZpbmVkKCBORE5CT09TVF9IQVNfVEhSRUFEUyApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX250LmhwcD4KLQotI2Vsc2UKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3Bpbi5ocHA+Ci0KLSNlbmRpZgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2FjY19pYTY0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWNjX2lhNjQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2ZhY2UwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWNjX2lhNjQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQUNDX0lBNjRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0FDQ19JQTY0X0hQUF9JTkNMVURFRAotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWNjX2lhNjQuaHBwIC0gYUMrKyBvbiBIUC1VWCBJQTY0Ci0vLwotLy8gIENvcHlyaWdodCAyMDA3IEJhcnVjaCBaaWxiZXIKLS8vICBDb3B5cmlnaHQgMjAwNyBCb3JpcyBHdWJlbmtvCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotI2luY2x1ZGUgPG1hY2hpbmUvc3lzL2lubGluZS5oPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gKysqcHc7Ci0KLSAgICBfQXNtX2ZldGNoYWRkKF9GQVNaX1csIF9TRU1fUkVMLCBwdywgKzEsIF9MREhJTlRfTk9ORSk7Ci19IAotCi1pbmxpbmUgaW50IGF0b21pY19kZWNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyByZXR1cm4gLS0qcHc7Ci0KLSAgICBpbnQgciA9IHN0YXRpY19jYXN0PGludD4oX0FzbV9mZXRjaGFkZChfRkFTWl9XLCBfU0VNX1JFTCwgcHcsIC0xLCBfTERISU5UX05PTkUpKTsKLSAgICBpZiAoMSA9PSByKQotICAgIHsKLSAgICAgICAgX0FzbV9tZigpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gciAtIDE7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIGlmKCAqcHcgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiAqcHc7Ci0KLSAgICBpbnQgdiA9ICpwdzsKLSAgICAKLSAgICBmb3IgKDs7KQotICAgIHsKLSAgICAgICAgaWYgKDAgPT0gdikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIF9Bc21fbW92X3RvX2FyKF9BUkVHX0NDViwKLSAgICAgICAgICAgICAgICAgICAgICAgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgKF9VUF9DQUxMX0ZFTkNFIHwgX1VQX1NZU19GRU5DRSB8IF9ET1dOX0NBTExfRkVOQ0UgfCBfRE9XTl9TWVNfRkVOQ0UpKTsKLSAgICAgICAgaW50IHIgPSBzdGF0aWNfY2FzdDxpbnQ+KF9Bc21fY21weGNoZyhfU1pfVywgX1NFTV9BQ1EsIHB3LCB2ICsgMSwgX0xESElOVF9OT05FKSk7Ci0gICAgICAgIGlmIChyID09IHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByICsgMTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdiA9IHI7Ci0gICAgfQotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50IGNvbnN0IHZvbGF0aWxlICY+KCB1c2VfY291bnRfICk7IC8vIFRPRE8gdXNlIGxkLmFjcSBoZXJlCi0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9BQ0NfSUE2NF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWl4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWl4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNiN2NmZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2FpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9BSVhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0FJWF9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX2FpeC5ocHAKLS8vICAgYmFzZWQgb246IGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfdzMyLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLyAgQ29weXJpZ2h0IDIwMDYgTWljaGFlbCB2YW4gZGVyIFdlc3RodWl6ZW4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLS8vICBUaGFua3MgdG8gQmVuIEhpdGNoaW5ncyBmb3IgdGhlICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLS8vICBmb3JtdWxhdGlvbgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8YnVpbHRpbnMuaD4KLSNpbmNsdWRlIDxzeXMvYXRvbWljX29wLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludDMyX3QqIHB3ICkKLXsKLSAgICAvLyArKypwdzsKLQotICAgIGZldGNoX2FuZF9hZGQoIHB3LCAxICk7Ci19Ci0KLWlubGluZSBpbnQzMl90IGF0b21pY19kZWNyZW1lbnQoIGludDMyX3QgKiBwdyApCi17Ci0gICAgLy8gcmV0dXJuIC0tKnB3OwotCi0gICAgaW50MzJfdCBvcmlnaW5hbFZhbHVlOwotCi0gICAgX19sd3N5bmMoKTsKLSAgICBvcmlnaW5hbFZhbHVlID0gZmV0Y2hfYW5kX2FkZCggcHcsIC0xICk7Ci0gICAgX19pc3luYygpOwotCi0gICAgcmV0dXJuIChvcmlnaW5hbFZhbHVlIC0gMSk7Ci19Ci0KLWlubGluZSBpbnQzMl90IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIGludDMyX3QgKiBwdyApCi17Ci0gICAgLy8gaWYoICpwdyAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuICpwdzsKLQotICAgIGludDMyX3QgdG1wID0gZmV0Y2hfYW5kX2FkZCggcHcsIDAgKTsKLSAgICBmb3IoIDs7ICkKLSAgICB7Ci0gICAgICAgIGlmKCB0bXAgPT0gMCApIHJldHVybiAwOwotICAgICAgICBpZiggY29tcGFyZV9hbmRfc3dhcCggcHcsICZ0bXAsIHRtcCArIDEgKSApIHJldHVybiAodG1wICsgMSk7Ci0gICAgfQotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludDMyX3QgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQzMl90IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBmZXRjaF9hbmRfYWRkKCBjb25zdF9jYXN0PGludDMyX3QqPigmdXNlX2NvdW50XyksIDAgKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0FJWF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfY3dfcHBjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfY3dfcHBjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QxOTZiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2N3X3BwYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9DV19QUENfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0NXX1BQQ19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9jd19wcGMuaHBwIC0gQ29kZVdhcnJpb3Igb24gUG93ZXJQQwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0vLyAgVGhhbmtzIHRvIEJlbiBIaXRjaGluZ3MgZm9yIHRoZSAjd2VhayArICgjc2hhcmVkICE9IDApCi0vLyAgZm9ybXVsYXRpb24KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCByZWdpc3RlciBsb25nICogcHcgKQotewotICAgIHJlZ2lzdGVyIGludCBhOwotCi0gICAgYXNtCi0gICAgewotbG9vcDoKLQotICAgIGx3YXJ4ICAgYSwgMCwgcHcKLSAgICBhZGRpICAgIGEsIGEsIDEKLSAgICBzdHdjeC4gIGEsIDAsIHB3Ci0gICAgYm5lLSAgICBsb29wCi0gICAgfQotfQotCi1pbmxpbmUgbG9uZyBhdG9taWNfZGVjcmVtZW50KCByZWdpc3RlciBsb25nICogcHcgKQotewotICAgIHJlZ2lzdGVyIGludCBhOwotCi0gICAgYXNtCi0gICAgewotICAgIHN5bmMKLQotbG9vcDoKLQotICAgIGx3YXJ4ICAgYSwgMCwgcHcKLSAgICBhZGRpICAgIGEsIGEsIC0xCi0gICAgc3R3Y3guICBhLCAwLCBwdwotICAgIGJuZS0gICAgbG9vcAotCi0gICAgaXN5bmMKLSAgICB9Ci0KLSAgICByZXR1cm4gYTsKLX0KLQotaW5saW5lIGxvbmcgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggcmVnaXN0ZXIgbG9uZyAqIHB3ICkKLXsKLSAgICByZWdpc3RlciBpbnQgYTsKLQotICAgIGFzbQotICAgIHsKLWxvb3A6Ci0KLSAgICBsd2FyeCAgIGEsIDAsIHB3Ci0gICAgY21wd2kgICBhLCAwCi0gICAgYmVxICAgICBzdG9yZQotCi0gICAgYWRkaSAgICBhLCBhLCAxCi0KLXN0b3JlOgotCi0gICAgc3R3Y3guICBhLCAwLCBwdwotICAgIGJuZS0gICAgbG9vcAotICAgIH0KLQotICAgIHJldHVybiBhOwotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGxvbmcgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBsb25nIHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nIGNvbnN0IHZvbGF0aWxlICY+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9DV19QUENfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19pYTY0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX2lhNjQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWZjMjhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX2lhNjQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX0lBNjRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19JQTY0X0hQUF9JTkNMVURFRAotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX2lhNjQuaHBwIC0gZysrIG9uIElBNjQKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNiBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAyMDA1IEJlbiBIdXRjaGluZ3MKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyArKypwdzsKLQotICAgIGludCB0bXA7Ci0KLSAgICAvLyBObyBiYXJyaWVyIGlzIHJlcXVpcmVkIGhlcmUgYnV0IGZldGNoYWRkIGFsd2F5cyBoYXMgYW4gYWNxdWlyZSBvcgotICAgIC8vIHJlbGVhc2UgYmFycmllciBhc3NvY2lhdGVkIHdpdGggaXQuICBXZSBjaG9vc2UgcmVsZWFzZSBhcyBpdCBzaG91bGQgYmUKLSAgICAvLyBjaGVhcGVyLgotICAgIF9fYXNtX18gKCJmZXRjaGFkZDQucmVsICUwPSUxLDEiIDoKLSAgICAgICAgICI9ciIodG1wKSwgIj1tIigqcHcpIDoKLSAgICAgICAgICJtIiggKnB3ICkpOwotfQotCi1pbmxpbmUgaW50IGF0b21pY19kZWNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyByZXR1cm4gLS0qcHc7Ci0KLSAgICBpbnQgcnY7Ci0KLSAgICBfX2FzbV9fICgiICAgICBmZXRjaGFkZDQucmVsICUwPSUxLC0xIDs7IFxuIgotICAgICAgICAgICAgICIgICAgIGNtcC5lcSAgICAgICAgcDcscDA9MSwlMCA7OyBcbiIKLSAgICAgICAgICAgICAiKHA3KSBsZDQuYWNxICAgICAgICUwPSUxICAgICIgOgotICAgICAgICAgICAgICI9JnIiKHJ2KSwgIj1tIigqcHcpIDoKLSAgICAgICAgICAgICAibSIoICpwdyApIDoKLSAgICAgICAgICAgICAicDciKTsKLQotICAgIHJldHVybiBydjsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gaWYoICpwdyAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuICpwdzsKLQotICAgIGludCBydiwgdG1wLCB0bXAyOwotCi0gICAgX19hc21fXyAoIjA6ICAgbGQ0ICAgICAgICAgICUwPSUzICAgICAgICAgICA7OyBcbiIKLSAgICAgICAgICIgICAgIGNtcC5lcSAgICAgICBwNyxwMD0wLCUwICAgICAgICA7OyBcbiIKLSAgICAgICAgICIocDcpIGJyLmNvbmQuc3BudCAxZiAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgICIgICAgIG1vdiAgICAgICAgICBhci5jY3Y9JTAgICAgICAgICBcbiIKLSAgICAgICAgICIgICAgIGFkZCAgICAgICAgICAlMT0xLCUwICAgICAgICAgICA7OyBcbiIKLSAgICAgICAgICIgICAgIGNtcHhjaGc0LmFjcSAlMj0lMywlMSxhci5jY3YgOzsgXG4iCi0gICAgICAgICAiICAgICBjbXAubmUgICAgICAgcDcscDA9JTAsJTIgICAgICAgOzsgXG4iCi0gICAgICAgICAiKHA3KSBici5jb25kLnNwbnQgMGIgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICAiICAgICBtb3YgICAgICAgICAgJTA9JTEgICAgICAgICAgICAgOzsgXG4iCi0gICAgICAgICAiMToiIDogCi0gICAgICAgICAiPSZyIihydiksICI9JnIiKHRtcCksICI9JnIiKHRtcDIpLCAiPW0iKCpwdykgOgotICAgICAgICAgIm0iKCAqcHcgKSA6Ci0gICAgICAgICAiYXIuY2N2IiwgInA3Iik7Ci0KLSAgICByZXR1cm4gcnY7Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQgY29uc3Qgdm9sYXRpbGUgJj4oIHVzZV9jb3VudF8gKTsgLy8gVE9ETyB1c2UgbGQuYWNxIGhlcmUKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19JQTY0X0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfbWlwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19taXBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNiZTFkYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19taXBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX01JUFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX01JUFNfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX21pcHMuaHBwIC0gZysrIG9uIE1JUFMKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA5LCBTcGlyZW50IENvbW11bmljYXRpb25zLCBJbmMuCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gKysqcHc7Ci0KLSAgICBpbnQgdG1wOwotCi0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18KLSAgICAoCi0gICAgICAgICIwOlxuXHQiCi0gICAgICAgICIuc2V0IHB1c2hcblx0IgotICAgICAgICAiLnNldCBtaXBzMlxuXHQiCi0gICAgICAgICJsbCAlMCwgJTFcblx0IgotICAgICAgICAiYWRkaXUgJTAsIDFcblx0IgotICAgICAgICAic2MgJTAsICUxXG5cdCIKLSAgICAgICAgIi5zZXQgcG9wXG5cdCIKLSAgICAgICAgImJlcXogJTAsIDBiIjoKLSAgICAgICAgIj0mciIoIHRtcCApLCAiPW0iKCAqcHcgKToKLSAgICAgICAgIm0iKCAqcHcgKQotICAgICk7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2RlY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIHJldHVybiAtLSpwdzsKLQotICAgIGludCBydiwgdG1wOwotCi0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18KLSAgICAoCi0gICAgICAgICIwOlxuXHQiCi0gICAgICAgICIuc2V0IHB1c2hcblx0IgotICAgICAgICAiLnNldCBtaXBzMlxuXHQiCi0gICAgICAgICJsbCAlMSwgJTJcblx0IgotICAgICAgICAiYWRkaXUgJTAsICUxLCAtMVxuXHQiCi0gICAgICAgICJzYyAlMCwgJTJcblx0IgotICAgICAgICAiLnNldCBwb3Bcblx0IgotICAgICAgICAiYmVxeiAlMCwgMGJcblx0IgotICAgICAgICAiYWRkaXUgJTAsICUxLCAtMSI6Ci0gICAgICAgICI9JnIiKCBydiApLCAiPSZyIiggdG1wICksICI9bSIoICpwdyApOgotICAgICAgICAibSIoICpwdyApOgotICAgICAgICAibWVtb3J5IgotICAgICk7Ci0KLSAgICByZXR1cm4gcnY7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIGlmKCAqcHcgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiAqcHc7Ci0KLSAgICBpbnQgcnYsIHRtcDsKLQotICAgIF9fYXNtX18gX192b2xhdGlsZV9fCi0gICAgKAotICAgICAgICAiMDpcblx0IgotICAgICAgICAiLnNldCBwdXNoXG5cdCIKLSAgICAgICAgIi5zZXQgbWlwczJcblx0IgotICAgICAgICAibGwgJTAsICUyXG5cdCIKLSAgICAgICAgImJlcXogJTAsIDFmXG5cdCIKLSAgICAgICAgImFkZGl1ICUxLCAlMCwgMVxuXHQiCi0gICAgICAgICJzYyAlMSwgJTJcblx0IgotICAgICAgICAiLnNldCBwb3Bcblx0IgotICAgICAgICAiYmVxeiAlMSwgMGJcblx0IgotICAgICAgICAiYWRkaXUgJTAsICUwLCAxXG5cdCIKLSAgICAgICAgIjE6IjoKLSAgICAgICAgIj0mciIoIHJ2ICksICI9JnIiKCB0bXAgKSwgIj1tIiggKnB3ICk6Ci0gICAgICAgICJtIiggKnB3ICk6Ci0gICAgICAgICJtZW1vcnkiCi0gICAgKTsKLQotICAgIHJldHVybiBydjsKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludCBjb25zdCB2b2xhdGlsZSAmPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfTUlQU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3BwYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19wcGMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWI2ZWRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3BwYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfUFBDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfUFBDX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19wcGMuaHBwIC0gZysrIG9uIFBvd2VyUEMKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotLy8gIFRoYW5rcyB0byBCZW4gSGl0Y2hpbmdzIGZvciB0aGUgI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotLy8gIGZvcm11bGF0aW9uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vICsrKnB3OwotCi0gICAgaW50IHRtcDsKLQotICAgIF9fYXNtX18KLSAgICAoCi0gICAgICAgICIwOlxuXHQiCi0gICAgICAgICJsd2FyeCAlMSwgMCwgJTJcblx0IgotICAgICAgICAiYWRkaSAlMSwgJTEsIDFcblx0IgotICAgICAgICAic3R3Y3guICUxLCAwLCAlMlxuXHQiCi0gICAgICAgICJibmUtIDBiIjoKLQotICAgICAgICAiPW0iKCAqcHcgKSwgIj0mYiIoIHRtcCApOgotICAgICAgICAiciIoIHB3ICksICJtIiggKnB3ICk6Ci0gICAgICAgICJjYyIKLSAgICApOwotfQotCi1pbmxpbmUgaW50IGF0b21pY19kZWNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyByZXR1cm4gLS0qcHc7Ci0KLSAgICBpbnQgcnY7Ci0KLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwotICAgICgKLSAgICAgICAgInN5bmNcblx0IgotICAgICAgICAiMDpcblx0IgotICAgICAgICAibHdhcnggJTEsIDAsICUyXG5cdCIKLSAgICAgICAgImFkZGkgJTEsICUxLCAtMVxuXHQiCi0gICAgICAgICJzdHdjeC4gJTEsIDAsICUyXG5cdCIKLSAgICAgICAgImJuZS0gMGJcblx0IgotICAgICAgICAiaXN5bmMiOgotCi0gICAgICAgICI9bSIoICpwdyApLCAiPSZiIiggcnYgKToKLSAgICAgICAgInIiKCBwdyApLCAibSIoICpwdyApOgotICAgICAgICAibWVtb3J5IiwgImNjIgotICAgICk7Ci0KLSAgICByZXR1cm4gcnY7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIGlmKCAqcHcgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiAqcHc7Ci0KLSAgICBpbnQgcnY7Ci0KLSAgICBfX2FzbV9fCi0gICAgKAotICAgICAgICAiMDpcblx0IgotICAgICAgICAibHdhcnggJTEsIDAsICUyXG5cdCIKLSAgICAgICAgImNtcHdpICUxLCAwXG5cdCIKLSAgICAgICAgImJlcSAxZlxuXHQiCi0gICAgICAgICJhZGRpICUxLCAlMSwgMVxuXHQiCi0gICAgICAgICIxOlxuXHQiCi0gICAgICAgICJzdHdjeC4gJTEsIDAsICUyXG5cdCIKLSAgICAgICAgImJuZS0gMGIiOgotCi0gICAgICAgICI9bSIoICpwdyApLCAiPSZiIiggcnYgKToKLSAgICAgICAgInIiKCBwdyApLCAibSIoICpwdyApOgotICAgICAgICAiY2MiCi0gICAgKTsKLQotICAgIHJldHVybiBydjsKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludCBjb25zdCB2b2xhdGlsZSAmPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1BQQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3NwYXJjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3NwYXJjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJiYWNjNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19zcGFyYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfU1BBUkNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19TUEFSQ19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19zcGFyYy5ocHAgLSBnKysgb24gU3BhcmMgVjgrCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNiBQaW90ciBXeWRlcnNraQotLy8gIENvcHlyaWdodCAoYykgMjAwNiBUb21hcyBQdXZlcmxlCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgVGhhbmtzIHRvIE1pY2hhZWwgdmFuIGRlciBXZXN0aHVpemVuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotI2luY2x1ZGUgPGludHR5cGVzLmg+IC8vIGludDMyX3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIGludDMyX3QgY29tcGFyZV9hbmRfc3dhcCggaW50MzJfdCAqIGRlc3RfLCBpbnQzMl90IGNvbXBhcmVfLCBpbnQzMl90IHN3YXBfICkKLXsKLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggImNhcyBbJTFdLCAlMiwgJTAiCi0gICAgICAgICAgICAgICAgICAgICAgICA6ICIrciIgKHN3YXBfKQotICAgICAgICAgICAgICAgICAgICAgICAgOiAiciIgKGRlc3RfKSwgInIiIChjb21wYXJlXykKLSAgICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIgKTsKLQotICAgIHJldHVybiBzd2FwXzsKLX0KLQotaW5saW5lIGludDMyX3QgYXRvbWljX2ZldGNoX2FuZF9hZGQoIGludDMyX3QgKiBwdywgaW50MzJfdCBkdiApCi17Ci0gICAgLy8gbG9uZyByID0gKnB3OwotICAgIC8vICpwdyArPSBkdjsKLSAgICAvLyByZXR1cm4gcjsKLQotICAgIGZvciggOzsgKQotICAgIHsKLSAgICAgICAgaW50MzJfdCByID0gKnB3OwotCi0gICAgICAgIGlmKCBfX2J1aWx0aW5fZXhwZWN0KChjb21wYXJlX2FuZF9zd2FwKHB3LCByLCByICsgZHYpID09IHIpLCAxKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQzMl90ICogcHcgKQotewotICAgIGF0b21pY19mZXRjaF9hbmRfYWRkKCBwdywgMSApOwotfQotCi1pbmxpbmUgaW50MzJfdCBhdG9taWNfZGVjcmVtZW50KCBpbnQzMl90ICogcHcgKQotewotICAgIHJldHVybiBhdG9taWNfZmV0Y2hfYW5kX2FkZCggcHcsIC0xICk7Ci19Ci0KLWlubGluZSBpbnQzMl90IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIGludDMyX3QgKiBwdyApCi17Ci0gICAgLy8gbG9uZyByID0gKnB3OwotICAgIC8vIGlmKCByICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gcjsKLQotICAgIGZvciggOzsgKQotICAgIHsKLSAgICAgICAgaW50MzJfdCByID0gKnB3OwotCi0gICAgICAgIGlmKCByID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmKCBfX2J1aWx0aW5fZXhwZWN0KCAoIGNvbXBhcmVfYW5kX3N3YXAoIHB3LCByLCByICsgMSApID09IHIgKSwgMSApICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLSAgICB9ICAgIAotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludDMyX3QgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQzMl90IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PCBpbnQzMl90IGNvbnN0IHZvbGF0aWxlICYgPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1NQQVJDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfeDg2LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3g4Ni5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNzljNTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfeDg2LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3NCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19YODZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19YODZfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3g4Ni5ocHAgLSBnKysgb24gNDg2KyBvciBBTUQ2NAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0vLyAgVGhhbmtzIHRvIEJlbiBIaXRjaGluZ3MgZm9yIHRoZSAjd2VhayArICgjc2hhcmVkICE9IDApCi0vLyAgZm9ybXVsYXRpb24KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgaW50IGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCBpbnQgKiBwdywgaW50IGR2ICkKLXsKLSAgICAvLyBpbnQgciA9ICpwdzsKLSAgICAvLyAqcHcgKz0gZHY7Ci0gICAgLy8gcmV0dXJuIHI7Ci0KLSAgICBpbnQgcjsKLQotICAgIF9fYXNtX18gX192b2xhdGlsZV9fCi0gICAgKAotICAgICAgICAibG9ja1xuXHQiCi0gICAgICAgICJ4YWRkICUxLCAlMCI6Ci0gICAgICAgICI9bSIoICpwdyApLCAiPXIiKCByICk6IC8vIG91dHB1dHMgKCUwLCAlMSkKLSAgICAgICAgIm0iKCAqcHcgKSwgIjEiKCBkdiApOiAvLyBpbnB1dHMgKCUyLCAlMyA9PSAlMSkKLSAgICAgICAgIm1lbW9yeSIsICJjYyIgLy8gY2xvYmJlcnMKLSAgICApOwotCi0gICAgcmV0dXJuIHI7Ci19Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvL2F0b21pY19leGNoYW5nZV9hbmRfYWRkKCBwdywgMSApOwotCi0gICAgX19hc21fXwotICAgICgKLSAgICAgICAgImxvY2tcblx0IgotICAgICAgICAiaW5jbCAlMCI6Ci0gICAgICAgICI9bSIoICpwdyApOiAvLyBvdXRwdXQgKCUwKQotICAgICAgICAibSIoICpwdyApOiAvLyBpbnB1dCAoJTEpCi0gICAgICAgICJjYyIgLy8gY2xvYmJlcnMKLSAgICApOwotfQotCi1pbmxpbmUgaW50IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyBpbnQgcnYgPSAqcHc7Ci0gICAgLy8gaWYoIHJ2ICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gcnY7Ci0KLSAgICBpbnQgcnYsIHRtcDsKLQotICAgIF9fYXNtX18KLSAgICAoCi0gICAgICAgICJtb3ZsICUwLCAlJWVheFxuXHQiCi0gICAgICAgICIwOlxuXHQiCi0gICAgICAgICJ0ZXN0ICUlZWF4LCAlJWVheFxuXHQiCi0gICAgICAgICJqZSAxZlxuXHQiCi0gICAgICAgICJtb3ZsICUlZWF4LCAlMlxuXHQiCi0gICAgICAgICJpbmNsICUyXG5cdCIKLSAgICAgICAgImxvY2tcblx0IgotICAgICAgICAiY21weGNoZ2wgJTIsICUwXG5cdCIKLSAgICAgICAgImpuZSAwYlxuXHQiCi0gICAgICAgICIxOiI6Ci0gICAgICAgICI9bSIoICpwdyApLCAiPSZhIiggcnYgKSwgIj0mciIoIHRtcCApOiAvLyBvdXRwdXRzICglMCwgJTEsICUyKQotICAgICAgICAibSIoICpwdyApOiAvLyBpbnB1dCAoJTMpCi0gICAgICAgICJjYyIgLy8gY2xvYmJlcnMKLSAgICApOwotCi0gICAgcmV0dXJuIHJ2OwotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCAmdXNlX2NvdW50XywgLTEgKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCAmd2Vha19jb3VudF8sIC0xICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludCBjb25zdCB2b2xhdGlsZSAmPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1g4Nl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwOTY3YmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfTlRfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfbnQuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBsb25nIHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgbG9uZyB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgICsrdXNlX2NvdW50XzsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgaWYoIHVzZV9jb3VudF8gPT0gMCApIHJldHVybiBmYWxzZTsKLSAgICAgICAgKyt1c2VfY291bnRfOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggLS11c2VfY291bnRfID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgKyt3ZWFrX2NvdW50XzsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCAtLXdlYWtfY291bnRfID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiB1c2VfY291bnRfOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3B0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfcHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTMzNGQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfcHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfUFRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1BUX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3B0LmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8cHRocmVhZC5oPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGxvbmcgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBsb25nIHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLSAgICBtdXRhYmxlIHB0aHJlYWRfbXV0ZXhfdCBtXzsKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLS8vIEhQVVggMTAuMjAgLyBEQ0UgaGFzIGEgbm9uc3RhbmRhcmQgcHRocmVhZF9tdXRleF9pbml0Ci0KLSNpZiBkZWZpbmVkKF9faHB1eCkgJiYgZGVmaW5lZChfREVDVEhSRUFEU18pCi0gICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCggJm1fLCBwdGhyZWFkX211dGV4YXR0cl9kZWZhdWx0ICk7Ci0jZWxzZQotICAgICAgICBwdGhyZWFkX211dGV4X2luaXQoICZtXywgMCApOwotI2VuZGlmCi0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCAmbV8gKTsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCAmbV8gKTsKLSAgICAgICAgKyt1c2VfY291bnRfOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayggJm1fICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayggJm1fICk7Ci0gICAgICAgIGJvb2wgciA9IHVzZV9jb3VudF8gPT0gMD8gZmFsc2U6ICggKyt1c2VfY291bnRfLCB0cnVlICk7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKTsKLSAgICAgICAgcmV0dXJuIHI7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCAmbV8gKTsKLSAgICAgICAgbG9uZyBuZXdfdXNlX2NvdW50ID0gLS11c2VfY291bnRfOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayggJm1fICk7Ci0KLSAgICAgICAgaWYoIG5ld191c2VfY291bnQgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soICZtXyApOwotICAgICAgICArK3dlYWtfY291bnRfOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayggJm1fICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soICZtXyApOwotICAgICAgICBsb25nIG5ld193ZWFrX2NvdW50ID0gLS13ZWFrX2NvdW50XzsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soICZtXyApOwotCi0gICAgICAgIGlmKCBuZXdfd2Vha19jb3VudCA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soICZtXyApOwotICAgICAgICBsb25nIHIgPSB1c2VfY291bnRfOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayggJm1fICk7Ci0KLSAgICAgICAgcmV0dXJuIHI7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9QVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc25jX3BzMy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NuY19wczMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmU4ZmU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc25jX3BzMy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TTkNfUFMzX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TTkNfUFMzX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19zcGFyYy5ocHAgLSBnKysgb24gU3BhcmMgVjgrCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNiBQaW90ciBXeWRlcnNraQotLy8gIENvcHlyaWdodCAoYykgMjAwNiBUb21hcyBQdXZlcmxlCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFBldGVyIERpbW92Ci0vLyAgQ29weXJpZ2h0IChjKSAyMDExIEVtaWwgRG90Y2hldnNraQotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFRoYW5rcyB0byBNaWNoYWVsIHZhbiBkZXIgV2VzdGh1aXplbgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxpbnR0eXBlcy5oPiAvLyB1aW50MzJfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdWludDMyX3QgY29tcGFyZV9hbmRfc3dhcCggdWludDMyX3QgKiBkZXN0XywgdWludDMyX3QgY29tcGFyZV8sIHVpbnQzMl90IHN3YXBfICkKLXsKLSAgICByZXR1cm4gX19idWlsdGluX2NlbGxBdG9taWNDb21wYXJlQW5kU3dhcDMyKGRlc3RfLGNvbXBhcmVfLHN3YXBfKTsKLX0KLQotaW5saW5lIHVpbnQzMl90IGF0b21pY19mZXRjaF9hbmRfYWRkKCB1aW50MzJfdCAqIHB3LCB1aW50MzJfdCBkdiApCi17Ci0gICAgLy8gbG9uZyByID0gKnB3OwotICAgIC8vICpwdyArPSBkdjsKLSAgICAvLyByZXR1cm4gcjsKLQotICAgIGZvciggOzsgKQotICAgIHsKLSAgICAgICAgdWludDMyX3QgciA9ICpwdzsKLQotICAgICAgICBpZiggX19idWlsdGluX2V4cGVjdCgoY29tcGFyZV9hbmRfc3dhcChwdywgciwgciArIGR2KSA9PSByKSwgMSkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggdWludDMyX3QgKiBwdyApCi17Ci0gICAgKHZvaWQpIF9fYnVpbHRpbl9jZWxsQXRvbWljSW5jcjMyKCBwdyApOwotfQotCi1pbmxpbmUgdWludDMyX3QgYXRvbWljX2RlY3JlbWVudCggdWludDMyX3QgKiBwdyApCi17Ci0gICAgcmV0dXJuIF9fYnVpbHRpbl9jZWxsQXRvbWljRGVjcjMyKCBwdyApOwotfQotCi1pbmxpbmUgdWludDMyX3QgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggdWludDMyX3QgKiBwdyApCi17Ci0gICAgLy8gbG9uZyByID0gKnB3OwotICAgIC8vIGlmKCByICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gcjsKLQotICAgIGZvciggOzsgKQotICAgIHsKLSAgICAgICAgdWludDMyX3QgciA9ICpwdzsKLQotICAgICAgICBpZiggciA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiggX19idWlsdGluX2V4cGVjdCggKCBjb21wYXJlX2FuZF9zd2FwKCBwdywgciwgciArIDEgKSA9PSByICksIDEgKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0gICAgfSAgICAKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICB1aW50MzJfdCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIHVpbnQzMl90IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PCB1aW50MzJfdCBjb25zdCB2b2xhdGlsZSAmID4oIHVzZV9jb3VudF8gKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NOQ19QUzNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NwaW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zcGluLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc2OTFjZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NwaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU1BJTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU1BJTl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zcGluLmhwcCAtIHNwaW5sb2NrIHBvb2wgYXRvbWljIGVtdWxhdGlvbgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wb29sLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIGludCBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggaW50ICogcHcsIGludCBkdiApCi17Ci0gICAgc3BpbmxvY2tfcG9vbDwxPjo6c2NvcGVkX2xvY2sgbG9jayggcHcgKTsKLQotICAgIGludCByID0gKnB3OwotICAgICpwdyArPSBkdjsKLSAgICByZXR1cm4gcjsKLX0KLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIHNwaW5sb2NrX3Bvb2w8MT46OnNjb3BlZF9sb2NrIGxvY2soIHB3ICk7Ci0gICAgKysqcHc7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIHNwaW5sb2NrX3Bvb2w8MT46OnNjb3BlZF9sb2NrIGxvY2soIHB3ICk7Ci0KLSAgICBpbnQgcnYgPSAqcHc7Ci0gICAgaWYoIHJ2ICE9IDAgKSArKypwdzsKLSAgICByZXR1cm4gcnY7Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoICZ1c2VfY291bnRfLCAtMSApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoICZ3ZWFrX2NvdW50XywgLTEgKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBzcGlubG9ja19wb29sPDE+OjpzY29wZWRfbG9jayBsb2NrKCAmdXNlX2NvdW50XyApOwotICAgICAgICByZXR1cm4gdXNlX2NvdW50XzsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NQSU5fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3N5bmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zeW5jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFhMzZlOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3N5bmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU1lOQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU1lOQ19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3N5bmMuaHBwIC0gZysrIDQuMSsgX19zeW5jIGludHJpbnNpY3MKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA3IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0KLSNpZiBkZWZpbmVkKCBfX2lhNjRfXyApICYmIGRlZmluZWQoIF9fSU5URUxfQ09NUElMRVIgKQotIyBpbmNsdWRlIDxpYTY0aW50cmluLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotI2lmIElOVF9NQVggPj0gMjE0NzQ4MzY0NwotCi10eXBlZGVmIGludCBzcF9pbnQzMl90OwotCi0jZWxzZQotCi10eXBlZGVmIGxvbmcgc3BfaW50MzJfdDsKLQotI2VuZGlmCi0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIHNwX2ludDMyX3QgKiBwdyApCi17Ci0gICAgX19zeW5jX2ZldGNoX2FuZF9hZGQoIHB3LCAxICk7Ci19Ci0KLWlubGluZSBzcF9pbnQzMl90IGF0b21pY19kZWNyZW1lbnQoIHNwX2ludDMyX3QgKiBwdyApCi17Ci0gICAgcmV0dXJuIF9fc3luY19mZXRjaF9hbmRfYWRkKCBwdywgLTEgKTsKLX0KLQotaW5saW5lIHNwX2ludDMyX3QgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggc3BfaW50MzJfdCAqIHB3ICkKLXsKLSAgICAvLyBsb25nIHIgPSAqcHc7Ci0gICAgLy8gaWYoIHIgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiByOwotCi0gICAgc3BfaW50MzJfdCByID0gKnB3OwotCi0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICBpZiggciA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLQotICAgICAgICBzcF9pbnQzMl90IHIyID0gX19zeW5jX3ZhbF9jb21wYXJlX2FuZF9zd2FwKCBwdywgciwgciArIDEgKTsKLQotICAgICAgICBpZiggcjIgPT0gciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgciA9IHIyOwotICAgICAgICB9Ci0gICAgfSAgICAKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBzcF9pbnQzMl90IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgc3BfaW50MzJfdCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfY2FzdDwgc3BfaW50MzJfdCBjb25zdCB2b2xhdGlsZSAmID4oIHVzZV9jb3VudF8gKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NZTkNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3ZhY3BwX3BwYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3ZhY3BwX3BwYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3M2Y0NjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV92YWNwcF9wcGMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfVkFDUFBfUFBDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9WQUNQUF9QUENfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV92YWNwcF9wcGMuaHBwIC0geGxDKHZhY3BwKSBvbiBQT1dFUgotLy8gICBiYXNlZCBvbjogZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgMjAwNiBNaWNoYWVsIHZhbiBkZXIgV2VzdGh1aXplbgotLy8gIENvcHlyaWdodCAyMDEyIElCTSBDb3JwLgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotLy8gIFRoYW5rcyB0byBCZW4gSGl0Y2hpbmdzIGZvciB0aGUgI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotLy8gIGZvcm11bGF0aW9uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLQotZXh0ZXJuICJidWlsdGluIiB2b2lkIF9fbHdzeW5jKHZvaWQpOwotZXh0ZXJuICJidWlsdGluIiB2b2lkIF9faXN5bmModm9pZCk7Ci1leHRlcm4gImJ1aWx0aW4iIGludCBfX2ZldGNoX2FuZF9hZGQodm9sYXRpbGUgaW50KiBhZGRyLCBpbnQgdmFsKTsKLWV4dGVybiAiYnVpbHRpbiIgaW50IF9fY29tcGFyZV9hbmRfc3dhcCh2b2xhdGlsZSBpbnQqLCBpbnQqLCBpbnQpOwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQgKnB3ICkKLXsKLSAgIC8vICsrKnB3OwotICAgX19sd3N5bmMoKTsKLSAgIF9fZmV0Y2hfYW5kX2FkZChwdywgMSk7Ci0gICBfX2lzeW5jKCk7Ci19IAotCi1pbmxpbmUgaW50IGF0b21pY19kZWNyZW1lbnQoIGludCAqcHcgKQotewotICAgLy8gcmV0dXJuIC0tKnB3OwotICAgX19sd3N5bmMoKTsKLSAgIGludCBvcmlnaW5hbFZhbHVlID0gX19mZXRjaF9hbmRfYWRkKHB3LCAtMSk7Ci0gICBfX2lzeW5jKCk7Ci0KLSAgIHJldHVybiAob3JpZ2luYWxWYWx1ZSAtIDEpOwotfQotCi1pbmxpbmUgaW50IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIGludCAqcHcgKQotewotICAgLy8gaWYoICpwdyAhPSAwICkgKysqcHc7Ci0gICAvLyByZXR1cm4gKnB3OwotCi0gICBfX2x3c3luYygpOwotICAgaW50IHYgPSAqY29uc3RfY2FzdDx2b2xhdGlsZSBpbnQqPihwdyk7Ci0gICBmb3IgKDs7KQotICAgLy8gbG9vcCB1bnRpbCBzdGF0ZSBpcyBrbm93bgotICAgewotICAgICAgaWYgKHYgPT0gMCkgcmV0dXJuIDA7Ci0gICAgICBpZiAoX19jb21wYXJlX2FuZF9zd2FwKHB3LCAmdiwgdiArIDEpKQotICAgICAgewotICAgICAgICAgX19pc3luYygpOyByZXR1cm4gKHYgKyAxKTsKLSAgICAgIH0KLSAgIH0KLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLSAgICBjaGFyIHBhZFs2NF0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oNjQpKSk7Ci0gICAgICAgICAgICAvLyBwYWQgdG8gcHJldmVudCBmYWxzZSBzaGFyaW5nCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gKmNvbnN0X2Nhc3Q8dm9sYXRpbGUgaW50Kj4oJnVzZV9jb3VudF8pOyAKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1ZBQ1BQX1BQQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdzMyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdzMyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA2ZDNhNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3czMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9XMzJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1czMl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLS8vICBUaGFua3MgdG8gQmVuIEhpdGNoaW5ncyBmb3IgdGhlICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLS8vICBmb3JtdWxhdGlvbgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgbG9uZyB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGxvbmcgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTkNSRU1FTlQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIGZvciggOzsgKQotICAgICAgICB7Ci0gICAgICAgICAgICBsb25nIHRtcCA9IHN0YXRpY19jYXN0PCBsb25nIGNvbnN0IHZvbGF0aWxlJiA+KCB1c2VfY291bnRfICk7Ci0gICAgICAgICAgICBpZiggdG1wID09IDAgKSByZXR1cm4gZmFsc2U7Ci0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9NU1ZDICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPT0gMTIwMCApCi0KLSAgICAgICAgICAgIC8vIHdvcmsgYXJvdW5kIGEgY29kZSBnZW5lcmF0aW9uIGJ1ZwotCi0gICAgICAgICAgICBsb25nIHRtcDIgPSB0bXAgKyAxOwotICAgICAgICAgICAgaWYoIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0UoICZ1c2VfY291bnRfLCB0bXAyLCB0bXAgKSA9PSB0bXAyIC0gMSApIHJldHVybiB0cnVlOwotCi0jZWxzZQotCi0gICAgICAgICAgICBpZiggTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSggJnVzZV9jb3VudF8sIHRtcCArIDEsIHRtcCApID09IHRtcCApIHJldHVybiB0cnVlOwotCi0jZW5kaWYKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBORE5CT09TVF9JTlRFUkxPQ0tFRF9ERUNSRU1FTlQoICZ1c2VfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTkNSRU1FTlQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0RFQ1JFTUVOVCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgY29uc3Qgdm9sYXRpbGUgJj4oIHVzZV9jb3VudF8gKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1czMl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4YWY3M2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2ltcGwuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfVVNFX1NURF9BTExPQ0FUT1IpICYmIGRlZmluZWQoTkROQk9PU1RfU1BfVVNFX1FVSUNLX0FMTE9DQVRPUikKLSMgZXJyb3IgTkROQk9PU1RfU1BfVVNFX1NURF9BTExPQ0FUT1IgYW5kIE5ETkJPT1NUX1NQX1VTRV9RVUlDS19BTExPQ0FUT1IgYXJlIGluY29tcGF0aWJsZS4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfVVNFX1FVSUNLX0FMTE9DQVRPUikKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3F1aWNrX2FsbG9jYXRvci5ocHA+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfVVNFX1NURF9BTExPQ0FUT1IpCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgLy8gc3RkOjphbGxvY2F0b3IKLSNlbmRpZgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgLy8gc3RkOjpzaXplX3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLQotdm9pZCBzcF9zY2FsYXJfY29uc3RydWN0b3JfaG9vayggdm9pZCAqIHB4LCBzdGQ6OnNpemVfdCBzaXplLCB2b2lkICogcG4gKTsKLXZvaWQgc3Bfc2NhbGFyX2Rlc3RydWN0b3JfaG9vayggdm9pZCAqIHB4LCBzdGQ6OnNpemVfdCBzaXplLCB2b2lkICogcG4gKTsKLQotI2VuZGlmCi0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdGVtcGxhdGU8Y2xhc3MgWD4gY2xhc3Mgc3BfY291bnRlZF9pbXBsX3A6IHB1YmxpYyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBYICogcHhfOwotCi0gICAgc3BfY291bnRlZF9pbXBsX3AoIHNwX2NvdW50ZWRfaW1wbF9wIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2ltcGxfcCAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfaW1wbF9wIGNvbnN0ICYgKTsKLQotICAgIHR5cGVkZWYgc3BfY291bnRlZF9pbXBsX3A8WD4gdGhpc190eXBlOwotCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBzcF9jb3VudGVkX2ltcGxfcCggWCAqIHB4ICk6IHB4XyggcHggKQotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgbmRuYm9vc3Q6OnNwX3NjYWxhcl9jb25zdHJ1Y3Rvcl9ob29rKCBweCwgc2l6ZW9mKFgpLCB0aGlzICk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIG5kbmJvb3N0OjpzcF9zY2FsYXJfZGVzdHJ1Y3Rvcl9ob29rKCBweF8sIHNpemVvZihYKSwgdGhpcyApOwotI2VuZGlmCi0gICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2RlbGV0ZSggcHhfICk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIGRldGFpbDo6c3BfdHlwZWluZm8gY29uc3QgJiApCi0gICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfVVNFX1NURF9BTExPQ0FUT1IpCi0KLSAgICB2b2lkICogb3BlcmF0b3IgbmV3KCBzdGQ6OnNpemVfdCApCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjphbGxvY2F0b3I8dGhpc190eXBlPigpLmFsbG9jYXRlKCAxLCBzdGF0aWNfY2FzdDx0aGlzX3R5cGUgKj4oMCkgKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSggdm9pZCAqIHAgKQotICAgIHsKLSAgICAgICAgc3RkOjphbGxvY2F0b3I8dGhpc190eXBlPigpLmRlYWxsb2NhdGUoIHN0YXRpY19jYXN0PHRoaXNfdHlwZSAqPihwKSwgMSApOwotICAgIH0KLQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX1VTRV9RVUlDS19BTExPQ0FUT1IpCi0KLSAgICB2b2lkICogb3BlcmF0b3IgbmV3KCBzdGQ6OnNpemVfdCApCi0gICAgewotICAgICAgICByZXR1cm4gcXVpY2tfYWxsb2NhdG9yPHRoaXNfdHlwZT46OmFsbG9jKCk7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvciBkZWxldGUoIHZvaWQgKiBwICkKLSAgICB7Ci0gICAgICAgIHF1aWNrX2FsbG9jYXRvcjx0aGlzX3R5cGU+OjpkZWFsbG9jKCBwICk7Ci0gICAgfQotCi0jZW5kaWYKLX07Ci0KLS8vCi0vLyBCb3JsYW5kJ3MgQ29kZWd1YXJkIHRyaXBzIHVwIG92ZXIgdGhlIC1WeC0gb3B0aW9uIGhlcmU6Ci0vLwotI2lmZGVmIF9fQ09ERUdVQVJEX18KLSMgcHJhZ21hIG9wdGlvbiBwdXNoIC1WeC0KLSNlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBQLCBjbGFzcyBEPiBjbGFzcyBzcF9jb3VudGVkX2ltcGxfcGQ6IHB1YmxpYyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBQIHB0cjsgLy8gY29weSBjb25zdHJ1Y3RvciBtdXN0IG5vdCB0aHJvdwotICAgIEQgZGVsOyAvLyBjb3B5IGNvbnN0cnVjdG9yIG11c3Qgbm90IHRocm93Ci0KLSAgICBzcF9jb3VudGVkX2ltcGxfcGQoIHNwX2NvdW50ZWRfaW1wbF9wZCBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9pbXBsX3BkICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9pbXBsX3BkIGNvbnN0ICYgKTsKLQotICAgIHR5cGVkZWYgc3BfY291bnRlZF9pbXBsX3BkPFAsIEQ+IHRoaXNfdHlwZTsKLQotcHVibGljOgotCi0gICAgLy8gcHJlOiBkKHApIG11c3Qgbm90IHRocm93Ci0KLSAgICBzcF9jb3VudGVkX2ltcGxfcGQoIFAgcCwgRCAmIGQgKTogcHRyKCBwICksIGRlbCggZCApCi0gICAgewotICAgIH0KLQotICAgIHNwX2NvdW50ZWRfaW1wbF9wZCggUCBwICk6IHB0ciggcCApLCBkZWwoKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbCggcHRyICk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIGRldGFpbDo6c3BfdHlwZWluZm8gY29uc3QgJiB0aSApCi0gICAgewotICAgICAgICByZXR1cm4gdGkgPT0gTkROQk9PU1RfU1BfVFlQRUlEKEQpPyAmcmVpbnRlcnByZXRfY2FzdDxjaGFyJj4oIGRlbCApOiAwOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICZyZWludGVycHJldF9jYXN0PGNoYXImPiggZGVsICk7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfU1REX0FMTE9DQVRPUikKLQotICAgIHZvaWQgKiBvcGVyYXRvciBuZXcoIHN0ZDo6c2l6ZV90ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmFsbG9jYXRvcjx0aGlzX3R5cGU+KCkuYWxsb2NhdGUoIDEsIHN0YXRpY19jYXN0PHRoaXNfdHlwZSAqPigwKSApOwotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKCB2b2lkICogcCApCi0gICAgewotICAgICAgICBzdGQ6OmFsbG9jYXRvcjx0aGlzX3R5cGU+KCkuZGVhbGxvY2F0ZSggc3RhdGljX2Nhc3Q8dGhpc190eXBlICo+KHApLCAxICk7Ci0gICAgfQotCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfVVNFX1FVSUNLX0FMTE9DQVRPUikKLQotICAgIHZvaWQgKiBvcGVyYXRvciBuZXcoIHN0ZDo6c2l6ZV90ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBxdWlja19hbGxvY2F0b3I8dGhpc190eXBlPjo6YWxsb2MoKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSggdm9pZCAqIHAgKQotICAgIHsKLSAgICAgICAgcXVpY2tfYWxsb2NhdG9yPHRoaXNfdHlwZT46OmRlYWxsb2MoIHAgKTsKLSAgICB9Ci0KLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUCwgY2xhc3MgRCwgY2xhc3MgQT4gY2xhc3Mgc3BfY291bnRlZF9pbXBsX3BkYTogcHVibGljIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIFAgcF87IC8vIGNvcHkgY29uc3RydWN0b3IgbXVzdCBub3QgdGhyb3cKLSAgICBEIGRfOyAvLyBjb3B5IGNvbnN0cnVjdG9yIG11c3Qgbm90IHRocm93Ci0gICAgQSBhXzsgLy8gY29weSBjb25zdHJ1Y3RvciBtdXN0IG5vdCB0aHJvdwotCi0gICAgc3BfY291bnRlZF9pbXBsX3BkYSggc3BfY291bnRlZF9pbXBsX3BkYSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9pbXBsX3BkYSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfaW1wbF9wZGEgY29uc3QgJiApOwotCi0gICAgdHlwZWRlZiBzcF9jb3VudGVkX2ltcGxfcGRhPFAsIEQsIEE+IHRoaXNfdHlwZTsKLQotcHVibGljOgotCi0gICAgLy8gcHJlOiBkKCBwICkgbXVzdCBub3QgdGhyb3cKLQotICAgIHNwX2NvdW50ZWRfaW1wbF9wZGEoIFAgcCwgRCAmIGQsIEEgYSApOiBwXyggcCApLCBkXyggZCApLCBhXyggYSApCi0gICAgewotICAgIH0KLQotICAgIHNwX2NvdW50ZWRfaW1wbF9wZGEoIFAgcCwgQSBhICk6IHBfKCBwICksIGRfKCksIGFfKCBhICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkXyggcF8gKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPCB0aGlzX3R5cGUgPjo6b3RoZXIgQTI7Ci0KLSAgICAgICAgQTIgYTIoIGFfICk7Ci0KLSAgICAgICAgdGhpcy0+fnRoaXNfdHlwZSgpOwotICAgICAgICBhMi5kZWFsbG9jYXRlKCB0aGlzLCAxICk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIGRldGFpbDo6c3BfdHlwZWluZm8gY29uc3QgJiB0aSApCi0gICAgewotICAgICAgICByZXR1cm4gdGkgPT0gTkROQk9PU1RfU1BfVFlQRUlEKCBEICk/ICZyZWludGVycHJldF9jYXN0PGNoYXImPiggZF8gKTogMDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAmcmVpbnRlcnByZXRfY2FzdDxjaGFyJj4oIGRfICk7Ci0gICAgfQotfTsKLQotI2lmZGVmIF9fQ09ERUdVQVJEX18KLSMgcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWI3Yjc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9GT1JXQVJEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0ZPUldBUkRfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyAgZGV0YWlsL3NwX2ZvcndhcmQuaHBwCi0vLwotLy8gIENvcHlyaWdodCAyMDA4LDIwMTIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gVCYmIHNwX2ZvcndhcmQoIFQgJiB0ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IFQmJiA+KCB0ICk7Ci19Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfRk9SV0FSRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaGFzX3N5bmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjViNGRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfSEFTX1NZTkNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfSEFTX1NZTkNfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaGFzX3N5bmMuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBEZWZpbmVzIHRoZSBORE5CT09TVF9TUF9IQVNfU1lOQyBtYWNybyBpZiB0aGUgX19zeW5jXyogaW50cmluc2ljcwotLy8gIGFyZSBhdmFpbGFibGUuCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1NQX05PX1NZTkMKLQotI2lmIGRlZmluZWQoIF9fR0NDX0hBVkVfU1lOQ19DT01QQVJFX0FORF9TV0FQXzQgKQotCi0jIGRlZmluZSBORE5CT09TVF9TUF9IQVNfU1lOQwotCi0jZWxpZiBkZWZpbmVkKCBfX0lCTUNQUF9fICkgJiYgKCBfX0lCTUNQUF9fID49IDEyMTAgKQotCi0jIGRlZmluZSBORE5CT09TVF9TUF9IQVNfU1lOQwotCi0jZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA+PSA0MDEgKQotCi0jZGVmaW5lIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0KLSNpZiBkZWZpbmVkKCBfX2FybV9fICkgIHx8IGRlZmluZWQoIF9fYXJtZWxfXyApCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCggX19ocHBhICkgfHwgZGVmaW5lZCggX19ocHBhX18gKQotI3VuZGVmIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoIF9fbTY4a19fICkKLSN1bmRlZiBORE5CT09TVF9TUF9IQVNfU1lOQwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX3NoX18gKQotI3VuZGVmIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoIF9fc3BhcmNfXyApCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCggX19JTlRFTF9DT01QSUxFUiApICYmICFkZWZpbmVkKCBfX2lhNjRfXyApICYmICggX19JTlRFTF9DT01QSUxFUiA8IDExMTAgKQotI3VuZGVmIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19QQVRIU0NBTEVfXykgJiYgKChfX1BBVEhDQ19fID09IDQpICYmIChfX1BBVEhDQ19NSU5PUl9fIDwgOSkpIAotI3VuZGVmIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0jZW5kaWYKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NQX05PX1NZTkMKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9IQVNfU1lOQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9pZl9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfaWZfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2M4OTI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9pZl9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcyAKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgCi0gKiBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgCi0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfSUZfQVJSQVlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfSUZfQVJSQVlfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotICAgICAgICBzdHJ1Y3Qgc3BfaWZfYXJyYXk7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBzcF9pZl9hcnJheTxUW10+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VFtdPiB0eXBlOwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3Qgc3BfaWZfc2l6ZV9hcnJheTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICAgICAgc3RydWN0IHNwX2lmX3NpemVfYXJyYXk8VFtOXT4gewotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUW05dPiB0eXBlOwotICAgICAgICB9OwotICAgIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfbnVsbHB0cl90LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9udWxscHRyX3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzQ4MDYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9udWxscHRyX3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX05VTExQVFJfVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9OVUxMUFRSX1RfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyAgZGV0YWlsL3NwX251bGxwdHJfdC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMTMgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgZGVmaW5lZCggX19jbGFuZ19fICkgJiYgIWRlZmluZWQoIF9MSUJDUFBfVkVSU0lPTiApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRSApCi0KLSAgICB0eXBlZGVmIGRlY2x0eXBlKG51bGxwdHIpIHNwX251bGxwdHJfdDsKLQotI2Vsc2UKLQotICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3Qgc3BfbnVsbHB0cl90OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX05VTExQVFJfVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2QwZDU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9zcGlubG9jay5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIHN0cnVjdCBzcGlubG9jawotLy8gIHsKLS8vICAgICAgdm9pZCBsb2NrKCk7Ci0vLyAgICAgIGJvb2wgdHJ5X2xvY2soKTsKLS8vICAgICAgdm9pZCB1bmxvY2soKTsKLS8vCi0vLyAgICAgIGNsYXNzIHNjb3BlZF9sb2NrOwotLy8gIH07Ci0vLwotLy8gICNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQgPHVuc3BlY2lmaWVkPgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHA+Ci0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9TUF9VU0VfUFRIUkVBRFMgKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wdC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoIF9fYXJtX18gKSAmJiAhZGVmaW5lZCggX190aHVtYl9fICkKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfZ2NjX2FybS5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX1NQX0hBU19TWU5DICkKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfc3luYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja193MzIuaHBwPgotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19QVEhSRUFEUykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcHQuaHBwPgotCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfVEhSRUFEUykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfbnQuaHBwPgotCi0jZWxzZQotIyAgZXJyb3IgVW5yZWNvZ25pemVkIHRocmVhZGluZyBwbGF0Zm9ybQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfZ2NjX2FybS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfZ2NjX2FybS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmMDE1YTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX2djY19hcm0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19HQ0NfQVJNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX0dDQ19BUk1fSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4LCAyMDExIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC95aWVsZF9rLmhwcD4KLQotI2lmIGRlZmluZWQoX19BUk1fQVJDSF83X18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF83QV9fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN1JfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzdNX18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF83RU1fXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzdTX18pCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSICJkbWIiCi0jIGRlZmluZSBORE5CT09TVF9TUF9BUk1fSEFTX0xEUkVYCi0KLSNlbGlmIGRlZmluZWQoX19BUk1fQVJDSF82X18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF82Sl9fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfNktfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzZaX18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF82WktfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzZUMl9fKQotCi0jIGRlZmluZSBORE5CT09TVF9TUF9BUk1fQkFSUklFUiAibWNyIHAxNSwgMCwgcjAsIGM3LCBjMTAsIDUiCi0jIGRlZmluZSBORE5CT09TVF9TUF9BUk1fSEFTX0xEUkVYCi0KLSNlbHNlCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSICIiCi0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBzcGlubG9jawotewotcHVibGljOgotCi0gICAgaW50IHZfOwotCi1wdWJsaWM6Ci0KLSAgICBib29sIHRyeV9sb2NrKCkKLSAgICB7Ci0gICAgICAgIGludCByOwotCi0jaWZkZWYgTkROQk9PU1RfU1BfQVJNX0hBU19MRFJFWAotCi0gICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAotICAgICAgICAgICAgImxkcmV4ICUwLCBbJTJdOyBcbiIKLSAgICAgICAgICAgICJjbXAgJTAsICUxOyBcbiIKLSAgICAgICAgICAgICJzdHJleG5lICUwLCAlMSwgWyUyXTsgXG4iCi0gICAgICAgICAgICBORE5CT09TVF9TUF9BUk1fQkFSUklFUiA6Ci0gICAgICAgICAgICAiPSZyIiggciApOiAvLyBvdXRwdXRzCi0gICAgICAgICAgICAiciIoIDEgKSwgInIiKCAmdl8gKTogLy8gaW5wdXRzCi0gICAgICAgICAgICAibWVtb3J5IiwgImNjIiApOwotCi0jZWxzZQotCi0gICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAotICAgICAgICAgICAgInN3cCAlMCwgJTEsIFslMl07XG4iCi0gICAgICAgICAgICBORE5CT09TVF9TUF9BUk1fQkFSUklFUiA6Ci0gICAgICAgICAgICAiPSZyIiggciApOiAvLyBvdXRwdXRzCi0gICAgICAgICAgICAiciIoIDEgKSwgInIiKCAmdl8gKTogLy8gaW5wdXRzCi0gICAgICAgICAgICAibWVtb3J5IiwgImNjIiApOwotCi0jZW5kaWYKLQotICAgICAgICByZXR1cm4gciA9PSAwOwotICAgIH0KLQotICAgIHZvaWQgbG9jaygpCi0gICAgewotICAgICAgICBmb3IoIHVuc2lnbmVkIGsgPSAwOyAhdHJ5X2xvY2soKTsgKytrICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6eWllbGQoIGsgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgdW5sb2NrKCkKLSAgICB7Ci0gICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCBORE5CT09TVF9TUF9BUk1fQkFSUklFUiA6OjogIm1lbW9yeSIgKTsKLSAgICAgICAgKmNvbnN0X2Nhc3Q8IGludCB2b2xhdGlsZSogPiggJnZfICkgPSAwOwotICAgIH0KLQotcHVibGljOgotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBzcGlubG9jayAmIHNwXzsKLQotICAgICAgICBzY29wZWRfbG9jayggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPSggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKCBzcGlubG9jayAmIHNwICk6IHNwXyggc3AgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcC5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcF8udW5sb2NrKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklUIHswfQotCi0jdW5kZWYgTkROQk9PU1RfU1BfQVJNX0JBUlJJRVIKLSN1bmRlZiBORE5CT09TVF9TUF9BUk1fSEFTX0xEUkVYCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfR0NDX0FSTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjUxNGM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfTlRfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwaW5sb2NrCi17Ci1wdWJsaWM6Ci0KLSAgICBib29sIGxvY2tlZF87Ci0KLXB1YmxpYzoKLQotICAgIGlubGluZSBib29sIHRyeV9sb2NrKCkKLSAgICB7Ci0gICAgICAgIGlmKCBsb2NrZWRfICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgbG9ja2VkXyA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlubGluZSB2b2lkIGxvY2soKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCAhbG9ja2VkXyApOwotICAgICAgICBsb2NrZWRfID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCB1bmxvY2soKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBsb2NrZWRfICk7Ci0gICAgICAgIGxvY2tlZF8gPSBmYWxzZTsKLSAgICB9Ci0KLXB1YmxpYzoKLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgc3BpbmxvY2sgJiBzcF87Ci0KLSAgICAgICAgc2NvcGVkX2xvY2soIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLSAgICAgICAgc2NvcGVkX2xvY2sgJiBvcGVyYXRvcj0oIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBleHBsaWNpdCBzY29wZWRfbG9jayggc3BpbmxvY2sgJiBzcCApOiBzcF8oIHNwICkKLSAgICAgICAgewotICAgICAgICAgICAgc3AubG9jaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNjb3BlZF9sb2NrKCkKLSAgICAgICAgewotICAgICAgICAgICAgc3BfLnVubG9jaygpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCB7IGZhbHNlIH0KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wb29sLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wb29sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA1NDliNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcG9vbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfUE9PTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19QT09MX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvc3BpbmxvY2tfcG9vbC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIHNwaW5sb2NrX3Bvb2w8MD4gaXMgcmVzZXJ2ZWQgZm9yIGF0b21pYzw+LCB3aGVuL2lmIGl0IGFycml2ZXMKLS8vICBzcGlubG9ja19wb29sPDE+IGlzIHJlc2VydmVkIGZvciBzaGFyZWRfcHRyIHJlZmVyZW5jZSBjb3VudHMKLS8vICBzcGlubG9ja19wb29sPDI+IGlzIHJlc2VydmVkIGZvciBzaGFyZWRfcHRyIGF0b21pYyBhY2Nlc3MKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXRlbXBsYXRlPCBpbnQgSSA+IGNsYXNzIHNwaW5sb2NrX3Bvb2wKLXsKLXByaXZhdGU6Ci0KLSAgICBzdGF0aWMgc3BpbmxvY2sgcG9vbF9bIDQxIF07Ci0KLXB1YmxpYzoKLQotICAgIHN0YXRpYyBzcGlubG9jayAmIHNwaW5sb2NrX2Zvciggdm9pZCBjb25zdCAqIHB2ICkKLSAgICB7Ci0jaWYgZGVmaW5lZChfX1ZNUykgJiYgX19JTklUSUFMX1BPSU5URVJfU0laRSA9PSA2NCAgCi0gICAgICAgIHN0ZDo6c2l6ZV90IGkgPSByZWludGVycHJldF9jYXN0PCB1bnNpZ25lZCBsb25nIGxvbmcgPiggcHYgKSAlIDQxOwotI2Vsc2UgIAotICAgICAgICBzdGQ6OnNpemVfdCBpID0gcmVpbnRlcnByZXRfY2FzdDwgc3RkOjpzaXplX3QgPiggcHYgKSAlIDQxOwotI2VuZGlmICAKLSAgICAgICAgcmV0dXJuIHBvb2xfWyBpIF07Ci0gICAgfQotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBzcGlubG9jayAmIHNwXzsKLQotICAgICAgICBzY29wZWRfbG9jayggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPSggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKCB2b2lkIGNvbnN0ICogcHYgKTogc3BfKCBzcGlubG9ja19mb3IoIHB2ICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcF8ubG9jaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNjb3BlZF9sb2NrKCkKLSAgICAgICAgewotICAgICAgICAgICAgc3BfLnVubG9jaygpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgSSA+IHNwaW5sb2NrIHNwaW5sb2NrX3Bvb2w8IEkgPjo6cG9vbF9bIDQxIF0gPQotewotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgCi0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgCi0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgCi0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVAotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1BPT0xfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3B0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJmMzAwMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1BUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1BUX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwaW5sb2NrCi17Ci1wdWJsaWM6Ci0KLSAgICBwdGhyZWFkX211dGV4X3Qgdl87Ci0KLXB1YmxpYzoKLQotICAgIGJvb2wgdHJ5X2xvY2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHB0aHJlYWRfbXV0ZXhfdHJ5bG9jayggJnZfICkgPT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIGxvY2soKQotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCAmdl8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHVubG9jaygpCi0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayggJnZfICk7Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHNwaW5sb2NrICYgc3BfOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgZXhwbGljaXQgc2NvcGVkX2xvY2soIHNwaW5sb2NrICYgc3AgKTogc3BfKCBzcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwLmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwXy51bmxvY2soKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQgeyBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSIH0KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19QVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19zeW5jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19zeW5jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFmMzIxZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfc3luYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfU1lOQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19TWU5DX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3lpZWxkX2suaHBwPgotCi0jaWYgZGVmaW5lZCggX19pYTY0X18gKSAmJiBkZWZpbmVkKCBfX0lOVEVMX0NPTVBJTEVSICkKLSMgaW5jbHVkZSA8aWE2NGludHJpbi5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwaW5sb2NrCi17Ci1wdWJsaWM6Ci0KLSAgICBpbnQgdl87Ci0KLXB1YmxpYzoKLQotICAgIGJvb2wgdHJ5X2xvY2soKQotICAgIHsKLSAgICAgICAgaW50IHIgPSBfX3N5bmNfbG9ja190ZXN0X2FuZF9zZXQoICZ2XywgMSApOwotICAgICAgICByZXR1cm4gciA9PSAwOwotICAgIH0KLQotICAgIHZvaWQgbG9jaygpCi0gICAgewotICAgICAgICBmb3IoIHVuc2lnbmVkIGsgPSAwOyAhdHJ5X2xvY2soKTsgKytrICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6eWllbGQoIGsgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgdW5sb2NrKCkKLSAgICB7Ci0gICAgICAgIF9fc3luY19sb2NrX3JlbGVhc2UoICZ2XyApOwotICAgIH0KLQotcHVibGljOgotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBzcGlubG9jayAmIHNwXzsKLQotICAgICAgICBzY29wZWRfbG9jayggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPSggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKCBzcGlubG9jayAmIHNwICk6IHNwXyggc3AgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcC5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcF8udW5sb2NrKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklUIHswfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1NZTkNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfdzMyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja193MzIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjFlM2IwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja193MzIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19XMzJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfVzMyX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaW50ZXJsb2NrZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwveWllbGRfay5ocHA+Ci0KLS8vIE5ETkJPT1NUX0NPTVBJTEVSX0ZFTkNFCi0KLSNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfRkVOQ0UgX19tZW1vcnlfYmFycmllcigpOwotCi0jZWxpZiBkZWZpbmVkKCBfTVNDX1ZFUiApICYmIF9NU0NfVkVSID49IDEzMTAKLQotZXh0ZXJuICJDIiB2b2lkIF9SZWFkV3JpdGVCYXJyaWVyKCk7Ci0jcHJhZ21hIGludHJpbnNpYyggX1JlYWRXcml0ZUJhcnJpZXIgKQotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0ZFTkNFIF9SZWFkV3JpdGVCYXJyaWVyKCk7Ci0KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfRkVOQ0UgX19hc21fXyBfX3ZvbGF0aWxlX18oICIiIDogOiA6ICJtZW1vcnkiICk7Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfRkVOQ0UKLQotI2VuZGlmCi0KLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwaW5sb2NrCi17Ci1wdWJsaWM6Ci0KLSAgICBsb25nIHZfOwotCi1wdWJsaWM6Ci0KLSAgICBib29sIHRyeV9sb2NrKCkKLSAgICB7Ci0gICAgICAgIGxvbmcgciA9IE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFKCAmdl8sIDEgKTsKLQotICAgICAgICBORE5CT09TVF9DT01QSUxFUl9GRU5DRQotCi0gICAgICAgIHJldHVybiByID09IDA7Ci0gICAgfQotCi0gICAgdm9pZCBsb2NrKCkKLSAgICB7Ci0gICAgICAgIGZvciggdW5zaWduZWQgayA9IDA7ICF0cnlfbG9jaygpOyArK2sgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjp5aWVsZCggayApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB1bmxvY2soKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQ09NUElMRVJfRkVOQ0UKLSAgICAgICAgKmNvbnN0X2Nhc3Q8IGxvbmcgdm9sYXRpbGUqID4oICZ2XyApID0gMDsKLSAgICB9Ci0KLXB1YmxpYzoKLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgc3BpbmxvY2sgJiBzcF87Ci0KLSAgICAgICAgc2NvcGVkX2xvY2soIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLSAgICAgICAgc2NvcGVkX2xvY2sgJiBvcGVyYXRvcj0oIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBleHBsaWNpdCBzY29wZWRfbG9jayggc3BpbmxvY2sgJiBzcCApOiBzcF8oIHNwICkKLSAgICAgICAgewotICAgICAgICAgICAgc3AubG9jaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNjb3BlZF9sb2NrKCkKLSAgICAgICAgewotICAgICAgICAgICAgc3BfLnVubG9jaygpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCB7MH0KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19XMzJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwveWllbGRfay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwveWllbGRfay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmY2Q3OTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3lpZWxkX2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9ZSUVMRF9LX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1lJRUxEX0tfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIHlpZWxkX2suaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICB2b2lkIHlpZWxkKCB1bnNpZ25lZCBrICk7Ci0vLwotLy8gIFR5cGljYWwgdXNlOgotLy8KLS8vICBmb3IoIHVuc2lnbmVkIGsgPSAwOyAhdHJ5X2xvY2soKTsgKytrICkgeWllbGQoIGsgKTsKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIE5ETkJPT1NUX1NNVF9QQVVTRQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTMxMCAmJiAoIGRlZmluZWQoX01fSVg4NikgfHwgZGVmaW5lZChfTV9YNjQpICkKLQotZXh0ZXJuICJDIiB2b2lkIF9tbV9wYXVzZSgpOwotI3ByYWdtYSBpbnRyaW5zaWMoIF9tbV9wYXVzZSApCi0KLSNkZWZpbmUgTkROQk9PU1RfU01UX1BBVVNFIF9tbV9wYXVzZSgpOwotCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgKQotCi0jZGVmaW5lIE5ETkJPT1NUX1NNVF9QQVVTRSBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcDsgbm9wIiA6IDogOiAibWVtb3J5IiApOwotCi0jZW5kaWYKLQotLy8KLQotI2lmIGRlZmluZWQoIFdJTjMyICkgfHwgZGVmaW5lZCggX1dJTjMyICkgfHwgZGVmaW5lZCggX19XSU4zMl9fICkgfHwgZGVmaW5lZCggX19DWUdXSU5fXyApCi0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9VU0VfV0lORE9XU19IICkKLSMgaW5jbHVkZSA8d2luZG93cy5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfVVNFX1dJTkRPV1NfSCApCi0gIGV4dGVybiAiQyIgdm9pZCBfX3N0ZGNhbGwgU2xlZXAoIHVuc2lnbmVkIGxvbmcgbXMgKTsKLSNlbmRpZgotCi1pbmxpbmUgdm9pZCB5aWVsZCggdW5zaWduZWQgayApCi17Ci0gICAgaWYoIGsgPCA0ICkKLSAgICB7Ci0gICAgfQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX1NNVF9QQVVTRSApCi0gICAgZWxzZSBpZiggayA8IDE2ICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NNVF9QQVVTRQotICAgIH0KLSNlbmRpZgotICAgIGVsc2UgaWYoIGsgPCAzMiApCi0gICAgewotICAgICAgICBTbGVlcCggMCApOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBTbGVlcCggMSApOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX0hBU19QVEhSRUFEUyApCi0KLSNpbmNsdWRlIDxzY2hlZC5oPgotI2luY2x1ZGUgPHRpbWUuaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgeWllbGQoIHVuc2lnbmVkIGsgKQotewotICAgIGlmKCBrIDwgNCApCi0gICAgewotICAgIH0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9TTVRfUEFVU0UgKQotICAgIGVsc2UgaWYoIGsgPCAxNiApCi0gICAgewotICAgICAgICBORE5CT09TVF9TTVRfUEFVU0UKLSAgICB9Ci0jZW5kaWYKLSAgICBlbHNlIGlmKCBrIDwgMzIgfHwgayAmIDEgKQotICAgIHsKLSAgICAgICAgc2NoZWRfeWllbGQoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgLy8gZysrIC1XZXh0cmEgd2FybnMgb24ge30gb3IgezB9Ci0gICAgICAgIHN0cnVjdCB0aW1lc3BlYyBycXRwID0geyAwLCAwIH07Ci0KLSAgICAgICAgLy8gUE9TSVggc2F5cyB0aGF0IHRpbWVzcGVjIGhhcyB0dl9zZWMgYW5kIHR2X25zZWMKLSAgICAgICAgLy8gQnV0IGl0IGRvZXNuJ3QgZ3VhcmFudGVlIG9yZGVyIG9yIHBsYWNlbWVudAotCi0gICAgICAgIHJxdHAudHZfc2VjID0gMDsKLSAgICAgICAgcnF0cC50dl9uc2VjID0gMTAwMDsKLQotICAgICAgICBuYW5vc2xlZXAoICZycXRwLCAwICk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2Vsc2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgeWllbGQoIHVuc2lnbmVkICkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1lJRUxEX0tfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwYTkxOTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfTUFLRV9TSEFSRURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9IUFBfSU5DTFVERUQKLQotLy8gIG1ha2Vfc2hhcmVkLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDgsIDIwMTIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvbWFrZV9zaGFyZWQuaHRtbAotLy8gIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkX29iamVjdC5ocHA+Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19TRklOQUUgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWRfYXJyYXkuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvYWxsb2NhdGVfc2hhcmVkX2FycmF5LmhwcD4KLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfTUFLRV9TSEFSRURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzOTk4ZWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWRfYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR2xlbiBKb3NlcGggRmVybmFuZGVzCi0gKiBnbGVuZmUgYXQgbGl2ZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0gKiBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQKLSAqIG9yIGNvcHkgYXQgaHR0cDovL2Jvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKi8KLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX01BS0VfU0hBUkVEX0FSUkFZX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfTUFLRV9TSEFSRURfQVJSQVlfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV9kZWxldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9tYWtlX2FycmF5X2hlbHBlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9pZl9hcnJheS5ocHA+Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0jaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQoc3RkOjpzaXplX3Qgc2l6ZSkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IHNpemUgKiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW10+IGExKG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0KHAyKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChzdGQ6OnNpemVfdCBzaXplLCBBcmdzJiYuLi4gYXJncykgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IHNpemUgKiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW10+IGExKG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0KHAyLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChBcmdzJiYuLi4gYXJncykgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltOXT4gYTEoJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQoY29uc3QgVCYgbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBUMyogcDMgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltOXT4gYTEoJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDMgPSByZWludGVycHJldF9jYXN0PFQzKj4obGlzdCk7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0X2xpc3QocDIsIHAzKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQoc3RkOjpzaXplX3Qgc2l6ZSwKLSAgICAgICAgY29uc3QgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUmIGxpc3QpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUMiBUMzsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBNID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIFQzKiBwMyA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gTSAqIHNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW10+IGExKG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAzID0gcmVpbnRlcnByZXRfY2FzdDxUMyo+KGxpc3QpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+dGVtcGxhdGUgaW5pdF9saXN0PE0+KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQoY29uc3QgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUmIGxpc3QpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUMiBUMzsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBNID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplLAotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIFQzKiBwMyA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW05dPiBhMSgmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0KTsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPnRlbXBsYXRlIGluaXRfbGlzdDxNPihwMiwgcDMpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGU+IGxpc3QpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBUMiBUMzsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBsaXN0LnNpemUoKSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDMgPSByZWludGVycHJldF9jYXN0PFQzKj4obGlzdC5iZWdpbigpKTsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXRfbGlzdChwMiwgcDMpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKHN0ZDo6c2l6ZV90IHNpemUsCi0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VD46OnR5cGUmJiB2YWx1ZSkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IHNpemUgKiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW10+IGExKG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5pbml0KHAyLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPFQyPih2YWx1ZSkpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VD46OnR5cGUmJiB2YWx1ZSkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltOXT4gYTEoJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8VDI+KHZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNlbmRpZgotI2VuZGlmCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZF9ub2luaXQoc3RkOjpzaXplX3Qgc2l6ZSkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IHNpemUgKiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemU7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW10+IGExKG4xLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+IGQxKG4xKTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5ub2luaXQocDIpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkX25vaW5pdCgpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbTl0+IGExKCZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5ub2luaXQocDIpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWRfb2JqZWN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkX29iamVjdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MDRkNTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWRfb2JqZWN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMzIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfTUFLRV9TSEFSRURfT0JKRUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfTUFLRV9TSEFSRURfT0JKRUNUX0hQUF9JTkNMVURFRAotCi0vLyAgbWFrZV9zaGFyZWRfb2JqZWN0LmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDgsIDIwMTIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvbWFrZV9zaGFyZWQuaHRtbAotLy8gIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9mb3J3YXJkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy90eXBlX3dpdGhfYWxpZ25tZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8bmV3PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi10ZW1wbGF0ZTwgc3RkOjpzaXplX3QgTiwgc3RkOjpzaXplX3QgQSA+IHN0cnVjdCBzcF9hbGlnbmVkX3N0b3JhZ2UKLXsKLSAgICB1bmlvbiB0eXBlCi0gICAgewotICAgICAgICBjaGFyIGRhdGFfWyBOIF07Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX3dpdGhfYWxpZ25tZW50PCBBID46OnR5cGUgYWxpZ25fOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IGNsYXNzIHNwX21zX2RlbGV0ZXIKLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNwX2FsaWduZWRfc3RvcmFnZTwgc2l6ZW9mKCBUICksIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjwgVCA+Ojp2YWx1ZSA+Ojp0eXBlIHN0b3JhZ2VfdHlwZTsKLQotICAgIGJvb2wgaW5pdGlhbGl6ZWRfOwotICAgIHN0b3JhZ2VfdHlwZSBzdG9yYWdlXzsKLQotcHJpdmF0ZToKLQotICAgIHZvaWQgZGVzdHJveSgpCi0gICAgewotICAgICAgICBpZiggaW5pdGlhbGl6ZWRfICkKLSAgICAgICAgewotI2lmIGRlZmluZWQoIF9fR05VQ19fICkKLQotICAgICAgICAgICAgLy8gZml4ZXMgaW5jb3JyZWN0IGFsaWFzaW5nIHdhcm5pbmcKLSAgICAgICAgICAgIFQgKiBwID0gcmVpbnRlcnByZXRfY2FzdDwgVCogPiggc3RvcmFnZV8uZGF0YV8gKTsKLSAgICAgICAgICAgIHAtPn5UKCk7Ci0KLSNlbHNlCi0KLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8IFQqID4oIHN0b3JhZ2VfLmRhdGFfICktPn5UKCk7Ci0KLSNlbmRpZgotCi0gICAgICAgICAgICBpbml0aWFsaXplZF8gPSBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotcHVibGljOgotCi0gICAgc3BfbXNfZGVsZXRlcigpIE5ETkJPT1NUX05PRVhDRVBUIDogaW5pdGlhbGl6ZWRfKCBmYWxzZSApCi0gICAgewotICAgIH0KLQotICAgIC8vIG9wdGltaXphdGlvbjogZG8gbm90IGNvcHkgc3RvcmFnZV8KLSAgICBzcF9tc19kZWxldGVyKCBzcF9tc19kZWxldGVyIGNvbnN0ICYgKSBORE5CT09TVF9OT0VYQ0VQVCA6IGluaXRpYWxpemVkXyggZmFsc2UgKQotICAgIHsKLSAgICB9Ci0KLSAgICB+c3BfbXNfZGVsZXRlcigpCi0gICAgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvcigpKCBUICogKQotICAgIHsKLSAgICAgICAgZGVzdHJveSgpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIG9wZXJhdG9yX2ZuKCBUKiApIC8vIG9wZXJhdG9yKCkgY2FuJ3QgYmUgc3RhdGljCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgKiBhZGRyZXNzKCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdG9yYWdlXy5kYXRhXzsKLSAgICB9Ci0KLSAgICB2b2lkIHNldF9pbml0aWFsaXplZCgpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBpbml0aWFsaXplZF8gPSB0cnVlOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2lmX25vdF9hcnJheQotewotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfaWZfbm90X2FycmF5PCBUW10gPgotewotfTsKLQotI2lmICFkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSB8fCAhTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCA8IDB4NjAwICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4gPiBzdHJ1Y3Qgc3BfaWZfbm90X2FycmF5PCBUW05dID4KLXsKLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcgKQotIyBkZWZpbmUgTkROQk9PU1RfU1BfTVNEKCBUICkgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaW5wbGFjZV90YWc8IG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiA+KCkKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9TUF9NU0QoIFQgKSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4oKQotI2VuZGlmCi0KLS8vIFplcm8tYXJndW1lbnQgdmVyc2lvbnMKLS8vCi0vLyBVc2VkIGV2ZW4gd2hlbiB2YXJpYWRpYyB0ZW1wbGF0ZXMgYXJlIGF2YWlsYWJsZSBiZWNhdXNlIG9mIHRoZSBuZXcgVCgpIHZzIG5ldyBUIGlzc3VlCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4gdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWRfbm9pbml0KCkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEgPiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSA+IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZF9ub2luaXQoIEEgY29uc3QgJiBhICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0vLyBWYXJpYWRpYyB0ZW1wbGF0ZXMsIHJ2YWx1ZSByZWZlcmVuY2UKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEFyZzEsIGNsYXNzLi4uIEFyZ3MgPiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQXJnMSAmJiBhcmcxLCBBcmdzICYmIC4uLiBhcmdzICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEFyZzE+KCBhcmcxICksIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJncz4oIGFyZ3MgKS4uLiApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEFyZzEsIGNsYXNzLi4uIEFyZ3MgPiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBcmcxICYmIGFyZzEsIEFyZ3MgJiYgLi4uIGFyZ3MgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJnMT4oIGFyZzEgKSwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmdzPiggYXJncyApLi4uICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi0jZWxpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0vLyBGb3IgZXhhbXBsZSBNU1ZDIDEwLjAKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExICYmIGExICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgJiYgYTEsIEEyICYmIGEyICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMyA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE1PiggYTUgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE1PiggYTUgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTY+KCBhNiApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSwgQTYgJiYgYTYgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2LCBBNyAmJiBhNyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE1PiggYTUgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTY+KCBhNiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNz4oIGE3ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSwgQTYgJiYgYTYsIEE3ICYmIGE3ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE1PiggYTUgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTY+KCBhNiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNz4oIGE3ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiwgQTcgJiYgYTcsIEE4ICYmIGE4ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE3PiggYTcgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTg+KCBhOCApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTggPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiwgQTcgJiYgYTcsIEE4ICYmIGE4ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE1PiggYTUgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTY+KCBhNiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNz4oIGE3ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE4PiggYTggKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiwgQTcgJiYgYTcsIEE4ICYmIGE4LCBBOSAmJiBhOSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMT4oIGExICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEyPiggYTIgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTM+KCBhMyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBND4oIGE0ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE1PiggYTUgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTY+KCBhNiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNz4oIGE3ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE4PiggYTggKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTk+KCBhOSApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSwgQTYgJiYgYTYsIEE3ICYmIGE3LCBBOCAmJiBhOCwgQTkgJiYgYTkgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE3PiggYTcgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTg+KCBhOCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBOT4oIGE5ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotI2Vsc2UKLQotLy8gQysrMDMgdmVyc2lvbgotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgY29uc3QgJiBhMSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMyA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTggPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTggKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTggKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4LCBBOSBjb25zdCAmIGE5ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4LCBBOSBjb25zdCAmIGE5ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1NQX01TRAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfTUFLRV9TSEFSRURfT0JKRUNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2NvcGVkX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3Njb3BlZF9hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxOGQ0YzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2NvcGVkX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TQ09QRURfQVJSQVlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9TQ09QRURfQVJSQVlfSFBQX0lOQ0xVREVECi0KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2NvcGVkX2FycmF5Lmh0bQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9udWxscHRyX3QuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAvLyBmb3Igc3RkOjpwdHJkaWZmX3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLS8vIERlYnVnIGhvb2tzCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLQotdm9pZCBzcF9hcnJheV9jb25zdHJ1Y3Rvcl9ob29rKHZvaWQgKiBwKTsKLXZvaWQgc3BfYXJyYXlfZGVzdHJ1Y3Rvcl9ob29rKHZvaWQgKiBwKTsKLQotI2VuZGlmCi0KLS8vICBzY29wZWRfYXJyYXkgZXh0ZW5kcyBzY29wZWRfcHRyIHRvIGFycmF5cy4gRGVsZXRpb24gb2YgdGhlIGFycmF5IHBvaW50ZWQgdG8KLS8vICBpcyBndWFyYW50ZWVkLCBlaXRoZXIgb24gZGVzdHJ1Y3Rpb24gb2YgdGhlIHNjb3BlZF9hcnJheSBvciB2aWEgYW4gZXhwbGljaXQKLS8vICByZXNldCgpLiBVc2Ugc2hhcmVkX2FycmF5IG9yIHN0ZDo6dmVjdG9yIGlmIHlvdXIgbmVlZHMgYXJlIG1vcmUgY29tcGxleC4KLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgc2NvcGVkX2FycmF5IC8vIG5vbmNvcHlhYmxlCi17Ci1wcml2YXRlOgotCi0gICAgVCAqIHB4OwotCi0gICAgc2NvcGVkX2FycmF5KHNjb3BlZF9hcnJheSBjb25zdCAmKTsKLSAgICBzY29wZWRfYXJyYXkgJiBvcGVyYXRvcj0oc2NvcGVkX2FycmF5IGNvbnN0ICYpOwotCi0gICAgdHlwZWRlZiBzY29wZWRfYXJyYXk8VD4gdGhpc190eXBlOwotCi0gICAgdm9pZCBvcGVyYXRvcj09KCBzY29wZWRfYXJyYXkgY29uc3QmICkgY29uc3Q7Ci0gICAgdm9pZCBvcGVyYXRvciE9KCBzY29wZWRfYXJyYXkgY29uc3QmICkgY29uc3Q7Ci0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgVCBlbGVtZW50X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBzY29wZWRfYXJyYXkoIFQgKiBwID0gMCApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHAgKQotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgbmRuYm9vc3Q6OnNwX2FycmF5X2NvbnN0cnVjdG9yX2hvb2soIHB4ICk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB+c2NvcGVkX2FycmF5KCkgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBuZG5ib29zdDo6c3BfYXJyYXlfZGVzdHJ1Y3Rvcl9ob29rKCBweCApOwotI2VuZGlmCi0gICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2FycmF5X2RlbGV0ZSggcHggKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc2V0KFQgKiBwID0gMCkgLy8gbmV2ZXIgdGhyb3dzIChidXQgaGFzIGEgTkROQk9PU1RfQVNTRVJUIGluIGl0LCBzbyBub3QgbWFya2VkIHdpdGggTkROQk9PU1RfTk9FWENFUFQpCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHAgPT0gMCB8fCBwICE9IHB4ICk7IC8vIGNhdGNoIHNlbGYtcmVzZXQgZXJyb3JzCi0gICAgICAgIHRoaXNfdHlwZShwKS5zd2FwKCp0aGlzKTsKLSAgICB9Ci0KLSAgICBUICYgb3BlcmF0b3JbXShzdGQ6OnB0cmRpZmZfdCBpKSBjb25zdCAvLyBuZXZlciB0aHJvd3MgKGJ1dCBoYXMgYSBORE5CT09TVF9BU1NFUlQgaW4gaXQsIHNvIG5vdCBtYXJrZWQgd2l0aCBORE5CT09TVF9OT0VYQ0VQVCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcHggIT0gMCApOwotICAgICAgICBORE5CT09TVF9BU1NFUlQoIGkgPj0gMCApOwotICAgICAgICByZXR1cm4gcHhbaV07Ci0gICAgfQotCi0gICAgVCAqIGdldCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0vLyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvICJib29sIgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvb3BlcmF0b3JfYm9vbC5ocHA+Ci0KLSAgICB2b2lkIHN3YXAoc2NvcGVkX2FycmF5ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIFQgKiB0bXAgPSBiLnB4OwotICAgICAgICBiLnB4ID0gcHg7Ci0gICAgICAgIHB4ID0gdG1wOwotICAgIH0KLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIHNjb3BlZF9hcnJheTxUPiBjb25zdCAmIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgPT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90LCBzY29wZWRfYXJyYXk8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBzY29wZWRfYXJyYXk8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2NvcGVkX2FycmF5PFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgIT0gMDsKLX0KLQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHN3YXAoc2NvcGVkX2FycmF5PFQ+ICYgYSwgc2NvcGVkX2FycmF5PFQ+ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfU0NPUEVEX0FSUkFZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2NvcGVkX3B0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfcHRyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc5YjM5My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TQ09QRURfUFRSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfU0NPUEVEX1BUUl9IUFBfSU5DTFVERUQKLQotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zY29wZWRfcHRyLmh0bQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9udWxscHRyX3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19BVVRPX1BUUgotIyBpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgIC8vIGZvciBzdGQ6OmF1dG9fcHRyCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLS8vIERlYnVnIGhvb2tzCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLQotdm9pZCBzcF9zY2FsYXJfY29uc3RydWN0b3JfaG9vayh2b2lkICogcCk7Ci12b2lkIHNwX3NjYWxhcl9kZXN0cnVjdG9yX2hvb2sodm9pZCAqIHApOwotCi0jZW5kaWYKLQotLy8gIHNjb3BlZF9wdHIgbWltaWNzIGEgYnVpbHQtaW4gcG9pbnRlciBleGNlcHQgdGhhdCBpdCBndWFyYW50ZWVzIGRlbGV0aW9uCi0vLyAgb2YgdGhlIG9iamVjdCBwb2ludGVkIHRvLCBlaXRoZXIgb24gZGVzdHJ1Y3Rpb24gb2YgdGhlIHNjb3BlZF9wdHIgb3IgdmlhCi0vLyAgYW4gZXhwbGljaXQgcmVzZXQoKS4gc2NvcGVkX3B0ciBpcyBhIHNpbXBsZSBzb2x1dGlvbiBmb3Igc2ltcGxlIG5lZWRzOwotLy8gIHVzZSBzaGFyZWRfcHRyIG9yIHN0ZDo6YXV0b19wdHIgaWYgeW91ciBuZWVkcyBhcmUgbW9yZSBjb21wbGV4LgotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBzY29wZWRfcHRyIC8vIG5vbmNvcHlhYmxlCi17Ci1wcml2YXRlOgotCi0gICAgVCAqIHB4OwotCi0gICAgc2NvcGVkX3B0cihzY29wZWRfcHRyIGNvbnN0ICYpOwotICAgIHNjb3BlZF9wdHIgJiBvcGVyYXRvcj0oc2NvcGVkX3B0ciBjb25zdCAmKTsKLQotICAgIHR5cGVkZWYgc2NvcGVkX3B0cjxUPiB0aGlzX3R5cGU7Ci0KLSAgICB2b2lkIG9wZXJhdG9yPT0oIHNjb3BlZF9wdHIgY29uc3QmICkgY29uc3Q7Ci0gICAgdm9pZCBvcGVyYXRvciE9KCBzY29wZWRfcHRyIGNvbnN0JiApIGNvbnN0OwotCi1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFQgZWxlbWVudF90eXBlOwotCi0gICAgZXhwbGljaXQgc2NvcGVkX3B0ciggVCAqIHAgPSAwICk6IHB4KCBwICkgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBuZG5ib29zdDo6c3Bfc2NhbGFyX2NvbnN0cnVjdG9yX2hvb2soIHB4ICk7Ci0jZW5kaWYKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVVUT19QVFIKLQotICAgIGV4cGxpY2l0IHNjb3BlZF9wdHIoIHN0ZDo6YXV0b19wdHI8VD4gcCApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHAucmVsZWFzZSgpICkKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIG5kbmJvb3N0OjpzcF9zY2FsYXJfY29uc3RydWN0b3JfaG9vayggcHggKTsKLSNlbmRpZgotICAgIH0KLQotI2VuZGlmCi0KLSAgICB+c2NvcGVkX3B0cigpIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgbmRuYm9vc3Q6OnNwX3NjYWxhcl9kZXN0cnVjdG9yX2hvb2soIHB4ICk7Ci0jZW5kaWYKLSAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfZGVsZXRlKCBweCApOwotICAgIH0KLQotICAgIHZvaWQgcmVzZXQoVCAqIHAgPSAwKSAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcCA9PSAwIHx8IHAgIT0gcHggKTsgLy8gY2F0Y2ggc2VsZi1yZXNldCBlcnJvcnMKLSAgICAgICAgdGhpc190eXBlKHApLnN3YXAoKnRoaXMpOwotICAgIH0KLQotICAgIFQgJiBvcGVyYXRvciooKSBjb25zdCAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcHggIT0gMCApOwotICAgICAgICByZXR1cm4gKnB4OwotICAgIH0KLQotICAgIFQgKiBvcGVyYXRvci0+KCkgY29uc3QgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHB4ICE9IDAgKTsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotICAgIFQgKiBnZXQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotLy8gaW1wbGljaXQgY29udmVyc2lvbiB0byAiYm9vbCIKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL29wZXJhdG9yX2Jvb2wuaHBwPgotCi0gICAgdm9pZCBzd2FwKHNjb3BlZF9wdHIgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgVCAqIHRtcCA9IGIucHg7Ci0gICAgICAgIGIucHggPSBweDsKLSAgICAgICAgcHggPSB0bXA7Ci0gICAgfQotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggc2NvcGVkX3B0cjxUPiBjb25zdCAmIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgPT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90LCBzY29wZWRfcHRyPFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgPT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggc2NvcGVkX3B0cjxUPiBjb25zdCAmIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgIT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90LCBzY29wZWRfcHRyPFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgIT0gMDsKLX0KLQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHN3YXAoc2NvcGVkX3B0cjxUPiAmIGEsIHNjb3BlZF9wdHI8VD4gJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIGEuc3dhcChiKTsKLX0KLQotLy8gZ2V0X3BvaW50ZXIocCkgaXMgYSBnZW5lcmljIHdheSB0byBzYXkgcC5nZXQoKQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgVCAqIGdldF9wb2ludGVyKHNjb3BlZF9wdHI8VD4gY29uc3QgJiBwKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfU0NPUEVEX1BUUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWRlZjEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTAgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfU0hBUkVEX0FSUkFZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfU0hBUkVEX0FSUkFZX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHNoYXJlZF9hcnJheS5ocHAKLS8vCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMTIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zaGFyZWRfYXJyYXkuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgLy8gZm9yIGJyb2tlbiBjb21waWxlciB3b3JrYXJvdW5kcwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTKQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2FycmF5X25tdC5ocHA+Ci0jZWxzZQotCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgICAvLyBUUjEgY3ljbGljIGluY2x1c2lvbiBmaXgKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2NvdW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAvLyBmb3Igc3RkOjpwdHJkaWZmX3QKLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgIC8vIGZvciBzdGQ6OnN3YXAKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPiAgICAgICAgIC8vIGZvciBzdGQ6Omxlc3MKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLS8vCi0vLyAgc2hhcmVkX2FycmF5Ci0vLwotLy8gIHNoYXJlZF9hcnJheSBleHRlbmRzIHNoYXJlZF9wdHIgdG8gYXJyYXlzLgotLy8gIFRoZSBhcnJheSBwb2ludGVkIHRvIGlzIGRlbGV0ZWQgd2hlbiB0aGUgbGFzdCBzaGFyZWRfYXJyYXkgcG9pbnRpbmcgdG8gaXQKLS8vICBpcyBkZXN0cm95ZWQgb3IgcmVzZXQuCi0vLwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBzaGFyZWRfYXJyYXkKLXsKLXByaXZhdGU6Ci0KLSAgICAvLyBCb3JsYW5kIDUuNS4xIHNwZWNpZmljIHdvcmthcm91bmRzCi0gICAgdHlwZWRlZiBjaGVja2VkX2FycmF5X2RlbGV0ZXI8VD4gZGVsZXRlcjsKLSAgICB0eXBlZGVmIHNoYXJlZF9hcnJheTxUPiB0aGlzX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgVCBlbGVtZW50X3R5cGU7Ci0KLSAgICBzaGFyZWRfYXJyYXkoKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCAwICksIHBuKCkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBleHBsaWNpdCBzaGFyZWRfYXJyYXkoIFkgKiBwICk6IHB4KCBwICksIHBuKCBwLCBjaGVja2VkX2FycmF5X2RlbGV0ZXI8WT4oKSApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFlbXSwgVFtdID4oKTsKLSAgICB9Ci0KLSAgICAvLwotICAgIC8vIFJlcXVpcmVtZW50czogRCdzIGNvcHkgY29uc3RydWN0b3IgbXVzdCBub3QgdGhyb3cKLSAgICAvLwotICAgIC8vIHNoYXJlZF9hcnJheSB3aWxsIHJlbGVhc2UgcCBieSBjYWxsaW5nIGQocCkKLSAgICAvLwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRD4gc2hhcmVkX2FycmF5KCBZICogcCwgRCBkICk6IHB4KCBwICksIHBuKCBwLCBkICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPigpOwotICAgIH0KLQotICAgIC8vIEFzIGFib3ZlLCBidXQgd2l0aCBhbGxvY2F0b3IuIEEncyBjb3B5IGNvbnN0cnVjdG9yIHNoYWxsIG5vdCB0aHJvdy4KLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQsIGNsYXNzIEE+IHNoYXJlZF9hcnJheSggWSAqIHAsIEQgZCwgQSBhICk6IHB4KCBwICksIHBuKCBwLCBkLCBhICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPigpOwotICAgIH0KLQotLy8gIGdlbmVyYXRlZCBjb3B5IGNvbnN0cnVjdG9yLCBkZXN0cnVjdG9yIGFyZSBmaW5lLi4uCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0vLyAuLi4gZXhjZXB0IGluIEMrKzB4LCBtb3ZlIGRpc2FibGVzIHRoZSBpbXBsaWNpdCBjb3B5Ci0KLSAgICBzaGFyZWRfYXJyYXkoIHNoYXJlZF9hcnJheSBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCByLnBuICkKLSAgICB7Ci0gICAgfQotCi0gICAgc2hhcmVkX2FycmF5KCBzaGFyZWRfYXJyYXkgJiYgciApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oKQotICAgIHsKLSAgICAgICAgcG4uc3dhcCggci5wbiApOwotICAgICAgICByLnB4ID0gMDsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8gY29udmVyc2lvbgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0gICAgc2hhcmVkX2FycmF5KCBzaGFyZWRfYXJyYXk8WT4gY29uc3QgJiByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfY29udmVydGlibGU8IFlbXSwgVFtdID46OnR5cGUgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbXB0eSgpICkKLQotI2Vsc2UKLQotICAgIHNoYXJlZF9hcnJheSggc2hhcmVkX2FycmF5PFk+IGNvbnN0ICYgciApCi0KLSNlbmRpZgotICAgIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oIHIucG4gKSAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPigpOwotICAgIH0KLQotICAgIC8vIGFsaWFzaW5nCi0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgWSA+Ci0gICAgc2hhcmVkX2FycmF5KCBzaGFyZWRfYXJyYXk8WT4gY29uc3QgJiByLCBlbGVtZW50X3R5cGUgKiBwICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggcCApLCBwbiggci5wbiApCi0gICAgewotICAgIH0KLQotICAgIC8vIGFzc2lnbm1lbnQKLQotICAgIHNoYXJlZF9hcnJheSAmIG9wZXJhdG9yPSggc2hhcmVkX2FycmF5IGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHIgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgKE5ETkJPT1NUX01TVkMgPj0gMTQwMCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX2FycmF5ICYgb3BlcmF0b3I9KCBzaGFyZWRfYXJyYXk8WT4gY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggciApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHNoYXJlZF9hcnJheSAmIG9wZXJhdG9yPSggc2hhcmVkX2FycmF5ICYmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBzdGF0aWNfY2FzdDwgc2hhcmVkX2FycmF5ICYmID4oIHIgKSApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHNoYXJlZF9hcnJheSAmIG9wZXJhdG9yPSggc2hhcmVkX2FycmF5PFk+ICYmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBzdGF0aWNfY2FzdDwgc2hhcmVkX2FycmF5PFk+ICYmID4oIHIgKSApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdm9pZCByZXNldCgpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IHZvaWQgcmVzZXQoIFkgKiBwICkgLy8gWSBtdXN0IGJlIGNvbXBsZXRlCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHAgPT0gMCB8fCBwICE9IHB4ICk7IC8vIGNhdGNoIHNlbGYtcmVzZXQgZXJyb3JzCi0gICAgICAgIHRoaXNfdHlwZSggcCApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRD4gdm9pZCByZXNldCggWSAqIHAsIEQgZCApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHAsIGQgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQsIGNsYXNzIEE+IHZvaWQgcmVzZXQoIFkgKiBwLCBEIGQsIEEgYSApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHAsIGQsIGEgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IHZvaWQgcmVzZXQoIHNoYXJlZF9hcnJheTxZPiBjb25zdCAmIHIsIGVsZW1lbnRfdHlwZSAqIHAgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCByLCBwICkuc3dhcCggKnRoaXMgKTsKLSAgICB9Ci0KLSAgICBUICYgb3BlcmF0b3JbXSAoc3RkOjpwdHJkaWZmX3QgaSkgY29uc3QgLy8gbmV2ZXIgdGhyb3dzIChidXQgaGFzIGEgTkROQk9PU1RfQVNTRVJUIGluIGl0LCBzbyBub3QgbWFya2VkIHdpdGggTkROQk9PU1RfTk9FWENFUFQpCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQocHggIT0gMCk7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChpID49IDApOwotICAgICAgICByZXR1cm4gcHhbaV07Ci0gICAgfQotICAgIAotICAgIFQgKiBnZXQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotLy8gaW1wbGljaXQgY29udmVyc2lvbiB0byAiYm9vbCIKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL29wZXJhdG9yX2Jvb2wuaHBwPgotCi0gICAgYm9vbCB1bmlxdWUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLnVuaXF1ZSgpOwotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi51c2VfY291bnQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoc2hhcmVkX2FycmF5PFQ+ICYgb3RoZXIpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBzdGQ6OnN3YXAocHgsIG90aGVyLnB4KTsKLSAgICAgICAgcG4uc3dhcChvdGhlci5wbik7Ci0gICAgfQotCi0gICAgdm9pZCAqIF9pbnRlcm5hbF9nZXRfZGVsZXRlciggbmRuYm9vc3Q6OmRldGFpbDo6c3BfdHlwZWluZm8gY29uc3QgJiB0aSApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcG4uZ2V0X2RlbGV0ZXIoIHRpICk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gZnJpZW5kIGNsYXNzIHNoYXJlZF9hcnJheTsKLQotICAgIFQgKiBweDsgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWluZWQgcG9pbnRlcgotICAgIGRldGFpbDo6c2hhcmVkX2NvdW50IHBuOyAgICAvLyByZWZlcmVuY2UgY291bnRlcgotCi19OyAgLy8gc2hhcmVkX2FycmF5Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYSwgc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGEsIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKLX0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgIT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90LCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I8KHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGEsIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHN0ZDo6bGVzczxUKj4oKShhLmdldCgpLCBiLmdldCgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzd2FwKHNoYXJlZF9hcnJheTxUPiAmIGEsIHNoYXJlZF9hcnJheTxUPiAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgRCwgY2xhc3MgVCA+IEQgKiBnZXRfZGVsZXRlciggc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgcCApCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PCBEICogPiggcC5faW50ZXJuYWxfZ2V0X2RlbGV0ZXIoIE5ETkJPT1NUX1NQX1RZUEVJRChEKSApICk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUykKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TSEFSRURfQVJSQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGZhNDdlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzNSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TSEFSRURfUFRSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfU0hBUkVEX1BUUl9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBzaGFyZWRfcHRyLmhwcAotLy8KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMS0yMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2hhcmVkX3B0ci5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAvLyBmb3IgYnJva2VuIGNvbXBpbGVyIHdvcmthcm91bmRzCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfcHRyX25tdC5ocHA+Ci0jZWxzZQotCi0vLyBJbiBvcmRlciB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgd2l0aCBCb29zdC5UUjEKLS8vIHdlIG1ha2Ugc3VyZSB0aGF0IG91ciBpbmNsdWRlIG9mIDxtZW1vcnk+IGRvZXNuJ3QgdHJ5IHRvCi0vLyBwdWxsIGluIHRoZSBUUjEgaGVhZGVyczogdGhhdCdzIHdoeSB3ZSB1c2UgdGhpcyBoZWFkZXIgCi0vLyByYXRoZXIgdGhhbiBpbmNsdWRpbmcgPG1lbW9yeT4gZGlyZWN0bHk6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9tZW1vcnkuaHBwPiAgLy8gc3RkOjphdXRvX3B0cgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9jb3VudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfbnVsbHB0cl90LmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1NQX05PX0FUT01JQ19BQ0NFU1MpCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wb29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tZW1vcnlfb3JkZXIuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgLy8gZm9yIHN0ZDo6c3dhcAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+ICAgICAgICAgICAvLyBmb3Igc3RkOjpsZXNzCi0jaW5jbHVkZSA8dHlwZWluZm8+ICAgICAgICAgICAgIC8vIGZvciBzdGQ6OmJhZF9jYXN0Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgIC8vIGZvciBzdGQ6OnNpemVfdAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU9TVFJFQU0pCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU9TRldEKQotI2luY2x1ZGUgPGlvc2Z3ZD4gICAgICAgICAgICAgICAvLyBmb3Igc3RkOjpiYXNpY19vc3RyZWFtCi0jZWxzZQotI2luY2x1ZGUgPG9zdHJlYW0+Ci0jZW5kaWYKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgc2hhcmVkX3B0cjsKLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHdlYWtfcHRyOwotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXM7Ci1jbGFzcyBlbmFibGVfc2hhcmVkX2Zyb21fcmF3OwotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLS8vIHNwX2VsZW1lbnQsIGVsZW1lbnRfdHlwZQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9lbGVtZW50Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9lbGVtZW50PCBUW10gPgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSB8fCAhTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCA8IDB4NjAwICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4gPiBzdHJ1Y3Qgc3BfZWxlbWVudDwgVFtOXSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotLy8gc3BfZGVyZWZlcmVuY2UsIHJldHVybiB0eXBlIG9mIG9wZXJhdG9yKgotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9kZXJlZmVyZW5jZQotewotICAgIHR5cGVkZWYgVCAmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzcF9kZXJlZmVyZW5jZTwgdm9pZCA+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMpCi0KLXRlbXBsYXRlPD4gc3RydWN0IHNwX2RlcmVmZXJlbmNlPCB2b2lkIGNvbnN0ID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNwX2RlcmVmZXJlbmNlPCB2b2lkIHZvbGF0aWxlID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNwX2RlcmVmZXJlbmNlPCB2b2lkIGNvbnN0IHZvbGF0aWxlID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZChORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUykKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfZGVyZWZlcmVuY2U8IFRbXSA+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoIF9fQk9STEFORENfXyApIHx8ICFORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIDwgMHg2MDAgKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzcF9kZXJlZmVyZW5jZTwgVFtOXSA+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotLy8gc3BfbWVtYmVyX2FjY2VzcywgcmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3ItPgotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9tZW1iZXJfYWNjZXNzCi17Ci0gICAgdHlwZWRlZiBUICogdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX21lbWJlcl9hY2Nlc3M8IFRbXSA+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoIF9fQk9STEFORENfXyApIHx8ICFORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIDwgMHg2MDAgKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzcF9tZW1iZXJfYWNjZXNzPCBUW05dID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi0vLyBzcF9hcnJheV9hY2Nlc3MsIHJldHVybiB0eXBlIG9mIG9wZXJhdG9yW10KLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfYXJyYXlfYWNjZXNzCi17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9hcnJheV9hY2Nlc3M8IFRbXSA+Ci17Ci0gICAgdHlwZWRlZiBUICYgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggX19CT1JMQU5EQ19fICkgfHwgIU5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgPCAweDYwMCApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNwX2FycmF5X2FjY2VzczwgVFtOXSA+Ci17Ci0gICAgdHlwZWRlZiBUICYgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi0vLyBzcF9leHRlbnQsIGZvciBvcGVyYXRvcltdIGluZGV4IGNoZWNrCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2V4dGVudAotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSAwIH07Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzcF9leHRlbnQ8IFRbTl0gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBOIH07Ci19OwotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi0vLyBlbmFibGVfc2hhcmVkX2Zyb21fdGhpcyBzdXBwb3J0Ci0KLXRlbXBsYXRlPCBjbGFzcyBYLCBjbGFzcyBZLCBjbGFzcyBUID4gaW5saW5lIHZvaWQgc3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFg+IGNvbnN0ICogcHB4LCBZIGNvbnN0ICogcHksIG5kbmJvb3N0OjplbmFibGVfc2hhcmVkX2Zyb21fdGhpczwgVCA+IGNvbnN0ICogcGUgKQotewotICAgIGlmKCBwZSAhPSAwICkKLSAgICB7Ci0gICAgICAgIHBlLT5faW50ZXJuYWxfYWNjZXB0X293bmVyKCBwcHgsIGNvbnN0X2Nhc3Q8IFkqID4oIHB5ICkgKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBYLCBjbGFzcyBZID4gaW5saW5lIHZvaWQgc3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFg+ICogcHB4LCBZIGNvbnN0ICogcHksIG5kbmJvb3N0OjplbmFibGVfc2hhcmVkX2Zyb21fcmF3IGNvbnN0ICogcGUgKTsKLQotI2lmZGVmIF9NQU5BR0VECi0KLS8vIEF2b2lkIEM0NzkzLCAuLi4gY2F1c2VzIG5hdGl2ZSBjb2RlIGdlbmVyYXRpb24KLQotc3RydWN0IHNwX2FueV9wb2ludGVyCi17Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gc3BfYW55X3BvaW50ZXIoIFQqICkge30KLX07Ci0KLWlubGluZSB2b2lkIHNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCBzcF9hbnlfcG9pbnRlciwgc3BfYW55X3BvaW50ZXIsIHNwX2FueV9wb2ludGVyICkKLXsKLX0KLQotI2Vsc2UgLy8gX01BTkFHRUQKLQotaW5saW5lIHZvaWQgc3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoIC4uLiApCi17Ci19Ci0KLSNlbmRpZiAvLyBfTUFOQUdFRAotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1NGSU5BRSApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0FVVE9fUFRSICkKLQotLy8gcnZhbHVlIGF1dG9fcHRyIHN1cHBvcnQgYmFzZWQgb24gYSB0ZWNobmlxdWUgYnkgRGF2ZSBBYnJhaGFtcwotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgUiA+IHN0cnVjdCBzcF9lbmFibGVfaWZfYXV0b19wdHIKLXsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBSID4gc3RydWN0IHNwX2VuYWJsZV9pZl9hdXRvX3B0cjwgc3RkOjphdXRvX3B0cjwgVCA+LCBSID4KLXsKLSAgICB0eXBlZGVmIFIgdHlwZTsKLX07IAotCi0jZW5kaWYKLQotLy8gc3BfYXNzZXJ0X2NvbnZlcnRpYmxlCi0KLXRlbXBsYXRlPCBjbGFzcyBZLCBjbGFzcyBUID4gaW5saW5lIHZvaWQgc3BfYXNzZXJ0X2NvbnZlcnRpYmxlKCkKLXsKLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0gICAgLy8gc3RhdGljX2Fzc2VydCggc3BfY29udmVydGlibGU8IFksIFQgPjo6dmFsdWUgKTsKLSAgICB0eXBlZGVmIGNoYXIgdG1wWyBzcF9jb252ZXJ0aWJsZTwgWSwgVCA+Ojp2YWx1ZT8gMTogLTEgXTsKLSAgICAodm9pZClzaXplb2YoIHRtcCApOwotCi0jZWxzZQotCi0gICAgVCogcCA9IHN0YXRpY19jYXN0PCBZKiA+KCAwICk7Ci0gICAgKHZvaWQpcDsKLQotI2VuZGlmCi19Ci0KLS8vIHBvaW50ZXIgY29uc3RydWN0b3IgaGVscGVyCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBZID4gaW5saW5lIHZvaWQgc3BfcG9pbnRlcl9jb25zdHJ1Y3QoIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gKiBwcHgsIFkgKiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQgJiBwbiApCi17Ci0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50KCBwICkuc3dhcCggcG4gKTsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggcHB4LCBwLCBwICk7Ci19Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBZID4gaW5saW5lIHZvaWQgc3BfcG9pbnRlcl9jb25zdHJ1Y3QoIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUW10gPiAqIC8qcHB4Ki8sIFkgKiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQgJiBwbiApCi17Ci0gICAgc3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+KCk7Ci0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50KCBwLCBuZG5ib29zdDo6Y2hlY2tlZF9hcnJheV9kZWxldGVyPCBUID4oKSApLnN3YXAoIHBuICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOLCBjbGFzcyBZID4gaW5saW5lIHZvaWQgc3BfcG9pbnRlcl9jb25zdHJ1Y3QoIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUW05dID4gKiAvKnBweCovLCBZICogcCwgbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50ICYgcG4gKQotewotICAgIHNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWVtOXSwgVFtOXSA+KCk7Ci0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50KCBwLCBuZG5ib29zdDo6Y2hlY2tlZF9hcnJheV9kZWxldGVyPCBUID4oKSApLnN3YXAoIHBuICk7Ci19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLS8vIGRlbGV0ZXIgY29uc3RydWN0b3IgaGVscGVyCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBZID4gaW5saW5lIHZvaWQgc3BfZGVsZXRlcl9jb25zdHJ1Y3QoIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gKiBwcHgsIFkgKiBwICkKLXsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggcHB4LCBwLCBwICk7Ci19Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBZID4gaW5saW5lIHZvaWQgc3BfZGVsZXRlcl9jb25zdHJ1Y3QoIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUW10gPiAqIC8qcHB4Ki8sIFkgKiAvKnAqLyApCi17Ci0gICAgc3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+KCk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOLCBjbGFzcyBZID4gaW5saW5lIHZvaWQgc3BfZGVsZXRlcl9jb25zdHJ1Y3QoIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUW05dID4gKiAvKnBweCovLCBZICogLypwKi8gKQotewotICAgIHNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWVtOXSwgVFtOXSA+KCk7Ci19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0KLS8vCi0vLyAgc2hhcmVkX3B0cgotLy8KLS8vICBBbiBlbmhhbmNlZCByZWxhdGl2ZSBvZiBzY29wZWRfcHRyIHdpdGggcmVmZXJlbmNlIGNvdW50ZWQgY29weSBzZW1hbnRpY3MuCi0vLyAgVGhlIG9iamVjdCBwb2ludGVkIHRvIGlzIGRlbGV0ZWQgd2hlbiB0aGUgbGFzdCBzaGFyZWRfcHRyIHBvaW50aW5nIHRvIGl0Ci0vLyAgaXMgZGVzdHJveWVkIG9yIHJlc2V0LgotLy8KLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgc2hhcmVkX3B0cgotewotcHJpdmF0ZToKLQotICAgIC8vIEJvcmxhbmQgNS41LjEgc3BlY2lmaWMgd29ya2Fyb3VuZAotICAgIHR5cGVkZWYgc2hhcmVkX3B0cjxUPiB0aGlzX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZWxlbWVudDwgVCA+Ojp0eXBlIGVsZW1lbnRfdHlwZTsKLQotICAgIHNoYXJlZF9wdHIoKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCAwICksIHBuKCkgLy8gbmV2ZXIgdGhyb3dzIGluIDEuMzArCi0gICAgewotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotICAgIHNoYXJlZF9wdHIoIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIDAgKSwgcG4oKSAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgZXhwbGljaXQgc2hhcmVkX3B0ciggWSAqIHAgKTogcHgoIHAgKSwgcG4oKSAvLyBZIG11c3QgYmUgY29tcGxldGUKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX3BvaW50ZXJfY29uc3RydWN0KCB0aGlzLCBwLCBwbiApOwotICAgIH0KLQotICAgIC8vCi0gICAgLy8gUmVxdWlyZW1lbnRzOiBEJ3MgY29weSBjb25zdHJ1Y3RvciBtdXN0IG5vdCB0aHJvdwotICAgIC8vCi0gICAgLy8gc2hhcmVkX3B0ciB3aWxsIHJlbGVhc2UgcCBieSBjYWxsaW5nIGQocCkKLSAgICAvLwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRD4gc2hhcmVkX3B0ciggWSAqIHAsIEQgZCApOiBweCggcCApLCBwbiggcCwgZCApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9kZWxldGVyX2NvbnN0cnVjdCggdGhpcywgcCApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEQ+IHNoYXJlZF9wdHIoIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCBwLCBEIGQgKTogcHgoIHAgKSwgcG4oIHAsIGQgKQotICAgIHsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8gQXMgYWJvdmUsIGJ1dCB3aXRoIGFsbG9jYXRvci4gQSdzIGNvcHkgY29uc3RydWN0b3Igc2hhbGwgbm90IHRocm93LgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRCwgY2xhc3MgQT4gc2hhcmVkX3B0ciggWSAqIHAsIEQgZCwgQSBhICk6IHB4KCBwICksIHBuKCBwLCBkLCBhICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlbGV0ZXJfY29uc3RydWN0KCB0aGlzLCBwICk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRCwgY2xhc3MgQT4gc2hhcmVkX3B0ciggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90IHAsIEQgZCwgQSBhICk6IHB4KCBwICksIHBuKCBwLCBkLCBhICkKLSAgICB7Ci0gICAgfQotCi0jZW5kaWYKLQotLy8gIGdlbmVyYXRlZCBjb3B5IGNvbnN0cnVjdG9yLCBkZXN0cnVjdG9yIGFyZSBmaW5lLi4uCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0vLyAuLi4gZXhjZXB0IGluIEMrKzB4LCBtb3ZlIGRpc2FibGVzIHRoZSBpbXBsaWNpdCBjb3B5Ci0KLSAgICBzaGFyZWRfcHRyKCBzaGFyZWRfcHRyIGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oIHIucG4gKQotICAgIHsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBleHBsaWNpdCBzaGFyZWRfcHRyKCB3ZWFrX3B0cjxZPiBjb25zdCAmIHIgKTogcG4oIHIucG4gKSAvLyBtYXkgdGhyb3cKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0KLSAgICAgICAgLy8gaXQgaXMgbm93IHNhZmUgdG8gY29weSByLnB4LCBhcyBwbihyLnBuKSBkaWQgbm90IHRocm93Ci0gICAgICAgIHB4ID0gci5weDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHNoYXJlZF9wdHIoIHdlYWtfcHRyPFk+IGNvbnN0ICYgciwgbmRuYm9vc3Q6OmRldGFpbDo6c3Bfbm90aHJvd190YWcgKQotICAgIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIDAgKSwgcG4oIHIucG4sIG5kbmJvb3N0OjpkZXRhaWw6OnNwX25vdGhyb3dfdGFnKCkgKQotICAgIHsKLSAgICAgICAgaWYoICFwbi5lbXB0eSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgcHggPSByLnB4OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0gICAgc2hhcmVkX3B0ciggc2hhcmVkX3B0cjxZPiBjb25zdCAmIHIsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZTxZLFQ+Ojp0eXBlID0gbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW1wdHkoKSApCi0KLSNlbHNlCi0KLSAgICBzaGFyZWRfcHRyKCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgciApCi0KLSNlbmRpZgotICAgIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oIHIucG4gKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLSAgICB9Ci0KLSAgICAvLyBhbGlhc2luZwotICAgIHRlbXBsYXRlPCBjbGFzcyBZID4KLSAgICBzaGFyZWRfcHRyKCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgciwgZWxlbWVudF90eXBlICogcCApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHAgKSwgcG4oIHIucG4gKQotICAgIHsKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVVUT19QVFIKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgZXhwbGljaXQgc2hhcmVkX3B0ciggc3RkOjphdXRvX3B0cjxZPiAmIHIgKTogcHgoci5nZXQoKSksIHBuKCkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0KLSAgICAgICAgWSAqIHRtcCA9IHIuZ2V0KCk7Ci0gICAgICAgIHBuID0gbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50KCByICk7Ci0KLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZGVsZXRlcl9jb25zdHJ1Y3QoIHRoaXMsIHRtcCApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHNoYXJlZF9wdHIoIHN0ZDo6YXV0b19wdHI8WT4gJiYgciApOiBweChyLmdldCgpKSwgcG4oKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICBZICogdG1wID0gci5nZXQoKTsKLSAgICAgICAgcG4gPSBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHIgKTsKLQotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9kZWxldGVyX2NvbnN0cnVjdCggdGhpcywgdG1wICk7Ci0gICAgfQotCi0jZWxpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fU0ZJTkFFICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQXA+Ci0gICAgZXhwbGljaXQgc2hhcmVkX3B0ciggQXAgciwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX2lmX2F1dG9fcHRyPEFwLCBpbnQ+Ojp0eXBlID0gMCApOiBweCggci5nZXQoKSApLCBwbigpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFwOjplbGVtZW50X3R5cGUgWTsKLQotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotCi0gICAgICAgIFkgKiB0bXAgPSByLmdldCgpOwotICAgICAgICBwbiA9IG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCggciApOwotCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlbGV0ZXJfY29uc3RydWN0KCB0aGlzLCB0bXAgKTsKLSAgICB9Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19TRklOQUUsIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBZLCBjbGFzcyBEID4KLSAgICBzaGFyZWRfcHRyKCBzdGQ6OnVuaXF1ZV9wdHI8IFksIEQgPiAmJiByICk6IHB4KCByLmdldCgpICksIHBuKCkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0KLSAgICAgICAgdHlwZW5hbWUgc3RkOjp1bmlxdWVfcHRyPCBZLCBEID46OnBvaW50ZXIgdG1wID0gci5nZXQoKTsKLSAgICAgICAgcG4gPSBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHIgKTsKLQotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9kZWxldGVyX2NvbnN0cnVjdCggdGhpcywgdG1wICk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIC8vIGFzc2lnbm1lbnQKLQotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oIHNoYXJlZF9wdHIgY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZShyKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IChORE5CT09TVF9NU1ZDID49IDE0MDApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oc2hhcmVkX3B0cjxZPiBjb25zdCAmIHIpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUocikuc3dhcCgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oIHN0ZDo6YXV0b19wdHI8WT4gJiByICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggciApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KCBzdGQ6OmF1dG9fcHRyPFk+ICYmIHIgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBzdGF0aWNfY2FzdDwgc3RkOjphdXRvX3B0cjxZPiAmJiA+KCByICkgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZWxpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fU0ZJTkFFICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQXA+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX2lmX2F1dG9fcHRyPCBBcCwgc2hhcmVkX3B0ciAmID46OnR5cGUgb3BlcmF0b3I9KCBBcCByICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggciApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19TRklOQUUsIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQ+Ci0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggc3RkOjp1bmlxdWVfcHRyPFksIEQ+ICYmIHIgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBzdGF0aWNfY2FzdDwgc3RkOjp1bmlxdWVfcHRyPFksIEQ+ICYmID4oIHIgKSApLnN3YXAoKnRoaXMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotLy8gTW92ZSBzdXBwb3J0Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgc2hhcmVkX3B0ciggc2hhcmVkX3B0ciAmJiByICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbigpCi0gICAgewotICAgICAgICBwbi5zd2FwKCByLnBuICk7Ci0gICAgICAgIHIucHggPSAwOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotICAgIHNoYXJlZF9wdHIoIHNoYXJlZF9wdHI8WT4gJiYgciwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlPFksVD46OnR5cGUgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbXB0eSgpICkKLQotI2Vsc2UKLQotICAgIHNoYXJlZF9wdHIoIHNoYXJlZF9wdHI8WT4gJiYgciApCi0KLSNlbmRpZgotICAgIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICBwbi5zd2FwKCByLnBuICk7Ci0gICAgICAgIHIucHggPSAwOwotICAgIH0KLQotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oIHNoYXJlZF9wdHIgJiYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCBzaGFyZWRfcHRyICYmID4oIHIgKSApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oIHNoYXJlZF9wdHI8WT4gJiYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCBzaGFyZWRfcHRyPFk+ICYmID4oIHIgKSApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB2b2lkIHJlc2V0KCkgTkROQk9PU1RfTk9FWENFUFQgLy8gbmV2ZXIgdGhyb3dzIGluIDEuMzArCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoKS5zd2FwKCp0aGlzKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiB2b2lkIHJlc2V0KCBZICogcCApIC8vIFkgbXVzdCBiZSBjb21wbGV0ZQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBwID09IDAgfHwgcCAhPSBweCApOyAvLyBjYXRjaCBzZWxmLXJlc2V0IGVycm9ycwotICAgICAgICB0aGlzX3R5cGUoIHAgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQ+IHZvaWQgcmVzZXQoIFkgKiBwLCBEIGQgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBwLCBkICkuc3dhcCggKnRoaXMgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBELCBjbGFzcyBBPiB2b2lkIHJlc2V0KCBZICogcCwgRCBkLCBBIGEgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBwLCBkLCBhICkuc3dhcCggKnRoaXMgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiB2b2lkIHJlc2V0KCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgciwgZWxlbWVudF90eXBlICogcCApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHIsIHAgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLSAgICAKLSAgICAvLyBuZXZlciB0aHJvd3MgKGJ1dCBoYXMgYSBORE5CT09TVF9BU1NFUlQgaW4gaXQsIHNvIG5vdCBtYXJrZWQgd2l0aCBORE5CT09TVF9OT0VYQ0VQVCkKLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9kZXJlZmVyZW5jZTwgVCA+Ojp0eXBlIG9wZXJhdG9yKiAoKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBweCAhPSAwICk7Ci0gICAgICAgIHJldHVybiAqcHg7Ci0gICAgfQotICAgIAotICAgIC8vIG5ldmVyIHRocm93cyAoYnV0IGhhcyBhIE5ETkJPT1NUX0FTU0VSVCBpbiBpdCwgc28gbm90IG1hcmtlZCB3aXRoIE5ETkJPT1NUX05PRVhDRVBUKQotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21lbWJlcl9hY2Nlc3M8IFQgPjo6dHlwZSBvcGVyYXRvci0+ICgpIGNvbnN0IAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBweCAhPSAwICk7Ci0gICAgICAgIHJldHVybiBweDsKLSAgICB9Ci0gICAgCi0gICAgLy8gbmV2ZXIgdGhyb3dzIChidXQgaGFzIGEgTkROQk9PU1RfQVNTRVJUIGluIGl0LCBzbyBub3QgbWFya2VkIHdpdGggTkROQk9PU1RfTk9FWENFUFQpCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXJyYXlfYWNjZXNzPCBUID46OnR5cGUgb3BlcmF0b3JbXSAoIHN0ZDo6cHRyZGlmZl90IGkgKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBweCAhPSAwICk7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggaSA+PSAwICYmICggaSA8IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2V4dGVudDwgVCA+Ojp2YWx1ZSB8fCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9leHRlbnQ8IFQgPjo6dmFsdWUgPT0gMCApICk7Ci0KLSAgICAgICAgcmV0dXJuIHB4WyBpIF07Ci0gICAgfQotCi0gICAgZWxlbWVudF90eXBlICogZ2V0KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweDsKLSAgICB9Ci0KLS8vIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gImJvb2wiCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9vcGVyYXRvcl9ib29sLmhwcD4KLQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi51bmlxdWUoKTsKLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4udXNlX2NvdW50KCk7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKCBzaGFyZWRfcHRyICYgb3RoZXIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgc3RkOjpzd2FwKHB4LCBvdGhlci5weCk7Ci0gICAgICAgIHBuLnN3YXAob3RoZXIucG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGJvb2wgb3duZXJfYmVmb3JlKCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgcmhzICkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbiA8IHJocy5wbjsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBib29sIG93bmVyX2JlZm9yZSggd2Vha19wdHI8WT4gY29uc3QgJiByaHMgKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuIDwgcmhzLnBuOwotICAgIH0KLQotICAgIHZvaWQgKiBfaW50ZXJuYWxfZ2V0X2RlbGV0ZXIoIG5kbmJvb3N0OjpkZXRhaWw6OnNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLmdldF9kZWxldGVyKCB0aSApOwotICAgIH0KLQotICAgIHZvaWQgKiBfaW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4uZ2V0X3VudHlwZWRfZGVsZXRlcigpOwotICAgIH0KLQotICAgIGJvb2wgX2ludGVybmFsX2VxdWl2KCBzaGFyZWRfcHRyIGNvbnN0ICYgciApIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHggPT0gci5weCAmJiBwbiA9PSByLnBuOwotICAgIH0KLQotLy8gVGFzdGVsZXNzIGFzIHRoaXMgbWF5IHNlZW0sIG1ha2luZyBhbGwgbWVtYmVycyBwdWJsaWMgYWxsb3dzIG1lbWJlciB0ZW1wbGF0ZXMKLS8vIHRvIHdvcmsgaW4gdGhlIGFic2VuY2Ugb2YgbWVtYmVyIHRlbXBsYXRlIGZyaWVuZHMuIChNYXR0aGV3IExhbmdzdG9uKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0KLXByaXZhdGU6Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBmcmllbmQgY2xhc3Mgc2hhcmVkX3B0cjsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBmcmllbmQgY2xhc3Mgd2Vha19wdHI7Ci0KLQotI2VuZGlmCi0KLSAgICBlbGVtZW50X3R5cGUgKiBweDsgICAgICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCBwb2ludGVyCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50IHBuOyAgICAvLyByZWZlcmVuY2UgY291bnRlcgotCi19OyAgLy8gc2hhcmVkX3B0cgotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KHNoYXJlZF9wdHI8VD4gY29uc3QgJiBhLCBzaGFyZWRfcHRyPFU+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KHNoYXJlZF9wdHI8VD4gY29uc3QgJiBhLCBzaGFyZWRfcHRyPFU+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOwotfQotCi0jaWYgX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8PSA5NgotCi0vLyBSZXNvbHZlIHRoZSBhbWJpZ3VpdHkgYmV0d2VlbiBvdXIgb3AhPSBhbmQgdGhlIG9uZSBpbiByZWxfb3BzCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oc2hhcmVkX3B0cjxUPiBjb25zdCAmIGEsIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I8KHNoYXJlZF9wdHI8VD4gY29uc3QgJiBhLCBzaGFyZWRfcHRyPFU+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gYS5vd25lcl9iZWZvcmUoIGIgKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChzaGFyZWRfcHRyPFQ+ICYgYSwgc2hhcmVkX3B0cjxUPiAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBzaGFyZWRfcHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoIHNoYXJlZF9wdHI8VT4gY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICAodm9pZCkgc3RhdGljX2Nhc3Q8IFQqID4oIHN0YXRpY19jYXN0PCBVKiA+KCAwICkgKTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2hhcmVkX3B0cjxUPjo6ZWxlbWVudF90eXBlIEU7Ci0KLSAgICBFICogcCA9IHN0YXRpY19jYXN0PCBFKiA+KCByLmdldCgpICk7Ci0gICAgcmV0dXJuIHNoYXJlZF9wdHI8VD4oIHIsIHAgKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gc2hhcmVkX3B0cjxUPiBjb25zdF9wb2ludGVyX2Nhc3QoIHNoYXJlZF9wdHI8VT4gY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICAodm9pZCkgY29uc3RfY2FzdDwgVCogPiggc3RhdGljX2Nhc3Q8IFUqID4oIDAgKSApOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzaGFyZWRfcHRyPFQ+OjplbGVtZW50X3R5cGUgRTsKLQotICAgIEUgKiBwID0gY29uc3RfY2FzdDwgRSogPiggci5nZXQoKSApOwotICAgIHJldHVybiBzaGFyZWRfcHRyPFQ+KCByLCBwICk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IHNoYXJlZF9wdHI8VD4gZHluYW1pY19wb2ludGVyX2Nhc3QoIHNoYXJlZF9wdHI8VT4gY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICAodm9pZCkgZHluYW1pY19jYXN0PCBUKiA+KCBzdGF0aWNfY2FzdDwgVSogPiggMCApICk7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNoYXJlZF9wdHI8VD46OmVsZW1lbnRfdHlwZSBFOwotCi0gICAgRSAqIHAgPSBkeW5hbWljX2Nhc3Q8IEUqID4oIHIuZ2V0KCkgKTsKLSAgICByZXR1cm4gcD8gc2hhcmVkX3B0cjxUPiggciwgcCApOiBzaGFyZWRfcHRyPFQ+KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IHNoYXJlZF9wdHI8VD4gcmVpbnRlcnByZXRfcG9pbnRlcl9jYXN0KCBzaGFyZWRfcHRyPFU+IGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgKHZvaWQpIHJlaW50ZXJwcmV0X2Nhc3Q8IFQqID4oIHN0YXRpY19jYXN0PCBVKiA+KCAwICkgKTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2hhcmVkX3B0cjxUPjo6ZWxlbWVudF90eXBlIEU7Ci0KLSAgICBFICogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8IEUqID4oIHIuZ2V0KCkgKTsKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxUPiggciwgcCApOwotfQotCi0vLyBnZXRfcG9pbnRlcigpIGVuYWJsZXMgbmRuYm9vc3Q6Om1lbV9mbiB0byByZWNvZ25pemUgc2hhcmVkX3B0cgotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgc2hhcmVkX3B0cjxUPjo6ZWxlbWVudF90eXBlICogZ2V0X3BvaW50ZXIoc2hhcmVkX3B0cjxUPiBjb25zdCAmIHApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCk7Ci19Ci0KLS8vIG9wZXJhdG9yPDwKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lPU1RSRUFNKQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURURfSU9TVFJFQU1TKSB8fCAoIGRlZmluZWQoX19HTlVDX18pICYmICAoX19HTlVDX18gPCAzKSApCi0KLXRlbXBsYXRlPGNsYXNzIFk+IHN0ZDo6b3N0cmVhbSAmIG9wZXJhdG9yPDwgKHN0ZDo6b3N0cmVhbSAmIG9zLCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgcCkKLXsKLSAgICBvcyA8PCBwLmdldCgpOwotICAgIHJldHVybiBvczsKLX0KLQotI2Vsc2UKLQotLy8gaW4gU1RMcG9ydCdzIG5vLWlvc3RyZWFtcyBtb2RlIG5vIGlvc3RyZWFtIHN5bWJvbHMgY2FuIGJlIHVzZWQKLSNpZm5kZWYgX1NUTFBfTk9fSU9TVFJFQU1TCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCAmJiBfX1NHSV9TVExfUE9SVCkKLS8vIE1TVkM2IGhhcyBwcm9ibGVtcyBmaW5kaW5nIHN0ZDo6YmFzaWNfb3N0cmVhbSB0aHJvdWdoIHRoZSB1c2luZyBkZWNsYXJhdGlvbiBpbiBuYW1lc3BhY2UgX1NUTAotdXNpbmcgc3RkOjpiYXNpY19vc3RyZWFtOwotdGVtcGxhdGU8Y2xhc3MgRSwgY2xhc3MgVCwgY2xhc3MgWT4gYmFzaWNfb3N0cmVhbTxFLCBUPiAmIG9wZXJhdG9yPDwgKGJhc2ljX29zdHJlYW08RSwgVD4gJiBvcywgc2hhcmVkX3B0cjxZPiBjb25zdCAmIHApCi0jIGVsc2UKLXRlbXBsYXRlPGNsYXNzIEUsIGNsYXNzIFQsIGNsYXNzIFk+IHN0ZDo6YmFzaWNfb3N0cmVhbTxFLCBUPiAmIG9wZXJhdG9yPDwgKHN0ZDo6YmFzaWNfb3N0cmVhbTxFLCBUPiAmIG9zLCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgcCkKLSMgZW5kaWYKLXsKLSAgICBvcyA8PCBwLmdldCgpOwotICAgIHJldHVybiBvczsKLX0KLQotI2VuZGlmIC8vIF9TVExQX05PX0lPU1RSRUFNUwotCi0jZW5kaWYgLy8gX19HTlVDX18gPCAzCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChORE5CT09TVF9OT19JT1NUUkVBTSkKLQotLy8gZ2V0X2RlbGV0ZXIKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgKCBkZWZpbmVkKF9fR05VQ19fKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpICkgfHwgXAotICAgICggZGVmaW5lZChfX0VER19WRVJTSU9OX18pICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpICkgfHwgXAotICAgICggZGVmaW5lZChfX0hQX2FDQykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPD0gMzM1MDApICkKLQotLy8gZysrIDIuOXggZG9lc24ndCBhbGxvdyBzdGF0aWNfY2FzdDxYIGNvbnN0ICo+KHZvaWQgKikKLS8vIGFwcGFyZW50bHkgRURHIDIuMzggYW5kIEhQIGFDQyBBLjAzLjM1IGFsc28gZG9uJ3QgYWNjZXB0IGl0Ci0KLXRlbXBsYXRlPGNsYXNzIEQsIGNsYXNzIFQ+IEQgKiBiYXNpY19nZXRfZGVsZXRlcihzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCkKLXsKLSAgICB2b2lkIGNvbnN0ICogcSA9IHAuX2ludGVybmFsX2dldF9kZWxldGVyKE5ETkJPT1NUX1NQX1RZUEVJRChEKSk7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RCAqPihzdGF0aWNfY2FzdDxEIGNvbnN0ICo+KHEpKTsKLX0KLQotI2Vsc2UKLQotdGVtcGxhdGU8Y2xhc3MgRCwgY2xhc3MgVD4gRCAqIGJhc2ljX2dldF9kZWxldGVyKCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEQgKj4oIHAuX2ludGVybmFsX2dldF9kZWxldGVyKE5ETkJPT1NUX1NQX1RZUEVJRChEKSkgKTsKLX0KLQotI2VuZGlmCi0KLWNsYXNzIGVzZnQyX2RlbGV0ZXJfd3JhcHBlcgotewotcHJpdmF0ZToKLQotICAgIHNoYXJlZF9wdHI8dm9pZD4gZGVsZXRlcl87Ci0KLXB1YmxpYzoKLQotICAgIGVzZnQyX2RlbGV0ZXJfd3JhcHBlcigpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4gdm9pZCBzZXRfZGVsZXRlciggc2hhcmVkX3B0cjxUPiBjb25zdCAmIGRlbGV0ZXIgKQotICAgIHsKLSAgICAgICAgZGVsZXRlcl8gPSBkZWxldGVyOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEQ+IEQqIGdldF9kZWxldGVyKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6ZGV0YWlsOjpiYXNpY19nZXRfZGVsZXRlcjxEPiggZGVsZXRlcl8gKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVD4gdm9pZCBvcGVyYXRvcigpKCBUKiApCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIGRlbGV0ZXJfLnVzZV9jb3VudCgpIDw9IDEgKTsKLSAgICAgICAgZGVsZXRlcl8ucmVzZXQoKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgRCwgY2xhc3MgVD4gRCAqIGdldF9kZWxldGVyKCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgRCAqZGVsID0gbmRuYm9vc3Q6OmRldGFpbDo6YmFzaWNfZ2V0X2RlbGV0ZXI8RD4ocCk7Ci0KLSAgICBpZihkZWwgPT0gMCkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmVzZnQyX2RlbGV0ZXJfd3JhcHBlciAqZGVsX3dyYXBwZXIgPSBuZG5ib29zdDo6ZGV0YWlsOjpiYXNpY19nZXRfZGVsZXRlcjxuZG5ib29zdDo6ZGV0YWlsOjplc2Z0Ml9kZWxldGVyX3dyYXBwZXI+KHApOwotLy8gVGhlIGZvbGxvd2luZyBnZXRfZGVsZXRlciBtZXRob2QgY2FsbCBpcyBmdWxseSBxdWFsaWZpZWQgYmVjYXVzZQotLy8gb2xkZXIgdmVyc2lvbnMgb2YgZ2NjICgyLjk1LCAzLjIuMykgZmFpbCB0byBjb21waWxlIGl0IHdoZW4gd3JpdHRlbiBkZWxfd3JhcHBlci0+Z2V0X2RlbGV0ZXI8RD4oKQotICAgICAgICBpZihkZWxfd3JhcHBlcikgZGVsID0gZGVsX3dyYXBwZXItPjo6bmRuYm9vc3Q6OmRldGFpbDo6ZXNmdDJfZGVsZXRlcl93cmFwcGVyOjpnZXRfZGVsZXRlcjxEPigpOwotICAgIH0KLQotICAgIHJldHVybiBkZWw7Ci19Ci0KLS8vIGF0b21pYyBhY2Nlc3MKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1NQX05PX0FUT01JQ19BQ0NFU1MpCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIGF0b21pY19pc19sb2NrX2ZyZWUoIHNoYXJlZF9wdHI8VD4gY29uc3QgKiAvKnAqLyApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzaGFyZWRfcHRyPFQ+IGF0b21pY19sb2FkKCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICogcCApCi17Ci0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BpbmxvY2tfcG9vbDwyPjo6c2NvcGVkX2xvY2sgbG9jayggcCApOwotICAgIHJldHVybiAqcDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHNoYXJlZF9wdHI8VD4gYXRvbWljX2xvYWRfZXhwbGljaXQoIHNoYXJlZF9wdHI8VD4gY29uc3QgKiBwLCBtZW1vcnlfb3JkZXIgLyptbyovICkKLXsKLSAgICByZXR1cm4gYXRvbWljX2xvYWQoIHAgKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBhdG9taWNfc3RvcmUoIHNoYXJlZF9wdHI8VD4gKiBwLCBzaGFyZWRfcHRyPFQ+IHIgKQotewotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwaW5sb2NrX3Bvb2w8Mj46OnNjb3BlZF9sb2NrIGxvY2soIHAgKTsKLSAgICBwLT5zd2FwKCByICk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIGF0b21pY19zdG9yZV9leHBsaWNpdCggc2hhcmVkX3B0cjxUPiAqIHAsIHNoYXJlZF9wdHI8VD4gciwgbWVtb3J5X29yZGVyIC8qbW8qLyApCi17Ci0gICAgYXRvbWljX3N0b3JlKCBwLCByICk7IC8vIHN0ZDo6bW92ZSggciApCi19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHNoYXJlZF9wdHI8VD4gYXRvbWljX2V4Y2hhbmdlKCBzaGFyZWRfcHRyPFQ+ICogcCwgc2hhcmVkX3B0cjxUPiByICkKLXsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcGlubG9jayAmIHNwID0gbmRuYm9vc3Q6OmRldGFpbDo6c3BpbmxvY2tfcG9vbDwyPjo6c3BpbmxvY2tfZm9yKCBwICk7Ci0KLSAgICBzcC5sb2NrKCk7Ci0gICAgcC0+c3dhcCggciApOwotICAgIHNwLnVubG9jaygpOwotCi0gICAgcmV0dXJuIHI7IC8vIHJldHVybiBzdGQ6Om1vdmUoIHIgKQotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzaGFyZWRfcHRyPFQ+IGF0b21pY19leGNoYW5nZV9leHBsaWNpdCggc2hhcmVkX3B0cjxUPiAqIHAsIHNoYXJlZF9wdHI8VD4gciwgbWVtb3J5X29yZGVyIC8qbW8qLyApCi17Ci0gICAgcmV0dXJuIGF0b21pY19leGNoYW5nZSggcCwgciApOyAvLyBzdGQ6Om1vdmUoIHIgKQotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBib29sIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlKCBzaGFyZWRfcHRyPFQ+ICogcCwgc2hhcmVkX3B0cjxUPiAqIHYsIHNoYXJlZF9wdHI8VD4gdyApCi17Ci0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BpbmxvY2sgJiBzcCA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwaW5sb2NrX3Bvb2w8Mj46OnNwaW5sb2NrX2ZvciggcCApOwotCi0gICAgc3AubG9jaygpOwotCi0gICAgaWYoIHAtPl9pbnRlcm5hbF9lcXVpdiggKnYgKSApCi0gICAgewotICAgICAgICBwLT5zd2FwKCB3ICk7Ci0KLSAgICAgICAgc3AudW5sb2NrKCk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHNoYXJlZF9wdHI8VD4gdG1wKCAqcCApOwotCi0gICAgICAgIHNwLnVubG9jaygpOwotCi0gICAgICAgIHRtcC5zd2FwKCAqdiApOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9leHBsaWNpdCggc2hhcmVkX3B0cjxUPiAqIHAsIHNoYXJlZF9wdHI8VD4gKiB2LCBzaGFyZWRfcHRyPFQ+IHcsIG1lbW9yeV9vcmRlciAvKnN1Y2Nlc3MqLywgbWVtb3J5X29yZGVyIC8qZmFpbHVyZSovICkKLXsKLSAgICByZXR1cm4gYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UoIHAsIHYsIHcgKTsgLy8gc3RkOjptb3ZlKCB3ICkKLX0KLQotI2VuZGlmIC8vICFkZWZpbmVkKE5ETkJPT1NUX1NQX05PX0FUT01JQ19BQ0NFU1MpCi0KLS8vIGhhc2hfdmFsdWUKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgaGFzaDsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKCBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBuZG5ib29zdDo6aGFzaDwgVCogPigpKCBwLmdldCgpICk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUykKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TSEFSRURfUFRSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvd2Vha19wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvd2Vha19wdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGZjNGJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3dlYWtfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1MyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9XRUFLX1BUUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX1dFQUtfUFRSX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHdlYWtfcHRyLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci93ZWFrX3B0ci5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bWVtb3J5PiAvLyBib29zdC5UUjEgaW5jbHVkZSBvcmRlciBmaXgKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9jb3VudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgd2Vha19wdHIKLXsKLXByaXZhdGU6Ci0KLSAgICAvLyBCb3JsYW5kIDUuNS4xIHNwZWNpZmljIHdvcmthcm91bmRzCi0gICAgdHlwZWRlZiB3ZWFrX3B0cjxUPiB0aGlzX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZWxlbWVudDwgVCA+Ojp0eXBlIGVsZW1lbnRfdHlwZTsKLQotICAgIHdlYWtfcHRyKCkgTkROQk9PU1RfTk9FWENFUFQgOiBweCgwKSwgcG4oKSAvLyBuZXZlciB0aHJvd3MgaW4gMS4zMCsKLSAgICB7Ci0gICAgfQotCi0vLyAgZ2VuZXJhdGVkIGNvcHkgY29uc3RydWN0b3IsIGFzc2lnbm1lbnQsIGRlc3RydWN0b3IgYXJlIGZpbmUuLi4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLS8vIC4uLiBleGNlcHQgaW4gQysrMHgsIG1vdmUgZGlzYWJsZXMgdGhlIGltcGxpY2l0IGNvcHkKLQotICAgIHdlYWtfcHRyKCB3ZWFrX3B0ciBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCByLnBuICkKLSAgICB7Ci0gICAgfQotCi0gICAgd2Vha19wdHIgJiBvcGVyYXRvcj0oIHdlYWtfcHRyIGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBweCA9IHIucHg7Ci0gICAgICAgIHBuID0gci5wbjsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLS8vCi0vLyAgVGhlICJvYnZpb3VzIiBjb252ZXJ0aW5nIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uOgotLy8KLS8vICB0ZW1wbGF0ZTxjbGFzcyBZPgotLy8gIHdlYWtfcHRyKHdlYWtfcHRyPFk+IGNvbnN0ICYgcik6IHB4KHIucHgpLCBwbihyLnBuKSAvLyBuZXZlciB0aHJvd3MKLS8vICB7Ci0vLyAgfQotLy8KLS8vICBoYXMgYSBzZXJpb3VzIHByb2JsZW0uCi0vLwotLy8gIHIucHggbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGludmFsaWRhdGVkLiBUaGUgcHgoci5weCkKLS8vICBjb252ZXJzaW9uIG1heSByZXF1aXJlIGFjY2VzcyB0byAqci5weCAodmlydHVhbCBpbmhlcml0YW5jZSkuCi0vLwotLy8gIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBhdm9pZCBzcHVyaW91cyBhY2Nlc3MgdmlvbGF0aW9ucyBzaW5jZQotLy8gIGluIG11bHRpdGhyZWFkZWQgcHJvZ3JhbXMgci5weCBtYXkgYmUgaW52YWxpZGF0ZWQgYXQgYW55IHBvaW50LgotLy8KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotICAgIHdlYWtfcHRyKCB3ZWFrX3B0cjxZPiBjb25zdCAmIHIsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZTxZLFQ+Ojp0eXBlID0gbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW1wdHkoKSApCi0KLSNlbHNlCi0KLSAgICB3ZWFrX3B0ciggd2Vha19wdHI8WT4gY29uc3QgJiByICkKLQotI2VuZGlmCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweChyLmxvY2soKS5nZXQoKSksIHBuKHIucG4pCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSAgICB3ZWFrX3B0ciggd2Vha19wdHI8WT4gJiYgciwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlPFksVD46OnR5cGUgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbXB0eSgpICkKLQotI2Vsc2UKLQotICAgIHdlYWtfcHRyKCB3ZWFrX3B0cjxZPiAmJiByICkKLQotI2VuZGlmCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5sb2NrKCkuZ2V0KCkgKSwgcG4oIHN0YXRpY19jYXN0PCBuZG5ib29zdDo6ZGV0YWlsOjp3ZWFrX2NvdW50ICYmID4oIHIucG4gKSApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotICAgICAgICByLnB4ID0gMDsKLSAgICB9Ci0KLSAgICAvLyBmb3IgYmV0dGVyIGVmZmljaWVuY3kgaW4gdGhlIFQgPT0gWSBjYXNlCi0gICAgd2Vha19wdHIoIHdlYWtfcHRyICYmIHIgKQotICAgIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oIHN0YXRpY19jYXN0PCBuZG5ib29zdDo6ZGV0YWlsOjp3ZWFrX2NvdW50ICYmID4oIHIucG4gKSApCi0gICAgewotICAgICAgICByLnB4ID0gMDsKLSAgICB9Ci0KLSAgICAvLyBmb3IgYmV0dGVyIGVmZmljaWVuY3kgaW4gdGhlIFQgPT0gWSBjYXNlCi0gICAgd2Vha19wdHIgJiBvcGVyYXRvcj0oIHdlYWtfcHRyICYmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCBzdGF0aWNfY2FzdDwgd2Vha19wdHIgJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotICAgIHdlYWtfcHRyKCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgciwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlPFksVD46OnR5cGUgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbXB0eSgpICkKLQotI2Vsc2UKLQotICAgIHdlYWtfcHRyKCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgciApCi0KLSNlbmRpZgotICAgIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oIHIucG4gKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCAoTkROQk9PU1RfTVNWQyA+PSAxMzAwKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICB3ZWFrX3B0ciAmIG9wZXJhdG9yPSggd2Vha19wdHI8WT4gY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0KLSAgICAgICAgcHggPSByLmxvY2soKS5nZXQoKTsKLSAgICAgICAgcG4gPSByLnBuOwotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICB3ZWFrX3B0ciAmIG9wZXJhdG9yPSggd2Vha19wdHI8WT4gJiYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCB3ZWFrX3B0cjxZPiAmJiA+KCByICkgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgd2Vha19wdHIgJiBvcGVyYXRvcj0oIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0KLSAgICAgICAgcHggPSByLnB4OwotICAgICAgICBwbiA9IHIucG47Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBzaGFyZWRfcHRyPFQ+IGxvY2soKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHNoYXJlZF9wdHI8VD4oICp0aGlzLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9ub3Rocm93X3RhZygpICk7Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLnVzZV9jb3VudCgpOwotICAgIH0KLQotICAgIGJvb2wgZXhwaXJlZCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4udXNlX2NvdW50KCkgPT0gMDsKLSAgICB9Ci0KLSAgICBib29sIF9lbXB0eSgpIGNvbnN0IC8vIGV4dGVuc2lvbiwgbm90IGluIHN0ZDo6d2Vha19wdHIKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi5lbXB0eSgpOwotICAgIH0KLQotICAgIHZvaWQgcmVzZXQoKSBORE5CT09TVF9OT0VYQ0VQVCAvLyBuZXZlciB0aHJvd3MgaW4gMS4zMCsKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSgpLnN3YXAoKnRoaXMpOwotICAgIH0KLQotICAgIHZvaWQgc3dhcCh0aGlzX3R5cGUgJiBvdGhlcikgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChweCwgb3RoZXIucHgpOwotICAgICAgICBwbi5zd2FwKG90aGVyLnBuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBZPgotICAgIHZvaWQgX2ludGVybmFsX2FsaWFzaW5nX2Fzc2lnbih3ZWFrX3B0cjxZPiBjb25zdCAmIHIsIGVsZW1lbnRfdHlwZSAqIHB4MikKLSAgICB7Ci0gICAgICAgIHB4ID0gcHgyOwotICAgICAgICBwbiA9IHIucG47Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gYm9vbCBvd25lcl9iZWZvcmUoIHdlYWtfcHRyPFk+IGNvbnN0ICYgcmhzICkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbiA8IHJocy5wbjsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBib29sIG93bmVyX2JlZm9yZSggc2hhcmVkX3B0cjxZPiBjb25zdCAmIHJocyApIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4gPCByaHMucG47Ci0gICAgfQotCi0vLyBUYXN0ZWxlc3MgYXMgdGhpcyBtYXkgc2VlbSwgbWFraW5nIGFsbCBtZW1iZXJzIHB1YmxpYyBhbGxvd3MgbWVtYmVyIHRlbXBsYXRlcwotLy8gdG8gd29yayBpbiB0aGUgYWJzZW5jZSBvZiBtZW1iZXIgdGVtcGxhdGUgZnJpZW5kcy4gKE1hdHRoZXcgTGFuZ3N0b24pCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLQotcHJpdmF0ZToKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGZyaWVuZCBjbGFzcyB3ZWFrX3B0cjsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBmcmllbmQgY2xhc3Mgc2hhcmVkX3B0cjsKLQotI2VuZGlmCi0KLSAgICBlbGVtZW50X3R5cGUgKiBweDsgICAgICAgICAgICAvLyBjb250YWluZWQgcG9pbnRlcgotICAgIG5kbmJvb3N0OjpkZXRhaWw6OndlYWtfY291bnQgcG47IC8vIHJlZmVyZW5jZSBjb3VudGVyCi0KLX07ICAvLyB3ZWFrX3B0cgotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcjwod2Vha19wdHI8VD4gY29uc3QgJiBhLCB3ZWFrX3B0cjxVPiBjb25zdCAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIGEub3duZXJfYmVmb3JlKCBiICk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgc3dhcCh3ZWFrX3B0cjxUPiAmIGEsIHdlYWtfcHRyPFQ+ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfV0VBS19QVFJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjgxNTAyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3N0YXRpY19hc3NlcnQgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8qCi0gUmV2aXNpb24gaGlzdG9yeToKLSAgIDAyIEF1Z3VzdCAyMDAwCi0gICAgICBJbml0aWFsIHZlcnNpb24uCi0qLwotCi0jaWZuZGVmIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotLy8KLS8vIFRoaXMgaXMgaG9ycmlibGUsIGJ1dCBpdCBzZWVtcyB0byBiZSB0aGUgb25seSB3ZSBjYW4gc2h1dCB1cCB0aGUKLS8vICJhbm9ueW1vdXMgdmFyaWFkaWMgbWFjcm9zIHdlcmUgaW50cm9kdWNlZCBpbiBDOTkgWy1XdmFyaWFkaWMtbWFjcm9zXSIKLS8vIHdhcm5pbmcgdGhhdCBnZXQgc3Bld2VkIG91dCBvdGhlcndpc2UgaW4gbm9uLUMrKzExIG1vZGUuCi0vLwotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotIyAgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCAuLi4gKSBzdGF0aWNfYXNzZXJ0KF9fVkFfQVJHU19fKQotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCBCLCBNc2cgKSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkKLSMgIGVuZGlmCi0jZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCBCLCBNc2cgKSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkKLSNlbmRpZgotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0vLwotLy8gd29ya2Fyb3VuZCBmb3IgYnVnZ3kgaW50ZWdyYWwtY29uc3RhbnQgZXhwcmVzc2lvbiBzdXBwb3J0OgotI2RlZmluZSBORE5CT09TVF9CVUdHWV9JTlRFR1JBTF9DT05TVEFOVF9FWFBSRVNTSU9OUwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gMykgJiYgKChfX0dOVUNfTUlOT1JfXyA9PSAzKSB8fCAoX19HTlVDX01JTk9SX18gPT0gNCkpCi0vLyBnY2MgMy4zIGFuZCAzLjQgZG9uJ3QgcHJvZHVjZSBnb29kIGVycm9yIG1lc3NhZ2VzIHdpdGggdGhlIGRlZmF1bHQgdmVyc2lvbjoKLSMgIGRlZmluZSBORE5CT09TVF9TQV9HQ0NfV09SS0FST1VORAotI2VuZGlmCi0KLS8vCi0vLyBJZiB0aGUgY29tcGlsZXIgaXNzdWVzIHdhcm5pbmdzIGFib3V0IG9sZCBDIHN0eWxlIGNhc3RzLAotLy8gdGhlbiBlbmFibGUgdGhpczoKLS8vCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA+IDMpIHx8ICgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDQpKSkKLSMgIGlmbmRlZiBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCggLi4uICkgKChfX1ZBX0FSR1NfXykgPT0gMCA/IGZhbHNlIDogdHJ1ZSkKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCggeCApICgoeCkgPT0gMCA/IGZhbHNlIDogdHJ1ZSkKLSMgIGVuZGlmCi0jZWxzZQotIyAgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCAuLi4gKSAoYm9vbCkoX19WQV9BUkdTX18pCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoeCkgKGJvb2wpKHgpCi0jICBlbmRpZgotI2VuZGlmCi0vLwotLy8gSWYgdGhlIGNvbXBpbGVyIHdhcm5zIGFib3V0IHVudXNlZCB0eXBlZGVmcyB0aGVuIGVuYWJsZSB0aGlzOgotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gNykpKQotIyAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfVU5VU0VEX0FUVFJJQlVURSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX1VOVVNFRF9BVFRSSUJVVEUKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSMgIGlmbmRlZiBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCAuLi4gKSBzdGF0aWNfYXNzZXJ0KF9fVkFfQVJHU19fLCAjX19WQV9BUkdTX18pCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApIHN0YXRpY19hc3NlcnQoQiwgI0IpCi0jICBlbmRpZgotI2Vsc2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0vLyBIUCBhQ0MgY2Fubm90IGRlYWwgd2l0aCBtaXNzaW5nIG5hbWVzIGZvciB0ZW1wbGF0ZSB2YWx1ZSBwYXJhbWV0ZXJzCi10ZW1wbGF0ZSA8Ym9vbCB4PiBzdHJ1Y3QgU1RBVElDX0FTU0VSVElPTl9GQUlMVVJFOwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgU1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPHRydWU+IHsgZW51bSB7IHZhbHVlID0gMSB9OyB9OwotCi0vLyBIUCBhQ0MgY2Fubm90IGRlYWwgd2l0aCBtaXNzaW5nIG5hbWVzIGZvciB0ZW1wbGF0ZSB2YWx1ZSBwYXJhbWV0ZXJzCi10ZW1wbGF0ZTxpbnQgeD4gc3RydWN0IHN0YXRpY19hc3NlcnRfdGVzdHt9OwotCi19Ci0KLS8vCi0vLyBJbXBsaWNpdCBpbnN0YW50aWF0aW9uIHJlcXVpcmVzIHRoYXQgYWxsIG1lbWJlciBkZWNsYXJhdGlvbnMgYmUKLS8vIGluc3RhbnRpYXRlZCwgYnV0IHRoYXQgdGhlIGRlZmluaXRpb25zIGFyZSAqbm90KiBpbnN0YW50aWF0ZWQuCi0vLwotLy8gSXQncyBub3QgcGFydGljdWxhcmx5IGNsZWFyIGhvdyB0aGlzIGFwcGxpZXMgdG8gZW51bSdzIG9yIHR5cGVkZWZzOwotLy8gYm90aCBhcmUgZGVzY3JpYmVkIGFzIGRlY2xhcmF0aW9ucyBbNy4xLjNdIGFuZCBbNy4yXSBpbiB0aGUgc3RhbmRhcmQsCi0vLyBob3dldmVyIHNvbWUgY29tcGlsZXJzIHVzZSAiZGVsYXllZCBldmFsdWF0aW9uIiBvZiBvbmUgb3IgbW9yZSBvZgotLy8gdGhlc2Ugd2hlbiBpbXBsaWNpdGx5IGluc3RhbnRpYXRpbmcgdGVtcGxhdGVzLiAgV2UgdXNlIHR5cGVkZWYgZGVjbGFyYXRpb25zCi0vLyBieSBkZWZhdWx0LCBidXQgdHJ5IGRlZmluaW5nIE5ETkJPT1NUX1VTRV9FTlVNX1NUQVRJQ19BU1NFUlQgaWYgdGhlIGVudW0KLS8vIHZlcnNpb24gZ2V0cyBiZXR0ZXIgcmVzdWx0cyBmcm9tIHlvdXIgY29tcGlsZXIuLi4KLS8vCi0vLyBJbXBsZW1lbnRhdGlvbjoKLS8vIEJvdGggb2YgdGhlc2UgdmVyc2lvbnMgcmVseSBvbiBzaXplb2YoaW5jb21wbGV0ZV90eXBlKSBnZW5lcmF0aW5nIGFuIGVycm9yCi0vLyBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGluY29tcGxldGUgdHlwZS4gIFdlIHVzZQotLy8gIlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRSIgYXMgdGhlIHR5cGUgbmFtZSBoZXJlIHRvIGdlbmVyYXRlCi0vLyBhbiBleWUgY2F0Y2hpbmcgZXJyb3IgbWVzc2FnZS4gIFRoZSByZXN1bHQgb2YgdGhlIHNpemVvZiBleHByZXNzaW9uIGlzIGVpdGhlcgotLy8gdXNlZCBhcyBhbiBlbnVtIGluaXRpYWxpc2VyLCBvciBhcyBhIHRlbXBsYXRlIGFyZ3VtZW50IGRlcGVuZGluZyB3aGljaCB2ZXJzaW9uCi0vLyBpcyBpbiB1c2UuLi4KLS8vIE5vdGUgdGhhdCB0aGUgYXJndW1lbnQgdG8gdGhlIGFzc2VydCBpcyBleHBsaWNpdGx5IGNhc3QgdG8gYm9vbCB1c2luZyBvbGQtCi0vLyBzdHlsZSBjYXN0czogdG9vIG1hbnkgY29tcGlsZXJzIGN1cnJlbnRseSBoYXZlIHByb2JsZW1zIHdpdGggc3RhdGljX2Nhc3QKLS8vIHdoZW4gdXNlZCBpbnNpZGUgaW50ZWdyYWwgY29uc3RhbnQgZXhwcmVzc2lvbnMuCi0vLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0JVR0dZX0lOVEVHUkFMX0NPTlNUQU5UX0VYUFJFU1NJT05TKQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEzMDApCi0vLyBfX0xJTkVfXyBtYWNybyBicm9rZW4gd2hlbiAtWkkgaXMgdXNlZCBzZWUgUTE5OTA1NwotLy8gZm9ydHVuYXRlbHkgTVNWQyBpZ25vcmVzIGR1cGxpY2F0ZSB0eXBlZGVmJ3MuCi0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKSBcCi0gICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnN0YXRpY19hc3NlcnRfdGVzdDxcCi0gICAgICBzaXplb2YoOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCAoYm9vbCkoIEIgKSA+KVwKLSAgICAgID4gYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUykKLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApIFwKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6c3RhdGljX2Fzc2VydF90ZXN0PFwKLSAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUICggQiApID4pPlwKLSAgICAgICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXywgX19DT1VOVEVSX18pCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoLi4uKSBcCi0gICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnN0YXRpY19hc3NlcnRfdGVzdDxcCi0gICAgICBzaXplb2YoOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCAoX19WQV9BUkdTX18pID4pPlwKLSAgICAgICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXywgX19DT1VOVEVSX18pCi0jZWxpZiAoZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikgfHwgZGVmaW5lZChORE5CT09TVF9TQV9HQ0NfV09SS0FST1VORCkpICAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUykKLS8vIGFndXJ0IDE1L3NlcC8wMjogYSBzcGVjaWFsIGNhcmUgaXMgbmVlZGVkIHRvIGZvcmNlIEludGVsIEMrKyBpc3N1ZSBhbiBlcnJvciAKLS8vIGluc3RlYWQgb2Ygd2FybmluZyBpbiBjYXNlIG9mIGZhaWx1cmUKLSMgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKSBcCi0gICAgdHlwZWRlZiBjaGFyIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXywgX19MSU5FX18pIFwKLSAgICAgICAgWyA6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCBCICkgPjo6dmFsdWUgXQotI2VsaWYgKGRlZmluZWQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pIHx8IGRlZmluZWQoTkROQk9PU1RfU0FfR0NDX1dPUktBUk9VTkQpKSAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TKQotLy8gYWd1cnQgMTUvc2VwLzAyOiBhIHNwZWNpYWwgY2FyZSBpcyBuZWVkZWQgdG8gZm9yY2UgSW50ZWwgQysrIGlzc3VlIGFuIGVycm9yIAotLy8gaW5zdGVhZCBvZiB3YXJuaW5nIGluIGNhc2Ugb2YgZmFpbHVyZQotIyBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCguLi4pIFwKLSAgICB0eXBlZGVmIGNoYXIgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfLCBfX0xJTkVfXykgXAotICAgICAgICBbIDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoIF9fVkFfQVJHU19fICkgPjo6dmFsdWUgXQotI2VsaWYgZGVmaW5lZChfX3NnaSkKLS8vIHNwZWNpYWwgdmVyc2lvbiBmb3IgU0dJIE1JUFNwcm8gY29tcGlsZXIKLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApIFwKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBcCi0gICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90ZXN0XywgX19MSU5FX18pID0gKCBCICkpOyBcCi0gICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnN0YXRpY19hc3NlcnRfdGVzdDxcCi0gICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IFwKLSAgICAgICBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdGVzdF8sIF9fTElORV9fKSA+KT5cCi0gICAgICAgICBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdHlwZWRlZl8sIF9fTElORV9fKQotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8PSAweDMwMDMpCi0vLyBzcGVjaWFsIHZlcnNpb24gZm9yIENvZGVXYXJyaW9yIDw9IDgueAotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkgXAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgXAotICAgICBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdGVzdF8sIF9fTElORV9fKSA9IFwKLSAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCggQiApID4pICkKLSNlbHNlCi0vLyBnZW5lcmljIHZlcnNpb24KLSMgIGlmbmRlZiBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCAuLi4gKSBcCi0gICAgICAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnN0YXRpY19hc3NlcnRfdGVzdDxcCi0gICAgICAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCggX19WQV9BUkdTX18gKSA+KT5cCi0gICAgICAgICAgICAgICBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdHlwZWRlZl8sIF9fTElORV9fKSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX1VOVVNFRF9BVFRSSUJVVEUKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkgXAotICAgICAgICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpzdGF0aWNfYXNzZXJ0X3Rlc3Q8XAotICAgICAgICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoIEIgKSA+KT5cCi0gICAgICAgICAgICAgICBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdHlwZWRlZl8sIF9fTElORV9fKSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX1VOVVNFRF9BVFRSSUJVVEUKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2Vsc2UKLS8vIGFsdGVybmF0aXZlIGVudW0gYmFzZWQgaW1wbGVtZW50YXRpb246Ci0jICBpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCAuLi4gKSBcCi0gICAgICAgICBlbnVtIHsgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X2VudW1fLCBfX0xJTkVfXykgXAotICAgICAgICAgICAgPSBzaXplb2YoOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCAoYm9vbCkoIF9fVkFfQVJHU19fICkgPikgfQotIyAgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVChCKSBcCi0gICAgICAgICBlbnVtIHsgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X2VudW1fLCBfX0xJTkVfXykgXAotICAgICAgICAgICAgPSBzaXplb2YoOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCAoYm9vbCkoIEIgKSA+KSB9Ci0jICBlbmRpZgotI2VuZGlmCi0jZW5kaWYgLy8gZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfU1RBVElDX0FTU0VSVF9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3N3YXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zd2FwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNkMzc5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3N3YXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA3IEpvc2VwaCBHYXV0ZXJpbgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9TV0FQX0hQUAotI2RlZmluZSBORE5CT09TVF9TV0FQX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdXRpbGl0eS9zd2FwLmhwcCIKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9hcGlfY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2FwaV9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzFkMTMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2FwaV9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLy8gIG5kbmJvb3N0L3N5c3RlbS9hcGlfY29uZmlnLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMywgMjAwNiwgMjAxMAotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3N5c3RlbSBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBCb29zdC5TeXN0ZW0gY2FsbHMgb3BlcmF0aW5nIHN5c3RlbSBBUEkgZnVuY3Rpb25zIHRvIGltcGxlbWVudCBzeXN0ZW0gZXJyb3IgY2F0ZWdvcnkKLS8vICBmdW5jdGlvbnMuIFVzdWFsbHkgdGhlcmUgaXMgbm8gcXVlc3Rpb24gYXMgdG8gd2hpY2ggQVBJIGlzIHRvIGJlIHVzZWQuCi0vLwotLy8gIEluIHRoZSBjYXNlIG9mIE1pbkdXIG9yIEN5Z3dpbi9NaW5HVywgaG93ZXZlciwgYm90aCBQT1NJWCBhbmQgV2luZG93cyBBUEkncyBhcmUKLS8vICBhdmFpbGFibGUuIENoYW9zIGVuc3VlcyBpZiBvdGhlciBjb2RlIHRoaW5rcyBvbmUgaXMgaW4gdXNlIHdoZW4gQm9vc3QuU3lzdGVtIHdhcwotLy8gIGFjdHVhbGx5IGJ1aWx0IHdpdGggdGhlIG90aGVyLiBUaGlzIGhlYWRlciBjZW50cmFsaXplcyB0aGUgQVBJIGNob2ljZSBhbmQgcHJldmVudHMKLS8vICB1c2VyIGRlZmluaXRpb24gb2YgQVBJIG1hY3JvcywgdGh1cyBlbG1pbmF0aW5nIHRoZSBwb3NzaWJpbGl0eSBvZiBtaXNtYXRjaGVzIGFuZCB0aGUKLS8vICBuZWVkIHRvIHRlc3QgY29uZmlndXJhdGlvbnMgd2l0aCBsaXR0bGUgb3Igbm8gcHJhY3RpY2FsIHZhbHVlLgotLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfU1lTVEVNX0FQSV9DT05GSUdfSFBQICAgICAgICAgICAgICAgICAgCi0jZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9BUElfQ09ORklHX0hQUAotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfUE9TSVhfQVBJKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1dJTkRPV1NfQVBJKQotIyAgIGVycm9yIHVzZXIgZGVmaW5lZCBORE5CT09TVF9QT1NJWF9BUEkgb3IgTkROQk9PU1RfV0lORE9XU19BUEkgbm90IHN1cHBvcnRlZAotIyBlbmRpZgotCi0vLyAgTkROQk9PU1RfUE9TSVhfQVBJIG9yIE5ETkJPT1NUX1dJTkRPV1NfQVBJIHNwZWNpZnkgd2hpY2ggQVBJIHRvIHVzZQotLy8gICAgQ3lnd2luL01pbkdXIGRvZXMgbm90IHByZWRlZmluZSBfV0lOMzIuCi0vLyAgICBTdGFuZGFsb25lIE1pbkdXIGFuZCBhbGwgb3RoZXIga25vd24gV2luZG93cyBjb21waWxlcnMgZG8gcHJlZGVmaW5lIF9XSU4zMgotLy8gICAgQ29tcGlsZXJzIHRoYXQgcHJlZGVmaW5lIF9XSU4zMiBvciBfX01JTkdXMzJfXyBkbyBzbyBmb3IgV2luZG93cyA2NC1iaXQgYnVpbGRzIHRvby4KLQotIyBpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSAvLyBXaW5kb3dzIGRlZmF1bHQsIGluY2x1ZGluZyBNaW5HVyBhbmQgQ3lnd2luCi0jICAgZGVmaW5lIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0jIGVsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfUE9TSVhfQVBJIAotIyBlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotI2VuZGlmICAvLyBORE5CT09TVF9TWVNURU1fQVBJX0NPTkZJR19IUFAgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE4MGRlNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLy8gIG5kbmJvb3N0L3N5c3RlbS9jb25maWcuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMywgMjAwNgotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc3lzdGVtIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1NZU1RFTV9DT05GSUdfSFBQICAgICAgICAgICAgICAgICAgCi0jZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9DT05GSUdfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N5c3RlbS9hcGlfY29uZmlnLmhwcD4gIC8vIGZvciBORE5CT09TVF9QT1NJWF9BUEkgb3IgTkROQk9PU1RfV0lORE9XU19BUEkKLQotLy8gVGhpcyBoZWFkZXIgaW1wbGVtZW50cyBzZXBhcmF0ZSBjb21waWxhdGlvbiBmZWF0dXJlcyBhcyBkZXNjcmliZWQgaW4KLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvc2VwYXJhdGVfY29tcGlsYXRpb24uaHRtbAotCi0vLyAgbm9ybWFsaXplIG1hY3JvcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9EWU5fTElOSykgJiYgIWRlZmluZWQoTkROQk9PU1RfU1lTVEVNX1NUQVRJQ19MSU5LKSBcCi0gICYmICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgJiYgIWRlZmluZWQoTkROQk9PU1RfQUxMX1NUQVRJQ19MSU5LKQotIyBkZWZpbmUgTkROQk9PU1RfU1lTVEVNX1NUQVRJQ19MSU5LCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9TWVNURU1fRFlOX0xJTkspCi0jIGRlZmluZSBORE5CT09TVF9TWVNURU1fRFlOX0xJTksgCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9TVEFUSUNfTElOSykgJiYgIWRlZmluZWQoTkROQk9PU1RfU1lTVEVNX1NUQVRJQ19MSU5LKQotIyBkZWZpbmUgTkROQk9PU1RfU1lTVEVNX1NUQVRJQ19MSU5LIAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9EWU5fTElOSykgJiYgZGVmaW5lZChORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTkspCi0jIGVycm9yIE11c3Qgbm90IGRlZmluZSBib3RoIE5ETkJPT1NUX1NZU1RFTV9EWU5fTElOSyBhbmQgTkROQk9PU1RfU1lTVEVNX1NUQVRJQ19MSU5LCi0jZW5kaWYKLQotLy8gIGVuYWJsZSBkeW5hbWljIG9yIHN0YXRpYyBsaW5raW5nIGFzIHJlcXVlc3RlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9TWVNURU1fRFlOX0xJTkspCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfU1lTVEVNX1NPVVJDRSkKLSMgICBkZWZpbmUgTkROQk9PU1RfU1lTVEVNX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotIyBlbHNlIAotIyAgIGRlZmluZSBORE5CT09TVF9TWVNURU1fREVDTCBORE5CT09TVF9TWU1CT0xfSU1QT1JUCi0jIGVuZGlmCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfU1lTVEVNX0RFQ0wKLSNlbmRpZgotCi0vLyAgZW5hYmxlIGF1dG9tYXRpYyBsaWJyYXJ5IHZhcmlhbnQgc2VsZWN0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8gCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9TWVNURU1fU09VUkNFKSAmJiAhZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKSAmJiAhZGVmaW5lZChORE5CT09TVF9TWVNURU1fTk9fTElCKQotLy8KLS8vIFNldCB0aGUgbmFtZSBvZiBvdXIgbGlicmFyeSwgdGhpcyB3aWxsIGdldCB1bmRlZidlZCBieSBhdXRvX2xpbmsuaHBwCi0vLyBvbmNlIGl0J3MgZG9uZSB3aXRoIGl0OgotLy8KLSNkZWZpbmUgTkROQk9PU1RfTElCX05BTUUgbmRuYm9vc3Rfc3lzdGVtCi0vLwotLy8gSWYgd2UncmUgaW1wb3J0aW5nIGNvZGUgZnJvbSBhIGRsbCwgdGhlbiB0ZWxsIGF1dG9fbGluay5ocHAgYWJvdXQgaXQ6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9EWU5fTElOSykKLSMgIGRlZmluZSBORE5CT09TVF9EWU5fTElOSwotI2VuZGlmCi0vLwotLy8gQW5kIGluY2x1ZGUgdGhlIGhlYWRlciB0aGF0IGRvZXMgdGhlIHdvcms6Ci0vLwotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPgotI2VuZGlmICAvLyBhdXRvLWxpbmtpbmcgZGlzYWJsZWQKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1NZU1RFTV9DT05GSUdfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkOTJjODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MjEgKzAsMCBAQAotLy8gIG5kbmJvb3N0L3N5c3RlbS9lcnJvcl9jb2RlLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDA2LCAyMDA3Ci0vLyAgQ29weXJpZ2h0IENocmlzdG9wZXIgS29obGhvZmYgMjAwNwotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc3lzdGVtCi0KLSNpZm5kZWYgTkROQk9PU1RfRVJST1JfQ09ERV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfRVJST1JfQ09ERV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3N5c3RlbS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvb3BlcmF0b3JzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9ub25jb3B5YWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPG9zdHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotCi0vLyBUT0RPOiB1bmRlZiB0aGVzZSBtYWNyb3MgaWYgbm90IGFscmVhZHkgZGVmaW5lZAotI2luY2x1ZGUgPG5kbmJvb3N0L2NlcnJuby5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QT1NJWF9BUEkpICYmICFkZWZpbmVkKE5ETkJPT1NUX1dJTkRPV1NfQVBJKQotIyAgZXJyb3IgTkROQk9PU1RfUE9TSVhfQVBJIG9yIE5ETkJPT1NUX1dJTkRPV1NfQVBJIG11c3QgYmUgZGVmaW5lZAotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHA+IC8vIG11c3QgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLQotI2lmbmRlZiBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIE5ETkJPT1NUX05PRVhDRVBUCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIG5hbWVzcGFjZSBzeXN0ZW0KLSAgewotCi0gICAgY2xhc3MgZXJyb3JfY29kZTsKLSAgICBjbGFzcyBlcnJvcl9jb25kaXRpb247Ci0KLSAgICAvLyAgIkNvbmNlcHQiIGhlbHBlcnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IGlzX2Vycm9yX2NvZGVfZW51bSB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IGlzX2Vycm9yX2NvbmRpdGlvbl9lbnVtIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsgfTsKLQotICAgIC8vICBnZW5lcmljIGVycm9yX2NvbmRpdGlvbnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIG5hbWVzcGFjZSBlcnJjCi0gICAgewotICAgICAgZW51bSBlcnJjX3QKLSAgICAgIHsKLSAgICAgICAgc3VjY2VzcyA9IDAsCi0gICAgICAgIGFkZHJlc3NfZmFtaWx5X25vdF9zdXBwb3J0ZWQgPSBFQUZOT1NVUFBPUlQsCi0gICAgICAgIGFkZHJlc3NfaW5fdXNlID0gRUFERFJJTlVTRSwKLSAgICAgICAgYWRkcmVzc19ub3RfYXZhaWxhYmxlID0gRUFERFJOT1RBVkFJTCwKLSAgICAgICAgYWxyZWFkeV9jb25uZWN0ZWQgPSBFSVNDT05OLAotICAgICAgICBhcmd1bWVudF9saXN0X3Rvb19sb25nID0gRTJCSUcsCi0gICAgICAgIGFyZ3VtZW50X291dF9vZl9kb21haW4gPSBFRE9NLAotICAgICAgICBiYWRfYWRkcmVzcyA9IEVGQVVMVCwKLSAgICAgICAgYmFkX2ZpbGVfZGVzY3JpcHRvciA9IEVCQURGLAotICAgICAgICBiYWRfbWVzc2FnZSA9IEVCQURNU0csCi0gICAgICAgIGJyb2tlbl9waXBlID0gRVBJUEUsCi0gICAgICAgIGNvbm5lY3Rpb25fYWJvcnRlZCA9IEVDT05OQUJPUlRFRCwKLSAgICAgICAgY29ubmVjdGlvbl9hbHJlYWR5X2luX3Byb2dyZXNzID0gRUFMUkVBRFksCi0gICAgICAgIGNvbm5lY3Rpb25fcmVmdXNlZCA9IEVDT05OUkVGVVNFRCwKLSAgICAgICAgY29ubmVjdGlvbl9yZXNldCA9IEVDT05OUkVTRVQsCi0gICAgICAgIGNyb3NzX2RldmljZV9saW5rID0gRVhERVYsCi0gICAgICAgIGRlc3RpbmF0aW9uX2FkZHJlc3NfcmVxdWlyZWQgPSBFREVTVEFERFJSRVEsCi0gICAgICAgIGRldmljZV9vcl9yZXNvdXJjZV9idXN5ID0gRUJVU1ksCi0gICAgICAgIGRpcmVjdG9yeV9ub3RfZW1wdHkgPSBFTk9URU1QVFksCi0gICAgICAgIGV4ZWN1dGFibGVfZm9ybWF0X2Vycm9yID0gRU5PRVhFQywKLSAgICAgICAgZmlsZV9leGlzdHMgPSBFRVhJU1QsCi0gICAgICAgIGZpbGVfdG9vX2xhcmdlID0gRUZCSUcsCi0gICAgICAgIGZpbGVuYW1lX3Rvb19sb25nID0gRU5BTUVUT09MT05HLAotICAgICAgICBmdW5jdGlvbl9ub3Rfc3VwcG9ydGVkID0gRU5PU1lTLAotICAgICAgICBob3N0X3VucmVhY2hhYmxlID0gRUhPU1RVTlJFQUNILAotICAgICAgICBpZGVudGlmaWVyX3JlbW92ZWQgPSBFSURSTSwKLSAgICAgICAgaWxsZWdhbF9ieXRlX3NlcXVlbmNlID0gRUlMU0VRLAotICAgICAgICBpbmFwcHJvcHJpYXRlX2lvX2NvbnRyb2xfb3BlcmF0aW9uID0gRU5PVFRZLAotICAgICAgICBpbnRlcnJ1cHRlZCA9IEVJTlRSLAotICAgICAgICBpbnZhbGlkX2FyZ3VtZW50ID0gRUlOVkFMLAotICAgICAgICBpbnZhbGlkX3NlZWsgPSBFU1BJUEUsCi0gICAgICAgIGlvX2Vycm9yID0gRUlPLAotICAgICAgICBpc19hX2RpcmVjdG9yeSA9IEVJU0RJUiwKLSAgICAgICAgbWVzc2FnZV9zaXplID0gRU1TR1NJWkUsCi0gICAgICAgIG5ldHdvcmtfZG93biA9IEVORVRET1dOLAotICAgICAgICBuZXR3b3JrX3Jlc2V0ID0gRU5FVFJFU0VULAotICAgICAgICBuZXR3b3JrX3VucmVhY2hhYmxlID0gRU5FVFVOUkVBQ0gsCi0gICAgICAgIG5vX2J1ZmZlcl9zcGFjZSA9IEVOT0JVRlMsCi0gICAgICAgIG5vX2NoaWxkX3Byb2Nlc3MgPSBFQ0hJTEQsCi0gICAgICAgIG5vX2xpbmsgPSBFTk9MSU5LLAotICAgICAgICBub19sb2NrX2F2YWlsYWJsZSA9IEVOT0xDSywKLSAgICAgICAgbm9fbWVzc2FnZV9hdmFpbGFibGUgPSBFTk9EQVRBLAotICAgICAgICBub19tZXNzYWdlID0gRU5PTVNHLAotICAgICAgICBub19wcm90b2NvbF9vcHRpb24gPSBFTk9QUk9UT09QVCwKLSAgICAgICAgbm9fc3BhY2Vfb25fZGV2aWNlID0gRU5PU1BDLAotICAgICAgICBub19zdHJlYW1fcmVzb3VyY2VzID0gRU5PU1IsCi0gICAgICAgIG5vX3N1Y2hfZGV2aWNlX29yX2FkZHJlc3MgPSBFTlhJTywKLSAgICAgICAgbm9fc3VjaF9kZXZpY2UgPSBFTk9ERVYsCi0gICAgICAgIG5vX3N1Y2hfZmlsZV9vcl9kaXJlY3RvcnkgPSBFTk9FTlQsCi0gICAgICAgIG5vX3N1Y2hfcHJvY2VzcyA9IEVTUkNILAotICAgICAgICBub3RfYV9kaXJlY3RvcnkgPSBFTk9URElSLAotICAgICAgICBub3RfYV9zb2NrZXQgPSBFTk9UU09DSywKLSAgICAgICAgbm90X2Ffc3RyZWFtID0gRU5PU1RSLAotICAgICAgICBub3RfY29ubmVjdGVkID0gRU5PVENPTk4sCi0gICAgICAgIG5vdF9lbm91Z2hfbWVtb3J5ID0gRU5PTUVNLAotICAgICAgICBub3Rfc3VwcG9ydGVkID0gRU5PVFNVUCwKLSAgICAgICAgb3BlcmF0aW9uX2NhbmNlbGVkID0gRUNBTkNFTEVELAotICAgICAgICBvcGVyYXRpb25faW5fcHJvZ3Jlc3MgPSBFSU5QUk9HUkVTUywKLSAgICAgICAgb3BlcmF0aW9uX25vdF9wZXJtaXR0ZWQgPSBFUEVSTSwKLSAgICAgICAgb3BlcmF0aW9uX25vdF9zdXBwb3J0ZWQgPSBFT1BOT1RTVVBQLAotICAgICAgICBvcGVyYXRpb25fd291bGRfYmxvY2sgPSBFV09VTERCTE9DSywKLSAgICAgICAgb3duZXJfZGVhZCA9IEVPV05FUkRFQUQsCi0gICAgICAgIHBlcm1pc3Npb25fZGVuaWVkID0gRUFDQ0VTLAotICAgICAgICBwcm90b2NvbF9lcnJvciA9IEVQUk9UTywKLSAgICAgICAgcHJvdG9jb2xfbm90X3N1cHBvcnRlZCA9IEVQUk9UT05PU1VQUE9SVCwKLSAgICAgICAgcmVhZF9vbmx5X2ZpbGVfc3lzdGVtID0gRVJPRlMsCi0gICAgICAgIHJlc291cmNlX2RlYWRsb2NrX3dvdWxkX29jY3VyID0gRURFQURMSywKLSAgICAgICAgcmVzb3VyY2VfdW5hdmFpbGFibGVfdHJ5X2FnYWluID0gRUFHQUlOLAotICAgICAgICByZXN1bHRfb3V0X29mX3JhbmdlID0gRVJBTkdFLAotICAgICAgICBzdGF0ZV9ub3RfcmVjb3ZlcmFibGUgPSBFTk9UUkVDT1ZFUkFCTEUsCi0gICAgICAgIHN0cmVhbV90aW1lb3V0ID0gRVRJTUUsCi0gICAgICAgIHRleHRfZmlsZV9idXN5ID0gRVRYVEJTWSwKLSAgICAgICAgdGltZWRfb3V0ID0gRVRJTUVET1VULAotICAgICAgICB0b29fbWFueV9maWxlc19vcGVuX2luX3N5c3RlbSA9IEVORklMRSwKLSAgICAgICAgdG9vX21hbnlfZmlsZXNfb3BlbiA9IEVNRklMRSwKLSAgICAgICAgdG9vX21hbnlfbGlua3MgPSBFTUxJTkssCi0gICAgICAgIHRvb19tYW55X3N5bWJvbGljX2xpbmtfbGV2ZWxzID0gRUxPT1AsCi0gICAgICAgIHZhbHVlX3Rvb19sYXJnZSA9IEVPVkVSRkxPVywKLSAgICAgICAgd3JvbmdfcHJvdG9jb2xfdHlwZSA9IEVQUk9UT1RZUEUKLSAgICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBlcnJjCi0KLSMgaWZuZGVmIE5ETkJPT1NUX1NZU1RFTV9OT19ERVBSRUNBVEVECi0gICAgbmFtZXNwYWNlIHBvc2l4ID0gZXJyYzsKLSAgICBuYW1lc3BhY2UgcG9zaXhfZXJyb3IgPSBlcnJjOwotIyBlbmRpZgotCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfZXJyb3JfY29uZGl0aW9uX2VudW08ZXJyYzo6ZXJyY190PgotICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0KLQotICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vICBPcGVyYXRpbmcgc3lzdGVtIHNwZWNpZmljIGludGVyZmFjZXMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotCi0gICAgLy8gIFRoZSBpbnRlcmZhY2UgaXMgZGl2aWRlZCBpbnRvIGdlbmVyYWwgYW5kIHN5c3RlbS1zcGVjaWZpYyBwb3J0aW9ucyB0bwotICAgIC8vICBtZWV0IHRoZXNlIHJlcXVpcmVtZW50czoKLSAgICAvLwotICAgIC8vICAqIENvZGUgY2FsbGluZyBhbiBvcGVyYXRpbmcgc3lzdGVtIEFQSSBjYW4gY3JlYXRlIGFuIGVycm9yX2NvZGUgd2l0aAotICAgIC8vICAgIGEgc2luZ2xlIGNhdGVnb3J5IChzeXN0ZW1fY2F0ZWdvcnkpLCBldmVuIGZvciBQT1NJWC1saWtlIG9wZXJhdGluZwotICAgIC8vICAgIHN5c3RlbXMgdGhhdCByZXR1cm4gc29tZSBQT1NJWCBlcnJubyB2YWx1ZXMgYW5kIHNvbWUgbmF0aXZlIGVycm5vCi0gICAgLy8gICAgdmFsdWVzLiBUaGlzIGNvZGUgc2hvdWxkIG5vdCBoYXZlIHRvIHBheSB0aGUgY29zdCBvZiBkaXN0aW5ndWlzaGluZwotICAgIC8vICAgIGJldHdlZW4gY2F0ZWdvcmllcywgc2luY2UgaXQgaXMgbm90IHlldCBrbm93biBpZiB0aGF0IGlzIG5lZWRlZC4KLSAgICAvLwotICAgIC8vICAqIFVzZXJzIHdpc2hpbmcgdG8gd3JpdGUgc3lzdGVtLXNwZWNpZmljIGNvZGUgc2hvdWxkIGJlIGdpdmVuIGVudW1zIGZvcgotICAgIC8vICAgIGF0IGxlYXN0IHRoZSBjb21tb24gZXJyb3IgY2FzZXMuCi0gICAgLy8KLSAgICAvLyAgKiBTeXN0ZW0gc3BlY2lmaWMgY29kZSBzaG91bGQgZmFpbCBhdCBjb21waWxlIHRpbWUgaWYgbW92ZWQgdG8gYW5vdGhlcgotICAgIC8vICAgIG9wZXJhdGluZyBzeXN0ZW0uCi0KLSAgICAvLyAgVGhlIHN5c3RlbSBzcGVjaWZpYyBwb3J0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBsb2NhdGVkIGluIGhlYWRlcnMKLSAgICAvLyAgd2l0aCBuYW1lcyByZWZsZWN0aW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiBGb3IgZXhhbXBsZSwKLSAgICAvLwotICAgIC8vICAgICAgIDxuZG5ib29zdC9zeXN0ZW0vY3lnd2luX2Vycm9yLmhwcD4KLSAgICAvLyAgICAgICA8bmRuYm9vc3Qvc3lzdGVtL2xpbnV4X2Vycm9yLmhwcD4KLSAgICAvLyAgICAgICA8bmRuYm9vc3Qvc3lzdGVtL3dpbmRvd3NfZXJyb3IuaHBwPgotICAgIC8vCi0gICAgLy8gIFRoZXNlIGhlYWRlcnMgYXJlIGVmZmVjdGl2ZWx5IGVtcHR5IGZvciBjb21waWxlcyBvbiBvcGVyYXRpbmcgc3lzdGVtcwotICAgIC8vICB3aGVyZSB0aGV5IGFyZSBub3QgYXBwbGljYWJsZS4KLQotICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vICBjbGFzcyBlcnJvcl9jYXRlZ29yeSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIGNsYXNzIGVycm9yX2NhdGVnb3J5IDogcHVibGljIG5vbmNvcHlhYmxlCi0gICAgewotICAgIHB1YmxpYzoKLSAgICAgIHZpcnR1YWwgfmVycm9yX2NhdGVnb3J5KCl7fQotCi0gICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKiAgICAgbmFtZSgpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCA9IDA7Ci0gICAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nICAgICAgbWVzc2FnZSggaW50IGV2ICkgY29uc3QgPSAwOwotICAgICAgaW5saW5lIHZpcnR1YWwgZXJyb3JfY29uZGl0aW9uICBkZWZhdWx0X2Vycm9yX2NvbmRpdGlvbiggaW50IGV2ICkgY29uc3QgIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVDsKLSAgICAgIGlubGluZSB2aXJ0dWFsIGJvb2wgICAgICAgICAgICAgZXF1aXZhbGVudCggaW50IGNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29uZGl0aW9uICYgY29uZGl0aW9uICkgY29uc3QgIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVDsKLSAgICAgIGlubGluZSB2aXJ0dWFsIGJvb2wgICAgICAgICAgICAgZXF1aXZhbGVudCggY29uc3QgZXJyb3JfY29kZSAmIGNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbmRpdGlvbiApIGNvbnN0ICBORE5CT09TVF9TWVNURU1fTk9FWENFUFQ7Ci0KLSAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBlcnJvcl9jYXRlZ29yeSAmIHJocykgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIHsgcmV0dXJuIHRoaXMgPT0gJnJoczsgfQotICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgcmhzKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgeyByZXR1cm4gdGhpcyAhPSAmcmhzOyB9Ci0gICAgICBib29sIG9wZXJhdG9yPCggY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiByaHMgKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bGVzczxjb25zdCBlcnJvcl9jYXRlZ29yeSo+KCkoIHRoaXMsICZyaHMgKTsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgLy8gIHByZWRlZmluZWQgZXJyb3IgY2F0ZWdvcmllcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jIGlmZGVmIE5ETkJPT1NUX0VSUk9SX0NPREVfSEVBREVSX09OTFkKLSAgICBpbmxpbmUgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgc3lzdGVtX2NhdGVnb3J5KCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUOwotICAgIGlubGluZSBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBnZW5lcmljX2NhdGVnb3J5KCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUOwotI2Vsc2UKLSAgICBORE5CT09TVF9TWVNURU1fREVDTCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBzeXN0ZW1fY2F0ZWdvcnkoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQ7Ci0gICAgTkROQk9PU1RfU1lTVEVNX0RFQ0wgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgZ2VuZXJpY19jYXRlZ29yeSgpIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVDsKLSNlbmRpZgotICAgIC8vICBkZXByZWNhdGVkIHN5bm9ueW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyBpZm5kZWYgTkROQk9PU1RfU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgICBpbmxpbmUgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgZ2V0X3N5c3RlbV9jYXRlZ29yeSgpIHsgcmV0dXJuIHN5c3RlbV9jYXRlZ29yeSgpOyB9Ci0gICAgaW5saW5lIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIGdldF9nZW5lcmljX2NhdGVnb3J5KCkgeyByZXR1cm4gZ2VuZXJpY19jYXRlZ29yeSgpOyB9Ci0gICAgaW5saW5lIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIGdldF9wb3NpeF9jYXRlZ29yeSgpIHsgcmV0dXJuIGdlbmVyaWNfY2F0ZWdvcnkoKTsgfQotICAgIHN0YXRpYyBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBwb3NpeF9jYXRlZ29yeSA9IGdlbmVyaWNfY2F0ZWdvcnkoKTsKLSAgICBzdGF0aWMgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgZXJybm9fZWNhdCAgICAgPSBnZW5lcmljX2NhdGVnb3J5KCk7Ci0gICAgc3RhdGljIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIG5hdGl2ZV9lY2F0ICAgID0gc3lzdGVtX2NhdGVnb3J5KCk7Ci0jIGVuZGlmCi0KLSAgICAvLyAgY2xhc3MgZXJyb3JfY29uZGl0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyAgZXJyb3JfY29uZGl0aW9ucyBhcmUgcG9ydGFibGUsIGVycm9yX2NvZGVzIGFyZSBzeXN0ZW0gb3IgbGlicmFyeSBzcGVjaWZpYwotCi0gICAgY2xhc3MgZXJyb3JfY29uZGl0aW9uCi0gICAgewotICAgIHB1YmxpYzoKLQotICAgICAgLy8gY29uc3RydWN0b3JzOgotICAgICAgZXJyb3JfY29uZGl0aW9uKCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIDogbV92YWwoMCksIG1fY2F0KCZnZW5lcmljX2NhdGVnb3J5KCkpIHt9Ci0gICAgICBlcnJvcl9jb25kaXRpb24oIGludCB2YWwsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgY2F0ICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIDogbV92YWwodmFsKSwgbV9jYXQoJmNhdCkge30KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEVycm9yQ29uZGl0aW9uRW51bT4KLSAgICAgICAgZXJyb3JfY29uZGl0aW9uKEVycm9yQ29uZGl0aW9uRW51bSBlLAotICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8aXNfZXJyb3JfY29uZGl0aW9uX2VudW08RXJyb3JDb25kaXRpb25FbnVtPiA+Ojp0eXBlKiA9IDApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICAqdGhpcyA9IG1ha2VfZXJyb3JfY29uZGl0aW9uKGUpOwotICAgICAgfQotCi0gICAgICAvLyBtb2RpZmllcnM6Ci0KLSAgICAgIHZvaWQgYXNzaWduKCBpbnQgdmFsLCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmIGNhdCApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICBtX3ZhbCA9IHZhbDsKLSAgICAgICAgbV9jYXQgPSAmY2F0OwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckNvbmRpdGlvbkVudW0+Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8aXNfZXJyb3JfY29uZGl0aW9uX2VudW08RXJyb3JDb25kaXRpb25FbnVtPiwgZXJyb3JfY29uZGl0aW9uPjo6dHlwZSAmCi0gICAgICAgICAgb3BlcmF0b3I9KCBFcnJvckNvbmRpdGlvbkVudW0gdmFsICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgICp0aGlzID0gbWFrZV9lcnJvcl9jb25kaXRpb24odmFsKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgfQotCi0gICAgICB2b2lkIGNsZWFyKCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgIG1fdmFsID0gMDsKLSAgICAgICAgbV9jYXQgPSAmZ2VuZXJpY19jYXRlZ29yeSgpOwotICAgICAgfQotCi0gICAgICAvLyBvYnNlcnZlcnM6Ci0gICAgICBpbnQgICAgICAgICAgICAgICAgICAgICB2YWx1ZSgpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCAgICB7IHJldHVybiBtX3ZhbDsgfQotICAgICAgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgY2F0ZWdvcnkoKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgeyByZXR1cm4gKm1fY2F0OyB9Ci0gICAgICBzdGQ6OnN0cmluZyAgICAgICAgICAgICBtZXNzYWdlKCkgY29uc3QgIHsgcmV0dXJuIG1fY2F0LT5tZXNzYWdlKHZhbHVlKCkpOyB9Ci0KLSAgICAgIHR5cGVkZWYgdm9pZCAoKnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSkoKTsKLSAgICAgIHN0YXRpYyB2b2lkIHVuc3BlY2lmaWVkX2Jvb2xfdHJ1ZSgpIHt9Ci0KLSAgICAgIG9wZXJhdG9yIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSgpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCAgLy8gdHJ1ZSBpZiBlcnJvcgotICAgICAgewotICAgICAgICByZXR1cm4gbV92YWwgPT0gMCA/IDAgOiB1bnNwZWNpZmllZF9ib29sX3RydWU7Ci0gICAgICB9Ci0KLSAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUICAvLyB0cnVlIGlmIG5vIGVycm9yCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbCA9PSAwOwotICAgICAgfQotCi0gICAgICAvLyByZWxhdGlvbmFsczoKLSAgICAgIC8vICB0aGUgbW9yZSBzeW1tZXRyaWNhbCBub24tbWVtYmVyIHN5bnRheCBhbGxvd3MgZW51bQotICAgICAgLy8gIGNvbnZlcnNpb25zIHdvcmsgZm9yIGJvdGggcmhzIGFuZCBsaHMuCi0gICAgICBpbmxpbmUgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgZXJyb3JfY29uZGl0aW9uICYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICByZXR1cm4gbGhzLm1fY2F0ID09IHJocy5tX2NhdCAmJiBsaHMubV92YWwgPT0gcmhzLm1fdmFsOwotICAgICAgfQotCi0gICAgICBpbmxpbmUgZnJpZW5kIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiByaHMgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgICAgLy8gIHRoZSBtb3JlIHN5bW1ldHJpY2FsIG5vbi1tZW1iZXIgc3ludGF4IGFsbG93cyBlbnVtCi0gICAgICAgIC8vICBjb252ZXJzaW9ucyB3b3JrIGZvciBib3RoIHJocyBhbmQgbGhzLgotICAgICAgewotICAgICAgICByZXR1cm4gbGhzLm1fY2F0IDwgcmhzLm1fY2F0Ci0gICAgICAgICAgfHwgKGxocy5tX2NhdCA9PSByaHMubV9jYXQgJiYgbGhzLm1fdmFsIDwgcmhzLm1fdmFsKTsKLSAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtX3ZhbDsKLSAgICAgIGNvbnN0IGVycm9yX2NhdGVnb3J5ICogIG1fY2F0OwotCi0gICAgfTsKLQotICAgIC8vICBjbGFzcyBlcnJvcl9jb2RlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vICBXZSB3YW50IGVycm9yX2NvZGUgdG8gYmUgYSB2YWx1ZSB0eXBlIHRoYXQgY2FuIGJlIGNvcGllZCB3aXRob3V0IHNsaWNpbmcKLSAgICAvLyAgYW5kIHdpdGhvdXQgcmVxdWlyaW5nIGhlYXAgYWxsb2NhdGlvbiwgYnV0IHdlIGFsc28gd2FudCBpdCB0byBoYXZlCi0gICAgLy8gIHBvbHltb3JwaGljIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBlcnJvciBjYXRlZ29yeS4gVGhpcyBpcyBhY2hpZXZlZCBieQotICAgIC8vICBhYnN0cmFjdCBiYXNlIGNsYXNzIGVycm9yX2NhdGVnb3J5IHN1cHBseWluZyB0aGUgcG9seW1vcnBoaWMgYmVoYXZpb3IsCi0gICAgLy8gIGFuZCBlcnJvcl9jb2RlIGNvbnRhaW5pbmcgYSBwb2ludGVyIHRvIGFuIG9iamVjdCBvZiBhIHR5cGUgZGVyaXZlZAotICAgIC8vICBmcm9tIGVycm9yX2NhdGVnb3J5LgotICAgIGNsYXNzIGVycm9yX2NvZGUKLSAgICB7Ci0gICAgcHVibGljOgotCi0gICAgICAvLyBjb25zdHJ1Y3RvcnM6Ci0gICAgICBlcnJvcl9jb2RlKCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIDogbV92YWwoMCksIG1fY2F0KCZzeXN0ZW1fY2F0ZWdvcnkoKSkge30KLSAgICAgIGVycm9yX2NvZGUoIGludCB2YWwsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgY2F0ICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIDogbV92YWwodmFsKSwgbV9jYXQoJmNhdCkge30KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEVycm9yQ29kZUVudW0+Ci0gICAgICAgIGVycm9yX2NvZGUoRXJyb3JDb2RlRW51bSBlLAotICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8aXNfZXJyb3JfY29kZV9lbnVtPEVycm9yQ29kZUVudW0+ID46OnR5cGUqID0gMCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgICp0aGlzID0gbWFrZV9lcnJvcl9jb2RlKGUpOwotICAgICAgfQotCi0gICAgICAvLyBtb2RpZmllcnM6Ci0gICAgICB2b2lkIGFzc2lnbiggaW50IHZhbCwgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiBjYXQgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgbV92YWwgPSB2YWw7Ci0gICAgICAgIG1fY2F0ID0gJmNhdDsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXJyb3JDb2RlRW51bT4KLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxpc19lcnJvcl9jb2RlX2VudW08RXJyb3JDb2RlRW51bT4sIGVycm9yX2NvZGU+Ojp0eXBlICYKLSAgICAgICAgICBvcGVyYXRvcj0oIEVycm9yQ29kZUVudW0gdmFsICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgICp0aGlzID0gbWFrZV9lcnJvcl9jb2RlKHZhbCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgIH0KLQotICAgICAgdm9pZCBjbGVhcigpIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICBtX3ZhbCA9IDA7Ci0gICAgICAgIG1fY2F0ID0gJnN5c3RlbV9jYXRlZ29yeSgpOwotICAgICAgfQotCi0gICAgICAvLyBvYnNlcnZlcnM6Ci0gICAgICBpbnQgICAgICAgICAgICAgICAgICAgICB2YWx1ZSgpIGNvbnN0ICBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgICB7IHJldHVybiBtX3ZhbDsgfQotICAgICAgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgY2F0ZWdvcnkoKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgeyByZXR1cm4gKm1fY2F0OyB9Ci0gICAgICBlcnJvcl9jb25kaXRpb24gICAgICAgICBkZWZhdWx0X2Vycm9yX2NvbmRpdGlvbigpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCAgeyByZXR1cm4gbV9jYXQtPmRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKHZhbHVlKCkpOyB9Ci0gICAgICBzdGQ6OnN0cmluZyAgICAgICAgICAgICBtZXNzYWdlKCkgY29uc3QgIHsgcmV0dXJuIG1fY2F0LT5tZXNzYWdlKHZhbHVlKCkpOyB9Ci0KLSAgICAgIHR5cGVkZWYgdm9pZCAoKnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSkoKTsKLSAgICAgIHN0YXRpYyB2b2lkIHVuc3BlY2lmaWVkX2Jvb2xfdHJ1ZSgpIHt9Ci0KLSAgICAgIG9wZXJhdG9yIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSgpIGNvbnN0ICBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgLy8gdHJ1ZSBpZiBlcnJvcgotICAgICAgewotICAgICAgICByZXR1cm4gbV92YWwgPT0gMCA/IDAgOiB1bnNwZWNpZmllZF9ib29sX3RydWU7Ci0gICAgICB9Ci0KLSAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCAvLyB0cnVlIGlmIG5vIGVycm9yCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbCA9PSAwOwotICAgICAgfQotCi0gICAgICAvLyByZWxhdGlvbmFsczoKLSAgICAgIGlubGluZSBmcmllbmQgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBlcnJvcl9jb2RlICYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvZGUgJiByaHMgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgICAgLy8gIHRoZSBtb3JlIHN5bW1ldHJpY2FsIG5vbi1tZW1iZXIgc3ludGF4IGFsbG93cyBlbnVtCi0gICAgICAgIC8vICBjb252ZXJzaW9ucyB3b3JrIGZvciBib3RoIHJocyBhbmQgbGhzLgotICAgICAgewotICAgICAgICByZXR1cm4gbGhzLm1fY2F0ID09IHJocy5tX2NhdCAmJiBsaHMubV92YWwgPT0gcmhzLm1fdmFsOwotICAgICAgfQotCi0gICAgICBpbmxpbmUgZnJpZW5kIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBlcnJvcl9jb2RlICYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29kZSAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgICAvLyAgdGhlIG1vcmUgc3ltbWV0cmljYWwgbm9uLW1lbWJlciBzeW50YXggYWxsb3dzIGVudW0KLSAgICAgICAgLy8gIGNvbnZlcnNpb25zIHdvcmsgZm9yIGJvdGggcmhzIGFuZCBsaHMuCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9jYXQgPCByaHMubV9jYXQKLSAgICAgICAgICB8fCAobGhzLm1fY2F0ID09IHJocy5tX2NhdCAmJiBsaHMubV92YWwgPCByaHMubV92YWwpOwotICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIG1fdmFsOwotICAgICAgY29uc3QgZXJyb3JfY2F0ZWdvcnkgKiAgbV9jYXQ7Ci0KLSAgICB9OwotCi0gICAgLy8gIHByZWRlZmluZWQgZXJyb3JfY29kZSBvYmplY3QgdXNlZCBhcyAidGhyb3cgb24gZXJyb3IiIHRhZwotIyBpZm5kZWYgTkROQk9PU1RfU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgICBORE5CT09TVF9TWVNURU1fREVDTCBleHRlcm4gZXJyb3JfY29kZSB0aHJvd3M7Ci0jIGVuZGlmCi0KLSAgICAvLyAgTW92aW5nIGZyb20gYSAidGhyb3dzIiBvYmplY3QgdG8gYSAidGhyb3dzIiBmdW5jdGlvbiB3aXRob3V0IGJyZWFraW5nCi0gICAgLy8gIGV4aXN0aW5nIGNvZGUgaXMgYSBiaXQgb2YgYSBwcm9ibGVtLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBwbGFjZSB0aGUKLSAgICAvLyAgInRocm93cyIgZnVuY3Rpb24gaW4gbmFtZXNwYWNlIG5kbmJvb3N0IHJhdGhlciB0aGFuIG5hbWVzcGFjZSBuZG5ib29zdDo6c3lzdGVtLgotCi0gIH0gIC8vIG5hbWVzcGFjZSBzeXN0ZW0KLQotICBuYW1lc3BhY2UgZGV0YWlsIHsgaW5saW5lIHN5c3RlbTo6ZXJyb3JfY29kZSAqIHRocm93cygpIHsgcmV0dXJuIDA7IH0gfQotICAgIC8vICBNaXN1c2Ugb2YgdGhlIGVycm9yX2NvZGUgb2JqZWN0IGlzIHR1cm5lZCBpbnRvIGEgbm9pc3kgZmFpbHVyZSBieQotICAgIC8vICBwb2lzb25pbmcgdGhlIHJlZmVyZW5jZS4gVGhpcyBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QKLSAgICAvLyAgcHJvZHVjZSB3YXJuaW5ncyBvciBlcnJvcnMgZnJvbSBwb3B1bGFyIGNvbXBpbGVycywgaXMgdmVyeSBlZmZpY2llbnQKLSAgICAvLyAgKGFzIGRldGVybWluZWQgYnkgaW5zcGVjdGluZyBnZW5lcmF0ZWQgY29kZSksIGFuZCBkb2VzIG5vdCBzdWZmZXIKLSAgICAvLyAgZnJvbSBvcmRlciBvZiBpbml0aWFsaXphdGlvbiBwcm9ibGVtcy4gSW4gcHJhY3RpY2UsIGl0IGFsc28gc2VlbXMKLSAgICAvLyAgY2F1c2UgdXNlciBmdW5jdGlvbiBlcnJvciBoYW5kbGluZyBpbXBsZW1lbnRhdGlvbiBlcnJvcnMgdG8gYmUgZGV0ZWN0ZWQKLSAgICAvLyAgdmVyeSBlYXJseSBpbiB0aGUgZGV2ZWxvcG1lbnQgY3ljbGUuCi0KLSAgaW5saW5lIHN5c3RlbTo6ZXJyb3JfY29kZSAmIHRocm93cygpCi0gICAgeyByZXR1cm4gKmRldGFpbDo6dGhyb3dzKCk7IH0KLQotICBuYW1lc3BhY2Ugc3lzdGVtCi0gIHsKLSAgICAvLyAgbm9uLW1lbWJlciBmdW5jdGlvbnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBlcnJvcl9jb2RlICYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvZGUgJiByaHMgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29uZGl0aW9uICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuICEobGhzID09IHJocyk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgZXJyb3JfY29kZSAmIGNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29uZGl0aW9uICYgY29uZGl0aW9uICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuIGNvZGUuY2F0ZWdvcnkoKS5lcXVpdmFsZW50KCBjb2RlLnZhbHVlKCksIGNvbmRpdGlvbiApCi0gICAgICAgIHx8IGNvbmRpdGlvbi5jYXRlZ29yeSgpLmVxdWl2YWxlbnQoIGNvZGUsIGNvbmRpdGlvbi52YWx1ZSgpICk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgZXJyb3JfY29kZSAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiByaHMgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBjb25kaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29kZSAmIGNvZGUgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gY29uZGl0aW9uLmNhdGVnb3J5KCkuZXF1aXZhbGVudCggY29kZSwgY29uZGl0aW9uLnZhbHVlKCkgKQotICAgICAgICB8fCBjb2RlLmNhdGVnb3J5KCkuZXF1aXZhbGVudCggY29kZS52YWx1ZSgpLCBjb25kaXRpb24gKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29kZSAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiAhKGxocyA9PSByaHMpOwotICAgIH0KLQotICAgIC8vIFRPRE86IGJvdGggb2YgdGhlc2UgbWF5IG1vdmUgZWxzZXdoZXJlLCBidXQgdGhlIExXRyBoYXNuJ3Qgc3Bva2VuIHlldC4KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotICAgIGlubGluZSBzdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsdHJhaXRzPiYKLSAgICAgIG9wZXJhdG9yPDwgKHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCx0cmFpdHM+JiBvcywgZXJyb3JfY29kZSBlYykKLSAgICB7Ci0gICAgICBvcyA8PCBlYy5jYXRlZ29yeSgpLm5hbWUoKSA8PCAnOicgPDwgZWMudmFsdWUoKTsKLSAgICAgIHJldHVybiBvczsKLSAgICB9Ci0KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZSggY29uc3QgZXJyb3JfY29kZSAmIGVjICkKLSAgICB7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KGVjLnZhbHVlKCkpCi0gICAgICAgICsgcmVpbnRlcnByZXRfY2FzdDxzdGQ6OnNpemVfdD4oJmVjLmNhdGVnb3J5KCkpOwotICAgIH0KLQotICAgIC8vICBtYWtlXyogZnVuY3Rpb25zIGZvciBlcnJjOjplcnJjX3QgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIG5hbWVzcGFjZSBlcnJjCi0gICAgewotICAgICAgLy8gIGV4cGxpY2l0IGNvbnZlcnNpb246Ci0gICAgICBpbmxpbmUgZXJyb3JfY29kZSBtYWtlX2Vycm9yX2NvZGUoIGVycmNfdCBlICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICAgIHsgcmV0dXJuIGVycm9yX2NvZGUoIGUsIGdlbmVyaWNfY2F0ZWdvcnkoKSApOyB9Ci0KLSAgICAgIC8vICBpbXBsaWNpdCBjb252ZXJzaW9uOgotICAgICAgaW5saW5lIGVycm9yX2NvbmRpdGlvbiBtYWtlX2Vycm9yX2NvbmRpdGlvbiggZXJyY190IGUgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgICAgeyByZXR1cm4gZXJyb3JfY29uZGl0aW9uKCBlLCBnZW5lcmljX2NhdGVnb3J5KCkgKTsgfQotICAgIH0KLQotICAgIC8vICBlcnJvcl9jYXRlZ29yeSBkZWZhdWx0IGltcGxlbWVudGF0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIGVycm9yX2NvbmRpdGlvbiBlcnJvcl9jYXRlZ29yeTo6ZGVmYXVsdF9lcnJvcl9jb25kaXRpb24oIGludCBldiApIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiBlcnJvcl9jb25kaXRpb24oIGV2LCAqdGhpcyApOwotICAgIH0KLQotICAgIGJvb2wgZXJyb3JfY2F0ZWdvcnk6OmVxdWl2YWxlbnQoIGludCBjb2RlLAotICAgICAgY29uc3QgZXJyb3JfY29uZGl0aW9uICYgY29uZGl0aW9uICkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuIGRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKCBjb2RlICkgPT0gY29uZGl0aW9uOwotICAgIH0KLQotICAgIGJvb2wgZXJyb3JfY2F0ZWdvcnk6OmVxdWl2YWxlbnQoIGNvbnN0IGVycm9yX2NvZGUgJiBjb2RlLAotICAgICAgaW50IGNvbmRpdGlvbiApIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiAqdGhpcyA9PSBjb2RlLmNhdGVnb3J5KCkgJiYgY29kZS52YWx1ZSgpID09IGNvbmRpdGlvbjsKLSAgICB9Ci0KLSAgfSAvLyBuYW1lc3BhY2Ugc3lzdGVtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBwb3BzIGFiaV9wcmVmaXguaHBwIHByYWdtYXMKLQotIyBpZmRlZiBORE5CT09TVF9FUlJPUl9DT0RFX0hFQURFUl9PTkxZCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvLi4vbGlicy9zeXN0ZW0vc3JjL2Vycm9yX2NvZGUuY3BwPgotIyBlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfRVJST1JfQ09ERV9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9zeXN0ZW1fZXJyb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vc3lzdGVtX2Vycm9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZhNzMyZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9zeXN0ZW1fZXJyb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLy8gIEJvb3N0IHN5c3RlbV9lcnJvci5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDA2Ci0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfU1lTVEVNX0VSUk9SX0hQUAotI2RlZmluZSBORE5CT09TVF9TWVNURU1fRVJST1JfSFBQCi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgbmFtZXNwYWNlIHN5c3RlbQotICB7Ci0gICAgLy8gIGNsYXNzIHN5c3RlbV9lcnJvciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIGNsYXNzIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIHN5c3RlbV9lcnJvciA6IHB1YmxpYyBzdGQ6OnJ1bnRpbWVfZXJyb3IKLSAgICAvLyBORE5CT09TVF9TWU1CT0xfVklTSUJMRSBpcyBuZWVkZWQgYnkgR0NDIHRvIGVuc3VyZSBzeXN0ZW1fZXJyb3IgdGhyb3duIGZyb20gYSBzaGFyZWQKLSAgICAvLyBsaWJyYXJ5IGNhbiBiZSBjYXVnaHQuIFNlZSBzdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0LzM2OTcKLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgc3lzdGVtX2Vycm9yKCBlcnJvcl9jb2RlIGVjICkKLSAgICAgICAgICA6IHN0ZDo6cnVudGltZV9lcnJvcigiIiksIG1fZXJyb3JfY29kZShlYykge30KLQotICAgICAgc3lzdGVtX2Vycm9yKCBlcnJvcl9jb2RlIGVjLCBjb25zdCBzdGQ6OnN0cmluZyAmIHdoYXRfYXJnICkKLSAgICAgICAgICA6IHN0ZDo6cnVudGltZV9lcnJvcih3aGF0X2FyZyksIG1fZXJyb3JfY29kZShlYykge30KLQotICAgICAgc3lzdGVtX2Vycm9yKCBlcnJvcl9jb2RlIGVjLCBjb25zdCBjaGFyKiB3aGF0X2FyZyApCi0gICAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3Iod2hhdF9hcmcpLCBtX2Vycm9yX2NvZGUoZWMpIHt9Ci0KLSAgICAgIHN5c3RlbV9lcnJvciggaW50IGV2LCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmIGVjYXQgKQotICAgICAgICAgIDogc3RkOjpydW50aW1lX2Vycm9yKCIiKSwgbV9lcnJvcl9jb2RlKGV2LGVjYXQpIHt9Ci0KLSAgICAgIHN5c3RlbV9lcnJvciggaW50IGV2LCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmIGVjYXQsCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgd2hhdF9hcmcgKQotICAgICAgICAgIDogc3RkOjpydW50aW1lX2Vycm9yKHdoYXRfYXJnKSwgbV9lcnJvcl9jb2RlKGV2LGVjYXQpIHt9Ci0KLSAgICAgIHN5c3RlbV9lcnJvciggaW50IGV2LCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmIGVjYXQsCi0gICAgICAgIGNvbnN0IGNoYXIgKiB3aGF0X2FyZyApCi0gICAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3Iod2hhdF9hcmcpLCBtX2Vycm9yX2NvZGUoZXYsZWNhdCkge30KLQotICAgICAgdmlydHVhbCB+c3lzdGVtX2Vycm9yKCkgdGhyb3coKSB7fQotCi0gICAgICBjb25zdCBlcnJvcl9jb2RlICYgIGNvZGUoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIG1fZXJyb3JfY29kZTsgfQotICAgICAgY29uc3QgY2hhciAqICAgICAgICB3aGF0KCkgY29uc3QgdGhyb3coKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICBlcnJvcl9jb2RlICAgICAgICAgICBtX2Vycm9yX2NvZGU7Ci0gICAgICBtdXRhYmxlIHN0ZDo6c3RyaW5nICBtX3doYXQ7Ci0gICAgfTsKLQotICAgIC8vICBpbXBsZW1lbnRhdGlvbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIGlubGluZSBjb25zdCBjaGFyICogc3lzdGVtX2Vycm9yOjp3aGF0KCkgY29uc3QgdGhyb3coKQotICAgIC8vIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL2Vycm9yX2hhbmRsaW5nLmh0bWwgZm9yIGxhenkgYnVpbGQgcmF0aW9uYWxlCi0gICAgewotICAgICAgaWYgKCBtX3doYXQuZW1wdHkoKSApCi0gICAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgICAgICAgdHJ5Ci0jZW5kaWYKLSAgICAgICAgewotICAgICAgICAgIG1fd2hhdCA9IHRoaXMtPnN0ZDo6cnVudGltZV9lcnJvcjo6d2hhdCgpOwotICAgICAgICAgIGlmICggIW1fd2hhdC5lbXB0eSgpICkgbV93aGF0ICs9ICI6ICI7Ci0gICAgICAgICAgbV93aGF0ICs9IG1fZXJyb3JfY29kZS5tZXNzYWdlKCk7Ci0gICAgICAgIH0KLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgICAgICBjYXRjaCAoLi4uKSB7IHJldHVybiBzdGQ6OnJ1bnRpbWVfZXJyb3I6OndoYXQoKTsgfQotI2VuZGlmCi0gICAgICB9Ci0gICAgICByZXR1cm4gbV93aGF0LmNfc3RyKCk7Ci0gICAgfQotCi0gIH0gLy8gbmFtZXNwYWNlIHN5c3RlbQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1NZU1RFTV9FUlJPUl9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGVidWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RlYnVnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTUzNjk2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGVidWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDYtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBwb3J0YWJsZSBkZWJ1ZyBpbnRlcmZhY2VzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0RFQlVHX0FQSV9IUFBfMTEyMDA2R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfREVCVUdfQVBJX0hQUF8xMTIwMDZHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZWJ1ZyB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgY2hlY2sgaWYgcHJvZ3JhbSBpcyBydW5uaW5nIHVuZGVyIGRlYnVnZ2VyICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotYm9vbCBORE5CT09TVF9URVNUX0RFQ0wgdW5kZXJfZGVidWdnZXIoKTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIGNhdXNlIHByb2dyYW0gdG8gYnJlYWsgZXhlY3V0aW9uICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgaW4gZGVidWdnZXIgYXQgY2FsbCBwb2ludCAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZCBORE5CT09TVF9URVNUX0RFQ0wgZGVidWdnZXJfYnJlYWsoKTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBndWkgZGVidWdnZXIgc2V0dXAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgZGJnX3N0YXJ0dXBfaW5mbyB7Ci0gICAgbG9uZyAgICAgICAgICAgICAgICAgICAgcGlkOwotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGJyZWFrX29yX2NvbnRpbnVlOwotICAgIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIGJpbmFyeV9wYXRoOwotICAgIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIGRpc3BsYXk7Ci0gICAgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgaW5pdF9kb25lX2xvY2s7Ci19OwotCi10eXBlZGVmIHVuaXRfdGVzdDo6Y2FsbGJhY2sxPGRiZ19zdGFydHVwX2luZm8gY29uc3QmPiBkYmdfc3RhcnRlcjsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGRlYnVnZ2VyIHNldHVwICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPDEzMDApCi0KLXN0ZDo6c3RyaW5nIE5ETkJPT1NUX1RFU1RfREVDTCBzZXRfZGVidWdnZXIoIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIGRiZ19pZCApOwotCi0jZWxzZSAKLQotc3RkOjpzdHJpbmcgTkROQk9PU1RfVEVTVF9ERUNMIHNldF9kZWJ1Z2dlciggdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgZGJnX2lkLCBkYmdfc3RhcnRlciBzID0gZGJnX3N0YXJ0ZXIoKSApOwotCi0jZW5kaWYKLQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgYXR0YWNoIGRlYnVnZ2VyIHRvIHRoZSBjdXJyZW50IHByb2Nlc3MgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWJvb2wgTkROQk9PU1RfVEVTVF9ERUNMIGF0dGFjaF9kZWJ1Z2dlciggYm9vbCBicmVha19vcl9jb250aW51ZSA9IHRydWUgKTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgc3dpdGNoIG9uL29mZiBkZXRlY3QgbWVtb3J5IGxlYWtzIGZlYXR1cmUgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkIE5ETkJPT1NUX1RFU1RfREVDTCBkZXRlY3RfbWVtb3J5X2xlYWtzKCBib29sIG9uX29mZiApOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBjYXVzZSBwcm9ncmFtIHRvIGJyZWFrIGV4ZWN1dGlvbiBpbiAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICBkZWJ1Z2dlciBhdCBzcGVjaWZpYyBhbGxvY2F0aW9uIHBvaW50ICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkIE5ETkJPT1NUX1RFU1RfREVDTCBicmVha19tZW1vcnlfYWxsb2MoIGxvbmcgbWVtX2FsbG9jX29yZGVyX251bSApOwotCi19IC8vIG5hbWVzcGFjZSBkZWJ1ZwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGVidWdfY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZWJ1Z19jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTRlZmE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZWJ1Z19jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNi0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiB1c2VyJ3MgY29uZmlnIGZvciBCb29zdC5UZXN0IGRlYnVnZ2luZyBzdXBwb3J0Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0RFQlVHX0NPTkZJR19IUFBfMTEyMDA2R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfREVCVUdfQ09ORklHX0hQUF8xMTIwMDZHRVIKLQotLy8gJzsnIHNlcGFyYXRlZCBsaXN0IG9mIHN1cHBvcnRlZCBkZWJ1Z2dlcnMKLS8vICNkZWZpbmUgTkROQk9PU1RfVEVTVF9EQkdfTElTVCBnZGI7ZGJ4Ci0KLS8vIG1heGltdW0gc2l6ZSBvZiAvcHJvYy9waWQvc3RhdCBmaWxlCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1RFU1RfU1RBVF9MSU5FX01BWAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgxNjhiMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDYzNDQxICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBhcyBhIGNlbnRyYWwgcGxhY2UgZm9yIGdsb2JhbCBjb25maWd1cmF0aW9uIHN3aXRjaGVzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0NPTkZJR19IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ09ORklHX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBjb21waWxlcnMgd29ya2Fyb3VuZHMKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTcwKSkgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpICAgICB8fCBcCi0gICAgKGRlZmluZWQgX19zZ2kgJiYgTkROQk9PU1RfV09SS0FST1VORChfQ09NUElMRVJfVkVSU0lPTiwgTkROQk9PU1RfVEVTVEVEX0FUKDczMCkpKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfU0hJRlRFRF9MSU5FCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgKGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKSkKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX0NBTExfREVDTCBfX2NkZWNsCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMIC8qKi8KLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkgJiYgICAgICAgICAgICBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKSAgJiYgICBcCi0gICAgIWRlZmluZWQoX19NV0VSS1NfXykgCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9VU0VfU1REX0xPQ0FMRSAxCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDU3MCkgICAgICAgICAgICB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORCggX19DT01PX18sIDw9IDB4NDMzICkgICAgICAgICAgICAgIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lOVEVMX0NPTVBJTEVSLCA8PSA4MDAgKSAgICAgICAgfHwgXAotICAgIGRlZmluZWQoX19zZ2kpICYmIF9DT01QSUxFUl9WRVJTSU9OIDw9IDczMCAgICAgICAgICB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkgIHx8IFwKLSAgICBkZWZpbmVkKF9fREVDQ1hYKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAotICAgIGRlZmluZWQoX19ETUNfXykKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX05PX1BST1RFQ1RFRF9VU0lORwotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDE0MDApCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgdmlydHVhbAotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTAotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8MTMxMCkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCBORE5CT09TVF9URVNURURfQVQoMHg1MzApKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfU1VQUE9SVF9JTlRFUkFDVElPTl9URVNUSU5HIDEKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfRFlOX0xJTkspCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9EWU5fTElOSwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfSU5DTFVERUQpCi0jICB1bmRlZiBORE5CT09TVF9URVNUX0RZTl9MSU5LCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVEVTVF9EWU5fTElOSykKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX0FMVEVSTkFUSVZFX0lOSVRfQVBJCi0KLSMgIGlmZGVmIE5ETkJPT1NUX1RFU1RfU09VUkNFCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotIyAgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9ERUNMIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSMgIGVuZGlmICAvLyBORE5CT09TVF9URVNUX1NPVVJDRQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX0RFQ0wKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9NQUlOKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0FVVE9fVEVTVF9NQUlOKQotI2RlZmluZSBORE5CT09TVF9URVNUX01BSU4gTkROQk9PU1RfQVVUT19URVNUX01BSU4KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9NQUlOKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTU9EVUxFKQotI2RlZmluZSBORE5CT09TVF9URVNUX01BSU4gTkROQk9PU1RfVEVTVF9NT0RVTEUKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9DT05GSUdfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjE4ZTkxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZW5hYmxlIHByZXZpb3NseSBzdXBwcmVzc2VkIHdhcm5pbmdzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDUxMSkgLy8gY29weSBjb25zdHJ1Y3RvciBjYW4ndCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY2FuJ3Qgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0MTAwKSAvLyB1bnJlZmVyZW5jZWQgZm9ybWFsIHBhcmFtZXRlciAKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDk5NikgLy8gPHN5bWJvbD4gd2FzIGRlY2xhcmVkIGRlcHJlY2F0ZWQgCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQzNTUpIC8vICd0aGlzJyA6IHVzZWQgaW4gYmFzZSBtZW1iZXIgaW5pdGlhbGl6ZXIgbGlzdAotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0NzA2KSAvLyBhc3NpZ25tZW50IHdpdGhpbiBjb25kaXRpb25hbCBleHByZXNzaW9uCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQyNTEpIC8vIGNsYXNzICdBPFQ+JyBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieSBjbGllbnRzIG9mIGNsYXNzICdCJwotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0MTI3KSAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50Ci0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQyOTApIC8vIEMrKyBleGNlcHRpb24gc3BlY2lmaWNhdGlvbiBpZ25vcmVkIGV4Y2VwdCB0byAuLi4KLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDE4MCkgLy8gcXVhbGlmaWVyIGFwcGxpZWQgdG8gZnVuY3Rpb24gdHlwZSBoYXMgbm8gbWVhbmluZzsgaWdub3JlZAotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0Mjc1KSAvLyBub24gZGxsLWludGVyZmFjZSBjbGFzcyAuLi4gdXNlZCBhcyBiYXNlIGZvciBkbGwtaW50ZXJmYWNlIGNsYXNzIC4uLgotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0MjY3KSAvLyAndmFyJyA6IGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAndHlwZScsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0NTExKSAvLyAnY2xhc3MnIDogY29weSBjb25zdHJ1Y3RvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIwMjlmZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY29udGFpbnMgZm9yd2FyZCBlY2xhcmF0aW9ucyBmb3IgQm9vc3QuVGVzdCBkYXRhIHR5cGVzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0ZXRF9ERUNMX0hQUF8wMTE2MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GV0RfREVDTF9IUFBfMDExNjA1R0VSCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLWNsYXNzICBleGVjdXRpb25fbW9uaXRvcjsKLWNsYXNzICBleGVjdXRpb25fZXhjZXB0aW9uOwotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotY2xhc3MgIHRlc3RfdW5pdDsKLWNsYXNzICB0ZXN0X2Nhc2U7Ci1jbGFzcyAgdGVzdF9zdWl0ZTsKLWNsYXNzICBtYXN0ZXJfdGVzdF9zdWl0ZV90OwotCi1jbGFzcyAgdGVzdF90cmVlX3Zpc2l0b3I7Ci1jbGFzcyAgdGVzdF9vYnNlcnZlcjsKLQotLy8gc2luZ2xldG9ucwotY2xhc3MgIHVuaXRfdGVzdF9tb25pdG9yX3Q7Ci1jbGFzcyAgdW5pdF90ZXN0X2xvZ190OwotCi1jbGFzcyAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI7Ci1zdHJ1Y3QgbG9nX2VudHJ5X2RhdGE7Ci1zdHJ1Y3QgbG9nX2NoZWNrcG9pbnRfZGF0YTsKLQotY2xhc3MgbGF6eV9vc3RyZWFtOwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfRldEX0RFQ0xfSFBQXzAxMTYwNUdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDc5NDBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzb21lIHRyaXZpYWwgZ2xvYmFsIHR5cGVkZWZzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0dMT0JBTF9UWVBFREVGX0hQUF8wMjEwMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9HTE9CQUxfVFlQRURFRl9IUFBfMDIxMDA1R0VSCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTCggcyApICAgICAgICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nKCBzLCBzaXplb2YoIHMgKSAtIDEgKQotI2RlZmluZSBORE5CT09TVF9URVNUX1NUUklOR0laRSggcyApIE5ETkJPT1NUX1RFU1RfTCggTkROQk9PU1RfU1RSSU5HSVpFKCBzICkgKQotI2RlZmluZSBORE5CT09TVF9URVNUX0VNUFRZX1NUUklORyAgIE5ETkJPT1NUX1RFU1RfTCggIiIgKQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgY291bnRlcl90OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1lbnVtIHJlcG9ydF9sZXZlbCAgeyBJTlZfUkVQT1JUX0xFVkVMLCBDT05GSVJNQVRJT05fUkVQT1JULCBTSE9SVF9SRVBPUlQsIERFVEFJTEVEX1JFUE9SVCwgTk9fUkVQT1JUIH07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWVudW0gb3V0cHV0X2Zvcm1hdCB7IElOVl9PRiwgQ0xGIC8qIGNvbXBpbGVyIGxvZyBmb3JtYXQgKi8sIFhNTCAvKiBYTUwgKi8gfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZW51bSB0ZXN0X3VuaXRfdHlwZSB7IHR1dF9jYXNlID0gMHgwMSwgdHV0X3N1aXRlID0gMHgxMCwgdHV0X2FueSA9IDB4MTEgfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgdGVzdF91bml0X2lkOwotCi1jb25zdCB0ZXN0X3VuaXRfaWQgSU5WX1RFU1RfVU5JVF9JRCAgPSAweEZGRkZGRkZGOwotY29uc3QgdGVzdF91bml0X2lkIE1BWF9URVNUX0NBU0VfSUQgID0gMHhGRkZGRkZGRTsKLWNvbnN0IHRlc3RfdW5pdF9pZCBNSU5fVEVTVF9DQVNFX0lEICA9IDB4MDAwMTAwMDA7Ci1jb25zdCB0ZXN0X3VuaXRfaWQgTUFYX1RFU1RfU1VJVEVfSUQgPSAweDAwMDBGRjAwOwotY29uc3QgdGVzdF91bml0X2lkIE1JTl9URVNUX1NVSVRFX0lEID0gMHgwMDAwMDAwMTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLWlubGluZSB0ZXN0X3VuaXRfdHlwZQotdGVzdF9pZF8yX3VuaXRfdHlwZSggdGVzdF91bml0X2lkIGlkICkKLXsKLSAgICByZXR1cm4gKGlkICYgMHhGRkZGMDAwMCkgIT0gMCA/IHR1dF9jYXNlIDogdHV0X3N1aXRlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBoZWxwZXIgdGVtcGxhdGVzIHRvIHByZXZlbnQgT0RSIHZpb2xhdGlvbnMgCi10ZW1wbGF0ZTxjbGFzcyBUPiAKLXN0cnVjdCBzdGF0aWNfY29uc3RhbnQgeyAKLSAgICBzdGF0aWMgVCB2YWx1ZTsgCi19OyAKLQotdGVtcGxhdGU8Y2xhc3MgVD4gCi1UIHN0YXRpY19jb25zdGFudDxUPjo6dmFsdWU7IAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLyAKLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfR0xPQkFMX1RZUEVERUZfSFBQXzAyMTAwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9sb2dfbGV2ZWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9sb2dfbGV2ZWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDlkYjBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvbG9nX2xldmVsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc2hhcmVkIGRlZmluaXRpb24gZm9yIHVuaXQgdGVzdCBsb2cgbGV2ZWxzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0xPR19MRVZFTF9IUFBfMDExNjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTE9HX0xFVkVMX0hQUF8wMTE2MDVHRVIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgbG9nIGxldmVscyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLS8vICBlYWNoIGxvZyBsZXZlbCBpbmNsdWRlcyBhbGwgc3Vic2VxdWVudCBoaWdoZXIgbG9naW5nIGxldmVscwotZW51bSAgICAgICAgICAgIGxvZ19sZXZlbCB7Ci0gICAgaW52YWxpZF9sb2dfbGV2ZWwgICAgICAgID0gLTEsCi0gICAgbG9nX3N1Y2Nlc3NmdWxfdGVzdHMgICAgID0gMCwKLSAgICBsb2dfdGVzdF91bml0cyAgICAgICAgICAgPSAxLAotICAgIGxvZ19tZXNzYWdlcyAgICAgICAgICAgICA9IDIsCi0gICAgbG9nX3dhcm5pbmdzICAgICAgICAgICAgID0gMywKLSAgICBsb2dfYWxsX2Vycm9ycyAgICAgICAgICAgPSA0LCAvLyByZXBvcnRlZCBieSB1bml0IHRlc3QgbWFjcm9zCi0gICAgbG9nX2NwcF9leGNlcHRpb25fZXJyb3JzID0gNSwgLy8gdW5jYXVnaHQgQysrIGV4Y2VwdGlvbnMKLSAgICBsb2dfc3lzdGVtX2Vycm9ycyAgICAgICAgPSA2LCAvLyBpbmNsdWRpbmcgdGltZW91dHMsIHNpZ25hbHMsIHRyYXBzCi0gICAgbG9nX2ZhdGFsX2Vycm9ycyAgICAgICAgID0gNywgLy8gaW5jbHVkaW5nIHVuaXQgdGVzdCBtYWNyb3Mgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmYXRhbCBzeXN0ZW0gZXJyb3JzCi0gICAgbG9nX25vdGhpbmcgICAgICAgICAgICAgID0gOAotfTsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9MT0dfTEVWRUxfSFBQXzAxMTYwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I5M2RiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc3VwcHJlc3Mgc29tZSB3YXJuaW5ncyAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTExKSAvLyBjb3B5IGNvbnN0cnVjdG9yIGNhbid0IG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUxMikgLy8gYXNzaWdubWVudCBvcGVyYXRvciBjYW4ndCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDApIC8vIHVucmVmZXJlbmNlZCBmb3JtYWwgcGFyYW1ldGVyIAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0OTk2KSAvLyA8c3ltYm9sPiB3YXMgZGVjbGFyZWQgZGVwcmVjYXRlZCAKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDM1NSkgLy8gJ3RoaXMnIDogdXNlZCBpbiBiYXNlIG1lbWJlciBpbml0aWFsaXplciBsaXN0Ci0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDYpIC8vIGFzc2lnbm1lbnQgd2l0aGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDI1MSkgLy8gY2xhc3MgJ0E8VD4nIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgJ0InCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMjcpIC8vIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDI5MCkgLy8gQysrIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIGlnbm9yZWQgZXhjZXB0IHRvIC4uLgotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTgwKSAvLyBxdWFsaWZpZXIgYXBwbGllZCB0byBmdW5jdGlvbiB0eXBlIGhhcyBubyBtZWFuaW5nOyBpZ25vcmVkCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQyNzUpIC8vIG5vbiBkbGwtaW50ZXJmYWNlIGNsYXNzIC4uLiB1c2VkIGFzIGJhc2UgZm9yIGRsbC1pbnRlcmZhY2UgY2xhc3MgLi4uCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQyNjcpIC8vICd2YXInIDogY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICd0eXBlJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTEpIC8vICdjbGFzcycgOiBjb3B5IGNvbnN0cnVjdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTdhMjRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzdG9yYWdlIGZvciB1bml0IHRlc3QgZnJhbWV3b3JrIHBhcmFtZXRlcnMgaW5mb3JtYXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1BBUkFNRVRFUlNfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9QQVJBTUVURVJTX0hQUF8wNzE4OTRHRVIKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9sb2dfbGV2ZWwuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHJ1bnRpbWVfY29uZmlnICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBydW50aW1lX2NvbmZpZyB7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgICAgICAgICAgICAgICAgICAgaW5pdCggaW50JiBhcmdjLCBjaGFyKiogYXJndiApOwotCi1ORE5CT09TVF9URVNUX0RFQ0wgdW5pdF90ZXN0Ojpsb2dfbGV2ZWwgICAgIGxvZ19sZXZlbCgpOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgICAgICAgICAgICAgICAgICBub19yZXN1bHRfY29kZSgpOwotTkROQk9PU1RfVEVTVF9ERUNMIHVuaXRfdGVzdDo6cmVwb3J0X2xldmVsICByZXBvcnRfbGV2ZWwoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBjb25zdF9zdHJpbmcgICAgICAgICAgICAgdGVzdF90b19ydW4oKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBjb25zdF9zdHJpbmcgICAgICAgICAgICAgYnJlYWtfZXhlY19wYXRoKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIHNhdmVfcGF0dGVybigpOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgICAgICAgICAgICAgICAgICBzaG93X2J1aWxkX2luZm8oKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgc2hvd19wcm9ncmVzcygpOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgICAgICAgICAgICAgICAgICBjYXRjaF9zeXNfZXJyb3JzKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIGF1dG9fc3RhcnRfZGJnKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIHVzZV9hbHRfc3RhY2soKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBvdXRwdXRfZm9ybWF0ICAgICAgICAgICAgcmVwb3J0X2Zvcm1hdCgpOwotTkROQk9PU1RfVEVTVF9ERUNMIG91dHB1dF9mb3JtYXQgICAgICAgICAgICBsb2dfZm9ybWF0KCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgc3RkOjpvc3RyZWFtKiAgICAgICAgICAgIHJlcG9ydF9zaW5rKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgc3RkOjpvc3RyZWFtKiAgICAgICAgICAgIGxvZ19zaW5rKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgbG9uZyAgICAgICAgICAgICAgICAgICAgIGRldGVjdF9tZW1vcnlfbGVha3MoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBpbnQgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX3NlZWQoKTsKLQotfSAvLyBuYW1lc3BhY2UgcnVudGltZV9jb25maWcKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfUEFSQU1FVEVSU19IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU5NWZmYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjb250YWlucyBtaWNzLiB3b3JrYXJvdW5kcyAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfV09SS0FST1VORF9IUFBfMDIxMDA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfV09SS0FST1VORF9IUFBfMDIxMDA1R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gY29tcGlsZXJzIHdvcmthcm91bmRzIGFuZCBzdGQ6OnB0cmRpZmZfdAotCi0vLyBTVEwKLSNpbmNsdWRlIDxpdGVyYXRvcj4gICAgIC8vIGZvciBzdGQ6OmRpc3RhbmNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURF9ESVNUQU5DRQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdGQ6OnB0cmRpZmZfdCBkaXN0YW5jZSggVCBjb25zdCYgeF8sIFQgY29uc3QmIHlfICkKLXsgCi0gICAgc3RkOjpwdHJkaWZmX3QgcmVzID0gMDsKLQotICAgIHN0ZDo6ZGlzdGFuY2UoIHhfLCB5XywgcmVzICk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZWxzZQotdXNpbmcgc3RkOjpkaXN0YW5jZTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIHZvaWQgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGNvbnN0IFQmKSB7fQotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3RfZnJhbWV3b3JrID0gdW5pdF90ZXN0OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfV09SS0FST1VORF9IUFBfMDIxMDA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFhYmM4Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDEuCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgYWJzdHJhY3QgbW9uaXRvciBpbnRlcmZhY2VzIGFuZCBpbXBsZW1lbnRzIGV4ZWN1dGlvbiBleGNlcHRpb24KLS8vICBUaGUgb3JpZ2luYWwgQm9vc3QgVGVzdCBMaWJyYXJ5IGluY2x1ZGVkIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBmdW5jdGlvbgotLy8gIG5hbWVkIGNhdGNoX2V4Y2VwdGlvbnMoKSB3aGljaCBjYXVnaHQgb3RoZXJ3aXNlIHVuY2F1Z2h0IEMrKyBleGNlcHRpb25zLgotLy8gIEl0IHdhcyBkZXJpdmVkIGZyb20gYW4gZXhpc3RpbmcgdGVzdCBmcmFtZXdvcmsgYnkgQmVtYW4gRGF3ZXMuICBUaGUKLS8vICBpbnRlbnQgd2FzIHRvIGV4cGFuZCBsYXRlciB0byBjYXRjaCBvdGhlciBkZXRlY3RhYmxlIGJ1dCBwbGF0Zm9ybSBkZXBlbmRlbnQKLS8vICBlcnJvciBldmVudHMgbGlrZSBVbml4IHNpZ25hbHMgb3IgV2luZG93cyBzdHJ1Y3R1cmVkIEMgZXhjZXB0aW9ucy4KLS8vCi0vLyAgUmVxdWVzdHMgZnJvbSBlYXJseSBhZG9wdGVycyBvZiB0aGUgQm9vc3QgVGVzdCBMaWJyYXJ5IGluY2x1ZGVkCi0vLyAgY29uZmlndXJhYmxlIGxldmVscyBvZiBlcnJvciBtZXNzYWdlIGRldGFpbCwgZWxpbWluYXRpb24gb2YgdGVtcGxhdGVzLAotLy8gIHNlcGFyYXRpb24gb2YgZXJyb3IgcmVwb3J0aW5nLCBhbmQgbWFraW5nIHRoZSBjYXRjaF9leGNlcHRpb25zKCkgZmFjaWxpdGllcwotLy8gIGF2YWlsYWJsZSBhcyBhIHB1YmxpYyBpbnRlcmZhY2UuICBTdXBwb3J0IGZvciB1bml0IHRlc3RpbmcgYWxzbyBzdHJldGNoZWQKLS8vICB0aGUgZnVuY3Rpb24gYmFzZWQgZGVzaWduLiAgSW1wbGVtZW50YXRpb24gd2l0aGluIHRoZSBoZWFkZXIgYmVjYW1lIGxlc3MKLS8vICBhdHRyYWN0aXZlIGR1ZSB0byB0aGUgbmVlZCB0byBpbmNsdWRlIG1hbnkgaHVnZSBzeXN0ZW0gZGVwZW5kZW50IGhlYWRlcnMsCi0vLyAgYWx0aG91Z2ggc3RpbGwgcHJlZmVyYWJsZSBpbiBjZXJ0YWluIGNhc2VzLgotLy8KLS8vICBBbGwgdGhvc2UgaXNzdWVzIGhhdmUgYmVlbiBhZGRyZXNzZWQgYnkgaW50cm9kdWNpbmcgdGhlIGNsYXNzLWJhc2VkCi0vLyAgZGVzaWduIHByZXNlbnRlZCBoZXJlLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fTU9OSVRPUl9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRVhFQ1VUSU9OX01PTklUT1JfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Njb3BlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Njb3BlZF9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgZGV0YWlsOjp0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2UgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2UgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgdHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlKCBuZG5ib29zdDo6c2NvcGVkX3B0cjx0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2U+JiBuZXh0ICkKLSAgICB7Ci0gICAgICAgIG5leHQuc3dhcCggbV9uZXh0ICk7Ci0gICAgfQotCi0gICAgLy8gRGVzdHJ1Y3RvcgotICAgIHZpcnR1YWwgICAgIH50cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2UoKSB7fQotCi0gICAgdmlydHVhbCBpbnQgb3BlcmF0b3IoKSggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApID0gMDsKLQotcHJvdGVjdGVkOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIG5kbmJvb3N0OjpzY29wZWRfcHRyPHRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZT4gbV9uZXh0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgZXhlY3V0aW9uX2V4Y2VwdGlvbiAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLSAgICAKLS8vICBkZXNpZ24gcmF0aW9uYWxlOiBmZWFyIG9mIGJlaW5nIG91dCAob3IgbmVhcmx5IG91dCkgb2YgbWVtb3J5LgotICAgIAotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIGV4ZWN1dGlvbl9leGNlcHRpb24gewotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIGNvbnN0X3N0cmluZzsKLXB1YmxpYzoKLSAgICBlbnVtIGVycm9yX2NvZGUgewotICAgICAgICAvLyAgVGhlc2UgdmFsdWVzIGFyZSBzb21ldGltZXMgdXNlZCBhcyBwcm9ncmFtIHJldHVybiBjb2Rlcy4KLSAgICAgICAgLy8gIFRoZSBwYXJ0aWN1bGFyIHZhbHVlcyBoYXZlIGJlZW4gY2hvc2VuIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoCi0gICAgICAgIC8vICBjb21tb25seSB1c2VkIHByb2dyYW0gcmV0dXJuIGNvZGVzOiB2YWx1ZXMgPCAxMDAgYXJlIG9mdGVuIHVzZXIKLSAgICAgICAgLy8gIGFzc2lnbmVkLCB2YWx1ZXMgPiAyNTUgYXJlIHNvbWV0aW1lcyB1c2VkIHRvIHJlcG9ydCBzeXN0ZW0gZXJyb3JzLgotICAgICAgICAvLyAgR2FwcyBpbiB2YWx1ZXMgYWxsb3cgZm9yIG9yZGVybHkgZXhwYW5zaW9uLgotICAgICAgICAKLSAgICAgICAgbm9fZXJyb3IgICAgICAgICAgICAgICA9IDAsICAgLy8gZm9yIGNvbXBsZXRlbmVzcyBvbmx5OyBuZXZlciByZXR1cm5lZAotICAgICAgICB1c2VyX2Vycm9yICAgICAgICAgICAgID0gMjAwLCAvLyB1c2VyIHJlcG9ydGVkIG5vbi1mYXRhbCBlcnJvcgotICAgICAgICBjcHBfZXhjZXB0aW9uX2Vycm9yICAgID0gMjA1LCAvLyBzZWUgbm90ZSAoMSkgYmVsb3cKLSAgICAgICAgc3lzdGVtX2Vycm9yICAgICAgICAgICA9IDIxMCwgLy8gc2VlIG5vdGUgKDIpIGJlbG93Ci0gICAgICAgIHRpbWVvdXRfZXJyb3IgICAgICAgICAgPSAyMTUsIC8vIG9ubHkgZGV0ZWN0YWJsZSBvbiBjZXJ0YWluIHBsYXRmb3JtcwotICAgICAgICB1c2VyX2ZhdGFsX2Vycm9yICAgICAgID0gMjIwLCAvLyB1c2VyIHJlcG9ydGVkIGZhdGFsIGVycm9yCi0gICAgICAgIHN5c3RlbV9mYXRhbF9lcnJvciAgICAgPSAyMjUgIC8vIHNlZSBub3RlICgyKSBiZWxvdwotICAgICAgICAKLSAgICAgICAgLy8gIE5vdGUgMTogT25seSB1bmNhdWdodCBDKysgZXhjZXB0aW9ucyBhcmUgdHJlYXRlZCBhcyBlcnJvcnMuCi0gICAgICAgIC8vICBJZiB0aGUgYXBwbGljYXRpb24gY2F0Y2hlcyBhIEMrKyBleGNlcHRpb24sIGl0IHdpbGwgbmV2ZXIgcmVhY2gKLSAgICAgICAgLy8gIHRoZSBleGVjdXRpb25fbW9uaXRvci4KLSAgICAgICAgCi0gICAgICAgIC8vICBOb3RlIDI6IFRoZXNlIGVycm9ycyBpbmNsdWRlIFVuaXggc2lnbmFscyBhbmQgV2luZG93cyBzdHJ1Y3R1cmVkCi0gICAgICAgIC8vICBleGNlcHRpb25zLiAgVGhleSBhcmUgb2Z0ZW4gaW5pdGlhdGVkIGJ5IGhhcmR3YXJlIHRyYXBzLgotICAgICAgICAvLwotICAgICAgICAvLyAgVGhlIGltcGxlbWVudGF0aW9uIGRlY2lkZXMgd2hhdCBpcyBhIGZhdGFsX3N5c3RlbV9leGNlcHRpb24gYW5kIHdoYXQgaXMKLSAgICAgICAgLy8gIGp1c3QgYSBzeXN0ZW1fZXhjZXB0aW9uLiAgRmF0YWwgZXJyb3JzIGFyZSBzbyBsaWtlbHkgdG8gaGF2ZSBjb3JydXB0ZWQKLSAgICAgICAgLy8gIG1hY2hpbmUgc3RhdGUgKGxpa2UgYSBzdGFjayBvdmVyZmxvdyBvciBhZGRyZXNzaW5nIGV4Y2VwdGlvbikgdGhhdCBpdAotICAgICAgICAvLyAgaXMgdW5yZWFzb25hYmxlIHRvIGNvbnRpbnVlIGV4ZWN1dGlvbi4KLSAgICB9OwotICAgIAotICAgIHN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgbG9jYXRpb24gewotICAgICAgICBleHBsaWNpdCAgICBsb2NhdGlvbiggY2hhciBjb25zdCogZmlsZV9uYW1lID0gMCwgc2l6ZV90IGxpbmVfbnVtID0gMCwgY2hhciBjb25zdCogZnVuYyA9IDAgKTsKLQotICAgICAgICBjb25zdF9zdHJpbmcgICAgbV9maWxlX25hbWU7Ci0gICAgICAgIHNpemVfdCAgICAgICAgICBtX2xpbmVfbnVtOwotICAgICAgICBjb25zdF9zdHJpbmcgICAgbV9mdW5jdGlvbjsKLSAgICB9OwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleGVjdXRpb25fZXhjZXB0aW9uKCBlcnJvcl9jb2RlIGVjXywgY29uc3Rfc3RyaW5nIHdoYXRfbXNnXywgbG9jYXRpb24gY29uc3QmIGxvY2F0aW9uXyApOyAvLyBtYXggbGVuZ3RoIDI1NiBpbmMgJ1wwJwotCi0gICAgLy8gQWNjZXNzIG1ldGhvZHMKLSAgICBlcnJvcl9jb2RlICAgICAgY29kZSgpIGNvbnN0ICAgIHsgcmV0dXJuIG1fZXJyb3JfY29kZTsgfQotICAgIGNvbnN0X3N0cmluZyAgICB3aGF0KCkgY29uc3QgICAgeyByZXR1cm4gbV93aGF0OyB9Ci0gICAgbG9jYXRpb24gY29uc3QmIHdoZXJlKCkgY29uc3QgICB7IHJldHVybiBtX2xvY2F0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgZXJyb3JfY29kZSAgICAgIG1fZXJyb3JfY29kZTsKLSAgICBjb25zdF9zdHJpbmcgICAgbV93aGF0OwotICAgIGxvY2F0aW9uICAgICAgICBtX2xvY2F0aW9uOwotfTsgLy8gZXhlY3V0aW9uX2V4Y2VwdGlvbgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBleGVjdXRpb25fbW9uaXRvciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBleGVjdXRpb25fbW9uaXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleGVjdXRpb25fbW9uaXRvcigpCi0gICAgOiBwX2NhdGNoX3N5c3RlbV9lcnJvcnMoIHRydWUgKQotICAgICwgcF9hdXRvX3N0YXJ0X2RiZyggZmFsc2UgKQotICAgICwgcF90aW1lb3V0KCAwICkKLSAgICAsIHBfdXNlX2FsdF9zdGFjayggdHJ1ZSApCi0gICAgLCBwX2RldGVjdF9mcF9leGNlcHRpb25zKCBmYWxzZSApCi0gICAge30KLQotICAgIC8vIFB1YmxpYyBwcm9wZXJ0aWVzCi0gICAgCi0gICAgLy8gIFRoZSBwX2NhdGNoX3N5c3RlbV9lcnJvcnMgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBtb25pdG9yIHNob3VsZCAKLSAgICAvLyAgdHJ5IHRvIGNhdGNoIHN5c3RlbSBlcnJvcnMvZXhjZXB0aW9ucyB0aGF0IHdvdWxkIGNhdXNlIHByb2dyYW0gdG8gY3Jhc2ggCi0gICAgLy8gIGluIHJlZ3VsYXIgY2FzZQotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGJvb2w+IHBfY2F0Y2hfc3lzdGVtX2Vycm9yczsgCi0gICAgLy8gIFRoZSBwX2F1dG9fc3RhcnRfZGJnIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0aGUgbW9uaXRvciBzaG91bGQgCi0gICAgLy8gIHRyeSB0byBhdHRhY2ggZGVidWdnZXIgaW4gY2FzZSBvZiBjYXVnaHQgc3lzdGVtIGVycm9yCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gcF9hdXRvX3N0YXJ0X2RiZzsKLSAgICAvLyAgVGhlIHBfdGltZW91dCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBzZWNvbmRzIHRoYXQgZWxhcHNlIGJlZm9yZQotICAgIC8vICBhIHRpbWVyX2Vycm9yIG9jY3Vycy4gIE1heSBiZSBpZ25vcmVkIG9uIHNvbWUgcGxhdGZvcm1zLgotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGludD4gIHBfdGltZW91dDsKLSAgICAvLyAgVGhlIHBfdXNlX2FsdF9zdGFjayBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1vbml0b3Igc2hvdWxkCi0gICAgLy8gIHVzZSBhbHRlcm5hdGl2ZSBzdGFjayBmb3IgdGhlIHNpZ25hbCBjYXRjaGluZwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGJvb2w+IHBfdXNlX2FsdF9zdGFjazsKLSAgICAvLyAgVGhlIHBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBtb25pdG9yIHNob3VsZAotICAgIC8vICB0cnkgdG8gZGV0ZWN0IGhhcmR3YXJlIGZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbnMKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiBwX2RldGVjdF9mcF9leGNlcHRpb25zOwotCi0gICAgaW50ICAgICAgICAgZXhlY3V0ZSggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApOyAKLSAgICAvLyAgUmV0dXJuczogIFZhbHVlIHJldHVybmVkIGJ5IGZ1bmN0aW9uIGNhbGwgRigpLgotICAgIC8vCi0gICAgLy8gIEVmZmVjdHM6ICBDYWxscyBleGVjdXRlcyBzdXBwbGllZCBmdW5jdGlvbiBGIGluc2lkZSBhIHRyeS9jYXRjaCBibG9jayB3aGljaCBhbHNvIG1heQotICAgIC8vICBpbmNsdWRlIG90aGVyIHVuc3BlY2lmaWVkIHBsYXRmb3JtIGRlcGVuZGVudCBlcnJvciBkZXRlY3Rpb24gY29kZS4KLSAgICAvLwotICAgIC8vICBUaHJvd3M6IGV4ZWN1dGlvbl9leGNlcHRpb24gb24gYW4gdW5jYXVnaHQgQysrIGV4Y2VwdGlvbiwKLSAgICAvLyAgYSBoYXJkd2FyZSBvciBzb2Z0d2FyZSBzaWduYWwsIHRyYXAsIG9yIG90aGVyIGV4Y2VwdGlvbi4KLSAgICAvLwotICAgIC8vICBOb3RlOiBleGVjdXRlKCkgZG9lc24ndCBjb25zaWRlciBpdCBhbiBlcnJvciBmb3IgRiB0byByZXR1cm4gYSBub24temVybyB2YWx1ZS4KLSAgICAKLSAgICAvLyByZWdpc3RlciBjdXN0b20gKHVzZXIgc3VwcGxpZWQpIGV4Y2VwdGlvbiB0cmFuc2xhdG9yCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uLCB0eXBlbmFtZSBFeGNlcHRpb25UcmFuc2xhdG9yPgotICAgIHZvaWQgICAgICAgIHJlZ2lzdGVyX2V4Y2VwdGlvbl90cmFuc2xhdG9yKCBFeGNlcHRpb25UcmFuc2xhdG9yIGNvbnN0JiB0ciwgbmRuYm9vc3Q6OnR5cGU8RXhjZXB0aW9uPiogPSAwICk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gaW1wbGVtZW50YXRpb24gaGVscGVycwotICAgIGludCAgICAgICAgIGNhdGNoX3NpZ25hbHMoIHVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4gY29uc3QmIEYgKTsKLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIG5kbmJvb3N0OjpzY29wZWRfcHRyPGRldGFpbDo6dHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlPiBtX2N1c3RvbV90cmFuc2xhdG9yczsKLSAgICBuZG5ib29zdDo6c2NvcGVkX2FycmF5PGNoYXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9hbHRfc3RhY2s7Ci19OyAvLyBleGVjdXRpb25fbW9uaXRvcgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgZGV0YWlsOjp0cmFuc2xhdGVfZXhjZXB0aW9uICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb24sIHR5cGVuYW1lIEV4Y2VwdGlvblRyYW5zbGF0b3I+Ci1jbGFzcyB0cmFuc2xhdGVfZXhjZXB0aW9uIDogcHVibGljIHRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZQotewotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnNjb3BlZF9wdHI8dHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlPiBiYXNlX3B0cjsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAgICB0cmFuc2xhdGVfZXhjZXB0aW9uKCBFeGNlcHRpb25UcmFuc2xhdG9yIGNvbnN0JiB0ciwgYmFzZV9wdHImIG5leHQgKQotICAgIDogdHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlKCBuZXh0ICksIG1fdHJhbnNsYXRvciggdHIgKSB7fQotCi0gICAgaW50IG9wZXJhdG9yKCkoIHVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4gY29uc3QmIEYgKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiBtX25leHQgPyAoKm1fbmV4dCkoIEYgKSA6IEYoKTsKLSAgICAgICAgfSBjYXRjaCggRXhjZXB0aW9uIGNvbnN0JiBlICkgewotICAgICAgICAgICAgbV90cmFuc2xhdG9yKCBlICk7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfZXhjZXB0aW9uX2ZhaWx1cmU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgRXhjZXB0aW9uVHJhbnNsYXRvciBtX3RyYW5zbGF0b3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uLCB0eXBlbmFtZSBFeGNlcHRpb25UcmFuc2xhdG9yPgotdm9pZAotZXhlY3V0aW9uX21vbml0b3I6OnJlZ2lzdGVyX2V4Y2VwdGlvbl90cmFuc2xhdG9yKCBFeGNlcHRpb25UcmFuc2xhdG9yIGNvbnN0JiB0ciwgbmRuYm9vc3Q6OnR5cGU8RXhjZXB0aW9uPiogKQotewotICAgIG1fY3VzdG9tX3RyYW5zbGF0b3JzLnJlc2V0KCAKLSAgICAgICAgbmV3IGRldGFpbDo6dHJhbnNsYXRlX2V4Y2VwdGlvbjxFeGNlcHRpb24sRXhjZXB0aW9uVHJhbnNsYXRvcj4oIHRyLG1fY3VzdG9tX3RyYW5zbGF0b3JzICkgKTsKLX0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgZXhlY3V0aW9uX2Fib3J0ZWQgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgZXhlY3V0aW9uX2Fib3J0ZWQge307Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHN5c3RlbV9lcnJvciAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3Mgc3lzdGVtX2Vycm9yIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgIHN5c3RlbV9lcnJvciggY2hhciBjb25zdCogZXhwICk7Ci0KLSAgICB1bml0X3Rlc3Q6OnJlYWRvbmx5X3Byb3BlcnR5PGxvbmc+ICAgICAgICAgIHBfZXJybm87IAotICAgIHVuaXRfdGVzdDo6cmVhZG9ubHlfcHJvcGVydHk8Y2hhciBjb25zdCo+ICAgcF9mYWlsZWRfZXhwOyAKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TWVNfQVNTRVJUKCBleHAgKSBpZiggKGV4cCkgKSA7IGVsc2UgdGhyb3cgOjpuZG5ib29zdDo6c3lzdGVtX2Vycm9yKCBORE5CT09TVF9TVFJJTkdJWkUoIGV4cCApICkKLQotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9mbG9hdGluZ19wb2ludF9jb21wYXJpc29uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9mbG9hdGluZ19wb2ludF9jb21wYXJpc29uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEwYTYwZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGFsZ29pcnRobXMgZm9yIGNvbXBhcmluZyAyIGZsb2F0aW5nIHBvaW50IHZhbHVlcwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9GTE9BVElOR19QT0lOVF9DT01QQVJJU09OX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GTE9BVElOR19QT0lOVF9DT01QQVJJU09OX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcHJlZGljYXRlX3Jlc3VsdC5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4gIC8vIGZvciBzdGQ6Om51bWVyaWNfbGltaXRzCi0jaW5jbHVkZSA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnNpb25fdHJhaXRzLmhwcD4gLy8gZm9yIG51bWVyaWM6OmNvbnZlcnNpb25fdHJhaXRzCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB0ZXN0X3Rvb2xzIHsKLQotdXNpbmcgdW5pdF90ZXN0OjpyZWFkb25seV9wcm9wZXJ0eTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBmbG9hdGluZ19wb2ludF9jb21wYXJpc29uX3R5cGUgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1lbnVtIGZsb2F0aW5nX3BvaW50X2NvbXBhcmlzb25fdHlwZSB7Ci0gICAgRlBDX1NUUk9ORywgLy8gIlZlcnkgY2xvc2UiICAgLSBlcXVhdGlvbiAxJyBpbiBkb2NzLCB0aGUgZGVmYXVsdAotICAgIEZQQ19XRUFLICAgIC8vICJDbG9zZSBlbm91Z2giIC0gZXF1YXRpb24gMicgaW4gZG9jcy4KLQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICBkZXRhaWxzICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdHRfZGV0YWlsIHsKLQotLy8gRlBUIGlzIEZsb2F0aW5nLVBvaW50IFR5cGU6IGZsb2F0LCBkb3VibGUsIGxvbmcgZG91YmxlIG9yIFVzZXItRGVmaW5lZC4KLXRlbXBsYXRlPHR5cGVuYW1lIEZQVD4KLWlubGluZSBGUFQKLWZwdF9hYnMoIEZQVCBmcHYgKSAKLXsKLSAgICByZXR1cm4gZnB2IDwgc3RhdGljX2Nhc3Q8RlBUPigwKSA/IC1mcHYgOiBmcHY7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZQVD4KLXN0cnVjdCBmcHRfbGltaXRzIHsKLSAgICBzdGF0aWMgRlBUICAgIG1pbl92YWx1ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxGUFQ+Ojppc19zcGVjaWFsaXplZAotICAgICAgICAgICAgICAgICAgICA/IChzdGQ6Om51bWVyaWNfbGltaXRzPEZQVD46Om1pbikoKQotICAgICAgICAgICAgICAgICAgICA6IDA7Ci0gICAgfQotICAgIHN0YXRpYyBGUFQgICAgbWF4X3ZhbHVlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPEZQVD46OmlzX3NwZWNpYWxpemVkCi0gICAgICAgICAgICAgICAgICAgID8gKHN0ZDo6bnVtZXJpY19saW1pdHM8RlBUPjo6bWF4KSgpCi0gICAgICAgICAgICAgICAgICAgIDogc3RhdGljX2Nhc3Q8RlBUPigxMDAwMDAwKTsgLy8gZm9yIHRoZSBvdXIgcHVycHVzZXMgaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIHdoYXQgdmFsdWUgaXMgcmV0dXJuZWQgaGVyZQotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIGJvdGggZjEgYW5kIGYyIGFyZSB1bnNpZ25lZCBoZXJlCi10ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci1pbmxpbmUgRlBUCi1zYWZlX2ZwdF9kaXZpc2lvbiggRlBUIGYxLCBGUFQgZjIgKQotewotICAgIC8vIEF2b2lkIG92ZXJmbG93LgotICAgIGlmKCAoZjIgPCBzdGF0aWNfY2FzdDxGUFQ+KDEpKSAgJiYgKGYxID4gZjIqZnB0X2xpbWl0czxGUFQ+OjptYXhfdmFsdWUoKSkgKQotICAgICAgICByZXR1cm4gZnB0X2xpbWl0czxGUFQ+OjptYXhfdmFsdWUoKTsKLQotICAgIC8vIEF2b2lkIHVuZGVyZmxvdy4KLSAgICBpZiggKGYxID09IHN0YXRpY19jYXN0PEZQVD4oMCkpIHx8Ci0gICAgICAgICgoZjIgPiBzdGF0aWNfY2FzdDxGUFQ+KDEpKSAmJiAoZjEgPCBmMipmcHRfbGltaXRzPEZQVD46Om1pbl92YWx1ZSgpKSkgKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RlBUPigwKTsKLQotICAgIHJldHVybiBmMS9mMjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdHRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgIHRvbGVyYW5jZSBwcmVzZW50YXRpb24gdHlwZXMgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotc3RydWN0IHBlcmNlbnRfdG9sZXJhbmNlX3QgewotICAgIGV4cGxpY2l0ICAgIHBlcmNlbnRfdG9sZXJhbmNlX3QoIEZQVCB2ICkgOiBtX3ZhbHVlKCB2ICkge30KLQotICAgIEZQVCBtX3ZhbHVlOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgT3V0LHR5cGVuYW1lIEZQVD4KLU91dCYgb3BlcmF0b3I8PCggT3V0JiBvdXQsIHBlcmNlbnRfdG9sZXJhbmNlX3Q8RlBUPiB0ICkKLXsKLSAgICByZXR1cm4gb3V0IDw8IHQubV92YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotaW5saW5lIHBlcmNlbnRfdG9sZXJhbmNlX3Q8RlBUPgotcGVyY2VudF90b2xlcmFuY2UoIEZQVCB2ICkKLXsKLSAgICByZXR1cm4gcGVyY2VudF90b2xlcmFuY2VfdDxGUFQ+KCB2ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZQVD4KLXN0cnVjdCBmcmFjdGlvbl90b2xlcmFuY2VfdCB7Ci0gICAgZXhwbGljaXQgZnJhY3Rpb25fdG9sZXJhbmNlX3QoIEZQVCB2ICkgOiBtX3ZhbHVlKCB2ICkge30KLQotICAgIEZQVCBtX3ZhbHVlOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgT3V0LHR5cGVuYW1lIEZQVD4KLU91dCYgb3BlcmF0b3I8PCggT3V0JiBvdXQsIGZyYWN0aW9uX3RvbGVyYW5jZV90PEZQVD4gdCApCi17Ci0gICAgcmV0dXJuIG91dCA8PCB0Lm1fdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZQVD4KLWlubGluZSBmcmFjdGlvbl90b2xlcmFuY2VfdDxGUFQ+Ci1mcmFjdGlvbl90b2xlcmFuY2UoIEZQVCB2ICkKLXsKLSAgICByZXR1cm4gZnJhY3Rpb25fdG9sZXJhbmNlX3Q8RlBUPiggdiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgY2xvc2VfYXRfdG9sZXJhbmNlICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZQVD4KLWNsYXNzIGNsb3NlX2F0X3RvbGVyYW5jZSB7Ci1wdWJsaWM6Ci0gICAgLy8gUHVibGljIHR5cGVkZWZzCi0gICAgdHlwZWRlZiBib29sIHJlc3VsdF90eXBlOwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUb2xlcmFuY2VCYXNlVHlwZT4KLSAgICBleHBsaWNpdCAgICBjbG9zZV9hdF90b2xlcmFuY2UoIHBlcmNlbnRfdG9sZXJhbmNlX3Q8VG9sZXJhbmNlQmFzZVR5cGU+ICB0b2xlcmFuY2UsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbl90eXBlICAgICAgICAgIGZwY190eXBlID0gRlBDX1NUUk9ORyApIAotICAgIDogcF9mcmFjdGlvbl90b2xlcmFuY2UoIHR0X2RldGFpbDo6ZnB0X2Ficyggc3RhdGljX2Nhc3Q8RlBUPigwLjAxKSp0b2xlcmFuY2UubV92YWx1ZSApICkKLSAgICAsIHBfc3Ryb25nX29yX3dlYWsoIGZwY190eXBlID09ICBGUENfU1RST05HICkKLSAgICAsIG1fcmVwb3J0X21vZGlmaWVyKCAxMDAuICkKLSAgICB7fQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRvbGVyYW5jZUJhc2VUeXBlPgotICAgIGV4cGxpY2l0ICAgIGNsb3NlX2F0X3RvbGVyYW5jZSggZnJhY3Rpb25fdG9sZXJhbmNlX3Q8VG9sZXJhbmNlQmFzZVR5cGU+IHRvbGVyYW5jZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ19wb2ludF9jb21wYXJpc29uX3R5cGUgICAgICAgICAgZnBjX3R5cGUgPSBGUENfU1RST05HICkgCi0gICAgOiBwX2ZyYWN0aW9uX3RvbGVyYW5jZSggdHRfZGV0YWlsOjpmcHRfYWJzKCB0b2xlcmFuY2UubV92YWx1ZSApICkKLSAgICAsIHBfc3Ryb25nX29yX3dlYWsoIGZwY190eXBlID09ICBGUENfU1RST05HICkKLSAgICAsIG1fcmVwb3J0X21vZGlmaWVyKCAxLiApCi0gICAge30KLQotICAgIHByZWRpY2F0ZV9yZXN1bHQgICAgICAgIG9wZXJhdG9yKCkoIEZQVCBsZWZ0LCBGUFQgcmlnaHQgKSBjb25zdAotICAgIHsKLSAgICAgICAgRlBUIGRpZmYgPSB0dF9kZXRhaWw6OmZwdF9hYnMoIGxlZnQgLSByaWdodCApOwotICAgICAgICBGUFQgZDEgICA9IHR0X2RldGFpbDo6c2FmZV9mcHRfZGl2aXNpb24oIGRpZmYsIHR0X2RldGFpbDo6ZnB0X2FicyggcmlnaHQgKSApOwotICAgICAgICBGUFQgZDIgICA9IHR0X2RldGFpbDo6c2FmZV9mcHRfZGl2aXNpb24oIGRpZmYsIHR0X2RldGFpbDo6ZnB0X2FicyggbGVmdCApICk7Ci0gICAgICAgIAotICAgICAgICBwcmVkaWNhdGVfcmVzdWx0IHJlcyggcF9zdHJvbmdfb3Jfd2VhayAKLSAgICAgICAgICAgID8gKGQxIDw9IHBfZnJhY3Rpb25fdG9sZXJhbmNlLmdldCgpICYmIGQyIDw9IHBfZnJhY3Rpb25fdG9sZXJhbmNlLmdldCgpKSAKLSAgICAgICAgICAgIDogKGQxIDw9IHBfZnJhY3Rpb25fdG9sZXJhbmNlLmdldCgpIHx8IGQyIDw9IHBfZnJhY3Rpb25fdG9sZXJhbmNlLmdldCgpKSApOwotCi0gICAgICAgIGlmKCAhcmVzICkKLSAgICAgICAgICAgIHJlcy5tZXNzYWdlKCkgPDwgKCggZDEgPD0gcF9mcmFjdGlvbl90b2xlcmFuY2UuZ2V0KCkgPyBkMiA6IGQxICkgKiBtX3JlcG9ydF9tb2RpZmllcik7Ci0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICAvLyBQdWJsaWMgcHJvcGVydGllcwotICAgIHJlYWRvbmx5X3Byb3BlcnR5PEZQVD4gIHBfZnJhY3Rpb25fdG9sZXJhbmNlOwotICAgIHJlYWRvbmx5X3Byb3BlcnR5PGJvb2w+IHBfc3Ryb25nX29yX3dlYWs7Ci1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEZQVCAgICAgICAgICAgICAgICAgICAgIG1fcmVwb3J0X21vZGlmaWVyOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgY2hlY2tfaXNfY2xvc2UgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIGNoZWNrX2lzX2Nsb3NlX3QgewotICAgIC8vIFB1YmxpYyB0eXBlZGVmcwotICAgIHR5cGVkZWYgYm9vbCByZXN1bHRfdHlwZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZQVDEsIHR5cGVuYW1lIEZQVDIsIHR5cGVuYW1lIFRvbGVyYW5jZUJhc2VUeXBlPgotICAgIHByZWRpY2F0ZV9yZXN1bHQKLSAgICBvcGVyYXRvcigpKCBGUFQxIGxlZnQsIEZQVDIgcmlnaHQsIHBlcmNlbnRfdG9sZXJhbmNlX3Q8VG9sZXJhbmNlQmFzZVR5cGU+IHRvbGVyYW5jZSwgCi0gICAgICAgICAgICAgICAgZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbl90eXBlIGZwY190eXBlID0gRlBDX1NUUk9ORyApIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBkZWR1Y2UgImJldHRlciIgdHlwZSBmcm9tIHR5cGVzIG9mIGFyZ3VtZW50cyBiZWluZyBjb21wYXJlZAotICAgICAgICAvLyBpZiBvbmUgdHlwZSBpcyBmbG9hdGluZyBhbmQgdGhlIHNlY29uZCBpbnRlZ3JhbCB3ZSB1c2UgZmxvYXRpbmcgdHlwZSBhbmQgCi0gICAgICAgIC8vIHZhbHVlIG9mIGludGVncmFsIHR5cGUgaXMgcHJvbW90ZWQgdG8gdGhlIGZsb2F0aW5nLiBUaGUgc2FtZSBmb3IgZmxvYXQgYW5kIGRvdWJsZQotICAgICAgICAvLyBCdXQgd2UgZG9uJ3Qgd2FudCB0byBjb21wYXJlIHR3byB2YWx1ZXMgb2YgaW50ZWdyYWwgdHlwZXMgdXNpbmcgdGhpcyB0b29sLgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG51bWVyaWM6OmNvbnZlcnNpb25fdHJhaXRzPEZQVDEsRlBUMj46OnN1cGVydHlwZSBGUFQ7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoICFpc19pbnRlZ3JhbDxGUFQ+Ojp2YWx1ZSApOwotCi0gICAgICAgIGNsb3NlX2F0X3RvbGVyYW5jZTxGUFQ+IHByZWQoIHRvbGVyYW5jZSwgZnBjX3R5cGUgKTsKLQotICAgICAgICByZXR1cm4gcHJlZCggbGVmdCwgcmlnaHQgKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRlBUMSwgdHlwZW5hbWUgRlBUMiwgdHlwZW5hbWUgVG9sZXJhbmNlQmFzZVR5cGU+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdAotICAgIG9wZXJhdG9yKCkoIEZQVDEgbGVmdCwgRlBUMiByaWdodCwgZnJhY3Rpb25fdG9sZXJhbmNlX3Q8VG9sZXJhbmNlQmFzZVR5cGU+IHRvbGVyYW5jZSwgCi0gICAgICAgICAgICAgICAgZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbl90eXBlIGZwY190eXBlID0gRlBDX1NUUk9ORyApIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBzYW1lIGFzIGluIGEgY29tbWVudCBhYm92ZQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG51bWVyaWM6OmNvbnZlcnNpb25fdHJhaXRzPEZQVDEsRlBUMj46OnN1cGVydHlwZSBGUFQ7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoICFpc19pbnRlZ3JhbDxGUFQ+Ojp2YWx1ZSApOwotCi0gICAgICAgIGNsb3NlX2F0X3RvbGVyYW5jZTxGUFQ+IHByZWQoIHRvbGVyYW5jZSwgZnBjX3R5cGUgKTsKLQotICAgICAgICByZXR1cm4gcHJlZCggbGVmdCwgcmlnaHQgKTsKLSAgICB9Ci19OwotCi1uYW1lc3BhY2UgewotY2hlY2tfaXNfY2xvc2VfdCBjb25zdCYgY2hlY2tfaXNfY2xvc2UgPSB1bml0X3Rlc3Q6OnV0X2RldGFpbDo6c3RhdGljX2NvbnN0YW50PGNoZWNrX2lzX2Nsb3NlX3Q+Ojp2YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgY2hlY2tfaXNfc21hbGwgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIGNoZWNrX2lzX3NtYWxsX3QgewotICAgIC8vIFB1YmxpYyB0eXBlZGVmcwotICAgIHR5cGVkZWYgYm9vbCByZXN1bHRfdHlwZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZQVD4KLSAgICBib29sCi0gICAgb3BlcmF0b3IoKSggRlBUIGZwdiwgRlBUIHRvbGVyYW5jZSApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdHRfZGV0YWlsOjpmcHRfYWJzKCBmcHYgKSA8IHR0X2RldGFpbDo6ZnB0X2FicyggdG9sZXJhbmNlICk7Ci0gICAgfQotfTsKLQotbmFtZXNwYWNlIHsKLWNoZWNrX2lzX3NtYWxsX3QgY29uc3QmIGNoZWNrX2lzX3NtYWxsID0gdW5pdF90ZXN0Ojp1dF9kZXRhaWw6OnN0YXRpY19jb25zdGFudDxjaGVja19pc19zbWFsbF90Pjo6dmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHRlc3RfdG9vbHMKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9GTE9BVElOR19QT0lOVF9DT01BUEFSSVNPTl9IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjMxNmY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBmcmFtZXdvcmsgaW50ZXJmYWNlCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0ZSQU1FV09SS19IUFBfMDIwODA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRlJBTUVXT1JLX0hQUF8wMjA4MDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgaW5pdF91bml0X3Rlc3RfZnVuYyAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmZGVmIE5ETkJPT1NUX1RFU1RfQUxURVJOQVRJVkVfSU5JVF9BUEkKLXR5cGVkZWYgYm9vbCAgICAgICAgKCppbml0X3VuaXRfdGVzdF9mdW5jKSgpOwotI2Vsc2UKLXR5cGVkZWYgdGVzdF9zdWl0ZSogKCppbml0X3VuaXRfdGVzdF9mdW5jKSggaW50LCBjaGFyKiBbXSApOwotI2VuZGlmCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmsgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIGZyYW1ld29yayB7Ci0KLS8vIGluaXRpYWxpemF0aW9uCi1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBpbml0KCBpbml0X3VuaXRfdGVzdF9mdW5jIGluaXRfZnVuYywgaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgaXNfaW5pdGlhbGl6ZWQoKTsKLQotLy8gbXV0YXRpb24gYWNjZXNzIG1ldGhvZHMKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHJlZ2lzdGVyX3Rlc3RfdW5pdCggdGVzdF9jYXNlKiB0YyApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgcmVnaXN0ZXJfdGVzdF91bml0KCB0ZXN0X3N1aXRlKiB0cyApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgZGVyZWdpc3Rlcl90ZXN0X3VuaXQoIHRlc3RfdW5pdCogdHUgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIGNsZWFyKCk7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHJlZ2lzdGVyX29ic2VydmVyKCB0ZXN0X29ic2VydmVyJiApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgZGVyZWdpc3Rlcl9vYnNlcnZlciggdGVzdF9vYnNlcnZlciYgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHJlc2V0X29ic2VydmVycygpOwotCi1ORE5CT09TVF9URVNUX0RFQ0wgbWFzdGVyX3Rlc3Rfc3VpdGVfdCYgbWFzdGVyX3Rlc3Rfc3VpdGUoKTsKLQotLy8gY29uc3RhbnQgYWNjZXNzIG1ldGhvZHMKLU5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X2Nhc2UgY29uc3QmICAgIGN1cnJlbnRfdGVzdF9jYXNlKCk7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X3VuaXQmICBnZXQoIHRlc3RfdW5pdF9pZCwgdGVzdF91bml0X3R5cGUgKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFVuaXRUeXBlPgotVW5pdFR5cGUmICAgICAgICAgICAgICAgZ2V0KCB0ZXN0X3VuaXRfaWQgaWQgKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxVbml0VHlwZSY+KCBnZXQoIGlkLCBzdGF0aWNfY2FzdDx0ZXN0X3VuaXRfdHlwZT4oVW5pdFR5cGU6OnR5cGUpICkgKTsKLX0KLQotLy8gdGVzdCBpbml0aWF0aW9uCi1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBydW4oIHRlc3RfdW5pdF9pZCA9IElOVl9URVNUX1VOSVRfSUQsIGJvb2wgY29udGludWVfdGVzdCA9IHRydWUgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHJ1biggdGVzdF91bml0IGNvbnN0KiwgYm9vbCBjb250aW51ZV90ZXN0ID0gdHJ1ZSApOwotCi0vLyBwdWJsaWMgdGVzdCBldmVudHMgZGlzcGF0Y2hlcnMKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIGFzc2VydGlvbl9yZXN1bHQoIGJvb2wgcGFzc2VkICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBleGNlcHRpb25fY2F1Z2h0KCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgdGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgKTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGZyYW1ld29yayBlcnJvcnMgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgaW50ZXJuYWxfZXJyb3IgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IgewotICAgIGludGVybmFsX2Vycm9yKCBjb25zdF9zdHJpbmcgbSApIDogc3RkOjpydW50aW1lX2Vycm9yKCBzdGQ6OnN0cmluZyggbS5iZWdpbigpLCBtLnNpemUoKSApICkge30KLX07Ci0KLXN0cnVjdCBzZXR1cF9lcnJvciA6IHN0ZDo6cnVudGltZV9lcnJvciB7Ci0gICAgc2V0dXBfZXJyb3IoIGNvbnN0X3N0cmluZyBtICkgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IoIHN0ZDo6c3RyaW5nKCBtLmJlZ2luKCksIG0uc2l6ZSgpICkgKSB7fQotfTsKLQotI2RlZmluZSBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggY29uZCwgbXNnICkgaWYoIGNvbmQgKSB7fSBlbHNlIHRocm93IHVuaXRfdGVzdDo6ZnJhbWV3b3JrOjpzZXR1cF9lcnJvciggbXNnICkKLQotc3RydWN0IG5vdGhpbmdfdG9fdGVzdCB7fTsgLy8gbm90IHJlYWxseSBhbiBlcnJvcgotCi19IC8vIG5hbWVzcGFjZSBmcmFtZXdvcmsKLQotfSAvLyB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0ZSQU1FV09SS19IUFBfMDIwODA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2NvbXBpbGVyX2xvZ19mb3JtYXR0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkODNmNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIGNvbXBpbGVyIGxpa2UgTG9nIGZvcm1hdHRlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9DT01QSUxFUl9MT0dfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DT01QSUxFUl9MT0dfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L2NvbXBpbGVyX2xvZ19mb3JtYXR0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvbGF6eV9vc3RyZWFtLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgY29tcGlsZXJfbG9nX2Zvcm1hdHRlciAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotCi1jb25zdF9zdHJpbmcKLXRlc3RfcGhhc2VfaWRlbnRpZmllcigpCi17Ci0gICAgcmV0dXJuIGZyYW1ld29yazo6aXNfaW5pdGlhbGl6ZWQoKSAKLSAgICAgICAgICAgID8gY29uc3Rfc3RyaW5nKCBmcmFtZXdvcms6OmN1cnJlbnRfdGVzdF9jYXNlKCkucF9uYW1lLmdldCgpICkKLSAgICAgICAgICAgIDogTkROQk9PU1RfVEVTVF9MKCAiVGVzdCBzZXR1cCIgKTsKLX0KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG91dHB1dCwgY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICkKLXsKLSAgICBpZiggdGVzdF9jYXNlc19hbW91bnQgPiAwICkKLSAgICAgICAgb3V0cHV0ICA8PCAiUnVubmluZyAiIDw8IHRlc3RfY2FzZXNfYW1vdW50IDw8ICIgdGVzdCAiCi0gICAgICAgICAgICAgICAgPDwgKHRlc3RfY2FzZXNfYW1vdW50ID4gMSA/ICJjYXNlcyIgOiAiY2FzZSIpIDw8ICIuLi5cbiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgb3N0ci5mbHVzaCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjpsb2dfYnVpbGRfaW5mbyggc3RkOjpvc3RyZWFtJiBvdXRwdXQgKQotewotICAgIG91dHB1dCAgPDwgIlBsYXRmb3JtOiAiIDw8IE5ETkJPT1NUX1BMQVRGT1JNICAgICAgICAgICAgPDwgJ1xuJwotICAgICAgICAgICAgPDwgIkNvbXBpbGVyOiAiIDw8IE5ETkJPT1NUX0NPTVBJTEVSICAgICAgICAgICAgPDwgJ1xuJwotICAgICAgICAgICAgPDwgIlNUTCAgICAgOiAiIDw8IE5ETkJPT1NUX1NURExJQiAgICAgICAgICAgICAgPDwgJ1xuJwotICAgICAgICAgICAgPDwgIkJvb3N0ICAgOiAiIDw8IE5ETkJPT1NUX1ZFUlNJT04vMTAwMDAwICAgICAgPDwgIi4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfVkVSU0lPTi8xMDAgJSAxMDAwICA8PCAiLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9WRVJTSU9OICUgMTAwICAgICAgIDw8IHN0ZDo6ZW5kbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6dGVzdF91bml0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG91dHB1dCwgdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgb3V0cHV0IDw8ICJFbnRlcmluZyB0ZXN0ICIgPDwgdHUucF90eXBlX25hbWUgPDwgIiBcIiIgPDwgdHUucF9uYW1lIDw8ICJcIiIgPDwgc3RkOjplbmRsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG91dHB1dCwgdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICkKLXsKLSAgICBvdXRwdXQgPDwgIkxlYXZpbmcgdGVzdCAiIDw8IHR1LnBfdHlwZV9uYW1lIDw8ICIgXCIiIDw8IHR1LnBfbmFtZSA8PCAiXCIiOwotCi0gICAgaWYoIGVsYXBzZWQgPiAwICkgewotICAgICAgICBvdXRwdXQgPDwgIjsgdGVzdGluZyB0aW1lOiAiOwotICAgICAgICBpZiggZWxhcHNlZCAlIDEwMDAgPT0gMCApCi0gICAgICAgICAgICBvdXRwdXQgPDwgZWxhcHNlZC8xMDAwIDw8ICJtcyI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dHB1dCA8PCBlbGFwc2VkIDw8ICJta3MiOwotICAgIH0KLQotICAgIG91dHB1dCA8PCBzdGQ6OmVuZGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OnRlc3RfdW5pdF9za2lwcGVkKCBzdGQ6Om9zdHJlYW0mIG91dHB1dCwgdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgb3V0cHV0ICA8PCAiVGVzdCAiIDw8IHR1LnBfdHlwZV9uYW1lIDw8ICIgXCIiIDw8IHR1LnBfbmFtZSA8PCAiXCIiIDw8ICJpcyBza2lwcGVkIiA8PCBzdGQ6OmVuZGw7Ci19Ci0gICAgCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjpsb2dfZXhjZXB0aW9uKCBzdGQ6Om9zdHJlYW0mIG91dHB1dCwgbG9nX2NoZWNrcG9pbnRfZGF0YSBjb25zdCYgY2hlY2twb2ludF9kYXRhLCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApCi17Ci0gICAgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6bG9jYXRpb24gY29uc3QmIGxvYyA9IGV4LndoZXJlKCk7Ci0gICAgcHJpbnRfcHJlZml4KCBvdXRwdXQsIGxvYy5tX2ZpbGVfbmFtZSwgbG9jLm1fbGluZV9udW0gKTsKLQotICAgIG91dHB1dCA8PCAiZmF0YWwgZXJyb3IgaW4gXCIiIDw8IChsb2MubV9mdW5jdGlvbi5pc19lbXB0eSgpID8gdGVzdF9waGFzZV9pZGVudGlmaWVyKCkgOiBsb2MubV9mdW5jdGlvbiApIDw8ICJcIjogIjsKLQotICAgIG91dHB1dCA8PCBleC53aGF0KCk7Ci0KLSAgICBpZiggIWNoZWNrcG9pbnRfZGF0YS5tX2ZpbGVfbmFtZS5pc19lbXB0eSgpICkgewotICAgICAgICBvdXRwdXQgPDwgJ1xuJzsKLSAgICAgICAgcHJpbnRfcHJlZml4KCBvdXRwdXQsIGNoZWNrcG9pbnRfZGF0YS5tX2ZpbGVfbmFtZSwgY2hlY2twb2ludF9kYXRhLm1fbGluZV9udW0gKTsKLSAgICAgICAgb3V0cHV0IDw8ICJsYXN0IGNoZWNrcG9pbnQiOwotICAgICAgICBpZiggIWNoZWNrcG9pbnRfZGF0YS5tX21lc3NhZ2UuZW1wdHkoKSApCi0gICAgICAgICAgICBvdXRwdXQgPDwgIjogIiA8PCBjaGVja3BvaW50X2RhdGEubV9tZXNzYWdlOwotICAgIH0KLSAgICAKLSAgICBvdXRwdXQgPDwgc3RkOjplbmRsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjpsb2dfZW50cnlfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCBsb2dfZW50cnlfZGF0YSBjb25zdCYgZW50cnlfZGF0YSwgbG9nX2VudHJ5X3R5cGVzIGxldCApCi17Ci0gICAgc3dpdGNoKCBsZXQgKSB7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfVVRMX0VUX0lORk86Ci0gICAgICAgICAgICBwcmludF9wcmVmaXgoIG91dHB1dCwgZW50cnlfZGF0YS5tX2ZpbGVfbmFtZSwgZW50cnlfZGF0YS5tX2xpbmVfbnVtICk7Ci0gICAgICAgICAgICBvdXRwdXQgPDwgImluZm86ICI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBORE5CT09TVF9VVExfRVRfTUVTU0FHRToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX1VUTF9FVF9XQVJOSU5HOgotICAgICAgICAgICAgcHJpbnRfcHJlZml4KCBvdXRwdXQsIGVudHJ5X2RhdGEubV9maWxlX25hbWUsIGVudHJ5X2RhdGEubV9saW5lX251bSApOwotICAgICAgICAgICAgb3V0cHV0IDw8ICJ3YXJuaW5nIGluIFwiIiA8PCB0ZXN0X3BoYXNlX2lkZW50aWZpZXIoKSA8PCAiXCI6ICI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBORE5CT09TVF9VVExfRVRfRVJST1I6Ci0gICAgICAgICAgICBwcmludF9wcmVmaXgoIG91dHB1dCwgZW50cnlfZGF0YS5tX2ZpbGVfbmFtZSwgZW50cnlfZGF0YS5tX2xpbmVfbnVtICk7Ci0gICAgICAgICAgICBvdXRwdXQgPDwgImVycm9yIGluIFwiIiA8PCB0ZXN0X3BoYXNlX2lkZW50aWZpZXIoKSA8PCAiXCI6ICI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBORE5CT09TVF9VVExfRVRfRkFUQUxfRVJST1I6Ci0gICAgICAgICAgICBwcmludF9wcmVmaXgoIG91dHB1dCwgZW50cnlfZGF0YS5tX2ZpbGVfbmFtZSwgZW50cnlfZGF0YS5tX2xpbmVfbnVtICk7Ci0gICAgICAgICAgICBvdXRwdXQgPDwgImZhdGFsIGVycm9yIGluIFwiIiA8PCB0ZXN0X3BoYXNlX2lkZW50aWZpZXIoKSA8PCAiXCI6ICI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIGNvbnN0X3N0cmluZyB2YWx1ZSApCi17Ci0gICAgb3V0cHV0IDw8IHZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjpsb2dfZW50cnlfdmFsdWUoIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCBsYXp5X29zdHJlYW0gY29uc3QmIHZhbHVlICkKLXsKLSAgICBvdXRwdXQgPDwgdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3V0cHV0ICkKLXsKLSAgICBvdXRwdXQgPDwgc3RkOjplbmRsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjpwcmludF9wcmVmaXgoIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZSApCi17Ci0jaWZkZWYgX19BUFBMRV9DQ19fCi0gICAgLy8gWGNvZGUtY29tcGF0aWJsZSBsb2dnaW5nIGZvcm1hdCwgaWRlYSBieSBSaWNoYXJkIERpbmd3YWxsIGF0IAotICAgIC8vIDxodHRwOi8vcmljaGFyZGRpbmd3YWxsLm5hbWUvMjAwOC8wNi8wMS91c2luZy10aGUtYm9vc3QtdW5pdC10ZXN0LWZyYW1ld29yay13aXRoLXhjb2RlLTMvPi4gCi0gICAgb3V0cHV0IDw8IGZpbGUgPDwgJzonIDw8IGxpbmUgPDwgIjogIjsKLSNlbHNlCi0gICAgb3V0cHV0IDw8IGZpbGUgPDwgJygnIDw8IGxpbmUgPDwgIik6ICI7Ci0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2Ugb3V0cHV0Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQ09NUElMRVJfTE9HX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9jcHBfbWFpbi5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9jcHBfbWFpbi5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzN2E3ODEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvY3BwX21haW4uaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDE5OTUtMjAwMS4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogbWFpbiBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgUHJvZ3JhbSBFeGVjdXRvbiBNb25pdG9yCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0NQUF9NQUlOX0lQUF8wMTIyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DUFBfTUFJTl9JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+ICAgIC8vIGZvciBleGl0IGNvZGVzCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgIC8vIGZvciB3b3JrYXJvdW5kcwotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxjc3RkbGliPiAgICAgIC8vIHN0ZDo6Z2V0ZW52Ci0jaW5jbHVkZSA8Y3N0cmluZz4gICAgICAvLyBzdGQ6OnN0cmVycm9yCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6Z2V0ZW52OyB1c2luZyA6OnN0cmVycm9yOyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHsKLQotc3RydWN0IGNwcF9tYWluX2NhbGxlciB7Ci0gICAgY3BwX21haW5fY2FsbGVyKCBpbnQgKCpjcHBfbWFpbl9mdW5jKSggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApLCBpbnQgYXJnYywgY2hhcioqIGFyZ3YgKSAKLSAgICA6IG1fY3BwX21haW5fZnVuYyggY3BwX21haW5fZnVuYyApCi0gICAgLCBtX2FyZ2MoIGFyZ2MgKQotICAgICwgbV9hcmd2KCBhcmd2ICkge30KLSAgICAKLSAgICBpbnQgb3BlcmF0b3IoKSgpIHsgcmV0dXJuICgqbV9jcHBfbWFpbl9mdW5jKSggbV9hcmdjLCBtX2FyZ3YgKTsgfQotICAKLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzICAgIAotICAgIGludCAoKm1fY3BwX21haW5fZnVuYykoIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTsKLSAgICBpbnQgICAgICBtX2FyZ2M7Ci0gICAgY2hhcioqICAgbV9hcmd2OwotfTsKLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHByZ19leGVjX21vbml0b3JfbWFpbiAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1pbnQgTkROQk9PU1RfVEVTVF9ERUNMCi1wcmdfZXhlY19tb25pdG9yX21haW4oIGludCAoKmNwcF9tYWluKSggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApLCBpbnQgYXJnYywgY2hhciogYXJndltdICkKLXsKLSAgICBpbnQgcmVzdWx0ID0gMDsKLQotICAgIHRyeSB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBwKCBzdGQ6OmdldGVudiggIk5ETkJPT1NUX1RFU1RfQ0FUQ0hfU1lTVEVNX0VSUk9SUyIgKSApOwotICAgICAgICA6Om5kbmJvb3N0OjpleGVjdXRpb25fbW9uaXRvciBleF9tb247Ci0KLSAgICAgICAgZXhfbW9uLnBfY2F0Y2hfc3lzdGVtX2Vycm9ycy52YWx1ZSA9IHAgIT0gIm5vIjsKLSAgICAgICAgCi0gICAgICAgIHJlc3VsdCA9IGV4X21vbi5leGVjdXRlKCAKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4oIGNwcF9tYWluX2NhbGxlciggY3BwX21haW4sIGFyZ2MsIGFyZ3YgKSApICk7Ci0gICAgICAgIAotICAgICAgICBpZiggcmVzdWx0ID09IDAgKQotICAgICAgICAgICAgcmVzdWx0ID0gOjpuZG5ib29zdDo6ZXhpdF9zdWNjZXNzOwotICAgICAgICBlbHNlIGlmKCByZXN1bHQgIT0gOjpuZG5ib29zdDo6ZXhpdF9zdWNjZXNzICkgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJcbioqKiogZXJyb3IgcmV0dXJuIGNvZGU6ICIgPDwgcmVzdWx0IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICAgIHJlc3VsdCA9IDo6bmRuYm9vc3Q6OmV4aXRfZmFpbHVyZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaCggOjpuZG5ib29zdDo6ZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXhleCApIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJcbioqKiogZXhjZXB0aW9uKCIgPDwgZXhleC5jb2RlKCkgPDwgIik6ICIgPDwgZXhleC53aGF0KCkgPDwgc3RkOjplbmRsOwotICAgICAgICByZXN1bHQgPSA6Om5kbmJvb3N0OjpleGl0X2V4Y2VwdGlvbl9mYWlsdXJlOwotICAgIH0KLSAgICBjYXRjaCggOjpuZG5ib29zdDo6c3lzdGVtX2Vycm9yIGNvbnN0JiBleCApIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJcbioqKiogZmFpbGVkIHRvIGluaXRpYWxpemUgZXhlY3V0aW9uIG1vbml0b3IuIgotICAgICAgICAgICAgICAgICAgPDwgIlxuKioqKiBleHByZXNzaW9uIGF0IGZhdWx0OiAiIDw8IGV4LnBfZmFpbGVkX2V4cCAKLSAgICAgICAgICAgICAgICAgIDw8ICJcbioqKiogZXJyb3IoIiA8PCBleC5wX2Vycm5vIDw8ICIpOiAiIDw8IHN0ZDo6c3RyZXJyb3IoIGV4LnBfZXJybm8gKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJlc3VsdCA9IDo6bmRuYm9vc3Q6OmV4aXRfZXhjZXB0aW9uX2ZhaWx1cmU7Ci0gICAgfQotCi0gICAgaWYoIHJlc3VsdCAhPSA6Om5kbmJvb3N0OjpleGl0X3N1Y2Nlc3MgKSB7Ci0gICAgICAgIHN0ZDo6Y2VyciA8PCAiKioqKioqKiogZXJyb3JzIGRldGVjdGVkOyBzZWUgc3RhbmRhcmQgb3V0cHV0IGZvciBkZXRhaWxzICoqKioqKioqIiA8PCBzdGQ6OmVuZGw7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvLyAgU29tZSBwcmVmZXIgYSBjb25maXJtaW5nIG1lc3NhZ2Ugd2hlbiBhbGwgaXMgd2VsbCwgd2hpbGUgb3RoZXJzIGRvbid0Ci0gICAgICAgIC8vICBsaWtlIHRoZSBjbHV0dGVyLiAgVXNlIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGF2b2lkIGNvbW1hbmQKLSAgICAgICAgLy8gIGxpbmUgYXJndW1lbnQgbW9kaWZpY2F0aW9uczsgZm9yIHVzZSBpbiBwcm9kdWN0aW9uIHByb2dyYW1zCi0gICAgICAgIC8vICB0aGF0J3MgYSBuby1ubyBpbiBzb21lIG9yZ2FuaXphdGlvbnMuCi0gICAgICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIHAoIHN0ZDo6Z2V0ZW52KCAiTkROQk9PU1RfUFJHX01PTl9DT05GSVJNIiApICk7Ci0gICAgICAgIGlmKCBwICE9ICJubyIgKSB7IAotICAgICAgICAgICAgc3RkOjpjZXJyIDw8IHN0ZDo6Zmx1c2ggPDwgIm5vIGVycm9ycyBkZXRlY3RlZCIgPDwgc3RkOjplbmRsOyAKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9URVNUX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9URVNUX05PX01BSU4pCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgbWFpbiBmdW5jdGlvbiBmb3IgdGVzdHMgdXNpbmcgbGliICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW50IGNwcF9tYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICk7ICAvLyBwcm90b3R5cGUgZm9yIHVzZXIncyBjcHBfbWFpbigpCi0KLWludCBORE5CT09TVF9URVNUX0NBTExfREVDTAotbWFpbiggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApCi17Ci0gICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnByZ19leGVjX21vbml0b3JfbWFpbiggJmNwcF9tYWluLCBhcmdjLCBhcmd2ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZiAvLyAhTkROQk9PU1RfVEVTVF9EWU5fTElOSyAmJiAhTkROQk9PU1RfVEVTVF9OT19NQUlOCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9DUFBfTUFJTl9JUFBfMDEyMjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9kZWJ1Zy5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9kZWJ1Zy5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMzMxNDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZGVidWcuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDYtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWJ1ZyBpbnRlcmZhY2VzIGltcGxlbWVudGF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0RFQlVHX0FQSV9JUFBfMTEyMDA2R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfREVCVUdfQVBJX0lQUF8xMTIwMDZHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZWJ1Z19jb25maWcuaHBwPgotCi0vLyBJbXBsZW1lbnRhdGlvbiBvbiBXaW5kb3dzCi0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKFVOREVSX0NFKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKSAvLyAqKioqKioqIFdJTjMyCi0KLSMgIGRlZmluZSBORE5CT09TVF9XSU4zMl9CQVNFRF9ERUJVRwotCi0vLyBTWVNURU0gQVBJCi0jICBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jICBpbmNsdWRlIDx3aW5yZWcuaD4KLSMgIGluY2x1ZGUgPGNzdGRpbz4KLSMgIGluY2x1ZGUgPGNzdHJpbmc+Ci0KLSMgIGlmICFkZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5lZChfTVNDX1ZFUikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX01TX0NSVF9CQVNFRF9ERUJVRwotIyAgICBpbmNsdWRlIDxjcnRkYmcuaD4KLSMgIGVuZGlmCi0KLQotIyAgaWYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPDEzMDApCi0jICAgIGRlZmluZSBzbnByaW50ZiBfc25wcmludGYKLSMgIGVuZGlmCi0KLSMgIGlmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjptZW1zZXQ7IHVzaW5nIDo6c3ByaW50ZjsgfQotIyAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZCh1bml4KSB8fCBkZWZpbmVkKF9fdW5peCkgLy8gKioqKioqKioqKioqKioqKioqKioqIFVOSVgKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1VOSVhfQkFTRURfREVCVUcKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9hbGdvcml0aG0uaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxjc3RyaW5nPiAgLy8gc3RkOjptZW1jcHkKLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPHN0ZGFyZy5oPiAvLyAhISA/PyBjc3RkYXJnCi0KLS8vIFNZU1RFTSBBUEkKLSMgIGluY2x1ZGUgPHVuaXN0ZC5oPgotIyAgaW5jbHVkZSA8c2lnbmFsLmg+Ci0jICBpbmNsdWRlIDxmY250bC5oPgotCi0jICBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSMgIGluY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jICBpbmNsdWRlIDxzeXMvd2FpdC5oPgotIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSMgIGluY2x1ZGUgPHN0ZGlvLmg+Ci0jICBpbmNsdWRlIDxzdGRsaWIuaD4KLQotIyAgaWYgZGVmaW5lZChzdW4pIHx8IGRlZmluZWQoX19zdW4pCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NVTl9CQVNFRF9ERUJVRwotCi0jICAgIGlmbmRlZiBORE5CT09TVF9URVNUX0RCR19MSVNUCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfREJHX0xJU1QgZGJ4O2dkYgotIyAgICBlbmRpZgotCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NOTF9EQkcgIGRieAotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9HVUlfREJHICBkYngtZGRkCi0KLSMgICAgaW5jbHVkZSA8cHJvY2ZzLmg+Ci0KLSMgIGVsaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX2xpbnV4KQotCi0jICAgIGRlZmluZSBORE5CT09TVF9MSU5VWF9CQVNFRF9ERUJVRwotCi0jICAgIGluY2x1ZGUgPHN5cy9wdHJhY2UuaD4KLQotIyAgICBpZm5kZWYgTkROQk9PU1RfVEVTVF9TVEFUX0xJTkVfTUFYCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfU1RBVF9MSU5FX01BWCA1MDAKLSMgICAgZW5kaWYKLQotIyAgICBpZm5kZWYgTkROQk9PU1RfVEVTVF9EQkdfTElTVAotIyAgICAgIGRlZmluZSBORE5CT09TVF9URVNUX0RCR19MSVNUIGdkYgotIyAgICBlbmRpZgotCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NOTF9EQkcgIGdkYgotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9HVUlfREJHICBnZGIteHRlcm0KLQotIyAgZW5kaWYKLQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZWJ1ZyB7Ci0KLXVzaW5nIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgZGVidWc6OmluZm9fdCAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1dJTjMyX0JBU0VEX0RFQlVHKSAvLyAqKioqKioqKioqKioqKioqKioqKioqKiBXSU4zMgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQKLWR5bl9zeW1ib2woIFQmIHJlcywgY2hhciBjb25zdCogbW9kdWxlX25hbWUsIGNoYXIgY29uc3QqIHN5bWJvbF9uYW1lICkKLXsKLSAgICBITU9EVUxFIG0gPSA6OkdldE1vZHVsZUhhbmRsZUEoIG1vZHVsZV9uYW1lICk7Ci0KLSAgICBpZiggIW0gKQotICAgICAgICBtID0gOjpMb2FkTGlicmFyeUEoIG1vZHVsZV9uYW1lICk7Ci0KLSAgICByZXMgPSByZWludGVycHJldF9jYXN0PFQ+KCA6OkdldFByb2NBZGRyZXNzKCBtLCBzeW1ib2xfbmFtZSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyBzdHJ1Y3QgaW5mb190IHsKLSAgICB0eXBlZGVmIEJPT0wgKFdJTkFQSSogSXNEZWJ1Z2dlclByZXNlbnRUKSgpOwotICAgIHR5cGVkZWYgTE9ORyAoV0lOQVBJKiBSZWdRdWVyeVZhbHVlRXhUKSggSEtFWSwgY2hhciBjb25zdCogLypMUFRTVFIqLywgTFBEV09SRCwgTFBEV09SRCwgTFBCWVRFLCBMUERXT1JEICk7Ci0gICAgdHlwZWRlZiBMT05HIChXSU5BUEkqIFJlZ09wZW5LZXlUKSggSEtFWSwgY2hhciBjb25zdCogLypMUENUU1RSKi8sIFBIS0VZICk7Ci0gICAgdHlwZWRlZiBMT05HIChXSU5BUEkqIFJlZ0Nsb3NlS2V5VCkoIEhLRVkgKTsKLQotICAgIGluZm9fdCgpOwotCi0gICAgSXNEZWJ1Z2dlclByZXNlbnRUICBtX2lzX2RlYnVnZ2VyX3ByZXNlbnQ7Ci0gICAgUmVnT3BlbktleVQgICAgICAgICBtX3JlZ19vcGVuX2tleTsKLSAgICBSZWdRdWVyeVZhbHVlRXhUICAgIG1fcmVnX3F1ZXJ5X3ZhbHVlOwotICAgIFJlZ0Nsb3NlS2V5VCAgICAgICAgbV9yZWdfY2xvc2Vfa2V5OwotCi19IHNfaW5mbzsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5mb190OjppbmZvX3QoKQotewotICAgIGR5bl9zeW1ib2woIG1faXNfZGVidWdnZXJfcHJlc2VudCwgImtlcm5lbDMyIiwgIklzRGVidWdnZXJQcmVzZW50IiApOwotICAgIGR5bl9zeW1ib2woIG1fcmVnX29wZW5fa2V5LCAiYWR2YXBpMzIiLCAiUmVnT3BlbktleUEiICk7Ci0gICAgZHluX3N5bWJvbCggbV9yZWdfcXVlcnlfdmFsdWUsICJhZHZhcGkzMiIsICJSZWdRdWVyeVZhbHVlRXhBIiApOwotICAgIGR5bl9zeW1ib2woIG1fcmVnX2Nsb3NlX2tleSwgImFkdmFwaTMyIiwgIlJlZ0Nsb3NlS2V5IiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1VOSVhfQkFTRURfREVCVUcpCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBmZF9ob2xkZXIgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IGZkX2hvbGRlciB7Ci0gICAgZXhwbGljaXQgZmRfaG9sZGVyKCBpbnQgZmQgKSA6IG1fZmQoIGZkICkge30KLSAgICB+ZmRfaG9sZGVyKCkKLSAgICB7Ci0gICAgICAgIGlmKCBtX2ZkICE9IC0xICkKLSAgICAgICAgICAgIDo6Y2xvc2UoIG1fZmQgKTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBpbnQoKSB7IHJldHVybiBtX2ZkOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgaW50IG1fZmQ7Ci19OwotCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgcHJvY2Vzc19pbmZvICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IHByb2Nlc3NfaW5mbyB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgcHJvY2Vzc19pbmZvKCBpbnQgcGlkICk7Ci0KLSAgICAvLyBhY2Nlc3MgbWV0aG9kcwotICAgIGludCAgICAgICAgICAgICBwYXJlbnRfcGlkKCkgY29uc3QgIHsgcmV0dXJuIG1fcGFyZW50X3BpZDsgfQotICAgIGNvbnN0X3N0cmluZyAgICBiaW5hcnlfbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmluYXJ5X25hbWU7IH0KLSAgICBjb25zdF9zdHJpbmcgICAgYmluYXJ5X3BhdGgoKSBjb25zdCB7IHJldHVybiBtX2JpbmFyeV9wYXRoOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgaW50ICAgICAgICAgICAgIG1fcGFyZW50X3BpZDsKLSAgICBjb25zdF9zdHJpbmcgICAgbV9iaW5hcnlfbmFtZTsKLSAgICBjb25zdF9zdHJpbmcgICAgbV9iaW5hcnlfcGF0aDsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1VOX0JBU0VEX0RFQlVHKQotICAgIHN0cnVjdCBwc2luZm8gICBtX3BzaTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTElOVVhfQkFTRURfREVCVUcpCi0gICAgY2hhciAgICAgICAgICAgIG1fc3RhdF9saW5lW05ETkJPT1NUX1RFU1RfU1RBVF9MSU5FX01BWCsxXTsKLSNlbmRpZgotICAgIGNoYXIgICAgICAgICAgICBtX2JpbmFyeV9wYXRoX2J1ZmZbNTAwKzFdOyAvLyAhISA/PwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotcHJvY2Vzc19pbmZvOjpwcm9jZXNzX2luZm8oIGludCBwaWQgKQotOiBtX3BhcmVudF9waWQoIDAgKQotewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1VOX0JBU0VEX0RFQlVHKQotICAgIGNoYXIgZm5hbWVfYnVmZlszMF07Ci0KLSAgICA6OnNucHJpbnRmKCBmbmFtZV9idWZmLCBzaXplb2YoZm5hbWVfYnVmZiksICIvcHJvYy8lZC9wc2luZm8iLCBwaWQgKTsKLQotICAgIGZkX2hvbGRlciBwc2luZm9fZmQoIDo6b3BlbiggZm5hbWVfYnVmZiwgT19SRE9OTFkgKSApOwotCi0gICAgaWYoIHBzaW5mb19mZCA9PSAtMSApCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmKCA6OnJlYWQoIHBzaW5mb19mZCwgJm1fcHNpLCBzaXplb2YobV9wc2kpICkgPT0gLTEgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3BhcmVudF9waWQgPSBtX3BzaS5wcl9wcGlkOwotCi0gICAgbV9iaW5hcnlfbmFtZS5hc3NpZ24oIG1fcHNpLnByX2ZuYW1lICk7Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCi0gICAgCi0gICAgOjpzbnByaW50ZiggZm5hbWVfYnVmZiwgc2l6ZW9mKGZuYW1lX2J1ZmYpLCAiL3Byb2MvJWQvYXMiLCBwaWQgKTsKLQotICAgIGZkX2hvbGRlciBhc19mZCggOjpvcGVuKCBmbmFtZV9idWZmLCBPX1JET05MWSApICk7Ci0gICAgdWludHB0cl90ICAgYmluYXJ5X25hbWVfcG9zOwotICAKLSAgICAvLyAhISA/PyBjb3VsZCB3ZSBhdm9pZCByZWFkaW5nIHdob2xlIG1fYmluYXJ5X3BhdGhfYnVmZj8KLSAgICBpZiggYXNfZmQgPT0gLTEgfHwKLSAgICAgICAgOjpsc2VlayggYXNfZmQsIG1fcHNpLnByX2FyZ3YsIFNFRUtfU0VUICkgPT0gLTEgfHwKLSAgICAgICAgOjpyZWFkICggYXNfZmQsICZiaW5hcnlfbmFtZV9wb3MsIHNpemVvZihiaW5hcnlfbmFtZV9wb3MpICkgPT0gLTEgfHwKLSAgICAgICAgOjpsc2VlayggYXNfZmQsIGJpbmFyeV9uYW1lX3BvcywgU0VFS19TRVQgKSA9PSAtMSB8fAotICAgICAgICA6OnJlYWQgKCBhc19mZCwgbV9iaW5hcnlfcGF0aF9idWZmLCBzaXplb2YobV9iaW5hcnlfcGF0aF9idWZmKSApID09IC0xICkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBtX2JpbmFyeV9wYXRoLmFzc2lnbiggbV9iaW5hcnlfcGF0aF9idWZmICk7Ci0gICAgICAgIAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9MSU5VWF9CQVNFRF9ERUJVRykKLSAgICBjaGFyIGZuYW1lX2J1ZmZbMzBdOwotCi0gICAgOjpzbnByaW50ZiggZm5hbWVfYnVmZiwgc2l6ZW9mKGZuYW1lX2J1ZmYpLCAiL3Byb2MvJWQvc3RhdCIsIHBpZCApOwotCi0gICAgZmRfaG9sZGVyIHBzaW5mb19mZCggOjpvcGVuKCBmbmFtZV9idWZmLCBPX1JET05MWSApICk7Ci0KLSAgICBpZiggcHNpbmZvX2ZkID09IC0xICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3NpemVfdCBudW1fcmVhZCA9IDo6cmVhZCggcHNpbmZvX2ZkLCBtX3N0YXRfbGluZSwgc2l6ZW9mKG1fc3RhdF9saW5lKS0xICk7Ci0gICAgaWYoIG51bV9yZWFkID09IC0xICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdGF0X2xpbmVbbnVtX3JlYWRdID0gMDsKLQotICAgIGNoYXIgY29uc3QqIG5hbWVfYmVnID0gbV9zdGF0X2xpbmU7Ci0gICAgd2hpbGUoICpuYW1lX2JlZyAmJiAqbmFtZV9iZWcgIT0gJygnICkKLSAgICAgICAgKytuYW1lX2JlZzsKLQotICAgIGNoYXIgY29uc3QqIG5hbWVfZW5kID0gbmFtZV9iZWcrMTsKLSAgICB3aGlsZSggKm5hbWVfZW5kICYmICpuYW1lX2VuZCAhPSAnKScgKQotICAgICAgICArK25hbWVfZW5kOwotCi0gICAgc3RkOjpzc2NhbmYoIG5hbWVfZW5kKzEsICIlKnMlZCIsICZtX3BhcmVudF9waWQgKTsKLQotICAgIG1fYmluYXJ5X25hbWUuYXNzaWduKCBuYW1lX2JlZysxLCBuYW1lX2VuZCApOwotCi0gICAgOjpzbnByaW50ZiggZm5hbWVfYnVmZiwgc2l6ZW9mKGZuYW1lX2J1ZmYpLCAiL3Byb2MvJWQvZXhlIiwgcGlkICk7Ci0gICAgbnVtX3JlYWQgPSA6OnJlYWRsaW5rKCBmbmFtZV9idWZmLCBtX2JpbmFyeV9wYXRoX2J1ZmYsIHNpemVvZihtX2JpbmFyeV9wYXRoX2J1ZmYpLTEgKTsKLQotICAgIGlmKCBudW1fcmVhZCA9PSAtMSApCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYmluYXJ5X3BhdGhfYnVmZltudW1fcmVhZF0gPSAwOwotICAgIG1fYmluYXJ5X3BhdGguYXNzaWduKCBtX2JpbmFyeV9wYXRoX2J1ZmYsIG51bV9yZWFkICk7Ci0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHByZXBhcmVfd2luZG93X3RpdGxlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdGF0aWMgY2hhcioKLXByZXBhcmVfd2luZG93X3RpdGxlKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2kgKQotewotICAgIHR5cGVkZWYgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgc3RyX3Q7Ci0KLSAgICBzdGF0aWMgY2hhciB0aXRsZV9zdHJbNTBdOwotCi0gICAgc3RyX3QgcGF0aF9zZXAoICJcXC8iICk7Ci0KLSAgICBzdHJfdDo6aXRlcmF0b3IgIGl0ID0gdW5pdF90ZXN0OjpmaW5kX2xhc3Rfb2YoIGRzaS5iaW5hcnlfcGF0aC5iZWdpbigpLCBkc2kuYmluYXJ5X3BhdGguZW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX3NlcC5iZWdpbigpLCBwYXRoX3NlcC5lbmQoKSApOwotCi0gICAgaWYoIGl0ID09IGRzaS5iaW5hcnlfcGF0aC5lbmQoKSApCi0gICAgICAgIGl0ID0gZHNpLmJpbmFyeV9wYXRoLmJlZ2luKCk7Ci0gICAgZWxzZQotICAgICAgICArK2l0OwotCi0gICAgOjpzbnByaW50ZiggdGl0bGVfc3RyLCBzaXplb2YodGl0bGVfc3RyKSwgIiUqcyAlbGQiLCAoaW50KShkc2kuYmluYXJ5X3BhdGguZW5kKCktaXQpLCBpdCwgZHNpLnBpZCApOwotCi0gICAgcmV0dXJuIHRpdGxlX3N0cjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgc2F2ZV9leGVjbHAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10eXBlZGVmIHVuaXRfdGVzdDo6YmFzaWNfY3N0cmluZzxjaGFyPiBtYnVmZmVyOwotCi1pbmxpbmUgY2hhcioKLWNvcHlfYXJnKCBtYnVmZmVyJiBkZXN0LCBjb25zdF9zdHJpbmcgYXJnICkKLXsKLSAgICBpZiggZGVzdC5zaXplKCkgPCBhcmcuc2l6ZSgpKzEgKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNoYXIqIHJlcyA9IGRlc3QuYmVnaW4oKTsKLQotICAgIHN0ZDo6bWVtY3B5KCByZXMsIGFyZy5iZWdpbigpLCBhcmcuc2l6ZSgpKzEgKTsKLQotICAgIGRlc3QudHJpbV9sZWZ0KCBhcmcuc2l6ZSgpKzEgKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLXNhZmVfZXhlY2xwKCBjaGFyIGNvbnN0KiBmaWxlLCAuLi4gKQotewotICAgIHN0YXRpYyBjaGFyKiBhcmd2X2J1ZmZbMjAwXTsKLQotICAgIHZhX2xpc3QgICAgIGFyZ3M7Ci0gICAgY2hhciBjb25zdCogYXJnOwotCi0gICAgLy8gZmlyc3QgY2FsY3VsYXRlIGFjdHVhbCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgaW50ICAgICAgICAgbnVtX2FyZ3MgPSAyOyAvLyBmaWxlIG5hbWUgYW5kIDAgYXQgbGVhc3QKLQotICAgIHZhX3N0YXJ0KCBhcmdzLCBmaWxlICk7Ci0gICAgd2hpbGUoICEhKGFyZyA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKSkgKQotICAgICAgICBudW1fYXJncysrOwotICAgIHZhX2VuZCggYXJncyApOwotCi0gICAgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIGFyZ3VtZW50IHBvaW50ZXJzIGFycmF5Ci0gICAgY2hhcioqICAgICAgYXJndl9pdCAgPSBhcmd2X2J1ZmY7Ci0gICAgbWJ1ZmZlciAgICAgd29ya19idWZmKCByZWludGVycHJldF9jYXN0PGNoYXIqPihhcmd2X2J1ZmYpLCBzaXplb2YoYXJndl9idWZmKSApOwotICAgIHdvcmtfYnVmZi50cmltX2xlZnQoIG51bV9hcmdzICogc2l6ZW9mKGNoYXIqKSApOwotCi0gICAgLy8gY29weSBhbGwgdGhlIGFyZ3VtZW50IHZhbHVlcyBpbnRvIGxvY2FsIHN0b3JhZ2UKLSAgICBpZiggISgqYXJndl9pdCsrID0gY29weV9hcmcoIHdvcmtfYnVmZiwgZmlsZSApKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHByaW50ZiggIiEhICVzXG4iLCBmaWxlICk7Ci0KLSAgICB2YV9zdGFydCggYXJncywgZmlsZSApOwotICAgIHdoaWxlKCAhIShhcmcgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICkpICkgewotICAgICAgICBwcmludGYoICIhISAlc1xuIiwgYXJnICk7Ci0gICAgICAgIGlmKCAhKCphcmd2X2l0KysgPSBjb3B5X2FyZyggd29ya19idWZmLCBhcmcgKSkgKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICB2YV9lbmQoIGFyZ3MgKTsKLQotICAgICphcmd2X2l0ID0gMDsKLQotICAgIHJldHVybiA6OmV4ZWN2cCggZmlsZSwgYXJndl9idWZmICkgIT0gLTE7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIHN0YXJ0X2RlYnVnZ2VyX2luX2VtYWNzICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2RlYnVnZ2VyX2luX2VtYWNzKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2ksIGNoYXIgY29uc3QqIGVtYWNzX25hbWUsIGNoYXIgY29uc3QqIGRiZ19jb21tYW5kICkKLXsKLSAgICBjaGFyIGNvbnN0KiB0aXRsZSA9IHByZXBhcmVfd2luZG93X3RpdGxlKCBkc2kgKTsKLQotICAgIGlmKCAhdGl0bGUgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkc2kuZGlzcGxheS5pc19lbXB0eSgpCi0gICAgICAgID8gc2FmZV9leGVjbHAoIGVtYWNzX25hbWUsICItdGl0bGUiLCB0aXRsZSwgIi0tZXZhbCIsIGRiZ19jb21tYW5kLCAwICkKLSAgICAgICAgOiBzYWZlX2V4ZWNscCggZW1hY3NfbmFtZSwgIi10aXRsZSIsIHRpdGxlLCAiLWRpc3BsYXkiLCBkc2kuZGlzcGxheS5iZWdpbigpLCAiLS1ldmFsIiwgZGJnX2NvbW1hbmQsIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBnZGIgc3RhcnRlcnMgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdGF0aWMgY2hhciBjb25zdCoKLXByZXBhcmVfZ2RiX2NtbmRfZmlsZSggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICAvLyBwcmVwYXJlIHBpZCB2YWx1ZQotICAgIGNoYXIgcGlkX2J1ZmZbMTZdOwotICAgIDo6c25wcmludGYoIHBpZF9idWZmLCBzaXplb2YocGlkX2J1ZmYpLCAiJWxkIiwgZHNpLnBpZCApOwotICAgIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIHBpZF9zdHIoIHBpZF9idWZmICk7Ci0KLSAgICBzdGF0aWMgY2hhciBjbWRfZmlsZV9uYW1lW10gPSAiL3RtcC9idGxfZ2RiX2NtZF9YWFhYWFgiOyAvLyAhISA/PwotCi0gICAgLy8gcHJlcGFyZSBjb21tYW5kcwotICAgIGZkX2hvbGRlciBjbWRfZmQoIDo6bWtzdGVtcCggY21kX2ZpbGVfbmFtZSApICk7Ci0KLSAgICBpZiggY21kX2ZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSNkZWZpbmUgV1JJVEVfU1RSKCBzdHIgKSAgaWYoIDo6d3JpdGUoIGNtZF9mZCwgc3RyLmJlZ2luKCksIHN0ci5zaXplKCkgKSA9PSAtMSApIHJldHVybiAwOwotI2RlZmluZSBXUklURV9DU1RSKCBzdHIgKSBpZiggOjp3cml0ZSggY21kX2ZkLCBzdHIsIHNpemVvZiggc3RyICktMSApID09IC0xICkgcmV0dXJuIDA7Ci0KLSAgICBXUklURV9DU1RSKCAiZmlsZSAiICk7Ci0gICAgV1JJVEVfU1RSKCBkc2kuYmluYXJ5X3BhdGggKTsKLSAgICBXUklURV9DU1RSKCAiXG5hdHRhY2ggIiApOwotICAgIFdSSVRFX1NUUiggcGlkX3N0ciApOwotICAgIFdSSVRFX0NTVFIoICJcbnNoZWxsIHVubGluayAiICk7Ci0gICAgV1JJVEVfU1RSKCBkc2kuaW5pdF9kb25lX2xvY2sgKTsKLSAgICBXUklURV9DU1RSKCAiXG5jb250IiApOwotICAgIGlmKCBkc2kuYnJlYWtfb3JfY29udGludWUgKQotICAgICAgICBXUklURV9DU1RSKCAiXG51cCA0IiApOwotICAgICAgICAgICAgCi0gICAgV1JJVEVfQ1NUUiggIlxuZWNobyBcXG4iICk7IC8vICEhID8/Ci0gICAgV1JJVEVfQ1NUUiggIlxubGlzdCAtIiApOwotICAgIFdSSVRFX0NTVFIoICJcbmxpc3QiICk7Ci0gICAgV1JJVEVfQ1NUUiggIlxuc2hlbGwgdW5saW5rICIgKTsKLSAgICBXUklURV9DU1RSKCBjbWRfZmlsZV9uYW1lICk7Ci0KLSAgICByZXR1cm4gY21kX2ZpbGVfbmFtZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2dkYl9pbl9jb25zb2xlKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2kgKQotewotICAgIGNoYXIgY29uc3QqIGNtbmRfZmlsZV9uYW1lID0gcHJlcGFyZV9nZGJfY21uZF9maWxlKCBkc2kgKTsKLQotICAgIGlmKCAhY21uZF9maWxlX25hbWUgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzYWZlX2V4ZWNscCggImdkYiIsICItcSIsICIteCIsIGNtbmRfZmlsZV9uYW1lLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9nZGJfaW5feHRlcm0oIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgY2hhciBjb25zdCogdGl0bGUgICAgICAgICAgID0gcHJlcGFyZV93aW5kb3dfdGl0bGUoIGRzaSApOwotICAgIGNoYXIgY29uc3QqIGNtbmRfZmlsZV9uYW1lICA9IHByZXBhcmVfZ2RiX2NtbmRfZmlsZSggZHNpICk7Ci0KLSAgICBpZiggIXRpdGxlIHx8ICFjbW5kX2ZpbGVfbmFtZSApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNhZmVfZXhlY2xwKCAieHRlcm0iLCAiLVQiLCB0aXRsZSwgIi1kaXNwbGF5IiwgZHNpLmRpc3BsYXkuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgIi1iZyIsICJibGFjayIsICItZmciLCAid2hpdGUiLCAiLWdlb21ldHJ5IiwgIjg4eDMwKzEwKzEwIiwgIi1mbiIsICI5eDE1IiwgIi1lIiwKLSAgICAgICAgICAgICAgICAgImdkYiIsICItcSIsICIteCIsIGNtbmRfZmlsZV9uYW1lLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9nZGJfaW5fZW1hY3MoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgY2hhciBjb25zdCogY21uZF9maWxlX25hbWUgID0gcHJlcGFyZV9nZGJfY21uZF9maWxlKCBkc2kgKTsKLSAgICBpZiggIWNtbmRfZmlsZV9uYW1lICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2hhciBkYmdfY21kX2J1ZmZbNTAwXTsgLy8gISEgPz8KLSAgICA6OnNucHJpbnRmKCBkYmdfY21kX2J1ZmYsIHNpemVvZihkYmdfY21kX2J1ZmYpLCAiKHByb2duIChnZGIgXCJnZGIgLXEgLXggJXNcIikpIiwgY21uZF9maWxlX25hbWUgKTsKLQotICAgIHN0YXJ0X2RlYnVnZ2VyX2luX2VtYWNzKCBkc2ksICJlbWFjcyIsIGRiZ19jbWRfYnVmZiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZ2RiX2luX3hlbWFjcyggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgKQotewotICAgIC8vICEhID8/Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgZGJ4IHN0YXJ0ZXJzICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RhdGljIGNoYXIgY29uc3QqCi1wcmVwYXJlX2RieF9jbWRfbGluZSggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpLCBib29sIGxpc3Rfc291cmNlID0gdHJ1ZSApCi17Ci0gICAgc3RhdGljIGNoYXIgY21kX2xpbmVfYnVmZls1MDBdOyAvLyAhISA/PwotCi0gICAgOjpzbnByaW50ZiggY21kX2xpbmVfYnVmZiwgc2l6ZW9mKGNtZF9saW5lX2J1ZmYpLCAidW5saW5rICVzO2NvbnQ7JXMlcyIsIAotICAgICAgICAgICAgICAgICAgIGRzaS5pbml0X2RvbmVfbG9jay5iZWdpbigpLCAKLSAgICAgICAgICAgICAgICAgICBkc2kuYnJlYWtfb3JfY29udGludWUgPyAidXAgMjsiOiAiIiwgCi0gICAgICAgICAgICAgICAgICAgbGlzdF9zb3VyY2UgPyAiZWNobyBcIiBcIjtsaXN0IC13MzsiIDogIiIgKTsKLQotICAgIHJldHVybiBjbWRfbGluZV9idWZmOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZGJ4X2luX2NvbnNvbGUoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgY2hhciBwaWRfYnVmZlsxNl07Ci0gICAgOjpzbnByaW50ZiggcGlkX2J1ZmYsIHNpemVvZihwaWRfYnVmZiksICIlbGQiLCBkc2kucGlkICk7Ci0KLSAgICBzYWZlX2V4ZWNscCggImRieCIsICItcSIsICItYyIsIHByZXBhcmVfZGJ4X2NtZF9saW5lKCBkc2kgKSwgZHNpLmJpbmFyeV9wYXRoLmJlZ2luKCksIHBpZF9idWZmLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9kYnhfaW5feHRlcm0oIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgY2hhciBjb25zdCogdGl0bGUgPSBwcmVwYXJlX3dpbmRvd190aXRsZSggZHNpICk7Ci0gICAgaWYoICF0aXRsZSApCi0gICAgICAgIHJldHVybjsKLQotICAgIGNoYXIgcGlkX2J1ZmZbMTZdOyAvLyAhISA/PwotICAgIDo6c25wcmludGYoIHBpZF9idWZmLCBzaXplb2YocGlkX2J1ZmYpLCAiJWxkIiwgZHNpLnBpZCApOwotICAgIAotICAgIHNhZmVfZXhlY2xwKCAieHRlcm0iLCAiLVQiLCB0aXRsZSwgIi1kaXNwbGF5IiwgZHNpLmRpc3BsYXkuYmVnaW4oKSwgCi0gICAgICAgICAgICAgICAgICAgICItYmciLCAiYmxhY2siLCAiLWZnIiwgIndoaXRlIiwgIi1nZW9tZXRyeSIsICI4OHgzMCsxMCsxMCIsICItZm4iLCAiOXgxNSIsICItZSIsCi0gICAgICAgICAgICAgICAgICJkYngiLCAiLXEiLCAiLWMiLCBwcmVwYXJlX2RieF9jbWRfbGluZSggZHNpICksIGRzaS5iaW5hcnlfcGF0aC5iZWdpbigpLCBwaWRfYnVmZiwgMCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZGJ4X2luX2VtYWNzKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiAvKmRzaSovICkKLXsKLS8vICAgIGNoYXIgZGJnX2NtZF9idWZmWzUwMF07IC8vICEhID8/Ci0vLwotLy8gICAgOjpzbnByaW50ZiggZGJnX2NtZF9idWZmLCBzaXplb2YoZGJnX2NtZF9idWZmKSwgIihwcm9nbiAoZGJ4IFwiZGJ4IC1xIC1jIGNvbnQgJXMgJWxkXCIpKSIsIGRzaS5iaW5hcnlfcGF0aC5iZWdpbigpLCBkc2kucGlkICk7Ci0KLS8vICAgIHN0YXJ0X2RlYnVnZ2VyX2luX2VtYWNzKCBkc2ksICJlbWFjcyIsIGRiZ19jbWRfYnVmZiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZGJ4X2luX3hlbWFjcyggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgKQotewotICAgIC8vICEhID8/Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9kYnhfaW5fZGRkKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2kgKQotewotICAgIGNoYXIgY29uc3QqIHRpdGxlID0gcHJlcGFyZV93aW5kb3dfdGl0bGUoIGRzaSApOwotICAgIGlmKCAhdGl0bGUgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjaGFyIHBpZF9idWZmWzE2XTsgLy8gISEgPz8KLSAgICA6OnNucHJpbnRmKCBwaWRfYnVmZiwgc2l6ZW9mKHBpZF9idWZmKSwgIiVsZCIsIGRzaS5waWQgKTsKLSAgICAKLSAgICBzYWZlX2V4ZWNscCggImRkZCIsICItZGlzcGxheSIsIGRzaS5kaXNwbGF5LmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICItLWRieCIsICItcSIsICItYyIsIHByZXBhcmVfZGJ4X2NtZF9saW5lKCBkc2ksIGZhbHNlICksIGRzaS5iaW5hcnlfcGF0aC5iZWdpbigpLCBwaWRfYnVmZiwgMCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgZGVidWc6OmluZm9fdCAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0YXRpYyBzdHJ1Y3QgaW5mb190IHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGluZm9fdCgpOwotCi0gICAgLy8gUHVibGljIHByb3BlcnRpZXMKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxzdGQ6OnN0cmluZz4gIHBfZGJnOwotICAgIAotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLGRiZ19zdGFydGVyPiAgICAgICAgICAgbV9kYmdfc3RhcnRlcl9yZWc7Ci19IHNfaW5mbzsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5mb190OjppbmZvX3QoKQotewotICAgIHBfZGJnLnZhbHVlID0gOjpnZXRlbnYoICJESVNQTEFZIiApCi0gICAgICAgID8gc3RkOjpzdHJpbmcoIE5ETkJPT1NUX1NUUklOR0laRSggTkROQk9PU1RfVEVTVF9HVUlfREJHICkgKQotICAgICAgICA6IHN0ZDo6c3RyaW5nKCBORE5CT09TVF9TVFJJTkdJWkUoIE5ETkJPT1NUX1RFU1RfQ05MX0RCRyApICk7Ci0gICAgICAgIAotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJnZGIiKV0gICAgICAgICAgID0gJnN0YXJ0X2dkYl9pbl9jb25zb2xlOwotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJnZGItZW1hY3MiKV0gICAgID0gJnN0YXJ0X2dkYl9pbl9lbWFjczsKLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZ2RiLXh0ZXJtIildICAgICA9ICZzdGFydF9nZGJfaW5feHRlcm07Ci0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImdkYi14ZW1hY3MiKV0gICAgPSAmc3RhcnRfZ2RiX2luX3hlbWFjczsKLQotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJkYngiKV0gICAgICAgICAgID0gJnN0YXJ0X2RieF9pbl9jb25zb2xlOwotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJkYngtZW1hY3MiKV0gICAgID0gJnN0YXJ0X2RieF9pbl9lbWFjczsKLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZGJ4LXh0ZXJtIildICAgICA9ICZzdGFydF9kYnhfaW5feHRlcm07Ci0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImRieC14ZW1hY3MiKV0gICAgPSAmc3RhcnRfZGJ4X2luX3hlbWFjczsKLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZGJ4LWRkZCIpXSAgICAgICA9ICZzdGFydF9kYnhfaW5fZGRkOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZW5kaWYKLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICBjaGVjayBpZiBwcm9ncmFtIGlzIHJ1bm5pbmcgdW5kZXIgZGVidWdnZXIgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ib29sCi11bmRlcl9kZWJ1Z2dlcigpCi17Ci0jaWYgZGVmaW5lZChORE5CT09TVF9XSU4zMl9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKiogV0lOMzIKLQotICAgIHJldHVybiAhIXNfaW5mby5tX2lzX2RlYnVnZ2VyX3ByZXNlbnQgJiYgc19pbmZvLm1faXNfZGVidWdnZXJfcHJlc2VudCgpOwotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1VOSVhfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKiogVU5JWAotCi0gICAgLy8gISEgPz8gY291bGQvc2hvdWxkIHdlIGNhY2hlIHRoZSByZXN1bHQgc29tZWhvdz8KLSAgICBjb25zdF9zdHJpbmcgICAgZGJnX2xpc3QgPSBORE5CT09TVF9URVNUX1NUUklOR0laRSggTkROQk9PU1RfVEVTVF9EQkdfTElTVCApOwotCi0gICAgcGlkX3QgcGlkID0gOjpnZXRwaWQoKTsKLQotICAgIHdoaWxlKCBwaWQgIT0gMCApIHsKLSAgICAgICAgcHJvY2Vzc19pbmZvIHBpKCBwaWQgKTsKLQotICAgICAgICAvLyAhISA/PyBzaG91bGQgd2UgdXNlIHRva2VuaXplciBoZXJlIGluc3RlYWQ/Ci0gICAgICAgIGlmKCBkYmdfbGlzdC5maW5kKCBwaS5iaW5hcnlfbmFtZSgpICkgIT0gY29uc3Rfc3RyaW5nOjpucG9zICkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHBpZCA9IChwaS5wYXJlbnRfcGlkKCkgPT0gcGlkID8gMCA6IHBpLnBhcmVudF9waWQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotCi0jZWxzZSAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogZGVmYXVsdAotCi0gICAgcmV0dXJuIGZhbHNlOwotCi0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIGNhdXNlIHByb2dyYW0gdG8gYnJlYWsgZXhlY3V0aW9uICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgaW4gZGVidWdnZXIgYXQgY2FsbCBwb2ludCAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotZGVidWdnZXJfYnJlYWsoKQotewotICAgIC8vICEhID8/IGF1dG8tc3RhcnQgZGVidWdnZXI/Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1dJTjMyX0JBU0VEX0RFQlVHKSAvLyAqKioqKioqKioqKioqKioqKioqKioqKiBXSU4zMgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxMzAwKSAgICAgICAgICAgICAgICAgICAgICAgfHwgIFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA+PSAzKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykgICB8fCAgXAotICAgIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKLSMgICBkZWZpbmUgTkROQk9PU1RfREVCVUdfQlJFQUsgICAgX19kZWJ1Z2JyZWFrCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9ERUJVR19CUkVBSyAgICBEZWJ1Z0JyZWFrCi0jZW5kaWYKLQotI2lmbmRlZiBfX01JTkdXMzJfXwotICAgIGlmKCAhdW5kZXJfZGVidWdnZXIoKSApIHsKLSAgICAgICAgX190cnkgewotICAgICAgICAgICAgX190cnkgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFQlVHX0JSRUFLKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBfX2V4Y2VwdCggVW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKEdldEV4Y2VwdGlvbkluZm9ybWF0aW9uKCkpICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBVc2VyIG9wdGVkIHRvIGlnbm9yZSB0aGUgYnJlYWtwb2ludAotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBfX2V4Y2VwdCAoRVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gSWYgd2UgZ290IGhlcmUsIHRoZSB1c2VyIGhhcyBwdXNoZWQgRGVidWcuIERlYnVnZ2VyIGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gb3VyIHByb2Nlc3MgYW5kIHdlCi0gICAgICAgICAgICAvLyBjb250aW51ZSB0byBsZXQgdGhlIGFub3RoZXIgTkROQk9PU1RfREVCVUdfQlJFQUsgdG8gYmUgY2FsbGVkLgotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KLSAgICBORE5CT09TVF9ERUJVR19CUkVBSygpOwotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1VOSVhfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKiogVU5JWAotCi0gICAgOjpraWxsKCA6OmdldHBpZCgpLCBTSUdUUkFQICk7Ci0KLSNlbHNlIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBkZWZhdWx0Ci0KLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBjb25zb2xlIGRlYnVnZ2VyIHNldHVwICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1VOSVhfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKioqKiBVTklYCi0KLXN0ZDo6c3RyaW5nCi1zZXRfZGVidWdnZXIoIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIGRiZ19pZCwgZGJnX3N0YXJ0ZXIgcyApCi17Ci0gICAgc3RkOjpzdHJpbmcgb2xkID0gc19pbmZvLnBfZGJnOwotCi0gICAgYXNzaWduX29wKCBzX2luZm8ucF9kYmcudmFsdWUsIGRiZ19pZCwgMCApOwotCi0gICAgaWYoICEhcyApCi0gICAgICAgIHNfaW5mby5tX2RiZ19zdGFydGVyX3JlZ1tzX2luZm8ucF9kYmddID0gczsKLQotICAgIHJldHVybiBvbGQ7Ci19Ci0KLSNlbHNlICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBkZWZhdWx0Ci0KLXN0ZDo6c3RyaW5nCi1zZXRfZGVidWdnZXIoIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nLCBkYmdfc3RhcnRlciApCi17Ci0gICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7Ci19Ci0KLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgYXR0YWNoIGRlYnVnZ2VyIHRvIHRoZSBjdXJyZW50IHByb2Nlc3MgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWJvb2wKLWF0dGFjaF9kZWJ1Z2dlciggYm9vbCBicmVha19vcl9jb250aW51ZSApCi17Ci0gICAgaWYoIHVuZGVyX2RlYnVnZ2VyKCkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1dJTjMyX0JBU0VEX0RFQlVHKSAvLyAqKioqKioqKioqKioqKioqKioqKioqKiBXSU4zMgotCi0gICAgY29uc3QgaW50IE1BWF9DTURfTElORSA9IDIwMDsKLQotICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotICAgIC8vIERlYnVnZ2VyICJyZWFkeSIgZXZlbnQKLQotICAgIFNFQ1VSSVRZX0FUVFJJQlVURVMgYXR0cjsKLSAgICBhdHRyLm5MZW5ndGggICAgICAgICAgICAgICAgPSBzaXplb2YoYXR0cik7Ci0gICAgYXR0ci5scFNlY3VyaXR5RGVzY3JpcHRvciAgID0gTlVMTDsKLSAgICBhdHRyLmJJbmhlcml0SGFuZGxlICAgICAgICAgPSB0cnVlOwotCi0gICAgLy8gbWFudWFsIHJlc2V0dGFibGUsIGluaXRpYWxseSBub24gc2lnbmFsZWQsIHVubmFtZWQgZXZlbnQsCi0gICAgLy8gdGhhdCB3aWxsIHNpZ25hbCBtZSB0aGF0IGRlYnVnZ2VyIGluaXRpYWxpemF0aW9uIGlzIGRvbmUKLSAgICBIQU5ETEUgZGJnX2luaXRfZG9uZV9ldiA9IDo6Q3JlYXRlRXZlbnQoCi0gICAgICAgICZhdHRyLCAgICAgICAgICAvLyBwb2ludGVyIHRvIHNlY3VyaXR5IGF0dHJpYnV0ZXMKLSAgICAgICAgdHJ1ZSwgICAgICAgICAgIC8vIGZsYWcgZm9yIG1hbnVhbC1yZXNldCBldmVudAotICAgICAgICBmYWxzZSwgICAgICAgICAgLy8gZmxhZyBmb3IgaW5pdGlhbCBzdGF0ZQotICAgICAgICBOVUxMICAgICAgICAgICAgLy8gcG9pbnRlciB0byBldmVudC1vYmplY3QgbmFtZQotICAgICk7Ci0KLSAgICBpZiggIWRiZ19pbml0X2RvbmVfZXYgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLSAgICAvLyBEZWJ1Z2dlciBjb21tYW5kIGxpbmUgZm9ybWF0Ci0KLSAgICBIS0VZIHJlZ19rZXk7Ci0KLSAgICBpZiggIXNfaW5mby5tX3JlZ19vcGVuX2tleSB8fCAoKnNfaW5mby5tX3JlZ19vcGVuX2tleSkoCi0gICAgICAgICAgICBIS0VZX0xPQ0FMX01BQ0hJTkUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgb2Ygb3BlbiBrZXkKLSAgICAgICAgICAgICJTb2Z0d2FyZVxcTWljcm9zb2Z0XFxXaW5kb3dzIE5UXFxDdXJyZW50VmVyc2lvblxcQWVEZWJ1ZyIsIC8vIG5hbWUgb2Ygc3Via2V5IHRvIG9wZW4KLSAgICAgICAgICAgICZyZWdfa2V5ICkgIT0gRVJST1JfU1VDQ0VTUyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZHJlc3Mgb2YgaGFuZGxlIG9mIG9wZW4ga2V5Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNoYXIgIGZvcm1hdFtNQVhfQ01EX0xJTkVdOwotICAgIERXT1JEIGZvcm1hdF9zaXplID0gTUFYX0NNRF9MSU5FOwotICAgIERXT1JEIHR5cGUgPSBSRUdfU1o7Ci0KLSAgICBpZiggIXNfaW5mby5tX3JlZ19xdWVyeV92YWx1ZSB8fCAoKnNfaW5mby5tX3JlZ19xdWVyeV92YWx1ZSkoCi0gICAgICAgICAgICByZWdfa2V5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgb2Ygb3BlbiBrZXkKLSAgICAgICAgICAgICJEZWJ1Z2dlciIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5hbWUgb2Ygc3Via2V5IHRvIHF1ZXJ5Ci0gICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNlcnZlZAotICAgICAgICAgICAgJnR5cGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgdHlwZQotICAgICAgICAgICAgKExQQllURSlmb3JtYXQsICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIGZvciByZXR1cm5lZCBzdHJpbmcKLSAgICAgICAgICAgICZmb3JtYXRfc2l6ZSApICE9IEVSUk9SX1NVQ0NFU1MgKSAgIC8vIGluOiBidWZmZXIgc2l6ZTsgb3V0OiBhY3R1YWwgc2l6ZSBvZiByZXR1cm5lZCBzdHJpbmcKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYoICFzX2luZm8ubV9yZWdfY2xvc2Vfa2V5IHx8ICgqc19pbmZvLm1fcmVnX2Nsb3NlX2tleSkoIHJlZ19rZXkgKSAhPSBFUlJPUl9TVUNDRVNTICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0gICAgLy8gRGVidWdnZXIgY29tbWFuZCBsaW5lCi0KLSAgICBjaGFyIGNtZF9saW5lW01BWF9DTURfTElORV07Ci0gICAgc3RkOjpzcHJpbnRmKCBjbWRfbGluZSwgZm9ybWF0LCA6OkdldEN1cnJlbnRQcm9jZXNzSWQoKSwgZGJnX2luaXRfZG9uZV9ldiApOwotCi0gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0gICAgLy8gRGVidWdnZXIgd2luZG93IHBhcmFtZXRlcnMKLQotICAgIFNUQVJUVVBJTkZPQSAgICBzdGFydHVwX2luZm87Ci0gICAgc3RkOjptZW1zZXQoICZzdGFydHVwX2luZm8sIDAsIHNpemVvZihzdGFydHVwX2luZm8pICk7Ci0KLSAgICBzdGFydHVwX2luZm8uY2IgICAgICAgICAgICAgPSBzaXplb2Yoc3RhcnR1cF9pbmZvKTsKLSAgICBzdGFydHVwX2luZm8uZHdGbGFncyAgICAgICAgPSBTVEFSVEZfVVNFU0hPV1dJTkRPVzsKLSAgICBzdGFydHVwX2luZm8ud1Nob3dXaW5kb3cgICAgPSBTV19TSE9XTk9STUFMOwotCi0gICAgLy8gZGVidWdnZXIgcHJvY2VzcyBzX2luZm8KLSAgICBQUk9DRVNTX0lORk9STUFUSU9OIGRlYnVnZ2VyX2luZm87Ci0KLSAgICBib29sIGNyZWF0ZWQgPSAhITo6Q3JlYXRlUHJvY2Vzc0EoCi0gICAgICAgIE5VTEwsICAgICAgICAgICAvLyBwb2ludGVyIHRvIG5hbWUgb2YgZXhlY3V0YWJsZSBtb2R1bGU7IE5VTEwgLSB1c2UgdGhlIG9uZSBpbiBjb21tYW5kIGxpbmUKLSAgICAgICAgY21kX2xpbmUsICAgICAgIC8vIHBvaW50ZXIgdG8gY29tbWFuZCBsaW5lIHN0cmluZwotICAgICAgICBOVUxMLCAgICAgICAgICAgLy8gcG9pbnRlciB0byBwcm9jZXNzIHNlY3VyaXR5IGF0dHJpYnV0ZXM7IE5VTEwgLSBkZWJ1Z2dlcidzIGhhbmRsZSBjYW4ndCBiZSBpbmhlcml0ZWQKLSAgICAgICAgTlVMTCwgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gdGhyZWFkIHNlY3VyaXR5IGF0dHJpYnV0ZXM7IE5VTEwgLSBkZWJ1Z2dlcidzIGhhbmRsZSBjYW4ndCBiZSBpbmhlcml0ZWQKLSAgICAgICAgdHJ1ZSwgICAgICAgICAgIC8vIGRlYnVnZ2VyIGluaGVyaXQgb3BlbmVkIGhhbmRsZXMKLSAgICAgICAgMCwgICAgICAgICAgICAgIC8vIHByaW9yaXR5IGZsYWdzOyAwIC0gbm9ybWFsIHByaW9yaXR5Ci0gICAgICAgIE5VTEwsICAgICAgICAgICAvLyBwb2ludGVyIHRvIG5ldyBlbnZpcm9ubWVudCBibG9jazsgTlVMTCAtIHVzZSB0aGlzIHByb2Nlc3MgZW52aXJvbm1lbnQKLSAgICAgICAgTlVMTCwgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gY3VycmVudCBkaXJlY3RvcnkgbmFtZTsgTlVMTCAtIHVzZSB0aGlzIHByb2Nlc3MgY29ycmVjdCBkaXJlY3RvcnkKLSAgICAgICAgJnN0YXJ0dXBfaW5mbywgIC8vIHBvaW50ZXIgdG8gU1RBUlRVUElORk8gdGhhdCBzcGVjaWZpZXMgbWFpbiB3aW5kb3cgYXBwZWFyYW5jZQotICAgICAgICAmZGVidWdnZXJfaW5mbyAgLy8gcG9pbnRlciB0byBQUk9DRVNTX0lORk9STUFUSU9OIHRoYXQgd2lsbCBjb250YWluIHRoZSBuZXcgcHJvY2VzcyBpZGVudGlmaWNhdGlvbgotICAgICk7Ci0KLSAgICBpZiggY3JlYXRlZCApCi0gICAgICAgIDo6V2FpdEZvclNpbmdsZU9iamVjdCggZGJnX2luaXRfZG9uZV9ldiwgSU5GSU5JVEUgKTsKLQotICAgIDo6Q2xvc2VIYW5kbGUoIGRiZ19pbml0X2RvbmVfZXYgKTsKLQotICAgIGlmKCAhY3JlYXRlZCApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmKCBicmVha19vcl9jb250aW51ZSApCi0gICAgICAgIGRlYnVnZ2VyX2JyZWFrKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9VTklYX0JBU0VEX0RFQlVHKSAvLyAqKioqKioqKioqKioqKioqKioqKioqIFVOSVgKLQotICAgIGNoYXIgaW5pdF9kb25lX2xvY2tfZm5bXSA9ICIvdG1wL2J0bF9kYmdfaW5pdF9kb25lX1hYWFhYWCI7Ci0gICAgZmRfaG9sZGVyIGluaXRfZG9uZV9sb2NrX2ZkKCA6Om1rc3RlbXAoIGluaXRfZG9uZV9sb2NrX2ZuICkgKTsKLQotICAgIGlmKCBpbml0X2RvbmVfbG9ja19mZCA9PSAtMSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7Ci0KLSAgICBpZiggY2hpbGRfcGlkID09IC0xICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYoIGNoaWxkX3BpZCAhPSAwICkgeyAvLyBwYXJlbnQgcHJvY2VzcyAtIGhlcmUgd2Ugd2lsbCBzdGFydCB0aGUgZGVidWdnZXIKLSAgICAgICAgZGJnX3N0YXJ0dXBfaW5mbyBkc2k7Ci0gICAgCi0gICAgICAgIHByb2Nlc3NfaW5mbyBwaSggY2hpbGRfcGlkICk7Ci0gICAgICAgIGlmKCBwaS5iaW5hcnlfcGF0aCgpLmlzX2VtcHR5KCkgKQotICAgICAgICAgICAgOjpleGl0KCAtMSApOwotCi0gICAgICAgIGRzaS5waWQgICAgICAgICAgICAgICAgID0gY2hpbGRfcGlkOwotICAgICAgICBkc2kuYnJlYWtfb3JfY29udGludWUgICA9IGJyZWFrX29yX2NvbnRpbnVlOwotICAgICAgICBkc2kuYmluYXJ5X3BhdGggICAgICAgICA9IHBpLmJpbmFyeV9wYXRoKCk7Ci0gICAgICAgIGRzaS5kaXNwbGF5ICAgICAgICAgICAgID0gOjpnZXRlbnYoICJESVNQTEFZIiApOwotICAgICAgICBkc2kuaW5pdF9kb25lX2xvY2sgICAgICA9IGluaXRfZG9uZV9sb2NrX2ZuOwotICAgICAgICAKLSAgICAgICAgZGJnX3N0YXJ0ZXIgc3RhcnRlciA9IHNfaW5mby5tX2RiZ19zdGFydGVyX3JlZ1tzX2luZm8ucF9kYmddOwotICAgICAgICBpZiggISFzdGFydGVyICkKLSAgICAgICAgICAgIHN0YXJ0ZXIoIGRzaSApOwotCi0gICAgICAgIDo6cGVycm9yKCAiQm9vc3QuVGVzdCBleGVjdXRpb24gbW9uaXRvciBmYWlsZWQgdG8gc3RhcnQgYSBkZWJ1Z2dlcjoiICk7Ci0KLSAgICAgICAgOjpleGl0KCAtMSApOwotICAgIH0KLQotICAgIC8vIGNoaWxkIHByb2Nlc3MgLSBoZXJlIHdlIHdpbGwgY29udGludWUgb3VyIHRlc3QgbW9kdWxlIGV4ZWN1dGlvbiA7IC8vICEhID8/IHNob3VsZCBpdCBiZSB2aWNlIHZlcnNhCi0KLSAgICB3aGlsZSggOjphY2Nlc3MoIGluaXRfZG9uZV9sb2NrX2ZuLCBGX09LICkgPT0gMCApIHsKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgdG8gPSB7IDAsIDEwMCB9OwotCi0gICAgICAgIDo6c2VsZWN0KCAwLCAwLCAwLCAwLCAmdG8gKTsKLSAgICB9Ci0KLS8vICAgIGNoYXIgZHVtbXk7Ci0vLyAgICB3aGlsZSggOjpyZWFkKCBpbml0X2RvbmVfbG9ja19mZCwgJmR1bW15LCBzaXplb2YoY2hhcikgKSA9PSAwICk7Ci0KLSAgICBpZiggYnJlYWtfb3JfY29udGludWUgKQotICAgICAgICBkZWJ1Z2dlcl9icmVhaygpOwotCi0gICAgcmV0dXJuIHRydWU7Ci0KLSNlbHNlIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBkZWZhdWx0Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci0KLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICBzd2l0Y2ggb24vb2ZmIGRldGVjdCBtZW1vcnkgbGVha3MgZmVhdHVyZSAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLWRldGVjdF9tZW1vcnlfbGVha3MoIGJvb2wgb25fb2ZmICkKLXsKLSAgICB1bml0X3Rlc3Q6OnV0X2RldGFpbDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKCBvbl9vZmYgKTsKLQotI2lmZGVmIE5ETkJPT1NUX01TX0NSVF9CQVNFRF9ERUJVRwotICAgIGludCBmbGFncyA9IF9DcnRTZXREYmdGbGFnKCBfQ1JUREJHX1JFUE9SVF9GTEFHICk7Ci0KLSAgICBpZiggIW9uX29mZiApCi0gICAgICAgIGZsYWdzICY9IH5fQ1JUREJHX0xFQUtfQ0hFQ0tfREY7Ci0gICAgZWxzZSAgewotICAgICAgICBmbGFncyB8PSBfQ1JUREJHX0xFQUtfQ0hFQ0tfREY7Ci0gICAgICAgIF9DcnRTZXRSZXBvcnRNb2RlKF9DUlRfV0FSTiwgX0NSVERCR19NT0RFX0ZJTEUpOwotICAgICAgICBfQ3J0U2V0UmVwb3J0RmlsZShfQ1JUX1dBUk4sIF9DUlREQkdfRklMRV9TVERPVVQpOwotICAgIH0KLQotICAgIF9DcnRTZXREYmdGbGFnICggZmxhZ3MgKTsKLSNlbmRpZiAvLyBORE5CT09TVF9NU19DUlRfQkFTRURfREVCVUcKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgY2F1c2UgcHJvZ3JhbSB0byBicmVhayBleGVjdXRpb24gaW4gICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgZGVidWdnZXIgYXQgc3BlY2lmaWMgYWxsb2NhdGlvbiBwb2ludCAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotYnJlYWtfbWVtb3J5X2FsbG9jKCBsb25nIG1lbV9hbGxvY19vcmRlcl9udW0gKQotewotICAgIHVuaXRfdGVzdDo6dXRfZGV0YWlsOjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoIG1lbV9hbGxvY19vcmRlcl9udW0gKTsKLQotI2lmZGVmIE5ETkJPT1NUX01TX0NSVF9CQVNFRF9ERUJVRwotICAgIF9DcnRTZXRCcmVha0FsbG9jKCBtZW1fYWxsb2Nfb3JkZXJfbnVtICk7Ci0jZW5kaWYgLy8gTkROQk9PU1RfTVNfQ1JUX0JBU0VEX0RFQlVHCi19Ci0KLX0gLy8gbmFtZXNwYWNlIGRlYnVnCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9ERUJVR19BUElfSVBQXzExMjAwNkdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9leGNlcHRpb25fc2FmZXR5LmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2V4Y2VwdGlvbl9zYWZldHkuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzM2Mzg1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2V4Y2VwdGlvbl9zYWZldHkuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBGYWNpbGl0aWVzIHRvIHBlcmZvcm0gZXhjZXB0aW9uIHNhZmV0eSB0ZXN0cwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fU0FGRVRZX0lQUF8xMTIwMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fU0FGRVRZX0lQUF8xMTIwMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLSNpZiBORE5CT09TVF9URVNUX1NVUFBPUlRfSU5URVJBQ1RJT05fVEVTVElORwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvdG9rZW5faXRlcmF0b3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9pbnRlcmFjdGlvbl9iYXNlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGVidWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2xleGljYWxfY2FzdC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxpb21hbmlwPgotI2luY2x1ZGUgPGNjdHlwZT4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi11c2luZyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6dW5pdF90ZXN0OwotIAotbmFtZXNwYWNlIGl0ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGV4ZWN1dGlvbl9wYXRoX3BvaW50ICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1lbnVtIGV4ZWNfcGF0aF9wb2ludF90eXBlIHsgRVBQX1NDT1BFLCBFUFBfRVhDRVBULCBFUFBfREVDSVNJT04sIEVQUF9BTExPQyB9OwotCi1zdHJ1Y3QgZXhlY3V0aW9uX3BhdGhfcG9pbnQgewotICAgIGV4ZWN1dGlvbl9wYXRoX3BvaW50KCBleGVjX3BhdGhfcG9pbnRfdHlwZSB0LCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0gKQotICAgIDogbV90eXBlKCB0ICkKLSAgICAsIG1fZmlsZV9uYW1lKCBmaWxlICkKLSAgICAsIG1fbGluZV9udW0oIGxpbmVfbnVtICkKLSAgICB7fQotCi0gICAgZXhlY19wYXRoX3BvaW50X3R5cGUgICAgbV90eXBlOwotICAgIGNvbnN0X3N0cmluZyAgICAgICAgICAgICBtX2ZpbGVfbmFtZTsKLSAgICBzdGQ6OnNpemVfdCAgICAgICAgICAgICBtX2xpbmVfbnVtOwotCi0gICAgLy8gRXhlY3V0aW9uIHBhdGggcG9pbnQgc3BlY2lmaWMKLSAgICBzdHJ1Y3QgZGVjaXNpb25fZGF0YSB7Ci0gICAgICAgIGJvb2wgICAgICAgICAgICB2YWx1ZTsKLSAgICAgICAgdW5zaWduZWQgICAgICAgIGZvcmNlZF9leGNlcHRpb25fcG9pbnQ7Ci0gICAgfTsKLSAgICBzdHJ1Y3Qgc2NvcGVfZGF0YSB7Ci0gICAgICAgIHVuc2lnbmVkICAgICAgICBzaXplOwotICAgICAgICBjaGFyIGNvbnN0KiAgICAgbmFtZTsKLSAgICB9OwotICAgIHN0cnVjdCBleGNlcHRfZGF0YSB7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICBkZXNjcmlwdGlvbjsKLSAgICB9OwotICAgIHN0cnVjdCBhbGxvY19kYXRhIHsKLSAgICAgICAgdm9pZCogICAgICAgICAgIHB0cjsKLSAgICAgICAgc3RkOjpzaXplX3QgICAgIHNpemU7Ci0gICAgfTsKLQotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IGRlY2lzaW9uX2RhdGEgICAgbV9kZWNpc2lvbjsKLSAgICAgICAgc3RydWN0IHNjb3BlX2RhdGEgICAgICAgbV9zY29wZTsKLSAgICAgICAgc3RydWN0IGV4Y2VwdF9kYXRhICAgICAgbV9leGNlcHQ7Ci0gICAgICAgIHN0cnVjdCBhbGxvY19kYXRhICAgICAgIG1fYWxsb2M7Ci0gICAgfTsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgZXhjZXB0aW9uIHNhZmV0eSB0ZXN0IGltcGxlbWVudGF0aW9uICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IGV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyIDogaXRlc3Q6Om1hbmFnZXIsIHRlc3Rfb2JzZXJ2ZXIgewotICAgIC8vIGhlbHBlcnMgdHlwZXMKLSAgICBzdHJ1Y3QgdW5pcXVlX2V4Y2VwdGlvbiB7fTsKLQotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgICAgICAgICBleGNlcHRpb25fc2FmZXR5X3Rlc3RlciggY29uc3Rfc3RyaW5nIHRlc3RfbmFtZSApOwotICAgIH5leGNlcHRpb25fc2FmZXR5X3Rlc3RlcigpOwotCi0gICAgLy8gY2hlY2sgbGFzdCBydW4gYW5kIHByZXBhcmUgZm9yIG5leHQKLSAgICBib29sICAgICAgICAgICAgICAgIG5leHRfZXhlY3V0aW9uX3BhdGgoKTsKLQotICAgIC8vIG1lbW9yeSB0cmFja2luZwotCi0gICAgLy8gbWFuYWdlciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGV4Y2VwdGlvbl9wb2ludCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCBjb25zdF9zdHJpbmcgZGVzY3JpcHRpb24gKTsKLSAgICB2aXJ0dWFsIGJvb2wgICAgICAgIGRlY2lzaW9uX3BvaW50KCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0gKTsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkICAgIGVudGVyX3Njb3BlKCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBzY29wZV9uYW1lICk7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBsZWF2ZV9zY29wZSggdW5zaWduZWQgZW50ZXJfc2NvcGVfcG9pbnQgKTsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGFsbG9jYXRlZCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCB2b2lkKiBwLCBzdGQ6OnNpemVfdCBzICk7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBmcmVlZCggdm9pZCogcCApOwotCi0gICAgLy8gdGVzdCBvYnNlcnZlciBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGFzc2VydGlvbl9yZXN1bHQoIGJvb2wgcGFzc2VkICk7Ci0gICAgdmlydHVhbCBpbnQgICAgICAgICBwcmlvcml0eSgpIHsgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCkoKTsgfSAvLyB3ZSB3YW50IHRoaXMgb2JzZXJ2ZXIgdG8gcnVuIHRoZSBsYXN0Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBmYWlsdXJlX3BvaW50KCk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICByZXBvcnRfZXJyb3IoKTsKLQotICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8ZXhlY3V0aW9uX3BhdGhfcG9pbnQ+ICAgZXhlY19wYXRoOwotICAgIHR5cGVkZWYgc3RkOjptYXA8dm9pZCosdW5zaWduZWQ+ICAgICAgICAgICAgcmVnaXN0cnk7Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBib29sICAgICAgICBtX2ludGVybmFsX2FjdGl2aXR5OwotICAgIAotICAgIHVuc2lnbmVkICAgIG1fZXhjZXB0aW9uX3BvaW50X2NvdW50ZXI7Ci0gICAgdW5zaWduZWQgICAgbV9mb3JjZWRfZXhjZXB0aW9uX3BvaW50OwotCi0gICAgdW5zaWduZWQgICAgbV9leGVjX3BhdGhfcG9pbnQ7Ci0gICAgZXhlY19wYXRoICAgbV9leGVjdXRpb25fcGF0aDsKLQotICAgIHVuc2lnbmVkICAgIG1fZXhlY19wYXRoX2NvdW50ZXI7Ci0gICAgdW5zaWduZWQgICAgbV9icmVha19leGVjX3BhdGg7Ci0gICAgCi0gICAgYm9vbCAgICAgICAgbV9pbnZhaXJhbnRfZmFpbGVkOwotICAgIHJlZ2lzdHJ5ICAgIG1fbWVtb3J5X2luX3VzZTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCBhY3Rpdml0eV9ndWFyZCB7Ci0gICAgYm9vbCYgbV92OwotCi0gICAgYWN0aXZpdHlfZ3VhcmQoIGJvb2wmIHYgKSA6IG1fdiggdiApICAgIHsgbV92ID0gdHJ1ZTsgfQotICAgIH5hY3Rpdml0eV9ndWFyZCgpICAgICAgICAgICAgICAgICAgICAgICB7IG1fdiA9IGZhbHNlOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6ZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXIoIGNvbnN0X3N0cmluZyB0ZXN0X25hbWUgKQotOiBtX2ludGVybmFsX2FjdGl2aXR5KCB0cnVlICkKLSwgbV9leGNlcHRpb25fcG9pbnRfY291bnRlciggMCApCi0sIG1fZm9yY2VkX2V4Y2VwdGlvbl9wb2ludCggMSApCi0sIG1fZXhlY19wYXRoX3BvaW50KCAwICkKLSwgbV9leGVjX3BhdGhfY291bnRlciggMSApCi0sIG1fYnJlYWtfZXhlY19wYXRoKCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLTEpICkKLSwgbV9pbnZhaXJhbnRfZmFpbGVkKCBmYWxzZSApCi17Ci0gICAgZnJhbWV3b3JrOjpyZWdpc3Rlcl9vYnNlcnZlciggKnRoaXMgKTsKLQotICAgIGlmKCAhcnVudGltZV9jb25maWc6OmJyZWFrX2V4ZWNfcGF0aCgpLmlzX2VtcHR5KCkgKSB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSB1bml0X3Rlc3Q7Ci0gICAgICAgIAotICAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3IgdGl0KCBydW50aW1lX2NvbmZpZzo6YnJlYWtfZXhlY19wYXRoKCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gIjoiLGtlcHRfZGVsaW1ldGVycyA9ICIgIikgKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0X3N0cmluZyB0ZXN0X3RvX2JyZWFrID0gKnRpdDsKLSAgICAgICAgCi0gICAgICAgIGlmKCB0ZXN0X3RvX2JyZWFrID09IHRlc3RfbmFtZSApIHsKLSAgICAgICAgICAgICsrdGl0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2JyZWFrX2V4ZWNfcGF0aCA9IGxleGljYWxfY2FzdDx1bnNpZ25lZD4oICp0aXQgKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBtX2ludGVybmFsX2FjdGl2aXR5ID0gZmFsc2U7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjp+ZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXIoKQotewotICAgIG1faW50ZXJuYWxfYWN0aXZpdHkgPSB0cnVlOwotICAgIAotICAgIGZyYW1ld29yazo6ZGVyZWdpc3Rlcl9vYnNlcnZlciggKnRoaXMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6Om5leHRfZXhlY3V0aW9uX3BhdGgoKQotewotICAgIGFjdGl2aXR5X2d1YXJkIGFnKCBtX2ludGVybmFsX2FjdGl2aXR5ICk7Ci0KLSAgICAvLyBjaGVjayBtZW1vcnkgdXNhZ2UKLSAgICBpZiggbV9leGVjdXRpb25fcGF0aC5zaXplKCkgPiAwICkgewotICAgICAgICBib29sIGVycm9yc19kZXRlY3RlZCA9IG1faW52YWlyYW50X2ZhaWxlZCB8fCAobV9tZW1vcnlfaW5fdXNlLnNpemUoKSAhPSAwKTsKLSAgICAgICAgZnJhbWV3b3JrOjphc3NlcnRpb25fcmVzdWx0KCAhZXJyb3JzX2RldGVjdGVkICk7Ci0KLSAgICAgICAgaWYoIGVycm9yc19kZXRlY3RlZCApCi0gICAgICAgICAgICByZXBvcnRfZXJyb3IoKTsKLQotICAgICAgICBtX21lbW9yeV9pbl91c2UuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBtX2V4ZWNfcGF0aF9wb2ludCAgICAgICAgICAgPSAwOwotICAgIG1fZXhjZXB0aW9uX3BvaW50X2NvdW50ZXIgICA9IDA7Ci0gICAgbV9pbnZhaXJhbnRfZmFpbGVkICAgICAgICAgID0gZmFsc2U7Ci0gICAgKyttX2V4ZWNfcGF0aF9jb3VudGVyOwotCi0gICAgd2hpbGUoIG1fZXhlY3V0aW9uX3BhdGguc2l6ZSgpID4gMCApIHsKLSAgICAgICAgc3dpdGNoKCBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX3R5cGUgKSB7Ci0gICAgICAgIGNhc2UgRVBQX1NDT1BFOgotICAgICAgICBjYXNlIEVQUF9BTExPQzoKLSAgICAgICAgICAgIG1fZXhlY3V0aW9uX3BhdGgucG9wX2JhY2soKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRVBQX0RFQ0lTSU9OOgotICAgICAgICAgICAgaWYoICFtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2RlY2lzaW9uLnZhbHVlICkgewotICAgICAgICAgICAgICAgIG1fZXhlY3V0aW9uX3BhdGgucG9wX2JhY2soKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aC5iYWNrKCkubV9kZWNpc2lvbi52YWx1ZSA9IGZhbHNlOwotICAgICAgICAgICAgbV9mb3JjZWRfZXhjZXB0aW9uX3BvaW50ID0gbV9leGVjdXRpb25fcGF0aC5iYWNrKCkubV9kZWNpc2lvbi5mb3JjZWRfZXhjZXB0aW9uX3BvaW50OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgY2FzZSBFUFBfRVhDRVBUOgotICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wb3BfYmFjaygpOwotICAgICAgICAgICAgKyttX2ZvcmNlZF9leGNlcHRpb25fcG9pbnQ7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIE5ETkJPT1NUX1RFU1RfTUVTU0FHRSggIlRvdGFsIHRlc3RlZCAiIDw8IC0tbV9leGVjX3BhdGhfY291bnRlciA8PCAiIGV4ZWN1dGlvbiBwYXRoIiApOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6ZXhjZXB0aW9uX3BvaW50KCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBkZXNjcmlwdGlvbiApCi17Ci0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIGlmKCArK21fZXhjZXB0aW9uX3BvaW50X2NvdW50ZXIgPT0gbV9mb3JjZWRfZXhjZXB0aW9uX3BvaW50ICkgewotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLnB1c2hfYmFjaygKLSAgICAgICAgICAgIGV4ZWN1dGlvbl9wYXRoX3BvaW50KCBFUFBfRVhDRVBULCBmaWxlLCBsaW5lX251bSApICk7Ci0KLSAgICAgICAgbV9leGVjdXRpb25fcGF0aC5iYWNrKCkubV9leGNlcHQuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5iZWdpbigpOwotCi0gICAgICAgICsrbV9leGVjX3BhdGhfcG9pbnQ7Ci0KLSAgICAgICAgZmFpbHVyZV9wb2ludCgpOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmRlY2lzaW9uX3BvaW50KCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0gKQotewotICAgIGFjdGl2aXR5X2d1YXJkIGFnKCBtX2ludGVybmFsX2FjdGl2aXR5ICk7Ci0KLSAgICBpZiggbV9leGVjX3BhdGhfcG9pbnQgPCBtX2V4ZWN1dGlvbl9wYXRoLnNpemUoKSApIHsKLSAgICAgICAgTkROQk9PU1RfUkVRVUlSRV9NRVNTQUdFKCBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX3R5cGUgPT0gRVBQX0RFQ0lTSU9OICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9maWxlX25hbWUgPT0gZmlsZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fbGluZV9udW0gPT0gbGluZV9udW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHVuZGVyIHRlc3QgZXhpYml0IG5vbi1kZXRlcm1pbmlzdGljIGJlaGF2aW9yIiApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wdXNoX2JhY2soCi0gICAgICAgICAgICBleGVjdXRpb25fcGF0aF9wb2ludCggRVBQX0RFQ0lTSU9OLCBmaWxlLCBsaW5lX251bSApICk7Ci0KLSAgICAgICAgbV9leGVjdXRpb25fcGF0aC5iYWNrKCkubV9kZWNpc2lvbi52YWx1ZSA9IHRydWU7Ci0gICAgICAgIG1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fZGVjaXNpb24uZm9yY2VkX2V4Y2VwdGlvbl9wb2ludCA9IG1fZm9yY2VkX2V4Y2VwdGlvbl9wb2ludDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludCsrXS5tX2RlY2lzaW9uLnZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi11bnNpZ25lZAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmVudGVyX3Njb3BlKCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBzY29wZV9uYW1lICkKLXsKLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgaWYoIG1fZXhlY19wYXRoX3BvaW50IDwgbV9leGVjdXRpb25fcGF0aC5zaXplKCkgKSB7Ci0gICAgICAgIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV90eXBlID09IEVQUF9TQ09QRSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fZmlsZV9uYW1lID09IGZpbGUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX2xpbmVfbnVtID09IGxpbmVfbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB1bmRlciB0ZXN0IGV4aWJpdCBub24tZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciIgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fZXhlY3V0aW9uX3BhdGgucHVzaF9iYWNrKAotICAgICAgICAgICAgZXhlY3V0aW9uX3BhdGhfcG9pbnQoIEVQUF9TQ09QRSwgZmlsZSwgbGluZV9udW0gKSApOwotICAgIH0KLQotICAgIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fc2NvcGUuc2l6ZSA9IDA7Ci0gICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9zY29wZS5uYW1lID0gc2NvcGVfbmFtZS5iZWdpbigpOwotCi0gICAgcmV0dXJuIG1fZXhlY19wYXRoX3BvaW50Kys7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpsZWF2ZV9zY29wZSggdW5zaWduZWQgZW50ZXJfc2NvcGVfcG9pbnQgKQotewotICAgIGFjdGl2aXR5X2d1YXJkIGFnKCBtX2ludGVybmFsX2FjdGl2aXR5ICk7Ci0KLSAgICBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoIG1fZXhlY3V0aW9uX3BhdGhbZW50ZXJfc2NvcGVfcG9pbnRdLm1fdHlwZSA9PSBFUFBfU0NPUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdW5kZXIgdGVzdCBleGliaXQgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3IiICk7Ci0KLSAgICBtX2V4ZWN1dGlvbl9wYXRoW2VudGVyX3Njb3BlX3BvaW50XS5tX3Njb3BlLnNpemUgPSBtX2V4ZWNfcGF0aF9wb2ludCAtIGVudGVyX3Njb3BlX3BvaW50OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6YWxsb2NhdGVkKCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIHZvaWQqIHAsIHN0ZDo6c2l6ZV90IHMgKQotewotICAgIGlmKCBtX2ludGVybmFsX2FjdGl2aXR5ICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIGlmKCBtX2V4ZWNfcGF0aF9wb2ludCA8IG1fZXhlY3V0aW9uX3BhdGguc2l6ZSgpICkKLSAgICAgICAgTkROQk9PU1RfUkVRVUlSRV9NRVNTQUdFKCBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX3R5cGUgPT0gRVBQX0FMTE9DLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB1bmRlciB0ZXN0IGV4aWJpdCBub24tZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciIgKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZXhlY3V0aW9uX3BhdGgucHVzaF9iYWNrKAotICAgICAgICAgICAgZXhlY3V0aW9uX3BhdGhfcG9pbnQoIEVQUF9BTExPQywgZmlsZSwgbGluZV9udW0gKSApOwotCi0gICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9hbGxvYy5wdHIgID0gcDsKLSAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX2FsbG9jLnNpemUgPSBzOwotCi0gICAgbV9tZW1vcnlfaW5fdXNlLmluc2VydCggc3RkOjptYWtlX3BhaXIoIHAsIG1fZXhlY19wYXRoX3BvaW50KysgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6ZnJlZWQoIHZvaWQqIHAgKQotewotICAgIGlmKCBtX2ludGVybmFsX2FjdGl2aXR5ICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIHJlZ2lzdHJ5OjppdGVyYXRvciBpdCA9IG1fbWVtb3J5X2luX3VzZS5maW5kKCBwICk7Ci0gICAgaWYoIGl0ICE9IG1fbWVtb3J5X2luX3VzZS5lbmQoKSApIHsKLSAgICAgICAgbV9leGVjdXRpb25fcGF0aFtpdC0+c2Vjb25kXS5tX2FsbG9jLnB0ciA9IDA7Ci0gICAgICAgIG1fbWVtb3J5X2luX3VzZS5lcmFzZSggaXQgKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjphc3NlcnRpb25fcmVzdWx0KCBib29sIHBhc3NlZCApCi17Ci0gICAgaWYoICFtX2ludGVybmFsX2FjdGl2aXR5ICYmICFwYXNzZWQgKSB7Ci0gICAgICAgIG1faW52YWlyYW50X2ZhaWxlZCA9IHRydWU7Ci0KLSAgICAgICAgZmFpbHVyZV9wb2ludCgpOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmZhaWx1cmVfcG9pbnQoKQotewotICAgIGlmKCBtX2V4ZWNfcGF0aF9jb3VudGVyID09IG1fYnJlYWtfZXhlY19wYXRoICkKLSAgICAgICAgZGVidWc6OmRlYnVnZ2VyX2JyZWFrKCk7Ci0gICAgCi0gICAgdGhyb3cgdW5pcXVlX2V4Y2VwdGlvbigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotICAgIAotbmFtZXNwYWNlIHsKLQotaW5saW5lIHZvaWQKLWZvcm1hdF9sb2NhdGlvbiggd3JhcF9zdHJpbmdzdHJlYW0mIGZvcm1hdHRlciwgZXhlY3V0aW9uX3BhdGhfcG9pbnQgY29uc3QmIC8qcCovLCB1bnNpZ25lZCBpbmRlbnQgKQotewotICAgIGlmKCBpbmRlbnQgKQotICAgICAgICBmb3JtYXR0ZXIgPDwgc3RkOjpsZWZ0IDw8IHN0ZDo6c2V0dyggaW5kZW50ICkgPDwgIiI7Ci0KLS8vICEhID8/IG9wdGlvbmFsICAgaWYoIHAubV9maWxlX25hbWUgKQotLy8gICAgICAgIGZvcm1hdHRlciA8PCBwLm1fZmlsZV9uYW1lIDw8ICcoJyA8PCBwLm1fbGluZV9udW0gPDwgIik6ICI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEV4ZWNQYXRoSXQ+Ci1pbmxpbmUgdm9pZAotZm9ybWF0X2V4ZWN1dGlvbl9wYXRoKCB3cmFwX3N0cmluZ3N0cmVhbSYgZm9ybWF0dGVyLCBFeGVjUGF0aEl0IGl0LCBFeGVjUGF0aEl0IGVuZCwgdW5zaWduZWQgaW5kZW50ID0gMCApCi17Ci0gICAgd2hpbGUoIGl0ICE9IGVuZCApIHsKLSAgICAgICAgc3dpdGNoKCBpdC0+bV90eXBlICkgewotICAgICAgICBjYXNlIEVQUF9TQ09QRToKLSAgICAgICAgICAgIGZvcm1hdF9sb2NhdGlvbiggZm9ybWF0dGVyLCAqaXQsIGluZGVudCApOwotICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICI+IFwiIiA8PCBpdC0+bV9zY29wZS5uYW1lIDw8ICJcIlxuIjsKLSAgICAgICAgICAgIGZvcm1hdF9leGVjdXRpb25fcGF0aCggZm9ybWF0dGVyLCBpdCsxLCBpdCArIGl0LT5tX3Njb3BlLnNpemUsIGluZGVudCArIDIgKTsKLSAgICAgICAgICAgIGZvcm1hdF9sb2NhdGlvbiggZm9ybWF0dGVyLCAqaXQsIGluZGVudCApOwotICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICI8IFwiIiA8PCBpdC0+bV9zY29wZS5uYW1lIDw8ICJcIlxuIjsKLSAgICAgICAgICAgIGl0ICs9IGl0LT5tX3Njb3BlLnNpemU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEVQUF9ERUNJU0lPTjoKLSAgICAgICAgICAgIGZvcm1hdF9sb2NhdGlvbiggZm9ybWF0dGVyLCAqaXQsIGluZGVudCApOwotICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICJEZWNpc2lvbiBtYWRlIGFzICIgPDwgc3RkOjpib29sYWxwaGEgPDwgaXQtPm1fZGVjaXNpb24udmFsdWUgPDwgJ1xuJzsKLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEVQUF9FWENFUFQ6Ci0gICAgICAgICAgICBmb3JtYXRfbG9jYXRpb24oIGZvcm1hdHRlciwgKml0LCBpbmRlbnQgKTsKLSAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiRm9yY2VkIGZhaWx1cmUiOwotICAgICAgICAgICAgaWYoIGl0LT5tX2V4Y2VwdC5kZXNjcmlwdGlvbiApCi0gICAgICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICI6ICIgPDwgaXQtPm1fZXhjZXB0LmRlc2NyaXB0aW9uOwotICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICJcbiI7Ci0gICAgICAgICAgICArK2l0OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFUFBfQUxMT0M6Ci0gICAgICAgICAgICBpZiggaXQtPm1fYWxsb2MucHRyICkgewotICAgICAgICAgICAgICAgIGZvcm1hdF9sb2NhdGlvbiggZm9ybWF0dGVyLCAqaXQsIGluZGVudCApOwotICAgICAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiQWxsb2NhdGVkIG1lbW9yeSBibG9jayAweCIgPDwgc3RkOjp1cHBlcmNhc2UgPDwgaXQtPm1fYWxsb2MucHRyIAotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCAiIDw8IGl0LT5tX2FsbG9jLnNpemUgPDwgIiBieXRlcyBsb25nOiA8IjsKLQotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGk7Ci0gICAgICAgICAgICAgICAgZm9yKCBpID0gMDsgaSA8IHN0ZDo6bWluPHN0ZDo6c2l6ZV90PiggaXQtPm1fYWxsb2Muc2l6ZSwgOCApOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihpdC0+bV9hbGxvYy5wdHIpW2ldOwotICAgICAgICAgICAgICAgICAgICBpZiggKHN0ZDo6aXNwcmludCkoIGMgKSApCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPDwgYzsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICcuJzsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIj4gIjsKLQotICAgICAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBzdGQ6Om1pbjxzdGQ6OnNpemVfdD4oIGl0LT5tX2FsbG9jLnNpemUsIDggKTsgaSsrICkgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGl0LT5tX2FsbG9jLnB0cilbaV07Ci0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlciA8PCBzdGQ6OmhleCA8PCBzdGQ6OnVwcGVyY2FzZSA8PCBjIDw8ICcgJzsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIlxuIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotdm9pZAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OnJlcG9ydF9lcnJvcigpCi17Ci0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2ZpbGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aC5iYWNrKCkubV9saW5lX251bSApCi0gICAgICAgICAgICAgICAgICA8PCBsb2dfYWxsX2Vycm9yczsKLQotICAgIHdyYXBfc3RyaW5nc3RyZWFtIGZvcm1hdHRlcjsKLQotICAgIGlmKCBtX2ludmFpcmFudF9mYWlsZWQgKQotICAgICAgICBmb3JtYXR0ZXIgPDwgIkZhaWxlZCBpbnZhcmlhbnQiOwotCi0gICAgaWYoIG1fbWVtb3J5X2luX3VzZS5zaXplKCkgIT0gMCApIHsKLSAgICAgICAgaWYoIG1faW52YWlyYW50X2ZhaWxlZCApCi0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIiBhbmQgIjsKLQotICAgICAgICBmb3JtYXR0ZXIgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtX21lbW9yeV9pbl91c2Uuc2l6ZSgpKSA8PCAiIG1lbW9yeSBsZWFrIjsKLSAgICAgICAgaWYoIG1fbWVtb3J5X2luX3VzZS5zaXplKCkgPiAxICkKLSAgICAgICAgICAgIGZvcm1hdHRlciA8PCAncyc7Ci0gICAgfQotICAgIGZvcm1hdHRlciA8PCAiIGRldGVjdGVkIGluIHRoZSBleGVjdXRpb24gcGF0aCAiIDw8IG1fZXhlY19wYXRoX2NvdW50ZXIgPDwgIjpcbiI7Ci0KLSAgICBmb3JtYXRfZXhlY3V0aW9uX3BhdGgoIGZvcm1hdHRlciwgbV9leGVjdXRpb25fcGF0aC5iZWdpbigpLCBtX2V4ZWN1dGlvbl9wYXRoLmVuZCgpICk7Ci0KLSAgICB1bml0X3Rlc3RfbG9nIDw8IGNvbnN0X3N0cmluZyggZm9ybWF0dGVyLnN0cigpICkgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgZXhjZXB0aW9uIHNhZmV0eSB0ZXN0ICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9ERUNMCi1leGNlcHRpb25fc2FmZXR5KCBjYWxsYmFjazA8PiBjb25zdCYgRiwgY29uc3Rfc3RyaW5nIHRlc3RfbmFtZSApCi17Ci0gICAgZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXIgZXN0KCB0ZXN0X25hbWUgKTsKLQotICAgIGRvIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIEYoKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCggZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OnVuaXF1ZV9leGNlcHRpb24gY29uc3QmICkge30KLQotICAgIH0gd2hpbGUoIGVzdC5uZXh0X2V4ZWN1dGlvbl9wYXRoKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAgLy8gbmFtZXNwYWNlIGl0ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gbm9uLWFuY2llbnQgY29tcGlsZXIKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfRVhFQ1VUSU9OX1NBRkVUWV9JUFBfMTEyMDA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9leGVjdXRpb25fbW9uaXRvci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9leGVjdXRpb25fbW9uaXRvci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNTk5M2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZXhlY3V0aW9uX21vbml0b3IuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyBhbmQgVWxscmljaCBLb2V0aGUgMTk5NS0yMDAxLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHByb3ZpZGVzIGV4ZWN1dGlvbiBtb25pdG9yIGltcGxlbWVudGF0aW9uIGZvciBhbGwgc3VwcG9ydGVkCi0vLyAgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBNaWNyb3NvZnQgc3RydWN0dXJlZCBleGNlcHRpb24gYmFzZWQsIHVuaXggc2lnbmFscwotLy8gIGJhc2VkIGFuZCBzcGVjaWFsIHdvcmthcm91bmRzIGZvciBib3JsYW5kCi0vLwotLy8gIE5vdGUgdGhhdCB3aGVuIHRlc3RpbmcgcmVxdWlyZW1lbnRzIG9yIHVzZXIgd2lzaGVzIHByZWNsdWRlIHVzZSBvZiB0aGlzCi0vLyAgZmlsZSBhcyBhIHNlcGFyYXRlIGNvbXBpbGF0aW9uIHVuaXQsIGl0IG1heSBiZSBpbmNsdWRlZCBhcyBhIGhlYWRlciBmaWxlLgotLy8KLS8vICBIZWFkZXIgZGVwZW5kZW5jaWVzIGFyZSBkZWxpYmVyYXRlbHkgcmVzdHJpY3RlZCB0byByZWR1Y2UgY291cGxpbmcgdG8gb3RoZXIKLS8vICBib29zdCBsaWJyYXJpZXMuCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0VYRUNVVElPTl9NT05JVE9SX0lQUF8wMTIyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fTU9OSVRPUl9JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGVidWcuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRsaWIuaHBwPiAgICAvLyBmb3IgZXhpdCBjb2RlcwotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAvLyBmb3Igd29ya2Fyb3VuZHMKLSNpbmNsdWRlIDxuZG5ib29zdC9leGNlcHRpb24vZ2V0X2Vycm9yX2luZm8uaHBwPiAvLyBmb3IgZ2V0X2Vycm9yX2luZm8KLSNpbmNsdWRlIDxuZG5ib29zdC9leGNlcHRpb24vY3VycmVudF9leGNlcHRpb25fY2FzdC5ocHA+IC8vIGZvciBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHN0cmluZz4gICAgICAgICAgICAgICAvLyBmb3Igc3RkOjpzdHJpbmcKLSNpbmNsdWRlIDxuZXc+ICAgICAgICAgICAgICAgICAgLy8gZm9yIHN0ZDo6YmFkX2FsbG9jCi0jaW5jbHVkZSA8dHlwZWluZm8+ICAgICAgICAgICAgIC8vIGZvciBzdGQ6OmJhZF9jYXN0LCBzdGQ6OmJhZF90eXBlaWQKLSNpbmNsdWRlIDxleGNlcHRpb24+ICAgICAgICAgICAgLy8gZm9yIHN0ZDo6ZXhjZXB0aW9uLCBzdGQ6OmJhZF9leGNlcHRpb24KLSNpbmNsdWRlIDxzdGRleGNlcHQ+ICAgICAgICAgICAgLy8gZm9yIHN0ZCBleGNlcHRpb24gaGllcmFyY2h5Ci0jaW5jbHVkZSA8Y3N0cmluZz4gICAgICAgICAgICAgIC8vIGZvciBDIHN0cmluZyBBUEkKLSNpbmNsdWRlIDxjYXNzZXJ0PiAgICAgICAgICAgICAgLy8gZm9yIGFzc2VydAotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAvLyBmb3IgTlVMTAotI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBmb3IgdnNucHJpbnRmCi0jaW5jbHVkZSA8Y3N0ZGFyZz4gICAgICAgICAgICAgIC8vIGZvciB2YXJhcmdzCi0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6c3RyZXJyb3I7IHVzaW5nIDo6c3RybGVuOyB1c2luZyA6OnN0cm5jYXQ7IH0KLSNlbmRpZgotCi0vLyB0byB1c2UgdnNucHJpbnRmCi0jaWYgZGVmaW5lZChfX1NVTlBST19DQykgfHwgZGVmaW5lZChfX1N1bk9TKQotIyAgaW5jbHVkZSA8c3RkaW8uaD4KLSMgIGluY2x1ZGUgPHN0ZGFyZy5oPgotdXNpbmcgc3RkOjp2YV9saXN0OwotI2VuZGlmCi0KLS8vIHRvIHVzZSB2c25wcmludGYgCi0jaWYgZGVmaW5lZChfX1FOWE5UT19fKSAKLSMgIGluY2x1ZGUgPHN0ZGlvLmg+IAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9XSU4zMikgJiYgICAgICAgICAgICAgICAgICBcCi0gICAgKCFkZWZpbmVkKF9fQ09NT19fKSAmJiAhZGVmaW5lZChfX01XRVJLU19fKSAmJiAhZGVmaW5lZChfX0dOVUNfXykgfHwgXAotICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sID49IDB4MzAwMCkpCi0KLSMgIGRlZmluZSBORE5CT09TVF9TRUhfQkFTRURfU0lHTkFMX0hBTkRMSU5HCi0KLSMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KLQotIyAgaWYgZGVmaW5lZChfX01XRVJLU19fKSB8fCAoZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoVU5ERVJfQ0UpKQotIyAgICBpbmNsdWRlIDxlaC5oPgotIyAgZW5kaWYKLQotIyAgaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIF9fQk9STEFORENfXyA+PSAweDU2MCB8fCBkZWZpbmVkKF9fTVdFUktTX18pCi0jICAgIGluY2x1ZGUgPHN0ZGludC5oPgotIyAgZW5kaWYKLQotIyAgaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIF9fQk9STEFORENfXyA8IDB4NTYwCi0gICAgdHlwZWRlZiB1bnNpZ25lZCB1aW50cHRyX3Q7Ci0jICBlbmRpZgotCi0jICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9NU0NfVkVSLCAgPCAxMzAwICkgfHwgZGVmaW5lZChVTkRFUl9DRSkKLXR5cGVkZWYgdm9pZCogdWludHB0cl90OwotIyAgZW5kaWYKLQotLy8gZm9yIHRoZSBGUCBjb250cm9sIHJvdXRpbmVzCi0jaW5jbHVkZSA8ZmxvYXQuaD4KLQotI2lmbmRlZiBFTV9JTlZBTElECi0jZGVmaW5lIEVNX0lOVkFMSUQgX0VNX0lOVkFMSUQKLSNlbmRpZgotCi0jaWZuZGVmIEVNX0RFTk9STUFMCi0jZGVmaW5lIEVNX0RFTk9STUFMIF9FTV9ERU5PUk1BTAotI2VuZGlmCi0KLSNpZm5kZWYgRU1fWkVST0RJVklERQotI2RlZmluZSBFTV9aRVJPRElWSURFIF9FTV9aRVJPRElWSURFCi0jZW5kaWYKLQotI2lmbmRlZiBFTV9PVkVSRkxPVwotI2RlZmluZSBFTV9PVkVSRkxPVyBfRU1fT1ZFUkZMT1cKLSNlbmRpZgotCi0jaWZuZGVmIEVNX1VOREVSRkxPVwotI2RlZmluZSBFTV9VTkRFUkZMT1cgX0VNX1VOREVSRkxPVwotI2VuZGlmCi0KLSNpZm5kZWYgTUNXX0VNCi0jZGVmaW5lIE1DV19FTSBfTUNXX0VNCi0jZW5kaWYKLQotIyAgaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChVTkRFUl9DRSkKLSMgICAgaW5jbHVkZSA8Y3J0ZGJnLmg+Ci0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9IT09LX1RZUEUgICAgX0NSVF9SRVBPUlRfSE9PSwotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DUlRfQVNTRVJUICAgICAgIF9DUlRfQVNTRVJUCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9FUlJPUiAgICAgICAgX0NSVF9FUlJPUgotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DUlRfU0VUX0hPT0soSCkgIF9DcnRTZXRSZXBvcnRIb29rKEgpCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9IT09LX1RZUEUgICAgdm9pZCoKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX0FTU0VSVCAgICAgICAyCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9FUlJPUiAgICAgICAgMQotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DUlRfU0VUX0hPT0soSCkgICh2b2lkKikoSCkKLSMgIGVuZGlmCi0KLSMgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKF9NU0NfVkVSLCAgPj0gMTQwMCApIHx8IGRlZmluZWQoVU5ERVJfQ0UpCi0KLXR5cGVkZWYgdm9pZCogX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXI7Ci0KLWlubGluZSBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcgotX3NldF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKCBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciBhcmcgKQotewotICAgIHJldHVybiBhcmc7Ci19Ci0KLSMgIGVuZGlmCi0KLSMgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNTY0KSkgfHwgZGVmaW5lZChVTkRFUl9DRSkKLQotbmFtZXNwYWNlIHsgdm9pZCBfc2V0X3NlX3RyYW5zbGF0b3IoIHZvaWQqICkge30gfQotCi0jICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19TSUdBQ1RJT04pCi0KLSMgIGRlZmluZSBORE5CT09TVF9TSUdBQ1RJT05fQkFTRURfU0lHTkFMX0hBTkRMSU5HCi0KLSMgIGluY2x1ZGUgPHVuaXN0ZC5oPgotIyAgaW5jbHVkZSA8c2lnbmFsLmg+Ci0jICBpbmNsdWRlIDxzZXRqbXAuaD4KLQotIyAgaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgIAotCi0jICAgIGlmbmRlZiBTSUdQT0xMCi0jICAgICAgZGVmaW5lIFNJR1BPTEwgU0lHSU8KLSMgICAgZW5kaWYKLQotIyAgICBpZiAoX19GcmVlQlNEX3ZlcnNpb24gPCA3MDEwMCkKLQotIyAgICAgIGRlZmluZSBJTExfSUxMQURSIDAgLy8gSUxMX1JFU0FEX0ZBVUxUCi0jICAgICAgZGVmaW5lIElMTF9QUlZPUEMgSUxMX1BSSVZJTl9GQVVMVAotIyAgICAgIGRlZmluZSBJTExfSUxMT1BOIDIgLy8gSUxMX1JFU09QX0ZBVUxUCi0jICAgICAgZGVmaW5lIElMTF9DT1BST0MgSUxMX0ZQT1BfRkFVTFQKLQotIyAgICAgIGRlZmluZSBORE5CT09TVF9URVNUX0xJTUlURURfU0lHTkFMX0RFVEFJTFMKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9JR05PUkVfU0lHQ0hMRAotCi0jICAgIGVuZGlmIAotIyAgZW5kaWYgCi0KLSMgIGlmICFkZWZpbmVkKF9fQ1lHV0lOX18pICYmICFkZWZpbmVkKF9fUU5YTlRPX18pCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfVVNFX0FMVF9TVEFDSwotIyAgZW5kaWYKLQotIyAgaWYgZGVmaW5lZChTSUdQT0xMKSAmJiAhZGVmaW5lZChfX0NZR1dJTl9fKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFwKLSAgICAgICEoZGVmaW5lZChtYWNpbnRvc2gpIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfQ0NfXykpICAmJiBcCi0gICAgICAhZGVmaW5lZChfX05ldEJTRF9fKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgXAotICAgICAgIWRlZmluZWQoX19RTlhOVE9fXykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0FUQ0hfU0lHUE9MTAotIyAgZW5kaWYKLQotIyAgaWZkZWYgTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0FMVF9TVEFDS19TSVpFIFNJR1NUS1NaCi0jICBlbmRpZgotCi0jZWxzZQotCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU0lHTkFMX0hBTkRMSU5HCi0KLSNlbmRpZgotCi0jaWZuZGVmIFVOREVSX0NFCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICByZXBvcnRfZXJyb3IgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9WU05QUklOVEYoIGExLCBhMiwgYTMsIGE0ICkgc3RkOjp2c25wcmludGYoIChhMSksIChhMiksIChhMyksIChhNCkgKQotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChfTVNDX1ZFUiwgPD0gMTMxMCkgfHwgXAotICAgICAgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAwKSkgfHwgXAotICAgICAgZGVmaW5lZChVTkRFUl9DRSkKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX1ZTTlBSSU5URiggYTEsIGEyLCBhMywgYTQgKSBfdnNucHJpbnRmKCAoYTEpLCAoYTIpLCAoYTMpLCAoYTQpICkKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9WU05QUklOVEYoIGExLCBhMiwgYTMsIGE0ICkgdnNucHJpbnRmKCAoYTEpLCAoYTIpLCAoYTMpLCAoYTQpICkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRXJyb3JJbmZvPgotdHlwZW5hbWUgRXJyb3JJbmZvOjp2YWx1ZV90eXBlCi1leHRyYWN0KCBuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0KiBleCApCi17Ci0gICAgaWYoICFleCApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgdHlwZW5hbWUgRXJyb3JJbmZvOjp2YWx1ZV90eXBlIGNvbnN0ICogdmFsID0gbmRuYm9vc3Q6OmdldF9lcnJvcl9pbmZvPEVycm9ySW5mbz4oICpleCApOwotCi0gICAgcmV0dXJuIHZhbCA/ICp2YWwgOiAwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjplcnJvcl9jb2RlIGVjLCBuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0KiBiZSwgY2hhciBjb25zdCogZm9ybWF0LCB2YV9saXN0KiBhcmdzICkKLXsKLSAgICBzdGF0aWMgY29uc3QgaW50IFJFUE9SVF9FUlJPUl9CVUZGRVJfU0laRSA9IDUxMjsKLSAgICBzdGF0aWMgY2hhciBidWZbUkVQT1JUX0VSUk9SX0JVRkZFUl9TSVpFXTsKLQotICAgIE5ETkJPT1NUX1RFU1RfVlNOUFJJTlRGKCBidWYsIHNpemVvZihidWYpLTEsIGZvcm1hdCwgKmFyZ3MgKTsgCi0gICAgYnVmW3NpemVvZihidWYpLTFdID0gMDsKLQotICAgIHZhX2VuZCggKmFyZ3MgKTsKLQotICAgIHRocm93IGV4ZWN1dGlvbl9leGNlcHRpb24oIGVjLCBidWYsIGV4ZWN1dGlvbl9leGNlcHRpb246OmxvY2F0aW9uKCBleHRyYWN0PHRocm93X2ZpbGU+KCBiZSApLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdDx0aHJvd19saW5lPiggYmUgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdDx0aHJvd19mdW5jdGlvbj4oIGJlICkgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjplcnJvcl9jb2RlIGVjLCBjaGFyIGNvbnN0KiBmb3JtYXQsIC4uLiApCi17Ci0gICAgdmFfbGlzdCBhcmdzOwotICAgIHZhX3N0YXJ0KCBhcmdzLCBmb3JtYXQgKTsKLQotICAgIHJlcG9ydF9lcnJvciggZWMsIDAsIGZvcm1hdCwgJmFyZ3MgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6ZXJyb3JfY29kZSBlYywgbmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdCogYmUsIGNoYXIgY29uc3QqIGZvcm1hdCwgLi4uICkKLXsKLSAgICB2YV9saXN0IGFyZ3M7Ci0gICAgdmFfc3RhcnQoIGFyZ3MsIGZvcm1hdCApOwotCi0gICAgcmVwb3J0X2Vycm9yKCBlYywgYmUsIGZvcm1hdCwgJmFyZ3MgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVHIsdHlwZW5hbWUgRnVuY3Rvcj4KLWlubGluZSBpbnQKLWRvX2ludm9rZSggVHIgY29uc3QmIHRyLCBGdW5jdG9yIGNvbnN0JiBGICkKLXsKLSAgICByZXR1cm4gdHIgPyAoKnRyKSggRiApIDogRigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU0lHQUNUSU9OX0JBU0VEX1NJR05BTF9IQU5ETElORykKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIFNpZ2FjdGlvbiBiYXNlZCBzaWduYWwgaGFuZGxpbmcgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIG5kbmJvb3N0OjpkZXRhaWw6OnN5c3RlbV9zaWduYWxfZXhjZXB0aW9uICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbigpCi0gICAgOiBtX3NpZ19pbmZvKCAwICkKLSAgICAsIG1fY29udGV4dCggMCApCi0gICAge30KLQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgdm9pZCAgICAgICAgb3BlcmF0b3IoKSggc2lnaW5mb190KiBpLCB2b2lkKiBjICkKLSAgICB7Ci0gICAgICAgIG1fc2lnX2luZm8gID0gaTsKLSAgICAgICAgbV9jb250ZXh0ICAgPSBjOwotICAgIH0KLSAgICB2b2lkICAgICAgICByZXBvcnQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzaWdpbmZvX3QqICBtX3NpZ19pbmZvOyAvLyBzeXN0ZW0gc2lnbmFsIGRldGFpbGVkIGluZm8KLSAgICB2b2lkKiAgICAgICBtX2NvbnRleHQ7ICAvLyBzaWduYWwgY29udGV4dAotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotc3lzdGVtX3NpZ25hbF9leGNlcHRpb246OnJlcG9ydCgpIGNvbnN0Ci17Ci0gICAgaWYoICFtX3NpZ19pbmZvICkKLSAgICAgICAgcmV0dXJuOyAvLyBubyBlcnJvciBhY3R1YWxseSBvY2N1cj8KLQotICAgIHN3aXRjaCggbV9zaWdfaW5mby0+c2lfY29kZSApIHsKLSAgICBjYXNlIFNJX1VTRVI6Ci0gICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGdlbmVyYXRlZCBieSBraWxsKCkgKG9yIGZhbWlseSk7IHVpZD0lZDsgcGlkPSVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3VpZCwgKGludCltX3NpZ19pbmZvLT5zaV9waWQgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTSV9RVUVVRToKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogc2VudCBieSBzaWdxdWV1ZSgpIiApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNJX1RJTUVSOgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiB0aGUgZXhwaXJhdGlvbiBvZiBhIHRpbWVyIHNldCBieSB0aW1lcl9zZXR0aW1lcigpIiApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNJX0FTWU5DSU86Ci0gICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGdlbmVyYXRlZCBieSB0aGUgY29tcGxldGlvbiBvZiBhbiBhc3luY2hyb25vdXMgSS9PIHJlcXVlc3QiICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU0lfTUVTR1E6Ci0gICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGdlbmVyYXRlZCBieSB0aGUgdGhlIGFycml2YWwgb2YgYSBtZXNzYWdlIG9uIGFuIGVtcHR5IG1lc3NhZ2UgcXVldWUiICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN3aXRjaCggbV9zaWdfaW5mby0+c2lfc2lnbm8gKSB7Ci0gICAgY2FzZSBTSUdJTEw6Ci0gICAgICAgIHN3aXRjaCggbV9zaWdfaW5mby0+c2lfY29kZSApIHsKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MSU1JVEVEX1NJR05BTF9ERVRBSUxTCi0gICAgICAgIGNhc2UgSUxMX0lMTE9QQzoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBpbGxlZ2FsIG9wY29kZTsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSUxMX0lMTFRSUDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBpbGxlZ2FsIHRyYXA7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIElMTF9QUlZSRUc6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogcHJpdmlsZWdlZCByZWdpc3RlcjsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSUxMX0JBRFNUSzoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBpbnRlcm5hbCBzdGFjayBlcnJvcjsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICAgICAgY2FzZSBJTExfSUxMT1BOOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGlsbGVnYWwgb3BlcmFuZDsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSUxMX0lMTEFEUjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBpbGxlZ2FsIGFkZHJlc3NpbmcgbW9kZTsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSUxMX1BSVk9QQzoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBwcml2aWxlZ2VkIG9wY29kZTsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSUxMX0NPUFJPQzoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBjby1wcm9jZXNzb3IgZXJyb3I7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OiAKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogU0lHSUxMLCBzaV9jb2RlOiAlZCAoaWxsZWdhbCBpbnN0cnVjdGlvbjsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4KSIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyLCBtX3NpZ19pbmZvLT5zaV9jb2RlICk7IAotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNJR0ZQRToKLSAgICAgICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9jb2RlICkgewotICAgICAgICBjYXNlIEZQRV9JTlRESVY6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogaW50ZWdlciBkaXZpZGUgYnkgemVybzsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRlBFX0lOVE9WRjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBpbnRlZ2VyIG92ZXJmbG93OyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfRkxURElWOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGZsb2F0aW5nIHBvaW50IGRpdmlkZSBieSB6ZXJvOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfRkxUT1ZGOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGZsb2F0aW5nIHBvaW50IG92ZXJmbG93OyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfRkxUVU5EOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGZsb2F0aW5nIHBvaW50IHVuZGVyZmxvdzsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRlBFX0ZMVFJFUzoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBmbG9hdGluZyBwb2ludCBpbmV4YWN0IHJlc3VsdDsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRlBFX0ZMVElOVjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBpbnZhbGlkIGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbjsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRlBFX0ZMVFNVQjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBzdWJzY3JpcHQgb3V0IG9mIHJhbmdlOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdGUEUsIHNpX2NvZGU6ICVkIChlcnJub25lb3VzIGFyaXRobWV0aWMgb3BlcmF0aW9uczsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4KSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIsIG1fc2lnX2luZm8tPnNpX2NvZGUgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTSUdTRUdWOgotICAgICAgICBzd2l0Y2goIG1fc2lnX2luZm8tPnNpX2NvZGUgKSB7Ci0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTElNSVRFRF9TSUdOQUxfREVUQUlMUwotICAgICAgICBjYXNlIFNFR1ZfTUFQRVJSOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiBhdCBhZGRyZXNzOiAweCUwOGx4OiBubyBtYXBwaW5nIGF0IGZhdWx0IGFkZHJlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTRUdWX0FDQ0VSUjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFjY2VzcyB2aW9sYXRpb24gYXQgYWRkcmVzczogMHglMDhseDogaW52YWxpZCBwZXJtaXNzaW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogU0lHU0VHViwgc2lfY29kZTogJWQgKG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciwgbV9zaWdfaW5mby0+c2lfY29kZSApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNJR0JVUzoKLSAgICAgICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9jb2RlICkgewotI2lmbmRlZiBORE5CT09TVF9URVNUX0xJTUlURURfU0lHTkFMX0RFVEFJTFMKLSAgICAgICAgY2FzZSBCVVNfQURSQUxOOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiBhdCBhZGRyZXNzOiAweCUwOGx4OiBpbnZhbGlkIGFkZHJlc3MgYWxpZ25tZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQlVTX0FEUkVSUjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFjY2VzcyB2aW9sYXRpb24gYXQgYWRkcmVzczogMHglMDhseDogbm9uLWV4aXN0ZW50IHBoeXNpY2FsIGFkZHJlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCVVNfT0JKRVJSOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiBhdCBhZGRyZXNzOiAweCUwOGx4OiBvYmplY3Qgc3BlY2lmaWMgaGFyZHdhcmUgZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IFNJR1NFR1YsIHNpX2NvZGU6ICVkIChtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiBhdCBhZGRyZXNzOiAweCUwOGx4KSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIsIG1fc2lnX2luZm8tPnNpX2NvZGUgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTSUdDSExEOgotICAgICAgICBzd2l0Y2goIG1fc2lnX2luZm8tPnNpX2NvZGUgKSB7Ci0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTElNSVRFRF9TSUdOQUxfREVUQUlMUwotICAgICAgICBjYXNlIENMRF9FWElURUQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkIGhhcyBleGl0ZWQ7IHBpZDogJWQ7IHVpZDogJWQ7IGV4aXQgdmFsdWU6ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9waWQsIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3N0YXR1cyApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0xEX0tJTExFRDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGQgd2FzIGtpbGxlZDsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCwgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfc3RhdHVzICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDTERfRFVNUEVEOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZCB0ZXJtaW5hdGVkIGFibm9ybWFsbHk7IHBpZDogJWQ7IHVpZDogJWQ7IGV4aXQgdmFsdWU6ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9waWQsIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3N0YXR1cyApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0xEX1RSQVBQRUQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNlZCBjaGlsZCBoYXMgdHJhcHBlZDsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCwgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfc3RhdHVzICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDTERfU1RPUFBFRDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGQgaGFzIHN0b3BwZWQ7IHBpZDogJWQ7IHVpZDogJWQ7IGV4aXQgdmFsdWU6ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9waWQsIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3N0YXR1cyApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0xEX0NPTlRJTlVFRDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic3RvcHBlZCBjaGlsZCBoYWQgY29udGludWVkOyBwaWQ6ICVkOyB1aWQ6ICVkOyBleGl0IHZhbHVlOiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfcGlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3VpZCwgKGludCltX3NpZ19pbmZvLT5zaV9zdGF0dXMgKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogU0lHQ0hMRCwgc2lfY29kZTogJWQgKGNoaWxkIHByb2Nlc3MgaGFzIHRlcm1pbmF0ZWQ7IHBpZDogJWQ7IHVpZDogJWQ7IGV4aXQgdmFsdWU6ICVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfcGlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3VpZCwgKGludCltX3NpZ19pbmZvLT5zaV9zdGF0dXMsIG1fc2lnX2luZm8tPnNpX2NvZGUgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9URVNUX0NBVENIX1NJR1BPTEwpCi0KLSAgICBjYXNlIFNJR1BPTEw6Ci0gICAgICAgIHN3aXRjaCggbV9zaWdfaW5mby0+c2lfY29kZSApIHsKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MSU1JVEVEX1NJR05BTF9ERVRBSUxTCi0gICAgICAgIGNhc2UgUE9MTF9JTjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YSBpbnB1dCBhdmFpbGFibGU7IGJhbmQgZXZlbnQgJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX2JhbmQgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBPTExfT1VUOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJvdXRwdXQgYnVmZmVycyBhdmFpbGFibGU7IGJhbmQgZXZlbnQgJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX2JhbmQgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBPTExfTVNHOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCBtZXNzYWdlIGF2YWlsYWJsZTsgYmFuZCBldmVudCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfYmFuZCApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUE9MTF9FUlI6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImkvbyBlcnJvcjsgYmFuZCBldmVudCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfYmFuZCApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUE9MTF9QUkk6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImhpZ2ggcHJpb3JpdHkgaW5wdXQgYXZhaWxhYmxlOyBiYW5kIGV2ZW50ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9iYW5kICk7Ci0gICAgICAgICAgICBicmVhazsKLSNpZiBkZWZpbmVkKFBPTExfRVJSKSAmJiBkZWZpbmVkKFBPTExfSFVQKSAmJiAoUE9MTF9FUlIgLSBQT0xMX0hVUCkKLSAgICAgICAgY2FzZSBQT0xMX0hVUDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2aWNlIGRpc2Nvbm5lY3RlZDsgYmFuZCBldmVudCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfYmFuZCApOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSNlbmRpZgotICAgICAgICBkZWZhdWx0OiAKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogU0lHUE9MTCwgc2lfY29kZTogJWQgKGFzeW5jaHJvbm91cyBJL08gZXZlbnQgb2NjdXJlZDsgYmFuZCBldmVudCAlZCkiLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9iYW5kLCBtX3NpZ19pbmZvLT5zaV9jb2RlICk7IAotICAgICAgICAgICAgYnJlYWs7IAotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0jZW5kaWYKLQotICAgIGNhc2UgU0lHQUJSVDoKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogU0lHQUJSVCAoYXBwbGljYXRpb24gYWJvcnQgcmVxdWVzdGVkKSIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNJR0FMUk06Ci0gICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6dGltZW91dF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdBTFJNICh0aW1lb3V0IHdoaWxlIGV4ZWN1dGluZyBmdW5jdGlvbikiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJ1bnJlY29nbml6ZWQgc2lnbmFsIiApOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c2lnbmFsX2FjdGlvbiAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9uCi1leHRlcm4gIkMiIHsKLXN0YXRpYyB2b2lkIGV4ZWN1dGlvbl9tb25pdG9yX2p1bXBpbmdfc2lnbmFsX2hhbmRsZXIoIGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogY29udGV4dCApOwotc3RhdGljIHZvaWQgZXhlY3V0aW9uX21vbml0b3JfYXR0YWNoaW5nX3NpZ25hbF9oYW5kbGVyKCBpbnQgc2lnLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIGNvbnRleHQgKTsKLX0KLQotY2xhc3Mgc2lnbmFsX2FjdGlvbiB7Ci0gICAgdHlwZWRlZiBzdHJ1Y3Qgc2lnYWN0aW9uKiBzaWdhY3Rpb25fcHRyOwotcHVibGljOgotICAgIC8vQ29uc3RydWN0b3IKLSAgICBzaWduYWxfYWN0aW9uKCk7Ci0gICAgc2lnbmFsX2FjdGlvbiggaW50IHNpZywgYm9vbCBpbnN0YWxsLCBib29sIGF0dGFjaF9kYmcsIGNoYXIqIGFsdF9zdGFjayApOwotICAgIH5zaWduYWxfYWN0aW9uKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgaW50ICAgICAgICAgICAgICAgICBtX3NpZzsKLSAgICBib29sICAgICAgICAgICAgICAgIG1faW5zdGFsbGVkOwotICAgIHN0cnVjdCBzaWdhY3Rpb24gICAgbV9uZXdfYWN0aW9uOwotICAgIHN0cnVjdCBzaWdhY3Rpb24gICAgbV9vbGRfYWN0aW9uOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc2lnbmFsX2FjdGlvbjo6c2lnbmFsX2FjdGlvbigpCi06IG1faW5zdGFsbGVkKCBmYWxzZSApCi17fQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zaWduYWxfYWN0aW9uOjpzaWduYWxfYWN0aW9uKCBpbnQgc2lnLCBib29sIGluc3RhbGwsIGJvb2wgYXR0YWNoX2RiZywgY2hhciogYWx0X3N0YWNrICkKLTogbV9zaWcoIHNpZyApCi0sIG1faW5zdGFsbGVkKCBpbnN0YWxsICkKLXsKLSAgICBpZiggIWluc3RhbGwgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGQ6Om1lbXNldCggJm1fbmV3X2FjdGlvbiwgMCwgc2l6ZW9mKHN0cnVjdCBzaWdhY3Rpb24pICk7Ci0KLSAgICBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIDo6c2lnYWN0aW9uKCBtX3NpZyAsIHNpZ2FjdGlvbl9wdHIoKSwgJm1fbmV3X2FjdGlvbiApICE9IC0xICk7Ci0KLSAgICBpZiggbV9uZXdfYWN0aW9uLnNhX3NpZ2FjdGlvbiB8fCBtX25ld19hY3Rpb24uc2FfaGFuZGxlciApIHsKLSAgICAgICAgbV9pbnN0YWxsZWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbmV3X2FjdGlvbi5zYV9mbGFncyAgICAgfD0gU0FfU0lHSU5GTzsKLSAgICBtX25ld19hY3Rpb24uc2Ffc2lnYWN0aW9uICA9IGF0dGFjaF9kYmcgPyAmZXhlY3V0aW9uX21vbml0b3JfYXR0YWNoaW5nX3NpZ25hbF9oYW5kbGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJmV4ZWN1dGlvbl9tb25pdG9yX2p1bXBpbmdfc2lnbmFsX2hhbmRsZXI7Ci0gICAgTkROQk9PU1RfVEVTVF9TWVNfQVNTRVJUKCBzaWdlbXB0eXNldCggJm1fbmV3X2FjdGlvbi5zYV9tYXNrICkgIT0gLTEgKTsKLQotI2lmZGVmIE5ETkJPT1NUX1RFU1RfVVNFX0FMVF9TVEFDSwotICAgIGlmKCBhbHRfc3RhY2sgKQotICAgICAgICBtX25ld19hY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKLSNlbmRpZgotCi0gICAgTkROQk9PU1RfVEVTVF9TWVNfQVNTRVJUKCA6OnNpZ2FjdGlvbiggbV9zaWcsICZtX25ld19hY3Rpb24sICZtX29sZF9hY3Rpb24gKSAhPSAtMSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zaWduYWxfYWN0aW9uOjp+c2lnbmFsX2FjdGlvbigpCi17Ci0gICAgaWYoIG1faW5zdGFsbGVkICkKLSAgICAgICAgOjpzaWdhY3Rpb24oIG1fc2lnLCAmbV9vbGRfYWN0aW9uICwgc2lnYWN0aW9uX3B0cigpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c2lnbmFsX2hhbmRsZXIgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3Mgc2lnbmFsX2hhbmRsZXIgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgc2lnbmFsX2hhbmRsZXIoIGJvb2wgY2F0Y2hfc3lzdGVtX2Vycm9ycywgaW50IHRpbWVvdXQsIGJvb2wgYXR0YWNoX2RiZywgY2hhciogYWx0X3N0YWNrICk7Ci0KLSAgICAvLyBEZXN0cnVjdG9yCi0gICAgfnNpZ25hbF9oYW5kbGVyKCk7Ci0KLSAgICAvLyBhY2Nlc3MgbWV0aG9kcwotICAgIHN0YXRpYyBzaWdqbXBfYnVmJiAgICAgIGp1bXBfYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIGFzc2VydCggISFzX2FjdGl2ZV9oYW5kbGVyICk7Ci0KLSAgICAgICAgcmV0dXJuIHNfYWN0aXZlX2hhbmRsZXItPm1fc2lnam1wX2J1ZjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc3lzdGVtX3NpZ25hbF9leGNlcHRpb24mICBzeXNfc2lnKCkKLSAgICB7Ci0gICAgICAgIGFzc2VydCggISFzX2FjdGl2ZV9oYW5kbGVyICk7Ci0KLSAgICAgICAgcmV0dXJuIHNfYWN0aXZlX2hhbmRsZXItPm1fc3lzX3NpZzsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgc2lnbmFsX2hhbmRsZXIqICAgICAgICAgbV9wcmV2X2hhbmRsZXI7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgbV90aW1lb3V0OwotCi0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9JTExfYWN0aW9uOwotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fRlBFX2FjdGlvbjsKLSAgICBzaWduYWxfYWN0aW9uICAgICAgICAgICBtX1NFR1ZfYWN0aW9uOwotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fQlVTX2FjdGlvbjsKLSAgICBzaWduYWxfYWN0aW9uICAgICAgICAgICBtX0NITERfYWN0aW9uOwotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fUE9MTF9hY3Rpb247Ci0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9BQlJUX2FjdGlvbjsKLSAgICBzaWduYWxfYWN0aW9uICAgICAgICAgICBtX0FMUk1fYWN0aW9uOwotCi0gICAgc2lnam1wX2J1ZiAgICAgICAgICAgICAgbV9zaWdqbXBfYnVmOwotICAgIHN5c3RlbV9zaWduYWxfZXhjZXB0aW9uIG1fc3lzX3NpZzsKLQotICAgIHN0YXRpYyBzaWduYWxfaGFuZGxlciogIHNfYWN0aXZlX2hhbmRsZXI7Ci19OwotCi0vLyAhISBuZWVkIHRvIGJlIHBsYWNlZCBpbiB0aHJlYWQgc3BlY2lmaWMgc3RvcmFnZQotdHlwZWRlZiBzaWduYWxfaGFuZGxlciogc2lnbmFsX2hhbmRsZXJfcHRyOwotc2lnbmFsX2hhbmRsZXIqIHNpZ25hbF9oYW5kbGVyOjpzX2FjdGl2ZV9oYW5kbGVyID0gc2lnbmFsX2hhbmRsZXJfcHRyKCk7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXNpZ25hbF9oYW5kbGVyOjpzaWduYWxfaGFuZGxlciggYm9vbCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBpbnQgdGltZW91dCwgYm9vbCBhdHRhY2hfZGJnLCBjaGFyKiBhbHRfc3RhY2sgKQotOiBtX3ByZXZfaGFuZGxlciggc19hY3RpdmVfaGFuZGxlciApCi0sIG1fdGltZW91dCggdGltZW91dCApCi0sIG1fSUxMX2FjdGlvbiAoIFNJR0lMTCAsIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGF0dGFjaF9kYmcsIGFsdF9zdGFjayApCi0sIG1fRlBFX2FjdGlvbiAoIFNJR0ZQRSAsIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGF0dGFjaF9kYmcsIGFsdF9zdGFjayApCi0sIG1fU0VHVl9hY3Rpb24oIFNJR1NFR1YsIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGF0dGFjaF9kYmcsIGFsdF9zdGFjayApCi0sIG1fQlVTX2FjdGlvbiAoIFNJR0JVUyAsIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGF0dGFjaF9kYmcsIGFsdF9zdGFjayApCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfSUdOT1JFX1NJR0NITEQKLSwgbV9DSExEX2FjdGlvbiggU0lHQ0hMRCwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RFU1RfQ0FUQ0hfU0lHUE9MTAotLCBtX1BPTExfYWN0aW9uKCBTSUdQT0xMLCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBhdHRhY2hfZGJnLCBhbHRfc3RhY2sgKQotI2VuZGlmCi0sIG1fQUJSVF9hY3Rpb24oIFNJR0FCUlQsIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGF0dGFjaF9kYmcsIGFsdF9zdGFjayApCi0sIG1fQUxSTV9hY3Rpb24oIFNJR0FMUk0sIHRpbWVvdXQgPiAwICAgICAgICAsIGF0dGFjaF9kYmcsIGFsdF9zdGFjayApCi17Ci0gICAgc19hY3RpdmVfaGFuZGxlciA9IHRoaXM7Ci0KLSAgICBpZiggbV90aW1lb3V0ID4gMCApIHsKLSAgICAgICAgOjphbGFybSggMCApOwotICAgICAgICA6OmFsYXJtKCB0aW1lb3V0ICk7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLCi0gICAgaWYoIGFsdF9zdGFjayApIHsKLSAgICAgICAgc3RhY2tfdCBzaWdzdGs7Ci0gICAgICAgIHN0ZDo6bWVtc2V0KCAmc2lnc3RrLCAwLCBzaXplb2Yoc3RhY2tfdCkgKTsKLQotICAgICAgICBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIDo6c2lnYWx0c3RhY2soIDAsICZzaWdzdGsgKSAhPSAtMSApOwotCi0gICAgICAgIGlmKCBzaWdzdGsuc3NfZmxhZ3MgJiBTU19ESVNBQkxFICkgewotICAgICAgICAgICAgc2lnc3RrLnNzX3NwICAgID0gYWx0X3N0YWNrOwotICAgICAgICAgICAgc2lnc3RrLnNzX3NpemUgID0gTkROQk9PU1RfVEVTVF9BTFRfU1RBQ0tfU0laRTsKLSAgICAgICAgICAgIHNpZ3N0ay5zc19mbGFncyA9IDA7Ci0gICAgICAgICAgICBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIDo6c2lnYWx0c3RhY2soICZzaWdzdGssIDAgKSAhPSAtMSApOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXNpZ25hbF9oYW5kbGVyOjp+c2lnbmFsX2hhbmRsZXIoKQotewotICAgIGFzc2VydCggc19hY3RpdmVfaGFuZGxlciA9PSB0aGlzICk7Ci0KLSAgICBpZiggbV90aW1lb3V0ID4gMCApCi0gICAgICAgIDo6YWxhcm0oIDAgKTsKLQotI2lmZGVmIE5ETkJPT1NUX1RFU1RfVVNFX0FMVF9TVEFDSwotI2lmZGVmIF9fR05VQ19fCi0gICAgLy8gV2Ugc2hvdWxkbid0IG5lZWQgdG8gZXhwbGljaXRseSBpbml0aWFsaXplIGFsbCB0aGUgbWVtYmVycyBoZXJlLAotICAgIC8vIGJ1dCBnY2Mgd2FybnMgaWYgd2UgZG9uJ3QsIHNvIGFkZCBpbml0aWFsaXplcnMgZm9yIGVhY2ggb2YgdGhlCi0gICAgLy8gbWVtYmVycyBzcGVjaWZpZWQgaW4gdGhlIFBPU0lYIHN0ZDoKLSAgICBzdGFja190IHNpZ3N0ayA9IHsgMCwgMCwgMCB9OwotI2Vsc2UKLSAgICBzdGFja190IHNpZ3N0ayA9IHsgfTsKLSNlbmRpZgotCi0gICAgc2lnc3RrLnNzX3NpemUgID0gTUlOU0lHU1RLU1o7Ci0gICAgc2lnc3RrLnNzX2ZsYWdzID0gU1NfRElTQUJMRTsKLSAgICBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIDo6c2lnYWx0c3RhY2soICZzaWdzdGssIDAgKSAhPSAtMSApOwotI2VuZGlmCi0KLSAgICBzX2FjdGl2ZV9oYW5kbGVyID0gbV9wcmV2X2hhbmRsZXI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBleGVjdXRpb25fbW9uaXRvcl9zaWduYWxfaGFuZGxlciAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotZXh0ZXJuICJDIiB7Ci0KLXN0YXRpYyBib29sIGlnbm9yZV9zaWdjaGlsZCggc2lnaW5mb190KiBpbmZvICkKLXsKLSAgICByZXR1cm4gaW5mby0+c2lfc2lnbm8gPT0gU0lHQ0hMRAotI2lmbmRlZiBORE5CT09TVF9URVNUX0xJTUlURURfU0lHTkFMX0RFVEFJTFMKLSAgICAgICAgICAgICYmIGluZm8tPnNpX2NvZGUgPT0gQ0xEX0VYSVRFRCAKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RFU1RfSUdOT1JFX05PTl9aRVJPX0NISUxEX0NPREUKLSAgICAgICAgICAgIDsKLSNlbHNlCi0gICAgICAgICAgICAmJiAoaW50KWluZm8tPnNpX3N0YXR1cyA9PSAwOwotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkIGV4ZWN1dGlvbl9tb25pdG9yX2p1bXBpbmdfc2lnbmFsX2hhbmRsZXIoIGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogY29udGV4dCApCi17Ci0gICAgaWYoIGlnbm9yZV9zaWdjaGlsZCggaW5mbyApICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2lnbmFsX2hhbmRsZXI6OnN5c19zaWcoKSggaW5mbywgY29udGV4dCApOwotCi0gICAgc2lnbG9uZ2ptcCggc2lnbmFsX2hhbmRsZXI6Omp1bXBfYnVmZmVyKCksIHNpZyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZCBleGVjdXRpb25fbW9uaXRvcl9hdHRhY2hpbmdfc2lnbmFsX2hhbmRsZXIoIGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogY29udGV4dCApCi17Ci0gICAgaWYoIGlnbm9yZV9zaWdjaGlsZCggaW5mbyApICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYoICFkZWJ1Zzo6YXR0YWNoX2RlYnVnZ2VyKCBmYWxzZSApICkKLSAgICAgICAgZXhlY3V0aW9uX21vbml0b3JfanVtcGluZ19zaWduYWxfaGFuZGxlciggc2lnLCBpbmZvLCBjb250ZXh0ICk7Ci0KLSAgICAvLyBkZWJ1Z2dlciBhdHRhY2hlZDsgaXQgd2lsbCBoYW5kbGUgdGhlIHNpZ25hbAotICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggOjpzaWduYWwoIHNpZywgU0lHX0RGTCApICE9IFNJR19FUlIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBleGVjdXRpb25fbW9uaXRvcjo6Y2F0Y2hfc2lnbmFscyAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQKLWV4ZWN1dGlvbl9tb25pdG9yOjpjYXRjaF9zaWduYWxzKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgZGV0YWlsOwotCi0jaWYgZGVmaW5lZChfX0NZR1dJTl9fKQotICAgIHBfY2F0Y2hfc3lzdGVtX2Vycm9ycy52YWx1ZSA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9URVNUX1VTRV9BTFRfU1RBQ0sKLSAgICBpZiggISFwX3VzZV9hbHRfc3RhY2sgJiYgIW1fYWx0X3N0YWNrICkKLSAgICAgICAgbV9hbHRfc3RhY2sucmVzZXQoIG5ldyBjaGFyW05ETkJPT1NUX1RFU1RfQUxUX1NUQUNLX1NJWkVdICk7Ci0jZWxzZQotICAgIHBfdXNlX2FsdF9zdGFjay52YWx1ZSA9IGZhbHNlOwotI2VuZGlmCi0KLSAgICBzaWduYWxfaGFuZGxlciBsb2NhbF9zaWduYWxfaGFuZGxlciggcF9jYXRjaF9zeXN0ZW1fZXJyb3JzLCBwX3RpbWVvdXQsIHBfYXV0b19zdGFydF9kYmcsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcF91c2VfYWx0X3N0YWNrID8gMCA6IG1fYWx0X3N0YWNrLmdldCgpICk7Ci0KLSAgICBpZiggIXNpZ3NldGptcCggc2lnbmFsX2hhbmRsZXI6Omp1bXBfYnVmZmVyKCksIDEgKSApCi0gICAgICAgIHJldHVybiBkZXRhaWw6OmRvX2ludm9rZSggbV9jdXN0b21fdHJhbnNsYXRvcnMgLCBGICk7Ci0gICAgZWxzZQotICAgICAgICB0aHJvdyBsb2NhbF9zaWduYWxfaGFuZGxlci5zeXNfc2lnKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfU0VIX0JBU0VEX1NJR05BTF9IQU5ETElORykKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgTWljcm9zb2Z0IHN0cnVjdHVyZWQgZXhjZXB0aW9uIGhhbmRsaW5nICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA1NjQpKQotbmFtZXNwYWNlIHsgdm9pZCBfc2V0X3NlX3RyYW5zbGF0b3IoIHZvaWQqICkge30gfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgbmRuYm9vc3Q6OmRldGFpbDo6c3lzdGVtX3NpZ25hbF9leGNlcHRpb24gICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHN5c3RlbV9zaWduYWxfZXhjZXB0aW9uIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICAgICAgc3lzdGVtX3NpZ25hbF9leGNlcHRpb24oIGV4ZWN1dGlvbl9tb25pdG9yKiBlbSApCi0gICAgOiBtX2VtKCBlbSApCi0gICAgLCBtX3NlX2lkKCAwICkKLSAgICAsIG1fZmF1bHRfYWRkcmVzcyggMCApCi0gICAgLCBtX2RpciggZmFsc2UgKQotICAgIHt9Ci0KLSAgICB2b2lkICAgICAgICAgICAgICAgIHJlcG9ydCgpIGNvbnN0OwotICAgIGludCAgICAgICAgICAgICAgICAgb3BlcmF0b3IoKSggdW5zaWduZWQgaW50IGlkLCBfRVhDRVBUSU9OX1BPSU5URVJTKiBleHBzICk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgZXhlY3V0aW9uX21vbml0b3IqICBtX2VtOwotCi0gICAgdW5zaWduZWQgaW50ICAgICAgICBtX3NlX2lkOwotICAgIHZvaWQqICAgICAgICAgICAgICAgbV9mYXVsdF9hZGRyZXNzOwotICAgIGJvb2wgICAgICAgICAgICAgICAgbV9kaXI7Ci19OwotCi1zdGF0aWMgdm9pZAotc2VoX2NhdGNoX3ByZXZlbnRlciggdW5zaWduZWQgaW50IC8qIGlkICovLCBfRVhDRVBUSU9OX1BPSU5URVJTKiAvKiBleHBzICovICkKLXsKLSAgICB0aHJvdzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW50Ci1zeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbjo6b3BlcmF0b3IoKSggdW5zaWduZWQgaW50IGlkLCBfRVhDRVBUSU9OX1BPSU5URVJTKiBleHBzICkKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgTVNGVF9DUFBfRVhDRVBUID0gMHhFMDZkNzM2MzsgLy8gRU1TQwotCi0gICAgaWYoICFtX2VtLT5wX2NhdGNoX3N5c3RlbV9lcnJvcnMgfHwgKGlkID09IE1TRlRfQ1BQX0VYQ0VQVCkgKQotICAgICAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKLQotICAgIGlmKCAhIW1fZW0tPnBfYXV0b19zdGFydF9kYmcgJiYgZGVidWc6OmF0dGFjaF9kZWJ1Z2dlciggZmFsc2UgKSApIHsKLSAgICAgICAgbV9lbS0+cF9jYXRjaF9zeXN0ZW1fZXJyb3JzLnZhbHVlID0gZmFsc2U7Ci0gICAgICAgIF9zZXRfc2VfdHJhbnNsYXRvciggJnNlaF9jYXRjaF9wcmV2ZW50ZXIgKTsKLQotICAgICAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX0VYRUNVVElPTjsKLSAgICB9Ci0KLSAgICBtX3NlX2lkID0gaWQ7Ci0gICAgaWYoIG1fc2VfaWQgPT0gRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04gJiYgZXhwcy0+RXhjZXB0aW9uUmVjb3JkLT5OdW1iZXJQYXJhbWV0ZXJzID09IDIgKSB7Ci0gICAgICAgIG1fZmF1bHRfYWRkcmVzcyA9ICh2b2lkKilleHBzLT5FeGNlcHRpb25SZWNvcmQtPkV4Y2VwdGlvbkluZm9ybWF0aW9uWzFdOwotICAgICAgICBtX2RpciAgICAgICAgICAgPSBleHBzLT5FeGNlcHRpb25SZWNvcmQtPkV4Y2VwdGlvbkluZm9ybWF0aW9uWzBdID09IDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIEVYQ0VQVElPTl9FWEVDVVRFX0hBTkRMRVI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXN5c3RlbV9zaWduYWxfZXhjZXB0aW9uOjpyZXBvcnQoKSBjb25zdAotewotICAgIHN3aXRjaCggbV9zZV9pZCApIHsKLSAgICAvLyBjYXNlcyBjbGFzc2lmaWVkIGFzIHN5c3RlbV9mYXRhbF9lcnJvcgotICAgIGNhc2UgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT046IHsKLSAgICAgICAgaWYoICFtX2ZhdWx0X2FkZHJlc3MgKQotICAgICAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIiApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvcigKLSAgICAgICAgICAgICAgICBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiBvY2N1cnJlZCBhdCBhZGRyZXNzIDB4JTA4bHgsIHdoaWxlIGF0dGVtcHRpbmcgdG8gJXMiLAotICAgICAgICAgICAgICAgICAgICBtX2ZhdWx0X2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgIG1fZGlyID8gIiByZWFkIGluYWNjZXNzaWJsZSBkYXRhIgotICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIgd3JpdGUgdG8gYW4gaW5hY2Nlc3NpYmxlIChvciBwcm90ZWN0ZWQpIGFkZHJlc3MiCi0gICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgRVhDRVBUSU9OX0lMTEVHQUxfSU5TVFJVQ1RJT046Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsICJpbGxlZ2FsIGluc3RydWN0aW9uIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX1BSSVZfSU5TVFJVQ1RJT046Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsICJ0cmllZCB0byBleGVjdXRlIGFuIGluc3RydWN0aW9uIHdob3NlIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGUgY3VycmVudCBtYWNoaW5lIG1vZGUiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fSU5fUEFHRV9FUlJPUjoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgImFjY2VzcyB0byBhIG1lbW9yeSBwYWdlIHRoYXQgaXMgbm90IHByZXNlbnQiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fU1RBQ0tfT1ZFUkZMT1c6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsICJzdGFjayBvdmVyZmxvdyIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9OT05DT05USU5VQUJMRV9FWENFUFRJT046Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsICJ0cmllZCB0byBjb250aW51ZSBleGVjdXRpb24gYWZ0ZXIgYSBub24gY29udGludWFibGUgZXhjZXB0aW9uIG9jY3VycmVkIiApOwotICAgICAgICBicmVhazsKLQotICAgIC8vIGNhc2VzIGNsYXNzaWZpZWQgYXMgKG5vbi1mYXRhbCkgc3lzdGVtX3RyYXAKLSAgICBjYXNlIEVYQ0VQVElPTl9EQVRBVFlQRV9NSVNBTElHTk1FTlQ6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJkYXRhIG1pc2FsaWdubWVudCIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9JTlRfRElWSURFX0JZX1pFUk86Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJpbnRlZ2VyIGRpdmlkZSBieSB6ZXJvIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9PVkVSRkxPVzoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgImludGVnZXIgb3ZlcmZsb3ciICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fQVJSQVlfQk9VTkRTX0VYQ0VFREVEOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAiYXJyYXkgYm91bmRzIGV4Y2VlZGVkIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9ESVZJREVfQllfWkVSTzoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgImZsb2F0aW5nIHBvaW50IGRpdmlkZSBieSB6ZXJvIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9TVEFDS19DSEVDSzoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFjayBvdmVyZmxvd2VkIG9yIHVuZGVyZmxvd2VkIGFzIHRoZSByZXN1bHQgb2YgYSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb24iICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fRkxUX0RFTk9STUFMX09QRVJBTkQ6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCBvZiBmbG9hdGluZyBwb2ludCBvcGVyYXRpb24gaXMgZGVub3JtYWwiICk7Ci0gICAgICAgIGJyZWFrOwotCi0jIGlmIDAgLy8gISEgPz8gCi0gICAgY2FzZSBFWENFUFRJT05fRkxUX0lORVhBQ1RfUkVTVUxUOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc3VsdCBvZiBhIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbiBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgZXhhY3RseSIgKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9PVkVSRkxPVzoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBvbmVudCBvZiBhIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbiBpcyBncmVhdGVyIHRoYW4gdGhlIG1hZ25pdHVkZSBhbGxvd2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHR5cGUiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fRkxUX1VOREVSRkxPVzoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBvbmVudCBvZiBhIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbiBpcyBsZXNzIHRoYW4gdGhlIG1hZ25pdHVkZSBhbGxvd2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHR5cGUiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fRkxUX0lOVkFMSURfT1BFUkFUSU9OOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAiZmxvYXRpbmcgcG9pbnQgZXJyb3IiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fQlJFQUtQT0lOVDoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgImJyZWFrcG9pbnQgZW5jb3VudGVyZWQiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgInVucmVjb2duaXplZCBleGNlcHRpb24uIElkOiAweCUwOGx4IiwgbV9zZV9pZCApOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBhc3NlcnRfcmVwb3J0aW5nX2Z1bmN0aW9uICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW50IE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMCi1hc3NlcnRfcmVwb3J0aW5nX2Z1bmN0aW9uKCBpbnQgcmVwb3J0VHlwZSwgY2hhciogdXNlck1lc3NhZ2UsIGludCogKQotewotICAgIHN3aXRjaCggcmVwb3J0VHlwZSApIHsKLSAgICBjYXNlIE5ETkJPT1NUX1RFU1RfQ1JUX0FTU0VSVDoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnVzZXJfZXJyb3IsIHVzZXJNZXNzYWdlICk7Ci0KLSAgICAgICAgcmV0dXJuIDE7IC8vIHJldHVybiB2YWx1ZSBhbmQgcmV0VmFsIGFyZSBub3QgaW1wb3J0YW50IHNpbmNlIHdlIG5ldmVyIHJlYWNoIHRoaXMgbGluZQotICAgIGNhc2UgTkROQk9PU1RfVEVTVF9DUlRfRVJST1I6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsIHVzZXJNZXNzYWdlICk7Ci0KLSAgICAgICAgcmV0dXJuIDE7IC8vIHJldHVybiB2YWx1ZSBhbmQgcmV0VmFsIGFyZSBub3QgaW1wb3J0YW50IHNpbmNlIHdlIG5ldmVyIHJlYWNoIHRoaXMgbGluZQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOyAvLyB1c2UgdXN1YWwgcmVwb3J0aW5nIG1ldGhvZAotICAgIH0KLX0gLy8gYXNzZXJ0X3JlcG9ydGluZ19mdW5jdGlvbgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkIE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMCi1pbnZhbGlkX3BhcmFtX2hhbmRsZXIoIHdjaGFyX3QgY29uc3QqIC8qIGV4cHIgKi8sIAotICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiAvKiBmdW5jICovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogLyogZmlsZSAqLywgCi0gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAgIC8qIGxpbmUgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnRwdHJfdCAgICAgIC8qIHJlc2VydmVkICovKQotewotICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjp1c2VyX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgcGFyYW1ldGVyIGRldGVjdGVkIGJ5IEMgcnVudGltZSBsaWJyYXJ5IiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkIE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMCi1zd2l0Y2hfZnBfZXhjZXB0aW9ucyggYm9vbCBvbl9vZmYgKQotewotICAgIGlmKCAhb25fb2ZmICkKLSAgICAgICAgX2NsZWFyZnAoKTsKLQotICAgIGludCBjdyA9IDo6X2NvbnRyb2xmcCggMCwgMCApOwotCi0gICAgaW50IGV4Y2VwdGlvbnNfbWFzayA9IEVNX0lOVkFMSUR8RU1fREVOT1JNQUx8RU1fWkVST0RJVklERXxFTV9PVkVSRkxPV3xFTV9VTkRFUkZMT1c7Ci0KLSAgICBpZiggb25fb2ZmICkKLSAgICAgICAgY3cgJj0gfmV4Y2VwdGlvbnNfbWFzazsgLy8gU2V0IHRoZSBleGNlcHRpb24gbWFza3Mgb24sIHR1cm4gZXhjZXB0aW9ucyBvZmYKLSAgICBlbHNlCi0gICAgICAgIGN3IHw9IGV4Y2VwdGlvbnNfbWFzazsgIC8vIFNldCB0aGUgZXhjZXB0aW9uIG1hc2tzIG9mZiwgdHVybiBleGNlcHRpb25zIG9uCi0KLSAgICBpZiggb25fb2ZmICkKLSAgICAgICAgX2NsZWFyZnAoKTsKLSAgICAgICAgCi0gICAgLy8gU2V0IHRoZSBjb250cm9sIHdvcmQKLSAgICA6Ol9jb250cm9sZnAoIGN3LCBNQ1dfRU0gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgZXhlY3V0aW9uX21vbml0b3I6OmNhdGNoX3NpZ25hbHMgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW50Ci1leGVjdXRpb25fbW9uaXRvcjo6Y2F0Y2hfc2lnbmFscyggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApCi17Ci0gICAgX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgb2xkX2lwaCA9IF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKCk7Ci0gICAgTkROQk9PU1RfVEVTVF9DUlRfSE9PS19UWVBFIG9sZF9jcnRfaG9vayA9IDA7Ci0KLSAgICBpZiggIXBfY2F0Y2hfc3lzdGVtX2Vycm9ycyApCi0gICAgICAgIF9zZXRfc2VfdHJhbnNsYXRvciggJmRldGFpbDo6c2VoX2NhdGNoX3ByZXZlbnRlciApOwotICAgIGVsc2UgewotICAgICAgICBpZiggISFwX2RldGVjdF9mcF9leGNlcHRpb25zICkKLSAgICAgICAgICAgIGRldGFpbDo6c3dpdGNoX2ZwX2V4Y2VwdGlvbnMoIHRydWUgKTsKLQotICAgICAgIG9sZF9jcnRfaG9vayA9IE5ETkJPT1NUX1RFU1RfQ1JUX1NFVF9IT09LKCAmZGV0YWlsOjphc3NlcnRfcmVwb3J0aW5nX2Z1bmN0aW9uICk7Ci0KLSAgICAgICBvbGRfaXBoID0gX3NldF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKCAKLSAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcj4oICZkZXRhaWw6OmludmFsaWRfcGFyYW1faGFuZGxlciApICk7Ci0gICAgfQotCi0gICAgZGV0YWlsOjpzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiBTU0UoIHRoaXMgKTsKLSAgICAKLSAgICBpbnQgcmV0X3ZhbCA9IDA7Ci0KLSAgICBfX3RyeSB7Ci0gICAgICAgIF9fdHJ5IHsKLSAgICAgICAgICAgIHJldF92YWwgPSBkZXRhaWw6OmRvX2ludm9rZSggbV9jdXN0b21fdHJhbnNsYXRvcnMsIEYgKTsKLSAgICAgICAgfQotICAgICAgICBfX2V4Y2VwdCggU1NFKCBHZXRFeGNlcHRpb25Db2RlKCksIEdldEV4Y2VwdGlvbkluZm9ybWF0aW9uKCkgKSApIHsKLSAgICAgICAgICAgIHRocm93IFNTRTsKLSAgICAgICAgfQotICAgIH0KLSAgICBfX2ZpbmFsbHkgewotICAgICAgICBpZiggISFwX2NhdGNoX3N5c3RlbV9lcnJvcnMgKSB7Ci0gICAgICAgICAgICBpZiggISFwX2RldGVjdF9mcF9leGNlcHRpb25zICkKLSAgICAgICAgICAgICAgICBkZXRhaWw6OnN3aXRjaF9mcF9leGNlcHRpb25zKCBmYWxzZSApOwotCi0gICAgICAgICAgICBORE5CT09TVF9URVNUX0NSVF9TRVRfSE9PSyggb2xkX2NydF9ob29rICk7Ci0KLSAgICAgICAgICAgX3NldF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKCBvbGRfaXBoICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0X3ZhbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2Vsc2UgIC8vIGRlZmF1bHQgc2lnbmFsIGhhbmRsZXIKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLWNsYXNzIHN5c3RlbV9zaWduYWxfZXhjZXB0aW9uIHsKLXB1YmxpYzoKLSAgICB2b2lkICAgcmVwb3J0KCkgY29uc3Qge30KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1pbnQKLWV4ZWN1dGlvbl9tb25pdG9yOjpjYXRjaF9zaWduYWxzKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICkKLXsKLSAgICByZXR1cm4gZGV0YWlsOjpkb19pbnZva2UoIG1fY3VzdG9tX3RyYW5zbGF0b3JzICwgRiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZW5kaWYgIC8vIGNob29zZSBzaWduYWwgaGFuZGxlcgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgZXhlY3V0aW9uX21vbml0b3I6OmV4ZWN1dGUgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWludAotZXhlY3V0aW9uX21vbml0b3I6OmV4ZWN1dGUoIHVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4gY29uc3QmIEYgKQotewotICAgIGlmKCBkZWJ1Zzo6dW5kZXJfZGVidWdnZXIoKSApCi0gICAgICAgIHBfY2F0Y2hfc3lzdGVtX2Vycm9ycy52YWx1ZSA9IGZhbHNlOwotCi0gICAgdHJ5IHsKLSAgICAgICAgcmV0dXJuIGNhdGNoX3NpZ25hbHMoIEYgKTsKLSAgICB9Ci0KLSAgICAvLyAgQ2F0Y2gtY2xhdXNlIHJlZmVyZW5jZSBhcmd1bWVudHMgYXJlIGEgYml0IGRpZmZlcmVudCBmcm9tIGZ1bmN0aW9uCi0gICAgLy8gIGFyZ3VtZW50cyAoSVNPIDE1LjMgcGFyYWdyYXBocyAxOCAmIDE5KS4gIEFwcGFyZW50bHkgY29uc3QgaXNuJ3QKLSAgICAvLyAgcmVxdWlyZWQuICBQcm9ncmFtbWVycyBhc2sgZm9yIGNvbnN0IGFueWhvdywgc28gd2Ugc3VwcGx5IGl0LiAgVGhhdCdzCi0gICAgLy8gIGVhc2llciB0aGFuIGFuc3dlcmluZyBxdWVzdGlvbnMgYWJvdXQgbm9uLWNvbnN0IHVzYWdlLgotCi0gICAgY2F0Y2goIGNoYXIgY29uc3QqIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQyBzdHJpbmc6ICVzIiwgZXggKTsgfQotICAgIGNhdGNoKCBzdGQ6OnN0cmluZyBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpzdHJpbmc6ICVzIiwgZXguY19zdHIoKSApOyB9Ci0KLSAgICAvLyAgc3RkOjogZXhjZXB0aW9ucwotCi0gICAgY2F0Y2goIHN0ZDo6YmFkX2FsbG9jIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmJhZF9hbGxvYzogJXMiLCBleC53aGF0KCkgKTsgfQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4MDU1MSkKLSAgICBjYXRjaCggc3RkOjpiYWRfY2FzdCBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpiYWRfY2FzdCIgKTsgfQotICAgIGNhdGNoKCBzdGQ6OmJhZF90eXBlaWQgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6YmFkX3R5cGVpZCIgKTsgfQotI2Vsc2UKLSAgICBjYXRjaCggc3RkOjpiYWRfY2FzdCBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpiYWRfY2FzdDogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6OmJhZF90eXBlaWQgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6YmFkX3R5cGVpZDogJXMiLCBleC53aGF0KCkgKTsgfQotI2VuZGlmCi0KLSAgICBjYXRjaCggc3RkOjpiYWRfZXhjZXB0aW9uIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmJhZF9leGNlcHRpb246ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpkb21haW5fZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6ZG9tYWluX2Vycm9yOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6aW52YWxpZF9hcmd1bWVudCBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjppbnZhbGlkX2FyZ3VtZW50OiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6bGVuZ3RoX2Vycm9yIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6Omxlbmd0aF9lcnJvcjogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6Om91dF9vZl9yYW5nZSBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpvdXRfb2ZfcmFuZ2U6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpyYW5nZV9lcnJvciBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpyYW5nZV9lcnJvcjogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6Om92ZXJmbG93X2Vycm9yIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6Om92ZXJmbG93X2Vycm9yOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6dW5kZXJmbG93X2Vycm9yIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OnVuZGVyZmxvd19lcnJvcjogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6OmxvZ2ljX2Vycm9yIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmxvZ2ljX2Vycm9yOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6cnVudGltZV9lcnJvciBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpydW50aW1lX2Vycm9yOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6ZXhjZXB0aW9uIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmV4Y2VwdGlvbjogJXMiLCBleC53aGF0KCkgKTsgfQotCi0gICAgY2F0Y2goIG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3QmIGV4ICkKLSAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInVua25vd24gbmRuYm9vc3Q6OmV4Y2VwdGlvbiIgKTsgfQotCi0gICAgLy8gc3lzdGVtIGVycm9ycwotICAgIGNhdGNoKCBzeXN0ZW1fZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5c3RlbV9lcnJvciBwcm9kdWNlZCBieTogJXM6ICVzIiwgZXgucF9mYWlsZWRfZXhwLmdldCgpLCBzdGQ6OnN0cmVycm9yKCBleC5wX2Vycm5vICkgKTsgfQotICAgIGNhdGNoKCBkZXRhaWw6OnN5c3RlbV9zaWduYWxfZXhjZXB0aW9uIGNvbnN0JiBleCApCi0gICAgICB7IGV4LnJlcG9ydCgpOyB9Ci0KLSAgICAvLyBub3QgYW4gZXJyb3IKLSAgICBjYXRjaCggZXhlY3V0aW9uX2Fib3J0ZWQgY29uc3QmICkKLSAgICAgIHsgcmV0dXJuIDA7IH0KLQotICAgIC8vIGp1c3QgZm9yd2FyZAotICAgIGNhdGNoKCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiApCi0gICAgICB7IHRocm93OyB9Ci0KLSAgICAvLyB1bmtub3duIGVycm9yCi0gICAgY2F0Y2goIC4uLiApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAidW5rbm93biB0eXBlIiApOyB9Ci0KLSAgICByZXR1cm4gMDsgIC8vIG5ldmVyIHJlYWNoZWQ7IHN1cHBsaWVkIHRvIHF1aWV0IGNvbXBpbGVyIHdhcm5pbmdzCi19IC8vIGV4ZWN1dGUKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgc3lzdGVtX2Vycm9yICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zeXN0ZW1fZXJyb3I6OnN5c3RlbV9lcnJvciggY2hhciBjb25zdCogZXhwICkKLSNpZmRlZiBVTkRFUl9DRQotOiBwX2Vycm5vKCBHZXRMYXN0RXJyb3IoKSApCi0jZWxzZQotOiBwX2Vycm5vKCBlcnJubyApCi0jZW5kaWYKLSwgcF9mYWlsZWRfZXhwKCBleHAgKQote30KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBleGVjdXRpb25fZXhjZXB0aW9uICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1leGVjdXRpb25fZXhjZXB0aW9uOjpleGVjdXRpb25fZXhjZXB0aW9uKCBlcnJvcl9jb2RlIGVjXywgY29uc3Rfc3RyaW5nIHdoYXRfbXNnXywgbG9jYXRpb24gY29uc3QmIGxvY2F0aW9uXyApCi06IG1fZXJyb3JfY29kZSggZWNfICkKLSwgbV93aGF0KCB3aGF0X21zZ18uZW1wdHkoKSA/IE5ETkJPT1NUX1RFU1RfTCggInVuY2F1Z2h0IGV4Y2VwdGlvbiwgc3lzdGVtIGVycm9yIG9yIGFib3J0IHJlcXVlc3RlZCIgKSA6IHdoYXRfbXNnXyApCi0sIG1fbG9jYXRpb24oIGxvY2F0aW9uXyApCi17fQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1leGVjdXRpb25fZXhjZXB0aW9uOjpsb2NhdGlvbjo6bG9jYXRpb24oIGNoYXIgY29uc3QqIGZpbGVfbmFtZSwgc2l6ZV90IGxpbmVfbnVtLCBjaGFyIGNvbnN0KiBmdW5jICkKLTogbV9maWxlX25hbWUoIGZpbGVfbmFtZSA/IGZpbGVfbmFtZSA6ICJ1bmtub3duIGxvY2F0aW9uIiApCi0sIG1fbGluZV9udW0oIGxpbmVfbnVtICkKLSwgbV9mdW5jdGlvbiggZnVuYyApCi17fQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfRVhFQ1VUSU9OX01PTklUT1JfSVBQXzAxMjIwNUdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9mcmFtZXdvcmsuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZnJhbWV3b3JrLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRhOTBjNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9mcmFtZXdvcmsuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsNTAzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkxICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIGZyYW1ld29yayBBUEkgLSBtYWluIGRyaXZlciBmb3IgdGhlIHRlc3QKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRlJBTUVXT1JLX0lQUF8wMjEwMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GUkFNRVdPUktfSVBQXzAyMTAwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGVidWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X29ic2VydmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Byb2dyZXNzX21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19yZXBvcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3RpbWVyLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPGN0aW1lPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OnRpbWU7IHVzaW5nIDo6c3JhbmQ7IH0KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgdGVzdF9zdGFydCBjYWxscyB3cmFwcGVyICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotc3RydWN0IHRlc3Rfc3RhcnRfY2FsbGVyIHsKLSAgICB0ZXN0X3N0YXJ0X2NhbGxlciggdGVzdF9vYnNlcnZlciogdG8sIGNvdW50ZXJfdCB0Y19hbW91bnQgKQotICAgIDogbV90byggdG8gKQotICAgICwgbV90Y19hbW91bnQoIHRjX2Ftb3VudCApCi0gICAge30KLQotICAgIGludCBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIG1fdG8tPnRlc3Rfc3RhcnQoIG1fdGNfYW1vdW50ICk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICB0ZXN0X29ic2VydmVyKiAgbV90bzsKLSAgICBjb3VudGVyX3QgICAgICAgbV90Y19hbW91bnQ7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdHJ1Y3QgdGVzdF9pbml0X2NhbGxlciB7Ci0gICAgZXhwbGljaXQgICAgdGVzdF9pbml0X2NhbGxlciggaW5pdF91bml0X3Rlc3RfZnVuYyBpbml0X2Z1bmMgKSAKLSAgICA6IG1faW5pdF9mdW5jKCBpbml0X2Z1bmMgKQotICAgIHt9Ci0gICAgaW50ICAgICAgICAgb3BlcmF0b3IoKSgpCi0gICAgewotI2lmZGVmIE5ETkJPT1NUX1RFU1RfQUxURVJOQVRJVkVfSU5JVF9BUEkKLSAgICAgICAgaWYoICEoKm1faW5pdF9mdW5jKSgpICkKLSAgICAgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvciggInRlc3QgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZhaWxlZCIgKTsKLSNlbHNlCi0gICAgICAgIHRlc3Rfc3VpdGUqICBtYW51YWxfdGVzdF91bml0cyA9ICgqbV9pbml0X2Z1bmMpKCBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkuYXJnYywgZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLmFyZ3YgKTsKLQotICAgICAgICBpZiggbWFudWFsX3Rlc3RfdW5pdHMgKQotICAgICAgICAgICAgZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLmFkZCggbWFudWFsX3Rlc3RfdW5pdHMgKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpbml0X3VuaXRfdGVzdF9mdW5jIG1faW5pdF9mdW5jOwotfTsKLQotfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgZnJhbWV3b3JrICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIGZyYW1ld29ya19pbXBsIDogcHVibGljIHRlc3RfdHJlZV92aXNpdG9yIHsKLXB1YmxpYzoKLSAgICBmcmFtZXdvcmtfaW1wbCgpCi0gICAgOiBtX21hc3Rlcl90ZXN0X3N1aXRlKCAwICkKLSAgICAsIG1fY3Vycl90ZXN0X2Nhc2UoIElOVl9URVNUX1VOSVRfSUQgKQotICAgICwgbV9uZXh0X3Rlc3RfY2FzZV9pZCggTUlOX1RFU1RfQ0FTRV9JRCApCi0gICAgLCBtX25leHRfdGVzdF9zdWl0ZV9pZCggTUlOX1RFU1RfU1VJVEVfSUQgKQotICAgICwgbV9pc19pbml0aWFsaXplZCggZmFsc2UgKQotICAgICwgbV90ZXN0X2luX3Byb2dyZXNzKCBmYWxzZSApCi0gICAge30KLQotICAgIH5mcmFtZXdvcmtfaW1wbCgpIHsgY2xlYXIoKTsgfQotCi0gICAgdm9pZCAgICAgICAgICAgIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIHdoaWxlKCAhbV90ZXN0X3VuaXRzLmVtcHR5KCkgKSB7Ci0gICAgICAgICAgICB0ZXN0X3VuaXRfc3RvcmU6OnZhbHVlX3R5cGUgY29uc3QmIHR1ICAgICA9ICptX3Rlc3RfdW5pdHMuYmVnaW4oKTsKLSAgICAgICAgICAgIHRlc3RfdW5pdCogICAgICAgICAgICAgICAgICAgICAgICAgdHVfcHRyID0gdHUuc2Vjb25kOwotCi0gICAgICAgICAgICAvLyB0aGUgZGVsZXRlIHdpbGwgZXJhc2UgdGhpcyBlbGVtZW50IGZyb20gbWFwCi0gICAgICAgICAgICBpZiggdXRfZGV0YWlsOjp0ZXN0X2lkXzJfdW5pdF90eXBlKCB0dS5zZWNvbmQtPnBfaWQgKSA9PSB0dXRfc3VpdGUgKQotICAgICAgICAgICAgICAgIGRlbGV0ZSAgKHRlc3Rfc3VpdGUgY29uc3QqKXR1X3B0cjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkZWxldGUgICh0ZXN0X2Nhc2UgY29uc3QqKXR1X3B0cjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgICAgICAgICAgICBzZXRfdHVfaWQoIHRlc3RfdW5pdCYgdHUsIHRlc3RfdW5pdF9pZCBpZCApIHsgdHUucF9pZC52YWx1ZSA9IGlkOyB9Ci0KLSAgICAvLyB0ZXN0X3RyZWVfdmlzaXRvciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24KLSAgICB2b2lkICAgICAgICAgICAgdmlzaXQoIHRlc3RfY2FzZSBjb25zdCYgdGMgKQotICAgIHsKLSAgICAgICAgaWYoICF0Yy5jaGVja19kZXBlbmRlbmNpZXMoKSApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICAgICAgdG8tPnRlc3RfdW5pdF9za2lwcGVkKCB0YyApOwotCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgbV9vYnNlcnZlcnMgKQotICAgICAgICAgICAgdG8tPnRlc3RfdW5pdF9zdGFydCggdGMgKTsKLQotICAgICAgICBuZG5ib29zdDo6dGltZXIgdGNfdGltZXI7Ci0gICAgICAgIHRlc3RfdW5pdF9pZCBia3VwID0gbV9jdXJyX3Rlc3RfY2FzZTsKLSAgICAgICAgbV9jdXJyX3Rlc3RfY2FzZSA9IHRjLnBfaWQ7Ci0gICAgICAgIHVuaXRfdGVzdF9tb25pdG9yX3Q6OmVycm9yX2xldmVsIHJ1bl9yZXN1bHQgPSB1bml0X3Rlc3RfbW9uaXRvci5leGVjdXRlX2FuZF90cmFuc2xhdGUoIHRjICk7Ci0KLSAgICAgICAgdW5zaWduZWQgbG9uZyBlbGFwc2VkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oIHRjX3RpbWVyLmVsYXBzZWQoKSAqIDFlNiApOwotCi0gICAgICAgIGlmKCB1bml0X3Rlc3RfbW9uaXRvci5pc19jcml0aWNhbF9lcnJvciggcnVuX3Jlc3VsdCApICkgewotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIG1fb2JzZXJ2ZXJzICkKLSAgICAgICAgICAgICAgICB0by0+dGVzdF9hYm9ydGVkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgbV9vYnNlcnZlcnMgKQotICAgICAgICAgICAgdG8tPnRlc3RfdW5pdF9maW5pc2goIHRjLCBlbGFwc2VkICk7Ci0KLSAgICAgICAgbV9jdXJyX3Rlc3RfY2FzZSA9IGJrdXA7Ci0KLSAgICAgICAgaWYoIHVuaXRfdGVzdF9tb25pdG9yLmlzX2NyaXRpY2FsX2Vycm9yKCBydW5fcmVzdWx0ICkgKQotICAgICAgICAgICAgdGhyb3cgdGVzdF9iZWluZ19hYm9ydGVkKCk7Ci0gICAgfQotCi0gICAgYm9vbCAgICAgICAgICAgIHRlc3Rfc3VpdGVfc3RhcnQoIHRlc3Rfc3VpdGUgY29uc3QmIHRzICkKLSAgICB7Ci0gICAgICAgIGlmKCAhdHMuY2hlY2tfZGVwZW5kZW5jaWVzKCkgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgbV9vYnNlcnZlcnMgKQotICAgICAgICAgICAgICAgIHRvLT50ZXN0X3VuaXRfc2tpcHBlZCggdHMgKTsKLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIG1fb2JzZXJ2ZXJzICkKLSAgICAgICAgICAgIHRvLT50ZXN0X3VuaXRfc3RhcnQoIHRzICk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCAgICAgICAgICAgIHRlc3Rfc3VpdGVfZmluaXNoKCB0ZXN0X3N1aXRlIGNvbnN0JiB0cyApCi0gICAgewotICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgbV9vYnNlcnZlcnMgKQotICAgICAgICAgICAgdG8tPnRlc3RfdW5pdF9maW5pc2goIHRzLCAwICk7Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgc3RydWN0IHByaW9yaXR5X29yZGVyIHsKLSAgICAgICAgYm9vbCBvcGVyYXRvcigpKCB0ZXN0X29ic2VydmVyKiBsaHMsIHRlc3Rfb2JzZXJ2ZXIqIHJocyApIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAobGhzLT5wcmlvcml0eSgpIDwgcmhzLT5wcmlvcml0eSgpKSB8fCAoKGxocy0+cHJpb3JpdHkoKSA9PSByaHMtPnByaW9yaXR5KCkpICYmIChsaHMgPCByaHMpKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0eXBlZGVmIHN0ZDo6bWFwPHRlc3RfdW5pdF9pZCx0ZXN0X3VuaXQqPiAgICAgICB0ZXN0X3VuaXRfc3RvcmU7Ci0gICAgdHlwZWRlZiBzdGQ6OnNldDx0ZXN0X29ic2VydmVyKixwcmlvcml0eV9vcmRlcj4gb2JzZXJ2ZXJfc3RvcmU7Ci0KLSAgICBtYXN0ZXJfdGVzdF9zdWl0ZV90KiBtX21hc3Rlcl90ZXN0X3N1aXRlOwotICAgIHRlc3RfdW5pdF9pZCAgICBtX2N1cnJfdGVzdF9jYXNlOwotICAgIHRlc3RfdW5pdF9zdG9yZSBtX3Rlc3RfdW5pdHM7Ci0KLSAgICB0ZXN0X3VuaXRfaWQgICAgbV9uZXh0X3Rlc3RfY2FzZV9pZDsKLSAgICB0ZXN0X3VuaXRfaWQgICAgbV9uZXh0X3Rlc3Rfc3VpdGVfaWQ7Ci0KLSAgICBib29sICAgICAgICAgICAgbV9pc19pbml0aWFsaXplZDsKLSAgICBib29sICAgICAgICAgICAgbV90ZXN0X2luX3Byb2dyZXNzOwotCi0gICAgb2JzZXJ2ZXJfc3RvcmUgIG1fb2JzZXJ2ZXJzOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIHsKLQotI2lmIGRlZmluZWQoX19DWUdXSU5fXykKLWZyYW1ld29ya19pbXBsJiBzX2Zya19pbXBsKCkgeyBzdGF0aWMgZnJhbWV3b3JrX2ltcGwqIHRoZV9pbnN0ID0gMDsgaWYoIXRoZV9pbnN0KSB0aGVfaW5zdCA9IG5ldyBmcmFtZXdvcmtfaW1wbDsgcmV0dXJuICp0aGVfaW5zdDsgfQotI2Vsc2UKLWZyYW1ld29ya19pbXBsJiBzX2Zya19pbXBsKCkgeyBzdGF0aWMgZnJhbWV3b3JrX2ltcGwgdGhlX2luc3Q7IHJldHVybiB0aGVfaW5zdDsgfQotI2VuZGlmCi0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBmcmFtZXdvcmsgewotCi12b2lkCi1pbml0KCBpbml0X3VuaXRfdGVzdF9mdW5jIGluaXRfZnVuYywgaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApCi17Ci0gICAgcnVudGltZV9jb25maWc6OmluaXQoIGFyZ2MsIGFyZ3YgKTsKLQotICAgIC8vIHNldCB0aGUgbG9nIGxldmVsIGFuZCBmb3JtYXQKLSAgICB1bml0X3Rlc3RfbG9nLnNldF90aHJlc2hvbGRfbGV2ZWwoIHJ1bnRpbWVfY29uZmlnOjpsb2dfbGV2ZWwoKSApOwotICAgIHVuaXRfdGVzdF9sb2cuc2V0X2Zvcm1hdCggcnVudGltZV9jb25maWc6OmxvZ19mb3JtYXQoKSApOwotCi0gICAgLy8gc2V0IHRoZSByZXBvcnQgbGV2ZWwgYW5kIGZvcm1hdAotICAgIHJlc3VsdHNfcmVwb3J0ZXI6OnNldF9sZXZlbCggcnVudGltZV9jb25maWc6OnJlcG9ydF9sZXZlbCgpICk7Ci0gICAgcmVzdWx0c19yZXBvcnRlcjo6c2V0X2Zvcm1hdCggcnVudGltZV9jb25maWc6OnJlcG9ydF9mb3JtYXQoKSApOwotCi0gICAgcmVnaXN0ZXJfb2JzZXJ2ZXIoIHJlc3VsdHNfY29sbGVjdG9yICk7Ci0gICAgcmVnaXN0ZXJfb2JzZXJ2ZXIoIHVuaXRfdGVzdF9sb2cgKTsKLQotICAgIGlmKCBydW50aW1lX2NvbmZpZzo6c2hvd19wcm9ncmVzcygpICkKLSAgICAgICAgcmVnaXN0ZXJfb2JzZXJ2ZXIoIHByb2dyZXNzX21vbml0b3IgKTsKLQotICAgIGlmKCBydW50aW1lX2NvbmZpZzo6ZGV0ZWN0X21lbW9yeV9sZWFrcygpID4gMCApIHsKLSAgICAgICAgZGVidWc6OmRldGVjdF9tZW1vcnlfbGVha3MoIHRydWUgKTsKLSAgICAgICAgZGVidWc6OmJyZWFrX21lbW9yeV9hbGxvYyggcnVudGltZV9jb25maWc6OmRldGVjdF9tZW1vcnlfbGVha3MoKSApOwotICAgIH0KLQotICAgIC8vIGluaXQgbWFzdGVyIHVuaXQgdGVzdCBzdWl0ZQotICAgIG1hc3Rlcl90ZXN0X3N1aXRlKCkuYXJnYyA9IGFyZ2M7Ci0gICAgbWFzdGVyX3Rlc3Rfc3VpdGUoKS5hcmd2ID0gYXJndjsKLQotICAgIHRyeSB7Ci0gICAgICAgIG5kbmJvb3N0OjpleGVjdXRpb25fbW9uaXRvciBlbTsKLQotICAgICAgICB1dF9kZXRhaWw6OnRlc3RfaW5pdF9jYWxsZXIgdGljKCBpbml0X2Z1bmMgKTsKLQotICAgICAgICBlbS5leGVjdXRlKCB0aWMgKTsKLSAgICB9Ci0gICAgY2F0Y2goIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICkgIHsKLSAgICAgICAgdGhyb3cgc2V0dXBfZXJyb3IoIGV4LndoYXQoKSApOwotICAgIH0KLQotICAgIHNfZnJrX2ltcGwoKS5tX2lzX2luaXRpYWxpemVkID0gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotaXNfaW5pdGlhbGl6ZWQoKQotewotICAgIHJldHVybiAgc19mcmtfaW1wbCgpLm1faXNfaW5pdGlhbGl6ZWQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlZ2lzdGVyX3Rlc3RfdW5pdCggdGVzdF9jYXNlKiB0YyApCi17Ci0gICAgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIHRjLT5wX2lkID09IElOVl9URVNUX1VOSVRfSUQsIE5ETkJPT1NUX1RFU1RfTCggInRlc3QgY2FzZSBhbHJlYWR5IHJlZ2lzdGVyZWQiICkgKTsKLQotICAgIHRlc3RfdW5pdF9pZCBuZXdfaWQgPSBzX2Zya19pbXBsKCkubV9uZXh0X3Rlc3RfY2FzZV9pZDsKLQotICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCBuZXdfaWQgIT0gTUFYX1RFU1RfQ0FTRV9JRCwgTkROQk9PU1RfVEVTVF9MKCAidG9vIG1hbnkgdGVzdCBjYXNlcyIgKSApOwotCi0gICAgdHlwZWRlZiBmcmFtZXdvcmtfaW1wbDo6dGVzdF91bml0X3N0b3JlOjp2YWx1ZV90eXBlIG1hcF92YWx1ZV90eXBlOwotCi0gICAgc19mcmtfaW1wbCgpLm1fdGVzdF91bml0cy5pbnNlcnQoIG1hcF92YWx1ZV90eXBlKCBuZXdfaWQsIHRjICkgKTsKLSAgICBzX2Zya19pbXBsKCkubV9uZXh0X3Rlc3RfY2FzZV9pZCsrOwotCi0gICAgc19mcmtfaW1wbCgpLnNldF90dV9pZCggKnRjLCBuZXdfaWQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVnaXN0ZXJfdGVzdF91bml0KCB0ZXN0X3N1aXRlKiB0cyApCi17Ci0gICAgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIHRzLT5wX2lkID09IElOVl9URVNUX1VOSVRfSUQsIE5ETkJPT1NUX1RFU1RfTCggInRlc3Qgc3VpdGUgYWxyZWFkeSByZWdpc3RlcmVkIiApICk7Ci0KLSAgICB0ZXN0X3VuaXRfaWQgbmV3X2lkID0gc19mcmtfaW1wbCgpLm1fbmV4dF90ZXN0X3N1aXRlX2lkOwotCi0gICAgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIG5ld19pZCAhPSBNQVhfVEVTVF9TVUlURV9JRCwgTkROQk9PU1RfVEVTVF9MKCAidG9vIG1hbnkgdGVzdCBzdWl0ZXMiICkgKTsKLQotICAgIHR5cGVkZWYgZnJhbWV3b3JrX2ltcGw6OnRlc3RfdW5pdF9zdG9yZTo6dmFsdWVfdHlwZSBtYXBfdmFsdWVfdHlwZTsKLSAgICBzX2Zya19pbXBsKCkubV90ZXN0X3VuaXRzLmluc2VydCggbWFwX3ZhbHVlX3R5cGUoIG5ld19pZCwgdHMgKSApOwotICAgIHNfZnJrX2ltcGwoKS5tX25leHRfdGVzdF9zdWl0ZV9pZCsrOwotCi0gICAgc19mcmtfaW1wbCgpLnNldF90dV9pZCggKnRzLCBuZXdfaWQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZGVyZWdpc3Rlcl90ZXN0X3VuaXQoIHRlc3RfdW5pdCogdHUgKQotewotICAgIHNfZnJrX2ltcGwoKS5tX3Rlc3RfdW5pdHMuZXJhc2UoIHR1LT5wX2lkICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNsZWFyKCkKLXsKLSAgICBzX2Zya19pbXBsKCkuY2xlYXIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVnaXN0ZXJfb2JzZXJ2ZXIoIHRlc3Rfb2JzZXJ2ZXImIHRvICkKLXsKLSAgICBzX2Zya19pbXBsKCkubV9vYnNlcnZlcnMuaW5zZXJ0KCAmdG8gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZGVyZWdpc3Rlcl9vYnNlcnZlciggdGVzdF9vYnNlcnZlciYgdG8gKQotewotICAgIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycy5lcmFzZSggJnRvICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc2V0X29ic2VydmVycygpCi17Ci0gICAgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzLmNsZWFyKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW1hc3Rlcl90ZXN0X3N1aXRlX3QmCi1tYXN0ZXJfdGVzdF9zdWl0ZSgpCi17Ci0gICAgaWYoICFzX2Zya19pbXBsKCkubV9tYXN0ZXJfdGVzdF9zdWl0ZSApCi0gICAgICAgIHNfZnJrX2ltcGwoKS5tX21hc3Rlcl90ZXN0X3N1aXRlID0gbmV3IG1hc3Rlcl90ZXN0X3N1aXRlX3Q7Ci0KLSAgICByZXR1cm4gKnNfZnJrX2ltcGwoKS5tX21hc3Rlcl90ZXN0X3N1aXRlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZXN0X2Nhc2UgY29uc3QmCi1jdXJyZW50X3Rlc3RfY2FzZSgpCi17Ci0gICAgcmV0dXJuIGdldDx0ZXN0X2Nhc2U+KCBzX2Zya19pbXBsKCkubV9jdXJyX3Rlc3RfY2FzZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZXN0X3VuaXQmCi1nZXQoIHRlc3RfdW5pdF9pZCBpZCwgdGVzdF91bml0X3R5cGUgdCApCi17Ci0gICAgdGVzdF91bml0KiByZXMgPSBzX2Zya19pbXBsKCkubV90ZXN0X3VuaXRzW2lkXTsKLQotICAgIGlmKCAocmVzLT5wX3R5cGUgJiB0KSA9PSAwICkKLSAgICAgICAgdGhyb3cgaW50ZXJuYWxfZXJyb3IoICJJbnZhbGlkIHRlc3QgdW5pdCB0eXBlIiApOwotCi0gICAgcmV0dXJuICpyZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJ1biggdGVzdF91bml0X2lkIGlkLCBib29sIGNvbnRpbnVlX3Rlc3QgKQotewotICAgIGlmKCBpZCA9PSBJTlZfVEVTVF9VTklUX0lEICkKLSAgICAgICAgaWQgPSBtYXN0ZXJfdGVzdF9zdWl0ZSgpLnBfaWQ7Ci0KLSAgICB0ZXN0X2Nhc2VfY291bnRlciB0Y2M7Ci0gICAgdHJhdmVyc2VfdGVzdF90cmVlKCBpZCwgdGNjICk7Ci0KLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggdGNjLnBfY291bnQgIT0gMCAsIHJ1bnRpbWVfY29uZmlnOjp0ZXN0X3RvX3J1bigpLmlzX2VtcHR5KCkgCi0gICAgICAgID8gTkROQk9PU1RfVEVTVF9MKCAidGVzdCB0cmVlIGlzIGVtcHR5IiApIAotICAgICAgICA6IE5ETkJPT1NUX1RFU1RfTCggIm5vIHRlc3QgY2FzZXMgbWF0Y2hpbmcgZmlsdGVyIiApICk7Ci0KLSAgICBib29sICAgIGNhbGxfc3RhcnRfZmluaXNoICAgPSAhY29udGludWVfdGVzdCB8fCAhc19mcmtfaW1wbCgpLm1fdGVzdF9pbl9wcm9ncmVzczsKLSAgICBib29sICAgIHdhc19pbl9wcm9ncmVzcyAgICAgPSBzX2Zya19pbXBsKCkubV90ZXN0X2luX3Byb2dyZXNzOwotCi0gICAgc19mcmtfaW1wbCgpLm1fdGVzdF9pbl9wcm9ncmVzcyA9IHRydWU7Ci0KLSAgICBpZiggY2FsbF9zdGFydF9maW5pc2ggKSB7Ci0gICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBzX2Zya19pbXBsKCkubV9vYnNlcnZlcnMgKSB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZXhlY3V0aW9uX21vbml0b3IgZW07Ci0KLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZW0uZXhlY3V0ZSggdXRfZGV0YWlsOjp0ZXN0X3N0YXJ0X2NhbGxlciggdG8sIHRjYy5wX2NvdW50ICkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoKCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApICB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgc2V0dXBfZXJyb3IoIGV4LndoYXQoKSApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3dpdGNoKCBydW50aW1lX2NvbmZpZzo6cmFuZG9tX3NlZWQoKSApIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMTogewotICAgICAgICB1bnNpZ25lZCBpbnQgc2VlZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oIHN0ZDo6dGltZSggMCApICk7Ci0gICAgICAgIE5ETkJPT1NUX1RFU1RfTUVTU0FHRSggIlRlc3QgY2FzZXMgb3JkZXIgaXMgc2h1ZmZsZWQgdXNpbmcgc2VlZDogIiA8PCBzZWVkICk7Ci0gICAgICAgIHN0ZDo6c3JhbmQoIHNlZWQgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIE5ETkJPT1NUX1RFU1RfTUVTU0FHRSggIlRlc3QgY2FzZXMgb3JkZXIgaXMgc2h1ZmZsZWQgdXNpbmcgc2VlZDogIiA8PCBydW50aW1lX2NvbmZpZzo6cmFuZG9tX3NlZWQoKSApOwotICAgICAgICBzdGQ6OnNyYW5kKCBydW50aW1lX2NvbmZpZzo6cmFuZG9tX3NlZWQoKSApOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggaWQsIHNfZnJrX2ltcGwoKSApOwotICAgIH0KLSAgICBjYXRjaCggdGVzdF9iZWluZ19hYm9ydGVkIGNvbnN0JiApIHsKLSAgICAgICAgLy8gYWJvcnQgYWxyZWFkeSByZXBvcnRlZAotICAgIH0KLQotICAgIGlmKCBjYWxsX3N0YXJ0X2ZpbmlzaCApIHsKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycyApCi0gICAgICAgICAgICB0by0+dGVzdF9maW5pc2goKTsKLSAgICB9Ci0KLSAgICBzX2Zya19pbXBsKCkubV90ZXN0X2luX3Byb2dyZXNzID0gd2FzX2luX3Byb2dyZXNzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1ydW4oIHRlc3RfdW5pdCBjb25zdCogdHUsIGJvb2wgY29udGludWVfdGVzdCApCi17Ci0gICAgcnVuKCB0dS0+cF9pZCwgY29udGludWVfdGVzdCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1hc3NlcnRpb25fcmVzdWx0KCBib29sIHBhc3NlZCApCi17Ci0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycyApCi0gICAgICAgIHRvLT5hc3NlcnRpb25fcmVzdWx0KCBwYXNzZWQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhjZXB0aW9uX2NhdWdodCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKQotewotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBzX2Zya19pbXBsKCkubV9vYnNlcnZlcnMgKQotICAgICAgICB0by0+ZXhjZXB0aW9uX2NhdWdodCggZXggKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBzX2Zya19pbXBsKCkubV9vYnNlcnZlcnMgKQotICAgICAgICB0by0+dGVzdF91bml0X2Fib3J0ZWQoIHR1ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGZyYW1ld29yawotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0ZSQU1FV09SS19JUFBfMDIxMDA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9pbnRlcmFjdGlvbl9iYXNlZC5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9pbnRlcmFjdGlvbl9iYXNlZC5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkMTJmYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvaW50ZXJhY3Rpb25fYmFzZWQuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IEZhY2lsaXRpZXMgdG8gcGVyZm9ybSBpbnRlcmFjdGlvbi1iYXNlZCB0ZXN0aW5nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0lOVEVSQUNUSU9OX0JBU0VEX0lQUF8xMTIxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9JTlRFUkFDVElPTl9CQVNFRF9JUFBfMTEyMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotCi0jaWYgTkROQk9PU1RfVEVTVF9TVVBQT1JUX0lOVEVSQUNUSU9OX1RFU1RJTkcKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9pbnRlcmFjdGlvbl9iYXNlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9tb2NrX29iamVjdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPiAgICAgLy8gZm9yIHNldHVwX2Vycm9yCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBpdGVzdCB7IC8vIGludGVyYWN0aW9uLWJhc2VkIHRlc3RpbmcKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1tYW5hZ2VyOjptYW5hZ2VyKCkKLXsKLSAgICBpbnN0YW5jZV9wdHIoIHRydWUsIHRoaXMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbWFuYWdlcjo6fm1hbmFnZXIoKQotewotICAgIGluc3RhbmNlX3B0ciggdHJ1ZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotICAgIAotbWFuYWdlcioKLW1hbmFnZXI6Omluc3RhbmNlX3B0ciggYm9vbCByZXNldCwgbWFuYWdlciogbmV3X3B0ciApCi17Ci0gICAgc3RhdGljIG1hbmFnZXIgZHVtbXkoIDAgKTsKLSAgICAKLSAgICBzdGF0aWMgbWFuYWdlciogcHRyID0gJmR1bW15OwotICAgIAotICAgIGlmKCByZXNldCApIHsKLSAgICAgICAgaWYoIG5ld19wdHIgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggcHRyID09ICZkdW1teSwgTkROQk9PU1RfVEVTVF9MKCAiQ2FuJ3QgcnVuIHR3byBpbnRlcmF0aW9uIGJhc2VkIHRlc3QgdGhlIHNhbWUgdGltZSIgKSApOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgcHRyID0gbmV3X3B0cjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwdHIgPSAmZHVtbXk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBwdHI7Ci19Ci0gICAgCi19ICAvLyBuYW1lc3BhY2UgaXRlc3QKLQotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gbm90IGFuY2llbnQgY29tcGlsZXIKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfSU5URVJBQ1RJT05fQkFTRURfSVBQXzExMjEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvbG9nZ2VkX2V4cGVjdGF0aW9ucy5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9sb2dnZWRfZXhwZWN0YXRpb25zLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZlOTYxYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9sb2dnZWRfZXhwZWN0YXRpb25zLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgRUxPR19WRVIgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IEZhY2lsaXRpZXMgdG8gcGVyZm9ybSBpbnRlcmFjdGlvbiBiYXNlZCB0ZXN0bmcgb2YgbG9nZ2VkIGV4cGVjdGF0aW9ucwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MT0dHRURfRVhQRUNUQVRJT05TX0lQUF8xMjA5MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MT0dHRURfRVhQRUNUQVRJT05TX0lQUF8xMjA5MDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLSNpZiBORE5CT09TVF9URVNUX1NVUFBPUlRfSU5URVJBQ1RJT05fVEVTVElORwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci90b2tlbl9pdGVyYXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2xleGljYWxfY2FzdC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGZzdHJlYW0+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXVzaW5nIG5hbWVzcGFjZSA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q7Ci0KLW5hbWVzcGFjZSBpdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBsb2dnZWQgZXhwZWN0YXRpb24gdGVzdCBpbXBsZW1lbnRhdGlvbiAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IGV4cGVjdGF0aW9uc19sb2dnZXIgOiBpdGVzdDo6bWFuYWdlciB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBlY3RhdGlvbnNfbG9nZ2VyKCBjb25zdF9zdHJpbmcgbG9nX2ZpbGVfbmFtZSwgYm9vbCB0ZXN0X29yX2xvZyApOwotCi0gICAgdmlydHVhbCBib29sICAgICAgICBkZWNpc2lvbl9wb2ludCggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCApOwotICAgIHZpcnR1YWwgdW5zaWduZWQgICAgZW50ZXJfc2NvcGUoIGNvbnN0X3N0cmluZywgc3RkOjpzaXplX3QsIGNvbnN0X3N0cmluZyBzY29wZV9uYW1lICk7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBhbGxvY2F0ZWQoIGNvbnN0X3N0cmluZywgc3RkOjpzaXplX3QsIHZvaWQqLCBzdGQ6OnNpemVfdCBzICk7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBkYXRhX2Zsb3coIGNvbnN0X3N0cmluZyBkICk7Ci0gICAgdmlydHVhbCBzdGQ6OnN0cmluZyByZXR1cm5fdmFsdWUoIGNvbnN0X3N0cmluZyBkZWZhdWx0X3ZhbHVlICk7Ci0gICAgCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGJvb2wgICAgICAgICAgICBtX3Rlc3Rfb3JfbG9nOwotICAgIHN0ZDo6ZnN0cmVhbSAgICBtX2xvZ19maWxlOwotfTsKLQotbGl0ZXJhbF9zdHJpbmcgRUxPR19WRVIgICAgID0gIjEuMCI7Ci1saXRlcmFsX3N0cmluZyBDTE1OX1NFUCAgICAgPSAifCI7Ci1zdGF0aWMgY29uc3QgY2hhciBMSU5FX1NFUCAgPSAnXG4nOwotCi1saXRlcmFsX3N0cmluZyBGSUxFX1NJRyAgICAgPSAiRUxPRyI7Ci1saXRlcmFsX3N0cmluZyBTQ09QRV9TSUcgICAgPSAiU0NPUEUiOwotbGl0ZXJhbF9zdHJpbmcgQUxMT0NfU0lHICAgID0gIkFMTE9DIjsKLWxpdGVyYWxfc3RyaW5nIERQX1NJRyAgICAgICA9ICJTV0lUQ0giOwotbGl0ZXJhbF9zdHJpbmcgREFUQV9TSUcgICAgID0gIkRBVEEiOwotbGl0ZXJhbF9zdHJpbmcgUkVUVVJOX1NJRyAgID0gIlJFVFVSTiI7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWV4cGVjdGF0aW9uc19sb2dnZXI6OmV4cGVjdGF0aW9uc19sb2dnZXIoIGNvbnN0X3N0cmluZyBsb2dfZmlsZV9uYW1lLCBib29sIHRlc3Rfb3JfbG9nICkKLTogbV90ZXN0X29yX2xvZyggdGVzdF9vcl9sb2cgKQotewotICAgIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggIWxvZ19maWxlX25hbWUuaXNfZW1wdHkoKSwgIkVtcHR5IGV4cGVjdGF0aW9ucyBsb2cgZmlsZSBuYW1lIiApOwotCi0gICAgbV9sb2dfZmlsZS5vcGVuKCBsb2dfZmlsZV9uYW1lLmJlZ2luKCksIHRlc3Rfb3JfbG9nID8gc3RkOjppb3M6OmluIDogc3RkOjppb3M6Om91dCApOwotCi0gICAgTkROQk9PU1RfUkVRVUlSRV9NRVNTQUdFKCBtX2xvZ19maWxlLmlzX29wZW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBvcGVuIGV4cGVjdGF0aW9ucyBsb2cgZmlsZSAiIDw8IGxvZ19maWxlX25hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBmb3IgIiA8PCAoIG1fdGVzdF9vcl9sb2cgPyAicmVhZGluZyIgOiAid3JpdGluZyIpICk7Ci0KLSAgICBpZiggbV90ZXN0X29yX2xvZyApIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbGluZTsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6Z2V0bGluZSggbV9sb2dfZmlsZSwgbGluZSwgTElORV9TRVAgKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0X3N0cmluZyBjbGluZSggbGluZSApOwotICAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3IgdGl0KCBjbGluZSwgKGRyb3BwZWRfZGVsaW1ldGVycyA9IENMTU5fU0VQLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSk7Ci0KLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIEZJTEVfU0lHICk7IAotICAgICAgICArK3RpdDsKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIEVMT0dfVkVSICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2xvZ19maWxlIDw8IEZJTEVfU0lHIDw8IENMTU5fU0VQIDw8IEVMT0dfVkVSIDw8IExJTkVfU0VQOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotZXhwZWN0YXRpb25zX2xvZ2dlcjo6ZGVjaXNpb25fcG9pbnQoIGNvbnN0X3N0cmluZywgc3RkOjpzaXplX3QgKQotewotICAgIGlmKCBtX3Rlc3Rfb3JfbG9nICkgewotICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgICAgICAKLSAgICAgICAgc3RkOjpnZXRsaW5lKCBtX2xvZ19maWxlLCBsaW5lLCBMSU5FX1NFUCApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIGNsaW5lKCBsaW5lICk7Ci0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIGNsaW5lLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gQ0xNTl9TRVAsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpKTsKLSAgICAgICAgCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBEUF9TSUcgKTsgKyt0aXQ7Ci0gICAgICAgIHJldHVybiBsZXhpY2FsX2Nhc3Q8Ym9vbD4oICp0aXQgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fbG9nX2ZpbGUgPDwgRFBfU0lHIDw8IENMTU5fU0VQIDw8IHN0ZDo6Ym9vbGFscGhhIDw8IHRydWUgPDwgTElORV9TRVA7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi11bnNpZ25lZAotZXhwZWN0YXRpb25zX2xvZ2dlcjo6ZW50ZXJfc2NvcGUoIGNvbnN0X3N0cmluZywgc3RkOjpzaXplX3QsIGNvbnN0X3N0cmluZyBzY29wZV9uYW1lICkKLXsKLSAgICBpZiggbV90ZXN0X29yX2xvZyApIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbGluZTsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6Z2V0bGluZSggbV9sb2dfZmlsZSwgbGluZSwgTElORV9TRVAgKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0X3N0cmluZyBjbGluZSggbGluZSApOwotICAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3IgdGl0KCBjbGluZSwgKGRyb3BwZWRfZGVsaW1ldGVycyA9IENMTU5fU0VQLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSk7Ci0gICAgICAgIAotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgU0NPUEVfU0lHICk7ICsrdGl0OwotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgc2NvcGVfbmFtZSApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbV9sb2dfZmlsZSA8PCBTQ09QRV9TSUcgPDwgQ0xNTl9TRVAgPDwgc2NvcGVfbmFtZSA8PCBMSU5FX1NFUDsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0gICAgCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leHBlY3RhdGlvbnNfbG9nZ2VyOjphbGxvY2F0ZWQoIGNvbnN0X3N0cmluZywgc3RkOjpzaXplX3QsIHZvaWQqLCBzdGQ6OnNpemVfdCBzICkKLXsKLSAgICBpZiggbV90ZXN0X29yX2xvZyApIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbGluZTsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6Z2V0bGluZSggbV9sb2dfZmlsZSwgbGluZSwgTElORV9TRVAgKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0X3N0cmluZyBjbGluZSggbGluZSApOwotICAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3IgdGl0KCBjbGluZSwgKGRyb3BwZWRfZGVsaW1ldGVycyA9IENMTU5fU0VQLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSk7Ci0gICAgICAgIAotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgQUxMT0NfU0lHICk7ICsrdGl0OwotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggbGV4aWNhbF9jYXN0PHN0ZDo6c2l6ZV90PiggKnRpdCApLCBzICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2xvZ19maWxlIDw8IEFMTE9DX1NJRyA8PCBDTE1OX1NFUCA8PCBzIDw8IExJTkVfU0VQOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhwZWN0YXRpb25zX2xvZ2dlcjo6ZGF0YV9mbG93KCBjb25zdF9zdHJpbmcgZCApCi17Ci0gICAgaWYoIG1fdGVzdF9vcl9sb2cgKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmdldGxpbmUoIG1fbG9nX2ZpbGUsIGxpbmUsIExJTkVfU0VQICk7Ci0gICAgICAgIAotICAgICAgICBjb25zdF9zdHJpbmcgY2xpbmUoIGxpbmUgKTsKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggY2xpbmUsIChkcm9wcGVkX2RlbGltZXRlcnMgPSBDTE1OX1NFUCwga2VwdF9kZWxpbWV0ZXJzID0gZHRfbm9uZSkpOwotICAgICAgICAKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIERBVEFfU0lHICk7ICsrdGl0OwotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgZCApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbV9sb2dfZmlsZSA8PCBEQVRBX1NJRyA8PCBDTE1OX1NFUCA8PCBkIDw8IExJTkVfU0VQOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RkOjpzdHJpbmcKLWV4cGVjdGF0aW9uc19sb2dnZXI6OnJldHVybl92YWx1ZSggY29uc3Rfc3RyaW5nIGRlZmF1bHRfdmFsdWUgKQotewotICAgIGlmKCBtX3Rlc3Rfb3JfbG9nICkgewotICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgICAgICAKLSAgICAgICAgc3RkOjpnZXRsaW5lKCBtX2xvZ19maWxlLCBsaW5lLCBMSU5FX1NFUCApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIGNsaW5lKCBsaW5lICk7Ci0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIGNsaW5lLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gQ0xNTl9TRVAsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpKTsKLSAgICAgICAgCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBSRVRVUk5fU0lHICk7ICsrdGl0OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCB0aXQtPmJlZ2luKCksIHRpdC0+c2l6ZSgpICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2xvZ19maWxlIDw8IFJFVFVSTl9TSUcgPDwgQ0xNTl9TRVAgPDwgZGVmYXVsdF92YWx1ZSA8PCBMSU5FX1NFUDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIGxvZ2dlZCBleHBlY3RhdGlvbnMgdGVzdCAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9ERUNMCi1sb2dnZWRfZXhwZWN0YXRpb25zKCBjYWxsYmFjazA8PiBjb25zdCYgRiwgY29uc3Rfc3RyaW5nIGxvZ19maWxlX25hbWUsIGJvb2wgdGVzdF9vcl9sb2cgKQotewotICAgIGV4cGVjdGF0aW9uc19sb2dnZXIgZWwoIGxvZ19maWxlX25hbWUsIHRlc3Rfb3JfbG9nICk7Ci0KLSAgICBGKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gIC8vIG5hbWVzcGFjZSBpdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIG5vdCBhbmNpZW50IGNvbXBpbGVyCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0xPR0dFRF9FWFBFQ1RBVElPTlNfSVBQXzEyMDkwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9wbGFpbl9yZXBvcnRfZm9ybWF0dGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdiZmQxZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9wbGFpbl9yZXBvcnRfZm9ybWF0dGVyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogcGxhaW4gcmVwb3J0IGZvcm1hdHRlciBkZWZpbml0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1BMQUlOX1JFUE9SVF9GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1BMQUlOX1JFUE9SVF9GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jdXN0b21fbWFuaXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9tYW5pcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL2NtYXRoLmhwcD4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotIyBpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6bG9nMTA7IH0KLSMgZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBvdXRwdXQgewotCi1uYW1lc3BhY2UgewotCi10eXBlZGVmIGN1c3RvbV9tYW5pcDxzdHJ1Y3QgcXVvdGVfdD4gcXVvdGU7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtJgotb3BlcmF0b3I8PCggY3VzdG9tX3ByaW50ZXI8cXVvdGU+IGNvbnN0JiBwLCBUIGNvbnN0JiB2YWx1ZSApCi17Ci0gICAgKnAgPDwgJyInIDw8IHZhbHVlIDw8ICciJzsKLQotICAgIHJldHVybiAqcDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJpbnRfc3RhdF92YWx1ZSggc3RkOjpvc3RyZWFtJiBvc3RyLCBjb3VudGVyX3QgdiwgY291bnRlcl90IGluZGVudCwgY291bnRlcl90IHRvdGFsLAotICAgICAgICAgICAgICAgICAgY29uc3Rfc3RyaW5nIG5hbWUsIGNvbnN0X3N0cmluZyByZXMgKQotewotICAgIGlmKCB2ID4gMCApIHsKLSAgICAgICAgb3N0ciA8PCBzdGQ6OnNldHcoIGluZGVudCApIDw8ICIiCi0gICAgICAgICAgICAgPDwgdiA8PCAnICcgPDwgbmFtZSA8PCAoIHYgIT0gMSA/ICJzIiA6ICIiICk7Ci0gICAgICAgIGlmKCB0b3RhbCA+IDAgKQotICAgICAgICAgICAgb3N0ciA8PCAiIG91dCBvZiAiIDw8IHRvdGFsOwotCi0gICAgICAgIG9zdHIgPDwgJyAnIDw8IHJlcyA8PCAnXG4nOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHBsYWluX3JlcG9ydF9mb3JtYXR0ZXIgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi1wbGFpbl9yZXBvcnRfZm9ybWF0dGVyOjpyZXN1bHRzX3JlcG9ydF9zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBtX2luZGVudCA9IDA7Ci0gICAgb3N0ciA8PCAnXG4nOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wbGFpbl9yZXBvcnRfZm9ybWF0dGVyOjpyZXN1bHRzX3JlcG9ydF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgb3N0ci5mbHVzaCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wbGFpbl9yZXBvcnRfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmIHR1LCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIHRlc3RfcmVzdWx0cyBjb25zdCYgdHIgPSByZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0dS5wX2lkICk7Ci0KLSAgICBjb25zdF9zdHJpbmcgZGVzY3I7Ci0KLSAgICBpZiggdHIucGFzc2VkKCkgKQotICAgICAgICBkZXNjciA9ICJwYXNzZWQiOwotICAgIGVsc2UgaWYoIHRyLnBfc2tpcHBlZCApCi0gICAgICAgIGRlc2NyID0gInNraXBwZWQiOwotICAgIGVsc2UgaWYoIHRyLnBfYWJvcnRlZCApCi0gICAgICAgIGRlc2NyID0gImFib3J0ZWQiOwotICAgIGVsc2UKLSAgICAgICAgZGVzY3IgPSAiZmFpbGVkIjsKLQotICAgIG9zdHIgPDwgc3RkOjpzZXR3KCBtX2luZGVudCApIDw8ICIiCi0gICAgICAgICA8PCAiVGVzdCAiIDw8ICh0dS5wX3R5cGUgPT0gdHV0X2Nhc2UgPyAiY2FzZSAiIDogInN1aXRlICIgKSA8PCBxdW90ZSgpIDw8IHR1LnBfbmFtZSA8PCAnICcgPDwgZGVzY3I7Ci0KLSAgICBpZiggdHIucF9za2lwcGVkICkgewotICAgICAgICBvc3RyIDw8ICIgZHVlIHRvICIgPDwgKHR1LmNoZWNrX2RlcGVuZGVuY2llcygpID8gInRlc3QgYWJvcnRpbmdcbiIgOiAiZmFpbGVkIGRlcGVuZGFuY3lcbiIgKTsKLSAgICAgICAgbV9pbmRlbnQgKz0gMjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBjb3VudGVyX3QgdG90YWxfYXNzZXJ0aW9ucyAgPSB0ci5wX2Fzc2VydGlvbnNfcGFzc2VkICsgdHIucF9hc3NlcnRpb25zX2ZhaWxlZDsKLSAgICBjb3VudGVyX3QgdG90YWxfdGMgICAgICAgICAgPSB0ci5wX3Rlc3RfY2FzZXNfcGFzc2VkICsgdHIucF90ZXN0X2Nhc2VzX2ZhaWxlZCArIHRyLnBfdGVzdF9jYXNlc19za2lwcGVkOwotCi0gICAgaWYoIHRvdGFsX2Fzc2VydGlvbnMgPiAwIHx8IHRvdGFsX3RjID4gMCApCi0gICAgICAgIG9zdHIgPDwgIiB3aXRoOiI7Ci0KLSAgICBvc3RyIDw8ICdcbic7Ci0gICAgbV9pbmRlbnQgKz0gMjsKLQotICAgIHByaW50X3N0YXRfdmFsdWUoIG9zdHIsIHRyLnBfYXNzZXJ0aW9uc19wYXNzZWQsIG1faW5kZW50LCB0b3RhbF9hc3NlcnRpb25zLCAiYXNzZXJ0aW9uIiwgInBhc3NlZCIgKTsKLSAgICBwcmludF9zdGF0X3ZhbHVlKCBvc3RyLCB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkLCBtX2luZGVudCwgdG90YWxfYXNzZXJ0aW9ucywgImFzc2VydGlvbiIsICJmYWlsZWQiICk7Ci0gICAgcHJpbnRfc3RhdF92YWx1ZSggb3N0ciwgdHIucF9leHBlY3RlZF9mYWlsdXJlcywgbV9pbmRlbnQsIDAgICAgICAgICAgICAgICAsICJmYWlsdXJlIiAgLCAiZXhwZWN0ZWQiICk7Ci0gICAgcHJpbnRfc3RhdF92YWx1ZSggb3N0ciwgdHIucF90ZXN0X2Nhc2VzX3Bhc3NlZCwgbV9pbmRlbnQsIHRvdGFsX3RjICAgICAgICAsICJ0ZXN0IGNhc2UiLCAicGFzc2VkIiApOwotICAgIHByaW50X3N0YXRfdmFsdWUoIG9zdHIsIHRyLnBfdGVzdF9jYXNlc19mYWlsZWQsIG1faW5kZW50LCB0b3RhbF90YyAgICAgICAgLCAidGVzdCBjYXNlIiwgImZhaWxlZCIgKTsKLSAgICBwcmludF9zdGF0X3ZhbHVlKCBvc3RyLCB0ci5wX3Rlc3RfY2FzZXNfc2tpcHBlZCwgbV9pbmRlbnQsIHRvdGFsX3RjICAgICAgICwgInRlc3QgY2FzZSIsICJza2lwcGVkIiApOwotICAgIHByaW50X3N0YXRfdmFsdWUoIG9zdHIsIHRyLnBfdGVzdF9jYXNlc19hYm9ydGVkLCBtX2luZGVudCwgdG90YWxfdGMgICAgICAgLCAidGVzdCBjYXNlIiwgImFib3J0ZWQiICk7Ci0gICAgCi0gICAgb3N0ciA8PCAnXG4nOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wbGFpbl9yZXBvcnRfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiApCi17Ci0gICAgbV9pbmRlbnQgLT0gMjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcGxhaW5fcmVwb3J0X2Zvcm1hdHRlcjo6ZG9fY29uZmlybWF0aW9uX3JlcG9ydCggdGVzdF91bml0IGNvbnN0JiB0dSwgc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICB0ZXN0X3Jlc3VsdHMgY29uc3QmIHRyID0gcmVzdWx0c19jb2xsZWN0b3IucmVzdWx0cyggdHUucF9pZCApOwotICAgIAotICAgIGlmKCB0ci5wYXNzZWQoKSApIHsKLSAgICAgICAgb3N0ciA8PCAiKioqIE5vIGVycm9ycyBkZXRlY3RlZFxuIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgaWYoIHRyLnBfc2tpcHBlZCApIHsKLSAgICAgICAgb3N0ciA8PCAiKioqIFRlc3QgIiA8PCB0dS5wX3R5cGVfbmFtZSA8PCAiIHNraXBwZWQgZHVlIHRvICIgCi0gICAgICAgICAgICAgPDwgKHR1LmNoZWNrX2RlcGVuZGVuY2llcygpID8gInRlc3QgYWJvcnRpbmdcbiIgOiAiZmFpbGVkIGRlcGVuZGFuY3lcbiIgKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmKCB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkID09IDAgKSB7Ci0gICAgICAgIG9zdHIgPDwgIioqKiBlcnJvcnMgZGV0ZWN0ZWQgaW4gdGVzdCAiIDw8IHR1LnBfdHlwZV9uYW1lIDw8ICIgIiA8PCBxdW90ZSgpIDw8IHR1LnBfbmFtZQotICAgICAgICAgICAgIDw8ICI7IHNlZSBzdGFuZGFyZCBvdXRwdXQgZm9yIGRldGFpbHNcbiI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb3VudGVyX3QgbnVtX2ZhaWx1cmVzID0gdHIucF9hc3NlcnRpb25zX2ZhaWxlZDsKLSAgICAKLSAgICBvc3RyIDw8ICIqKiogIiA8PCBudW1fZmFpbHVyZXMgPDwgIiBmYWlsdXJlIiA8PCAoIG51bV9mYWlsdXJlcyAhPSAxID8gInMiIDogIiIgKSA8PCAiIGRldGVjdGVkIjsKLSAgICAKLSAgICBpZiggdHIucF9leHBlY3RlZF9mYWlsdXJlcyA+IDAgKQotICAgICAgICBvc3RyIDw8ICIgKCIgPDwgdHIucF9leHBlY3RlZF9mYWlsdXJlcyA8PCAiIGZhaWx1cmUiIDw8ICggdHIucF9leHBlY3RlZF9mYWlsdXJlcyAhPSAxID8gInMiIDogIiIgKSA8PCAiIGV4cGVjdGVkKSI7Ci0gICAgCi0gICAgb3N0ciA8PCAiIGluIHRlc3QgIiA8PCB0dS5wX3R5cGVfbmFtZSA8PCAiICIgPDwgcXVvdGUoKSA8PCB0dS5wX25hbWUgPDwgIlxuIjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2Ugb3V0cHV0Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9wcm9ncmVzc19tb25pdG9yLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Byb2dyZXNzX21vbml0b3IuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzRlZTg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Byb2dyZXNzX21vbml0b3IuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIHNpbXBsZSB0ZXh0IGJhc2VkIHByb2dyZXNzIG1vbml0b3IKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUFJPR1JFU1NfTU9OSVRPUl9JUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUFJPR1JFU1NfTU9OSVRPUl9JUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Byb2dyZXNzX21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Byb2dyZXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zY29wZWRfcHRyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBwcm9ncmVzc19tb25pdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLQotc3RydWN0IHByb2dyZXNzX21vbml0b3JfaW1wbCB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBwcm9ncmVzc19tb25pdG9yX2ltcGwoKQotICAgICAgICA6IG1fc3RyZWFtKCBydW50aW1lX2NvbmZpZzo6bG9nX3NpbmsoKSApCi0gICAge30KLQotICAgIHN0ZDo6b3N0cmVhbSogICAgICAgICAgICAgICAgbV9zdHJlYW07Ci0gICAgc2NvcGVkX3B0cjxwcm9ncmVzc19kaXNwbGF5PiBtX3Byb2dyZXNzX2Rpc3BsYXk7Ci19OwotCi1wcm9ncmVzc19tb25pdG9yX2ltcGwmIHNfcG1faW1wbCgpIHsgc3RhdGljIHByb2dyZXNzX21vbml0b3JfaW1wbCB0aGVfaW5zdDsgcmV0dXJuIHRoZV9pbnN0OyB9Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByb2dyZXNzX21vbml0b3JfdDo6dGVzdF9zdGFydCggY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICkKLXsKLSAgICBzX3BtX2ltcGwoKS5tX3Byb2dyZXNzX2Rpc3BsYXkucmVzZXQoIG5ldyBwcm9ncmVzc19kaXNwbGF5KCB0ZXN0X2Nhc2VzX2Ftb3VudCwgKnNfcG1faW1wbCgpLm1fc3RyZWFtICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJvZ3Jlc3NfbW9uaXRvcl90Ojp0ZXN0X2Fib3J0ZWQoKQotewotICAgICgqc19wbV9pbXBsKCkubV9wcm9ncmVzc19kaXNwbGF5KSArPSBzX3BtX2ltcGwoKS5tX3Byb2dyZXNzX2Rpc3BsYXktPmNvdW50KCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByb2dyZXNzX21vbml0b3JfdDo6dGVzdF91bml0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyApCi17Ci0gICAgaWYoIHR1LnBfdHlwZSA9PSB0dXRfY2FzZSApCi0gICAgICAgICsrKCpzX3BtX2ltcGwoKS5tX3Byb2dyZXNzX2Rpc3BsYXkpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcm9ncmVzc19tb25pdG9yX3Q6OnRlc3RfdW5pdF9za2lwcGVkKCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICB0ZXN0X2Nhc2VfY291bnRlciB0Y2M7Ci0gICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0dSwgdGNjICk7Ci0gICAgCi0gICAgKCpzX3BtX2ltcGwoKS5tX3Byb2dyZXNzX2Rpc3BsYXkpICs9IHRjYy5wX2NvdW50OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcm9ncmVzc19tb25pdG9yX3Q6OnNldF9zdHJlYW0oIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgc19wbV9pbXBsKCkubV9zdHJlYW0gPSAmb3N0cjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLSAgICAKLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfUFJPR1JFU1NfTU9OSVRPUl9JUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9yZXN1bHRzX2NvbGxlY3Rvci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9yZXN1bHRzX2NvbGxlY3Rvci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NjJmNjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcmVzdWx0c19jb2xsZWN0b3IuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIFVuaXQgVGVzdCByZXN1bHRzIGNvbGxlY3RpbmcgZmFjaWxpdHkuCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1JFU1VMVFNfQ09MTEVDVE9SX0lQUF8wMjExMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9SRVNVTFRTX0NPTExFQ1RPUl9JUFBfMDIxMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8bWFwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHMgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZXN0X3Jlc3VsdHM6OnRlc3RfcmVzdWx0cygpCi17Ci0gICAgY2xlYXIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotdGVzdF9yZXN1bHRzOjpwYXNzZWQoKSBjb25zdAotewotICAgIHJldHVybiAgIXBfc2tpcHBlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgcF90ZXN0X2Nhc2VzX2ZhaWxlZCA9PSAwICAgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgcF9hc3NlcnRpb25zX2ZhaWxlZCA8PSBwX2V4cGVjdGVkX2ZhaWx1cmVzICAmJgotICAgICAgICAgICAgIXBfYWJvcnRlZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW50Ci10ZXN0X3Jlc3VsdHM6OnJlc3VsdF9jb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcGFzc2VkKCkgPyBleGl0X3N1Y2Nlc3MKLSAgICAgICAgICAgOiAoIChwX2Fzc2VydGlvbnNfZmFpbGVkID4gcF9leHBlY3RlZF9mYWlsdXJlcyB8fCBwX3NraXBwZWQgKQotICAgICAgICAgICAgICAgICAgICA/IGV4aXRfdGVzdF9mYWlsdXJlCi0gICAgICAgICAgICAgICAgICAgIDogZXhpdF9leGNlcHRpb25fZmFpbHVyZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3Jlc3VsdHM6Om9wZXJhdG9yKz0oIHRlc3RfcmVzdWx0cyBjb25zdCYgdHIgKQotewotICAgIHBfYXNzZXJ0aW9uc19wYXNzZWQudmFsdWUgICArPSB0ci5wX2Fzc2VydGlvbnNfcGFzc2VkOwotICAgIHBfYXNzZXJ0aW9uc19mYWlsZWQudmFsdWUgICArPSB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkOwotICAgIHBfdGVzdF9jYXNlc19wYXNzZWQudmFsdWUgICArPSB0ci5wX3Rlc3RfY2FzZXNfcGFzc2VkOwotICAgIHBfdGVzdF9jYXNlc19mYWlsZWQudmFsdWUgICArPSB0ci5wX3Rlc3RfY2FzZXNfZmFpbGVkOwotICAgIHBfdGVzdF9jYXNlc19za2lwcGVkLnZhbHVlICArPSB0ci5wX3Rlc3RfY2FzZXNfc2tpcHBlZDsKLSAgICBwX3Rlc3RfY2FzZXNfYWJvcnRlZC52YWx1ZSAgKz0gdHIucF90ZXN0X2Nhc2VzX2Fib3J0ZWQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRlc3RfcmVzdWx0czo6Y2xlYXIoKQotewotICAgIHBfYXNzZXJ0aW9uc19wYXNzZWQudmFsdWUgICAgPSAwOwotICAgIHBfYXNzZXJ0aW9uc19mYWlsZWQudmFsdWUgICAgPSAwOwotICAgIHBfZXhwZWN0ZWRfZmFpbHVyZXMudmFsdWUgICAgPSAwOwotICAgIHBfdGVzdF9jYXNlc19wYXNzZWQudmFsdWUgICAgPSAwOwotICAgIHBfdGVzdF9jYXNlc19mYWlsZWQudmFsdWUgICAgPSAwOwotICAgIHBfdGVzdF9jYXNlc19za2lwcGVkLnZhbHVlICAgPSAwOwotICAgIHBfdGVzdF9jYXNlc19hYm9ydGVkLnZhbHVlICAgPSAwOwotICAgIHBfYWJvcnRlZC52YWx1ZSAgICAgICAgICAgICAgPSBmYWxzZTsKLSAgICBwX3NraXBwZWQudmFsdWUgICAgICAgICAgICAgID0gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLSAgICAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHJlc3VsdHNfY29sbGVjdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwxMzAwKQotCi1uYW1lc3BhY2UgewotCi1zdHJ1Y3QgcmVzdWx0c19jb2xsZWN0b3JfaW1wbCB7Ci0gICAgc3RkOjptYXA8dGVzdF91bml0X2lkLHRlc3RfcmVzdWx0cz4gbV9yZXN1bHRzX3N0b3JlOwotfTsKLQotcmVzdWx0c19jb2xsZWN0b3JfaW1wbCYgc19yY19pbXBsKCkgeyBzdGF0aWMgcmVzdWx0c19jb2xsZWN0b3JfaW1wbCB0aGVfaW5zdDsgcmV0dXJuIHRoZV9pbnN0OyB9Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLSNlbHNlCi0KLXN0cnVjdCByZXN1bHRzX2NvbGxlY3Rvcl9pbXBsIHsKLSAgICBzdGQ6Om1hcDx0ZXN0X3VuaXRfaWQsdGVzdF9yZXN1bHRzPiBtX3Jlc3VsdHNfc3RvcmU7Ci19OwotCi1zdGF0aWMgcmVzdWx0c19jb2xsZWN0b3JfaW1wbCYgc19yY19pbXBsKCkgeyBzdGF0aWMgcmVzdWx0c19jb2xsZWN0b3JfaW1wbCB0aGVfaW5zdDsgcmV0dXJuIHRoZV9pbnN0OyB9Ci0KLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojp0ZXN0X3N0YXJ0KCBjb3VudGVyX3QgKQotewotICAgIHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZS5jbGVhcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojp0ZXN0X2ZpbmlzaCgpCi17Ci0gICAgLy8gZG8gbm90aGluZwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojp0ZXN0X2Fib3J0ZWQoKQotewotICAgIC8vIGRvIG5vdGhpbmcKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6dGVzdF91bml0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICAvLyBpbml0IHRlc3RfcmVzdWx0cyBlbnRyeQotICAgIHRlc3RfcmVzdWx0cyYgdHIgPSBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmVbdHUucF9pZF07Ci0KLSAgICB0ci5jbGVhcigpOwotICAgIAotICAgIHRyLnBfZXhwZWN0ZWRfZmFpbHVyZXMudmFsdWUgICAgPSB0dS5wX2V4cGVjdGVkX2ZhaWx1cmVzOwotICAgIHRyLnBfc2tpcHBlZC52YWx1ZSAgICAgICAgICAgICAgPSBmYWxzZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotY2xhc3MgcmVzdWx0c19jb2xsZWN0X2hlbHBlciA6IHB1YmxpYyB0ZXN0X3RyZWVfdmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgcmVzdWx0c19jb2xsZWN0X2hlbHBlciggdGVzdF9yZXN1bHRzJiB0ciwgdGVzdF91bml0IGNvbnN0JiB0cyApIDogbV90ciggdHIgKSwgbV90cyggdHMgKSB7fQotCi0gICAgdm9pZCAgICB2aXNpdCggdGVzdF9jYXNlIGNvbnN0JiB0YyApCi0gICAgewotICAgICAgICB0ZXN0X3Jlc3VsdHMgY29uc3QmIHRyID0gcmVzdWx0c19jb2xsZWN0b3IucmVzdWx0cyggdGMucF9pZCApOwotICAgICAgICBtX3RyICs9IHRyOwotCi0gICAgICAgIGlmKCB0ci5wYXNzZWQoKSApCi0gICAgICAgICAgICBtX3RyLnBfdGVzdF9jYXNlc19wYXNzZWQudmFsdWUrKzsKLSAgICAgICAgZWxzZSBpZiggdHIucF9za2lwcGVkICkKLSAgICAgICAgICAgIG1fdHIucF90ZXN0X2Nhc2VzX3NraXBwZWQudmFsdWUrKzsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiggdHIucF9hYm9ydGVkICkKLSAgICAgICAgICAgICAgICBtX3RyLnBfdGVzdF9jYXNlc19hYm9ydGVkLnZhbHVlKys7Ci0gICAgICAgICAgICBtX3RyLnBfdGVzdF9jYXNlc19mYWlsZWQudmFsdWUrKzsKLSAgICAgICAgfQotICAgIH0KLSAgICBib29sICAgIHRlc3Rfc3VpdGVfc3RhcnQoIHRlc3Rfc3VpdGUgY29uc3QmIHRzICkKLSAgICB7Ci0gICAgICAgIGlmKCBtX3RzLnBfaWQgPT0gdHMucF9pZCApCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX3RyICs9IHJlc3VsdHNfY29sbGVjdG9yLnJlc3VsdHMoIHRzLnBfaWQgKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICB0ZXN0X3Jlc3VsdHMmICAgICAgIG1fdHI7Ci0gICAgdGVzdF91bml0IGNvbnN0JiAgICBtX3RzOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6dGVzdF91bml0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyApCi17Ci0gICAgaWYoIHR1LnBfdHlwZSA9PSB0dXRfc3VpdGUgKSB7Ci0gICAgICAgIHJlc3VsdHNfY29sbGVjdF9oZWxwZXIgY2goIHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVt0dS5wX2lkXSwgdHUgKTsKLQotICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIHR1LCBjaCApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgdGVzdF9yZXN1bHRzIGNvbnN0JiB0ciA9IHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVt0dS5wX2lkXTsKLSAgICAgICAgCi0gICAgICAgIGJvb2wgbnVtX2ZhaWx1cmVzX21hdGNoID0gdHIucF9hYm9ydGVkIHx8IHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQgPj0gdHIucF9leHBlY3RlZF9mYWlsdXJlczsKLSAgICAgICAgaWYoICFudW1fZmFpbHVyZXNfbWF0Y2ggKQotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCAiVGVzdCBjYXNlICIgPDwgdHUucF9uYW1lIDw8ICIgaGFzIGZld2VyIGZhaWx1cmVzIHRoYW4gZXhwZWN0ZWQiICk7Ci0KLSAgICAgICAgYm9vbCBjaGVja19hbnlfYXNzZXJ0aW9ucyA9IHRyLnBfYWJvcnRlZCB8fCAodHIucF9hc3NlcnRpb25zX2ZhaWxlZCAhPSAwKSB8fCAodHIucF9hc3NlcnRpb25zX3Bhc3NlZCAhPSAwKTsKLSAgICAgICAgaWYoICFjaGVja19hbnlfYXNzZXJ0aW9ucyApCi0gICAgICAgICAgICBORE5CT09TVF9URVNUX01FU1NBR0UoICJUZXN0IGNhc2UgIiA8PCB0dS5wX25hbWUgPDwgIiBkaWQgbm90IGNoZWNrIGFueSBhc3NlcnRpb25zIiApOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6dGVzdF91bml0X3NraXBwZWQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIGlmKCB0dS5wX3R5cGUgPT0gdHV0X3N1aXRlICkgewotICAgICAgICB0ZXN0X2Nhc2VfY291bnRlciB0Y2M7Ci0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggdHUsIHRjYyApOwotCi0gICAgICAgIHRlc3RfcmVzdWx0cyYgdHIgPSBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmVbdHUucF9pZF07Ci0KLSAgICAgICAgdHIuY2xlYXIoKTsKLSAgICAKLSAgICAgICAgdHIucF9za2lwcGVkLnZhbHVlICAgICAgICAgICAgICA9IHRydWU7Ci0gICAgICAgIHRyLnBfdGVzdF9jYXNlc19za2lwcGVkLnZhbHVlICAgPSB0Y2MucF9jb3VudDsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OmFzc2VydGlvbl9yZXN1bHQoIGJvb2wgcGFzc2VkICkKLXsKLSAgICB0ZXN0X3Jlc3VsdHMmIHRyID0gc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW2ZyYW1ld29yazo6Y3VycmVudF90ZXN0X2Nhc2UoKS5wX2lkXTsKLQotICAgIGlmKCBwYXNzZWQgKQotICAgICAgICB0ci5wX2Fzc2VydGlvbnNfcGFzc2VkLnZhbHVlKys7Ci0gICAgZWxzZQotICAgICAgICB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkLnZhbHVlKys7Ci0KLSAgICBpZiggdHIucF9hc3NlcnRpb25zX2ZhaWxlZCA9PSAxICkKLSAgICAgICAgZmlyc3RfZmFpbGVkX2Fzc2VydGlvbigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90OjpleGNlcHRpb25fY2F1Z2h0KCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiApCi17Ci0gICAgdGVzdF9yZXN1bHRzJiB0ciA9IHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVtmcmFtZXdvcms6OmN1cnJlbnRfdGVzdF9jYXNlKCkucF9pZF07Ci0KLSAgICB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkLnZhbHVlKys7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnRlc3RfdW5pdF9hYm9ydGVkKCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmVbdHUucF9pZF0ucF9hYm9ydGVkLnZhbHVlID0gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVzdF9yZXN1bHRzIGNvbnN0JgotcmVzdWx0c19jb2xsZWN0b3JfdDo6cmVzdWx0cyggdGVzdF91bml0X2lkIGlkICkgY29uc3QKLXsKLSAgICByZXR1cm4gc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW2lkXTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9SRVNVTFRTX0NPTExFQ1RPUl9JUFBfMDIxMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9yZXN1bHRzX3JlcG9ydGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Jlc3VsdHNfcmVwb3J0ZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjZmYTg0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Jlc3VsdHNfcmVwb3J0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiByZXN1bHQgcmVwb3J0aW5nIGZhY2lsdGllcwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9SRVNVTFRTX1JFUE9SVEVSX0lQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9SRVNVTFRTX1JFUE9SVEVSX0lQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19yZXBvcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9yZXBvcnRfZm9ybWF0dGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9zY29wZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pby9pb3Nfc3RhdGUuaHBwPgotdHlwZWRlZiA6Om5kbmJvb3N0Ojppbzo6aW9zX2Jhc2VfYWxsX3NhdmVyIGlvX3NhdmVyX3R5cGU7Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIHJlc3VsdHNfcmVwb3J0ZXIgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIHJlc3VsdCByZXBvcnRlciBpbXBsZW1lbnRhdGlvbiAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci0KLXN0cnVjdCByZXN1bHRzX3JlcG9ydGVyX2ltcGwgOiB0ZXN0X3RyZWVfdmlzaXRvciB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICByZXN1bHRzX3JlcG9ydGVyX2ltcGwoKQotICAgIDogbV9vdXRwdXQoIHJ1bnRpbWVfY29uZmlnOjpyZXBvcnRfc2luaygpICkKLSAgICAsIG1fc3RyZWFtX3N0YXRlX3NhdmVyKCBuZXcgaW9fc2F2ZXJfdHlwZSggKm1fb3V0cHV0ICkgKQotICAgICwgbV9yZXBvcnRfbGV2ZWwoIENPTkZJUk1BVElPTl9SRVBPUlQgKQotICAgICwgbV9mb3JtYXR0ZXIoIG5ldyBvdXRwdXQ6OnBsYWluX3JlcG9ydF9mb3JtYXR0ZXIgKQotICAgIHt9Ci0KLSAgICAvLyB0ZXN0IHRyZWUgdmlzaXRvciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24KLSAgICB2b2lkICAgIHZpc2l0KCB0ZXN0X2Nhc2UgY29uc3QmIHRjICkKLSAgICB7Ci0gICAgICAgIG1fZm9ybWF0dGVyLT50ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0YywgKm1fb3V0cHV0ICk7Ci0gICAgICAgIG1fZm9ybWF0dGVyLT50ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdGMsICptX291dHB1dCApOwotICAgIH0KLSAgICBib29sICAgIHRlc3Rfc3VpdGVfc3RhcnQoIHRlc3Rfc3VpdGUgY29uc3QmIHRzICkKLSAgICB7Ci0gICAgICAgIG1fZm9ybWF0dGVyLT50ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0cywgKm1fb3V0cHV0ICk7Ci0KLSAgICAgICAgaWYoIG1fcmVwb3J0X2xldmVsID09IERFVEFJTEVEX1JFUE9SVCAmJiAhcmVzdWx0c19jb2xsZWN0b3IucmVzdWx0cyggdHMucF9pZCApLnBfc2tpcHBlZCApCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBtX2Zvcm1hdHRlci0+dGVzdF91bml0X3JlcG9ydF9maW5pc2goIHRzLCAqbV9vdXRwdXQgKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICB2b2lkICAgIHRlc3Rfc3VpdGVfZmluaXNoKCB0ZXN0X3N1aXRlIGNvbnN0JiB0cyApCi0gICAgewotICAgICAgICBtX2Zvcm1hdHRlci0+dGVzdF91bml0X3JlcG9ydF9maW5pc2goIHRzLCAqbV9vdXRwdXQgKTsKLSAgICB9Ci0KLSAgICB0eXBlZGVmIHNjb3BlZF9wdHI8aW9fc2F2ZXJfdHlwZT4gc2F2ZXJfcHRyOwotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgc3RkOjpvc3RyZWFtKiAgICAgICBtX291dHB1dDsKLSAgICBzYXZlcl9wdHIgICAgICAgICAgIG1fc3RyZWFtX3N0YXRlX3NhdmVyOwotICAgIHJlcG9ydF9sZXZlbCAgICAgICAgbV9yZXBvcnRfbGV2ZWw7Ci0gICAgc2NvcGVkX3B0cjxmb3JtYXQ+ICBtX2Zvcm1hdHRlcjsKLX07Ci0KLXJlc3VsdHNfcmVwb3J0ZXJfaW1wbCYgc19ycl9pbXBsKCkgeyBzdGF0aWMgcmVzdWx0c19yZXBvcnRlcl9pbXBsIHRoZV9pbnN0OyByZXR1cm4gdGhlX2luc3Q7IH0KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICByZXBvcnQgY29uZmlndXJhdGlvbiAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi1zZXRfbGV2ZWwoIHJlcG9ydF9sZXZlbCBsICkKLXsKLSAgICBpZiggbCAhPSBJTlZfUkVQT1JUX0xFVkVMICkKLSAgICAgICAgc19ycl9pbXBsKCkubV9yZXBvcnRfbGV2ZWwgPSBsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1zZXRfc3RyZWFtKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIHNfcnJfaW1wbCgpLm1fb3V0cHV0ID0gJm9zdHI7Ci0gICAgc19ycl9pbXBsKCkubV9zdHJlYW1fc3RhdGVfc2F2ZXIucmVzZXQoIG5ldyBpb19zYXZlcl90eXBlKCBvc3RyICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RkOjpvc3RyZWFtJgotZ2V0X3N0cmVhbSgpCi17Ci0gICAgcmV0dXJuICpzX3JyX2ltcGwoKS5tX291dHB1dDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotc2V0X2Zvcm1hdCggb3V0cHV0X2Zvcm1hdCByZiApCi17Ci0gICAgc3dpdGNoKCByZiApIHsKLSAgICBjYXNlIENMRjoKLSAgICAgICAgc2V0X2Zvcm1hdCggbmV3IG91dHB1dDo6cGxhaW5fcmVwb3J0X2Zvcm1hdHRlciApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFhNTDoKLSAgICAgICAgc2V0X2Zvcm1hdCggbmV3IG91dHB1dDo6eG1sX3JlcG9ydF9mb3JtYXR0ZXIgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1zZXRfZm9ybWF0KCByZXN1bHRzX3JlcG9ydGVyOjpmb3JtYXQqIGYgKQotewotICAgIGlmKCBmICkKLSAgICAgICAgc19ycl9pbXBsKCkubV9mb3JtYXR0ZXIucmVzZXQoIGYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgcmVwb3J0IGluaXRpYXRpb24gICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi1tYWtlX3JlcG9ydCggcmVwb3J0X2xldmVsIGwsIHRlc3RfdW5pdF9pZCBpZCApCi17Ci0gICAgaWYoIGwgPT0gSU5WX1JFUE9SVF9MRVZFTCApCi0gICAgICAgIGwgPSBzX3JyX2ltcGwoKS5tX3JlcG9ydF9sZXZlbDsKLQotICAgIGlmKCBsID09IE5PX1JFUE9SVCApCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmKCBpZCA9PSBJTlZfVEVTVF9VTklUX0lEICkKLSAgICAgICAgaWQgPSBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkucF9pZDsKLQotICAgIHNfcnJfaW1wbCgpLm1fc3RyZWFtX3N0YXRlX3NhdmVyLT5yZXN0b3JlKCk7Ci0KLSAgICByZXBvcnRfbGV2ZWwgYmt1cCA9IHNfcnJfaW1wbCgpLm1fcmVwb3J0X2xldmVsOwotICAgIHNfcnJfaW1wbCgpLm1fcmVwb3J0X2xldmVsID0gbDsKLQotICAgIHNfcnJfaW1wbCgpLm1fZm9ybWF0dGVyLT5yZXN1bHRzX3JlcG9ydF9zdGFydCggKnNfcnJfaW1wbCgpLm1fb3V0cHV0ICk7Ci0KLSAgICBzd2l0Y2goIGwgKSB7Ci0gICAgY2FzZSBDT05GSVJNQVRJT05fUkVQT1JUOgotICAgICAgICBzX3JyX2ltcGwoKS5tX2Zvcm1hdHRlci0+ZG9fY29uZmlybWF0aW9uX3JlcG9ydCggZnJhbWV3b3JrOjpnZXQ8dGVzdF91bml0PiggaWQgKSwgKnNfcnJfaW1wbCgpLm1fb3V0cHV0ICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU0hPUlRfUkVQT1JUOgotICAgIGNhc2UgREVUQUlMRURfUkVQT1JUOgotICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIGlkLCBzX3JyX2ltcGwoKSApOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzX3JyX2ltcGwoKS5tX2Zvcm1hdHRlci0+cmVzdWx0c19yZXBvcnRfZmluaXNoKCAqc19ycl9pbXBsKCkubV9vdXRwdXQgKTsKLSAgICBzX3JyX2ltcGwoKS5tX3JlcG9ydF9sZXZlbCA9IGJrdXA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJlc3VsdHNfcmVwb3J0ZXIKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9SRVNVTFRTX1JFUE9SVEVSX0lQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Rlc3RfbWFpbi5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC90ZXN0X21haW4uaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzMxODNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Rlc3RfbWFpbi5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAxOTk1LTIwMDEuCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJCRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgbWFpbiBmdW5jdGlvbiBmb3IgVGVzdCBFeGVjdXRpb24gTW9uaXRvci4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVEVTVF9NQUlOX0lQUF8wMTIyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9URVNUX01BSU5fSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGUuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRsaWIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1leHRlcm4gaW50IHRlc3RfbWFpbiggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApOyAgICAvLyBwcm90b3R5cGUgZm9yIHVzZXIncyB0ZXN0X21haW4oKQotCi1zdHJ1Y3QgdGVzdF9tYWluX2NhbGxlciB7Ci0gICAgdGVzdF9tYWluX2NhbGxlciggaW50IGFyZ2MsIGNoYXIqKiBhcmd2ICkgOiBtX2FyZ2MoIGFyZ2MgKSwgbV9hcmd2KCBhcmd2ICkge30KLSAgICAKLSAgICB2b2lkIG9wZXJhdG9yKCkoKSB7Ci0gICAgICAgIGludCB0ZXN0X21haW5fcmVzdWx0ID0gdGVzdF9tYWluKCBtX2FyZ2MsIG1fYXJndiApOwotCi0gICAgICAgIC8vIHRyYW5zbGF0ZSBhIHRlc3RfbWFpbiBub24tc3VjY2VzcyByZXR1cm4gaW50byBhIHRlc3QgZXJyb3IKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0soIHRlc3RfbWFpbl9yZXN1bHQgPT0gMCB8fCB0ZXN0X21haW5fcmVzdWx0ID09IG5kbmJvb3N0OjpleGl0X3N1Y2Nlc3MgKTsKLSAgICB9Ci0gIAotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMgICAgCi0gICAgaW50ICAgICAgbV9hcmdjOwotICAgIGNoYXIqKiAgIG1fYXJndjsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICB0ZXN0IG1haW4gICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp0ZXN0X3N1aXRlKgotaW5pdF91bml0X3Rlc3Rfc3VpdGUoIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKSB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDsKLSAgICAKLSAgICBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkucF9uYW1lLnZhbHVlID0gIlRlc3QgUHJvZ3JhbSI7Ci0gICAgCi0gICAgZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLmFkZCggTkROQk9PU1RfVEVTVF9DQVNFKCB0ZXN0X21haW5fY2FsbGVyKCBhcmdjLCBhcmd2ICkgKSApOwotICAgIAotICAgIHJldHVybiAwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVEVTVF9NQUlOX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Rlc3RfdG9vbHMuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdGVzdF90b29scy5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4OGFmMzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdGVzdF90b29scy5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHN1cHBsaWVzIG9mZmxpbmUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBUZXN0IFRvb2xzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1RFU1RfVE9PTFNfSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1RFU1RfVE9PTFNfSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0X3Rlc3Rfc3RyZWFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA+IC8vIGV4ZWN1dGlvbl9hYm9ydGVkCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8ZnN0cmVhbT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDxjY3R5cGU+Ci0jaW5jbHVkZSA8Y3djaGFyPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxpb3M+Ci0KLS8vICEhIHNob3VsZCB3ZSB1c2UgI2luY2x1ZGUgPGNzdGRhcmc+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSMgaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OnN0cmNtcDsgdXNpbmcgOjpzdHJsZW47IHVzaW5nIDo6aXNwcmludDsgfQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DV0NIQVIgKQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6d2NzY21wOyB9Ci0jZW5kaWYKLSMgZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHRlc3RfdG9vbHMgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgcHJpbnRfbG9nX3ZhbHVlICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLXByaW50X2xvZ192YWx1ZTxjaGFyPjo6b3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCBjaGFyIHQgKQotewotICAgIGlmKCAoc3RkOjppc3ByaW50KSggc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odCkgKSApCi0gICAgICAgIG9zdHIgPDwgJ1wnJyA8PCB0IDw8ICdcJyc7Ci0gICAgZWxzZQotICAgICAgICBvc3RyIDw8IHN0ZDo6aGV4Ci0jaWYgTkROQk9PU1RfVEVTVF9VU0VfU1REX0xPQ0FMRQotICAgICAgICA8PCBzdGQ6OnNob3diYXNlCi0jZWxzZQotICAgICAgICA8PCAiMHgiCi0jZW5kaWYKLSAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50Pih0KTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJpbnRfbG9nX3ZhbHVlPHVuc2lnbmVkIGNoYXI+OjpvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIHVuc2lnbmVkIGNoYXIgdCApCi17Ci0gICAgb3N0ciA8PCBzdGQ6OmhleAotICAgICAgICAvLyBzaG93YmFzZSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgbmV3IHN0eWxlIHN0cmVhbXM6Ci0jaWYgTkROQk9PU1RfVEVTVF9VU0VfU1REX0xPQ0FMRQotICAgICAgICA8PCBzdGQ6OnNob3diYXNlCi0jZWxzZQotICAgICAgICA8PCAiMHgiCi0jZW5kaWYKLSAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50Pih0KTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJpbnRfbG9nX3ZhbHVlPGNoYXIgY29uc3QqPjo6b3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCBjaGFyIGNvbnN0KiB0ICkKLXsKLSAgICBvc3RyIDw8ICggdCA/IHQgOiAibnVsbCBzdHJpbmciICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByaW50X2xvZ192YWx1ZTx3Y2hhcl90IGNvbnN0Kj46Om9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgd2NoYXJfdCBjb25zdCogdCApCi17Ci0gICAgb3N0ciA8PCAoIHQgPyB0IDogTCJudWxsIHN0cmluZyIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIHR0X2RldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIFRPT0wgQk9YIEltcGxlbWVudGF0aW9uICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdXNpbmcgOjpuZG5ib29zdDo6dW5pdF90ZXN0OjpsYXp5X29zdHJlYW07Ci0KLWJvb2wKLWNoZWNrX2ltcGwoIHByZWRpY2F0ZV9yZXN1bHQgY29uc3QmIHByLCBsYXp5X29zdHJlYW0gY29uc3QmIGNoZWNrX2Rlc2NyLAotICAgICAgICAgICAgY29uc3Rfc3RyaW5nIGZpbGVfbmFtZSwgc3RkOjpzaXplX3QgbGluZV9udW0sCi0gICAgICAgICAgICB0b29sX2xldmVsIHRsLCBjaGVja190eXBlIGN0LAotICAgICAgICAgICAgc3RkOjpzaXplX3QgbnVtX29mX2FyZ3MsIC4uLiApCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHVuaXRfdGVzdDsKLQotICAgIGlmKCAhZnJhbWV3b3JrOjppc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCAiY2FuJ3QgdXNlIHRlc3RpbmcgdG9vbHMgYmVmb3JlIGZyYW1ld29yayBpcyBpbml0aWFsaXplZCIgKTsKLQotICAgIGlmKCAhIXByICkKLSAgICAgICAgdGwgPSBQQVNTOwotCi0gICAgbG9nX2xldmVsICAgIGxsOwotICAgIGNoYXIgY29uc3QqICBwcmVmaXg7Ci0gICAgY2hhciBjb25zdCogIHN1ZmZpeDsKLSAgICAgICAKLSAgICBzd2l0Y2goIHRsICkgewotICAgIGNhc2UgUEFTUzoKLSAgICAgICAgbGwgICAgICA9IGxvZ19zdWNjZXNzZnVsX3Rlc3RzOwotICAgICAgICBwcmVmaXggID0gImNoZWNrICI7Ci0gICAgICAgIHN1ZmZpeCAgPSAiIHBhc3NlZCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV0FSTjoKLSAgICAgICAgbGwgICAgICA9IGxvZ193YXJuaW5nczsKLSAgICAgICAgcHJlZml4ICA9ICJjb25kaXRpb24gIjsKLSAgICAgICAgc3VmZml4ICA9ICIgaXMgbm90IHNhdGlzZmllZCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0hFQ0s6Ci0gICAgICAgIGxsICAgICAgPSBsb2dfYWxsX2Vycm9yczsKLSAgICAgICAgcHJlZml4ICA9ICJjaGVjayAiOwotICAgICAgICBzdWZmaXggID0gIiBmYWlsZWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJFUVVJUkU6Ci0gICAgICAgIGxsICAgICAgPSBsb2dfZmF0YWxfZXJyb3JzOwotICAgICAgICBwcmVmaXggID0gImNyaXRpY2FsIGNoZWNrICI7Ci0gICAgICAgIHN1ZmZpeCAgPSAiIGZhaWxlZCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHN3aXRjaCggY3QgKSB7Ci0gICAgY2FzZSBDSEVDS19QUkVEOgotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjpiZWdpbiggZmlsZV9uYW1lLCBsaW5lX251bSApIAotICAgICAgICAgICAgICAgICAgICAgIDw8IGxsIDw8IHByZWZpeCA8PCBjaGVja19kZXNjciA8PCBzdWZmaXg7Ci0gICAgICAgIAotICAgICAgICBpZiggIXByLmhhc19lbXB0eV9tZXNzYWdlKCkgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLiAiIDw8IHByLm1lc3NhZ2UoKTsKLSAgICAgICAgCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ0hFQ0tfTVNHOgotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjpiZWdpbiggZmlsZV9uYW1lLCBsaW5lX251bSApIDw8IGxsOwotICAgICAgICAKLSAgICAgICAgaWYoIHRsID09IFBBU1MgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCBwcmVmaXggPDwgIiciIDw8IGNoZWNrX2Rlc2NyIDw8ICInIiA8PCBzdWZmaXg7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgY2hlY2tfZGVzY3I7Ci0gICAgICAgIAotICAgICAgICBpZiggIXByLmhhc19lbXB0eV9tZXNzYWdlKCkgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLiAiIDw8IHByLm1lc3NhZ2UoKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjplbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENIRUNLX0VRVUFMOiAKLSAgICBjYXNlIENIRUNLX05FOiAKLSAgICBjYXNlIENIRUNLX0xUOiAKLSAgICBjYXNlIENIRUNLX0xFOiAKLSAgICBjYXNlIENIRUNLX0dUOiAKLSAgICBjYXNlIENIRUNLX0dFOiB7Ci0gICAgICAgIHN0YXRpYyBjaGFyIGNvbnN0KiBjaGVja19zdHIgW10gPSB7ICIgPT0gIiwgIiAhPSAiLCAiIDwgIiAsICIgPD0gIiwgIiA+ICIgLCAiID49ICIgfTsKLSAgICAgICAgc3RhdGljIGNoYXIgY29uc3QqIHJldmVyX3N0ciBbXSA9IHsgIiAhPSAiLCAiID09ICIsICIgPj0gIiwgIiA+ICIgLCAiIDw9ICIsICIgPCAiICB9OwotCi0gICAgICAgIHZhX2xpc3QgYXJnczsKLQotICAgICAgICB2YV9zdGFydCggYXJncywgbnVtX29mX2FyZ3MgKTsKLSAgICAgICAgY2hhciBjb25zdCogICAgICAgICBhcmcxX2Rlc2NyICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgbGF6eV9vc3RyZWFtIGNvbnN0KiBhcmcxX3ZhbCAgICA9IHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOwotICAgICAgICBjaGFyIGNvbnN0KiAgICAgICAgIGFyZzJfZGVzY3IgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBsYXp5X29zdHJlYW0gY29uc3QqIGFyZzJfdmFsICAgID0gdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKSAKLSAgICAgICAgICAgICAgICAgICAgICA8PCBsbCA8PCBwcmVmaXggPDwgYXJnMV9kZXNjciA8PCBjaGVja19zdHJbY3QtQ0hFQ0tfRVFVQUxdIDw8IGFyZzJfZGVzY3IgPDwgc3VmZml4OwotCi0gICAgICAgIGlmKCB0bCAhPSBQQVNTICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIiBbIiA8PCAqYXJnMV92YWwgPDwgcmV2ZXJfc3RyW2N0LUNIRUNLX0VRVUFMXSA8PCAqYXJnMl92YWwgPDwgIl0iIDsKLQotICAgICAgICB2YV9lbmQoIGFyZ3MgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhcHIuaGFzX2VtcHR5X21lc3NhZ2UoKSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIuICIgPDwgcHIubWVzc2FnZSgpOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIENIRUNLX0NMT1NFOgotICAgIGNhc2UgQ0hFQ0tfQ0xPU0VfRlJBQ1RJT046IHsKLSAgICAgICAgdmFfbGlzdCBhcmdzOwotCi0gICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBudW1fb2ZfYXJncyApOwotICAgICAgICBjaGFyIGNvbnN0KiAgICAgICAgIGFyZzFfZGVzY3IgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBsYXp5X29zdHJlYW0gY29uc3QqIGFyZzFfdmFsICAgID0gdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICAgICAgYXJnMl9kZXNjciAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGxhenlfb3N0cmVhbSBjb25zdCogYXJnMl92YWwgICAgPSB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLSAgICAgICAgLyogdG9sZXJfZGVzY3IgPSAqLyAgICAgICAgICAgICAgIHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgbGF6eV9vc3RyZWFtIGNvbnN0KiB0b2xlcl92YWwgICA9IHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkgPDwgbGw7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiZGlmZmVyZW5jZXsiIDw8IHByLm1lc3NhZ2UoKSA8PCAoY3QgPT0gQ0hFQ0tfQ0xPU0UgPyAiJSIgOiAiIikKLSAgICAgICAgICAgICAgICAgICAgICA8PCAifSBiZXR3ZWVuICIgPDwgYXJnMV9kZXNjciA8PCAieyIgPDwgKmFyZzFfdmFsCi0gICAgICAgICAgICAgICAgICAgICAgPDwgIn0gYW5kICIgICAgICAgICAgICAgICA8PCBhcmcyX2Rlc2NyIDw8ICJ7IiA8PCAqYXJnMl92YWwKLSAgICAgICAgICAgICAgICAgICAgICA8PCAoIHRsID09IFBBU1MgPyAifSBkb2Vzbid0IGV4Y2VlZCAiIDogIn0gZXhjZWVkcyAiICkKLSAgICAgICAgICAgICAgICAgICAgICA8PCAqdG9sZXJfdmFsOwotICAgICAgICBpZiggY3QgPT0gQ0hFQ0tfQ0xPU0UgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiJSI7Ci0KLSAgICAgICAgdmFfZW5kKCBhcmdzICk7Ci0gICAgICAgIAotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjplbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ0hFQ0tfU01BTEw6IHsKLSAgICAgICAgdmFfbGlzdCBhcmdzOwotCi0gICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBudW1fb2ZfYXJncyApOwotICAgICAgICBjaGFyIGNvbnN0KiAgICAgICAgIGFyZzFfZGVzY3IgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBsYXp5X29zdHJlYW0gY29uc3QqIGFyZzFfdmFsICAgID0gdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7Ci0gICAgICAgIC8qIHRvbGVyX2Rlc2NyID0gKi8gICAgICAgICAgICAgICB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGxhenlfb3N0cmVhbSBjb25zdCogdG9sZXJfdmFsICAgPSB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjpiZWdpbiggZmlsZV9uYW1lLCBsaW5lX251bSApIDw8IGxsOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgImFic29sdXRlIHZhbHVlIG9mICIgPDwgYXJnMV9kZXNjciA8PCAieyIgPDwgKmFyZzFfdmFsIDw8ICJ9IiAKLSAgICAgICAgICAgICAgICAgICAgICA8PCAoIHRsID09IFBBU1MgPyAiIGRvZXNuJ3QgZXhjZWVkICIgOiAiIGV4Y2VlZHMgIiApCi0gICAgICAgICAgICAgICAgICAgICAgPDwgKnRvbGVyX3ZhbDsKLQotICAgICAgICB2YV9lbmQoIGFyZ3MgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhcHIuaGFzX2VtcHR5X21lc3NhZ2UoKSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIuICIgPDwgcHIubWVzc2FnZSgpOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIENIRUNLX1BSRURfV0lUSF9BUkdTOiB7Ci0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkgCi0gICAgICAgICAgICAgICAgICAgICAgPDwgbGwgPDwgcHJlZml4IDw8IGNoZWNrX2Rlc2NyOwotCi0gICAgICAgIC8vIHByaW50IHByZWRpY2F0ZSBjYWxsIGRlc2NyaXB0aW9uCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhX2xpc3QgYXJnczsKLSAgICAgICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBudW1fb2ZfYXJncyApOwotCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIoICI7Ci0gICAgICAgICAgICBmb3IoIHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgbnVtX29mX2FyZ3M7ICsraSApIHsKLSAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgICAgICAgICB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsgLy8gc2tpcCBhcmd1bWVudCB2YWx1ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiggaSAhPSBudW1fb2ZfYXJncy0xICkKLSAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLCAiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiICkiIDw8IHN1ZmZpeDsKLSAgICAgICAgICAgIHZhX2VuZCggYXJncyApOwotICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgaWYoIHRsICE9IFBBU1MgKSB7Ci0gICAgICAgICAgICB2YV9saXN0IGFyZ3M7Ci0gICAgICAgICAgICB2YV9zdGFydCggYXJncywgbnVtX29mX2FyZ3MgKTsKLQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiIGZvciAoICI7Ci0gICAgICAgICAgICBmb3IoIHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgbnVtX29mX2FyZ3M7ICsraSApIHsKLSAgICAgICAgICAgICAgICB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7IC8vIHNraXAgYXJndW1lbnQgZGVzY3JpcHRpb247ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAqdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYoIGkgIT0gbnVtX29mX2FyZ3MtMSApCi0gICAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIiwgIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIiApIjsKLSAgICAgICAgICAgIHZhX2VuZCggYXJncyApOwotICAgICAgICB9Ci0gICAgICAgCi0gICAgICAgIGlmKCAhcHIuaGFzX2VtcHR5X21lc3NhZ2UoKSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIuICIgPDwgcHIubWVzc2FnZSgpOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIENIRUNLX0VRVUFMX0NPTEw6IHsKLSAgICAgICAgdmFfbGlzdCBhcmdzOwotCi0gICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBudW1fb2ZfYXJncyApOwotICAgICAgICBjaGFyIGNvbnN0KiBsZWZ0X2JlZ2luX2Rlc2NyICAgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBjaGFyIGNvbnN0KiBsZWZ0X2VuZF9kZXNjciAgICAgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBjaGFyIGNvbnN0KiByaWdodF9iZWdpbl9kZXNjciAgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBjaGFyIGNvbnN0KiByaWdodF9lbmRfZGVzY3IgICAgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkgCi0gICAgICAgICAgICAgICAgICAgICAgPDwgbGwgPDwgcHJlZml4IAotICAgICAgICAgICAgICAgICAgICAgIDw8ICJ7ICIgPDwgbGVmdF9iZWdpbl9kZXNjciAgPDwgIiwgIiA8PCBsZWZ0X2VuZF9kZXNjciAgPDwgIiB9ID09IHsgIiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHJpZ2h0X2JlZ2luX2Rlc2NyIDw8ICIsICIgPDwgcmlnaHRfZW5kX2Rlc2NyIDw8ICIgfSIKLSAgICAgICAgICAgICAgICAgICAgICA8PCBzdWZmaXg7Ci0KLSAgICAgICAgdmFfZW5kKCBhcmdzICk7Ci0gICAgICAgIAotICAgICAgICBpZiggIXByLmhhc19lbXB0eV9tZXNzYWdlKCkgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLiAiIDw8IHByLm1lc3NhZ2UoKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjplbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBDSEVDS19CSVRXSVNFX0VRVUFMOiB7Ci0gICAgICAgIHZhX2xpc3QgYXJnczsKLQotICAgICAgICB2YV9zdGFydCggYXJncywgbnVtX29mX2FyZ3MgKTsKLSAgICAgICAgY2hhciBjb25zdCogbGVmdF9kZXNjciAgICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgY2hhciBjb25zdCogcmlnaHRfZGVzY3IgICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjpiZWdpbiggZmlsZV9uYW1lLCBsaW5lX251bSApCi0gICAgICAgICAgICAgICAgICAgICAgPDwgbGwgPDwgcHJlZml4IDw8IGxlZnRfZGVzY3IgIDw8ICIgPS49ICIgPDwgcmlnaHRfZGVzY3IgPDwgc3VmZml4OwotCi0gICAgICAgIHZhX2VuZCggYXJncyApOwotICAgICAgICAKLSAgICAgICAgaWYoICFwci5oYXNfZW1wdHlfbWVzc2FnZSgpICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIi4gIiA8PCBwci5tZXNzYWdlKCk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2goIHRsICkgewotICAgIGNhc2UgUEFTUzoKLSAgICAgICAgZnJhbWV3b3JrOjphc3NlcnRpb25fcmVzdWx0KCB0cnVlICk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2FzZSBXQVJOOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjYXNlIENIRUNLOgotICAgICAgICBmcmFtZXdvcms6OmFzc2VydGlvbl9yZXN1bHQoIGZhbHNlICk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgY2FzZSBSRVFVSVJFOgotICAgICAgICBmcmFtZXdvcms6OmFzc2VydGlvbl9yZXN1bHQoIGZhbHNlICk7Ci0KLSAgICAgICAgZnJhbWV3b3JrOjp0ZXN0X3VuaXRfYWJvcnRlZCggZnJhbWV3b3JrOjpjdXJyZW50X3Rlc3RfY2FzZSgpICk7Ci0KLSAgICAgICAgdGhyb3cgZXhlY3V0aW9uX2Fib3J0ZWQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotcHJlZGljYXRlX3Jlc3VsdAotZXF1YWxfaW1wbCggY2hhciBjb25zdCogbGVmdCwgY2hhciBjb25zdCogcmlnaHQgKQotewotICAgIHJldHVybiAobGVmdCAmJiByaWdodCkgPyBzdGQ6OnN0cmNtcCggbGVmdCwgcmlnaHQgKSA9PSAwIDogKGxlZnQgPT0gcmlnaHQpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NXQ0hBUiApCi0KLXByZWRpY2F0ZV9yZXN1bHQKLWVxdWFsX2ltcGwoIHdjaGFyX3QgY29uc3QqIGxlZnQsIHdjaGFyX3QgY29uc3QqIHJpZ2h0ICkKLXsKLSAgICByZXR1cm4gKGxlZnQgJiYgcmlnaHQpID8gc3RkOjp3Y3NjbXAoIGxlZnQsIHJpZ2h0ICkgPT0gMCA6IChsZWZ0ID09IHJpZ2h0KTsKLX0KLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19DV0NIQVIgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1pc19kZWZpbmVkX2ltcGwoIGNvbnN0X3N0cmluZyBzeW1ib2xfbmFtZSwgY29uc3Rfc3RyaW5nIHN5bWJvbF92YWx1ZSApCi17Ci0gICAgc3ltYm9sX3ZhbHVlLnRyaW1fbGVmdCggMiApOwotICAgIHJldHVybiBzeW1ib2xfbmFtZSAhPSBzeW1ib2xfdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHR0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBvdXRwdXRfdGVzdF9zdHJlYW0gICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBvdXRwdXRfdGVzdF9zdHJlYW06OkltcGwKLXsKLSAgICBzdGQ6OmZzdHJlYW0gICAgbV9wYXR0ZXJuOwotICAgIGJvb2wgICAgICAgICAgICBtX21hdGNoX29yX3NhdmU7Ci0gICAgYm9vbCAgICAgICAgICAgIG1fdGV4dF9vcl9iaW5hcnk7Ci0gICAgc3RkOjpzdHJpbmcgICAgIG1fc3luY2VkX3N0cmluZzsKLQotICAgIGNoYXIgICAgICAgICAgICBnZXRfY2hhcigpCi0gICAgewotICAgICAgICBjaGFyIHJlczsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgbV9wYXR0ZXJuLmdldCggcmVzICk7Ci0gICAgICAgIH0gd2hpbGUoIG1fdGV4dF9vcl9iaW5hcnkgJiYgcmVzID09ICdccicgJiYgIW1fcGF0dGVybi5mYWlsKCkgJiYgIW1fcGF0dGVybi5lb2YoKSApOwotCi0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0gICAgdm9pZCAgICAgICAgICAgIGNoZWNrX2FuZF9maWxsKCBwcmVkaWNhdGVfcmVzdWx0JiByZXMgKQotICAgIHsKLSAgICAgICAgaWYoICFyZXMucF9wcmVkaWNhdGVfdmFsdWUgKQotICAgICAgICAgICAgcmVzLm1lc3NhZ2UoKSA8PCAiT3V0cHV0IGNvbnRlbnQ6IFwiIiA8PCBtX3N5bmNlZF9zdHJpbmcgPDwgJ1wiJzsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1vdXRwdXRfdGVzdF9zdHJlYW06Om91dHB1dF90ZXN0X3N0cmVhbSggY29uc3Rfc3RyaW5nIHBhdHRlcm5fZmlsZV9uYW1lLCBib29sIG1hdGNoX29yX3NhdmUsIGJvb2wgdGV4dF9vcl9iaW5hcnkgKQotOiBtX3BpbXBsKCBuZXcgSW1wbCApCi17Ci0gICAgaWYoICFwYXR0ZXJuX2ZpbGVfbmFtZS5pc19lbXB0eSgpICkgewotICAgICAgICBzdGQ6Omlvczo6b3Blbm1vZGUgbSA9IG1hdGNoX29yX3NhdmUgPyBzdGQ6Omlvczo6aW4gOiBzdGQ6Omlvczo6b3V0OwotICAgICAgICBpZiggIXRleHRfb3JfYmluYXJ5ICkKLSAgICAgICAgICAgIG0gfD0gc3RkOjppb3M6OmJpbmFyeTsKLQotICAgICAgICBtX3BpbXBsLT5tX3BhdHRlcm4ub3BlbiggcGF0dGVybl9maWxlX25hbWUuYmVnaW4oKSwgbSApOwotCi0gICAgICAgIE5ETkJPT1NUX1dBUk5fTUVTU0FHRSggbV9waW1wbC0+bV9wYXR0ZXJuLmlzX29wZW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IG9wZW4gcGF0dGVybiBmaWxlICIgPDwgcGF0dGVybl9maWxlX25hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBmb3IgIiA8PCAobWF0Y2hfb3Jfc2F2ZSA/ICJyZWFkaW5nIiA6ICJ3cml0aW5nIikgKTsKLSAgICB9Ci0KLSAgICBtX3BpbXBsLT5tX21hdGNoX29yX3NhdmUgICAgPSBtYXRjaF9vcl9zYXZlOwotICAgIG1fcGltcGwtPm1fdGV4dF9vcl9iaW5hcnkgICA9IHRleHRfb3JfYmluYXJ5OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1vdXRwdXRfdGVzdF9zdHJlYW06On5vdXRwdXRfdGVzdF9zdHJlYW0oKQotewotICAgIGRlbGV0ZSBtX3BpbXBsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcmVkaWNhdGVfcmVzdWx0Ci1vdXRwdXRfdGVzdF9zdHJlYW06OmlzX2VtcHR5KCBib29sIGZsdXNoX3N0cmVhbSApCi17Ci0gICAgc3luYygpOwotCi0gICAgcmVzdWx0X3R5cGUgcmVzKCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcuZW1wdHkoKSApOwotCi0gICAgbV9waW1wbC0+Y2hlY2tfYW5kX2ZpbGwoIHJlcyApOwotCi0gICAgaWYoIGZsdXNoX3N0cmVhbSApCi0gICAgICAgIGZsdXNoKCk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcmVkaWNhdGVfcmVzdWx0Ci1vdXRwdXRfdGVzdF9zdHJlYW06OmNoZWNrX2xlbmd0aCggc3RkOjpzaXplX3QgbGVuZ3RoXywgYm9vbCBmbHVzaF9zdHJlYW0gKQotewotICAgIHN5bmMoKTsKLQotICAgIHJlc3VsdF90eXBlIHJlcyggbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmxlbmd0aCgpID09IGxlbmd0aF8gKTsKLQotICAgIG1fcGltcGwtPmNoZWNrX2FuZF9maWxsKCByZXMgKTsKLQotICAgIGlmKCBmbHVzaF9zdHJlYW0gKQotICAgICAgICBmbHVzaCgpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotcHJlZGljYXRlX3Jlc3VsdAotb3V0cHV0X3Rlc3Rfc3RyZWFtOjppc19lcXVhbCggY29uc3Rfc3RyaW5nIGFyZywgYm9vbCBmbHVzaF9zdHJlYW0gKQotewotICAgIHN5bmMoKTsKLQotICAgIHJlc3VsdF90eXBlIHJlcyggY29uc3Rfc3RyaW5nKCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcgKSA9PSBhcmcgKTsKLQotICAgIG1fcGltcGwtPmNoZWNrX2FuZF9maWxsKCByZXMgKTsKLQotICAgIGlmKCBmbHVzaF9zdHJlYW0gKQotICAgICAgICBmbHVzaCgpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotcHJlZGljYXRlX3Jlc3VsdAotb3V0cHV0X3Rlc3Rfc3RyZWFtOjptYXRjaF9wYXR0ZXJuKCBib29sIGZsdXNoX3N0cmVhbSApCi17Ci0gICAgc3luYygpOwotCi0gICAgcmVzdWx0X3R5cGUgcmVzdWx0KCB0cnVlICk7Ci0KLSAgICBpZiggIW1fcGltcGwtPm1fcGF0dGVybi5pc19vcGVuKCkgKSB7Ci0gICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICByZXN1bHQubWVzc2FnZSgpIDw8ICJQYXR0ZXJuIGZpbGUgY2FuJ3QgYmUgb3BlbmVkISI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiggbV9waW1wbC0+bV9tYXRjaF9vcl9zYXZlICkgewotICAgICAgICAgICAgZm9yICggc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBpID0gMDsgaSA8IG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5sZW5ndGgoKTsgKytpICkgewotICAgICAgICAgICAgICAgIGNoYXIgYyA9IG1fcGltcGwtPmdldF9jaGFyKCk7Ci0KLSAgICAgICAgICAgICAgICByZXN1bHQgPSAhbV9waW1wbC0+bV9wYXR0ZXJuLmZhaWwoKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICFtX3BpbXBsLT5tX3BhdHRlcm4uZW9mKCkgICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgKG1fcGltcGwtPm1fc3luY2VkX3N0cmluZ1tpXSA9PSBjKTsKLQotICAgICAgICAgICAgICAgIGlmKCAhcmVzdWx0ICkgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHN1ZmZpeF9zaXplICA9IChzdGQ6Om1pbikoIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5sZW5ndGgoKSAtIGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyaW5nOjpzaXplX3R5cGU+KDUpICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IHRvIGxvZyBhcmVhIGFyb3VuZCB0aGUgbWlzbWF0Y2gKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1lc3NhZ2UoKSA8PCAiTWlzbWF0Y2ggYXQgcG9zaXRpb24gIiA8PCBpIDw8ICdcbicKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIuLi4iIDw8IG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5zdWJzdHIoIGksIHN1ZmZpeF9zaXplICkgPDwgIi4uLiIgPDwgJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIi4uLiIgPDwgYzsKLQotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvdW50ZXIgPSBzdWZmaXhfc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUoIC0tY291bnRlciApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9IG1fcGltcGwtPmdldF9jaGFyKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBtX3BpbXBsLT5tX3BhdHRlcm4uZmFpbCgpIHx8IG1fcGltcGwtPm1fcGF0dGVybi5lb2YoKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tZXNzYWdlKCkgPDwgYzsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tZXNzYWdlKCkgPDwgIi4uLiI7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gc2tpcCByZXN0IG9mIHRoZSBieXRlcy4gTWF5IGhlbHAgZm9yIGZ1cnRoZXIgbWF0Y2hpbmcKLSAgICAgICAgICAgICAgICAgICAgbV9waW1wbC0+bV9wYXR0ZXJuLmlnbm9yZSggCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcubGVuZ3RoKCkgLSBpIC0gc3VmZml4X3NpemUpICk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fcGltcGwtPm1fcGF0dGVybi53cml0ZSggbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5sZW5ndGgoKSApICk7Ci0gICAgICAgICAgICBtX3BpbXBsLT5tX3BhdHRlcm4uZmx1c2goKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmKCBmbHVzaF9zdHJlYW0gKQotICAgICAgICBmbHVzaCgpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotb3V0cHV0X3Rlc3Rfc3RyZWFtOjpmbHVzaCgpCi17Ci0gICAgbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmVyYXNlKCk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0gICAgc3RyKCBzdGQ6OnN0cmluZygpICk7Ci0jZWxzZQotICAgIHNlZWtwKCAwLCBzdGQ6Omlvczo6YmVnICk7Ci0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RkOjpzaXplX3QKLW91dHB1dF90ZXN0X3N0cmVhbTo6bGVuZ3RoKCkKLXsKLSAgICBzeW5jKCk7Ci0KLSAgICByZXR1cm4gbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmxlbmd0aCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1vdXRwdXRfdGVzdF9zdHJlYW06OnN5bmMoKQotewotI2lmZGVmIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotICAgIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5hc3NpZ24oIHN0cigpLCBwY291bnQoKSApOwotICAgIGZyZWV6ZSggZmFsc2UgKTsKLSNlbHNlCi0gICAgbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nID0gc3RyKCk7Ci0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdGVzdF90b29scwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVEVTVF9UT09MU19JUFBfMDEyMjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbG9nLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9sb2cuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWI3YzEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9sb2cuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQ0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1ldHMgVW5pdCBUZXN0IExvZwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTE9HX0lQUF8wMTIyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTE9HX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nX2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dC94bWxfbG9nX2Zvcm1hdHRlci5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW8vaW9zX3N0YXRlLmhwcD4KLXR5cGVkZWYgOjpuZG5ib29zdDo6aW86Omlvc19iYXNlX2FsbF9zYXZlciBpb19zYXZlcl90eXBlOwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGVudHJ5X3ZhbHVlX2NvbGxlY3RvciAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotZW50cnlfdmFsdWVfY29sbGVjdG9yIGNvbnN0JgotZW50cnlfdmFsdWVfY29sbGVjdG9yOjpvcGVyYXRvcjw8KCBsYXp5X29zdHJlYW0gY29uc3QmIHYgKSBjb25zdAotewotICAgIHVuaXRfdGVzdF9sb2cgPDwgdjsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZW50cnlfdmFsdWVfY29sbGVjdG9yIGNvbnN0JiAKLWVudHJ5X3ZhbHVlX2NvbGxlY3Rvcjo6b3BlcmF0b3I8PCggY29uc3Rfc3RyaW5nIHYgKSBjb25zdAotewotICAgIHVuaXRfdGVzdF9sb2cgPDwgdjsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZW50cnlfdmFsdWVfY29sbGVjdG9yOjp+ZW50cnlfdmFsdWVfY29sbGVjdG9yKCkKLXsKLSAgICBpZiggbV9sYXN0ICkKLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCBsb2c6OmVuZCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotCi1zdHJ1Y3QgdW5pdF90ZXN0X2xvZ19pbXBsIHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHVuaXRfdGVzdF9sb2dfaW1wbCgpCi0gICAgOiBtX3N0cmVhbSggcnVudGltZV9jb25maWc6OmxvZ19zaW5rKCkgKQotICAgICwgbV9zdHJlYW1fc3RhdGVfc2F2ZXIoIG5ldyBpb19zYXZlcl90eXBlKCAqbV9zdHJlYW0gKSApCi0gICAgLCBtX3RocmVzaG9sZF9sZXZlbCggbG9nX2FsbF9lcnJvcnMgKQotICAgICwgbV9sb2dfZm9ybWF0dGVyKCBuZXcgb3V0cHV0Ojpjb21waWxlcl9sb2dfZm9ybWF0dGVyICkKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gbG9nIGRhdGEKLSAgICB0eXBlZGVmIHNjb3BlZF9wdHI8dW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI+IGZvcm1hdHRlcl9wdHI7Ci0gICAgdHlwZWRlZiBzY29wZWRfcHRyPGlvX3NhdmVyX3R5cGU+ICAgICAgICAgICBzYXZlcl9wdHI7Ci0KLSAgICBzdGQ6Om9zdHJlYW0qICAgICAgIG1fc3RyZWFtOwotICAgIHNhdmVyX3B0ciAgICAgICAgICAgbV9zdHJlYW1fc3RhdGVfc2F2ZXI7Ci0gICAgbG9nX2xldmVsICAgICAgICAgICBtX3RocmVzaG9sZF9sZXZlbDsKLSAgICBmb3JtYXR0ZXJfcHRyICAgICAgIG1fbG9nX2Zvcm1hdHRlcjsKLQotICAgIC8vIGVudHJ5IGRhdGEKLSAgICBib29sICAgICAgICAgICAgICAgIG1fZW50cnlfaW5fcHJvZ3Jlc3M7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICBtX2VudHJ5X3N0YXJ0ZWQ7Ci0gICAgbG9nX2VudHJ5X2RhdGEgICAgICBtX2VudHJ5X2RhdGE7Ci0KLSAgICAvLyBjaGVjayBwb2ludCBkYXRhCi0gICAgbG9nX2NoZWNrcG9pbnRfZGF0YSBtX2NoZWNrcG9pbnRfZGF0YTsKLQotICAgIC8vIGhlbHBlciBmdW5jdGlvbnMKLSAgICBzdGQ6Om9zdHJlYW0mICAgICAgIHN0cmVhbSgpICAgICAgICAgICAgeyByZXR1cm4gKm1fc3RyZWFtOyB9Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBzZXRfY2hlY2twb2ludCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCBjb25zdF9zdHJpbmcgbXNnICkKLSAgICB7Ci0gICAgICAgIGFzc2lnbl9vcCggbV9jaGVja3BvaW50X2RhdGEubV9tZXNzYWdlLCBtc2csIDAgKTsKLSAgICAgICAgbV9jaGVja3BvaW50X2RhdGEubV9maWxlX25hbWUgICAgPSBmaWxlOwotICAgICAgICBtX2NoZWNrcG9pbnRfZGF0YS5tX2xpbmVfbnVtICAgID0gbGluZV9udW07Ci0gICAgfQotfTsKLQotdW5pdF90ZXN0X2xvZ19pbXBsJiBzX2xvZ19pbXBsKCkgeyBzdGF0aWMgdW5pdF90ZXN0X2xvZ19pbXBsIHRoZV9pbnN0OyByZXR1cm4gdGhlX2luc3Q7IH0KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190Ojp0ZXN0X3N0YXJ0KCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgPT0gbG9nX25vdGhpbmcgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfc3RhcnQoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgdGVzdF9jYXNlc19hbW91bnQgKTsKLQotICAgIGlmKCBydW50aW1lX2NvbmZpZzo6c2hvd19idWlsZF9pbmZvKCkgKQotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfYnVpbGRfaW5mbyggc19sb2dfaW1wbCgpLnN0cmVhbSgpICk7Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyA9IGZhbHNlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3RfZmluaXNoKCkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsID09IGxvZ19ub3RoaW5nICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2ZpbmlzaCggc19sb2dfaW1wbCgpLnN0cmVhbSgpICk7Ci0KLSAgICBzX2xvZ19pbXBsKCkuc3RyZWFtKCkuZmx1c2goKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190Ojp0ZXN0X2Fib3J0ZWQoKQotewotICAgIE5ETkJPT1NUX1RFU1RfTE9HX0VOVFJZKCBsb2dfbWVzc2FnZXMgKSA8PCAiVGVzdCBpcyBhYm9ydGVkIjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190Ojp0ZXN0X3VuaXRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgPiBsb2dfdGVzdF91bml0cyApCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApCi0gICAgICAgICp0aGlzIDw8IGxvZzo6ZW5kKCk7Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT50ZXN0X3VuaXRfc3RhcnQoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgdHUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190Ojp0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nIGVsYXBzZWQgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgPiBsb2dfdGVzdF91bml0cyApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2NoZWNrcG9pbnRfZGF0YS5jbGVhcigpOwotCi0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkKLSAgICAgICAgKnRoaXMgPDwgbG9nOjplbmQoKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPnRlc3RfdW5pdF9maW5pc2goIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgdHUsIGVsYXBzZWQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190Ojp0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCA+IGxvZ190ZXN0X3VuaXRzICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkKLSAgICAgICAgKnRoaXMgPDwgbG9nOjplbmQoKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPnRlc3RfdW5pdF9za2lwcGVkKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHR1ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6dGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgKQotewotICAgIC8vIGRvIG5vdGhpbmcKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190Ojphc3NlcnRpb25fcmVzdWx0KCBib29sICkKLXsKLSAgICAvLyBkbyBub3RoaW5nCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6ZXhjZXB0aW9uX2NhdWdodCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKQotewotICAgIGxvZ19sZXZlbCBsID0KLSAgICAgICAgZXguY29kZSgpIDw9IGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IgICA/IGxvZ19jcHBfZXhjZXB0aW9uX2Vycm9ycyA6Ci0gICAgICAgIChleC5jb2RlKCkgPD0gZXhlY3V0aW9uX2V4Y2VwdGlvbjo6dGltZW91dF9lcnJvciAgICAgICAgPyBsb2dfc3lzdGVtX2Vycm9ycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbG9nX2ZhdGFsX2Vycm9ycyApOwotCi0gICAgaWYoIGwgPj0gc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsICkgewotICAgICAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICAgICAgKnRoaXMgPDwgbG9nOjplbmQoKTsKLQotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZXhjZXB0aW9uKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHNfbG9nX2ltcGwoKS5tX2NoZWNrcG9pbnRfZGF0YSwgZXggKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6c2V0X2NoZWNrcG9pbnQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIG1zZyApCi17Ci0gICAgc19sb2dfaW1wbCgpLnNldF9jaGVja3BvaW50KCBmaWxlLCBsaW5lX251bSwgbXNnICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWNoYXIKLXNldF91bml4X3NsYXNoKCBjaGFyIGluICkKLXsKLSAgICByZXR1cm4gaW4gPT0gJ1xcJyA/ICcvJyA6IGluOwotfQotICAgIAotdW5pdF90ZXN0X2xvZ190JgotdW5pdF90ZXN0X2xvZ190OjpvcGVyYXRvcjw8KCBsb2c6OmJlZ2luIGNvbnN0JiBiICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICAqdGhpcyA8PCBsb2c6OmVuZCgpOwotCi0gICAgc19sb2dfaW1wbCgpLm1fc3RyZWFtX3N0YXRlX3NhdmVyLT5yZXN0b3JlKCk7Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLmNsZWFyKCk7Ci0KLSAgICBhc3NpZ25fb3AoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9maWxlX25hbWUsIGIubV9maWxlX25hbWUsIDAgKTsKLQotICAgIC8vIG5vcm1hbGl6ZSBmaWxlIG5hbWUKLSAgICBzdGQ6OnRyYW5zZm9ybSggc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5tX2ZpbGVfbmFtZS5iZWdpbigpLCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fZmlsZV9uYW1lLmVuZCgpLAotICAgICAgICAgICAgICAgICAgICBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fZmlsZV9uYW1lLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICZzZXRfdW5peF9zbGFzaCApOwotCi0gICAgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5tX2xpbmVfbnVtID0gYi5tX2xpbmVfbnVtOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi11bml0X3Rlc3RfbG9nX3QmCi11bml0X3Rlc3RfbG9nX3Q6Om9wZXJhdG9yPDwoIGxvZzo6ZW5kIGNvbnN0JiApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X2ZpbmlzaCggc19sb2dfaW1wbCgpLnN0cmVhbSgpICk7Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyA9IGZhbHNlOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi11bml0X3Rlc3RfbG9nX3QmCi11bml0X3Rlc3RfbG9nX3Q6Om9wZXJhdG9yPDwoIGxvZ19sZXZlbCBsICkKLXsKLSAgICBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fbGV2ZWwgPSBsOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi11dF9kZXRhaWw6OmVudHJ5X3ZhbHVlX2NvbGxlY3RvcgotdW5pdF90ZXN0X2xvZ190OjpvcGVyYXRvcigpKCBsb2dfbGV2ZWwgbCApCi17Ci0gICAgKnRoaXMgPDwgbDsKLQotICAgIHJldHVybiB1dF9kZXRhaWw6OmVudHJ5X3ZhbHVlX2NvbGxlY3RvcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi11bml0X3Rlc3RfbG9nX3Q6OmxvZ19lbnRyeV9zdGFydCgpCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkgCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgc3dpdGNoKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fbGV2ZWwgKSB7Ci0gICAgY2FzZSBsb2dfc3VjY2Vzc2Z1bF90ZXN0czoKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X3N0YXJ0KCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI6Ok5ETkJPT1NUX1VUTF9FVF9JTkZPICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgbG9nX21lc3NhZ2VzOgotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfc3RhcnQoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjo6TkROQk9PU1RfVVRMX0VUX01FU1NBR0UgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBsb2dfd2FybmluZ3M6Ci0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19lbnRyeV9zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyOjpORE5CT09TVF9VVExfRVRfV0FSTklORyApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGxvZ19hbGxfZXJyb3JzOgotICAgIGNhc2UgbG9nX2NwcF9leGNlcHRpb25fZXJyb3JzOgotICAgIGNhc2UgbG9nX3N5c3RlbV9lcnJvcnM6Ci0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19lbnRyeV9zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyOjpORE5CT09TVF9VVExfRVRfRVJST1IgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBsb2dfZmF0YWxfZXJyb3JzOgotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfc3RhcnQoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjo6TkROQk9PU1RfVVRMX0VUX0ZBVEFMX0VSUk9SICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgbG9nX25vdGhpbmc6Ci0gICAgY2FzZSBsb2dfdGVzdF91bml0czoKLSAgICBjYXNlIGludmFsaWRfbG9nX2xldmVsOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgPSB0cnVlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuaXRfdGVzdF9sb2dfdCYKLXVuaXRfdGVzdF9sb2dfdDo6b3BlcmF0b3I8PCggY29uc3Rfc3RyaW5nIHZhbHVlICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5tX2xldmVsID49IHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCAmJiAhdmFsdWUuZW1wdHkoKSAmJiBsb2dfZW50cnlfc3RhcnQoKSApCi0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19lbnRyeV92YWx1ZSggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCB2YWx1ZSApOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi11bml0X3Rlc3RfbG9nX3QmCi11bml0X3Rlc3RfbG9nX3Q6Om9wZXJhdG9yPDwoIGxhenlfb3N0cmVhbSBjb25zdCYgdmFsdWUgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fbGV2ZWwgPj0gc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsICYmICF2YWx1ZS5lbXB0eSgpICYmIGxvZ19lbnRyeV9zdGFydCgpICkKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X3ZhbHVlKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHZhbHVlICk7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6c2V0X3N0cmVhbSggc3RkOjpvc3RyZWFtJiBzdHIgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNfbG9nX2ltcGwoKS5tX3N0cmVhbSA9ICZzdHI7Ci0gICAgc19sb2dfaW1wbCgpLm1fc3RyZWFtX3N0YXRlX3NhdmVyLnJlc2V0KCBuZXcgaW9fc2F2ZXJfdHlwZSggc3RyICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190OjpzZXRfdGhyZXNob2xkX2xldmVsKCBsb2dfbGV2ZWwgbGV2ICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgfHwgbGV2ID09IGludmFsaWRfbG9nX2xldmVsICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsID0gbGV2OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnNldF9mb3JtYXQoIG91dHB1dF9mb3JtYXQgbG9nX2Zvcm1hdCApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYoIGxvZ19mb3JtYXQgPT0gQ0xGICkKLSAgICAgICAgc2V0X2Zvcm1hdHRlciggbmV3IG91dHB1dDo6Y29tcGlsZXJfbG9nX2Zvcm1hdHRlciApOwotICAgIGVsc2UKLSAgICAgICAgc2V0X2Zvcm1hdHRlciggbmV3IG91dHB1dDo6eG1sX2xvZ19mb3JtYXR0ZXIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190OjpzZXRfZm9ybWF0dGVyKCB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlciogdGhlX2Zvcm1hdHRlciApCi17Ci0gICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci5yZXNldCggdGhlX2Zvcm1hdHRlciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyOjpsb2dfZW50cnlfdmFsdWUoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgbGF6eV9vc3RyZWFtIGNvbnN0JiB2YWx1ZSApCi17Ci0gICAgbG9nX2VudHJ5X3ZhbHVlKCBvc3RyLCAod3JhcF9zdHJpbmdzdHJlYW0oKS5yZWYoKSA8PCB2YWx1ZSkuc3RyKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTE9HX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9tYWluLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9tYWluLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI2OTFmNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbWFpbi5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IG1haW4gZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gZm9yIFVuaXQgVGVzdCBGcmFtZXdvcmsKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01BSU5fSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NQUlOX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0jaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAhTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPCAxMzAwICkgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoIF9fU1VOUFJPX0NDLCA8IDB4NTEwMCApCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU1VQUE9SVF9SVU5fQllfTkFNRQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvdG9rZW5faXRlcmF0b3IuaHBwPgotI2VuZGlmCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX2ZpbHRlciAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgdGVzdF9jYXNlX2ZpbHRlciA6IHB1YmxpYyB0ZXN0X3RyZWVfdmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IHNpbmdsZV9maWx0ZXIgewotICAgICAgICBzaW5nbGVfZmlsdGVyKCBjb25zdF9zdHJpbmcgaW4gKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiggaW4gPT0gIioiICkKLSAgICAgICAgICAgICAgICBtX2tpbmQgID0gU0ZLX0FMTDsKLSAgICAgICAgICAgIGVsc2UgaWYoIGZpcnN0X2NoYXIoIGluICkgPT0gJyonICYmIGxhc3RfY2hhciggaW4gKSA9PSAnKicgKSB7Ci0gICAgICAgICAgICAgICAgbV9raW5kICA9IFNGS19TVUJTVFI7Ci0gICAgICAgICAgICAgICAgbV92YWx1ZSA9IGluLnN1YnN0ciggMSwgaW4uc2l6ZSgpLTEgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYoIGZpcnN0X2NoYXIoIGluICkgPT0gJyonICkgewotICAgICAgICAgICAgICAgIG1fa2luZCAgPSBTRktfVFJBSUxJTkc7Ci0gICAgICAgICAgICAgICAgbV92YWx1ZSA9IGluLnN1YnN0ciggMSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiggbGFzdF9jaGFyKCBpbiApID09ICcqJyApIHsKLSAgICAgICAgICAgICAgICBtX2tpbmQgID0gU0ZLX0xFQURJTkc7Ci0gICAgICAgICAgICAgICAgbV92YWx1ZSA9IGluLnN1YnN0ciggMCwgaW4uc2l6ZSgpLTEgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG1fa2luZCAgPSBTRktfTUFUQ0g7Ci0gICAgICAgICAgICAgICAgbV92YWx1ZSA9IGluOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIGJvb2wgICAgICAgICAgICBwYXNzKCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3Rfc3RyaW5nIG5hbWUoIHR1LnBfbmFtZSApOwotICAgIAotICAgICAgICAgICAgc3dpdGNoKCBtX2tpbmQgKSB7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY2FzZSBTRktfQUxMOgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICBjYXNlIFNGS19MRUFESU5HOgotICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLnN1YnN0ciggMCwgbV92YWx1ZS5zaXplKCkgKSA9PSBtX3ZhbHVlOwotCi0gICAgICAgICAgICBjYXNlIFNGS19UUkFJTElORzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmFtZS5zaXplKCkgPj0gbV92YWx1ZS5zaXplKCkgJiYgbmFtZS5zdWJzdHIoIG5hbWUuc2l6ZSgpIC0gbV92YWx1ZS5zaXplKCkgKSA9PSBtX3ZhbHVlOwotCi0gICAgICAgICAgICBjYXNlIFNGS19TVUJTVFI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUuZmluZCggbV92YWx1ZSApICE9IGNvbnN0X3N0cmluZzo6bnBvczsKLQotICAgICAgICAgICAgY2FzZSBTRktfTUFUQ0g6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gdHUucF9uYW1lLmdldCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVudW0ga2luZCB7IFNGS19BTEwsIFNGS19MRUFESU5HLCBTRktfVFJBSUxJTkcsIFNGS19TVUJTVFIsIFNGS19NQVRDSCB9OwotCi0gICAgICAgIGtpbmQgICAgICAgICAgICBtX2tpbmQ7Ci0gICAgICAgIGNvbnN0X3N0cmluZyAgICBtX3ZhbHVlOwotICAgIH07Ci0gICAgLy8gQ29uc3RydWN0b3IKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9TVVBQT1JUX1JVTl9CWV9OQU1FCi0gICAgZXhwbGljaXQgICAgICAgIHRlc3RfY2FzZV9maWx0ZXIoIGNvbnN0X3N0cmluZyApIDogbV9kZXB0aCggMCApIHt9Ci0jZWxzZQotICAgIGV4cGxpY2l0ICAgICAgICB0ZXN0X2Nhc2VfZmlsdGVyKCBjb25zdF9zdHJpbmcgdGNfdG9fcnVuICkgCi0gICAgOiBtX2RlcHRoKCAwICkKLSAgICB7Ci0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIHRjX3RvX3J1biwgKGRyb3BwZWRfZGVsaW1ldGVycyA9ICIvIiwga2VwdF9kZWxpbWV0ZXJzID0gZHRfbm9uZSkgKTsKLQotICAgICAgICB3aGlsZSggdGl0ICE9IHN0cmluZ190b2tlbl9pdGVyYXRvcigpICkgewotICAgICAgICAgICAgbV9maWx0ZXJzLnB1c2hfYmFjayggCi0gICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c2luZ2xlX2ZpbHRlcj4oIHN0cmluZ190b2tlbl9pdGVyYXRvciggKnRpdCwgKGRyb3BwZWRfZGVsaW1ldGVycyA9ICIsIiwga2VwdF9kZWxpbWV0ZXJzID0gZHRfbm9uZSkgICksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3IoKSApICk7Ci0KLSAgICAgICAgICAgICsrdGl0OyAgICAgICAgICAgCi0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLSAgICAKLSAgICB2b2lkICAgICAgICAgICAgZmlsdGVyX3VuaXQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotICAgIHsKLSAgICAgICAgaWYoICgrK21fZGVwdGggLSAxKSA+IG1fZmlsdGVycy5zaXplKCkgKSB7Ci0gICAgICAgICAgICB0dS5wX2VuYWJsZWQudmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIG1fZGVwdGggPT0gMSApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8c2luZ2xlX2ZpbHRlcj4gY29uc3QmIGZpbHRlcnMgPSBtX2ZpbHRlcnNbbV9kZXB0aC0yXTsKLQotICAgICAgICB0dS5wX2VuYWJsZWQudmFsdWUgPQotICAgICAgICAgICAgc3RkOjpmaW5kX2lmKCBmaWx0ZXJzLmJlZ2luKCksIGZpbHRlcnMuZW5kKCksIGJpbmQoICZzaW5nbGVfZmlsdGVyOjpwYXNzLCBfMSwgbmRuYm9vc3Q6OnJlZih0dSkgKSApICE9IGZpbHRlcnMuZW5kKCk7Ci0gICAgfQotCi0gICAgLy8gdGVzdCB0cmVlIHZpc2l0b3IgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgIHZpc2l0KCB0ZXN0X2Nhc2UgY29uc3QmIHRjICkKLSAgICB7Ci0gICAgICAgIGlmKCBtX2RlcHRoIDwgbV9maWx0ZXJzLnNpemUoKSApIHsKLSAgICAgICAgICAgIHRjLnBfZW5hYmxlZC52YWx1ZSA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZmlsdGVyX3VuaXQoIHRjICk7Ci0KLSAgICAgICAgLS1tX2RlcHRoOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCAgICB0ZXN0X3N1aXRlX3N0YXJ0KCB0ZXN0X3N1aXRlIGNvbnN0JiB0cyApCi0gICAgeyAKLSAgICAgICAgZmlsdGVyX3VuaXQoIHRzICk7Ci0KLSAgICAgICAgaWYoICF0cy5wX2VuYWJsZWQgKQotICAgICAgICAgICAgLS1tX2RlcHRoOwotCi0gICAgICAgIHJldHVybiB0cy5wX2VuYWJsZWQ7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICAgIHRlc3Rfc3VpdGVfZmluaXNoKCB0ZXN0X3N1aXRlIGNvbnN0JiApICB7IC0tbV9kZXB0aDsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPHNpbmdsZV9maWx0ZXI+ID4gICAgbV9maWx0ZXJzOwotICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kZXB0aDsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9tYWluICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW50IE5ETkJPT1NUX1RFU1RfREVDTAotdW5pdF90ZXN0X21haW4oIGluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jLCBpbnQgYXJnYywgY2hhciogYXJndltdICkKLXsKLSAgICB0cnkgewotICAgICAgICBmcmFtZXdvcms6OmluaXQoIGluaXRfZnVuYywgYXJnYywgYXJndiApOwotCi0gICAgICAgIGlmKCAhcnVudGltZV9jb25maWc6OnRlc3RfdG9fcnVuKCkuaXNfZW1wdHkoKSApIHsKLSAgICAgICAgICAgIHRlc3RfY2FzZV9maWx0ZXIgZmlsdGVyKCBydW50aW1lX2NvbmZpZzo6dGVzdF90b19ydW4oKSApOwotCi0gICAgICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5wX2lkLCBmaWx0ZXIgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZyYW1ld29yazo6cnVuKCk7Ci0KLSAgICAgICAgcmVzdWx0c19yZXBvcnRlcjo6bWFrZV9yZXBvcnQoKTsKLQotICAgICAgICByZXR1cm4gcnVudGltZV9jb25maWc6Om5vX3Jlc3VsdF9jb2RlKCkgCi0gICAgICAgICAgICAgICAgICAgID8gbmRuYm9vc3Q6OmV4aXRfc3VjY2VzcwotICAgICAgICAgICAgICAgICAgICA6IHJlc3VsdHNfY29sbGVjdG9yLnJlc3VsdHMoIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5wX2lkICkucmVzdWx0X2NvZGUoKTsKLSAgICB9Ci0gICAgY2F0Y2goIGZyYW1ld29yazo6bm90aGluZ190b190ZXN0IGNvbnN0JiApIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpleGl0X3N1Y2Nlc3M7Ci0gICAgfQotICAgIGNhdGNoKCBmcmFtZXdvcms6OmludGVybmFsX2Vycm9yIGNvbnN0JiBleCApIHsKLSAgICAgICAgcmVzdWx0c19yZXBvcnRlcjo6Z2V0X3N0cmVhbSgpIDw8ICJCb29zdC5UZXN0IGZyYW1ld29yayBpbnRlcm5hbCBlcnJvcjogIiA8PCBleC53aGF0KCkgPDwgc3RkOjplbmRsOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpleGl0X2V4Y2VwdGlvbl9mYWlsdXJlOwotICAgIH0KLSAgICBjYXRjaCggZnJhbWV3b3JrOjpzZXR1cF9lcnJvciBjb25zdCYgZXggKSB7Ci0gICAgICAgIHJlc3VsdHNfcmVwb3J0ZXI6OmdldF9zdHJlYW0oKSA8PCAiVGVzdCBzZXR1cCBlcnJvcjogIiA8PCBleC53aGF0KCkgPDwgc3RkOjplbmRsOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpleGl0X2V4Y2VwdGlvbl9mYWlsdXJlOwotICAgIH0KLSAgICBjYXRjaCggLi4uICkgewotICAgICAgICByZXN1bHRzX3JlcG9ydGVyOjpnZXRfc3RyZWFtKCkgPDwgIkJvb3N0LlRlc3QgZnJhbWV3b3JrIGludGVybmFsIGVycm9yOiB1bmtub3duIHJlYXNvbiIgPDwgc3RkOjplbmRsOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpleGl0X2V4Y2VwdGlvbl9mYWlsdXJlOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9URVNUX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9URVNUX05PX01BSU4pCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgbWFpbiBmdW5jdGlvbiBmb3IgdGVzdHMgdXNpbmcgbGliICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW50IE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMCi1tYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICkKLXsKLSAgICAvLyBwcm90b3R5cGUgZm9yIHVzZXIncyB1bml0IHRlc3QgaW5pdCBmdW5jdGlvbgotI2lmZGVmIE5ETkJPT1NUX1RFU1RfQUxURVJOQVRJVkVfSU5JVF9BUEkKLSAgICBleHRlcm4gYm9vbCBpbml0X3VuaXRfdGVzdCgpOwotCi0gICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6aW5pdF91bml0X3Rlc3RfZnVuYyBpbml0X2Z1bmMgPSAmaW5pdF91bml0X3Rlc3Q7Ci0jZWxzZQotICAgIGV4dGVybiA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnRlc3Rfc3VpdGUqIGluaXRfdW5pdF90ZXN0X3N1aXRlKCBpbnQgYXJnYywgY2hhciogYXJndltdICk7Ci0KLSAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojppbml0X3VuaXRfdGVzdF9mdW5jIGluaXRfZnVuYyA9ICZpbml0X3VuaXRfdGVzdF9zdWl0ZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dW5pdF90ZXN0X21haW4oIGluaXRfZnVuYywgYXJnYywgYXJndiApOwotfQotCi0jZW5kaWYgLy8gIU5ETkJPT1NUX1RFU1RfRFlOX0xJTksgJiYgIU5ETkJPT1NUX1RFU1RfTk9fTUFJTgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01BSU5fSVBQXzAxMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X21vbml0b3IuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X21vbml0b3IuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzQ3MDFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9tb25pdG9yLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBzcGVjaWZpYyBzdWJjbGFzcyBvZiBFeGVjdXRvbiBNb25pdG9yIHVzZWQgYnkgVW5pdAotLy8gIFRlc3QgRnJhbWV3b3JrIHRvIG1vbml0b3IgdGVzdCBjYXNlcyBydW4uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NT05JVE9SX0lQUF8wMTIyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTU9OSVRPUl9JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9tb25pdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgemVyb19yZXR1cm5fd3JhcHBlcl90IHsKLSAgICBleHBsaWNpdCB6ZXJvX3JldHVybl93cmFwcGVyX3QoIEYgY29uc3QmIGYgKSA6IG1fZiggZiApIHt9Ci0gICAgCi0gICAgaW50IG9wZXJhdG9yKCkoKSB7IG1fZigpOyByZXR1cm4gMDsgfQotICAgIAotICAgIEYgY29uc3QmIG1fZjsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci16ZXJvX3JldHVybl93cmFwcGVyX3Q8Rj4KLXplcm9fcmV0dXJuX3dyYXBwZXIoIEYgY29uc3QmIGYgKQotewotICAgIHJldHVybiB6ZXJvX3JldHVybl93cmFwcGVyX3Q8Rj4oIGYgKTsKLX0KLQotfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB1bml0X3Rlc3RfbW9uaXRvciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXVuaXRfdGVzdF9tb25pdG9yX3Q6OmVycm9yX2xldmVsCi11bml0X3Rlc3RfbW9uaXRvcl90OjpleGVjdXRlX2FuZF90cmFuc2xhdGUoIHRlc3RfY2FzZSBjb25zdCYgdGMgKQotewotICAgIHRyeSB7Ci0gICAgICAgIHBfY2F0Y2hfc3lzdGVtX2Vycm9ycy52YWx1ZSAgICAgPSBydW50aW1lX2NvbmZpZzo6Y2F0Y2hfc3lzX2Vycm9ycygpOwotICAgICAgICBwX3RpbWVvdXQudmFsdWUgICAgICAgICAgICAgICAgID0gdGMucF90aW1lb3V0LmdldCgpOwotICAgICAgICBwX2F1dG9fc3RhcnRfZGJnLnZhbHVlICAgICAgICAgID0gcnVudGltZV9jb25maWc6OmF1dG9fc3RhcnRfZGJnKCk7Ci0gICAgICAgIHBfdXNlX2FsdF9zdGFjay52YWx1ZSAgICAgICAgICAgPSBydW50aW1lX2NvbmZpZzo6dXNlX2FsdF9zdGFjaygpOwotICAgICAgICBwX2RldGVjdF9mcF9leGNlcHRpb25zLnZhbHVlICAgID0gcnVudGltZV9jb25maWc6OmRldGVjdF9mcF9leGNlcHRpb25zKCk7Ci0KLSAgICAgICAgZXhlY3V0ZSggY2FsbGJhY2swPGludD4oIHplcm9fcmV0dXJuX3dyYXBwZXIoIHRjLnRlc3RfZnVuYygpICkgKSApOwotICAgIH0KLSAgICBjYXRjaCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKSB7Ci0gICAgICAgIGZyYW1ld29yazo6ZXhjZXB0aW9uX2NhdWdodCggZXggKTsKLSAgICAgICAgZnJhbWV3b3JrOjp0ZXN0X3VuaXRfYWJvcnRlZCggZnJhbWV3b3JrOjpjdXJyZW50X3Rlc3RfY2FzZSgpICk7Ci0KLSAgICAgICAgLy8gdHJhbnNsYXRlIGV4ZWN1dGlvbl9leGNlcHRpb246OmVycm9yX2NvZGUgdG8gZXJyb3JfbGV2ZWwKLSAgICAgICAgc3dpdGNoKCBleC5jb2RlKCkgKSB7Ci0gICAgICAgIGNhc2UgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6bm9fZXJyb3I6ICAgICAgICAgICAgIHJldHVybiB0ZXN0X29rOwotICAgICAgICBjYXNlIGV4ZWN1dGlvbl9leGNlcHRpb246OnVzZXJfZXJyb3I6ICAgICAgICAgICByZXR1cm4gdW5leHBlY3RlZF9leGNlcHRpb247Ci0gICAgICAgIGNhc2UgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvcjogIHJldHVybiB1bmV4cGVjdGVkX2V4Y2VwdGlvbjsKLSAgICAgICAgY2FzZSBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3I6ICAgICAgICAgcmV0dXJuIG9zX2V4Y2VwdGlvbjsKLSAgICAgICAgY2FzZSBleGVjdXRpb25fZXhjZXB0aW9uOjp0aW1lb3V0X2Vycm9yOiAgICAgICAgcmV0dXJuIG9zX3RpbWVvdXQ7Ci0gICAgICAgIGNhc2UgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6dXNlcl9mYXRhbF9lcnJvcjoKLSAgICAgICAgY2FzZSBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3I6ICAgcmV0dXJuIGZhdGFsX2Vycm9yOwotICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5leHBlY3RlZF9leGNlcHRpb247Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdGVzdF9vazsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTU9OSVRPUl9JUFBfMDEyMjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfcGFyYW1ldGVycy5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfcGFyYW1ldGVycy5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZjNmYTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsNTI3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDYzNjQwICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzaW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIFVuaXQgVGVzdCBGcmFtZXdvcmsgcGFyYW1ldGVyCi0vLyAgaGFuZGxpbmcgcm91dGluZXMuIE1heSBiZSByZXdyaXR0ZW4gaW4gZnV0dXJlIHRvIHVzZSBzb21lIGtpbmQgb2YKLS8vICBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHBhcnNpbmcgZmFjaWxpdHkgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlIGhhbmRsaW5nCi0vLyAgZmFjaWxpdHkKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1BBUkFNRVRFUlNfSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9QQVJBTUVURVJTX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2NvbXBhcmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9maXhlZF9tYXBwaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RlYnVnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2R1YWxfbmFtZV9wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmhwcD4KLQotbmFtZXNwYWNlIHJ0ICA9IG5kbmJvb3N0OjpydW50aW1lOwotbmFtZXNwYWNlIGNsYSA9IHJ0OjpjbGE7Ci0KLQotI2lmbmRlZiBVTkRFUl9DRQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvdmFyaWFibGUuaHBwPgotCi1uYW1lc3BhY2UgZW52ID0gcnQ6OmVudjsKLSNlbmRpZgotCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxmc3RyZWFtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jIGlmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpnZXRlbnY7IHVzaW5nIDo6c3RybmNtcDsgdXNpbmcgOjpzdHJjbXA7IH0KLSMgZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBpbnB1dCBvcGVyYXRpb25zIGZvciB1bml0X3Rlc3QncyBlbnVtcyAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RkOjppc3RyZWFtJgotb3BlcmF0b3I+Piggc3RkOjppc3RyZWFtJiBpbiwgdW5pdF90ZXN0Ojpsb2dfbGV2ZWwmIGxsICkKLXsKLSAgICBzdGF0aWMgZml4ZWRfbWFwcGluZzxjb25zdF9zdHJpbmcsdW5pdF90ZXN0Ojpsb2dfbGV2ZWwsY2FzZV9pbnNfbGVzczxjaGFyIGNvbnN0PiA+IGxvZ19sZXZlbF9uYW1lKAotICAgICAgICAiYWxsIiAgICAgICAgICAgLCBsb2dfc3VjY2Vzc2Z1bF90ZXN0cywKLSAgICAgICAgInN1Y2Nlc3MiICAgICAgICwgbG9nX3N1Y2Nlc3NmdWxfdGVzdHMsCi0gICAgICAgICJ0ZXN0X3N1aXRlIiAgICAsIGxvZ190ZXN0X3VuaXRzLAotICAgICAgICAidW5pdF9zY29wZSIgICAgLCBsb2dfdGVzdF91bml0cywKLSAgICAgICAgIm1lc3NhZ2UiICAgICAgICwgbG9nX21lc3NhZ2VzLAotICAgICAgICAid2FybmluZyIgICAgICAgLCBsb2dfd2FybmluZ3MsCi0gICAgICAgICJlcnJvciIgICAgICAgICAsIGxvZ19hbGxfZXJyb3JzLAotICAgICAgICAiY3BwX2V4Y2VwdGlvbiIgLCBsb2dfY3BwX2V4Y2VwdGlvbl9lcnJvcnMsCi0gICAgICAgICJzeXN0ZW1fZXJyb3IiICAsIGxvZ19zeXN0ZW1fZXJyb3JzLAotICAgICAgICAiZmF0YWxfZXJyb3IiICAgLCBsb2dfZmF0YWxfZXJyb3JzLAotICAgICAgICAibm90aGluZyIgICAgICAgLCBsb2dfbm90aGluZywKLQotICAgICAgICBpbnZhbGlkX2xvZ19sZXZlbAotICAgICAgICApOwotCi0gICAgc3RkOjpzdHJpbmcgdmFsOwotICAgIGluID4+IHZhbDsKLQotICAgIGxsID0gbG9nX2xldmVsX25hbWVbdmFsXTsKLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggbGwgIT0gdW5pdF90ZXN0OjppbnZhbGlkX2xvZ19sZXZlbCwgImludmFsaWQgbG9nIGxldmVsICIgKyB2YWwgKTsKLQotICAgIHJldHVybiBpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RkOjppc3RyZWFtJgotb3BlcmF0b3I+Piggc3RkOjppc3RyZWFtJiBpbiwgdW5pdF90ZXN0OjpyZXBvcnRfbGV2ZWwmIHJsICkKLXsKLSAgICBmaXhlZF9tYXBwaW5nPGNvbnN0X3N0cmluZyx1bml0X3Rlc3Q6OnJlcG9ydF9sZXZlbCxjYXNlX2luc19sZXNzPGNoYXIgY29uc3Q+ID4gcmVwb3J0X2xldmVsX25hbWUgKAotICAgICAgICAiY29uZmlybSIsICBDT05GSVJNQVRJT05fUkVQT1JULAotICAgICAgICAic2hvcnQiLCAgICBTSE9SVF9SRVBPUlQsCi0gICAgICAgICJkZXRhaWxlZCIsIERFVEFJTEVEX1JFUE9SVCwKLSAgICAgICAgIm5vIiwgICAgICAgTk9fUkVQT1JULAotCi0gICAgICAgIElOVl9SRVBPUlRfTEVWRUwKLSAgICAgICAgKTsKLQotICAgIHN0ZDo6c3RyaW5nIHZhbDsKLSAgICBpbiA+PiB2YWw7Ci0KLSAgICBybCA9IHJlcG9ydF9sZXZlbF9uYW1lW3ZhbF07Ci0gICAgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIHJsICE9IElOVl9SRVBPUlRfTEVWRUwsICJpbnZhbGlkIHJlcG9ydCBsZXZlbCAiICsgdmFsICk7Ci0KLSAgICByZXR1cm4gaW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0ZDo6aXN0cmVhbSYKLW9wZXJhdG9yPj4oIHN0ZDo6aXN0cmVhbSYgaW4sIHVuaXRfdGVzdDo6b3V0cHV0X2Zvcm1hdCYgb2YgKQotewotICAgIGZpeGVkX21hcHBpbmc8Y29uc3Rfc3RyaW5nLHVuaXRfdGVzdDo6b3V0cHV0X2Zvcm1hdCxjYXNlX2luc19sZXNzPGNoYXIgY29uc3Q+ID4gb3V0cHV0X2Zvcm1hdF9uYW1lICgKLSAgICAgICAgIkhSRiIsIHVuaXRfdGVzdDo6Q0xGLAotICAgICAgICAiQ0xGIiwgdW5pdF90ZXN0OjpDTEYsCi0gICAgICAgICJYTUwiLCB1bml0X3Rlc3Q6OlhNTCwKLQotICAgICAgICB1bml0X3Rlc3Q6OklOVl9PRgotICAgICAgICApOwotCi0gICAgc3RkOjpzdHJpbmcgdmFsOwotICAgIGluID4+IHZhbDsKLQotICAgIG9mID0gb3V0cHV0X2Zvcm1hdF9uYW1lW3ZhbF07Ci0gICAgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIG9mICE9IHVuaXRfdGVzdDo6SU5WX09GLCAiaW52YWxpZCBvdXRwdXQgZm9ybWF0ICIgKyB2YWwgKTsKLQotICAgIHJldHVybiBpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBydW50aW1lX2NvbmZpZyAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgcnVudGltZV9jb25maWcgewotCi1uYW1lc3BhY2UgewotCi0vLyBmcmFtZXdvcmsgcGFyYW1ldGVycyBhbmQgY29ycmVzcG9uZGluZyBjb21tYW5kLWxpbmUgYXJndW1lbnRzCi1zdGQ6OnN0cmluZyBBVVRPX1NUQVJUX0RCRyAgICA9ICJhdXRvX3N0YXJ0X2RiZyI7Ci1zdGQ6OnN0cmluZyBCUkVBS19FWEVDX1BBVEggICA9ICJicmVha19leGVjX3BhdGgiOwotc3RkOjpzdHJpbmcgQlVJTERfSU5GTyAgICAgICAgPSAiYnVpbGRfaW5mbyI7Ci1zdGQ6OnN0cmluZyBDQVRDSF9TWVNfRVJST1JTICA9ICJjYXRjaF9zeXN0ZW1fZXJyb3JzIjsKLXN0ZDo6c3RyaW5nIERFVEVDVF9GUF9FWENFUFQgID0gImRldGVjdF9mcF9leGNlcHRpb25zIjsKLXN0ZDo6c3RyaW5nIERFVEVDVF9NRU1fTEVBS1MgID0gImRldGVjdF9tZW1vcnlfbGVha3MiOwotc3RkOjpzdHJpbmcgTE9HX0ZPUk1BVCAgICAgICAgPSAibG9nX2Zvcm1hdCI7Ci1zdGQ6OnN0cmluZyBMT0dfTEVWRUwgICAgICAgICA9ICJsb2dfbGV2ZWwiOwotc3RkOjpzdHJpbmcgTE9HX1NJTksgICAgICAgICAgPSAibG9nX3NpbmsiOwotc3RkOjpzdHJpbmcgT1VUUFVUX0ZPUk1BVCAgICAgPSAib3V0cHV0X2Zvcm1hdCI7Ci1zdGQ6OnN0cmluZyBSQU5ET01fU0VFRCAgICAgICA9ICJyYW5kb20iOwotc3RkOjpzdHJpbmcgUkVQT1JUX0ZPUk1BVCAgICAgPSAicmVwb3J0X2Zvcm1hdCI7Ci1zdGQ6OnN0cmluZyBSRVBPUlRfTEVWRUwgICAgICA9ICJyZXBvcnRfbGV2ZWwiOwotc3RkOjpzdHJpbmcgUkVQT1JUX1NJTksgICAgICAgPSAicmVwb3J0X3NpbmsiOwotc3RkOjpzdHJpbmcgUkVTVUxUX0NPREUgICAgICAgPSAicmVzdWx0X2NvZGUiOwotc3RkOjpzdHJpbmcgVEVTVFNfVE9fUlVOICAgICAgPSAicnVuX3Rlc3QiOwotc3RkOjpzdHJpbmcgU0FWRV9URVNUX1BBVFRFUk4gPSAic2F2ZV9wYXR0ZXJuIjsKLXN0ZDo6c3RyaW5nIFNIT1dfUFJPR1JFU1MgICAgID0gInNob3dfcHJvZ3Jlc3MiOwotc3RkOjpzdHJpbmcgVVNFX0FMVF9TVEFDSyAgICAgPSAidXNlX2FsdF9zdGFjayI7Ci0KLWZpeGVkX21hcHBpbmc8Y29uc3Rfc3RyaW5nLGNvbnN0X3N0cmluZz4gcGFyYW1ldGVyXzJfZW52X3ZhcigKLSAgICBBVVRPX1NUQVJUX0RCRyAgICAsICJORE5CT09TVF9URVNUX0FVVE9fU1RBUlRfREJHIiwKLSAgICBCUkVBS19FWEVDX1BBVEggICAsICJORE5CT09TVF9URVNUX0JSRUFLX0VYRUNfUEFUSCIsCi0gICAgQlVJTERfSU5GTyAgICAgICAgLCAiTkROQk9PU1RfVEVTVF9CVUlMRF9JTkZPIiwKLSAgICBDQVRDSF9TWVNfRVJST1JTICAsICJORE5CT09TVF9URVNUX0NBVENIX1NZU1RFTV9FUlJPUlMiLAotICAgIERFVEVDVF9GUF9FWENFUFQgICwgIk5ETkJPT1NUX1RFU1RfREVURUNUX0ZQX0VYQ0VQVElPTlMiLAotICAgIERFVEVDVF9NRU1fTEVBS1MgICwgIk5ETkJPT1NUX1RFU1RfREVURUNUX01FTU9SWV9MRUFLIiwKLSAgICBMT0dfRk9STUFUICAgICAgICAsICJORE5CT09TVF9URVNUX0xPR19GT1JNQVQiLAotICAgIExPR19MRVZFTCAgICAgICAgICwgIk5ETkJPT1NUX1RFU1RfTE9HX0xFVkVMIiwKLSAgICBMT0dfU0lOSyAgICAgICAgICAsICJORE5CT09TVF9URVNUX0xPR19TSU5LIiwKLSAgICBPVVRQVVRfRk9STUFUICAgICAsICJORE5CT09TVF9URVNUX09VVFBVVF9GT1JNQVQiLAotICAgIFJBTkRPTV9TRUVEICAgICAgICwgIk5ETkJPT1NUX1RFU1RfUkFORE9NIiwKLSAgICBSRVBPUlRfRk9STUFUICAgICAsICJORE5CT09TVF9URVNUX1JFUE9SVF9GT1JNQVQiLAotICAgIFJFUE9SVF9MRVZFTCAgICAgICwgIk5ETkJPT1NUX1RFU1RfUkVQT1JUX0xFVkVMIiwKLSAgICBSRVBPUlRfU0lOSyAgICAgICAsICJORE5CT09TVF9URVNUX1JFUE9SVF9TSU5LIiwKLSAgICBSRVNVTFRfQ09ERSAgICAgICAsICJORE5CT09TVF9URVNUX1JFU1VMVF9DT0RFIiwKLSAgICBURVNUU19UT19SVU4gICAgICAsICJORE5CT09TVF9URVNUU19UT19SVU4iLAotICAgIFNBVkVfVEVTVF9QQVRURVJOICwgIk5ETkJPT1NUX1RFU1RfU0FWRV9QQVRURVJOIiwKLSAgICBTSE9XX1BST0dSRVNTICAgICAsICJORE5CT09TVF9URVNUX1NIT1dfUFJPR1JFU1MiLAotICAgIFVTRV9BTFRfU1RBQ0sgICAgICwgIk5ETkJPT1NUX1RFU1RfVVNFX0FMVF9TVEFDSyIsCi0KLSAgICAiIgotKTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gc3RvcmFnZSBmb3IgdGhlIENMQXMKLWNsYTo6cGFyc2VyICAgICBzX2NsYV9wYXJzZXI7Ci1zdGQ6OnN0cmluZyAgICAgc19lbXB0eTsKLQotb3V0cHV0X2Zvcm1hdCAgIHNfcmVwb3J0X2Zvcm1hdDsKLW91dHB1dF9mb3JtYXQgICBzX2xvZ19mb3JtYXQ7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UCi1yZXRyaWV2ZV9wYXJhbWV0ZXIoIGNvbnN0X3N0cmluZyBwYXJhbWV0ZXJfbmFtZSwgY2xhOjpwYXJzZXIgY29uc3QmIHNfY2xhX3BhcnNlciwgVCBjb25zdCYgZGVmYXVsdF92YWx1ZSA9IFQoKSwgVCBjb25zdCYgb3B0aW9uYWxfdmFsdWUgPSBUKCkgKQotewotICAgIHJ0Ojpjb25zdF9hcmd1bWVudF9wdHIgYXJnID0gc19jbGFfcGFyc2VyW3BhcmFtZXRlcl9uYW1lXTsKLSAgICBpZiggYXJnICkgewotICAgICAgICBpZiggcnR0aTo6dHlwZV9pZDxUPigpID09IHJ0dGk6OnR5cGVfaWQ8Ym9vbD4oKSB8fAotICAgICAgICAgICAgIXN0YXRpY19jYXN0PGNsYTo6cGFyYW1ldGVyIGNvbnN0Jj4oIGFyZy0+cF9mb3JtYWxfcGFyYW1ldGVyLmdldCgpICkucF9vcHRpb25hbF92YWx1ZSApCi0gICAgICAgICAgICByZXR1cm4gc19jbGFfcGFyc2VyLmdldDxUPiggcGFyYW1ldGVyX25hbWUgKTsKLQotICAgICAgICBvcHRpb25hbDxUPiB2YWwgPSBzX2NsYV9wYXJzZXIuZ2V0PG9wdGlvbmFsPFQ+ID4oIHBhcmFtZXRlcl9uYW1lICk7Ci0gICAgICAgIGlmKCB2YWwgKQotICAgICAgICAgICAgcmV0dXJuICp2YWw7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBvcHRpb25hbF92YWx1ZTsKLSAgICB9Ci0KLSAgICBuZG5ib29zdDo6b3B0aW9uYWw8VD4gdjsKLQotI2lmbmRlZiBVTkRFUl9DRQotICAgIGVudjo6Z2V0KCBwYXJhbWV0ZXJfMl9lbnZfdmFyW3BhcmFtZXRlcl9uYW1lXSwgdiApOwotI2VuZGlmCi0KLSAgICBpZiggdiApCi0gICAgICAgIHJldHVybiAqdjsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIGxvY2FsIG5hbWVzcGFjZSAKLQotdm9pZAotaW5pdCggaW50JiBhcmdjLCBjaGFyKiogYXJndiApCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIGNsYTsKLQotICAgIHRyeSB7Ci0gICAgICAgIHNfY2xhX3BhcnNlciAtIGNsYTo6aWdub3JlX21pc21hdGNoCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPGJvb2w+KCBBVVRPX1NUQVJUX0RCRyArICJ8ZCIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiQXV0b21hdGljYWxseSBzdGFydHMgZGVidWdnZXIgaWYgc3lzdGVtIGxldmVsIGVycm9yIChzaWduYWwpIG9jY3VycyIpCi0gICAgICAgICAgPDwgY2xhOjpuYW1lZF9wYXJhbWV0ZXI8c3RkOjpzdHJpbmc+KCBCUkVBS19FWEVDX1BBVEggKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS0iLGNsYTo6c2VwYXJhdG9yID0gIj0iLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJGb3IgdGhlIGV4Y2VwdGlvbiBzYWZldHkgdGVzdGluZyBhbGxvd3MgdG8gYnJlYWsgYXQgc3BlY2lmaWMgZXhlY3V0aW9uIHBhdGgiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxib29sPiggQlVJTERfSU5GTyArICJ8aSIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiU2hvd3MgbGlicmFyeSBidWlsZCBpbmZvcm1hdGlvbiIgKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxib29sPiggQ0FUQ0hfU1lTX0VSUk9SUyArICJ8cyIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiQWxsb3dzIHRvIHN3aXRjaCBiZXR3ZWVuIGNhdGNoaW5nIGFuZCBpZ25vcmluZyBzeXN0ZW0gZXJyb3JzIChzaWduYWxzKSIpCi0gICAgICAgICAgPDwgY2xhOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbD4oIERFVEVDVF9GUF9FWENFUFQgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS0iLGNsYTo6c2VwYXJhdG9yID0gIj0iLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBbGxvd3MgdG8gc3dpdGNoIGJldHdlZW4gY2F0Y2hpbmcgYW5kIGlnbm9yaW5nIGZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbnMiKQotICAgICAgICAgIDw8IGNsYTo6bmFtZWRfcGFyYW1ldGVyPGxvbmc+KCBERVRFQ1RfTUVNX0xFQUtTICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tIixjbGE6OnNlcGFyYXRvciA9ICI9IixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiQWxsb3dzIHRvIHN3aXRjaCBiZXR3ZWVuIGNhdGNoaW5nIGFuZCBpZ25vcmluZyBtZW1vcnkgbGVha3MiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjx1bml0X3Rlc3Q6Om91dHB1dF9mb3JtYXQ+KCBMT0dfRk9STUFUICsgInxmIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTcGVjaWZpZXMgbG9nIGZvcm1hdCIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPHVuaXRfdGVzdDo6bG9nX2xldmVsPiggTE9HX0xFVkVMICsgInxsIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTcGVjaWZpZXMgbG9nIGxldmVsIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8c3RkOjpzdHJpbmc+KCBMT0dfU0lOSyArICJ8ayIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiU3BlY2lmaWVzIGxvZyBzaW5rOnN0ZG91dChkZWZhdWx0KSxzdGRlcnIgb3IgZmlsZSBuYW1lIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8dW5pdF90ZXN0OjpvdXRwdXRfZm9ybWF0PiggT1VUUFVUX0ZPUk1BVCArICJ8byIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiU3BlY2lmaWVzIG91dHB1dCBmb3JtYXQgKGJvdGggbG9nIGFuZCByZXBvcnQpIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8aW50PiggUkFORE9NX1NFRUQgKyAifGEiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsY2xhOjpvcHRpb25hbF92YWx1ZSwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiQWxsb3dzIHRvIHN3aXRjaCBiZXR3ZWVuIHNlcXVlbnRpYWwgYW5kIHJhbmRvbSBvcmRlciBvZiB0ZXN0IHVuaXRzIGV4ZWN1dGlvbi5cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3B0aW9uYWxseSBhbGxvd3MgdG8gc3BlY2lmeSBjb25jcmV0ZSBzZWVkIGZvciByYW5kb20gbnVtYmVyIGdlbmVyYXRvciIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPHVuaXRfdGVzdDo6b3V0cHV0X2Zvcm1hdD4oIFJFUE9SVF9GT1JNQVQgKyAifG0iICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNwZWNpZmllcyByZXBvcnQgZm9ybWF0IikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8dW5pdF90ZXN0OjpyZXBvcnRfbGV2ZWw+KFJFUE9SVF9MRVZFTCArICJ8ciIpCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTcGVjaWZpZXMgcmVwb3J0IGxldmVsIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8c3RkOjpzdHJpbmc+KCBSRVBPUlRfU0lOSyArICJ8ZSIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiU3BlY2lmaWVzIHJlcG9ydCBzaW5rOnN0ZGVycihkZWZhdWx0KSxzdGRvdXQgb3IgZmlsZSBuYW1lIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8Ym9vbD4oIFJFU1VMVF9DT0RFICsgInxjIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBbGxvd3MgdG8gZGlzYWJsZSB0ZXN0IG1vZHVsZXMncyByZXN1bHQgY29kZSBnZW5lcmF0aW9uIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8c3RkOjpzdHJpbmc+KCBURVNUU19UT19SVU4gKyAifHQiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkFsbG93cyB0byBmaWx0ZXIgd2hpY2ggdGVzdCB1bml0cyB0byBydW4iKQotICAgICAgICAgIDw8IGNsYTo6bmFtZWRfcGFyYW1ldGVyPGJvb2w+KCBTQVZFX1RFU1RfUEFUVEVSTiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLSIsY2xhOjpzZXBhcmF0b3IgPSAiPSIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkFsbG93cyB0byBzd2l0Y2ggYmV0d2VlbiBzYXZpbmcgYW5kIG1hdGNoaW5nIGFnYWluc3QgdGVzdCBwYXR0ZXJuIGZpbGUiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxib29sPiggU0hPV19QUk9HUkVTUyArICJ8cCIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiVHVybnMgb24gcHJvZ3Jlc3MgZGlzcGxheSIpCi0gICAgICAgICAgPDwgY2xhOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbD4oIFVTRV9BTFRfU1RBQ0sgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS0iLGNsYTo6c2VwYXJhdG9yID0gIj0iLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJUdXJucyBvbi9vZmYgdXNhZ2Ugb2YgYW4gYWx0ZXJuYXRpdmUgc3RhY2sgZm9yIHNpZ25hbCBoYW5kbGluZyIpCi0KLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8Ym9vbD4oICJoZWxwfD8iICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj0iLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJ0aGlzIGhlbHAgbWVzc2FnZSIpCi0gICAgICAgICAgICA7Ci0KLSAgICAgICAgc19jbGFfcGFyc2VyLnBhcnNlKCBhcmdjLCBhcmd2ICk7Ci0KLSAgICAgICAgaWYoIHNfY2xhX3BhcnNlclsiaGVscCJdICkgewotICAgICAgICAgICAgc19jbGFfcGFyc2VyLmhlbHAoIHN0ZDo6Y291dCApOwotICAgICAgICAgICAgdGhyb3cgZnJhbWV3b3JrOjpub3RoaW5nX3RvX3Rlc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNfcmVwb3J0X2Zvcm1hdCAgICAgPSByZXRyaWV2ZV9wYXJhbWV0ZXIoIFJFUE9SVF9GT1JNQVQsIHNfY2xhX3BhcnNlciwgdW5pdF90ZXN0OjpDTEYgKTsKLSAgICAgICAgc19sb2dfZm9ybWF0ICAgICAgICA9IHJldHJpZXZlX3BhcmFtZXRlciggTE9HX0ZPUk1BVCwgc19jbGFfcGFyc2VyLCB1bml0X3Rlc3Q6OkNMRiApOwotCi0gICAgICAgIHVuaXRfdGVzdDo6b3V0cHV0X2Zvcm1hdCBvZiA9IHJldHJpZXZlX3BhcmFtZXRlciggT1VUUFVUX0ZPUk1BVCwgc19jbGFfcGFyc2VyLCB1bml0X3Rlc3Q6OklOVl9PRiApOwotCi0gICAgICAgIGlmKCBvZiAhPSB1bml0X3Rlc3Q6OklOVl9PRiApCi0gICAgICAgICAgICBzX3JlcG9ydF9mb3JtYXQgPSBzX2xvZ19mb3JtYXQgPSBvZjsKLSAgICB9Ci0gICAgY2F0Y2goIHJ0Ojpsb2dpY19lcnJvciBjb25zdCYgZXggKSB7Ci0gICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBlcnI7Ci0gICAgICAgIAotICAgICAgICBlcnIgPDwgIkZhaWwgdG8gcHJvY2VzcyBydW50aW1lIHBhcmFtZXRlcnM6ICIgPDwgZXgubXNnKCkgPDwgc3RkOjplbmRsOwotICAgICAgICBzX2NsYV9wYXJzZXIudXNhZ2UoIGVyciApOwotCi0gICAgICAgIHRocm93IGZyYW1ld29yazo6c2V0dXBfZXJyb3IoIGVyci5zdHIoKSApOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdW5pdF90ZXN0Ojpsb2dfbGV2ZWwKLWxvZ19sZXZlbCgpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggTE9HX0xFVkVMLCBzX2NsYV9wYXJzZXIsIHVuaXRfdGVzdDo6bG9nX2FsbF9lcnJvcnMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotbm9fcmVzdWx0X2NvZGUoKQotewotICAgIHJldHVybiAhcmV0cmlldmVfcGFyYW1ldGVyKCBSRVNVTFRfQ09ERSwgc19jbGFfcGFyc2VyLCB0cnVlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuaXRfdGVzdDo6cmVwb3J0X2xldmVsCi1yZXBvcnRfbGV2ZWwoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIFJFUE9SVF9MRVZFTCwgc19jbGFfcGFyc2VyLCB1bml0X3Rlc3Q6OkNPTkZJUk1BVElPTl9SRVBPUlQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotY29uc3Rfc3RyaW5nCi10ZXN0X3RvX3J1bigpCi17Ci0gICAgc3RhdGljIHN0ZDo6c3RyaW5nIHNfdGVzdF90b19ydW4gPSByZXRyaWV2ZV9wYXJhbWV0ZXIoIFRFU1RTX1RPX1JVTiwgc19jbGFfcGFyc2VyLCBzX2VtcHR5ICk7Ci0KLSAgICByZXR1cm4gc190ZXN0X3RvX3J1bjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotY29uc3Rfc3RyaW5nCi1icmVha19leGVjX3BhdGgoKQotewotICAgIHN0YXRpYyBzdGQ6OnN0cmluZyBzX2JyZWFrX2V4ZWNfcGF0aCA9IHJldHJpZXZlX3BhcmFtZXRlciggQlJFQUtfRVhFQ19QQVRILCBzX2NsYV9wYXJzZXIsIHNfZW1wdHkgKTsKLQotICAgIHJldHVybiBzX2JyZWFrX2V4ZWNfcGF0aDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotc2F2ZV9wYXR0ZXJuKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBTQVZFX1RFU1RfUEFUVEVSTiwgc19jbGFfcGFyc2VyLCBmYWxzZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1zaG93X3Byb2dyZXNzKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBTSE9XX1BST0dSRVNTLCBzX2NsYV9wYXJzZXIsIGZhbHNlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLXNob3dfYnVpbGRfaW5mbygpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggQlVJTERfSU5GTywgc19jbGFfcGFyc2VyLCBmYWxzZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1jYXRjaF9zeXNfZXJyb3JzKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBDQVRDSF9TWVNfRVJST1JTLCBzX2NsYV9wYXJzZXIsIAotI2lmZGVmIE5ETkJPT1NUX1RFU1RfREVGQVVMVFNfVE9fQ09SRV9EVU1QCi0gICAgICAgIGZhbHNlCi0jZWxzZQotICAgICAgICB0cnVlIAotI2VuZGlmCi0gICAgICAgICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLWF1dG9fc3RhcnRfZGJnKCkKLXsKLSAgICAvLyAhISBzZXQgZGVidWdnZXIgYXMgYW4gb3B0aW9uCi0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggQVVUT19TVEFSVF9EQkcsIHNfY2xhX3BhcnNlciwgZmFsc2UgKTsKLTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotdXNlX2FsdF9zdGFjaygpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggVVNFX0FMVF9TVEFDSywgc19jbGFfcGFyc2VyLCB0cnVlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLWRldGVjdF9mcF9leGNlcHRpb25zKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBERVRFQ1RfRlBfRVhDRVBULCBzX2NsYV9wYXJzZXIsIGZhbHNlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW91dHB1dF9mb3JtYXQKLXJlcG9ydF9mb3JtYXQoKQotewotICAgIHJldHVybiBzX3JlcG9ydF9mb3JtYXQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW91dHB1dF9mb3JtYXQKLWxvZ19mb3JtYXQoKQotewotICAgIHJldHVybiBzX2xvZ19mb3JtYXQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0ZDo6b3N0cmVhbSoKLXJlcG9ydF9zaW5rKCkKLXsKLSAgICBzdGQ6OnN0cmluZyBzaW5rX25hbWUgPSByZXRyaWV2ZV9wYXJhbWV0ZXIoIFJFUE9SVF9TSU5LLCBzX2NsYV9wYXJzZXIsIHNfZW1wdHkgKTsKLQotICAgIGlmKCBzaW5rX25hbWUuZW1wdHkoKSB8fCBzaW5rX25hbWUgPT0gInN0ZGVyciIgKQotICAgICAgICByZXR1cm4gJnN0ZDo6Y2VycjsgICAgCi0gICAgCi0gICAgaWYoIHNpbmtfbmFtZSA9PSAic3Rkb3V0IiApCi0gICAgICAgIHJldHVybiAmc3RkOjpjb3V0OwotCi0gICAgc3RhdGljIHN0ZDo6b2ZzdHJlYW0gbG9nX2ZpbGUoIHNpbmtfbmFtZS5jX3N0cigpICk7Ci0gICAgcmV0dXJuICZsb2dfZmlsZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RkOjpvc3RyZWFtKgotbG9nX3NpbmsoKQotewotICAgIHN0ZDo6c3RyaW5nIHNpbmtfbmFtZSA9IHJldHJpZXZlX3BhcmFtZXRlciggTE9HX1NJTkssIHNfY2xhX3BhcnNlciwgc19lbXB0eSApOwotCi0gICAgaWYoIHNpbmtfbmFtZS5lbXB0eSgpIHx8IHNpbmtfbmFtZSA9PSAic3Rkb3V0IiApCi0gICAgICAgIHJldHVybiAmc3RkOjpjb3V0OyAgICAKLQotICAgIGlmKCBzaW5rX25hbWUgPT0gInN0ZGVyciIgKQotICAgICAgICByZXR1cm4gJnN0ZDo6Y2VycjsgICAgCi0KLSAgICBzdGF0aWMgc3RkOjpvZnN0cmVhbSByZXBvcnRfZmlsZSggc2lua19uYW1lLmNfc3RyKCkgKTsKLSAgICByZXR1cm4gJnJlcG9ydF9maWxlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1sb25nCi1kZXRlY3RfbWVtb3J5X2xlYWtzKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBERVRFQ1RfTUVNX0xFQUtTLCBzX2NsYV9wYXJzZXIsIHN0YXRpY19jYXN0PGxvbmc+KDEpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWludAotcmFuZG9tX3NlZWQoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIFJBTkRPTV9TRUVELCBzX2NsYV9wYXJzZXIsIDAsIDEgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgcnVudGltZV9jb25maWcKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfUEFSQU1FVEVSU19JUFBfMDEyMjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3Rfc3VpdGUuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X3N1aXRlLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVhMzk2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3Rfc3VpdGUuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQ2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBwcml2aWRlcyBjb3JlIGltcGxlbWVudGF0aW9uIGZvciBVbml0IFRlc3QgRnJhbWV3b3JrLgotLy8gICAgICAgICAgICAgICAgRXh0ZW5zaW9ucyBjYW4gYmUgcHJvdmlkZWQgaW4gc2VwYXJhdGUgZmlsZXMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0lQUF8wMTIyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90aW1lci5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgJiYgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX1NUTFBPUlRfVkVSU0lPTiwgPD0gMHg0NTApIFwKLSAgICAvKiovCi0gICAgdXNpbmcgc3RkOjpyYW5kOyAvLyByYW5kIGlzIGluIHN0ZCBhbmQgcmFuZG9tX3NodWZmbGUgaXMgaW4gX1NUTAotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgdGVzdF91bml0ICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlc3RfdW5pdDo6dGVzdF91bml0KCBjb25zdF9zdHJpbmcgbmFtZSwgdGVzdF91bml0X3R5cGUgdCApCi06IHBfdHlwZSggdCApCi0sIHBfdHlwZV9uYW1lKCB0ID09IHR1dF9jYXNlID8gImNhc2UiIDogInN1aXRlIiApCi0sIHBfaWQoIElOVl9URVNUX1VOSVRfSUQgKQotLCBwX25hbWUoIHN0ZDo6c3RyaW5nKCBuYW1lLmJlZ2luKCksIG5hbWUuc2l6ZSgpICkgKQotLCBwX2VuYWJsZWQoIHRydWUgKQotewotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZXN0X3VuaXQ6On50ZXN0X3VuaXQoKQotewotICAgIGZyYW1ld29yazo6ZGVyZWdpc3Rlcl90ZXN0X3VuaXQoIHRoaXMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdGVzdF91bml0OjpkZXBlbmRzX29uKCB0ZXN0X3VuaXQqIHR1ICkKLXsKLSAgICBtX2RlcGVuZGVuY2llcy5wdXNoX2JhY2soIHR1LT5wX2lkICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLXRlc3RfdW5pdDo6Y2hlY2tfZGVwZW5kZW5jaWVzKCkgY29uc3QKLXsKLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3RfdW5pdF9pZCwgdHVfaWQsIG1fZGVwZW5kZW5jaWVzICkgewotICAgICAgICBpZiggIXVuaXRfdGVzdDo6cmVzdWx0c19jb2xsZWN0b3IucmVzdWx0cyggdHVfaWQgKS5wYXNzZWQoKSApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRlc3RfdW5pdDo6aW5jcmVhc2VfZXhwX2ZhaWwoIHVuc2lnbmVkIG51bSApCi17Ci0gICAgcF9leHBlY3RlZF9mYWlsdXJlcy52YWx1ZSArPSBudW07Ci0KLSAgICBpZiggcF9wYXJlbnRfaWQgIT0gMCApCi0gICAgICAgIGZyYW1ld29yazo6Z2V0PHRlc3Rfc3VpdGU+KCBwX3BhcmVudF9pZCApLmluY3JlYXNlX2V4cF9mYWlsKCBudW0gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZSAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZXN0X2Nhc2U6OnRlc3RfY2FzZSggY29uc3Rfc3RyaW5nIG5hbWUsIGNhbGxiYWNrMDw+IGNvbnN0JiB0ZXN0X2Z1bmMgKQotOiB0ZXN0X3VuaXQoIG5hbWUsIHN0YXRpY19jYXN0PHRlc3RfdW5pdF90eXBlPih0eXBlKSApCi0sIG1fdGVzdF9mdW5jKCB0ZXN0X2Z1bmMgKQotewotICAgICAvLyAhISB3ZWlyZGVzdCBNU1ZDIEJVRzsgdHJ5IHRvIHJlbW92ZSB0aGlzIHN0YXRlbWVudDsgbG9va3MgbGlrZSBpdCBlYXRzIGZpcnN0IHRva2VuIG9mIG5leHQgc3RhdGVtZW50ICAgCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDwxMzAwKSAgIAotICAgICAwOyAgIAotI2VuZGlmIAotICAgIGZyYW1ld29yazo6cmVnaXN0ZXJfdGVzdF91bml0KCB0aGlzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHRlc3Rfc3VpdGUgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVzdF9zdWl0ZTo6dGVzdF9zdWl0ZSggY29uc3Rfc3RyaW5nIG5hbWUgKQotOiB0ZXN0X3VuaXQoIG5hbWUsIHN0YXRpY19jYXN0PHRlc3RfdW5pdF90eXBlPih0eXBlKSApCi17Ci0gICAgZnJhbWV3b3JrOjpyZWdpc3Rlcl90ZXN0X3VuaXQoIHRoaXMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdGVzdF9zdWl0ZTo6YWRkKCB0ZXN0X3VuaXQqIHR1LCBjb3VudGVyX3QgZXhwZWN0ZWRfZmFpbHVyZXMsIHVuc2lnbmVkIHRpbWVvdXQgKQotewotICAgIGlmKCB0aW1lb3V0ICE9IDAgKQotICAgICAgICB0dS0+cF90aW1lb3V0LnZhbHVlID0gdGltZW91dDsKLQotICAgIG1fbWVtYmVycy5wdXNoX2JhY2soIHR1LT5wX2lkICk7Ci0gICAgdHUtPnBfcGFyZW50X2lkLnZhbHVlID0gcF9pZDsKLQotICAgIGlmKCB0dS0+cF9leHBlY3RlZF9mYWlsdXJlcyApCi0gICAgICAgIGluY3JlYXNlX2V4cF9mYWlsKCB0dS0+cF9leHBlY3RlZF9mYWlsdXJlcyApOwotCi0gICAgaWYoIGV4cGVjdGVkX2ZhaWx1cmVzICkKLSAgICAgICAgdHUtPmluY3JlYXNlX2V4cF9mYWlsKCBleHBlY3RlZF9mYWlsdXJlcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3N1aXRlOjphZGQoIHRlc3RfdW5pdF9nZW5lcmF0b3IgY29uc3QmIGdlbiwgdW5zaWduZWQgdGltZW91dCApCi17Ci0gICAgdGVzdF91bml0KiB0dTsKLSAgICB3aGlsZSgodHUgPSBnZW4ubmV4dCgpLCB0dSkpCi0gICAgICAgIGFkZCggdHUsIDAsIHRpbWVvdXQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdGVzdF9zdWl0ZTo6cmVtb3ZlKCB0ZXN0X3VuaXRfaWQgaWQgKQotewotICAgIHN0ZDo6dmVjdG9yPHRlc3RfdW5pdF9pZD46Oml0ZXJhdG9yIGl0ID0gc3RkOjpmaW5kKCBtX21lbWJlcnMuYmVnaW4oKSwgbV9tZW1iZXJzLmVuZCgpLCBpZCApOwotCi0gICAgaWYoIGl0ICE9IG1fbWVtYmVycy5lbmQoKSApCi0gICAgICAgIG1fbWVtYmVycy5lcmFzZSggaXQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVzdF91bml0X2lkCi10ZXN0X3N1aXRlOjpnZXQoIGNvbnN0X3N0cmluZyB0dV9uYW1lICkgY29uc3QKLXsKLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3RfdW5pdF9pZCwgaWQsIG1fbWVtYmVycyApIHsKLSAgICAgICAgaWYoIHR1X25hbWUgPT0gZnJhbWV3b3JrOjpnZXQoIGlkLCB1dF9kZXRhaWw6OnRlc3RfaWRfMl91bml0X3R5cGUoIGlkICkgKS5wX25hbWUuZ2V0KCkgKQotICAgICAgICAgICAgcmV0dXJuIGlkOwotICAgIH0KLQotICAgIHJldHVybiBJTlZfVEVTVF9VTklUX0lEOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLXRyYXZlcnNlX3Rlc3RfdHJlZSggdGVzdF9jYXNlIGNvbnN0JiB0YywgdGVzdF90cmVlX3Zpc2l0b3ImIFYgKQotewotICAgIGlmKCB0Yy5wX2VuYWJsZWQgKQotICAgIFYudmlzaXQoIHRjICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRyYXZlcnNlX3Rlc3RfdHJlZSggdGVzdF9zdWl0ZSBjb25zdCYgc3VpdGUsIHRlc3RfdHJlZV92aXNpdG9yJiBWICkKLXsKLSAgICBpZiggIXN1aXRlLnBfZW5hYmxlZCB8fCAhVi50ZXN0X3N1aXRlX3N0YXJ0KCBzdWl0ZSApICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdHJ5IHsKLSAgICAgICAgaWYoIHJ1bnRpbWVfY29uZmlnOjpyYW5kb21fc2VlZCgpID09IDAgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3RfdW5pdF9pZCwgaWQsIHN1aXRlLm1fbWVtYmVycyApCi0gICAgICAgICAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBpZCwgViApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc3RkOjp2ZWN0b3I8dGVzdF91bml0X2lkPiBtZW1iZXJzKCBzdWl0ZS5tX21lbWJlcnMgKTsKLSAgICAgICAgICAgIHN0ZDo6cmFuZG9tX3NodWZmbGUoIG1lbWJlcnMuYmVnaW4oKSwgbWVtYmVycy5lbmQoKSApOwotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X3VuaXRfaWQsIGlkLCBtZW1iZXJzICkKLSAgICAgICAgICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIGlkLCBWICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgfSBjYXRjaCggdGVzdF9iZWluZ19hYm9ydGVkIGNvbnN0JiApIHsKLSAgICAgICAgVi50ZXN0X3N1aXRlX2ZpbmlzaCggc3VpdGUgKTsKLSAgICAgICAgZnJhbWV3b3JrOjp0ZXN0X3VuaXRfYWJvcnRlZCggc3VpdGUgKTsKLQotICAgICAgICB0aHJvdzsKLSAgICB9Ci0KLSAgICBWLnRlc3Rfc3VpdGVfZmluaXNoKCBzdWl0ZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10cmF2ZXJzZV90ZXN0X3RyZWUoIHRlc3RfdW5pdF9pZCBpZCwgdGVzdF90cmVlX3Zpc2l0b3ImIFYgKQotewotICAgIGlmKCB1dF9kZXRhaWw6OnRlc3RfaWRfMl91bml0X3R5cGUoIGlkICkgPT0gdHV0X2Nhc2UgKQotICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIGZyYW1ld29yazo6Z2V0PHRlc3RfY2FzZT4oIGlkICksIFYgKTsKLSAgICBlbHNlCi0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggZnJhbWV3b3JrOjpnZXQ8dGVzdF9zdWl0ZT4oIGlkICksIFYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9jb3VudGVyICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi10ZXN0X2Nhc2VfY291bnRlcjo6dmlzaXQoIHRlc3RfY2FzZSBjb25zdCYgdGMgKQotewotICAgIGlmKCB0Yy5wX2VuYWJsZWQgKQotICAgICAgICArK3BfY291bnQudmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIG9iamVjdCBnZW5lcmF0b3JzICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXN0ZDo6c3RyaW5nCi1ub3JtYWxpemVfdGVzdF9jYXNlX25hbWUoIGNvbnN0X3N0cmluZyBuYW1lICkKLXsKLSAgICByZXR1cm4gKCBuYW1lWzBdID09ICcmJwotICAgICAgICAgICAgICAgID8gc3RkOjpzdHJpbmcoIG5hbWUuYmVnaW4oKSsxLCBuYW1lLnNpemUoKS0xICkKLSAgICAgICAgICAgICAgICA6IHN0ZDo6c3RyaW5nKCBuYW1lLmJlZ2luKCksIG5hbWUuc2l6ZSgpICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBhdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1hdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXI6OmF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciggdGVzdF9jYXNlKiB0YywgY291bnRlcl90IGV4cF9mYWlsICkKLXsKLSAgICBjdXJyX3RzX3N0b3JlKCkuYmFjaygpLT5hZGQoIHRjLCBleHBfZmFpbCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1hdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXI6OmF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciggY29uc3Rfc3RyaW5nIHRzX25hbWUgKQotewotICAgIHRlc3RfdW5pdF9pZCBpZCA9IGN1cnJfdHNfc3RvcmUoKS5iYWNrKCktPmdldCggdHNfbmFtZSApOwotCi0gICAgdGVzdF9zdWl0ZSogdHM7Ci0KLSAgICBpZiggaWQgIT0gSU5WX1RFU1RfVU5JVF9JRCApIHsKLSAgICAgICAgdHMgPSAmZnJhbWV3b3JrOjpnZXQ8dGVzdF9zdWl0ZT4oIGlkICk7IC8vICEhIHRlc3QgZm9yIGludmFsaWQgdHUgdHlwZQotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHRzLT5wX3BhcmVudF9pZCA9PSBjdXJyX3RzX3N0b3JlKCkuYmFjaygpLT5wX2lkICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICB0cyA9IG5ldyB0ZXN0X3N1aXRlKCB0c19uYW1lICk7Ci0gICAgICAgIGN1cnJfdHNfc3RvcmUoKS5iYWNrKCktPmFkZCggdHMgKTsKLSAgICB9Ci0KLSAgICBjdXJyX3RzX3N0b3JlKCkucHVzaF9iYWNrKCB0cyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1hdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXI6OmF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciggdGVzdF91bml0X2dlbmVyYXRvciBjb25zdCYgdGNfZ2VuICkKLXsKLSAgICBjdXJyX3RzX3N0b3JlKCkuYmFjaygpLT5hZGQoIHRjX2dlbiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1hdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXI6OmF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciggaW50ICkKLXsKLSAgICBpZiggY3Vycl90c19zdG9yZSgpLnNpemUoKSA9PSAwICkKLSAgICAgICAgcmV0dXJuOyAvLyByZXBvcnQgZXJyb3I/Ci0KLSAgICBjdXJyX3RzX3N0b3JlKCkucG9wX2JhY2soKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RkOjpsaXN0PHRlc3Rfc3VpdGUqPiYKLWF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcjo6Y3Vycl90c19zdG9yZSgpCi17Ci0gICAgc3RhdGljIHN0ZDo6bGlzdDx0ZXN0X3N1aXRlKj4gaW5zdCggMSwgJmZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKSApOwotICAgIHJldHVybiBpbnN0OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGdsb2JhbF9maXh0dXJlICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1nbG9iYWxfZml4dHVyZTo6Z2xvYmFsX2ZpeHR1cmUoKQotewotICAgIGZyYW1ld29yazo6cmVnaXN0ZXJfb2JzZXJ2ZXIoICp0aGlzICk7Ci19IAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9JUFBfMDEyMjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC94bWxfbG9nX2Zvcm1hdHRlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC94bWxfbG9nX2Zvcm1hdHRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MzIxYzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwveG1sX2xvZ19mb3JtYXR0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBYTUwgTG9nIGZvcm1hdHRlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9YTUxfTE9HX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfWE1MX0xPR19GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX2xvZ19mb3JtYXR0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy94bWxfcHJpbnRlci5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLXN0YXRpYyBjb25zdF9zdHJpbmcgdHVfdHlwZV9uYW1lKCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICByZXR1cm4gdHUucF90eXBlID09IHR1dF9jYXNlID8gIlRlc3RDYXNlIiA6ICJUZXN0U3VpdGUiOwotfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB4bWxfbG9nX2Zvcm1hdHRlciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjpsb2dfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgY291bnRlcl90ICkKLXsKLSAgICBvc3RyICA8PCAiPFRlc3RMb2c+IjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OmxvZ19maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgb3N0ciAgPDwgIjwvVGVzdExvZz4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6bG9nX2J1aWxkX2luZm8oIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgb3N0ciAgPDwgIjxCdWlsZEluZm8iCi0gICAgICAgICAgICA8PCAiIHBsYXRmb3JtIiAgPDwgYXR0cl92YWx1ZSgpIDw8IE5ETkJPT1NUX1BMQVRGT1JNCi0gICAgICAgICAgICA8PCAiIGNvbXBpbGVyIiAgPDwgYXR0cl92YWx1ZSgpIDw8IE5ETkJPT1NUX0NPTVBJTEVSCi0gICAgICAgICAgICA8PCAiIHN0bCIgICAgICAgPDwgYXR0cl92YWx1ZSgpIDw8IE5ETkJPT1NUX1NURExJQgotICAgICAgICAgICAgPDwgIiBib29zdD1cIiIgIDw8IE5ETkJPT1NUX1ZFUlNJT04vMTAwMDAwICAgICA8PCAiLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9WRVJTSU9OLzEwMCAlIDEwMDAgPDwgIi4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfVkVSU0lPTiAlIDEwMCAgICAgIDw8ICdcIicKLSAgICAgICAgICAgIDw8ICIvPiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgb3N0ciA8PCAiPCIgPDwgdHVfdHlwZV9uYW1lKCB0dSApIDw8ICIgbmFtZSIgPDwgYXR0cl92YWx1ZSgpIDw8IHR1LnBfbmFtZS5nZXQoKSA8PCAiPiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIHRlc3RfdW5pdCBjb25zdCYgdHUsIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCApCi17Ci0gICAgaWYoIHR1LnBfdHlwZSA9PSB0dXRfY2FzZSApCi0gICAgICAgIG9zdHIgPDwgIjxUZXN0aW5nVGltZT4iIDw8IGVsYXBzZWQgPDwgIjwvVGVzdGluZ1RpbWU+IjsKLSAgICAgICAgCi0gICAgb3N0ciA8PCAiPC8iIDw8IHR1X3R5cGVfbmFtZSggdHUgKSA8PCAiPiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfc2tpcHBlZCggc3RkOjpvc3RyZWFtJiBvc3RyLCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBvc3RyIDw8ICI8IiA8PCB0dV90eXBlX25hbWUoIHR1ICkKLSAgICAgICAgIDw8ICIgbmFtZSIgICAgPDwgYXR0cl92YWx1ZSgpIDw8IHR1LnBfbmFtZS5nZXQoKQotICAgICAgICAgPDwgIiBza2lwcGVkIiA8PCBhdHRyX3ZhbHVlKCkgPDwgInllcyIKLSAgICAgICAgIDw8ICIvPiI7Ci19Ci0gICAgCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6bG9nX2V4Y2VwdGlvbiggc3RkOjpvc3RyZWFtJiBvc3RyLCBsb2dfY2hlY2twb2ludF9kYXRhIGNvbnN0JiBjaGVja3BvaW50X2RhdGEsIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICkKLXsKLSAgICBleGVjdXRpb25fZXhjZXB0aW9uOjpsb2NhdGlvbiBjb25zdCYgbG9jID0gZXgud2hlcmUoKTsKLQotICAgIG9zdHIgPDwgIjxFeGNlcHRpb24gZmlsZSIgPDwgYXR0cl92YWx1ZSgpIDw8IGxvYy5tX2ZpbGVfbmFtZQotICAgICAgICAgPDwgIiBsaW5lIiAgICAgICAgICAgPDwgYXR0cl92YWx1ZSgpIDw8IGxvYy5tX2xpbmVfbnVtOwotCi0gICAgaWYoICFsb2MubV9mdW5jdGlvbi5pc19lbXB0eSgpICkKLSAgICAgICAgb3N0ciA8PCAiIGZ1bmN0aW9uIiAgIDw8IGF0dHJfdmFsdWUoKSA8PCBsb2MubV9mdW5jdGlvbjsKLQotICAgIG9zdHIgPDwgIj4iIDw8IGNkYXRhKCkgPDwgZXgud2hhdCgpOwotCi0gICAgaWYoICFjaGVja3BvaW50X2RhdGEubV9maWxlX25hbWUuaXNfZW1wdHkoKSApIHsKLSAgICAgICAgb3N0ciA8PCAiPExhc3RDaGVja3BvaW50IGZpbGUiIDw8IGF0dHJfdmFsdWUoKSA8PCBjaGVja3BvaW50X2RhdGEubV9maWxlX25hbWUKLSAgICAgICAgICAgICA8PCAiIGxpbmUiICAgICAgICAgICAgICAgIDw8IGF0dHJfdmFsdWUoKSA8PCBjaGVja3BvaW50X2RhdGEubV9saW5lX251bQotICAgICAgICAgICAgIDw8ICI+IgotICAgICAgICAgICAgIDw8IGNkYXRhKCkgPDwgY2hlY2twb2ludF9kYXRhLm1fbWVzc2FnZQotICAgICAgICAgICAgIDw8ICI8L0xhc3RDaGVja3BvaW50PiI7Ci0gICAgfQotCi0gICAgb3N0ciA8PCAiPC9FeGNlcHRpb24+IjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV9zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyLCBsb2dfZW50cnlfZGF0YSBjb25zdCYgZW50cnlfZGF0YSwgbG9nX2VudHJ5X3R5cGVzIGxldCApCi17Ci0gICAgc3RhdGljIGxpdGVyYWxfc3RyaW5nIHhtbF90YWdzW10gPSB7ICJJbmZvIiwgIk1lc3NhZ2UiLCAiV2FybmluZyIsICJFcnJvciIsICJGYXRhbEVycm9yIiB9OwotCi0gICAgbV9jdXJyX3RhZyA9IHhtbF90YWdzW2xldF07Ci0gICAgb3N0ciA8PCAnPCcgPDwgbV9jdXJyX3RhZwotICAgICAgICAgPDwgTkROQk9PU1RfVEVTVF9MKCAiIGZpbGUiICkgPDwgYXR0cl92YWx1ZSgpIDw8IGVudHJ5X2RhdGEubV9maWxlX25hbWUKLSAgICAgICAgIDw8IE5ETkJPT1NUX1RFU1RfTCggIiBsaW5lIiApIDw8IGF0dHJfdmFsdWUoKSA8PCBlbnRyeV9kYXRhLm1fbGluZV9udW0KLSAgICAgICAgIDw8IE5ETkJPT1NUX1RFU1RfTCggIj48IVtDREFUQVsiICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjpsb2dfZW50cnlfdmFsdWUoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgY29uc3Rfc3RyaW5nIHZhbHVlICkKLXsKLSAgICBvc3RyIDw8IHZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyIDw8IE5ETkJPT1NUX1RFU1RfTCggIl1dPjwvIiApIDw8IG1fY3Vycl90YWcgPDwgTkROQk9PU1RfVEVTVF9MKCAiPiIgKTsKLQotICAgIG1fY3Vycl90YWcuY2xlYXIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2Ugb3V0cHV0Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfWE1MX0xPR19GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwveG1sX3JlcG9ydF9mb3JtYXR0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwveG1sX3JlcG9ydF9mb3JtYXR0ZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmIyOGE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3htbF9yZXBvcnRfZm9ybWF0dGVyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IFhNTCByZXBvcnQgZm9ybWF0dGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1hNTF9SRVBPUlRfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9YTUxfUkVQT1JUX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dC94bWxfcmVwb3J0X2Zvcm1hdHRlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3htbF9wcmludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLXZvaWQKLXhtbF9yZXBvcnRfZm9ybWF0dGVyOjpyZXN1bHRzX3JlcG9ydF9zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyIDw8ICI8VGVzdFJlc3VsdD4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfcmVwb3J0X2Zvcm1hdHRlcjo6cmVzdWx0c19yZXBvcnRfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG9zdHIgPDwgIjwvVGVzdFJlc3VsdD4iOwotfQotCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9yZXBvcnRfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmIHR1LCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIHRlc3RfcmVzdWx0cyBjb25zdCYgdHIgPSByZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0dS5wX2lkICk7Ci0KLSAgICBjb25zdF9zdHJpbmcgZGVzY3I7Ci0KLSAgICBpZiggdHIucGFzc2VkKCkgKQotICAgICAgICBkZXNjciA9ICJwYXNzZWQiOwotICAgIGVsc2UgaWYoIHRyLnBfc2tpcHBlZCApCi0gICAgICAgIGRlc2NyID0gInNraXBwZWQiOwotICAgIGVsc2UgaWYoIHRyLnBfYWJvcnRlZCApCi0gICAgICAgIGRlc2NyID0gImFib3J0ZWQiOwotICAgIGVsc2UKLSAgICAgICAgZGVzY3IgPSAiZmFpbGVkIjsKLQotICAgIG9zdHIgPDwgJzwnIDw8ICggdHUucF90eXBlID09IHR1dF9jYXNlID8gIlRlc3RDYXNlIiA6ICJUZXN0U3VpdGUiICkgCi0gICAgICAgICA8PCAiIG5hbWUiICAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHUucF9uYW1lLmdldCgpCi0gICAgICAgICA8PCAiIHJlc3VsdCIgICA8PCBhdHRyX3ZhbHVlKCkgPDwgZGVzY3IKLSAgICAgICAgIDw8ICIgYXNzZXJ0aW9uc19wYXNzZWQiICAgICAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHIucF9hc3NlcnRpb25zX3Bhc3NlZAotICAgICAgICAgPDwgIiBhc3NlcnRpb25zX2ZhaWxlZCIgICAgICAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkCi0gICAgICAgICA8PCAiIGV4cGVjdGVkX2ZhaWx1cmVzIiAgICAgICAgPDwgYXR0cl92YWx1ZSgpIDw8IHRyLnBfZXhwZWN0ZWRfZmFpbHVyZXM7Ci0KLSAgICBpZiggdHUucF90eXBlID09IHR1dF9zdWl0ZSApCi0gICAgICAgIG9zdHIgPDwgIiB0ZXN0X2Nhc2VzX3Bhc3NlZCIgICAgPDwgYXR0cl92YWx1ZSgpIDw8IHRyLnBfdGVzdF9jYXNlc19wYXNzZWQKLSAgICAgICAgICAgICA8PCAiIHRlc3RfY2FzZXNfZmFpbGVkIiAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHIucF90ZXN0X2Nhc2VzX2ZhaWxlZAotICAgICAgICAgICAgIDw8ICIgdGVzdF9jYXNlc19za2lwcGVkIiAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0ci5wX3Rlc3RfY2FzZXNfc2tpcHBlZAotICAgICAgICAgICAgIDw8ICIgdGVzdF9jYXNlc19hYm9ydGVkIiAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0ci5wX3Rlc3RfY2FzZXNfYWJvcnRlZDsKLSAgICAgICAgICAgICAKLSAgICAKLSAgICBvc3RyIDw8ICc+JzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX3JlcG9ydF9mb3JtYXR0ZXI6OnRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmIHR1LCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG9zdHIgPDwgIjwvIiA8PCAoIHR1LnBfdHlwZSA9PSB0dXRfY2FzZSA/ICJUZXN0Q2FzZSIgOiAiVGVzdFN1aXRlIiApIDw8ICc+JzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX3JlcG9ydF9mb3JtYXR0ZXI6OmRvX2NvbmZpcm1hdGlvbl9yZXBvcnQoIHRlc3RfdW5pdCBjb25zdCYgdHUsIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgdGVzdF91bml0X3JlcG9ydF9zdGFydCggdHUsIG9zdHIgKTsKLSAgICB0ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdHUsIG9zdHIgKTsgICAgCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIG91dHB1dAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1hNTF9SRVBPUlRfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbnRlcmFjdGlvbl9iYXNlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW50ZXJhY3Rpb25fYmFzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjE1OGMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbnRlcmFjdGlvbl9iYXNlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBGYWNpbGl0aWVzIHRvIHBlcmZvcm0gaW50ZXJhY3Rpb24tYmFzZWQgdGVzdGluZwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9JTlRFUkFDVElPTl9CQVNFRF9IUFBfMTEyMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfSU5URVJBQ1RJT05fQkFTRURfSFBQXzExMjEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3dyYXBfc3RyaW5nc3RyZWFtLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCBkZXNjcmlwdGlvbiApIFwKLSAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5leGNlcHRpb25fcG9pbnQoIE5ETkJPT1NUX1RFU1RfTChfX0ZJTEVfXyksIF9fTElORV9fLCBkZXNjcmlwdGlvbiApCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIE5ETkJPT1NUX0lURVNUX0RQT0lOVCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9JVEVTVF9EUE9JTlQoKSBcCi0gICAgOjpuZG5ib29zdDo6aXRlc3Q6Om1hbmFnZXI6Omluc3RhbmNlKCkuZGVjaXNpb25fcG9pbnQoIE5ETkJPT1NUX1RFU1RfTChfX0ZJTEVfXyksIF9fTElORV9fICkKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBzY29wZV9uYW1lICkgXAotICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjpzY29wZV9ndWFyZCBpdGVzdF9zY29wZV9ndWFyZCAjIyBfX0xJTkVfXyggTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgX19MSU5FX18sIE5ETkJPT1NUX1NUUklOR0laRShzY29wZV9uYW1lKSApCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfTkVXICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9JVEVTVF9ORVcoIHR5cGVfbmFtZSApIFwKLSAgICBuZXcgKCA6Om5kbmJvb3N0OjppdGVzdDo6bG9jYXRpb24oIE5ETkJPT1NUX1RFU1RfTChfX0ZJTEVfXyksIF9fTElORV9fICkgKSB0eXBlX25hbWUKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBORE5CT09TVF9JVEVTVF9EQVRBX0ZMT1cgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lURVNUX0RBVEFfRkxPVyggdiApIFwKLSAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5nZW5lcmljX2RhdGFfZmxvdyggdiApCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIE5ETkJPT1NUX0lURVNUX1JFVFVSTiAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9JVEVTVF9SRVRVUk4oIHR5cGUsIGRlZmF1bHRfdmFsdWUgKSBcCi0gICAgOjpuZG5ib29zdDo6aXRlc3Q6Om1hbmFnZXI6Omluc3RhbmNlKCkuZ2VuZXJpY19yZXR1cm48dHlwZT4oIGRlZmF1bHRfdmFsdWUgKQotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIE5ETkJPT1NUX0lURVNUX01PQ0tfRlVOQyAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSVRFU1RfTU9DS19GVU5DKCBmdW5jdGlvbl9uYW1lICkgICAgICAgICAgXAotICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBmdW5jdGlvbl9uYW1lICk7ICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAwICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gOjpuZG5ib29zdDo6aXRlc3Q6Om1vY2tfb2JqZWN0PD46OnByb3RvdHlwZSgpOyAgXAotLyoqLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgaXRlc3QgeyAvLyBpbnRlcmFjdGlvbi1iYXNlZCB0ZXN0aW5nCi0KLXVzaW5nIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgIG1hbmFnZXIgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBtYW5hZ2VyIHsKLXB1YmxpYzoKLSAgICAvLyBpbnN0YW5jZSBhY2Nlc3MKLSAgICBzdGF0aWMgbWFuYWdlciYgICAgIGluc3RhbmNlKCkgeyByZXR1cm4gKmluc3RhbmNlX3B0cigpOyB9Ci0KLSAgICAvLyBNb2NrIG9iamVjdHMgaW50ZXJmYWNlIGhvb2tzCi0gICAgdmlydHVhbCB2b2lkICAgICAgICBleGNlcHRpb25fcG9pbnQoIGNvbnN0X3N0cmluZyAvKmZpbGUqLywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IC8qbGluZV9udW0qLywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3N0cmluZyAvKmRlc2NyKi8gKXt9Ci0gICAgdmlydHVhbCBib29sICAgICAgICBkZWNpc2lvbl9wb2ludCggY29uc3Rfc3RyaW5nIC8qZmlsZSovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCAvKmxpbmVfbnVtKi8gKSAgICAgICAgICB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB1bnNpZ25lZCAgICBlbnRlcl9zY29wZSggY29uc3Rfc3RyaW5nIC8qZmlsZSovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCAvKmxpbmVfbnVtKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Rfc3RyaW5nIC8qc2NvcGVfbmFtZSovKXsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxlYXZlX3Njb3BlKCB1bnNpZ25lZCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgYWxsb2NhdGVkKCBjb25zdF9zdHJpbmcgLypmaWxlKi8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCAvKmxpbmVfbnVtKi8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAvKnAqLywgc3RkOjpzaXplX3QgLypzKi8gKSAgICAgICAgIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBmcmVlZCggdm9pZCogLypwKi8gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGRhdGFfZmxvdyggY29uc3Rfc3RyaW5nIC8qZCovICkgICAgICAgICAgICAgICAgICAgICB7fQotICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgcmV0dXJuX3ZhbHVlKCBjb25zdF9zdHJpbmcgLypkZWZhdWx0X3ZhbHVlICovICkgICAgIHsgcmV0dXJuICIiOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgICAgICAgICAgICAgICAgZ2VuZXJpY19kYXRhX2Zsb3coIFQgY29uc3QmIHQgKQotICAgIHsKLSAgICAgICAgd3JhcF9zdHJpbmdzdHJlYW0gd3M7Ci0KLSAgICAgICAgZGF0YV9mbG93KCAod3MgPDwgdCkuc3RyKCkgKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVmYXVsdFZhbHVlVHlwZT4KLSAgICBUICAgICAgICAgICAgICAgICAgIGdlbmVyaWNfcmV0dXJuKCBEZWZhdWx0VmFsdWVUeXBlIGNvbnN0JiBkdiApCi0gICAgewotICAgICAgICB3cmFwX3N0cmluZ3N0cmVhbSB3czsKLQotICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCYgcmVzID0gcmV0dXJuX3ZhbHVlKCAod3MgPDwgZHYpLnN0cigpICk7Ci0KLSAgICAgICAgaWYoIHJlcy5lbXB0eSgpICkKLSAgICAgICAgICAgIHJldHVybiBkdjsKLQotICAgICAgICByZXR1cm4gbGV4aWNhbF9jYXN0PFQ+KCByZXMgKTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBtYW5hZ2VyKCk7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpIAotcHVibGljOgotI2VuZGlmCi0gICAgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB+bWFuYWdlcigpOwotCi1wcml2YXRlOgotICAgIHN0cnVjdCBkdW1teV9jb25zdHJ7fTsKLSAgICBleHBsaWNpdCBtYW5hZ2VyKCBkdW1teV9jb25zdHIqICkge30KLQotICAgIHN0YXRpYyBtYW5hZ2VyKiAgICAgaW5zdGFuY2VfcHRyKCBib29sIHJlc2V0ID0gZmFsc2UsIG1hbmFnZXIqIHB0ciA9IDAgKTsKLX07IC8vIG1hbmFnZXIKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgc2NvcGVfZ3VhcmQgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBzY29wZV9ndWFyZCB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBzY29wZV9ndWFyZCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCBjb25zdF9zdHJpbmcgc2NvcGVfbmFtZSApCi0gICAgewotICAgICAgICBtX3Njb3BlX2luZGV4ID0gbWFuYWdlcjo6aW5zdGFuY2UoKS5lbnRlcl9zY29wZSggZmlsZSwgbGluZV9udW0sIHNjb3BlX25hbWUgKTsKLSAgICB9Ci0gICAgfnNjb3BlX2d1YXJkKCkKLSAgICB7Ci0gICAgICAgIG1hbmFnZXI6Omluc3RhbmNlKCkubGVhdmVfc2NvcGUoIG1fc2NvcGVfaW5kZXggKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBtX3Njb3BlX2luZGV4OwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgbG9jYXRpb24gewotICAgIGxvY2F0aW9uKCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZSApIAotICAgIDogbV9maWxlX25hbWUoIGZpbGUgKQotICAgICwgbV9saW5lX251bSggbGluZSApCi0gICAge30KLQotICAgIGNvbnN0X3N0cmluZyAgICBtX2ZpbGVfbmFtZTsKLSAgICBzdGQ6OnNpemVfdCAgICAgbV9saW5lX251bTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBpdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIG9wZXJhdG9yIG5ldyBvdmVybG9hZCAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9JVEVTVF9OT19ORVdfT1ZFUkxPQURTKQotCi0vLyBTVEwKLSNpbmNsdWRlIDxjc3RkbGliPgotCi0jIGlmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjptYWxsb2M7IHVzaW5nIDo6ZnJlZTsgfQotIyBlbmRpZgotIyBpZmRlZiBfQ1JUREJHX01BUF9BTExPQwotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6X21hbGxvY19kYmc7IHVzaW5nIDo6X2ZyZWVfZGJnOyB9Ci0jIGVuZGlmCi0KLWlubGluZSB2b2lkKgotb3BlcmF0b3IgbmV3KCBzdGQ6OnNpemVfdCBzLCA6Om5kbmJvb3N0OjppdGVzdDo6bG9jYXRpb24gY29uc3QmIGwgKQotewotICAgIHZvaWQqIHJlcyA9IHN0ZDo6bWFsbG9jKHMgPyBzIDogMSk7Ci0KLSAgICBpZiggcmVzICkKLSAgICAgICAgOjpuZG5ib29zdDo6aXRlc3Q6Om1hbmFnZXI6Omluc3RhbmNlKCkuYWxsb2NhdGVkKCBsLm1fZmlsZV9uYW1lLCBsLm1fbGluZV9udW0sIHJlcywgcyApOwotICAgIGVsc2UKLSAgICAgICAgdGhyb3cgc3RkOjpiYWRfYWxsb2MoKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHZvaWQqCi1vcGVyYXRvciBuZXdbXSggc3RkOjpzaXplX3QgcywgOjpuZG5ib29zdDo6aXRlc3Q6OmxvY2F0aW9uIGNvbnN0JiBsICkKLXsKLSAgICB2b2lkKiByZXMgPSBzdGQ6Om1hbGxvYyhzID8gcyA6IDEpOwotCi0gICAgaWYoIHJlcyApCi0gICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmFsbG9jYXRlZCggbC5tX2ZpbGVfbmFtZSwgbC5tX2xpbmVfbnVtLCByZXMsIHMgKTsKLSAgICBlbHNlCi0gICAgICAgIHRocm93IHN0ZDo6YmFkX2FsbG9jKCk7Ci0gICAgICAgIAotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWlubGluZSB2b2lkCi1vcGVyYXRvciBkZWxldGUoIHZvaWQqIHAsIDo6bmRuYm9vc3Q6Oml0ZXN0Ojpsb2NhdGlvbiBjb25zdCYgKQotewotICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmZyZWVkKCBwICk7Ci0KLSAgICBzdGQ6OmZyZWUoIHAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHZvaWQKLW9wZXJhdG9yIGRlbGV0ZVtdKCB2b2lkKiBwLCA6Om5kbmJvb3N0OjppdGVzdDo6bG9jYXRpb24gY29uc3QmICkKLXsKLSAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5mcmVlZCggcCApOwotCi0gICAgc3RkOjpmcmVlKCBwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfSU5URVJBQ1RJT05fQkFTRURfSFBQXzExMjEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L21pbmltYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L21pbmltYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjA1OWY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9taW5pbWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAyLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNpbXBsZSBtaW5pbWFsIHRlc3RpbmcgZGVmaW5pdGlvbnMgYW5kIGltcGxlbWVudGF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX01JTklNQUxfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX01JTklNQUxfSFBQXzA3MTg5NEdFUgotCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLKGV4cCkgICAgICAgXAotICAoIChleHApICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgID8gc3RhdGljX2Nhc3Q8dm9pZD4oMCkgICBcCi0gICAgICA6IG5kbmJvb3N0OjptaW5pbWFsX3Rlc3Q6OnJlcG9ydF9lcnJvcigjZXhwLF9fRklMRV9fLF9fTElORV9fLCBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OKSApCi0KLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRShleHApICAgICBcCi0gICggKGV4cCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgPyBzdGF0aWNfY2FzdDx2b2lkPigwKSAgIFwKLSAgICAgIDogbmRuYm9vc3Q6Om1pbmltYWxfdGVzdDo6cmVwb3J0X2NyaXRpY2FsX2Vycm9yKCNleHAsX19GSUxFX18sX19MSU5FX18sTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTikpCi0KLSNkZWZpbmUgTkROQk9PU1RfRVJST1IoIG1zZ18gKSAgICBcCi0gICAgICAgIG5kbmJvb3N0OjptaW5pbWFsX3Rlc3Q6OnJlcG9ydF9lcnJvciggKG1zZ18pLF9fRklMRV9fLF9fTElORV9fLCBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OLCB0cnVlICkKLSNkZWZpbmUgTkROQk9PU1RfRkFJTCggbXNnXyApICAgICBcCi0gICAgICAgIG5kbmJvb3N0OjptaW5pbWFsX3Rlc3Q6OnJlcG9ydF9jcml0aWNhbF9lcnJvciggKG1zZ18pLF9fRklMRV9fLF9fTElORV9fLCBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OLCB0cnVlICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ltcGwvZXhlY3V0aW9uX21vbml0b3IuaXBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvaW1wbC9kZWJ1Zy5pcHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRsaWIuaHBwPiAgICAgICAgICAgIC8vIGZvciBleGl0IGNvZGVzI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRsaWIuaHBwPiAgICAgICAgICAgIC8vIGZvciBleGl0IGNvZGVzCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3VycmVudF9mdW5jdGlvbi5ocHA+ICAgLy8gZm9yIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zdHJlYW0+ICAgICAgICAgICAgICAgICAgICAgLy8gc3RkOjpjZXJyLCBzdGQ6OmVuZGwKLSNpbmNsdWRlIDxzdHJpbmc+ICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGQ6OnN0cmluZwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbnQgdGVzdF9tYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICk7ICAvLyBwcm90b3R5cGUgZm9yIHVzZXJzIHRlc3RfbWFpbigpCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbWluaW1hbF90ZXN0IHsKLQotdHlwZWRlZiBuZG5ib29zdDo6dW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgY29uc3Rfc3RyaW5nOwotCi1pbmxpbmUgdW5pdF90ZXN0Ojpjb3VudGVyX3QmIGVycm9yc19jb3VudGVyKCkgeyBzdGF0aWMgdW5pdF90ZXN0Ojpjb3VudGVyX3QgZWMgPSAwOyByZXR1cm4gZWM7IH0KLQotaW5saW5lIHZvaWQKLXJlcG9ydF9lcnJvciggY29uc3QgY2hhciogbXNnLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Rfc3RyaW5nIGZ1bmNfbmFtZSwgYm9vbCBpc19tc2cgPSBmYWxzZSApCi17Ci0gICAgKytlcnJvcnNfY291bnRlcigpOwotICAgIHN0ZDo6Y2VyciA8PCBmaWxlIDw8ICIoIiA8PCBsaW5lIDw8ICIpOiAiOwotCi0gICAgaWYoIGlzX21zZyApCi0gICAgICAgIHN0ZDo6Y2VyciA8PCBtc2c7Ci0gICAgZWxzZQotICAgICAgICBzdGQ6OmNlcnIgPDwgInRlc3QgIiA8PCBtc2cgPDwgIiBmYWlsZWQiOwotCi0gICAgaWYoIGZ1bmNfbmFtZSAhPSAiKHVua25vd24pIiApCi0gICAgICAgIHN0ZDo6Y2VyciA8PCAiIGluIGZ1bmN0aW9uOiAnIiA8PCBmdW5jX25hbWUgPDwgIiciOwotCi0gICAgc3RkOjpjZXJyIDw8IHN0ZDo6ZW5kbDsKLX0KLQotaW5saW5lIHZvaWQKLXJlcG9ydF9jcml0aWNhbF9lcnJvciggY29uc3QgY2hhciogbXNnLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Rfc3RyaW5nIGZ1bmNfbmFtZSwgYm9vbCBpc19tc2cgPSBmYWxzZSApCi17Ci0gICAgcmVwb3J0X2Vycm9yKCBtc2csIGZpbGUsIGxpbmUsIGZ1bmNfbmFtZSwgaXNfbXNnICk7Ci0KLSAgICB0aHJvdyBuZG5ib29zdDo6ZXhlY3V0aW9uX2Fib3J0ZWQoKTsKLX0KLQotY2xhc3MgY2FsbGVyIHsKLXB1YmxpYzoKLSAgICAvLyBjb25zdHJ1Y3RvcgotICAgIGNhbGxlciggaW50IGFyZ2MsIGNoYXIqKiBhcmd2ICkKLSAgICA6IG1fYXJnYyggYXJnYyApLCBtX2FyZ3YoIGFyZ3YgKSB7fQotCi0gICAgLy8gZXhlY3V0aW9uIG1vbml0b3IgaG9vayBpbXBsZW1lbnRhdGlvbgotICAgIGludCBvcGVyYXRvcigpKCkgeyByZXR1cm4gdGVzdF9tYWluKCBtX2FyZ2MsIG1fYXJndiApOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgaW50ICAgICAgICAgbV9hcmdjOwotICAgIGNoYXIqKiAgICAgIG1fYXJndjsKLX07IC8vIG1vbml0b3IKLQotfSAvLyBuYW1lc3BhY2UgbWluaW1hbF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWludCBORE5CT09TVF9URVNUX0NBTExfREVDTCBtYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om1pbmltYWxfdGVzdDsKLQotICAgIHRyeSB7Ci0gICAgICAgIDo6bmRuYm9vc3Q6OmV4ZWN1dGlvbl9tb25pdG9yIGV4X21vbjsKLSAgICAgICAgaW50IHJ1bl9yZXN1bHQgPSBleF9tb24uZXhlY3V0ZSggY2FsbGVyKCBhcmdjLCBhcmd2ICkgKTsKLQotICAgICAgICBORE5CT09TVF9DSEVDSyggcnVuX3Jlc3VsdCA9PSAwIHx8IHJ1bl9yZXN1bHQgPT0gbmRuYm9vc3Q6OmV4aXRfc3VjY2VzcyApOwotICAgIH0KLSAgICBjYXRjaCggbmRuYm9vc3Q6OmV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ZXggKSB7Ci0gICAgICAgIGlmKCBleGV4LmNvZGUoKSAhPSBuZG5ib29zdDo6ZXhlY3V0aW9uX2V4Y2VwdGlvbjo6bm9fZXJyb3IgKQotICAgICAgICAgICAgTkROQk9PU1RfRVJST1IoIChzdGQ6OnN0cmluZyggImV4Y2VwdGlvbiBcIiIgKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoIGV4ZXgud2hhdCgpLmJlZ2luKCksIGV4ZXgud2hhdCgpLmVuZCgpICkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKCAiXCIgY2F1Z2h0IiApICkuY19zdHIoKSApOwotICAgICAgICBzdGQ6OmNlcnIgPDwgIlxuKioqKiBUZXN0aW5nIGFib3J0ZWQuIjsKLSAgICB9Ci0KLSAgICBpZiggbmRuYm9vc3Q6Om1pbmltYWxfdGVzdDo6ZXJyb3JzX2NvdW50ZXIoKSAhPSAwICkgewotICAgICAgICBzdGQ6OmNlcnIgPDwgIlxuKioqKiAiIDw8IGVycm9yc19jb3VudGVyKCkKLSAgICAgICAgICAgICAgICAgIDw8ICIgZXJyb3IiIDw8IChlcnJvcnNfY291bnRlcigpID4gMSA/ICJzIiA6ICIiICkgPDwgIiBkZXRlY3RlZFxuIjsKLQotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfdGVzdF9mYWlsdXJlOwotICAgIH0KLQotICAgIHN0ZDo6Y291dCA8PCAiXG4qKioqIG5vIGVycm9ycyBkZXRlY3RlZFxuIjsKLSAgICAKLSAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfc3VjY2VzczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX01JTklNQUxfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L21vY2tfb2JqZWN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9tb2NrX29iamVjdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NWQ5NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L21vY2tfb2JqZWN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogRmFjaWxpdGllcyB0byBwZXJmb3JtIGV4Y2VwdGlvbiBzYWZldHlfdGVzdHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTU9DS19PQkpFQ1RfSFBQXzExMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX01PQ0tfT0JKRUNUX0hQUF8xMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9pbnRlcmFjdGlvbl9iYXNlZC5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGl0ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIG1vY2tfb2JqZWN0X2Jhc2UgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBtb2NrX29iamVjdF9iYXNlIHsKLXB1YmxpYzoKLSAgICBtb2NrX29iamVjdF9iYXNlKCkge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPgotICAgIG1vY2tfb2JqZWN0X2Jhc2UoIFQxIGNvbnN0JiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgbW9ja19vYmplY3RfYmFzZSggVDEgY29uc3QmLCBUMiBjb25zdCYgKSB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICBtb2NrX29iamVjdF9iYXNlKCBUMSBjb25zdCYsIFQyIGNvbnN0JiwgVDMgY29uc3QmICkge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotICAgIG1vY2tfb2JqZWN0X2Jhc2UoIFQxIGNvbnN0JiwgVDIgY29uc3QmLCBUMyBjb25zdCYsIFQ0IGNvbnN0JiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci0gICAgbW9ja19vYmplY3RfYmFzZSggVDEgY29uc3QmLCBUMiBjb25zdCYsIFQzIGNvbnN0JiwgVDQgY29uc3QmLCBUNSBjb25zdCYgKSB7fQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgbW9ja19vYmplY3QgaW1wbGVtZW50YXRpb24gaGVscGVycyAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgcmV0ICkgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIG1vY2tfb2JqZWN0OjpvcGVyYXRvciBvcCApOyAgICAgICAgICBcCi0gICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCBkZXNjciApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIHJldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTU9fVU5BUllfT1AoIG9wLCBkZXNjciApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXNlbGZfdHlwZSBjb25zdCYgb3BlcmF0b3Igb3AoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIHByb3RvdHlwZSgpICk7ICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBNT19VTkFSWV9CT09MX09QKCBvcCwgZGVzY3IgKSAgICAgICAgICAgICAgICAgICAgICAgXAotYm9vbCBvcGVyYXRvciBvcCgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgKCEhTkROQk9PU1RfSVRFU1RfRFBPSU5UKCkpICk7ICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIE1PX0JJTkFSWV9PUCggb3AsIGRlc2NyICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxpbnQgaTEsIHR5cGVuYW1lIEJhc2UxLGludCBpMiwgdHlwZW5hbWUgQmFzZTI+ICAgICBcCi1pbmxpbmUgbW9ja19vYmplY3Q8aTEsQmFzZTE+IGNvbnN0JiAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggbW9ja19vYmplY3Q8aTEsQmFzZTE+IGNvbnN0JiBtbywgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgbW9ja19vYmplY3Q8aTIsQmFzZTI+IGNvbnN0JiApICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCBtbyApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxpbnQgaSwgdHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgbW9ja19vYmplY3Q8aSxCYXNlPiBjb25zdCYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggbW9ja19vYmplY3Q8aSxCYXNlPiBjb25zdCYgbW8sIFQgY29uc3QmICkgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCBtbyApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxpbnQgaSwgdHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgbW9ja19vYmplY3Q8aSxCYXNlPiBjb25zdCYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggVCBjb25zdCYsIG1vY2tfb2JqZWN0PGksQmFzZT4gY29uc3QmIG1vICkgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCBtbyApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTU9fQklOQVJZX0JPT0xfT1AoIG9wLCBkZXNjciApICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGludCBpMSwgdHlwZW5hbWUgQmFzZTEsaW50IGkyLCB0eXBlbmFtZSBCYXNlMj4gICAgIFwKLWlubGluZSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBtb2NrX29iamVjdDxpMSxCYXNlMT4gY29uc3QmLCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBtb2NrX29iamVjdDxpMixCYXNlMj4gY29uc3QmICkgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIE5ETkJPT1NUX0lURVNUX0RQT0lOVCgpICk7ICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGludCBpLCB0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBtb2NrX29iamVjdDxpLEJhc2U+IGNvbnN0JiwgVCBjb25zdCYgKSAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIE5ETkJPT1NUX0lURVNUX0RQT0lOVCgpICk7ICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGludCBpLCB0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBUIGNvbnN0JiwgbW9ja19vYmplY3Q8aSxCYXNlPiBjb25zdCYgKSAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIE5ETkJPT1NUX0lURVNUX0RQT0lOVCgpICk7ICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgbW9ja19vYmplY3QgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTxpbnQgaSA9IDAsIHR5cGVuYW1lIEJhc2U9bW9ja19vYmplY3RfYmFzZT4KLWNsYXNzIG1vY2tfb2JqZWN0OwotCi10ZW1wbGF0ZTxpbnQgaSwgdHlwZW5hbWUgQmFzZT4KLWNsYXNzIG1vY2tfb2JqZWN0IDogcHVibGljIEJhc2UgewotICAgIC8vIFByaXZhdGUgdHlwZWVmcwotICAgIHR5cGVkZWYgbW9ja19vYmplY3Q8aSxCYXNlPiBzZWxmX3R5cGU7Ci0gICAgc3RydWN0IGR1bW15IHsgdm9pZCBub25udWxsKCkge307IH07Ci0gICAgdHlwZWRlZiB2b2lkIChkdW1teTo6KnNhZmVfYm9vbCkoKTsKLQotICAgIC8vIHByb3RvdHlwZSBjb25zdHJ1Y3RvcgotICAgIG1vY2tfb2JqZWN0KCBkdW1teSogKSB7fQotCi1wdWJsaWM6Ci0gICAgc3RhdGljIG1vY2tfb2JqZWN0JiBwcm90b3R5cGUoKQotICAgIHsKLSAgICAgICAgc3RhdGljIG1vY2tfb2JqZWN0IHAoIHJlaW50ZXJwcmV0X2Nhc3Q8ZHVtbXkqPigwKSApOyAKLSAgICAgICAgcmV0dXJuIHA7Ci0gICAgfQotCi0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgbW9ja19vYmplY3QoKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIG1vY2tfb2JqZWN0Ojptb2NrX29iamVjdCApOwotICAgICAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoICJNb2NrIG9iamVjdCBkZWZhdWx0IGNvbnN0cnVjdG9yIiApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPgotICAgIG1vY2tfb2JqZWN0KCBUMSBjb25zdCYgYXJnMSApCi0gICAgOiBtb2NrX29iamVjdF9iYXNlKCBhcmcxICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6bW9ja19vYmplY3QgKTsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAiTW9jayBvYmplY3QgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIG1vY2tfb2JqZWN0KCBUMSBjb25zdCYgYXJnMSwgVDIgY29uc3QmIGFyZzIgKQotICAgIDogbW9ja19vYmplY3RfYmFzZSggYXJnMSwgYXJnMiApCi0gICAgewotICAgICAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om1vY2tfb2JqZWN0ICk7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggIk1vY2sgb2JqZWN0IGNvbnN0cnVjdG9yIiApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gICAgbW9ja19vYmplY3QoIFQxIGNvbnN0JiBhcmcxLCBUMiBjb25zdCYgYXJnMiwgVDMgY29uc3QmIGFyZzMgKQotICAgIDogbW9ja19vYmplY3RfYmFzZSggYXJnMSwgYXJnMiwgYXJnMyApCi0gICAgewotICAgICAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om1vY2tfb2JqZWN0ICk7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggIk1vY2sgb2JqZWN0IGNvbnN0cnVjdG9yIiApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotICAgIG1vY2tfb2JqZWN0KCBUMSBjb25zdCYgYXJnMSwgVDIgY29uc3QmIGFyZzIsIFQzIGNvbnN0JiBhcmczLCBUNCBjb25zdCYgYXJnNCApCi0gICAgOiBtb2NrX29iamVjdF9iYXNlKCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0ICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6bW9ja19vYmplY3QgKTsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAiTW9jayBvYmplY3QgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotICAgIG1vY2tfb2JqZWN0KCBUMSBjb25zdCYgYXJnMSwgVDIgY29uc3QmIGFyZzIsIFQzIGNvbnN0JiBhcmczLCBUNCBjb25zdCYgYXJnNCwgVDUgY29uc3QmIGFyZzUgKQotICAgIDogbW9ja19vYmplY3RfYmFzZSggYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSApCi0gICAgewotICAgICAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om1vY2tfb2JqZWN0ICk7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggIk1vY2sgb2JqZWN0IGNvbnN0cnVjdG9yIiApOwotICAgIH0KLQotICAgIG1vY2tfb2JqZWN0KCBtb2NrX29iamVjdCBjb25zdCYgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIG1vY2tfb2JqZWN0Ojptb2NrX29iamVjdCApOwotICAgICAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoICJNb2NrIG9iamVjdCBjb3B5IGNvbnN0cnVjdG9yIiApOwotICAgIH0KLQotICAgIC8vIGFzc2lnbm1lbnQKLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yID0oIG1vY2tfb2JqZWN0IGNvbnN0JiApIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCA9LCAiQ29weSBhc3NpZ25tZW50IiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yID0oIFQgY29uc3QmICkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoID0sICJDb3B5IGFzc2lnbm1lbnQiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLQotICAgIC8vIFVuYXJ5IG9wZXJhdG9ycwotICAgIE1PX1VOQVJZX0JPT0xfT1AoICEsICJMb2dpY2FsIE5PVCBvcGVyYXRvciIgKQotICAgIE1PX1VOQVJZX09QKCAmLCAiQWRkcmVzcy1vZiBvcGVyYXRvciIgKQotICAgIE1PX1VOQVJZX09QKCB+LCAiT25lJ3MgY29tcGxlbWVudCBvcGVyYXRvciIgKQotICAgIE1PX1VOQVJZX09QKCAqLCAiUG9pbnRlciBkZXJlZmVyZW5jZSIgKQotICAgIE1PX1VOQVJZX09QKCArLCAiVW5hcnkgcGx1cyIgKQotCi0gICAgLy8gSW5jcmVtZW50IGFuZCBEZWNyZW1lbnQKLSAgICBNT19VTkFSWV9PUCggKyssICJQcmVmaXggaW5jcmVtZW50IiApCi0gICAgTU9fVU5BUllfT1AoIC0tLCAiUHJlZml4IGRlY3JlbWVudCIgKQotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgKysoaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKyssICJQb3N0Zml4IGluY3JlbWVudCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgLS0oaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggLS0sICJQb3N0Zml4IGRlY3JlbWVudCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotCi0gICAgLy8gQm9vbCBjb250ZXh0IGNvbnZlcnRpb24KLSAgICBvcGVyYXRvciBzYWZlX2Jvb2woKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggc2FmZV9ib29sLCAiQm9vbCBjb250ZXh0IGNvbnZlcnNpb24iLAotICAgICAgICAgICAgICAgICAgICAoTkROQk9PU1RfSVRFU1RfRFBPSU5UKCkgPyAwIDogJmR1bW15Ojpub25udWxsKSApOwotICAgIH0KLQotICAgIC8vIEZ1bmN0aW9uLWNhbGwgb3BlcmF0b3JzCi0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAoKSgpIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCAoKSwgIjAtYXJpdHkgZnVuY3Rpb24tY2FsbCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPgotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgKCkoIFQxIGNvbnN0JiBhcmcxICkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoICgpLCAiMS1hcml0eSBmdW5jdGlvbi1jYWxsIiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgKCkoIFQxIGNvbnN0JiwgVDIgY29uc3QmICkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoICgpLCAiMi1hcml0eSBmdW5jdGlvbi1jYWxsIiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yICgpKCBUMSBjb25zdCYsIFQyIGNvbnN0JiwgVDMgY29uc3QmICkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoICgpLCAiMy1hcml0eSBmdW5jdGlvbi1jYWxsIiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAoKSggVDEgY29uc3QmLCBUMiBjb25zdCYsIFQzIGNvbnN0JiwgVDQgY29uc3QmICkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoICgpLCAiNC1hcml0eSBmdW5jdGlvbi1jYWxsIiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgKCkoIFQxIGNvbnN0JiwgVDIgY29uc3QmLCBUMyBjb25zdCYsIFQ0IGNvbnN0JiwgVDUgY29uc3QmICkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoICgpLCAiNS1hcml0eSBmdW5jdGlvbi1jYWxsIiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0KLSAgICAvLyBTdWJzdHJpcHRpbmcKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgW10oIFQgY29uc3QmICkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoIFtdLCAiU3Vic3RyaXB0aW5nIiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0KLSAgICAvLyBDbGFzcyBtZW1iZXIgYWNjZXNzCi0gICAgc2VsZl90eXBlIGNvbnN0KiAgICBvcGVyYXRvci0+KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoIC0+LCAiQ2xhc3MgbWVtYmVyIGFjY2VzcyIsIHRoaXMgKTsKLSAgICB9Ci19OwotCi0vLyAhISBNT19CSU5BUllfT1AoIE5ETkJPT1NUX1BQX0NPTU1BKCksICJDb21tYSBvcGVyYXRvciIgKQotCi1NT19CSU5BUllfQk9PTF9PUCggIT0sICJJbmVxdWFsaXR5IiApCi1NT19CSU5BUllfT1AoICUsICJNb2R1bHVzIiApCi1NT19CSU5BUllfT1AoICU9LCAiTW9kdWx1cy9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfT1AoICYsICJCaXR3aXNlIEFORCIgKQotTU9fQklOQVJZX0JPT0xfT1AoICYmLCAiTG9naWNhbCBBTkQiICkKLU1PX0JJTkFSWV9PUCggJj0sICJCaXR3aXNlIEFORC9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfT1AoICosICJNdWx0aXBsaWNhdGlvbiIgKQotTU9fQklOQVJZX09QKCAqPSwgIk11bHRpcGxpY2F0aW9uL2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9PUCggKywgIkFkZGl0aW9uIiApCi1NT19CSU5BUllfT1AoICs9LCAiQWRkaXRpb24vYXNzaWdubWVudCIgKQotLy9NT19CSU5BUllfT1AoIC0sICJTdWJ0cmFjdGlvbiIgKQotTU9fQklOQVJZX09QKCAtPSwgIlN1YnRyYWN0aW9uL2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9PUCggLT4qLCAiUG9pbnRlci10by1tZW1iZXIgc2VsZWN0aW9uIiApCi1NT19CSU5BUllfT1AoIC8sICJEaXZpc2lvbiIgKQotTU9fQklOQVJZX09QKCAvPSwgIkRpdmlzaW9uL2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9CT09MX09QKCA8LCAiTGVzcyB0aGFuIiApCi1NT19CSU5BUllfT1AoIDw8PSwgIkxlZnQgc2hpZnQvYXNzaWdubWVudCIgKQotTU9fQklOQVJZX0JPT0xfT1AoIDw9LCAiTGVzcyB0aGFuIG9yIGVxdWFsIHRvIiApCi1NT19CSU5BUllfQk9PTF9PUCggPT0sICJFcXVhbGl0eSIgKQotTU9fQklOQVJZX0JPT0xfT1AoID4sICJHcmVhdGVyIHRoYW4iICkKLU1PX0JJTkFSWV9CT09MX09QKCA+PSwgIkdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byIgKQotTU9fQklOQVJZX09QKCA+Pj0sICJSaWdodCBzaGlmdC9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfT1AoIF4sICJFeGNsdXNpdmUgT1IiICkKLU1PX0JJTkFSWV9PUCggXj0sICJFeGNsdXNpdmUgT1IvYXNzaWdubWVudCIgKQotTU9fQklOQVJZX09QKCB8LCAiQml0d2lzZSBpbmNsdXNpdmUgT1IiICkKLU1PX0JJTkFSWV9PUCggfD0sICJCaXR3aXNlIGluY2x1c2l2ZSBPUi9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfQk9PTF9PUCggfHwsICJMb2dpY2FsIE9SIiApCi0KLU1PX0JJTkFSWV9PUCggPDwsICJMZWZ0IHNoaWZ0IiApCi1NT19CSU5BUllfT1AoID4+LCAiUmlnaHQgc2hpZnQiICkKLQotfSAvLyBuYW1lc3BhY2UgaXRlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX01PQ0tfT0JKRUNUX0hQUF8xMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L2NvbXBpbGVyX2xvZ19mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDFkZjA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNvbnRhaW5zIGNvbXBpbGVyIGxpa2UgTG9nIGZvcm1hdHRlciBkZWZpbml0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0NPTVBJTEVSX0xPR19GT1JNQVRURVJfSFBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0NPTVBJTEVSX0xPR19GT1JNQVRURVJfSFBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBjb21waWxlcl9sb2dfZm9ybWF0dGVyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIGNvbXBpbGVyX2xvZ19mb3JtYXR0ZXIgOiBwdWJsaWMgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIgewotcHVibGljOgotICAgIC8vIEZvcm1hdHRlciBpbnRlcmZhY2UKLSAgICB2b2lkICAgIGxvZ19zdGFydCggc3RkOjpvc3RyZWFtJiwgY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICk7Ci0gICAgdm9pZCAgICBsb2dfZmluaXNoKCBzdGQ6Om9zdHJlYW0mICk7Ci0gICAgdm9pZCAgICBsb2dfYnVpbGRfaW5mbyggc3RkOjpvc3RyZWFtJiApOwotCi0gICAgdm9pZCAgICB0ZXN0X3VuaXRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9maW5pc2goIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUsIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCApOwotICAgIHZvaWQgICAgdGVzdF91bml0X3NraXBwZWQoIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUgKTsKLQotICAgIHZvaWQgICAgbG9nX2V4Y2VwdGlvbiggc3RkOjpvc3RyZWFtJiwgbG9nX2NoZWNrcG9pbnRfZGF0YSBjb25zdCYsIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICk7Ci0KLSAgICB2b2lkICAgIGxvZ19lbnRyeV9zdGFydCggc3RkOjpvc3RyZWFtJiwgbG9nX2VudHJ5X2RhdGEgY29uc3QmLCBsb2dfZW50cnlfdHlwZXMgbGV0ICk7Ci0gICAgdm9pZCAgICBsb2dfZW50cnlfdmFsdWUoIHN0ZDo6b3N0cmVhbSYsIGNvbnN0X3N0cmluZyB2YWx1ZSApOwotICAgIHZvaWQgICAgbG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mLCBsYXp5X29zdHJlYW0gY29uc3QmIHZhbHVlICk7Ci0gICAgdm9pZCAgICBsb2dfZW50cnlfZmluaXNoKCBzdGQ6Om9zdHJlYW0mICk7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgICAgcHJpbnRfcHJlZml4KCBzdGQ6Om9zdHJlYW0mLCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZSApOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ugb3V0cHV0Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQ09NUElMRVJfTE9HX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC9wbGFpbl9yZXBvcnRfZm9ybWF0dGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkwN2MzZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBwbGFpbiByZXBvcnQgZm9ybWF0dGVyIGltcGxlbWVudGF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1BMQUlOX1JFUE9SVF9GT1JNQVRURVJfSFBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1BMQUlOX1JFUE9SVF9GT1JNQVRURVJfSFBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19yZXBvcnRlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHBsYWluX3JlcG9ydF9mb3JtYXR0ZXIgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBwbGFpbl9yZXBvcnRfZm9ybWF0dGVyIDogcHVibGljIHJlc3VsdHNfcmVwb3J0ZXI6OmZvcm1hdCB7Ci1wdWJsaWM6Ci0gICAgLy8gRm9ybWF0dGVyIGludGVyZmFjZQotICAgIHZvaWQgICAgcmVzdWx0c19yZXBvcnRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotICAgIHZvaWQgICAgcmVzdWx0c19yZXBvcnRfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLQotICAgIHZvaWQgICAgdGVzdF91bml0X3JlcG9ydF9zdGFydCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0KLSAgICB2b2lkICAgIGRvX2NvbmZpcm1hdGlvbl9yZXBvcnQoIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGNvdW50ZXJfdCBtX2luZGVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG91dHB1dAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1BMQUlOX1JFUE9SVF9GT1JNQVRURVJfSFBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC94bWxfbG9nX2Zvcm1hdHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9sb2dfZm9ybWF0dGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U1NDhhZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9sb2dfZm9ybWF0dGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY29udGFpbnMgWE1MIExvZyBmb3JtYXR0ZXIgZGVmaW5pdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9YTUxfTE9HX0ZPUk1BVFRFUl8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9YTUxfTE9HX0ZPUk1BVFRFUl8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2dfZm9ybWF0dGVyLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gLy8gc3RkOjpzaXplX3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBvdXRwdXQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB4bWxfbG9nX2Zvcm1hdHRlciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHhtbF9sb2dfZm9ybWF0dGVyIDogcHVibGljIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyIHsKLXB1YmxpYzoKLSAgICAvLyBGb3JtYXR0ZXIgaW50ZXJmYWNlCi0gICAgdm9pZCAgICBsb2dfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApOwotICAgIHZvaWQgICAgbG9nX2ZpbmlzaCggc3RkOjpvc3RyZWFtJiApOwotICAgIHZvaWQgICAgbG9nX2J1aWxkX2luZm8oIHN0ZDo6b3N0cmVhbSYgKTsKLQotICAgIHZvaWQgICAgdGVzdF91bml0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCB0ZXN0X3VuaXQgY29uc3QmIHR1ICk7Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfZmluaXNoKCBzdGQ6Om9zdHJlYW0mLCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nIGVsYXBzZWQgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9za2lwcGVkKCBzdGQ6Om9zdHJlYW0mLCB0ZXN0X3VuaXQgY29uc3QmIHR1ICk7Ci0KLSAgICB2b2lkICAgIGxvZ19leGNlcHRpb24oIHN0ZDo6b3N0cmVhbSYsIGxvZ19jaGVja3BvaW50X2RhdGEgY29uc3QmLCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApOwotCi0gICAgdm9pZCAgICBsb2dfZW50cnlfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIGxvZ19lbnRyeV9kYXRhIGNvbnN0JiwgbG9nX2VudHJ5X3R5cGVzIGxldCApOwotICAgIHVzaW5nICAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV92YWx1ZTsgLy8gYnJpbmcgYmFzZSBjbGFzcyBmdW5jdGlvbnMgaW50byBvdmVybG9hZCBzZXQKLSAgICB2b2lkICAgIGxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiwgY29uc3Rfc3RyaW5nIHZhbHVlICk7Ci0gICAgdm9pZCAgICBsb2dfZW50cnlfZmluaXNoKCBzdGQ6Om9zdHJlYW0mICk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgY29uc3Rfc3RyaW5nICAgIG1fY3Vycl90YWc7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9YTUxfTE9HX0ZPUk1BVFRFUl8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX3JlcG9ydF9mb3JtYXR0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC94bWxfcmVwb3J0X2Zvcm1hdHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZjAyYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC94bWxfcmVwb3J0X2Zvcm1hdHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IFhNTCByZXBvcnQgZm9ybWF0dGVyIGltcGxlbWVudGF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1hNTF9SRVBPUlRfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9YTUxfUkVQT1JUX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBvdXRwdXQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHhtbF9yZXBvcnRfZm9ybWF0dGVyICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHhtbF9yZXBvcnRfZm9ybWF0dGVyIDogcHVibGljIHJlc3VsdHNfcmVwb3J0ZXI6OmZvcm1hdCB7Ci1wdWJsaWM6Ci0gICAgLy8gRm9ybWF0dGVyIGludGVyZmFjZQotICAgIHZvaWQgICAgcmVzdWx0c19yZXBvcnRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotICAgIHZvaWQgICAgcmVzdWx0c19yZXBvcnRfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLQotICAgIHZvaWQgICAgdGVzdF91bml0X3JlcG9ydF9zdGFydCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0KLSAgICB2b2lkICAgIGRvX2NvbmZpcm1hdGlvbl9yZXBvcnQoIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ugb3V0cHV0Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfWE1MX1JFUE9SVF9GT1JNQVRURVJfSFBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dF90ZXN0X3N0cmVhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0X3Rlc3Rfc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYwYWIwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0X3Rlc3Rfc3RyZWFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogb3V0cHV0X3Rlc3Rfc3RyZWFtIGNsYXNzIGRlZmluaXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfT1VUUFVUX1RFU1RfU1RSRUFNX0hQUF8wMTI3MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9PVVRQVVRfVEVTVF9TVFJFQU1fSFBQXzAxMjcwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcHJlZGljYXRlX3Jlc3VsdC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgIC8vIGZvciBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBvdXRwdXRfdGVzdF9zdHJlYW0gICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLS8vIGNsYXNzIHRvIGJlIHVzZWQgdG8gc2ltcGxpZnkgdGVzdGluZyBvZiBvc3RyZWFtLWJhc2VkIG91dHB1dCBvcGVyYXRpb25zCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB0ZXN0X3Rvb2xzIHsKLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIG91dHB1dF90ZXN0X3N0cmVhbSA6IHB1YmxpYyB3cmFwX3N0cmluZ3N0cmVhbTo6d3JhcHBlZF9zdHJlYW0gewotICAgIHR5cGVkZWYgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgY29uc3Rfc3RyaW5nOwotICAgIHR5cGVkZWYgcHJlZGljYXRlX3Jlc3VsdCAgICAgICAgcmVzdWx0X3R5cGU7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgb3V0cHV0X3Rlc3Rfc3RyZWFtKCBjb25zdF9zdHJpbmcgICAgcGF0dGVybl9maWxlX25hbWUgPSBjb25zdF9zdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgbWF0Y2hfb3Jfc2F2ZSAgICAgPSB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICB0ZXh0X29yX2JpbmFyeSAgICA9IHRydWUgKTsKLQotICAgIC8vIERlc3RydWN0b3IKLSAgICB+b3V0cHV0X3Rlc3Rfc3RyZWFtKCk7Ci0KLSAgICAvLyBjaGVja2luZyBmdW5jdGlvbgotICAgIHJlc3VsdF90eXBlICAgICBpc19lbXB0eSggYm9vbCBmbHVzaF9zdHJlYW0gPSB0cnVlICk7Ci0gICAgcmVzdWx0X3R5cGUgICAgIGNoZWNrX2xlbmd0aCggc3RkOjpzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoX3N0cmVhbSA9IHRydWUgKTsKLSAgICByZXN1bHRfdHlwZSAgICAgaXNfZXF1YWwoIGNvbnN0X3N0cmluZyBhcmdfLCBib29sIGZsdXNoX3N0cmVhbSA9IHRydWUgKTsKLSAgICByZXN1bHRfdHlwZSAgICAgbWF0Y2hfcGF0dGVybiggYm9vbCBmbHVzaF9zdHJlYW0gPSB0cnVlICk7Ci0KLSAgICAvLyBleHBsaWNpdCBmbHVzaAotICAgIHZvaWQgICAgICAgICAgICBmbHVzaCgpOwotCi1wcml2YXRlOgotICAgIC8vIGhlbHBlciBmdW5jdGlvbnMKLSAgICBzdGQ6OnNpemVfdCAgICAgbGVuZ3RoKCk7Ci0gICAgdm9pZCAgICAgICAgICAgIHN5bmMoKTsKLQotICAgIHN0cnVjdCBJbXBsOwotICAgIEltcGwqICAgICAgICAgICBtX3BpbXBsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdGVzdF90b29scwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfT1VUUFVUX1RFU1RfU1RSRUFNX0hQUF8wMTI3MDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9wcmVkaWNhdGVfcmVzdWx0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9wcmVkaWNhdGVfcmVzdWx0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMyYjY4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcHJlZGljYXRlX3Jlc3VsdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGVuaGFuY2VkIHJlc3VsdCBmb3IgdGVzdCBwcmVkaWNhdGUgdGhhdCBpbmNsdWRlIG1lc3NhZ2UgZXhwbGFpbmluZyBmYWlsdXJlCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1BSRURJQ0FURV9SRVNVTFRfSFBQXzAxMjcwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1BSRURJQ0FURV9SRVNVTFRfSFBQXzAxMjcwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3dyYXBfc3RyaW5nc3RyZWFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAvLyBmb3Igc3RkOjpzaXplX3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHRlc3RfdG9vbHMgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgcHJlZGljYXRlX3Jlc3VsdCAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBwcmVkaWNhdGVfcmVzdWx0IHsKLSAgICB0eXBlZGVmIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nICAgICAgY29uc3Rfc3RyaW5nOwotICAgIHN0cnVjdCBkdW1teSB7IHZvaWQgbm9ubnVsbCgpIHt9OyB9OwotICAgIHR5cGVkZWYgdm9pZCAoZHVtbXk6OipzYWZlX2Jvb2wpKCk7Ci0KLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHByZWRpY2F0ZV9yZXN1bHQoIGJvb2wgcHZfICkgCi0gICAgOiBwX3ByZWRpY2F0ZV92YWx1ZSggcHZfICkKLSAgICB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQm9vbENvbnZlcnRhYmxlPgotICAgIHByZWRpY2F0ZV9yZXN1bHQoIEJvb2xDb252ZXJ0YWJsZSBjb25zdCYgcHZfICkgOiBwX3ByZWRpY2F0ZV92YWx1ZSggISFwdl8gKSB7fQotCi0gICAgLy8gQWNjZXNzIG1ldGhvZHMKLSAgICBib29sICAgICAgICAgICAgICAgIG9wZXJhdG9yISgpIGNvbnN0ICAgICAgICAgICB7IHJldHVybiAhcF9wcmVkaWNhdGVfdmFsdWU7IH0KLSAgICB2b2lkICAgICAgICAgICAgICAgIG9wZXJhdG9yPSggYm9vbCBwdl8gKSAgICAgICB7IHBfcHJlZGljYXRlX3ZhbHVlLnZhbHVlID0gcHZfOyB9Ci0gICAgb3BlcmF0b3IgICAgICAgICAgICBzYWZlX2Jvb2woKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gISFwX3ByZWRpY2F0ZV92YWx1ZSA/ICZkdW1teTo6bm9ubnVsbCA6IDA7IH0KLQotICAgIC8vIFB1YmxpYyBwcm9wZXJ0aWVzCi0gICAgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFkoIGJvb2wsIChwcmVkaWNhdGVfcmVzdWx0KSApIHBfcHJlZGljYXRlX3ZhbHVlOwotCi0gICAgLy8gQWNjZXNzIG1ldGhvZHMKLSAgICBib29sICAgICAgICAgICAgICAgIGhhc19lbXB0eV9tZXNzYWdlKCkgY29uc3QgICB7IHJldHVybiAhbV9tZXNzYWdlOyB9Ci0gICAgd3JhcF9zdHJpbmdzdHJlYW0mICBtZXNzYWdlKCkKLSAgICB7Ci0gICAgICAgIGlmKCAhbV9tZXNzYWdlICkKLSAgICAgICAgICAgIG1fbWVzc2FnZS5yZXNldCggbmV3IHdyYXBfc3RyaW5nc3RyZWFtICk7Ci0KLSAgICAgICAgcmV0dXJuICptX21lc3NhZ2U7Ci0gICAgfQotICAgIGNvbnN0X3N0cmluZyAgICAgICAgbWVzc2FnZSgpIGNvbnN0ICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuICFtX21lc3NhZ2UgPyBjb25zdF9zdHJpbmcoKSA6IGNvbnN0X3N0cmluZyggbV9tZXNzYWdlLT5zdHIoKSApOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgc2hhcmVkX3B0cjx3cmFwX3N0cmluZ3N0cmVhbT4gbV9tZXNzYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdGVzdF90b29scwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfUFJFRElDQVRFX1JFU1VMVF9IUFBfMDEyNzA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcHJvZ3Jlc3NfbW9uaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcHJvZ3Jlc3NfbW9uaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMmM0ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Byb2dyZXNzX21vbml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIHNpbXBsZSB0ZXh0IGJhc2VkIHByb2dyZXNzIG1vbml0b3IKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUFJPR1JFU1NfTU9OSVRPUl9IUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUFJPR1JFU1NfTU9OSVRPUl9IUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvdHJpdmlhbF9zaW5nbGV0b24uaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+ICAgLy8gZm9yIHN0ZDo6b3N0cmVhbSYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBwcm9ncmVzc19tb25pdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHByb2dyZXNzX21vbml0b3JfdCA6IHB1YmxpYyB0ZXN0X29ic2VydmVyLCBwdWJsaWMgc2luZ2xldG9uPHByb2dyZXNzX21vbml0b3JfdD4gewotcHVibGljOgotICAgIC8vIHRlc3Qgb2JzZXJ2ZXIgaW50ZXJmYWNlCi0gICAgdm9pZCAgICB0ZXN0X3N0YXJ0KCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKTsKLSAgICB2b2lkICAgIHRlc3RfZmluaXNoKCkge30KLSAgICB2b2lkICAgIHRlc3RfYWJvcnRlZCgpOwotCi0gICAgdm9pZCAgICB0ZXN0X3VuaXRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgKSB7fQotICAgIHZvaWQgICAgdGVzdF91bml0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0JiwgdW5zaWduZWQgbG9uZyApOwotICAgIHZvaWQgICAgdGVzdF91bml0X3NraXBwZWQoIHRlc3RfdW5pdCBjb25zdCYgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9hYm9ydGVkKCB0ZXN0X3VuaXQgY29uc3QmICkge30KLQotICAgIHZvaWQgICAgYXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCApIHt9Ci0gICAgdm9pZCAgICBleGNlcHRpb25fY2F1Z2h0KCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiApIHt9Ci0KLSAgICAvLyBjb25maWd1cmF0aW9uCi0gICAgdm9pZCAgICBzZXRfc3RyZWFtKCBzdGQ6Om9zdHJlYW0mICk7Ci0KLXByaXZhdGU6Ci0gICAgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fQ09OUyggcHJvZ3Jlc3NfbW9uaXRvcl90ICk7Ci19OyAvLyBwcm9ncmVzc19tb25pdG9yX3QKLQotTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fSU5TVCggcHJvZ3Jlc3NfbW9uaXRvciApCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfUFJPR1JFU1NfTU9OSVRPUl9IUFBfMDIwMTA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmRjY2ZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGNsYXNzIHVuaXRfdGVzdF9yZXN1bHQgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgCi0vLyAgZ2F0aGVyaW5nIHRlc3QgcmVzdWx0cyBhbmQgcHJlc2VudGluZyB0aGlzIGluZm9ybWF0aW9uIHRvIGVuZC11c2VyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1JFU1VMVFNfQ09MTEVDVE9SX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9SRVNVTFRTX0NPTExFQ1RPUl9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvdHJpdmlhbF9zaW5nbGV0b24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBmaXJzdCBmYWlsZWQgYXNzZXJ0aW9uIGRlYnVnZ2VyIGhvb2sgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci1pbmxpbmUgdm9pZCBmaXJzdF9mYWlsZWRfYXNzZXJ0aW9uKCkge30KLX0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHMgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdGVzdF9yZXN1bHRzIHsKLXB1YmxpYzoKLSAgICB0ZXN0X3Jlc3VsdHMoKTsKLQotICAgIHR5cGVkZWYgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFkoIGNvdW50ZXJfdCwgKHJlc3VsdHNfY29sbGVjdG9yX3QpKHRlc3RfcmVzdWx0cykocmVzdWx0c19jb2xsZWN0X2hlbHBlcikgKSBjb3VudGVyX3Byb3A7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSggYm9vbCwgICAgICAocmVzdWx0c19jb2xsZWN0b3JfdCkodGVzdF9yZXN1bHRzKShyZXN1bHRzX2NvbGxlY3RfaGVscGVyKSApIGJvb2xfcHJvcDsKLQotICAgIGNvdW50ZXJfcHJvcCAgICBwX2Fzc2VydGlvbnNfcGFzc2VkOwotICAgIGNvdW50ZXJfcHJvcCAgICBwX2Fzc2VydGlvbnNfZmFpbGVkOwotICAgIGNvdW50ZXJfcHJvcCAgICBwX2V4cGVjdGVkX2ZhaWx1cmVzOwotICAgIGNvdW50ZXJfcHJvcCAgICBwX3Rlc3RfY2FzZXNfcGFzc2VkOwotICAgIGNvdW50ZXJfcHJvcCAgICBwX3Rlc3RfY2FzZXNfZmFpbGVkOwotICAgIGNvdW50ZXJfcHJvcCAgICBwX3Rlc3RfY2FzZXNfc2tpcHBlZDsKLSAgICBjb3VudGVyX3Byb3AgICAgcF90ZXN0X2Nhc2VzX2Fib3J0ZWQ7Ci0gICAgYm9vbF9wcm9wICAgICAgIHBfYWJvcnRlZDsKLSAgICBib29sX3Byb3AgICAgICAgcF9za2lwcGVkOwotCi0gICAgLy8gImNvbmNsdXNpb24iIG1ldGhvZHMKLSAgICBib29sICAgICAgICAgICAgcGFzc2VkKCkgY29uc3Q7Ci0gICAgaW50ICAgICAgICAgICAgIHJlc3VsdF9jb2RlKCkgY29uc3Q7Ci0KLSAgICAvLyBjb2xsZWN0aW9uIGhlbHBlcgotICAgIHZvaWQgICAgICAgICAgICBvcGVyYXRvcis9KCB0ZXN0X3Jlc3VsdHMgY29uc3QmICk7Ci0KLSAgICB2b2lkICAgICAgICAgICAgY2xlYXIoKTsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHJlc3VsdHNfY29sbGVjdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHJlc3VsdHNfY29sbGVjdG9yX3QgOiBwdWJsaWMgdGVzdF9vYnNlcnZlciwgcHVibGljIHNpbmdsZXRvbjxyZXN1bHRzX2NvbGxlY3Rvcl90PiB7Ci1wdWJsaWM6Ci0gICAgLy8gdGVzdF9vYnNlcnZlciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24KLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3Rfc3RhcnQoIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF9maW5pc2goKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfYWJvcnRlZCgpOwotCi0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfdW5pdF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYsIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X3NraXBwZWQoIHRlc3RfdW5pdCBjb25zdCYgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfdW5pdF9hYm9ydGVkKCB0ZXN0X3VuaXQgY29uc3QmICk7Ci0KLSAgICB2b2lkICAgICAgICAgICAgICAgIGFzc2VydGlvbl9yZXN1bHQoIGJvb2wgcGFzc2VkICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBleGNlcHRpb25fY2F1Z2h0KCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiApOwotCi0gICAgLy8gcmVzdWx0cyBhY2Nlc3MKLSAgICB0ZXN0X3Jlc3VsdHMgY29uc3QmIHJlc3VsdHMoIHRlc3RfdW5pdF9pZCApIGNvbnN0OwotCi1wcml2YXRlOgotICAgIE5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0NPTlMoIHJlc3VsdHNfY29sbGVjdG9yX3QgKTsKLX07Ci0KLU5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0lOU1QoIHJlc3VsdHNfY29sbGVjdG9yICkKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9SRVNVTFRTX0NPTExFQ1RPUl9IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZiOWVjMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcmVzdWx0c19yZXBvcnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgY2xhc3MgdW5pdF90ZXN0X3Jlc3VsdCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciAKLS8vICBnYXRoZXJpbmcgdGVzdCByZXN1bHRzIGFuZCBwcmVzZW50aW5nIHRoaXMgaW5mb3JtYXRpb24gdG8gZW5kLXVzZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19SRVBPUlRFUl9IUFBfMDIxMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19SRVBPUlRFUl9IUFBfMDIxMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+ICAgLy8gZm9yIHN0ZDo6b3N0cmVhbSYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSByZXN1bHRzX3JlcG9ydGVyIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBmb3JtYXR0ZXIgaW50ZXJmYWNlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgZm9ybWF0IHsKLXB1YmxpYzoKLSAgICAvLyBEZXN0cnVjdG9yCi0gICAgdmlydHVhbCB+Zm9ybWF0KCkge30KLQotICAgIHZpcnR1YWwgdm9pZCAgICByZXN1bHRzX3JlcG9ydF9zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICByZXN1bHRzX3JlcG9ydF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgZG9fY29uZmlybWF0aW9uX3JlcG9ydCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICkgPSAwOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICByZXBvcnQgY29uZmlndXJhdGlvbiAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBzZXRfbGV2ZWwoIHJlcG9ydF9sZXZlbCApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgc2V0X3N0cmVhbSggc3RkOjpvc3RyZWFtJiApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgc2V0X2Zvcm1hdCggb3V0cHV0X2Zvcm1hdCApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgc2V0X2Zvcm1hdCggcmVzdWx0c19yZXBvcnRlcjo6Zm9ybWF0KiApOwotCi1ORE5CT09TVF9URVNUX0RFQ0wgc3RkOjpvc3RyZWFtJiBnZXRfc3RyZWFtKCk7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHJlcG9ydCBpbml0aWF0aW9uICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgbWFrZV9yZXBvcnQoIHJlcG9ydF9sZXZlbCBsID0gSU5WX1JFUE9SVF9MRVZFTCwgdGVzdF91bml0X2lkID0gSU5WX1RFU1RfVU5JVF9JRCApOwotaW5saW5lIHZvaWQgICAgICAgICAgICAgY29uZmlybWF0aW9uX3JlcG9ydCggdGVzdF91bml0X2lkIGlkID0gSU5WX1RFU1RfVU5JVF9JRCApICAgCi17IG1ha2VfcmVwb3J0KCBDT05GSVJNQVRJT05fUkVQT1JULCBpZCApOyB9Ci1pbmxpbmUgdm9pZCAgICAgICAgICAgICBzaG9ydF9yZXBvcnQoIHRlc3RfdW5pdF9pZCBpZCA9IElOVl9URVNUX1VOSVRfSUQgKQoteyBtYWtlX3JlcG9ydCggU0hPUlRfUkVQT1JULCBpZCApOyB9Ci1pbmxpbmUgdm9pZCAgICAgICAgICAgICBkZXRhaWxlZF9yZXBvcnQoIHRlc3RfdW5pdF9pZCBpZCA9IElOVl9URVNUX1VOSVRfSUQgKQoteyBtYWtlX3JlcG9ydCggREVUQUlMRURfUkVQT1JULCBpZCApOyB9Ci0KLX0gLy8gbmFtZXNwYWNlIHJlc3VsdHNfcmVwb3J0ZXIKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9SRVNVTFRTX1JFUE9SVEVSX0hQUF8wMjEyMDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzU3YTkyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC90ZXN0X29ic2VydmVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBhYnN0cmFjdCBpbnRlcmZhY2UgZm9yIHRlc3Qgb2JzZXJ2ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVEVTVF9PQlNFUlZFUl9IUFBfMDIxMDA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVEVTVF9PQlNFUlZFUl9IUFBfMDIxMDA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHRlc3Rfb2JzZXJ2ZXIgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X29ic2VydmVyIHsKLXB1YmxpYzoKLSAgICAvLyB0ZXN0IG9ic2VydmVyIGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3N0YXJ0KCBjb3VudGVyX3QgLyogdGVzdF9jYXNlc19hbW91bnQgKi8gKSB7fQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X2ZpbmlzaCgpIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfYWJvcnRlZCgpIHt9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF91bml0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmICkge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF91bml0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0JiwgdW5zaWduZWQgbG9uZyAvKiBlbGFwc2VkICovICkge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF91bml0X3NraXBwZWQoIHRlc3RfdW5pdCBjb25zdCYgKSB7fQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiApIHt9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgYXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCAvKiBwYXNzZWQgKi8gKSB7fQotICAgIHZpcnR1YWwgdm9pZCAgICBleGNlcHRpb25fY2F1Z2h0KCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiApIHt9Ci0KLSAgICB2aXJ0dWFsIGludCAgICAgcHJpb3JpdHkoKSB7IHJldHVybiAwOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMIH50ZXN0X29ic2VydmVyKCkge30KLX07Ci0KLX0gLy8gdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9URVNUX09CU0VSVkVSX0hQUF8wMjEwMDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTcxYzAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNvbnRhaW5zIGRlZmluaXRpb24gZm9yIGFsbCB0ZXN0IHRvb2xzIGluIHRlc3QgdG9vbGJveAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9URVNUX1RPT0xTX0hQUF8wMTI3MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9URVNUX1RPT0xTX0hQUF8wMTI3MDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcHJlZGljYXRlX3Jlc3VsdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2Zsb2F0aW5nX3BvaW50X2NvbXBhcmlzb24uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3dyYXBfc3RyaW5nc3RyZWFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvbGF6eV9vc3RyZWFtLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZW51bS5ocHA+IAotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgLy8gZm9yIHN0ZDo6c2l6ZV90Ci0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPGlvcz4gICAgICAgICAgICAgIC8vIGZvciBzdGQ6OmJvb2xhbHBoYQotI2luY2x1ZGUgPGNsaW1pdHM+ICAgICAgICAgIC8vIGZvciBDSEFSX0JJVAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTI3KSAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICBUT09MIEJPWCAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0vLyBJbiBtYWNyb3MgYmVsb3cgZm9sbG93aW5nIGFyZ3VtZW50IGFiYnJldmlhdGlvbnMgYXJlIHVzZWQ6Ci0vLyBQIC0gcHJlZGljYXRlCi0vLyBNIC0gbWVzc2FnZQotLy8gUyAtIHN0YXRlbWVudAotLy8gRSAtIGV4Y2VwdGlvbgotLy8gTCAtIGxlZnQgYXJndW1lbnQKLS8vIFIgLSByaWdodCBhcmd1bWVudAotLy8gVEwgLSB0b29sIGxldmVsCi0vLyBDVCAtIGNoZWNrIHR5cGUKLS8vIEFSR1MgLSBhcmd1bWVudHMgbGlzdAotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVE9PTF9JTVBMKCBmdW5jLCBQLCBjaGVja19kZXNjciwgVEwsIENUICkgICAgICAgICAgICBcCi0gICAgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpmdW5jKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6bGF6eV9vc3RyZWFtOjppbnN0YW5jZSgpIDw8IGNoZWNrX2Rlc2NyLCAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfTChfX0ZJTEVfXyksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihfX0xJTkVfXyksICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6VEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6Q1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfSU1QTCggUCwgY2hlY2tfZGVzY3IsIFRMLCBDVCApICAgICAgICAgICAgICAgICAgXAotZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVEVTVF9QQVNTUE9JTlQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX1RPT0xfSU1QTCggY2hlY2tfaW1wbCwgUCwgY2hlY2tfZGVzY3IsIFRMLCBDVCApLCAwICk7XAotfSB3aGlsZSggOjpuZG5ib29zdDo6dGVzdF90b29sczo6ZHVtbXlfY29uZCApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QQVNTX0FSR19JTkZPKCByLCBkYXRhLCBhcmcgKSAsIGFyZywgTkROQk9PU1RfU1RSSU5HSVpFKCBhcmcgKQotCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCBQLCBjaGVja19kZXNjciwgVEwsIENULCBBUkdTICkgIFwKLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RFU1RfUEFTU1BPSU5UKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVEVTVF9UT09MX0lNUEwoIGNoZWNrX2Zyd2QsIFAsIGNoZWNrX2Rlc2NyLCBUTCwgQ1QgKSAgICAgIFwKLSAgICBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0goIE5ETkJPT1NUX1RFU1RfUEFTU19BUkdfSU5GTywgJ18nLCBBUkdTICkgKTsgXAotfSB3aGlsZSggOjpuZG5ib29zdDo6dGVzdF90b29sczo6ZHVtbXlfY29uZCApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTiggUCApICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggKFApLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggUCApLCBXQVJOLCBDSEVDS19QUkVEICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0soIFAgKSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggKFApLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggUCApLCBDSEVDSywgQ0hFQ0tfUFJFRCApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkUoIFAgKSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIChQKSwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIFAgKSwgUkVRVUlSRSwgQ0hFQ0tfUFJFRCApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9NRVNTQUdFKCBQLCBNICkgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggKFApLCBNLCBXQVJOLCBDSEVDS19NU0cgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19NRVNTQUdFKCBQLCBNICkgICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCAoUCksIE0sIENIRUNLLCBDSEVDS19NU0cgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoIFAsIE0gKSAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCAoUCksIE0sIFJFUVVJUkUsIENIRUNLX01TRyApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfRVJST1IoIE0gKSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfTUVTU0FHRSggZmFsc2UsIE0gKQotI2RlZmluZSBORE5CT09TVF9GQUlMKCBNICkgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoIGZhbHNlLCBNICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9DSEVDS19USFJPV19JTVBMKCBTLCBFLCBQLCBwcmVmaXgsIFRMICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9QQVNTUE9JTlQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBTOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIGZhbHNlLCAiZXhjZXB0aW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKCBFICkgIiBpcyBleHBlY3RlZCIsIFRMLCBDSEVDS19NU0cgKTsgfSAgIFwKLSAgICBjYXRjaCggRSBjb25zdCYgZXggKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnV0X2RldGFpbDo6aWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKCBleCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIFAsIHByZWZpeCBORE5CT09TVF9TVFJJTkdJWkUoIEUgKSAiIGlzIGNhdWdodCIsIFRMLCBDSEVDS19NU0cgKTsgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fVEhST1coIFMsIEUgKSAgICAgICAgICAgIE5ETkJPT1NUX0NIRUNLX1RIUk9XX0lNUEwoIFMsIEUsIHRydWUsICJleGNlcHRpb24gIiwgV0FSTiApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX1RIUk9XKCBTLCBFICkgICAgICAgICAgIE5ETkJPT1NUX0NIRUNLX1RIUk9XX0lNUEwoIFMsIEUsIHRydWUsICJleGNlcHRpb24gIiwgQ0hFQ0sgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX1RIUk9XKCBTLCBFICkgICAgICAgICBORE5CT09TVF9DSEVDS19USFJPV19JTVBMKCBTLCBFLCB0cnVlLCAiZXhjZXB0aW9uICIsIFJFUVVJUkUgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fRVhDRVBUSU9OKCBTLCBFLCBQICkgICAgIE5ETkJPT1NUX0NIRUNLX1RIUk9XX0lNUEwoIFMsIEUsIFAoIGV4ICksICJpbmNvcnJlY3QgZXhjZXB0aW9uICIsIFdBUk4gKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19FWENFUFRJT04oIFMsIEUsIFAgKSAgICBORE5CT09TVF9DSEVDS19USFJPV19JTVBMKCBTLCBFLCBQKCBleCApLCAiaW5jb3JyZWN0IGV4Y2VwdGlvbiAiLCBDSEVDSyApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfRVhDRVBUSU9OKCBTLCBFLCBQICkgIE5ETkJPT1NUX0NIRUNLX1RIUk9XX0lNUEwoIFMsIEUsIFAoIGV4ICksICJpbmNvcnJlY3QgZXhjZXB0aW9uICIsIFJFUVVJUkUgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX05PX1RIUk9XX0lNUEwoIFMsIFRMICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIHRydWUsICJubyBleGNlcHRpb25zIHRocm93biBieSAiIE5ETkJPT1NUX1NUUklOR0laRSggUyApLCBUTCwgQ0hFQ0tfTVNHICk7IH0gXAotICAgIGNhdGNoKCAuLi4gKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggZmFsc2UsICJleGNlcHRpb24gdGhyb3duIGJ5ICIgTkROQk9PU1RfU1RSSU5HSVpFKCBTICksIFRMLCBDSEVDS19NU0cgKTsgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fTk9fVEhST1coIFMgKSAgICAgICAgICAgIE5ETkJPT1NUX0NIRUNLX05PX1RIUk9XX0lNUEwoIFMsIFdBUk4gKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19OT19USFJPVyggUyApICAgICAgICAgICBORE5CT09TVF9DSEVDS19OT19USFJPV19JTVBMKCBTLCBDSEVDSyApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfTk9fVEhST1coIFMgKSAgICAgICAgIE5ETkJPT1NUX0NIRUNLX05PX1RIUk9XX0lNUEwoIFMsIFJFUVVJUkUgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fRVFVQUwoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6ZXF1YWxfaW1wbF9mcndkKCksICIiLCBXQVJOLCBDSEVDS19FUVVBTCwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6ZXF1YWxfaW1wbF9mcndkKCksICIiLCBDSEVDSywgQ0hFQ0tfRVFVQUwsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfRVFVQUwoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6ZXF1YWxfaW1wbF9mcndkKCksICIiLCBSRVFVSVJFLCBDSEVDS19FUVVBTCwgKEwpKFIpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX05FKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Om5lX2ltcGwoKSwgIiIsIFdBUk4sIENIRUNLX05FLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19ORSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpuZV9pbXBsKCksICIiLCBDSEVDSywgQ0hFQ0tfTkUsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfTkUoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bmVfaW1wbCgpLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfTkUsIChMKShSKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9MVCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpsdF9pbXBsKCksICIiLCBXQVJOLCBDSEVDS19MVCwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfTFQoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bHRfaW1wbCgpLCAiIiwgQ0hFQ0ssIENIRUNLX0xULCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0xUKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Omx0X2ltcGwoKSwgIiIsIFJFUVVJUkUsIENIRUNLX0xULCAoTCkoUikgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fTEUoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bGVfaW1wbCgpLCAiIiwgV0FSTiwgQ0hFQ0tfTEUsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0xFKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmxlX2ltcGwoKSwgIiIsIENIRUNLLCBDSEVDS19MRSwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9MRSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpsZV9pbXBsKCksICIiLCBSRVFVSVJFLCBDSEVDS19MRSwgKEwpKFIpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0dUKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Omd0X2ltcGwoKSwgIiIsIFdBUk4sIENIRUNLX0dULCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19HVCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpndF9pbXBsKCksICIiLCBDSEVDSywgQ0hFQ0tfR1QsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfR1QoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6Z3RfaW1wbCgpLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfR1QsIChMKShSKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9HRSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpnZV9pbXBsKCksICIiLCBXQVJOLCBDSEVDS19HRSwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfR0UoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6Z2VfaW1wbCgpLCAiIiwgQ0hFQ0ssIENIRUNLX0dFLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0dFKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmdlX2ltcGwoKSwgIiIsIFJFUVVJUkUsIENIRUNLX0dFLCAoTCkoUikgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fQ0xPU0UoIEwsIFIsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX2Nsb3NlLCAiIiwgV0FSTiwgQ0hFQ0tfQ0xPU0UsIFwKLSAgICAgICAgKEwpKFIpKDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnBlcmNlbnRfdG9sZXJhbmNlKFQpKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0NMT1NFKCBMLCBSLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19jbG9zZSwgIiIsIENIRUNLLCBDSEVDS19DTE9TRSwgXAotICAgICAgICAoTCkoUikoOjpuZG5ib29zdDo6dGVzdF90b29sczo6cGVyY2VudF90b2xlcmFuY2UoVCkpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9DTE9TRSggTCwgUiwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfY2xvc2UsICIiLCBSRVFVSVJFLCBDSEVDS19DTE9TRSwgXAotICAgICAgICAoTCkoUikoOjpuZG5ib29zdDo6dGVzdF90b29sczo6cGVyY2VudF90b2xlcmFuY2UoVCkpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0NMT1NFX0ZSQUNUSU9OKCBMLCBSLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19jbG9zZSwgIiIsIFdBUk4sIENIRUNLX0NMT1NFX0ZSQUNUSU9OLCBcCi0gICAgKEwpKFIpKDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmZyYWN0aW9uX3RvbGVyYW5jZShUKSkgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19DTE9TRV9GUkFDVElPTiggTCwgUiwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfY2xvc2UsICIiLCBDSEVDSywgQ0hFQ0tfQ0xPU0VfRlJBQ1RJT04sIFwKLSAgICAoTCkoUikoOjpuZG5ib29zdDo6dGVzdF90b29sczo6ZnJhY3Rpb25fdG9sZXJhbmNlKFQpKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfQ0xPU0VfRlJBQ1RJT04oIEwsIFIsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX2Nsb3NlLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfQ0xPU0VfRlJBQ1RJT04sIFwKLSAgICAoTCkoUikoOjpuZG5ib29zdDo6dGVzdF90b29sczo6ZnJhY3Rpb25fdG9sZXJhbmNlKFQpKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9TTUFMTCggRlBWLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19zbWFsbCwgIiIsIFdBUk4sIENIRUNLX1NNQUxMLCAoRlBWKShUKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX1NNQUxMKCBGUFYsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX3NtYWxsLCAiIiwgQ0hFQ0ssIENIRUNLX1NNQUxMLCAoRlBWKShUKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfU01BTEwoIEZQViwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfc21hbGwsICIiLCBSRVFVSVJFLCBDSEVDS19TTUFMTCwgKEZQVikoVCkgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fUFJFRElDQVRFKCBQLCBBUkdTICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCBQLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggUCApLCBXQVJOLCBDSEVDS19QUkVEX1dJVEhfQVJHUywgQVJHUyApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX1BSRURJQ0FURSggUCwgQVJHUyApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggUCwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIFAgKSwgQ0hFQ0ssIENIRUNLX1BSRURfV0lUSF9BUkdTLCBBUkdTICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9QUkVESUNBVEUoIFAsIEFSR1MgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIFAsIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBQICksIFJFUVVJUkUsIENIRUNLX1BSRURfV0lUSF9BUkdTLCBBUkdTICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9FUVVBTF9DT0xMRUNUSU9OU19JTVBMKCBMX2JlZ2luLCBMX2VuZCwgUl9iZWdpbiwgUl9lbmQsIFRMICkgICAgICBcCi0gICAgTkROQk9PU1RfVEVTVF9UT09MX0lNUEwoIGNoZWNrX2ltcGwsIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6ZXF1YWxfY29sbF9pbXBsKCBcCi0gICAgICAgIChMX2JlZ2luKSwgKExfZW5kKSwgKFJfYmVnaW4pLCAoUl9lbmQpICksICIiLCBUTCwgQ0hFQ0tfRVFVQUxfQ09MTCApLCAgIFwKLSAgICA0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1NUUklOR0laRSggTF9iZWdpbiApLCBORE5CT09TVF9TVFJJTkdJWkUoIExfZW5kICksICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfU1RSSU5HSVpFKCBSX2JlZ2luICksIE5ETkJPT1NUX1NUUklOR0laRSggUl9lbmQgKSApICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0VRVUFMX0NPTExFQ1RJT05TKCBMX2JlZ2luLCBMX2VuZCwgUl9iZWdpbiwgUl9lbmQgKSAgICAgICAgICBcCi0gICAgTkROQk9PU1RfRVFVQUxfQ09MTEVDVElPTlNfSU1QTCggTF9iZWdpbiwgTF9lbmQsIFJfYmVnaW4sIFJfZW5kLCBXQVJOICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfRVFVQUxfQ09MTEVDVElPTlMoIExfYmVnaW4sIExfZW5kLCBSX2JlZ2luLCBSX2VuZCApICAgICAgICAgXAotICAgIE5ETkJPT1NUX0VRVUFMX0NPTExFQ1RJT05TX0lNUEwoIExfYmVnaW4sIExfZW5kLCBSX2JlZ2luLCBSX2VuZCwgQ0hFQ0sgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0VRVUFMX0NPTExFQ1RJT05TKCBMX2JlZ2luLCBMX2VuZCwgUl9iZWdpbiwgUl9lbmQgKSAgICAgICBcCi0gICAgTkROQk9PU1RfRVFVQUxfQ09MTEVDVElPTlNfSU1QTCggTF9iZWdpbiwgTF9lbmQsIFJfYmVnaW4sIFJfZW5kLCBSRVFVSVJFICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9CSVRXSVNFX0VRVUFMX0lNUEwoIEwsIFIsIFRMICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVEVTVF9UT09MX0lNUEwoIGNoZWNrX2ltcGwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6Yml0d2lzZV9lcXVhbF9pbXBsKCAoTCksIChSKSApLCAgICAgICAgICAgXAotICAgICAgIiIsIFRMLCBDSEVDS19CSVRXSVNFX0VRVUFMICksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgMiwgTkROQk9PU1RfU1RSSU5HSVpFKCBMICksIE5ETkJPT1NUX1NUUklOR0laRSggUiApICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0JJVFdJU0VfRVFVQUwoIEwsIFIgKSAgICBORE5CT09TVF9CSVRXSVNFX0VRVUFMX0lNUEwoIEwsIFIsIFdBUk4gKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19CSVRXSVNFX0VRVUFMKCBMLCBSICkgICBORE5CT09TVF9CSVRXSVNFX0VRVUFMX0lNUEwoIEwsIFIsIENIRUNLICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9CSVRXSVNFX0VRVUFMKCBMLCBSICkgTkROQk9PU1RfQklUV0lTRV9FUVVBTF9JTVBMKCBMLCBSLCBSRVFVSVJFICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9JU19ERUZJTkVEKCBzeW1iICkgICAgICAgICAgICA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmlzX2RlZmluZWRfaW1wbCggI3N5bWIsIE5ETkJPT1NUX1NUUklOR0laRSg9IHN5bWIpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vIGRlcHJlY2F0ZWQgaW50ZXJmYWNlCi0KLSNkZWZpbmUgTkROQk9PU1RfQklUV0lTRV9FUVVBTCggTCwgUiApICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfQklUV0lTRV9FUVVBTCggTCwgUiApCi0jZGVmaW5lIE5ETkJPT1NUX01FU1NBR0UoIE0gKSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfTUVTU0FHRSggTSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLUE9JTlQoIE0gKSAgICAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfQ0hFQ0tQT0lOVCggTSApCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB0ZXN0X3Rvb2xzIHsKLQotdHlwZWRlZiB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyAgICAgIGNvbnN0X3N0cmluZzsKLQotbmFtZXNwYWNlIHsgYm9vbCBkdW1teV9jb25kID0gZmFsc2U7IH0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIHByaW50X2xvZ192YWx1ZSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHByaW50X2xvZ192YWx1ZSB7Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIFQgY29uc3QmIHQgKQotICAgIHsKLSAgICAgICAgLy8gYXZvaWQgd2FybmluZzogJ25kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjo8dW5uYW1lZD46OmR1bW15X2NvbmQnIGRlZmluZWQgYnV0IG5vdCB1c2VkIAotICAgICAgICBpZiAoOjpuZG5ib29zdDo6dGVzdF90b29sczo6ZHVtbXlfY29uZCkge30KLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6b3JfPGlzX2FycmF5PFQ+LGlzX2Z1bmN0aW9uPFQ+LGlzX2Fic3RyYWN0PFQ+ID46OnR5cGUgY2FudF91c2Vfbmw7Ci0KLSAgICAgICAgc2V0X3ByZWNpc2lvbiggb3N0ciwgY2FudF91c2VfbmwoKSApOwotCi0gICAgICAgIG9zdHIgPDwgdDsgLy8gYnkgZGVmYXVsdCBwcmludCB0aGUgdmFsdWUKLSAgICB9Ci0KLSAgICB2b2lkIHNldF9wcmVjaXNpb24oIHN0ZDo6b3N0cmVhbSYgb3N0ciwgbXBsOjpmYWxzZV8gKQotICAgIHsKLSAgICAgICAgaWYoIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkICYmIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OnJhZGl4ID09IDIgKQotICAgICAgICAgICAgb3N0ci5wcmVjaXNpb24oIDIgKyBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgKiAzMDEvMTAwMCApOyAKLSAgICB9Ci0KLSAgICB2b2lkIHNldF9wcmVjaXNpb24oIHN0ZDo6b3N0cmVhbSYsIG1wbDo6dHJ1ZV8gKSB7fQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0RPTlRfUFJJTlRfTE9HX1ZBTFVFKCB0aGVfdHlwZSApICAgICAgICAgXAotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHRlc3RfdG9vbHMgeyAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHByaW50X2xvZ192YWx1ZTx0aGVfdHlwZSA+IHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgb3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiwgdGhlX3R5cGUgY29uc3QmICkge30gICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOID4KLXN0cnVjdCBwcmludF9sb2dfdmFsdWU8IFRbTl0gPiB7Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIFQgY29uc3QqIHQgKQotICAgIHsKLSAgICAgICAgb3N0ciA8PCB0OwotICAgIH0KLX07Ci0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBwcmludF9sb2dfdmFsdWU8Ym9vbD4gewotICAgIHZvaWQgICAgb3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCBib29sIHQgKQotICAgIHsKLSAgICAgICAgIG9zdHIgPDwgc3RkOjpib29sYWxwaGEgPDwgdDsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIHByaW50X2xvZ192YWx1ZTxjaGFyPiB7Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGNoYXIgdCApOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBwcmludF9sb2dfdmFsdWU8dW5zaWduZWQgY2hhcj4gewotICAgIHZvaWQgICAgb3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCB1bnNpZ25lZCBjaGFyIHQgKTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgcHJpbnRfbG9nX3ZhbHVlPGNoYXIgY29uc3QqPiB7Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGNoYXIgY29uc3QqIHQgKTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgcHJpbnRfbG9nX3ZhbHVlPHdjaGFyX3QgY29uc3QqPiB7Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIHdjaGFyX3QgY29uc3QqIHQgKTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSB0dF9kZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHRvb2xzIGNsYXNzaWZpY2F0aW9uICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWVudW0gY2hlY2tfdHlwZSB7Ci0gICAgQ0hFQ0tfUFJFRCwgCi0gICAgQ0hFQ0tfTVNHLAotICAgIENIRUNLX0VRVUFMLAotICAgIENIRUNLX05FLAotICAgIENIRUNLX0xULAotICAgIENIRUNLX0xFLAotICAgIENIRUNLX0dULAotICAgIENIRUNLX0dFLAotICAgIENIRUNLX0NMT1NFLAotICAgIENIRUNLX0NMT1NFX0ZSQUNUSU9OLAotICAgIENIRUNLX1NNQUxMLAotICAgIENIRUNLX0JJVFdJU0VfRVFVQUwsCi0gICAgQ0hFQ0tfUFJFRF9XSVRIX0FSR1MsCi0gICAgQ0hFQ0tfRVFVQUxfQ09MTAotfTsKLQotZW51bSB0b29sX2xldmVsIHsKLSAgICBXQVJOLCBDSEVDSywgUkVRVUlSRSwgUEFTUwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBwcmludF9oZWxwZXIgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gQWRkcyBsZXZlbCBvZiBpbmRpcmVjdGlvbiB0byB0aGUgb3V0cHV0IG9wZXJhdGlvbiwgYWxsb3dpbmcgdXMgdG8gY3VzdG9taXplIAotLy8gaXQgZm9yIHR5cGVzIHRoYXQgZG8gbm90IHN1cHBvcnQgb3BlcmF0b3IgPDwgZGlyZWN0bHkgb3IgZm9yIGFueSBvdGhlciByZWFzb24KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBwcmludF9oZWxwZXJfdCB7Ci0gICAgZXhwbGljaXQgICAgcHJpbnRfaGVscGVyX3QoIFQgY29uc3QmIHQgKSA6IG1fdCggdCApIHt9Ci0KLSAgICBUIGNvbnN0JiAgICBtX3Q7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpIAotLy8gQm9ybGFuZCBzdWZmZXJzIHByZW1hdHVyZSBwb2ludGVyIGRlY2F5IHBhc3NpbmcgYXJyYXlzIGJ5IHJlZmVyZW5jZQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTiA+Ci1zdHJ1Y3QgcHJpbnRfaGVscGVyX3Q8IFRbTl0gPiB7Ci0gICAgZXhwbGljaXQgICAgcHJpbnRfaGVscGVyX3QoIFQgY29uc3QgKiB0ICkgOiBtX3QoIHQgKSB7fQotCi0gICAgVCBjb25zdCAqICAgbV90OwotfTsKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHByaW50X2hlbHBlcl90PFQ+IHByaW50X2hlbHBlciggVCBjb25zdCYgdCApCi17Ci0gICAgcmV0dXJuIHByaW50X2hlbHBlcl90PFQ+KCB0ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtJiAKLW9wZXJhdG9yPDwoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgcHJpbnRfaGVscGVyX3Q8VD4gY29uc3QmIHBoICkKLXsKLSAgICBwcmludF9sb2dfdmFsdWU8VD4oKSggb3N0ciwgcGgubV90ICk7Ci0KLSAgICByZXR1cm4gb3N0cjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgVE9PTCBCT1ggSW1wbGVtZW50YXRpb24gICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9URVNUX0RFQ0wgCi1ib29sIGNoZWNrX2ltcGwoIHByZWRpY2F0ZV9yZXN1bHQgY29uc3QmIHByLCA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6Omxhenlfb3N0cmVhbSBjb25zdCYgY2hlY2tfZGVzY3IsCi0gICAgICAgICAgICAgICAgIGNvbnN0X3N0cmluZyBmaWxlX25hbWUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLAotICAgICAgICAgICAgICAgICB0b29sX2xldmVsIHRsLCBjaGVja190eXBlIGN0LAotICAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBudW1fYXJncywgLi4uICk7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgVEVNUExfUEFSQU1TKCB6LCBtLCBkdW1teSApICwgdHlwZW5hbWUgTkROQk9PU1RfSk9JTiggQXJnLCBtICkKLSNkZWZpbmUgRlVOQ19QQVJBTVMoIHosIG0sIGR1bW15ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAsIE5ETkJPT1NUX0pPSU4oIEFyZywgbSApIGNvbnN0JiBORE5CT09TVF9KT0lOKCBhcmcsIG0gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAsIGNoYXIgY29uc3QqIE5ETkJPT1NUX0pPSU4oIE5ETkJPT1NUX0pPSU4oIGFyZywgbSApLCBfZGVzY3IgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBQUkVEX1BBUkFNUyggeiwgbSwgZHVtbXkgKSBORE5CT09TVF9QUF9DT01NQV9JRiggbSApIE5ETkJPT1NUX0pPSU4oIGFyZywgbSApIAotCi0jZGVmaW5lIEFSR19JTkZPKCB6LCBtLCBkdW1teSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLCBORE5CT09TVF9KT0lOKCBORE5CT09TVF9KT0lOKCBhcmcsIG0gKSwgX2Rlc2NyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLCAmc3RhdGljX2Nhc3Q8Y29uc3QgdW5pdF90ZXN0OjpsYXp5X29zdHJlYW0mPih1bml0X3Rlc3Q6Omxhenlfb3N0cmVhbTo6aW5zdGFuY2UoKSBcCi0gICAgICAgIDw8IDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6cHJpbnRfaGVscGVyKCBORE5CT09TVF9KT0lOKCBhcmcsIG0gKSApKSAgICBcCi0vKiovCi0KLSNkZWZpbmUgSU1QTF9GUldEKCB6LCBuLCBkdW1teSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPHR5cGVuYW1lIFByZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeiggTkROQk9PU1RfUFBfQUREKCBuLCAxICksIFRFTVBMX1BBUkFNUywgXyApPiAgICAgICAgICAgIFwKLWlubGluZSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWNoZWNrX2Zyd2QoIFByZWQgUCwgdW5pdF90ZXN0OjpsYXp5X29zdHJlYW0gY29uc3QmIGNoZWNrX2Rlc2NyLCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGNvbnN0X3N0cmluZyBmaWxlX25hbWUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRvb2xfbGV2ZWwgdGwsIGNoZWNrX3R5cGUgY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeiggTkROQk9PU1RfUFBfQUREKCBuLCAxICksIEZVTkNfUEFSQU1TLCBfICkgICAgICAgICAgIFwKLSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBjaGVja19pbXBsKCBQKCBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooIE5ETkJPT1NUX1BQX0FERCggbiwgMSApLCBQUkVEX1BBUkFNUywgXyApICksIFwKLSAgICAgICAgICAgICAgICBjaGVja19kZXNjciwgZmlsZV9uYW1lLCBsaW5lX251bSwgdGwsIGN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9BREQoIG4sIDEgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooIE5ETkJPT1NUX1BQX0FERCggbiwgMSApLCBBUkdfSU5GTywgXyApICAgICAgICAgIFwKLSAgICApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2lmbmRlZiBORE5CT09TVF9URVNUX01BWF9QUkVESUNBVEVfQVJJVFkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9NQVhfUFJFRElDQVRFX0FSSVRZIDUKLSNlbmRpZgotCi1ORE5CT09TVF9QUF9SRVBFQVQoIE5ETkJPT1NUX1RFU1RfTUFYX1BSRURJQ0FURV9BUklUWSwgSU1QTF9GUldELCBfICkKLQotI3VuZGVmIFRFTVBMX1BBUkFNUwotI3VuZGVmIEZVTkNfUEFSQU1TCi0jdW5kZWYgUFJFRF9JTkZPCi0jdW5kZWYgQVJHX0lORk8KLSN1bmRlZiBJTVBMX0ZSV0QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGUgPGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0PgotcHJlZGljYXRlX3Jlc3VsdCBlcXVhbF9pbXBsKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQgKQotewotICAgIHJldHVybiBsZWZ0ID09IHJpZ2h0OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcmVkaWNhdGVfcmVzdWx0ICAgICAgICBORE5CT09TVF9URVNUX0RFQ0wgZXF1YWxfaW1wbCggY2hhciBjb25zdCogbGVmdCwgY2hhciBjb25zdCogcmlnaHQgKTsKLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIGNoYXIqIGxlZnQsIGNoYXIgY29uc3QqIHJpZ2h0ICkgeyByZXR1cm4gZXF1YWxfaW1wbCggc3RhdGljX2Nhc3Q8Y2hhciBjb25zdCo+KGxlZnQpLCBzdGF0aWNfY2FzdDxjaGFyIGNvbnN0Kj4ocmlnaHQpICk7IH0KLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIGNoYXIgY29uc3QqIGxlZnQsIGNoYXIqIHJpZ2h0ICkgeyByZXR1cm4gZXF1YWxfaW1wbCggc3RhdGljX2Nhc3Q8Y2hhciBjb25zdCo+KGxlZnQpLCBzdGF0aWNfY2FzdDxjaGFyIGNvbnN0Kj4ocmlnaHQpICk7IH0KLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIGNoYXIqIGxlZnQsIGNoYXIqIHJpZ2h0ICkgICAgICAgeyByZXR1cm4gZXF1YWxfaW1wbCggc3RhdGljX2Nhc3Q8Y2hhciBjb25zdCo+KGxlZnQpLCBzdGF0aWNfY2FzdDxjaGFyIGNvbnN0Kj4ocmlnaHQpICk7IH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DV0NIQVIgKQotcHJlZGljYXRlX3Jlc3VsdCAgICAgICAgTkROQk9PU1RfVEVTVF9ERUNMIGVxdWFsX2ltcGwoIHdjaGFyX3QgY29uc3QqIGxlZnQsIHdjaGFyX3QgY29uc3QqIHJpZ2h0ICk7Ci1pbmxpbmUgcHJlZGljYXRlX3Jlc3VsdCBlcXVhbF9pbXBsKCB3Y2hhcl90KiBsZWZ0LCB3Y2hhcl90IGNvbnN0KiByaWdodCApIHsgcmV0dXJuIGVxdWFsX2ltcGwoIHN0YXRpY19jYXN0PHdjaGFyX3QgY29uc3QqPihsZWZ0KSwgc3RhdGljX2Nhc3Q8d2NoYXJfdCBjb25zdCo+KHJpZ2h0KSApOyB9Ci1pbmxpbmUgcHJlZGljYXRlX3Jlc3VsdCBlcXVhbF9pbXBsKCB3Y2hhcl90IGNvbnN0KiBsZWZ0LCB3Y2hhcl90KiByaWdodCApIHsgcmV0dXJuIGVxdWFsX2ltcGwoIHN0YXRpY19jYXN0PHdjaGFyX3QgY29uc3QqPihsZWZ0KSwgc3RhdGljX2Nhc3Q8d2NoYXJfdCBjb25zdCo+KHJpZ2h0KSApOyB9Ci1pbmxpbmUgcHJlZGljYXRlX3Jlc3VsdCBlcXVhbF9pbXBsKCB3Y2hhcl90KiBsZWZ0LCB3Y2hhcl90KiByaWdodCApICAgICAgIHsgcmV0dXJuIGVxdWFsX2ltcGwoIHN0YXRpY19jYXN0PHdjaGFyX3QgY29uc3QqPihsZWZ0KSwgc3RhdGljX2Nhc3Q8d2NoYXJfdCBjb25zdCo+KHJpZ2h0KSApOyB9Ci0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IGVxdWFsX2ltcGxfZnJ3ZCB7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIExlZnQsIHR5cGVuYW1lIFJpZ2h0PgotICAgIGlubGluZSBwcmVkaWNhdGVfcmVzdWx0Ci0gICAgY2FsbF9pbXBsKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQsIG1wbDo6ZmFsc2VfICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcXVhbF9pbXBsKCBsZWZ0LCByaWdodCApOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZWZ0LCB0eXBlbmFtZSBSaWdodD4KLSAgICBpbmxpbmUgcHJlZGljYXRlX3Jlc3VsdAotICAgIGNhbGxfaW1wbCggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0LCBtcGw6OnRydWVfICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAoKnRoaXMpKCByaWdodCwgJmxlZnRbMF0gKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGVmdCwgdHlwZW5hbWUgUmlnaHQ+Ci0gICAgaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQKLSAgICBvcGVyYXRvcigpKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQgKSBjb25zdAotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpc19hcnJheTxMZWZ0Pjo6dHlwZSBsZWZ0X2lzX2FycmF5OwotICAgICAgICByZXR1cm4gY2FsbF9pbXBsKCBsZWZ0LCByaWdodCwgbGVmdF9pc19hcnJheSgpICk7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IG5lX2ltcGwgewotICAgIHRlbXBsYXRlIDxjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodD4KLSAgICBwcmVkaWNhdGVfcmVzdWx0IG9wZXJhdG9yKCkoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi0gICAgewotICAgICAgICByZXR1cm4gIWVxdWFsX2ltcGxfZnJ3ZCgpKCBsZWZ0LCByaWdodCApOwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCBsdF9pbXBsIHsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQ+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCBvcGVyYXRvcigpKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPCByaWdodDsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdHJ1Y3QgbGVfaW1wbCB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0PgotICAgIHByZWRpY2F0ZV9yZXN1bHQgb3BlcmF0b3IoKSggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBsZWZ0IDw9IHJpZ2h0OwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCBndF9pbXBsIHsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQ+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCBvcGVyYXRvcigpKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPiByaWdodDsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdHJ1Y3QgZ2VfaW1wbCB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0PgotICAgIHByZWRpY2F0ZV9yZXN1bHQgb3BlcmF0b3IoKSggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBsZWZ0ID49IHJpZ2h0OwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBMZWZ0LCB0eXBlbmFtZSBSaWdodD4KLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0Ci1lcXVhbF9jb2xsX2ltcGwoIExlZnQgbGVmdF9iZWdpbiwgTGVmdCBsZWZ0X2VuZCwgUmlnaHQgcmlnaHRfYmVnaW4sIFJpZ2h0IHJpZ2h0X2VuZCApCi17Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCAgICByZXMoIHRydWUgKTsKLSAgICBzdGQ6OnNpemVfdCAgICAgICAgIHBvcyA9IDA7Ci0KLSAgICBmb3IoIDsgbGVmdF9iZWdpbiAhPSBsZWZ0X2VuZCAmJiByaWdodF9iZWdpbiAhPSByaWdodF9lbmQ7ICsrbGVmdF9iZWdpbiwgKytyaWdodF9iZWdpbiwgKytwb3MgKSB7Ci0gICAgICAgIGlmKCAqbGVmdF9iZWdpbiAhPSAqcmlnaHRfYmVnaW4gKSB7Ci0gICAgICAgICAgICByZXMgPSBmYWxzZTsKLSAgICAgICAgICAgIHJlcy5tZXNzYWdlKCkgPDwgIlxuTWlzbWF0Y2ggaW4gYSBwb3NpdGlvbiAiIDw8IHBvcyA8PCAiOiAiICA8PCAqbGVmdF9iZWdpbiA8PCAiICE9ICIgPDwgKnJpZ2h0X2JlZ2luOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYoIGxlZnRfYmVnaW4gIT0gbGVmdF9lbmQgKSB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHJfc2l6ZSA9IHBvczsKLSAgICAgICAgd2hpbGUoIGxlZnRfYmVnaW4gIT0gbGVmdF9lbmQgKSB7Ci0gICAgICAgICAgICArK3BvczsKLSAgICAgICAgICAgICsrbGVmdF9iZWdpbjsKLSAgICAgICAgfQotCi0gICAgICAgIHJlcyA9IGZhbHNlOwotICAgICAgICByZXMubWVzc2FnZSgpIDw8ICJcbkNvbGxlY3Rpb25zIHNpemUgbWlzbWF0Y2g6ICIgPDwgcG9zIDw8ICIgIT0gIiA8PCByX3NpemU7Ci0gICAgfQotCi0gICAgaWYoIHJpZ2h0X2JlZ2luICE9IHJpZ2h0X2VuZCApIHsKLSAgICAgICAgc3RkOjpzaXplX3QgbF9zaXplID0gcG9zOwotICAgICAgICB3aGlsZSggcmlnaHRfYmVnaW4gIT0gcmlnaHRfZW5kICkgewotICAgICAgICAgICAgKytwb3M7Ci0gICAgICAgICAgICArK3JpZ2h0X2JlZ2luOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzID0gZmFsc2U7Ci0gICAgICAgIHJlcy5tZXNzYWdlKCkgPDwgIlxuQ29sbGVjdGlvbnMgc2l6ZSBtaXNtYXRjaDogIiA8PCBsX3NpemUgPDwgIiAhPSAiIDw8IHBvczsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8Y2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQ+Ci1pbmxpbmUgcHJlZGljYXRlX3Jlc3VsdAotYml0d2lzZV9lcXVhbF9pbXBsKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQgKQotewotICAgIHByZWRpY2F0ZV9yZXN1bHQgICAgcmVzKCB0cnVlICk7Ci0KLSAgICBzdGQ6OnNpemVfdCBsZWZ0X2JpdF9zaXplICA9IHNpemVvZihMZWZ0KSpDSEFSX0JJVDsKLSAgICBzdGQ6OnNpemVfdCByaWdodF9iaXRfc2l6ZSA9IHNpemVvZihSaWdodCkqQ0hBUl9CSVQ7Ci0KLSAgICBzdGF0aWMgTGVmdCBjb25zdCBsZWZ0T25lKCAxICk7Ci0gICAgc3RhdGljIFJpZ2h0IGNvbnN0IHJpZ2h0T25lKCAxICk7Ci0KLSAgICBzdGQ6OnNpemVfdCB0b3RhbF9iaXRzID0gbGVmdF9iaXRfc2l6ZSA8IHJpZ2h0X2JpdF9zaXplID8gbGVmdF9iaXRfc2l6ZSA6IHJpZ2h0X2JpdF9zaXplOwotCi0gICAgZm9yKCBzdGQ6OnNpemVfdCBjb3VudGVyID0gMDsgY291bnRlciA8IHRvdGFsX2JpdHM7ICsrY291bnRlciApIHsKLSAgICAgICAgaWYoICggbGVmdCAmICggbGVmdE9uZSA8PCBjb3VudGVyICkgKSAhPSAoIHJpZ2h0ICYgKCByaWdodE9uZSA8PCBjb3VudGVyICkgKSApIHsKLSAgICAgICAgICAgIHJlcyA9IGZhbHNlOwotICAgICAgICAgICAgcmVzLm1lc3NhZ2UoKSA8PCAiXG5NaXNtYXRjaCBpbiBhIHBvc2l0aW9uICIgPDwgY291bnRlcjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmKCBsZWZ0X2JpdF9zaXplICE9IHJpZ2h0X2JpdF9zaXplICkgewotICAgICAgICByZXMgPSBmYWxzZTsKLSAgICAgICAgcmVzLm1lc3NhZ2UoKSA8PCAiXG5PcGVyYW5kcyBiaXQgc2l6ZXMgbWlzbWF0Y2g6ICIgPDwgbGVmdF9iaXRfc2l6ZSA8PCAiICE9ICIgPDwgcmlnaHRfYml0X3NpemU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbCBORE5CT09TVF9URVNUX0RFQ0wgaXNfZGVmaW5lZF9pbXBsKCBjb25zdF9zdHJpbmcgc3ltYm9sX25hbWUsIGNvbnN0X3N0cmluZyBzeW1ib2xfdmFsdWUgKTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdHRfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIHRlc3RfdG9vbHMKLQotbmFtZXNwYWNlIHRlc3RfdG9vbGJveCA9IHRlc3RfdG9vbHM7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9URVNUX1RPT0xTX0hQUF8wMTI3MDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhZGI4MDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IEVudHJ5IHBvaW50IGZvciB0aGUgZW5kIHVzZXIgaW50byB0aGUgVW5pdCBUZXN0IEZyYW1ld29yay4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZS5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgQXV0byBMaW5raW5nICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9OT19MSUIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTk9fTElCKSAmJiBcCi0gICAgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9TT1VSQ0UpICYmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfSU5DTFVERUQpCi0jICBkZWZpbmUgTkROQk9PU1RfTElCX05BTUUgbmRuYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yawotCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9URVNUX0RZTl9MSU5LKQotIyAgICBkZWZpbmUgTkROQk9PU1RfRFlOX0xJTksKLSMgIGVuZGlmCi0KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPgotCi0jZW5kaWYgIC8vIGF1dG8tbGlua2luZyBkaXNhYmxlZAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbWFpbiAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1pbnQgTkROQk9PU1RfVEVTVF9ERUNMIHVuaXRfdGVzdF9tYWluKCBpbml0X3VuaXRfdGVzdF9mdW5jIGluaXRfZnVuYywgaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApOwotCi19fQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9URVNUX0RZTl9MSU5LKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTUFJTikgJiYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9OT19NQUlOKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIG1haW4gZnVuY3Rpb24gZm9yIHRlc3RzIHVzaW5nIGRsbCAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWludCBORE5CT09TVF9URVNUX0NBTExfREVDTAotbWFpbiggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApCi17Ci0gICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dW5pdF90ZXN0X21haW4oICZpbml0X3VuaXRfdGVzdCwgYXJnYywgYXJndiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9EWU5fTElOSyAmJiBORE5CT09TVF9URVNUX01BSU4gJiYgIU5ETkJPT1NUX1RFU1RfTk9fTUFJTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2ZjZGU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgc2luZ2xldG9uIGNsYXNzIHVuaXRfdGVzdF9sb2cgYW5kIGFsbCBtYW5pcHVsYXRvcnMuCi0vLyAgdW5pdF90ZXN0X2xvZyBoYXMgb3V0cHV0IHN0cmVhbSBsaWtlIGludGVyZmFjZS4gSXQncyBpbXBsZW1lbnRhdGlvbiBpcwotLy8gIGNvbXBsZXRlbHkgaGlkZGVuIHdpdGggcGltcGxlIGlkaW9tCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X29ic2VydmVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9sb2dfbGV2ZWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvdHJpdmlhbF9zaW5nbGV0b24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvbGF6eV9vc3RyZWFtLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5LmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPiAgIC8vIGZvciBzdGQ6Om9zdHJlYW0mCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgbG9nIG1hbmlwdWxhdG9ycyAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBsb2cgewotCi1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIGJlZ2luIHsKLSAgICBiZWdpbiggY29uc3Rfc3RyaW5nIGZuLCBzdGQ6OnNpemVfdCBsbiApCi0gICAgOiBtX2ZpbGVfbmFtZSggZm4gKQotICAgICwgbV9saW5lX251bSggbG4gKQotICAgIHt9Ci0KLSAgICBjb25zdF9zdHJpbmcgbV9maWxlX25hbWU7Ci0gICAgc3RkOjpzaXplX3QgbV9saW5lX251bTsKLX07Ci0KLXN0cnVjdCBlbmQge307Ci0KLX0gLy8gbmFtZXNwYWNlIGxvZwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgZW50cnlfdmFsdWVfY29sbGVjdG9yICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgZW50cnlfdmFsdWVfY29sbGVjdG9yIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBlbnRyeV92YWx1ZV9jb2xsZWN0b3IoKSA6IG1fbGFzdCggdHJ1ZSApIHt9Ci0gICAgZW50cnlfdmFsdWVfY29sbGVjdG9yKCBlbnRyeV92YWx1ZV9jb2xsZWN0b3IgY29uc3QmIHJocyApIDogbV9sYXN0KCB0cnVlICkgeyByaHMubV9sYXN0ID0gZmFsc2U7IH0KLSAgICB+ZW50cnlfdmFsdWVfY29sbGVjdG9yKCk7Ci0KLSAgICAvLyBjb2xsZWN0aW9uIGludGVyZmFjZQotICAgIGVudHJ5X3ZhbHVlX2NvbGxlY3RvciBjb25zdCYgb3BlcmF0b3I8PCggbGF6eV9vc3RyZWFtIGNvbnN0JiApIGNvbnN0OwotICAgIGVudHJ5X3ZhbHVlX2NvbGxlY3RvciBjb25zdCYgb3BlcmF0b3I8PCggY29uc3Rfc3RyaW5nICkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbXV0YWJsZSBib29sICAgIG1fbGFzdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB1bml0X3Rlc3RfbG9nX3QgOiBwdWJsaWMgdGVzdF9vYnNlcnZlciwgcHVibGljIHNpbmdsZXRvbjx1bml0X3Rlc3RfbG9nX3Q+IHsKLXB1YmxpYzoKLSAgICAvLyB0ZXN0X29ic2VydmVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF9zdGFydCggY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X2ZpbmlzaCgpOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF9hYm9ydGVkKCk7Ci0KLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfdW5pdF9zdGFydCggdGVzdF91bml0IGNvbnN0JiApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0JiwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgKTsKLQotICAgIHZvaWQgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICk7Ci0KLSAgICB2aXJ0dWFsIGludCAgICAgICAgIHByaW9yaXR5KCkgeyByZXR1cm4gMTsgfQotCi0gICAgLy8gbG9nIGNvbmZpZ3VyYXRpb24gbWV0aG9kcwotICAgIHZvaWQgICAgICAgICAgICAgICAgc2V0X3N0cmVhbSggc3RkOjpvc3RyZWFtJiApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgc2V0X3RocmVzaG9sZF9sZXZlbCggbG9nX2xldmVsICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBzZXRfZm9ybWF0KCBvdXRwdXRfZm9ybWF0ICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBzZXRfZm9ybWF0dGVyKCB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlciogKTsKLQotICAgIC8vIHRlc3QgcHJvZ3Jlc3MgbG9nZ2luZwotICAgIHZvaWQgICAgICAgICAgICAgICAgc2V0X2NoZWNrcG9pbnQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIG1zZyA9IGNvbnN0X3N0cmluZygpICk7Ci0KLSAgICAvLyBlbnRyeSBsb2dnaW5nCi0gICAgdW5pdF90ZXN0X2xvZ190JiAgICBvcGVyYXRvcjw8KCBsb2c6OmJlZ2luIGNvbnN0JiApOyAgICAgICAgLy8gYmVnaW4gZW50cnkgCi0gICAgdW5pdF90ZXN0X2xvZ190JiAgICBvcGVyYXRvcjw8KCBsb2c6OmVuZCBjb25zdCYgKTsgICAgICAgICAgLy8gZW5kIGVudHJ5Ci0gICAgdW5pdF90ZXN0X2xvZ190JiAgICBvcGVyYXRvcjw8KCBsb2dfbGV2ZWwgKTsgICAgICAgICAgICAgICAgLy8gc2V0IGVudHJ5IGxldmVsCi0gICAgdW5pdF90ZXN0X2xvZ190JiAgICBvcGVyYXRvcjw8KCBjb25zdF9zdHJpbmcgKTsgICAgICAgICAgICAgLy8gbG9nIGVudHJ5IHZhbHVlCi0gICAgdW5pdF90ZXN0X2xvZ190JiAgICBvcGVyYXRvcjw8KCBsYXp5X29zdHJlYW0gY29uc3QmICk7ICAgICAgLy8gbG9nIGVudHJ5IHZhbHVlCi0KLSAgICB1dF9kZXRhaWw6OmVudHJ5X3ZhbHVlX2NvbGxlY3RvciBvcGVyYXRvcigpKCBsb2dfbGV2ZWwgKTsgICAvLyBpbml0aWF0ZSBlbnRyeSBjb2xsZWN0aW9uCi0KLXByaXZhdGU6Ci0gICAgYm9vbCAgICAgICAgICAgIGxvZ19lbnRyeV9zdGFydCgpOwotCi0gICAgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fQ09OUyggdW5pdF90ZXN0X2xvZ190ICk7Ci19OyAvLyB1bml0X3Rlc3RfbG9nX3QKLQotTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fSU5TVCggdW5pdF90ZXN0X2xvZyApCi0KLS8vIGhlbHBlciBtYWNyb3MKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MT0dfRU5UUlkoIGxsICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgPDwgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCBfX0xJTkVfXyApKShsbCkgIFwKLS8qKi8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBVbml0IHRlc3QgbG9nIGludGVyZmFjZSBoZWxwZXJzICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX01FU1NBR0UoIE0gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX0xPR19FTlRSWSggOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpsb2dfbWVzc2FnZXMgKSAgICBcCi0gICAgPDwgKDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6bGF6eV9vc3RyZWFtOjppbnN0YW5jZSgpIDw8IE0pICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUEFTU1BPSU5UKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dW5pdF90ZXN0X2xvZy5zZXRfY2hlY2twb2ludCggICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihfX0xJTkVfXykgKSAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0hFQ0tQT0lOVCggTSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dW5pdF90ZXN0X2xvZy5zZXRfY2hlY2twb2ludCggICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihfX0xJTkVfXyksICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoOjpuZG5ib29zdDo6d3JhcF9zdHJpbmdzdHJlYW0oKS5yZWYoKSA8PCBNKS5zdHIoKSApICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2dfZm9ybWF0dGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFkMjE2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDMtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfRk9STUFUVEVSX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTE9HX0ZPUk1BVFRFUl9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvbG9nX2xldmVsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPHN0cmluZz4gLy8gZm9yIHN0ZDo6c3RyaW5nCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgbG9nX2VudHJ5X2RhdGEgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgbG9nX2VudHJ5X2RhdGEgewotICAgIGxvZ19lbnRyeV9kYXRhKCkKLSAgICB7Ci0gICAgICAgIG1fZmlsZV9uYW1lLnJlc2VydmUoIDIwMCApOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nICAgICBtX2ZpbGVfbmFtZTsKLSAgICBzdGQ6OnNpemVfdCAgICAgbV9saW5lX251bTsKLSAgICBsb2dfbGV2ZWwgICAgICAgbV9sZXZlbDsKLQotICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAgbV9maWxlX25hbWUuZXJhc2UoKTsKLSAgICAgICAgbV9saW5lX251bSAgICAgID0gMDsKLSAgICAgICAgbV9sZXZlbCAgICAgPSBsb2dfbm90aGluZzsKLSAgICB9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgY2hlY2twb2ludF9kYXRhICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgbG9nX2NoZWNrcG9pbnRfZGF0YQotewotICAgIGNvbnN0X3N0cmluZyAgICBtX2ZpbGVfbmFtZTsKLSAgICBzdGQ6OnNpemVfdCAgICAgbV9saW5lX251bTsKLSAgICBzdGQ6OnN0cmluZyAgICAgbV9tZXNzYWdlOwotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX2ZpbGVfbmFtZS5jbGVhcigpOwotICAgICAgICBtX2xpbmVfbnVtICAgID0gMDsKLSAgICAgICAgbV9tZXNzYWdlID0gc3RkOjpzdHJpbmcoKTsKLSAgICB9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBsb2dfZW50cnlfdHlwZXMgeyBORE5CT09TVF9VVExfRVRfSU5GTywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9VVExfRVRfTUVTU0FHRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VUTF9FVF9XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfVVRMX0VUX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfVVRMX0VUX0ZBVEFMX0VSUk9SIH07Ci0KLSAgICAvLyBEZXN0cnVjdG9yCi0gICAgdmlydHVhbCAgICAgICAgICAgICB+dW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIoKSB7fQotCi0gICAgLy8gRm9ybWF0dGVyIGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbG9nX3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfZmluaXNoKCBzdGQ6Om9zdHJlYW0mICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbG9nX2J1aWxkX2luZm8oIHN0ZDo6b3N0cmVhbSYgKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIHRlc3RfdW5pdF9zdGFydCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIHRlc3RfdW5pdF9maW5pc2goIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUsIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIHRlc3RfdW5pdF9za2lwcGVkKCBzdGQ6Om9zdHJlYW0mLCB0ZXN0X3VuaXQgY29uc3QmICkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfZXhjZXB0aW9uKCBzdGQ6Om9zdHJlYW0mIG9zLCBsb2dfY2hlY2twb2ludF9kYXRhIGNvbnN0JiBjZCwgZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKQotICAgIHsKLSAgICAgICAgLy8gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLSAgICAgICAgbG9nX2V4Y2VwdGlvbiggb3MsIGNkLCBleC53aGF0KCkgKTsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfZXhjZXB0aW9uKCBzdGQ6Om9zdHJlYW0mLCBsb2dfY2hlY2twb2ludF9kYXRhIGNvbnN0JiwgY29uc3Rfc3RyaW5nIC8qIGV4cGxhbmF0aW9uICovICkge30KLQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbG9nX2VudHJ5X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCBsb2dfZW50cnlfZGF0YSBjb25zdCYsIGxvZ19lbnRyeV90eXBlcyBsZXQgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfZW50cnlfdmFsdWUoIHN0ZDo6b3N0cmVhbSYsIGNvbnN0X3N0cmluZyB2YWx1ZSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiwgbGF6eV9vc3RyZWFtIGNvbnN0JiB2YWx1ZSApOyAvLyB0aGVyZSBpcyBhIGRlZmF1bHQgaW1wbAotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbG9nX2VudHJ5X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiApID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19GT1JNQVRURVJfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X21vbml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9tb25pdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM0Mzc4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X21vbml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIHNwZWNpZmljIHZlcnNpb24gb2YgZXhlY3V0aW9uIG1vbml0b3IgdXNlZCB0byBtYW5hZ2VkIAotLy8gIHJ1biB1bml0IG9mIHRlc3QgY2FzZXMuIFRyYW5zbGF0ZXMgZXhlY3V0aW9uIGV4Y2VwdGlvbiBpbnRvIGVycm9yIGxldmVsCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NT05JVE9SX0hQUF8wMjA5MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTU9OSVRPUl9IUFBfMDIwOTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB1bml0X3Rlc3RfbW9uaXRvciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB1bml0X3Rlc3RfbW9uaXRvcl90IDogcHVibGljIHNpbmdsZXRvbjx1bml0X3Rlc3RfbW9uaXRvcl90PiwgcHVibGljIGV4ZWN1dGlvbl9tb25pdG9yIHsKLXB1YmxpYzoKLSAgICBlbnVtIGVycm9yX2xldmVsIHsgCi0gICAgICAgIHRlc3RfZmFpbCAgICAgICAgICAgICAgID0gIDEsCi0gICAgICAgIHRlc3Rfb2sgICAgICAgICAgICAgICAgID0gIDAsCi0gICAgICAgIGNvbnN0cnVjdG9yX2Vycm9yICAgICAgID0gLTEsIAotICAgICAgICB1bmV4cGVjdGVkX2V4Y2VwdGlvbiAgICA9IC0yLCAKLSAgICAgICAgb3NfZXhjZXB0aW9uICAgICAgICAgICAgPSAtMywgCi0gICAgICAgIG9zX3RpbWVvdXQgICAgICAgICAgICAgID0gLTQsIAotICAgICAgICBmYXRhbF9lcnJvciAgICAgICAgICAgICA9IC01LCAgLy8gaW5jbHVkZXMgYm90aCBzeXN0ZW0gYW5kIHVzZXIKLSAgICAgICAgZGVzdHJ1Y3Rvcl9lcnJvciAgICAgICAgPSAtNgotICAgIH07Ci0KLSAgICBzdGF0aWMgYm9vbCBpc19jcml0aWNhbF9lcnJvciggZXJyb3JfbGV2ZWwgZSApIHsgcmV0dXJuIGUgPD0gZmF0YWxfZXJyb3I7IH0KLQotICAgIC8vIG1vbml0b3IgbWV0aG9kCi0gICAgZXJyb3JfbGV2ZWwgZXhlY3V0ZV9hbmRfdHJhbnNsYXRlKCB0ZXN0X2Nhc2UgY29uc3QmICk7Ci0KLXByaXZhdGU6Ci0gICAgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fQ09OUyggdW5pdF90ZXN0X21vbml0b3JfdCApOwotfTsKLQotTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fSU5TVCggdW5pdF90ZXN0X21vbml0b3IgKQotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NT05JVE9SX0hQUF8wMjA5MDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNzBjYTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIFVuaXQgVGVzdCBGcmFtZXdvcmsgcHVibGljIEFQSQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBOb24tYXV0byAoZXhwbGljaXQpIHRlc3QgY2FzZSBpbnRlcmZhY2UgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0NBU0UoIHRlc3RfZnVuY3Rpb24gKSBcCi1uZG5ib29zdDo6dW5pdF90ZXN0OjptYWtlX3Rlc3RfY2FzZSggbmRuYm9vc3Q6OnVuaXRfdGVzdDo6Y2FsbGJhY2swPD4odGVzdF9mdW5jdGlvbiksIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCB0ZXN0X2Z1bmN0aW9uICkgKQotI2RlZmluZSBORE5CT09TVF9DTEFTU19URVNUX0NBU0UoIHRlc3RfZnVuY3Rpb24sIHRjX2luc3RhbmNlICkgXAotbmRuYm9vc3Q6OnVuaXRfdGVzdDo6bWFrZV90ZXN0X2Nhc2UoKHRlc3RfZnVuY3Rpb24pLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggdGVzdF9mdW5jdGlvbiApLCB0Y19pbnN0YW5jZSApCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfU1VJVEUgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX1NVSVRFKCB0ZXN0c3VpdGVfbmFtZSApIFwKLSggbmV3IG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnRlc3Rfc3VpdGUoIHRlc3RzdWl0ZV9uYW1lICkgKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgTkROQk9PU1RfQVVUT19URVNUX1NVSVRFICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQVVUT19URVNUX1NVSVRFKCBzdWl0ZV9uYW1lICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW5hbWVzcGFjZSBzdWl0ZV9uYW1lIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX0FVVE9fVFVfUkVHSVNUUkFSKCBzdWl0ZV9uYW1lICkoIE5ETkJPT1NUX1NUUklOR0laRSggc3VpdGVfbmFtZSApICk7IFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgTkROQk9PU1RfRklYVFVSRV9URVNUX1NVSVRFICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZJWFRVUkVfVEVTVF9TVUlURSggc3VpdGVfbmFtZSwgRiApICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9BVVRPX1RFU1RfU1VJVEUoIHN1aXRlX25hbWUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10eXBlZGVmIEYgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfRklYVFVSRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgTkROQk9PU1RfQVVUT19URVNUX1NVSVRFX0VORCAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RFU1RfU1VJVEVfRU5EKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTkROQk9PU1RfQVVUT19UVV9SRUdJU1RSQVIoIE5ETkJPT1NUX0pPSU4oIGVuZF9zdWl0ZSwgX19MSU5FX18gKSApKCAxICk7ICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfRVhQRUNURURfRkFJTFVSRVMgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfRVhQRUNURURfRkFJTFVSRVMoIHRlc3RfbmFtZSwgbiApICAgICAgICAgIFwKLXN0cnVjdCBORE5CT09TVF9BVVRPX1RDX1VOSVFVRV9JRCggdGVzdF9uYW1lICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyBzdHJ1Y3QgTkROQk9PU1RfSk9JTiggdGVzdF9uYW1lLCBfZXhwX2ZhaWxfbnVtX3NwZWMgKSAgICAgICAgICAgICAgIFwKLTogbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgYXV0b190Y19leHBfZmFpbDxORE5CT09TVF9BVVRPX1RDX1VOSVFVRV9JRCggdGVzdF9uYW1lICkgPiAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9KT0lOKCB0ZXN0X25hbWUsIF9leHBfZmFpbF9udW1fc3BlYyApKCkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICA6IG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnV0X2RldGFpbDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGF1dG9fdGNfZXhwX2ZhaWw8TkROQk9PU1RfQVVUT19UQ19VTklRVUVfSUQoIHRlc3RfbmFtZSApID4oIG4gKSAgICAgIFwKLSAgICB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gTkROQk9PU1RfSk9JTiggdGVzdF9uYW1lLCBfZXhwX2ZhaWxfbnVtX3NwZWNfaW5zdCApOyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgTkROQk9PU1RfRklYVFVSRV9URVNUX0NBU0UgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZJWFRVUkVfVEVTVF9DQVNFKCB0ZXN0X25hbWUsIEYgKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgdGVzdF9uYW1lIDogcHVibGljIEYgeyB2b2lkIHRlc3RfbWV0aG9kKCk7IH07ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdGF0aWMgdm9pZCBORE5CT09TVF9BVVRPX1RDX0lOVk9LRVIoIHRlc3RfbmFtZSApKCkgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVzdF9uYW1lIHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdC50ZXN0X21ldGhvZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgTkROQk9PU1RfQVVUT19UQ19VTklRVUVfSUQoIHRlc3RfbmFtZSApIHt9OyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9BVVRPX1RVX1JFR0lTVFJBUiggdGVzdF9uYW1lICkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6bWFrZV90ZXN0X2Nhc2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICZORE5CT09TVF9BVVRPX1RDX0lOVk9LRVIoIHRlc3RfbmFtZSApLCAjdGVzdF9uYW1lICksICAgICAgICAgICAgICBcCi0gICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjphdXRvX3RjX2V4cF9mYWlsPCAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX0FVVE9fVENfVU5JUVVFX0lEKCB0ZXN0X25hbWUgKT46Omluc3RhbmNlKCktPnZhbHVlKCkgKTsgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi12b2lkIHRlc3RfbmFtZTo6dGVzdF9tZXRob2QoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRSggdGVzdF9uYW1lICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTkROQk9PU1RfRklYVFVSRV9URVNUX0NBU0UoIHRlc3RfbmFtZSwgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfRklYVFVSRSApCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBORE5CT09TVF9GSVhUVVJFX1RFU1RfQ0FTRV9URU1QTEFURSAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9GSVhUVVJFX1RFU1RfQ0FTRV9URU1QTEFURSggdGVzdF9uYW1lLCB0eXBlX25hbWUsIFRMLCBGICkgXAotdGVtcGxhdGU8dHlwZW5hbWUgdHlwZV9uYW1lPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHRlc3RfbmFtZSA6IHB1YmxpYyBGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyB2b2lkIHRlc3RfbWV0aG9kKCk7IH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IE5ETkJPT1NUX0FVVE9fVENfSU5WT0tFUiggdGVzdF9uYW1lICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlc3RUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyB2b2lkIHJ1biggbmRuYm9vc3Q6OnR5cGU8VGVzdFR5cGU+KiA9IDAgKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZXN0X25hbWU8VGVzdFR5cGU+IHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0LnRlc3RfbWV0aG9kKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTkROQk9PU1RfQVVUT19UVV9SRUdJU1RSQVIoIHRlc3RfbmFtZSApKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnV0X2RldGFpbDo6dGVtcGxhdGVfdGVzdF9jYXNlX2dlbjwgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9BVVRPX1RDX0lOVk9LRVIoIHRlc3RfbmFtZSApLFRMID4oICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIE5ETkJPT1NUX1NUUklOR0laRSggdGVzdF9uYW1lICkgKSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8dHlwZW5hbWUgdHlwZV9uYW1lPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdm9pZCB0ZXN0X25hbWU8dHlwZV9uYW1lPjo6dGVzdF9tZXRob2QoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFX1RFTVBMQVRFICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfVEVNUExBVEUoIHRlc3RfbmFtZSwgdHlwZV9uYW1lLCBUTCApICAgICAgIFwKLU5ETkJPT1NUX0ZJWFRVUkVfVEVTVF9DQVNFX1RFTVBMQVRFKCB0ZXN0X25hbWUsIHR5cGVfbmFtZSwgVEwsIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFX0ZJWFRVUkUgKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIE5ETkJPT1NUX1RFU1RfQ0FTRV9URU1QTEFURSAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DQVNFX1RFTVBMQVRFKCBuYW1lLCB0eXBlbGlzdCApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjp0ZW1wbGF0ZV90ZXN0X2Nhc2VfZ2VuPG5hbWUsdHlwZWxpc3QgPiggICAgXAotICAgICAgICBORE5CT09TVF9URVNUX1NUUklOR0laRSggbmFtZSApICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgTkROQk9PU1RfVEVTVF9DQVNFX1RFTVBMQVRFX0ZVTkNUSU9OICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0FTRV9URU1QTEFURV9GVU5DVElPTiggbmFtZSwgdHlwZV9uYW1lICkgICAgXAotdGVtcGxhdGU8dHlwZW5hbWUgdHlwZV9uYW1lPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXZvaWQgTkROQk9PU1RfSk9JTiggbmFtZSwgX2ltcGwgKSggbmRuYm9vc3Q6OnR5cGU8dHlwZV9uYW1lPiogKTsgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IG5hbWUgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUZXN0VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIHZvaWQgcnVuKCBuZG5ib29zdDo6dHlwZTxUZXN0VHlwZT4qIGZyd3JkID0gMCApICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICBORE5CT09TVF9KT0lOKCBuYW1lLCBfaW1wbCApKCBmcndyZCApOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTx0eXBlbmFtZSB0eXBlX25hbWU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdm9pZCBORE5CT09TVF9KT0lOKCBuYW1lLCBfaW1wbCApKCBuZG5ib29zdDo6dHlwZTx0eXBlX25hbWU+KiApICAgICAgIFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBORE5CT09TVF9HTE9CQUxfRklYVVJFICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0dMT0JBTF9GSVhUVVJFKCBGICkgXAotc3RhdGljIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnV0X2RldGFpbDo6Z2xvYmFsX2ZpeHR1cmVfaW1wbDxGPiBORE5CT09TVF9KT0lOKCBnZl8sIEYgKSA7IFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfRklYVFVSRSAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5pdF90ZXN0IHsgbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXN0cnVjdCBuaWxfdCB7fTsKLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi19IC8vIHVuaXRfdGVzdAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gSW50ZW50aW9uYWxseSBpcyBpbiBnbG9iYWwgbmFtZXNwYWNlLCBzbyB0aGF0IEZJWFVSRV9URVNUX1NVSVRFIGNhbiByZXNldCBpdCBpbiB1c2VyIGNvZGUuCi10eXBlZGVmIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjpuaWxfdCBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9GSVhUVVJFOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICBBdXRvIHJlZ2lzdHJhdGlvbiBmYWNpbGl0eSBoZWxwZXIgbWFjcm9zICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQVVUT19UVV9SRUdJU1RSQVIoIHRlc3RfbmFtZSApICAgIFwKLXN0YXRpYyBuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6OmF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciBORE5CT09TVF9KT0lOKCBORE5CT09TVF9KT0lOKCB0ZXN0X25hbWUsIF9yZWdpc3RyYXIgKSwgX19MSU5FX18gKQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RDX0lOVk9LRVIoIHRlc3RfbmFtZSApICAgICAgTkROQk9PU1RfSk9JTiggdGVzdF9uYW1lLCBfaW52b2tlciApCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVENfVU5JUVVFX0lEKCB0ZXN0X25hbWUgKSAgICBORE5CT09TVF9KT0lOKCB0ZXN0X25hbWUsIF9pZCApCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBORE5CT09TVF9URVNUX01BSU4gICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVEVTVF9NQUlOKQotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9BTFRFUk5BVElWRV9JTklUX0FQSQotYm9vbCBpbml0X3VuaXRfdGVzdCgpICAgICAgICAgICAgICAgICAgIHsKLSNlbHNlCi06Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnRlc3Rfc3VpdGUqCi1pbml0X3VuaXRfdGVzdF9zdWl0ZSggaW50LCBjaGFyKiBbXSApICAgewotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9URVNUX01PRFVMRQotICAgIHVzaW5nIG5hbWVzcGFjZSA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q7Ci0gICAgYXNzaWduX29wKCBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkucF9uYW1lLnZhbHVlLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggTkROQk9PU1RfVEVTVF9NT0RVTEUgKS50cmltKCAiXCIiICksIDAgKTsKLSAgICAKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9BTFRFUk5BVElWRV9JTklUX0FQSQotICAgIHJldHVybiB0cnVlOwotfQotI2Vsc2UKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZTEwOTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgdGVzdF91bml0LCB0ZXN0X2Nhc2UsIHRlc3RfY2FzZV9yZXN1bHRzLCB0ZXN0X3N1aXRlIGFuZCB0ZXN0X3RyZWVfdmlzaXRvcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSU1QTF9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0lNUExfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X29ic2VydmVyLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZm9yX2VhY2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDx0eXBlaW5mbz4gLy8gZm9yIHR5cGVpZAotI2luY2x1ZGUgPHN0cmluZz4gICAvLyBmb3Igc3RkOjpzdHJpbmcKLSNpbmNsdWRlIDxsaXN0PiAgICAgLy8gZm9yIHN0ZDo6bGlzdAotI2luY2x1ZGUgPHZlY3Rvcj4gICAvLyBmb3Igc3RkOjp2ZWN0b3IKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICB0ZXN0X3VuaXQgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRlc3RfdW5pdCB7Ci1wdWJsaWM6Ci0gICAgZW51bSB7IHR5cGUgPSB0dXRfYW55IH07Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHRlc3RfdW5pdCggY29uc3Rfc3RyaW5nIHR1X25hbWUsIHRlc3RfdW5pdF90eXBlIHQgKTsKLQotICAgIC8vIGRlcGVuZGVuY2llcyBtYW5hZ2VtZW50Ci0gICAgdm9pZCAgICBkZXBlbmRzX29uKCB0ZXN0X3VuaXQqIHR1ICk7Ci0gICAgYm9vbCAgICBjaGVja19kZXBlbmRlbmNpZXMoKSBjb25zdDsKLQotICAgIC8vIFB1YmxpYyByL28gcHJvcGVydGllcwotICAgIHR5cGVkZWYgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFkodGVzdF91bml0X2lkLChmcmFtZXdvcmtfaW1wbCkpICBpZF90OwotICAgIHR5cGVkZWYgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFkodGVzdF91bml0X2lkLCh0ZXN0X3N1aXRlKSkgICAgICBwYXJlbnRfaWRfdDsKLSAgICByZWFkb25seV9wcm9wZXJ0eTx0ZXN0X3VuaXRfdHlwZT4gICBwX3R5cGU7ICAgICAgICAgICAgICAgICAvLyB0eXBlIGZvciB0aGlzIHRlc3QgdW5pdAotICAgIHJlYWRvbmx5X3Byb3BlcnR5PGNvbnN0X3N0cmluZz4gICAgIHBfdHlwZV9uYW1lOyAgICAgICAgICAgIC8vICJjYXNlIi8ic3VpdGUiCi0gICAgaWRfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9pZDsgICAgICAgICAgICAgICAgICAgLy8gdW5pcXVlIGlkIGZvciB0aGlzIHRlc3QgdW5pdAotICAgIHBhcmVudF9pZF90ICAgICAgICAgICAgICAgICAgICAgICAgIHBfcGFyZW50X2lkOyAgICAgICAgICAgIC8vIHBhcmVudCB0ZXN0IHN1aXRlIGlkCi0KLSAgICAvLyBQdWJsaWMgci93IHByb3BlcnRpZXMKLSAgICByZWFkd3JpdGVfcHJvcGVydHk8c3RkOjpzdHJpbmc+ICAgICBwX25hbWU7ICAgICAgICAgICAgICAgICAvLyBuYW1lIGZvciB0aGlzIHRlc3QgdW5pdAotICAgIHJlYWR3cml0ZV9wcm9wZXJ0eTx1bnNpZ25lZD4gICAgICAgIHBfdGltZW91dDsgICAgICAgICAgICAgIC8vIHRpbWVvdXQgZm9yIHRoZSB0ZXN0IHVuaXQgZXhlY3V0aW9uIAotICAgIHJlYWR3cml0ZV9wcm9wZXJ0eTxjb3VudGVyX3Q+ICAgICAgIHBfZXhwZWN0ZWRfZmFpbHVyZXM7ICAgIC8vIG51bWJlciBvZiBleHBlY3RlZCBmYWlsdXJlcyBpbiB0aGlzIHRlc3QgdW5pdAotICAgIG11dGFibGUgcmVhZHdyaXRlX3Byb3BlcnR5PGJvb2w+ICAgIHBfZW5hYmxlZDsgICAgICAgICAgICAgIC8vIGVuYWJsZWQgc3RhdHVzIGZvciB0aGlzIHVuaXQKLQotICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlYXNlX2V4cF9mYWlsKCB1bnNpZ25lZCBudW0gKTsKLQotcHJvdGVjdGVkOgotICAgIH50ZXN0X3VuaXQoKTsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzdGQ6Omxpc3Q8dGVzdF91bml0X2lkPiAgICAgICAgICAgICBtX2RlcGVuZGVuY2llczsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgdGVzdF9jYXNlX2dlbmVyYXRvciAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRlc3RfdW5pdF9nZW5lcmF0b3IgewotcHVibGljOgotICAgIHZpcnR1YWwgdGVzdF91bml0KiAgbmV4dCgpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgfnRlc3RfdW5pdF9nZW5lcmF0b3IoKSB7fQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZSAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdGVzdF9jYXNlIDogcHVibGljIHRlc3RfdW5pdCB7Ci1wdWJsaWM6Ci0gICAgZW51bSB7IHR5cGUgPSB0dXRfY2FzZSB9OwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICB0ZXN0X2Nhc2UoIGNvbnN0X3N0cmluZyB0Y19uYW1lLCBjYWxsYmFjazA8PiBjb25zdCYgdGVzdF9mdW5jICk7Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIGNhbGxiYWNrMDw+IGNvbnN0JiAgdGVzdF9mdW5jKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0X2Z1bmM7IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgZnJhbWV3b3JrX2ltcGw7Ci0gICAgfnRlc3RfY2FzZSgpIHt9Ci0KLSAgICAvLyBORE5CT09TVF9NU1ZDIDw9IDEyMDAgaGF2ZSBwcm9ibGVtcyB3aXRoIGNhbGxiYWNrIGFzIHByb3BlcnR5Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgY2FsbGJhY2swPD4gbV90ZXN0X2Z1bmM7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICB0ZXN0X3N1aXRlICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X3N1aXRlIDogcHVibGljIHRlc3RfdW5pdCB7Ci1wdWJsaWM6Ci0gICAgZW51bSB7IHR5cGUgPSB0dXRfc3VpdGUgfTsKLQotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgICAgIHRlc3Rfc3VpdGUoIGNvbnN0X3N0cmluZyB0c19uYW1lICk7Ci0KLSAgICAvLyB0ZXN0IHVuaXQgbGlzdCBtYW5hZ2VtZW50Ci0gICAgdm9pZCAgICAgICAgICAgIGFkZCggdGVzdF91bml0KiB0dSwgY291bnRlcl90IGV4cGVjdGVkX2ZhaWx1cmVzID0gMCwgdW5zaWduZWQgdGltZW91dCA9IDAgKTsKLSAgICB2b2lkICAgICAgICAgICAgYWRkKCB0ZXN0X3VuaXRfZ2VuZXJhdG9yIGNvbnN0JiBnZW4sIHVuc2lnbmVkIHRpbWVvdXQgPSAwICk7Ci0gICAgdm9pZCAgICAgICAgICAgIHJlbW92ZSggdGVzdF91bml0X2lkIGlkICk7Ci0KLSAgICAvLyBhY2Nlc3MgbWV0aG9kcwotICAgIHRlc3RfdW5pdF9pZCAgICBnZXQoIGNvbnN0X3N0cmluZyB0dV9uYW1lICkgY29uc3Q7Ci0gICAgc3RkOjpzaXplX3QgICAgIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21lbWJlcnMuc2l6ZSgpOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBmcmllbmQgTkROQk9PU1RfVEVTVF9ERUNMIAotICAgIHZvaWQgICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggdGVzdF9zdWl0ZSBjb25zdCYsIHRlc3RfdHJlZV92aXNpdG9yJiApOwotICAgIGZyaWVuZCBjbGFzcyBmcmFtZXdvcmtfaW1wbDsKLSAgICB2aXJ0dWFsICAgICB+dGVzdF9zdWl0ZSgpIHt9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzdGQ6OnZlY3Rvcjx0ZXN0X3VuaXRfaWQ+IG1fbWVtYmVyczsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIG1hc3Rlcl90ZXN0X3N1aXRlICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIG1hc3Rlcl90ZXN0X3N1aXRlX3QgOiBwdWJsaWMgdGVzdF9zdWl0ZSB7Ci1wdWJsaWM6Ci0gICAgbWFzdGVyX3Rlc3Rfc3VpdGVfdCgpIDogdGVzdF9zdWl0ZSggIk1hc3RlciBUZXN0IFN1aXRlIiApCi0gICAgLCBhcmdjKCAwICkKLSAgICAsIGFyZ3YoIDAgKQotICAgIHt9Ci0gICAgCi0gICAgLy8gRGF0YSBtZW1iZXJzICAgIAotICAgIGludCAgICAgIGFyZ2M7Ci0gICAgY2hhcioqICAgYXJndjsKLX07Ci0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgdGVzdF90cmVlX3Zpc2l0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdGVzdF90cmVlX3Zpc2l0b3IgewotcHVibGljOgotICAgIC8vIHRlc3QgdHJlZSB2aXNpdG9yIGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCAgICB2aXNpdCggdGVzdF9jYXNlIGNvbnN0JiApICAgICAgICAgICAgICAge30KLSAgICB2aXJ0dWFsIGJvb2wgICAgdGVzdF9zdWl0ZV9zdGFydCggdGVzdF9zdWl0ZSBjb25zdCYgKSAgIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF9zdWl0ZV9maW5pc2goIHRlc3Rfc3VpdGUgY29uc3QmICkgIHt9Ci0KLXByb3RlY3RlZDoKLSAgICBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMIH50ZXN0X3RyZWVfdmlzaXRvcigpIHt9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggdGVzdF9jYXNlIGNvbnN0JiwgdGVzdF90cmVlX3Zpc2l0b3ImICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIHRlc3Rfc3VpdGUgY29uc3QmLCB0ZXN0X3RyZWVfdmlzaXRvciYgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggdGVzdF91bml0X2lkICAgICAsIHRlc3RfdHJlZV92aXNpdG9yJiApOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmxpbmUgdm9pZAotdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB0ZXN0X3RyZWVfdmlzaXRvciYgViApCi17Ci0gICAgaWYoIHR1LnBfdHlwZSA9PSB0dXRfY2FzZSApCi0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggc3RhdGljX2Nhc3Q8dGVzdF9jYXNlIGNvbnN0Jj4oIHR1ICksIFYgKTsKLSAgICBlbHNlCi0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggc3RhdGljX2Nhc3Q8dGVzdF9zdWl0ZSBjb25zdCY+KCB0dSApLCBWICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VfY291bnRlciAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgdGVzdF9jYXNlX2NvdW50ZXIgOiBwdWJsaWMgdGVzdF90cmVlX3Zpc2l0b3IgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgdGVzdF9jYXNlX2NvdW50ZXIoKSA6IHBfY291bnQoIDAgKSB7fQotCi0gICAgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFkoIGNvdW50ZXJfdCwgKHRlc3RfY2FzZV9jb3VudGVyKSkgcF9jb3VudDsKLXByaXZhdGU6Ci0gICAgLy8gdGVzdCB0cmVlIHZpc2l0b3IgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgIHZpc2l0KCB0ZXN0X2Nhc2UgY29uc3QmICk7Ci0gICAgdmlydHVhbCBib29sICAgIHRlc3Rfc3VpdGVfc3RhcnQoIHRlc3Rfc3VpdGUgY29uc3QmIHRzICkgICAgeyByZXR1cm4gdHMucF9lbmFibGVkOyB9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB0ZXN0X2JlaW5nX2Fib3J0ZWQgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgdGVzdF9iZWluZ19hYm9ydGVkIHt9OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBvYmplY3QgZ2VuZXJhdG9ycyAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1ORE5CT09TVF9URVNUX0RFQ0wgc3RkOjpzdHJpbmcgbm9ybWFsaXplX3Rlc3RfY2FzZV9uYW1lKCBjb25zdF9zdHJpbmcgdHVfbmFtZSApOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0YW5jZVR5cGUsdHlwZW5hbWUgVXNlclRlc3RDYXNlPgotc3RydWN0IHVzZXJfdGNfbWV0aG9kX2ludm9rZXIgewotICAgIHR5cGVkZWYgdm9pZCAoVXNlclRlc3RDYXNlOjoqVGVzdE1ldGhvZCApKCk7Ci0KLSAgICB1c2VyX3RjX21ldGhvZF9pbnZva2VyKCBzaGFyZWRfcHRyPEluc3RhbmNlVHlwZT4gaW5zdCwgVGVzdE1ldGhvZCB0ZXN0X21ldGhvZCApCi0gICAgOiBtX2luc3QoIGluc3QgKSwgbV90ZXN0X21ldGhvZCggdGVzdF9tZXRob2QgKSB7fQotCi0gICAgdm9pZCBvcGVyYXRvcigpKCkgeyAoKCptX2luc3QpLiptX3Rlc3RfbWV0aG9kKSgpOyB9Ci0KLSAgICBzaGFyZWRfcHRyPEluc3RhbmNlVHlwZT4gbV9pbnN0OwotICAgIFRlc3RNZXRob2QgICAgICAgICAgICAgICBtX3Rlc3RfbWV0aG9kOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWlubGluZSB0ZXN0X2Nhc2UqCi1tYWtlX3Rlc3RfY2FzZSggY2FsbGJhY2swPD4gY29uc3QmIHRlc3RfZnVuYywgY29uc3Rfc3RyaW5nIHRjX25hbWUgKQotewotICAgIHJldHVybiBuZXcgdGVzdF9jYXNlKCB1dF9kZXRhaWw6Om5vcm1hbGl6ZV90ZXN0X2Nhc2VfbmFtZSggdGNfbmFtZSApLCB0ZXN0X2Z1bmMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVXNlclRlc3RDYXNlLCB0eXBlbmFtZSBJbnN0YW5jZVR5cGU+Ci1pbmxpbmUgdGVzdF9jYXNlKgotbWFrZV90ZXN0X2Nhc2UoIHZvaWQgKFVzZXJUZXN0Q2FzZTo6KiAgICAgICAgICAgdGVzdF9tZXRob2QgKSgpLAotICAgICAgICAgICAgICAgIGNvbnN0X3N0cmluZyAgICAgICAgICAgICAgICAgICAgdGNfbmFtZSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxJbnN0YW5jZVR5cGU+IHVzZXJfdGVzdF9jYXNlICkKLXsKLSAgICByZXR1cm4gbmV3IHRlc3RfY2FzZSggdXRfZGV0YWlsOjpub3JtYWxpemVfdGVzdF9jYXNlX25hbWUoIHRjX25hbWUgKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHV0X2RldGFpbDo6dXNlcl90Y19tZXRob2RfaW52b2tlcjxJbnN0YW5jZVR5cGUsVXNlclRlc3RDYXNlPiggdXNlcl90ZXN0X2Nhc2UsIHRlc3RfbWV0aG9kICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBhdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBhdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIKLXsKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICAgICAgICAgICAgICBhdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIoIHRlc3RfY2FzZSogdGMsIGNvdW50ZXJfdCBleHBfZmFpbCApOwotICAgIGV4cGxpY2l0ICAgIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciggY29uc3Rfc3RyaW5nIHRzX25hbWUgKTsKLSAgICBleHBsaWNpdCAgICBhdXRvX3Rlc3RfdW5pdF9yZWdpc3RyYXIoIHRlc3RfdW5pdF9nZW5lcmF0b3IgY29uc3QmIHRjX2dlbiApOwotICAgIGV4cGxpY2l0ICAgIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciggaW50ICk7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIHN0ZDo6bGlzdDx0ZXN0X3N1aXRlKj4mIGN1cnJfdHNfc3RvcmUoKTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYXV0b190Y19leHBfZmFpbCB7Ci0gICAgYXV0b190Y19leHBfZmFpbCgpIDogbV92YWx1ZSggMCApIHt9Ci0KLSAgICBleHBsaWNpdCAgICBhdXRvX3RjX2V4cF9mYWlsKCB1bnNpZ25lZCB2ICkKLSAgICA6IG1fdmFsdWUoIHYgKQotICAgIHsKLSAgICAgICAgaW5zdGFuY2UoKSA9IHRoaXM7Ci0gICAgfQotCi0gICAgc3RhdGljIGF1dG9fdGNfZXhwX2ZhaWwqJiBpbnN0YW5jZSgpIAotICAgIHsKLSAgICAgICAgc3RhdGljIGF1dG9fdGNfZXhwX2ZhaWwgICAgIGluc3Q7IAotICAgICAgICBzdGF0aWMgYXV0b190Y19leHBfZmFpbCogICAgaW5zdF9wdHIgPSAmaW5zdDsgCi0KLSAgICAgICAgcmV0dXJuIGluc3RfcHRyOwotICAgIH0KLQotICAgIHVuc2lnbmVkICAgIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHVuc2lnbmVkICAgIG1fdmFsdWU7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGdsb2JhbF9maXh0dXJlICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgZ2xvYmFsX2ZpeHR1cmUgOiBwdWJsaWMgdGVzdF9vYnNlcnZlciB7IAotcHVibGljOiAKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGdsb2JhbF9maXh0dXJlKCk7Ci19OyAKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+IAotc3RydWN0IGdsb2JhbF9maXh0dXJlX2ltcGwgOiBwdWJsaWMgZ2xvYmFsX2ZpeHR1cmUgewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZ2xvYmFsX2ZpeHR1cmVfaW1wbCgpOiBtX2ZpeHVyZSggMCApICAgIHt9Ci0KLSAgICAvLyB0ZXN0IG9ic2VydmVyIGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3N0YXJ0KCBjb3VudGVyX3QgKSB7IG1fZml4dXJlID0gbmV3IEY7IH0KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF9maW5pc2goKSAgICAgICAgICAgeyBkZWxldGUgbV9maXh1cmU7IG1fZml4dXJlID0gMDsgfSAKLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF9hYm9ydGVkKCkgICAgICAgICAgeyBkZWxldGUgbV9maXh1cmU7IG1fZml4dXJlID0gMDsgfSAKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBGKiAgbV9maXh1cmU7Ci19OyAKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIHRlc3RfY2FzZV90ZW1wbGF0ZV9pbnZva2VyICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUZXN0Q2FzZVRlbXBsYXRlLHR5cGVuYW1lIFRlc3RUeXBlPgotY2xhc3MgdGVzdF9jYXNlX3RlbXBsYXRlX2ludm9rZXIgewotcHVibGljOgotICAgIHZvaWQgICAgb3BlcmF0b3IoKSgpICAgIHsgVGVzdENhc2VUZW1wbGF0ZTo6cnVuKCAobmRuYm9vc3Q6OnR5cGU8VGVzdFR5cGU+KikwICk7IH0KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgZ2VuZXJhdGVfdGVzdF9jYXNlXzRfdHlwZSAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgR2VuZXJhdG9yLHR5cGVuYW1lIFRlc3RDYXNlVGVtcGxhdGU+Ci1zdHJ1Y3QgZ2VuZXJhdGVfdGVzdF9jYXNlXzRfdHlwZSB7Ci0gICAgZXhwbGljaXQgICAgZ2VuZXJhdGVfdGVzdF9jYXNlXzRfdHlwZSggY29uc3Rfc3RyaW5nIHRjX25hbWUsIEdlbmVyYXRvciYgRyApCi0gICAgOiBtX3Rlc3RfY2FzZV9uYW1lKCB0Y19uYW1lICkKLSAgICAsIG1faG9sZGVyKCBHICkKLSAgICB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVGVzdFR5cGU+Ci0gICAgdm9pZCAgICAgICAgb3BlcmF0b3IoKSggbXBsOjppZGVudGl0eTxUZXN0VHlwZT4gKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgZnVsbF9uYW1lOwotICAgICAgICBhc3NpZ25fb3AoIGZ1bGxfbmFtZSwgbV90ZXN0X2Nhc2VfbmFtZSwgMCApOwotICAgICAgICBmdWxsX25hbWUgKz0gJzwnOwotICAgICAgICBmdWxsX25hbWUgKz0gdHlwZWlkKFRlc3RUeXBlKS5uYW1lKCk7Ci0gICAgICAgIGlmKCBuZG5ib29zdDo6aXNfY29uc3Q8VGVzdFR5cGU+Ojp2YWx1ZSApCi0gICAgICAgICAgICBmdWxsX25hbWUgKz0gIiBjb25zdCI7Ci0gICAgICAgIGZ1bGxfbmFtZSArPSAnPic7Ci0KLSAgICAgICAgbV9ob2xkZXIubV90ZXN0X2Nhc2VzLnB1c2hfYmFjayggCi0gICAgICAgICAgICBuZXcgdGVzdF9jYXNlKCBmdWxsX25hbWUsIHRlc3RfY2FzZV90ZW1wbGF0ZV9pbnZva2VyPFRlc3RDYXNlVGVtcGxhdGUsVGVzdFR5cGU+KCkgKSApOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBjb25zdF9zdHJpbmcgICAgbV90ZXN0X2Nhc2VfbmFtZTsKLSAgICBHZW5lcmF0b3ImICAgICAgbV9ob2xkZXI7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHRlc3RfY2FzZV90ZW1wbGF0ZSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFRlc3RDYXNlVGVtcGxhdGUsdHlwZW5hbWUgVGVzdFR5cGVzTGlzdD4KLWNsYXNzIHRlbXBsYXRlX3Rlc3RfY2FzZV9nZW4gOiBwdWJsaWMgdGVzdF91bml0X2dlbmVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICB0ZW1wbGF0ZV90ZXN0X2Nhc2VfZ2VuKCBjb25zdF9zdHJpbmcgdGNfbmFtZSApCi0gICAgewotICAgICAgICB0eXBlZGVmIGdlbmVyYXRlX3Rlc3RfY2FzZV80X3R5cGU8dGVtcGxhdGVfdGVzdF9jYXNlX2dlbjxUZXN0Q2FzZVRlbXBsYXRlLFRlc3RUeXBlc0xpc3Q+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdENhc2VUZW1wbGF0ZQotICAgICAgICA+IHNpbmdsZV90ZXN0X2dlbjsKLSAgICAgICAgbXBsOjpmb3JfZWFjaDxUZXN0VHlwZXNMaXN0LG1wbDo6bWFrZV9pZGVudGl0eTxtcGw6Ol8+ID4oIHNpbmdsZV90ZXN0X2dlbiggdGNfbmFtZSwgKnRoaXMgKSApOwotICAgIH0KLQotICAgIHZpcnR1YWwgdGVzdF91bml0KiBuZXh0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmKCBtX3Rlc3RfY2FzZXMuZW1wdHkoKSApCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICAgICAgdGVzdF91bml0KiByZXMgPSBtX3Rlc3RfY2FzZXMuZnJvbnQoKTsKLSAgICAgICAgbV90ZXN0X2Nhc2VzLnBvcF9mcm9udCgpOwotCi0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbXV0YWJsZSBzdGQ6Omxpc3Q8dGVzdF91bml0Kj4gbV90ZXN0X2Nhc2VzOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLX0gLy8gdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSU1QTF9IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9hbGdvcml0aG0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2FsZ29yaXRobS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmZjdkMDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2FsZ29yaXRobS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBhZGRpdGlvbiB0byBTVEwgYWxnb3JpdGhtcwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfQUxHT1JJVEhNX0hQUF8wNjIzMDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfQUxHT1JJVEhNX0hQUF8wNjIzMDRHRVIKLQotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPiAvLyBzdGQ6OmZpbmQKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPiAvLyBzdGQ6OmJpbmQxc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggdHdvIGNvbGxlY3Rpb25zIGZvciBmaXJzdCBtaXNtYXRjaCBwb3NpdGlvbiB0aGF0IGdldCByZXR1cm5lZCBhcyBhIHBhaXIKLS8vLyBvZiBpdGVyYXRvcnMsIGZpcnN0IHBvaW50aW5nIHRvIHRoZSBtaXNtYXRjaCBwb3NpdGlvbiBpbiBmaXJzdCBjb2xsZWN0aW9uLCBzZWNvbmQgaXRlcmF0b3IgaW4gc2Vjb25kIG9uZQotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcjEsIGNsYXNzIElucHV0SXRlcjI+Ci1pbmxpbmUgc3RkOjpwYWlyPElucHV0SXRlcjEsIElucHV0SXRlcjI+Ci1taXNtYXRjaCggSW5wdXRJdGVyMSBmaXJzdDEsIElucHV0SXRlcjEgbGFzdDEsCi0gICAgICAgICAgSW5wdXRJdGVyMiBmaXJzdDIsIElucHV0SXRlcjIgbGFzdDIgKQotewotICAgIHdoaWxlKCBmaXJzdDEgIT0gbGFzdDEgJiYgZmlyc3QyICE9IGxhc3QyICYmICpmaXJzdDEgPT0gKmZpcnN0MiApIHsKLSAgICAgICAgKytmaXJzdDE7Ci0gICAgICAgICsrZmlyc3QyOwotICAgIH0KLQotICAgIHJldHVybiBzdGQ6OnBhaXI8SW5wdXRJdGVyMSwgSW5wdXRJdGVyMj4oZmlyc3QxLCBmaXJzdDIpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLy8gQGJyaWVmIHRoaXMgYWxnb3JpdGhtIHNlYXJjaCB0aHJvdWdoIHR3byBjb2xsZWN0aW9ucyBmb3IgZmlyc3QgbWlzbWF0Y2ggcG9zaXRpb24gdGhhdCBnZXQgcmV0dXJuZWQgYXMgYSBwYWlyCi0vLy8gb2YgaXRlcmF0b3JzLCBmaXJzdCBwb2ludGluZyB0byB0aGUgbWlzbWF0Y2ggcG9zaXRpb24gaW4gZmlyc3QgY29sbGVjdGlvbiwgc2Vjb25kIGl0ZXJhdG9yIGluIHNlY29uZCBvbmUuIFRoaXMgYWxnb3JpdGhtcwotLy8vIHVzZXMgc3VwcGxpZWQgcHJlZGljYXRlIGZvciBjb2xsZWN0aW9uIGVsZW1lbnRzIGNvbXBhcmlzb24KLQotLy8vIEBwYXJhbSBmaXJzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gZmlyc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gcHJlZCAtIHByZWRpY2F0ZSB0byBiZSB1c2VkIGZvciBzZWFyY2gKLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXIxLCBjbGFzcyBJbnB1dEl0ZXIyLCBjbGFzcyBQcmVkaWNhdGU+Ci1pbmxpbmUgc3RkOjpwYWlyPElucHV0SXRlcjEsIElucHV0SXRlcjI+Ci1taXNtYXRjaCggSW5wdXRJdGVyMSBmaXJzdDEsIElucHV0SXRlcjEgbGFzdDEsCi0gICAgICAgICAgSW5wdXRJdGVyMiBmaXJzdDIsIElucHV0SXRlcjIgbGFzdDIsCi0gICAgICAgICAgUHJlZGljYXRlIHByZWQgKQotewotICAgIHdoaWxlKCBmaXJzdDEgIT0gbGFzdDEgJiYgZmlyc3QyICE9IGxhc3QyICYmIHByZWQoICpmaXJzdDEsICpmaXJzdDIgKSApIHsKLSAgICAgICAgKytmaXJzdDE7Ci0gICAgICAgICsrZmlyc3QyOwotICAgIH0KLQotICAgIHJldHVybiBzdGQ6OnBhaXI8SW5wdXRJdGVyMSwgSW5wdXRJdGVyMj4oZmlyc3QxLCBmaXJzdDIpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLy8gQGJyaWVmIHRoaXMgYWxnb3JpdGhtIHNlYXJjaCB0aHJvdWdoIGZpcnN0IGNvbGxlY3Rpb24gZm9yIGZpcnN0IGVsZW1lbnQgdGhhdCBkb2VzIG5vdCBiZWxvbmcgYSBzZWNvbmQgb25lCi0KLS8vLyBAcGFyYW0gZmlyc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGZpcnN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi10ZW1wbGF0ZTxjbGFzcyBGb3J3YXJkSXRlcmF0b3IxLCBjbGFzcyBGb3J3YXJkSXRlcmF0b3IyPgotaW5saW5lIEZvcndhcmRJdGVyYXRvcjEKLWZpbmRfZmlyc3Rfbm90X29mKCBGb3J3YXJkSXRlcmF0b3IxIGZpcnN0MSwgRm9yd2FyZEl0ZXJhdG9yMSBsYXN0MSwgCi0gICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yMiBmaXJzdDIsIEZvcndhcmRJdGVyYXRvcjIgbGFzdDIgKQotewotICAgIHdoaWxlKCBmaXJzdDEgIT0gbGFzdDEgKSB7Ci0gICAgICAgIGlmKCBzdGQ6OmZpbmQoIGZpcnN0MiwgbGFzdDIsICpmaXJzdDEgKSA9PSBsYXN0MiApCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgKytmaXJzdDE7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpcnN0MTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCBmaXJzdCBjb2xsZWN0aW9uIGZvciBmaXJzdCBlbGVtZW50IHRoYXQgZG9lcyBub3Qgc2F0aXNmeSBiaW5hcnkgCi0vLy8gcHJlZGljYXRlIGluIGNvbmp1bmN0aW9uIHdpbGwgYW55IGVsZW1lbnQgaW4gc2Vjb25kIGNvbGxlY3Rpb24KLQotLy8vIEBwYXJhbSBmaXJzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gZmlyc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gcHJlZCAtIHByZWRpY2F0ZSB0byBiZSB1c2VkIGZvciBzZWFyY2gKLXRlbXBsYXRlPGNsYXNzIEZvcndhcmRJdGVyYXRvcjEsIGNsYXNzIEZvcndhcmRJdGVyYXRvcjIsIGNsYXNzIFByZWRpY2F0ZT4KLWlubGluZSBGb3J3YXJkSXRlcmF0b3IxCi1maW5kX2ZpcnN0X25vdF9vZiggRm9yd2FyZEl0ZXJhdG9yMSBmaXJzdDEsIEZvcndhcmRJdGVyYXRvcjEgbGFzdDEsIAotICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjIgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IyIGxhc3QyLCAKLSAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGUgcHJlZCApCi17Ci0gICAgd2hpbGUoIGZpcnN0MSAhPSBsYXN0MSApIHsKLSAgICAgICAgaWYoIHN0ZDo6ZmluZF9pZiggZmlyc3QyLCBsYXN0Miwgc3RkOjpiaW5kMXN0KCBwcmVkLCAqZmlyc3QxICkgKSA9PSBsYXN0MiApCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgKytmaXJzdDE7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpcnN0MTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCBmaXJzdCBjb2xsZWN0aW9uIGZvciBsYXN0IGVsZW1lbnQgdGhhdCBiZWxvbmdzIHRvIGEgc2Vjb25kIG9uZQotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotdGVtcGxhdGU8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yMj4KLWlubGluZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxCi1maW5kX2xhc3Rfb2YoIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgZmlyc3QxLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGxhc3QxLCAKLSAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yMiBmaXJzdDIsIEZvcndhcmRJdGVyYXRvcjIgbGFzdDIgKQotewotICAgIGlmKCBmaXJzdDEgPT0gbGFzdDEgfHwgZmlyc3QyID09IGxhc3QyICkKLSAgICAgICAgcmV0dXJuIGxhc3QxOwotCi0gICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBpdDEgPSBsYXN0MTsKLSAgICB3aGlsZSggLS1pdDEgIT0gZmlyc3QxICYmIHN0ZDo6ZmluZCggZmlyc3QyLCBsYXN0MiwgKml0MSApID09IGxhc3QyICkge30KLQotICAgIHJldHVybiBpdDEgPT0gZmlyc3QxICYmIHN0ZDo6ZmluZCggZmlyc3QyLCBsYXN0MiwgKml0MSApID09IGxhc3QyID8gbGFzdDEgOiBpdDE7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggZmlyc3QgY29sbGVjdGlvbiBmb3IgbGFzdCBlbGVtZW50IHRoYXQgc2F0aXNmeSBiaW5hcnkgCi0vLy8gcHJlZGljYXRlIGluIGNvbmp1bmN0aW9uIHdpbGwgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gc2Vjb25kIGNvbGxlY3Rpb24KLQotLy8vIEBwYXJhbSBmaXJzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gZmlyc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gcHJlZCAtIHByZWRpY2F0ZSB0byBiZSB1c2VkIGZvciBzZWFyY2gKLXRlbXBsYXRlPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEsIGNsYXNzIEZvcndhcmRJdGVyYXRvcjIsIGNsYXNzIFByZWRpY2F0ZT4KLWlubGluZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxCi1maW5kX2xhc3Rfb2YoIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgZmlyc3QxLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGxhc3QxLCAKLSAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yMiBmaXJzdDIsIEZvcndhcmRJdGVyYXRvcjIgbGFzdDIsIAotICAgICAgICAgICAgICBQcmVkaWNhdGUgcHJlZCApCi17Ci0gICAgaWYoIGZpcnN0MSA9PSBsYXN0MSB8fCBmaXJzdDIgPT0gbGFzdDIgKQotICAgICAgICByZXR1cm4gbGFzdDE7Ci0KLSAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGl0MSA9IGxhc3QxOwotICAgIHdoaWxlKCAtLWl0MSAhPSBmaXJzdDEgJiYgc3RkOjpmaW5kX2lmKCBmaXJzdDIsIGxhc3QyLCBzdGQ6OmJpbmQxc3QoIHByZWQsICppdDEgKSApID09IGxhc3QyICkge30KLQotICAgIHJldHVybiBpdDEgPT0gZmlyc3QxICYmIHN0ZDo6ZmluZF9pZiggZmlyc3QyLCBsYXN0Miwgc3RkOjpiaW5kMXN0KCBwcmVkLCAqaXQxICkgKSA9PSBsYXN0MiA/IGxhc3QxIDogaXQxOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLy8gQGJyaWVmIHRoaXMgYWxnb3JpdGhtIHNlYXJjaCB0aHJvdWdoIGZpcnN0IGNvbGxlY3Rpb24gZm9yIGxhc3QgZWxlbWVudCB0aGF0IGRvZXMgbm90IGJlbG9uZyB0byBhIHNlY29uZCBvbmUKLQotLy8vIEBwYXJhbSBmaXJzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gZmlyc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLXRlbXBsYXRlPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEsIGNsYXNzIEZvcndhcmRJdGVyYXRvcjI+Ci1pbmxpbmUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMQotZmluZF9sYXN0X25vdF9vZiggQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBmaXJzdDEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgbGFzdDEsIAotICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yMiBmaXJzdDIsIEZvcndhcmRJdGVyYXRvcjIgbGFzdDIgKQotewotICAgIGlmKCBmaXJzdDEgPT0gbGFzdDEgfHwgZmlyc3QyID09IGxhc3QyICkKLSAgICAgICAgcmV0dXJuIGxhc3QxOwotCi0gICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBpdDEgPSBsYXN0MTsKLSAgICB3aGlsZSggLS1pdDEgIT0gZmlyc3QxICYmIHN0ZDo6ZmluZCggZmlyc3QyLCBsYXN0MiwgKml0MSApICE9IGxhc3QyICkge30KLQotICAgIHJldHVybiBpdDEgPT0gZmlyc3QxICYmIHN0ZDo6ZmluZCggZmlyc3QyLCBsYXN0MiwgKml0MSApICE9IGxhc3QyID8gbGFzdDEgOiBpdDE7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggZmlyc3QgY29sbGVjdGlvbiBmb3IgbGFzdCBlbGVtZW50IHRoYXQgZG9lcyBub3Qgc2F0aXNmeSBiaW5hcnkgCi0vLy8gcHJlZGljYXRlIGluIGNvbmp1bmN0aW9uIHdpbGwgYW55IGVsZW1lbnQgaW4gc2Vjb25kIGNvbGxlY3Rpb24KLQotLy8vIEBwYXJhbSBmaXJzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gZmlyc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gcHJlZCAtIHByZWRpY2F0ZSB0byBiZSB1c2VkIGZvciBzZWFyY2gKLXRlbXBsYXRlPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEsIGNsYXNzIEZvcndhcmRJdGVyYXRvcjIsIGNsYXNzIFByZWRpY2F0ZT4KLWlubGluZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxCi1maW5kX2xhc3Rfbm90X29mKCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGZpcnN0MSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBsYXN0MSwgCi0gICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiwgCi0gICAgICAgICAgICAgICAgICBQcmVkaWNhdGUgcHJlZCApCi17Ci0gICAgaWYoIGZpcnN0MSA9PSBsYXN0MSB8fCBmaXJzdDIgPT0gbGFzdDIgKQotICAgICAgICByZXR1cm4gbGFzdDE7Ci0KLSAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGl0MSA9IGxhc3QxOwotICAgIHdoaWxlKCAtLWl0MSAhPSBmaXJzdDEgJiYgc3RkOjpmaW5kX2lmKCBmaXJzdDIsIGxhc3QyLCBzdGQ6OmJpbmQxc3QoIHByZWQsICppdDEgKSApICE9IGxhc3QyICkge30KLQotICAgIHJldHVybiBpdDEgPT0gZmlyc3QxICYmIHN0ZDo6ZmluZF9pZiggZmlyc3QyLCBsYXN0Miwgc3RkOjpiaW5kMXN0KCBwcmVkLCAqaXQxICkgKSA9PSBsYXN0MiA/IGxhc3QxIDogaXQxOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9BTEdPUklUSE1fSFBQXzA2MjMwNEdFUgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9hc3NpZ25fb3AuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Fzc2lnbl9vcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNGJlMDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Fzc2lnbl9vcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IG92ZXJsb2FkYWJsZSBhc3NpZ25tZW50Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0FTU0lHTl9PUF8wMzMwMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9BU1NJR05fT1BfMDMzMDA1R0VSCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgZ2VuZXJpYyBhc3NpZ24gb3BlcmF0b3IgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLS8vIGdlbmVyaWMKLXRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgUz4KLWlubGluZSB2b2lkCi1hc3NpZ25fb3AoIFQmIHQsIFMgY29uc3QmIHMsIGxvbmcgKQotewotICAgIHQgPSBzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQVNTSUdOX09QXzAzMzAwNUdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWE2NGNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY2xhc3MgYmFzaWNfY3N0cmluZyB3cmFwcyBDIHN0cmluZyBhbmQgcHJvdmlkZSBzdGRfc3RyaW5nIGxpa2UgCi0vLyAgICAgICAgICAgICAgICBpbnRlcmZhY2UKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZ19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iY3NfY2hhcl90cmFpdHMuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgYmFzaWNfY3N0cmluZyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotY2xhc3MgYmFzaWNfY3N0cmluZyB7Ci0gICAgdHlwZWRlZiBiYXNpY19jc3RyaW5nPENoYXJUPiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGZfdHlwZTsKLXB1YmxpYzoKLSAgICAvLyBTdWJ0eXBlcwotICAgIHR5cGVkZWYgdXRfZGV0YWlsOjpiY3NfY2hhcl90cmFpdHM8Q2hhclQ+ICAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHV0X2RldGFpbDo6YmNzX2NoYXJfdHJhaXRzPENoYXJUPjo6c3RkX3N0cmluZyAgc3RkX3N0cmluZzsKLQotICAgIHR5cGVkZWYgQ2hhclQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSBjb25zdCogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUgY29uc3QqICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOwotCi0gICAgLy8gISEgc2hvdWxkIGFsc28gcHJlc2VudCByZXZlcnNlX2l0ZXJhdG9yLCBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkKLSAgICBlbnVtIG5wb3NfdHlwZSB7IG5wb3MgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KC0xKSB9OwotI2Vsc2UKLSAgICAvLyBJQk0vVmlzdWFsQWdlIHZlcnNpb24gNiBpcyBub3QgYWJsZSB0byBoYW5kbGUgZW51bXMgbGFyZ2VyIHRoYW4gNCBieXRlcy4KLSAgICAvLyBCdXQgc2l6ZV90eXBlIGlzIDggYnl0ZXMgaW4gNjRiaXQgbW9kZS4KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90eXBlIG5wb3MgPSAtMSA7Ci0jZW5kaWYKLQotICAgIHN0YXRpYyBwb2ludGVyICBudWxsX3N0cigpOwotCi0gICAgLy8gQ29uc3RydWN0b3JzOyBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3IgaXMgZ2VuZXJhdGVkIGJ5IGNvbXBpbGVyCi0gICAgYmFzaWNfY3N0cmluZygpOwotICAgIGJhc2ljX2NzdHJpbmcoIHN0ZF9zdHJpbmcgY29uc3QmIHMgKTsKLSAgICBiYXNpY19jc3RyaW5nKCBwb2ludGVyIHMgKTsKLSAgICBiYXNpY19jc3RyaW5nKCBwb2ludGVyIHMsIHNpemVfdHlwZSBhcmdfc2l6ZSApOwotICAgIGJhc2ljX2NzdHJpbmcoIHBvaW50ZXIgZmlyc3QsIHBvaW50ZXIgbGFzdCApOwotCi0gICAgLy8gZGF0YSBhY2Nlc3MgbWV0aG9kcwotICAgIHZhbHVlX3R5cGUgICAgICBvcGVyYXRvcltdKCBzaXplX3R5cGUgaW5kZXggKSBjb25zdDsKLSAgICB2YWx1ZV90eXBlICAgICAgYXQoIHNpemVfdHlwZSBpbmRleCApIGNvbnN0OwotCi0gICAgLy8gc2l6ZSBvcGVyYXRvcnMKLSAgICBzaXplX3R5cGUgICAgICAgc2l6ZSgpIGNvbnN0OwotICAgIGJvb2wgICAgICAgICAgICBpc19lbXB0eSgpIGNvbnN0OwotICAgIHZvaWQgICAgICAgICAgICBjbGVhcigpOwotICAgIHZvaWQgICAgICAgICAgICByZXNpemUoIHNpemVfdHlwZSBuZXdfbGVuICk7Ci0KLSAgICAvLyAhISBvbmx5IGZvciBTVEwgY29udGFpbmVyIGNvbmZvcm1hbmNlIHVzZSBpc19lbXB0eSBpbnN0ZWFkCi0gICAgYm9vbCAgICAgICAgICAgIGVtcHR5KCkgY29uc3Q7IAotCi0gICAgLy8gVHJpbW1pbmcKLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9yaWdodCggc2l6ZV90eXBlIHRyaW1fc2l6ZSApOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX2xlZnQoIHNpemVfdHlwZSB0cmltX3NpemUgKTsKLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9yaWdodCggaXRlcmF0b3IgaXQgKTsKLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9sZWZ0KCBpdGVyYXRvciBpdCApOwotI2lmbmRlZiBfX0lCTUNQUF9fCi0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fbGVmdCggc2VsZl90eXBlIGV4Y2x1c2lvbnMgPSBzZWxmX3R5cGUoKSApIDsKLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9yaWdodCggc2VsZl90eXBlIGV4Y2x1c2lvbnMgPSBzZWxmX3R5cGUoKSApIDsKLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbSggc2VsZl90eXBlIGV4Y2x1c2lvbnMgPSBzZWxmX3R5cGUoKSApIDsKLSNlbHNlCi0gICAgLy8gVmlzdWFsQWdlIHZlcnNpb24gNiBoYXMgaW4gdGhpcyBjYXNlIGEgcHJvYmxlbSB3aXRoIHRoZSBkZWZhdWx0IGFyZ3VtZW50cy4KLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9sZWZ0KCBzZWxmX3R5cGUgZXhjbHVzaW9ucyApIDsKLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9yaWdodCggc2VsZl90eXBlIGV4Y2x1c2lvbnMgKSA7Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW0oIHNlbGZfdHlwZSBleGNsdXNpb25zICkgOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX2xlZnQoKSB7IHRyaW1fbGVmdCggc2VsZl90eXBlKCkgKSA7IH0KLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9yaWdodCgpIHsgdHJpbV9yaWdodCggc2VsZl90eXBlKCkgKSA7IH0KLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbSgpIHsgdHJpbSggc2VsZl90eXBlKCkgKSA7IH0KLSNlbmRpZgotCi0gICAgLy8gQXNzaWdubWVudCBvcGVyYXRvcnMKLSAgICBiYXNpY19jc3RyaW5nJiAgb3BlcmF0b3I9KCBzZWxmX3R5cGUgY29uc3QmIHMgKTsKLSAgICBiYXNpY19jc3RyaW5nJiAgb3BlcmF0b3I9KCBzdGRfc3RyaW5nIGNvbnN0JiBzICk7Ci0gICAgYmFzaWNfY3N0cmluZyYgIG9wZXJhdG9yPSggcG9pbnRlciBzICk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVDI+Ci0gICAgYmFzaWNfY3N0cmluZyYgIGFzc2lnbiggYmFzaWNfY3N0cmluZzxDaGFyVDI+IGNvbnN0JiBzICkgeyAqdGhpcyA9IGJhc2ljX2NzdHJpbmc8Q2hhclQ+KCBzLmJlZ2luKCksIHMuZW5kKCkgKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgYmFzaWNfY3N0cmluZyYgIGFzc2lnbiggc2VsZl90eXBlIGNvbnN0JiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbGVuICk7Ci0gICAgYmFzaWNfY3N0cmluZyYgIGFzc2lnbiggc3RkX3N0cmluZyBjb25zdCYgcyApOwotICAgIGJhc2ljX2NzdHJpbmcmICBhc3NpZ24oIHN0ZF9zdHJpbmcgY29uc3QmIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBsZW4gKTsKLSAgICBiYXNpY19jc3RyaW5nJiAgYXNzaWduKCBwb2ludGVyIHMgKTsKLSAgICBiYXNpY19jc3RyaW5nJiAgYXNzaWduKCBwb2ludGVyIHMsIHNpemVfdHlwZSBsZW4gKTsKLSAgICBiYXNpY19jc3RyaW5nJiAgYXNzaWduKCBwb2ludGVyIGYsIHBvaW50ZXIgbCApOwotCi0gICAgLy8gc3dhcHBpbmcKLSAgICB2b2lkICAgICAgICAgICAgc3dhcCggc2VsZl90eXBlJiBzICk7Ci0KLSAgICAvLyBJdGVyYXRvcnMKLSAgICBpdGVyYXRvciAgICAgICAgYmVnaW4oKTsKLSAgICBjb25zdF9pdGVyYXRvciAgYmVnaW4oKSBjb25zdDsKLSAgICBpdGVyYXRvciAgICAgICAgZW5kKCk7Ci0gICAgY29uc3RfaXRlcmF0b3IgIGVuZCgpIGNvbnN0OwotCi0gICAgLy8gISEgc2hvdWxkIGhhdmUgcmJlZ2luLCByZW5kCi0KLSAgICAvLyBzdWJzdHJpbmcgc2VhcmNoIG9wZXJhdGlvbgotICAgIHNpemVfdHlwZSAgICAgICBmaW5kKCBiYXNpY19jc3RyaW5nICkgY29uc3Q7Ci0gICAgc2l6ZV90eXBlICAgICAgIHJmaW5kKCBiYXNpY19jc3RyaW5nICkgY29uc3Q7Ci0gICAgc2VsZl90eXBlICAgICAgIHN1YnN0ciggc2l6ZV90eXBlIGJlZ19pbmRleCwgc2l6ZV90eXBlIGVuZF9pbmRleCA9IG5wb3MgKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgc2VsZl90eXBlIGRlZmF1bHRfdHJpbV9leCgpOwotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgaXRlcmF0b3IgICAgICAgIG1fYmVnaW47Ci0gICAgaXRlcmF0b3IgICAgICAgIG1fZW5kOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnBvaW50ZXIKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpudWxsX3N0cigpCi17Ci0gICAgc3RhdGljIENoYXJUIG51bGwgPSAwOwotICAgIHJldHVybiAmbnVsbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpiYXNpY19jc3RyaW5nKCkKLTogbV9iZWdpbiggbnVsbF9zdHIoKSApCi0sIG1fZW5kKCBtX2JlZ2luICkKLXsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpiYXNpY19jc3RyaW5nKCBzdGRfc3RyaW5nIGNvbnN0JiBzICkKLTogbV9iZWdpbiggcy5jX3N0cigpICkKLSwgbV9lbmQoIG1fYmVnaW4gKyBzLnNpemUoKSApCi17Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YmFzaWNfY3N0cmluZyggcG9pbnRlciBzICkKLTogbV9iZWdpbiggcyA/IHMgOiBudWxsX3N0cigpICkKLSwgbV9lbmQgICggbV9iZWdpbiArIChzID8gdHJhaXRzX3R5cGU6Omxlbmd0aCggcyApIDogMCApICkKLXsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpiYXNpY19jc3RyaW5nKCBwb2ludGVyIHMsIHNpemVfdHlwZSBhcmdfc2l6ZSApCi06IG1fYmVnaW4oIHMgKSwgbV9lbmQoIG1fYmVnaW4gKyBhcmdfc2l6ZSApCi17Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YmFzaWNfY3N0cmluZyggcG9pbnRlciBmaXJzdCwgcG9pbnRlciBsYXN0ICkKLTogbV9iZWdpbiggZmlyc3QgKQotLCBtX2VuZCggbGFzdCApCi17Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp2YWx1ZV90eXBlCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6b3BlcmF0b3JbXSggc2l6ZV90eXBlIGluZGV4ICkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9iZWdpbltpbmRleF07Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp2YWx1ZV90eXBlCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YXQoIHNpemVfdHlwZSBpbmRleCApIGNvbnN0Ci17Ci0gICAgaWYoIG1fYmVnaW4gKyBpbmRleCA+PSBtX2VuZCApCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPigwKTsKLQotICAgIHJldHVybiBtX2JlZ2luW2luZGV4XTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnNpemVfdHlwZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX2VuZCAtIG1fYmVnaW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJvb2wKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojppc19lbXB0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZW5kID09IG1fYmVnaW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJvb2wKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjplbXB0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzX2VtcHR5KCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHZvaWQKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpjbGVhcigpCi17Ci0gICAgbV9iZWdpbiA9IG1fZW5kOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB2b2lkCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6cmVzaXplKCBzaXplX3R5cGUgbmV3X2xlbiApCi17Ci0gICAgaWYoIG1fYmVnaW4gKyBuZXdfbGVuIDwgbV9lbmQgKQotICAgICAgICBtX2VuZCA9IG1fYmVnaW4gKyBuZXdfbGVuOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltX2xlZnQoIHNpemVfdHlwZSB0cmltX3NpemUgKQotewotICAgIG1fYmVnaW4gKz0gdHJpbV9zaXplOwotICAgIGlmKCBtX2VuZCA8PSBtX2JlZ2luICkKLSAgICAgICAgY2xlYXIoKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6dHJpbV9sZWZ0KCBpdGVyYXRvciBpdCApCi17Ci0gICAgbV9iZWdpbiA9IGl0OwotICAgIGlmKCBtX2VuZCA8PSBtX2JlZ2luICkKLSAgICAgICAgY2xlYXIoKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6dHJpbV9sZWZ0KCBiYXNpY19jc3RyaW5nIGV4Y2x1c2lvbnMgKQotewotICAgIGlmKCBleGNsdXNpb25zLmlzX2VtcHR5KCkgKQotICAgICAgICBleGNsdXNpb25zID0gZGVmYXVsdF90cmltX2V4KCk7Ci0KLSAgICBpdGVyYXRvciBpdDsKLSAgICBmb3IoIGl0ID0gYmVnaW4oKTsgaXQgIT0gZW5kKCk7ICsraXQgKSB7Ci0gICAgICAgIGlmKCB0cmFpdHNfdHlwZTo6ZmluZCggZXhjbHVzaW9ucy5iZWdpbigpLCBleGNsdXNpb25zLnNpemUoKSwgKml0ICkgPT0gcmVpbnRlcnByZXRfY2FzdDxwb2ludGVyPigwKSApCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHRyaW1fbGVmdCggaXQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6dHJpbV9yaWdodCggc2l6ZV90eXBlIHRyaW1fc2l6ZSApCi17Ci0gICAgbV9lbmQgIC09IHRyaW1fc2l6ZTsKLSAgICBpZiggbV9lbmQgPD0gbV9iZWdpbiApCi0gICAgICAgIGNsZWFyKCk7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OnRyaW1fcmlnaHQoIGl0ZXJhdG9yIGl0ICkKLXsKLSAgICBtX2VuZCA9IGl0OwotICAgIGlmKCBtX2VuZCA8PSBtX2JlZ2luICkKLSAgICAgICAgY2xlYXIoKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6dHJpbV9yaWdodCggYmFzaWNfY3N0cmluZyBleGNsdXNpb25zICkKLXsKLSAgICBpZiggZXhjbHVzaW9ucy5pc19lbXB0eSgpICkKLSAgICAgICAgZXhjbHVzaW9ucyA9IGRlZmF1bHRfdHJpbV9leCgpOwotCi0gICAgaXRlcmF0b3IgaXQ7Ci0KLSAgICBmb3IoIGl0ID0gZW5kKCktMTsgaXQgIT0gYmVnaW4oKS0xOyAtLWl0ICkgewotICAgICAgICBpZiggc2VsZl90eXBlOjp0cmFpdHNfdHlwZTo6ZmluZCggZXhjbHVzaW9ucy5iZWdpbigpLCAgZXhjbHVzaW9ucy5zaXplKCksICppdCApID09IHJlaW50ZXJwcmV0X2Nhc3Q8cG9pbnRlcj4oMCkgKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIHJldHVybiB0cmltX3JpZ2h0KCBpdCsxICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OnRyaW0oIGJhc2ljX2NzdHJpbmcgZXhjbHVzaW9ucyApCi17Ci0gICAgdHJpbV9sZWZ0KCBleGNsdXNpb25zICk7Ci0gICAgdHJpbV9yaWdodCggZXhjbHVzaW9ucyApOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpvcGVyYXRvcj0oIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzICkKLXsKLSAgICBtX2JlZ2luID0gcy5tX2JlZ2luOwotICAgIG1fZW5kICAgPSBzLm1fZW5kOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpvcGVyYXRvcj0oIHN0ZF9zdHJpbmcgY29uc3QmIHMgKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpvcGVyYXRvcj0oIHBvaW50ZXIgcyApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmFzc2lnbiggYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBsZW4gKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggcy5tX2JlZ2luICsgcG9zLCBsZW4gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YXNzaWduKCBzdGRfc3RyaW5nIGNvbnN0JiBzICkKLXsKLSAgICByZXR1cm4gKnRoaXMgPSBzZWxmX3R5cGUoIHMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YXNzaWduKCBzdGRfc3RyaW5nIGNvbnN0JiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbGVuICkKLXsKLSAgICByZXR1cm4gKnRoaXMgPSBzZWxmX3R5cGUoIHMuY19zdHIoKSArIHBvcywgbGVuICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmFzc2lnbiggcG9pbnRlciBzICkKLXsKLSAgICByZXR1cm4gKnRoaXMgPSBzZWxmX3R5cGUoIHMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YXNzaWduKCBwb2ludGVyIHMsIHNpemVfdHlwZSBsZW4gKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggcywgbGVuICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmFzc2lnbiggcG9pbnRlciBmLCBwb2ludGVyIGwgKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggZiwgbCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB2b2lkCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6c3dhcCggYmFzaWNfY3N0cmluZzxDaGFyVD4mIHMgKQotewotICAgIC8vIGRvIG5vdCB3YW50IHRvIGluY2x1ZGUgYWxvZ3JpdGhtCi0gICAgcG9pbnRlciB0bXAxICAgID0gbV9iZWdpbjsKLSAgICBwb2ludGVyIHRtcDIgICAgPSBtX2VuZDsKLQotICAgIG1fYmVnaW4gICAgICAgICA9IHMubV9iZWdpbjsKLSAgICBtX2VuZCAgICAgICAgICAgPSBzLm1fZW5kOwotCi0gICAgcy5tX2JlZ2luICAgICAgID0gdG1wMTsKLSAgICBzLm1fZW5kICAgICAgICAgPSB0bXAyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6aXRlcmF0b3IKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpiZWdpbigpCi17Ci0gICAgcmV0dXJuIG1fYmVnaW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojpjb25zdF9pdGVyYXRvcgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJlZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9iZWdpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46Oml0ZXJhdG9yCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6ZW5kKCkKLXsKLSAgICByZXR1cm4gbV9lbmQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojpjb25zdF9pdGVyYXRvcgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZW5kOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6c2l6ZV90eXBlCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6ZmluZCggYmFzaWNfY3N0cmluZzxDaGFyVD4gc3RyICkgY29uc3QKLXsKLSAgICBpZiggc3RyLmlzX2VtcHR5KCkgfHwgc3RyLnNpemUoKSA+IHNpemUoKSApCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KG5wb3MpOwotCi0gICAgY29uc3RfaXRlcmF0b3IgaXQgICA9IGJlZ2luKCk7Ci0gICAgY29uc3RfaXRlcmF0b3IgbGFzdCA9IGVuZCgpIC0gc3RyLnNpemUoKSArIDE7Ci0KLSAgICB3aGlsZSggaXQgIT0gbGFzdCApIHsKLSAgICAgICAgaWYoIHRyYWl0c190eXBlOjpjb21wYXJlKCBpdCwgc3RyLmJlZ2luKCksIHN0ci5zaXplKCkgKSA9PSAwICkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICsraXQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGl0ID09IGxhc3QgPyBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KG5wb3MpIDogaXQgLSBiZWdpbigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6c2l6ZV90eXBlCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6cmZpbmQoIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IHN0ciApIGNvbnN0Ci17Ci0gICAgaWYoIHN0ci5pc19lbXB0eSgpIHx8IHN0ci5zaXplKCkgPiBzaXplKCkgKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihucG9zKTsKLQotICAgIGNvbnN0X2l0ZXJhdG9yIGl0ICAgPSBlbmQoKSAtIHN0ci5zaXplKCk7Ci0gICAgY29uc3RfaXRlcmF0b3IgbGFzdCA9IGJlZ2luKCktMTsKLQotICAgIHdoaWxlKCBpdCAhPSBsYXN0ICkgewotICAgICAgICBpZiggdHJhaXRzX3R5cGU6OmNvbXBhcmUoIGl0LCBzdHIuYmVnaW4oKSwgc3RyLnNpemUoKSApID09IDAgKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLS1pdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gaXQgPT0gbGFzdCA/IHN0YXRpY19jYXN0PHNpemVfdHlwZT4obnBvcykgOiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KGl0IC0gYmVnaW4oKSk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ci1iYXNpY19jc3RyaW5nPENoYXJUPjo6c3Vic3RyKCBzaXplX3R5cGUgYmVnX2luZGV4LCBzaXplX3R5cGUgZW5kX2luZGV4ICkgY29uc3QKLXsKLSAgICByZXR1cm4gYmVnX2luZGV4ID4gc2l6ZSgpCi0gICAgICAgICAgICA/ICAgICAgIHNlbGZfdHlwZSgpCi0gICAgICAgICAgICA6IGVuZF9pbmRleCA+IHNpemUoKQotICAgICAgICAgICAgICAgID8gICBzZWxmX3R5cGUoIG1fYmVnaW4gKyBiZWdfaW5kZXgsIG1fZW5kICkKLSAgICAgICAgICAgICAgICA6ICAgc2VsZl90eXBlKCBtX2JlZ2luICsgYmVnX2luZGV4LCBtX2JlZ2luICsgZW5kX2luZGV4ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ci1iYXNpY19jc3RyaW5nPENoYXJUPjo6ZGVmYXVsdF90cmltX2V4KCkKLXsKLSAgICBzdGF0aWMgQ2hhclQgd3NbM10gPSB7IENoYXJUKCcgJyksIENoYXJUKCdcdCcpLCBDaGFyVCgnXG4nKSB9OyAvLyAhISB3aWRlIGNhc2UKLQotICAgIHJldHVybiBzZWxmX3R5cGUoIHdzLCAzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBjb21wYXJpc29uIG9wZXJhdG9ycyAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQxLHR5cGVuYW1lIENoYXJUMj4KLWlubGluZSBib29sCi1vcGVyYXRvcj09KCBiYXNpY19jc3RyaW5nPENoYXJUMT4gY29uc3QmIHMxLCBiYXNpY19jc3RyaW5nPENoYXJUMj4gY29uc3QmIHMyICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQxPjo6dHJhaXRzX3R5cGUgdHJhaXRzX3R5cGU7Ci0gICAgcmV0dXJuIHMxLnNpemUoKSA9PSBzMi5zaXplKCkgJiYgCi0gICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6Y29tcGFyZSggczEuYmVnaW4oKSwgczIuYmVnaW4oKSwgczEuc2l6ZSgpICkgPT0gMDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQxLHR5cGVuYW1lIENoYXJUMj4KLWlubGluZSBib29sCi1vcGVyYXRvcj09KCBiYXNpY19jc3RyaW5nPENoYXJUMT4gY29uc3QmIHMxLCBDaGFyVDIqIHMyICkKLXsKLSNpZiAhZGVmaW5lZChfX0RNQ19fKQotICAgIHJldHVybiBzMSA9PSBiYXNpY19jc3RyaW5nPENoYXJUMj4oIHMyICk7Ci0jZWxzZQotICAgIHJldHVybiBzMSA9PSBiYXNpY19jc3RyaW5nPENoYXJUMiBjb25zdD4oIHMyICk7Ci0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3I9PSggYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMxLCB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6c3RkX3N0cmluZyBjb25zdCYgczIgKQotewotICAgIHJldHVybiBzMSA9PSBiYXNpY19jc3RyaW5nPENoYXJUPiggczIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQxLHR5cGVuYW1lIENoYXJUMj4KLWlubGluZSBib29sCi1vcGVyYXRvcj09KCBDaGFyVDEqIHMyLCBiYXNpY19jc3RyaW5nPENoYXJUMj4gY29uc3QmIHMxICkKLXsKLSAgICByZXR1cm4gczEgPT0gczI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yPT0oIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzdGRfc3RyaW5nIGNvbnN0JiBzMiwgYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMxICkKLXsKLSAgICByZXR1cm4gczEgPT0gczI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yIT0oIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzMSwgQ2hhclQqIHMyICkKLXsKLSAgICByZXR1cm4gIShzMSA9PSBzMik7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yIT0oIENoYXJUKiBzMiwgYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMxICkKLXsKLSAgICByZXR1cm4gIShzMSA9PSBzMik7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yIT0oIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzMSwgYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMyICkKLXsKLSAgICByZXR1cm4gIShzMSA9PSBzMik7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yIT0oIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzMSwgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnN0ZF9zdHJpbmcgY29uc3QmIHMyICkKLXsKLSAgICByZXR1cm4gIShzMSA9PSBzMik7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yIT0oIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzdGRfc3RyaW5nIGNvbnN0JiBzMiwgYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMxICkKLXsKLSAgICByZXR1cm4gIShzMSA9PSBzMik7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIGZpcnN0X2NoYXIgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnZhbHVlX3R5cGUKLWZpcnN0X2NoYXIoIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IHNvdXJjZSApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6dmFsdWVfdHlwZSBzdHJpbmdfdmFsdWVfdHlwZTsKLQotICAgIHJldHVybiBzb3VyY2UuaXNfZW1wdHkoKSA/IHN0YXRpY19jYXN0PHN0cmluZ192YWx1ZV90eXBlPigwKSA6ICpzb3VyY2UuYmVnaW4oKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgbGFzdF9jaGFyICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6dmFsdWVfdHlwZQotbGFzdF9jaGFyKCBiYXNpY19jc3RyaW5nPENoYXJUPiBzb3VyY2UgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnZhbHVlX3R5cGUgc3RyaW5nX3ZhbHVlX3R5cGU7Ci0KLSAgICByZXR1cm4gc291cmNlLmlzX2VtcHR5KCkgPyBzdGF0aWNfY2FzdDxzdHJpbmdfdmFsdWVfdHlwZT4oMCkgOiAqKHNvdXJjZS5lbmQoKS0xKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgYXNzaWduX29wICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVDEsIHR5cGVuYW1lIENoYXJUMj4KLWlubGluZSB2b2lkCi1hc3NpZ25fb3AoIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJUMT4mIHRhcmdldCwgYmFzaWNfY3N0cmluZzxDaGFyVDI+IHNyYywgaW50ICkKLXsKLSAgICB0YXJnZXQuYXNzaWduKCBzcmMuYmVnaW4oKSwgc3JjLnNpemUoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZ19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZ19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjlhZGIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmdfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogYmFzaWNfY3N0cmluZyBjbGFzcyB3cmFwIEMgc3RyaW5nIGFuZCBwcm92aWRlIHN0ZF9zdHJpbmcgbGlrZSAKLS8vICAgICAgICAgICAgICAgIGludGVyZmFjZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0ZXRF9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19GV0RfSFBQXzA3MTg5NEdFUgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+IGNsYXNzICAgICAgYmFzaWNfY3N0cmluZzsKLXR5cGVkZWYgYmFzaWNfY3N0cmluZzxjaGFyIGNvbnN0PiAgIGNvbnN0X3N0cmluZzsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fREVDQ1hYX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDYwNTkwMDQxKSkKLXR5cGVkZWYgY29uc3Rfc3RyaW5nICAgICAgICAgICAgICAgIGxpdGVyYWxfc3RyaW5nOwotI2Vsc2UKLXR5cGVkZWYgY29uc3Rfc3RyaW5nIGNvbnN0ICAgICAgICAgIGxpdGVyYWxfc3RyaW5nOwotI2VuZGlmCi0KLXR5cGVkZWYgY2hhciBjb25zdCogY29uc3QgICAgICAgICAgIGNfbGl0ZXJhbF9zdHJpbmc7Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0ZXRF9IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jjc19jaGFyX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iY3NfY2hhcl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWFmY2I1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jjc19jaGFyX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBnZW5lcmljIGNoYXIgdHJhaXRzIGNsYXNzOyB3cmFwcyBzdGQ6OmNoYXJfdHJhaXRzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0JDU19DSEFSX1RSQUlUU19IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQkNTX0NIQVJfVFJBSVRTX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHN0cmluZz4gICAgICAgICAgICAgICAgICAgICAgIC8vIHN0ZDo6Y2hhcl90cmFpdHMKLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgICAgICAgICAgICAvLyBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPiBzdHJ1Y3QgYmNzX2Jhc2VfY2hhciAgICAgICAgICAgeyB0eXBlZGVmIENoYXJUIHR5cGU7IH07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJjc19iYXNlX2NoYXI8Y2hhciBjb25zdD4gICAgICAgICAgICAgeyB0eXBlZGVmIGNoYXIgdHlwZTsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IGJjc19iYXNlX2NoYXI8dW5zaWduZWQgY2hhcj4gICAgICAgICAgeyB0eXBlZGVmIGNoYXIgdHlwZTsgfTsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU1MSkpCi10ZW1wbGF0ZTw+IHN0cnVjdCBiY3NfYmFzZV9jaGFyPHVuc2lnbmVkIGNoYXIgY29uc3Q+ICAgIHsgdHlwZWRlZiBjaGFyIHR5cGU7IH07Ci0jZW5kaWYKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYmNzX2Jhc2VfY2hhcjx3Y2hhcl90IGNvbnN0PiAgICAgICAgICB7IHR5cGVkZWYgd2NoYXJfdCB0eXBlOyB9OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBiY3NfY2hhcl90cmFpdHMgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotc3RydWN0IGJjc19jaGFyX3RyYWl0c19pbXBsCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpCi0gICAgdHlwZWRlZiBDaGFyVCBjb25zdCBjb25zdF9jaGFyOwotI2Vsc2UKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfY29uc3Q8Q2hhclQ+Ojp0eXBlIGNvbnN0X2NoYXI7Ci0jZW5kaWYKLSAgICBzdGF0aWMgYm9vbCBlcSggQ2hhclQgYzEsIENoYXJUIGMyICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjMSA9PSBjMjsKLSAgICB9Ci0gICAgc3RhdGljIGJvb2wgbHQoIENoYXJUIGMxLCBDaGFyVCBjMiApCi0gICAgewotICAgICAgICByZXR1cm4gYzEgPCBjMjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgaW50IGNvbXBhcmUoIGNvbnN0X2NoYXIqIGNzdHIxLCBjb25zdF9jaGFyKiBjc3RyMiwgc3RkOjpzaXplX3QgbiApCi0gICAgewotICAgICAgICB3aGlsZSggbiA+IDAgKSB7Ci0gICAgICAgICAgICBpZiggIWVxKCAqY3N0cjEsICpjc3RyMiApICkKLSAgICAgICAgICAgICAgICByZXR1cm4gbHQoICpjc3RyMSwgKmNzdHIyICkgPyAtMSA6IDE7Ci0gICAgICAgICAgICArK2NzdHIxOwotICAgICAgICAgICAgKytjc3RyMjsKLSAgICAgICAgICAgIC0tbjsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBsZW5ndGgoIGNvbnN0X2NoYXIqIGNzdHIgKQotICAgIHsKLSAgICAgICAgY29uc3RfY2hhciBudWxsX2NoYXIgPSBDaGFyVCgpOwotCi0gICAgICAgIGNvbnN0X2NoYXIqIHB0ciA9IGNzdHI7Ci0gICAgICAgIHdoaWxlKCAhZXEoICpwdHIsIG51bGxfY2hhciApICkKLSAgICAgICAgICAgICsrcHRyOwotCi0gICAgICAgIHJldHVybiBwdHIgLSBjc3RyOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdF9jaGFyKiBmaW5kKCBjb25zdF9jaGFyKiBzLCBzdGQ6OnNpemVfdCBuLCBDaGFyVCBjICkKLSAgICB7Ci0gICAgICAgIHdoaWxlKCBuID4gMCApIHsKLSAgICAgICAgICAgIGlmKCBlcSggKnMsIGMgKSApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHM7Ci0KLSAgICAgICAgICAgICsrczsKLSAgICAgICAgICAgIC0tbjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfQ0xBU1NJQ19JT1NUUkVBTVMKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotc3RydWN0IGNoYXJfdHJhaXRzX3dpdGhfZmluZCA6IHN0ZDo6c3RyaW5nX2NoYXJfdHJhaXRzPENoYXJUPiB7Ci0gICAgc3RhdGljIENoYXJUIGNvbnN0KiBmaW5kKCBDaGFyVCBjb25zdCogcywgc3RkOjpzaXplX3QgbiwgQ2hhclQgYyApCi0gICAgewotICAgICAgICB3aGlsZSggbiA+IDAgKSB7Ci0gICAgICAgICAgICBpZiggZXEoICpzLCBjICkgKQotICAgICAgICAgICAgICAgIHJldHVybiBzOwotCi0gICAgICAgICAgICArK3M7Ci0gICAgICAgICAgICAtLW47Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYmNzX2NoYXJfdHJhaXRzX2ltcGw8Y2hhcj4gOiBjaGFyX3RyYWl0c193aXRoX2ZpbmQ8Y2hhcj4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiY3NfY2hhcl90cmFpdHNfaW1wbDx3Y2hhcl90PiA6IGNoYXJfdHJhaXRzX3dpdGhfZmluZDx3Y2hhcl90PiB7fTsKLSNlbHNlCi10ZW1wbGF0ZTw+IHN0cnVjdCBiY3NfY2hhcl90cmFpdHNfaW1wbDxjaGFyPiA6IHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiY3NfY2hhcl90cmFpdHNfaW1wbDx3Y2hhcl90PiA6IHN0ZDo6Y2hhcl90cmFpdHM8d2NoYXJfdD4ge307Ci0jZW5kaWYKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1jbGFzcyBiY3NfY2hhcl90cmFpdHMgOiBwdWJsaWMgYmNzX2NoYXJfdHJhaXRzX2ltcGw8Q2hhclQ+IHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHV0X2RldGFpbDo6YmNzX2Jhc2VfY2hhcjxDaGFyVD46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVfYmFzZV9jaGFyOwotcHVibGljOgotI2lmZGVmIE5ETkJPT1NUX0NMQVNTSUNfSU9TVFJFQU1TCi0gICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzx0aGVfYmFzZV9jaGFyLCBzdGQ6OnN0cmluZ19jaGFyX3RyYWl0czx0aGVfYmFzZV9jaGFyPiA+ICAgc3RkX3N0cmluZzsKLSNlbHNlCi0gICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzx0aGVfYmFzZV9jaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPHRoZV9iYXNlX2NoYXI+ID4gICAgICAgICAgc3RkX3N0cmluZzsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQkNTX0NIQVJfVFJBSVRTX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2NvbXBhcmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4ODBjOGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjbGFzcyBiYXNpY19jc3RyaW5nIGNvbXBhcmlzb25zIGltcGxlbWVudGF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiAgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0NPTVBBUkVfSFBQXzA3MTg5NEdFUgotI2RlZmluZSAgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0NPTVBBUkVfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPGNjdHlwZT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTcwKQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6dG91cHBlcjsgfQotIyBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIGNhc2VfaW5zX2NvbXBhcmUgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8Y2xhc3MgQ2hhclQ+Ci1zdHJ1Y3QgY2FzZV9pbnMKLXsKLSAgICBzdGF0aWMgYm9vbCAgICAgICAgIGVxKCBDaGFyVCBjMSwgQ2hhclQgYzIgKSB7IHJldHVybiAoc3RkOjp0b3VwcGVyKSggYzEgKSA9PSAoc3RkOjp0b3VwcGVyKSggYzIgKTsgfQotICAgIHN0YXRpYyBib29sICAgICAgICAgbHQoIENoYXJUIGMxLCBDaGFyVCBjMiApIHsgcmV0dXJuIChzdGQ6OnRvdXBwZXIpKCBjMSApIDwgIChzdGQ6OnRvdXBwZXIpKCBjMiApOyB9Ci0KLSAgICBzdGF0aWMgaW50ICAgICAgICAgIGNvbXBhcmUoIENoYXJUIGNvbnN0KiBzMSwgQ2hhclQgY29uc3QqIHMyLCBzdGQ6OnNpemVfdCBuICkKLSAgICB7Ci0gICAgICAgIGZvciggc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kgKSB7Ci0gICAgICAgICAgICBpZiggIWVxKCBzMVtpXSwgczJbaV0gKSApCi0gICAgICAgICAgICAgICAgcmV0dXJuIGx0KCBzMVtpXSwgczJbaV0gKSA/IC0xIDogMTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgY2FzZV9pbnNfZXEgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyVD4KLWlubGluZSBib29sCi1jYXNlX2luc19lcSggYmFzaWNfY3N0cmluZzxDaGFyVD4geCwgYmFzaWNfY3N0cmluZzxDaGFyVD4geSApCi17Ci0gICAgcmV0dXJuIHguc2l6ZSgpID09IHkuc2l6ZSgpICYmIHV0X2RldGFpbDo6Y2FzZV9pbnM8Q2hhclQ+Ojpjb21wYXJlKCB4LmJlZ2luKCksIHkuYmVnaW4oKSwgeC5zaXplKCkgKSA9PSAwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIGNhc2VfaW5zX2xlc3MgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGNsYXNzIENoYXJUPgotY2xhc3MgY2FzZV9pbnNfbGVzcyA6IHB1YmxpYyBzdGQ6OmJpbmFyeV9mdW5jdGlvbjxiYXNpY19jc3RyaW5nPENoYXJUPixiYXNpY19jc3RyaW5nPENoYXJUPixib29sPgotewotcHVibGljOgotICAgIGJvb2wgb3BlcmF0b3IoKSggYmFzaWNfY3N0cmluZzxDaGFyVD4geCwgYmFzaWNfY3N0cmluZzxDaGFyVD4geSApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4geC5zaXplKCkgIT0geS5zaXplKCkgCi0gICAgICAgICAgICAgICAgPyB4LnNpemUoKSA8IHkuc2l6ZSgpIAotICAgICAgICAgICAgICAgIDogdXRfZGV0YWlsOjpjYXNlX2luczxDaGFyVD46OmNvbXBhcmUoIHguYmVnaW4oKSwgeS5iZWdpbigpLCB4LnNpemUoKSApIDwgMDsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBvcGVyYXRvciA8ICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGNsYXNzIENoYXJUPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yIDwoIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiB4LAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6YmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHkgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6YmFzaWNfY3N0cmluZzxDaGFyVD46OnRyYWl0c190eXBlIHRyYWl0c190eXBlOwotICAgIHJldHVybiB4LnNpemUoKSAhPSB5LnNpemUoKSAKLSAgICAgICAgICAgID8geC5zaXplKCkgPCB5LnNpemUoKSAKLSAgICAgICAgICAgIDogdHJhaXRzX3R5cGU6OmNvbXBhcmUoIHguYmVnaW4oKSwgeS5iZWdpbigpLCB4LnNpemUoKSApIDwgMDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0NPTVBBUkVfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWQ3NzBhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogYmFzaWNfY3N0cmluZyBpL28gaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmICBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfSU9fSFBQXzA3MTg5NEdFUgotI2RlZmluZSAgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0lPX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLSNpZmRlZiBORE5CT09TVF9DTEFTU0lDX0lPU1RSRUFNUwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0mCi1vcGVyYXRvcjw8KCBzdGQ6Om9zdHJlYW0mIG9zLCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgc3RyICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHV0X2RldGFpbDo6YmNzX2Jhc2VfY2hhcjxDaGFyVD46OnR5cGUgY2hhcl90eXBlOwotICAgIGNoYXJfdHlwZSBjb25zdCogY29uc3QgYmVnID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyX3R5cGUgY29uc3QqIGNvbnN0Piggc3RyLmJlZ2luKCkgKTsKLSAgICBjaGFyX3R5cGUgY29uc3QqIGNvbnN0IGVuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcl90eXBlIGNvbnN0KiBjb25zdD4oIHN0ci5lbmQoKSApOwotICAgIG9zIDw8IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZT4oIGJlZywgZW5kIC0gYmVnICk7Ci0KLSAgICByZXR1cm4gb3M7Ci19Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUMSwgdHlwZW5hbWUgVHIsdHlwZW5hbWUgQ2hhclQyPgotaW5saW5lIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVDEsVHI+Jgotb3BlcmF0b3I8PCggc3RkOjpiYXNpY19vc3RyZWFtPENoYXJUMSxUcj4mIG9zLCBiYXNpY19jc3RyaW5nPENoYXJUMj4gY29uc3QmIHN0ciApCi17Ci0gICAgQ2hhclQxIGNvbnN0KiBjb25zdCBiZWcgPSByZWludGVycHJldF9jYXN0PENoYXJUMSBjb25zdCo+KCBzdHIuYmVnaW4oKSApOyAvLyAhIQotICAgIENoYXJUMSBjb25zdCogY29uc3QgZW5kID0gcmVpbnRlcnByZXRfY2FzdDxDaGFyVDEgY29uc3QqPiggc3RyLmVuZCgpICk7Ci0gICAgb3MgPDwgc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQxLFRyPiggYmVnLCBlbmQgLSBiZWcgKTsKLQotICAgIHJldHVybiBvczsKLX0KLQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0lPX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmQ3ODZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0NBTExCQUNLXzAyMDUwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0NBTExCQUNLXzAyMDUwNUdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfSU5URUwsIDw9IDcwMCkKLSMgIGRlZmluZSBORE5CT09TVF9DQUxMQkFDS19FWFBMSUNJVF9DT1BZX0NPTlNUUlVDVE9SCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1zdHJ1Y3QgdW51c2VkIHt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSPgotc3RydWN0IGludm9rZXIgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgUiAgICAgICBpbnZva2UoIEZ1bmN0b3ImIGYgKSAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIGYoKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1lIFQxPgotICAgIFIgICAgICAgaW52b2tlKCBGdW5jdG9yJiBmLCBUMSB0MSApICAgICAgICAgICAgICAgICB7IHJldHVybiBmKCB0MSApOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIFIgICAgICAgaW52b2tlKCBGdW5jdG9yJiBmLCBUMSB0MSwgVDIgdDIgKSAgICAgICAgICB7IHJldHVybiBmKCB0MSwgdDIgKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gICAgUiAgICAgICBpbnZva2UoIEZ1bmN0b3ImIGYsIFQxIHQxLCBUMiB0MiwgVDMgdDMgKSAgIHsgcmV0dXJuIGYoIHQxLCB0MiwgdDMgKTsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IGludm9rZXI8dW51c2VkPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB1bnVzZWQgIGludm9rZSggRnVuY3RvciYgZiApICAgICAgICAgICAgICAgICAgICAgICAgeyBmKCk7IHJldHVybiB1bnVzZWQoKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1lIFQxPgotICAgIHVudXNlZCAgaW52b2tlKCBGdW5jdG9yJiBmLCBUMSB0MSApICAgICAgICAgICAgICAgICB7IGYoIHQxICk7IHJldHVybiB1bnVzZWQoKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICB1bnVzZWQgIGludm9rZSggRnVuY3RvciYgZiwgVDEgdDEsIFQyIHQyICkgICAgICAgICAgeyBmKCB0MSwgdDIgKTsgcmV0dXJuIHVudXNlZCgpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICB1bnVzZWQgIGludm9rZSggRnVuY3RvciYgZiwgVDEgdDEsIFQyIHQyLCBUMyB0MyApICAgeyBmKCB0MSwgdDIsIHQzICk7IHJldHVybiB1bnVzZWQoKTsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICB1bml0X3Rlc3Q6OmNhbGxiYWNrMCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgY2FsbGJhY2swX2ltcGwgewotICAgIHZpcnR1YWwgfmNhbGxiYWNrMF9pbXBsKCkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoKSA9IDA7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGdW5jdG9yPgotc3RydWN0IGNhbGxiYWNrMF9pbXBsX3QgOiBjYWxsYmFjazBfaW1wbDxSPiB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCBjYWxsYmFjazBfaW1wbF90KCBGdW5jdG9yIGYgKSA6IG1fZiggZiApIHt9Ci0KLSAgICB2aXJ0dWFsIFIgaW52b2tlKCkgeyByZXR1cm4gaW52b2tlcjxSPigpLmludm9rZSggbV9mICk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBGdW5jdG9yIG1fZjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSID0gdXRfZGV0YWlsOjp1bnVzZWQ+Ci1jbGFzcyBjYWxsYmFjazAgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGNhbGxiYWNrMCgpIHt9Ci0jaWZkZWYgTkROQk9PU1RfQ0FMTEJBQ0tfRVhQTElDSVRfQ09QWV9DT05TVFJVQ1RPUgotICAgIGNhbGxiYWNrMCggY2FsbGJhY2swIGNvbnN0JiByaHMgKSA6IG1faW1wbCggcmhzLm1faW1wbCApIHt9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgY2FsbGJhY2swKCBGdW5jdG9yIGYgKQotICAgIDogbV9pbXBsKCBuZXcgdXRfZGV0YWlsOjpjYWxsYmFjazBfaW1wbF90PFIsRnVuY3Rvcj4oIGYgKSApIHt9Ci0gICAgCi0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBjYWxsYmFjazAgY29uc3QmIHJocyApIHsgbV9pbXBsID0gcmhzLm1faW1wbDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIEZ1bmN0b3IgZiApIHsgbV9pbXBsLnJlc2V0KCBuZXcgdXRfZGV0YWlsOjpjYWxsYmFjazBfaW1wbF90PFIsRnVuY3Rvcj4oIGYgKSApOyAgfQotCi0gICAgUiAgICAgICAgICAgb3BlcmF0b3IoKSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+aW52b2tlKCk7IH0KLQotICAgIGJvb2wgICAgICAgIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjx1dF9kZXRhaWw6OmNhbGxiYWNrMF9pbXBsPFI+ID4gbV9pbXBsOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHVuaXRfdGVzdDo6Y2FsbGJhY2sxICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDE+Ci1zdHJ1Y3QgY2FsbGJhY2sxX2ltcGwgewotICAgIHZpcnR1YWwgfmNhbGxiYWNrMV9pbXBsKCkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoIFQxIHQxICkgPSAwOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsdHlwZW5hbWUgRnVuY3Rvcj4KLXN0cnVjdCBjYWxsYmFjazFfaW1wbF90IDogY2FsbGJhY2sxX2ltcGw8UixUMT4gewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgY2FsbGJhY2sxX2ltcGxfdCggRnVuY3RvciBmICkgOiBtX2YoIGYgKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSggVDEgdDEgKSB7IHJldHVybiBpbnZva2VyPFI+KCkuaW52b2tlKCBtX2YsIHQxICk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBGdW5jdG9yIG1fZjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSx0eXBlbmFtZSBSID0gdXRfZGV0YWlsOjp1bnVzZWQ+Ci1jbGFzcyBjYWxsYmFjazEgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGNhbGxiYWNrMSgpIHt9Ci0jaWZkZWYgTkROQk9PU1RfQ0FMTEJBQ0tfRVhQTElDSVRfQ09QWV9DT05TVFJVQ1RPUgotICAgIGNhbGxiYWNrMSggY2FsbGJhY2sxIGNvbnN0JiByaHMgKSA6IG1faW1wbCggcmhzLm1faW1wbCApIHt9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgY2FsbGJhY2sxKCBGdW5jdG9yIGYgKQotICAgIDogbV9pbXBsKCBuZXcgdXRfZGV0YWlsOjpjYWxsYmFjazFfaW1wbF90PFIsVDEsRnVuY3Rvcj4oIGYgKSApIHt9Ci0KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIGNhbGxiYWNrMSBjb25zdCYgcmhzICkgeyBtX2ltcGwgPSByaHMubV9pbXBsOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggRnVuY3RvciBmICkgeyBtX2ltcGwucmVzZXQoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrMV9pbXBsX3Q8UixUMSxGdW5jdG9yPiggZiApICk7ICB9Ci0KLSAgICBSICAgICAgICAgICBvcGVyYXRvcigpKCBUMSB0MSApIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+aW52b2tlKCB0MSApOyB9Ci0KLSAgICBib29sICAgICAgICBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8dXRfZGV0YWlsOjpjYWxsYmFjazFfaW1wbDxSLFQxPiA+IG1faW1wbDsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICB1bml0X3Rlc3Q6OmNhbGxiYWNrMiAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLHR5cGVuYW1lIFQyPgotc3RydWN0IGNhbGxiYWNrMl9pbXBsIHsKLSAgICB2aXJ0dWFsIH5jYWxsYmFjazJfaW1wbCgpIHt9Ci0KLSAgICB2aXJ0dWFsIFIgaW52b2tlKCBUMSB0MSwgVDIgdDIgKSA9IDA7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIEZ1bmN0b3I+Ci1zdHJ1Y3QgY2FsbGJhY2syX2ltcGxfdCA6IGNhbGxiYWNrMl9pbXBsPFIsVDEsVDI+IHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0IGNhbGxiYWNrMl9pbXBsX3QoIEZ1bmN0b3IgZiApIDogbV9mKCBmICkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoIFQxIHQxLCBUMiB0MiApIHsgcmV0dXJuIGludm9rZXI8Uj4oKS50ZW1wbGF0ZSBpbnZva2U8RnVuY3RvcixUMSxUMj4oIG1fZiwgdDEsIHQyICk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBGdW5jdG9yIG1fZjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSx0eXBlbmFtZSBUMiwgdHlwZW5hbWUgUiA9IHV0X2RldGFpbDo6dW51c2VkPgotY2xhc3MgY2FsbGJhY2syIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBjYWxsYmFjazIoKSB7fQotI2lmZGVmIE5ETkJPT1NUX0NBTExCQUNLX0VYUExJQ0lUX0NPUFlfQ09OU1RSVUNUT1IKLSAgICBjYWxsYmFjazIoIGNhbGxiYWNrMiBjb25zdCYgcmhzICkgOiBtX2ltcGwoIHJocy5tX2ltcGwgKSB7fQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgICAgICAgICAgIGNhbGxiYWNrMiggRnVuY3RvciBmICkgOiBtX2ltcGwoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrMl9pbXBsX3Q8UixUMSxUMixGdW5jdG9yPiggZiApICkge30KLQotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggY2FsbGJhY2syIGNvbnN0JiByaHMgKSB7IG1faW1wbCA9IHJocy5tX2ltcGw7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBGdW5jdG9yIGYgKSB7IG1faW1wbC5yZXNldCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2syX2ltcGxfdDxSLFQxLFQyLEZ1bmN0b3I+KCBmICkgKTsgIH0KLQotICAgIFIgICAgICAgICAgIG9wZXJhdG9yKCkoIFQxIHQxLCBUMiB0MiApIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+aW52b2tlKCB0MSwgdDIgKTsgfQotCi0gICAgYm9vbCAgICAgICAgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPHV0X2RldGFpbDo6Y2FsbGJhY2syX2ltcGw8UixUMSxUMj4gPiBtX2ltcGw7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgdW5pdF90ZXN0OjpjYWxsYmFjazMgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotc3RydWN0IGNhbGxiYWNrM19pbXBsIHsKLSAgICB2aXJ0dWFsIH5jYWxsYmFjazNfaW1wbCgpIHt9Ci0KLSAgICB2aXJ0dWFsIFIgaW52b2tlKCBUMSB0MSwgVDIgdDIsIFQzIHQzICkgPSAwOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgRnVuY3Rvcj4KLXN0cnVjdCBjYWxsYmFjazNfaW1wbF90IDogY2FsbGJhY2szX2ltcGw8UixUMSxUMixUMz4gewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgY2FsbGJhY2szX2ltcGxfdCggRnVuY3RvciBmICkgOiBtX2YoIGYgKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSggVDEgdDEsIFQyIHQyLCBUMyB0MyApIHsgcmV0dXJuIGludm9rZXI8Uj4oKS5pbnZva2UoIG1fZiwgdDEsIHQyLCB0MyApOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgRnVuY3RvciBtX2Y7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotdGVtcGxhdGU8dHlwZW5hbWUgVDEsdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBSID0gdXRfZGV0YWlsOjp1bnVzZWQ+Ci1jbGFzcyBjYWxsYmFjazMgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGNhbGxiYWNrMygpIHt9Ci0jaWZkZWYgTkROQk9PU1RfQ0FMTEJBQ0tfRVhQTElDSVRfQ09QWV9DT05TVFJVQ1RPUgotICAgIGNhbGxiYWNrMyggY2FsbGJhY2szIGNvbnN0JiByaHMgKSA6IG1faW1wbCggcmhzLm1faW1wbCApIHt9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgY2FsbGJhY2szKCBGdW5jdG9yIGYgKQotICAgIDogbV9pbXBsKCBuZXcgdXRfZGV0YWlsOjpjYWxsYmFjazNfaW1wbF90PFIsVDEsVDIsVDMsRnVuY3Rvcj4oIGYgKSApIHt9Ci0KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIGNhbGxiYWNrMyBjb25zdCYgcmhzICkgeyBtX2ltcGwgPSByaHMubV9pbXBsOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggRnVuY3RvciBmICkgeyBtX2ltcGwucmVzZXQoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrM19pbXBsX3Q8UixUMSxUMixUMyxGdW5jdG9yPiggZiApICk7ICB9Ci0KLSAgICBSICAgICAgICAgICBvcGVyYXRvcigpKCBUMSB0MSwgVDIgdDIsIFQzIHQzICkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pbnZva2UoIHQxLCB0MiwgdDMgKTsgfQotCi0gICAgYm9vbCAgICAgICAgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPHV0X2RldGFpbDo6Y2FsbGJhY2szX2ltcGw8UixUMSxUMixUMz4gPiBtX2ltcGw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI3VuZGVmIE5ETkJPT1NUX0NBTExCQUNLX0VYUExJQ0lUX0NPUFlfQ09OU1RSVUNUT1IKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0NBTExCQUNLXzAyMDUwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWVhOTk4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNpbXBsZSBmYWNpbGl0eSB0aGF0IG1pbW1pYyBub3Rpb24gb2YgcmVhZC1vbmx5IHJlYWQtd3JpdGUgCi0vLyAgcHJvcGVydGllcyBpbiBDKysgY2xhc3Nlcy4gT3JpZ2luYWwgaWRlYSBieSBIZW5yaWsgUmF2bi4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ0xBU1NfUFJPUEVSVElFU19IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0xBU1NfUFJPUEVSVElFU19IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotCi0vLyBCb29zdAotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2guaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvY2FsbF90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBjbGFzc19wcm9wZXJ0eSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTxjbGFzcyBQcm9wZXJ0eVR5cGU+Ci1jbGFzcyBjbGFzc19wcm9wZXJ0eSB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYWxsX3RyYWl0czxQcm9wZXJ0eVR5cGU+Ojpjb25zdF9yZWZlcmVuY2UgICAgIHJlYWRfYWNjZXNzX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYWxsX3RyYWl0czxQcm9wZXJ0eVR5cGU+OjpwYXJhbV90eXBlICAgICAgICAgIHdyaXRlX3BhcmFtX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcG9pbnRlcjx0eXBlbmFtZSBhZGRfY29uc3Q8UHJvcGVydHlUeXBlPjo6dHlwZT46OnR5cGUgYWRkcmVzc19yZXNfdDsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgICAgICAgICAgICAgICAgICBjbGFzc19wcm9wZXJ0eSgpIDogdmFsdWUoIFByb3BlcnR5VHlwZSgpICkge30KLSAgICBleHBsaWNpdCAgICAgICAgY2xhc3NfcHJvcGVydHkoIHdyaXRlX3BhcmFtX3QgaW5pdF92YWx1ZSApCi0gICAgOiB2YWx1ZSggaW5pdF92YWx1ZSApIHt9Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIG9wZXJhdG9yICAgICAgICByZWFkX2FjY2Vzc190KCkgY29uc3QgICB7IHJldHVybiB2YWx1ZTsgfQotICAgIHJlYWRfYWNjZXNzX3QgICBnZXQoKSBjb25zdCAgICAgICAgICAgICB7IHJldHVybiB2YWx1ZTsgfQotICAgIGJvb2wgICAgICAgICAgICBvcGVyYXRvciEoKSBjb25zdCAgICAgICB7IHJldHVybiAhdmFsdWU7IH0KLSAgICBhZGRyZXNzX3Jlc190ICAgb3BlcmF0b3ImKCkgY29uc3QgICAgICAgeyByZXR1cm4gJnZhbHVlOyB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9OT19QUk9URUNURURfVVNJTkcKLXByb3RlY3RlZDoKLSNlbmRpZgotICAgIFByb3BlcnR5VHlwZSAgICAgICAgdmFsdWU7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWZkZWYgTkROQk9PU1RfQ0xBU1NJQ19JT1NUUkVBTVMKLQotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPgotaW5saW5lIHN0ZDo6b3N0cmVhbSYKLW9wZXJhdG9yPDwoIHN0ZDo6b3N0cmVhbSYgb3MsIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gY29uc3QmIHAgKQotCi0jZWxzZQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVDEsIHR5cGVuYW1lIFRyLGNsYXNzIFByb3BlcnR5VHlwZT4KLWlubGluZSBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQxLFRyPiYKLW9wZXJhdG9yPDwoIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVDEsVHI+JiBvcywgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgcCApCi0KLSNlbmRpZgotewotICAgIHJldHVybiBvcyA8PCBwLmdldCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIERFRklORV9QUk9QRVJUWV9GUkVFX0JJTkFSWV9PUEVSQVRPUiggb3AgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggUHJvcGVydHlUeXBlIGNvbnN0JiBsaHMsIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gY29uc3QmIHJocyApIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiBsaHMgb3AgcmhzLmdldCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgbGhzLCBQcm9wZXJ0eVR5cGUgY29uc3QmIHJocyApIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiBsaHMuZ2V0KCkgb3AgcmhzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgbGhzLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiByaHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIGxocy5nZXQoKSBvcCByaHMuZ2V0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi1ERUZJTkVfUFJPUEVSVFlfRlJFRV9CSU5BUllfT1BFUkFUT1IoID09ICkKLURFRklORV9QUk9QRVJUWV9GUkVFX0JJTkFSWV9PUEVSQVRPUiggIT0gKQotCi0jdW5kZWYgREVGSU5FX1BST1BFUlRZX0ZSRUVfQklOQVJZX09QRVJBVE9SCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLQotI2RlZmluZSBERUZJTkVfUFJPUEVSVFlfTE9HSUNBTF9PUEVSQVRPUiggb3AgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBQcm9wZXJ0eVR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIGJvb2wgYiwgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgcCApICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gYiBvcCBwLmdldCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBQcm9wZXJ0eVR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gY29uc3QmIHAsIGJvb2wgYiApICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gYiBvcCBwLmdldCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLURFRklORV9QUk9QRVJUWV9MT0dJQ0FMX09QRVJBVE9SKCAmJiApCi1ERUZJTkVfUFJPUEVSVFlfTE9HSUNBTF9PUEVSQVRPUiggfHwgKQotCi0jZW5kaWYKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgcmVhZG9ubHlfcHJvcGVydHkgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTxjbGFzcyBQcm9wZXJ0eVR5cGU+Ci1jbGFzcyByZWFkb25seV9wcm9wZXJ0eSA6IHB1YmxpYyBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IHsKLSAgICB0eXBlZGVmIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gICAgICAgICBiYXNlX3Byb3A7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3Byb3A6OmFkZHJlc3NfcmVzX3QgICAgYXJyb3dfcmVzX3Q7Ci1wcm90ZWN0ZWQ6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3Byb3A6OndyaXRlX3BhcmFtX3QgICAgd3JpdGVfcGFyYW1fdDsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgICAgICAgICAgICAgICAgICByZWFkb25seV9wcm9wZXJ0eSgpIHt9Ci0gICAgZXhwbGljaXQgICAgICAgIHJlYWRvbmx5X3Byb3BlcnR5KCB3cml0ZV9wYXJhbV90IGluaXRfdmFsdWUgKSA6IGJhc2VfcHJvcCggaW5pdF92YWx1ZSApIHt9Ci0KLSAgICAvLyBhY2Nlc3MgbWV0aG9kcwotICAgIGFycm93X3Jlc190ICAgICBvcGVyYXRvci0+KCkgY29uc3QgICAgICB7IHJldHVybiBuZG5ib29zdDo6YWRkcmVzc29mKCBiYXNlX3Byb3A6OnZhbHVlICk7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZKCBwcm9wZXJ0eV90eXBlLCBmcmllbmRzICkgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PHByb3BlcnR5X3R5cGUgPgotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZX0RFQ0xBUkVfRlJJRU5EKHIsIGRhdGEsIGVsZW0pIGZyaWVuZCBjbGFzcyBlbGVtOwotCi0jZGVmaW5lIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZKCBwcm9wZXJ0eV90eXBlLCBmcmllbmRzICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1jbGFzcyBORE5CT09TVF9KT0lOKCByZWFkb25seV9wcm9wZXJ0eSwgX19MSU5FX18gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi06IHB1YmxpYyBuZG5ib29zdDo6dW5pdF90ZXN0OjpyZWFkb25seV9wcm9wZXJ0eTxwcm9wZXJ0eV90eXBlID4geyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6dW5pdF90ZXN0OjpyZWFkb25seV9wcm9wZXJ0eTxwcm9wZXJ0eV90eXBlID4gYmFzZV9wcm9wOyAgICAgICAgICBcCi0gICAgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIKCBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWV9ERUNMQVJFX0ZSSUVORCwgJyAnLCBmcmllbmRzICkgICBcCi0gICAgdHlwZWRlZiBiYXNlX3Byb3A6OndyaXRlX3BhcmFtX3QgIHdyaXRlX3BhcmFtX3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfSk9JTiggcmVhZG9ubHlfcHJvcGVydHksIF9fTElORV9fICkoKSB7fSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZXhwbGljaXQgICAgTkROQk9PU1RfSk9JTiggcmVhZG9ubHlfcHJvcGVydHksIF9fTElORV9fICkoIHdyaXRlX3BhcmFtX3QgaW5pdF92ICApICBcCi0gICAgOiBiYXNlX3Byb3AoIGluaXRfdiApIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNlbmRpZgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHJlYWR3cml0ZV9wcm9wZXJ0eSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4KLWNsYXNzIHJlYWR3cml0ZV9wcm9wZXJ0eSA6IHB1YmxpYyBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IHsKLSAgICB0eXBlZGVmIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gICAgICAgICAgICAgICAgYmFzZV9wcm9wOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3BvaW50ZXI8UHJvcGVydHlUeXBlPjo6dHlwZSAgICBhcnJvd19yZXNfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfcHJvcDo6YWRkcmVzc19yZXNfdCAgICAgICAgICAgY29uc3RfYXJyb3dfcmVzX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3Byb3A6OndyaXRlX3BhcmFtX3QgICAgICAgICAgIHdyaXRlX3BhcmFtX3Q7Ci1wdWJsaWM6Ci0gICAgICAgICAgICAgICAgICAgIHJlYWR3cml0ZV9wcm9wZXJ0eSgpIDogYmFzZV9wcm9wKCkge30KLSAgICBleHBsaWNpdCAgICAgICAgcmVhZHdyaXRlX3Byb3BlcnR5KCB3cml0ZV9wYXJhbV90IGluaXRfdmFsdWUgKSA6IGJhc2VfcHJvcCggaW5pdF92YWx1ZSApIHt9Ci0KLSAgICAvLyBhY2Nlc3MgbWV0aG9kcwotICAgIHZvaWQgICAgICAgICAgICBzZXQoIHdyaXRlX3BhcmFtX3QgdiApICB7IGJhc2VfcHJvcDo6dmFsdWUgPSB2OyB9Ci0gICAgYXJyb3dfcmVzX3QgICAgIG9wZXJhdG9yLT4oKSAgICAgICAgICAgIHsgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YoIGJhc2VfcHJvcDo6dmFsdWUgKTsgfQotICAgIGNvbnN0X2Fycm93X3Jlc190IG9wZXJhdG9yLT4oKSBjb25zdCAgICB7IHJldHVybiBuZG5ib29zdDo6YWRkcmVzc29mKCBiYXNlX3Byb3A6OnZhbHVlICk7IH0KLQotI2lmbmRlZiBORE5CT09TVF9URVNUX05PX1BST1RFQ1RFRF9VU0lORwotICAgIHVzaW5nICAgICAgICAgICBiYXNlX3Byb3A6OnZhbHVlOwotI2VuZGlmCi19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RFU1RfTk9fUFJPVEVDVEVEX1VTSU5HCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0NMQVNTX1BST1BFUlRJRVNfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2N1c3RvbV9tYW5pcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY3VzdG9tX21hbmlwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY1ZGRjNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY3VzdG9tX21hbmlwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc2ltcGxlIGhlbHBlcnMgZm9yIGNyZWF0aW5nIGN1c29tIG91dHB1dCBtYW5pcHVsYXRvcnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ1VTVE9NX01BTklQX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DVVNUT01fTUFOSVBfSFBQXzA3MTg5NEdFUgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgY3VzdG9tIG1hbmlwdWxhdG9ycyBoZWxwZXJzICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE1hbmlwPgotc3RydWN0IGN1c3RvbV9wcmludGVyIHsKLSAgICBleHBsaWNpdCBjdXN0b21fcHJpbnRlciggc3RkOjpvc3RyZWFtJiBvc3RyICkgOiBtX29zdHIoICZvc3RyICkge30KLQotICAgIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKm1fb3N0cjsgfQotCi1wcml2YXRlOgotICAgIHN0ZDo6b3N0cmVhbSogY29uc3QgbV9vc3RyOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVW5pcT4gc3RydWN0IGN1c3RvbV9tYW5pcCB7fTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVW5pcT4KLWlubGluZSBjdXN0b21fcHJpbnRlcjxjdXN0b21fbWFuaXA8VW5pcT4gPgotb3BlcmF0b3I8PCggc3RkOjpvc3RyZWFtJiBvc3RyLCBjdXN0b21fbWFuaXA8VW5pcT4gY29uc3QmICkgeyByZXR1cm4gY3VzdG9tX3ByaW50ZXI8Y3VzdG9tX21hbmlwPFVuaXE+ID4oIG9zdHIgKTsgfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0NVU1RPTV9NQU5JUF9IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvZml4ZWRfbWFwcGluZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvZml4ZWRfbWFwcGluZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YWIzMGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2ZpeGVkX21hcHBpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZml4ZWQgc2l6ZWQgbWFwcGluZyB3aXRoIHNwZWNpZmllZCBpbnZhbGlkIHZhbHVlCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0ZJWEVEX01BUFBJTkdfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0ZJWEVEX01BUFBJTkdfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jYWxsX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2JpbmFyeV9zZWFyY2guaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vIGNvbmZpZ3VyYWJsZSBtYXhpbXVtIGZpeGVkIHNpemVkIG1hcHBpbmcgc2l6ZSBzdXBwb3J0ZWQgYnkgdGhpcyBoZWFkZXIuCi0vLyBZb3UgY2FuIHJlZGVmaW5lIGl0IGJlZm9yZSBpbmNsdXNpb24gb2YgdGhpcyBmaWxlLgotI2lmbmRlZiBNQVhfTUFQX1NJWkUKLSNkZWZpbmUgTUFYX01BUF9TSVpFIDIwCi0jZW5kaWYKLQotI2RlZmluZSBDT05TVFJfREVDTF9NSUQoIHosIGksIGR1bW15MSApIGtleV9wYXJhbV90eXBlIGtleSMjaSwgdmFsdWVfcGFyYW1fdHlwZSB2IyNpLAotI2RlZmluZSBDT05TVFJfQk9EWV9NSUQoIHosIGksIGR1bW15MSApIGFkZF9wYWlyKCBrZXkjI2ksIHYjI2kgKTsKLQotI2RlZmluZSBDT05TVFJfREVDTCggeiwgbiwgZHVtbXkxICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZml4ZWRfbWFwcGluZyggTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KCBuLCBDT05TVFJfREVDTF9NSUQsICIiICkgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9wYXJhbV90eXBlIGludmFsaWRfdmFsdWUgKSAgICAgICAgICAgXAotICAgIDogbV9pbnZhbGlkX3ZhbHVlKCBpbnZhbGlkX3ZhbHVlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KCBuLCBDT05TVFJfQk9EWV9NSUQsICIiICkgICAgICAgICAgICAgXAotICAgICAgICBpbml0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBDT05UUlVDVE9SUyggbiApIE5ETkJPT1NUX1BQX1JFUEVBVCggbiwgQ09OU1RSX0RFQ0wsICIiICkKLQotdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgQ29tcGFyZSA9IHN0ZDo6bGVzczxLZXk+ID4KLWNsYXNzIGZpeGVkX21hcHBpbmcKLXsKLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxLZXksVmFsdWU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1fdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPGVsZW1fdHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjp2ZWN0b3I8ZWxlbV90eXBlPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzPEtleT46OnBhcmFtX3R5cGUgICAgICAgICAgIGtleV9wYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHM8VmFsdWU+OjpwYXJhbV90eXBlICAgICAgICAgdmFsdWVfcGFyYW1fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzPFZhbHVlPjo6Y29uc3RfcmVmZXJlbmNlICAgIHZhbHVlX3JlZl90eXBlOwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0RFQ0NYWF9WRVIsIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDU5MDA0MikpCi0gICAgc3RydWN0IHAxOyBmcmllbmQgc3RydWN0IHAxOwotICAgIHN0cnVjdCBwMjsgZnJpZW5kIHN0cnVjdCBwMjsKLSNlbmRpZgotCi0gICAgLy8gYmluZCggQ29tcGFyZSgpLCBiaW5kKHNlbGVjdDFzdDxlbGVtX3R5cGU+KCksIF8xKSwgIGJpbmQoaWRlbnRpdHk8S2V5PigpLCBfMikgKQotICAgIHN0cnVjdCBwMSA6IHB1YmxpYyBzdGQ6OmJpbmFyeV9mdW5jdGlvbjxlbGVtX3R5cGUsS2V5LGJvb2w+Ci0gICAgewotICAgICAgICBib29sIG9wZXJhdG9yKCkoIGVsZW1fdHlwZSBjb25zdCYgeCwgS2V5IGNvbnN0JiB5ICkgY29uc3QgeyByZXR1cm4gQ29tcGFyZSgpKCB4LmZpcnN0LCB5ICk7IH0KLSAgICB9OwotCi0gICAgLy8gYmluZCggQ29tcGFyZSgpLCBiaW5kKHNlbGVjdDFzdDxlbGVtX3R5cGU+KCksIF8xKSwgYmluZChzZWxlY3Qxc3Q8ZWxlbV90eXBlPigpLCBfMikgKQotICAgIHN0cnVjdCBwMiA6IHB1YmxpYyBzdGQ6OmJpbmFyeV9mdW5jdGlvbjxlbGVtX3R5cGUsZWxlbV90eXBlLGJvb2w+Ci0gICAgewotICAgICAgICBib29sIG9wZXJhdG9yKCkoIGVsZW1fdHlwZSBjb25zdCYgeCwgZWxlbV90eXBlIGNvbnN0JiB5ICkgY29uc3QgeyByZXR1cm4gQ29tcGFyZSgpKCB4LmZpcnN0LCB5LmZpcnN0ICk7IH0KLSAgICB9OwotCi1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgQ09OVFJVQ1RPUlMoIE5ETkJPT1NUX1BQX0FERCggTUFYX01BUF9TSVpFLCAxICkgKQotCi0gICAgLy8ga2V5IC0+IHZhbHVlIGFjY2VzcwotICAgIHZhbHVlX3JlZl90eXBlICBvcGVyYXRvcltdKCBrZXlfcGFyYW1fdHlwZSBrZXkgKSBjb25zdAotICAgIHsKLSAgICAgICAgaXRlcmF0b3IgaXQgPSBuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9ib3VuZCggbV9tYXAuYmVnaW4oKSwgbV9tYXAuZW5kKCksIGtleSwgcDEoKSApOwotCi0gICAgICAgIHJldHVybiAoaXQgPT0gbV9tYXAuZW5kKCkgfHwgQ29tcGFyZSgpKCBrZXksIGl0LT5maXJzdCApICkgPyBtX2ludmFsaWRfdmFsdWUgOiBpdC0+c2Vjb25kOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBJbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgICAgICAgICBpbml0KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RkOjpzb3J0KCBtX21hcC5iZWdpbigpLCBtX21hcC5lbmQoKSwgcDIoKSApOyB9Ci0gICAgdm9pZCAgICAgICAgICAgIGFkZF9wYWlyKCBrZXlfcGFyYW1fdHlwZSBrZXksIHZhbHVlX3BhcmFtX3R5cGUgdmFsdWUgKSAgeyBtX21hcC5wdXNoX2JhY2soIGVsZW1fdHlwZSgga2V5LCB2YWx1ZSApICk7IH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIFZhbHVlICAgICAgICAgICBtX2ludmFsaWRfdmFsdWU7Ci0gICAgbWFwX3R5cGUgICAgICAgIG1fbWFwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jdW5kZWYgTUFYX01BUF9TSVpFCi0jdW5kZWYgQ09OU1RSX0RFQ0xfTUlECi0jdW5kZWYgQ09OU1RSX0JPRFlfTUlECi0jdW5kZWYgQ09OU1RSX0RFQ0wKLSN1bmRlZiBDT05UUlVDVE9SUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9GSVhFRF9NQVBQSU5HX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmMyMDI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9mb3JlYWNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBFcmljIE5pZWJsZXIgMjAwNC0yMDA1Ci0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogdGhpcyBpcyBhbiBhYnJpZGdlZCB2ZXJzaW9uIG9mIGFuIGV4Y2VsZW50IE5ETkJPT1NUX0ZPUkVBQ0ggZmFjaWxpdHkKLS8vICBwcmVzZW50ZWQgYnkgRXJpYyBOaWVibGVyLiBJIGFtIHNvIGZvbmQgb2YgaXQgc28gSSBjYW4ndCB3YWl0IHRpbGwgaXQgCi0vLyAgZ29pbmcgdG8gYmUgYWNjZXB0ZWQgaW50byBCb29zdC4gQWxzbyBJIG5lZWQgdmVyc2lvbiB3aXRoIGxlc3MgbnVtYmVyIG9mIGRlcGVuZGVuY2llcyAKLS8vICBhbmQgbW9yZSBwb3J0YWJsZS4gVGhpcyB2ZXJzaW9uIGRvZXNuJ3Qgc3VwcG9ydCBydmFsdWVzIGFuZCB3aWxsIHJlZXZlbHVhdGUgaXQncyAKLS8vICBwYXJhbWV0ZXJzLCBidXQgc2hvdWxkIGJlIGdvb2QgZW5vdWdoIGZvciBteSBwdXJwb3Nlcy4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRk9SRUFDSF9IUFBfMDIxMDA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRk9SRUFDSF9IUFBfMDIxMDA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBmb3JfZWFjaCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHN0YXRpY19hbnkgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IHN0YXRpY19hbnlfYmFzZQotewotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4KLXN0cnVjdCBzdGF0aWNfYW55IDogc3RhdGljX2FueV9iYXNlCi17Ci0gICAgc3RhdGljX2FueSggSXRlciBjb25zdCYgdCApIDogbV9pdCggdCApIHt9Ci0KLSAgICBtdXRhYmxlIEl0ZXIgbV9pdDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXR5cGVkZWYgc3RhdGljX2FueV9iYXNlIGNvbnN0JiBzdGF0aWNfYW55X3Q7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+Ci1pbmxpbmUgSXRlciYKLXN0YXRpY19hbnlfY2FzdCggc3RhdGljX2FueV90IGEsIEl0ZXIqID0gMCApCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZXImPiggc3RhdGljX2Nhc3Q8c3RhdGljX2FueTxJdGVyPiBjb25zdCY+KCBhICkubV9pdCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgaXNfY29uc3QgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgaXNfY29uc3Q8Qz4KLWlzX2NvbnN0X2NvbGwoIEMmICkKLXsKLSAgICByZXR1cm4gaXNfY29uc3Q8Qz4oKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgYmVnaW4gICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIHN0YXRpY19hbnk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvcj4KLWJlZ2luKCBDJiB0LCBtcGw6OmZhbHNlXyApCi17Ci0gICAgcmV0dXJuIHN0YXRpY19hbnk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvcj4oIHQuYmVnaW4oKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIHN0YXRpY19hbnk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpjb25zdF9pdGVyYXRvcj4KLWJlZ2luKCBDIGNvbnN0JiB0LCBtcGw6OnRydWVfICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPiggdC5iZWdpbigpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICBlbmQgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLWlubGluZSBzdGF0aWNfYW55PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3I+Ci1lbmQoIEMmIHQsIG1wbDo6ZmFsc2VfICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPiggdC5lbmQoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIHN0YXRpY19hbnk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpjb25zdF9pdGVyYXRvcj4KLWVuZCggQyBjb25zdCYgdCwgbXBsOjp0cnVlXyApCi17Ci0gICAgcmV0dXJuIHN0YXRpY19hbnk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpjb25zdF9pdGVyYXRvcj4oIHQuZW5kKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgIGRvbmUgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIGJvb2wKLWRvbmUoIHN0YXRpY19hbnlfdCBjdXIsIHN0YXRpY19hbnlfdCBlbmQsIEMmLCBtcGw6OmZhbHNlXyApCi17Ci0gICAgcmV0dXJuICBzdGF0aWNfYW55X2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvcj4oIGN1ciApID09Ci0gICAgICAgICAgICBzdGF0aWNfYW55X2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvcj4oIGVuZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIGJvb2wKLWRvbmUoIHN0YXRpY19hbnlfdCBjdXIsIHN0YXRpY19hbnlfdCBlbmQsIEMgY29uc3QmLCBtcGw6OnRydWVfICkKLXsKLSAgICByZXR1cm4gIHN0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPiggY3VyICkgPT0KLSAgICAgICAgICAgIHN0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPiggZW5kICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICBuZXh0ICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLWlubGluZSB2b2lkCi1uZXh0KCBzdGF0aWNfYW55X3QgY3VyLCBDJiwgbXBsOjpmYWxzZV8gKQotewotICAgICsrc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3I+KCBjdXIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLWlubGluZSB2b2lkCi1uZXh0KCBzdGF0aWNfYW55X3QgY3VyLCBDIGNvbnN0JiwgbXBsOjp0cnVlXyApCi17Ci0gICAgKytzdGF0aWNfYW55X2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpjb25zdF9pdGVyYXRvcj4oIGN1ciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgICAgZGVyZWYgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGNsYXNzIFJlZlR5cGUsdHlwZW5hbWUgQz4KLWlubGluZSBSZWZUeXBlCi1kZXJlZiggc3RhdGljX2FueV90IGN1ciwgQyYsIDo6bmRuYm9vc3Q6OnR5cGU8UmVmVHlwZT4sIG1wbDo6ZmFsc2VfICkKLXsKLSAgICByZXR1cm4gKnN0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPiggY3VyICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPGNsYXNzIFJlZlR5cGUsdHlwZW5hbWUgQz4KLWlubGluZSBSZWZUeXBlCi1kZXJlZiggc3RhdGljX2FueV90IGN1ciwgQyBjb25zdCYsIDo6bmRuYm9vc3Q6OnR5cGU8UmVmVHlwZT4sIG1wbDo6dHJ1ZV8gKQotewotICAgIHJldHVybiAqc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+KCBjdXIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0ggICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfQU5ZICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Zm9yX2VhY2g6OnN0YXRpY19hbnlfdAotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0lTX0NPTlNUKCBDT0wgKSAgICAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmZvcl9lYWNoOjppc19jb25zdF9jb2xsKCBDT0wgKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfQkVHKCBDT0wgKSAgICAgICAgICAgIFwKLSAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmZvcl9lYWNoOjpiZWdpbiggICAgXAotICAgICAgICBDT0wsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfSVNfQ09OU1QoIENPTCApICkgICAgIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0VORCggQ09MICkgICAgICAgICAgICBcCi0gICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpmb3JfZWFjaDo6ZW5kKCAgICAgIFwKLSAgICAgICAgQ09MLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0lTX0NPTlNUKCBDT0wgKSApICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9ET05FKCBDT0wgKSAgICAgICAgICAgXAotICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Zm9yX2VhY2g6OmRvbmUoICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfQ1VSX1ZBUiwgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9FTkRfVkFSLCAgICAgICAgICAgICAgXAotICAgICAgICBDT0wsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfSVNfQ09OU1QoIENPTCApICkgICAgIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX05FWFQoIENPTCApICAgICAgICAgICBcCi0gICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpmb3JfZWFjaDo6bmV4dCggICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9DVVJfVkFSLCAgICAgICAgICAgICAgXAotICAgICAgICBDT0wsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfSVNfQ09OU1QoIENPTCApICkgICAgIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9GT1JFQUNIX05PT1AoQ09MKSAgICAgICAgICAgICBcCi0gICAgKCh2b2lkKSYoQ09MKSkKLQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0RFUkVGKCBDT0wsIFJlZlR5cGUgKSBcCi0gICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpmb3JfZWFjaDo6ZGVyZWYoICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9DVVJfVkFSLCAgICAgICAgICAgICAgXAotICAgICAgICBDT0wsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGU8UmVmVHlwZSA+KCksICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9JU19DT05TVCggQ09MICkgKSAgICAgXAotLyoqLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPT0gMTMxMCApCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTElORV9OVU0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTElORV9OVU0gICAgIF9fTElORV9fCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0NVUl9WQVIgICBORE5CT09TVF9KT0lOKCBfZmVfY3VyXywgTkROQk9PU1RfVEVTVF9MSU5FX05VTSApCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfRU5EX1ZBUiAgIE5ETkJPT1NUX0pPSU4oIF9mZV9lbmRfLCBORE5CT09TVF9URVNUX0xJTkVfTlVNICkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9DT05fVkFSICAgTkROQk9PU1RfSk9JTiggX2ZlX2Nvbl8sIE5ETkJPT1NUX1RFU1RfTElORV9OVU0gKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggUmVmVHlwZSwgdmFyLCBDT0wgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlmKCBORE5CT09TVF9URVNUX0ZFX0FOWSBORE5CT09TVF9URVNUX0ZFX0NVUl9WQVIgPSBORE5CT09TVF9URVNUX0ZFX0JFRyggQ09MICkgKSB7fSBlbHNlICAgICAgICAgICAgXAotaWYoIE5ETkJPT1NUX1RFU1RfRkVfQU5ZIE5ETkJPT1NUX1RFU1RfRkVfRU5EX1ZBUiA9IE5ETkJPT1NUX1RFU1RfRkVfRU5EKCBDT0wgKSApIHt9IGVsc2UgICAgICAgICAgICBcCi1mb3IoIGJvb2wgTkROQk9PU1RfVEVTVF9GRV9DT05fVkFSID0gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICBORE5CT09TVF9URVNUX0ZFX0NPTl9WQVIgJiYgIU5ETkJPT1NUX1RFU1RfRkVfRE9ORSggQ09MICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfQ09OX1ZBUiA/IE5ETkJPT1NUX1RFU1RfRkVfTkVYVCggQ09MICkgOiBORE5CT09TVF9GT1JFQUNIX05PT1AoIENPTCApKSAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiggKE5ETkJPT1NUX1RFU1RfRkVfQ09OX1ZBUiA9IGZhbHNlLCBmYWxzZSkgKSB7fSBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZvciggUmVmVHlwZSB2YXIgPSBORE5CT09TVF9URVNUX0ZFX0RFUkVGKCBDT0wsIFJlZlR5cGUgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAhTkROQk9PU1RfVEVTVF9GRV9DT05fVkFSOyBORE5CT09TVF9URVNUX0ZFX0NPTl9WQVIgPSB0cnVlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZm9yX2VhY2gKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9GT1JFQUNIX0hQUF8wMjEwMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci9pbnB1dF9pdGVyYXRvcl9mYWNhZGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL2lucHV0X2l0ZXJhdG9yX2ZhY2FkZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NjNmY2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL2lucHV0X2l0ZXJhdG9yX2ZhY2FkZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBJbnB1dCBpdGVyYXRvciBmYWNhZGUgCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9JTlBVVF9JVEVSQVRPUl9GQUNBREVfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9JTlBVVF9JVEVSQVRPUl9GQUNBREVfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2ZhY2FkZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgaW5wdXRfaXRlcmF0b3JfY29yZV9hY2Nlc3MgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIGlucHV0X2l0ZXJhdG9yX2NvcmVfYWNjZXNzCi17Ci0jaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUykgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU1MSkpCi1wdWJsaWM6Ci0jZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBJLCBjbGFzcyBWLCBjbGFzcyBSLCBjbGFzcyBUQz4gZnJpZW5kIGNsYXNzIGlucHV0X2l0ZXJhdG9yX2ZhY2FkZTsKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZT4KLSAgICBzdGF0aWMgYm9vbCBnZXQoIEZhY2FkZSYgZiApCi0gICAgewotICAgICAgICByZXR1cm4gZi5nZXQoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gb2JqZWN0cyBvZiB0aGlzIGNsYXNzIGFyZSB1c2VsZXNzCi0gICAgaW5wdXRfaXRlcmF0b3JfY29yZV9hY2Nlc3MoKTsgLy91bmRlZmluZWQKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX2ZhY2FkZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZCwKLSAgICAgICAgIHR5cGVuYW1lIFZhbHVlVHlwZSwKLSAgICAgICAgIHR5cGVuYW1lIFJlZmVyZW5jZSA9IFZhbHVlVHlwZSBjb25zdCYsCi0gICAgICAgICB0eXBlbmFtZSBUcmF2ZXJzYWwgPSBzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnPgotY2xhc3MgaW5wdXRfaXRlcmF0b3JfZmFjYWRlIDogcHVibGljIGl0ZXJhdG9yX2ZhY2FkZTxEZXJpdmVkLFZhbHVlVHlwZSxUcmF2ZXJzYWwsUmVmZXJlbmNlPgotewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgaW5wdXRfaXRlcmF0b3JfZmFjYWRlKCkgOiBtX3ZhbGlkKCBmYWxzZSApLCBtX3ZhbHVlKCkge30KLQotcHJvdGVjdGVkOiAvLyBwcm92aWRlIGFjY2VzcyB0byB0aGUgRGVyaXZlZAotICAgIHZvaWQgICAgICAgICAgICAgICAgaW5pdCgpCi0gICAgewotICAgICAgICBtX3ZhbGlkID0gdHJ1ZTsKLSAgICAgICAgaW5jcmVtZW50KCk7Ci0gICAgfQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbXV0YWJsZSBib29sICAgICAgICBtX3ZhbGlkOwotICAgIFZhbHVlVHlwZSAgICAgICAgICAgbV92YWx1ZTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgbmRuYm9vc3Q6Oml0ZXJhdG9yX2NvcmVfYWNjZXNzOwotCi0gICAgLy8gaXRlcmF0b3IgZmFjYWRlIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgICAgICAgICAgICAgaW5jcmVtZW50KCkKLSAgICB7Ci0gICAgICAgIC8vIHdlIG1ha2UgcG9zdC1lbmQgaW5jcmVtZW50YXRpb24gaW5kZWZpbmV0bHkgc2FmZSAKLSAgICAgICAgaWYoIG1fdmFsaWQgKQotICAgICAgICAgICAgbV92YWxpZCA9IGlucHV0X2l0ZXJhdG9yX2NvcmVfYWNjZXNzOjpnZXQoICpzdGF0aWNfY2FzdDxEZXJpdmVkKj4odGhpcykgKTsKLSAgICB9Ci0gICAgUmVmZXJlbmNlICAgICAgICAgICBkZXJlZmVyZW5jZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZTsKLSAgICB9Ci0KLSAgICAvLyBpdGVyYXRvciBmYWNhZGUgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCi0gICAgYm9vbCAgICAgICAgICAgICAgICBlcXVhbCggaW5wdXRfaXRlcmF0b3JfZmFjYWRlIGNvbnN0JiByaHMgKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gdHdvIGludmFsaWQgaXRlcmF0b3IgZXF1YWxzLCBpbmVxdWFsIG90aGVyd2lzZQotICAgICAgICByZXR1cm4gIW1fdmFsaWQgJiYgIXJocy5tX3ZhbGlkOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0lOUFVUX0lURVJBVE9SX0ZBQ0FERV9IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci90b2tlbl9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvdG9rZW5faXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmM5OWZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci90b2tlbl9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiB0b2tlbiBpdGVyYXRvciBmb3Igc3RyaW5nIGFuZCByYW5nZSB0b2tlbml6YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RPS0VOX0lURVJBVE9SX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVE9LRU5fSVRFUkFUT1JfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvaW5wdXRfaXRlcmF0b3JfZmFjYWRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9uYW1lZF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxjY3R5cGU+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZHsgdXNpbmcgOjppc3B1bmN0OyB1c2luZyA6Omlzc3BhY2U7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgdGlfZGVsaW1ldGVyX3R5cGUgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1lbnVtIHRpX2RlbGltZXRlcl90eXBlIHsgCi0gICAgZHRfY2hhciwgICAgICAgIC8vIGNoYXJhY3RlciBpcyBkZWxpbWV0ZXIgaWYgaXQgYW1vbmcgZXhwbGljaXQgbGlzdCBvZiBzb21lIGNoYXJhY3RlcnMKLSAgICBkdF9pc3B1bmN0LCAgICAgLy8gY2hhcmFjdGVyIGlzIGRlbGltZXRlciBpZiBpdCBzYXRpc2ZpZXMgaXNwdW5jdCBmdW5jdG9yCi0gICAgZHRfaXNzcGFjZSwgICAgIC8vIGNoYXJhY3RlciBpcyBkZWxpbWV0ZXIgaWYgaXQgc2F0aXNmaWVzIGlzc3BhY2UgZnVuY3RvcgotICAgIGR0X25vbmUgICAgICAgICAvLyBubyBjaGFyYWN0ZXIgaXMgZGVsaW1ldGVyCi19OwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGRlZmF1bHRfY2hhcl9jb21wYXJlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWNsYXNzIGRlZmF1bHRfY2hhcl9jb21wYXJlIHsKLXB1YmxpYzoKLSAgICBib29sIG9wZXJhdG9yKCkoIENoYXJUIGMxLCBDaGFyVCBjMiApCi0gICAgewotI2lmZGVmIE5ETkJPT1NUX0NMQVNTSUNfSU9TVFJFQU1TCi0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZ19jaGFyX3RyYWl0czxDaGFyVD46OmVxKCBjMSwgYzIgKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBzdGQ6OmNoYXJfdHJhaXRzPENoYXJUPjo6ZXEoIGMxLCBjMiApOwotI2VuZGlmCi0gICAgfQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBkZWxpbV9wb2xpY3kgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVCx0eXBlbmFtZSBDaGFyQ29tcGFyZT4KLWNsYXNzIGRlbGltX3BvbGljeSB7Ci0gICAgdHlwZWRlZiBiYXNpY19jc3RyaW5nPENoYXJUIGNvbnN0PiBjc3RyaW5nOwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgZGVsaW1fcG9saWN5KCB0aV9kZWxpbWV0ZXJfdHlwZSB0ID0gZHRfY2hhciwgY3N0cmluZyBkID0gY3N0cmluZygpICkKLSAgICA6IG1fdHlwZSggdCApCi0gICAgewotICAgICAgICBzZXRfZGVsaW1ldGVycyggZCApOwotICAgIH0KLQotICAgIHZvaWQgICAgICAgIHNldF9kZWxpbWV0ZXJzKCB0aV9kZWxpbWV0ZXJfdHlwZSB0ICkgeyBtX3R5cGUgPSB0OyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU3JjPgotICAgIHZvaWQgICAgICAgIHNldF9kZWxpbWV0ZXJzKCBTcmMgZCApCi0gICAgewotICAgICAgICBuZnA6Om9wdGlvbmFsbHlfYXNzaWduKCBtX2RlbGltZXRlcnMsIGQgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhbV9kZWxpbWV0ZXJzLmlzX2VtcHR5KCkgKQotICAgICAgICAgICAgbV90eXBlID0gZHRfY2hhcjsKLSAgICB9Ci0KLSAgICBib29sICAgICAgICBvcGVyYXRvcigpKCBDaGFyVCBjICkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCggbV90eXBlICkgewotICAgICAgICBjYXNlIGR0X2NoYXI6IHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggQ2hhclQsIGRlbGltLCBtX2RlbGltZXRlcnMgKQotICAgICAgICAgICAgICAgIGlmKCBDaGFyQ29tcGFyZSgpKCBkZWxpbSwgYyApICkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIGR0X2lzcHVuY3Q6Ci0gICAgICAgICAgICByZXR1cm4gKHN0ZDo6aXNwdW5jdCkoIGMgKSAhPSAwOwotICAgICAgICBjYXNlIGR0X2lzc3BhY2U6Ci0gICAgICAgICAgICByZXR1cm4gKHN0ZDo6aXNzcGFjZSkoIGMgKSAhPSAwOwotICAgICAgICBjYXNlIGR0X25vbmU6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGNzdHJpbmcgICAgICAgICAgICAgbV9kZWxpbWV0ZXJzOwotICAgIHRpX2RlbGltZXRlcl90eXBlICAgbV90eXBlOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICB0b2tlbl9hc3NpZ25lciAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmF2ZXJzYWxUYWc+Ci1zdHJ1Y3QgdG9rZW5fYXNzaWduZXIgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA8IDMwNiApCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgYXNzaWduKCBJdGVyYXRvciBiLCBJdGVyYXRvciBlLCBzdGQ6OmJhc2ljX3N0cmluZzxDLFQ+JiB0ICkKLSAgICB7IGZvciggOyBiICE9IGU7ICsrYiApIHQgKz0gKmI7IH0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgQz4KLSAgICBzdGF0aWMgdm9pZCBhc3NpZ24oIEl0ZXJhdG9yIGIsIEl0ZXJhdG9yIGUsIGJhc2ljX2NzdHJpbmc8Qz4mIHQgKSAgeyB0LmFzc2lnbiggYiwgZSApOyB9Ci0jZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBUb2tlbj4KLSAgICBzdGF0aWMgdm9pZCBhc3NpZ24oIEl0ZXJhdG9yIGIsIEl0ZXJhdG9yIGUsIFRva2VuJiB0ICkgIHsgdC5hc3NpZ24oIGIsIGUgKTsgfQotI2VuZGlmCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFRva2VuPgotICAgIHN0YXRpYyB2b2lkIGFwcGVuZF9tb3ZlKCBJdGVyYXRvciYgYiwgVG9rZW4mICkgICAgICAgICAgeyArK2I7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0b2tlbl9hc3NpZ25lcjxzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFRva2VuPgotICAgIHN0YXRpYyB2b2lkIGFzc2lnbiggSXRlcmF0b3IgYiwgSXRlcmF0b3IgZSwgVG9rZW4mIHQgKSAge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBUb2tlbj4KLSAgICBzdGF0aWMgdm9pZCBhcHBlbmRfbW92ZSggSXRlcmF0b3ImIGIsIFRva2VuJiB0ICkgICAgICAgIHsgdCArPSAqYjsgKytiOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotbmZwOjprZXl3b3JkPHN0cnVjdCBkcm9wcGVkX2RlbGltZXRlcnNfdCA+ICAgICAgICAgICBkcm9wcGVkX2RlbGltZXRlcnM7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGtlcHRfZGVsaW1ldGVyc190ID4gICAgICAgICAgICAgIGtlcHRfZGVsaW1ldGVyczsKLW5mcDo6dHlwZWRfa2V5d29yZDxib29sLHN0cnVjdCBrZWVwX2VtcHR5X3Rva2Vuc190ID4ga2VlcF9lbXB0eV90b2tlbnM7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8c3RkOjpzaXplX3Qsc3RydWN0IG1heF90b2tlbnNfdCA+IG1heF90b2tlbnM7Ci19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICB0b2tlbl9pdGVyYXRvcl9iYXNlICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZCwKLSAgICAgICAgIHR5cGVuYW1lIENoYXJULAotICAgICAgICAgdHlwZW5hbWUgQ2hhckNvbXBhcmUgICA9IHV0X2RldGFpbDo6ZGVmYXVsdF9jaGFyX2NvbXBhcmU8Q2hhclQ+LAotICAgICAgICAgdHlwZW5hbWUgVmFsdWVUeXBlICAgICA9IGJhc2ljX2NzdHJpbmc8Q2hhclQgY29uc3Q+LAotICAgICAgICAgdHlwZW5hbWUgUmVmZXJlbmNlICAgICA9IGJhc2ljX2NzdHJpbmc8Q2hhclQgY29uc3Q+LAotICAgICAgICAgdHlwZW5hbWUgVHJhdmVyc2FsICAgICA9IGZvcndhcmRfdHJhdmVyc2FsX3RhZz4KLWNsYXNzIHRva2VuX2l0ZXJhdG9yX2Jhc2UKLTogcHVibGljIGlucHV0X2l0ZXJhdG9yX2ZhY2FkZTxEZXJpdmVkLFZhbHVlVHlwZSxSZWZlcmVuY2UsVHJhdmVyc2FsPiB7Ci0gICAgdHlwZWRlZiBiYXNpY19jc3RyaW5nPENoYXJUIGNvbnN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3N0cmluZzsKLSAgICB0eXBlZGVmIHV0X2RldGFpbDo6ZGVsaW1fcG9saWN5PENoYXJULENoYXJDb21wYXJlPiAgICAgICAgICAgICAgICAgICAgICBkZWxpbV9wb2xpY3k7Ci0gICAgdHlwZWRlZiBpbnB1dF9pdGVyYXRvcl9mYWNhZGU8RGVyaXZlZCxWYWx1ZVR5cGUsUmVmZXJlbmNlLFRyYXZlcnNhbD4gICAgYmFzZTsKLQotcHJvdGVjdGVkOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgdG9rZW5faXRlcmF0b3JfYmFzZSgpCi0gICAgOiBtX2lzX2Ryb3BwZWQoIGR0X2lzc3BhY2UgKQotICAgICwgbV9pc19rZXB0KCBkdF9pc3B1bmN0ICkKLSAgICAsIG1fa2VlcF9lbXB0eV90b2tlbnMoIGZhbHNlICkKLSAgICAsIG1fdG9rZW5zX2xlZnQoIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigtMSkgKQotICAgICwgbV90b2tlbl9wcm9kdWNlZCggZmFsc2UgKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkCi0gICAgYXBwbHlfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIGlmKCBtLmhhcyggZHJvcHBlZF9kZWxpbWV0ZXJzICkgKQotICAgICAgICAgICAgbV9pc19kcm9wcGVkLnNldF9kZWxpbWV0ZXJzKCBtW2Ryb3BwZWRfZGVsaW1ldGVyc10gKTsKLQotICAgICAgICBpZiggbS5oYXMoIGtlcHRfZGVsaW1ldGVycyApICkKLSAgICAgICAgICAgIG1faXNfa2VwdC5zZXRfZGVsaW1ldGVycyggbVtrZXB0X2RlbGltZXRlcnNdICk7Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBrZWVwX2VtcHR5X3Rva2VucyApICkKLSAgICAgICAgICAgIG1fa2VlcF9lbXB0eV90b2tlbnMgPSB0cnVlOwotCi0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIG1fdG9rZW5zX2xlZnQsIG0sIG1heF90b2tlbnMgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyPiAKLSAgICBib29sICAgICAgICAgICAgICAgICAgICBnZXQoIEl0ZXImIGJlZ2luLCBJdGVyIGVuZCApCi0gICAgewotICAgICAgICB0eXBlZGVmIHV0X2RldGFpbDo6dG9rZW5fYXNzaWduZXI8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpdGVyYXRvcl90cmF2ZXJzYWw8SXRlcj46OnR5cGU+IEFzc2lnbmVyOwotICAgICAgICBJdGVyIGNoZWNrX3BvaW50OwotCi0gICAgICAgIHRoaXMtPm1fdmFsdWUuY2xlYXIoKTsKLQotICAgICAgICBpZiggIW1fa2VlcF9lbXB0eV90b2tlbnMgKSB7Ci0gICAgICAgICAgICB3aGlsZSggYmVnaW4gIT0gZW5kICYmIG1faXNfZHJvcHBlZCggKmJlZ2luICkgKQotICAgICAgICAgICAgICAgICsrYmVnaW47Ci0KLSAgICAgICAgICAgIGlmKCBiZWdpbiA9PSBlbmQgKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgY2hlY2tfcG9pbnQgPSBiZWdpbjsKLQotICAgICAgICAgICAgaWYoIG1fdG9rZW5zX2xlZnQgPT0gMSApCi0gICAgICAgICAgICAgICAgd2hpbGUoIGJlZ2luICE9IGVuZCApCi0gICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyOjphcHBlbmRfbW92ZSggYmVnaW4sIHRoaXMtPm1fdmFsdWUgKTsKLSAgICAgICAgICAgIGVsc2UgaWYoIG1faXNfa2VwdCggKmJlZ2luICkgKQotICAgICAgICAgICAgICAgIEFzc2lnbmVyOjphcHBlbmRfbW92ZSggYmVnaW4sIHRoaXMtPm1fdmFsdWUgKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3aGlsZSggYmVnaW4gIT0gZW5kICYmICFtX2lzX2Ryb3BwZWQoICpiZWdpbiApICYmICFtX2lzX2tlcHQoICpiZWdpbiApICkKLSAgICAgICAgICAgICAgICAgICAgQXNzaWduZXI6OmFwcGVuZF9tb3ZlKCBiZWdpbiwgdGhpcy0+bV92YWx1ZSApOwotCi0gICAgICAgICAgICAtLW1fdG9rZW5zX2xlZnQ7Ci0gICAgICAgIH0gCi0gICAgICAgIGVsc2UgeyAvLyBtX2tlZXBfZW1wdHlfdG9rZW5zIGlzIHRydWUKLSAgICAgICAgICAgIGNoZWNrX3BvaW50ID0gYmVnaW47Ci0KLSAgICAgICAgICAgIGlmKCBiZWdpbiA9PSBlbmQgKSB7Ci0gICAgICAgICAgICAgICAgaWYoIG1fdG9rZW5fcHJvZHVjZWQgKSAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgbV90b2tlbl9wcm9kdWNlZCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiggbV9pc19rZXB0KCAqYmVnaW4gKSApIHsKLSAgICAgICAgICAgICAgICBpZiggbV90b2tlbl9wcm9kdWNlZCApIAotICAgICAgICAgICAgICAgICAgICBBc3NpZ25lcjo6YXBwZW5kX21vdmUoIGJlZ2luLCB0aGlzLT5tX3ZhbHVlICk7Ci0KLSAgICAgICAgICAgICAgICBtX3Rva2VuX3Byb2R1Y2VkID0gIW1fdG9rZW5fcHJvZHVjZWQ7Ci0gICAgICAgICAgICB9IAotICAgICAgICAgICAgZWxzZSBpZiggIW1fdG9rZW5fcHJvZHVjZWQgJiYgbV9pc19kcm9wcGVkKCAqYmVnaW4gKSApCi0gICAgICAgICAgICAgICAgbV90b2tlbl9wcm9kdWNlZCA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiggbV9pc19kcm9wcGVkKCAqYmVnaW4gKSApCi0gICAgICAgICAgICAgICAgICAgIGNoZWNrX3BvaW50ID0gKytiZWdpbjsKLQotICAgICAgICAgICAgICAgIHdoaWxlKCBiZWdpbiAhPSBlbmQgJiYgIW1faXNfZHJvcHBlZCggKmJlZ2luICkgJiYgIW1faXNfa2VwdCggKmJlZ2luICkgKQotICAgICAgICAgICAgICAgICAgICBBc3NpZ25lcjo6YXBwZW5kX21vdmUoIGJlZ2luLCB0aGlzLT5tX3ZhbHVlICk7Ci0KLSAgICAgICAgICAgICAgICBtX3Rva2VuX3Byb2R1Y2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEFzc2lnbmVyOjphc3NpZ24oIGNoZWNrX3BvaW50LCBiZWdpbiwgdGhpcy0+bV92YWx1ZSApOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBkZWxpbV9wb2xpY3kgICAgICAgICAgICBtX2lzX2Ryb3BwZWQ7Ci0gICAgZGVsaW1fcG9saWN5ICAgICAgICAgICAgbV9pc19rZXB0OwotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIG1fa2VlcF9lbXB0eV90b2tlbnM7Ci0gICAgc3RkOjpzaXplX3QgICAgICAgICAgICAgbV90b2tlbnNfbGVmdDsKLSAgICBib29sICAgICAgICAgICAgICAgICAgICBtX3Rva2VuX3Byb2R1Y2VkOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIGJhc2ljX3N0cmluZ190b2tlbl9pdGVyYXRvciAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVCwKLSAgICAgICAgIHR5cGVuYW1lIENoYXJDb21wYXJlID0gdXRfZGV0YWlsOjpkZWZhdWx0X2NoYXJfY29tcGFyZTxDaGFyVD4gPgotY2xhc3MgYmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yCi06IHB1YmxpYyB0b2tlbl9pdGVyYXRvcl9iYXNlPGJhc2ljX3N0cmluZ190b2tlbl9pdGVyYXRvcjxDaGFyVCxDaGFyQ29tcGFyZT4sQ2hhclQsQ2hhckNvbXBhcmU+IHsKLSAgICB0eXBlZGVmIGJhc2ljX2NzdHJpbmc8Q2hhclQgY29uc3Q+IGNzdHJpbmc7Ci0gICAgdHlwZWRlZiB0b2tlbl9pdGVyYXRvcl9iYXNlPGJhc2ljX3N0cmluZ190b2tlbl9pdGVyYXRvcjxDaGFyVCxDaGFyQ29tcGFyZT4sQ2hhclQsQ2hhckNvbXBhcmU+IGJhc2U7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgICAgYmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yKCkge30KLSAgICBleHBsaWNpdCAgICBiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3IoIGNzdHJpbmcgc3JjICkKLSAgICA6IG1fc3JjKCBzcmMgKQotICAgIHsKLSAgICAgICAgdGhpcy0+aW5pdCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNyYywgdHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgYmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yKCBTcmMgc3JjLCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgOiBtX3NyYyggc3JjICkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmFwcGx5X21vZGlmaWVyKCBtICk7Ci0KLSAgICAgICAgdGhpcy0+aW5pdCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgaW5wdXRfaXRlcmF0b3JfY29yZV9hY2Nlc3M7Ci0KLSAgICAvLyBpbnB1dCBpdGVyYXRvciBpbXBsZW1lbnRhdGlvbgotICAgIGJvb2wgICAgICAgIGdldCgpCi0gICAgewotICAgICAgICB0eXBlbmFtZSBjc3RyaW5nOjppdGVyYXRvciBiZWdpbiA9IG1fc3JjLmJlZ2luKCk7Ci0gICAgICAgIGJvb2wgcmVzID0gYmFzZTo6Z2V0KCBiZWdpbiwgbV9zcmMuZW5kKCkgKTsKLQotICAgICAgICBtX3NyYy5hc3NpZ24oIGJlZ2luLCBtX3NyYy5lbmQoKSApOwotCi0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgY3N0cmluZyAgICAgbV9zcmM7Ci19OwotCi10eXBlZGVmIGJhc2ljX3N0cmluZ190b2tlbl9pdGVyYXRvcjxjaGFyPiAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3I7Ci10eXBlZGVmIGJhc2ljX3N0cmluZ190b2tlbl9pdGVyYXRvcjx3Y2hhcl90PiAgICB3c3RyaW5nX3Rva2VuX2l0ZXJhdG9yOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHJhbmdlX3Rva2VuX2l0ZXJhdG9yICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZXIsCi0gICAgICAgICB0eXBlbmFtZSBDaGFyQ29tcGFyZSA9IHV0X2RldGFpbDo6ZGVmYXVsdF9jaGFyX2NvbXBhcmU8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpdGVyYXRvcl92YWx1ZTxJdGVyPjo6dHlwZT4sCi0gICAgICAgICB0eXBlbmFtZSBWYWx1ZVR5cGUgICA9IHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaXRlcmF0b3JfdmFsdWU8SXRlcj46OnR5cGU+LAotICAgICAgICAgdHlwZW5hbWUgUmVmZXJlbmNlICAgPSBWYWx1ZVR5cGUgY29uc3QmPgotY2xhc3MgcmFuZ2VfdG9rZW5faXRlcmF0b3IKLTogcHVibGljIHRva2VuX2l0ZXJhdG9yX2Jhc2U8cmFuZ2VfdG9rZW5faXRlcmF0b3I8SXRlcixDaGFyQ29tcGFyZSxWYWx1ZVR5cGUsUmVmZXJlbmNlPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdmFsdWU8SXRlcj46OnR5cGUsQ2hhckNvbXBhcmUsVmFsdWVUeXBlLFJlZmVyZW5jZT4gewotICAgIHR5cGVkZWYgYmFzaWNfY3N0cmluZzx0eXBlbmFtZSBWYWx1ZVR5cGU6OnZhbHVlX3R5cGU+IGNzdHJpbmc7Ci0gICAgdHlwZWRlZiB0b2tlbl9pdGVyYXRvcl9iYXNlPHJhbmdlX3Rva2VuX2l0ZXJhdG9yPEl0ZXIsQ2hhckNvbXBhcmUsVmFsdWVUeXBlLFJlZmVyZW5jZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3ZhbHVlPEl0ZXI+Ojp0eXBlLENoYXJDb21wYXJlLFZhbHVlVHlwZSxSZWZlcmVuY2U+IGJhc2U7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgICAgcmFuZ2VfdG9rZW5faXRlcmF0b3IoKSB7fQotICAgIGV4cGxpY2l0ICAgIHJhbmdlX3Rva2VuX2l0ZXJhdG9yKCBJdGVyIGJlZ2luLCBJdGVyIGVuZCA9IEl0ZXIoKSApCi0gICAgOiBtX2JlZ2luKCBiZWdpbiApLCBtX2VuZCggZW5kICkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmluaXQoKTsKLSAgICB9Ci0gICAgcmFuZ2VfdG9rZW5faXRlcmF0b3IoIHJhbmdlX3Rva2VuX2l0ZXJhdG9yIGNvbnN0JiByaHMgKQotICAgIDogYmFzZSggcmhzICkKLSAgICB7Ci0gICAgICAgIGlmKCB0aGlzLT5tX3ZhbGlkICkgewotICAgICAgICAgICAgbV9iZWdpbiA9IHJocy5tX2JlZ2luOwotICAgICAgICAgICAgbV9lbmQgICA9IHJocy5tX2VuZDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHJhbmdlX3Rva2VuX2l0ZXJhdG9yKCBJdGVyIGJlZ2luLCBJdGVyIGVuZCwgTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIDogbV9iZWdpbiggYmVnaW4gKSwgbV9lbmQoIGVuZCApCi0gICAgewotICAgICAgICB0aGlzLT5hcHBseV9tb2RpZmllciggbSApOwotCi0gICAgICAgIHRoaXMtPmluaXQoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIGlucHV0X2l0ZXJhdG9yX2NvcmVfYWNjZXNzOwotCi0gICAgLy8gaW5wdXQgaXRlcmF0b3IgaW1wbGVtZW50YXRpb24KLSAgICBib29sICAgICAgICBnZXQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJhc2U6OmdldCggbV9iZWdpbiwgbV9lbmQgKTsKLSAgICB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBJdGVyIG1fYmVnaW47Ci0gICAgSXRlciBtX2VuZDsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIG1ha2VfcmFuZ2VfdG9rZW5faXRlcmF0b3IgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4KLWlubGluZSByYW5nZV90b2tlbl9pdGVyYXRvcjxJdGVyPgotbWFrZV9yYW5nZV90b2tlbl9pdGVyYXRvciggSXRlciBiZWdpbiwgSXRlciBlbmQgPSBJdGVyKCkgKQotewotICAgIHJldHVybiByYW5nZV90b2tlbl9pdGVyYXRvcjxJdGVyPiggYmVnaW4sIGVuZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyLHR5cGVuYW1lIE1vZGlmaWVyPgotaW5saW5lIHJhbmdlX3Rva2VuX2l0ZXJhdG9yPEl0ZXI+Ci1tYWtlX3JhbmdlX3Rva2VuX2l0ZXJhdG9yKCBJdGVyIGJlZ2luLCBJdGVyIGVuZCwgTW9kaWZpZXIgY29uc3QmIG0gKQotewotICAgIHJldHVybiByYW5nZV90b2tlbl9pdGVyYXRvcjxJdGVyPiggYmVnaW4sIGVuZCwgbSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UT0tFTl9JVEVSQVRPUl9IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9sYXp5X29zdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2xhenlfb3N0cmVhbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhM2ZhMjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2xhenlfb3N0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY29udGFpbnMgZGVmaW5pdGlvbiBmb3IgYWxsIHRlc3QgdG9vbHMgaW4gdGVzdCB0b29sYm94Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0xBWllfT1NUUkVBTV9IUFBfMDcwNzA4R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTEFaWV9PU1RSRUFNX0hQUF8wNzA3MDhHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgbGF6eV9vc3RyZWFtICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotY2xhc3MgbGF6eV9vc3RyZWFtIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgbGF6eV9vc3RyZWFtJiAgICBpbnN0YW5jZSgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljIGxhenlfb3N0cmVhbSBpbnN0OyByZXR1cm4gaW5zdDsgfQotCi0gICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgICAgb3BlcmF0b3I8PCggc3RkOjpvc3RyZWFtJiBvc3RyLCBsYXp5X29zdHJlYW0gY29uc3QmIG8gKSB7IHJldHVybiBvKCBvc3RyICk7IH0KLQotICAgIC8vIGFjY2VzcyBtZXRob2QKLSAgICBib29sICAgICAgICAgICAgICAgICAgICBlbXB0eSgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIG1fZW1wdHk7IH0KLQotICAgIC8vIGFjdHVhbCBwcmludGluZyBpbnRlcmZhY2U7IHRvIGJlIGFjY2Vzc2VkIG9ubHkgYnkgdGhpcyBjbGFzcyBhbmQgY2hpbGRyZW4KLSAgICB2aXJ0dWFsIHN0ZDo6b3N0cmVhbSYgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSBjb25zdCAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIG9zdHI7IH0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCAgICAgICAgICAgICAgICBsYXp5X29zdHJlYW0oIGJvb2wgZW1wdHkgPSB0cnVlICkgOiBtX2VtcHR5KCBlbXB0eSApICAgIHt9Ci0KLSAgICAvLyBwcm90ZWN0ZWQgZGVzdHJ1Y3RvciB0byBtYWtlIHN1cmUgcmlnaHQgb25lIGlzIGNhbGxlZAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODIpKQotcHVibGljOgotI2VuZGlmCi0gICAgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB+bGF6eV9vc3RyZWFtKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIG1fZW1wdHk7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgbGF6eV9vc3RyZWFtX2ltcGwgOiBwdWJsaWMgbGF6eV9vc3RyZWFtIHsKLXB1YmxpYzoKLSAgICBsYXp5X29zdHJlYW1faW1wbCggbGF6eV9vc3RyZWFtIGNvbnN0JiBwcmV2LCBUIHZhbHVlICkKLSAgICA6IGxhenlfb3N0cmVhbSggZmFsc2UgKQotICAgICwgbV9wcmV2KCBwcmV2ICkKLSAgICAsIG1fdmFsdWUoIHZhbHVlICkKLSAgICB7fQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHN0ZDo6b3N0cmVhbSYgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJldihvc3RyKSA8PCBtX3ZhbHVlOwotICAgIH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGxhenlfb3N0cmVhbSBjb25zdCYgICAgIG1fcHJldjsKLSAgICBUICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBsYXp5X29zdHJlYW1faW1wbDxUIGNvbnN0Jj4KLW9wZXJhdG9yPDwoIGxhenlfb3N0cmVhbSBjb25zdCYgcHJldiwgVCBjb25zdCYgdiApCi17Ci0gICAgcmV0dXJuIGxhenlfb3N0cmVhbV9pbXBsPFQgY29uc3QmPiggcHJldiwgdiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgTkROQk9PU1RfVEVTVF9VU0VfU1REX0xPQ0FMRQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLHR5cGVuYW1lIFM+Ci1pbmxpbmUgbGF6eV9vc3RyZWFtX2ltcGw8UiYgKE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMICopKFMmKT4KLW9wZXJhdG9yPDwoIGxhenlfb3N0cmVhbSBjb25zdCYgcHJldiwgUiYgKE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMICptYW4pKFMmKSApCi17Ci0gICAgcmV0dXJuIGxhenlfb3N0cmVhbV9pbXBsPFImIChORE5CT09TVF9URVNUX0NBTExfREVDTCAqKShTJik+KCBwcmV2LCBtYW4gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfTEFaWV9PU1RSRUFNX0hQUF8wNzA3MDhHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9uYW1lZF9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL25hbWVkX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMjBlNTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL25hbWVkX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBmYWNpbGl0aWVzIGZvciBuYW1lZCBmdW5jdGlvbiBwYXJhbWV0ZXJzIHN1cHBvcnQKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTkFNRURfUEFSQU1fMDIyNTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTkFNRURfUEFSQU1fMDIyNTA1R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYXNzaWduX29wLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgbmZwIHsgLy8gbmFtZWQgZnVuY3Rpb24gcGFyYW1ldGVycwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIGZvcndhcmQgZGVjbGFyYXRpb25zICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHVuaXF1ZV9pZCx0eXBlbmFtZSBSZWZUeXBlPiAgIHN0cnVjdCBuYW1lZF9wYXJhbWV0ZXI7Ci10ZW1wbGF0ZTx0eXBlbmFtZSB1bmlxdWVfaWQsYm9vbCByZXF1aXJlZD4gICAgICAgICAgICAgICAgICBzdHJ1Y3Qga2V5d29yZDsKLQotbmFtZXNwYWNlIG5mcF9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBOUDEsdHlwZW5hbWUgTlAyPiAgICAgICAgc3RydWN0IG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBhY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIge307Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWlubGluZSB2b2lkIAotcmVwb3J0X2FjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlcigpCi17Ci0gICAgdGhyb3cgYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICAgbmlsICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IG5pbCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fSFBfYUNDKSB8fCBkZWZpbmVkKF9fRURHX18pIHx8IGRlZmluZWQoX19TVU5QUk9fQ0MpCi0gICAgb3BlcmF0b3IgVCgpIGNvbnN0Ci0jZWxzZQotICAgIG9wZXJhdG9yIFQgY29uc3QmKCkgY29uc3QKLSNlbmRpZgotICAgIHsgcmVwb3J0X2FjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlcigpOyBzdGF0aWMgVCogdiA9IDA7IHJldHVybiAqdjsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGFueV9jYXN0KCkgY29uc3QKLSAgICB7IHJlcG9ydF9hY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKTsgc3RhdGljIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUqIHYgPSAwOyByZXR1cm4gKnY7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZzE+Ci0gICAgbmlsIG9wZXJhdG9yKCkoIEFyZzEgY29uc3QmICkKLSAgICB7IHJlcG9ydF9hY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKTsgcmV0dXJuIG5pbCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmcxLHR5cGVuYW1lIEFyZzI+Ci0gICAgbmlsIG9wZXJhdG9yKCkoIEFyZzEgY29uc3QmLCBBcmcyIGNvbnN0JiApCi0gICAgeyByZXBvcnRfYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCk7IHJldHVybiBuaWwoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnMSx0eXBlbmFtZSBBcmcyLHR5cGVuYW1lIEFyZzM+Ci0gICAgbmlsIG9wZXJhdG9yKCkoIEFyZzEgY29uc3QmLCBBcmcyIGNvbnN0JiwgQXJnMyBjb25zdCYgKQotICAgIHsgcmVwb3J0X2FjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlcigpOyByZXR1cm4gbmlsKCk7IH0KLQotICAgIC8vIFZpc2l0YXRpb24gc3VwcG9ydAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci0gICAgdm9pZCAgICAgICAgICAgIGFwcGx5X3RvKCBWaXNpdG9yJiBWICkgY29uc3Qge30KLQotICAgIHN0YXRpYyBuaWwmICAgICBpbnN0KCkgeyBzdGF0aWMgbmlsIHNfaW5zdDsgcmV0dXJuIHNfaW5zdDsgfQotcHJpdmF0ZToKLSAgICBuaWwoKSB7fQotfTsKLSAgICAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgbmFtZWRfcGFyYW1ldGVyX2Jhc2UgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KLXN0cnVjdCBuYW1lZF9wYXJhbWV0ZXJfYmFzZSB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTlA+Ci0gICAgbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU8TlAsRGVyaXZlZD4KLSAgICBvcGVyYXRvciwoIE5QIGNvbnN0JiBucCApIGNvbnN0IHsgcmV0dXJuIG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lPE5QLERlcml2ZWQ+KCBucCwgKnN0YXRpY19jYXN0PERlcml2ZWQgY29uc3QqPih0aGlzKSApOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmUgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE5QLCB0eXBlbmFtZSBSZXN0ID0gbmlsPgotc3RydWN0IG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lIAotOiBSZXN0Ci0sIG5hbWVkX3BhcmFtZXRlcl9iYXNlPG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lPE5QLFJlc3Q+ID4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgTlA6OnJlZl90eXBlICByZXNfdHlwZTsKLSAgICB0eXBlZGVmIG5hbWVkX3BhcmFtZXRlcl9jb21iaW5lPE5QLFJlc3Q+IHNlbGZfdHlwZTsKLQotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmUoIE5QIGNvbnN0JiBucCwgUmVzdCBjb25zdCYgciApCi0gICAgOiBSZXN0KCByICkKLSAgICAsIG1fcGFyYW0oIG5wICkKLSAgICB7fQotCi0gICAgLy8gQWNjZXNzIG1ldGhvZHMKLSAgICByZXNfdHlwZSAgICBvcGVyYXRvcltdKCBrZXl3b3JkPHR5cGVuYW1lIE5QOjppZCx0cnVlPiBrdyApIGNvbnN0ICAgIHsgcmV0dXJuIG1fcGFyYW1ba3ddOyB9Ci0gICAgcmVzX3R5cGUgICAgb3BlcmF0b3JbXSgga2V5d29yZDx0eXBlbmFtZSBOUDo6aWQsZmFsc2U+IGt3ICkgY29uc3QgICB7IHJldHVybiBtX3BhcmFtW2t3XTsgfQotICAgIHVzaW5nICAgICAgIFJlc3Q6Om9wZXJhdG9yW107Ci0KLSAgICBib29sICAgICAgICBoYXMoIGtleXdvcmQ8dHlwZW5hbWUgTlA6OmlkLGZhbHNlPiBrdyApIGNvbnN0ICAgICAgICAgIHsgcmV0dXJuIG1fcGFyYW0uaGFzKCBrdyApOyB9Ci0gICAgdXNpbmcgICAgICAgUmVzdDo6aGFzOwotCi0gICAgdm9pZCAgICAgICAgZXJhc2UoIGtleXdvcmQ8dHlwZW5hbWUgTlA6OmlkLGZhbHNlPiBrdyApIGNvbnN0ICAgICAgICB7IG1fcGFyYW0uZXJhc2UoIGt3ICk7IH0KLSAgICB1c2luZyAgICAgICBSZXN0OjplcmFzZTsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzIwNikpIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDYxMCkpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTlA+Ci0gICAgbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU8TlAsc2VsZl90eXBlPiBvcGVyYXRvciwoIE5QIGNvbnN0JiBucCApIGNvbnN0Ci0gICAgeyByZXR1cm4gbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU8TlAsc2VsZl90eXBlPiggbnAsICp0aGlzICk7IH0KLSNlbHNlCi0gICAgdXNpbmcgICAgICAgbmFtZWRfcGFyYW1ldGVyX2Jhc2U8bmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU8TlAsUmVzdD4gPjo6b3BlcmF0b3IsOwotI2VuZGlmCi0KLSAgICAvLyBWaXNpdGF0aW9uIHN1cHBvcnQKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotICAgIHZvaWQgICAgICAgICAgICBhcHBseV90byggVmlzaXRvciYgViApIGNvbnN0Ci0gICAgewotICAgICAgICBtX3BhcmFtLmFwcGx5X3RvKCBWICk7Ci0KLSAgICAgICAgUmVzdDo6YXBwbHlfdG8oIFYgKTsKLSAgICB9Ci1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIE5QICAgICAgICAgIG1fcGFyYW07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZnBfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgbmFtZWRfcGFyYW1ldGVyICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgdW5pcXVlX2lkLHR5cGVuYW1lIFJlZmVyZW5jZVR5cGU9VCY+Ci1zdHJ1Y3QgbmFtZWRfcGFyYW1ldGVyCi06IG5mcF9kZXRhaWw6Om5hbWVkX3BhcmFtZXRlcl9iYXNlPG5hbWVkX3BhcmFtZXRlcjxULCB1bmlxdWVfaWQsUmVmZXJlbmNlVHlwZT4gPgotewotICAgIHR5cGVkZWYgbmZwX2RldGFpbDo6bmlsIG5pbF90OwotICAgIHR5cGVkZWYgVCAgICAgICAgICAgICAgIGRhdGFfdHlwZTsKLSAgICB0eXBlZGVmIFJlZmVyZW5jZVR5cGUgICByZWZfdHlwZTsKLSAgICB0eXBlZGVmIHVuaXF1ZV9pZCAgICAgICBpZDsKLQotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgICAgIG5hbWVkX3BhcmFtZXRlciggcmVmX3R5cGUgdiApIAotICAgIDogbV92YWx1ZSggdiApCi0gICAgLCBtX2VyYXNlZCggZmFsc2UgKQotICAgIHt9Ci0gICAgbmFtZWRfcGFyYW1ldGVyKCBuYW1lZF9wYXJhbWV0ZXIgY29uc3QmIG5wICkKLSAgICA6IG1fdmFsdWUoIG5wLm1fdmFsdWUgKQotICAgICwgbV9lcmFzZWQoIG5wLm1fZXJhc2VkICkKLSAgICB7fQotCi0gICAgLy8gQWNjZXNzIG1ldGhvZHMKLSAgICByZWZfdHlwZSAgICAgICAgb3BlcmF0b3JbXSgga2V5d29yZDx1bmlxdWVfaWQsdHJ1ZT4gKSBjb25zdCAgICAgeyByZXR1cm4gbV9lcmFzZWQgPyBuaWxfdDo6aW5zdCgpLnRlbXBsYXRlIGFueV9jYXN0PHJlZl90eXBlPigpIDogIG1fdmFsdWU7IH0KLSAgICByZWZfdHlwZSAgICAgICAgb3BlcmF0b3JbXSgga2V5d29yZDx1bmlxdWVfaWQsZmFsc2U+ICkgY29uc3QgICAgeyByZXR1cm4gbV9lcmFzZWQgPyBuaWxfdDo6aW5zdCgpLnRlbXBsYXRlIGFueV9jYXN0PHJlZl90eXBlPigpIDogIG1fdmFsdWU7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVbmtub3duSWQ+Ci0gICAgbmlsX3QgICAgICAgICAgIG9wZXJhdG9yW10oIGtleXdvcmQ8VW5rbm93bklkLGZhbHNlPiApIGNvbnN0ICAgIHsgcmV0dXJuIG5pbF90OjppbnN0KCk7IH0KLQotICAgIGJvb2wgICAgICAgICAgICBoYXMoIGtleXdvcmQ8dW5pcXVlX2lkLGZhbHNlPiApIGNvbnN0ICAgICAgICAgICB7IHJldHVybiAhbV9lcmFzZWQ7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVbmtub3duSWQ+Ci0gICAgYm9vbCAgICAgICAgICAgIGhhcygga2V5d29yZDxVbmtub3duSWQsZmFsc2U+ICkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2b2lkICAgICAgICAgICAgZXJhc2UoIGtleXdvcmQ8dW5pcXVlX2lkLGZhbHNlPiApIGNvbnN0ICAgICAgICAgeyBtX2VyYXNlZCA9IHRydWU7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVbmtub3duSWQ+Ci0gICAgdm9pZCAgICAgICAgICAgIGVyYXNlKCBrZXl3b3JkPFVua25vd25JZCxmYWxzZT4gKSBjb25zdCAgICAgICAgIHt9Ci0KLSAgICAvLyBWaXNpdGF0aW9uIHN1cHBvcnQKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotICAgIHZvaWQgICAgICAgICAgICBhcHBseV90byggVmlzaXRvciYgViApIGNvbnN0Ci0gICAgewotICAgICAgICBWLnNldF9wYXJhbWV0ZXIoIHJ0dGk6OnR5cGVfaWQ8dW5pcXVlX2lkPigpLCBtX3ZhbHVlICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHJlZl90eXBlICAgICAgICBtX3ZhbHVlOwotICAgIG11dGFibGUgYm9vbCAgICBtX2VyYXNlZDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgbm9fcGFyYW1zICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIG5mcF9kZXRhaWwgewotdHlwZWRlZiBuYW1lZF9wYXJhbWV0ZXI8Y2hhciwgc3RydWN0IG5vX3BhcmFtc190eXBlX3QsY2hhcj4gbm9fcGFyYW1zX3R5cGU7Ci19IC8vIG5hbWVzcGFjZSBuZnBfZGV0YWlsCi0KLW5hbWVzcGFjZSB7Ci1uZnBfZGV0YWlsOjpub19wYXJhbXNfdHlwZSBub19wYXJhbXMoICdcMCcgKTsKLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgdW5pcXVlX2lkLCBib29sIHJlcXVpcmVkID0gZmFsc2U+Ci1zdHJ1Y3Qga2V5d29yZCB7Ci0gICAgdHlwZWRlZiB1bmlxdWVfaWQgaWQ7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIG5hbWVkX3BhcmFtZXRlcjxUIGNvbnN0LHVuaXF1ZV9pZD4KLSAgICBvcGVyYXRvcj0oIFQgY29uc3QmIHQgKSBjb25zdCAgICAgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXI8VCBjb25zdCx1bmlxdWVfaWQ+KCB0ICk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgbmFtZWRfcGFyYW1ldGVyPFQsdW5pcXVlX2lkPgotICAgIG9wZXJhdG9yPSggVCYgdCApIGNvbnN0ICAgeyByZXR1cm4gbmFtZWRfcGFyYW1ldGVyPFQsdW5pcXVlX2lkPiggdCApOyB9Ci0KLSAgICBuYW1lZF9wYXJhbWV0ZXI8Y2hhciBjb25zdCosdW5pcXVlX2lkLGNoYXIgY29uc3QqPgotICAgIG9wZXJhdG9yPSggY2hhciBjb25zdCogdCApIGNvbnN0ICAgeyByZXR1cm4gbmFtZWRfcGFyYW1ldGVyPGNoYXIgY29uc3QqLHVuaXF1ZV9pZCxjaGFyIGNvbnN0Kj4oIHQgKTsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgdHlwZWRfa2V5d29yZCAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSB1bmlxdWVfaWQsIGJvb2wgcmVxdWlyZWQgPSBmYWxzZT4KLXN0cnVjdCB0eXBlZF9rZXl3b3JkIDoga2V5d29yZDx1bmlxdWVfaWQscmVxdWlyZWQ+IHsKLSAgICBuYW1lZF9wYXJhbWV0ZXI8VCBjb25zdCx1bmlxdWVfaWQ+Ci0gICAgb3BlcmF0b3I9KCBUIGNvbnN0JiB0ICkgY29uc3QgICAgICAgeyByZXR1cm4gbmFtZWRfcGFyYW1ldGVyPFQgY29uc3QsdW5pcXVlX2lkPiggdCApOyB9Ci0KLSAgICBuYW1lZF9wYXJhbWV0ZXI8VCx1bmlxdWVfaWQ+Ci0gICAgb3BlcmF0b3I9KCBUJiB0ICkgY29uc3QgICAgICAgICAgICAgeyByZXR1cm4gbmFtZWRfcGFyYW1ldGVyPFQsdW5pcXVlX2lkPiggdCApOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSB1bmlxdWVfaWQ+Ci1zdHJ1Y3QgdHlwZWRfa2V5d29yZDxib29sLHVuaXF1ZV9pZCxmYWxzZT4KLToga2V5d29yZDx1bmlxdWVfaWQsZmFsc2U+Ci0sIG5hbWVkX3BhcmFtZXRlcjxib29sLHVuaXF1ZV9pZCxib29sPiB7Ci0gICAgdHlwZWRlZiB1bmlxdWVfaWQgaWQ7Ci0KLSAgICB0eXBlZF9rZXl3b3JkKCkgOiBuYW1lZF9wYXJhbWV0ZXI8Ym9vbCx1bmlxdWVfaWQsYm9vbD4oIHRydWUgKSB7fQotCi0gICAgbmFtZWRfcGFyYW1ldGVyPGJvb2wsdW5pcXVlX2lkLGJvb2w+Ci0gICAgb3BlcmF0b3IhKCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIG5hbWVkX3BhcmFtZXRlcjxib29sLHVuaXF1ZV9pZCxib29sPiggZmFsc2UgKTsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIG9wdGlvbmFsbHlfYXNzaWduICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQKLW9wdGlvbmFsbHlfYXNzaWduKCBUJiwgbmZwX2RldGFpbDo6bmlsICkKLXsKLSAgICBuZnBfZGV0YWlsOjpyZXBvcnRfYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNvdXJjZT4KLWlubGluZSB2b2lkCi0jaWYgTkROQk9PU1RfV09SS0FST1VORCggX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKCAweDMwMDMgKSApIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0RFQ0NYWF9WRVIsIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDU5MDA0MikgKQotb3B0aW9uYWxseV9hc3NpZ24oIFQmIHRhcmdldCwgU291cmNlIHNyYyApCi0jZWxzZQotb3B0aW9uYWxseV9hc3NpZ24oIFQmIHRhcmdldCwgU291cmNlIGNvbnN0JiBzcmMgKQotI2VuZGlmCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHVuaXRfdGVzdDsKLQotICAgIGFzc2lnbl9vcCggdGFyZ2V0LCBzcmMsIHN0YXRpY19jYXN0PGludD4oMCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUGFyYW1zLCB0eXBlbmFtZSBLZXl3b3JkPgotaW5saW5lIHZvaWQKLW9wdGlvbmFsbHlfYXNzaWduKCBUJiB0YXJnZXQsIFBhcmFtcyBjb25zdCYgcCwgS2V5d29yZCBrICkKLXsKLSAgICBpZiggcC5oYXMoaykgKQotICAgICAgICBvcHRpb25hbGx5X2Fzc2lnbiggdGFyZ2V0LCBwW2tdICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIG5mcAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfTkFNRURfUEFSQU1fMDIyNTA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU0N2FkMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNpbXBsZSBmYWNpbGl0aWVzIGZvciBhY2Nlc3NpbmcgdHlwZSBpbmZvcm1hdGlvbiBhdCBydW50aW1lCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1JUVElfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1JUVElfSFBQXzA2MjYwNEdFUgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHJ0dGkgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgcnR0aTo6dHlwZV9pZCAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgaWRfdDsKLQotbmFtZXNwYWNlIHJ0dGlfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBydHRpZF9ob2xkZXIgewotICAgIHN0YXRpYyBpZF90IGlkKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpZF90PiggJmluc3QoKSApOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IHJ0dGlkIHt9OwotCi0gICAgc3RhdGljIHJ0dGlkIGNvbnN0JiBpbnN0KCkgeyBzdGF0aWMgcnR0aWQgc19pbnN0OyAgcmV0dXJuIHNfaW5zdDsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgcnR0aV9kZXRhaWwKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gICAKLWlubGluZSBpZF90Ci10eXBlX2lkKCkKLXsKLSAgICByZXR1cm4gcnR0aV9kZXRhaWw6OnJ0dGlkX2hvbGRlcjxUPjo6aWQoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9SVFRJX1NXSVRDSCggdHlwZV9pZF8gKSBpZiggOjpuZG5ib29zdDo6cnR0aTo6aWRfdCBzd2l0Y2hfYnlfaWQgPSB0eXBlX2lkXyApCi0jZGVmaW5lIE5ETkJPT1NUX1JUVElfQ0FTRSggdHlwZSApICAgICAgIGlmKCBzd2l0Y2hfYnlfaWQgPT0gOjpuZG5ib29zdDo6cnR0aTo6dHlwZV9pZDx0eXBlPigpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgcnR0aQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfUlRUSV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9hcmd1bWVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9hcmd1bWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMmIyOWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvYXJndW1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogbW9kZWwgb2YgYWN0dWFsIGFyZ3VtZW50IChib3RoIHR5cGVkIGFuZCBhYnN0cmFjdCBpbnRlcmZhY2UpCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9BUkdVTUVOVF9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0FSR1VNRU5UX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHJ1bnRpbWU6OmFyZ3VtZW50ICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2VuZGlmCi0KLWNsYXNzIGFyZ3VtZW50IHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGFyZ3VtZW50KCBwYXJhbWV0ZXIgY29uc3QmIHAsIHJ0dGk6OmlkX3QgdmFsdWVfdHlwZSApCi0gICAgOiBwX2Zvcm1hbF9wYXJhbWV0ZXIoIHAgKQotICAgICwgcF92YWx1ZV90eXBlKCB2YWx1ZV90eXBlICkKLSAgICB7fQotCi0gICAgLy8gRGVzdHJ1Y3RvcgotICAgIHZpcnR1YWwgICAgIH5hcmd1bWVudCgpICB7fQotCi0gICAgLy8gUHVibGljIHByb3BlcnRpZXMKLSAgICB1bml0X3Rlc3Q6OnJlYWRvbmx5X3Byb3BlcnR5PHBhcmFtZXRlciBjb25zdCY+IHBfZm9ybWFsX3BhcmFtZXRlcjsKLSAgICB1bml0X3Rlc3Q6OnJlYWRvbmx5X3Byb3BlcnR5PHJ0dGk6OmlkX3Q+ICAgICAgIHBfdmFsdWVfdHlwZTsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBydW50aW1lOjp0eXBlZF9hcmd1bWVudCAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIHR5cGVkX2FyZ3VtZW50IDogcHVibGljIGFyZ3VtZW50IHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0IHR5cGVkX2FyZ3VtZW50KCBwYXJhbWV0ZXIgY29uc3QmIHAgKQotICAgIDogYXJndW1lbnQoIHAsIHJ0dGk6OnR5cGVfaWQ8VD4oKSApCi0gICAge30KLSAgICB0eXBlZF9hcmd1bWVudCggcGFyYW1ldGVyIGNvbnN0JiBwLCBUIGNvbnN0JiB0ICkKLSAgICA6IGFyZ3VtZW50KCBwLCBydHRpOjp0eXBlX2lkPFQ+KCkgKQotICAgICwgcF92YWx1ZSggdCApCi0gICAge30KLQotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PFQ+ICAgIHBfdmFsdWU7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBydW50aW1lOjphcmdfdmFsdWUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBjb25zdCYKLWFyZ192YWx1ZSggYXJndW1lbnQgY29uc3QmIGFyZ18gKQotewotICAgIGFzc2VydCggYXJnXy5wX3ZhbHVlX3R5cGUgPT0gcnR0aTo6dHlwZV9pZDxUPigpICk7IC8vIGRldGVjdCBsb2dpYyBlcnJvcgotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVkX2FyZ3VtZW50PFQ+IGNvbnN0Jj4oIGFyZ18gKS5wX3ZhbHVlLnZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQmCi1hcmdfdmFsdWUoIGFyZ3VtZW50JiBhcmdfICkKLXsKLSAgICBhc3NlcnQoIGFyZ18ucF92YWx1ZV90eXBlID09IHJ0dGk6OnR5cGVfaWQ8VD4oKSApOyAvLyBkZXRlY3QgbG9naWMgZXJyb3IKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlZF9hcmd1bWVudDxUPiY+KCBhcmdfICkucF92YWx1ZS52YWx1ZTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0FSR1VNRU5UX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd1bWVudF9mYWN0b3J5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd1bWVudF9mYWN0b3J5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBmMWRmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndW1lbnRfZmFjdG9yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZ2VuZXJpYyB0eXBlZF9hcmd1bWVudF9mYWN0b3J5IGltcGxlbWVudGF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQVJHVU1FTlRfRkFDVE9SWV9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9BUkdVTUVOVF9GQUNUT1JZX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvYXJndW1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS90cmFjZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2ludGVycHJldF9hcmd1bWVudF92YWx1ZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9nZW5lcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsdWVfaGFuZGxlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2RldGFpbC9hcmd1bWVudF92YWx1ZV91c2FnZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2FyZ3VtZW50X2ZhY3RvcnkuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvb3B0aW9uYWwuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgZGVmYXVsdF92YWx1ZV9pbnRlcnByZXRlciAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwgewotCi1zdHJ1Y3QgZGVmYXVsdF92YWx1ZV9pbnRlcnByZXRlciB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIG9wZXJhdG9yKCkoIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiB2YWx1ZSApCi0gICAgewotICAgICAgICBpZiggaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlKCB0ci50b2tlbigpLCB2YWx1ZSwgMCApICkKLSAgICAgICAgICAgIHRyLm5leHRfdG9rZW4oKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBydF9jbGFfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICB0eXBlZF9hcmd1bWVudF9mYWN0b3J5ICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB0eXBlZF9hcmd1bWVudF9mYWN0b3J5IDogcHVibGljIGFyZ3VtZW50X2ZhY3RvcnkgewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgdHlwZWRfYXJndW1lbnRfZmFjdG9yeSgpCi0gICAgOiBtX3ZhbHVlX2ludGVycHJldGVyKCBydF9jbGFfZGV0YWlsOjpkZWZhdWx0X3ZhbHVlX2ludGVycHJldGVyKCkgKQotICAgIHt9Ci0gICAgTkROQk9PU1RfUlRfUEFSQU1fVU5ORUVERURfVklSVFVBTCB+dHlwZWRfYXJndW1lbnRfZmFjdG9yeSgpIHt9Ci0KLSAgICAvLyBwcm9wZXJ0aWVzIG1vZGlmaWNhdGlvbgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgICAgICAgICAgICAgYWNjZXB0X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBvcHRpb25hbGx5X2Fzc2lnbiggbV92YWx1ZV9oYW5kbGVyLCBtLCBoYW5kbGVyICk7Ci0gICAgICAgIG9wdGlvbmFsbHlfYXNzaWduKCBtX3ZhbHVlX2ludGVycHJldGVyLCBtLCBpbnRlcnByZXRlciApOwotCi0gICAgICAgIGlmKCBtLmhhcyggZGVmYXVsdF92YWx1ZSApICkgewotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICFtX3ZhbHVlX2dlbmVyYXRvciwgCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIm11bHRpcGxlIHZhbHVlIGdlbmVyYXRvcnMgZm9yIHBhcmFtZXRlciIgKSApOwotCi0gICAgICAgICAgICBUIGNvbnN0JiBkdl9yZWYgPSBtW2RlZmF1bHRfdmFsdWVdOwotICAgICAgICAgICAgbV92YWx1ZV9nZW5lcmF0b3IgPSBydF9jbGFfZGV0YWlsOjpjb25zdF9nZW5lcmF0b3I8VD4oIGR2X3JlZiApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBkZWZhdWx0X3JlZmVyX3RvICkgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggIW1fdmFsdWVfZ2VuZXJhdG9yLCAKLSAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAibXVsdGlwbGUgdmFsdWUgZ2VuZXJhdG9ycyBmb3IgcGFyYW1ldGVyIiApICk7Ci0KLSAgICAgICAgICAgIGNzdHJpbmcgcmVmX2lkID0gbVtkZWZhdWx0X3JlZmVyX3RvXTsKLSAgICAgICAgICAgIG1fdmFsdWVfZ2VuZXJhdG9yID0gcnRfY2xhX2RldGFpbDo6cmVmX2dlbmVyYXRvcjxUPiggcmVmX2lkICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiggbS5oYXMoIGFzc2lnbl90byApICkgewotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICFtX3ZhbHVlX2hhbmRsZXIsIAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJtdWx0aXBsZSB2YWx1ZSBoYW5kbGVycyBmb3IgcGFyYW1ldGVyIiApICk7Ci0KLSAgICAgICAgICAgIG1fdmFsdWVfaGFuZGxlciA9IHJ0X2NsYV9kZXRhaWw6OmFzc2lnbmVyPFQ+KCBtW2Fzc2lnbl90b10gKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEFyZ3VtZW50IGZhY3RvcnkgaW1wbGVtZW50YXRpb24KLSAgICB2aXJ0dWFsIGFyZ3VtZW50X3B0ciBwcm9kdWNlX3VzaW5nKCBwYXJhbWV0ZXImIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciApOwotICAgIHZpcnR1YWwgYXJndW1lbnRfcHRyIHByb2R1Y2VfdXNpbmcoIHBhcmFtZXRlciYgcCwgcGFyc2VyIGNvbnN0JiApOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgIGFyZ3VtZW50X3VzYWdlX2luZm8oIGZvcm1hdF9zdHJlYW0mIGZzICk7Ci0KLS8vICEhIHByaXZhdGU/Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgdW5pdF90ZXN0OjpjYWxsYmFjazI8cGFyYW1ldGVyIGNvbnN0JixUJj4gICAgICAgICAgICAgICAgICAgbV92YWx1ZV9oYW5kbGVyOwotICAgIHVuaXRfdGVzdDo6Y2FsbGJhY2syPHBhcnNlciBjb25zdCYsbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+Jj4gICAgIG1fdmFsdWVfZ2VuZXJhdG9yOwotICAgIHVuaXRfdGVzdDo6Y2FsbGJhY2syPGFyZ3ZfdHJhdmVyc2VyJixuZG5ib29zdDo6b3B0aW9uYWw8VD4mPiAgIG1fdmFsdWVfaW50ZXJwcmV0ZXI7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGFyZ3VtZW50X3B0cgotdHlwZWRfYXJndW1lbnRfZmFjdG9yeTxUPjo6cHJvZHVjZV91c2luZyggcGFyYW1ldGVyJiBwLCBhcmd2X3RyYXZlcnNlciYgdHIgKQotewotICAgIG5kbmJvb3N0OjpvcHRpb25hbDxUPiB2YWx1ZTsKLQotICAgIHRyeSB7Ci0gICAgICAgIG1fdmFsdWVfaW50ZXJwcmV0ZXIoIHRyLCB2YWx1ZSApOwotICAgIH0KLSAgICBjYXRjaCggLi4uICkgeyAvLyAhISBzaG91bGQgd2UgZG8gdGhhdD8KLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJGYWlsIHRvIHBhcnNlIGFyZ3VtZW50IHZhbHVlIiApOwotCi0gICAgICAgIGlmKCAhcC5wX29wdGlvbmFsX3ZhbHVlICkKLSAgICAgICAgICAgIHRocm93OwotICAgIH0KLQotICAgIGFyZ3VtZW50X3B0ciBhY3R1YWxfYXJnID0gcC5hY3R1YWxfYXJndW1lbnQoKTsKLQotICAgIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFURV9JTlBVVCggISF2YWx1ZSB8fCBwLnBfb3B0aW9uYWxfdmFsdWUsIHRyLCAKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIkFyZ3VtZW50IHZhbHVlIG1pc3NpbmcgZm9yIHBhcmFtZXRlciAiICkgPDwgcC5pZF8yX3JlcG9ydCgpICk7Ci0KLSAgICBORE5CT09TVF9SVF9DTEFfVkFMSURBVEVfSU5QVVQoICFhY3R1YWxfYXJnIHx8IHAucF9tdWx0aXBsaWNhYmxlLCB0ciwgCi0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJVbmV4cGVjdGVkIHJlcGV0aXRpb24gb2YgdGhlIHBhcmFtZXRlciAiICkgPDwgcC5pZF8yX3JlcG9ydCgpICk7Ci0KLSAgICBpZiggISF2YWx1ZSAmJiAhIW1fdmFsdWVfaGFuZGxlciApCi0gICAgICAgIG1fdmFsdWVfaGFuZGxlciggcCwgKnZhbHVlICk7Ci0KLSAgICBpZiggIXAucF9tdWx0aXBsaWNhYmxlICkKLSAgICAgICAgYWN0dWFsX2FyZy5yZXNldCggcC5wX29wdGlvbmFsX3ZhbHVlICYmIChydHRpOjp0eXBlX2lkPFQ+KCkgIT0gcnR0aTo6dHlwZV9pZDxib29sPigpKQotICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxhcmd1bWVudCo+KG5ldyB0eXBlZF9hcmd1bWVudDxuZG5ib29zdDo6b3B0aW9uYWw8VD4gPiggcCwgdmFsdWUgKSkKLSAgICAgICAgICAgIDogc3RhdGljX2Nhc3Q8YXJndW1lbnQqPihuZXcgdHlwZWRfYXJndW1lbnQ8VD4oIHAsICp2YWx1ZSApKSApOwotICAgIGVsc2UgewotICAgICAgICB0eXBlZGVmIHN0ZDo6bGlzdDxuZG5ib29zdDo6b3B0aW9uYWw8VD4gPiBvcHRpb25hbF9saXN0OwotCi0gICAgICAgIGlmKCAhYWN0dWFsX2FyZyApCi0gICAgICAgICAgICBhY3R1YWxfYXJnLnJlc2V0KCBwLnBfb3B0aW9uYWxfdmFsdWUgCi0gICAgICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxhcmd1bWVudCo+KG5ldyB0eXBlZF9hcmd1bWVudDxvcHRpb25hbF9saXN0PiggcCApKQotICAgICAgICAgICAgICAgIDogc3RhdGljX2Nhc3Q8YXJndW1lbnQqPihuZXcgdHlwZWRfYXJndW1lbnQ8c3RkOjpsaXN0PFQ+ID4oIHAgKSkgKTsKLQotICAgICAgICBpZiggcC5wX29wdGlvbmFsX3ZhbHVlICkgewotICAgICAgICAgICAgb3B0aW9uYWxfbGlzdCYgdmFsdWVzID0gYXJnX3ZhbHVlPG9wdGlvbmFsX2xpc3Q+KCAqYWN0dWFsX2FyZyApOwotCi0gICAgICAgICAgICB2YWx1ZXMucHVzaF9iYWNrKCB2YWx1ZSApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc3RkOjpsaXN0PFQ+JiB2YWx1ZXMgPSBhcmdfdmFsdWU8c3RkOjpsaXN0PFQ+ID4oICphY3R1YWxfYXJnICk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlcy5wdXNoX2JhY2soICp2YWx1ZSApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGFjdHVhbF9hcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYXJndW1lbnRfcHRyIAotdHlwZWRfYXJndW1lbnRfZmFjdG9yeTxUPjo6cHJvZHVjZV91c2luZyggcGFyYW1ldGVyJiBwLCBwYXJzZXIgY29uc3QmIHBhICkKLXsKLSAgICBhcmd1bWVudF9wdHIgYWN0dWFsX2FyZzsKLQotICAgIGlmKCAhbV92YWx1ZV9nZW5lcmF0b3IgKQotICAgICAgICByZXR1cm4gYWN0dWFsX2FyZzsKLQotICAgIG5kbmJvb3N0OjpvcHRpb25hbDxUPiB2YWx1ZTsKLSAgICBtX3ZhbHVlX2dlbmVyYXRvciggcGEsIHZhbHVlICk7Ci0KLSAgICBpZiggIXZhbHVlICkKLSAgICAgICAgcmV0dXJuIGFjdHVhbF9hcmc7Ci0KLSAgICBpZiggISFtX3ZhbHVlX2hhbmRsZXIgKQotICAgICAgICBtX3ZhbHVlX2hhbmRsZXIoIHAsICp2YWx1ZSApOwotCi0gICAgYWN0dWFsX2FyZy5yZXNldCggbmV3IHR5cGVkX2FyZ3VtZW50PFQ+KCBwLCAqdmFsdWUgKSApOwotCi0gICAgcmV0dXJuIGFjdHVhbF9hcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZAotdHlwZWRfYXJndW1lbnRfZmFjdG9yeTxUPjo6YXJndW1lbnRfdXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKQotewotICAgIHJ0X2NsYV9kZXRhaWw6OmFyZ3VtZW50X3ZhbHVlX3VzYWdlKCBmcywgMCwgcmVpbnRlcnByZXRfY2FzdDxUKj4oMCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0FSR1VNRU5UX0ZBQ1RPUllfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlMWY3YmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgZmFjaWxpdHkgdG8gaGlkZSBpbnB1dCB0cmF2ZXJzaW5nIGRldGFpbHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9BUkdWX1RSQVZFUlNFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9BUkdWX1RSQVZFUlNFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L25vbmNvcHlhYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfYXJyYXkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBydW50aW1lOjpjbGE6OmFyZ3ZfdHJhdmVyc2VyICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgYXJndl90cmF2ZXJzZXIgOiBub25jb3B5YWJsZSB7Ci0gICAgY2xhc3MgcGFyc2VyOwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgYXJndl90cmF2ZXJzZXIoKTsKLQotICAgIC8vIHB1YmxpY19wcm9wZXJ0aWVzCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gICAgICAgICBwX2lnbm9yZV9taXNtYXRjaDsKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxjaGFyX3R5cGU+ICAgIHBfc2VwYXJhdG9yOwotCi0gICAgLy8gYXJnYythcmd2IDwtPiBpbnRlcm5hbCBidWZmZXIgZXhjaGFuZ2UKLSAgICB2b2lkICAgICAgICAgICAgaW5pdCggaW50IGFyZ2MsIGNoYXJfdHlwZSoqIGFyZ3YgKTsKLSAgICB2b2lkICAgICAgICAgICAgcmVtYWluZGVyKCBpbnQmIGFyZ2MsIGNoYXJfdHlwZSoqIGFyZ3YgKTsKLQotICAgIC8vIHRva2VuIGJhc2VkIHBhcnNpbmcKLSAgICBjc3RyaW5nICAgICAgICAgdG9rZW4oKSBjb25zdDsKLSAgICB2b2lkICAgICAgICAgICAgbmV4dF90b2tlbigpOwotCi0gICAgLy8gd2hvbGUgaW5wdXQgcGFyc2luZwotICAgIGNzdHJpbmcgICAgICAgICBpbnB1dCgpIGNvbnN0OwotICAgIHZvaWQgICAgICAgICAgICB0cmltKCBzdGQ6OnNpemVfdCBzaXplICk7Ci0gICAgYm9vbCAgICAgICAgICAgIG1hdGNoX2Zyb250KCBjc3RyaW5nICk7Ci0gICAgYm9vbCAgICAgICAgICAgIG1hdGNoX2Zyb250KCBjaGFyX3R5cGUgYyApOwotICAgIGJvb2wgICAgICAgICAgICBlb2koKSBjb25zdDsKLQotICAgIC8vIHRyYW5zYWN0aW9uIGxvZ2ljIHN1cHBvcnQKLSAgICB2b2lkICAgICAgICAgICAgY29tbWl0KCk7Ci0gICAgdm9pZCAgICAgICAgICAgIHJvbGxiYWNrKCk7Ci0KLSAgICAvLyBjdXJyZW50IHBvc2l0aW9uIGFjY2VzczsgdXNlZCB0byBzYXZlIHNvbWUgcmVmZXJlbmNlIHBvaW50cyBpbiBpbnB1dAotICAgIHN0ZDo6c2l6ZV90ICAgICBpbnB1dF9wb3MoKSBjb25zdDsKLQotICAgIC8vIHJldHVybnMgdHJ1ZSBpZiBtaXNtYXRjaCBkZXRlY3RlZCBkdXJpbmcgaW5wdXQgcGFyc2luZyBoYW5kbGVkIHN1Y2Nlc3NmdWxseQotICAgIGJvb2wgICAgICAgICAgICBoYW5kbGVfbWlzbWF0Y2goKTsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBkc3RyaW5nICAgICAgICAgICAgICAgICBtX2J1ZmZlcjsKLSAgICBjc3RyaW5nICAgICAgICAgICAgICAgICBtX3dvcmtfYnVmZmVyOwotCi0gICAgY3N0cmluZyAgICAgICAgICAgICAgICAgbV90b2tlbjsKLSAgICBjc3RyaW5nOjppdGVyYXRvciAgICAgICBtX2NvbW1pdGVkX2VuZDsKLQotICAgIHNoYXJlZF9hcnJheTxjaGFyX3R5cGU+IG1fcmVtYWluZGVyOwotICAgIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgIG1fcmVtYWluZGVyX3NpemU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fT0ZGTElORQotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5pcHA+Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0FSR1ZfVFJBVkVSU0VSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWMwNDdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBmYWNpbGl0eSB0byBoaWRlIGlucHV0IHRyYXZlcnNpbmcgZGV0YWlscwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0FSR1ZfVFJBVkVSU0VSX0lQUF8wNzA2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0FSR1ZfVFJBVkVSU0VSX0lQUF8wNzA2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdHJhY2UuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxjc3RyaW5nPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6Om1lbWNweTsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6YXJndl90cmF2ZXJzZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUKLWFyZ3ZfdHJhdmVyc2VyOjphcmd2X3RyYXZlcnNlcigpCi06IHBfaWdub3JlX21pc21hdGNoKCBmYWxzZSApLCBwX3NlcGFyYXRvciggTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJyAnICkgKQotewotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotYXJndl90cmF2ZXJzZXI6OmluaXQoIGludCBhcmdjLCBjaGFyX3R5cGUqKiBhcmd2ICkKLXsKLSAgICBmb3IoIGludCBpbmRleCA9IDE7IGluZGV4IDwgYXJnYzsgKytpbmRleCApIHsKLSAgICAgICAgbV9idWZmZXIgKz0gYXJndltpbmRleF07Ci0gICAgICAgIGlmKCBpbmRleCAhPSBhcmdjLTEgKQotICAgICAgICAgICAgbV9idWZmZXIgKz0gTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJyAnICk7Ci0gICAgfQotCi0gICAgbV9yZW1haW5kZXIucmVzZXQoIG5ldyBjaGFyX3R5cGVbbV9idWZmZXIuc2l6ZSgpKzFdICk7Ci0gICAgbV9yZW1haW5kZXJfc2l6ZSAgICA9IDA7Ci0gICAgbV93b3JrX2J1ZmZlciAgICAgICA9IG1fYnVmZmVyOwotICAgIG1fY29tbWl0ZWRfZW5kICAgICAgPSBtX3dvcmtfYnVmZmVyLmJlZ2luKCk7Ci0KLSAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIklucHV0IGJ1ZmZlcjogIiA8PCBtX2J1ZmZlciApOwotCi0gICAgbmV4dF90b2tlbigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotYXJndl90cmF2ZXJzZXI6OnJlbWFpbmRlciggaW50JiBhcmdjLCBjaGFyX3R5cGUqKiBhcmd2ICkKLXsKLSAgICBhcmdjID0gMTsKLSAgICBzdGQ6OnNpemVfdCBwb3MgPSAwOwotICAgIHdoaWxlKHBvcyA8IG1fcmVtYWluZGVyX3NpemUgKSB7Ci0gICAgICAgIGFyZ3ZbYXJnYysrXSA9IG1fcmVtYWluZGVyLmdldCgpICsgcG9zOwotCi0gICAgICAgIHBvcyA9IHN0ZDo6ZmluZCggbV9yZW1haW5kZXIuZ2V0KCkgKyBwb3MsIG1fcmVtYWluZGVyLmdldCgpICsgbV9yZW1haW5kZXJfc2l6ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJyAnICkgKSAtIG1fcmVtYWluZGVyLmdldCgpOwotICAgICAgICBtX3JlbWFpbmRlcltwb3MrK10gPSBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnXDAnICk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgY3N0cmluZwotYXJndl90cmF2ZXJzZXI6OnRva2VuKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90b2tlbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWFyZ3ZfdHJhdmVyc2VyOjpuZXh0X3Rva2VuKCkKLXsKLSAgICBpZiggbV93b3JrX2J1ZmZlci5pc19lbXB0eSgpICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93b3JrX2J1ZmZlci50cmltX2xlZnQoIG1fdG9rZW4uc2l6ZSgpICk7IC8vIHNraXAgcmVtYWluZGVyIG9mIGN1cnJlbnQgdG9rZW4KLQotICAgIGlmKCBtX3dvcmtfYnVmZmVyLnNpemUoKSAhPSBtX2J1ZmZlci5zaXplKCkgKSAvLyAhISBpcyB0aGVyZSBhIGJldHRlciB3YXkgdG8gaWRlbnRpZnkgZmlyc3QgdG9rZW4KLSAgICAgICAgbV93b3JrX2J1ZmZlci50cmltX2xlZnQoIDEgKTsgLy8gc2tpcCBzZXBhcmF0b3IgaWYgbm90IGZpcnN0IHRva2VuOwotCi0gICAgbV90b2tlbi5hc3NpZ24oIG1fd29ya19idWZmZXIuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpmaW5kKCBtX3dvcmtfYnVmZmVyLmJlZ2luKCksIG1fd29ya19idWZmZXIuZW5kKCksIHBfc2VwYXJhdG9yICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGNzdHJpbmcKLWFyZ3ZfdHJhdmVyc2VyOjppbnB1dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd29ya19idWZmZXI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1hcmd2X3RyYXZlcnNlcjo6dHJpbSggc3RkOjpzaXplX3Qgc2l6ZSApCi17Ci0gICAgbV93b3JrX2J1ZmZlci50cmltX2xlZnQoIHNpemUgKTsKLQotICAgIGlmKCBzaXplIDw9IG1fdG9rZW4uc2l6ZSgpICkKLSAgICAgICAgbV90b2tlbi50cmltX2xlZnQoIHNpemUgKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbV90b2tlbi5hc3NpZ24oIG1fd29ya19idWZmZXIuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZmluZCggbV93b3JrX2J1ZmZlci5iZWdpbigpLCBtX3dvcmtfYnVmZmVyLmVuZCgpLCBwX3NlcGFyYXRvciApICk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYXJndl90cmF2ZXJzZXI6Om1hdGNoX2Zyb250KCBjc3RyaW5nIHN0ciApCi17Ci0gICAgcmV0dXJuIG1fd29ya19idWZmZXIuc2l6ZSgpIDwgc3RyLnNpemUoKSA/IGZhbHNlIDogbV93b3JrX2J1ZmZlci5zdWJzdHIoIDAsIHN0ci5zaXplKCkgKSA9PSBzdHI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1hcmd2X3RyYXZlcnNlcjo6bWF0Y2hfZnJvbnQoIGNoYXJfdHlwZSBjICkKLXsKLSAgICByZXR1cm4gZmlyc3RfY2hhciggbV93b3JrX2J1ZmZlciApID09IGM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1hcmd2X3RyYXZlcnNlcjo6ZW9pKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93b3JrX2J1ZmZlci5pc19lbXB0eSgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotYXJndl90cmF2ZXJzZXI6OmNvbW1pdCgpCi17Ci0gICAgbV9jb21taXRlZF9lbmQgPSBtX3dvcmtfYnVmZmVyLmJlZ2luKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1hcmd2X3RyYXZlcnNlcjo6cm9sbGJhY2soKQotewotICAgIG1fd29ya19idWZmZXIuYXNzaWduKCBtX2NvbW1pdGVkX2VuZCwgbV93b3JrX2J1ZmZlci5lbmQoKSApOwotICAgIG1fdG9rZW4uYXNzaWduKCBtX3dvcmtfYnVmZmVyLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6ZmluZCggbV93b3JrX2J1ZmZlci5iZWdpbigpLCBtX3dvcmtfYnVmZmVyLmVuZCgpLCBwX3NlcGFyYXRvciApICk7Ci0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHN0ZDo6c2l6ZV90Ci1hcmd2X3RyYXZlcnNlcjo6aW5wdXRfcG9zKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93b3JrX2J1ZmZlci5iZWdpbigpIC0gbV9jb21taXRlZF9lbmQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1hcmd2X3RyYXZlcnNlcjo6aGFuZGxlX21pc21hdGNoKCkKLXsKLSAgICBpZiggIXBfaWdub3JlX21pc21hdGNoICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RkOjptZW1jcHkoIG1fcmVtYWluZGVyLmdldCgpICsgbV9yZW1haW5kZXJfc2l6ZSwgdG9rZW4oKS5iZWdpbigpLCB0b2tlbigpLnNpemUoKSApOwotICAgIG1fcmVtYWluZGVyX3NpemUgKz0gdG9rZW4oKS5zaXplKCk7Ci0gICAgbV9yZW1haW5kZXJbbV9yZW1haW5kZXJfc2l6ZSsrXSA9IHBfc2VwYXJhdG9yOwotCi0gICAgbmV4dF90b2tlbigpOwotICAgIGNvbW1pdCgpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9BUkdWX1RSQVZFUlNFUl9JUFBfMDcwNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYmFzaWNfcGFyYW1ldGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9iYXNpY19wYXJhbWV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWVjMmI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9iYXNpY19wYXJhbWV0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZ2VuZXJpYyBjdXN0b20gcGFyYW1ldGVyIGdlbmVyYXRvcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0JBU0lDX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9CQVNJQ19QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS90eXBlZF9wYXJhbWV0ZXIuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2Jhc2VfZnJvbV9tZW1iZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgIHJ1bnRpbWU6OmNsYTo6YmFzaWNfcGFyYW1ldGVyICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSWRQb2xpY3k+Ci1jbGFzcyBiYXNpY19wYXJhbWV0ZXIgOiBwcml2YXRlIGJhc2VfZnJvbV9tZW1iZXI8SWRQb2xpY3k+LCBwdWJsaWMgdHlwZWRfcGFyYW1ldGVyPFQ+IHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBleHBsaWNpdCAgICBiYXNpY19wYXJhbWV0ZXIoIGNzdHJpbmcgbiApIAotICAgIDogYmFzZV9mcm9tX21lbWJlcjxJZFBvbGljeT4oKQotICAgICwgdHlwZWRfcGFyYW1ldGVyPFQ+KCBiYXNlX2Zyb21fbWVtYmVyPElkUG9saWN5Pjo6bWVtYmVyICkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmFjY2VwdF9tb2RpZmllciggbmFtZSA9IG4gKTsKLSAgICB9Ci0KLSAgICAvLyBwYXJhbWV0ZXIgcHJvcGVydGllcyBtb2RpZmljYXRpb24KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgICAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIHR5cGVkX3BhcmFtZXRlcjxUPjo6YWNjZXB0X21vZGlmaWVyKCBtICk7Ci0KLSAgICAgICAgYmFzZV9mcm9tX21lbWJlcjxJZFBvbGljeT46Om1lbWJlci5hY2NlcHRfbW9kaWZpZXIoIG0gKTsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTV9HRU5FUkFUT1JTKCBwYXJhbV90eXBlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgc2hhcmVkX3B0cjxwYXJhbV90eXBlICMjIF90PFQ+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wYXJhbV90eXBlKCBjc3RyaW5nIG5hbWUgPSBjc3RyaW5nKCkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIHNoYXJlZF9wdHI8cGFyYW1fdHlwZSAjIyBfdDxUPiA+KCBuZXcgcGFyYW1fdHlwZSAjIyBfdDxUPiggbmFtZSApICk7ICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgc2hhcmVkX3B0cjxwYXJhbV90eXBlICMjIF90PGNzdHJpbmc+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wYXJhbV90eXBlKCBjc3RyaW5nIG5hbWUgPSBjc3RyaW5nKCkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIHNoYXJlZF9wdHI8cGFyYW1fdHlwZSAjIyBfdDxjc3RyaW5nPiA+KCBuZXcgcGFyYW1fdHlwZSAjIyBfdDxjc3RyaW5nPiggbmFtZSApICk7ICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9CQVNJQ19QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmOWFiY2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgbW9kZWwgb2YgcGFyYW1ldGVyIHdpdGggc2luZ2xlIGNoYXIgbmFtZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0NIQVJfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0NIQVJfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Jhc2ljX3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGNoYXJfbmFtZV9wb2xpY3kgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgY2hhcl9uYW1lX3BvbGljeSA6IHB1YmxpYyBiYXNpY19uYW1pbmdfcG9saWN5IHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGNoYXJfbmFtZV9wb2xpY3koKTsKLSAgICBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMIH5jaGFyX25hbWVfcG9saWN5KCkge30KLQotICAgIC8vIHBvbGljeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGJvb2wgICAgY29uZmxpY3Rfd2l0aCggaWRlbnRpZmljYXRpb25fcG9saWN5IGNvbnN0JiApIGNvbnN0OwotCi0gICAgLy8gQWNjZXB0IG1vZGlmaWVyCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICAgICAgICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgYmFzaWNfbmFtaW5nX3BvbGljeTo6YWNjZXB0X21vZGlmaWVyKCBtICk7Ci0KLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoIHBfbmFtZS0+c2l6ZSgpIDw9IDEsICJJbnZhbGlkIHBhcmFtZXRlciBuYW1lICIgIDw8IHBfbmFtZSApOwotICAgIH0KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBydW50aW1lOjpjbGE6OmNoYXJfcGFyYW1ldGVyICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGNoYXJfcGFyYW1ldGVyX3QgOiBwdWJsaWMgYmFzaWNfcGFyYW1ldGVyPFQsY2hhcl9uYW1lX3BvbGljeT4gewotICAgIHR5cGVkZWYgYmFzaWNfcGFyYW1ldGVyPFQsY2hhcl9uYW1lX3BvbGljeT4gYmFzZTsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBleHBsaWNpdCAgICBjaGFyX3BhcmFtZXRlcl90KCBjaGFyX3R5cGUgbmFtZSApIDogYmFzZSggY3N0cmluZyggJm5hbWUsIDEgKSApIHt9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHNoYXJlZF9wdHI8Y2hhcl9wYXJhbWV0ZXJfdDxUPiA+Ci1jaGFyX3BhcmFtZXRlciggY2hhcl90eXBlIG5hbWUgKQotewotICAgIHJldHVybiBzaGFyZWRfcHRyPGNoYXJfcGFyYW1ldGVyX3Q8VD4gPiggbmV3IGNoYXJfcGFyYW1ldGVyX3Q8VD4oIG5hbWUgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmxpbmUgc2hhcmVkX3B0cjxjaGFyX3BhcmFtZXRlcl90PGNzdHJpbmc+ID4KLWNoYXJfcGFyYW1ldGVyKCBjaGFyX3R5cGUgbmFtZSApCi17Ci0gICAgcmV0dXJuIHNoYXJlZF9wdHI8Y2hhcl9wYXJhbWV0ZXJfdDxjc3RyaW5nPiA+KCBuZXcgY2hhcl9wYXJhbWV0ZXJfdDxjc3RyaW5nPiggbmFtZSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgaW5saW5lCi0jICBpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmlwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfQ0hBUl9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMWRiNjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgbW9kZWwgb2YgcGFyYW1ldGVyIHdpdGggc2luZ2xlIGNoYXIgbmFtZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0NIQVJfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0NIQVJfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGNoYXJfbmFtZV9wb2xpY3kgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIAotY2hhcl9uYW1lX3BvbGljeTo6Y2hhcl9uYW1lX3BvbGljeSgpCi06IGJhc2ljX25hbWluZ19wb2xpY3koIHJ0dGk6OnR5cGVfaWQ8Y2hhcl9uYW1lX3BvbGljeT4oKSApCi17Ci0gICAgYXNzaWduX29wKCBwX3ByZWZpeC52YWx1ZSwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiLSIgKSwgMCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotY2hhcl9uYW1lX3BvbGljeTo6Y29uZmxpY3Rfd2l0aCggaWRlbnRpZmljYXRpb25fcG9saWN5IGNvbnN0JiBpZCApIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlkLnBfdHlwZV9pZCA9PSBwX3R5cGVfaWQgJiYgCi0gICAgICAgICAgIHBfbmFtZSA9PSBzdGF0aWNfY2FzdDxjaGFyX25hbWVfcG9saWN5IGNvbnN0Jj4oIGlkICkucF9uYW1lOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfQ0hBUl9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2RldGFpbC9hcmd1bWVudF92YWx1ZV91c2FnZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZGV0YWlsL2FyZ3VtZW50X3ZhbHVlX3VzYWdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgwNTBiMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZGV0YWlsL2FyZ3VtZW50X3ZhbHVlX3VzYWdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBQZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgbW9kaWZ5LCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUKLS8vICBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCi0vLyAgVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LAotLy8gIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuCi0gIAotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogYXJndW1lbnQgdXNhZ2UgcHJpbnRpbmcgaGVscGVycwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0FSR1VNRU5UX1ZBTFVFX1VTQUdFX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0FSR1VNRU5UX1ZBTFVFX1VTQUdFX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2NvbXBhcmUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KLQotLy8gU1RMCi0vLyAhISBjYW4gd2UgZWxpbWluYXRlIHRoZXNlIGluY2x1ZGVzPwotI2luY2x1ZGUgPGxpc3Q+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgYXJndW1lbnRfdmFsdWVfdXNhZ2UgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLS8vIGdlbmVyaWMgY2FzZQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkCi1hcmd1bWVudF92YWx1ZV91c2FnZSggZm9ybWF0X3N0cmVhbSYgZnMsIGxvbmcsIFQqID0gMCApCi17Ci0gICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiPHZhbHVlPiIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gc3BlY2lhbGl6YXRpb24gZm9yIGxpc3Qgb2YgdmFsdWVzCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQKLWFyZ3VtZW50X3ZhbHVlX3VzYWdlKCBmb3JtYXRfc3RyZWFtJiBmcywgaW50LCBzdGQ6Omxpc3Q8VD4qID0gMCApCi17Ci0gICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiKDx2YWx1ZTE+LCAuLi4sIDx2YWx1ZU4+KSIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gc3BlY2lhbGl6YXRpb24gZm9yIHR5cGUgYm9vbAotaW5saW5lIHZvaWQKLWFyZ3VtZW50X3ZhbHVlX3VzYWdlKCBmb3JtYXRfc3RyZWFtJiBmcywgIGludCwgYm9vbCogPSAwICkKLXsKLSAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICJ5ZXN8eXxub3xuIiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBydF9jbGFfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9BUkdVTUVOVF9WQUxVRV9VU0FHRV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjOGMwMGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2R1YWxfbmFtZV9wYXJhbWV0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBtb2RlbCBvZiBnZW5lcmljIHBhcmFtZXRlciB3aXRoIGR1YWwgbmFtaW5nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfRFVBTF9OQU1FX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9EVUFMX05BTUVfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBkdWFsX25hbWVfcG9saWN5ICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIGR1YWxfbmFtZV9wb2xpY3kgOiBwdWJsaWMgZHVhbF9pZF9wb2xpY3k8ZHVhbF9uYW1lX3BvbGljeSxzdHJpbmdfbmFtZV9wb2xpY3ksY2hhcl9uYW1lX3BvbGljeT4gewotcHVibGljOgotICAgIGR1YWxfbmFtZV9wb2xpY3koKTsKLQotICAgIC8vIEFjY2VwdCBtb2RpZmllcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgYWNjZXB0X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBpZiggbS5oYXMoIHByZWZpeCApICkgewotICAgICAgICAgICAgc2V0X3ByZWZpeCggbVtwcmVmaXhdICk7Ci0gICAgICAgICAgICBtLmVyYXNlKCBwcmVmaXggKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmKCBtLmhhcyggbmFtZSApICkgewotICAgICAgICAgICAgc2V0X25hbWUoIG1bbmFtZV0gKTsKLSAgICAgICAgICAgIG0uZXJhc2UoIG5hbWUgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmKCBtLmhhcyggc2VwYXJhdG9yICkgKSB7Ci0gICAgICAgICAgICBzZXRfc2VwYXJhdG9yKCBtW3NlcGFyYXRvcl0gKTsKLSAgICAgICAgICAgIG0uZXJhc2UoIHNlcGFyYXRvciApOwotICAgICAgICB9Ci0KLSAgICAgICAgZHVhbF9pZF9wb2xpY3k8ZHVhbF9uYW1lX3BvbGljeSxzdHJpbmdfbmFtZV9wb2xpY3ksY2hhcl9uYW1lX3BvbGljeT46OmFjY2VwdF9tb2RpZmllciggbSApOwotICAgIH0KLXByaXZhdGU6Ci0gICAgdm9pZCAgICBzZXRfcHJlZml4KCBjc3RyaW5nICk7Ci0gICAgdm9pZCAgICBzZXRfbmFtZSggY3N0cmluZyApOwotICAgIHZvaWQgICAgc2V0X3NlcGFyYXRvciggY3N0cmluZyApOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIHJ1bnRpbWU6OmNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlciAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgZHVhbF9uYW1lX3BhcmFtZXRlcl90IDogcHVibGljIGJhc2ljX3BhcmFtZXRlcjxULGR1YWxfbmFtZV9wb2xpY3k+IHsKLSAgICB0eXBlZGVmIGJhc2ljX3BhcmFtZXRlcjxULGR1YWxfbmFtZV9wb2xpY3k+IGJhc2U7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgZXhwbGljaXQgICAgZHVhbF9uYW1lX3BhcmFtZXRlcl90KCBjc3RyaW5nIG5hbWUgKSA6IGJhc2UoIG5hbWUgKSB7fQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfQ0xBX05BTUVEX1BBUkFNX0dFTkVSQVRPUlMoIGR1YWxfbmFtZV9wYXJhbWV0ZXIgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fT0ZGTElORQotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmlwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfRFVBTF9OQU1FX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYWYzODYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2R1YWxfbmFtZV9wYXJhbWV0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBtb2RlbCBvZiBnZW5lcmljIHBhcmFtZXRlciB3aXRoIGR1YWwgbmFtaW5nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfRFVBTF9OQU1FX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9EVUFMX05BTUVfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2R1YWxfbmFtZV9wYXJhbWV0ZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGR1YWxfbmFtZV9wb2xpY3kgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIAotZHVhbF9uYW1lX3BvbGljeTo6ZHVhbF9uYW1lX3BvbGljeSgpCi17Ci0gICAgbV9wcmltYXJ5LmFjY2VwdF9tb2RpZmllciggcHJlZml4ID0gTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiLS0iICkgKTsKLSAgICBtX3NlY29uZGFyeS5hY2NlcHRfbW9kaWZpZXIoIHByZWZpeCA9IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIi0iICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSB2b2lkCi1zcGxpdCggc3RyaW5nX25hbWVfcG9saWN5JiBzbnAsIGNoYXJfbmFtZV9wb2xpY3kmIGNucCwgY3N0cmluZyBzcmMsIEsgY29uc3QmIGsgKQotewotICAgIGNzdHJpbmc6Oml0ZXJhdG9yIHNlcCA9IHN0ZDo6ZmluZCggc3JjLmJlZ2luKCksIHNyYy5lbmQoKSwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ3wnICkgKTsKLSAgICAKLSAgICBpZiggc2VwICE9IHNyYy5iZWdpbigpICkKLSAgICAgICAgc25wLmFjY2VwdF9tb2RpZmllciggayA9IGNzdHJpbmcoIHNyYy5iZWdpbigpLCBzZXAgKSApOwotCi0gICAgaWYoIHNlcCAhPSBzcmMuZW5kKCkgKQotICAgICAgICBjbnAuYWNjZXB0X21vZGlmaWVyKCBrID0gY3N0cmluZyggc2VwKzEsIHNyYy5lbmQoKSApICk7Ci19Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1kdWFsX25hbWVfcG9saWN5OjpzZXRfcHJlZml4KCBjc3RyaW5nIHNyYyApCi17Ci0gICAgc3BsaXQoIG1fcHJpbWFyeSwgbV9zZWNvbmRhcnksIHNyYywgcHJlZml4ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1kdWFsX25hbWVfcG9saWN5OjpzZXRfbmFtZSggY3N0cmluZyBzcmMgKQotewotICAgIHNwbGl0KCBtX3ByaW1hcnksIG1fc2Vjb25kYXJ5LCBzcmMsIG5hbWUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWR1YWxfbmFtZV9wb2xpY3k6OnNldF9zZXBhcmF0b3IoIGNzdHJpbmcgc3JjICkKLXsKLSAgICBzcGxpdCggbV9wcmltYXJ5LCBtX3NlY29uZGFyeSwgc3JjLCBzZXBhcmF0b3IgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0RVQUxfTkFNRV9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDIyMTgwOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNsYSBzdWJzeXN0ZW0gZm9yd2FyZCBkZWNsYXJhdGlvbnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9GV0RfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfRldEX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi1jbGFzcyBwYXJzZXI7Ci1jbGFzcyBwYXJhbWV0ZXI7Ci10eXBlZGVmIHNoYXJlZF9wdHI8cGFyYW1ldGVyPiBwYXJhbWV0ZXJfcHRyOwotY2xhc3MgbmFtaW5nX3BvbGljeTsKLXR5cGVkZWYgc2hhcmVkX3B0cjxuYW1pbmdfcG9saWN5PiBuYW1pbmdfcG9saWN5X3B0cjsKLWNsYXNzIGFyZ3ZfdHJhdmVyc2VyOwotCi1uYW1lc3BhY2UgcnRfY2xhX2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIGNvbnN0X2dlbmVyYXRvcjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIHJlZl9nZW5lcmF0b3I7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIGFzc2lnbmVyOwotCi1jbGFzcyBuYW1lZF9wYXJhbWV0ZXJfYmFzZTsKLWNsYXNzIHBvc2l0aW9uYWxfcGFyYW1ldGVyX2Jhc2U7Ci0KLX0gLy8gbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0ZXRF9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjU4N2I0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzb21lIGdlbmVyaWMgaWRlbnRpZmljYXRpb24gcG9saWNpZXMgZGVmaW5pdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0lEX1BPTElDWV9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9JRF9QT0xJQ1lfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbW9kaWZpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9pZF9wb2xpY3kuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIG5hbWluZ19wb2xpY3lfYmFzZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vIG1vZGVsOiA8cHJlZml4PiA8bmFtZT4gPHNlcGFydG9yPgotCi1jbGFzcyBiYXNpY19uYW1pbmdfcG9saWN5IDogcHVibGljIGlkZW50aWZpY2F0aW9uX3BvbGljeSB7Ci1wdWJsaWM6Ci0gICAgLy8gUHVibGljIHByb3BlcnRpZXMKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxkc3RyaW5nPiAgICBwX3ByZWZpeDsKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxkc3RyaW5nPiAgICBwX25hbWU7Ci0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8ZHN0cmluZz4gICAgcF9zZXBhcmF0b3I7Ci0KLSAgICAvLyBQb2xpY3kgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBib29sICAgIHJlc3BvbmRzX3RvKCBjc3RyaW5nIG5hbWUgKSBjb25zdCAgICAgICB7IHJldHVybiBwX25hbWUgPT0gbmFtZTsgfQotICAgIHZpcnR1YWwgY3N0cmluZyBpZF8yX3JlcG9ydCgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gcF9uYW1lLmdldCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkICAgIHVzYWdlX2luZm8oIGZvcm1hdF9zdHJlYW0mIGZzICkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sICAgIG1hdGNoaW5nKCBwYXJhbWV0ZXIgY29uc3QmIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCBwcmltYXJ5ICkgY29uc3Q7Ci0KLSAgICAvLyBBY2NlcHQgbW9kaWZpZXIKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgICAgICAgICAgYWNjZXB0X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBuZnA6Om9wdGlvbmFsbHlfYXNzaWduKCBwX3ByZWZpeC52YWx1ZSwgICAgbSwgcHJlZml4ICk7Ci0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIHBfbmFtZS52YWx1ZSwgICAgICBtLCBuYW1lICk7Ci0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIHBfc2VwYXJhdG9yLnZhbHVlLCBtLCBzZXBhcmF0b3IgKTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBiYXNpY19uYW1pbmdfcG9saWN5KCBydHRpOjppZF90IGR5bl90eXBlICkKLSAgICA6IGlkZW50aWZpY2F0aW9uX3BvbGljeSggZHluX3R5cGUgKQotICAgIHt9Ci0gICAgTkROQk9PU1RfUlRfUEFSQU1fVU5ORUVERURfVklSVFVBTCB+YmFzaWNfbmFtaW5nX3BvbGljeSgpIHt9Ci0KLSAgICAvLyBOYW1pbmcgcG9saWN5IGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCAgICBtYXRjaF9wcmVmaXgoIGFyZ3ZfdHJhdmVyc2VyJiB0ciApIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCAgICBtYXRjaF9uYW1lKCBhcmd2X3RyYXZlcnNlciYgdHIgKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgICAgbWF0Y2hfc2VwYXJhdG9yKCBhcmd2X3RyYXZlcnNlciYgdHIsIGJvb2wgb3B0aW9uYWxfdmFsdWUgKSBjb25zdDsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgZHVhbF9pZF9wb2xpY3kgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9zdERlcml2ZWQsdHlwZW5hbWUgUHJpbWFyeUlkLHR5cGVuYW1lIFNlY29uZElkPgotY2xhc3MgZHVhbF9pZF9wb2xpY3kgOiBwdWJsaWMgaWRlbnRpZmljYXRpb25fcG9saWN5IHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGR1YWxfaWRfcG9saWN5KCkKLSAgICA6IGlkZW50aWZpY2F0aW9uX3BvbGljeSggcnR0aTo6dHlwZV9pZDxNb3N0RGVyaXZlZD4oKSApCi0gICAgLCBtX3ByaW1hcnkoKQotICAgICwgbV9zZWNvbmRhcnkoKQotICAgIHt9Ci0KLSAgICAvLyBQb2xpY3kgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBib29sICAgIHJlc3BvbmRzX3RvKCBjc3RyaW5nIG5hbWUgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJpbWFyeS5yZXNwb25kc190byggbmFtZSApIHx8IG1fc2Vjb25kYXJ5LnJlc3BvbmRzX3RvKCBuYW1lICk7Ci0gICAgfQotICAgIHZpcnR1YWwgYm9vbCAgICBjb25mbGljdF93aXRoKCBpZGVudGlmaWNhdGlvbl9wb2xpY3kgY29uc3QmIGlkX3AgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlkX3AuY29uZmxpY3Rfd2l0aCggbV9wcmltYXJ5ICkgfHwgaWRfcC5jb25mbGljdF93aXRoKCBtX3NlY29uZGFyeSApOwotICAgIH0KLSAgICB2aXJ0dWFsIGNzdHJpbmcgaWRfMl9yZXBvcnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJpbWFyeS5pZF8yX3JlcG9ydCgpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgICAgdXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKSBjb25zdAotICAgIHsKLSAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ3snICk7Ci0gICAgICAgIG1fcHJpbWFyeS51c2FnZV9pbmZvKCBmcyApOwotICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnfCcgKTsKLSAgICAgICAgbV9zZWNvbmRhcnkudXNhZ2VfaW5mbyggZnMgKTsKLSAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ30nICk7Ci0gICAgfQotICAgIHZpcnR1YWwgYm9vbCAgICBtYXRjaGluZyggcGFyYW1ldGVyIGNvbnN0JiBwLCBhcmd2X3RyYXZlcnNlciYgdHIsIGJvb2wgcHJpbWFyeSApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wcmltYXJ5Lm1hdGNoaW5nKCBwLCB0ciwgcHJpbWFyeSApIHx8IG1fc2Vjb25kYXJ5Lm1hdGNoaW5nKCBwLCB0ciwgcHJpbWFyeSApOwotICAgIH0KLQotICAgIC8vIEFjY2VwdCBtb2RpZmllcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgYWNjZXB0X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBtX3ByaW1hcnkuYWNjZXB0X21vZGlmaWVyKCBtICk7Ci0gICAgICAgIG1fc2Vjb25kYXJ5LmFjY2VwdF9tb2RpZmllciggbSApOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1VOTkVFREVEX1ZJUlRVQUwgfmR1YWxfaWRfcG9saWN5KCkge30KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIFByaW1hcnlJZCAgICAgICBtX3ByaW1hcnk7Ci0gICAgU2Vjb25kSWQgICAgICAgIG1fc2Vjb25kYXJ5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmlwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfSURfUE9MSUNZX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5YTQ2MmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc29tZSBnZW5lcmljIGlkZW50aWZpY2F0aW9uIHBvbGljaWVzIGltcGxlbWVudGF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfSURfUE9MSUNZX0lQUF8wNjI5MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0lEX1BPTElDWV9JUFBfMDYyOTA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJhbWV0ZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgYmFzaWNfbmFtaW5nX3BvbGljeSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWJhc2ljX25hbWluZ19wb2xpY3k6OnVzYWdlX2luZm8oIGZvcm1hdF9zdHJlYW0mIGZzICkgY29uc3QKLXsKLSAgICBmcyA8PCBwX3ByZWZpeCA8PCBwX25hbWUgPDwgcF9zZXBhcmF0b3I7Ci0KLSAgICBpZiggcF9zZXBhcmF0b3ItPmVtcHR5KCkgKQotICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnICcgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWJhc2ljX25hbWluZ19wb2xpY3k6Om1hdGNoX3ByZWZpeCggYXJndl90cmF2ZXJzZXImIHRyICkgY29uc3QKLXsKLSAgICBpZiggIXRyLm1hdGNoX2Zyb250KCBwX3ByZWZpeC5nZXQoKSApICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdHIudHJpbSggcF9wcmVmaXgtPnNpemUoKSApOwotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotICAgIAotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWJhc2ljX25hbWluZ19wb2xpY3k6Om1hdGNoX25hbWUoIGFyZ3ZfdHJhdmVyc2VyJiB0ciApIGNvbnN0Ci17Ci0gICAgaWYoICF0ci5tYXRjaF9mcm9udCggcF9uYW1lLmdldCgpICkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0ci50cmltKCBwX25hbWUtPnNpemUoKSApOwotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotICAgIAotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWJhc2ljX25hbWluZ19wb2xpY3k6Om1hdGNoX3NlcGFyYXRvciggYXJndl90cmF2ZXJzZXImIHRyLCBib29sIG9wdGlvbmFsX3ZhbHVlICkgY29uc3QKLXsKLSAgICBpZiggcF9zZXBhcmF0b3ItPmVtcHR5KCkgKSB7Ci0gICAgICAgIGlmKCAhdHIudG9rZW4oKS5pc19lbXB0eSgpICkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB0ci50cmltKCAxICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiggIXRyLm1hdGNoX2Zyb250KCBwX3NlcGFyYXRvci5nZXQoKSApICkgewotICAgICAgICAgICAgLy8gaWYgcGFyYW1ldGVyIGhhcyBvcHRpb25hbCB2YWx1ZSBzZXBhcmF0b3IgaXMgb3B0aW9uYWwgYXMgd2VsbAotICAgICAgICAgICAgaWYoIG9wdGlvbmFsX3ZhbHVlICYmICggdHIuZW9pKCkgfHwgdHIubWF0Y2hfZnJvbnQoICcgJyApICkgKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICB0ci50cmltKCBwX3NlcGFyYXRvci0+c2l6ZSgpICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1iYXNpY19uYW1pbmdfcG9saWN5OjptYXRjaGluZyggcGFyYW1ldGVyIGNvbnN0JiBwLCBhcmd2X3RyYXZlcnNlciYgdHIsIGJvb2wgKSBjb25zdAotewotICAgIGlmKCAhbWF0Y2hfcHJlZml4KCB0ciApICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICBpZiggIW1hdGNoX25hbWUoIHRyICkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiggIW1hdGNoX3NlcGFyYXRvciggdHIsIHAucF9vcHRpb25hbF92YWx1ZSApICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9JRF9QT0xJQ1lfSVBQXzA2MjkwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2FyZ3VtZW50X2ZhY3RvcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2FyZ3VtZW50X2ZhY3RvcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzkwYmI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9hcmd1bWVudF9mYWN0b3J5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgaW50ZXJmYWNlIGZvciBhcmd1bWVudF9mYWN0b3J5Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfSUZBQ0VfQVJHVU1FTlRfRkFDVE9SWV9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9JRkFDRV9BUkdVTUVOVF9GQUNUT1JZX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgYXJndW1lbnRfZmFjdG9yeSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyBhbm90aGVyIG5hbWUgY2FuIGJlIGFyZ3VtZW50IHByb2R1Y3Rpb24gcG9saWN5Ci0KLWNsYXNzIGFyZ3VtZW50X2ZhY3RvcnkgewotcHVibGljOgotICAgIC8vIEFyZ3VtZW50IGZhY3RvcnkgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBhcmd1bWVudF9wdHIgcHJvZHVjZV91c2luZyggcGFyYW1ldGVyJiBwLCBhcmd2X3RyYXZlcnNlciYgdHIgKSA9IDA7ICAvLy8gcHJvZHVjZSBhcmd1bWVudCBiYXNlZCBvbiBpbnB1dAotICAgIHZpcnR1YWwgYXJndW1lbnRfcHRyIHByb2R1Y2VfdXNpbmcoIHBhcmFtZXRlciYgcCwgcGFyc2VyIGNvbnN0JiApICAgICAgPSAwOyAgLy8vIHByb2R1Y2UgYXJndW1lbnQgYmFzZWQgb24gaW50ZXJuYWwgZ2VuZXJhdG9yIGFuZC9vciB2YWx1ZXMgb2Ygb3RoZXIgcGFyYW1ldGVycwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgIGFyZ3VtZW50X3VzYWdlX2luZm8oIGZvcm1hdF9zdHJlYW0mIGZzICkgICAgICAgICAgPSAwOyAgLy8vIGFyZ3VtZW50IHZhbHVlIGZvcm1hdCBpbmZvcm1hdGlvbgotcHJvdGVjdGVkOgotICAgIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgfmFyZ3VtZW50X2ZhY3RvcnkoKSB7fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0lGQUNFX0FSR1VNRU5UX0ZBQ1RPUllfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2lkX3BvbGljeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvaWRfcG9saWN5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZhMGQwZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvaWRfcG9saWN5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGludGVyZmFjZSBmb3IgaWRlbnRpZmljYXRpb25fcG9saWN5Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfSUZBQ0VfSURfUE9MSUNZX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0lGQUNFX0lEX1BPTElDWV9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGlkZW50aWZpY2F0aW9uX3BvbGljeSAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI0NCkKLSNlbmRpZgotCi1jbGFzcyBpZGVudGlmaWNhdGlvbl9wb2xpY3kgewotcHVibGljOgotICAgIC8vIFB1YmxpYyBwcm9wZXJ0aWVzCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8cnR0aTo6aWRfdD4gICAgcF90eXBlX2lkOwotCi0gICAgLy8gUG9saWN5IGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCAgICByZXNwb25kc190byggY3N0cmluZyBuYW1lICkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgY3N0cmluZyBpZF8yX3JlcG9ydCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgdXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sICAgIG1hdGNoaW5nKCBwYXJhbWV0ZXIgY29uc3QmIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCBwcmltYXJ5ICkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCBib29sICAgIGNvbmZsaWN0X3dpdGgoIGlkZW50aWZpY2F0aW9uX3BvbGljeSBjb25zdCYgKSBjb25zdCA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICBpZGVudGlmaWNhdGlvbl9wb2xpY3koIHJ0dGk6OmlkX3QgZHluX3R5cGUgKQotICAgIDogcF90eXBlX2lkKCBkeW5fdHlwZSApCi0gICAge30KLSAgICBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMIH5pZGVudGlmaWNhdGlvbl9wb2xpY3koKSB7fQotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfSUZBQ0VfSURfUE9MSUNZX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9tb2RpZmllci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbW9kaWZpZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTJlNDAwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9tb2RpZmllci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBwYXJhbWV0ZXIgbW9kaWZpZXJzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfTU9ESUZJRVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfTU9ESUZJRVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9uYW1lZF9wYXJhbXMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIG1vZGlmaWVycyAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLQotbmZwOjp0eXBlZF9rZXl3b3JkPGJvb2wsc3RydWN0IG9wdGlvbmFsX3Q+ICAgICAgICAgICAgICBvcHRpb25hbF9tOwotbmZwOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbCxvcHRpb25hbF90LGJvb2w+ICAgICAgICAgICAgICBvcHRpb25hbCggdHJ1ZSApOwotbmZwOjp0eXBlZF9rZXl3b3JkPGJvb2wsc3RydWN0IHJlcXVpcmVkX3Q+ICAgICAgICAgICAgICByZXF1aXJlZF9tOwotbmZwOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbCxyZXF1aXJlZF90LGJvb2w+ICAgICAgICAgICAgICByZXF1aXJlZCggdHJ1ZSApOwotbmZwOjp0eXBlZF9rZXl3b3JkPGJvb2wsc3RydWN0IG11bHRpcGxpY2FibGVfdD4gICAgICAgICBtdWx0aXBsaWNhYmxlX207Ci1uZnA6Om5hbWVkX3BhcmFtZXRlcjxib29sLG11bHRpcGxpY2FibGVfdCxib29sPiAgICAgICAgIG11bHRpcGxpY2FibGUoIHRydWUgKTsKLW5mcDo6dHlwZWRfa2V5d29yZDxib29sLHN0cnVjdCBndWVzc19uYW1lX3Q+ICAgICAgICAgICAgZ3Vlc3NfbmFtZV9tOwotbmZwOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbCxndWVzc19uYW1lX3QsYm9vbD4gICAgICAgICAgICBndWVzc19uYW1lKCB0cnVlICk7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Ym9vbCxzdHJ1Y3QgaWdub3JlX21pc21hdGNoX3Q+ICAgICAgIGlnbm9yZV9taXNtYXRjaF9tOwotbmZwOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbCxpZ25vcmVfbWlzbWF0Y2hfdCxib29sPiAgICAgICBpZ25vcmVfbWlzbWF0Y2goIHRydWUgKTsKLW5mcDo6dHlwZWRfa2V5d29yZDxib29sLHN0cnVjdCBvcHRpb25hbF92YWx1ZV90PiAgICAgICAgb3B0aW9uYWxfdmFsdWVfbTsKLW5mcDo6bmFtZWRfcGFyYW1ldGVyPGJvb2wsb3B0aW9uYWxfdmFsdWVfdCxib29sPiAgICAgICAgb3B0aW9uYWxfdmFsdWUoIHRydWUgKTsKLQotbmZwOjp0eXBlZF9rZXl3b3JkPGNoYXJfdHlwZSxzdHJ1Y3QgaW5wdXRfc2VwYXJhdG9yX3Q+ICBpbnB1dF9zZXBhcmF0b3I7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Y3N0cmluZyxzdHJ1Y3QgcHJlZml4X3Q+ICAgICAgICAgICAgIHByZWZpeDsKLW5mcDo6dHlwZWRfa2V5d29yZDxjc3RyaW5nLHN0cnVjdCBuYW1lX3Q+ICAgICAgICAgICAgICAgbmFtZTsKLW5mcDo6dHlwZWRfa2V5d29yZDxjc3RyaW5nLHN0cnVjdCBzZXBhcmF0b3JfdD4gICAgICAgICAgc2VwYXJhdG9yOwotbmZwOjp0eXBlZF9rZXl3b3JkPGNzdHJpbmcsc3RydWN0IGRlc2NyaXB0aW9uX3Q+ICAgICAgICBkZXNjcmlwdGlvbjsKLW5mcDo6dHlwZWRfa2V5d29yZDxjc3RyaW5nLHN0cnVjdCByZWZlcl90b190PiAgICAgICAgICAgZGVmYXVsdF9yZWZlcl90bzsKLQotbmZwOjprZXl3b3JkPHN0cnVjdCBkZWZhdWx0X3ZhbHVlX3Q+ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3ZhbHVlOwotbmZwOjprZXl3b3JkPHN0cnVjdCBoYW5kbGVyX3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOwotbmZwOjprZXl3b3JkPHN0cnVjdCBpbnRlcnByZXRlcl90PiAgICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRlcjsKLW5mcDo6a2V5d29yZDxzdHJ1Y3QgYXNzaWduX3RvX3Q+ICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWduX3RvOwotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfTU9ESUZJRVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE2MGY3OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgbW9kZWwgb2YgbmFtZWQgcGFyYW1ldGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX05BTUVEX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Jhc2ljX3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgc3RyaW5nX25hbWVfcG9saWN5ICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3Mgc3RyaW5nX25hbWVfcG9saWN5IDogcHVibGljIGJhc2ljX25hbWluZ19wb2xpY3kgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgc3RyaW5nX25hbWVfcG9saWN5KCk7Ci0gICAgTkROQk9PU1RfUlRfUEFSQU1fVU5ORUVERURfVklSVFVBTCB+c3RyaW5nX25hbWVfcG9saWN5KCkge30KLQotICAgIC8vIHBvbGljeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGJvb2wgICAgcmVzcG9uZHNfdG8oIGNzdHJpbmcgbmFtZSApIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCAgICBjb25mbGljdF93aXRoKCBpZGVudGlmaWNhdGlvbl9wb2xpY3kgY29uc3QmICkgY29uc3Q7Ci0KLSAgICAvLyBBY2NlcHQgbW9kaWZpZXIKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgICAgICAgICAgYWNjZXB0X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBiYXNpY19uYW1pbmdfcG9saWN5OjphY2NlcHRfbW9kaWZpZXIoIG0gKTsKLQotICAgICAgICBpZiggbS5oYXMoIGd1ZXNzX25hbWVfbSApICkKLSAgICAgICAgICAgIG1fZ3Vlc3NfbmFtZSA9IHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIE5hbWluZyBwb2xpY3kgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBib29sICAgIG1hdGNoX25hbWUoIGFyZ3ZfdHJhdmVyc2VyJiB0ciApIGNvbnN0OwotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgYm9vbCAgICAgICAgICAgIG1fZ3Vlc3NfbmFtZTsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgIHJ1bnRpbWU6OmNsYTo6bmFtZWRfcGFyYW1ldGVyICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIG5hbWVkX3BhcmFtZXRlcl90IDogcHVibGljIGJhc2ljX3BhcmFtZXRlcjxULHN0cmluZ19uYW1lX3BvbGljeT4gewotICAgIHR5cGVkZWYgYmFzaWNfcGFyYW1ldGVyPFQsc3RyaW5nX25hbWVfcG9saWN5PiBiYXNlOwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGV4cGxpY2l0ICAgIG5hbWVkX3BhcmFtZXRlcl90KCBjc3RyaW5nIG5hbWUgKSA6IGJhc2UoIG5hbWUgKSB7fQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfQ0xBX05BTUVEX1BBUkFNX0dFTkVSQVRPUlMoIG5hbWVkX3BhcmFtZXRlciApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgaW5saW5lCi0jICBpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5pcHA+Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX05BTUVEX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjI2ZWUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgbW9kZWwgb2YgbmFtZWQgcGFyYW1ldGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX05BTUVEX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2FsZ29yaXRobS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBzdHJpbmdfbmFtZV9wb2xpY3kgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgCi1zdHJpbmdfbmFtZV9wb2xpY3k6OnN0cmluZ19uYW1lX3BvbGljeSgpCi06IGJhc2ljX25hbWluZ19wb2xpY3koIHJ0dGk6OnR5cGVfaWQ8c3RyaW5nX25hbWVfcG9saWN5PigpICkKLSwgbV9ndWVzc19uYW1lKCBmYWxzZSApCi17Ci0gICAgYXNzaWduX29wKCBwX3ByZWZpeC52YWx1ZSwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiLSIgKSwgMCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotc3RyaW5nX25hbWVfcG9saWN5OjpyZXNwb25kc190byggY3N0cmluZyBuYW1lICkgY29uc3QKLXsKLSAgICBzdGQ6OnBhaXI8Y3N0cmluZzo6aXRlcmF0b3IsZHN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG1tX3BvczsKLQotICAgIG1tX3BvcyA9IHVuaXRfdGVzdDo6bWlzbWF0Y2goIG5hbWUuYmVnaW4oKSwgbmFtZS5lbmQoKSwgcF9uYW1lLT5iZWdpbigpLCBwX25hbWUtPmVuZCgpICk7Ci0KLSAgICByZXR1cm4gbW1fcG9zLmZpcnN0ID09IG5hbWUuZW5kKCkgJiYgKG1fZ3Vlc3NfbmFtZSB8fCAobW1fcG9zLnNlY29uZCA9PSBwX25hbWUtPmVuZCgpKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI0NCkKLSNlbmRpZgotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotc3RyaW5nX25hbWVfcG9saWN5Ojpjb25mbGljdF93aXRoKCBpZGVudGlmaWNhdGlvbl9wb2xpY3kgY29uc3QmIGlkICkgY29uc3QKLXsKLSAgICBpZiggaWQucF90eXBlX2lkID09IHBfdHlwZV9pZCApIHsKLSAgICAgICAgc3RyaW5nX25hbWVfcG9saWN5IGNvbnN0JiBzbnAgPSBzdGF0aWNfY2FzdDxzdHJpbmdfbmFtZV9wb2xpY3kgY29uc3QmPiggaWQgKTsKLQotICAgICAgICBpZiggcF9uYW1lLT5lbXB0eSgpIHx8IHNucC5wX25hbWUtPmVtcHR5KCkgKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmKCBwX3ByZWZpeCAhPSBzbnAucF9wcmVmaXggKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHN0ZDo6cGFpcjxkc3RyaW5nOjpjb25zdF9pdGVyYXRvcixkc3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbW1fcG9zID0KLSAgICAgICAgICAgIHVuaXRfdGVzdDo6bWlzbWF0Y2goIHBfbmFtZS0+YmVnaW4oKSwgcF9uYW1lLT5lbmQoKSwgc25wLnBfbmFtZS0+YmVnaW4oKSwgc25wLnBfbmFtZS0+ZW5kKCkgKTsKLQotICAgICAgICByZXR1cm4gbW1fcG9zLmZpcnN0ICE9IHBfbmFtZS0+YmVnaW4oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICAvLyB0aGVyZSBpcyBjb21tb24gc3Vic3RyaW5nCi0gICAgICAgICAgICAgICAgKChtX2d1ZXNzX25hbWUgICAgJiYgKG1tX3Bvcy5zZWNvbmQgPT0gc25wLnBfbmFtZS0+ZW5kKCkpICkgfHwgIC8vIHRoYXQgbWF0Y2ggb3RoZXIgZ3V5IGFuZCBJIGFtIGd1ZXNzaW5nCi0gICAgICAgICAgICAgICAgKHNucC5tX2d1ZXNzX25hbWUgJiYgKG1tX3Bvcy5maXJzdCAgPT0gcF9uYW1lLT5lbmQoKSkgKSk7ICAgICAgIC8vIG9yIG1lIGFuZCB0aGUgb3RoZXIgZ3V5IGlzCi0gICAgfQotICAgIAotICAgIGlmKCBpZC5wX3R5cGVfaWQgPT0gcnR0aTo6dHlwZV9pZDxjaGFyX25hbWVfcG9saWN5PigpICkgewotICAgICAgICBjaGFyX25hbWVfcG9saWN5IGNvbnN0JiBjbnAgPSBzdGF0aWNfY2FzdDxjaGFyX25hbWVfcG9saWN5IGNvbnN0Jj4oIGlkICk7Ci0KLSAgICAgICAgcmV0dXJuIG1fZ3Vlc3NfbmFtZSAgICAgICAgICAgICAgICAgJiYgCi0gICAgICAgICAgICAgICAocF9wcmVmaXggPT0gY25wLnBfcHJlZml4KSAgICYmIAotICAgICAgICAgICAgICAgdW5pdF90ZXN0OjpmaXJzdF9jaGFyKCBjc3RyaW5nKCBwX25hbWUgKSApID09IHVuaXRfdGVzdDo6Zmlyc3RfY2hhciggY3N0cmluZyggY25wLnBfbmFtZSApICk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsgICAgCi19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLXN0cmluZ19uYW1lX3BvbGljeTo6bWF0Y2hfbmFtZSggYXJndl90cmF2ZXJzZXImIHRyICkgY29uc3QKLXsKLSAgICBpZiggIW1fZ3Vlc3NfbmFtZSApCi0gICAgICAgIHJldHVybiBiYXNpY19uYW1pbmdfcG9saWN5OjptYXRjaF9uYW1lKCB0ciApOwotCi0gICAgY3N0cmluZyBpbiA9IHRyLmlucHV0KCk7Ci0KLSAgICBzdGQ6OnBhaXI8Y3N0cmluZzo6aXRlcmF0b3IsZHN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG1tX3BvczsKLSAgICAKLSAgICBtbV9wb3MgPSB1bml0X3Rlc3Q6Om1pc21hdGNoKCBpbi5iZWdpbigpLCBpbi5lbmQoKSwgcF9uYW1lLT5iZWdpbigpLCBwX25hbWUtPmVuZCgpICk7Ci0KLSAgICBpZiggbW1fcG9zLmZpcnN0ID09IGluLmJlZ2luKCkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0ci50cmltKCBtbV9wb3MuZmlyc3QgLSBpbi5iZWdpbigpICk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX05BTUVEX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyYW1ldGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJhbWV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGQ2MGQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJhbWV0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogODE5MTMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgbW9kZWwgb2YgZm9ybWFsIHBhcmFtZXRlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbW9kaWZpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvYXJndW1lbnRfZmFjdG9yeS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9pZF9wb2xpY3kuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBydW50aW1lOjpjbGE6OnBhcmFtZXRlciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHBhcmFtZXRlciA6IHB1YmxpYyBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0U6OnBhcmFtZXRlciB7Ci1wdWJsaWM6Ci0gICAgcGFyYW1ldGVyKCBpZGVudGlmaWNhdGlvbl9wb2xpY3kmIElELCBhcmd1bWVudF9mYWN0b3J5JiBGLCBib29sIG9wdGlvbmFsX3ZhbHVlID0gZmFsc2UgKQotICAgIDogcF9vcHRpb25hbCggZmFsc2UgKQotICAgICwgcF9tdWx0aXBsaWNhYmxlKCBmYWxzZSApCi0gICAgLCBwX29wdGlvbmFsX3ZhbHVlKCBvcHRpb25hbF92YWx1ZSApCi0gICAgLCBtX2lkX3BvbGljeSggSUQgKQotICAgICwgbV9hcmdfZmFjdG9yeSggRiApCi0gICAge30KLQotICAgIC8vIERlc3RydWN0b3IKLSAgICB2aXJ0dWFsICAgICAgICAgfnBhcmFtZXRlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQotCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gICAgICBwX29wdGlvbmFsOwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGJvb2w+ICAgICAgcF9tdWx0aXBsaWNhYmxlOwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGJvb2w+ICAgICAgcF9vcHRpb25hbF92YWx1ZTsKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxkc3RyaW5nPiAgIHBfZGVzY3JpcHRpb247Ci0KLSAgICAvLyBwYXJhbWV0ZXIgcHJvcGVydGllcyBtb2RpZmljYXRpb24KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgICAgICAgICAgYWNjZXB0X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBpZiggbS5oYXMoIG9wdGlvbmFsX20gKSApCi0gICAgICAgICAgICBwX29wdGlvbmFsLnZhbHVlID0gdHJ1ZTsKLQotICAgICAgICBpZiggbS5oYXMoIHJlcXVpcmVkX20gKSApCi0gICAgICAgICAgICBwX29wdGlvbmFsLnZhbHVlID0gZmFsc2U7Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBtdWx0aXBsaWNhYmxlX20gKSApCi0gICAgICAgICAgICBwX211bHRpcGxpY2FibGUudmFsdWUgPSB0cnVlOwotCi0gICAgICAgIGlmKCBtLmhhcyggb3B0aW9uYWxfdmFsdWVfbSApICkKLSAgICAgICAgICAgIHBfb3B0aW9uYWxfdmFsdWUudmFsdWUgPSB0cnVlOwotCi0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIHBfZGVzY3JpcHRpb24udmFsdWUsIG0sIGRlc2NyaXB0aW9uICk7Ci0gICAgfQotCi0gICAgLy8gYWNjZXNzIG1ldGhvZHMKLSAgICBib29sICAgICAgICAgICAgaGFzX2FyZ3VtZW50KCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBtX2FjdHVhbF9hcmd1bWVudCE9MDsgfQotICAgIGFyZ3VtZW50IGNvbnN0JiBhY3R1YWxfYXJndW1lbnQoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuICptX2FjdHVhbF9hcmd1bWVudDsgfQotICAgIGFyZ3VtZW50X3B0ciAgICBhY3R1YWxfYXJndW1lbnQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIG1fYWN0dWFsX2FyZ3VtZW50OyB9Ci0KLQotICAgIC8vIGlkZW50aWZpY2F0aW9uIGludGVyZmFjZQotICAgIGJvb2wgICAgICAgICAgICByZXNwb25kc190byggY3N0cmluZyBuYW1lICkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIG1faWRfcG9saWN5LnJlc3BvbmRzX3RvKCBuYW1lICk7IH0KLSAgICBib29sICAgICAgICAgICAgY29uZmxpY3Rfd2l0aCggcGFyYW1ldGVyIGNvbnN0JiBwICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAoaWRfMl9yZXBvcnQoKSA9PSBwLmlkXzJfcmVwb3J0KCkgJiYgIWlkXzJfcmVwb3J0KCkuaXNfZW1wdHkoKSkgIHx8Ci0gICAgICAgICAgICAgICBtX2lkX3BvbGljeS5jb25mbGljdF93aXRoKCBwLm1faWRfcG9saWN5ICkgICAgICAgICAgICAgICAgICAgICAgIHx8IAotICAgICAgICAgICAgICAgKChtX2lkX3BvbGljeS5wX3R5cGVfaWQgIT0gcC5tX2lkX3BvbGljeS5wX3R5cGVfaWQpICYmIHAubV9pZF9wb2xpY3kuY29uZmxpY3Rfd2l0aCggbV9pZF9wb2xpY3kgKSk7Ci0gICAgfQotICAgIGNzdHJpbmcgICAgICAgICBpZF8yX3JlcG9ydCgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIG1faWRfcG9saWN5LmlkXzJfcmVwb3J0KCk7IH0KLSAgICB2b2lkICAgICAgICAgICAgdXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKSBjb25zdAotICAgIHsgCi0gICAgICAgIG1faWRfcG9saWN5LnVzYWdlX2luZm8oIGZzICk7Ci0gICAgICAgIGlmKCBwX29wdGlvbmFsX3ZhbHVlICkKLSAgICAgICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICdbJyApOwotCi0gICAgICAgIG1fYXJnX2ZhY3RvcnkuYXJndW1lbnRfdXNhZ2VfaW5mbyggZnMgKTsKLQotICAgICAgICBpZiggcF9vcHRpb25hbF92YWx1ZSApCi0gICAgICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnXScgKTsKLSAgICB9Ci0KLSAgICAvLyBhcmd1bWVudCBtYXRjaC9wcm9kdWNlIGJhc2VkIG9uIGlucHV0Ci0gICAgYm9vbCAgICAgICAgICAgIG1hdGNoaW5nKCBhcmd2X3RyYXZlcnNlciYgdHIsIGJvb2wgcHJpbWFyeSApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZF9wb2xpY3kubWF0Y2hpbmcoICp0aGlzLCB0ciwgcHJpbWFyeSApOwotICAgIH0KLQotICAgIC8vIGFyZ3VtZW50IHByb2R1Y3Rpb24gYmFzZWQgb24gZGlmZmVyZW50IHNvdXJjZQotICAgIHZvaWQgICAgICAgICAgICBwcm9kdWNlX2FyZ3VtZW50KCBhcmd2X3RyYXZlcnNlciYgdHIgKQotICAgIHsKLSAgICAgICAgbV9pZF9wb2xpY3kubWF0Y2hpbmcoICp0aGlzLCB0ciwgdHJ1ZSApOyAvLyAhISBjYW4gd2Ugc2F2ZSB0aGlzIHBvc2l0aW9uIHNvbWVob3cKLSAgICAgICAgbV9hY3R1YWxfYXJndW1lbnQgPSBtX2FyZ19mYWN0b3J5LnByb2R1Y2VfdXNpbmcoICp0aGlzLCB0ciApOwotICAgIH0KLSAgICB2b2lkICAgICAgICAgICAgcHJvZHVjZV9hcmd1bWVudCggcGFyc2VyIGNvbnN0JiBwICkKLSAgICB7Ci0gICAgICAgIG1fYWN0dWFsX2FyZ3VtZW50ID0gbV9hcmdfZmFjdG9yeS5wcm9kdWNlX3VzaW5nKCAqdGhpcywgcCApOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvL0RhdGEgbWVtYmVycwotICAgIGlkZW50aWZpY2F0aW9uX3BvbGljeSYgIG1faWRfcG9saWN5OwotICAgIGFyZ3VtZW50X2ZhY3RvcnkmICAgICAgIG1fYXJnX2ZhY3Rvcnk7Ci0gICAgYXJndW1lbnRfcHRyICAgICAgICAgICAgbV9hY3R1YWxfYXJndW1lbnQ7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXJhbWV0ZXIsdHlwZW5hbWUgTW9kaWZpZXI+Ci1pbmxpbmUgc2hhcmVkX3B0cjxQYXJhbWV0ZXI+Ci1vcGVyYXRvci0oIHNoYXJlZF9wdHI8UGFyYW1ldGVyPiBwLCBNb2RpZmllciBjb25zdCYgbSApCi17Ci0gICAgcC0+YWNjZXB0X21vZGlmaWVyKCBtICk7Ci0KLSAgICByZXR1cm4gcDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzAzZjY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgcGFyc2VyIC0gcHVibGljIGludGVyZmFjZSBmb3IgQ0xBIHBhcnNpbmcgYW5kIGFjY2Vzc2luZwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX1BBUlNFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9QQVJTRVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9hcmd1bWVudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9tb2RpZmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvb3B0aW9uYWwuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxsaXN0PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBydW50aW1lOjpjbGE6OnBhcnNlciAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIGNsYV9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLWNsYXNzIGdsb2JhbF9tb2RfcGFyc2VyIHsKLXB1YmxpYzoKLSAgICBnbG9iYWxfbW9kX3BhcnNlciggcGFyc2VyJiBwLCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgOiBtX3BhcnNlciggcCApCi0gICAgLCBtX21vZGlmaWVycyggbSApCi0gICAge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhcmFtPgotICAgIGdsb2JhbF9tb2RfcGFyc2VyIGNvbnN0JgotICAgIG9wZXJhdG9yPDwoIHNoYXJlZF9wdHI8UGFyYW0+IHBhcmFtICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHBhcmFtLT5hY2NlcHRfbW9kaWZpZXIoIG1fbW9kaWZpZXJzICk7Ci0KLSAgICAgICAgbV9wYXJzZXIgPDwgcGFyYW07Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnM7Ci0gICAgcGFyc2VyJiAgICAgICAgICAgICBtX3BhcnNlcjsKLSAgICBNb2RpZmllciBjb25zdCYgICAgIG1fbW9kaWZpZXJzOwotfTsKLQotfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcnVudGltZTo6Y2xhOjpwYXJzZXIgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHBhcnNlciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6Omxpc3Q8cGFyYW1ldGVyX3B0cj46OmNvbnN0X2l0ZXJhdG9yIHBhcmFtX2l0ZXJhdG9yOwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgICAgIHBhcnNlciggY3N0cmluZyBwcm9ncmFtX25hbWUgPSBjc3RyaW5nKCkgKTsKLQotICAgIC8vIHBhcmFtZXRlciBsaXN0IGNvbnN0cnVjdGlvbiBpbnRlcmZhY2UKLSAgICBwYXJzZXImICAgICAgICAgICAgIG9wZXJhdG9yPDwoIHBhcmFtZXRlcl9wdHIgcGFyYW0gKTsKLQotICAgIC8vIHBhcnNlciBhbmQgZ2xvYmFsIHBhcmFtZXRlcnMgbW9kaWZpZXJzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgY2xhX2RldGFpbDo6Z2xvYmFsX21vZF9wYXJzZXI8TW9kaWZpZXI+Ci0gICAgb3BlcmF0b3ItKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBuZnA6Om9wdGlvbmFsbHlfYXNzaWduKCBtX3RyYXZlcnNlci5wX3NlcGFyYXRvci52YWx1ZSwgbSwgaW5wdXRfc2VwYXJhdG9yICk7Ci0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIG1fdHJhdmVyc2VyLnBfaWdub3JlX21pc21hdGNoLnZhbHVlLCBtLCBpZ25vcmVfbWlzbWF0Y2hfbSApOwotCi0gICAgICAgIHJldHVybiBjbGFfZGV0YWlsOjpnbG9iYWxfbW9kX3BhcnNlcjxNb2RpZmllcj4oICp0aGlzLCBtICk7Ci0gICAgfQotCi0gICAgLy8gaW5wdXQgcHJvY2Vzc2luZyBtZXRob2QKLSAgICB2b2lkICAgICAgICAgICAgICAgIHBhcnNlKCBpbnQmIGFyZ2MsIGNoYXJfdHlwZSoqIGFyZ3YgKTsKLQotICAgIC8vIHBhcmFtZXRlcnMgYWNjZXNzCi0gICAgcGFyYW1faXRlcmF0b3IgICAgICBmaXJzdF9wYXJhbSgpIGNvbnN0OwotICAgIHBhcmFtX2l0ZXJhdG9yICAgICAgbGFzdF9wYXJhbSgpIGNvbnN0OwotCi0gICAgLy8gYXJndW1lbnRzIGFjY2VzcwotICAgIGNvbnN0X2FyZ3VtZW50X3B0ciAgb3BlcmF0b3JbXSggY3N0cmluZyBzdHJpbmdfaWQgKSBjb25zdDsKLSAgICBjc3RyaW5nICAgICAgICAgICAgIGdldCggY3N0cmluZyBzdHJpbmdfaWQgKSBjb25zdDsgICAgCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgY29uc3QmICAgICAgICAgICAgZ2V0KCBjc3RyaW5nIHN0cmluZ19pZCApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXJnX3ZhbHVlPFQ+KCB2YWxpZF9hcmd1bWVudCggc3RyaW5nX2lkICkgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgICAgICAgICAgICAgICAgZ2V0KCBjc3RyaW5nIHN0cmluZ19pZCwgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiByZXMgKSBjb25zdAotICAgIHsKLSAgICAgICAgY29uc3RfYXJndW1lbnRfcHRyIGFjdHVhbF9hcmcgPSAoKnRoaXMpW3N0cmluZ19pZF07Ci0KLSAgICAgICAgaWYoIGFjdHVhbF9hcmcgKQotICAgICAgICAgICAgcmVzID0gYXJnX3ZhbHVlPFQ+KCAqYWN0dWFsX2FyZyApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMucmVzZXQoKTsKLSAgICB9Ci0KLSAgICAvLyBoZWxwL3VzYWdlCi0gICAgdm9pZCAgICAgICAgICAgICAgICB1c2FnZSggb3V0X3N0cmVhbSYgb3N0ciApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgaGVscCggIG91dF9zdHJlYW0mIG9zdHIgKTsKLQotcHJpdmF0ZToKLSAgICBhcmd1bWVudCBjb25zdCYgICAgIHZhbGlkX2FyZ3VtZW50KCBjc3RyaW5nIHN0cmluZ19pZCApIGNvbnN0OwotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgYXJndl90cmF2ZXJzZXIgICAgICAgICAgICAgIG1fdHJhdmVyc2VyOwotICAgIHN0ZDo6bGlzdDxwYXJhbWV0ZXJfcHRyPiAgICBtX3BhcmFtZXRlcnM7Ci0gICAgZHN0cmluZyAgICAgICAgICAgICAgICAgICAgIG1fcHJvZ3JhbV9uYW1lOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmlwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfUEFSU0VSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMzk0ODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgcGFyc2VyIC0gcHVibGljIGludGVyZmFjZSBmb3IgQ0xBIHBhcnNpbmcgYW5kIGFjY2Vzc2luZwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX1BBUlNFUl9JUFBfMDYyOTA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9QQVJTRVJfSVBQXzA2MjkwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS90cmFjZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL21vZGlmaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9mb3JlYWNoLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBydW50aW1lOjpjbGE6OnBhcnNlciAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FCi1wYXJzZXI6OnBhcnNlciggY3N0cmluZyBwcm9ncmFtX25hbWUgKQotewotICAgIGFzc2lnbl9vcCggbV9wcm9ncmFtX25hbWUsIHByb2dyYW1fbmFtZSwgMCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgcGFyc2VyOjpwYXJhbV9pdGVyYXRvcgotcGFyc2VyOjpmaXJzdF9wYXJhbSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFyYW1ldGVycy5iZWdpbigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgcGFyc2VyOjpwYXJhbV9pdGVyYXRvcgotcGFyc2VyOjpsYXN0X3BhcmFtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLmVuZCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYXJndW1lbnQgY29uc3QmCi1wYXJzZXI6OnZhbGlkX2FyZ3VtZW50KCBjc3RyaW5nIHN0cmluZ19pZCApIGNvbnN0Ci17Ci0gICAgY29uc3RfYXJndW1lbnRfcHRyIGFyZyA9ICgqdGhpcylbc3RyaW5nX2lkXTsKLQotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCAhIWFyZywgIkFjdHVhbCBhcmd1bWVudCBmb3IgcGFyYW1ldGVyICIgPDwgc3RyaW5nX2lkIDw8ICIgaXMgbm90IHByZXNlbnQiICk7Ci0KLSAgICByZXR1cm4gKmFyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHBhcnNlciYKLXBhcnNlcjo6b3BlcmF0b3I8PCggcGFyYW1ldGVyX3B0ciBuZXdfcGFyYW0gKQotewotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggcGFyYW1ldGVyX3B0ciwgb2xkX3BhcmFtLCBtX3BhcmFtZXRlcnMgKSB7Ci0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCAhb2xkX3BhcmFtLT5jb25mbGljdF93aXRoKCAqbmV3X3BhcmFtICksCi0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiRGVmaW5pdGlvbiBvZiBwYXJhbWV0ZXIgIiApICAgICAgICAgICAgICAgIDw8IG5ld19wYXJhbS0+aWRfMl9yZXBvcnQoKSA8PCAKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICIgY29uZmxpY3RzIHdpdGggZGVmaW50aW9uIG9mIHBhcmFtZXRlciAiICkgPDwgb2xkX3BhcmFtLT5pZF8yX3JlcG9ydCgpICk7Ci0gICAgfQotCi0gICAgbV9wYXJhbWV0ZXJzLnB1c2hfYmFjayggbmV3X3BhcmFtICk7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1wYXJzZXI6OnBhcnNlKCBpbnQmIGFyZ2MsIGNoYXJfdHlwZSoqIGFyZ3YgKQotewotICAgIGlmKCBtX3Byb2dyYW1fbmFtZS5lbXB0eSgpICkgewotICAgICAgICBtX3Byb2dyYW1fbmFtZS5hc3NpZ24oIGFyZ3ZbMF0gKTsKLSAgICAgICAgZHN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IG1fcHJvZ3JhbV9uYW1lLmZpbmRfbGFzdF9vZiggTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIi9cXCIgKSApOwotCi0gICAgICAgIGlmKCBwb3MgIT0gc3RhdGljX2Nhc3Q8ZHN0cmluZzo6c2l6ZV90eXBlPihjc3RyaW5nOjpucG9zKSApCi0gICAgICAgICAgICBtX3Byb2dyYW1fbmFtZS5lcmFzZSggMCwgcG9zKzEgKTsKLSAgICB9Ci0KLSAgICBtX3RyYXZlcnNlci5pbml0KCBhcmdjLCBhcmd2ICk7Ci0KLSAgICB0cnkgewotICAgICAgICB3aGlsZSggIW1fdHJhdmVyc2VyLmVvaSgpICkgewotICAgICAgICAgICAgcGFyYW1ldGVyX3B0ciBmb3VuZF9wYXJhbTsKLQotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJUb3RhbCAiIDw8IG1fcGFyYW1ldGVycy5zaXplKCkgPDwgIiBwYXJhbWV0ZXJzIHJlZ2lzdGVyZWQiICk7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggcGFyYW1ldGVyX3B0ciBjb25zdCYsIGN1cnJfcGFyYW0sIG1fcGFyYW1ldGVycyApIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIlRyeSBwYXJhbWV0ZXIgIiA8PCBjdXJyX3BhcmFtLT5pZF8yX3JlcG9ydCgpICk7Ci0KLSAgICAgICAgICAgICAgICBpZiggY3Vycl9wYXJhbS0+bWF0Y2hpbmcoIG1fdHJhdmVyc2VyLCAhZm91bmRfcGFyYW0gKSApIHsKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJNYXRjaCBmb3VuZCIgKTsKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRFX0lOUFVUKCAhZm91bmRfcGFyYW0sIChtX3RyYXZlcnNlci5yb2xsYmFjaygpLG1fdHJhdmVyc2VyKSwgIkFtYmlndW91cyBpbnB1dCIgKTsKLQotICAgICAgICAgICAgICAgICAgICBmb3VuZF9wYXJhbSA9IGN1cnJfcGFyYW07Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbV90cmF2ZXJzZXIucm9sbGJhY2soKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYoICFmb3VuZF9wYXJhbSApIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIk5vIG1hdGNoIGZvdW5kIiApOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFURV9JTlBVVCggbV90cmF2ZXJzZXIuaGFuZGxlX21pc21hdGNoKCksIG1fdHJhdmVyc2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIlVuZXhwZWN0ZWQgaW5wdXQiICkgKTsKLQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIlBhcnNlIGFyZ3VtZW50IHZhbHVlIiApOwotICAgICAgICAgICAgZm91bmRfcGFyYW0tPnByb2R1Y2VfYXJndW1lbnQoIG1fdHJhdmVyc2VyICk7Ci0KLSAgICAgICAgICAgIG1fdHJhdmVyc2VyLmNvbW1pdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBwYXJhbWV0ZXJfcHRyIGNvbnN0JiwgY3Vycl9wYXJhbSwgbV9wYXJhbWV0ZXJzICkgewotICAgICAgICAgICAgaWYoICFjdXJyX3BhcmFtLT5wX29wdGlvbmFsICYmICFjdXJyX3BhcmFtLT5hY3R1YWxfYXJndW1lbnQoKSApIHsKLSAgICAgICAgICAgICAgICBjdXJyX3BhcmFtLT5wcm9kdWNlX2FyZ3VtZW50KCAqdGhpcyApOwotCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoIGN1cnJfcGFyYW0tPmFjdHVhbF9hcmd1bWVudCgpLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiUmVxdWlyZWQgYXJndW1lbnQgZm9yIHBhcmFtZXRlciAiICkgPDwgY3Vycl9wYXJhbS0+aWRfMl9yZXBvcnQoKQotICAgICAgICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIiBpcyBtaXNzaW5nIiApICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2goIGJhZF9sZXhpY2FsX2Nhc3QgY29uc3QmICkgewotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9SRVBPUlRfTE9HSUNfRVJST1IoIAotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIlN0cmluZyB0byB2YWx1ZSBjb252ZXJ0aW9uIGVycm9yIGR1cmluZyBpbnB1dCBwYXJzaW5nIiApICk7Ci0gICAgfQotCi0gICAgbV90cmF2ZXJzZXIucmVtYWluZGVyKCBhcmdjLCBhcmd2ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBjb25zdF9hcmd1bWVudF9wdHIKLXBhcnNlcjo6b3BlcmF0b3JbXSggY3N0cmluZyBzdHJpbmdfaWQgKSBjb25zdAotewotICAgIHBhcmFtZXRlcl9wdHIgZm91bmRfcGFyYW07Ci0KLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHBhcmFtZXRlcl9wdHIgY29uc3QmLCBjdXJyX3BhcmFtLCBtX3BhcmFtZXRlcnMgKSB7Ci0gICAgICAgIGlmKCBjdXJyX3BhcmFtLT5yZXNwb25kc190byggc3RyaW5nX2lkICkgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggIWZvdW5kX3BhcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJBbWJpZ3VvdXMgcGFyYW1ldGVyIHN0cmluZyBpZDogIiApIDw8IHN0cmluZ19pZCApOwotCi0gICAgICAgICAgICBmb3VuZF9wYXJhbSA9IGN1cnJfcGFyYW07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZm91bmRfcGFyYW0gPyBmb3VuZF9wYXJhbS0+YWN0dWFsX2FyZ3VtZW50KCkgOiBhcmd1bWVudF9wdHIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGNzdHJpbmcKLXBhcnNlcjo6Z2V0KCBjc3RyaW5nIHN0cmluZ19pZCApIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGdldDxjc3RyaW5nPiggc3RyaW5nX2lkICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1wYXJzZXI6OnVzYWdlKCBvdXRfc3RyZWFtJiBvc3RyICkKLXsKLSAgICBpZiggbV9wcm9ncmFtX25hbWUuZW1wdHkoKSApCi0gICAgICAgIGFzc2lnbl9vcCggbV9wcm9ncmFtX25hbWUsIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIjxwcm9ncmFtPiIgKSwgMCApOwotCi0gICAgZm9ybWF0X3N0cmVhbSBmczsKLQotICAgIGZzIDw8IG1fcHJvZ3JhbV9uYW1lOwotCi0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBwYXJhbWV0ZXJfcHRyIGNvbnN0JiwgY3Vycl9wYXJhbSwgbV9wYXJhbWV0ZXJzICkgewotICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnICcgKTsKLQotICAgICAgICBpZiggY3Vycl9wYXJhbS0+cF9vcHRpb25hbCApCi0gICAgICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnWycgKTsKLQotICAgICAgICBjdXJyX3BhcmFtLT51c2FnZV9pbmZvKCBmcyApOwotCi0gICAgICAgIGlmKCBjdXJyX3BhcmFtLT5wX29wdGlvbmFsICkKLSAgICAgICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICddJyApOwotCi0gICAgICAgIGlmKCBjdXJyX3BhcmFtLT5wX211bHRpcGxpY2FibGUgKSB7Ci0gICAgICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICIgLi4uICIgKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnBfb3B0aW9uYWwgKQotICAgICAgICAgICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICdbJyApOwotCi0gICAgICAgICAgICBjdXJyX3BhcmFtLT51c2FnZV9pbmZvKCBmcyApOwotCi0gICAgICAgICAgICBpZiggY3Vycl9wYXJhbS0+cF9vcHRpb25hbCApCi0gICAgICAgICAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ10nICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBvc3RyIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIlVzYWdlOlxuIiApIDw8IGZzLnN0cigpIDw8IHN0ZDo6ZW5kbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLXBhcnNlcjo6aGVscCggb3V0X3N0cmVhbSYgb3N0ciApCi17Ci0gICAgdXNhZ2UoIG9zdHIgKTsKLQotICAgIGJvb2wgbmVlZF93aGVyZSA9IHRydWU7Ci0KLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHBhcmFtZXRlcl9wdHIgY29uc3QmLCBjdXJyX3BhcmFtLCBtX3BhcmFtZXRlcnMgKSB7Ci0gICAgICAgIGlmKCBjdXJyX3BhcmFtLT5wX2Rlc2NyaXB0aW9uLT5lbXB0eSgpICkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmKCBuZWVkX3doZXJlICkgewotICAgICAgICAgICAgb3N0ciA8PCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICJ3aGVyZTpcbiIgKTsKLSAgICAgICAgICAgIG5lZWRfd2hlcmUgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIG9zdHIgPDwgY3Vycl9wYXJhbS0+aWRfMl9yZXBvcnQoKSA8PCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICIgLSAiICkgPDwgY3Vycl9wYXJhbS0+cF9kZXNjcmlwdGlvbiA8PCBzdGQ6OmVuZGw7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfUEFSU0VSX0lQUF8wNjI5MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS90eXBlZF9wYXJhbWV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3R5cGVkX3BhcmFtZXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0M2Q3NTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3R5cGVkX3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBnZW5lcmljIHR5cGVkIHBhcmFtZXRlciBtb2RlbAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX1RZUEVEX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9UWVBFRF9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndW1lbnRfZmFjdG9yeS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgIHJ1bnRpbWU6OmNsYTo6dHlwZWRfcGFyYW1ldGVyICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIHR5cGVkX3BhcmFtZXRlciA6IHB1YmxpYyBjbGE6OnBhcmFtZXRlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgdHlwZWRfcGFyYW1ldGVyKCBpZGVudGlmaWNhdGlvbl9wb2xpY3kmIElEICkgCi0gICAgOiBjbGE6OnBhcmFtZXRlciggSUQsIG1fYXJnX2ZhY3RvcnksIHJ0dGk6OnR5cGVfaWQ8VD4oKSA9PSBydHRpOjp0eXBlX2lkPGJvb2w+KCkgKSAKLSAgICB7fQotCi0gICAgLy8gcGFyYW1ldGVyIHByb3BlcnRpZXMgbW9kaWZpY2F0aW9uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIGNsYTo6cGFyYW1ldGVyOjphY2NlcHRfbW9kaWZpZXIoIG0gKTsKLQotICAgICAgICBtX2FyZ19mYWN0b3J5LmFjY2VwdF9tb2RpZmllciggbSApOwotCi0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCAhcF9vcHRpb25hbCB8fCAhbV9hcmdfZmFjdG9yeS5tX3ZhbHVlX2dlbmVyYXRvciwKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJjYW4ndCBkZWZpbmUgYSB2YWx1ZSBnZW5lcmF0b3IgZm9yIG9wdGlvbmFsIHBhcmFtZXRlciAiICkgPDwgaWRfMl9yZXBvcnQoKSApOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICB0eXBlZF9hcmd1bWVudF9mYWN0b3J5PFQ+ICAgbV9hcmdfZmFjdG9yeTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9UWVBFRF9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTFjZmJlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGlucHV0IHZhbGlkYXRpb24gaGVscGVycyBkZWZpbml0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfVkFMSURBVElPTl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFUSU9OX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgcnVudGltZTo6Y2xhOjpyZXBvcnRfaW5wdXRfZXJyb3IgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQgcmVwb3J0X2lucHV0X2Vycm9yKCBhcmd2X3RyYXZlcnNlciBjb25zdCYgdHIsIGZvcm1hdF9zdHJlYW0mIG1zZyApOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFURV9JTlBVVCggYiwgdHIsIG1zZyApIFwKLSAgICBpZiggYiApIDsgZWxzZSA6Om5kbmJvb3N0OjpORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0U6OmNsYTo6cmVwb3J0X2lucHV0X2Vycm9yKCB0ciwgZm9ybWF0X3N0cmVhbSgpLnJlZigpIDw8IG1zZyApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgaW5saW5lCi0jICBpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFUSU9OX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFmOTM3MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbnB1dCB2YWxpZGF0aW9uIGhlbHBlcnMgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFUSU9OX0lQUF8wNzA2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRJT05fSVBQXzA3MDYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+IC8vIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6bG9naWNfZXJyb3IKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotCi0vLyBTVEwKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6dmFsaWRhdGlvbiAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1yZXBvcnRfaW5wdXRfZXJyb3IoIGFyZ3ZfdHJhdmVyc2VyIGNvbnN0JiB0ciwgZm9ybWF0X3N0cmVhbSYgbXNnICkKLXsKLSAgICBpZiggdHIuZW9pKCkgKQotICAgICAgICBtc2cgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIiBhdCB0aGUgZW5kIG9mIGlucHV0IiApOwotICAgIGVsc2UgewotICAgICAgICBtc2cgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIiBpbiB0aGUgZm9sbG93aW5nIHBvc2l0aW9uOiAiICk7Ci0KLSAgICAgICAgaWYoIHRyLmlucHV0KCkuc2l6ZSgpID4gNSApCi0gICAgICAgICAgICBtc2cgPDwgdHIuaW5wdXQoKS5zdWJzdHIoIDAsIDUgKSA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiLi4uIiApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtc2cgPDwgdHIuaW5wdXQoKTsKLSAgICB9Ci0KLSAgICB0aHJvdyBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0U6OmxvZ2ljX2Vycm9yKCBtc2cuc3RyKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRJT05fSVBQXzA3MDYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2dlbmVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsdWVfZ2VuZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY5MmMzNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsdWVfZ2VuZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNwZWNpZmljIHZhbHVlIGdlbmVyYXRvcnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9WQUxVRV9HRU5FUkFUT1JfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfVkFMVUVfR0VORVJBVE9SX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIHJ1bnRpbWU6OmNsYTo6Y29uc3RfZ2VuZXJhdG9yICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBjb25zdF9nZW5lcmF0b3IgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgY29uc3RfZ2VuZXJhdG9yKCBUIGNvbnN0JiB0ICkgOiBtX2NvbnN0X3ZhbHVlKCB0ICkge30KLQotICAgIC8vIGdlbmVyYXRvciBpbnRlcmZhY2UKLSAgICB2b2lkICAgICAgICBvcGVyYXRvcigpKCBwYXJzZXIgY29uc3QmLCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHQgKSBjb25zdCAgIHsgdCA9IG1fY29uc3RfdmFsdWU7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBUICAgICAgICAgICBtX2NvbnN0X3ZhbHVlOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgcnVudGltZTo6Y2xhOjpyZWZfZ2VuZXJhdG9yICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgcmVmX2dlbmVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICByZWZfZ2VuZXJhdG9yKCBjc3RyaW5nIHJlZl9pZCApIDogbV9yZWZfaWQoIHJlZl9pZCApIHt9Ci0KLSAgICAvLyBnZW5lcmF0b3IgaW50ZXJmYWNlCi0gICAgdm9pZCAgICAgICAgb3BlcmF0b3IoKSggcGFyc2VyIGNvbnN0JiBwLCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHQgKSBjb25zdAotICAgIHsKLSAgICAgICAgcC5nZXQoIG1fcmVmX2lkLCB0ICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGNzdHJpbmcgICAgIG1fcmVmX2lkOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgcnRfY2xhX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfVkFMVUVfR0VORVJBVE9SX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9oYW5kbGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9oYW5kbGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA5MDYwMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsdWVfaGFuZGxlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzcGVjaWZpYyB2YWx1ZSBoYW5kbGVycwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX1ZBTFVFX0hBTkRMRVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfVkFMVUVfSEFORExFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBydW50aW1lOjpjbGE6OmFzc2lnbmVyICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBhc3NpZ25lciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICBhc3NpZ25lciggVCYgbG9jICkgOiBtX3RhcmdldCggbG9jICkgICAge30KLQotICAgIC8vIHZhbHVlIGhhbmRsZXIgaW1wbGVtZW50YXRpb24KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcigpKCBwYXJhbWV0ZXIgY29uc3QmLCBUJiB0ICkgIHsgbV90YXJnZXQgPSB0OyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgVCYgICAgICAgICAgbV90YXJnZXQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBydF9jbGFfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9WQUxVRV9IQU5ETEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWY4ZjE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBSdW50aW1lLlBhcmFtIGxpYnJhcnkgY29uZmlndXJhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ09ORklHX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ09ORklHX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUxMSkgLy8gY29weSBjb25zdHJ1Y3RvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTgxKSAvLyBxdWFsaWZpZXIgYXBwbGllZCB0byByZWZlcmVuY2UgdHlwZTsgaWdub3JlZAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0Njc1KSAvLyByZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cAotI2VuZGlmCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3dyYXBfc3RyaW5nc3RyZWFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPiAvLyBvcGVyYXRvcjw8KG5kbmJvb3N0OjpydW50aW1lOjpjc3RyaW5nKQotCi0vLyBTVEwKLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8Y3N0ZGxpYj4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9DVVNUT01fU1RSSU5HCi0jICBpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fV0lERV9TVFJJTkcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZV9ydW50aW1lCi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBfX1NVTlBST19DQwotZXh0ZXJuIGludCBwdXRlbnYoY2hhciopOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX0NVU1RPTV9TVFJJTkcKLSMgIGlmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9XSURFX1NUUklORwotCi10eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotdHlwZWRlZiBzdGQ6OnN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdHJpbmc7Ci10eXBlZGVmIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3N0cmluZzsKLXR5cGVkZWYgdW5pdF90ZXN0OjpsaXRlcmFsX3N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2NzdHJpbmc7Ci10eXBlZGVmIHdyYXBfc3RyaW5nc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmVhbTsKLQotI2lmZGVmIE5ETkJPT1NUX0NMQVNTSUNfSU9TVFJFQU1TCi10eXBlZGVmIHN0ZDo6b3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3N0cmVhbTsKLSNlbHNlCi10eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyX3R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3N0cmVhbTsKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KSAvLyBwdXRlbnYKLSNlbmRpZgotCi0jaWZuZGVmIFVOREVSX0NFCi0jaWYgZGVmaW5lZChfX0NPTU9fXykgJiYgMAotaW5saW5lIHZvaWQKLXB1dGVudl9pbXBsKCBjc3RyaW5nIG5hbWUsIGNzdHJpbmcgdmFsdWUgKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgLy8gISEgdGhpcyBtYXkgYWN0dWFsbHkgZmFpbC4gV2hhdCBzaG91bGQgd2UgZG8/Ci0gICAgc2V0ZW52KCBuYW1lLmJlZ2luKCksIHZhbHVlLmJlZ2luKCksIDEgKTsKLX0KLSNlbHNlCi1pbmxpbmUgdm9pZAotcHV0ZW52X2ltcGwoIGNzdHJpbmcgbmFtZSwgY3N0cmluZyB2YWx1ZSApCi17Ci0gICAgZm9ybWF0X3N0cmVhbSBmczsKLQotICAgIGZzIDw8IG5hbWUgPDwgJz0nIDw8IHZhbHVlOwotCi0gICAgLy8gISEgdGhpcyBtYXkgYWN0dWFsbHkgZmFpbC4gV2hhdCBzaG91bGQgd2UgZG8/Ci0gICAgLy8gY29uc3RfY2FzdCBpcyB1c2VkIHRvIHNhdGlzZnkgcHV0ZW52IGludGVyZmFjZQotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgcHV0ZW52KCBjb25zdF9jYXN0PGNoYXIqPiggZnMuc3RyKCkuY19zdHIoKSApICk7Ci19Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQyAKLSNwcmFnbWEgd2FybmluZyhwb3ApIAotI2VuZGlmIAotCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoIGwgKSBsCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggbCApIGNzdHJpbmcoIGwsIHNpemVvZiggbCApIC0gMSApCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0dFVEVOViBnZXRlbnYKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fUFVURU5WIDo6bmRuYm9vc3Q6Ok5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6cHV0ZW52X2ltcGwKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fRVhDRVBUSU9OX0lOSEVSSVRfU1RECi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSMgIGVsc2UKLQotdHlwZWRlZiB3Y2hhcl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLXR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RyaW5nOwotdHlwZWRlZiB1bml0X3Rlc3Q6OmJhc2ljX2NzdHJpbmc8d2NoYXJfdCBjb25zdD4gICAgICAgICAgICAgICAgIGNzdHJpbmc7Ci10eXBlZGVmIGNvbnN0IHVuaXRfdGVzdDo6YmFzaWNfY3N0cmluZzx3Y2hhcl90IGNvbnN0PiAgICAgICAgICAgbGl0ZXJhbF9jc3RyaW5nOwotdHlwZWRlZiB3cmFwX3dzdHJpbmdzdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJlYW07Ci10eXBlZGVmIHN0ZDo6d29zdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3N0cmVhbTsKLQotI2lmbmRlZiBVTkRFUl9DRQotaW5saW5lIHZvaWQKLXB1dGVudl9pbXBsKCBjc3RyaW5nIG5hbWUsIGNzdHJpbmcgdmFsdWUgKQotewotICAgIGZvcm1hdF9zdHJlYW0gZnM7Ci0KLSAgICBmcyA8PCBuYW1lIDw8ICc9JyA8PCB2YWx1ZTsKLQotICAgIC8vICEhIHRoaXMgbWF5IGFjdHVhbGx5IGZhaWwuIFdoYXQgc2hvdWxkIHdlIGRvPwotICAgIC8vIGNvbnN0X2Nhc3QgaXMgdXNlZCB0byBzYXRpc2Z5IHB1dGVudiBpbnRlcmZhY2UKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIHdwdXRlbnYoIGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KCBmcy5zdHIoKS5jX3N0cigpICkgKTsKLX0KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoIGwgKSBMICMjIGwKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCBsICkgY3N0cmluZyggTCAjIyBsLCBzaXplb2YoIEwgIyMgbCApL3NpemVvZih3Y2hhcl90KSAtIDEgKQotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9HRVRFTlYgd2dldGVudgotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9QVVRFTlYgcHV0ZW52X2ltcGwKLQotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgX19HTlVDX18KLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fVU5ORUVERURfVklSVFVBTCB2aXJ0dWFsCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DT05GSUdfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Vudmlyb25tZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9lbnZpcm9ubWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MzRmYWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Vudmlyb25tZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgYW5kIGltcGxlbWVudHMgaW5saW5lIG1vZGVsIG9mIHByb2dyYW0gZW52aXJvbm1lbnQgCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9FTlZfRU5WSVJPTk1FTlRfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9FTlZfRU5WSVJPTk1FTlRfSFBQXzA2MjYwNEdFUgotCi0jaWZkZWYgVU5ERVJfQ0UKLSNlcnJvciBXaW5kb3dzIENFIGRvZXMgbm90IHN1cHBvcnQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotI2VuZGlmCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L21vZGlmaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L3ZhcmlhYmxlLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L29wdGlvbmFsLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgIHJ1bnRpbWU6OmVudmlyb25tZW50IGltcGxlbWVudGF0aW9uICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIGVudmlyb25tZW50IHsKLQotbmFtZXNwYWNlIHJ0X2Vudl9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNb2RpZmllcnM+Ci12YXJpYWJsZV9kYXRhJgotaW5pdF9uZXdfdmFyKCBjc3RyaW5nIHZhcl9uYW1lLCBNb2RpZmllcnMgbSA9IG5mcDo6bm9fcGFyYW1zICkKLXsKLSAgICBydF9lbnZfZGV0YWlsOjp2YXJpYWJsZV9kYXRhJiBuZXdfdmQgPSBuZXdfdmFyX3JlY29yZCggdmFyX25hbWUgKTsKLQotICAgIGNzdHJpbmcgc3RyX3ZhbHVlID0gc3lzX3JlYWRfdmFyKCBuZXdfdmQubV92YXJfbmFtZSApOwotCi0gICAgaWYoICFzdHJfdmFsdWUuaXNfZW1wdHkoKSApIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpvcHRpb25hbDxUPiB2YWx1ZTsKLQotICAgICAgICAgICAgaWYoIG0uaGFzKCBpbnRlcnByZXRlciApICkKLSAgICAgICAgICAgICAgICBtW2ludGVycHJldGVyXSggc3RyX3ZhbHVlLCB2YWx1ZSApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGludGVycHJldF9hcmd1bWVudF92YWx1ZSggc3RyX3ZhbHVlLCB2YWx1ZSwgMCApOwotCi0gICAgICAgICAgICBpZiggISF2YWx1ZSApIHsKLSAgICAgICAgICAgICAgICBuZXdfdmQubV92YWx1ZS5yZXNldCggbmV3IHR5cGVkX2FyZ3VtZW50PFQ+KCBuZXdfdmQgKSApOwotCi0gICAgICAgICAgICAgICAgYXJnX3ZhbHVlPFQ+KCAqbmV3X3ZkLm1fdmFsdWUgKSA9ICp2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXRjaCggLi4uICkgeyAvLyAhISBjb3VsZCB3ZSBkbyB0aGF0Ci0gICAgICAgICAgICAvLyAhISBzaG91bGQgd2UgcmVwb3J0IGFuIGVycm9yPwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYoICFuZXdfdmQubV92YWx1ZSAmJiBtLmhhcyggZGVmYXVsdF92YWx1ZSApICkgewotICAgICAgICBuZXdfdmQubV92YWx1ZS5yZXNldCggbmV3IHR5cGVkX2FyZ3VtZW50PFQ+KCBuZXdfdmQgKSApOwotCi0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIGFyZ192YWx1ZTxUPiggKm5ld192ZC5tX3ZhbHVlICksIG1bZGVmYXVsdF92YWx1ZV0gKTsKLSAgICB9Ci0KLSAgICBuZnA6Om9wdGlvbmFsbHlfYXNzaWduKCBuZXdfdmQubV9nbG9iYWxfaWQsIG0sIGdsb2JhbF9pZCApOwotCi0gICAgcmV0dXJuIG5ld192ZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgcnRfZW52X2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBlbnZpcm9ubWVudAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBlbnZpcm9ubWVudCB7Ci0KLSAgICAvLyB2YXJpYWJsZSBhY2Nlc3MKLSAgICB2YXJpYWJsZV9iYXNlCi0gICAgdmFyKCBjc3RyaW5nIHZhcl9uYW1lICk7Ci0KLSAgICAvL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB2YXJpYWJsZTxUPgotICAgIHZhciggY3N0cmluZyB2YXJfbmFtZSApCi0gICAgewotICAgICAgICBydF9lbnZfZGV0YWlsOjp2YXJpYWJsZV9kYXRhKiB2ZCA9IHJ0X2Vudl9kZXRhaWw6OmZpbmRfdmFyX3JlY29yZCggdmFyX25hbWUgKTsKLQotICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ6OnZhcmlhYmxlPFQ+KCAhdmQgPyBydF9lbnZfZGV0YWlsOjppbml0X25ld192YXI8VD4oIHZhcl9uYW1lLCBuZnA6Om5vX3BhcmFtcyApIDogKnZkICk7Ci0gICAgfQotCi0gICAgLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTW9kaWZpZXJzPgotICAgIGlubGluZSB2YXJpYWJsZTxUPgotICAgIHZhciggY3N0cmluZyB2YXJfbmFtZSwgTW9kaWZpZXJzIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIHJ0X2Vudl9kZXRhaWw6OnZhcmlhYmxlX2RhdGEqIHZkID0gcnRfZW52X2RldGFpbDo6ZmluZF92YXJfcmVjb3JkKCB2YXJfbmFtZSApOwotCi0gICAgICAgIHJldHVybiBlbnZpcm9ubWVudDo6dmFyaWFibGU8VD4oICF2ZCA/IHJ0X2Vudl9kZXRhaWw6OmluaXRfbmV3X3ZhcjxUPiggdmFyX25hbWUsIG0gKSA6ICp2ZCApOwotICAgIH0KLQotICAgIC8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotICAgIC8vIGRpcmVjdCB2YXJpYWJsZSB2YWx1ZSBhY2Nlc3MKLSAgICBpbmxpbmUgY3N0cmluZwotICAgIGdldCggY3N0cmluZyB2YXJfbmFtZSApCi0gICAgewotICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ6OnZhcjxjc3RyaW5nPiggdmFyX25hbWUgKS52YWx1ZSgpOwotICAgIH0KLQotICAgIC8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIFQgY29uc3QmCi0gICAgZ2V0KCBjc3RyaW5nIHZhcl9uYW1lICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlbnZpcm9ubWVudDo6dmFyPFQ+KCB2YXJfbmFtZSApLnZhbHVlKCk7Ci0gICAgfQotCi0gICAgLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdm9pZAotICAgIGdldCggY3N0cmluZyB2YXJfbmFtZSwgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiByZXMgKQotICAgIHsKLSAgICAgICAgdmFyaWFibGU8VD4gY29uc3QmIHYgPSBlbnZpcm9ubWVudDo6dmFyPFQ+KCB2YXJfbmFtZSApOwotICAgICAgICB2LnZhbHVlKCByZXMgKTsKLSAgICB9Ci0KLSAgICAvL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGVudmlyb25tZW50Ci0KLW5hbWVzcGFjZSBlbnYgPSBlbnZpcm9ubWVudDsKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fT0ZGTElORQotCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Vudmlyb25tZW50LmlwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9FTlZfRU5WSVJPTk1FTlRfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Vudmlyb25tZW50LmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9lbnZpcm9ubWVudC5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZDc4ZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Vudmlyb25tZW50LmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgbW9kZWwgb2YgcHJvZ3JhbSBlbnZpcm9ubWVudCAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0VOVl9FTlZJUk9OTUVOVF9JUFBfMDYyOTA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0VOVl9FTlZJUk9OTUVOVF9JUFBfMDYyOTA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi92YXJpYWJsZS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPGxpc3Q+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgZW52aXJvbm1lbnQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBydF9lbnZfZGV0YWlsIHsKLQotdHlwZWRlZiBzdGQ6Om1hcDxjc3RyaW5nLHJ0X2Vudl9kZXRhaWw6OnZhcmlhYmxlX2RhdGE+IHJlZ2lzdHJ5OwotdHlwZWRlZiBzdGQ6Omxpc3Q8ZHN0cmluZz4ga2V5czsKLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHJlZ2lzdHJ5JiBzX3JlZ2lzdHJ5KCkgICAgeyBzdGF0aWMgcmVnaXN0cnkgaW5zdGFuY2U7IHJldHVybiBpbnN0YW5jZTsgfQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGtleXMmICAgICBzX2tleXMoKSAgICAgICAgeyBzdGF0aWMga2V5cyBpbnN0YW5jZTsgcmV0dXJuIGluc3RhbmNlOyB9Ci0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2YXJpYWJsZV9kYXRhJgotbmV3X3Zhcl9yZWNvcmQoIGNzdHJpbmcgdmFyX25hbWUgKQotewotICAgIC8vIHNhdmUgdGhlIG5hbWUgaW4gbGlzdCBvZiBrZXlzCi0gICAgc19rZXlzKCkucHVzaF9iYWNrKCBkc3RyaW5nKCkgKTsKLSAgICBkc3RyaW5nJiBrZXkgPSBzX2tleXMoKS5iYWNrKCk7Ci0gICAgYXNzaWduX29wKCBrZXksIHZhcl9uYW1lLCAwICk7Ci0KLSAgICAvLyBjcmVhdGUgYW5kIHJldHVybiBuZXcgcmVjb3JkCi0gICAgdmFyaWFibGVfZGF0YSYgbmV3X3Zhcl9kYXRhID0gc19yZWdpc3RyeSgpW2tleV07Ci0gICAgCi0gICAgbmV3X3Zhcl9kYXRhLm1fdmFyX25hbWUgPSBrZXk7Ci0gICAgCi0gICAgcmV0dXJuIG5ld192YXJfZGF0YTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZhcmlhYmxlX2RhdGEqCi1maW5kX3Zhcl9yZWNvcmQoIGNzdHJpbmcgdmFyX25hbWUgKQotewotICAgIHJlZ2lzdHJ5OjppdGVyYXRvciBpdCA9IHNfcmVnaXN0cnkoKS5maW5kKCB2YXJfbmFtZSApOwotCi0gICAgcmV0dXJuIGl0ID09IHNfcmVnaXN0cnkoKS5lbmQoKSA/IDAgOiAmKGl0LT5zZWNvbmQpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQyAKLSNwcmFnbWEgd2FybmluZyhwdXNoKSAKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpIC8vIGdldGVudgotI2VuZGlmCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBjc3RyaW5nCi1zeXNfcmVhZF92YXIoIGNzdHJpbmcgdmFyX25hbWUgKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgcmV0dXJuIE5ETkJPT1NUX1JUX1BBUkFNX0dFVEVOViggdmFyX25hbWUuYmVnaW4oKSApOwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQyAKLSNwcmFnbWEgd2FybmluZyhwb3ApIAotI2VuZGlmCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotc3lzX3dyaXRlX3ZhciggY3N0cmluZyB2YXJfbmFtZSwgZm9ybWF0X3N0cmVhbSYgdmFyX3ZhbHVlICkKLXsKLSAgICBORE5CT09TVF9SVF9QQVJBTV9QVVRFTlYoIHZhcl9uYW1lLCBjc3RyaW5nKCB2YXJfdmFsdWUuc3RyKCkgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBydF9lbnZfZGV0YWlsCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2YXJpYWJsZV9iYXNlCi12YXIoIGNzdHJpbmcgdmFyX25hbWUgKQotewotICAgIHJ0X2Vudl9kZXRhaWw6OnZhcmlhYmxlX2RhdGEqIHZkID0gcnRfZW52X2RldGFpbDo6ZmluZF92YXJfcmVjb3JkKCB2YXJfbmFtZSApOwotCi0gICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICEhdmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJGaXJzdCBhY2Nlc3MgdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICIgKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCB2YXJfbmFtZSA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiIHNob3VsZCBiZSB0eXBlZCIgKSApOwotCi0gICAgcmV0dXJuIHZhcmlhYmxlX2Jhc2UoICp2ZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBlbnZpcm9ubWVudAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0VOVl9FTlZJUk9OTUVOVF9JUFBfMDYyOTA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDcyMWZjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBlbnZpcm9ubWVudCBzdWJzeXN0ZW0gZm9yd2FyZCBkZWNsYXJhdGlvbnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0VOVl9GV0RfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9FTlZfRldEX0hQUF8wNjI2MDRHRVIKLQotI2lmZGVmIFVOREVSX0NFCi0jZXJyb3IgV2luZG93cyBDRSBkb2VzIG5vdCBzdXBwb3J0IGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSNlbmRpZgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGVudmlyb25tZW50IHsKLQotY2xhc3MgdmFyaWFibGVfYmFzZTsKLXZhcmlhYmxlX2Jhc2UgdmFyKCBjc3RyaW5nIHZhcl9uYW1lICk7Ci0KLW5hbWVzcGFjZSBydF9lbnZfZGV0YWlsIHsKLQotc3RydWN0IHZhcmlhYmxlX2RhdGE7Ci0KLXZhcmlhYmxlX2RhdGEmICBuZXdfdmFyX3JlY29yZCggY3N0cmluZyB2YXJfbmFtZSApOwotdmFyaWFibGVfZGF0YSogIGZpbmRfdmFyX3JlY29yZCggY3N0cmluZyB2YXJfbmFtZSApOwotCi1jc3RyaW5nICAgICAgICAgc3lzX3JlYWRfdmFyKCBjc3RyaW5nIHZhcl9uYW1lICk7Ci12b2lkICAgICAgICAgICAgc3lzX3dyaXRlX3ZhciggY3N0cmluZyB2YXJfbmFtZSwgZm9ybWF0X3N0cmVhbSYgdmFyX3ZhbHVlICk7Ci0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIHZhcmlhYmxlOwotCi19IC8vIG5hbWVzcGFjZSBlbnZpcm9ubWVudAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0VOVl9GV0RfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L21vZGlmaWVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9tb2RpZmllci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZmNmZjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L21vZGlmaWVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIHZhcmlhYmxlIG1vZGlmaWVycwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfRU5WX01PRElGSUVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfRU5WX01PRElGSUVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvbmFtZWRfcGFyYW1zLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBlbnZpcm9ubWVudCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIG1vZGlmaWVycyAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLQotbmZwOjp0eXBlZF9rZXl3b3JkPGNzdHJpbmcsc3RydWN0IGdsb2JhbF9pZF90PiAgIGdsb2JhbF9pZDsKLW5mcDo6a2V5d29yZDxzdHJ1Y3QgZGVmYXVsdF92YWx1ZV90PiAgICAgICAgICAgICBkZWZhdWx0X3ZhbHVlOwotbmZwOjprZXl3b3JkPHN0cnVjdCBpbnRlcnByZXRlcl90PiAgICAgICAgICAgICAgIGludGVycHJldGVyOwotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotfSAvLyBuYW1lc3BhY2UgZW52aXJvbm1lbnQKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9FTlZfTU9ESUZJRVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L3ZhcmlhYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi92YXJpYWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NmJiMjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L3ZhcmlhYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogODE5MTMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgbW9kZWwgb2YgcHJvZ3JhbSBlbnZpcm9ubWVudCB2YXJpYWJsZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfRU5WX1ZBUklBQkxFX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfRU5WX1ZBUklBQkxFX0hQUF8wNjI2MDRHRVIKLQotI2lmZGVmIFVOREVSX0NFCi0jZXJyb3IgV2luZG93cyBDRSBkb2VzIG5vdCBzdXBwb3J0IGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSNlbmRpZgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9hcmd1bWVudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Z3ZC5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvb3B0aW9uYWwuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGVudmlyb25tZW50IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQ6OnZhcmlhYmxlX2RhdGEgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgcnRfZW52X2RldGFpbCB7Ci0KLXN0cnVjdCB2YXJpYWJsZV9kYXRhIDogcHVibGljIHJ1bnRpbWU6OnBhcmFtZXRlciB7Ci0gICAgY3N0cmluZyAgICAgICAgIG1fdmFyX25hbWU7Ci0gICAgZHN0cmluZyAgICAgICAgIG1fZ2xvYmFsX2lkOwotICAgIGFyZ3VtZW50X3B0ciAgICBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgcnRfZW52X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgIHJ1bnRpbWU6OmVudmlyb25tZW50Ojp2YXJpYWJsZV9iYXNlICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHZhcmlhYmxlX2Jhc2UgewotcHVibGljOgotICAgIGV4cGxpY2l0ICAgIHZhcmlhYmxlX2Jhc2UoIHJ0X2Vudl9kZXRhaWw6OnZhcmlhYmxlX2RhdGEmIGRhdGEgKSA6IG1fZGF0YSggJmRhdGEgKSB7fQotCi0gICAgLy8gYXJndW1lbnRzIGFjY2VzcwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBjb25zdCYgICAgdmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFyZ192YWx1ZTxUPiggKm1fZGF0YS0+bV92YWx1ZSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCAgICAgICAgdmFsdWUoIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgcmVzICkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmKCBoYXNfdmFsdWUoKSApCi0gICAgICAgICAgICByZXMgPSBhcmdfdmFsdWU8VD4oICptX2RhdGEtPm1fdmFsdWUgKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzLnJlc2V0KCk7Ci0gICAgfQotCi0gICAgYm9vbCAgICAgICAgaGFzX3ZhbHVlKCkgY29uc3QgICB7IHJldHVybiBtX2RhdGEtPm1fdmFsdWUhPTA7IH0KLSAgICBjc3RyaW5nICAgICBuYW1lKCkgY29uc3QgICAgICAgIHsgcmV0dXJuIG1fZGF0YS0+bV92YXJfbmFtZTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgcnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YSogIG1fZGF0YTsKLX0gOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIHJ1bnRpbWU6OmVudmlyb25tZW50Ojp2YXJpYWJsZSAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQgPSBjc3RyaW5nPgotY2xhc3MgdmFyaWFibGUgOiBwdWJsaWMgdmFyaWFibGVfYmFzZSB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgZXhwbGljaXQgICAgdmFyaWFibGUoIGNzdHJpbmcgdmFyX25hbWUgKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVycz4KLSAgICBleHBsaWNpdCAgICB2YXJpYWJsZSggY3N0cmluZyB2YXJfbmFtZSwgTW9kaWZpZXJzIGNvbnN0JiBtICk7Ci0KLSAgICBleHBsaWNpdCAgICB2YXJpYWJsZSggcnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YSYgZGF0YSApIAotICAgIDogdmFyaWFibGVfYmFzZSggZGF0YSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30KLQotICAgIC8vIG90aGVyIHZhcmlhYmxlIGFzc2lnbm1lbnQKLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIHZhcmlhYmxlIGNvbnN0JiB2ICkgICAgICAgICAgICAgIHsgbV9kYXRhID0gdi5tX2RhdGE7IH0KLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgVCBjb25zdCYgICAgdmFsdWUoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiB2YXJpYWJsZV9iYXNlOjp2YWx1ZTxUPigpOyB9Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDYpKSB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA1OTMpKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCAgICAgICAgdmFsdWUoIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgcmVzICkgY29uc3QgICAgICB7IHZhcmlhYmxlX2Jhc2U6OnZhbHVlKCByZXMgKTsgfQotI2Vsc2UKLSAgICB1c2luZyAgICAgICB2YXJpYWJsZV9iYXNlOjp2YWx1ZTsKLSNlbmRpZgotCi0gICAgLy8gVmFsdWUgYXNzaWdubWVudAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+Ci0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBWIGNvbnN0JiB2ICkKLSAgICB7Ci0gICAgICAgIGlmKCAhaGFzX3ZhbHVlKCkgKQotICAgICAgICAgICAgbV9kYXRhLT5tX3ZhbHVlLnJlc2V0KCBuZXcgdHlwZWRfYXJndW1lbnQ8VD4oICptX2RhdGEgKSApOwotCi0gICAgICAgIGFyZ192YWx1ZTxUPiggKm1fZGF0YS0+bV92YWx1ZSApID0gdjsKLQotICAgICAgICBydF9lbnZfZGV0YWlsOjpzeXNfd3JpdGVfdmFyKCBtX2RhdGEtPm1fdmFyX25hbWUsIGZvcm1hdF9zdHJlYW0oKS5yZWYoKSA8PCB2YWx1ZSgpICk7Ci0gICAgfQotfTsgLy8gY2xhc3MgdmFyaWFibGUKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyLHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyPiYKLW9wZXJhdG9yPDwoIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcj4mIG9zLCB2YXJpYWJsZTxUPiBjb25zdCYgdiApCi17Ci0gICAgb3MgPDwgdi5uYW1lKCkgPDwgJz0nOwotCi0gICAgaWYoIHYuaGFzX3ZhbHVlKCkgKQotICAgICAgICBvcyA8PCB2LnZhbHVlKCk7Ci0KLSAgICByZXR1cm4gb3M7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3I9PSggdmFyaWFibGU8VD4gZXYsIFYgY29uc3QmIHYgKQotewotICAgIHJldHVybiBldi5oYXNfdmFsdWUoKSAmJiBldi52YWx1ZSgpID09IHY7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3I9PSggViBjb25zdCYgdiwgdmFyaWFibGU8VD4gZXYgKQotewotICAgIHJldHVybiBldi5oYXNfdmFsdWUoKSAmJiBldi52YWx1ZSgpID09IHY7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggdmFyaWFibGU8VD4gZXYsIFYgY29uc3QmIHYgKQotewotICAgIHJldHVybiAhZXYuaGFzX3ZhbHVlKCkgfHwgZXYudmFsdWUoKSAhPSB2OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBWPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yIT0oIFYgY29uc3QmIHYsIHZhcmlhYmxlPFQ+IGV2ICkKLXsKLSAgICByZXR1cm4gIWV2Lmhhc192YWx1ZSgpIHx8IGV2LnZhbHVlKCkgIT0gdjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZW52aXJvbm1lbnQKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gSW1wbGVtZW50YXRpb24KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaHBwPgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIHJ1bnRpbWU6OmVudmlyb25tZW50Ojp2YXJpYWJsZSAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgZW52aXJvbm1lbnQgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdmFyaWFibGU8VD46OnZhcmlhYmxlKCBjc3RyaW5nIHZhcl9uYW1lICkKLTogdmFyaWFibGVfYmFzZSggZW52aXJvbm1lbnQ6OnZhcjxUPiggdmFyX25hbWUgKSApCi17fQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXJzPgotdmFyaWFibGU8VD46OnZhcmlhYmxlKCBjc3RyaW5nIHZhcl9uYW1lLCBNb2RpZmllcnMgY29uc3QmIG0gKQotOiB2YXJpYWJsZV9iYXNlKCBlbnZpcm9ubWVudDo6dmFyPFQ+KCB2YXJfbmFtZSwgbSApICkKLXt9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGVudmlyb25tZW50Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfRU5WX1ZBUklBQkxFX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWZmYjU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGdsb2JhbCBmcmFtZXdvcmsgbGV2ZWwgZm9yd2FyZCBkZWNsYXJhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfRldEX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfRldEX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLWNsYXNzIHBhcmFtZXRlcjsKLQotY2xhc3MgYXJndW1lbnQ7Ci10eXBlZGVmIHNoYXJlZF9wdHI8YXJndW1lbnQ+IGFyZ3VtZW50X3B0cjsKLXR5cGVkZWYgc2hhcmVkX3B0cjxhcmd1bWVudCBjb25zdD4gY29uc3RfYXJndW1lbnRfcHRyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyB2YWx1ZV9pbnRlcnByZXRlcjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIHR5cGVkX2FyZ3VtZW50OwotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0ZXRF9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9pbnRlcnByZXRfYXJndW1lbnRfdmFsdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRlYzc2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9pbnRlcnByZXRfYXJndW1lbnRfdmFsdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmYXVsdCBhbGdvcml0aG1zIGZvciBzdHJpbmcgdG8gc3BlY2lmaWMgdHlwZSBjb252ZXJ0aW9ucwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfSU5URVJQUkVUX0FSR1VNRU5UX1ZBTFVFX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfSU5URVJQUkVUX0FSR1VNRU5UX1ZBTFVFX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdHJhY2UuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvb3B0aW9uYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xleGljYWxfY2FzdC5ocHA+Ci0KLS8vIFNUTAotLy8gISEgY291bGQgd2UgZWxpbWluYXRlIHRoZXNlIGluY2x1ZGVzPwotI2luY2x1ZGUgPGxpc3Q+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgcnVudGltZTo6aW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyByZXR1cm5zIHRydWUgaWYgc291cmNlIGlzIHVzZWQgZmFsc2Ugb3RoZXJ3aXNlCi0KLS8vIGdlbmVyaWMgY2FzZQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbCB7Ci0gICAgc3RhdGljIGJvb2wgXyggY3N0cmluZyBzb3VyY2UsIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgcmVzICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiSW4gaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8IiA8PCB0eXBlaWQoVCkubmFtZSgpIDw8ICI+IiApOwotCi0gICAgICAgIHJlcyA9IGxleGljYWxfY2FzdDxUPiggc291cmNlICk7Ci0KLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJTdHJpbmcgIiA8PCBzb3VyY2UgPDwgIiBpcyBpbnRlcnByZXRlZCBhcyAiIDw8ICpyZXMgKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfTsKLQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBkc3RyaW5nIGNhc2UKLXRlbXBsYXRlPD4KLXN0cnVjdCBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbDxkc3RyaW5nPiB7Ci0gICAgc3RhdGljIGJvb2wgXyggY3N0cmluZyBzb3VyY2UsIG5kbmJvb3N0OjpvcHRpb25hbDxkc3RyaW5nPiYgcmVzICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiSW4gaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8ZHN0cmluZz4iICk7Ci0KLSAgICAgICAgcmVzID0gZHN0cmluZygpOwotICAgICAgICBhc3NpZ25fb3AoICpyZXMsIHNvdXJjZSwgMCApOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIGNzdHJpbmcgY2FzZQotdGVtcGxhdGU8Pgotc3RydWN0IGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPGNzdHJpbmc+IHsKLSAgICBzdGF0aWMgYm9vbCBfKCBjc3RyaW5nIHNvdXJjZSwgbmRuYm9vc3Q6Om9wdGlvbmFsPGNzdHJpbmc+JiByZXMgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJJbiBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbDxjc3RyaW5nPiIgKTsKLQotICAgICAgICByZXMgPSBzb3VyY2U7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gc3BlY2lhbGl6YXRpb24gZm9yIHR5cGUgYm9vbAotdGVtcGxhdGU8Pgotc3RydWN0IGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPGJvb2w+IHsKLSAgICBzdGF0aWMgYm9vbCBfKCBjc3RyaW5nIHNvdXJjZSwgbmRuYm9vc3Q6Om9wdGlvbmFsPGJvb2w+JiByZXMgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJJbiBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbDxib29sPiIgKTsKLQotICAgICAgICBzdGF0aWMgbGl0ZXJhbF9jc3RyaW5nIFlFUyggTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiWUVTIiApICk7Ci0gICAgICAgIHN0YXRpYyBsaXRlcmFsX2NzdHJpbmcgWSggTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiWSIgKSApOwotICAgICAgICBzdGF0aWMgbGl0ZXJhbF9jc3RyaW5nIE5PKCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICJOTyIgKSApOwotICAgICAgICBzdGF0aWMgbGl0ZXJhbF9jc3RyaW5nIE4oIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIk4iICkgKTsKLSAgICAgICAgc3RhdGljIGxpdGVyYWxfY3N0cmluZyBvbmUoIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIjEiICkgKTsKLSAgICAgICAgc3RhdGljIGxpdGVyYWxfY3N0cmluZyB6ZXJvKCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICIwIiApICk7Ci0KLSAgICAgICAgc291cmNlLnRyaW0oKTsKLQotICAgICAgICBpZiggY2FzZV9pbnNfZXEoIHNvdXJjZSwgWUVTICkgfHwgY2FzZV9pbnNfZXEoIHNvdXJjZSwgWSApIHx8IGNhc2VfaW5zX2VxKCBzb3VyY2UsIG9uZSApICkgewotICAgICAgICAgICAgcmVzID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoIGNhc2VfaW5zX2VxKCBzb3VyY2UsIE5PICkgfHwgY2FzZV9pbnNfZXEoIHNvdXJjZSwgTiApIHx8IGNhc2VfaW5zX2VxKCBzb3VyY2UsIHplcm8gKSApIHsKLSAgICAgICAgICAgIHJlcyA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBib29sCi1pbnRlcnByZXRfYXJndW1lbnRfdmFsdWUoIGNzdHJpbmcgc291cmNlLCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHJlcywgbG9uZyApCi17Ci0gICAgcmV0dXJuIGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPFQ+OjpfKCBzb3VyY2UsIHJlcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBzcGVjaWFsaXphdGlvbiBmb3IgbGlzdCBvZiB2YWx1ZXMKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbAotaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlKCBjc3RyaW5nIHNvdXJjZSwgbmRuYm9vc3Q6Om9wdGlvbmFsPHN0ZDo6bGlzdDxUPiA+JiByZXMsIGludCApCi17Ci0gICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJJbiBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWU8c3RkOjpsaXN0PFQ+PiIgKTsKLQotICAgIHJlcyA9IHN0ZDo6bGlzdDxUPigpOwotCi0gICAgd2hpbGUoICFzb3VyY2UuaXNfZW1wdHkoKSApIHsKLSAgICAgICAgLy8gISEgc2hvdWxkIHdlIHVzZSB0b2tlbl9pdGVyYXRvcgotICAgICAgICBjc3RyaW5nOjppdGVyYXRvciBzaW5nbGVfdmFsdWVfZW5kID0gc3RkOjpmaW5kKCBzb3VyY2UuYmVnaW4oKSwgc291cmNlLmVuZCgpLCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnLCcgKSApOwotCi0gICAgICAgIG5kbmJvb3N0OjpvcHRpb25hbDxUPiB2YWx1ZTsKLSAgICAgICAgaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlKCBjc3RyaW5nKCBzb3VyY2UuYmVnaW4oKSwgc2luZ2xlX3ZhbHVlX2VuZCApLCB2YWx1ZSwgMCApOwotCi0gICAgICAgIHJlcy0+cHVzaF9iYWNrKCAqdmFsdWUgKTsKLQotICAgICAgICBzb3VyY2UudHJpbV9sZWZ0KCBzaW5nbGVfdmFsdWVfZW5kICsgMSApOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0lOVEVSUFJFVF9BUkdVTUVOVF9WQUxVRV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9wYXJhbWV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvcGFyYW1ldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNmYjgxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9wYXJhbWV0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBhYnN0cmFjdCBpbnRlcmZhY2UgZm9yIHRoZSBmb3JtYWwgcGFyYW1ldGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBydW50aW1lOjpwYXJhbWV0ZXIgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBwYXJhbWV0ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgfnBhcmFtZXRlcigpIHt9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS90cmFjZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS90cmFjZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkNDc0MjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdHJhY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBvcHRpb25hbCBpbnRlcm5hbCB0cmFjaW5nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9UUkFDRV9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1RSQUNFX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX1JUX1BBUkFNX0RFQlVHCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCBzdHIgKSBzdGQ6OmNlcnIgPDwgc3RyIDw8IHN0ZDo6ZW5kbAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggc3RyICkKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfVFJBQ0VfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM4Y2U3OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBleGNlcHRpb25zIGFuZCB2YWxpZGF0aW9uIHRvb2xzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9WQUxJREFUSU9OX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfVkFMSURBVElPTl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi0vLyBTVEwKLSNpZmRlZiBORE5CT09TVF9SVF9QQVJBTV9FWENFUFRJT05fSU5IRVJJVF9TVEQKLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBydW50aW1lOjpsb2dpY19lcnJvciAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgbG9naWNfZXJyb3IgCi0jaWZkZWYgTkROQk9PU1RfUlRfUEFSQU1fRVhDRVBUSU9OX0lOSEVSSVRfU1RECi06IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbgotI2VuZGlmCi17Ci0gICAgdHlwZWRlZiBzaGFyZWRfcHRyPGRzdHJpbmc+IGRzdHJpbmdfcHRyOwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yIC8vICEhIGNvdWxkIHdlIGVsaW1pbmF0ZSBzaGFyZWRfcHRyCi0gICAgZXhwbGljaXQgICAgbG9naWNfZXJyb3IoIGNzdHJpbmcgbXNnICkgOiBtX21zZyggbmV3IGRzdHJpbmcoIG1zZy5iZWdpbigpLCBtc2cuc2l6ZSgpICkgKSB7fQotICAgIH5sb2dpY19lcnJvcigpIHRocm93KCkgICAgICAgICAgICAgICAgICAgICAgICAgIHt9Ci0KLSAgICBkc3RyaW5nIGNvbnN0JiAgIG1zZygpIGNvbnN0ICAgICAgICAgICAgICAgICAgICB7IHJldHVybiAqbV9tc2c7IH0KLSAgICB2aXJ0dWFsIGNoYXJfdHlwZSBjb25zdCogd2hhdCgpIGNvbnN0IHRocm93KCkgICB7IHJldHVybiBtX21zZy0+Y19zdHIoKTsgfQotCi1wcml2YXRlOgotICAgIGRzdHJpbmdfcHRyIG1fbXNnOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIHJ1bnRpbWU6OnJlcG9ydF9sb2dpY19lcnJvciAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbmxpbmUgdm9pZAotcmVwb3J0X2xvZ2ljX2Vycm9yKCBmb3JtYXRfc3RyZWFtJiBtc2cgKQotewotICAgIHRocm93IE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6bG9naWNfZXJyb3IoIG1zZy5zdHIoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1JFUE9SVF9MT0dJQ19FUlJPUiggbXNnICkgXAotICAgIG5kbmJvb3N0OjpORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0U6OnJlcG9ydF9sb2dpY19lcnJvciggZm9ybWF0X3N0cmVhbSgpLnJlZigpIDw8IG1zZyApCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoIGIsIG1zZyApIFwKLSAgICBpZiggYiApIHt9IGVsc2UgTkROQk9PU1RfUlRfUEFSQU1fUkVQT1JUX0xPR0lDX0VSUk9SKCBtc2cgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX1ZBTElEQVRJT05fSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmY2ZmMGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc2ltcGxlIGhlbHBlcnMgZm9yIGNyZWF0aW5nIGN1c29tIG91dHB1dCBtYW5pcHVsYXRvcnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVFJJVklBTF9TSUdOTEVUT05fSFBQXzAyMDUwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1RSSVZJQUxfU0lHTkxFVE9OX0hQUF8wMjA1MDVHRVIKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvbm9uY29weWFibGUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIHNpbmdsZXRvbiAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkPgotY2xhc3Mgc2luZ2xldG9uIDogcHJpdmF0ZSBuZG5ib29zdDo6bm9uY29weWFibGUgewotcHVibGljOgotICAgIHN0YXRpYyBEZXJpdmVkJiBpbnN0YW5jZSgpIHsgc3RhdGljIERlcml2ZWQgdGhlX2luc3Q7IHJldHVybiB0aGVfaW5zdDsgfSAgICAKLXByb3RlY3RlZDoKLSAgICBzaW5nbGV0b24oKSAge30KLSAgICB+c2luZ2xldG9uKCkge30KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0NPTlMoIHR5cGUgKSAgICAgICBcCi1mcmllbmQgY2xhc3MgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6c2luZ2xldG9uPHR5cGU+OyBcCi10eXBlKCkge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fREVDQ1hYX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDYwNTkwMDQyKSkKLQotI2RlZmluZSBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9JTlNUKCBpbnN0ICkgXAotdGVtcGxhdGUgY2xhc3MgdW5pdF90ZXN0OjpzaW5nbGV0b248IE5ETkJPT1NUX0pPSU4oIGluc3QsIF90ICkgPiA7IFwKLW5hbWVzcGFjZSB7IE5ETkJPT1NUX0pPSU4oIGluc3QsIF90KSYgaW5zdCA9IE5ETkJPT1NUX0pPSU4oIGluc3QsIF90KTo6aW5zdGFuY2UoKTsgfQotCi0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfQ0NfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPCA0Ci0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0lOU1QoIGluc3QgKSBcCi1zdGF0aWMgTkROQk9PU1RfSk9JTiggaW5zdCwgX3QpJiBpbnN0ID0gTkROQk9PU1RfSk9JTiAoaW5zdCwgX3QpOjppbnN0YW5jZSgpOwotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0lOU1QoIGluc3QgKSBcCi1uYW1lc3BhY2UgeyBORE5CT09TVF9KT0lOKCBpbnN0LCBfdCkmIGluc3QgPSBORE5CT09TVF9KT0lOKCBpbnN0LCBfdCk6Omluc3RhbmNlKCk7IH0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9UUklWSUFMX1NJR05MRVRPTl9IUFBfMDIwNTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3dyYXBfc3RyaW5nc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZlMTExMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDItMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogd3JhcHMgc3Ryc3RyZWFtIGFuZCBzdHJpbmdzdHJlYW0gKGRlcGVuZHMgd2l0aCBvbmUgaXMgcHJlc2VudCkKLS8vICAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgdGhlIHVuaWZpZWQgaW50ZXJmYWNlCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9XUkFQX1NUUklOR1NUUkVBTV9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1dSQVBfU1RSSU5HU1RSRUFNX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLS8vIFNUTAotI2lmZGVmIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotI2luY2x1ZGUgPHN0cnN0cmVhbT4gICAgICAgIC8vIGZvciBzdGQ6Om9zdHJzdHJlYW0KLSNlbHNlCi0jaW5jbHVkZSA8c3N0cmVhbT4gICAgICAgICAgLy8gZm9yIHN0ZDo6b3N0cmluZ3N0cmVhbQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBiYXNpY193cmFwX3N0cmluZ3N0cmVhbSAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotY2xhc3MgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW0gewotcHVibGljOgotI2lmIGRlZmluZWQoTkROQk9PU1RfQ0xBU1NJQ19JT1NUUkVBTVMpCi0gICAgdHlwZWRlZiBzdGQ6Om9zdHJpbmdzdHJlYW0gICAgICAgICAgICAgICB3cmFwcGVkX3N0cmVhbTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNKQotICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3Ryc3RyZWFtPENoYXJUPiAgICAgd3JhcHBlZF9zdHJlYW07Ci0jZWxzZQotICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyaW5nc3RyZWFtPENoYXJUPiAgd3JhcHBlZF9zdHJlYW07Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0gICAgLy8gQWNjZXNzIG1ldGhvZHMKLSAgICBiYXNpY193cmFwX3N0cmluZ3N0cmVhbSYgICAgICAgIHJlZigpOwotICAgIHdyYXBwZWRfc3RyZWFtJiAgICAgICAgICAgICAgICAgc3RyZWFtKCk7Ci0gICAgc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQ+IGNvbnN0JiBzdHIoKTsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICB3cmFwcGVkX3N0cmVhbSAgICAgICAgICAgICAgICAgIG1fc3RyZWFtOwotICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJUPiAgICAgICAgbV9zdHI7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+Jgotb3BlcmF0b3I8PCggYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JiB0YXJnLCBUIGNvbnN0JiB0ICkKLXsKLSAgICB0YXJnLnN0cmVhbSgpIDw8IHQ7Ci0gICAgcmV0dXJuIHRhcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD46OndyYXBwZWRfc3RyZWFtJgotYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+OjpzdHJlYW0oKQotewotICAgIHJldHVybiBtX3N0cmVhbTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYKLWJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPjo6cmVmKCkKLXsgCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQ+IGNvbnN0JgotYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+OjpzdHIoKQotewotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0gICAgbV9zdHIuYXNzaWduKCBtX3N0cmVhbS5zdHIoKSwgbV9zdHJlYW0ucGNvdW50KCkgKTsKLSAgICBtX3N0cmVhbS5mcmVlemUoIGZhbHNlICk7Ci0jZWxzZQotICAgIG1fc3RyID0gbV9zdHJlYW0uc3RyKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBtX3N0cjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYKLW9wZXJhdG9yPDwoIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYgdGFyZywgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JiBzcmMgKQotewotICAgIHRhcmcgPDwgc3JjLnN0cigpOwotICAgIHJldHVybiB0YXJnOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgTkROQk9PU1RfVEVTVF9VU0VfU1REX0xPQ0FMRSAKLQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYKLW9wZXJhdG9yPDwoIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYgdGFyZywgc3RkOjppb3NfYmFzZSYgKE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMICptYW4pKHN0ZDo6aW9zX2Jhc2UmKSApCi17Ci0gICAgdGFyZy5zdHJlYW0oKSA8PCBtYW47Ci0gICAgcmV0dXJuIHRhcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJULHR5cGVuYW1lIEVsZW0sdHlwZW5hbWUgVHI+Ci1pbmxpbmUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+Jgotb3BlcmF0b3I8PCggYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JiB0YXJnLCBzdGQ6OmJhc2ljX29zdHJlYW08RWxlbSxUcj4mIChORE5CT09TVF9URVNUX0NBTExfREVDTCAqbWFuKShzdGQ6OmJhc2ljX29zdHJlYW08RWxlbSwgVHI+JikgKQotewotICAgIHRhcmcuc3RyZWFtKCkgPDwgbWFuOwotICAgIHJldHVybiB0YXJnOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVCx0eXBlbmFtZSBFbGVtLHR5cGVuYW1lIFRyPgotaW5saW5lIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYKLW9wZXJhdG9yPDwoIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPiYgdGFyZywgc3RkOjpiYXNpY19pb3M8RWxlbSwgVHI+JiAoTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgKm1hbikoc3RkOjpiYXNpY19pb3M8RWxlbSwgVHI+JikgKQotewotICAgIHRhcmcuc3RyZWFtKCkgPDwgbWFuOwotICAgIHJldHVybiB0YXJnOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZW5kaWYKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgd3JhcF9zdHJpbmdzdHJlYW0gICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10eXBlZGVmIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPGNoYXI+ICAgICAgIHdyYXBfc3RyaW5nc3RyZWFtOwotdHlwZWRlZiBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTx3Y2hhcl90PiAgICB3cmFwX3dzdHJpbmdzdHJlYW07Ci0KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmICAvLyBORE5CT09TVF9XUkFQX1NUUklOR1NUUkVBTV9IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMveG1sX3ByaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3htbF9wcmludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBmMjk3Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMveG1sX3ByaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDQtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjb21tb24gY29kZSB1c2VkIGJ5IGFueSBhZ2VudCBzZXJ2aW5nIGFzIFhNTCBwcmludGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1hNTF9QUklOVEVSX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9YTUxfUFJJTlRFUl9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9maXhlZF9tYXBwaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2N1c3RvbV9tYW5pcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9mb3JlYWNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgeG1sIHByaW50IGhlbHBlcnMgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbmxpbmUgdm9pZAotcHJpbnRfZXNjYXBlZCggc3RkOjpvc3RyZWFtJiB3aGVyZV90bywgY29uc3Rfc3RyaW5nIHZhbHVlICkKLXsKLSAgICBzdGF0aWMgZml4ZWRfbWFwcGluZzxjaGFyLGNoYXIgY29uc3QqPiBjaGFyX3R5cGUoCi0gICAgICAgICc8JyAsICJsdCIsCi0gICAgICAgICc+JyAsICJndCIsCi0gICAgICAgICcmJyAsICJhbXAiLAotICAgICAgICAnXCcnLCAiYXBvcyIgLAotICAgICAgICAnIicgLCAicXVvdCIsCi0KLSAgICAgICAgMAotICAgICk7Ci0KLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIGNoYXIsIGMsIHZhbHVlICkgewotICAgICAgICBjaGFyIGNvbnN0KiByZWYgPSBjaGFyX3R5cGVbY107Ci0KLSAgICAgICAgaWYoIHJlZiApCi0gICAgICAgICAgICB3aGVyZV90byA8PCAnJicgPDwgcmVmIDw8ICc7JzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd2hlcmVfdG8gPDwgYzsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWlubGluZSB2b2lkCi1wcmludF9lc2NhcGVkKCBzdGQ6Om9zdHJlYW0mIHdoZXJlX3RvLCBzdGQ6OnN0cmluZyBjb25zdCYgdmFsdWUgKQotewotICAgIHByaW50X2VzY2FwZWQoIHdoZXJlX3RvLCBjb25zdF9zdHJpbmcoIHZhbHVlICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkCi1wcmludF9lc2NhcGVkKCBzdGQ6Om9zdHJlYW0mIHdoZXJlX3RvLCBUIGNvbnN0JiB2YWx1ZSApCi17Ci0gICAgd2hlcmVfdG8gPDwgdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXR5cGVkZWYgY3VzdG9tX21hbmlwPHN0cnVjdCBhdHRyX3ZhbHVlX3Q+IGF0dHJfdmFsdWU7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtJgotb3BlcmF0b3I8PCggY3VzdG9tX3ByaW50ZXI8YXR0cl92YWx1ZT4gY29uc3QmIHAsIFQgY29uc3QmIHZhbHVlICkKLXsKLSAgICAqcCA8PCAiPVwiIjsKLSAgICBwcmludF9lc2NhcGVkKCAqcCwgdmFsdWUgKTsKLSAgICAqcCA8PCAnIic7Ci0KLSAgICByZXR1cm4gKnA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXR5cGVkZWYgY3VzdG9tX21hbmlwPHN0cnVjdCBjZGF0YV90PiBjZGF0YTsKLQotaW5saW5lIHN0ZDo6b3N0cmVhbSYKLW9wZXJhdG9yPDwoIGN1c3RvbV9wcmludGVyPGNkYXRhPiBjb25zdCYgcCwgY29uc3Rfc3RyaW5nIHZhbHVlICkKLXsKLSAgICByZXR1cm4gKnAgPDwgTkROQk9PU1RfVEVTVF9MKCAiPCFbQ0RBVEFbIiApIDw8IHZhbHVlIDw8IE5ETkJPT1NUX1RFU1RfTCggIl1dPiIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9YTUxfUFJJTlRFUl9IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NWE5ZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfVVVJRF9BQTE1RTc0QTg1NkYxMUUwOEI4RDkzRjI0ODI0MDE5QgotI2RlZmluZSBORE5CT09TVF9VVUlEX0FBMTVFNzRBODU2RjExRTA4QjhEOTNGMjQ4MjQwMTlCCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCwxKQotI2VuZGlmCi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgRW1pbCBEb3RjaGV2c2tpIGFuZCBSZXZlcmdlIFN0dWRpb3MsIEluYy4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS90aHJvd19leGNlcHRpb24uaHRtbAotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvYXR0cmlidXRlX25vcmV0dXJuLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxleGNlcHRpb24+Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfRVhDRVBUSU9OX0RJU0FCTEUgKSAmJiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MykgKQotIyBkZWZpbmUgTkROQk9PU1RfRVhDRVBUSU9OX0RJU0FCTEUKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX0VYQ0VQVElPTl9ESVNBQkxFICkgJiYgZGVmaW5lZCggTkROQk9PU1RfTVNWQyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDwgMTMxMCApCi0jIGRlZmluZSBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfRVhDRVBUSU9OX0RJU0FCTEUgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9leGNlcHRpb24vZXhjZXB0aW9uLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY3VycmVudF9mdW5jdGlvbi5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9USFJPV19FWENFUFRJT04oeCkgOjpuZG5ib29zdDo6ZXhjZXB0aW9uX2RldGFpbDo6dGhyb3dfZXhjZXB0aW9uXyh4LE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sX19GSUxFX18sX19MSU5FX18pCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfVEhST1dfRVhDRVBUSU9OKHgpIDo6bmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbih4KQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotI2lmZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotdm9pZCB0aHJvd19leGNlcHRpb24oIHN0ZDo6ZXhjZXB0aW9uIGNvbnN0ICYgZSApOyAvLyB1c2VyIGRlZmluZWQKLQotI2Vsc2UKLQotaW5saW5lIHZvaWQgdGhyb3dfZXhjZXB0aW9uX2Fzc2VydF9jb21wYXRpYmlsaXR5KCBzdGQ6OmV4Y2VwdGlvbiBjb25zdCAmICkgeyB9Ci0KLXRlbXBsYXRlPGNsYXNzIEU+IE5ETkJPT1NUX0FUVFJJQlVURV9OT1JFVFVSTiBpbmxpbmUgdm9pZCB0aHJvd19leGNlcHRpb24oIEUgY29uc3QgJiBlICkKLXsKLSAgICAvL0FsbCBib29zdCBleGNlcHRpb25zIGFyZSByZXF1aXJlZCB0byBkZXJpdmUgZnJvbSBzdGQ6OmV4Y2VwdGlvbiwKLSAgICAvL3RvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggTkROQk9PU1RfTk9fRVhDRVBUSU9OUy4KLSAgICB0aHJvd19leGNlcHRpb25fYXNzZXJ0X2NvbXBhdGliaWxpdHkoZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfRVhDRVBUSU9OX0RJU0FCTEUKLSAgICB0aHJvdyBlbmFibGVfY3VycmVudF9leGNlcHRpb24oZW5hYmxlX2Vycm9yX2luZm8oZSkpOwotI2Vsc2UKLSAgICB0aHJvdyBlOwotI2VuZGlmCi19Ci0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX0VYQ0VQVElPTl9ESVNBQkxFICkKLSAgICBuYW1lc3BhY2UKLSAgICBleGNlcHRpb25fZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KLSAgICAgICAgTkROQk9PU1RfQVRUUklCVVRFX05PUkVUVVJOCi0gICAgICAgIHZvaWQKLSAgICAgICAgdGhyb3dfZXhjZXB0aW9uXyggRSBjb25zdCAmIHgsIGNoYXIgY29uc3QgKiBjdXJyZW50X2Z1bmN0aW9uLCBjaGFyIGNvbnN0ICogZmlsZSwgaW50IGxpbmUgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgIHNldF9pbmZvKAotICAgICAgICAgICAgICAgICAgICBzZXRfaW5mbygKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9pbmZvKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9lcnJvcl9pbmZvKHgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93X2Z1bmN0aW9uKGN1cnJlbnRfZnVuY3Rpb24pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93X2ZpbGUoZmlsZSkpLAotICAgICAgICAgICAgICAgICAgICB0aHJvd19saW5lKGxpbmUpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3RpbWVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGltZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTlmMzYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGltZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gIGJvb3N0IHRpbWVyLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAxOTk0LTk5LiAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90aW1lciBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vICAwMSBBcHIgMDEgIE1vZGlmaWVkIHRvIHVzZSBuZXcgPG5kbmJvb3N0L2xpbWl0cy5ocHA+IGhlYWRlci4gKEpNYWRkb2NrKQotLy8gIDEyIEphbiAwMSAgQ2hhbmdlIHRvIGlubGluZSBpbXBsZW1lbnRhdGlvbiB0byBhbGxvdyB1c2Ugd2l0aG91dCBsaWJyYXJ5Ci0vLyAgICAgICAgICAgICBidWlsZHMuIFNlZSBkb2NzIGZvciBtb3JlIHJhdGlvbmFsZS4gKEJlbWFuIERhd2VzKSAKLS8vICAyNSBTZXAgOTkgIGVsYXBzZWRfbWF4KCkgYW5kIGVsYXBzZWRfbWluKCkgYWRkZWQgKEpvaG4gTWFkZG9jaykKLS8vICAxNiBKdWwgOTkgIFNlY29uZCBiZXRhCi0vLyAgIDYgSnVsIDk5ICBJbml0aWFsIGJvb3N0IHZlcnNpb24KLQotI2lmbmRlZiBORE5CT09TVF9USU1FUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVElNRVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPGN0aW1lPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0KLSMgaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSAgICBuYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpjbG9ja190OyB1c2luZyA6OmNsb2NrOyB9Ci0jIGVuZGlmCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gIHRpbWVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIEEgdGltZXIgb2JqZWN0IG1lYXN1cmVzIGVsYXBzZWQgdGltZS4KLQotLy8gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgaW1wbGVtZW50YXRpb25zIG1lYXN1cmUgd2FsbCBjbG9jayByYXRoZXIgdGhhbiBDUFUKLS8vICB0aW1lIHNpbmNlIHRoZSBpbnRlbmRlZCB1c2UgaXMgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQgb24gc3lzdGVtcyB3aGVyZQotLy8gIHRvdGFsIGVsYXBzZWQgdGltZSBpcyBtb3JlIGltcG9ydGFudCB0aGFuIGp1c3QgcHJvY2VzcyBvciBDUFUgdGltZS4KLQotLy8gIFdhcm5pbmdzOiBUaGUgbWF4aW11bSBtZWFzdXJhYmxlIGVsYXBzZWQgdGltZSBtYXkgd2VsbCBiZSBvbmx5IDU5Ni41KyBob3VycwotLy8gIGR1ZSB0byBpbXBsZW1lbnRhdGlvbiBsaW1pdGF0aW9ucy4gIFRoZSBhY2N1cmFjeSBvZiB0aW1pbmdzIGRlcGVuZHMgb24gdGhlCi0vLyAgYWNjdXJhY3kgb2YgdGltaW5nIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtLCBhbmQKLS8vICB0aGlzIHZhcmllcyBhIGdyZWF0IGRlYWwgZnJvbSBwbGF0Zm9ybSB0byBwbGF0Zm9ybS4KLQotY2xhc3MgdGltZXIKLXsKLSBwdWJsaWM6Ci0gICAgICAgICB0aW1lcigpIHsgX3N0YXJ0X3RpbWUgPSBzdGQ6OmNsb2NrKCk7IH0gLy8gcG9zdGNvbmRpdGlvbjogZWxhcHNlZCgpPT0wCi0vLyAgICAgICAgIHRpbWVyKCBjb25zdCB0aW1lciYgc3JjICk7ICAgICAgLy8gcG9zdDogZWxhcHNlZCgpPT1zcmMuZWxhcHNlZCgpCi0vLyAgICAgICAgfnRpbWVyKCl7fQotLy8gIHRpbWVyJiBvcGVyYXRvcj0oIGNvbnN0IHRpbWVyJiBzcmMgKTsgIC8vIHBvc3Q6IGVsYXBzZWQoKT09c3JjLmVsYXBzZWQoKQotICB2b2lkICAgcmVzdGFydCgpIHsgX3N0YXJ0X3RpbWUgPSBzdGQ6OmNsb2NrKCk7IH0gLy8gcG9zdDogZWxhcHNlZCgpPT0wCi0gIGRvdWJsZSBlbGFwc2VkKCkgY29uc3QgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gZWxhcHNlZCB0aW1lIGluIHNlY29uZHMKLSAgICB7IHJldHVybiAgZG91YmxlKHN0ZDo6Y2xvY2soKSAtIF9zdGFydF90aW1lKSAvIENMT0NLU19QRVJfU0VDOyB9Ci0KLSAgZG91YmxlIGVsYXBzZWRfbWF4KCkgY29uc3QgICAvLyByZXR1cm4gZXN0aW1hdGVkIG1heGltdW0gdmFsdWUgZm9yIGVsYXBzZWQoKQotICAvLyBQb3J0YWJpbGl0eSB3YXJuaW5nOiBlbGFwc2VkX21heCgpIG1heSByZXR1cm4gdG9vIGhpZ2ggYSB2YWx1ZSBvbiBzeXN0ZW1zCi0gIC8vIHdoZXJlIHN0ZDo6Y2xvY2tfdCBvdmVyZmxvd3Mgb3IgcmVzZXRzIGF0IHN1cnByaXNpbmcgdmFsdWVzLgotICB7Ci0gICAgcmV0dXJuIChkb3VibGUoKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpjbG9ja190Pjo6bWF4KSgpKQotICAgICAgIC0gZG91YmxlKF9zdGFydF90aW1lKSkgLyBkb3VibGUoQ0xPQ0tTX1BFUl9TRUMpOyAKLSAgfQotCi0gIGRvdWJsZSBlbGFwc2VkX21pbigpIGNvbnN0ICAgICAgICAgICAgLy8gcmV0dXJuIG1pbmltdW0gdmFsdWUgZm9yIGVsYXBzZWQoKQotICAgeyByZXR1cm4gZG91YmxlKDEpL2RvdWJsZShDTE9DS1NfUEVSX1NFQyk7IH0KLQotIHByaXZhdGU6Ci0gIHN0ZDo6Y2xvY2tfdCBfc3RhcnRfdGltZTsKLX07IC8vIHRpbWVyCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVElNRVJfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYjY3NzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90dXBsZS9kZXRhaWwvdHVwbGVfYmFzaWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTgwICswLDAgQEAKLS8vICB0dXBsZV9iYXNpYy5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotLy8gT3V0c2lkZSBoZWxwOgotLy8gVGhpcyBhbmQgdGhhdCwgR2FyeSBQb3dlbGwuCi0vLyBGaXhlZCByZXR1cm4gdHlwZXMgZm9yIGdldF9oZWFkL2dldF90YWlsCi0vLyAoIGFuZCBvdGhlciBidWdzICkgcGVyIHN1Z2dlc3Rpb24gb2YgSmVucyBNYXVyZXIKLS8vIHNpbXBsaWZpZWQgZWxlbWVudCB0eXBlIGFjY2Vzc29ycyArIGJ1ZyBmaXggIChKZXJlbXkgU2llaykKLS8vIFNldmVyYWwgY2hhbmdlcy9hZGRpdGlvbnMgYWNjb3JkaW5nIHRvIHN1Z2dlc3Rpb25zIGJ5IERvdWdsYXMgR3JlZ29yLAotLy8gV2lsbGlhbSBLZW1wZiwgVmVzYSBLYXJ2b25lbiwgSm9obiBNYXggU2thbGxlciwgRWQgQnJleSwgQmVtYW4gRGF3ZXMsCi0vLyBEYXZpZCBBYnJhaGFtcy4KLQotLy8gUmV2aXNpb24gaGlzdG9yeToKLS8vIDIwMDIgMDUgMDEgSHVnbyBEdW5jYW46IEZpeCBmb3IgQm9ybGFuZCBhZnRlciBKYWFra28ncyBwcmV2aW91cyBjaGFuZ2VzCi0vLyAyMDAyIDA0IDE4IEphYWtrbzogdHVwbGUgZWxlbWVudCB0eXBlcyBjYW4gYmUgdm9pZCBvciBwbGFpbiBmdW5jdGlvbgotLy8gICAgICAgICAgICAgICAgICAgIHR5cGVzLCBhcyBsb25nIGFzIG5vIG9iamVjdCBpcyBjcmVhdGVkLgotLy8gICAgICAgICAgICAgICAgICAgIFR1cGxlIG9iamVjdHMgY2FuIG5vIGhvbGQgZXZlbiBub25jb3B5YWJsZSB0eXBlcwotLy8gICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgYXJyYXlzLgotLy8gMjAwMSAxMCAyMiBKb2huIE1hZGRvY2sKLS8vICAgICAgRml4ZXMgZm9yIEJvcmxhbmQgQysrCi0vLyAyMDAxIDA4IDMwIERhdmlkIEFicmFoYW1zCi0vLyAgICAgIEFkZGVkIGRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNvbnM8Pi4KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfVFVQTEVfQkFTSUNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RVUExFX0JBU0lDX0hQUAotCi0KLSNpbmNsdWRlIDx1dGlsaXR5PiAvLyBuZWVkZWQgZm9yIHRoZSBhc3NpZ25tZW50IGZyb20gcGFpciB0byB0dXBsZQotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvY3ZfdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9mdW5jdGlvbl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3V0aWxpdHkvc3dhcC5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAiIC8vIG5lZWRlZCBmb3IgTkROQk9PU1RfV09SS0FST1VORAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR1cGxlcyB7Ci0KLS8vIC0tIG51bGxfdHlwZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotc3RydWN0IG51bGxfdHlwZSB7fTsKLQotLy8gYSBoZWxwZXIgZnVuY3Rpb24gdG8gcHJvdmlkZSBhIGNvbnN0IG51bGxfdHlwZSB0eXBlIHRlbXBvcmFyeQotbmFtZXNwYWNlIGRldGFpbCB7Ci0gIGlubGluZSBjb25zdCBudWxsX3R5cGUgY251bGwoKSB7IHJldHVybiBudWxsX3R5cGUoKTsgfQotCi0KLS8vIC0tIGlmIGNvbnN0cnVjdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFByb3Bvc2VkIGJ5IEtyenlzenRvZiBDemFybmVja2kgYW5kIFVscmljaCBFaXNlbmVja2VyCi0KLXRlbXBsYXRlIDxib29sIElmLCBjbGFzcyBUaGVuLCBjbGFzcyBFbHNlPiBzdHJ1Y3QgSUYgeyB0eXBlZGVmIFRoZW4gUkVUOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVGhlbiwgY2xhc3MgRWxzZT4gc3RydWN0IElGPGZhbHNlLCBUaGVuLCBFbHNlPiB7Ci0gIHR5cGVkZWYgRWxzZSBSRVQ7Ci19OwotCi19IC8vIGVuZCBkZXRhaWwKLQotLy8gLSBjb25zIGZvcndhcmQgZGVjbGFyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlIDxjbGFzcyBIVCwgY2xhc3MgVFQ+IHN0cnVjdCBjb25zOwotCi0KLS8vIC0gdHVwbGUgZm9yd2FyZCBkZWNsYXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdGVtcGxhdGUgPAotICBjbGFzcyBUMCA9IG51bGxfdHlwZSwgY2xhc3MgVDEgPSBudWxsX3R5cGUsIGNsYXNzIFQyID0gbnVsbF90eXBlLAotICBjbGFzcyBUMyA9IG51bGxfdHlwZSwgY2xhc3MgVDQgPSBudWxsX3R5cGUsIGNsYXNzIFQ1ID0gbnVsbF90eXBlLAotICBjbGFzcyBUNiA9IG51bGxfdHlwZSwgY2xhc3MgVDcgPSBudWxsX3R5cGUsIGNsYXNzIFQ4ID0gbnVsbF90eXBlLAotICBjbGFzcyBUOSA9IG51bGxfdHlwZT4KLWNsYXNzIHR1cGxlOwotCi0vLyB0dXBsZV9sZW5ndGggZm9yd2FyZCBkZWNsYXJhdGlvbgotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGxlbmd0aDsKLQotCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAtLSBnZW5lcmF0ZSBlcnJvciB0ZW1wbGF0ZSwgcmVmZXJlbmNpbmcgdG8gbm9uLWV4aXN0aW5nIG1lbWJlcnMgb2YgdGhpcwotLy8gdGVtcGxhdGUgaXMgdXNlZCB0byBwcm9kdWNlIGNvbXBpbGF0aW9uIGVycm9ycyBpbnRlbnRpb25hbGx5Ci10ZW1wbGF0ZTxjbGFzcyBUPgotY2xhc3MgZ2VuZXJhdGVfZXJyb3I7Ci0KLXRlbXBsYXRlPGludCBOPgotc3RydWN0IGRyb3BfZnJvbnQgewotICAgIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICAgIHN0cnVjdCBhcHBseSB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkcm9wX2Zyb250PE4tMT46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURQotICAgICAgICAgICAgYXBwbHk8VHVwbGU+IG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZXh0Ojp0eXBlOjp0YWlsX3R5cGUgdHlwZTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHR5cGUmIGNhbGwoY29uc3QgVHVwbGUmIHR1cCkgewotICAgICAgICAgICAgcmV0dXJuIG5leHQ6OmNhbGwodHVwKS50YWlsOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkcm9wX2Zyb250PDA+IHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgICBzdHJ1Y3QgYXBwbHkgewotICAgICAgICB0eXBlZGVmIFR1cGxlIHR5cGU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB0eXBlJiBjYWxsKGNvbnN0IFR1cGxlJiB0dXApIHsKLSAgICAgICAgICAgIHJldHVybiB0dXA7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotfSAvLyBlbmQgb2YgbmFtZXNwYWNlIGRldGFpbAotCi0KLS8vIC1jb25zIHR5cGUgYWNjZXNzb3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDxOLFQ+Ojp0eXBlIGdldHMgdGhlIHR5cGUgb2YgdGhlCi0vLyBOdGggZWxlbWVudCBvdCBULCBmaXJzdCBlbGVtZW50IGlzIGF0IGluZGV4IDAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9TUEVDSUFMSVpBVElPTlMKLQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFQ+Ci1zdHJ1Y3QgZWxlbWVudAotewotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpkcm9wX2Zyb250PE4+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSAgICAgIGFwcGx5PFQ+Ojp0eXBlOjpoZWFkX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGludCBOLCBjbGFzcyBUPgotc3RydWN0IGVsZW1lbnQ8TiwgY29uc3QgVD4KLXsKLXByaXZhdGU6Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OmRyb3BfZnJvbnQ8Tj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURQotICAgICAgYXBwbHk8VD46OnR5cGU6OmhlYWRfdHlwZSB1bnF1YWxpZmllZF90eXBlOwotcHVibGljOgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLDwweDYwMCkKLSAgdHlwZWRlZiBjb25zdCB1bnF1YWxpZmllZF90eXBlIHR5cGU7Ci0jZWxzZQotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmFkZF9jb25zdDx1bnF1YWxpZmllZF90eXBlPjo6dHlwZSB0eXBlOwotI2VuZGlmCi19OwotI2Vsc2UgLy8gZGVmIE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFQsIGJvb2wgSXNDb25zdD4KLXN0cnVjdCBlbGVtZW50X2ltcGwKLXsKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZHJvcF9mcm9udDxOPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0gICAgICBhcHBseTxUPjo6dHlwZTo6aGVhZF90eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVD4KLXN0cnVjdCBlbGVtZW50X2ltcGw8TiwgVCwgdHJ1ZSAvKiBJc0NvbnN0ICovPgotewotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpkcm9wX2Zyb250PE4+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSAgICAgIGFwcGx5PFQ+Ojp0eXBlOjpoZWFkX3R5cGUgdW5xdWFsaWZpZWRfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB1bnF1YWxpZmllZF90eXBlIHR5cGU7Ci19OwotCi19IC8vIGVuZCBvZiBuYW1lc3BhY2UgZGV0YWlsCi0KLQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFQ+Ci1zdHJ1Y3QgZWxlbWVudDoKLSAgcHVibGljIGRldGFpbDo6ZWxlbWVudF9pbXBsPE4sIFQsIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZT4KLXsKLX07Ci0KLSNlbmRpZgotCi0KLS8vIC1nZXQgZnVuY3Rpb24gdGVtcGxhdGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBVc2FnZTogZ2V0PE4+KGFUdXBsZSkKLQotLy8gLS0gc29tZSB0cmFpdHMgY2xhc3NlcyBmb3IgZ2V0IGZ1bmN0aW9ucwotCi0vLyBhY2Nlc3MgdHJhaXRzIGxpZnRlZCBmcm9tIGRldGFpbCBuYW1lc3BhY2UgdG8gYmUgcGFydCBvZiB0aGUgaW50ZXJmYWNlLAotLy8gKEpvZWwgZGUgR3V6bWFuJ3Mgc3VnZ2VzdGlvbikuIFJhdGlvbmFsZTogZ2V0IGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUKLS8vIGludGVyZmFjZSwgc28gc2hvdWxkIHRoZSB3YXkgdG8gZXhwcmVzcyB0aGVpciByZXR1cm4gdHlwZXMgYmUuCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgYWNjZXNzX3RyYWl0cyB7Ci0gIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfdHlwZTsKLSAgdHlwZWRlZiBUJiBub25fY29uc3RfdHlwZTsKLQotICB0eXBlZGVmIGNvbnN0IHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGUmIHBhcmFtZXRlcl90eXBlOwotCi0vLyB1c2VkIGFzIHRoZSB0dXBsZSBjb25zdHJ1Y3RvcnMgcGFyYW1ldGVyIHR5cGVzCi0vLyBSYXRpb25hbGU6IG5vbi1yZWZlcmVuY2UgdHVwbGUgZWxlbWVudCB0eXBlcyBjYW4gYmUgY3YtcXVhbGlmaWVkLgotLy8gSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGluaXRpYWxpemUgc3VjaCB0eXBlcyB3aXRoIHRlbXBvcmFyaWVzLAotLy8gYW5kIHdoZW4gYmluZGluZyB0ZW1wb3JhcmllcyB0byByZWZlcmVuY2VzLCB0aGUgcmVmZXJlbmNlIG11c3QKLS8vIGJlIG5vbi12b2xhdGlsZSBhbmQgY29uc3QuIDguNS4zLiAoNSkKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgYWNjZXNzX3RyYWl0czxUJj4gewotCi0gIHR5cGVkZWYgVCYgY29uc3RfdHlwZTsKLSAgdHlwZWRlZiBUJiBub25fY29uc3RfdHlwZTsKLQotICB0eXBlZGVmIFQmIHBhcmFtZXRlcl90eXBlOwotfTsKLQotLy8gZ2V0IGZ1bmN0aW9uIGZvciBub24tY29uc3QgY29ucy1saXN0cywgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgZWxlbWVudAotCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgSFQsIGNsYXNzIFRUPgotaW5saW5lIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBlbGVtZW50PE4sIGNvbnM8SFQsIFRUPiA+Ojp0eXBlCi0gICAgICAgICAgICAgICAgPjo6bm9uX2NvbnN0X3R5cGUKLWdldChjb25zPEhULCBUVD4mIGMgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKGludCwgTikpIHsKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZHJvcF9mcm9udDxOPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0gICAgICBhcHBseTxjb25zPEhULCBUVD4gPiBpbXBsOwotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaW1wbDo6dHlwZSBjb25zX2VsZW1lbnQ7Ci0gIHJldHVybiBjb25zdF9jYXN0PGNvbnNfZWxlbWVudCY+KGltcGw6OmNhbGwoYykpLmhlYWQ7Ci19Ci0KLS8vIGdldCBmdW5jdGlvbiBmb3IgY29uc3QgY29ucy1saXN0cywgcmV0dXJucyBhIGNvbnN0IHJlZmVyZW5jZSB0bwotLy8gdGhlIGVsZW1lbnQuIElmIHRoZSBlbGVtZW50IGlzIGEgcmVmZXJlbmNlLCByZXR1cm5zIHRoZSByZWZlcmVuY2UKLS8vIGFzIHN1Y2ggKHRoYXQgaXMsIGNhbiByZXR1cm4gYSBub24tY29uc3QgcmVmZXJlbmNlKQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIEhULCBjbGFzcyBUVD4KLWlubGluZSB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgZWxlbWVudDxOLCBjb25zPEhULCBUVD4gPjo6dHlwZQotICAgICAgICAgICAgICAgID46OmNvbnN0X3R5cGUKLWdldChjb25zdCBjb25zPEhULCBUVD4mIGMgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKGludCwgTikpIHsKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZHJvcF9mcm9udDxOPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0gICAgICBhcHBseTxjb25zPEhULCBUVD4gPiBpbXBsOwotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaW1wbDo6dHlwZSBjb25zX2VsZW1lbnQ7Ci0gIHJldHVybiBpbXBsOjpjYWxsKGMpLmhlYWQ7Ci19Ci0KLS8vIC0tIHRoZSBjb25zIHRlbXBsYXRlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICBUaGVzZSBoZWxwZXIgdGVtcGxhdGVzIHdyYXAgdm9pZCB0eXBlcyBhbmQgcGxhaW4gZnVuY3Rpb24gdHlwZXMuCi0vLyAgVGhlIHJlYXRpb25hbGUgaXMgdG8gYWxsb3cgb25lIHRvIHdyaXRlIHR1cGxlIHR5cGVzIHdpdGggdGhvc2UgdHlwZXMKLS8vICBhcyBlbGVtZW50cywgZXZlbiB0aG91Z2ggaXQgaXMgbm90IHBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIHN1Y2ggb2JqZWN0LgotLy8gIEUuZzogdHlwZWRlZiB0dXBsZTx2b2lkPiBzb21lX3R5cGU7IC8vIG9rCi0vLyAgYnV0OiBzb21lX3R5cGUgeDsgLy8gZmFpbHMKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIG5vbl9zdG9yZWFibGVfdHlwZSB7Ci0gIG5vbl9zdG9yZWFibGVfdHlwZSgpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCB3cmFwX25vbl9zdG9yZWFibGVfdHlwZSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgSUY8Ci0gICAgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248VD46OnZhbHVlLCBub25fc3RvcmVhYmxlX3R5cGU8VD4sIFQKLSAgPjo6UkVUIHR5cGU7Ci19OwotdGVtcGxhdGUgPD4gc3RydWN0IHdyYXBfbm9uX3N0b3JlYWJsZV90eXBlPHZvaWQ+IHsKLSAgdHlwZWRlZiBub25fc3RvcmVhYmxlX3R5cGU8dm9pZD4gdHlwZTsKLX07Ci0KLX0gLy8gZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBIVCwgY2xhc3MgVFQ+Ci1zdHJ1Y3QgY29ucyB7Ci0KLSAgdHlwZWRlZiBIVCBoZWFkX3R5cGU7Ci0gIHR5cGVkZWYgVFQgdGFpbF90eXBlOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICBkZXRhaWw6OndyYXBfbm9uX3N0b3JlYWJsZV90eXBlPGhlYWRfdHlwZT46OnR5cGUgc3RvcmVkX2hlYWRfdHlwZTsKLQotICBzdG9yZWRfaGVhZF90eXBlIGhlYWQ7Ci0gIHRhaWxfdHlwZSB0YWlsOwotCi0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8c3RvcmVkX2hlYWRfdHlwZT46Om5vbl9jb25zdF90eXBlCi0gIGdldF9oZWFkKCkgeyByZXR1cm4gaGVhZDsgfQotCi0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8dGFpbF90eXBlPjo6bm9uX2NvbnN0X3R5cGUKLSAgZ2V0X3RhaWwoKSB7IHJldHVybiB0YWlsOyB9Ci0KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxzdG9yZWRfaGVhZF90eXBlPjo6Y29uc3RfdHlwZQotICBnZXRfaGVhZCgpIGNvbnN0IHsgcmV0dXJuIGhlYWQ7IH0KLQotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHRhaWxfdHlwZT46OmNvbnN0X3R5cGUKLSAgZ2V0X3RhaWwoKSBjb25zdCB7IHJldHVybiB0YWlsOyB9Ci0KLSAgY29ucygpIDogaGVhZCgpLCB0YWlsKCkge30KLSAgLy8gIGNvbnMoKSA6IGhlYWQoZGV0YWlsOjpkZWZhdWx0X2FyZzxIVD46OmYoKSksIHRhaWwoKSB7fQotCi0gIC8vIHRoZSBhcmd1bWVudCBmb3IgaGVhZCBpcyBub3Qgc3RyaWN0bHkgbmVlZGVkLCBidXQgaXQgcHJldmVudHMKLSAgLy8gYXJyYXkgdHlwZSBlbGVtZW50cy4gVGhpcyBpcyBnb29kLCBzaW5jZSBhcnJheSB0eXBlIGVsZW1lbnRzCi0gIC8vIGNhbm5vdCBiZSBzdXBwb3J0ZWQgcHJvcGVybHkgaW4gYW55IGNhc2UgKG5vIGFzc2lnbm1lbnQsCi0gIC8vIGNvcHkgd29ya3Mgb25seSBpZiB0aGUgdGFpbHMgYXJlIGV4YWN0bHkgdGhlIHNhbWUgdHlwZSwgLi4uKQotCi0gIGNvbnModHlwZW5hbWUgYWNjZXNzX3RyYWl0czxzdG9yZWRfaGVhZF90eXBlPjo6cGFyYW1ldGVyX3R5cGUgaCwKLSAgICAgICBjb25zdCB0YWlsX3R5cGUmIHQpCi0gICAgOiBoZWFkIChoKSwgdGFpbCh0KSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsCi0gICAgICAgICAgICBjbGFzcyBUNiwgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOSwgY2xhc3MgVDEwPgotICBjb25zKCBUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQsIFQ1JiB0NSwKLSAgICAgICAgVDYmIHQ2LCBUNyYgdDcsIFQ4JiB0OCwgVDkmIHQ5LCBUMTAmIHQxMCApCi0gICAgOiBoZWFkICh0MSksCi0gICAgICB0YWlsICh0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDksIHQxMCwgZGV0YWlsOjpjbnVsbCgpKQotICAgICAge30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsCi0gICAgICAgICAgICBjbGFzcyBUNiwgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOSwgY2xhc3MgVDEwPgotICBjb25zKCBjb25zdCBudWxsX3R5cGUmIC8qdDEqLywgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUmIHQ1LAotICAgICAgICBUNiYgdDYsIFQ3JiB0NywgVDgmIHQ4LCBUOSYgdDksIFQxMCYgdDEwICkKLSAgICA6IGhlYWQgKCksCi0gICAgICB0YWlsICh0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDksIHQxMCwgZGV0YWlsOjpjbnVsbCgpKQotICAgICAge30KLQotCi0gIHRlbXBsYXRlIDxjbGFzcyBIVDIsIGNsYXNzIFRUMj4KLSAgY29ucyggY29uc3QgY29uczxIVDIsIFRUMj4mIHUgKSA6IGhlYWQodS5oZWFkKSwgdGFpbCh1LnRhaWwpIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIEhUMiwgY2xhc3MgVFQyPgotICBjb25zJiBvcGVyYXRvcj0oIGNvbnN0IGNvbnM8SFQyLCBUVDI+JiB1ICkgewotICAgIGhlYWQ9dS5oZWFkOyB0YWlsPXUudGFpbDsgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgLy8gbXVzdCBkZWZpbmUgYXNzaWdubWVudCBvcGVyYXRvciBleHBsaWNpdGx5LCBpbXBsaWNpdCB2ZXJzaW9uIGlzCi0gIC8vIGlsbGZvcm1lZCBpZiBIVCBpcyBhIHJlZmVyZW5jZSAoMTIuOC4gKDEyKSkKLSAgY29ucyYgb3BlcmF0b3I9KGNvbnN0IGNvbnMmIHUpIHsKLSAgICBoZWFkID0gdS5oZWFkOyB0YWlsID0gdS50YWlsOyAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgY29ucyYgb3BlcmF0b3I9KCBjb25zdCBzdGQ6OnBhaXI8VDEsIFQyPiYgdSApIHsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGxlbmd0aDxjb25zPjo6dmFsdWUgPT0gMik7IC8vIGNoZWNrIGxlbmd0aCA9IDIKLSAgICBoZWFkID0gdS5maXJzdDsgdGFpbC5oZWFkID0gdS5zZWNvbmQ7IHJldHVybiAqdGhpczsKLSAgfQotCi0gIC8vIGdldCBtZW1iZXIgZnVuY3Rpb25zIChub24tY29uc3QgYW5kIGNvbnN0KQotICB0ZW1wbGF0ZSA8aW50IE4+Ci0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgdHlwZW5hbWUgZWxlbWVudDxOLCBjb25zPEhULCBUVD4gPjo6dHlwZQotICAgICAgICAgICA+Ojpub25fY29uc3RfdHlwZQotICBnZXQoKSB7Ci0gICAgcmV0dXJuIG5kbmJvb3N0Ojp0dXBsZXM6OmdldDxOPigqdGhpcyk7IC8vIGRlbGVnYXRlIHRvIG5vbi1tZW1iZXIgZ2V0Ci0gIH0KLQotICB0ZW1wbGF0ZSA8aW50IE4+Ci0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgdHlwZW5hbWUgZWxlbWVudDxOLCBjb25zPEhULCBUVD4gPjo6dHlwZQotICAgICAgICAgICA+Ojpjb25zdF90eXBlCi0gIGdldCgpIGNvbnN0IHsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnR1cGxlczo6Z2V0PE4+KCp0aGlzKTsgLy8gZGVsZWdhdGUgdG8gbm9uLW1lbWJlciBnZXQKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEhUPgotc3RydWN0IGNvbnM8SFQsIG51bGxfdHlwZT4gewotCi0gIHR5cGVkZWYgSFQgaGVhZF90eXBlOwotICB0eXBlZGVmIG51bGxfdHlwZSB0YWlsX3R5cGU7Ci0gIHR5cGVkZWYgY29uczxIVCwgbnVsbF90eXBlPiBzZWxmX3R5cGU7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgIGRldGFpbDo6d3JhcF9ub25fc3RvcmVhYmxlX3R5cGU8aGVhZF90eXBlPjo6dHlwZSBzdG9yZWRfaGVhZF90eXBlOwotICBzdG9yZWRfaGVhZF90eXBlIGhlYWQ7Ci0KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxzdG9yZWRfaGVhZF90eXBlPjo6bm9uX2NvbnN0X3R5cGUKLSAgZ2V0X2hlYWQoKSB7IHJldHVybiBoZWFkOyB9Ci0KLSAgbnVsbF90eXBlIGdldF90YWlsKCkgeyByZXR1cm4gbnVsbF90eXBlKCk7IH0KLQotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHN0b3JlZF9oZWFkX3R5cGU+Ojpjb25zdF90eXBlCi0gIGdldF9oZWFkKCkgY29uc3QgeyByZXR1cm4gaGVhZDsgfQotCi0gIGNvbnN0IG51bGxfdHlwZSBnZXRfdGFpbCgpIGNvbnN0IHsgcmV0dXJuIG51bGxfdHlwZSgpOyB9Ci0KLSAgLy8gIGNvbnMoKSA6IGhlYWQoZGV0YWlsOjpkZWZhdWx0X2FyZzxIVD46OmYoKSkge30KLSAgY29ucygpIDogaGVhZCgpIHt9Ci0KLSAgY29ucyh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHN0b3JlZF9oZWFkX3R5cGU+OjpwYXJhbWV0ZXJfdHlwZSBoLAotICAgICAgIGNvbnN0IG51bGxfdHlwZSYgPSBudWxsX3R5cGUoKSkKLSAgICA6IGhlYWQgKGgpIHt9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVDE+Ci0gIGNvbnMoVDEmIHQxLCBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLAotICAgICAgIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsCi0gICAgICAgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJikKLSAgOiBoZWFkICh0MSkge30KLQotICBjb25zKGNvbnN0IG51bGxfdHlwZSYsCi0gICAgICAgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwKLSAgICAgICBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLAotICAgICAgIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYpCi0gIDogaGVhZCAoKSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBIVDI+Ci0gIGNvbnMoIGNvbnN0IGNvbnM8SFQyLCBudWxsX3R5cGU+JiB1ICkgOiBoZWFkKHUuaGVhZCkge30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgSFQyPgotICBjb25zJiBvcGVyYXRvcj0oY29uc3QgY29uczxIVDIsIG51bGxfdHlwZT4mIHUgKQotICB7IGhlYWQgPSB1LmhlYWQ7IHJldHVybiAqdGhpczsgfQotCi0gIC8vIG11c3QgZGVmaW5lIGFzc2lnbm1lbnQgb3BlcmF0b3IgZXhwbGljaXRlbHksIGltcGxpY2l0IHZlcnNpb24KLSAgLy8gaXMgaWxsZm9ybWVkIGlmIEhUIGlzIGEgcmVmZXJlbmNlCi0gIGNvbnMmIG9wZXJhdG9yPShjb25zdCBjb25zJiB1KSB7IGhlYWQgPSB1LmhlYWQ7IHJldHVybiAqdGhpczsgfQotCi0gIHRlbXBsYXRlIDxpbnQgTj4KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICB0eXBlbmFtZSBlbGVtZW50PE4sIHNlbGZfdHlwZT46OnR5cGUKLSAgICAgICAgICAgID46Om5vbl9jb25zdF90eXBlCi0gIGdldChORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRShpbnQsIE4pKSB7Ci0gICAgcmV0dXJuIG5kbmJvb3N0Ojp0dXBsZXM6OmdldDxOPigqdGhpcyk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8aW50IE4+Ci0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgdHlwZW5hbWUgZWxlbWVudDxOLCBzZWxmX3R5cGU+Ojp0eXBlCi0gICAgICAgICAgID46OmNvbnN0X3R5cGUKLSAgZ2V0KE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKGludCwgTikpIGNvbnN0IHsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnR1cGxlczo6Z2V0PE4+KCp0aGlzKTsKLSAgfQotCi19OwotCi0vLyB0ZW1wbGF0ZXMgZm9yIGZpbmRpbmcgb3V0IHRoZSBsZW5ndGggb2YgdGhlIHR1cGxlIC0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBsZW5ndGggIHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAxICsgbGVuZ3RoPHR5cGVuYW1lIFQ6OnRhaWxfdHlwZT46OnZhbHVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZW5ndGg8dHVwbGU8PiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZW5ndGg8dHVwbGU8PiBjb25zdD4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlbmd0aDxudWxsX3R5cGU+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZW5ndGg8bnVsbF90eXBlIGNvbnN0PiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVHVwbGUgdG8gY29ucyBtYXBwZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlIDxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsCi0gICAgICAgICAgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5Pgotc3RydWN0IG1hcF90dXBsZV90b19jb25zCi17Ci0gIHR5cGVkZWYgY29uczxUMCwKLSAgICAgICAgICAgICAgIHR5cGVuYW1lIG1hcF90dXBsZV90b19jb25zPFQxLCBUMiwgVDMsIFQ0LCBUNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQ2LCBUNywgVDgsIFQ5LCBudWxsX3R5cGU+Ojp0eXBlCi0gICAgICAgICAgICAgID4gdHlwZTsKLX07Ci0KLS8vIFRoZSBlbXB0eSB0dXBsZSBpcyBhIG51bGxfdHlwZQotdGVtcGxhdGUgPD4KLXN0cnVjdCBtYXBfdHVwbGVfdG9fY29uczxudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGU+Ci17Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotCi19IC8vIGVuZCBkZXRhaWwKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gLS0gdHVwbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZSA8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LAotICAgICAgICAgIGNsYXNzIFQ1LCBjbGFzcyBUNiwgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLQotY2xhc3MgdHVwbGUgOgotICBwdWJsaWMgZGV0YWlsOjptYXBfdHVwbGVfdG9fY29uczxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT46OnR5cGUKLXsKLXB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgIGRldGFpbDo6bWFwX3R1cGxlX3RvX2NvbnM8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+Ojp0eXBlIGluaGVyaXRlZDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbmhlcml0ZWQ6OmhlYWRfdHlwZSBoZWFkX3R5cGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW5oZXJpdGVkOjp0YWlsX3R5cGUgdGFpbF90eXBlOwotCi0KLS8vIGFjY2Vzc190cmFpdHM8VD46OnBhcmFtZXRlcl90eXBlIHRha2VzIG5vbi1yZWZlcmVuY2UgdHlwZXMgYXMgY29uc3QgVCYKLSAgdHVwbGUoKSB7fQotCi0gIHR1cGxlKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDA+OjpwYXJhbWV0ZXJfdHlwZSB0MCkKLSAgICA6IGluaGVyaXRlZCh0MCwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEpCi0gICAgOiBpbmhlcml0ZWQodDAsIHQxLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MikKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpKSB7fQotCi0gIHR1cGxlKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDA+OjpwYXJhbWV0ZXJfdHlwZSB0MCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMT46OnBhcmFtZXRlcl90eXBlIHQxLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQyPjo6cGFyYW1ldGVyX3R5cGUgdDIsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDM+OjpwYXJhbWV0ZXJfdHlwZSB0MykKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ0Pjo6cGFyYW1ldGVyX3R5cGUgdDQpCi0gICAgOiBpbmhlcml0ZWQodDAsIHQxLCB0MiwgdDMsIHQ0LCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpKSB7fQotCi0gIHR1cGxlKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDA+OjpwYXJhbWV0ZXJfdHlwZSB0MCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMT46OnBhcmFtZXRlcl90eXBlIHQxLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQyPjo6cGFyYW1ldGVyX3R5cGUgdDIsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDM+OjpwYXJhbWV0ZXJfdHlwZSB0MywKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUND46OnBhcmFtZXRlcl90eXBlIHQ0LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ1Pjo6cGFyYW1ldGVyX3R5cGUgdDUpCi0gICAgOiBpbmhlcml0ZWQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ0Pjo6cGFyYW1ldGVyX3R5cGUgdDQsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDU+OjpwYXJhbWV0ZXJfdHlwZSB0NSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNj46OnBhcmFtZXRlcl90eXBlIHQ2KQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ0Pjo6cGFyYW1ldGVyX3R5cGUgdDQsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDU+OjpwYXJhbWV0ZXJfdHlwZSB0NSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNj46OnBhcmFtZXRlcl90eXBlIHQ2LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ3Pjo6cGFyYW1ldGVyX3R5cGUgdDcpCi0gICAgOiBpbmhlcml0ZWQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpKSB7fQotCi0gIHR1cGxlKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDA+OjpwYXJhbWV0ZXJfdHlwZSB0MCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMT46OnBhcmFtZXRlcl90eXBlIHQxLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQyPjo6cGFyYW1ldGVyX3R5cGUgdDIsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDM+OjpwYXJhbWV0ZXJfdHlwZSB0MywKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUND46OnBhcmFtZXRlcl90eXBlIHQ0LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ1Pjo6cGFyYW1ldGVyX3R5cGUgdDUsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDY+OjpwYXJhbWV0ZXJfdHlwZSB0NiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNz46OnBhcmFtZXRlcl90eXBlIHQ3LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ4Pjo6cGFyYW1ldGVyX3R5cGUgdDgpCi0gICAgOiBpbmhlcml0ZWQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgZGV0YWlsOjpjbnVsbCgpKSB7fQotCi0gIHR1cGxlKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDA+OjpwYXJhbWV0ZXJfdHlwZSB0MCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMT46OnBhcmFtZXRlcl90eXBlIHQxLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQyPjo6cGFyYW1ldGVyX3R5cGUgdDIsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDM+OjpwYXJhbWV0ZXJfdHlwZSB0MywKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUND46OnBhcmFtZXRlcl90eXBlIHQ0LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ1Pjo6cGFyYW1ldGVyX3R5cGUgdDUsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDY+OjpwYXJhbWV0ZXJfdHlwZSB0NiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNz46OnBhcmFtZXRlcl90eXBlIHQ3LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ4Pjo6cGFyYW1ldGVyX3R5cGUgdDgsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDk+OjpwYXJhbWV0ZXJfdHlwZSB0OSkKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSkge30KLQotCi0gIHRlbXBsYXRlPGNsYXNzIFUxLCBjbGFzcyBVMj4KLSAgdHVwbGUoY29uc3QgY29uczxVMSwgVTI+JiBwKSA6IGluaGVyaXRlZChwKSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBVMSwgY2xhc3MgVTI+Ci0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgY29uczxVMSwgVTI+JiBrKSB7Ci0gICAgaW5oZXJpdGVkOjpvcGVyYXRvcj0oayk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFUxLCBjbGFzcyBVMj4KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCBzdGQ6OnBhaXI8VTEsIFUyPiYgaykgewotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQobGVuZ3RoPHR1cGxlPjo6dmFsdWUgPT0gMik7Ly8gY2hlY2tfbGVuZ3RoID0gMgotICAgIHRoaXMtPmhlYWQgPSBrLmZpcnN0OwotICAgIHRoaXMtPnRhaWwuaGVhZCA9IGsuc2Vjb25kOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi19OwotCi0vLyBUaGUgZW1wdHkgdHVwbGUKLXRlbXBsYXRlIDw+Ci1jbGFzcyB0dXBsZTxudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGU+ICA6Ci0gIHB1YmxpYyBudWxsX3R5cGUKLXsKLXB1YmxpYzoKLSAgdHlwZWRlZiBudWxsX3R5cGUgaW5oZXJpdGVkOwotfTsKLQotCi0vLyBTd2FsbG93cyBhbnkgYXNzaWdubWVudCAgIChieSBEb3VnIEdyZWdvcikKLW5hbWVzcGFjZSBkZXRhaWwgewotCi1zdHJ1Y3Qgc3dhbGxvd19hc3NpZ247Ci10eXBlZGVmIHZvaWQgKGRldGFpbDo6c3dhbGxvd19hc3NpZ246OippZ25vcmVfdCkoKTsKLXN0cnVjdCBzd2FsbG93X2Fzc2lnbiB7Ci0gIHN3YWxsb3dfYXNzaWduKGlnbm9yZV90KCopKGlnbm9yZV90KSkge30KLSAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgc3dhbGxvd19hc3NpZ24gY29uc3QmIG9wZXJhdG9yPShjb25zdCBUJikgY29uc3QgewotICAgIHJldHVybiAqdGhpczsKLSAgfQotfTsKLQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gImlnbm9yZSIgYWxsb3dzIHR1cGxlIHBvc2l0aW9ucyB0byBiZSBpZ25vcmVkIHdoZW4gdXNpbmcgInRpZSIuCi1pbmxpbmUgZGV0YWlsOjppZ25vcmVfdCBpZ25vcmUoZGV0YWlsOjppZ25vcmVfdCkgeyByZXR1cm4gMDsgfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFRoZSBjYWxsX3RyYWl0cyBmb3IgbWFrZV90dXBsZQotLy8gSG9ub3VycyB0aGUgcmVmZXJlbmNlX3dyYXBwZXIgY2xhc3MuCi0KLS8vIE11c3QgYmUgaW5zdGFudGlhdGVkIHdpdGggcGxhaW4gb3IgY29uc3QgcGxhaW4gdHlwZXMgKG5vdCB3aXRoIHJlZmVyZW5jZXMpCi0KLS8vIGZyb20gdGVtcGxhdGU8Y2xhc3MgVD4gZm9vKGNvbnN0IFQmIHQpIDogbWFrZV90dXBsZV90cmFpdHM8Y29uc3QgVD46OnR5cGUKLS8vIGZyb20gdGVtcGxhdGU8Y2xhc3MgVD4gZm9vKFQmIHQpIDogbWFrZV90dXBsZV90cmFpdHM8VD46OnR5cGUKLQotLy8gQ29udmVyc2lvbnM6Ci0vLyBUIC0+IFQsCi0vLyByZWZlcmVuY2VzIC0+IGNvbXBpbGVfdGltZV9lcnJvcgotLy8gcmVmZXJlbmNlX3dyYXBwZXI8VD4gLT4gVCYKLS8vIGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPFQ+IC0+IFQmCi0vLyBhcnJheSAtPiBjb25zdCByZWYgYXJyYXkKLQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzIHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0KLSAgLy8gY29tbWVudGVkIGF3YXksIHNlZSBiZWxvdyAgKEpKKQotICAvLyAgdHlwZWRlZiB0eXBlbmFtZSBJRjwKLSAgLy8gIG5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWUsCi0gIC8vICBUJiwKLSAgLy8gIFQ+OjpSRVQgdHlwZTsKLQotfTsKLQotLy8gVGhlIGlzX2Z1bmN0aW9uIHRlc3Qgd2FzIHRoZXJlIG9yaWdpbmFsbHkgZm9yIHBsYWluIGZ1bmN0aW9uIHR5cGVzLAotLy8gd2hpY2ggY2FuJ3QgYmUgc3RvcmVkIGFzIHN1Y2ggKHdlIG11c3QgZWl0aGVyIHN0b3JlIHRoZW0gYXMgcmVmZXJlbmNlcyBvcgotLy8gcG9pbnRlcnMpLiBTdWNoIGEgdHlwZSBjb3VsZCBiZSBmb3JtZWQgaWYgbWFrZV90dXBsZSB3YXMgY2FsbGVkIHdpdGggYQotLy8gcmVmZXJlbmNlIHRvIGEgZnVuY3Rpb24uCi0vLyBCdXQgdGhpcyB3b3VsZCBtZWFuIHRoYXQgYSBjb25zdCBxdWFsaWZpZWQgZnVuY3Rpb24gdHlwZSB3YXMgZm9ybWVkIGluCi0vLyB0aGUgbWFrZV90dXBsZSBmdW5jdGlvbiBhbmQgaGVuY2UgbWFrZV90dXBsZSBjYW4ndCB0YWtlIGEgZnVuY3Rpb24KLS8vIHJlZmVyZW5jZSBhcyBhIHBhcmFtZXRlciwgYW5kIHRodXMgVCBjYW4ndCBiZSBhIGZ1bmN0aW9uIHR5cGUuCi0vLyBTbyBpc19mdW5jdGlvbiB0ZXN0IHdhcyByZW1vdmVkLgotLy8gKDE0LjguMy4gc2F5cyB0aGF0IHR5cGUgZGVkdWN0aW9uIGZhaWxzIGlmIGEgY3YtcXVhbGlmaWVkIGZ1bmN0aW9uIHR5cGUKLS8vIGlzIGNyZWF0ZWQuIChJdCBvbmx5IGFwcGxpZXMgZm9yIHRoZSBjYXNlIG9mIGV4cGxpY2l0bHkgc3BlY2lmeWluZyB0ZW1wbGF0ZQotLy8gYXJncywgdGhvdWdoPykpIChKSikKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBtYWtlX3R1cGxlX3RyYWl0czxUJj4gewotICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgIGRldGFpbDo6Z2VuZXJhdGVfZXJyb3I8VCY+OjoKLSAgICAgICBkb19ub3RfdXNlX3dpdGhfcmVmZXJlbmNlX3R5cGUgZXJyb3I7Ci19OwotCi0vLyBBcnJheXMgY2FuJ3QgYmUgc3RvcmVkIGFzIHBsYWluIHR5cGVzOyBjb252ZXJ0IHRoZW0gdG8gcmVmZXJlbmNlcy4KLS8vIEFsbCBhcnJheXMgYXJlIGNvbnZlcnRlZCB0byBjb25zdC4gVGhpcyBpcyBiZWNhdXNlIG1ha2VfdHVwbGUgdGFrZXMgaXRzCi0vLyBwYXJhbWV0ZXJzIGFzIGNvbnN0IFQmIGFuZCB0aHVzIHRoZSBrbm93bGVkZ2Ugb2YgdGhlIHBvdGVudGlhbAotLy8gbm9uLWNvbnN0bmVzcyBvZiBhY3R1YWwgYXJndW1lbnQgaXMgbG9zdC4KLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuPiAgc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzIDxUW25dPiB7Ci0gIHR5cGVkZWYgY29uc3QgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+Ci1zdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHM8Y29uc3QgVFtuXT4gewotICB0eXBlZGVmIGNvbnN0IFQgKCZ0eXBlKVtuXTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuPiAgc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPHZvbGF0aWxlIFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4KLXN0cnVjdCBtYWtlX3R1cGxlX3RyYWl0czxjb25zdCB2b2xhdGlsZSBUW25dPiB7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBtYWtlX3R1cGxlX3RyYWl0czxyZWZlcmVuY2Vfd3JhcHBlcjxUPiA+ewotICB0eXBlZGVmIFQmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPFQ+ID57Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYWtlX3R1cGxlX3RyYWl0czxkZXRhaWw6Omlnbm9yZV90KGRldGFpbDo6aWdub3JlX3QpPiB7Ci0gIHR5cGVkZWYgZGV0YWlsOjpzd2FsbG93X2Fzc2lnbiB0eXBlOwotfTsKLQotCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBhIGhlbHBlciB0cmFpdHMgdG8gbWFrZSB0aGUgbWFrZV90dXBsZSBmdW5jdGlvbnMgc2hvcnRlciAoVmVzYSBLYXJ2b25lbidzCi0vLyBzdWdnZXN0aW9uKQotdGVtcGxhdGUgPAotICBjbGFzcyBUMCA9IG51bGxfdHlwZSwgY2xhc3MgVDEgPSBudWxsX3R5cGUsIGNsYXNzIFQyID0gbnVsbF90eXBlLAotICBjbGFzcyBUMyA9IG51bGxfdHlwZSwgY2xhc3MgVDQgPSBudWxsX3R5cGUsIGNsYXNzIFQ1ID0gbnVsbF90eXBlLAotICBjbGFzcyBUNiA9IG51bGxfdHlwZSwgY2xhc3MgVDcgPSBudWxsX3R5cGUsIGNsYXNzIFQ4ID0gbnVsbF90eXBlLAotICBjbGFzcyBUOSA9IG51bGxfdHlwZQotPgotc3RydWN0IG1ha2VfdHVwbGVfbWFwcGVyIHsKLSAgdHlwZWRlZgotICAgIHR1cGxlPHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQwPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUMT46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDI+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQzPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUND46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDU+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQ2Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUNz46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDg+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQ5Pjo6dHlwZT4gdHlwZTsKLX07Ci0KLX0gLy8gZW5kIGRldGFpbAotCi0vLyAtbWFrZV90dXBsZSBmdW5jdGlvbiB0ZW1wbGF0ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWlubGluZSB0dXBsZTw+IG1ha2VfdHVwbGUoKSB7Ci0gIHJldHVybiB0dXBsZTw+KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDA+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDA+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxPjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxPjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMj46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMj46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0Mik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDM+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MykgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDM+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdDQpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUND46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNT4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDU+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDY+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNj46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NikgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0Nik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAotICAgICAgICAgY2xhc3MgVDc+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYsIGNvbnN0IFQ3JiB0NykgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCi0gICAgICAgICBjbGFzcyBUNywgY2xhc3MgVDg+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcgotICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NiwgY29uc3QgVDcmIHQ3LAotICAgICAgICAgICAgICAgICAgY29uc3QgVDgmIHQ4KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAotICAgICAgICAgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyCi0gIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NiwgY29uc3QgVDcmIHQ3LAotICAgICAgICAgICAgICAgICAgY29uc3QgVDgmIHQ4LCBjb25zdCBUOSYgdDkpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyCi0gICAgICAgICAgIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDkpOwotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCB0aWVfdHJhaXRzIHsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRpZV90cmFpdHM8aWdub3JlX3QoaWdub3JlX3QpPiB7Ci0gIHR5cGVkZWYgc3dhbGxvd19hc3NpZ24gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0aWVfdHJhaXRzPHZvaWQ+IHsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDwKLSAgY2xhc3MgVDAgPSB2b2lkLCBjbGFzcyBUMSA9IHZvaWQsIGNsYXNzIFQyID0gdm9pZCwKLSAgY2xhc3MgVDMgPSB2b2lkLCBjbGFzcyBUNCA9IHZvaWQsIGNsYXNzIFQ1ID0gdm9pZCwKLSAgY2xhc3MgVDYgPSB2b2lkLCBjbGFzcyBUNyA9IHZvaWQsIGNsYXNzIFQ4ID0gdm9pZCwKLSAgY2xhc3MgVDkgPSB2b2lkCi0+Ci1zdHJ1Y3QgdGllX21hcHBlciB7Ci0gIHR5cGVkZWYKLSAgICB0dXBsZTx0eXBlbmFtZSB0aWVfdHJhaXRzPFQwPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSB0aWVfdHJhaXRzPFQxPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSB0aWVfdHJhaXRzPFQyPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSB0aWVfdHJhaXRzPFQzPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSB0aWVfdHJhaXRzPFQ0Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSB0aWVfdHJhaXRzPFQ1Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSB0aWVfdHJhaXRzPFQ2Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSB0aWVfdHJhaXRzPFQ3Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSB0aWVfdHJhaXRzPFQ4Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSB0aWVfdHJhaXRzPFQ5Pjo6dHlwZT4gdHlwZTsKLX07Ci0KLX0KLQotLy8gVGllIGZ1bmN0aW9uIHRlbXBsYXRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZTxjbGFzcyBUMD4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDA+Ojp0eXBlCi10aWUoVDAmIHQwKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwPjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMT4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxPjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMT46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMj4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMj46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDI+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDM+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEsIFQyJiB0MiwgVDMmIHQzKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzPjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0Myk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUND4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIFQ0JiB0NCkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQ+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDU+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDU+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgVDQmIHQ0LCBUNSYgdDUpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNT46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNj46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBUNCYgdDQsIFQ1JiB0NSwgVDYmIHQ2KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyCi0gICAgICAgICAgIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNj46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwKLSAgICAgICAgIGNsYXNzIFQ3PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgVDQmIHQ0LCBUNSYgdDUsIFQ2JiB0NiwgVDcmIHQ3KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyCi0gICAgICAgICAgIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0Nyk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAotICAgICAgICAgY2xhc3MgVDcsIGNsYXNzIFQ4PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcgotICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBUNCYgdDQsIFQ1JiB0NSwgVDYmIHQ2LCBUNyYgdDcsCi0gICAgICAgICAgICAgICAgICBUOCYgdDgpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwKLSAgICAgICAgIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyCi0gIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBUNCYgdDQsIFQ1JiB0NSwgVDYmIHQ2LCBUNyYgdDcsCi0gICAgICAgICAgICAgICAgICBUOCYgdDgsIFQ5JiB0OSkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwKLSAgICAgICAgICBjbGFzcyBUNSwgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+Ci12b2lkIHN3YXAodHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiBsaHMsCi0gICAgICAgICAgdHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiByaHMpOwotaW5saW5lIHZvaWQgc3dhcChudWxsX3R5cGUmLCBudWxsX3R5cGUmKSB7fQotdGVtcGxhdGU8Y2xhc3MgSEg+Ci1pbmxpbmUgdm9pZCBzd2FwKGNvbnM8SEgsIG51bGxfdHlwZT4mIGxocywgY29uczxISCwgbnVsbF90eXBlPiYgcmhzKSB7Ci0gIDo6bmRuYm9vc3Q6OnN3YXAobGhzLmhlYWQsIHJocy5oZWFkKTsKLX0KLXRlbXBsYXRlPGNsYXNzIEhILCBjbGFzcyBUVD4KLWlubGluZSB2b2lkIHN3YXAoY29uczxISCwgVFQ+JiBsaHMsIGNvbnM8SEgsIFRUPiYgcmhzKSB7Ci0gIDo6bmRuYm9vc3Q6OnN3YXAobGhzLmhlYWQsIHJocy5oZWFkKTsKLSAgOjpuZG5ib29zdDo6dHVwbGVzOjpzd2FwKGxocy50YWlsLCByaHMudGFpbCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LAotICAgICAgICAgIGNsYXNzIFQ1LCBjbGFzcyBUNiwgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLWlubGluZSB2b2lkIHN3YXAodHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiBsaHMsCi0gICAgICAgICAgdHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiByaHMpIHsKLSAgdHlwZWRlZiB0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gdHVwbGVfdHlwZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjppbmhlcml0ZWQgYmFzZTsKLSAgOjpuZG5ib29zdDo6dHVwbGVzOjpzd2FwKHN0YXRpY19jYXN0PGJhc2UmPihsaHMpLCBzdGF0aWNfY2FzdDxiYXNlJj4ocmhzKSk7Ci19Ci0KLX0gLy8gZW5kIG9mIG5hbWVzcGFjZSB0dXBsZXMKLX0gLy8gZW5kIG9mIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVVBMRV9CQVNJQ19IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpY19ub19wYXJ0aWFsX3NwZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90dXBsZS9kZXRhaWwvdHVwbGVfYmFzaWNfbm9fcGFydGlhbF9zcGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkyMjJiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpY19ub19wYXJ0aWFsX3NwZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODY1ICswLDAgQEAKLS8vIC0gdHVwbGVfYmFzaWNfbm9fcGFydGlhbF9zcGVjLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8gQ29weXJpZ2h0IChDKSAyMDAxIERvdWdsYXMgR3JlZ29yIChncmVnb2RAcnBpLmVkdSkKLS8vIENvcHlyaWdodCAoQykgMjAwMSBHYXJ5IFBvd2VsbCAoZ2FyeS5wb3dlbGxAc2llcnJhLmNvbSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgb3IgaHR0cDovL2xhbWJkYS5jcy51dHUuZmkKLQotLy8gUmV2aXNpb24gSGlzdG9yeQotLy8gIDE0IDAyIDAxICAgIFJlbW92ZSBleHRyYSAnOycuIEFsc28sIGZpeGVkIDEwLXBhcmFtZXRlciB0byBtYWtlX3R1cGxlLiAoREcpCi0vLyAgMTAgMDIgMDEgICAgRml4ZWQgIm51bGxfdHlwZSIgY29uc3RydWN0b3JzLgotLy8gICAgICAgICAgICAgIEltcGxlbWVudGVkIGNvbXBhcmlzb24gb3BlcmF0b3JzIGdsb2JhbGx5LgotLy8gICAgICAgICAgICAgIEhpZGUgZWxlbWVudF90eXBlX3JlZiBhbmQgZWxlbWVudF90eXBlX2NvbnN0X3JlZi4KLS8vICAgICAgICAgICAgICAoREcpLgotLy8gIDA5IDAyIDAxICAgIEV4dGVuZGVkIHRvIHR1cGxlcyBvZiBsZW5ndGggMTAuIENoYW5nZWQgY29tcGFyaXNvbiBmb3IKLS8vICAgICAgICAgICAgICBvcGVyYXRvcjwoKQotLy8gICAgICAgICAgICAgIHRvIHRoZSBzYW1lIHVzZWQgYnkgc3RkOjpwYWlyPD4sIGFkZGVkIGNudWxsX3R5cGUoKSAoR1ApCi0vLyAgMDMgMDIgMDEgICAgSW5pdGlhbCBWZXJzaW9uIGZyb20gb3JpZ2luYWwgdHVwbGUuaHBwIGNvZGUgYnkgSkouIChERykKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9UVVBMRV9CQVNJQ19OT19QQVJUSUFMX1NQRUNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RVUExFX0JBU0lDX05PX1BBUlRJQUxfU1BFQ19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC91dGlsaXR5L3N3YXAuaHBwIgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNpZiBkZWZpbmVkIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ1MTgpIC8vIHN0b3JhZ2UtY2xhc3Mgb3IgdHlwZSBzcGVjaWZpZXIocykgdW5leHBlY3RlZCBoZXJlOyBpZ25vcmVkCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTgxKSAvLyBxdWFsaWZpZXIgYXBwbGllZCB0byByZWZlcmVuY2UgdHlwZSBpZ25vcmVkCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjI3KSAvLyBxdWFsaWZpZXIgYXBwbGllZCB0byByZWZlcmVuY2UgdHlwZSBpZ25vcmVkCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0dXBsZXMgewotCi0gICAgLy8gbnVsbF90eXBlIGRlbm90ZXMgdGhlIGVuZCBvZiBhIGxpc3QgYnVpbHQgd2l0aCAiY29ucyIKLSAgICBzdHJ1Y3QgbnVsbF90eXBlCi0gICAgewotICAgICAgbnVsbF90eXBlKCkge30KLSAgICAgIG51bGxfdHlwZShjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmKSB7fQotICAgIH07Ci0KLSAgICAvLyBhIGhlbHBlciBmdW5jdGlvbiB0byBwcm92aWRlIGEgY29uc3QgbnVsbF90eXBlIHR5cGUgdGVtcG9yYXJ5Ci0gICAgaW5saW5lIGNvbnN0IG51bGxfdHlwZSBjbnVsbF90eXBlKCkgeyByZXR1cm4gbnVsbF90eXBlKCk7IH0KLQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiB0dXBsZQotICAgIHRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUMiA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQzID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDQgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUNSA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQ2ID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDcgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUOCA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQ5ID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDEwID0gbnVsbF90eXBlCi0gICAgPgotICAgIGNsYXNzIHR1cGxlOwotCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIGNvbnMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsID0gbnVsbF90eXBlPgotICAgIHN0cnVjdCBjb25zOwotCi0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAgIC8vIFRha2VzIGEgcG9pbnRlciBhbmQgcm91dGVzIGFsbCBhc3NpZ25tZW50cyB0byB3aGF0ZXZlciBpdCBwb2ludHMgdG8KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICBzdHJ1Y3QgYXNzaWduX3RvX3BvaW50ZWUKLSAgICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgYXNzaWduX3RvX3BvaW50ZWUoVCogcCkgOiBwdHIocCkge30KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4KLSAgICAgICAgYXNzaWduX3RvX3BvaW50ZWUmIG9wZXJhdG9yPShjb25zdCBPdGhlciYgb3RoZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAqcHRyID0gb3RoZXI7Ci0gICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFQqIHB0cjsKLSAgICAgIH07Ci0KLSAgICAgIC8vIFN3YWxsb3dzIGFueSBhc3NpZ25tZW50Ci0gICAgICBzdHJ1Y3Qgc3dhbGxvd19hc3NpZ24KLSAgICAgIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3dhbGxvd19hc3NpZ24gY29uc3QmIG9wZXJhdG9yPShjb25zdCBUJikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgYWRkX2NvbnN0X3JlZmVyZW5jZSA6IGFkZF9yZWZlcmVuY2U8dHlwZW5hbWUgYWRkX2NvbnN0PFQ+Ojp0eXBlPiB7fTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBNeVRhaWw+Ci0gICAgc3RydWN0IGluaXRfdGFpbAotICAgIHsKLSAgICAgICAgLy8gRWFjaCBvZiB2YzYgYW5kIHZjNyBzZWVtIHRvIHJlcXVpcmUgYSBkaWZmZXJlbnQgZm9ybXVsYXRpb24KLSAgICAgICAgLy8gb2YgdGhpcyByZXR1cm4gdHlwZQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSCwgY2xhc3MgVD4KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGFkZF9yZWZlcmVuY2U8dHlwZW5hbWUgYWRkX2NvbnN0PFQ+Ojp0eXBlPjo6dHlwZQotI2Vsc2UKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGFkZF9jb25zdF9yZWZlcmVuY2U8VD46OnR5cGUKLSNlbmRpZgotICAgICAgICBleGVjdXRlKCBjb25zPEgsVD4gY29uc3QmIHUsIGxvbmcgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdS5nZXRfdGFpbCgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IGluaXRfdGFpbDxudWxsX3R5cGU+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSD4KLSAgICAgICAgc3RhdGljIG51bGxfdHlwZSBleGVjdXRlKCBjb25zPEgsbnVsbF90eXBlPiBjb25zdCYgdSwgbG9uZyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsX3R5cGUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgbnVsbF90eXBlIGV4ZWN1dGUoVSBjb25zdCYsIC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG51bGxfdHlwZSgpOwotICAgICAgICB9Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBILCBjbGFzcyBUPgotICAgICAgICB2b2lkIGV4ZWN1dGUoIGNvbnM8SCxUPiBjb25zdCYsIGludCk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBPdGhlcj4KLSAgICBPdGhlciBjb25zdCYKLSAgICBpbml0X2hlYWQoIE90aGVyIGNvbnN0JiB1LCAuLi4gKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHU7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEgsIGNsYXNzIFQ+Ci0gICAgdHlwZW5hbWUgYWRkX3JlZmVyZW5jZTx0eXBlbmFtZSBhZGRfY29uc3Q8SD46OnR5cGU+Ojp0eXBlCi0gICAgaW5pdF9oZWFkKCBjb25zPEgsVD4gY29uc3QmIHUsIGludCApCi0gICAgewotICAgICAgICByZXR1cm4gdS5nZXRfaGVhZCgpOwotICAgIH0KLQotICAgIGlubGluZSBjaGFyKioqKiBpbml0X2hlYWQobnVsbF90eXBlIGNvbnN0JiwgaW50KTsKLQotICB9IC8vIGVuZCBvZiBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgICAvLyBjb25zIGJ1aWxkcyBhIGhldGVyb2dlbm91cyBsaXN0IG9mIHR5cGVzCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgc3RydWN0IGNvbnMKLSAgIHsKLSAgICAgdHlwZWRlZiBjb25zIHNlbGZfdHlwZTsKLSAgICAgdHlwZWRlZiBIZWFkIGhlYWRfdHlwZTsKLSAgICAgdHlwZWRlZiBUYWlsIHRhaWxfdHlwZTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxoZWFkX3R5cGU+Ojp0eXBlIGhlYWRfcmVmOwotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8dGFpbF90eXBlPjo6dHlwZSB0YWlsX3JlZjsKLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxoZWFkX3R5cGU+Ojp0eXBlIGhlYWRfY3JlZjsKLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTx0YWlsX3R5cGU+Ojp0eXBlIHRhaWxfY3JlZjsKLSAgICBwdWJsaWM6Ci0gICAgIGhlYWRfdHlwZSBoZWFkOwotICAgICB0YWlsX3R5cGUgdGFpbDsKLQotICAgICBoZWFkX3JlZiBnZXRfaGVhZCgpIHsgcmV0dXJuIGhlYWQ7IH0KLSAgICAgdGFpbF9yZWYgZ2V0X3RhaWwoKSB7IHJldHVybiB0YWlsOyB9Ci0KLSAgICAgaGVhZF9jcmVmIGdldF9oZWFkKCkgY29uc3QgeyByZXR1cm4gaGVhZDsgfQotICAgICB0YWlsX2NyZWYgZ2V0X3RhaWwoKSBjb25zdCB7IHJldHVybiB0YWlsOyB9Ci0KLSAgICAgY29ucygpIDogaGVhZCgpLCB0YWlsKCkge30KLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTVNWQwotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFpbD4KLSAgICAgIGNvbnMoaGVhZF9jcmVmIGggLyogPSBoZWFkX3R5cGUoKSAqLywgLy8gY2F1c2VzIE1TVkMgNi41IHRvIGJhcmYuCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFRhaWwmIHQpIDogaGVhZChoKSwgdGFpbCh0LmhlYWQsIHQudGFpbCkKLSAgICAgIHsKLSAgICAgIH0KLQotICAgICAgY29ucyhoZWFkX2NyZWYgaCAvKiA9IGhlYWRfdHlwZSgpICovLCAvLyBjYXVzZXMgTVNWQyA2LjUgdG8gYmFyZi4KLSAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVsbF90eXBlJiB0KSA6IGhlYWQoaCksIHRhaWwodCkKLSAgICAgIHsKLSAgICAgIH0KLQotI2Vsc2UKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICBleHBsaWNpdCBjb25zKGhlYWRfY3JlZiBoLCBjb25zdCBUJiB0KSA6Ci0gICAgICAgIGhlYWQoaCksIHRhaWwodC5oZWFkLCB0LnRhaWwpCi0gICAgICB7Ci0gICAgICB9Ci0KLSAgICAgIGV4cGxpY2l0IGNvbnMoaGVhZF9jcmVmIGggPSBoZWFkX3R5cGUoKSwKLSAgICAgICAgICAgICAgICAgICAgdGFpbF9jcmVmIHQgPSB0YWlsX3R5cGUoKSkgOgotICAgICAgICBoZWFkKGgpLCB0YWlsKHQpCi0gICAgICB7Ci0gICAgICB9Ci0jZW5kaWYKLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICAgICBjb25zKCBjb25zdCBVJiB1ICkKLSAgICAgICAgOiBoZWFkKGRldGFpbDo6aW5pdF9oZWFkKHUsIDApKQotICAgICAgICAsIHRhaWwoZGV0YWlsOjppbml0X3RhaWw8VGFpbD46OmV4ZWN1dGUodSwgMEwpKQotICAgICAgIHsKLSAgICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyPgotICAgICAgY29ucyYgb3BlcmF0b3I9KGNvbnN0IE90aGVyJiBvdGhlcikKLSAgICAgIHsKLSAgICAgICAgaGVhZCA9IG90aGVyLmhlYWQ7Ci0gICAgICAgIHRhaWwgPSBvdGhlci50YWlsOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgICAvLyBEZXRlcm1pbmVzIGlmIHRoZSBwYXJhbWV0ZXIgaXMgbnVsbF90eXBlCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfbnVsbF90eXBlIHsgZW51bSB7IFJFVCA9IDAgfTsgfTsKLSAgICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX251bGxfdHlwZTxudWxsX3R5cGU+IHsgZW51bSB7IFJFVCA9IDEgfTsgfTsKLQotICAgICAgLyogQnVpbGQgYSBjb25zIHN0cnVjdHVyZSBmcm9tIHRoZSBnaXZlbiBIZWFkIGFuZCBUYWlsLiBJZiBib3RoIGFyZSBudWxsX3R5cGUsCi0gICAgICByZXR1cm4gbnVsbF90eXBlLiAqLwotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICAgIHN0cnVjdCBidWlsZF9jb25zCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICBlbnVtIHsgdGFpbF9pc19udWxsX3R5cGUgPSBpc19udWxsX3R5cGU8VGFpbD46OlJFVCB9OwotICAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIGNvbnM8SGVhZCwgVGFpbD4gUkVUOwotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8PgotICAgICAgc3RydWN0IGJ1aWxkX2NvbnM8bnVsbF90eXBlLCBudWxsX3R5cGU+Ci0gICAgICB7Ci0gICAgICAgIHR5cGVkZWYgbnVsbF90eXBlIFJFVDsKLSAgICAgIH07Ci0KLSAgICAgIC8vIE1hcCB0aGUgTiBlbGVtZW50cyBvZiBhIHR1cGxlIGludG8gYSBjb25zIGxpc3QKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBUMSwKLSAgICAgICAgdHlwZW5hbWUgVDIgPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQzID0gbnVsbF90eXBlLAotICAgICAgICB0eXBlbmFtZSBUNCA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDUgPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQ2ID0gbnVsbF90eXBlLAotICAgICAgICB0eXBlbmFtZSBUNyA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDggPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQ5ID0gbnVsbF90eXBlLAotICAgICAgICB0eXBlbmFtZSBUMTAgPSBudWxsX3R5cGUKLSAgICAgID4KLSAgICAgIHN0cnVjdCBtYXBfdHVwbGVfdG9fY29ucwotICAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUMTAsIG51bGxfdHlwZSAgPjo6UkVUIGNvbnMxMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDksIGNvbnMxMD46OlJFVCBjb25zOTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDgsIGNvbnM5Pjo6UkVUIGNvbnM4OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUNywgY29uczg+OjpSRVQgY29uczc7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQ2LCBjb25zNz46OlJFVCBjb25zNjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDUsIGNvbnM2Pjo6UkVUIGNvbnM1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUNCwgY29uczU+OjpSRVQgY29uczQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQzLCBjb25zND46OlJFVCBjb25zMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDIsIGNvbnMzPjo6UkVUIGNvbnMyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUMSwgY29uczI+OjpSRVQgY29uczE7Ci0gICAgICB9OwotCi0gICAgICAvLyBXb3JrYXJvdW5kIHRoZSBsYWNrIG9mIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gaW4gc29tZSBjb21waWxlcnMKLSAgICAgIHRlbXBsYXRlPGludCBOPgotICAgICAgc3RydWN0IF9lbGVtZW50X3R5cGUKLSAgICAgIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHVwbGU+Ci0gICAgICAgIHN0cnVjdCBpbm5lcgotICAgICAgICB7Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUdXBsZTo6dGFpbF90eXBlIHRhaWxfdHlwZTsKLSAgICAgICAgICB0eXBlZGVmIF9lbGVtZW50X3R5cGU8Ti0xPiBuZXh0X2VsdF90eXBlOwotCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIF9lbGVtZW50X3R5cGU8Ti0xPjo6dGVtcGxhdGUgaW5uZXI8dGFpbF90eXBlPjo6UkVUIFJFVDsKLSAgICAgICAgfTsKLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlPD4KLSAgICAgIHN0cnVjdCBfZWxlbWVudF90eXBlPDA+Ci0gICAgICB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR1cGxlPgotICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHVwbGU6OmhlYWRfdHlwZSBSRVQ7Ci0gICAgICAgIH07Ci0gICAgICB9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLQotICAgIC8vIFJldHVybiB0aGUgTnRoIHR5cGUgb2YgdGhlIGdpdmVuIFR1cGxlCi0gICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFR1cGxlPgotICAgIHN0cnVjdCBlbGVtZW50Ci0gICAgewotICAgIHByaXZhdGU6Ci0gICAgICB0eXBlZGVmIGRldGFpbDo6X2VsZW1lbnRfdHlwZTxOPiBudGhfdHlwZTsKLQotICAgIHB1YmxpYzoKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbnRoX3R5cGU6OnRlbXBsYXRlIGlubmVyPFR1cGxlPjo6UkVUIFJFVDsKLSAgICAgIHR5cGVkZWYgUkVUIHR5cGU7Ci0gICAgfTsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA9PSAxMzAwKQotICAgICAgLy8gc3BlY2lhbCB3b3JrYXJvdW5kIGZvciB2Yzc6Ci0KLSAgICAgIHRlbXBsYXRlIDxib29sIHg+Ci0gICAgICBzdHJ1Y3QgcmVmZXJlbmNlX2FkZGVyCi0gICAgICB7Ci0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgIHN0cnVjdCByZWJpbmQKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVCYgdHlwZTsKLSAgICAgICAgIH07Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZSA8PgotICAgICAgc3RydWN0IHJlZmVyZW5jZV9hZGRlcjx0cnVlPgotICAgICAgewotICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICBzdHJ1Y3QgcmViaW5kCi0gICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgIH07Ci0gICAgICB9OwotCi0KLSAgICAgIC8vIFJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgTnRoIHR5cGUgb2YgdGhlIGdpdmVuIFR1cGxlCi0gICAgICB0ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgVHVwbGU+Ci0gICAgICBzdHJ1Y3QgZWxlbWVudF9yZWYKLSAgICAgIHsKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnQ8TiwgVHVwbGU+OjpSRVQgZWx0X3R5cGU7Ci0gICAgICAgICBlbnVtIHsgaXNfcmVmID0gaXNfcmVmZXJlbmNlPGVsdF90eXBlPjo6dmFsdWUgfTsKLQotICAgICAgcHVibGljOgotICAgICAgICAgdHlwZWRlZiByZWZlcmVuY2VfYWRkZXI8aXNfcmVmPjo6cmViaW5kPGVsdF90eXBlPjo6dHlwZSBSRVQ7Ci0gICAgICAgICB0eXBlZGVmIFJFVCB0eXBlOwotICAgICAgfTsKLQotICAgICAgLy8gUmV0dXJuIGEgY29uc3QgcmVmZXJlbmNlIHRvIHRoZSBOdGggdHlwZSBvZiB0aGUgZ2l2ZW4gVHVwbGUKLSAgICAgIHRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBUdXBsZT4KLSAgICAgIHN0cnVjdCBlbGVtZW50X2NvbnN0X3JlZgotICAgICAgewotICAgICAgcHJpdmF0ZToKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudDxOLCBUdXBsZT46OlJFVCBlbHRfdHlwZTsKLSAgICAgICAgIGVudW0geyBpc19yZWYgPSBpc19yZWZlcmVuY2U8ZWx0X3R5cGU+Ojp2YWx1ZSB9OwotCi0gICAgICBwdWJsaWM6Ci0gICAgICAgICB0eXBlZGVmIHJlZmVyZW5jZV9hZGRlcjxpc19yZWY+OjpyZWJpbmQ8Y29uc3QgZWx0X3R5cGU+Ojp0eXBlIFJFVDsKLSAgICAgICAgIHR5cGVkZWYgUkVUIHR5cGU7Ci0gICAgICB9OwotCi0jZWxzZSAvLyB2YzcKLQotICAgICAgLy8gUmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBOdGggdHlwZSBvZiB0aGUgZ2l2ZW4gVHVwbGUKLSAgICAgIHRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBUdXBsZT4KLSAgICAgIHN0cnVjdCBlbGVtZW50X3JlZgotICAgICAgewotICAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50PE4sIFR1cGxlPjo6UkVUIGVsdF90eXBlOwotCi0gICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3JlZmVyZW5jZTxlbHRfdHlwZT46OnR5cGUgUkVUOwotICAgICAgICB0eXBlZGVmIFJFVCB0eXBlOwotICAgICAgfTsKLQotICAgICAgLy8gUmV0dXJuIGEgY29uc3QgcmVmZXJlbmNlIHRvIHRoZSBOdGggdHlwZSBvZiB0aGUgZ2l2ZW4gVHVwbGUKLSAgICAgIHRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBUdXBsZT4KLSAgICAgIHN0cnVjdCBlbGVtZW50X2NvbnN0X3JlZgotICAgICAgewotICAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50PE4sIFR1cGxlPjo6UkVUIGVsdF90eXBlOwotCi0gICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3JlZmVyZW5jZTxjb25zdCBlbHRfdHlwZT46OnR5cGUgUkVUOwotICAgICAgICB0eXBlZGVmIFJFVCB0eXBlOwotICAgICAgfTsKLSNlbmRpZiAvLyB2YzcKLQotICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0gICAgLy8gR2V0IGxlbmd0aCBvZiB0aGlzIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHVwbGU+Ci0gICAgc3RydWN0IGxlbmd0aAotICAgIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMSArIGxlbmd0aDx0eXBlbmFtZSBUdXBsZTo6dGFpbF90eXBlPjo6dmFsdWUpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBsZW5ndGg8dHVwbGU8PiA+IHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3QgbGVuZ3RoPG51bGxfdHlwZT4KLSAgICB7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotICAgIH07Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIC8vIFJlZmVyZW5jZSB0aGUgTnRoIGVsZW1lbnQgaW4gYSB0dXBsZSBhbmQgcmV0cmlldmUgaXQgd2l0aCAiZ2V0IgotICAgIHRlbXBsYXRlPGludCBOPgotICAgIHN0cnVjdCBnZXRfY2xhc3MKLSAgICB7Ci0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgICAgc3RhdGljIGlubGluZQotICAgICAgdHlwZW5hbWUgZGV0YWlsOjplbGVtZW50X3JlZjxOLCBjb25zPEhlYWQsIFRhaWw+ID46OlJFVAotICAgICAgZ2V0KGNvbnM8SGVhZCwgVGFpbD4mIHQpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBnZXRfY2xhc3M8Ti0xPjo6Z2V0KHQudGFpbCk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgICBzdGF0aWMgaW5saW5lCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmVsZW1lbnRfY29uc3RfcmVmPE4sIGNvbnM8SGVhZCwgVGFpbD4gPjo6UkVUCi0gICAgICBnZXQoY29uc3QgY29uczxIZWFkLCBUYWlsPiYgdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGdldF9jbGFzczxOLTE+OjpnZXQodC50YWlsKTsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBnZXRfY2xhc3M8MD4KLSAgICB7Ci0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgICAgc3RhdGljIGlubGluZQotICAgICAgdHlwZW5hbWUgYWRkX3JlZmVyZW5jZTxIZWFkPjo6dHlwZQotICAgICAgZ2V0KGNvbnM8SGVhZCwgVGFpbD4mIHQpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiB0LmhlYWQ7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgICBzdGF0aWMgaW5saW5lCi0gICAgICB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPGNvbnN0IEhlYWQ+Ojp0eXBlCi0gICAgICBnZXQoY29uc3QgY29uczxIZWFkLCBUYWlsPiYgdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHQuaGVhZDsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgICAvLyB0dXBsZSBjbGFzcwotICAgIHRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsCi0gICAgICB0eXBlbmFtZSBUMiwKLSAgICAgIHR5cGVuYW1lIFQzLAotICAgICAgdHlwZW5hbWUgVDQsCi0gICAgICB0eXBlbmFtZSBUNSwKLSAgICAgIHR5cGVuYW1lIFQ2LAotICAgICAgdHlwZW5hbWUgVDcsCi0gICAgICB0eXBlbmFtZSBUOCwKLSAgICAgIHR5cGVuYW1lIFQ5LAotICAgICAgdHlwZW5hbWUgVDEwCi0gICAgPgotICAgIGNsYXNzIHR1cGxlIDoKLSAgICAgIHB1YmxpYyBkZXRhaWw6Om1hcF90dXBsZV90b19jb25zPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD46OmNvbnMxCi0gICAgewotICAgIHByaXZhdGU6Ci0gICAgICB0eXBlZGVmIGRldGFpbDo6bWFwX3R1cGxlX3RvX2NvbnM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiBtYXBwZWRfdHVwbGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcHBlZF90dXBsZTo6Y29uczEwIGNvbnMxMDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zOSBjb25zOTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zOCBjb25zODsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zNyBjb25zNzsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zNiBjb25zNjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zNSBjb25zNTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zNCBjb25zNDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zMyBjb25zMzsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zMiBjb25zMjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zMSBjb25zMTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDE+Ojp0eXBlIHQxX2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUMj46OnR5cGUgdDJfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQzPjo6dHlwZSB0M19jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDQ+Ojp0eXBlIHQ0X2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUNT46OnR5cGUgdDVfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQ2Pjo6dHlwZSB0Nl9jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDc+Ojp0eXBlIHQ3X2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUOD46OnR5cGUgdDhfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQ5Pjo6dHlwZSB0OV9jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDEwPjo6dHlwZSB0MTBfY3JlZjsKLSAgICBwdWJsaWM6Ci0gICAgICB0eXBlZGVmIGNvbnMxIGluaGVyaXRlZDsKLSAgICAgIHR5cGVkZWYgdHVwbGUgc2VsZl90eXBlOwotCi0gICAgICB0dXBsZSgpIDogY29uczEoVDEoKSwgY29uczIoVDIoKSwgY29uczMoVDMoKSwgY29uczQoVDQoKSwgY29uczUoVDUoKSwgY29uczYoVDYoKSxjb25zNyhUNygpLGNvbnM4KFQ4KCksY29uczkoVDkoKSxjb25zMTAoVDEwKCkpKSkpKSkpKSkpCi0gICAgICAgIHt9Ci0KLSAgICAgIHR1cGxlKAotICAgICAgICAgIHQxX2NyZWYgdDEsCi0gICAgICAgICAgdDJfY3JlZiB0MiwKLSAgICAgICAgICB0M19jcmVmIHQzID0gVDMoKSwKLSAgICAgICAgICB0NF9jcmVmIHQ0ID0gVDQoKSwKLSAgICAgICAgICB0NV9jcmVmIHQ1ID0gVDUoKSwKLSAgICAgICAgICB0Nl9jcmVmIHQ2ID0gVDYoKSwKLSAgICAgICAgICB0N19jcmVmIHQ3ID0gVDcoKSwKLSAgICAgICAgICB0OF9jcmVmIHQ4ID0gVDgoKSwKLSAgICAgICAgICB0OV9jcmVmIHQ5ID0gVDkoKSwKLSAgICAgICAgICB0MTBfY3JlZiB0MTAgPSBUMTAoKQotICAgICAgKSA6Ci0gICAgICAgIGNvbnMxKHQxLCBjb25zMih0MiwgY29uczModDMsIGNvbnM0KHQ0LCBjb25zNSh0NSwgY29uczYodDYsY29uczcodDcsY29uczgodDgsY29uczkodDksY29uczEwKHQxMCkpKSkpKSkpKSkKLSAgICAgIHsKLSAgICAgIH0KLQotICAgICAgZXhwbGljaXQgdHVwbGUodDFfY3JlZiB0MSkKLSAgICAgICAgOiBjb25zMSh0MSwgY29uczIoVDIoKSwgY29uczMoVDMoKSwgY29uczQoVDQoKSwgY29uczUoVDUoKSwgY29uczYoVDYoKSxjb25zNyhUNygpLGNvbnM4KFQ4KCksY29uczkoVDkoKSxjb25zMTAoVDEwKCkpKSkpKSkpKSkpCi0gICAgICB7fQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgICAgdHVwbGUoY29uc3QgY29uczxIZWFkLCBUYWlsPiYgb3RoZXIpIDoKLSAgICAgICAgY29uczEob3RoZXIuaGVhZCwgb3RoZXIudGFpbCkKLSAgICAgIHsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIFNlY29uZD4KLSAgICAgIHNlbGZfdHlwZSYgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6cGFpcjxGaXJzdCwgU2Vjb25kPiYgb3RoZXIpCi0gICAgICB7Ci0gICAgICAgIHRoaXMtPmhlYWQgPSBvdGhlci5maXJzdDsKLSAgICAgICAgdGhpcy0+dGFpbC5oZWFkID0gb3RoZXIuc2Vjb25kOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgICBzZWxmX3R5cGUmIG9wZXJhdG9yPShjb25zdCBjb25zPEhlYWQsIFRhaWw+JiBvdGhlcikKLSAgICAgIHsKLSAgICAgICAgdGhpcy0+aGVhZCA9IG90aGVyLmhlYWQ7Ci0gICAgICAgIHRoaXMtPnRhaWwgPSBvdGhlci50YWlsOwotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAgIHRlbXBsYXRlPGludCBOPiBzdHJ1Y3Qgd29ya2Fyb3VuZF9ob2xkZXIge307Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9yZWY8TiwgY29uczxIZWFkLCBUYWlsPiA+OjpSRVQKLSAgICBnZXQoY29uczxIZWFkLCBUYWlsPiYgdCwgZGV0YWlsOjp3b3JrYXJvdW5kX2hvbGRlcjxOPiogPSAwKQotICAgIHsKLSAgICAgIHJldHVybiBkZXRhaWw6OmdldF9jbGFzczxOPjo6Z2V0KHQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9jb25zdF9yZWY8TiwgY29uczxIZWFkLCBUYWlsPiA+OjpSRVQKLSAgICBnZXQoY29uc3QgY29uczxIZWFkLCBUYWlsPiYgdCwgZGV0YWlsOjp3b3JrYXJvdW5kX2hvbGRlcjxOPiogPSAwKQotICAgIHsKLSAgICAgIHJldHVybiBkZXRhaWw6OmdldF9jbGFzczxOPjo6Z2V0KHQpOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPgotICAgIGlubGluZQotICAgIHR1cGxlPFQxPgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxKQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMT4odDEpOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDI+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyPih0MSwgdDIpOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyLCBUMz4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMiwgVDM+KHQxLCB0MiwgdDMpOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDMsIFQ0PgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywgY29uc3QgVDQmIHQ0KQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzLCBUND4odDEsIHQyLCB0MywgdDQpOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLCBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSkKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1Pih0MSwgdDIsIHQzLCB0NCwgdDUpOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDY+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYpOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NiwgY29uc3QgVDcmIHQ3KQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4odDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcpOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLCBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcsIGNvbnN0IFQ4JiB0OCkKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Pih0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgpOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYsIGNvbnN0IFQ3JiB0NywgY29uc3QgVDgmIHQ4LCBjb25zdCBUOSYgdDkpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDkpOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLCBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcsIGNvbnN0IFQ4JiB0OCwgY29uc3QgVDkmIHQ5LCBjb25zdCBUMTAmIHQxMCkKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPih0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5LCB0MTApOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8ZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4gPgotICAgIHRpZShUMSYgdDEpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8ZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyKQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8ZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MykKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+KCZ0MykpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8ZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPigmdDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4oJnQ0KSk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8ZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUgJnQ1KQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+KCZ0NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PigmdDUpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDY+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8ZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSAmdDUsIFQ2ICZ0NikKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+KCZ0MyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PigmdDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4oJnQ1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+KCZ0NikpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8ZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNz4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQsIFQ1ICZ0NSwgVDYgJnQ2LCBUNyAmdDcpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPigmdDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4oJnQ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+KCZ0NSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PigmdDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNz4oJnQ3KSk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8ZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ4PiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUgJnQ1LCBUNiAmdDYsIFQ3ICZ0NywgVDggJnQ4KQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+KCZ0NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PigmdDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4oJnQ2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+KCZ0NyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ4PigmdDgpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8ZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ4PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDk+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSAmdDUsIFQ2ICZ0NiwgVDcgJnQ3LCBUOCAmdDgsIFQ5ICZ0OSkKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+KCZ0MyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PigmdDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4oJnQ1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+KCZ0NiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PigmdDcpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOD4oJnQ4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDk+KCZ0OSkpOwotICAgIH0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDg+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxMD4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQsIFQ1ICZ0NSwgVDYgJnQ2LCBUNyAmdDcsIFQ4ICZ0OCwgVDkgJnQ5LCBUMTAgJnQxMCkKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+KCZ0MyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PigmdDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4oJnQ1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+KCZ0NiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PigmdDcpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOD4oJnQ4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDk+KCZ0OSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxMD4oJnQxMCkpOwotICAgIH0KLSAgICAvLyAiaWdub3JlIiBhbGxvd3MgdHVwbGUgcG9zaXRpb25zIHRvIGJlIGlnbm9yZWQgd2hlbiB1c2luZyAidGllIi4KLQotZGV0YWlsOjpzd2FsbG93X2Fzc2lnbiBjb25zdCBpZ25vcmUgPSBkZXRhaWw6OnN3YWxsb3dfYXNzaWduKCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsCi0gICAgICAgICAgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5Pgotdm9pZCBzd2FwKHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgbGhzLAotICAgICAgICAgIHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgcmhzKTsKLWlubGluZSB2b2lkIHN3YXAobnVsbF90eXBlJiwgbnVsbF90eXBlJikge30KLXRlbXBsYXRlPGNsYXNzIEhIPgotaW5saW5lIHZvaWQgc3dhcChjb25zPEhILCBudWxsX3R5cGU+JiBsaHMsIGNvbnM8SEgsIG51bGxfdHlwZT4mIHJocykgewotICA6Om5kbmJvb3N0Ojpzd2FwKGxocy5oZWFkLCByaHMuaGVhZCk7Ci19Ci10ZW1wbGF0ZTxjbGFzcyBISCwgY2xhc3MgVFQ+Ci1pbmxpbmUgdm9pZCBzd2FwKGNvbnM8SEgsIFRUPiYgbGhzLCBjb25zPEhILCBUVD4mIHJocykgewotICA6Om5kbmJvb3N0Ojpzd2FwKGxocy5oZWFkLCByaHMuaGVhZCk7Ci0gIDo6bmRuYm9vc3Q6OnR1cGxlczo6c3dhcChsaHMudGFpbCwgcmhzLnRhaWwpOwotfQotdGVtcGxhdGUgPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwKLSAgICAgICAgICBjbGFzcyBUNSwgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+Ci1pbmxpbmUgdm9pZCBzd2FwKHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgbGhzLAotICAgICAgICAgIHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiYgcmhzKSB7Ci0gIHR5cGVkZWYgdHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+IHR1cGxlX3R5cGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfdHlwZTo6aW5oZXJpdGVkIGJhc2U7Ci0gIDo6bmRuYm9vc3Q6OnR1cGxlczo6c3dhcChzdGF0aWNfY2FzdDxiYXNlJj4obGhzKSwgc3RhdGljX2Nhc3Q8YmFzZSY+KHJocykpOwotfQotCi19IC8vIG5hbWVzcGFjZSB0dXBsZXMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0jZW5kaWYgLy8gTkROQk9PU1RfVFVQTEVfQkFTSUNfTk9fUEFSVElBTF9TUEVDX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90dXBsZS90dXBsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL3R1cGxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBiNTgwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL3R1cGxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8vICB0dXBsZS5ocHAgLSBCb29zdCBUdXBsZSBMaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAotCi0jaWZuZGVmIE5ETkJPT1NUX1RVUExFX0hQUAotI2RlZmluZSBORE5CT09TVF9UVVBMRV9IUFAKLQotI2lmIGRlZmluZWQoX19zZ2kpICYmIGRlZmluZWQoX0NPTVBJTEVSX1ZFUlNJT04pICYmIF9DT01QSUxFUl9WRVJTSU9OIDw9IDczMAotLy8gV29yayBhcm91bmQgYSBjb21waWxlciBidWcuCi0vLyBuZG5ib29zdDo6cHl0aG9uOjp0dXBsZSBoYXMgdG8gYmUgc2VlbiBieSB0aGUgY29tcGlsZXIgYmVmb3JlIHRoZQotLy8gbmRuYm9vc3Q6OnR1cGxlIGNsYXNzIHRlbXBsYXRlLgotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHB5dGhvbiB7IGNsYXNzIHR1cGxlOyB9fQotI2VuZGlmCi0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwIgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotLy8gVGhlIE1TVkMgdmVyc2lvbgotI2luY2x1ZGUgIm5kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpY19ub19wYXJ0aWFsX3NwZWMuaHBwIgotCi0jZWxzZQotLy8gb3RoZXIgY29tcGlsZXJzCi0jaW5jbHVkZSAibmRuYm9vc3QvcmVmLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90dXBsZS9kZXRhaWwvdHVwbGVfYmFzaWMuaHBwIgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAgICAKLQotdXNpbmcgdHVwbGVzOjp0dXBsZTsKLXVzaW5nIHR1cGxlczo6bWFrZV90dXBsZTsKLXVzaW5nIHR1cGxlczo6dGllOwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFKQotdXNpbmcgdHVwbGVzOjpnZXQ7Ci0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotLy8KLS8vIFRoZSAidXNpbmcgdHVwbGVzOjpnZXQiIHN0YXRlbWVudCBjYXVzZXMgdGhlCi0vLyBCb3JsYW5kIGNvbXBpbGVyIHRvIElDRSwgdXNlIGZvcndhcmRpbmcKLS8vIGZ1bmN0aW9ucyBpbnN0ZWFkOgotLy8KLXRlbXBsYXRlPGludCBOLCBjbGFzcyBIVCwgY2xhc3MgVFQ+Ci1pbmxpbmUgdHlwZW5hbWUgdHVwbGVzOjphY2Nlc3NfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PE4sIHR1cGxlczo6Y29uczxIVCwgVFQ+ID46OnR5cGUKLSAgICAgICAgICAgICAgICA+Ojpub25fY29uc3RfdHlwZQotZ2V0KHR1cGxlczo6Y29uczxIVCwgVFQ+JiBjKSB7Ci0gIHJldHVybiB0dXBsZXM6OmdldDxOLEhULFRUPihjKTsKLX0gCi0vLyBnZXQgZnVuY3Rpb24gZm9yIGNvbnN0IGNvbnMtbGlzdHMsIHJldHVybnMgYSBjb25zdCByZWZlcmVuY2UgdG8KLS8vIHRoZSBlbGVtZW50LiBJZiB0aGUgZWxlbWVudCBpcyBhIHJlZmVyZW5jZSwgcmV0dXJucyB0aGUgcmVmZXJlbmNlCi0vLyBhcyBzdWNoICh0aGF0IGlzLCBjYW4gcmV0dXJuIGEgbm9uLWNvbnN0IHJlZmVyZW5jZSkKLXRlbXBsYXRlPGludCBOLCBjbGFzcyBIVCwgY2xhc3MgVFQ+Ci1pbmxpbmUgdHlwZW5hbWUgdHVwbGVzOjphY2Nlc3NfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PE4sIHR1cGxlczo6Y29uczxIVCwgVFQ+ID46OnR5cGUKLSAgICAgICAgICAgICAgICA+Ojpjb25zdF90eXBlCi1nZXQoY29uc3QgdHVwbGVzOjpjb25zPEhULCBUVD4mIGMpIHsKLSAgcmV0dXJuIHR1cGxlczo6Z2V0PE4sSFQsVFQ+KGMpOwotfQotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLS8vCi0vLyBNU1ZDLCB1c2luZyBkZWNsYXJhdGlvbnMgZG9uJ3QgbWl4IHdpdGggdGVtcGxhdGVzIHdlbGwsCi0vLyBzbyB1c2UgZm9yd2FyZGluZyBmdW5jdGlvbnMgaW5zdGVhZDoKLS8vCi10ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLXR5cGVuYW1lIHR1cGxlczo6ZGV0YWlsOjplbGVtZW50X3JlZjxOLCB0dXBsZXM6OmNvbnM8SGVhZCwgVGFpbD4gPjo6UkVUCi1nZXQodHVwbGVzOjpjb25zPEhlYWQsIFRhaWw+JiB0LCB0dXBsZXM6OmRldGFpbDo6d29ya2Fyb3VuZF9ob2xkZXI8Tj4qID0gMCkKLXsKLSAgIHJldHVybiB0dXBsZXM6OmRldGFpbDo6Z2V0X2NsYXNzPE4+OjpnZXQodCk7Ci19Ci0KLXRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotdHlwZW5hbWUgdHVwbGVzOjpkZXRhaWw6OmVsZW1lbnRfY29uc3RfcmVmPE4sIHR1cGxlczo6Y29uczxIZWFkLCBUYWlsPiA+OjpSRVQKLWdldChjb25zdCB0dXBsZXM6OmNvbnM8SGVhZCwgVGFpbD4mIHQsIHR1cGxlczo6ZGV0YWlsOjp3b3JrYXJvdW5kX2hvbGRlcjxOPiogPSAwKQotewotICAgcmV0dXJuIHR1cGxlczo6ZGV0YWlsOjpnZXRfY2xhc3M8Tj46OmdldCh0KTsKLX0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19VU0lOR19URU1QTEFURQotICAgCi19IC8vIGVuZCBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFVQTEVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODliMzVmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfTkROQk9PU1RfRFdBMjAwMTAxMjBfSFBQCi0jIGRlZmluZSBORE5CT09TVF9UWVBFX05ETkJPT1NUX0RXQTIwMDEwMTIwX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gIC8vIEp1c3QgYSBzaW1wbGUgInR5cGUgZW52ZWxvcGUiLiBVc2VmdWwgaW4gdmFyaW91cyBjb250ZXh0cywgbW9zdGx5IHRvIHdvcmsKLSAgLy8gYXJvdW5kIHNvbWUgTVNWQyBkZWZpY2llbmNpZXMuCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBzdHJ1Y3QgdHlwZSB7fTsKLQotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFlQRV9ORE5CT09TVF9EV0EyMDAxMDEyMF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwY2NjZWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyAgU2VlIG5kbmJvb3N0L3R5cGVfdHJhaXRzLyouaHBwIGZvciBmdWxsIGNvcHlyaWdodCBub3RpY2VzLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2N2LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfbHZhbHVlX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9ydmFsdWVfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWduZWRfc3RvcmFnZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jb21tb25fdHlwZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZGl0aW9uYWwuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2RlY2F5LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9leHRlbnQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2Zsb2F0aW5nX3BvaW50X3Byb21vdGlvbi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZnVuY3Rpb25fdHJhaXRzLmhwcCIKLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKF9fQ1VEQUNDX18pCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25ld19vcGVyYXRvci5ocHAiCi0jZW5kaWYKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19hc3NpZ24uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvbnN0cnVjdG9yLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb3B5LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19kZXN0cnVjdG9yLmhwcCIKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfb3BlcmF0b3IuaHBwPgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Fzc2lnbi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvcHkuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfYXNzaWduLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdmlydHVhbF9kZXN0cnVjdG9yLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2Vfb2YuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcCIKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wbGV4LmhwcD4KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wb3VuZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbXB0eS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0aW5nX3BvaW50LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19sdmFsdWVfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX29iamVjdF9wb2ludGVyLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19vYmplY3QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9seW1vcnBoaWMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcnZhbHVlX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zY2FsYXIuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3N0YXRlbGVzcy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5pb24uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3Vuc2lnbmVkLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc192aXJ0dWFsX2Jhc2Vfb2YuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcCIKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3NpZ25lZC5ocHA+Ci0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmFuay5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2V4dGVudC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV92b2xhdGlsZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHAiCi0jaWYgIShkZWZpbmVkKF9fc2dpKSAmJiBkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykgJiYgKF9fRURHX1ZFUlNJT05fXyA9PSAyMzgpKQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX3Byb21vdGlvbi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcHJvbW90ZS5ocHAiCi0jZW5kaWYKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHAiCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UWVBFX1RSQUlUU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdjNWVkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQUREX0NPTlNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9BRERfQ09OU1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAqIGNvbnZlcnQgYSB0eXBlIFQgdG8gY29uc3QgdHlwZSAtIGFkZF9jb25zdDxUPgotLy8gdGhpcyBpcyBub3QgcmVxdWlyZWQgc2luY2UgdGhlIHJlc3VsdCBpcyBhbHdheXMKLS8vIHRoZSBzYW1lIGFzICJUIGNvbnN0IiwgYnV0IGl0IGRvZXMgc3VwcHJlc3Mgd2FybmluZ3MKLS8vIGZyb20gc29tZSBjb21waWxlcnM6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0vLyBUaGlzIGJvZ3VzIHdhcm5pbmcgd2lsbCBhcHBlYXIgd2hlbiBhZGRfY29uc3QgaXMgYXBwbGllZCB0byBhCi0vLyBjb25zdCB2b2xhdGlsZSByZWZlcmVuY2UgYmVjYXVzZSB3ZSBjYW4ndCBkZXRlY3QgY29uc3Qgdm9sYXRpbGUKLS8vIHJlZmVyZW5jZXMgd2l0aCBNU1ZDNi4KLSMgICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDE4MSkgLy8gd2FybmluZyBDNDE4MTogcXVhbGlmaWVyIGFwcGxpZWQgdG8gcmVmZXJlbmNlIHR5cGUgaWdub3JlZAotI2VuZGlmIAotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKGFkZF9jb25zdCxULFQgY29uc3QpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmIAotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGFkZF9jb25zdCxUJixUJikKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUREX0NPTlNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY3YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY3YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2Q1NmQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2N2LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQUREX0NWX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9BRERfQ1ZfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAqIGNvbnZlcnQgYSB0eXBlIFQgdG8gYSBjb25zdCB2b2xhdGlsZSB0eXBlIC0gYWRkX2N2PFQ+Ci0vLyB0aGlzIGlzIG5vdCByZXF1aXJlZCBzaW5jZSB0aGUgcmVzdWx0IGlzIGFsd2F5cwotLy8gdGhlIHNhbWUgYXMgIlQgY29uc3Qgdm9sYXRpbGUiLCBidXQgaXQgZG9lcyBzdXBwcmVzcyB3YXJuaW5ncwotLy8gZnJvbSBzb21lIGNvbXBpbGVyczoKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLS8vIFRoaXMgYm9ndXMgd2FybmluZyB3aWxsIGFwcGVhciB3aGVuIGFkZF92b2xhdGlsZSBpcyBhcHBsaWVkIHRvIGEKLS8vIGNvbnN0IHZvbGF0aWxlIHJlZmVyZW5jZSBiZWNhdXNlIHdlIGNhbid0IGRldGVjdCBjb25zdCB2b2xhdGlsZQotLy8gcmVmZXJlbmNlcyB3aXRoIE1TVkM2LgotIyAgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTgxKSAvLyB3YXJuaW5nIEM0MTgxOiBxdWFsaWZpZXIgYXBwbGllZCB0byByZWZlcmVuY2UgdHlwZSBpZ25vcmVkCi0jZW5kaWYgCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoYWRkX2N2LFQsVCBjb25zdCB2b2xhdGlsZSkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsYWRkX2N2LFQmLFQmKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfQ1ZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9sdmFsdWVfcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2x2YWx1ZV9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTJlZmM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2x2YWx1ZV9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLy8gIENvcHlyaWdodCAyMDEwIEpvaG4gTWFkZG9jawotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19FWFRfQUREX0xWQUxVRV9SRUZFUkVOQ0VfX0hQUAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19FWFRfQUREX0xWQUxVRV9SRUZFUkVOQ0VfX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShhZGRfbHZhbHVlX3JlZmVyZW5jZSxULHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPFQ+Ojp0eXBlKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxhZGRfbHZhbHVlX3JlZmVyZW5jZSxUJiYsVCYpCi0jZW5kaWYKLQotfQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9BRERfTFZBTFVFX1JFRkVSRU5DRV9fSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjZmNjBiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FERF9QT0lOVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9BRERfUE9JTlRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg1QTApCi0vLwotLy8gRm9yIHNvbWUgcmVhc29uIHRoaXMgaW1wbGVtZW50YXRpb24gc3RvcHMgQm9ybGFuZHMgY29tcGlsZXIKLS8vIGZyb20gZHJvcHBpbmcgY3YtcXVhbGlmaWVycywgaXQgc3RpbGwgZmFpbHMgd2l0aCByZWZlcmVuY2VzCi0vLyB0byBhcnJheXMgZm9yIHNvbWUgcmVhc29uIHRob3VnaCAoc2hydWcuLi4pIChKTSAyMDAyMTEwNCkKLS8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcG9pbnRlcl9pbXBsCi17Ci0gICAgdHlwZWRlZiBUKiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9wb2ludGVyX2ltcGw8VCY+Ci17Ci0gICAgdHlwZWRlZiBUKiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9wb2ludGVyX2ltcGw8VCZjb25zdD4KLXsKLSAgICB0eXBlZGVmIFQqIHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3BvaW50ZXJfaW1wbDxUJnZvbGF0aWxlPgotewotICAgIHR5cGVkZWYgVCogdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcG9pbnRlcl9pbXBsPFQmY29uc3Qgdm9sYXRpbGU+Ci17Ci0gICAgdHlwZWRlZiBUKiB0eXBlOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3BvaW50ZXJfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSBub19yZWZfdHlwZTsKLSAgICB0eXBlZGVmIG5vX3JlZl90eXBlKiB0eXBlOwotfTsKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKGFkZF9wb2ludGVyLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YWRkX3BvaW50ZXJfaW1wbDxUPjo6dHlwZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FERF9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5M2I4YmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FERF9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FERF9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgZGVmaW5lZChORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTKQotCi10ZW1wbGF0ZSA8Ym9vbCB4Pgotc3RydWN0IHJlZmVyZW5jZV9hZGRlcgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IHJlZmVyZW5jZV9hZGRlcjx0cnVlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9yZWZlcmVuY2VfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVmZXJlbmNlX2FkZGVyPAotICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzxUPiByZXN1bHQ7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc3VsdDo6dHlwZSB0eXBlOwotfTsKLQotI2Vsc2UKLS8vCi0vLyBXZSBjYW4ndCBmaWx0ZXIgb3V0IHJ2YWx1ZV9yZWZlcmVuY2VzIGF0IHRoZSBzYW1lIGxldmVsIGFzCi0vLyByZWZlcmVuY2VzIG9yIHdlIGdldCBhbWJpZ3VpdGllcyBmcm9tIG1zdmM6Ci0vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcmVmZXJlbmNlX3J2YWx1ZV9sYXllcgotewotICAgIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9yZWZlcmVuY2VfcnZhbHVlX2xheWVyPFQmJj4KLXsKLSAgICB0eXBlZGVmIFQmJiB0eXBlOwotfTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcmVmZXJlbmNlX2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9yZWZlcmVuY2VfcnZhbHVlX2xheWVyPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsYWRkX3JlZmVyZW5jZSxUJixUJikKLSNlbmRpZgotCi0jZW5kaWYKLQotLy8gdGhlc2UgZnVsbCBzcGVjaWFsaXNhdGlvbnMgYXJlIGFsd2F5cyByZXF1aXJlZDoKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfU1BFQzEoYWRkX3JlZmVyZW5jZSx2b2lkLHZvaWQpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1NQRUMxKGFkZF9yZWZlcmVuY2Usdm9pZCBjb25zdCx2b2lkIGNvbnN0KQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9TUEVDMShhZGRfcmVmZXJlbmNlLHZvaWQgdm9sYXRpbGUsdm9pZCB2b2xhdGlsZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfU1BFQzEoYWRkX3JlZmVyZW5jZSx2b2lkIGNvbnN0IHZvbGF0aWxlLHZvaWQgY29uc3Qgdm9sYXRpbGUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoYWRkX3JlZmVyZW5jZSxULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFkZF9yZWZlcmVuY2VfaW1wbDxUPjo6dHlwZSkKLQotLy8gYWd1cnQsIDA3L21hci8wMzogd29ya2Fyb3VuZCBCb3JsYW5kJ3MgaWxsLWZvcm1lZCBzZW5zaXRpdml0eSB0byBhbiBhZGRpdGlvbmFsCi0vLyBsZXZlbCBvZiBpbmRpcmVjdGlvbiwgaGVyZQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsYWRkX3JlZmVyZW5jZSxUJixUJikKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUREX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNjMwNzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vLyAgYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IDIwMTAgVmljZW50ZSBKLiBCb3RldCBFc2NyaWJhCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9BRERfUlZBTFVFX1JFRkVSRU5DRV9fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9BRERfUlZBTFVFX1JFRkVSRU5DRV9fSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgIEMrKzAzIGltcGxlbWVudGF0aW9uIG9mICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgMjAuOS43LjIgUmVmZXJlbmNlIG1vZGlmaWNhdGlvbnMgW21ldGEudHJhbnMucmVmXSAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0dGVuIGJ5IFZpY2VudGUgSi4gQm90ZXQgRXNjcmliYSAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gSWYgVCBuYW1lcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24gdHlwZSB0aGVuIHRoZSBtZW1iZXIgdHlwZWRlZiB0eXBlCi0vLyBzaGFsbCBuYW1lIFQmJjsgb3RoZXJ3aXNlLCB0eXBlIHNoYWxsIG5hbWUgVC4gWyBOb3RlOiBUaGlzIHJ1bGUgcmVmbGVjdHMKLS8vIHRoZSBzZW1hbnRpY3Mgb2YgcmVmZXJlbmNlIGNvbGxhcHNpbmcuIEZvciBleGFtcGxlLCB3aGVuIGEgdHlwZSBUIG5hbWVzCi0vLyBhIHR5cGUgVDEmLCB0aGUgdHlwZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxUPjo6dHlwZSBpcyBub3QgYW4gcnZhbHVlCi0vLyByZWZlcmVuY2UuIC1lbmQgbm90ZSBdCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdHlwZV90cmFpdHNfZGV0YWlsIHsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGI+Ci0gICAgc3RydWN0IGFkZF9ydmFsdWVfcmVmZXJlbmNlX2hlbHBlcgotICAgIHsgdHlwZWRlZiBUICAgdHlwZTsgfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZV9oZWxwZXI8VCwgdHJ1ZT4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCYmICAgdHlwZTsKLSAgICB9OwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaW1wCi0gICAgewotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzX2RldGFpbDo6YWRkX3J2YWx1ZV9yZWZlcmVuY2VfaGVscGVyCi0gICAgICAgICAgICAgICAgICA8VCwgKGlzX3ZvaWQ8VD46OnZhbHVlID09IGZhbHNlICYmIGlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgPT0gZmFsc2UpID46OnR5cGUgdHlwZTsKLSAgICB9OwotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoYWRkX3J2YWx1ZV9yZWZlcmVuY2UsVCx0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV90cmFpdHNfZGV0YWlsOjphZGRfcnZhbHVlX3JlZmVyZW5jZV9pbXA8VD46OnR5cGUpCi0KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9BRERfUlZBTFVFX1JFRkVSRU5DRV9fSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3ZvbGF0aWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3ZvbGF0aWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThmMTE2Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF92b2xhdGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQUREX1ZPTEFUSUxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9BRERfVk9MQVRJTEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAqIGNvbnZlcnQgYSB0eXBlIFQgdG8gdm9sYXRpbGUgdHlwZSAtIGFkZF92b2xhdGlsZTxUPgotLy8gdGhpcyBpcyBub3QgcmVxdWlyZWQgc2luY2UgdGhlIHJlc3VsdCBpcyBhbHdheXMKLS8vIHRoZSBzYW1lIGFzICJUIHZvbGF0aWxlIiwgYnV0IGl0IGRvZXMgc3VwcHJlc3Mgd2FybmluZ3MKLS8vIGZyb20gc29tZSBjb21waWxlcnM6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0vLyBUaGlzIGJvZ3VzIHdhcm5pbmcgd2lsbCBhcHBlYXIgd2hlbiBhZGRfdm9sYXRpbGUgaXMgYXBwbGllZCB0byBhCi0vLyBjb25zdCB2b2xhdGlsZSByZWZlcmVuY2UgYmVjYXVzZSB3ZSBjYW4ndCBkZXRlY3QgY29uc3Qgdm9sYXRpbGUKLS8vIHJlZmVyZW5jZXMgd2l0aCBNU1ZDNi4KLSMgICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDE4MSkgLy8gd2FybmluZyBDNDE4MTogcXVhbGlmaWVyIGFwcGxpZWQgdG8gcmVmZXJlbmNlIHR5cGUgaWdub3JlZAotI2VuZGlmIAotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKGFkZF92b2xhdGlsZSxULFQgdm9sYXRpbGUpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmIAotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGFkZF92b2xhdGlsZSxUJixUJikKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUREX1ZPTEFUSUxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbmVkX3N0b3JhZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbmVkX3N0b3JhZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGU2NmExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25lZF9zdG9yYWdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLQotLy8gIENvcHlyaWdodCAoQykgSm9obiBNYWRkb2NrIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FMSUdORURfU1RPUkFHRV9IUFBfSU5DTFVERUQKLSMgIGRlZmluZSBORE5CT09TVF9UVF9BTElHTkVEX1NUT1JBR0VfSFBQX0lOQ0xVREVECi0jICBpbmNsdWRlIDxuZG5ib29zdC9hbGlnbmVkX3N0b3JhZ2UuaHBwPgotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FMSUdORURfU1RPUkFHRV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2QzNWFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BTElHTk1FTlRfT0ZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9PRl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF9kZWYuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEyMSA0NTEyKSAvLyBhbGlnbm1lbnQgaXMgc2Vuc2l0aXZlIHRvIHBhY2tpbmcKLSNlbmRpZgotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC1WeC0gLVZlLQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgYWxpZ25tZW50X29mOwotCi0vLyBnZXQgdGhlIGFsaWdubWVudCBvZiBzb21lIGFyYml0cmFyeSB0eXBlOgotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQzMjQpIC8vIHN0cnVjdHVyZSB3YXMgcGFkZGVkIGR1ZSB0byBfX2RlY2xzcGVjKGFsaWduKCkpCi0jZW5kaWYKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFsaWdubWVudF9vZl9oYWNrCi17Ci0gICAgY2hhciBjOwotICAgIFQgdDsKLSAgICBhbGlnbm1lbnRfb2ZfaGFjaygpOwotfTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDx1bnNpZ25lZCBBLCB1bnNpZ25lZCBTPgotc3RydWN0IGFsaWdubWVudF9sb2dpYwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBBIDwgUyA/IEEgOiBTKTsKLX07Ci0KLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGFsaWdubWVudF9vZl9pbXBsCi17Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA+PSAxNDAwKQotICAgIC8vCi0gICAgLy8gV2l0aCBNU1ZDIGJvdGggdGhlIG5hdGl2ZSBfX2FsaWdub2Ygb3BlcmF0b3IKLSAgICAvLyBhbmQgb3VyIG93biBsb2dpYyBnZXRzIHRoaW5ncyB3cm9uZyBmcm9tIHRpbWUgdG8gdGltZSA6LSgKLSAgICAvLyBVc2luZyBhIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28gc2VlbXMgdG8gbWFrZSB0aGUgbW9zdCBvZiBhIGJhZCBqb2I6Ci0gICAgLy8KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25tZW50X2xvZ2ljPAotICAgICAgICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25tZW50X29mX2hhY2s8VD4pIC0gc2l6ZW9mKFQpLAotICAgICAgICAgICAgX19hbGlnbm9mKFQpCi0gICAgICAgID46OnZhbHVlKSk7Ci0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9BTElHTk1FTlRfT0YpCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0OjpkZXRhaWw6OmFsaWdubWVudF9sb2dpYzwKLSAgICAgICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpkZXRhaWw6OmFsaWdubWVudF9vZl9oYWNrPFQ+KSAtIHNpemVvZihUKSwKLSAgICAgICAgICAgIHNpemVvZihUKQotICAgICAgICA+Ojp2YWx1ZSkpOwotI2Vsc2UKLSAgIC8vCi0gICAvLyBXZSBwdXQgdGhpcyBoZXJlLCByYXRoZXIgdGhhbiBpbiB0aGUgZGVmaW5pdGlvbiBvZgotICAgLy8gYWxpZ25tZW50X29mIGJlbG93LCBiZWNhdXNlIE1TVkMncyBfX2FsaWdub2YgZG9lc24ndAotICAgLy8gYWx3YXlzIHdvcmsgaW4gdGhhdCBjb250ZXh0IGZvciBzb21lIHVuZXhwbGFpbmVkIHJlYXNvbi4KLSAgIC8vIChTZWUgdHlwZV93aXRoX2FsaWdubWVudCB0ZXN0cyBmb3IgdGVzdCBjYXNlcykuCi0gICAvLwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IE5ETkJPT1NUX0FMSUdOTUVOVF9PRihUKSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX0RFRjEoYWxpZ25tZW50X29mLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjphbGlnbm1lbnRfb2ZfaW1wbDxUPjo6dmFsdWUpCi0KLS8vIHJlZmVyZW5jZXMgaGF2ZSB0byBiZSB0cmVhdGVkIHNwZWNpYWxseSwgYXNzdW1lCi0vLyB0aGF0IGEgcmVmZXJlbmNlIGlzIGp1c3QgYSBzcGVjaWFsIHBvaW50ZXI6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFsaWdubWVudF9vZjxUJj4KLSAgICA6IHB1YmxpYyBhbGlnbm1lbnRfb2Y8VCo+Ci17Ci19OwotI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0vLyBsb25nIGRvdWJsZSBnaXZlcyBhbiBpbmNvcnJlY3QgdmFsdWUgb2YgMTAgKCEpCi0vLyB1bmxlc3Mgd2UgZG8gdGhpcy4uLgotc3RydWN0IGxvbmdfZG91YmxlX3dyYXBwZXJ7IGxvbmcgZG91YmxlIGxkOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgYWxpZ25tZW50X29mPGxvbmcgZG91YmxlPgotICAgOiBwdWJsaWMgYWxpZ25tZW50X29mPGxvbmdfZG91YmxlX3dyYXBwZXI+e307Ci0jZW5kaWYKLQotLy8gdm9pZCBoYXMgdG8gYmUgdHJlYXRlZCBzcGVjaWFsbHk6Ci1ORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1NQRUMxKGFsaWdubWVudF9vZix2b2lkLDApCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1NQRUMxKGFsaWdubWVudF9vZix2b2lkIGNvbnN0LDApCi1ORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1NQRUMxKGFsaWdubWVudF9vZix2b2lkIHZvbGF0aWxlLDApCi1ORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1NQRUMxKGFsaWdubWVudF9vZix2b2lkIGNvbnN0IHZvbGF0aWxlLDApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUxJR05NRU5UX09GX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FyaXRobWV0aWNfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYXJpdGhtZXRpY190cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzhlMTk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYXJpdGhtZXRpY190cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0vLwotLy8gIGRlZmluZXMgdHJhaXRzIGNsYXNzZXMgZm9yIGFyaXRobWV0aWMgdHlwZXM6Ci0vLyAgaXNfdm9pZCwgaXNfaW50ZWdyYWwsIGlzX2Zsb2F0LCBpc19hcml0aG1ldGljLCBpc19mdW5kYW1lbnRhbC4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BUklUSE1FVElDX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQVJJVEhNRVRJQ19UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FSSVRITUVUSUNfVFJBSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9icm9rZW5fY29tcGlsZXJfc3BlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Jyb2tlbl9jb21waWxlcl9zcGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBhNWVlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Jyb2tlbl9jb21waWxlcl9zcGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0KLS8vICBDb3B5cmlnaHQgMjAwMS0yMDAzIEFsZWtzZXkgR3VydG92b3kuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQ19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyB0aGVzZSBhcmUgbmVlZGVkIHJlZ2FyZGxlc3Mgb2YgTkROQk9PU1RfVFRfTk9fQlJPS0VOX0NPTVBJTEVSX1NQRUMgCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbCAgICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXJfaW1wbCAgIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlX2ltcGwgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLXR5cGVkZWYgaW50IGludm9rZV9ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQ19vdXRzaWRlX2FsbF9uYW1lc3BhY2VzOwotfX0KLSNlbmRpZgotCi0vLyBhZ3VydCwgMjcvanVuLzAzOiBkaXNhYmxlIHRoZSB3b3JrYXJvdW5kIGlmIHVzZXIgZGVmaW5lZCAKLS8vIE5ETkJPT1NUX1RUX05PX0JST0tFTl9DT01QSUxFUl9TUEVDCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgIHx8IGRlZmluZWQoTkROQk9PU1RfVFRfTk9fQlJPS0VOX0NPTVBJTEVSX1NQRUMpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoVCkgLyoqLwotCi0jZWxzZQotCi0vLyBzYW1lIGFzIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfU1BFQzEgbWFjcm8sIGV4Y2VwdCB0aGF0IGl0Ci0vLyBuZXZlciBnZXRzICN1bmRlZi1pbmVkCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CUk9LRU5fVFlQRV9UUkFJVF9TUEVDMSh0cmFpdCxzcGVjLHJlc3VsdCkgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQjI19pbXBsPHNwZWM+IFwKLXsgXAotICAgIHR5cGVkZWYgcmVzdWx0IHR5cGU7IFwKLX07IFwKLS8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0NPTlNUX1ZPTEFUSUxFX1JBTksxX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CUk9LRU5fVFlQRV9UUkFJVF9TUEVDMShyZW1vdmVfY29uc3QsVCBjb25zdCxUKSAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CUk9LRU5fVFlQRV9UUkFJVF9TUEVDMShyZW1vdmVfY29uc3QsVCBjb25zdCB2b2xhdGlsZSxUIHZvbGF0aWxlKSAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CUk9LRU5fVFlQRV9UUkFJVF9TUEVDMShyZW1vdmVfdm9sYXRpbGUsVCB2b2xhdGlsZSxUKSAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CUk9LRU5fVFlQRV9UUkFJVF9TUEVDMShyZW1vdmVfdm9sYXRpbGUsVCBjb25zdCB2b2xhdGlsZSxUIGNvbnN0KSAgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX1BUUl9SRUZfUkFOS18xX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CUk9LRU5fVFlQRV9UUkFJVF9TUEVDMShyZW1vdmVfcG9pbnRlcixUKixUKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CUk9LRU5fVFlQRV9UUkFJVF9TUEVDMShyZW1vdmVfcG9pbnRlcixUKmNvbnN0LFQpICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CUk9LRU5fVFlQRV9UUkFJVF9TUEVDMShyZW1vdmVfcG9pbnRlcixUKnZvbGF0aWxlLFQpICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CUk9LRU5fVFlQRV9UUkFJVF9TUEVDMShyZW1vdmVfcG9pbnRlcixUKmNvbnN0IHZvbGF0aWxlLFQpICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CUk9LRU5fVFlQRV9UUkFJVF9TUEVDMShyZW1vdmVfcmVmZXJlbmNlLFQmLFQpICAgICAgICAgICAgICAgICAgICAgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX1BUUl9SRUZfUkFOS18yX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfUFRSX1JFRl9SQU5LXzFfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfUFRSX1JFRl9SQU5LXzFfU1BFQyhUIGNvbnN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfUFRSX1JFRl9SQU5LXzFfU1BFQyhUIHZvbGF0aWxlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfUFRSX1JFRl9SQU5LXzFfU1BFQyhUIGNvbnN0IHZvbGF0aWxlKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzFfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfUFRSX1JFRl9SQU5LXzJfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQ09OU1RfVk9MQVRJTEVfUkFOSzFfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfUkVNT1ZFX0FMTF9SQU5LXzJfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMV9TUEVDKFQqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMV9TUEVDKFQgY29uc3QqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMV9TUEVDKFQgdm9sYXRpbGUqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMV9TUEVDKFQgY29uc3Qgdm9sYXRpbGUqKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgaW52b2tlX05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX291dHNpZGVfYWxsX25hbWVzcGFjZXMgICAgICAgICAgICAgXAotICAgICAgcGxlYXNlX2ludm9rZV9ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQ19vdXRzaWRlX2FsbF9uYW1lc3BhY2VzOyAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMV9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMl9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMl9TUEVDKFQqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMl9TUEVDKFQgY29uc3QqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMl9TUEVDKFQgdm9sYXRpbGUqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMl9TUEVDKFQgY29uc3Qgdm9sYXRpbGUqKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIC8qKi8KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoYm9vbCkKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKGNoYXIpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyh3Y2hhcl90KQotI2VuZGlmCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhzaWduZWQgY2hhcikKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHVuc2lnbmVkIGNoYXIpCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhzaWduZWQgc2hvcnQpCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyh1bnNpZ25lZCBzaG9ydCkKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHNpZ25lZCBpbnQpCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyh1bnNpZ25lZCBpbnQpCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhzaWduZWQgbG9uZykKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHVuc2lnbmVkIGxvbmcpCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhmbG9hdCkKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKGRvdWJsZSkKLS8vTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMobG9uZyBkb3VibGUpCi0KLS8vIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci0jZGVmaW5lIE5ETkJPT1NUX0JST0tFTl9DT01QSUxFUl9UWVBFX1RSQUlUU19TUEVDSUFMSVpBVElPTihUKSBcCi0gICAgTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoVCkgXAotLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbW1vbl90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29tbW9uX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzJjMzRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29tbW9uX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLS8vICBjb21tb25fdHlwZS5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgMjAwOCBIb3dhcmQgSGlubmFudAotLy8gIENvcHlyaWdodCAyMDA4IEJlbWFuIERhd2VzCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0NPTU1PTl9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19DT01NT05fVFlQRV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAhZGVmaW5lZChORE5CT09TVF9DT01NT05fVFlQRV9ET05UX1VTRV9UWVBFT0YpCi0jICBkZWZpbmUgTkROQk9PU1RfQ09NTU9OX1RZUEVfRE9OVF9VU0VfVFlQRU9GCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX0RPTlRfVVNFX1RZUEVPRikKLSMgIGRlZmluZSBORE5CT09TVF9DT01NT05fVFlQRV9ET05UX1VTRV9UWVBFT0YKLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9DT01NT05fVFlQRV9BUklUWSkKLSNkZWZpbmUgTkROQk9PU1RfQ09NTU9OX1RZUEVfQVJJVFkgMwotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfQ09NTU9OX1RZUEVfRE9OVF9VU0VfVFlQRU9GKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi90eXBlb2YuaHBwPiAgIC8vIGJvb3N0IHdvbmRlcnMgbmV2ZXIgY2Vhc2UhCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2RlZmluZSBORE5CT09TVF9DT01NT05fVFlQRV9TVEFUSUNfQVNTRVJUKENORCwgTVNHLCBUWVBFUykgc3RhdGljX2Fzc2VydChDTkQsTVNHKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9DT01NT05fVFlQRV9VU0VTX01QTF9BU1NFUlQpCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2RlZmluZSBORE5CT09TVF9DT01NT05fVFlQRV9TVEFUSUNfQVNTRVJUKENORCwgTVNHLCBUWVBFUykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfTVBMX0FTU0VSVF9NU0cobmRuYm9vc3Q6Om1wbDo6Ym9vbF88IChDTkQpID46OnR5cGU6OnZhbHVlLCBNU0csIFRZUEVTKQotI2Vsc2UKLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNkZWZpbmUgTkROQk9PU1RfQ09NTU9OX1RZUEVfU1RBVElDX0FTU0VSVChDTkQsIE1TRywgVFlQRVMpIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoQ05EKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUKSB8fCAhZGVmaW5lZChORE5CT09TVF9DT01NT05fVFlQRV9VU0VTX01QTF9BU1NFUlQpCi0jZGVmaW5lIE5ETkJPT1NUX0NPTU1PTl9UWVBFX01VU1RfQkVfQV9DT01QTEVfVFlQRSAibXVzdCBiZSBjb21wbGV0ZSB0eXBlIgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX0RPTlRfVVNFX1RZUEVPRikKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY29tbW9uX3R5cGVfaW1wLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9ydmFsdWVfcmVmZXJlbmNlLmhwcD4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgIEMrKzAzIGltcGxlbWVudGF0aW9uIG9mICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgMjAuOS43LjYgT3RoZXIgdHJhbnNmb3JtYXRpb25zIFttZXRhLnRyYW5zLm90aGVyXSAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0dGVuIGJ5IEhvd2FyZCBIaW5uYW50ICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgIEFkYXB0ZWQgZm9yIEJvb3N0IGJ5IEJlbWFuIERhd2VzLCBWaWNlbnRlIEJvdGV0IGFuZCAgSmVmZnJleSBIZWxscnVuZyAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vIHByb3RvdHlwZQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHN0cnVjdCBjb21tb25fdHlwZTsKLSNlbHNlIC8vIG9yIG5vIHNwZWNpYWxpemF0aW9uCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUgPSB2b2lkLCBjbGFzcyBWID0gdm9pZD4KLSAgICBzdHJ1Y3QgY29tbW9uX3R5cGUKLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNvbW1vbl90eXBlPHR5cGVuYW1lIGNvbW1vbl90eXBlPFQsIFU+Ojp0eXBlLCBWPjo6dHlwZSB0eXBlOwotICAgIH07Ci0jZW5kaWYKLQotCi0vLyAxIGFyZwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgIHN0cnVjdCBjb21tb25fdHlwZTxUPgotI2Vsc2UKLSAgICBzdHJ1Y3QgY29tbW9uX3R5cGU8VCwgdm9pZCwgdm9pZD4KLQotI2VuZGlmCi0gICAgewotICAgICAgICBORE5CT09TVF9DT01NT05fVFlQRV9TVEFUSUNfQVNTRVJUKHNpemVvZihUKSA+IDAsIE5ETkJPT1NUX0NPTU1PTl9UWVBFX01VU1RfQkVfQV9DT01QTEVfVFlQRSwgKFQpKTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci0KLS8vIDIgYXJncwotbmFtZXNwYWNlIHR5cGVfdHJhaXRzX2RldGFpbCB7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgICBzdHJ1Y3QgY29tbW9uX3R5cGVfMgotICAgIHsKLSAgICBwcml2YXRlOgotICAgICAgICBORE5CT09TVF9DT01NT05fVFlQRV9TVEFUSUNfQVNTRVJUKHNpemVvZihUKSA+IDAsIE5ETkJPT1NUX0NPTU1PTl9UWVBFX01VU1RfQkVfQV9DT01QTEVfVFlQRSwgKFQpKTsKLSAgICAgICAgTkROQk9PU1RfQ09NTU9OX1RZUEVfU1RBVElDX0FTU0VSVChzaXplb2YoVSkgPiAwLCBORE5CT09TVF9DT01NT05fVFlQRV9NVVNUX0JFX0FfQ09NUExFX1RZUEUsIChVKSk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlY2x2YWxfYm9vbCgpOyAgLy8gd29ya2Fyb3VuZCBnY2MgYnVnOyBub3QgcmVxdWlyZWQgYnkgc3RkCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxUPjo6dHlwZSBkZWNsdmFsX1QoKTsgIC8vIHdvcmthcm91bmQgZ2NjIGJ1Zzsgbm90IHJlcXVpcmVkIGJ5IHN0ZAotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8VT46OnR5cGUgZGVjbHZhbF9VKCk7ICAvLyB3b3JrYXJvdW5kIGdjYyBidWc7IG5vdCByZXF1aXJlZCBieSBzdGQKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPGJvb2w+Ojp0eXBlIGRlY2x2YWxfYigpOyAgCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRSkKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgZGVjbHR5cGUoZGVjbHZhbDxib29sPigpID8gZGVjbHZhbDxUPigpIDogZGVjbHZhbDxVPigpKSB0eXBlOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9DT01NT05fVFlQRV9ET05UX1VTRV9UWVBFT0YpCi0gICAgcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsX3R5cGVfdHJhaXRzX2NvbW1vbl90eXBlOjpjb21tb25fdHlwZV9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8VT46OnR5cGUKLSAgICAgID46OnR5cGUgdHlwZTsKLSNlbHNlCi0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9UUEwoZGVjbHZhbF9iKCkgPyBkZWNsdmFsX1QoKSA6IGRlY2x2YWxfVSgpKSB0eXBlOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSAzICYmIChfX0dOVUNfTUlOT1JfXyA9PSAyIHx8IF9fR05VQ19NSU5PUl9fID09IDMpCi0gICAgcHVibGljOgotICAgICAgICB2b2lkIHB1YmxpY19kdW1teV9mdW5jdGlvbl9qdXN0X3RvX3NpbGVuY2Vfd2FybmluZygpOwotI2VuZGlmCi0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0cnVjdCBjb21tb25fdHlwZV8yPFQsIFQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgICBzdHJ1Y3QgY29tbW9uX3R5cGU8VCwgVT4KLSNlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICAgc3RydWN0IGNvbW1vbl90eXBlPFQsIFUsIHZvaWQ+Ci0jZW5kaWYKLSAgICA6IHB1YmxpYyB0eXBlX3RyYWl0c19kZXRhaWw6OmNvbW1vbl90eXBlXzI8VCxVPgotICAgIHsgfTsKLQotCi0vLyAzIG9yIG1vcmUgYXJncwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZS4uLiBWPgotICAgIHN0cnVjdCBjb21tb25fdHlwZTxULCBVLCBWLi4uPiB7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNvbW1vbl90eXBlPHR5cGVuYW1lIGNvbW1vbl90eXBlPFQsIFU+Ojp0eXBlLCBWLi4uPjo6dHlwZSB0eXBlOwotICAgIH07Ci0jZW5kaWYKLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0NPTU1PTl9UWVBFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb21wb3NpdGVfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29tcG9zaXRlX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjNWI1ZTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb21wb3NpdGVfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgZGVmaW5lcyB0cmFpdHMgY2xhc3NlcyBmb3IgY29tcG9zaXRlIHR5cGVzOgotLy8gIGlzX2FycmF5LCBpc19wb2ludGVyLCBpc19yZWZlcmVuY2UsIGlzX21lbWJlcl9wb2ludGVyLCBpc19lbnVtLCBpc191bmlvbi4KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQ09NUE9TSVRFX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQ09NUE9TSVRFX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5pb24uaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQ09NUE9TSVRFX1RSQUlUU19IUFBfSU5DTFVERUQKLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmRpdGlvbmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZGl0aW9uYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWE5Y2UwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZGl0aW9uYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAxMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0NPTkRJVElPTkFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9DT05ESVRJT05BTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXRlbXBsYXRlIDxib29sIGIsIGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgY29uZGl0aW9uYWwgOiBwdWJsaWMgbXBsOjppZl9jPGIsIFQsIFU+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9DT05ESVRJT05BTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVmZmVlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0NPTkZJR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQ09ORklHX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vCi0vLyB3aGVuZXZlciB3ZSBoYXZlIGEgY29udmVyc2lvbiBmdW5jdGlvbiB3aXRoIGVsbGlwc2VzCi0vLyBpdCBuZWVkcyB0byBiZSBkZWNsYXJlZCBfX2NkZWNsIHRvIHN1cHByZXNzIGNvbXBpbGVyCi0vLyB3YXJuaW5ncyBmcm9tIE1TIGFuZCBCb3JsYW5kIGNvbXBpbGVycyAodGhpcyAqbXVzdCoKLS8vIGFwcGVhciBiZWZvcmUgd2UgaW5jbHVkZSBpc19zYW1lLmhwcCBiZWxvdyk6Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCAoZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpKQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9ERUNMIF9fY2RlY2wKLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0RFQ0wgLyoqLwotI2VuZGlmCi0KLSMgaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPCAweDMwMDApICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDEpICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8ICFkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCA8IDYwMCApICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDVBMCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IGRlZmluZWQoX19naHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE1QV19DUExVUywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODkwKSkgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MCkpKSAgICAgICBcCi0gICAgJiYgZGVmaW5lZChORE5CT09TVF9OT19JU19BQlNUUkFDVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9OT19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OIDEKLQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTgotIyBkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04gMQotI2VuZGlmCi0KLS8vCi0vLyBEZWZpbmUgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HIAotLy8gd2hlbiB3ZSBjYW4ndCB0ZXN0IGZvciBmdW5jdGlvbiB0eXBlcyB3aXRoIGVsaXBzaXM6Ci0vLwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykKLSMgIGRlZmluZSBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLSNlbmRpZgotCi0vLwotLy8gZGVmaW5lIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi0vLyB3aGVuIHdlIHdhbnQgdG8gdGVzdCBfX3N0ZGNhbGwgZXRjIGZ1bmN0aW9uIHR5cGVzIHdpdGggaXNfZnVuY3Rpb24gZXRjCi0vLyAoTm90ZSwgZG9lcyBub3Qgd29yayB3aXRoIEJvcmxhbmQsIGV2ZW4gdGhvdWdoIGl0IGRvZXMgc3VwcG9ydCBfX3N0ZGNhbGwgZXRjKToKLS8vCi0jaWYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSMgIGRlZmluZSBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotI2VuZGlmCi0KLS8vCi0vLyBkZWZpbmUgTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUCi0vLyBpZiB0ZXN0cyBmb3IgY3YtcXVhbGlmaWVkIG1lbWJlciBmdW5jdGlvbnMgZG9uJ3QgCi0vLyB3b3JrIGluIGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyCi0vLwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPCAweDMwMDApIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgPD0gNjAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9DT05GSUdfSFBQX0lOQ0xVREVECi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb252ZXJzaW9uX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbnZlcnNpb25fdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNiYjE2NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbnZlcnNpb25fdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDAgSm9obiBNYWRkb2NrIChqb2huQGpvaG5tYWRkb2NrLmNvLnVrKQotLy8gQ29weXJpZ2h0IDIwMDAgSmVyZW15IFNpZWsgKGpzaWVrQGxzYy5uZC5lZHUpCi0vLyBDb3B5cmlnaHQgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9DT05WRVJTSU9OX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQ09OVkVSU0lPTl9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9DT05WRVJTSU9OX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY3ZfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY3ZfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZiYTE0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2N2X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0vLwotLy8gIGRlZmluZXMgdHJhaXRzIGNsYXNzZXMgZm9yIGN2LXF1YWxpZmllZCB0eXBlczoKLS8vICBpc19jb25zdCwgaXNfdm9sYXRpbGUsIHJlbW92ZV9jb25zdCwgcmVtb3ZlX3ZvbGF0aWxlLCByZW1vdmVfY3YuCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQ1ZfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9DVl9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF92b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQ1ZfVFJBSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZWNheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RlY2F5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U3MzZkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RlY2F5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAmIFRob3JzdGVuIE90dG9zZW4gMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERUNBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVDQVlfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IGRlY2F5Ci0gICAgewotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlIFR5OwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1wbDo6ZXZhbF9pZjwgCi0gICAgICAgICAgICBpc19hcnJheTxUeT4sCi0gICAgICAgICAgICBtcGw6OmlkZW50aXR5PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX2JvdW5kczxUeT46OnR5cGUqPiwKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbXBsOjpldmFsX2lmPCAKLSAgICAgICAgICAgICAgICBpc19mdW5jdGlvbjxUeT4sCi0gICAgICAgICAgICAgICAgYWRkX3BvaW50ZXI8VHk+LAotICAgICAgICAgICAgICAgIG1wbDo6aWRlbnRpdHk8VHk+Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotICAgIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVDQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ODg0N2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk2ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gJFNvdXJjZSQKLS8vICREYXRlOiAyMDExLTEwLTA5IDE1OjI4OjMzIC0wNzAwIChTdW4sIDA5IE9jdCAyMDExKSAkCi0vLyAkUmV2aXNpb246IDc0ODY1ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLwotLy8gVW5mb3J0dW5hdGVseSBzb21lIGxpYnJhcmllcyBoYXZlIHN0YXJ0ZWQgdXNpbmcgdGhpcyBoZWFkZXIgd2l0aG91dAotLy8gY2xlYW5pbmcgdXAgYWZ0ZXJ3YXJkczogc28gd2UnZCBiZXR0ZXIgdW5kZWYgdGhlIG1hY3JvcyBqdXN0IGluIGNhc2UgCi0vLyB0aGV5J3ZlIGJlZW4gZGVmaW5lZCBhbHJlYWR5Li4uLgotLy8KLSNpZmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTAotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8xCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAoX19TVU5QUk9fQ0MgPCAweDU3MCkKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLEM+IHR5cGU7IFwKLSAgICBlbnVtIHsgdmFsdWUgPSB0eXBlOjp2YWx1ZSB9OyBcCi0gICAgLyoqLwotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBORE5CT09TVF9NU1ZDIDwgMTMwMAotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCxDPiBiYXNlXzsgXAotICAgIHVzaW5nIGJhc2VfOjp2YWx1ZTsgXAotICAgIC8qKi8KLQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTAotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIC8qKi8KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgOiBwdWJsaWMgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCxDPgotI2VuZGlmIAotCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMSh0cmFpdCxULEMpIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRyYWl0IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSx0cmFpdCwoVCkpIFwKLX07IFwKLVwKLU5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsdHJhaXQpIFwKLS8qKi8KLQotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIodHJhaXQsVDEsVDIsQykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCB0cmFpdCBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsdHJhaXQsKFQxLFQyKSkgXAotfTsgXAotXAotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMix0cmFpdCkgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjModHJhaXQsVDEsVDIsVDMsQykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgdHJhaXQgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLHRyYWl0LChUMSxUMixUMykpIFwKLX07IFwKLVwKLU5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsdHJhaXQpIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMSh0cmFpdCxzcCxDKSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDwgc3AgPiBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMSx0cmFpdCwoc3ApKSBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzIodHJhaXQsc3AxLHNwMixDKSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDwgc3AxLHNwMiA+IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLHRyYWl0LChzcDEsc3AyKSkgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEodHJhaXQsc3AsQykgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQjI19pbXBsPCBzcCA+IFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoQykpOyBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMih0cmFpdCxzcDEsc3AyLEMpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0IyNfaW1wbDwgc3AxLHNwMiA+IFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoQykpOyBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHBhcmFtLHRyYWl0LHNwLEMpIFwKLXRlbXBsYXRlPCBwYXJhbSA+IHN0cnVjdCB0cmFpdDwgc3AgPiBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIocGFyYW0xLHBhcmFtMix0cmFpdCxzcCxDKSBcCi10ZW1wbGF0ZTwgcGFyYW0xLCBwYXJhbTIgPiBzdHJ1Y3QgdHJhaXQ8IHNwID4gXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8xKHBhcmFtLHRyYWl0LHNwMSxzcDIsQykgXAotdGVtcGxhdGU8IHBhcmFtID4gc3RydWN0IHRyYWl0PCBzcDEsc3AyID4gXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsdHJhaXQsKHNwMSxzcDIpKSBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHBhcmFtMSxwYXJhbTIsdHJhaXQsc3AxLHNwMixDKSBcCi10ZW1wbGF0ZTwgcGFyYW0xLCBwYXJhbTIgPiBzdHJ1Y3QgdHJhaXQ8IHNwMSxzcDIgPiBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMShwYXJhbSx0cmFpdCxzcDEsc3AyLEMpIFwKLXRlbXBsYXRlPCBwYXJhbSA+IHN0cnVjdCB0cmFpdCMjX2ltcGw8IHNwMSxzcDIgPiBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKEMpKTsgXAotfTsgXAotLyoqLwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUwotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMSh0cmFpdCxzcCx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKHRyYWl0LHNwLHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEodHJhaXQsc3AgY29uc3QsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMSh0cmFpdCxzcCB2b2xhdGlsZSx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKHRyYWl0LHNwIGNvbnN0IHZvbGF0aWxlLHZhbHVlKSBcCi0gICAgLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEodHJhaXQsc3AsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMSh0cmFpdCxzcCx2YWx1ZSkgXAotICAgIC8qKi8KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRiZDIyMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gJFNvdXJjZSQKLS8vICREYXRlOiAyMDExLTEwLTA5IDE1OjI4OjMzIC0wNzAwIChTdW4sIDA5IE9jdCAyMDExKSAkCi0vLyAkUmV2aXNpb246IDc0ODY1ICQKLQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0wKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjMKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMyCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jb21tb25fdHlwZV9pbXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY29tbW9uX3R5cGVfaW1wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBkZWRmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jb21tb25fdHlwZV9pbXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY29tbW9uX3R5cGVfaW1wLmhwcAotICoKLSAqIENvcHlyaWdodCAyMDEwLCBKZWZmcmV5IEhlbGxydW5nLgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAgKFNlZSBhY2NvbXBhbnlpbmcKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIHN0cnVjdCBuZG5ib29zdDo6Y29tbW9uX3R5cGU8VCxVPgotICoKLSAqIGNvbW1vbl90eXBlPFQsVT46OnR5cGUgaXMgdGhlIHR5cGUgb2YgdGhlIGV4cHJlc3Npb24KLSAqICAgICBiKCkgPyB4KCkgOiB5KCkKLSAqIHdoZXJlIGIoKSByZXR1cm5zIGEgYm9vbCwgeCgpIGhhcyByZXR1cm4gdHlwZSBULCBhbmQgeSgpIGhhcyByZXR1cm4gdHlwZSBVLgotICogU2VlCi0gKiAgICAgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMjEvZG9jcy9wYXBlcnMvMjAwOC9uMjY2MS5odG0jY29tbW9uX3R5cGUKLSAqCi0gKiBOb3RlIHRoYXQgdGhpcyBldmFsdWF0ZXMgdG8gdm9pZCBpZiBvbmUgb3IgYm90aCBvZiBUIGFuZCBVIGlzIHZvaWQuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0RFVEFJTF9DT01NT05fVFlQRV9JTVBfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0RFVEFJTF9DT01NT05fVFlQRV9JTVBfSFBQCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY29udGFpbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jb3B5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZGVyZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnNlcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3NpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV91bnNpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbF90eXBlX3RyYWl0c19jb21tb25fdHlwZQotewotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogc3RydWN0IHByb3BhZ2F0ZV9jdjwgRnJvbSwgVG8gPgotICoKLSAqIFRoaXMgbWV0YWZ1bmN0aW9uIHByb3BhZ2F0ZXMgY3YtcXVhbGlmaWVycyBvbiB0eXBlIEZyb20gdG8gdHlwZSBUby4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlPCBjbGFzcyBGcm9tLCBjbGFzcyBUbyA+Ci1zdHJ1Y3QgcHJvcGFnYXRlX2N2Ci17IHR5cGVkZWYgVG8gdHlwZTsgfTsKLXRlbXBsYXRlPCBjbGFzcyBGcm9tLCBjbGFzcyBUbyA+Ci1zdHJ1Y3QgcHJvcGFnYXRlX2N2PCBjb25zdCBGcm9tLCBUbyA+Ci17IHR5cGVkZWYgVG8gY29uc3QgdHlwZTsgfTsKLXRlbXBsYXRlPCBjbGFzcyBGcm9tLCBjbGFzcyBUbyA+Ci1zdHJ1Y3QgcHJvcGFnYXRlX2N2PCB2b2xhdGlsZSBGcm9tLCBUbyA+Ci17IHR5cGVkZWYgVG8gdm9sYXRpbGUgdHlwZTsgfTsKLXRlbXBsYXRlPCBjbGFzcyBGcm9tLCBjbGFzcyBUbyA+Ci1zdHJ1Y3QgcHJvcGFnYXRlX2N2PCBjb25zdCB2b2xhdGlsZSBGcm9tLCBUbyA+Ci17IHR5cGVkZWYgVG8gY29uc3Qgdm9sYXRpbGUgdHlwZTsgfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIHN0cnVjdCBpc19pbnRlZ3JhbF9vcl9lbnVtPFQ+Ci0gKgotICogVGhpcyBtZXRhZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBUIGlzIGFuIGludGVncmFsIHR5cGUgd2hpY2ggY2FuIGJlIG1hZGUKLSAqIHNpZ25lZCBvciB1bnNpZ25lZC4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLXN0cnVjdCBpc19pbnRlZ3JhbF9vcl9lbnVtCi0gICAgOiBwdWJsaWMgbXBsOjpvcl88IGlzX2ludGVncmFsPFQ+LCBpc19lbnVtPFQ+ID4KLXsgfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19pbnRlZ3JhbF9vcl9lbnVtPCBib29sID4KLSAgICA6IHB1YmxpYyBmYWxzZV90eXBlCi17IH07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBzdHJ1Y3QgbWFrZV91bnNpZ25lZF9zb2Z0PFQ+Ci0gKiBzdHJ1Y3QgbWFrZV9zaWduZWRfc29mdDxUPgotICoKLSAqIFRoZXNlIG1ldGFmdW5jdGlvbiBhcmUgaWRlbnRpY2FsIHRvIG1ha2VfdW5zaWduZWQgYW5kIG1ha2Vfc2lnbmVkLAotICogcmVzcGVjdGl2ZWx5LCBleGNlcHQgZm9yIHNwZWNpYWwtY2FzaW5nIGJvb2wuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1zdHJ1Y3QgbWFrZV91bnNpZ25lZF9zb2Z0Ci0gICAgOiBwdWJsaWMgbWFrZV91bnNpZ25lZDxUPgoteyB9OwotdGVtcGxhdGU8Pgotc3RydWN0IG1ha2VfdW5zaWduZWRfc29mdDwgYm9vbCA+Ci17IHR5cGVkZWYgYm9vbCB0eXBlOyB9OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1zdHJ1Y3QgbWFrZV9zaWduZWRfc29mdAotICAgIDogcHVibGljIG1ha2Vfc2lnbmVkPFQ+Ci17IH07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFrZV9zaWduZWRfc29mdDwgYm9vbCA+Ci17IHR5cGVkZWYgYm9vbCB0eXBlOyB9OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogc3RydWN0IHNpemVvZl90PE4+Ci0gKiB0eXBlZGVmIC4uLiB5ZXNfdHlwZQotICogdHlwZWRlZiAuLi4gbm9fdHlwZQotICoKLSAqIFRoZXNlIHR5cGVzIGFyZSBpbnRlZ3JhbCBwbGF5ZXJzIGluIHRoZSB1c2Ugb2YgdGhlICJzaXplb2YgdHJpY2siLCBpLmUuLCB3ZQotICogY2FuIGRpc3Rpbmd1aXNoIG92ZXJsb2FkIHNlbGVjdGlvbiBieSBpbnNwZWN0aW5nIHRoZSBzaXplIG9mIHRoZSByZXR1cm4gdHlwZQotICogb2YgdGhlIG92ZXJsb2FkLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IHN0ZDo6c2l6ZV90IE4gPiBzdHJ1Y3Qgc2l6ZW9mX3QgeyBjaGFyIF9kdW1teVtOXTsgfTsKLXR5cGVkZWYgc2l6ZW9mX3Q8MT4geWVzX3R5cGU7Ci10eXBlZGVmIHNpemVvZl90PDI+IG5vX3R5cGU7Ci1ORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OKCBzaXplb2YoIHllc190eXBlICksID09LCAxICk7Ci1ORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OKCBzaXplb2YoIG5vX3R5cGUgKSwgPT0sIDIgKTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIHJ2YWx1ZV90ZXN0KFQmKSAtPiBub190eXBlCi0gKiBydmFsdWVfdGVzdCguLi4pIC0+IHllc190eXBlCi0gKgotICogVGhlc2Ugb3ZlcmxvYWRzIGFyZSB1c2VkIHRvIGRldGVybWluZSB0aGUgcnZhbHVlLW5lc3Mgb2YgYW4gZXhwcmVzc2lvbi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gbm9fdHlwZSBydmFsdWVfdGVzdChUJik7Ci15ZXNfdHlwZSBydmFsdWVfdGVzdCguLi4pOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogc3RydWN0IGNvbnZlcnNpb25fdGVzdF9vdmVybG9hZHM8IFNlcXVlbmNlID4KLSAqCi0gKiBUaGlzIHN0cnVjdCBoYXMgbXVsdGlwbGUgb3ZlcmxvYWRzIG9mIHRoZSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIGFwcGx5LCBlYWNoCi0gKiBvbmUgdGFraW5nIGEgc2luZ2xlIHBhcmFtZXRlciBvZiBhIHR5cGUgd2l0aGluIHRoZSBCb29zdC5NUEwgc2VxdWVuY2UKLSAqIFNlcXVlbmNlLiAgRWFjaCBzdWNoIGFwcGx5IG92ZXJsb2FkIGhhcyBhIHJldHVybiB0eXBlIHdpdGggc2l6ZW9mIGVxdWFsIHRvCi0gKiBvbmUgcGx1cyB0aGUgaW5kZXggb2YgdGhlIHBhcmFtZXRlciB0eXBlIHdpdGhpbiBTZXF1ZW5jZS4gIFRodXMsIHdlIGNhbgotICogZGVkdWNlIHRoZSB0eXBlIFQgb2YgYW4gZXhwcmVzc2lvbiBhcyBsb25nIGFzIHdlIGNhbiBnZW5lcmF0ZSBhIGZpbml0ZSBzZXQgb2YKLSAqIGNhbmRpZGF0ZSB0eXBlcyBjb250YWluaW5nIFQgdmlhIHRoZXNlIGFwcGx5IG92ZXJsb2FkcyBhbmQgdGhlICJzaXplb2YKLSAqIHRyaWNrIi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlPCBjbGFzcyBGaXJzdCwgY2xhc3MgTGFzdCwgc3RkOjpzaXplX3QgSW5kZXggPgotc3RydWN0IGNvbnZlcnNpb25fdGVzdF9vdmVybG9hZHNfaXRlcmF0ZQotICAgIDogcHVibGljIGNvbnZlcnNpb25fdGVzdF9vdmVybG9hZHNfaXRlcmF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8IEZpcnN0ID46OnR5cGUsIExhc3QsIEluZGV4ICsgMQotICAgICAgPgotewotICAgIHVzaW5nIGNvbnZlcnNpb25fdGVzdF9vdmVybG9hZHNfaXRlcmF0ZTwKLSAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PCBGaXJzdCA+Ojp0eXBlLCBMYXN0LCBJbmRleCArIDEKLSAgICA+OjphcHBseTsKLSAgICBzdGF0aWMgc2l6ZW9mX3Q8IEluZGV4ICsgMSA+Ci0gICAgYXBwbHkodHlwZW5hbWUgbXBsOjpkZXJlZjwgRmlyc3QgPjo6dHlwZSk7Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgTGFzdCwgc3RkOjpzaXplX3QgSW5kZXggPgotc3RydWN0IGNvbnZlcnNpb25fdGVzdF9vdmVybG9hZHNfaXRlcmF0ZTwgTGFzdCwgTGFzdCwgSW5kZXggPgoteyBzdGF0aWMgc2l6ZW9mX3Q8IEluZGV4ICsgMSA+IGFwcGx5KC4uLik7IH07Ci0KLXRlbXBsYXRlPCBjbGFzcyBTZXF1ZW5jZSA+Ci1zdHJ1Y3QgY29udmVyc2lvbl90ZXN0X292ZXJsb2FkcwotICAgIDogcHVibGljIGNvbnZlcnNpb25fdGVzdF9vdmVybG9hZHNfaXRlcmF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6OmJlZ2luPCBTZXF1ZW5jZSA+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6ZW5kPCBTZXF1ZW5jZSA+Ojp0eXBlLAotICAgICAgICAgIDAKLSAgICAgID4KLXsgfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIHN0cnVjdCBzZWxlY3Q8IFNlcXVlbmNlLCBJbmRleCA+Ci0gKgotICogc2VsZWN0IGlzIHN5bm9ueW1vdXMgd2l0aCBtcGw6OmF0X2MgdW5sZXNzIEluZGV4IGVxdWFscyB0aGUgc2l6ZSBvZiB0aGUKLSAqIEJvb3N0Lk1QTCBTZXF1ZW5jZSwgaW4gd2hpY2ggY2FzZSB0aGlzIGV2YWx1YXRlcyB0byB2b2lkLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8Ci0gICAgY2xhc3MgU2VxdWVuY2UsIGludCBJbmRleCwKLSAgICBpbnQgTiA9IG1wbDo6c2l6ZTwgU2VxdWVuY2UgPjo6dmFsdWUKLT4KLXN0cnVjdCBzZWxlY3QKLSAgICA6IHB1YmxpYyBtcGw6OmF0X2M8IFNlcXVlbmNlLCBJbmRleCA+Ci17IH07Ci10ZW1wbGF0ZTwgY2xhc3MgU2VxdWVuY2UsIGludCBOID4KLXN0cnVjdCBzZWxlY3Q8IFNlcXVlbmNlLCBOLCBOID4KLXsgdHlwZWRlZiB2b2lkIHR5cGU7IH07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBjbGFzcyBkZWR1Y2VfY29tbW9uX3R5cGU8IFQsIFUsIE5vbWluYWxDYW5kaWRhdGVzID4KLSAqIHN0cnVjdCBub21pbmFsX2NhbmRpZGF0ZXM8VCxVPgotICogc3RydWN0IGNvbW1vbl90eXBlX2Rpc3BhdGNoX29uX3J2YWx1ZW5lc3M8VCxVPgotICogc3RydWN0IGNvbW1vbl90eXBlX2ltcGw8VCxVPgotICoKLSAqIFRoZXNlIGNsYXNzZXMgYW5kIHN0cnVjdHMgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWhpbmQgY29tbW9uX3R5cGUsIHdoaWNoIGdvZXMKLSAqIHJvdWdobHkgYXMgZm9sbG93cy4gIExldCBDIGJlIHRoZSB0eXBlIG9mIHRoZSBjb25kaXRpb25hbCBleHByZXNzaW9uCi0gKiAgICAgZGVjbHZhbDwgYm9vbCA+KCkgPyBkZWNsdmFsPFQ+KCkgOiBkZWNsdmFsPFU+KCkKLSAqIGlmIEMgaXMgYW4gcnZhbHVlLCB0aGVuOgotICogICAgIGxldCBUJyBhbmQgVScgYmUgVCBhbmQgVSBzdHJpcHBlZCBvZiByZWZlcmVuY2UtIGFuZCBjdi1xdWFsaWZpZXJzCi0gKiAgICAgaWYgVCcgYW5kIFUnIGFyZSBwb2ludGVyIHR5cGVzLCBzYXksIFQnID0gViogYW5kIFUnID0gVyosIHRoZW46Ci0gKiAgICAgICAgIGRlZmluZSB0aGUgc2V0IG9mIE5vbWluYWxDYW5kaWRhdGVzIHRvIGJlCi0gKiAgICAgICAgICAgICB7IFYqLCBXKiwgVicqLCBXJyogfQotICogICAgICAgICAgIHdoZXJlIFYnIGlzIFYgd2l0aCB3aGF0ZXZlciBjdi1xdWFsaWZpZXJzIGFyZSBvbiBXLCBhbmQgVycgaXMgVwotICogICAgICAgICAgIHdpdGggd2hhdGV2ZXIgY3YtcXVhbGlmaWVycyBhcmUgb24gVgotICogICAgIGVsc2UgaWYgVCcgYW5kIFUnIGFyZSBib3RoIGludGVncmFsIG9yIGVudW0gdHlwZXMsIHRoZW46Ci0gKiAgICAgICAgIGRlZmluZSB0aGUgc2V0IG9mIE5vbWluYWxDYW5kaWRhdGVzIHRvIGJlCi0gKiAgICAgICAgICAgICB7Ci0gKiAgICAgICAgICAgICAgICAgdW5zaWduZWRfc29mdChUJyksCi0gKiAgICAgICAgICAgICAgICAgdW5zaWduZWRfc29mdChVJyksCi0gKiAgICAgICAgICAgICAgICAgc2lnbmVkX3NvZnQoVCcpLAotICogICAgICAgICAgICAgICAgIHNpZ25lZF9zb2Z0KFUnKSwKLSAqICAgICAgICAgICAgICAgICBUJywKLSAqICAgICAgICAgICAgICAgICBVJywKLSAqICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQsCi0gKiAgICAgICAgICAgICAgICAgaW50Ci0gKiAgICAgICAgICAgICB9Ci0gKiAgICAgICAgICAgd2hlcmUgdW5zaWduZWRfc29mdChYKSBpcyBtYWtlX3Vuc2lnbmVkX3NvZnQ8WD46OnR5cGUgYW5kCi0gKiAgICAgICAgICAgc2lnbmVkX3NvZnQoWCkgaXMgbWFrZV9zaWduZWRfc29mdDxYPjo6dHlwZSAodGhlc2UgYXJlIGFsbAotICogICAgICAgICAgIGdlbmVyYWxseSBuZWNlc3NhcnkgdG8gY292ZXIgdGhlIHZhcmlvdXMgaW50ZWdyYWwgcHJvbW90aW9uIGNhc2VzKQotICogICAgIGVsc2UKLSAqICAgICAgICAgZGVmaW5lIHRoZSBzZXQgb2YgTm9taW5hbENhbmRpZGF0ZXMgdG8gYmUKLSAqICAgICAgICAgICAgIHsgVCcsIFUnIH0KLSAqIGVsc2UKLSAqICAgICBsZXQgViBhbmQgVyBiZSBUIGFuZCBVIHN0cmlwcGVkIG9mIHJlZmVyZW5jZS1xdWFsaWZpZXJzCi0gKiAgICAgZGVmaW5lIHRoZSBzZXQgb2YgTm9taW5hbENhbmRpZGF0ZXMgdG8gYmUKLSAqICAgICAgICAgeyBWJiwgVyYsIFYnJiwgVycmIH0KLSAqICAgICB3aGVyZSBWJyBpcyBWIHdpdGggd2hhdGV2ZXIgY3YtcXVhbGlmaWVycyBhcmUgb24gVywgYW5kIFcnIGlzIFcgd2l0aAotICogICAgICAgd2hhdGV2ZXIgY3YtcXVhbGlmaWVycyBhcmUgb24gVgotICogZGVmaW5lIHRoZSBzZXQgb2YgQ2FuZGlkYXRlcyB0byBiZSBlcXVhbCB0byB0aGUgc2V0IG9mIE5vbWluYWxDYW5kaWRhdGVzIHdpdGgKLSAqIGR1cGxpY2F0ZXMgcmVtb3ZlZCwgYW5kIHVzZSB0aGlzIHNldCBvZiBDYW5kaWRhdGVzIHRvIGRldGVybWluZSBDIHVzaW5nIHRoZQotICogY29udmVyc2lvbl90ZXN0X292ZXJsb2FkcyBzdHJ1Y3QKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBOb21pbmFsQ2FuZGlkYXRlcyA+Ci1jbGFzcyBkZWR1Y2VfY29tbW9uX3R5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6Y29weTwKLSAgICAgICAgTm9taW5hbENhbmRpZGF0ZXMsCi0gICAgICAgIG1wbDo6aW5zZXJ0ZXI8Ci0gICAgICAgICAgICBtcGw6OnZlY3RvcjA8PiwKLSAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIG1wbDo6Y29udGFpbnM8IG1wbDo6XzEsIG1wbDo6XzIgPiwKLSAgICAgICAgICAgICAgICBtcGw6Ol8xLAotICAgICAgICAgICAgICAgIG1wbDo6cHVzaF9iYWNrPCBtcGw6Ol8xLCBtcGw6Ol8yID4KLSAgICAgICAgICAgID4KLSAgICAgICAgPgotICAgID46OnR5cGUgY2FuZGlkYXRlX3R5cGVzOwotICAgIHN0YXRpYyBjb25zdCBpbnQgYmVzdF9jYW5kaWRhdGVfaW5kZXggPQotICAgICAgICBzaXplb2YoIGNvbnZlcnNpb25fdGVzdF9vdmVybG9hZHM8IGNhbmRpZGF0ZV90eXBlcyA+OjphcHBseSgKLSAgICAgICAgICAgIGRlY2x2YWw8IGJvb2wgPigpID8gZGVjbHZhbDxUPigpIDogZGVjbHZhbDxVPigpCi0gICAgICAgICkgKSAtIDE7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Q8IGNhbmRpZGF0ZV90eXBlcywgYmVzdF9jYW5kaWRhdGVfaW5kZXggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgY2xhc3MgVCwgY2xhc3MgVSwKLSAgICBjbGFzcyBWID0gdHlwZW5hbWUgcmVtb3ZlX2N2PCB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlID46OnR5cGUsCi0gICAgY2xhc3MgVyA9IHR5cGVuYW1lIHJlbW92ZV9jdjwgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSA+Ojp0eXBlLAotICAgIGJvb2wgPSBpc19pbnRlZ3JhbF9vcl9lbnVtPFY+Ojp2YWx1ZSAmJiBpc19pbnRlZ3JhbF9vcl9lbnVtPFc+Ojp2YWx1ZQotPgotc3RydWN0IG5vbWluYWxfY2FuZGlkYXRlcwoteyB0eXBlZGVmIG1wbDo6dmVjdG9yMjxWLFc+IHR5cGU7IH07Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWLCBjbGFzcyBXID4KLXN0cnVjdCBub21pbmFsX2NhbmRpZGF0ZXM8IFQsIFUsIFYsIFcsIHRydWUgPgotewotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6dmVjdG9yODwKLSAgICAgICAgdHlwZW5hbWUgbWFrZV91bnNpZ25lZF9zb2Z0PFY+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkX3NvZnQ8Vz46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIG1ha2Vfc2lnbmVkX3NvZnQ8Vj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIG1ha2Vfc2lnbmVkX3NvZnQ8Vz46OnR5cGUsCi0gICAgICAgIFYsIFcsIHVuc2lnbmVkIGludCwgaW50Ci0gICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFYsIGNsYXNzIFcgPgotc3RydWN0IG5vbWluYWxfY2FuZGlkYXRlczwgVCwgVSwgViosIFcqLCBmYWxzZSA+Ci17Ci0gICAgdHlwZWRlZiBtcGw6OnZlY3RvcjQ8Ci0gICAgICAgIFYqLCBXKiwKLSAgICAgICAgdHlwZW5hbWUgcHJvcGFnYXRlX2N2PFcsVj46OnR5cGUgKiwKLSAgICAgICAgdHlwZW5hbWUgcHJvcGFnYXRlX2N2PFYsVz46OnR5cGUgKgotICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGJvb2wgYj4KLXN0cnVjdCBjb21tb25fdHlwZV9kaXNwYXRjaF9vbl9ydmFsdWVuZXNzCi0gICAgOiBwdWJsaWMgZGVkdWNlX2NvbW1vbl90eXBlPCBULCBVLCB0eXBlbmFtZSBub21pbmFsX2NhbmRpZGF0ZXM8VCxVPjo6dHlwZSA+Ci17IH07Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBVID4KLXN0cnVjdCBjb21tb25fdHlwZV9kaXNwYXRjaF9vbl9ydmFsdWVuZXNzPCBULCBVLCBmYWxzZSA+Ci17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSB1bnJlZmVkX1RfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUgdW5yZWZlZF9VX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZWR1Y2VfY29tbW9uX3R5cGU8Ci0gICAgICAgIFQsIFUsCi0gICAgICAgIG1wbDo6dmVjdG9yNDwKLSAgICAgICAgICAgIHVucmVmZWRfVF90eXBlICYsCi0gICAgICAgICAgICB1bnJlZmVkX1VfdHlwZSAmLAotICAgICAgICAgICAgdHlwZW5hbWUgcHJvcGFnYXRlX2N2PCB1bnJlZmVkX1VfdHlwZSwgdW5yZWZlZF9UX3R5cGUgPjo6dHlwZSAmLAotICAgICAgICAgICAgdHlwZW5hbWUgcHJvcGFnYXRlX2N2PCB1bnJlZmVkX1RfdHlwZSwgdW5yZWZlZF9VX3R5cGUgPjo6dHlwZSAmCi0gICAgICAgID4KLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgVSA+Ci1zdHJ1Y3QgY29tbW9uX3R5cGVfaW1wbAotICAgIDogcHVibGljIGNvbW1vbl90eXBlX2Rpc3BhdGNoX29uX3J2YWx1ZW5lc3M8VCxVLCBzaXplb2YoIDo6bmRuYm9vc3Q6OmRldGFpbF90eXBlX3RyYWl0c19jb21tb25fdHlwZTo6cnZhbHVlX3Rlc3QoCi0gICAgICAgIGRlY2x2YWw8IGJvb2wgPigpID8gZGVjbHZhbDxUPigpIDogZGVjbHZhbDxVPigpICkgKSA9PSBzaXplb2YoIHllc190eXBlICkgPgoteyB9OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBjb21tb25fdHlwZV9pbXBsPCBULCB2b2lkID4geyB0eXBlZGVmIHZvaWQgdHlwZTsgfTsKLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGNvbW1vbl90eXBlX2ltcGw8IHZvaWQsIFQgPiB7IHR5cGVkZWYgdm9pZCB0eXBlOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgY29tbW9uX3R5cGVfaW1wbDwgdm9pZCwgdm9pZCA+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbF90eXBlX3RyYWl0c19jb21tb25fdHlwZQotCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UWVBFX1RSQUlUU19ERVRBSUxfQ09NTU9OX1RZUEVfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2N2X3RyYWl0c19pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2N2X3RyYWl0c19pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU3NGU1Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9DVl9UUkFJVFNfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0NWX1RSQUlUU19JTVBMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0vLyBpbXBsZW1lbnRhdGlvbiBoZWxwZXI6Ci0KLQotI2lmICEoTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXyw9PSAzKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19NSU5PUl9fLCA8PSAyKSkKLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLSNlbHNlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotbmFtZXNwYWNlIGdjYzg1MDMgewotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzX2ltcCB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY3ZfdHJhaXRzX2ltcDxUKj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfY29uc3QgPSBmYWxzZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3ZvbGF0aWxlID0gZmFsc2UpOwotICAgIHR5cGVkZWYgVCB1bnF1YWxpZmllZF90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY3ZfdHJhaXRzX2ltcDxjb25zdCBUKj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfY29uc3QgPSB0cnVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfdm9sYXRpbGUgPSBmYWxzZSk7Ci0gICAgdHlwZWRlZiBUIHVucXVhbGlmaWVkX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjdl90cmFpdHNfaW1wPHZvbGF0aWxlIFQqPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19jb25zdCA9IGZhbHNlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfdm9sYXRpbGUgPSB0cnVlKTsKLSAgICB0eXBlZGVmIFQgdW5xdWFsaWZpZWRfdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGN2X3RyYWl0c19pbXA8Y29uc3Qgdm9sYXRpbGUgVCo+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2NvbnN0ID0gdHJ1ZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3ZvbGF0aWxlID0gdHJ1ZSk7Ci0gICAgdHlwZWRlZiBUIHVucXVhbGlmaWVkX3R5cGU7Ci19OwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXyw9PSAzKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19NSU5PUl9fLCA8PSAyKQotLy8gV2UgaGF2ZSB0byBleGNsdWRlIGZ1bmN0aW9uIHBvaW50ZXJzIAotLy8gKHNlZSBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpPzg1MDMpCi15ZXNfdHlwZSBtaW5pX2Z1bmNwdHJfdGVzdGVyKC4uLik7Ci1ub190eXBlICBtaW5pX2Z1bmNwdHJfdGVzdGVyKGNvbnN0IHZvbGF0aWxlIHZvaWQqKTsKLQotfSAvLyBuYW1lc3BhY2UgZ2NjODUwMwotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFVzZSB0aGUgaW1wbGVtZW50YXRpb24gYWJvdmUgZm9yIG5vbiBmdW5jdGlvbiBwb2ludGVycwotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHVuc2lnbmVkIFNlbGVjdCAKLSAgPSAodW5zaWduZWQpc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpnY2M4NTAzOjptaW5pX2Z1bmNwdHJfdGVzdGVyKChUKTApKSA+Ci1zdHJ1Y3QgY3ZfdHJhaXRzX2ltcCA6IHB1YmxpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6Z2NjODUwMzo6Y3ZfdHJhaXRzX2ltcDxUPiB7IH07Ci0KLS8vIEZ1bmN0aW9ucyBhcmUgbmV2ZXIgY3YtcXVhbGlmaWVkCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0c19pbXA8VCosMT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfY29uc3QgPSBmYWxzZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3ZvbGF0aWxlID0gZmFsc2UpOwotICAgIHR5cGVkZWYgVCB1bnF1YWxpZmllZF90eXBlOwotfTsKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QgCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfQ1ZfVFJBSVRTX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvZmFsc2VfcmVzdWx0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRiYzIzYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfRkFMU0VfUkVTVUxUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfRkFMU0VfUkVTVUxUX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLS8vIFV0aWxpdHkgY2xhc3Mgd2hpY2ggYWx3YXlzICJyZXR1cm5zIiBmYWxzZQotc3RydWN0IGZhbHNlX3Jlc3VsdAotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotICAgIH07Ci19OwotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfRkFMU0VfUkVTVUxUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzEwZWYxMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbiwgUm9iZXJ0IFN0ZXdhcnQsIFN0ZXZlbiBXYXRhbmFiZSAmIFJvbWFuIFBlcmVwZWxpdHNhLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2Vfb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotLy8gY2Fubm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgd2l0aG91dCBnZXR0aW5nIHdhcm5pbmdzIG9mIHRoZSBraW5kOgotLy8gZ2NjOgotLy8gICAgd2FybmluZzogdmFsdWUgY29tcHV0ZWQgaXMgbm90IHVzZWQKLS8vICAgIHdhcm5pbmc6IGNvbXBhcmlzb24gYmV0d2VlbiBzaWduZWQgYW5kIHVuc2lnbmVkIGludGVnZXIgZXhwcmVzc2lvbnMKLS8vIG1zdmM6Ci0vLyAgICB3YXJuaW5nIEM0MDE4OiAnPCcgOiBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2gKLS8vICAgIHdhcm5pbmcgQzQyNDQ6ICcrPScgOiBjb252ZXJzaW9uIGZyb20gJ2RvdWJsZScgdG8gJ2NoYXInLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKLS8vICAgIHdhcm5pbmcgQzQ1NDc6ICcqJyA6IG9wZXJhdG9yIGJlZm9yZSBjb21tYSBoYXMgbm8gZWZmZWN0OyBleHBlY3RlZCBvcGVyYXRvciB3aXRoIHNpZGUtZWZmZWN0Ci0vLyAgICB3YXJuaW5nIEM0ODAwOiAnaW50JyA6IGZvcmNpbmcgdmFsdWUgdG8gYm9vbCAndHJ1ZScgb3IgJ2ZhbHNlJyAocGVyZm9ybWFuY2Ugd2FybmluZykKLS8vICAgIHdhcm5pbmcgQzQ4MDQ6ICc8JyA6IHVuc2FmZSB1c2Ugb2YgdHlwZSAnYm9vbCcgaW4gb3BlcmF0aW9uCi0vLyAgICB3YXJuaW5nIEM0ODA1OiAnPT0nIDogdW5zYWZlIG1peCBvZiB0eXBlICdib29sJyBhbmQgdHlwZSAnY2hhcicgaW4gb3BlcmF0aW9uCi0vLyBjYW5ub3QgZmluZCBhbm90aGVyIGltcGxlbWVudGF0aW9uIC0+IGRlY2xhcmVkIGFzIHN5c3RlbSBoZWFkZXIgdG8gc3VwcHJlc3MgdGhlc2Ugd2FybmluZ3MuCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXz09MyAmJiBfX0dOVUNfTUlOT1JfXz49MSkgfHwgKF9fR05VQ19fPjMpKQotIyAgIHByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nICggcHVzaCApCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBkaXNhYmxlIDogNDAxOCA0MjQ0IDQ1NDcgNDgwMCA0ODA0IDQ4MDUgNDkxMyApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBUaGlzIG5hbWVzcGFjZSBlbnN1cmVzIHRoYXQgYXJndW1lbnQtZGVwZW5kZW50IG5hbWUgbG9va3VwIGRvZXMgbm90IG1lc3MgdGhpbmdzIHVwLgotbmFtZXNwYWNlIE5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCkgewotCi0vLyAxLiBhIGZ1bmN0aW9uIHRvIGhhdmUgYW4gaW5zdGFuY2Ugb2YgdHlwZSBUIHdpdGhvdXQgcmVxdWlyaW5nIFQgdG8gYmUgZGVmYXVsdAotLy8gY29uc3RydWN0aWJsZQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFQgJm1ha2UoKTsKLQotCi0vLyAyLiB3ZSBwcm92aWRlIG91ciBvcGVyYXRvciBkZWZpbml0aW9uIGZvciB0eXBlcyB0aGF0IGRvIG5vdCBoYXZlIG9uZSBhbHJlYWR5Ci0KLS8vIGEgdHlwZSByZXR1cm5lZCBmcm9tIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHdoZW4gbm8gc3VjaCBvcGVyYXRvciBpcwotLy8gZm91bmQgaW4gdGhlIHR5cGUncyBvd24gbmFtZXNwYWNlIChvdXIgb3duIG9wZXJhdG9yIGlzIHVzZWQpIHNvIHRoYXQgd2UgaGF2ZQotLy8gYSBtZWFucyB0byBrbm93IHRoYXQgb3VyIG9wZXJhdG9yIHdhcyB1c2VkCi1zdHJ1Y3Qgbm9fb3BlcmF0b3IgeyB9OwotCi0vLyB0aGlzIGNsYXNzIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9ucyBhbmQgbWFrZXMgdGhlIGZvbGxvd2luZyBvcGVyYXRvcgotLy8gZGVmaW5pdGlvbiBsZXNzLXByZWZlcnJlZCB0aGFuIGFueSBvdGhlciBzdWNoIG9wZXJhdG9ycyB0aGF0IG1pZ2h0IGJlIGZvdW5kCi0vLyB2aWEgYXJndW1lbnQtZGVwZW5kZW50IG5hbWUgbG9va3VwCi1zdHJ1Y3QgYW55IHsgdGVtcGxhdGUgPGNsYXNzIFQ+IGFueShUIGNvbnN0Jik7IH07Ci0KLS8vIHdoZW4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgaXMgbm90IGF2YWlsYWJsZSwgdGhpcyBvbmUgaXMgdXNlZAotbm9fb3BlcmF0b3Igb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgKGNvbnN0IGFueSYsIGNvbnN0IGFueSYpOwotCi0KLS8vIDMuIGNoZWNrcyBpZiB0aGUgb3BlcmF0b3IgcmV0dXJucyB2b2lkIG9yIG5vdAotLy8gY29uZGl0aW9uczogTGhzIT12b2lkIGFuZCBSaHMhPXZvaWQKLQotLy8gd2UgZmlyc3QgcmVkZWZpbmUgIm9wZXJhdG9yLCIgc28gdGhhdCB3ZSBoYXZlIG5vIGNvbXBpbGF0aW9uIGVycm9yIGlmCi0vLyBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgYW5kIHdlIGNhbiB1c2UgdGhlIHJldHVybiB0eXBlIG9mCi0vLyAobGhzIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJocywgcmV0dXJuc192b2lkX3QoKSkgdG8gZGVkdWNlIGlmCi0vLyBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgb3Igbm90OgotLy8gLSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgICAtPiAobGhzIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJocywgcmV0dXJuc192b2lkX3QoKSkgcmV0dXJucyByZXR1cm5zX3ZvaWRfdAotLy8gLSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zICE9dm9pZCAtPiAobGhzIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJocywgcmV0dXJuc192b2lkX3QoKSkgcmV0dXJucyBpbnQKLXN0cnVjdCByZXR1cm5zX3ZvaWRfdCB7IH07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW50IG9wZXJhdG9yLChjb25zdCBUJiwgcmV0dXJuc192b2lkX3QpOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGludCBvcGVyYXRvciwoY29uc3Qgdm9sYXRpbGUgVCYsIHJldHVybnNfdm9pZF90KTsKLQotLy8gdGhpcyBpbnRlcm1lZGlhdGUgdHJhaXQgaGFzIG1lbWJlciB2YWx1ZSBvZiB0eXBlIGJvb2w6Ci0vLyAtIHZhbHVlPT10cnVlIC0+IG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZAotLy8gLSB2YWx1ZT09ZmFsc2UgLT4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgZG9lcyBub3QgcmV0dXJuIHZvaWQKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfdm9pZCB7Ci0gICAvLyBvdmVybG9hZHMgb2YgZnVuY3Rpb24gcmV0dXJuc192b2lkIG1ha2UgdGhlIGRpZmZlcmVuY2UKLSAgIC8vIHllc190eXBlIGFuZCBub190eXBlIGhhdmUgZGlmZmVyZW50IHNpemUgYnkgY29uc3RydWN0aW9uCi0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIHJldHVybnNfdm9pZChyZXR1cm5zX3ZvaWRfdCk7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgcmV0dXJuc192b2lkKGludCk7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSk9PXNpemVvZihyZXR1cm5zX3ZvaWQoKG1ha2U8TGhzPigpIE5ETkJPT1NUX1RUX1RSQUlUX09QIG1ha2U8UmhzPigpLHJldHVybnNfdm9pZF90KCkpKSkpKTsKLX07Ci0KLQotLy8gNC4gY2hlY2tzIGlmIHRoZSByZXR1cm4gdHlwZSBpcyBSZXQgb3IgUmV0PT1kb250X2NhcmUKLS8vIGNvbmRpdGlvbnM6IExocyE9dm9pZCBhbmQgUmhzIT12b2lkCi0KLXN0cnVjdCBkb250X2NhcmUgeyB9OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQsIGJvb2wgUmV0dXJuc192b2lkID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldDsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJocywgZG9udF9jYXJlLCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmhzLCBkb250X2NhcmUsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmhzLCB2b2lkLCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmhzLCB2b2lkLCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJocywgUmV0LCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotLy8gb3RoZXJ3aXNlIGNoZWNrcyBpZiBpdCBpcyBjb252ZXJ0aWJsZSB0byBSZXQgdXNpbmcgdGhlIHNpemVvZiB0cmljawotLy8gYmFzZWQgb24gb3ZlcmxvYWQgcmVzb2x1dGlvbgotLy8gY29uZGl0aW9uOiBSZXQhPXZvaWQgYW5kIFJldCE9ZG9udF9jYXJlIGFuZCB0aGUgb3BlcmF0b3IgZG9lcyBub3QgcmV0dXJuIHZvaWQKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJocywgUmV0LCBmYWxzZSA+IHsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfY29udmVydGlibGVfdG9fUmV0KFJldCk7IC8vIHRoaXMgdmVyc2lvbiBpcyBwcmVmZXJyZWQgZm9yIHR5cGVzIGNvbnZlcnRpYmxlIHRvIFJldAotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGlzX2NvbnZlcnRpYmxlX3RvX1JldCguLi4pOyAvLyB0aGlzIHZlcnNpb24gaXMgdXNlZCBvdGhlcndpc2UKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihpc19jb252ZXJ0aWJsZV90b19SZXQobWFrZTxMaHM+KCkgTkROQk9PU1RfVFRfVFJBSVRfT1AgbWFrZTxSaHM+KCkpKT09c2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpKTsKLX07Ci0KLQotLy8gNS4gY2hlY2tzIGZvciBvcGVyYXRvciBleGlzdGVuY2UKLS8vIGNvbmRpdGlvbjogTGhzIT12b2lkIGFuZCBSaHMhPXZvaWQKLQotLy8gY2hlY2tzIGlmIG91ciBkZWZpbml0aW9uIG9mIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGlzIHVzZWQgb3IgYW4gb3RoZXIKLS8vIGV4aXN0aW5nIG9uZTsKLS8vIHRoaXMgaXMgZG9uZSB3aXRoIHJlZGVmaW5pdGlvbiBvZiAib3BlcmF0b3IsIiB0aGF0IHJldHVybnMgbm9fb3BlcmF0b3Igb3IgaGFzX29wZXJhdG9yCi1zdHJ1Y3QgaGFzX29wZXJhdG9yIHsgfTsKLW5vX29wZXJhdG9yIG9wZXJhdG9yLChub19vcGVyYXRvciwgaGFzX29wZXJhdG9yKTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfZXhpc3RzIHsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2soaGFzX29wZXJhdG9yKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHByZWZlcnJlZCB3aGVuIG9wZXJhdG9yIGV4aXN0cwotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrKG5vX29wZXJhdG9yKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHVzZWQgb3RoZXJ3aXNlCi0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoY2hlY2soKChtYWtlPExocz4oKSBORE5CT09TVF9UVF9UUkFJVF9PUCBtYWtlPFJocz4oKSksbWFrZTxoYXNfb3BlcmF0b3I+KCkpKSk9PXNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7Ci19OwotCi0KLS8vIDYuIG1haW4gdHJhaXQ6IHRvIGF2b2lkIGFueSBjb21waWxhdGlvbiBlcnJvciwgdGhpcyBjbGFzcyBiZWhhdmVzCi0vLyBkaWZmZXJlbnRseSB3aGVuIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QKExocywgUmhzKSBpcyBmb3JiaWRkZW4gYnkgdGhlCi0vLyBzdGFuZGFyZC4KLS8vIEZvcmJpZGRlbl9pZiBpcyBhIGJvb2wgdGhhdCBpczoKLS8vIC0gdHJ1ZSB3aGVuIHRoZSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUChMaHMsIFJocykgaXMgZm9yYmlkZGVuIGJ5IHRoZSBzdGFuZGFyZAotLy8gICAod291bGQgeWllbGQgY29tcGlsYXRpb24gZXJyb3IgaWYgdXNlZCkKLS8vIC0gZmFsc2Ugb3RoZXJ3aXNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQsIGJvb2wgRm9yYmlkZGVuX2lmID4KLXN0cnVjdCB0cmFpdF9pbXBsMTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IExocywgUmhzLCBSZXQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgTGhzLCBSaHMsIFJldCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwKLSAgICAgIHZhbHVlID0gKAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICBvcGVyYXRvcl9leGlzdHMgPCBMaHMsIFJocyA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSaHMsIFJldCwgb3BlcmF0b3JfcmV0dXJuc192b2lkIDwgTGhzLCBSaHMgPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgID46OnZhbHVlCi0gICAgICApCi0gICApOwotfTsKLQotLy8gc29tZSBzcGVjaWFsaXphdGlvbnMgbmVlZHMgdG8gYmUgZGVjbGFyZWQgZm9yIHRoZSBzcGVjaWFsIHZvaWQgY2FzZQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCB2b2lkLCBSaHMsIFJldCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IExocywgdm9pZCwgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IHZvaWQsIHZvaWQsIFJldCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBkZWZpbmVzIHNvbWUgdHlwZWRlZiBmb3IgY29udmVuaWVuY2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbCB7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8TGhzPjo6dHlwZSBMaHNfbm9yZWY7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8UmhzPjo6dHlwZSBSaHNfbm9yZWY7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjxMaHNfbm9yZWY+Ojp0eXBlIExoc19ub2N2OwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8UmhzX25vcmVmPjo6dHlwZSBSaHNfbm9jdjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxMaHNfbm9yZWY+Ojp0eXBlID46OnR5cGUgPjo6dHlwZSBMaHNfbm9wdHI7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8UmhzX25vcmVmPjo6dHlwZSA+Ojp0eXBlID46OnR5cGUgUmhzX25vcHRyOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHRyYWl0X2ltcGwxIDwgTGhzX25vcmVmLCBSaHNfbm9yZWYsIFJldCwgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGID46OnZhbHVlKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBpbXBsCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gdGhpcyBpcyB0aGUgYWNjZXNzaWJsZSBkZWZpbml0aW9uIG9mIHRoZSB0cmFpdCB0byBlbmQgdXNlcgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMyhORE5CT09TVF9UVF9UUkFJVF9OQU1FLCBMaHMsIFJocz1MaHMsIFJldD06Om5kbmJvb3N0OjpkZXRhaWw6Ok5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCk6OmRvbnRfY2FyZSwgKDo6bmRuYm9vc3Q6OmRldGFpbDo6TkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKTo6dHJhaXRfaW1wbCA8IExocywgUmhzLCBSZXQgPjo6dmFsdWUpKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nICggcG9wICkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3Bvc3RmaXhfb3BlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3Bvc3RmaXhfb3BlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDIzNTczLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wb3N0Zml4X29wZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbiwgUm9iZXJ0IFN0ZXdhcnQsIFN0ZXZlbiBXYXRhbmFiZSAmIFJvbWFuIFBlcmVwZWxpdHNhLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLS8vIGF2b2lkIHdhcm5pbmdzCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXz09MyAmJiBfX0dOVUNfTUlOT1JfXz49MSkgfHwgKF9fR05VQ19fPjMpKQotIyAgIHByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nICggcHVzaCApCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBkaXNhYmxlIDogNDI0NCA0OTEzICkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFRoaXMgbmFtZXNwYWNlIGVuc3VyZXMgdGhhdCBhcmd1bWVudC1kZXBlbmRlbnQgbmFtZSBsb29rdXAgZG9lcyBub3QgbWVzcyB0aGluZ3MgdXAuCi1uYW1lc3BhY2UgTkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKSB7Ci0KLS8vIDEuIGEgZnVuY3Rpb24gdG8gaGF2ZSBhbiBpbnN0YW5jZSBvZiB0eXBlIFQgd2l0aG91dCByZXF1aXJpbmcgVCB0byBiZSBkZWZhdWx0Ci0vLyBjb25zdHJ1Y3RpYmxlCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCAmbWFrZSgpOwotCi0KLS8vIDIuIHdlIHByb3ZpZGUgb3VyIG9wZXJhdG9yIGRlZmluaXRpb24gZm9yIHR5cGVzIHRoYXQgZG8gbm90IGhhdmUgb25lIGFscmVhZHkKLQotLy8gYSB0eXBlIHJldHVybmVkIGZyb20gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1Agd2hlbiBubyBzdWNoIG9wZXJhdG9yIGlzCi0vLyBmb3VuZCBpbiB0aGUgdHlwZSdzIG93biBuYW1lc3BhY2UgKG91ciBvd24gb3BlcmF0b3IgaXMgdXNlZCkgc28gdGhhdCB3ZSBoYXZlCi0vLyBhIG1lYW5zIHRvIGtub3cgdGhhdCBvdXIgb3BlcmF0b3Igd2FzIHVzZWQKLXN0cnVjdCBub19vcGVyYXRvciB7IH07Ci0KLS8vIHRoaXMgY2xhc3MgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb25zIGFuZCBtYWtlcyB0aGUgZm9sbG93aW5nIG9wZXJhdG9yCi0vLyBkZWZpbml0aW9uIGxlc3MtcHJlZmVycmVkIHRoYW4gYW55IG90aGVyIHN1Y2ggb3BlcmF0b3JzIHRoYXQgbWlnaHQgYmUgZm91bmQKLS8vIHZpYSBhcmd1bWVudC1kZXBlbmRlbnQgbmFtZSBsb29rdXAKLXN0cnVjdCBhbnkgeyB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYW55KFQgY29uc3QmKTsgfTsKLQotLy8gd2hlbiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBpcyBub3QgYXZhaWxhYmxlLCB0aGlzIG9uZSBpcyB1c2VkCi1ub19vcGVyYXRvciBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCAoY29uc3QgYW55JiwgaW50KTsKLQotCi0vLyAzLiBjaGVja3MgaWYgdGhlIG9wZXJhdG9yIHJldHVybnMgdm9pZCBvciBub3QKLS8vIGNvbmRpdGlvbnM6IExocyE9dm9pZAotCi0vLyB3ZSBmaXJzdCByZWRlZmluZSAib3BlcmF0b3IsIiBzbyB0aGF0IHdlIGhhdmUgbm8gY29tcGlsYXRpb24gZXJyb3IgaWYKLS8vIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCBhbmQgd2UgY2FuIHVzZSB0aGUgcmV0dXJuIHR5cGUgb2YKLS8vIChsaHMgTkROQk9PU1RfVFRfVFJBSVRfT1AsIHJldHVybnNfdm9pZF90KCkpIHRvIGRlZHVjZSBpZgotLy8gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkIG9yIG5vdDoKLS8vIC0gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkICAgLT4gKGxocyBORE5CT09TVF9UVF9UUkFJVF9PUCwgcmV0dXJuc192b2lkX3QoKSkgcmV0dXJucyByZXR1cm5zX3ZvaWRfdAotLy8gLSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zICE9dm9pZCAtPiAobGhzIE5ETkJPT1NUX1RUX1RSQUlUX09QLCByZXR1cm5zX3ZvaWRfdCgpKSByZXR1cm5zIGludAotc3RydWN0IHJldHVybnNfdm9pZF90IHsgfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbnQgb3BlcmF0b3IsKGNvbnN0IFQmLCByZXR1cm5zX3ZvaWRfdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW50IG9wZXJhdG9yLChjb25zdCB2b2xhdGlsZSBUJiwgcmV0dXJuc192b2lkX3QpOwotCi0vLyB0aGlzIGludGVybWVkaWF0ZSB0cmFpdCBoYXMgbWVtYmVyIHZhbHVlIG9mIHR5cGUgYm9vbDoKLS8vIC0gdmFsdWU9PXRydWUgLT4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkCi0vLyAtIHZhbHVlPT1mYWxzZSAtPiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBkb2VzIG5vdCByZXR1cm4gdm9pZAotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfdm9pZCB7Ci0gICAvLyBvdmVybG9hZHMgb2YgZnVuY3Rpb24gcmV0dXJuc192b2lkIG1ha2UgdGhlIGRpZmZlcmVuY2UKLSAgIC8vIHllc190eXBlIGFuZCBub190eXBlIGhhdmUgZGlmZmVyZW50IHNpemUgYnkgY29uc3RydWN0aW9uCi0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIHJldHVybnNfdm9pZChyZXR1cm5zX3ZvaWRfdCk7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgcmV0dXJuc192b2lkKGludCk7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSk9PXNpemVvZihyZXR1cm5zX3ZvaWQoKG1ha2U8TGhzPigpIE5ETkJPT1NUX1RUX1RSQUlUX09QLHJldHVybnNfdm9pZF90KCkpKSkpKTsKLX07Ci0KLQotLy8gNC4gY2hlY2tzIGlmIHRoZSByZXR1cm4gdHlwZSBpcyBSZXQgb3IgUmV0PT1kb250X2NhcmUKLS8vIGNvbmRpdGlvbnM6IExocyE9dm9pZAotCi1zdHJ1Y3QgZG9udF9jYXJlIHsgfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJldCwgYm9vbCBSZXR1cm5zX3ZvaWQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIGRvbnRfY2FyZSwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBkb250X2NhcmUsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIHZvaWQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgdm9pZCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmV0LCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotLy8gb3RoZXJ3aXNlIGNoZWNrcyBpZiBpdCBpcyBjb252ZXJ0aWJsZSB0byBSZXQgdXNpbmcgdGhlIHNpemVvZiB0cmljawotLy8gYmFzZWQgb24gb3ZlcmxvYWQgcmVzb2x1dGlvbgotLy8gY29uZGl0aW9uOiBSZXQhPXZvaWQgYW5kIFJldCE9ZG9udF9jYXJlIGFuZCB0aGUgb3BlcmF0b3IgZG9lcyBub3QgcmV0dXJuIHZvaWQKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSZXQsIGZhbHNlID4gewotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jb252ZXJ0aWJsZV90b19SZXQoUmV0KTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHByZWZlcnJlZCBmb3IgdHlwZXMgY29udmVydGlibGUgdG8gUmV0Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfY29udmVydGlibGVfdG9fUmV0KC4uLik7IC8vIHRoaXMgdmVyc2lvbiBpcyB1c2VkIG90aGVyd2lzZQotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGlzX2NvbnZlcnRpYmxlX3RvX1JldChtYWtlPExocz4oKSBORE5CT09TVF9UVF9UUkFJVF9PUCkpPT1zaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotCi0vLyA1LiBjaGVja3MgZm9yIG9wZXJhdG9yIGV4aXN0ZW5jZQotLy8gY29uZGl0aW9uOiBMaHMhPXZvaWQKLQotLy8gY2hlY2tzIGlmIG91ciBkZWZpbml0aW9uIG9mIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGlzIHVzZWQgb3IgYW4gb3RoZXIKLS8vIGV4aXN0aW5nIG9uZTsKLS8vIHRoaXMgaXMgZG9uZSB3aXRoIHJlZGVmaW5pdGlvbiBvZiAib3BlcmF0b3IsIiB0aGF0IHJldHVybnMgbm9fb3BlcmF0b3Igb3IgaGFzX29wZXJhdG9yCi1zdHJ1Y3QgaGFzX29wZXJhdG9yIHsgfTsKLW5vX29wZXJhdG9yIG9wZXJhdG9yLChub19vcGVyYXRvciwgaGFzX29wZXJhdG9yKTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMgPgotc3RydWN0IG9wZXJhdG9yX2V4aXN0cyB7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrKGhhc19vcGVyYXRvcik7IC8vIHRoaXMgdmVyc2lvbiBpcyBwcmVmZXJyZWQgd2hlbiBvcGVyYXRvciBleGlzdHMKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVjayhub19vcGVyYXRvcik7IC8vIHRoaXMgdmVyc2lvbiBpcyB1c2VkIG90aGVyd2lzZQotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGNoZWNrKCgobWFrZTxMaHM+KCkgTkROQk9PU1RfVFRfVFJBSVRfT1ApLG1ha2U8aGFzX29wZXJhdG9yPigpKSkpPT1zaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotCi0vLyA2LiBtYWluIHRyYWl0OiB0byBhdm9pZCBhbnkgY29tcGlsYXRpb24gZXJyb3IsIHRoaXMgY2xhc3MgYmVoYXZlcwotLy8gZGlmZmVyZW50bHkgd2hlbiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUChMaHMpIGlzIGZvcmJpZGRlbiBieSB0aGUKLS8vIHN0YW5kYXJkLgotLy8gRm9yYmlkZGVuX2lmIGlzIGEgYm9vbCB0aGF0IGlzOgotLy8gLSB0cnVlIHdoZW4gdGhlIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QKExocykgaXMgZm9yYmlkZGVuIGJ5IHRoZSBzdGFuZGFyZAotLy8gICAod291bGQgeWllbGQgY29tcGlsYXRpb24gZXJyb3IgaWYgdXNlZCkKLS8vIC0gZmFsc2Ugb3RoZXJ3aXNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmV0LCBib29sIEZvcmJpZGRlbl9pZiA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDE7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgTGhzLCBSZXQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IExocywgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLAotICAgICAgdmFsdWUgPSAoCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIG9wZXJhdG9yX2V4aXN0cyA8IExocyA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSZXQsIG9wZXJhdG9yX3JldHVybnNfdm9pZCA8IExocyA+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICAgPjo6dmFsdWUKLSAgICAgICkKLSAgICk7Ci19OwotCi0vLyBzcGVjaWFsaXphdGlvbiBuZWVkcyB0byBiZSBkZWNsYXJlZCBmb3IgdGhlIHNwZWNpYWwgdm9pZCBjYXNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCB2b2lkLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotLy8gZGVmaW5lcyBzb21lIHR5cGVkZWYgZm9yIGNvbnZlbmllbmNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsIHsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxMaHM+Ojp0eXBlIExoc19ub3JlZjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PExoc19ub3JlZj46OnR5cGUgTGhzX25vY3Y7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8TGhzX25vcmVmPjo6dHlwZSA+Ojp0eXBlID46OnR5cGUgTGhzX25vcHRyOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHRyYWl0X2ltcGwxIDwgTGhzX25vcmVmLCBSZXQsIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRiA+Ojp2YWx1ZSkpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgaW1wbAotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vIHRoaXMgaXMgdGhlIGFjY2Vzc2libGUgZGVmaW5pdGlvbiBvZiB0aGUgdHJhaXQgdG8gZW5kIHVzZXIKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoTkROQk9PU1RfVFRfVFJBSVRfTkFNRSwgTGhzLCBSZXQ9OjpuZG5ib29zdDo6ZGV0YWlsOjpORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpOjpkb250X2NhcmUsICg6Om5kbmJvb3N0OjpkZXRhaWw6Ok5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCk6OnRyYWl0X2ltcGw8IExocywgUmV0ID46OnZhbHVlKSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyAoIHBvcCApCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjVjNTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24sIFJvYmVydCBTdGV3YXJ0LCBTdGV2ZW4gV2F0YW5hYmUgJiBSb21hbiBQZXJlcGVsaXRzYS4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotLy8gY2Fubm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgd2l0aG91dCBnZXR0aW5nIHdhcm5pbmdzIG9mIHRoZSBraW5kOgotLy8gZ2NjOgotLy8gICAgd2FybmluZzogdmFsdWUgY29tcHV0ZWQgaXMgbm90IHVzZWQKLS8vICAgIHdhcm5pbmc6IGNvbXBhcmlzb24gYmV0d2VlbiBzaWduZWQgYW5kIHVuc2lnbmVkIGludGVnZXIgZXhwcmVzc2lvbnMKLS8vIG1zdmM6Ci0vLyAgICB3YXJuaW5nIEM0MTQ2OiB1bmFyeSBtaW51cyBvcGVyYXRvciBhcHBsaWVkIHRvIHVuc2lnbmVkIHR5cGUsIHJlc3VsdCBzdGlsbCB1bnNpZ25lZAotLy8gICAgd2FybmluZyBDNDgwNDogJy0nIDogdW5zYWZlIHVzZSBvZiB0eXBlICdib29sJyBpbiBvcGVyYXRpb24KLS8vIGNhbm5vdCBmaW5kIGFub3RoZXIgaW1wbGVtZW50YXRpb24gLT4gZGVjbGFyZWQgYXMgc3lzdGVtIGhlYWRlciB0byBzdXBwcmVzcyB0aGVzZSB3YXJuaW5ncy4KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fPT0zICYmIF9fR05VQ19NSU5PUl9fPj0xKSB8fCAoX19HTlVDX18+MykpCi0jICAgcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBwdXNoICkKLSMgICBwcmFnbWEgd2FybmluZyAoIGRpc2FibGUgOiA0MTQ2IDQ4MDQgNDkxMyA0MjQ0ICkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFRoaXMgbmFtZXNwYWNlIGVuc3VyZXMgdGhhdCBhcmd1bWVudC1kZXBlbmRlbnQgbmFtZSBsb29rdXAgZG9lcyBub3QgbWVzcyB0aGluZ3MgdXAuCi1uYW1lc3BhY2UgTkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKSB7Ci0KLS8vIDEuIGEgZnVuY3Rpb24gdG8gaGF2ZSBhbiBpbnN0YW5jZSBvZiB0eXBlIFQgd2l0aG91dCByZXF1aXJpbmcgVCB0byBiZSBkZWZhdWx0Ci0vLyBjb25zdHJ1Y3RpYmxlCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCAmbWFrZSgpOwotCi0KLS8vIDIuIHdlIHByb3ZpZGUgb3VyIG9wZXJhdG9yIGRlZmluaXRpb24gZm9yIHR5cGVzIHRoYXQgZG8gbm90IGhhdmUgb25lIGFscmVhZHkKLQotLy8gYSB0eXBlIHJldHVybmVkIGZyb20gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1Agd2hlbiBubyBzdWNoIG9wZXJhdG9yIGlzCi0vLyBmb3VuZCBpbiB0aGUgdHlwZSdzIG93biBuYW1lc3BhY2UgKG91ciBvd24gb3BlcmF0b3IgaXMgdXNlZCkgc28gdGhhdCB3ZSBoYXZlCi0vLyBhIG1lYW5zIHRvIGtub3cgdGhhdCBvdXIgb3BlcmF0b3Igd2FzIHVzZWQKLXN0cnVjdCBub19vcGVyYXRvciB7IH07Ci0KLS8vIHRoaXMgY2xhc3MgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb25zIGFuZCBtYWtlcyB0aGUgZm9sbG93aW5nIG9wZXJhdG9yCi0vLyBkZWZpbml0aW9uIGxlc3MtcHJlZmVycmVkIHRoYW4gYW55IG90aGVyIHN1Y2ggb3BlcmF0b3JzIHRoYXQgbWlnaHQgYmUgZm91bmQKLS8vIHZpYSBhcmd1bWVudC1kZXBlbmRlbnQgbmFtZSBsb29rdXAKLXN0cnVjdCBhbnkgeyB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYW55KFQgY29uc3QmKTsgfTsKLQotLy8gd2hlbiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBpcyBub3QgYXZhaWxhYmxlLCB0aGlzIG9uZSBpcyB1c2VkCi1ub19vcGVyYXRvciBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCAoY29uc3QgYW55Jik7Ci0KLQotLy8gMy4gY2hlY2tzIGlmIHRoZSBvcGVyYXRvciByZXR1cm5zIHZvaWQgb3Igbm90Ci0vLyBjb25kaXRpb25zOiBSaHMhPXZvaWQKLQotLy8gd2UgZmlyc3QgcmVkZWZpbmUgIm9wZXJhdG9yLCIgc28gdGhhdCB3ZSBoYXZlIG5vIGNvbXBpbGF0aW9uIGVycm9yIGlmCi0vLyBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgYW5kIHdlIGNhbiB1c2UgdGhlIHJldHVybiB0eXBlIG9mCi0vLyAoTkROQk9PU1RfVFRfVFJBSVRfT1AgcmhzLCByZXR1cm5zX3ZvaWRfdCgpKSB0byBkZWR1Y2UgaWYKLS8vIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCBvciBub3Q6Ci0vLyAtIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCAgIC0+IChORE5CT09TVF9UVF9UUkFJVF9PUCByaHMsIHJldHVybnNfdm9pZF90KCkpIHJldHVybnMgcmV0dXJuc192b2lkX3QKLS8vIC0gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyAhPXZvaWQgLT4gKE5ETkJPT1NUX1RUX1RSQUlUX09QIHJocywgcmV0dXJuc192b2lkX3QoKSkgcmV0dXJucyBpbnQKLXN0cnVjdCByZXR1cm5zX3ZvaWRfdCB7IH07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW50IG9wZXJhdG9yLChjb25zdCBUJiwgcmV0dXJuc192b2lkX3QpOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGludCBvcGVyYXRvciwoY29uc3Qgdm9sYXRpbGUgVCYsIHJldHVybnNfdm9pZF90KTsKLQotLy8gdGhpcyBpbnRlcm1lZGlhdGUgdHJhaXQgaGFzIG1lbWJlciB2YWx1ZSBvZiB0eXBlIGJvb2w6Ci0vLyAtIHZhbHVlPT10cnVlIC0+IG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZAotLy8gLSB2YWx1ZT09ZmFsc2UgLT4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgZG9lcyBub3QgcmV0dXJuIHZvaWQKLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX3ZvaWQgewotICAgLy8gb3ZlcmxvYWRzIG9mIGZ1bmN0aW9uIHJldHVybnNfdm9pZCBtYWtlIHRoZSBkaWZmZXJlbmNlCi0gICAvLyB5ZXNfdHlwZSBhbmQgbm9fdHlwZSBoYXZlIGRpZmZlcmVudCBzaXplIGJ5IGNvbnN0cnVjdGlvbgotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSByZXR1cm5zX3ZvaWQocmV0dXJuc192b2lkX3QpOwotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIHJldHVybnNfdm9pZChpbnQpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpPT1zaXplb2YocmV0dXJuc192b2lkKChORE5CT09TVF9UVF9UUkFJVF9PUCBtYWtlPFJocz4oKSxyZXR1cm5zX3ZvaWRfdCgpKSkpKSk7Ci19OwotCi0KLS8vIDQuIGNoZWNrcyBpZiB0aGUgcmV0dXJuIHR5cGUgaXMgUmV0IG9yIFJldD09ZG9udF9jYXJlCi0vLyBjb25kaXRpb25zOiBSaHMhPXZvaWQKLQotc3RydWN0IGRvbnRfY2FyZSB7IH07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQsIGJvb2wgUmV0dXJuc192b2lkID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldDsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgUmhzLCBkb250X2NhcmUsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IFJocywgZG9udF9jYXJlLCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgUmhzLCB2b2lkLCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBSaHMsIHZvaWQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBSaHMsIFJldCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLS8vIG90aGVyd2lzZSBjaGVja3MgaWYgaXQgaXMgY29udmVydGlibGUgdG8gUmV0IHVzaW5nIHRoZSBzaXplb2YgdHJpY2sKLS8vIGJhc2VkIG9uIG92ZXJsb2FkIHJlc29sdXRpb24KLS8vIGNvbmRpdGlvbjogUmV0IT12b2lkIGFuZCBSZXQhPWRvbnRfY2FyZSBhbmQgdGhlIG9wZXJhdG9yIGRvZXMgbm90IHJldHVybiB2b2lkCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IFJocywgUmV0LCBmYWxzZSA+IHsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfY29udmVydGlibGVfdG9fUmV0KFJldCk7IC8vIHRoaXMgdmVyc2lvbiBpcyBwcmVmZXJyZWQgZm9yIHR5cGVzIGNvbnZlcnRpYmxlIHRvIFJldAotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGlzX2NvbnZlcnRpYmxlX3RvX1JldCguLi4pOyAvLyB0aGlzIHZlcnNpb24gaXMgdXNlZCBvdGhlcndpc2UKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihpc19jb252ZXJ0aWJsZV90b19SZXQoTkROQk9PU1RfVFRfVFJBSVRfT1AgbWFrZTxSaHM+KCkpKT09c2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpKTsKLX07Ci0KLQotLy8gNS4gY2hlY2tzIGZvciBvcGVyYXRvciBleGlzdGVuY2UKLS8vIGNvbmRpdGlvbjogUmhzIT12b2lkCi0KLS8vIGNoZWNrcyBpZiBvdXIgZGVmaW5pdGlvbiBvZiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBpcyB1c2VkIG9yIGFuIG90aGVyCi0vLyBleGlzdGluZyBvbmU7Ci0vLyB0aGlzIGlzIGRvbmUgd2l0aCByZWRlZmluaXRpb24gb2YgIm9wZXJhdG9yLCIgdGhhdCByZXR1cm5zIG5vX29wZXJhdG9yIG9yIGhhc19vcGVyYXRvcgotc3RydWN0IGhhc19vcGVyYXRvciB7IH07Ci1ub19vcGVyYXRvciBvcGVyYXRvciwobm9fb3BlcmF0b3IsIGhhc19vcGVyYXRvcik7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9leGlzdHMgewotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVjayhoYXNfb3BlcmF0b3IpOyAvLyB0aGlzIHZlcnNpb24gaXMgcHJlZmVycmVkIHdoZW4gb3BlcmF0b3IgZXhpc3RzCi0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2sobm9fb3BlcmF0b3IpOyAvLyB0aGlzIHZlcnNpb24gaXMgdXNlZCBvdGhlcndpc2UKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihjaGVjaygoKE5ETkJPT1NUX1RUX1RSQUlUX09QIG1ha2U8UmhzPigpKSxtYWtlPGhhc19vcGVyYXRvcj4oKSkpKT09c2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpKTsKLX07Ci0KLQotLy8gNi4gbWFpbiB0cmFpdDogdG8gYXZvaWQgYW55IGNvbXBpbGF0aW9uIGVycm9yLCB0aGlzIGNsYXNzIGJlaGF2ZXMKLS8vIGRpZmZlcmVudGx5IHdoZW4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AoUmhzKSBpcyBmb3JiaWRkZW4gYnkgdGhlCi0vLyBzdGFuZGFyZC4KLS8vIEZvcmJpZGRlbl9pZiBpcyBhIGJvb2wgdGhhdCBpczoKLS8vIC0gdHJ1ZSB3aGVuIHRoZSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUChSaHMpIGlzIGZvcmJpZGRlbiBieSB0aGUgc3RhbmRhcmQKLS8vICAgKHdvdWxkIHlpZWxkIGNvbXBpbGF0aW9uIGVycm9yIGlmIHVzZWQpCi0vLyAtIGZhbHNlIG90aGVyd2lzZQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCwgYm9vbCBGb3JiaWRkZW5faWYgPgotc3RydWN0IHRyYWl0X2ltcGwxOwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IFJocywgUmV0LCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCBSaHMsIFJldCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwKLSAgICAgIHZhbHVlID0gKAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICBvcGVyYXRvcl9leGlzdHMgPCBSaHMgPjo6dmFsdWUsCi0gICAgICAgICAgICBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IFJocywgUmV0LCBvcGVyYXRvcl9yZXR1cm5zX3ZvaWQgPCBSaHMgPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgID46OnZhbHVlCi0gICAgICApCi0gICApOwotfTsKLQotLy8gc3BlY2lhbGl6YXRpb24gbmVlZHMgdG8gYmUgZGVjbGFyZWQgZm9yIHRoZSBzcGVjaWFsIHZvaWQgY2FzZQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgdm9pZCwgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLS8vIGRlZmluZXMgc29tZSB0eXBlZGVmIGZvciBjb252ZW5pZW5jZQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbCB7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8UmhzPjo6dHlwZSBSaHNfbm9yZWY7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjxSaHNfbm9yZWY+Ojp0eXBlIFJoc19ub2N2OwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8IHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8IHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9wb2ludGVyPFJoc19ub3JlZj46OnR5cGUgPjo6dHlwZSA+Ojp0eXBlIFJoc19ub3B0cjsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICh0cmFpdF9pbXBsMSA8IFJoc19ub3JlZiwgUmV0LCBORE5CT09TVF9UVF9GT1JCSURERU5fSUYgPjo6dmFsdWUpKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGltcGwKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyB0aGlzIGlzIHRoZSBhY2Nlc3NpYmxlIGRlZmluaXRpb24gb2YgdGhlIHRyYWl0IHRvIGVuZCB1c2VyCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsIFJocywgUmV0PTo6bmRuYm9vc3Q6OmRldGFpbDo6TkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKTo6ZG9udF9jYXJlLCAoOjpuZG5ib29zdDo6ZGV0YWlsOjpORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpOjp0cmFpdF9pbXBsIDwgUmhzLCBSZXQgPjo6dmFsdWUpKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nICggcG9wICkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYxOTE3ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayBhbmQgU3RldmUgQ2xlYXJ5IDIwMDAuCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfSUNFX0FORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9BTkRfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotdGVtcGxhdGUgPGJvb2wgYjEsIGJvb2wgYjIsIGJvb2wgYjMgPSB0cnVlLCBib29sIGI0ID0gdHJ1ZSwgYm9vbCBiNSA9IHRydWUsIGJvb2wgYjYgPSB0cnVlLCBib29sIGI3ID0gdHJ1ZT4KLXN0cnVjdCBpY2VfYW5kOwotCi10ZW1wbGF0ZSA8Ym9vbCBiMSwgYm9vbCBiMiwgYm9vbCBiMywgYm9vbCBiNCwgYm9vbCBiNSwgYm9vbCBiNiwgYm9vbCBiNz4KLXN0cnVjdCBpY2VfYW5kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpY2VfYW5kPHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfQU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2VxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9lcS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NjI0MGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2VxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayBhbmQgU3RldmUgQ2xlYXJ5IDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfRVFfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfRVFfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotdGVtcGxhdGUgPGludCBiMSwgaW50IGIyPgotc3RydWN0IGljZV9lcQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChiMSA9PSBiMikpOwotfTsKLQotdGVtcGxhdGUgPGludCBiMSwgaW50IGIyPgotc3RydWN0IGljZV9uZQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChiMSAhPSBiMikpOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotdGVtcGxhdGUgPGludCBiMSwgaW50IGIyPiBib29sIGNvbnN0IGljZV9lcTxiMSxiMj46OnZhbHVlOwotdGVtcGxhdGUgPGludCBiMSwgaW50IGIyPiBib29sIGNvbnN0IGljZV9uZTxiMSxiMj46OnZhbHVlOwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lDRV9FUV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNDg3OWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgYW5kIFN0ZXZlIENsZWFyeSAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfSUNFX05PVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9OT1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotdGVtcGxhdGUgPGJvb2wgYj4KLXN0cnVjdCBpY2Vfbm90Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGljZV9ub3Q8dHJ1ZT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfTk9UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMjU1YjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayBhbmQgU3RldmUgQ2xlYXJ5IDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotdGVtcGxhdGUgPGJvb2wgYjEsIGJvb2wgYjIsIGJvb2wgYjMgPSBmYWxzZSwgYm9vbCBiNCA9IGZhbHNlLCBib29sIGI1ID0gZmFsc2UsIGJvb2wgYjYgPSBmYWxzZSwgYm9vbCBiNyA9IGZhbHNlPgotc3RydWN0IGljZV9vcjsKLQotdGVtcGxhdGUgPGJvb2wgYjEsIGJvb2wgYjIsIGJvb2wgYjMsIGJvb2wgYjQsIGJvb2wgYjUsIGJvb2wgYjYsIGJvb2wgYjc+Ci1zdHJ1Y3QgaWNlX29yCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGljZV9vcjxmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfaGVscGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl9oZWxwZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjYzMjU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl9oZWxwZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIwICswLDAgQEAKLQotLy8gIENvcHlyaWdodCAyMDAwIEpvaG4gTWFkZG9jayAoam9obkBqb2hubWFkZG9jay5jby51aykKLS8vICBDb3B5cmlnaHQgMjAwMiBBbGVrc2V5IEd1cnRvdm95IChhZ3VydG92b3lAbWV0YS1jb21tLmNvbSkKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19GVU5DVElPTl9QVFJfSEVMUEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfSVNfRlVOQ1RJT05fUFRSX0hFTFBFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8Y2xhc3MgUj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLS8vIHByZXByb2Nlc3Nvci1nZW5lcmF0ZWQgcGFydCwgZG9uJ3QgZWRpdCBieSBoYW5kIQotCi10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSgpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbHNlCi0KLSN1bmRlZiBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQKLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywgKDAsIDI1LCAibmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl9oZWxwZXIuaHBwIikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERQotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19GVU5DVElPTl9QVFJfSEVMUEVSX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotQCNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotQCNlbmRpZgotI3VuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVIKLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX3Rlc3Rlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3OWY5MDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX3Rlc3Rlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NTQgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICBBbGVrc2V5IEd1cnRvdm95LCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19GVU5DVElPTl9QVFJfVEVTVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfSVNfRlVOQ1RJT05fUFRSX1RFU1RFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLS8vIE5vdGUgaXQgaXMgYWNjZXB0YWJsZSB0byB1c2UgZWxsaXBzaXMgaGVyZSwgc2luY2UgdGhlIGFyZ3VtZW50IHdpbGwKLS8vIGFsd2F5cyBiZSBhIHBvaW50ZXIgdHlwZSBvZiBzb21lIHNvcnQgKEpNIDIwMDUvMDYvMDQpOgotbm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoLi4uKTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLS8vIHByZS1wcm9jZXNzZWQgY29kZSwgZG9uJ3QgZWRpdCwgdHJ5IEdOVSBjcHAgd2l0aCAKLS8vIGNwcCAtSS4uLy4uLy4uLyAtRE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSAteCBjKysgLVAgZmlsZW5hbWUKLQotdGVtcGxhdGUgPGNsYXNzIFIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSgpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDApKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMikpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLSNlbmRpZgotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCAoMCwgMjUsICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX3Rlc3Rlci5ocHAiKSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFCi0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lTX0ZVTkNUSU9OX1BUUl9URVNURVJfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotI3VuZGVmIF9fc3RkY2FsbAotI3VuZGVmIF9fZmFzdGNhbGwKLSN1bmRlZiBfX2NkZWNsCi0KLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSk7Ci1AI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikpOwotQCNlbmRpZgotQCNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikpOwotQCNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikpOwotQCNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci1AI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MDA4ZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODE3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgQWxla3NleSBHdXJ0b3ZveSwgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfSVNfTUVNX0ZVTl9QT0lOVEVSX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19NRU1fRlVOX1BPSU5URVJfSU1QTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0vLyBwcmUtcHJvY2Vzc2VkIGNvZGUsIGRvbid0IGVkaXQsIHRyeSBHTlUgY3BwIHdpdGggCi0vLyBjcHAgLUkuLi8uLi8uLi8gLURORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUgLXggYysrIC1QIGZpbGVuYW1lCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSgpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSgpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMykgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMykgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QpCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2VuZGlmCi0KLSNlbHNlCi0KLSN1bmRlZiBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQKLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywgKDAsIDI1LCAibmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl9pbXBsLmhwcCIpKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSVNfTUVNX0ZVTl9QT0lOVEVSX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLUAjaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotQCNlbmRpZgotCi1AI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLUAjaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLUAjZW5kaWYKLUAjZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVIKLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA3NDRkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NTkgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICBBbGVrc2V5IEd1cnRvdm95LCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19NRU1fRlVOX1BPSU5URVJfVEVTVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfSVNfTUVNX0ZVTl9QT0lOVEVSX1RFU1RFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLW5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKC4uLik7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0vLyBwcmUtcHJvY2Vzc2VkIGNvZGUsIGRvbid0IGVkaXQsIHRyeSBHTlUgY3BwIHdpdGggCi0vLyBjcHAgLUkuLi8uLi8uLi8gLURORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUgLXggYysrIC1QIGZpbGVuYW1lCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCAoMCwgMjUsICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3Rlci5ocHAiKSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFCi0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lTX01FTV9GVU5fUE9JTlRFUl9URVNURVJfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotI3VuZGVmIF9fc3RkY2FsbAotI3VuZGVmIF9fZmFzdGNhbGwKLSN1bmRlZiBfX2NkZWNsCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCB2b2xhdGlsZSk7Ci0KLUAjaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci1AI2VuZGlmCi1AI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTIC8vIE90aGVyIGNhbGxpbmcgY29udmVudGlvbnMgdXNlZCBieSBNUyBjb21wYXRpYmxlIGNvbXBpbGVyczoKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLUAjaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci1AI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLUAjZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVIKLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF9kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwOTA4ZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X2RlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICRTb3VyY2UkCi0vLyAkRGF0ZTogMjAxMS0wNC0yNSAwNToyNjo0OCAtMDcwMCAoTW9uLCAyNSBBcHIgMjAxMSkgJAotLy8gJFJldmlzaW9uOiA3MTQ4MSAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2l6ZV90LmhwcD4KLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCBORE5CT09TVF9NU1ZDID49IDEzMDAKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9CQVNFKEMpIHB1YmxpYyA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCxDPgotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1ZBTFVFX0RFQ0woQykgLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9CQVNFKEMpIHB1YmxpYyA6Om5kbmJvb3N0OjptcGw6OnNpemVfdDxDPgotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6bXBsOjpzaXplX3Q8Qz4gYmFzZV87IFwKLSAgICB1c2luZyBiYXNlXzo6dmFsdWU7IFwKLSAgICAvKiovCi0jZW5kaWYKLQotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfREVGMSh0cmFpdCxULEMpIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRyYWl0IFwKLSAgICA6IE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsdHJhaXQsKFQpKSBcCi19OyBcCi1cCi1ORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLHRyYWl0KSBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9TUEVDMSh0cmFpdCxzcGVjLEMpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PHNwZWM+IFwKLSAgICA6IE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMSx0cmFpdCwoc3BlYykpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1BBUlRJQUxfU1BFQzFfMShwYXJhbSx0cmFpdCxzcGVjLEMpIFwKLXRlbXBsYXRlPCBwYXJhbSA+IHN0cnVjdCB0cmFpdDxzcGVjPiBcCi0gICAgOiBORE5CT09TVF9UVF9BVVhfU0laRV9UX0JBU0UoQykgXAoteyBcCi19OyBcCi0vKiovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfdW5kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X3VuZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFiMTRkOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfdW5kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAkU291cmNlJAotLy8gJERhdGU6IDIwMDQtMDktMDIgMDg6NDE6MzcgLTA3MDAgKFRodSwgMDIgU2VwIDIwMDQpICQKLS8vICRSZXZpc2lvbjogMjQ4NzQgJAotCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9ERUYxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9TUEVDMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfUEFSVElBTF9TUEVDMV8xCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmViOGQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHlfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkgXAotICAgICYmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTikKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoaSwgbmFtZSkgXAotbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggeyBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCB0eXBlbmFtZSBUKSA+IFwKLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eTwgXAotICAgICAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSwgVCkgPiBcCi0gICAgICAgID4gXAotICAgIDogaW50XzxpPiBcCi17IFwKLX07IFwKLX19IFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKGksIG5hbWUpIC8qKi8KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2QwNDQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gJFNvdXJjZSQKLS8vICREYXRlOiAyMDExLTA0LTI1IDA1OjI2OjQ4IC0wNzAwIChNb24sIDI1IEFwciAyMDExKSAkCi0vLyAkUmV2aXNpb246IDcxNDgxICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMSh0cmFpdCxULHJlc3VsdCkgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdHJhaXQgXAoteyBcCi1wdWJsaWM6XAotICAgIHR5cGVkZWYgcmVzdWx0IHR5cGU7IFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsdHJhaXQsKFQpKSBcCi19OyBcCi1cCi1ORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLHRyYWl0KSBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfU1BFQzEodHJhaXQsc3BlYyxyZXN1bHQpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PHNwZWM+IFwKLXsgXAotcHVibGljOlwKLSAgICB0eXBlZGVmIHJlc3VsdCB0eXBlOyBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDEsdHJhaXQsKHNwZWMpKSBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9TUEVDMSh0cmFpdCxzcGVjLHJlc3VsdCkgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQjI19pbXBsPHNwZWM+IFwKLXsgXAotcHVibGljOlwKLSAgICB0eXBlZGVmIHJlc3VsdCB0eXBlOyBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHBhcmFtLHRyYWl0LHNwZWMscmVzdWx0KSBcCi10ZW1wbGF0ZTwgcGFyYW0gPiBzdHJ1Y3QgdHJhaXQ8c3BlYz4gXAoteyBcCi1wdWJsaWM6XAotICAgIHR5cGVkZWYgcmVzdWx0IHR5cGU7IFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIocGFyYW0xLHBhcmFtMix0cmFpdCxzcGVjLHJlc3VsdCkgXAotdGVtcGxhdGU8IHBhcmFtMSwgcGFyYW0yID4gc3RydWN0IHRyYWl0PHNwZWM+IFwKLXsgXAotcHVibGljOlwKLSAgICB0eXBlZGVmIHJlc3VsdDsgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMV8xKHBhcmFtLHRyYWl0LHNwZWMscmVzdWx0KSBcCi10ZW1wbGF0ZTwgcGFyYW0gPiBzdHJ1Y3QgdHJhaXQjI19pbXBsPHNwZWM+IFwKLXsgXAotcHVibGljOlwKLSAgICB0eXBlZGVmIHJlc3VsdCB0eXBlOyBcCi19OyBcCi0vKiovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjQ2MzMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAkU291cmNlJAotLy8gJERhdGU6IDIwMDQtMDktMDIgMDg6NDE6MzcgLTA3MDAgKFRodSwgMDIgU2VwIDIwMDQpICQKLS8vICRSZXZpc2lvbjogMjQ4NzQgJAotCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9TUEVDMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMV8xCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTZiNjU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9XUkFQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfV1JBUF9IUFBfSU5DTFVERUQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3Qgd3JhcCB7fTsKLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ojp0eXBlX3RyYWl0cwotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX1dSQVBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0OTg3N2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgYW5kIFN0ZXZlIENsZWFyeSAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgbWFjcm9zIGFuZCBoZWxwZXJzIGZvciB3b3JraW5nIHdpdGggaW50ZWdyYWwtY29uc3RhbnQtZXhwcmVzc2lvbnMuCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX1lFU19OT19UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfWUVTX05PX1RZUEVfSFBQX0lOQ0xVREVECi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10eXBlZGVmIGNoYXIgeWVzX3R5cGU7Ci1zdHJ1Y3Qgbm9fdHlwZQotewotICAgY2hhciBwYWRkaW5nWzhdOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfWUVTX05PX1RZUEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2V4dGVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2V4dGVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ZGU1NDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9leHRlbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9FWFRFTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0VYVEVOVF9IUFBfSU5DTFVERUQKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0gICAgLy8gd3JhcCB0aGUgaW1wbCBhcyBtYWluIHRyYWl0IHByb3ZpZGVzIGFkZGl0aW9uYWwgTVBMIGxhbWJkYSBzdXBwb3J0Ci0gICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOID4KLSAgICBzdHJ1Y3QgZXh0ZW50X2ltcCB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCB2YWx1ZSA9IF9fYXJyYXlfZXh0ZW50KFQsIE4pOwotICAgIH07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXAKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAwKTsKLX07Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUiwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wPFRbUl0sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIGNvbnN0W1JdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCwgTi0xPjo6dmFsdWUpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSLCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VCB2b2xhdGlsZVtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUiwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgY29uc3Qgdm9sYXRpbGVbUl0sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFI+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUW1JdLDA+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gUik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgY29uc3RbUl0sIDA+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gUik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgdm9sYXRpbGVbUl0sIDA+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gUik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgY29uc3Qgdm9sYXRpbGVbUl0sIDA+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gUik7Ci19OwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkgJiYgIWRlZmluZWQoX19NV0VSS1NfXykKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VFtdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCwgTi0xPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgY29uc3RbXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIHZvbGF0aWxlW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdCB2b2xhdGlsZVtdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCwgTi0xPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBleHRlbnRfaW1wPFRbXSwgMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAwKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBleHRlbnRfaW1wPFQgY29uc3RbXSwgMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAwKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBleHRlbnRfaW1wPFQgdm9sYXRpbGVbXSwgMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAwKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBleHRlbnRfaW1wPFQgY29uc3Qgdm9sYXRpbGVbXSwgMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAwKTsKLX07Ci0jZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgIC8vIG5vbi1Db2RlR2VhciBpbXBsZW1lbnRhdGlvbgotfSAgIC8vIDo6bmRuYm9vc3Q6OmRldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTiA9IDA+Ci1zdHJ1Y3QgZXh0ZW50Ci0gICA6IHB1YmxpYyA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsTj46OnZhbHVlPgotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULE4+Ojp2YWx1ZT4gYmFzZV87IAotICAgdXNpbmcgYmFzZV86OnZhbHVlOwotI2VuZGlmCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGV4dGVudCwoVCkpCi19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc3NGRhMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Zsb2F0aW5nX3BvaW50X3Byb21vdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSBBbGV4YW5kZXIgTmFzb25vdi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX2Zsb2F0aW5nX3BvaW50X3Byb21vdGlvbl9ocHBfSU5DTFVERUQKLSNkZWZpbmUgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19mbG9hdGluZ19wb2ludF9wcm9tb3Rpb25faHBwX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbXVsdGlwbGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BsdXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2VuZGlmCi0KLS8vIFNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGZsb2F0aW5nX3BvaW50X3Byb21vdGlvbgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZsb2F0aW5nX3BvaW50X3Byb21vdGlvbjxmbG9hdD4KLXsKLSAgICB0eXBlZGVmIGRvdWJsZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZsb2F0aW5nX3BvaW50X3Byb21vdGlvbjxmbG9hdCBjb25zdD4KLXsKLSAgICB0eXBlZGVmIGRvdWJsZSBjb25zdCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZsb2F0aW5nX3BvaW50X3Byb21vdGlvbjxmbG9hdCB2b2xhdGlsZT4KLXsKLSAgICB0eXBlZGVmIGRvdWJsZSB2b2xhdGlsZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZsb2F0aW5nX3BvaW50X3Byb21vdGlvbjxmbG9hdCBjb25zdCB2b2xhdGlsZT4KLXsKLSAgICB0eXBlZGVmIGRvdWJsZSBjb25zdCB2b2xhdGlsZSB0eXBlOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBmbG9hdGluZ19wb2ludF9wcm9tb3Rpb24KLSAgOiBtcGw6OmF0PAotICAgICAgICBtcGw6OnZlY3RvcjwgVCwgZG91YmxlLCBkb3VibGUgY29uc3QsIGRvdWJsZSB2b2xhdGlsZSwKLSAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBjb25zdCB2b2xhdGlsZSA+Ci0gICAgICAsIG1wbDo6cGx1czwKLSAgICAgICAgICAgIGlzX3NhbWU8VCwgZmxvYXQ+Ci0gICAgICAgICAgLCBtcGw6Om11bHRpcGxpZXM8IGlzX3NhbWU8VCwgZmxvYXQgY29uc3Q+ICAgICAgICAgLCBtcGw6OmludF88Mj4gPgotICAgICAgICAgICwgbXBsOjptdWx0aXBsaWVzPCBpc19zYW1lPFQsIGZsb2F0IHZvbGF0aWxlPiAgICAgICwgbXBsOjppbnRfPDM+ID4KLSAgICAgICAgICAsIG1wbDo6bXVsdGlwbGllczwgaXNfc2FtZTxULCBmbG9hdCBjb25zdCB2b2xhdGlsZT4sIG1wbDo6aW50Xzw0PiA+Ci0gICAgICAgICAgPgotICAgICAgPgotewotfTsKLQotI2VuZGlmCi0KLX0gfQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKAotICAgICAgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uCi0gICAgLCBUCi0gICAgLCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6ZGV0YWlsOjpmbG9hdGluZ19wb2ludF9wcm9tb3Rpb248VD46OnR5cGUKLSAgICApCi19Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uX2hwcF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Z1bmN0aW9uX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Z1bmN0aW9uX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMjYwZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9mdW5jdGlvbl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM2ICswLDAgQEAKLQotLy8gIENvcHlyaWdodCAyMDAwIEpvaG4gTWFkZG9jayAoam9obkBqb2hubWFkZG9jay5jby51aykKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfRlVOQ1RJT05fVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9GVU5DVElPTl9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPiBzdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKHZvaWQpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gMCk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gMSk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJndW1lbnRfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxLCBUMik+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSAyKTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDEgZmlyc3RfYXJndW1lbnRfdHlwZTsKLSAgdHlwZWRlZiBUMiBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSwgVDIsIFQzKT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDMpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxLCBUMiwgVDMsIFQ0KT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDQpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci0gIHR5cGVkZWYgVDQgYXJnNF90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNT4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxLCBUMiwgVDMsIFQ0LCBUNSk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSA1KTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDMgYXJnM190eXBlOwotICB0eXBlZGVmIFQ0IGFyZzRfdHlwZTsKLSAgdHlwZWRlZiBUNSBhcmc1X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gNik7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLSAgdHlwZWRlZiBUNCBhcmc0X3R5cGU7Ci0gIHR5cGVkZWYgVDUgYXJnNV90eXBlOwotICB0eXBlZGVmIFQ2IGFyZzZfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3KT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDcpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci0gIHR5cGVkZWYgVDQgYXJnNF90eXBlOwotICB0eXBlZGVmIFQ1IGFyZzVfdHlwZTsKLSAgdHlwZWRlZiBUNiBhcmc2X3R5cGU7Ci0gIHR5cGVkZWYgVDcgYXJnN190eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSA4KTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDMgYXJnM190eXBlOwotICB0eXBlZGVmIFQ0IGFyZzRfdHlwZTsKLSAgdHlwZWRlZiBUNSBhcmc1X3R5cGU7Ci0gIHR5cGVkZWYgVDYgYXJnNl90eXBlOwotICB0eXBlZGVmIFQ3IGFyZzdfdHlwZTsKLSAgdHlwZWRlZiBUOCBhcmc4X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gOSk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLSAgdHlwZWRlZiBUNCBhcmc0X3R5cGU7Ci0gIHR5cGVkZWYgVDUgYXJnNV90eXBlOwotICB0eXBlZGVmIFQ2IGFyZzZfdHlwZTsKLSAgdHlwZWRlZiBUNyBhcmc3X3R5cGU7Ci0gIHR5cGVkZWYgVDggYXJnOF90eXBlOwotICB0eXBlZGVmIFQ5IGFyZzlfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LAotICAgICAgICAgdHlwZW5hbWUgVDEwPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwKT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDEwKTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDMgYXJnM190eXBlOwotICB0eXBlZGVmIFQ0IGFyZzRfdHlwZTsKLSAgdHlwZWRlZiBUNSBhcmc1X3R5cGU7Ci0gIHR5cGVkZWYgVDYgYXJnNl90eXBlOwotICB0eXBlZGVmIFQ3IGFyZzdfdHlwZTsKLSAgdHlwZWRlZiBUOCBhcmc4X3R5cGU7Ci0gIHR5cGVkZWYgVDkgYXJnOV90eXBlOwotICB0eXBlZGVmIFQxMCBhcmcxMF90eXBlOwotfTsKLQotfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHMgOiAKLSAgcHVibGljIG5kbmJvb3N0OjpkZXRhaWw6OmZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8dHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9wb2ludGVyPEZ1bmN0aW9uPjo6dHlwZT4KLXsKLX07Ci0KLSNlbHNlCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx1bnNpZ25lZCBOPiAKLXN0cnVjdCB0eXBlX29mX3NpemUKLXsKLSAgY2hhciBlbGVtZW50c1tOXTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFI+Ci10eXBlX29mX3NpemU8MT4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKSgpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDE+Ci10eXBlX29mX3NpemU8Mj4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSkpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci10eXBlX29mX3NpemU8Mz4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLXR5cGVfb2Zfc2l6ZTw0PiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMiwgVDMpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci10eXBlX29mX3NpemU8NT4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCkpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1PgotdHlwZV9vZl9zaXplPDY+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyLCBUMywgVDQsIFQ1KSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2PgotdHlwZV9vZl9zaXplPDc+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNikpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci10eXBlX29mX3NpemU8OD4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNykpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PgotdHlwZV9vZl9zaXplPDk+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4KSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5PgotdHlwZV9vZl9zaXplPDEwPiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVDkpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksCi0gICAgICAgICB0eXBlbmFtZSBUMTA+Ci10eXBlX29mX3NpemU8MTE+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUOSwgVDEwKSk7Ci19IC8vIGVuZCBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vIFdvbid0IHdvcmsgd2l0aCByZWZlcmVuY2VzCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHMKLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IChzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6ZnVuY3Rpb25fYXJpdHlfaGVscGVyKChGdW5jdGlvbiopMCkpLTEpKTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9GVU5DVElPTl9UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTJkMGU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfQklUX0FORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0JJVF9BTkRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfYml0X2FuZAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAmCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfYW5kX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfYW5kX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjZjY1ZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZF9hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfQklUX0FORF9BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19CSVRfQU5EX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19iaXRfYW5kX2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAmPQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09Y29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTk3NjUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19CSVRfT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19CSVRfT1JfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfYml0X29yCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIHwKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9vcl9hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNzM0MzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19CSVRfT1JfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfQklUX09SX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19iaXRfb3JfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIHw9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X3hvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgzYTRmYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0JJVF9YT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19CSVRfWE9SX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2JpdF94b3IKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgXgotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X3hvcl9hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X3hvcl9hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2ZhM2FmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3JfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0JJVF9YT1JfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfQklUX1hPUl9BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfYml0X3hvcl9hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgXj0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PWNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19jb21wbGVtZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2NvbXBsZW1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjdmNmZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2NvbXBsZW1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfQ09NUExFTUVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0NPTVBMRU1FTlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfY29tcGxlbWVudAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCB+Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogcG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAvKiBmdW5kYW1lbnRhbCBub24gaW50ZWdyYWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kZXJlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kZXJlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2ZjI1NWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGVyZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfREVSRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19ERVJFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19kZXJlZmVyZW5jZQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAqCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHZvaWQqIG9yIGZ1bmRhbWVudGFsICovXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFlNzllYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0RJVklERVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19ESVZJREVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2RpdmlkZXMKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgLwotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICAvKiBwb2ludGVyIHdpdGggcG9pbnRlciBvciBmdW5kYW1lbnRhbCAqL1wKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMzE1MGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGl2aWRlc19hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfRElWSURFU19BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19ESVZJREVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19kaXZpZGVzX2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAvPQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIExocz09Y29uc3QgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIChSaHM9PWZ1bmRhbWVudGFsIG9yIFJocz09cG9pbnRlcikgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIChMaHM9PWZ1bmRhbWVudGFsIG9yIExocz09cG9pbnRlcikgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQxMjllOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19FUVVBTF9UT19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2VxdWFsX3RvCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QID09Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgTGhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciBhbmQgTGhzIT1iYXNlKFJocykgYW5kIFJocyE9YmFzZShMaHMpIGFuZCBMaHMhPXZvaWQqIGFuZCBSaHMhPXZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IFJoc19ub3B0ciwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWQ3ZGY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfR1JFQVRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0dSRUFURVJfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfZ3JlYXRlcgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCA+Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgTGhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciBhbmQgTGhzIT1iYXNlKFJocykgYW5kIFJocyE9YmFzZShMaHMpIGFuZCBMaHMhPXZvaWQqIGFuZCBSaHMhPXZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IFJoc19ub3B0ciwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2U2YzkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfR1JFQVRFUl9FUVVBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0dSRUFURVJfRVFVQUxfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfZ3JlYXRlcl9lcXVhbAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCA+PQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgYW5kIExocyE9YmFzZShSaHMpIGFuZCBSaHMhPWJhc2UoTGhzKSBhbmQgTGhzIT12b2lkKiBhbmQgUmhzIT12b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBSaHNfbm9wdHIsIExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlXAotICAgICAgICAgICAgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY2ZDM0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xFRlRfU0hJRlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19MRUZUX1NISUZUX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xlZnRfc2hpZnQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPDwKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnRfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnRfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRmMzVlOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0X2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19MRUZUX1NISUZUX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0xFRlRfU0hJRlRfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xlZnRfc2hpZnRfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIDw8PQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09Y29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MmMyNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19MRVNTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTEVTU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19sZXNzCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIDwKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyIGFuZCBMaHMhPWJhc2UoUmhzKSBhbmQgUmhzIT1iYXNlKExocykgYW5kIExocyE9dm9pZCogYW5kIFJocyE9dm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgUmhzX25vcHRyLCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgICAgICAgID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMmEyNWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19MRVNTX0VRVUFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTEVTU19FUVVBTF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19sZXNzX2VxdWFsCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIDw9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgTGhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciBhbmQgTGhzIT1iYXNlKFJocykgYW5kIFJocyE9YmFzZShMaHMpIGFuZCBMaHMhPXZvaWQqIGFuZCBSaHMhPXZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IFJoc19ub3B0ciwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwYmNhOGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTE9HSUNBTF9BTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19MT0dJQ0FMX0FORF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19sb2dpY2FsX2FuZAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAmJgotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICAvKiBwb2ludGVyIHdpdGggZnVuZGFtZW50YWwgbm9uIGNvbnZlcnRpYmxlIHRvIGJvb2wgKi9cCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPCBSaHNfbm9jdiwgYm9vbCA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8IExoc19ub2N2LCBib29sID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfbm90LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfbm90LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE2Y2Q0NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX25vdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19MT0dJQ0FMX05PVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0xPR0lDQUxfTk9UX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xvZ2ljYWxfbm90Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICEKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgZmFsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZDFkMDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19MT0dJQ0FMX09SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTE9HSUNBTF9PUl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19sb2dpY2FsX29yCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIHx8Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHBvaW50ZXIgd2l0aCBmdW5kYW1lbnRhbCBub24gY29udmVydGlibGUgdG8gYm9vbCAqL1wKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8IFJoc19ub2N2LCBib29sID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwgTGhzX25vY3YsIGJvb2wgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGQ2ZTA1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX01JTlVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTUlOVVNfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbWludXMKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgLQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzIT1pbnRlZ3JhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXZvaWQqIGFuZCAoUmhzPT1mdW5kYW1lbnRhbCBvciBSaHM9PXBvaW50ZXIpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09dm9pZCogYW5kIChMaHM9PWZ1bmRhbWVudGFsIG9yIExocz09cG9pbnRlcikgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPWZ1bmRhbWVudGFsIGFuZCBSaHM9cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiB0d28gZGlmZmVyZW50IHBvaW50ZXJzICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vY3YsIFJoc19ub2N2ID46OnZhbHVlID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51c19hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbWludXNfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkxYjgzZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51c19hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTUlOVVNfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTUlOVVNfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX21pbnVzX2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAtPQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzIT1pbnRlZ3JhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXZvaWQqIGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXZvaWQqIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9ZnVuZGFtZW50YWwgYW5kIFJocz1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIChMaHM9PWZ1bmRhbWVudGFsIG9yIExocz09cG9pbnRlcikgYW5kIChSaHM9PWZ1bmRhbWVudGFsIG9yIFJocz09cG9pbnRlcikgYW5kIChMaHM9PWNvbnN0KSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZjhlOWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19NT0RVTFVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTU9EVUxVU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19tb2R1bHVzCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICUKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21vZHVsdXNfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21vZHVsdXNfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQxMmVlMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19NT0RVTFVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX01PRFVMVVNfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX21vZHVsdXNfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICU9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbXVsdGlwbGllcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUzZWVhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX01VTFRJUExJRVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19NVUxUSVBMSUVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX211bHRpcGxpZXMKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgKgotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICAvKiBwb2ludGVyIHdpdGggcG9pbnRlciBvciBmdW5kYW1lbnRhbCAqL1wKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNzA4NTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbXVsdGlwbGllc19hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTVVMVElQTElFU19BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19NVUxUSVBMSUVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19tdWx0aXBsaWVzX2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAqPQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIExocz09Y29uc3QgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIChSaHM9PWZ1bmRhbWVudGFsIG9yIFJocz09cG9pbnRlcikgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIChMaHM9PWZ1bmRhbWVudGFsIG9yIExocz09cG9pbnRlcikgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25lZ2F0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19uZWdhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWUzYTgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25lZ2F0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19ORUdBVEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19ORUdBVEVfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbmVnYXRlCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgLyogcG9pbnRlciAqL1wKLSAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19uZXdfb3BlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmV3X29wZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk5YzFmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19uZXdfb3BlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgUnVuYXIgVW5kaGVpbSwgUm9iZXJ0IFJhbWV5ICYgSm9obiBNYWRkb2NrIDIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19ORVdfT1BFUkFUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19ORVdfT1BFUkFUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZXc+IC8vIHN0ZDo6bm90aHJvd190Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4gLy8gc3RkOjpzaXplX3QKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgVSB4PiAKLSAgICBzdHJ1Y3QgdGVzdDsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBoYXNfbmV3X29wZXJhdG9yX2ltcGwgewotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZzEoCi0gICAgICAgICAgICBVKiwgCi0gICAgICAgICAgICB0ZXN0PAotICAgICAgICAgICAgdm9pZCAqKCopKHN0ZDo6c2l6ZV90KSwKLSAgICAgICAgICAgICAgICAmVTo6b3BlcmF0b3IgbmV3Ci0gICAgICAgICAgICA+KiA9IE5VTEwKLSAgICAgICAgKTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrX3NpZzEoLi4uKTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZzIoCi0gICAgICAgICAgICBVKiwgCi0gICAgICAgICAgICB0ZXN0PAotICAgICAgICAgICAgdm9pZCAqKCopKHN0ZDo6c2l6ZV90LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpLAotICAgICAgICAgICAgICAgICZVOjpvcGVyYXRvciBuZXcKLSAgICAgICAgICAgID4qID0gTlVMTAotICAgICAgICApOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2tfc2lnMiguLi4pOwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnMygKLSAgICAgICAgICAgIFUqLCAKLSAgICAgICAgICAgIHRlc3Q8Ci0gICAgICAgICAgICB2b2lkICooKikoc3RkOjpzaXplX3QsIHZvaWQqKSwKLSAgICAgICAgICAgICAgICAmVTo6b3BlcmF0b3IgbmV3Ci0gICAgICAgICAgICA+KiA9IE5VTEwKLSAgICAgICAgKTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrX3NpZzMoLi4uKTsKLQotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnNCgKLSAgICAgICAgICAgIFUqLCAKLSAgICAgICAgICAgIHRlc3Q8Ci0gICAgICAgICAgICB2b2lkICooKikoc3RkOjpzaXplX3QpLAotICAgICAgICAgICAgICAgICZVOjpvcGVyYXRvciBuZXdbXQotICAgICAgICAgICAgPiogPSBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVja19zaWc0KC4uLik7Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWc1KAotICAgICAgICAgICAgVSosIAotICAgICAgICAgICAgdGVzdDwKLSAgICAgICAgICAgIHZvaWQgKigqKShzdGQ6OnNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSwKLSAgICAgICAgICAgICAgICAmVTo6b3BlcmF0b3IgbmV3W10KLSAgICAgICAgICAgID4qID0gTlVMTAotICAgICAgICApOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2tfc2lnNSguLi4pOwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnNigKLSAgICAgICAgICAgIFUqLCAKLSAgICAgICAgICAgIHRlc3Q8Ci0gICAgICAgICAgICB2b2lkICooKikoc3RkOjpzaXplX3QsIHZvaWQqKSwKLSAgICAgICAgICAgICAgICAmVTo6b3BlcmF0b3IgbmV3W10KLSAgICAgICAgICAgID4qID0gTlVMTAotICAgICAgICApOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2tfc2lnNiguLi4pOwotCi0gICAgICAgIC8vIEdDQzIgd29uJ3QgZXZlbiBwYXJzZSB0aGlzIHRlbXBsYXRlIGlmIHdlIGVtYmVkIHRoZSBjb21wdXRhdGlvbgotICAgICAgICAvLyBvZiBzMSBpbiB0aGUgY29tcHV0YXRpb24gb2YgdmFsdWUuCi0gICAgICAgICNpZmRlZiBfX0dOVUNfXwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzMSA9IHNpemVvZihoYXNfbmV3X29wZXJhdG9yX2ltcGw8VD46OnRlbXBsYXRlIGNoZWNrX3NpZzE8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczIgPSBzaXplb2YoaGFzX25ld19vcGVyYXRvcl9pbXBsPFQ+Ojp0ZW1wbGF0ZSBjaGVja19zaWcyPFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHMzID0gc2l6ZW9mKGhhc19uZXdfb3BlcmF0b3JfaW1wbDxUPjo6dGVtcGxhdGUgY2hlY2tfc2lnMzxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzNCA9IHNpemVvZihoYXNfbmV3X29wZXJhdG9yX2ltcGw8VD46OnRlbXBsYXRlIGNoZWNrX3NpZzQ8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczUgPSBzaXplb2YoaGFzX25ld19vcGVyYXRvcl9pbXBsPFQ+Ojp0ZW1wbGF0ZSBjaGVja19zaWc1PFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHM2ID0gc2l6ZW9mKGhhc19uZXdfb3BlcmF0b3JfaW1wbDxUPjo6dGVtcGxhdGUgY2hlY2tfc2lnNjxUPigwKSkpOwotICAgICAgICAjZWxzZQotICAgICAgICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotICAgICAgICAgICAgICAgICNwcmFnbWEgd2FybmluZyhwdXNoKQotICAgICAgICAgICAgICAgICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjYzMzQpCi0gICAgICAgICAgICAjZW5kaWYKLQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzMSA9IHNpemVvZihjaGVja19zaWcxPFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHMyID0gc2l6ZW9mKGNoZWNrX3NpZzI8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczMgPSBzaXplb2YoY2hlY2tfc2lnMzxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzNCA9IHNpemVvZihjaGVja19zaWc0PFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHM1ID0gc2l6ZW9mKGNoZWNrX3NpZzU8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczYgPSBzaXplb2YoY2hlY2tfc2lnNjxUPigwKSkpOwotCi0gICAgICAgICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0gICAgICAgICAgICAgICAgI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSAgICAgICAgICAgICNlbmRpZgotICAgICAgICAjZW5kaWYKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgKHMxID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSwKLSAgICAgICAgICAgIChzMiA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSksCi0gICAgICAgICAgICAoczMgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpLAotICAgICAgICAgICAgKHM0ID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSwKLSAgICAgICAgICAgIChzNSA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSksCi0gICAgICAgICAgICAoczYgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpCi0gICAgICAgICAgID46OnZhbHVlKQotICAgICAgICApOwotICAgIH07Ci19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfbmV3X29wZXJhdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfbmV3X29wZXJhdG9yX2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX05FV19PUEVSQVRPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTVmMmM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19OT1RfRVFVQUxfVE9fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19OT1RfRVFVQUxfVE9fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbm90X2VxdWFsX3RvCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICE9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgTGhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciBhbmQgTGhzIT1iYXNlKFJocykgYW5kIFJocyE9YmFzZShMaHMpIGFuZCBMaHMhPXZvaWQqIGFuZCBSaHMhPXZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IFJoc19ub3B0ciwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNGVlMjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTk9USFJPV19BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Fzc2lnbi5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGhhc19ub3Rocm93X2Fzc2lnbl9pbXB7Ci0jaWZuZGVmIE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfYXNzaWduPFQ+Ojp2YWx1ZSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOKFQpKTsKLSNlbmRpZgotfTsKLQotfQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc19ub3Rocm93X2Fzc2lnbixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX25vdGhyb3dfYXNzaWduX2ltcDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19hc3NpZ24sdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2Fzc2lnbix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfYXNzaWduLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19hc3NpZ24sdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQVNTSUdOX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb25zdHJ1Y3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvbnN0cnVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThiYWYxZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvbnN0cnVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBoYXNfbm90aHJvd19jb25zdHJ1Y3Rvcl9pbXB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SKFQpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxUPjo6dmFsdWUpOwotI2VuZGlmCi19OwotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX25vdGhyb3dfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc19ub3Rocm93X2NvbnN0cnVjdG9yX2ltcDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc19ub3Rocm93X2NvbnN0cnVjdG9yX2ltcDxUPjo6dmFsdWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvbnN0cnVjdG9yLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29uc3RydWN0b3Isdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvbnN0cnVjdG9yLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3Rvcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3Rvcix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29weS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvcHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzU5Y2EzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29weS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0NPUFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0NPUFlfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb3B5LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaGFzX25vdGhyb3dfY29weV9pbXB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29weTxUPjo6dmFsdWUpOwotI2VuZGlmCi19OwotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX25vdGhyb3dfY29weSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX25vdGhyb3dfY29weV9pbXA8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfbm90aHJvd19jb3B5X2ltcDxUPjo6dmFsdWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHksdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHksdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHksdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHksdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdG9yLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdG9yLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdG9yLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdG9yLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0NPUFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Rlc3RydWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19kZXN0cnVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MxMWNhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Rlc3RydWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTk9USFJPV19ERVNUUlVDVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTk9USFJPV19ERVNUUlVDVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX25vdGhyb3dfZGVzdHJ1Y3RvcixULDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX05PVEhST1dfREVTVFJVQ1RPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX29wZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX29wZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYzZDg3YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19vcGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19PUEVSQVRPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX09QRVJBVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfYW5kX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9vcl9hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X3hvcl9hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19jb21wbGVtZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGVyZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZGl2aWRlc19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19lcXVhbF90by5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ncmVhdGVyX2VxdWFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnRfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlc3NfZXF1YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21pbnVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbWludXNfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21vZHVsdXNfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbXVsdGlwbGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXNfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmVnYXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90X2VxdWFsX3RvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3BsdXNfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9kZWNyZW1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2luY3JlbWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9kZWNyZW1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wcmVfaW5jcmVtZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19yaWdodF9zaGlmdF9hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9taW51cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3VuYXJ5X3BsdXMuaHBwPgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyZTgxNTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19QTFVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUExVU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19wbHVzCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICsKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXZvaWQqIGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXZvaWQqIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIFJocyE9aW50ZWdyYWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHMhPWludGVncmFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1c19hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1c19hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGFhMjhlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3BsdXNfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1BMVVNfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUExVU19BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcGx1c19hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgKz0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXZvaWQqIGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXZvaWQqIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIFJocyE9aW50ZWdyYWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHMhPWJvb2wgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPCBMaHNfbm9jdiwgYm9vbCA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIChMaHM9PWZ1bmRhbWVudGFsIG9yIExocz09cG9pbnRlcikgYW5kIChSaHM9PWZ1bmRhbWVudGFsIG9yIFJocz09cG9pbnRlcikgYW5kIChMaHM9PWNvbnN0KSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3Bvc3RfZGVjcmVtZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3Bvc3RfZGVjcmVtZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZkNzc3MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2RlY3JlbWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19QT1NUX0RFQ1JFTUVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1BPU1RfREVDUkVNRU5UX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3Bvc3RfZGVjcmVtZW50Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC0tCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogYm9vbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IGJvb2wsIExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgIC8qIHZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIChmdW5kYW1lbnRhbCBvciBwb2ludGVyKSBhbmQgY29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3Bvc3RmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9pbmNyZW1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9pbmNyZW1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDkyOWFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3Bvc3RfaW5jcmVtZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1BPU1RfSU5DUkVNRU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUE9TVF9JTkNSRU1FTlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcG9zdF9pbmNyZW1lbnQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgKysKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBib29sICovXAotICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgYm9vbCwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgLyogdm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogKGZ1bmRhbWVudGFsIG9yIHBvaW50ZXIpIGFuZCBjb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcG9zdGZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wcmVfZGVjcmVtZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9kZWNyZW1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTYyMzhlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9kZWNyZW1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUFJFX0RFQ1JFTUVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1BSRV9ERUNSRU1FTlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcHJlX2RlY3JlbWVudAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAtLQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIGJvb2wgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBib29sLCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAvKiB2b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiAoZnVuZGFtZW50YWwgb3IgcG9pbnRlcikgYW5kIGNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2luY3JlbWVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wcmVfaW5jcmVtZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQwYzEzYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wcmVfaW5jcmVtZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1BSRV9JTkNSRU1FTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19QUkVfSU5DUkVNRU5UX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3ByZV9pbmNyZW1lbnQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgKysKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBib29sICovXAotICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgYm9vbCwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgLyogdm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogKGZ1bmRhbWVudGFsIG9yIHBvaW50ZXIpIGFuZCBjb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EwNWI3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19yaWdodF9zaGlmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19SSUdIVF9TSElGVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1JJR0hUX1NISUZUX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3JpZ2h0X3NoaWZ0Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QID4+Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19yaWdodF9zaGlmdF9hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnRfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVlOGMyNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19yaWdodF9zaGlmdF9hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUklHSFRfU0hJRlRfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUklHSFRfU0hJRlRfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3JpZ2h0X3NoaWZ0X2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCA+Pj0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PWNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkOGEyZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfdHJpdmlhbF9hc3NpZ25faW1wbAotewotI2lmZGVmIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlLAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfYXNzaWduLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfdHJpdmlhbF9hc3NpZ25faW1wbDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9hc3NpZ24sdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Fzc2lnbix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfYXNzaWduLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9hc3NpZ24sdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQVNTSUdOX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvbnN0cnVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAyNWJkMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvbnN0cnVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaGFzX3RyaXZpYWxfY3Rvcl9pbXBsCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUsCi0gICAgICAgICBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKQotICAgICAgPjo6dmFsdWUpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlLAotICAgICAgICAgZmFsc2UKLSAgICAgID46OnZhbHVlKSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX2NvbnN0cnVjdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfdHJpdmlhbF9jdG9yX2ltcGw8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfdHJpdmlhbF9jdG9yX2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvcHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb3B5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I5ZTg4Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvcHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9DT1BZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9DT1BZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaGFzX3RyaXZpYWxfY29weV9pbXBsCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlID46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdHJpdmlhbF9jb3B5LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfdHJpdmlhbF9jb3B5X2ltcGw8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfdHJpdmlhbF9jb3B5X2ltcGw8VD46OnZhbHVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5LHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5LHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5LHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5LHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3Rvcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3Rvcix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9DT1BZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViODNhZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc190cml2aWFsX2R0b3JfaW1wbAotewotI2lmZGVmIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUpOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdHJpdmlhbF9kZXN0cnVjdG9yLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfdHJpdmlhbF9kdG9yX2ltcGw8VD46OnZhbHVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9kZXN0cnVjdG9yLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9kZXN0cnVjdG9yLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9kZXN0cnVjdG9yLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9kZXN0cnVjdG9yLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0RFU1RSVUNUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDY3ZWZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIChDKSBDb3B5cmlnaHQgRXJpYyBGcmllZG1hbiAyMDAyLTIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBBbnRvbnkgUG9sdWtoaW4gMjAxMy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX01PVkVfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc190cml2aWFsX21vdmVfYXNzaWduX2ltcGwKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQVNTSUdOKFQpKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlLAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlID46OnZhbHVlCi0gICAgICAgICAgID46OnZhbHVlKSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX21vdmVfYXNzaWduLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbl9pbXBsPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX21vdmVfYXNzaWduLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24sdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX21vdmVfYXNzaWduLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX01PVkVfQVNTSUdOX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlOWM5NWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICAoQykgQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMi0yMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgQW50b255IFBvbHVraGluIDIwMTMuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX01PVkVfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX01PVkVfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfdHJpdmlhbF9tb3ZlX2N0b3JfaW1wbAotewotI2lmZGVmIE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQ09OU1RSVUNUT1IKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SKFQpKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlLAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlID46OnZhbHVlCi0gICAgICAgICAgID46OnZhbHVlKSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX21vdmVfY3Rvcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3Rvcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3Rvcix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjc5NWRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3VuYXJ5X21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1VOQVJZX01JTlVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVU5BUllfTUlOVVNfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfdW5hcnlfbWludXMKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgLQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICAvKiBwb2ludGVyICovXAotICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3VuYXJ5X3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NmFmNmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19VTkFSWV9QTFVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVU5BUllfUExVU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc191bmFyeV9wbHVzCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICsKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgZmFsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ZpcnR1YWxfZGVzdHJ1Y3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc192aXJ0dWFsX2Rlc3RydWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjQ0ZWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ZpcnR1YWxfZGVzdHJ1Y3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvcixULE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdmlydHVhbF9kZXN0cnVjdG9yLFQsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDJlZTk5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIGFuZCBTdGV2ZSBDbGVhcnkgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0vLwotLy8gIG1hY3JvcyBhbmQgaGVscGVycyBmb3Igd29ya2luZyB3aXRoIGludGVncmFsLWNvbnN0YW50LWV4cHJlc3Npb25zLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lDRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSUNFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfZXEuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSUNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiOTA1MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfSU5URUdSQUxfQ09OU1RBTlRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0lOVEVHUkFMX0NPTlNUQU5UX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0RFUEVOREVOVF9UWVBFU19JTl9URU1QTEFURV9WQUxVRV9QQVJBTUVURVJTKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKLXRlbXBsYXRlIDxjbGFzcyBULCBpbnQgdmFsPgotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBULCBUIHZhbD4KLSNlbmRpZgotc3RydWN0IGludGVncmFsX2NvbnN0YW50IDogcHVibGljIG1wbDo6aW50ZWdyYWxfYzxULCB2YWw+Ci17Ci0gICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PFQsdmFsPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCx0cnVlPiA6IHB1YmxpYyBtcGw6OnRydWVfIAotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQwOTcpCi0gICB0eXBlZGVmIG1wbDo6dHJ1ZV8gYmFzZV87Ci0gICB1c2luZyBiYXNlXzo6dmFsdWU7Ci0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotICAgdHlwZWRlZiBpbnRlZ3JhbF9jb25zdGFudDxib29sLHRydWU+IHR5cGU7Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCxmYWxzZT4gOiBwdWJsaWMgbXBsOjpmYWxzZV8gCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDA5NykKLSAgIHR5cGVkZWYgbXBsOjpmYWxzZV8gYmFzZV87Ci0gICB1c2luZyBiYXNlXzo6dmFsdWU7Ci0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotICAgdHlwZWRlZiBpbnRlZ3JhbF9jb25zdGFudDxib29sLGZhbHNlPiB0eXBlOwotfTsKLQotdHlwZWRlZiBpbnRlZ3JhbF9jb25zdGFudDxib29sLHRydWU+IHRydWVfdHlwZTsKLXR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCxmYWxzZT4gZmFsc2VfdHlwZTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfcHJvbW90aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfcHJvbW90aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg3MTE0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX3Byb21vdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUgQWxleGFuZGVyIE5hc29ub3YuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19pbnRlZ3JhbF9wcm9tb3Rpb25faHBwX0lOQ0xVREVECi0jZGVmaW5lIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfaW50ZWdyYWxfcHJvbW90aW9uX2hwcF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0KLS8vIFNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyA0LjUvMgotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBuZWVkX3Byb21vdGlvbiA6IHB1YmxpYyBuZG5ib29zdDo6aXNfZW51bTxUPiB7fTsKLQotLy8gNC41LzEKLXRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPGNoYXIgICAgICAgICAgICAgID4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb248c2lnbmVkIGNoYXIgICAgICAgPiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjx1bnNpZ25lZCBjaGFyICAgICA+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPHNpZ25lZCBzaG9ydCBpbnQgID4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb248dW5zaWduZWQgc2hvcnQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci0KLQotLy8gU3BlY2lhbGl6YXRpb25zIGZvciBub24tc3RhbmRhcmQgdHlwZXMuCi0vLyBUeXBlIGlzIHByb21vdGVkIGlmIGl0J3Mgc21hbGxlciB0aGVuIGludC4KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKFQpIFwKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjxUPiAgICAgICAgICBcCi0gICAgICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIChzaXplb2YoVCkgPCBzaXplb2YoaW50KSk+IHt9OwotCi0vLyBTYW1lIHNldCBvZiBpbnRlZ3JhbCB0eXBlcyBhcyBpbiBuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHAuCi0vLyBQbGVhc2UsIGtlZXAgaW4gc3luYy4KLSNpZiAoZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEzMDApKSBcCi0gICAgfHwgKGRlZmluZWQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pICYmIGRlZmluZWQoX01TQ19WRVIpICYmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA2MDApKSBcCi0gICAgfHwgKGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID09IDB4NjAwKSAmJiAoX01TQ19WRVIgPCAxMzAwKSkKLS8vIFRPRE86IGNvbW1vbiBtYWNybyBmb3IgdGhpcyAjaWYuIE9yIGJldHRlciB5ZXQsIFBQIFNFUSBvZiBub24tc3RhbmRhcmQgdHlwZXMuCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKF9faW50OCAgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKHVuc2lnbmVkIF9faW50OCApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKF9faW50MTYgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKHVuc2lnbmVkIF9faW50MTYpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKF9faW50MzIgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKHVuc2lnbmVkIF9faW50MzIpCi0jaWZkZWYgX19CT1JMQU5EQ19fCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKHVuc2lnbmVkIF9faW50NjQpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKCAgICAgICAgIF9faW50NjQpCi0jZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRShuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRShuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKHVuc2lnbmVkIF9faW50NjQpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKCAgICAgICAgIF9faW50NjQpCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUKLQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0vLyA0LjUvMgotdGVtcGxhdGU8PiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb248d2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwotI2VuZGlmCi0KLS8vIDQuNS8zIChpbnRlZ3JhbCBiaXQtZmllbGQpIGlzIG5vdCBzdXBwb3J0ZWQuCi0KLS8vIDQuNS80Ci10ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjxib29sPiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci0KLQotLy8gR2V0IHByb21vdGVkIHR5cGUgYnkgaW5kZXggYW5kIGN2IHF1YWxpZmllcnMuCi0KLXRlbXBsYXRlPGludCBJbmRleCwgaW50IElzQ29uc3QsIGludCBJc1ZvbGF0aWxlPiBzdHJ1Y3QgcHJvbW90ZV9mcm9tX2luZGV4OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoTixUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHByb21vdGVfZnJvbV9pbmRleDxOLDAsMD4geyB0eXBlZGVmIFQgdHlwZTsgfTsgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBwcm9tb3RlX2Zyb21faW5kZXg8TiwwLDE+IHsgdHlwZWRlZiBUIHZvbGF0aWxlIHR5cGU7IH07ICBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcHJvbW90ZV9mcm9tX2luZGV4PE4sMSwwPiB7IHR5cGVkZWYgVCBjb25zdCB0eXBlOyB9OyAgICAgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHByb21vdGVfZnJvbV9pbmRleDxOLDEsMT4geyB0eXBlZGVmIFQgY29uc3Qgdm9sYXRpbGUgdHlwZTsgfTsKLQotCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKDEsIGludCAgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKDIsIHVuc2lnbmVkIGludCApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKDMsIGxvbmcgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKDQsIHVuc2lnbmVkIGxvbmcpCi0KLQotLy8gV0FSTklORzogaW50ZWdyYWwgcHJvbW90aW9ucyB0byBub24tc3RhbmRhcmQgdHlwZXMKLS8vIGxvbmcgbG9uZyBhbmQgX19pbnQ2NCBhcmUgbm90IGRlZmluZWQgYnkgdGhlIHN0YW5kYXJkLgotLy8gQWRkaXRpb25hbCBzcGVjaWFsaXNhdGlvbnMgYW5kIG92ZXJsb2FkcyBzaG91bGRuJ3QKLS8vIGludHJvZHVjZSBhbWJpZ3VpdHksIHRob3VnaC4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoNSwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoNiwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSkKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWCg3LCBfX2ludDY0ICAgICAgICAgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWCg4LCB1bnNpZ25lZCBfX2ludDY0KQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYCi0KLQotLy8gRGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVI6Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykKLQotdGVtcGxhdGU8aW50IE4+Ci1zdHJ1Y3Qgc2l6ZWRfdHlwZV9mb3JfcHJvbW90aW9uCi17Ci0gICAgdHlwZWRlZiBjaGFyICgmdHlwZSlbTl07Ci19OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoSSxUKSBcCi0gICAgc2l6ZWRfdHlwZV9mb3JfcHJvbW90aW9uPEk+Ojp0eXBlIHByb21vdGVkX2luZGV4X3Rlc3RlcihUKTsKLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKEksVCkgXAotICAgIGNoYXIgKCZwcm9tb3RlZF9pbmRleF90ZXN0ZXIoVCkpW0ldOwotCi0jZW5kaWYKLQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUigxLCBpbnQgICAgICAgICAgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUigyLCB1bnNpZ25lZCBpbnQgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUigzLCBsb25nICAgICAgICAgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUig0LCB1bnNpZ25lZCBsb25nKQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUig1LCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUig2LCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDcsIF9faW50NjQgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDgsIHVuc2lnbmVkIF9faW50NjQpCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIKLQotCi0vLyBHZXQgYW4gaW5kZXggb2YgcHJvbW90ZWQgdHlwZSBmb3IgdHlwZSBULgotLy8gUHJlY29uZGl0aW9uOiBuZWVkX3Byb21vdGlvbjxUPgotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBwcm9tb3RlZF9pbmRleAotewotICAgIHN0YXRpYyBUIHRlc3RlZTsgLy8gdW5kZWZpbmVkCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBzaXplb2YocHJvbW90ZWRfaW5kZXhfdGVzdGVyKCt0ZXN0ZWUpKSApOwotICAgIC8vIFVuYXJ5IHBsdXMgcHJvbW90ZXMgdGVzdGVlICAgICAgICAgICAgICAgICAgICBMT09LIEhFUkUgLS0tPiBeCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGludGVncmFsX3Byb21vdGlvbl9pbXBsCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHByb21vdGVfZnJvbV9pbmRleDwKLSAgICAgICAgKG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6ZGV0YWlsOjpwcm9tb3RlZF9pbmRleDxUPjo6dmFsdWUpCi0gICAgICAsIChuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlKQotICAgICAgLCAobmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgaW50ZWdyYWxfcHJvbW90aW9uCi0gIDogcHVibGljIG5kbmJvb3N0OjptcGw6OmV2YWxfaWY8Ci0gICAgICAgIG5lZWRfcHJvbW90aW9uPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX2N2PFQ+Ojp0eXBlPgotICAgICAgLCBpbnRlZ3JhbF9wcm9tb3Rpb25faW1wbDxUPgotICAgICAgLCBuZG5ib29zdDo6bXBsOjppZGVudGl0eTxUPgotICAgICAgPgotewotfTsKLQotfSB9Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoCi0gICAgICBpbnRlZ3JhbF9wcm9tb3Rpb24KLSAgICAsIFQKLSAgICAsIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpkZXRhaWw6OmludGVncmFsX3Byb21vdGlvbjxUPjo6dHlwZQotICAgICkKLX0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19pbnRlZ3JhbF9wcm9tb3Rpb25faHBwX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzhiMmUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSU5UUklOU0lDU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSU5UUklOU0lDU19IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9UVF9DT05GSUdfSFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0vLwotLy8gSGVscGVyIG1hY3JvcyBmb3IgYnVpbHRpbiBjb21waWxlciBzdXBwb3J0LgotLy8gSWYgeW91ciBjb21waWxlciBoYXMgYnVpbHRpbiBzdXBwb3J0IGZvciBhbnkgb2YgdGhlIGZvbGxvd2luZwotLy8gdHJhaXRzIGNvbmNlcHRzLCB0aGVuIHJlZGVmaW5lIHRoZSBhcHByb3ByaWF0ZSBtYWNyb3MgdG8gcGljawotLy8gdXAgb24gdGhlIGNvbXBpbGVyIHN1cHBvcnQ6Ci0vLwotLy8gKHRoZXNlIHNob3VsZCBsYXJnZWx5IGlnbm9yZSBjdi1xdWFsaWZpZXJzKQotLy8gTkROQk9PU1RfSVNfVU5JT04oVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgVCBpcyBhIHVuaW9uIHR5cGUKLS8vIE5ETkJPT1NUX0lTX1BPRChUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiBUIGlzIGEgUE9EIHR5cGUKLS8vIE5ETkJPT1NUX0lTX0VNUFRZKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIFQgaXMgYW4gZW1wdHkgY2xhc3MgdHlwZSAoYW5kIG5vdCBhIHVuaW9uKQotLy8gTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgIlQgeDsiIGhhcyBubyBlZmZlY3QKLS8vIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgVCh0KSA8PT0+IG1lbWNweQotLy8gTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiBUKG5kbmJvb3N0Ojptb3ZlKHQpKSA8PT0+IG1lbWNweQotLy8gTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIHQgPSB1IDw9PT4gbWVtY3B5Ci0vLyBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiB0ID0gbmRuYm9vc3Q6Om1vdmUodSkgPD09PiBtZW1jcHkKLS8vIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgflQoKSBoYXMgbm8gZWZmZWN0Ci0vLyBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiAiVCB4OyIgY2FuIG5vdCB0aHJvdwotLy8gTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiBUKHQpIGNhbiBub3QgdGhyb3cKLS8vIE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiB0ID0gdSBjYW4gbm90IHRocm93Ci0vLyBORE5CT09TVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIFQgaGFzIGEgdmlydHVhbCBkZXN0cnVjdG9yCi0vLwotLy8gVGhlIGZvbGxvd2luZyBjYW4gYWxzbyBiZSBkZWZpbmVkOiB3aGVuIGRldGVjdGVkIG91ciBpbXBsZW1lbnRhdGlvbiBpcyBncmVhdGx5IHNpbXBsaWZpZWQuCi0vLwotLy8gTkROQk9PU1RfSVNfQUJTVFJBQ1QoVCkgdHJ1ZSBpZiBUIGlzIGFuIGFic3RyYWN0IHR5cGUKLS8vIE5ETkJPT1NUX0lTX0JBU0VfT0YoVCxVKSB0cnVlIGlmIFQgaXMgYSBiYXNlIGNsYXNzIG9mIFUKLS8vIE5ETkJPT1NUX0lTX0NMQVNTKFQpIHRydWUgaWYgVCBpcyBhIGNsYXNzIHR5cGUgKGFuZCBub3QgYSB1bmlvbikKLS8vIE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFKFQsVSkgdHJ1ZSBpZiBUIGlzIGNvbnZlcnRpYmxlIHRvIFUKLS8vIE5ETkJPT1NUX0lTX0VOVU0oVCkgdHJ1ZSBpcyBUIGlzIGFuIGVudW0KLS8vIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpIHRydWUgaWYgVCBpcyBhIHBvbHltb3JwaGljIHR5cGUKLS8vIE5ETkJPT1NUX0FMSUdOTUVOVF9PRihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgdHlwZSBULgotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1NHSV9UWVBFX1RSQUlUUwotICAgIC8vIEhvb2sgaW50byBTR0kncyBfX3R5cGVfdHJhaXRzIGNsYXNzLCB0aGlzIHdpbGwgcGljayB1cCB1c2VyIHN1cHBsaWVkCi0gICAgLy8gc3BlY2lhbGl6YXRpb25zIGFzIHdlbGwgYXMgU0dJIC0gY29tcGlsZXIgc3VwcGxpZWQgc3BlY2lhbGl6YXRpb25zLgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGlmZGVmIF9fTmV0QlNEX18KLSAgICAgIC8vIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHZlcnNpb25zIG9mIHR5cGVfdHJhaXRzLmggb24gTmV0QlNEIG9uIFNwYXJrCi0gICAgICAvLyB1c2UgYW4gaW1wbGljaXQgaW5jbHVkZSB2aWEgYWxnb3JpdGhtIGluc3RlYWQsIHRvIG1ha2Ugc3VyZSB3ZSBnZXQKLSAgICAgIC8vIHRoZSBzYW1lIHZlcnNpb24gYXMgdGhlIHN0ZCBsaWI6Ci0jICAgICBpbmNsdWRlIDxhbGdvcml0aG0+Ci0jICAgZWxzZQotIyAgICBpbmNsdWRlIDx0eXBlX3RyYWl0cy5oPgotIyAgIGVuZGlmCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPRChUKSA6Om5kbmJvb3N0Ojppc19zYW1lPCB0eXBlbmFtZSA6Ol9fdHlwZV90cmFpdHM8VD46OmlzX1BPRF90eXBlLCA6Ol9fdHJ1ZV90eXBlPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgOjpuZG5ib29zdDo6aXNfc2FtZTwgdHlwZW5hbWUgOjpfX3R5cGVfdHJhaXRzPFQ+OjpoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yLCA6Ol9fdHJ1ZV90eXBlPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSA6Om5kbmJvb3N0Ojppc19zYW1lPCB0eXBlbmFtZSA6Ol9fdHlwZV90cmFpdHM8VD46Omhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3IsIDo6X190cnVlX3R5cGU+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgOjpuZG5ib29zdDo6aXNfc2FtZTwgdHlwZW5hbWUgOjpfX3R5cGVfdHJhaXRzPFQ+OjpoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yLCA6Ol9fdHJ1ZV90eXBlPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSA6Om5kbmJvb3N0Ojppc19zYW1lPCB0eXBlbmFtZSA6Ol9fdHlwZV90cmFpdHM8VD46Omhhc190cml2aWFsX2Rlc3RydWN0b3IsIDo6X190cnVlX3R5cGU+Ojp2YWx1ZQotCi0jICAgaWZkZWYgX19zZ2kKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSMgICBlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fTVNMX0NQUF9fKSAmJiAoX19NU0xfQ1BQX18gPj0gMHg4MDAwKQotICAgIC8vIE1ldHJvd2Vya3MgY29tcGlsZXIgaXMgYWNxdWlyaW5nIGludHJpbnNpYyB0eXBlIHRyYWl0cyBzdXBwb3J0Ci0gICAgLy8gcG9zdCB2ZXJzaW9uIDguICBXZSBob29rIGludG8gdGhlIHB1Ymxpc2hlZCBpbnRlcmZhY2UgdG8gcGljayB1cAotICAgIC8vIHVzZXIgZGVmaW5lZCBzcGVjaWFsaXphdGlvbnMgYXMgd2VsbCBhcyBjb21waWxlciBpbnRyaW5zaWNzIGFzIAotICAgIC8vIGFuZCB3aGVuIHRoZXkgYmVjb21lIGF2YWlsYWJsZToKLSMgICBpbmNsdWRlIDxtc2xfdXRpbGl0eT4KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfVU5JT04oVCkgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0U6OmlzX3VuaW9uPFQ+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0U6OmlzX1BPRDxUPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0U6Omhhc190cml2aWFsX2RlZmF1bHRfY3RvcjxUPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aGFzX3RyaXZpYWxfY29weV9jdG9yPFQ+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0U6Omhhc190cml2aWFsX2Fzc2lnbm1lbnQ8VD46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0U6Omhhc190cml2aWFsX2R0b3I8VD46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UWVBFX1RSQUlUU19JTlRSSU5TSUNTCi0jZW5kaWYKLQotI2lmIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIGRlZmluZWQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUikgJiYgKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIgPj0xNDAwNTAyMTUpKVwKLSAgICAgICAgIHx8IChkZWZpbmVkKE5ETkJPT1NUX0lOVEVMKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTUwMCkpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1VOSU9OKFQpIF9faXNfdW5pb24oVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIChfX2lzX3BvZChUKSAmJiBfX2hhc190cml2aWFsX2NvbnN0cnVjdG9yKFQpKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19FTVBUWShUKSBfX2lzX2VtcHR5KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpIF9faGFzX3RyaXZpYWxfY29uc3RydWN0b3IoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSAoX19oYXNfdHJpdmlhbF9jb3B5KFQpfHwgKCA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlICYmICE6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgKF9faGFzX3RyaXZpYWxfYXNzaWduKFQpIHx8ICggOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSAmJiAhIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSAmJiAhOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSAoX19oYXNfdHJpdmlhbF9kZXN0cnVjdG9yKFQpIHx8IDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SKFQpIChfX2hhc19ub3Rocm93X2NvbnN0cnVjdG9yKFQpIHx8IDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2NvbnN0cnVjdG9yPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSAoX19oYXNfbm90aHJvd19jb3B5KFQpIHx8IDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2NvcHk8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkgKF9faGFzX25vdGhyb3dfYXNzaWduKFQpIHx8IDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2Fzc2lnbjxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgX19oYXNfdmlydHVhbF9kZXN0cnVjdG9yKFQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQUJTVFJBQ1QoVCkgX19pc19hYnN0cmFjdChUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19CQVNFX09GKFQsVSkgKF9faXNfYmFzZV9vZihULFUpICYmICFpc19zYW1lPFQsVT46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19DTEFTUyhUKSBfX2lzX2NsYXNzKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFKFQsVSkgKChfX2lzX2NvbnZlcnRpYmxlX3RvKFQsVSkgfHwgKGlzX3NhbWU8VCxVPjo6dmFsdWUgJiYgIWlzX2Z1bmN0aW9uPFU+Ojp2YWx1ZSkpICYmICFfX2lzX2Fic3RyYWN0KFUpKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19FTlVNKFQpIF9faXNfZW51bShUKQotLy8gIFRoaXMgb25lIGRvZXNuJ3QgcXVpdGUgYWx3YXlzIGRvIHRoZSByaWdodCB0aGluZzoKLS8vICAjICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpIF9faXNfcG9seW1vcnBoaWMoVCkKLS8vICBUaGlzIG9uZSBmYWlscyBpZiB0aGUgZGVmYXVsdCBhbGlnbm1lbnQgaGFzIGJlZW4gY2hhbmdlZCB3aXRoIC9acDoKLS8vICAjICAgZGVmaW5lIE5ETkJPT1NUX0FMSUdOTUVOVF9PRihUKSBfX2FsaWdub2YoVCkKLQotIyAgIGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxNzAwKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUihUKSAoKF9faGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3RvcihUKSB8fCA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlKSAmJiAhOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR04oVCkgKChfX2hhc190cml2aWFsX21vdmVfYXNzaWduKFQpIHx8IDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUpICYmICEgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlICYmICE6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFlQRV9UUkFJVFNfSU5UUklOU0lDUwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fRE1DX18pICYmIChfX0RNQ19fID49IDB4ODQ4KQotLy8gRm9yIERpZ2l0YWwgTWFycyBDKyssIHd3dy5kaWdpdGFsbWFycy5jb20KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfVU5JT04oVCkgKF9fdHlwZWluZm8oVCkgJiAweDQwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIChfX3R5cGVpbmZvKFQpICYgMHg4MDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VNUFRZKFQpIChfX3R5cGVpbmZvKFQpICYgMHgxMDAwKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSAoX190eXBlaW5mbyhUKSAmIDB4MTApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgKF9fdHlwZWluZm8oVCkgJiAweDIwKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgKF9fdHlwZWluZm8oVCkgJiAweDQwKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIChfX3R5cGVpbmZvKFQpICYgMHg4KQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUihUKSAoX190eXBlaW5mbyhUKSAmIDB4ODApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkoVCkgKF9fdHlwZWluZm8oVCkgJiAweDEwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOKFQpIChfX3R5cGVpbmZvKFQpICYgMHgyMDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgKF9fdHlwZWluZm8oVCkgJiAweDQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UWVBFX1RSQUlUU19JTlRSSU5TSUNTCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQ0xBTkcpICYmIGRlZmluZWQoX19oYXNfZmVhdHVyZSkKLSMgICBpbmNsdWRlIDxjc3RkZGVmPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotCi0jICAgaWYgX19oYXNfZmVhdHVyZShpc191bmlvbikKLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19VTklPTihUKSBfX2lzX3VuaW9uKFQpCi0jICAgZW5kaWYKLSMgICBpZiAoIWRlZmluZWQoX19HTElCQ1hYX18pIHx8IChfX0dMSUJDWFhfXyA+PSAyMDA4MDMwNiAmJiBfX0dMSUJDWFhfXyAhPSAyMDA4MDUxOSkpICYmIF9faGFzX2ZlYXR1cmUoaXNfcG9kKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPRChUKSBfX2lzX3BvZChUKQotIyAgIGVuZGlmCi0jICAgaWYgKCFkZWZpbmVkKF9fR0xJQkNYWF9fKSB8fCAoX19HTElCQ1hYX18gPj0gMjAwODAzMDYgJiYgX19HTElCQ1hYX18gIT0gMjAwODA1MTkpKSAmJiBfX2hhc19mZWF0dXJlKGlzX2VtcHR5KQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VNUFRZKFQpIF9faXNfZW1wdHkoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX3RyaXZpYWxfY29uc3RydWN0b3IpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgX19oYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcihUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfdHJpdmlhbF9jb3B5KQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgKF9faGFzX3RyaXZpYWxfY29weShUKSAmJiAhaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfdHJpdmlhbF9hc3NpZ24pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpIChfX2hhc190cml2aWFsX2Fzc2lnbihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfdHJpdmlhbF9kZXN0cnVjdG9yKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgX19oYXNfdHJpdmlhbF9kZXN0cnVjdG9yKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc19ub3Rocm93X2NvbnN0cnVjdG9yKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SKFQpIF9faGFzX25vdGhyb3dfY29uc3RydWN0b3IoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX25vdGhyb3dfY29weSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpIChfX2hhc19ub3Rocm93X2NvcHkoVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSAmJiAhaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX25vdGhyb3dfYXNzaWduKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTihUKSAoX19oYXNfbm90aHJvd19hc3NpZ24oVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvcikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SKFQpIF9faGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvcihUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShpc19hYnN0cmFjdCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19BQlNUUkFDVChUKSBfX2lzX2Fic3RyYWN0KFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX2Jhc2Vfb2YpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfQkFTRV9PRihULFUpIChfX2lzX2Jhc2Vfb2YoVCxVKSAmJiAhaXNfc2FtZTxULFU+Ojp2YWx1ZSkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaXNfY2xhc3MpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfQ0xBU1MoVCkgX19pc19jbGFzcyhUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShpc19jb252ZXJ0aWJsZV90bykKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcD4KLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19DT05WRVJUSUJMRShULFUpIChfX2lzX2NvbnZlcnRpYmxlX3RvKFQsVSkgJiYgITo6bmRuYm9vc3Q6OmlzX2Fic3RyYWN0PFU+Ojp2YWx1ZSkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaXNfZW51bSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19FTlVNKFQpIF9faXNfZW51bShUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShpc19wb2x5bW9ycGhpYykKLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19QT0xZTU9SUEhJQyhUKSBfX2lzX3BvbHltb3JwaGljKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUihUKSBfX2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR04oVCkgX19oYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbihUKQotIyAgIGVuZGlmCi0jICAgZGVmaW5lIE5ETkJPT1NUX0FMSUdOTUVOVF9PRihUKSBfX2FsaWdub2YoVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFlQRV9UUkFJVFNfSU5UUklOU0lDUwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykgJiYgIWRlZmluZWQoX19HQ0NYTUxfXykpKSAmJiAhZGVmaW5lZChORE5CT09TVF9DTEFORykKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX0lOVEVMCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfVFRfT1BUUyB8fCBpc19wb2Q8VD46OnZhbHVlCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVMX1RUX09QVFMKLSNlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1VOSU9OKFQpIF9faXNfdW5pb24oVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIF9faXNfcG9kKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VNUFRZKFQpIF9faXNfZW1wdHkoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgKChfX2hhc190cml2aWFsX2NvbnN0cnVjdG9yKFQpIE5ETkJPT1NUX0lOVEVMX1RUX09QVFMpICYmICEgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpICgoX19oYXNfdHJpdmlhbF9jb3B5KFQpIE5ETkJPT1NUX0lOVEVMX1RUX09QVFMpICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlICYmICEgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgKChfX2hhc190cml2aWFsX2Fzc2lnbihUKSBORE5CT09TVF9JTlRFTF9UVF9PUFRTKSAmJiAhIDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSAmJiAhIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSAoX19oYXNfdHJpdmlhbF9kZXN0cnVjdG9yKFQpIE5ETkJPT1NUX0lOVEVMX1RUX09QVFMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SKFQpIChfX2hhc19ub3Rocm93X2NvbnN0cnVjdG9yKFQpIE5ETkJPT1NUX0lOVEVMX1RUX09QVFMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkoVCkgKChfX2hhc19ub3Rocm93X2NvcHkoVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSAmJiAhaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOKFQpICgoX19oYXNfbm90aHJvd19hc3NpZ24oVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSAmJiAhaXNfY29uc3Q8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SKFQpIF9faGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvcihUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0FCU1RSQUNUKFQpIF9faXNfYWJzdHJhY3QoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQkFTRV9PRihULFUpIChfX2lzX2Jhc2Vfb2YoVCxVKSAmJiAhaXNfc2FtZTxULFU+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQ0xBU1MoVCkgX19pc19jbGFzcyhUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19FTlVNKFQpIF9faXNfZW51bShUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0xZTU9SUEhJQyhUKSBfX2lzX3BvbHltb3JwaGljKFQpCi0jICAgaWYgKCFkZWZpbmVkKHVuaXgpICYmICFkZWZpbmVkKF9fdW5peF9fKSkgfHwgZGVmaW5lZChfX0xQNjRfXykKLSAgICAgIC8vIEdDQyBzb21ldGltZXMgbGllcyBhYm91dCBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzCi0gICAgICAvLyBvZiB0eXBlIGRvdWJsZSBvbiAzMi1iaXQgdW5peCBwbGF0Zm9ybXMsIHVzZSB0aGUKLSAgICAgIC8vIG9sZCBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIGluIHRoYXQgY2FzZToKLSMgICAgIGRlZmluZSBORE5CT09TVF9BTElHTk1FTlRfT0YoVCkgX19hbGlnbm9mX18oVCkKLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UWVBFX1RSQUlUU19JTlRSSU5TSUNTCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19naHNfXykgJiYgKF9fR0hTX1ZFUlNJT05fTlVNQkVSID49IDYwMCkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19VTklPTihUKSBfX2lzX3VuaW9uKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPRChUKSBfX2lzX3BvZChUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19FTVBUWShUKSBfX2lzX2VtcHR5KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpIF9faGFzX3RyaXZpYWxfY29uc3RydWN0b3IoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSAoX19oYXNfdHJpdmlhbF9jb3B5KFQpICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSAoX19oYXNfdHJpdmlhbF9hc3NpZ24oVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSBfX2hhc190cml2aWFsX2Rlc3RydWN0b3IoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgX19oYXNfbm90aHJvd19jb25zdHJ1Y3RvcihUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpIChfX2hhc19ub3Rocm93X2NvcHkoVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSAmJiAhaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOKFQpIChfX2hhc19ub3Rocm93X2Fzc2lnbihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SKFQpIF9faGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvcihUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0FCU1RSQUNUKFQpIF9faXNfYWJzdHJhY3QoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQkFTRV9PRihULFUpIChfX2lzX2Jhc2Vfb2YoVCxVKSAmJiAhaXNfc2FtZTxULFU+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQ0xBU1MoVCkgX19pc19jbGFzcyhUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19FTlVNKFQpIF9faXNfZW51bShUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0xZTU9SUEhJQyhUKSBfX2lzX3BvbHltb3JwaGljKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0FMSUdOTUVOVF9PRihUKSBfX2FsaWdub2ZfXyhUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UWVBFX1RSQUlUU19JTlRSSU5TSUNTCi0jZW5kaWYKLQotIyBpZiBkZWZpbmVkKF9fQ09ERUdFQVJDX18pCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfVU5JT04oVCkgX19pc191bmlvbihUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgX19pc19wb2QoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU1QVFkoVCkgX19pc19lbXB0eShUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSAoX19oYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yKFQpKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIChfX2hhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3IoVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSAmJiAhaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpIChfX2hhc190cml2aWFsX2Fzc2lnbihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIChfX2hhc190cml2aWFsX2Rlc3RydWN0b3IoVCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SKFQpIChfX2hhc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0b3IoVCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkoVCkgKF9faGFzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RvcihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkgKF9faGFzX25vdGhyb3dfYXNzaWduKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgX19oYXNfdmlydHVhbF9kZXN0cnVjdG9yKFQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQUJTVFJBQ1QoVCkgX19pc19hYnN0cmFjdChUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19CQVNFX09GKFQsVSkgKF9faXNfYmFzZV9vZihULFUpICYmICFpc192b2lkPFQ+Ojp2YWx1ZSAmJiAhaXNfdm9pZDxVPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0NMQVNTKFQpIF9faXNfY2xhc3MoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQ09OVkVSVElCTEUoVCxVKSAoX19pc19jb252ZXJ0aWJsZShULFUpIHx8IGlzX3ZvaWQ8VT46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19FTlVNKFQpIF9faXNfZW51bShUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0xZTU9SUEhJQyhUKSBfX2lzX3BvbHltb3JwaGljKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0FMSUdOTUVOVF9PRihUKSBhbGlnbm9mKFQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSU5UUklOU0lDU19IUFBfSU5DTFVERUQKLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYzMDI5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0FCU1RSQUNUX0NMQVNTX0hQUAotI2RlZmluZSBORE5CT09TVF9UVF9JU19BQlNUUkFDVF9DTEFTU19IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vLy8vLy8vLzEvLy8vLy8vLy8yLy8vLy8vLy8vMy8vLy8vLy8vLzQvLy8vLy8vLy81Ly8vLy8vLy8vNi8vLy8vLy8vLzcvLy8vLy8vLy84Ci0vLyBpc19hYnN0cmFjdF9jbGFzcy5ocHA6Ci0vLwotLy8gIChDKSBDb3B5cmlnaHQgMjAwMiBSYW5pIFNoYXJvbmkgKHJhbmlfc2hhcm9uaUBob3RtYWlsLmNvbSkgYW5kIFJvYmVydCBSYW1leQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vICAKLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotLy8KLQotLy8gQ29tcGlsZSB0eXBlIGRpc2NvdmVyeSB3aGV0aGVyIGdpdmVuIHR5cGUgaXMgYWJzdHJhY3QgY2xhc3Mgb3Igbm90LgotLy8KLS8vICAgUmVxdWlyZXMgRFIgMzM3IHRvIGJlIHN1cHBvcnRlZCBieSBjb21waWxlcgotLy8gICAoaHR0cDovL2FudWJpcy5ka3V1Zy5kay9qdGMxL3NjMjIvd2cyMS9kb2NzL2N3Z19hY3RpdmUuaHRtbCMzMzcpLgotLy8KLS8vCi0vLyBCZWxpZXZlZCAoSmFuIDIwMDQpIHRvIHdvcmsgb246Ci0vLyAgLSBHQ0MgMy40Ci0vLyAgLSBWQysrIDcuMQotLy8gIC0gY29tcGlsZXJzIHdpdGggbmV3IEVERyBmcm9udGVuZCAoSW50ZWwgQysrIDcsIENvbWVhdSA0LjMuMikKLS8vCi0vLyBEb2Vzbid0IHdvcmsgb246Ci0vLyAgLSBWQysrNiwgVkMrKzcuMCBhbmQgbGVzcwotLy8gIC0gR0NDIDMuMy5YIGFuZCBsZXNzCi0vLyAgLSBCb3JsYW5kIEMrKyA2IGFuZCBsZXNzCi0vLyAgICAgIAotLy8KLS8vIEhpc3Rvcnk6Ci0vLyAgLSBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUmFuaSBTaGFyb25pLCBzZWUKLS8vICAgIGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cHM/c2VsbT1kZjg5M2RhNi4wMjA3MTEwNjEzLjc1YjJmZTkwJTQwcG9zdGluZy5nb29nbGUuY29tCi0vLyAgICBBdCB0aGlzIHRpbWUgc3VwcG9ydGVkIGJ5IEVERyAoSW50ZWwgQysrIDcsIENvbWVhdSA0LjMuMikgYW5kIFZDNy4xLgotLy8gIC0gQWRhcHRlZCBhbmQgYWRkZWQgaW50byBCb29zdC5TZXJpYWxpemF0aW9uIGxpYnJhcnkgYnkgUm9iZXJ0IFJhbWV5IAotLy8gICAgKHN0YXJ0aW5nIHdpdGggc3VibWlzc2lvbiAjMTApLgotLy8gIC0gSmFuIDIwMDQ6IEdDQyAzLjQgZml4ZWQgdG8gc3VwcG9ydCBEUjMzNyAoR2lvdmFubmkgQmFqbykuCi0vLyAgLSBKYW4gMjAwNDogbW9kaWZpZWQgdG8gYmUgcGFydCBvZiBCb29zdC5UeXBlVHJhaXRzIChQYXZlbCBWb3plbmlsZWspLgotLy8gIC0gTm92IDIwMDQ6IENocmlzdG9waCBMdWR3aWcgZm91bmQgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gZGlkIG5vdCB3b3JrIHdpdGgKLS8vICAgICAgICAgICAgICB0ZW1wbGF0ZSB0eXBlcyBhbmQgZ2NjLTMuNCBvciBWQzcuMSwgZml4IGR1ZSB0byBDaHJpc3RvcGggTHVkd2lnCi0vLyAgICAgICAgICAgICAgYW5kIEpvaG4gTWFkZG9jay4KLS8vICAtIERlYyAyMDA0OiBBZGRlZCBuZXcgY29uZmlnIG1hY3JvIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUIHdoaWNoIGNhdXNlcyB0aGUgdGVtcGxhdGUKLS8vICAgICAgICAgICAgICB0byBkZWdyYWRlIGdyYWNlZnVsbHksIHJhdGhlciB0aGFuIHRyYXNoIHRoZSBjb21waWxlciAoSm9obiBNYWRkb2NrKS4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSVNfQUJTVFJBQ1QKLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2x5bW9ycGhpYy5ocHA+Ci0jZW5kaWYKLSNlbmRpZgotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbHsKLQotI2lmZGVmIE5ETkJPT1NUX0lTX0FCU1RSQUNUCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19hYnN0cmFjdF9pbXAKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IE5ETkJPT1NUX0lTX0FCU1RSQUNUKFQpKTsKLX07Ci0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19JU19BQlNUUkFDVCkKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfYWJzdHJhY3RfaW1wMgotewotICAgLy8gRGVkdWN0aW9uIGZhaWxzIGlmIFQgaXMgdm9pZCwgZnVuY3Rpb24gdHlwZSwgCi0gICAvLyByZWZlcmVuY2UgdHlwZSAoMTQuOC4yLzIpb3IgYW4gYWJzdHJhY3QgY2xhc3MgdHlwZSAKLSAgIC8vIGFjY29yZGluZyB0byByZXZpZXcgc3RhdHVzIGlzc3VlICMzMzcKLSAgIC8vCi0gICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgc3RhdGljIHR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrX3NpZyhVICgqKVsxXSk7Ci0gICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWcoLi4uKTsKLSAgIC8vCi0gICAvLyBUIG11c3QgYmUgYSBjb21wbGV0ZSB0eXBlLCBmdXJ0aGVyIGlmIFQgaXMgYSB0ZW1wbGF0ZSB0aGVuCi0gICAvLyBpdCBtdXN0IGJlIGluc3RhbnRpYXRlZCBpbiBvcmRlciBmb3IgdXMgdG8gZ2V0IHRoZSByaWdodCBhbnN3ZXI6Ci0gICAvLwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoVCkgIT0gMCk7Ci0KLSAgIC8vIEdDQzIgd29uJ3QgZXZlbiBwYXJzZSB0aGlzIHRlbXBsYXRlIGlmIHdlIGVtYmVkIHRoZSBjb21wdXRhdGlvbgotICAgLy8gb2YgczEgaW4gdGhlIGNvbXB1dGF0aW9uIG9mIHZhbHVlLgotI2lmZGVmIF9fR05VQ19fCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHMxID0gc2l6ZW9mKGlzX2Fic3RyYWN0X2ltcDI8VD46OnRlbXBsYXRlIGNoZWNrX3NpZzxUPigwKSkpOwotI2Vsc2UKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSNlbmRpZgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCBzMSA9IHNpemVvZihjaGVja19zaWc8VD4oMCkpKTsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNlbmRpZgotICAgIAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAoczEgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpKTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIHY+Ci1zdHJ1Y3QgaXNfYWJzdHJhY3Rfc2VsZWN0Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfYWJzdHJhY3RfaW1wMjxUPiB0eXBlOwotICAgfTsKLX07Ci10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2Fic3RyYWN0X3NlbGVjdDxmYWxzZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBmYWxzZV90eXBlIHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfYWJzdHJhY3RfaW1wCi17Ci0gICB0eXBlZGVmIGlzX2Fic3RyYWN0X3NlbGVjdDwgOjpuZG5ib29zdDo6aXNfY2xhc3M8VD46OnZhbHVlPiBzZWxlY3RvcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnRlbXBsYXRlIHJlYmluZDxUPiBiaW5kZXI7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJpbmRlcjo6dHlwZSB0eXBlOwotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0eXBlOjp2YWx1ZSk7Ci19OwotCi0jZW5kaWYKLX0KLQotI2lmbmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19hYnN0cmFjdCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYWJzdHJhY3RfaW1wPFQ+Ojp2YWx1ZSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Fic3RyYWN0LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19wb2x5bW9ycGhpY19pbXA8VD46OnZhbHVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RUX0lTX0FCU1RSQUNUX0NMQVNTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZjcwMTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQVJJVEhNRVRJQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQVJJVEhNRVRJQ19IUFBfSU5DTFVERUQKLQotI2lmICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmICFkZWZpbmVkKF9fQ09ERUdFQVJDX18pCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2FyaXRobWV0aWNfaW1wbAoteyAKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8IAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZmxvYXQ8VD46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKSk7IAotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0jZW5kaWYKLQotLy8qIGlzIGEgdHlwZSBUIGFuIGFyaXRobWV0aWMgdHlwZSBkZXNjcmliZWQgaW4gdGhlIHN0YW5kYXJkICgzLjkuMXA4KQotI2lmIGRlZmluZWQoX19DT0RFR0VBUkNfXykKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfYXJpdGhtZXRpYyxULF9faXNfYXJpdGhtZXRpYyhUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2FyaXRobWV0aWMsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2FyaXRobWV0aWNfaW1wbDxUPjo6dmFsdWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0FSSVRITUVUSUNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGZmNjUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotLy8gU29tZSBmaXhlcyBmb3IgaXNfYXJyYXkgYXJlIGJhc2VkIG9uIGEgbmV3c2dyb3VwIHBvc3RpbmcgYnkgSm9uYXRoYW4gTHVuZHF1aXN0LgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQVJSQVlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0FSUkFZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC93cmFwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19hcnJheSxULF9faXNfYXJyYXkoVCkpCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19hcnJheSxULGZhbHNlKQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixpc19hcnJheSxUW05dLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLGlzX2FycmF5LFQgY29uc3RbTl0sdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4saXNfYXJyYXksVCB2b2xhdGlsZVtOXSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixpc19hcnJheSxUIGNvbnN0IHZvbGF0aWxlW05dLHRydWUpCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2FycmF5LFRbXSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfYXJyYXksVCBjb25zdFtdLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19hcnJheSxUIHZvbGF0aWxlW10sdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2FycmF5LFQgY29uc3Qgdm9sYXRpbGVbXSx0cnVlKQotI2VuZGlmCi0jZW5kaWYKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGU7Ci11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6d3JhcDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBUKCogaXNfYXJyYXlfdGVzdGVyMSh3cmFwPFQ+KSApKHdyYXA8VD4pOwotY2hhciBORE5CT09TVF9UVF9ERUNMIGlzX2FycmF5X3Rlc3RlcjEoLi4uKTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQ+IG5vX3R5cGUgaXNfYXJyYXlfdGVzdGVyMihUKCopKHdyYXA8VD4pKTsKLXllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgaXNfYXJyYXlfdGVzdGVyMiguLi4pOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfYXJyYXlfaW1wbAoteyAKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYXJyYXlfdGVzdGVyMigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYXJyYXlfdGVzdGVyMSgKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6d3JhcDxUPigpCi0gICAgICAgICAgICAgICAgKQotICAgICAgICApKSA9PSAxCi0gICAgKTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfYXJyYXksdm9pZCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfYXJyYXksdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfYXJyYXksdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfYXJyYXksdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19hcnJheSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYXJyYXlfaW1wbDxUPjo6dmFsdWUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19BUlJBWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGMzNWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBSYW5pIFNoYXJvbmkgMjAwMy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0JBU0VfQU5EX0RFUklWRURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0JBU0VfQU5EX0RFUklWRURfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSVNfQkFTRV9PRgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9JU19CQVNFX09GCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODEpKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MgLCA8PSAweDU0MCkgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjQzKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgRURHIHZlcnNpb24gbnVtYmVyIGlzIGEgbG93ZXIgZXN0aW1hdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IGlzIG5vdCBjdXJyZW50bHkga25vd24gd2hpY2ggRURHIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhhY3RseSBmaXhlcyB0aGUgcHJvYmxlbS4KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotVGhpcyB2ZXJzaW9uIGRldGVjdHMgYW1iaWd1b3VzIGJhc2UgY2xhc3NlcyBhbmQgcHJpdmF0ZSBiYXNlIGNsYXNzZXMKLWNvcnJlY3RseSwgYW5kIHdhcyBkZXZpc2VkIGJ5IFJhbmkgU2hhcm9uaS4KLQotRXhwbGFuYXRpb24gYnkgVGVyamUgU2xldHRlYm8gYW5kIFJhbmkgU2hhcm9uaS4KLQotTGV0J3MgdGFrZSB0aGUgbXVsdGlwbGUgYmFzZSBjbGFzcyBiZWxvdyBhcyBhbiBleGFtcGxlLCBhbmQgdGhlIGZvbGxvd2luZwotd2lsbCBhbHNvIHNob3cgd2h5IHRoZXJlJ3Mgbm90IGEgcHJvYmxlbSB3aXRoIHByaXZhdGUgb3IgYW1iaWd1b3VzIGJhc2UKLWNsYXNzOgotCi1zdHJ1Y3QgQiB7fTsKLXN0cnVjdCBCMSA6IEIge307Ci1zdHJ1Y3QgQjIgOiBCIHt9Owotc3RydWN0IEQgOiBwcml2YXRlIEIxLCBwcml2YXRlIEIyIHt9OwotCi1pc19iYXNlX2FuZF9kZXJpdmVkPEIsIEQ+Ojp2YWx1ZTsKLQotRmlyc3QsIHNvbWUgdGVybWlub2xvZ3k6Ci0KLVNDICAtIFN0YW5kYXJkIGNvbnZlcnNpb24KLVVEQyAtIFVzZXItZGVmaW5lZCBjb252ZXJzaW9uCi0KLUEgdXNlci1kZWZpbmVkIGNvbnZlcnNpb24gc2VxdWVuY2UgY29uc2lzdHMgb2YgYW4gU0MsIGZvbGxvd2VkIGJ5IGFuIFVEQywKLWZvbGxvd2VkIGJ5IGFub3RoZXIgU0MuIEVpdGhlciBTQyBtYXkgYmUgdGhlIGlkZW50aXR5IGNvbnZlcnNpb24uCi0KLVdoZW4gcGFzc2luZyB0aGUgZGVmYXVsdC1jb25zdHJ1Y3RlZCBIb3N0IG9iamVjdCB0byB0aGUgb3ZlcmxvYWRlZCBjaGVja19zaWcoKQotZnVuY3Rpb25zIChpbml0aWFsaXphdGlvbiA4LjUvMTQvNC8zKSwgd2UgaGF2ZSBzZXZlcmFsIHZpYWJsZSBpbXBsaWNpdAotY29udmVyc2lvbiBzZXF1ZW5jZXM6Ci0KLUZvciAic3RhdGljIG5vX3R5cGUgY2hlY2tfc2lnKEIgY29uc3Qgdm9sYXRpbGUgKiwgaW50KSIgd2UgaGF2ZSB0aGUgY29udmVyc2lvbgotc2VxdWVuY2VzOgotCi1DIC0+IEMgY29uc3QgKFNDIC0gUXVhbGlmaWNhdGlvbiBBZGp1c3RtZW50KSAtPiBCIGNvbnN0IHZvbGF0aWxlKiAoVURDKQotQyAtPiBEIGNvbnN0IHZvbGF0aWxlKiAoVURDKSAtPiBCMSBjb25zdCB2b2xhdGlsZSogLyBCMiBjb25zdCB2b2xhdGlsZSogLT4KLSAgICAgQiBjb25zdCB2b2xhdGlsZSogKFNDIC0gQ29udmVyc2lvbikKLQotRm9yICJzdGF0aWMgeWVzX3R5cGUgY2hlY2tfc2lnKEQgY29uc3Qgdm9sYXRpbGUgKiwgVCkiIHdlIGhhdmUgdGhlIGNvbnZlcnNpb24KLXNlcXVlbmNlOgotCi1DIC0+IEQgY29uc3Qgdm9sYXRpbGUqIChVREMpCi0KLUFjY29yZGluZyB0byAxMy4zLjMuMS80LCBpbiBjb250ZXh0IG9mIHVzZXItZGVmaW5lZCBjb252ZXJzaW9uIG9ubHkgdGhlCi1zdGFuZGFyZCBjb252ZXJzaW9uIHNlcXVlbmNlIGlzIGNvbnNpZGVyZWQgd2hlbiBzZWxlY3RpbmcgdGhlIGJlc3QgdmlhYmxlCi1mdW5jdGlvbiwgc28gaXQgb25seSBjb25zaWRlcnMgdXAgdG8gdGhlIHVzZXItZGVmaW5lZCBjb252ZXJzaW9uLiBGb3IgdGhlCi1maXJzdCBmdW5jdGlvbiB0aGlzIG1lYW5zIGNob29zaW5nIGJldHdlZW4gQyAtPiBDIGNvbnN0IGFuZCBDIC0+IEMsIGFuZCBpdAotY2hvb3NlcyB0aGUgbGF0dGVyLCBiZWNhdXNlIGl0J3MgYSBwcm9wZXIgc3Vic2V0ICgxMy4zLjMuMi8zLzIpIG9mIHRoZQotZm9ybWVyLiBUaGVyZWZvcmUsIHdlIGhhdmU6Ci0KLUMgLT4gRCBjb25zdCB2b2xhdGlsZSogKFVEQykgLT4gQjEgY29uc3Qgdm9sYXRpbGUqIC8gQjIgY29uc3Qgdm9sYXRpbGUqIC0+Ci0gICAgIEIgY29uc3Qgdm9sYXRpbGUqIChTQyAtIENvbnZlcnNpb24pCi1DIC0+IEQgY29uc3Qgdm9sYXRpbGUqIChVREMpCi0KLUhlcmUsIHRoZSBwcmluY2lwbGUgb2YgdGhlICJzaG9ydGVzdCBzdWJzZXF1ZW5jZSIgYXBwbGllcyBhZ2FpbiwgYW5kIGl0Ci1jaG9vc2VzIEMgLT4gRCBjb25zdCB2b2xhdGlsZSouIFRoaXMgc2hvd3MgdGhhdCBpdCBkb2Vzbid0IGV2ZW4gbmVlZCB0bwotY29uc2lkZXIgdGhlIG11bHRpcGxlIHBhdGhzIHRvIEIsIG9yIGFjY2Vzc2liaWxpdHksIGFzIHRoYXQgcG9zc2liaWxpdHkgaXMKLWVsaW1pbmF0ZWQgYmVmb3JlIGl0IGNvdWxkIHBvc3NpYmx5IGNhdXNlIGFtYmlndWl0eSBvciBhY2Nlc3MgdmlvbGF0aW9uLgotCi1JZiBEIGlzIG5vdCBkZXJpdmVkIGZyb20gQiwgaXQgaGFzIHRvIGNob29zZSBiZXR3ZWVuIEMgLT4gQyBjb25zdCAtPiBCIGNvbnN0Ci12b2xhdGlsZSogZm9yIHRoZSBmaXJzdCBmdW5jdGlvbiwgYW5kIEMgLT4gRCBjb25zdCB2b2xhdGlsZSogZm9yIHRoZSBzZWNvbmQKLWZ1bmN0aW9uLCB3aGljaCBhcmUganVzdCBhcyBnb29kIChib3RoIHJlcXVpcmVzIGEgVURDLCAxMy4zLjMuMiksIGhhZCBpdCBub3QKLWJlZW4gZm9yIHRoZSBmYWN0IHRoYXQgInN0YXRpYyBub190eXBlIGNoZWNrX3NpZyhCIGNvbnN0IHZvbGF0aWxlICosIGludCkiIGlzCi1ub3QgdGVtcGxhdGVkLCB3aGljaCBtYWtlcyBDIC0+IEMgY29uc3QgLT4gQiBjb25zdCB2b2xhdGlsZSogdGhlIGJlc3QgY2hvaWNlCi0oMTMuMy4zLzEvNCksIHJlc3VsdGluZyBpbiAibm8iLgotCi1BbHNvLCBpZiBIb3N0OjpvcGVyYXRvciBCIGNvbnN0IHZvbGF0aWxlKiBoYWRuJ3QgYmVlbiBjb25zdCwgdGhlIHR3bwotY29udmVyc2lvbiBzZXF1ZW5jZXMgZm9yICJzdGF0aWMgbm9fdHlwZSBjaGVja19zaWcoQiBjb25zdCB2b2xhdGlsZSAqLCBpbnQpIiwgaW4KLXRoZSBjYXNlIHdoZXJlIEQgaXMgZGVyaXZlZCBmcm9tIEIsIHdvdWxkIGhhdmUgYmVlbiBhbWJpZ3VvdXMuCi0KLVNlZSBhbHNvCi1odHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXBzP3NlbG09ZGY4OTNkYTYuMDMwMTI4MDg1OS41MjIwODFmNyU0MHBvc3RpbmcuCi1nb29nbGUuY29tIGFuZCBsaW5rcyB0aGVyZWluLgotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQiwgdHlwZW5hbWUgRD4KLXN0cnVjdCBiZF9oZWxwZXIKLXsKLSAgIC8vCi0gICAvLyBUaGlzIFZDNy4xIHNwZWNpZmljIHdvcmthcm91bmQgc3RvcHMgdGhlIGNvbXBpbGVyIGZyb20gZ2VuZXJhdGluZwotICAgLy8gYW4gaW50ZXJuYWwgY29tcGlsZXIgZXJyb3Igd2hlbiBjb21waWxpbmcgd2l0aCAvdm1nICh0aGFua3MgdG8KLSAgIC8vIEFsZWtzZXkgR3VydG92b3kgZm9yIGZpZ3VyaW5nIG91dCB0aGUgd29ya2Fyb3VuZCkuCi0gICAvLwotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMTApCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWcoRCBjb25zdCB2b2xhdGlsZSAqLCBUKTsKLSAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgIGNoZWNrX3NpZyhCIGNvbnN0IHZvbGF0aWxlICosIGludCk7Ci0jZWxzZQotICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnKEQgY29uc3Qgdm9sYXRpbGUgKiwgbG9uZyk7Ci0gICAgc3RhdGljIHR5cGVfdHJhaXRzOjpub190eXBlICBjaGVja19zaWcoQiBjb25zdCB2b2xhdGlsZSAqIGNvbnN0JiwgaW50KTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQiwgdHlwZW5hbWUgRD4KLXN0cnVjdCBpc19iYXNlX2FuZF9kZXJpdmVkX2ltcGwyCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjYzMzQpCi0jZW5kaWYKLSAgICAvLwotICAgIC8vIE1heSBzaWxlbnRseSBkbyB0aGUgd3JvbmcgdGhpbmcgd2l0aCBpbmNvbXBsZXRlIHR5cGVzCi0gICAgLy8gdW5sZXNzIHdlIHRyYXAgdGhlbSBoZXJlOgotICAgIC8vCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoQikgIT0gMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoRCkgIT0gMCk7Ci0KLSAgICBzdHJ1Y3QgSG9zdAotICAgIHsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzEwKQotICAgICAgICBvcGVyYXRvciBCIGNvbnN0IHZvbGF0aWxlICooKSBjb25zdDsKLSNlbHNlCi0gICAgICAgIG9wZXJhdG9yIEIgY29uc3Qgdm9sYXRpbGUgKiBjb25zdCYoKSBjb25zdDsKLSNlbmRpZgotICAgICAgICBvcGVyYXRvciBEIGNvbnN0IHZvbGF0aWxlICooKTsKLSAgICB9OwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKGJkX2hlbHBlcjxCLEQ+OjpjaGVja19zaWcoSG9zdCgpLCAwKSkgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpOwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfTsKLQotI2Vsc2UKLQotLy8KLS8vIGJyb2tlbiB2ZXJzaW9uOgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEIsIHR5cGVuYW1lIEQ+Ci1zdHJ1Y3QgaXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsMgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxEKixCKj46OnZhbHVlKSk7Ci19OwotCi0jZGVmaW5lIE5ETkJPT1NUX0JST0tFTl9JU19CQVNFX0FORF9ERVJJVkVECi0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQiwgdHlwZW5hbWUgRD4KLXN0cnVjdCBpc19iYXNlX2FuZF9kZXJpdmVkX2ltcGwzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgaWMxLCBib29sIGljMiwgYm9vbCBpc3M+Ci1zdHJ1Y3QgaXNfYmFzZV9hbmRfZGVyaXZlZF9zZWxlY3QKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19iYXNlX2FuZF9kZXJpdmVkX2ltcGwzPFQsVT4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2Jhc2VfYW5kX2Rlcml2ZWRfc2VsZWN0PHRydWUsdHJ1ZSxmYWxzZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19iYXNlX2FuZF9kZXJpdmVkX2ltcGwyPFQsVT4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQiwgdHlwZW5hbWUgRD4KLXN0cnVjdCBpc19iYXNlX2FuZF9kZXJpdmVkX2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxCPjo6dHlwZSBuY3ZCOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PEQ+Ojp0eXBlIG5jdkQ7Ci0KLSAgICB0eXBlZGVmIGlzX2Jhc2VfYW5kX2Rlcml2ZWRfc2VsZWN0PAotICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NsYXNzPEI+Ojp2YWx1ZSwKLSAgICAgICA6Om5kbmJvb3N0Ojppc19jbGFzczxEPjo6dmFsdWUsCi0gICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTxuY3ZCLG5jdkQ+Ojp2YWx1ZT4gc2VsZWN0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dGVtcGxhdGUgcmViaW5kPG5jdkIsbmN2RD4gYmluZGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmluZGVyOjp0eXBlIGJvdW5kX3R5cGU7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBib3VuZF90eXBlOjp2YWx1ZSk7Ci19OwotI2Vsc2UKLXRlbXBsYXRlIDx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPgotc3RydWN0IGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PEI+Ojp0eXBlIG5jdkI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8RD46OnR5cGUgbmN2RDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChORE5CT09TVF9JU19CQVNFX09GKEIsRCkgJiYgISA6Om5kbmJvb3N0Ojppc19zYW1lPG5jdkIsbmN2RD46OnZhbHVlKSk7Ci19OwotI2VuZGlmCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMigKLSAgICAgIGlzX2Jhc2VfYW5kX2Rlcml2ZWQKLSAgICAsIEJhc2UKLSAgICAsIERlcml2ZWQKLSAgICAsICg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDxCYXNlLERlcml2ZWQ+Ojp2YWx1ZSkKLSAgICApCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc19iYXNlX2FuZF9kZXJpdmVkLEJhc2UmLERlcml2ZWQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX2Jhc2VfYW5kX2Rlcml2ZWQsQmFzZSxEZXJpdmVkJixmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfYmFzZV9hbmRfZGVyaXZlZCxCYXNlJixEZXJpdmVkJixmYWxzZSkKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIEJhc2UsaXNfYmFzZV9hbmRfZGVyaXZlZCxCYXNlLEJhc2UsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0JBU0VfQU5EX0RFUklWRURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2Vfb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX29mLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdiM2FhNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2Vfb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBSYW5pIFNoYXJvbmkgMjAwMy0yMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAKLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQkFTRV9PRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQkFTRV9PRl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgIG5hbWVzcGFjZSBkZXRhaWx7Ci0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQiwgY2xhc3MgRD4KLSAgICAgIHN0cnVjdCBpc19iYXNlX29mX2ltcAotICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PEI+Ojp0eXBlIG5jdkI7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8RD46OnR5cGUgbmN2RDsKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwgICAgICAKLSAgICAgICAgICAgICg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDxuY3ZCLG5jdkQ+Ojp2YWx1ZSksCi0gICAgICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8bmN2QixuY3ZEPjo6dmFsdWUsIDo6bmRuYm9vc3Q6OmlzX2NsYXNzPG5jdkI+Ojp2YWx1ZT46OnZhbHVlKT46OnZhbHVlKSk7Ci0gICAgICB9OwotICAgfQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKAotICAgICAgaXNfYmFzZV9vZgotICAgICwgQmFzZQotICAgICwgRGVyaXZlZAotICAgICwgKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYmFzZV9vZl9pbXA8QmFzZSwgRGVyaXZlZD46OnZhbHVlKSkKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX2Jhc2Vfb2YsQmFzZSYsRGVyaXZlZCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfYmFzZV9vZixCYXNlLERlcml2ZWQmLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc19iYXNlX29mLEJhc2UmLERlcml2ZWQmLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19CQVNFX0FORF9ERVJJVkVEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg4NWQ1Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAtMjAwMy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19DTEFTU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQ0xBU1NfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JU19DTEFTUwotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3VuaW9uLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfVFRfSEFTX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zY2FsYXIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSVNfQ0xBU1MKLQotI2lmZGVmIF9fRURHX1ZFUlNJT05fXwotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfSVNfQ0xBU1MKLSNpZmRlZiBORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTgotCi0vLyBUaGlzIGlzIGFjdHVhbGx5IHRoZSBjb25mb3JtaW5nIGltcGxlbWVudGF0aW9uIHdoaWNoIHdvcmtzIHdpdGgKLS8vIGFic3RyYWN0IGNsYXNzZXMuICBIb3dldmVyLCBlbm91Z2ggY29tcGlsZXJzIGhhdmUgdHJvdWJsZSB3aXRoCi0vLyBpdCB0aGF0IG1vc3Qgd2lsbCB1c2UgdGhlIG9uZSBpbgotLy8gbmRuYm9vc3QvdHlwZV90cmFpdHMvb2JqZWN0X3RyYWl0cy5ocHAuIFRoaXMgaW1wbGVtZW50YXRpb24KLS8vIGFjdHVhbGx5IHdvcmtzIHdpdGggVkM3LjAsIGJ1dCBvdGhlciBpbnRlcmFjdGlvbnMgc2VlbSB0byBmYWlsCi0vLyB3aGVuIHdlIHVzZSBpdC4KLQotLy8gaXNfY2xhc3M8PiBtZXRhZnVuY3Rpb24gZHVlIHRvIFBhdWwgTWVuc29uaWRlcwotLy8gKGxlYXZpbmdzQGF0dGJpLmNvbSkuIEZvciBtb3JlIGRldGFpbHM6Ci0vLyBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXBzP2hsPWVuJnNlbG09MDAwMDAxYzFjYzgzJTI0ZTE1NGQ1ZTAlMjQ3NzcyZTUwYyU0MGMxNjE1NTBhJnJudW09MQotI2lmIGRlZmluZWQoX19HTlVDX18pICAmJiAhZGVmaW5lZChfX0VER19WRVJTSU9OX18pCi0KLXRlbXBsYXRlIDxjbGFzcyBVPiA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfY2xhc3NfdGVzdGVyKHZvaWQoVTo6Kikodm9pZCkpOwotdGVtcGxhdGUgPGNsYXNzIFU+IDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGlzX2NsYXNzX3Rlc3RlciguLi4pOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jbGFzc19pbXBsCi17Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICBzaXplb2YoaXNfY2xhc3NfdGVzdGVyPFQ+KDApKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc191bmlvbjxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpCi0gICAgICAgICk7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jbGFzc19pbXBsCi17Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFU+IHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfY2xhc3NfdGVzdGVyKHZvaWQoVTo6Kikodm9pZCkpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfY2xhc3NfdGVzdGVyKC4uLik7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICBzaXplb2YoaXNfY2xhc3NfdGVzdGVyPFQ+KDApKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc191bmlvbjxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpCi0gICAgICAgICk7Ci19OwotCi0jZW5kaWYKLQotI2Vsc2UKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY2xhc3NfaW1wbAotewotIyAgIGlmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc191bmlvbjxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zY2FsYXI8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9pZDxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsKLSMgICBlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc191bmlvbjxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zY2FsYXI8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9pZDxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsKLSMgICBlbmRpZgotfTsKLQotIyBlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTgotIyBlbHNlIC8vIE5ETkJPT1NUX0lTX0NMQVNTCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jbGFzc19pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSVNfQ0xBU1MoVCkpOwotfTsKLSMgZW5kaWYgLy8gTkROQk9PU1RfSVNfQ0xBU1MKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSMgaWZkZWYgX19FREdfVkVSU0lPTl9fCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKAotICAgaXNfY2xhc3MsVCwgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2xhc3NfaW1wbDx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUpCi0jIGVsc2UgCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2NsYXNzLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19jbGFzc19pbXBsPFQ+Ojp2YWx1ZSkKLSMgZW5kaWYKLSAgICAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19DTEFTU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcGxleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBsZXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWQ5NzEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcGxleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0NPTVBMRVhfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0NPTVBMRVhfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8Y29tcGxleD4KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9mcm9tX3Rlc3RlcgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpc19jb252ZXJ0aWJsZV9mcm9tX3Rlc3Rlcihjb25zdCBzdGQ6OmNvbXBsZXg8VD4mKTsKLX07Ci0KLX0KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19jb21wbGV4LFQsKDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPFQsIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnZlcnRpYmxlX2Zyb21fdGVzdGVyPjo6dmFsdWUpKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy9ORE5CT09TVF9UVF9JU19DT01QTEVYX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wb3VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBvdW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYzNGE5ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBvdW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQ09NUE9VTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0NPTVBPVU5EX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NvbXBvdW5kX2ltcGwKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDxUPjo6dmFsdWUKLSAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0jZW5kaWYgLy8gIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2NvbXBvdW5kLFQsX19pc19jb21wb3VuZChUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2NvbXBvdW5kLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19jb21wb3VuZF9pbXBsPFQ+Ojp2YWx1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfQ09NUE9VTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTliNzUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgICAgIEhvd2FyZCBIaW5uYW50IGFuZCBKb2huIE1hZGRvY2sgMjAwMC4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXQgTWFyY3VzLCBKZXNzZSBKb25lcyBhbmQgQWRvYmUgU3lzdGVtcyBJbmMgMjAwMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyAgICBGaXhlZCBpc19wb2ludGVyLCBpc19yZWZlcmVuY2UsIGlzX2NvbnN0LCBpc192b2xhdGlsZSwgaXNfc2FtZSwgCi0vLyAgICBpc19tZW1iZXJfcG9pbnRlciBiYXNlZCBvbiB0aGUgU2ltdWxhdGVkIFBhcnRpYWwgU3BlY2lhbGl6YXRpb24gd29yayAKLS8vICAgIG9mIE1hdCBNYXJjdXMgYW5kIEplc3NlIEpvbmVzLiBTZWUgIGh0dHA6Ly9vcGVuc291cmNlLmFkb2JlLmNvbSBvciAKLS8vICAgIGh0dHA6Ly9ncm91cHMueWFob28uY29tL2dyb3VwL2Jvb3N0L21lc3NhZ2UvNTQ0MSAKLS8vICAgIFNvbWUgd29ya2Fyb3VuZHMgaW4gaGVyZSB1c2UgaWRlYXMgc3VnZ2VzdGVkIGZyb20gIkdlbmVyaWM8UHJvZ3JhbW1pbmc+OiAKLS8vICAgIE1hcHBpbmdzIGJldHdlZW4gVHlwZXMgYW5kIFZhbHVlcyIgCi0vLyAgICBieSBBbmRyZWkgQWxleGFuZHJlc2N1IChzZWUgaHR0cDovL3d3dy5jdWouY29tL2V4cGVydHMvMTgxMC9hbGV4YW5kci5odG1sKS4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0NPTlNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19DT05TVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwPgotIyAgIGlmZGVmIF9fR05VQ19fCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgZW5kaWYKLSMgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTQwMCkKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHA+Ci0jICAgZW5kaWYKLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvZmFsc2VfcmVzdWx0LmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfY29uc3QsVCxfX2lzX2NvbnN0KFQpKQotCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi1uYW1lc3BhY2UgZGV0YWlsewotLy8KLS8vIFdlIGNhbid0IGZpbHRlciBvdXQgcnZhbHVlX3JlZmVyZW5jZXMgYXQgdGhlIHNhbWUgbGV2ZWwgYXMKLS8vIHJlZmVyZW5jZXMgb3Igd2UgZ2V0IGFtYmlndWl0aWVzIGZyb20gbXN2YzoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19jb25zdF9ydmFsdWVfZmlsdGVyCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDE0MDApCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmN2X3RyYWl0c19pbXA8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9ib3VuZHM8VD46OnR5cGUqPjo6aXNfY29uc3QpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6Y3ZfdHJhaXRzX2ltcDxUKj46OmlzX2NvbnN0KTsKLSNlbmRpZgotfTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2NvbnN0X3J2YWx1ZV9maWx0ZXI8VCYmPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLSNlbmRpZgotfQotCi0vLyogaXMgYSB0eXBlIFQgIGRlY2xhcmVkIGNvbnN0IC0gaXNfY29uc3Q8VD4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfY29uc3QsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnN0X3J2YWx1ZV9maWx0ZXI8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfY29uc3QsVCYsZmFsc2UpCi0KLSNpZiAgZGVmaW5lZChORE5CT09TVF9JTExFR0FMX0NWX1JFRkVSRU5DRVMpCi0vLyB0aGVzZSBhcmUgaWxsZWdhbCBzcGVjaWFsaXNhdGlvbnM7IGN2LXF1YWxpZmllcyBhcHBsaWVkIHRvCi0vLyByZWZlcmVuY2VzIGhhdmUgbm8gZWZmZWN0IGFjY29yZGluZyB0byBbOC4zLjJwMV0sCi0vLyBDKysgQnVpbGRlciByZXF1aXJlcyB0aGVtIHRob3VnaCBhcyBpdCB0cmVhdHMgY3YtcXVhbGlmaWVkCi0vLyByZWZlcmVuY2VzIGFzIGRpc3RpbmN0IHR5cGVzLi4uCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19jb25zdCxUJiBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2NvbnN0LFQmIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfY29uc3QsVCYgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA8IDMpCi0vLyBzcGVjaWFsIGNhc2UgZm9yIGdjYyB3aGVyZSBpbGxlZ2FsbHkgY3YtcXVhbGlmaWVkIHJlZmVyZW5jZSB0eXBlcyBjYW4gYmUKLS8vIGdlbmVyYXRlZCBpbiBzb21lIGNvcm5lciBjYXNlczoKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2NvbnN0LFQgY29uc3QsISg6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlKSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2NvbnN0LFQgdm9sYXRpbGUgY29uc3QsISg6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlKSkKLSNlbmRpZgotCi0jZWxzZQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGU7Ci0KLXllc190eXBlIGlzX2NvbnN0X3Rlc3Rlcihjb25zdCB2b2xhdGlsZSB2b2lkKik7Ci1ub190eXBlIGlzX2NvbnN0X3Rlc3Rlcih2b2xhdGlsZSB2b2lkICopOwotCi10ZW1wbGF0ZSA8Ym9vbCBpc19yZWYsIGJvb2wgYXJyYXk+Ci1zdHJ1Y3QgaXNfY29uc3RfaGVscGVyCi0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmZhbHNlX3Jlc3VsdAotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19jb25zdF9oZWxwZXI8ZmFsc2UsZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCogdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6Onllc190eXBlKSA9PSBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6aXNfY29uc3RfdGVzdGVyKHQpKQotICAgICAgICAgICAgKSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfY29uc3RfaGVscGVyPGZhbHNlLHRydWU+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCB0OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6eWVzX3R5cGUpID09IHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjppc19jb25zdF90ZXN0ZXIoJnQpKQotICAgICAgICAgICAgKSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NvbnN0X2ltcGwKLSAgICA6IHB1YmxpYyBpc19jb25zdF9oZWxwZXI8Ci0gICAgICAgICAgaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAsIGlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2NvbnN0LHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2NvbnN0LHZvaWQgY29uc3QsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfY29uc3Qsdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfY29uc3Qsdm9pZCBjb25zdCB2b2xhdGlsZSx0cnVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyogaXMgYSB0eXBlIFQgIGRlY2xhcmVkIGNvbnN0IC0gaXNfY29uc3Q8VD4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfY29uc3QsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnN0X2ltcGw8VD46OnZhbHVlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfQ09OU1RfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMjYzMjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgMjAwMCBKb2huIE1hZGRvY2sgKGpvaG5Aam9obm1hZGRvY2suY28udWspCi0vLyBDb3B5cmlnaHQgMjAwMCBKZXJlbXkgU2llayAoanNpZWtAbHNjLm5kLmVkdSkKLS8vIENvcHlyaWdodCAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0NPTlZFUlRJQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19DT05WRVJUSUJMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JU19DT05WRVJUSUJMRQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfbHZhbHVlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLQotI2lmIGRlZmluZWQoX19NV0VSS1NfXykKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSVNfQ09OVkVSVElCTEUKLQotLy8gc2hvdWxkIGJlIGFsd2F5cyB0aGUgbGFzdCAjaW5jbHVkZSBkaXJlY3RpdmUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZuZGVmIE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFCi0KLS8vIGlzIG9uZSB0eXBlIGNvbnZlcnRpYmxlIHRvIGFub3RoZXI/Ci0vLwotLy8gdGhlcmUgYXJlIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpc19jb252ZXJ0aWJsZQotLy8gdGVtcGxhdGUsIGFsbW9zdCBldmVyeSBjb21waWxlciBzZWVtcyB0byByZXF1aXJlIGl0cwotLy8gb3duIHZlcnNpb24uCi0vLwotLy8gVGhhbmtzIHRvIEFuZHJlaSBBbGV4YW5kcmVzY3UgZm9yIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZQotLy8gY29udmVyc2lvbiBkZXRlY3Rpb24gdGVjaG5pcXVlIQotLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIE1TIHNwZWNpZmljIHZlcnNpb246Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDw9IDEzMDApCi0KLS8vIFRoaXMgd29ya2Fyb3VuZCBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIHdoZW4gRnJvbSBpcyB2b2lkCi0vLyB3aGljaCBpcyBub3JtYWxseSB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uCi0vLyBvZiB0aGUgaXNfY29udmVydGlibGUgdHlwZW5hbWUuCi11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGU7Ci11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEZyb20gPgotc3RydWN0IGRvZXNfY29udmVyc2lvbl9leGlzdAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUbyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgbm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKC4uLik7Ci0gICAgICAgIHN0YXRpYyB5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKFRvKTsKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlICBfbV9mcm9tOwotICAgICAgICBlbnVtIHsgdmFsdWUgPSBzaXplb2YoIF9tX2NoZWNrKF9tX2Zyb20pICkgPT0gc2l6ZW9mKHllc190eXBlKSB9OwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZG9lc19jb252ZXJzaW9uX2V4aXN0PHZvaWQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFRvID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIGVudW0geyB2YWx1ZSA9IDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VG8+Ojp2YWx1ZSB9OwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfYmFzaWNfaW1wbAotICAgIDogcHVibGljIGRvZXNfY29udmVyc2lvbl9leGlzdDxGcm9tPjo6dGVtcGxhdGUgcmVzdWx0XzxUbz4KLXsKLX07Ci0KLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg1NjApCi0vLwotLy8gc3BlY2lhbCB2ZXJzaW9uIGZvciBCb3JsYW5kIGNvbXBpbGVycwotLy8gdGhpcyB2ZXJzaW9uIGJyZWFrcyB3aGVuIHVzZWQgZm9yIHNvbWUKLS8vIFVEVCBjb252ZXJzaW9uczoKLS8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbAotewotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDc0Ci0gICAgLy8gVGhpcyB3b3JrYXJvdW5kIGZvciBCb3JsYW5kIGJyZWFrcyB0aGUgRURHIEMrKyBmcm9udGVuZCwKLSAgICAvLyBzbyB3ZSBvbmx5IHVzZSBpdCBmb3IgQm9ybGFuZC4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGNoZWNrZXIKLSAgICB7Ci0gICAgICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKC4uLik7Ci0gICAgICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhUKTsKLSAgICB9OwotCi0gICAgc3RhdGljIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlICBfbV9mcm9tOwotICAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0gc2l6ZW9mKCBjaGVja2VyPFRvPjo6X21fY2hlY2soX21fZnJvbSkgKQotICAgICAgICA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKTsKLSNwcmFnbWEgb3B0aW9uIHBvcAotfTsKLQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLS8vIHNwZWNpYWwgdmVyc2lvbiBmb3IgZ2NjIGNvbXBpbGVyICsgcmVjZW50IEJvcmxhbmQgdmVyc2lvbnMKLS8vIG5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IHBhc3MgVURUJ3MgdGhyb3VnaCAoLi4uKQotCi1zdHJ1Y3QgYW55X2NvbnZlcnNpb24KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3Qgdm9sYXRpbGUgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihjb25zdCBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKHZvbGF0aWxlIFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oVCYpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBjaGVja2VyCi17Ci0gICAgc3RhdGljIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBfbV9jaGVjayhhbnlfY29udmVyc2lvbiAuLi4pOwotICAgIHN0YXRpYyBuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIF9tX2NoZWNrKFQsIGludCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfYmFzaWNfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgbHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBydmFsdWVfdHlwZTsKLSAgICBzdGF0aWMgbHZhbHVlX3R5cGUgX21fZnJvbTsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykgJiYgKChfX0dOVUNfXyA+IDQpIHx8ICgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID4gNikpKQotICAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBuZG5ib29zdDo6ZGV0YWlsOjpjaGVja2VyPFRvPjo6X21fY2hlY2soc3RhdGljX2Nhc3Q8cnZhbHVlX3R5cGU+KF9tX2Zyb20pLCAwKSApCi0gICAgICAgID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpOwotI2Vsc2UKLSAgICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggbmRuYm9vc3Q6OmRldGFpbDo6Y2hlY2tlcjxUbz46Ol9tX2NoZWNrKF9tX2Zyb20sIDApICkKLSAgICAgICAgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSk7Ci0jZW5kaWYKLX07Ci0KLSNlbGlmIChkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykgJiYgKF9fRURHX1ZFUlNJT05fXyA+PSAyNDUpICYmICFkZWZpbmVkKF9fSUNMKSkgXAotICAgICAgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZpbmVkKF9fSFBfYUNDKQotLy8KLS8vIFRoaXMgaXMgKmFsbW9zdCogYW4gaWRlYWwgd29ybGQgaW1wbGVtZW50YXRpb24gYXMgaXQgZG9lc24ndCByZWx5Ci0vLyBvbiB1bmRlZmluZWQgYmVoYXZpb3VyIGJ5IHBhc3NpbmcgVURUJ3MgdGhyb3VnaCAoLi4uKS4KLS8vIFVuZm9ydHVuYXRlbHkgaXQgZG9lc24ndCBxdWl0ZSBwYXNzIGFsbCB0aGUgdGVzdHMgZm9yIG1vc3QgY29tcGlsZXJzIChzaWdoLi4uKQotLy8gRW5hYmxlIHRoaXMgZm9yIHlvdXIgY29tcGlsZXIgaWYgaXNfY29udmVydGlibGVfdGVzdC5jcHAgd2lsbCBjb21waWxlIGl0Li4uCi0vLwotLy8gTm90ZSB3ZSBkbyBub3QgZW5hYmxlIHRoaXMgZm9yIFZDNy4xLCBiZWNhdXNlIGV2ZW4gdGhvdWdoIGl0IHBhc3NlcyBhbGwgdGhlCi0vLyB0eXBlX3RyYWl0cyB0ZXN0cyBpdCBpcyBrbm93biB0byBjYXVzZSBwcm9ibGVtcyB3aGVuIGluc3RhbnRpYXRpb24gb2NjdXJzCi0vLyBkZWVwIHdpdGhpbiB0aGUgaW5zdGFudGlhdGlvbiB0cmVlIDotKAotLy8KLXN0cnVjdCBhbnlfY29udmVyc2lvbgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihjb25zdCB2b2xhdGlsZSBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24odm9sYXRpbGUgVCYpOwotICAgIC8vIHdlIG5lZWQgdGhpcyBjb25zdHJ1Y3RvciB0byBjYXRjaCByZWZlcmVuY2VzIHRvIGZ1bmN0aW9ucwotICAgIC8vICh3aGljaCBjYW4gbm90IGJlIGN2LXF1YWxpZmllZCk6Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKFQmKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsCi17Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soYW55X2NvbnZlcnNpb24gLi4uKTsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soVG8sIGludCk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBsdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIHJ2YWx1ZV90eXBlOyAKLSAgICBzdGF0aWMgbHZhbHVlX3R5cGUgX21fZnJvbTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggX21fY2hlY2soc3RhdGljX2Nhc3Q8cnZhbHVlX3R5cGU+KF9tX2Zyb20pLCAwKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZWxzZQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggX21fY2hlY2soX21fZnJvbSwgMCkgKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICApOwotI2VuZGlmCi19OwotCi0jZWxpZiBkZWZpbmVkKF9fRE1DX18pCi0KLXN0cnVjdCBhbnlfY29udmVyc2lvbgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihjb25zdCB2b2xhdGlsZSBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24odm9sYXRpbGUgVCYpOwotICAgIC8vIHdlIG5lZWQgdGhpcyBjb25zdHJ1Y3RvciB0byBjYXRjaCByZWZlcmVuY2VzIHRvIGZ1bmN0aW9ucwotICAgIC8vICh3aGljaCBjYW4gbm90IGJlIGN2LXF1YWxpZmllZCk6Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKFQmKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsCi17Ci0gICAgLy8gVXNpbmcgJy4uLicgZG9lc24ndCBhbHdheXMgd29yayBvbiBEaWdpdGFsIE1hcnMuIFRoaXMgdmVyc2lvbiBzZWVtcyB0by4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhhbnlfY29udmVyc2lvbiwgIGZsb2F0LCBUKTsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soVG8sIGludCwgaW50KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIGx2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgcnZhbHVlX3R5cGU7Ci0gICAgc3RhdGljIGx2YWx1ZV90eXBlIF9tX2Zyb207Ci0KLSAgICAvLyBTdGF0aWMgY29uc3RhbnRzIHNvbWV0aW1lIGNhdXNlIHRoZSBjb252ZXJzaW9uIG9mIF9tX2Zyb20gdG8gVG8gdG8gYmUKLSAgICAvLyBjYWxsZWQuIFRoaXMgZG9lc24ndCBoYXBwZW4gd2l0aCBhbiBlbnVtLgotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgIGVudW0geyB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggX21fY2hlY2soc3RhdGljX2Nhc3Q8cnZhbHVlX3R5cGU+KF9tX2Zyb20pLCAwLCAwKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgIH07Ci0jZWxzZQotICAgIGVudW0geyB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggX21fY2hlY2soX21fZnJvbSwgMCwgMCkgKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICB9OwotI2VuZGlmCi19OwotCi0jZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pCi0vLyAKLS8vIENXIHdvcmtzIHdpdGggdGhlIHRlY2huaXF1ZSBpbXBsZW1lbnRlZCBhYm92ZSBmb3IgRURHLCBleGNlcHQgd2hlbiBGcm9tCi0vLyBpcyBhIGZ1bmN0aW9uIHR5cGUgKG9yIGEgcmVmZXJlbmNlIHRvIHN1Y2ggYSB0eXBlKSwgaW4gd2hpY2ggY2FzZQotLy8gYW55X2NvbnZlcnNpb24gd29uJ3QgYmUgYWNjZXB0ZWQgYXMgYSB2YWxpZCBjb252ZXJzaW9uLiBXZSBkZXRlY3QgdGhpcwotLy8gZXhjZXB0aW9uYWwgc2l0dWF0aW9uIGFuZCBjaGFubmVsIGl0IHRocm91Z2ggYW4gYWx0ZXJuYXRpdmUgYWxnb3JpdGhtLgotLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvLGJvb2wgRnJvbUlzRnVuY3Rpb25SZWY+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfYmFzaWNfaW1wbF9hdXg7Ci0KLXN0cnVjdCBhbnlfY29udmVyc2lvbgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihjb25zdCB2b2xhdGlsZSBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24odm9sYXRpbGUgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihUJik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfYmFzaWNfaW1wbF9hdXg8RnJvbSxUbyxmYWxzZSAvKkZyb21Jc0Z1bmN0aW9uUmVmKi8+Ci17Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soYW55X2NvbnZlcnNpb24gLi4uKTsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soVG8sIGludCk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBsdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIHJ2YWx1ZV90eXBlOyAKLSAgICBzdGF0aWMgbHZhbHVlX3R5cGUgX21fZnJvbTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggX21fY2hlY2soc3RhdGljX2Nhc3Q8cnZhbHVlX3R5cGU+KF9tX2Zyb20pLCAwKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZWxzZQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggX21fY2hlY2soX21fZnJvbSwgMCkgKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICApOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfYmFzaWNfaW1wbF9hdXg8RnJvbSxUbyx0cnVlIC8qRnJvbUlzRnVuY3Rpb25SZWYqLz4KLXsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayguLi4pOwotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhUbyk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBsdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIHJ2YWx1ZV90eXBlOwotICAgIHN0YXRpYyBsdmFsdWVfdHlwZSBfbV9mcm9tOwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggX21fY2hlY2soc3RhdGljX2Nhc3Q8cnZhbHVlX3R5cGU+KF9tX2Zyb20pKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZWxzZQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggX21fY2hlY2soX21fZnJvbSkgKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICApOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfYmFzaWNfaW1wbDoKLSAgaXNfY29udmVydGlibGVfYmFzaWNfaW1wbF9hdXg8Ci0gICAgRnJvbSxUbywKLSAgICA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjx0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlPjo6dmFsdWUKLSAgPgote307Ci0KLSNlbHNlCi0vLwotLy8gVGhpcyB2ZXJzaW9uIHNlZW1zIHRvIHdvcmsgcHJldHR5IHdlbGwgZm9yIGEgd2lkZSBzcGVjdHJ1bSBvZiBjb21waWxlcnMsCi0vLyBob3dldmVyIGl0IGRvZXMgcmVseSBvbiB1bmRlZmluZWQgYmVoYXZpb3VyIGJ5IHBhc3NpbmcgVURUJ3MgdGhyb3VnaCAoLi4uKS4KLS8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfYmFzaWNfaW1wbAotewotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKC4uLik7Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKFRvKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIGx2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgcnZhbHVlX3R5cGU7IAotICAgIHN0YXRpYyBsdmFsdWVfdHlwZSBfbV9mcm9tOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI0NCkKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjYzMzQpCi0jZW5kaWYKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggX21fY2hlY2soc3RhdGljX2Nhc3Q8cnZhbHVlX3R5cGU+KF9tX2Zyb20pKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZWxzZQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgIHNpemVvZiggX21fY2hlY2soX21fZnJvbSkgKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICApOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfTsKLQotI2VuZGlmIC8vIGlzX2NvbnZlcnRpYmxlX2ltcGwKLQotI2lmIGRlZmluZWQoX19ETUNfXykKLS8vIEFzIGJlZm9yZSwgYSBzdGF0aWMgY29uc3RhbnQgc29tZXRpbWVzIGNhdXNlcyBlcnJvcnMgb24gRGlnaXRhbCBNYXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2ltcGwKLXsKLSAgICBlbnVtIHsgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsPEZyb20sVG8+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VG8+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FycmF5PFRvPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxUbz46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkgfTsKLX07Ci0jZWxpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IF9fQk9STEFORENfXyA+IDB4NTUxCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGw8RnJvbSxUbz46OnZhbHVlLAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDxUbz46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJyYXk8VG8+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFRvPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKQotICAgICAgICApOwotfTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Ym9vbCB0cml2aWFsMSwgYm9vbCB0cml2aWFsMiwgYm9vbCBhYnN0cmFjdF90YXJnZXQ+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbF9zZWxlY3QKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBGcm9tLCBjbGFzcyBUbz4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfY29udmVydGlibGVfaW1wbDxGcm9tLCBUbz4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2ltcGxfc2VsZWN0PHRydWUsIHRydWUsIGZhbHNlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIEZyb20sIGNsYXNzIFRvPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiB0cnVlX3R5cGUgdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2ltcGxfc2VsZWN0PGZhbHNlLCBmYWxzZSwgdHJ1ZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBGcm9tLCBjbGFzcyBUbz4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgZmFsc2VfdHlwZSB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbF9zZWxlY3Q8dHJ1ZSwgZmFsc2UsIHRydWU+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgRnJvbSwgY2xhc3MgVG8+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGZhbHNlX3R5cGUgdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbF9kaXNwYXRjaF9iYXNlCi17Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjA3MDApCi0gICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlX2ltcGxfc2VsZWN0PCAKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8RnJvbT46OnZhbHVlLCAKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VG8+Ojp2YWx1ZSwKLSNpZm5kZWYgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX2Fic3RyYWN0PFRvPjo6dmFsdWUKLSNlbHNlCi0gICAgICBmYWxzZQotI2VuZGlmCi0gICA+IHNlbGVjdG9yOwotI2Vsc2UKLSAgIHR5cGVkZWYgaXNfY29udmVydGlibGVfaW1wbF9zZWxlY3Q8ZmFsc2UsIGZhbHNlLCBmYWxzZT4gc2VsZWN0b3I7Ci0jZW5kaWYKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnRlbXBsYXRlIHJlYmluZDxGcm9tLCBUbz4gaXNjX2JpbmRlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgaXNjX2JpbmRlcjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2ltcGxfZGlzcGF0Y2ggCi0gICA6IHB1YmxpYyBpc19jb252ZXJ0aWJsZV9pbXBsX2Rpc3BhdGNoX2Jhc2U8RnJvbSwgVG8+Ojp0eXBlCi17fTsKLQotLy8KLS8vIE5vdyBhZGQgdGhlIGZ1bGwgYW5kIHBhcnRpYWwgc3BlY2lhbGlzYXRpb25zCi0vLyBmb3Igdm9pZCB0eXBlcywgdGhlc2UgYXJlIGNvbW1vbiB0byBhbGwgdGhlCi0vLyBpbXBsZW1lbnRhdGlvbiBhYm92ZToKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi0jICAgZGVmaW5lIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzJfUEFSVDEodHJhaXQsc3BlYzEsc3BlYzIsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyKHRyYWl0LHNwZWMxLHNwZWMyLHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMih0cmFpdCxzcGVjMSxzcGVjMiBjb25zdCx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIodHJhaXQsc3BlYzEsc3BlYzIgdm9sYXRpbGUsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyKHRyYWl0LHNwZWMxLHNwZWMyIGNvbnN0IHZvbGF0aWxlLHZhbHVlKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzIodHJhaXQsc3BlYzEsc3BlYzIsdmFsdWUpIFwKLSAgICBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyX1BBUlQxKHRyYWl0LHNwZWMxLHNwZWMyLHZhbHVlKSBcCi0gICAgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMl9QQVJUMSh0cmFpdCxzcGVjMSBjb25zdCxzcGVjMix2YWx1ZSkgXAotICAgIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzJfUEFSVDEodHJhaXQsc3BlYzEgdm9sYXRpbGUsc3BlYzIsdmFsdWUpIFwKLSAgICBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyX1BBUlQxKHRyYWl0LHNwZWMxIGNvbnN0IHZvbGF0aWxlLHNwZWMyLHZhbHVlKSBcCi0gICAgLyoqLwotCi0gICAgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMihpc19jb252ZXJ0aWJsZSx2b2lkLHZvaWQsdHJ1ZSkKLQotIyAgIHVuZGVmIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzIKLSMgICB1bmRlZiBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyX1BBUlQxCi0KLSNlbHNlCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMihpc19jb252ZXJ0aWJsZSx2b2lkLHZvaWQsdHJ1ZSkKLSNlbmRpZiAvLyBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIFRvLGlzX2NvbnZlcnRpYmxlLHZvaWQsVG8sZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBGcm9tLGlzX2NvbnZlcnRpYmxlLEZyb20sdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIFRvLGlzX2NvbnZlcnRpYmxlLHZvaWQgY29uc3QsVG8sZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBUbyxpc19jb252ZXJ0aWJsZSx2b2lkIHZvbGF0aWxlLFRvLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgVG8saXNfY29udmVydGlibGUsdm9pZCBjb25zdCB2b2xhdGlsZSxUbyxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIEZyb20saXNfY29udmVydGlibGUsRnJvbSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgRnJvbSxpc19jb252ZXJ0aWJsZSxGcm9tLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBGcm9tLGlzX2NvbnZlcnRpYmxlLEZyb20sdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoaXNfY29udmVydGlibGUsRnJvbSxUbywoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19jb252ZXJ0aWJsZV9pbXBsX2Rpc3BhdGNoPEZyb20sVG8+Ojp2YWx1ZSkpCi0KLSNlbHNlCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoaXNfY29udmVydGlibGUsRnJvbSxUbyxORE5CT09TVF9JU19DT05WRVJUSUJMRShGcm9tLFRvKSkKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19DT05WRVJUSUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW1wdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbXB0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZWM0YWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbXB0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0VNUFRZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19FTVBUWV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcD4KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIGFsd2F5cyB0aGUgbGFzdCAjaW5jbHVkZSBkaXJlY3RpdmUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVSTkFMX0lTX0VNUFRZCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVSTkFMX0lTX0VNUFRZKFQpIGZhbHNlCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWShUKSBORE5CT09TVF9JU19FTVBUWShUKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDYyNCkgLy8gZGVzdHJ1Y3RvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyX3QxIDogcHVibGljIFQKLXsKLSAgICBlbXB0eV9oZWxwZXJfdDEoKTsgIC8vIGhoIGNvbXBpbGVyIGJ1ZyB3b3JrYXJvdW5kCi0gICAgaW50IGlbMjU2XTsKLXByaXZhdGU6Ci0gICAvLyBzdXBwcmVzcyBjb21waWxlciB3YXJuaW5nczoKLSAgIGVtcHR5X2hlbHBlcl90MShjb25zdCBlbXB0eV9oZWxwZXJfdDEmKTsKLSAgIGVtcHR5X2hlbHBlcl90MSYgb3BlcmF0b3I9KGNvbnN0IGVtcHR5X2hlbHBlcl90MSYpOwotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotc3RydWN0IGVtcHR5X2hlbHBlcl90MiB7IGludCBpWzI1Nl07IH07Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzX2FfY2xhc3MgPSBmYWxzZT4KLXN0cnVjdCBlbXB0eV9oZWxwZXIKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBlbXB0eV9oZWxwZXI8VCwgdHJ1ZT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gKHNpemVvZihlbXB0eV9oZWxwZXJfdDE8VD4pID09IHNpemVvZihlbXB0eV9oZWxwZXJfdDIpKQotICAgICAgICApOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZW1wdHlfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIGN2dDsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9oZWxwZXI8Y3Z0LDo6bmRuYm9vc3Q6OmlzX2NsYXNzPFQ+Ojp2YWx1ZT46OnZhbHVlCi0gICAgICAgICAgICAgICwgTkROQk9PU1RfSU5URVJOQUxfSVNfRU1QVFkoY3Z0KQotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgICAgICkpOwotfTsKLQotI2Vsc2UgLy8gX19CT1JMQU5EQ19fCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzX2FfY2xhc3MsIGJvb2wgY29udmVydGlibGVfdG9faW50Pgotc3RydWN0IGVtcHR5X2hlbHBlcgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGVtcHR5X2hlbHBlcjxULCB0cnVlLCBmYWxzZT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgIHNpemVvZihlbXB0eV9oZWxwZXJfdDE8VD4pID09IHNpemVvZihlbXB0eV9oZWxwZXJfdDIpCi0gICAgICAgICkpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZW1wdHlfaW1wbAotewotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgY3Z0OwotICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPFQ+Ojp0eXBlIHJfdHlwZTsKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgIGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2hlbHBlcjwKLSAgICAgICAgICAgICAgICAgIGN2dAotICAgICAgICAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfY2xhc3M8VD46OnZhbHVlCi0gICAgICAgICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwgcl90eXBlLGludD46OnZhbHVlCi0gICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICAgICwgTkROQk9PU1RfSU5URVJOQUxfSVNfRU1QVFkoY3Z0KQotICAgICAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotI2VuZGlmIC8vIF9fQk9STEFORENfXwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGVtcHR5X2hlbHBlcl90MSA6IHB1YmxpYyBUCi17Ci0gICBlbXB0eV9oZWxwZXJfdDEoKTsKLSAgIGludCBpWzI1Nl07Ci19OwotCi1zdHJ1Y3QgZW1wdHlfaGVscGVyX3QyIHsgaW50IGlbMjU2XTsgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyX2Jhc2UKLXsKLSAgIGVudW0geyB2YWx1ZSA9IChzaXplb2YoZW1wdHlfaGVscGVyX3QxPFQ+KSA9PSBzaXplb2YoZW1wdHlfaGVscGVyX3QyKSkgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGVtcHR5X2hlbHBlcl9ub25iYXNlCi17Ci0gICBlbnVtIHsgdmFsdWUgPSBmYWxzZSB9OwotfTsKLQotdGVtcGxhdGUgPGJvb2wgYmFzZT4KLXN0cnVjdCBlbXB0eV9oZWxwZXJfY2hvb3NlcgotewotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICB7Ci0gICAgICB0eXBlZGVmIGVtcHR5X2hlbHBlcl9ub25iYXNlPFQ+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBlbXB0eV9oZWxwZXJfY2hvb3Nlcjx0cnVlPgotewotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICB7Ci0gICAgICB0eXBlZGVmIGVtcHR5X2hlbHBlcl9iYXNlPFQ+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZW1wdHlfaW1wbAotewotICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2hlbHBlcl9jaG9vc2VyPAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxULGRvdWJsZT46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9wb2ludGVyPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9pZDxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPFQsdm9pZCBjb25zdCB2b2xhdGlsZSo+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgID46OnZhbHVlID4gY2hvb3NlcjsKLQotICAgdHlwZWRlZiB0eXBlbmFtZSBjaG9vc2VyOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+IHJlc3VsdDsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzdWx0Ojp0eXBlIGVoX3R5cGU7Ci0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxlaF90eXBlOjp2YWx1ZSwgTkROQk9PU1RfSU5URVJOQUxfSVNfRU1QVFkoVCk+Ojp2YWx1ZSkpOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc19lbXB0eV9pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSU5URVJOQUxfSVNfRU1QVFkoVCkpOwotfTsKLQotI2VuZGlmICAvLyBORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0vLyB0aGVzZSBoZWxwIHdoZW4gdGhlIGNvbXBpbGVyIGhhcyBubyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHN1cHBvcnQ6Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2VtcHR5LHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2VtcHR5LHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2VtcHR5LHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2VtcHR5LHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZW1wdHksVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2VtcHR5X2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfSU5URVJOQUxfSVNfRU1QVFkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0VNUFRZX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEwNmMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfRU5VTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfRU5VTV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JU19FTlVNCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2lmZGVmIF9fR05VQ19fCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OKSAKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3VuaW9uLmhwcD4KLSNlbmRpZgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfSVNfRU5VTQotI2lmICEoZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPD0gMHg1NTEpKQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFRfSEFTX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04pIAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jbGFzc19vcl91bmlvbgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19jbGFzczxUPjo6dmFsdWUKLSAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfdW5pb248VD46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY2xhc3Nfb3JfdW5pb24KLXsKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODEpKS8vIHdlIHNpbXBseSBjYW4ndCBkZXRlY3QgaXQgdGhpcyB3YXkuCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotIyBlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIFU+IHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfY2xhc3Nfb3JfdW5pb25fdGVzdGVyKHZvaWQoVTo6Kikodm9pZCkpOwotCi0jICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApICAgICAgICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8PSAweDMwMDApIC8vIG5vIFNGSU5BRQotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBpc19jbGFzc19vcl91bmlvbl90ZXN0ZXIoLi4uKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gc2l6ZW9mKGlzX2NsYXNzX29yX3VuaW9uX3Rlc3RlcigwKSkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpOwotIyAgZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBpc19jbGFzc19vcl91bmlvbl90ZXN0ZXIoLi4uKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gc2l6ZW9mKGlzX2NsYXNzX29yX3VuaW9uX3Rlc3RlcjxUPigwKSkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpOwotIyAgZW5kaWYKLSMgZW5kaWYKLX07Ci0jZW5kaWYKLQotc3RydWN0IGludF9jb252ZXJ0aWJsZQotewotICAgIGludF9jb252ZXJ0aWJsZShpbnQpOwotfTsKLQotLy8gRG9uJ3QgZXZhbHVhdGUgY29udmVydGliaWxpdHkgdG8gaW50X2NvbnZlcnRpYmxlIHVubGVzcyB0aGUgdHlwZQotLy8gaXMgbm9uLWFyaXRobWV0aWMuIFRoaXMgc3VwcHJlc3NlcyB3YXJuaW5ncyB3aXRoIEdDQy4KLXRlbXBsYXRlIDxib29sIGlzX3R5cGVuYW1lX2FyaXRobWV0aWNfb3JfcmVmZXJlbmNlID0gdHJ1ZT4KLXN0cnVjdCBpc19lbnVtX2hlbHBlcgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgdHlwZQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2VudW1faGVscGVyPGZhbHNlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgdHlwZQotICAgICAgIDogcHVibGljIDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPFQ+Ojp0eXBlLDo6bmRuYm9vc3Q6OmRldGFpbDo6aW50X2NvbnZlcnRpYmxlPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc19lbnVtX2ltcGwKLXsKLSAgIC8vdHlwZWRlZiA6Om5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPFQ+IGFyX3Q7Ci0gICAvL3R5cGVkZWYgdHlwZW5hbWUgYXJfdDo6dHlwZSByX3R5cGU7Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotCi0jaWZkZWYgTkROQk9PU1RfVFRfSEFTX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04KLSAgICAKLSAgIC8vIFdlIE1VU1QgY2hlY2sgZm9yIGlzX2NsYXNzX29yX3VuaW9uIG9uIGNvbmZvcm1pbmcgY29tcGlsZXJzIGluCi0gICAvLyBvcmRlciB0byBjb3JyZWN0bHkgZGVkdWNlIHRoYXQgbm9uY29weWFibGUgdHlwZXMgYXJlIG5vdCBlbnVtcwotICAgLy8gKGR3YSAyMDAyLzA0LzE1KS4uLgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHNlbGVjdG9yID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZQotICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFQ+Ojp2YWx1ZQotICAgICAgICAgLCBpc19jbGFzc19vcl91bmlvbjxUPjo6dmFsdWUKLSAgICAgICAgICwgaXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotI2Vsc2UKLSAgIC8vIC4uLmhvd2V2ZXIsIG5vdCBjaGVja2luZyBpc19jbGFzc19vcl91bmlvbiBvbiBub24tY29uZm9ybWluZwotICAgLy8gY29tcGlsZXJzIHByZXZlbnRzIGEgZGVwZW5kZW5jeSByZWN1cnNpb24uCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgc2VsZWN0b3IgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlCi0gICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248VD46OnZhbHVlCi0gICAgICAgICAsIGlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUpKTsKLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTgotCi0jZWxzZSAvLyAhZGVmaW5lZChfX0dOVUNfXyk6Ci0gICAgCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgc2VsZWN0b3IgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlCi0gICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgICwgaXNfY2xhc3Nfb3JfdW5pb248VD46OnZhbHVlCi0gICAgICAgICAsIGlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUpKTsKLSAgICAKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2VudW1faGVscGVyPAotICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfZW51bV9pbXBsPFQ+OjpzZWxlY3RvcgotICAgICAgICA+IHNlX3Q7Ci0jZWxzZQotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19lbnVtX2hlbHBlcjxzZWxlY3Rvcj4gc2VfdDsKLSNlbmRpZgotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZV90Ojp0ZW1wbGF0ZSB0eXBlPFQ+IGhlbHBlcjsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBoZWxwZXI6OnZhbHVlKTsKLX07Ci0KLS8vIHRoZXNlIGhlbHAgb24gY29tcGlsZXJzIHdpdGggbm8gcGFydGlhbCBzcGVjaWFsaXphdGlvbiBzdXBwb3J0OgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19lbnVtLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2VudW0sdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW51bSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19lbnVtLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZW51bSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfZW51bV9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2Vsc2UgLy8gX19CT1JMQU5EQ19fCi0vLwotLy8gYnVnZ3kgaXNfY29udmVydGlibGUgcHJldmVudHMgd29ya2luZwotLy8gaW1wbGVtZW50YXRpb24gb2YgaXNfZW51bToKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZW51bSxULGZhbHNlKQotCi0jZW5kaWYKLQotI2Vsc2UgLy8gTkROQk9PU1RfSVNfRU5VTQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2VudW0sVCxORE5CT09TVF9JU19FTlVNKFQpKQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0VOVU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTFiNTg1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19JU19GTE9BVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfSVNfRkxPQVRfSFBQX0lOQ0xVREVECi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vKiBpcyBhIHR5cGUgVCBhIGZsb2F0aW5nLXBvaW50IHR5cGUgZGVzY3JpYmVkIGluIHRoZSBzdGFuZGFyZCAoMy45LjFwOCkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZmxvYXQsVCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2Zsb2F0LGZsb2F0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19mbG9hdCxkb3VibGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2Zsb2F0LGxvbmcgZG91YmxlLHRydWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UWVBFX1RSQUlUU19JU19GTE9BVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXRpbmdfcG9pbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdGluZ19wb2ludC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMzgyNjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdGluZ19wb2ludC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAtMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfSVNfRkxPQVRJTkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0lTX0ZMT0FUSU5HX0hQUF9JTkNMVURFRAotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyogaXMgYSB0eXBlIFQgYSBmbG9hdGluZy1wb2ludCB0eXBlIGRlc2NyaWJlZCBpbiB0aGUgc3RhbmRhcmQgKDMuOS4xcDgpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Zsb2F0aW5nX3BvaW50LFQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19mbG9hdGluZ19wb2ludCxmbG9hdCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfZmxvYXRpbmdfcG9pbnQsZG91YmxlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19mbG9hdGluZ19wb2ludCxsb25nIGRvdWJsZSx0cnVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfSVNfRkxPQVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2I0MmI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLQotLy8gIENvcHlyaWdodCAyMDAwIEpvaG4gTWFkZG9jayAoam9obkBqb2hubWFkZG9jay5jby51aykKLS8vICBDb3B5cmlnaHQgMjAwMiBBbGVrc2V5IEd1cnRvdm95IChhZ3VydG92b3lAbWV0YS1jb21tLmNvbSkKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0ZVTkNUSU9OX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19GVU5DVElPTl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfaGVscGVyLmhwcD4KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotLy8gaXMgYSB0eXBlIGEgZnVuY3Rpb24/Ci0vLyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgaW1wbGVtZW50YXRpb24gaXMgdW5uZWNlc3NhcmlseSBjb21wbGV4OgotLy8gd2UgY291bGQganVzdCB1c2UgIWlzX2NvbnZlcnRpYmxlPFQqLCBjb25zdCB2b2xhdGlsZSB2b2lkKj46OnZhbHVlLAotLy8gZXhjZXB0IHRoYXQgc29tZSBjb21waWxlcnMgZXJyb25lb3VzbHkgYWxsb3cgY29udmVyc2lvbnMgZnJvbQotLy8gZnVuY3Rpb24gcG9pbnRlcnMgdG8gdm9pZCouCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MpCi10ZW1wbGF0ZTxib29sIGlzX3JlZiA9IHRydWU+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fY2hvb3NlcgotICAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpmYWxzZV9yZXN1bHQKLXsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fY2hvb3NlcjxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppc19mdW5jdGlvbl9wdHJfaGVscGVyPFQqPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25faW1wbAotICAgIDogcHVibGljIGlzX2Z1bmN0aW9uX2Nob29zZXI8IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgPgotICAgICAgICA6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSByZXN1bHRfPFQ+Ci17Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19mdW5jdGlvbl9pbXBsCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjYzMzQpCi0jZW5kaWYKLSAgICBzdGF0aWMgVCogdDsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppc19mdW5jdGlvbl9wdHJfdGVzdGVyKHQpKQotICAgICAgICA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICApOwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19mdW5jdGlvbl9pbXBsPFQmPiA6IHB1YmxpYyBmYWxzZV90eXBlCi17fTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2Z1bmN0aW9uX2ltcGw8VCYmPiA6IHB1YmxpYyBmYWxzZV90eXBlCi17fTsKLSNlbmRpZgotI2VuZGlmCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotI2VuZGlmIC8vICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19mdW5jdGlvbixULF9faXNfZnVuY3Rpb24oVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19mdW5jdGlvbixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfZnVuY3Rpb25faW1wbDxUPjo6dmFsdWUpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19mdW5jdGlvbixUJiYsZmFsc2UpCi0jZW5kaWYKLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0ZVTkNUSU9OX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhiOTRkOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfRlVOREFNRU5UQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0ZVTkRBTUVOVEFMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgaXNfZnVuZGFtZW50YWxfaW1wbAotICAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8IAotICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlCi0gICAgICAgICwgOjpuZG5ib29zdDo6aXNfdm9pZDxUPjo6dmFsdWUKLSAgICAgICAgPgoteyAKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyogaXMgYSB0eXBlIFQgYSBmdW5kYW1lbnRhbCB0eXBlIGRlc2NyaWJlZCBpbiB0aGUgc3RhbmRhcmQgKDMuOS4xKQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19mdW5kYW1lbnRhbCxULF9faXNfZnVuZGFtZW50YWwoVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19mdW5kYW1lbnRhbCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfZnVuZGFtZW50YWxfaW1wbDxUPjo6dmFsdWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0ZVTkRBTUVOVEFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU0NDI1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfSU5URUdSQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0lOVEVHUkFMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8qIGlzIGEgdHlwZSBUIGFuIFtjdi1xdWFsaWZpZWQtXSBpbnRlZ3JhbCB0eXBlIGRlc2NyaWJlZCBpbiB0aGUgc3RhbmRhcmQgKDMuOS4xcDMpCi0vLyBhcyBhbiBleHRlbnNpb24gd2UgaW5jbHVkZSBsb25nIGxvbmcsIGFzIHRoaXMgaXMgbGlrZWx5IHRvIGJlIGFkZGVkIHRvIHRoZQotLy8gc3RhbmRhcmQgYXQgYSBsYXRlciBkYXRlCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2ludGVncmFsLFQsX19pc19pbnRlZ3JhbChUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2ludGVncmFsLFQsZmFsc2UpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHVuc2lnbmVkIGNoYXIsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHVuc2lnbmVkIHNob3J0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx1bnNpZ25lZCBpbnQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHVuc2lnbmVkIGxvbmcsdHJ1ZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsc2lnbmVkIGNoYXIsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHNpZ25lZCBzaG9ydCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsc2lnbmVkIGludCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsc2lnbmVkIGxvbmcsdHJ1ZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsYm9vbCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsY2hhcix0cnVlKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0vLyBJZiB0aGUgZm9sbG93aW5nIGxpbmUgZmFpbHMgdG8gY29tcGlsZSBhbmQgeW91J3JlIHVzaW5nIHRoZSBJbnRlbAotLy8gY29tcGlsZXIsIHNlZSBodHRwOi8vbGlzdHMuYm9vc3Qub3JnL01haWxBcmNoaXZlcy9ib29zdC11c2Vycy9tc2cwNjU2Ny5waHAsCi0vLyBhbmQgZGVmaW5lIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UIG9uIHRoZSBjb21tYW5kIGxpbmUuCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx3Y2hhcl90LHRydWUpCi0jZW5kaWYKLQotLy8gU2FtZSBzZXQgb2YgaW50ZWdyYWwgdHlwZXMgYXMgaW4gbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfcHJvbW90aW9uLmhwcC4KLS8vIFBsZWFzZSwga2VlcCBpbiBzeW5jLiAtLSBBbGV4YW5kZXIgTmFzb25vdgotI2lmIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTMwMCkpIFwKLSAgICB8fCAoZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikgJiYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDw9IDYwMCkpIFwKLSAgICB8fCAoZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPT0gMHg2MDApICYmIChfTVNDX1ZFUiA8IDEzMDApKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgX19pbnQ4LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxfX2ludDgsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHVuc2lnbmVkIF9faW50MTYsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLF9faW50MTYsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHVuc2lnbmVkIF9faW50MzIsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLF9faW50MzIsdHJ1ZSkKLSNpZmRlZiBfX0JPUkxBTkRDX18KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHVuc2lnbmVkIF9faW50NjQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLF9faW50NjQsdHJ1ZSkKLSNlbmRpZgotI2VuZGlmCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLHRydWUpCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHVuc2lnbmVkIF9faW50NjQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLF9faW50NjQsdHJ1ZSkKLSNlbmRpZgotICAgICAgICAKLSNpZmRlZiBORE5CT09TVF9IQVNfSU5UMTI4Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxuZG5ib29zdDo6aW50MTI4X3R5cGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUsdHJ1ZSkKLSNlbmRpZgotCi0jZW5kaWYgIC8vIG5vbi1Db2RlR2VhciBpbXBsZW1lbnRhdGlvbgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfSU5URUdSQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2x2YWx1ZV9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19sdmFsdWVfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc4ZTJjNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2x2YWx1ZV9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgICAgIEhvd2FyZCBIaW5uYW50IGFuZCBKb2huIE1hZGRvY2sgMjAwMC4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXQgTWFyY3VzLCBKZXNzZSBKb25lcyBhbmQgQWRvYmUgU3lzdGVtcyBJbmMgMjAwMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyAgICBGaXhlZCBpc19wb2ludGVyLCBpc19sdmFsdWVfcmVmZXJlbmNlLCBpc19jb25zdCwgaXNfdm9sYXRpbGUsIGlzX3NhbWUsIAotLy8gICAgaXNfbWVtYmVyX3BvaW50ZXIgYmFzZWQgb24gdGhlIFNpbXVsYXRlZCBQYXJ0aWFsIFNwZWNpYWxpemF0aW9uIHdvcmsgCi0vLyAgICBvZiBNYXQgTWFyY3VzIGFuZCBKZXNzZSBKb25lcy4gU2VlICBodHRwOi8vb3BlbnNvdXJjZS5hZG9iZS5jb20gb3IgCi0vLyAgICBodHRwOi8vZ3JvdXBzLnlhaG9vLmNvbS9ncm91cC9ib29zdC9tZXNzYWdlLzU0NDEgCi0vLyAgICBTb21lIHdvcmthcm91bmRzIGluIGhlcmUgdXNlIGlkZWFzIHN1Z2dlc3RlZCBmcm9tICJHZW5lcmljPFByb2dyYW1taW5nPjogCi0vLyAgICBNYXBwaW5ncyBiZXR3ZWVuIFR5cGVzIGFuZCBWYWx1ZXMiIAotLy8gICAgYnkgQW5kcmVpIEFsZXhhbmRyZXNjdSAoc2VlIGh0dHA6Ly93d3cuY3VqLmNvbS9leHBlcnRzLzE4MTAvYWxleGFuZHIuaHRtbCkuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19MVkFMVUVfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19MVkFMVUVfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC93cmFwLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCxfX2lzX3JlZmVyZW5jZShUKSkKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbHZhbHVlX3JlZmVyZW5jZSxULGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfbHZhbHVlX3JlZmVyZW5jZSxUJix0cnVlKQotCi0jaWYgIGRlZmluZWQoTkROQk9PU1RfSUxMRUdBTF9DVl9SRUZFUkVOQ0VTKQotLy8gdGhlc2UgYXJlIGlsbGVnYWwgc3BlY2lhbGlzYXRpb25zOyBjdi1xdWFsaWZpZXMgYXBwbGllZCB0bwotLy8gcmVmZXJlbmNlcyBoYXZlIG5vIGVmZmVjdCBhY2NvcmRpbmcgdG8gWzguMy4ycDFdLAotLy8gQysrIEJ1aWxkZXIgcmVxdWlyZXMgdGhlbSB0aG91Z2ggYXMgaXQgdHJlYXRzIGN2LXF1YWxpZmllZAotLy8gcmVmZXJlbmNlcyBhcyBkaXN0aW5jdCB0eXBlcy4uLgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfbHZhbHVlX3JlZmVyZW5jZSxUJiBjb25zdCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfbHZhbHVlX3JlZmVyZW5jZSxUJiB2b2xhdGlsZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfbHZhbHVlX3JlZmVyZW5jZSxUJiBjb25zdCB2b2xhdGlsZSx0cnVlKQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPCAzKQotLy8gdGhlc2UgYWxsb3cgdXMgdG8gd29yayBhcm91bmQgaWxsZWdhbGx5IGN2LXF1YWxpZmllZCByZWZlcmVuY2UKLS8vIHR5cGVzLgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfbHZhbHVlX3JlZmVyZW5jZSxUIGNvbnN0ICw6Om5kbmJvb3N0Ojppc19sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCB2b2xhdGlsZSAsOjpuZG5ib29zdDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQgY29uc3Qgdm9sYXRpbGUgLDo6bmRuYm9vc3Q6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlKQotLy8gSG93ZXZlciwgdGhlIGFib3ZlIHNwZWNpYWxpemF0aW9ucyBjb25mdXNlIGdjYyAyLjk2IHVubGVzcyB3ZSBhbHNvCi0vLyBzdXBwbHkgdGhlc2Ugc3BlY2lhbGl6YXRpb25zIGZvciBhcnJheSB0eXBlcwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsdW5zaWduZWQgbG9uZyBOLGlzX2x2YWx1ZV9yZWZlcmVuY2UsVFtOXSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHVuc2lnbmVkIGxvbmcgTixpc19sdmFsdWVfcmVmZXJlbmNlLGNvbnN0IFRbTl0sZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx1bnNpZ25lZCBsb25nIE4saXNfbHZhbHVlX3JlZmVyZW5jZSx2b2xhdGlsZSBUW05dLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsdW5zaWduZWQgbG9uZyBOLGlzX2x2YWx1ZV9yZWZlcmVuY2UsY29uc3Qgdm9sYXRpbGUgVFtOXSxmYWxzZSkKLSNlbmRpZgotCi0jZWxzZQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDE4MSA0MDk3KQotI2VuZGlmCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGU7Ci11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp3cmFwOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gVCYoKiBpc19sdmFsdWVfcmVmZXJlbmNlX2hlbHBlcjEod3JhcDxUPikgKSh3cmFwPFQ+KTsKLWNoYXIgaXNfbHZhbHVlX3JlZmVyZW5jZV9oZWxwZXIxKC4uLik7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBub190eXBlIGlzX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyMihUJigqKSh3cmFwPFQ+KSk7Ci15ZXNfdHlwZSBpc19sdmFsdWVfcmVmZXJlbmNlX2hlbHBlcjIoLi4uKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbHZhbHVlX3JlZmVyZW5jZV9pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZSA9IHNpemVvZigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfbHZhbHVlX3JlZmVyZW5jZV9oZWxwZXIyKAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfbHZhbHVlX3JlZmVyZW5jZV9oZWxwZXIxKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp3cmFwPFQ+KCkpKSkgPT0gMQotICAgICAgICApOwotfTsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19sdmFsdWVfcmVmZXJlbmNlLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2x2YWx1ZV9yZWZlcmVuY2Usdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbHZhbHVlX3JlZmVyZW5jZSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19sdmFsdWVfcmVmZXJlbmNlLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbHZhbHVlX3JlZmVyZW5jZSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfbHZhbHVlX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhlZjJlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiAhZGVmaW5lZChORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUykKLSAgIC8vCi0gICAvLyBOb3RlOiB3ZSB1c2UgdGhlICJ3b3JrYXJvdW5kIiB2ZXJzaW9uIGZvciBNU1ZDIGJlY2F1c2UgaXQgd29ya3MgZm9yIAotICAgLy8gX19zdGRjYWxsIGV0YyBmdW5jdGlvbiB0eXBlcywgd2hlcmUgYXMgdGhlIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24KLSAgIC8vIHZlcnNpb24gZG9lcyBub3QgZG8gc28uCi0gICAvLwotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfaW1wbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvZmFsc2VfcmVzdWx0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3Rlci5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcixULF9faXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIoIFQgKSkKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoCi0gICAgICBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotICAgICwgVAotICAgICwgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZT46OnZhbHVlCi0gICAgKQotCi0jZWxzZQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBfX0JPUkxBTkRDX18KLQotdGVtcGxhdGUgPGJvb2w+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX3NlbGVjdAotICAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpmYWxzZV9yZXN1bHQKLXsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX3NlbGVjdDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjYzMzQpCi0jZW5kaWYKLSAgICAgICAgc3RhdGljIFQqIG1ha2VfdDsKLSAgICAgICAgdHlwZWRlZiByZXN1bHRfPFQ+IHNlbGZfdHlwZTsKLQotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgICBib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgICAgICAxID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihzZWxmX3R5cGU6Om1ha2VfdCkpCi0gICAgICAgICAgICApKTsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbAotICAgIDogcHVibGljIGlzX21lbV9mdW5fcG9pbnRlcl9zZWxlY3Q8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbDxUJj4gOiBwdWJsaWMgZmFsc2VfdHlwZXt9OwotI2VuZGlmCi0KLSNlbHNlIC8vIEJvcmxhbmQgQysrCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2ltcGwKLXsKLSAgIHN0YXRpYyBUKiBtX3Q7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgICAgIGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgICgxID09IHNpemVvZih0eXBlX3RyYWl0czo6aXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihtX3QpKSkgKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2ltcGw8VCY+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0jZW5kaWYKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcix2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfb2JqZWN0X3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfb2JqZWN0X3BvaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTU2N2RkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX29iamVjdF9wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19NRU1CRVJfT0JKRUNUX1BPSU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9PQkpFQ1RfUE9JTlRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19tZW1iZXJfb2JqZWN0X3BvaW50ZXJfaW1wbAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgYm9vbCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19tZW1iZXJfcG9pbnRlcjxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyPFQ+Ojp2YWx1ZQotICAgICAgICAgPjo6dmFsdWUKLSAgICAgID46OnZhbHVlICkpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbWVtYmVyX29iamVjdF9wb2ludGVyLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19tZW1iZXJfb2JqZWN0X3BvaW50ZXJfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZmNhNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICAgICAgSG93YXJkIEhpbm5hbnQgYW5kIEpvaG4gTWFkZG9jayAyMDAwLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hdCBNYXJjdXMsIEplc3NlIEpvbmVzIGFuZCBBZG9iZSBTeXN0ZW1zIEluYyAyMDAxCi0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICAgIEZpeGVkIGlzX3BvaW50ZXIsIGlzX3JlZmVyZW5jZSwgaXNfY29uc3QsIGlzX3ZvbGF0aWxlLCBpc19zYW1lLCAKLS8vICAgIGlzX21lbWJlcl9wb2ludGVyIGJhc2VkIG9uIHRoZSBTaW11bGF0ZWQgUGFydGlhbCBTcGVjaWFsaXphdGlvbiB3b3JrIAotLy8gICAgb2YgTWF0IE1hcmN1cyBhbmQgSmVzc2UgSm9uZXMuIFNlZSAgaHR0cDovL29wZW5zb3VyY2UuYWRvYmUuY29tIG9yIAotLy8gICAgaHR0cDovL2dyb3Vwcy55YWhvby5jb20vZ3JvdXAvYm9vc3QvbWVzc2FnZS81NDQxIAotLy8gICAgU29tZSB3b3JrYXJvdW5kcyBpbiBoZXJlIHVzZSBpZGVhcyBzdWdnZXN0ZWQgZnJvbSAiR2VuZXJpYzxQcm9ncmFtbWluZz46IAotLy8gICAgTWFwcGluZ3MgYmV0d2VlbiBUeXBlcyBhbmQgVmFsdWVzIiAKLS8vICAgIGJ5IEFuZHJlaSBBbGV4YW5kcmVzY3UgKHNlZSBodHRwOi8vd3d3LmN1ai5jb20vZXhwZXJ0cy8xODEwL2FsZXhhbmRyLmh0bWwpLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfTUVNQkVSX1BPSU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9QT0lOVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3Rlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvZmFsc2VfcmVzdWx0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX21lbWJlcl9wb2ludGVyLFQsX19pc19tZW1iZXJfcG9pbnRlcihUKSkKLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19tZW1iZXJfcG9pbnRlcixULGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsdHlwZW5hbWUgVSxpc19tZW1iZXJfcG9pbnRlcixVIFQ6OiosdHJ1ZSkKLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbWVtYmVyX3BvaW50ZXIsVCw6Om5kbmJvb3N0Ojppc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcjxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx0eXBlbmFtZSBVLGlzX21lbWJlcl9wb2ludGVyLFUgVDo6Kix0cnVlKQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXyw8PTB4MzAwMykgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgPD02MDApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx0eXBlbmFtZSBVLGlzX21lbWJlcl9wb2ludGVyLFUgVDo6KmNvbnN0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx0eXBlbmFtZSBVLGlzX21lbWJlcl9wb2ludGVyLFUgVDo6KnZvbGF0aWxlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx0eXBlbmFtZSBVLGlzX21lbWJlcl9wb2ludGVyLFUgVDo6KmNvbnN0IHZvbGF0aWxlLHRydWUpCi0jZW5kaWYKLQotI2Vsc2UgLy8gbm8gcGFydGlhbCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQ+Ci06Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBpc19tZW1iZXJfcG9pbnRlcl90ZXN0ZXIoUiBUOjoqY29uc3Qgdm9sYXRpbGUqKTsKLTo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgaXNfbWVtYmVyX3BvaW50ZXJfdGVzdGVyKC4uLik7Ci0KLXRlbXBsYXRlIDxib29sPgotc3RydWN0IGlzX21lbWJlcl9wb2ludGVyX3NlbGVjdAotICAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpmYWxzZV9yZXN1bHQKLXsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfbWVtYmVyX3BvaW50ZXJfc2VsZWN0PGZhbHNlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgc3RhdGljIFQqIG1ha2VfdCgpOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgICBib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICAoMSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIobWFrZV90KCkpKSksCi0gICAgICAgICAgICAgICAgKDEgPT0gc2l6ZW9mKGlzX21lbWJlcl9wb2ludGVyX3Rlc3RlcihtYWtlX3QoKSkpKQotICAgICAgICAgICAgPjo6dmFsdWUpICk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX21lbWJlcl9wb2ludGVyX2ltcGwKLSAgICA6IHB1YmxpYyBpc19tZW1iZXJfcG9pbnRlcl9zZWxlY3Q8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbWVtYmVyX3BvaW50ZXIsdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbWVtYmVyX3BvaW50ZXIsdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbWVtYmVyX3BvaW50ZXIsdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbWVtYmVyX3BvaW50ZXIsdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19tZW1iZXJfcG9pbnRlcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfbWVtYmVyX3BvaW50ZXJfaW1wbDxUPjo6dmFsdWUpCi0KLSNlbmRpZiAvLyBfX0JPUkxBTkRDX18KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfYXNzaWduYWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU4NjRhYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICAoQykgQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMi0yMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgQW50b255IFBvbHVraGluIDIwMTMuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX05PVEhST1dfTU9WRV9BU1NJR05BQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19OT1RIUk9XX01PVkVfQVNTSUdOQUJMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9kZWNsdmFsLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRW5hYmxlID0gdm9pZD4KLXN0cnVjdCBmYWxzZV9vcl9jcHAxMV9ub2V4Y2VwdF9tb3ZlX2Fzc2lnbmFibGU6IHB1YmxpYyA6Om5kbmJvb3N0OjpmYWxzZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBmYWxzZV9vcl9jcHAxMV9ub2V4Y2VwdF9tb3ZlX2Fzc2lnbmFibGUgPAotICAgICAgICBULAotICAgICAgICB0eXBlbmFtZSA6Om5kbmJvb3N0OjplbmFibGVfaWZfYzxzaXplb2YoVCkgJiYgTkROQk9PU1RfTk9FWENFUFRfRVhQUig6Om5kbmJvb3N0OjpkZWNsdmFsPFQmPigpID0gOjpuZG5ib29zdDo6ZGVjbHZhbDxUPigpKT46OnR5cGUKLSAgICA+IDogcHVibGljIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIE5ETkJPT1NUX05PRVhDRVBUX0VYUFIoOjpuZG5ib29zdDo6ZGVjbHZhbDxUJj4oKSA9IDo6bmRuYm9vc3Q6OmRlY2x2YWw8VD4oKSk+Ci17fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGVfaW1wewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmZhbHNlX29yX2NwcDExX25vZXhjZXB0X21vdmVfYXNzaWduYWJsZTxUPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlX2ltcHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbjxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aGFzX25vdGhyb3dfYXNzaWduPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlID46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jZW5kaWYKLQotfQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZV9pbXA8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUsdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUsdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTk9USFJPV19NT1ZFX0FTU0lHTkFCTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODkxMTM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIChDKSBDb3B5cmlnaHQgRXJpYyBGcmllZG1hbiAyMDAyLTIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBBbnRvbnkgUG9sdWtoaW4gMjAxMy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfTk9USFJPV19NT1ZFX0NPTlNUUlVDVElCTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX05PVEhST1dfTU9WRV9DT05TVFJVQ1RJQkxFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb3B5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9kZWNsdmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEVuYWJsZSA9IHZvaWQ+Ci1zdHJ1Y3QgZmFsc2Vfb3JfY3BwMTFfbm9leGNlcHRfbW92ZV9jb25zdHJ1Y3RpYmxlOiBwdWJsaWMgOjpuZG5ib29zdDo6ZmFsc2VfdHlwZSB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgZmFsc2Vfb3JfY3BwMTFfbm9leGNlcHRfbW92ZV9jb25zdHJ1Y3RpYmxlIDwKLSAgICAgICAgVCwKLSAgICAgICAgdHlwZW5hbWUgOjpuZG5ib29zdDo6ZW5hYmxlX2lmX2M8c2l6ZW9mKFQpICYmIE5ETkJPT1NUX05PRVhDRVBUX0VYUFIoVCg6Om5kbmJvb3N0OjpkZWNsdmFsPFQ+KCkpKT46OnR5cGUKLSAgICA+IDogcHVibGljIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIE5ETkJPT1NUX05PRVhDRVBUX0VYUFIoVCg6Om5kbmJvb3N0OjpkZWNsdmFsPFQ+KCkpKT4KLXt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZV9pbXB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjpmYWxzZV9vcl9jcHAxMV9ub2V4Y2VwdF9tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZV9pbXB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0oCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpoYXNfbm90aHJvd19jb3B5PFQ+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlID46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jZW5kaWYKLQotfQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZV9pbXA8VD46OnZhbHVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUsdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19OT1RIUk9XX01PVkVfQ09OU1RSVUNUSUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfb2JqZWN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfb2JqZWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA2ZWI5YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX29iamVjdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX09CSkVDVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfT0JKRUNUX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfb2JqZWN0X2ltcGwKLXsKLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9pZDxUPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWU+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZT46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19vYmplY3QsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX29iamVjdF9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX09CSkVDVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkwNzYxYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19QT0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1BPRF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2NhbGFyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfSVNfUE9ECi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVSTkFMX0lTX1BPRChUKSBmYWxzZQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU5URVJOQUxfSVNfUE9EKFQpIE5ETkJPT1NUX0lTX1BPRChUKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vIGZvcndhcmQgZGVjbGFyYXRpb24sIG5lZWRlZCBieSAnaXNfcG9kX2FycmF5X2hlbHBlcicgdGVtcGxhdGUgYmVsb3cKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX1BPRDsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzX3BvZF9pbXBsCi17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NjYWxhcjxUPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIE5ETkJPT1NUX0lOVEVSTkFMX0lTX1BPRChUKQotICAgICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzej4KLXN0cnVjdCBpc19wb2RfaW1wbDxUW3N6XT4KLSAgICA6IHB1YmxpYyBpc19wb2RfaW1wbDxUPgotewotfTsKLSNlbmRpZgotCi0jZWxzZQotCi10ZW1wbGF0ZSA8Ym9vbCBpc19hcnJheSA9IGZhbHNlPgotc3RydWN0IGlzX3BvZF9oZWxwZXIKLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICAgIGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NjYWxhcjxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfSU5URVJOQUxfSVNfUE9EKFQpCi0gICAgICAgICAgICA+Ojp2YWx1ZSkpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBiPgotc3RydWN0IGJvb2xfdG9feWVzX25vX3R5cGUKLXsKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGJvb2xfdG9feWVzX25vX3R5cGU8dHJ1ZT4KLXsKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEFycmF5VHlwZT4KLXN0cnVjdCBpc19wb2RfYXJyYXlfaGVscGVyCi17Ci0gICAgZW51bSB7IGlzX3BvZCA9IDo6bmRuYm9vc3Q6OmlzX1BPRDxBcnJheVR5cGU+Ojp2YWx1ZSB9OyAvLyBNU1ZDIHdvcmthcm91bmQKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJvb2xfdG9feWVzX25vX3R5cGU8aXNfcG9kPjo6dHlwZSB0eXBlOwotICAgIHR5cGUgaW5zdGFuY2UoKSBjb25zdDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaXNfcG9kX2FycmF5X2hlbHBlcjxUPiBpc19QT0RfYXJyYXkoVCopOwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3BvZF9oZWxwZXI8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUJiBoZWxwKCk7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICBzaXplb2YoaXNfUE9EX2FycmF5KGhlbHAoKSkuaW5zdGFuY2UoKSkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgICAgICk7Ci0gICAgfTsKLX07Ci0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc19wb2RfaW1wbAoteyAKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICBib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19wb2RfaGVscGVyPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUKLSAgICAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzxUPjo6dmFsdWUKLSAgICAgICAgICAgKQotICAgICAgICk7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0vLyB0aGUgZm9sbG93aW5nIGhlbHAgY29tcGlsZXJzIHdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBzdXBwb3J0OgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2Qsdm9pZCx0cnVlKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCx2b2lkIGNvbnN0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCx2b2lkIHZvbGF0aWxlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCx2b2lkIGNvbnN0IHZvbGF0aWxlLHRydWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcG9kLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19wb2RfaW1wbDxUPjo6dmFsdWUpCi0vLyBpc19QT0QgaXMgdGhlIG9sZCBkZXByaWNhdGVkIG5hbWUgZm9yIHRoaXMgdHJhaXQsIGRvIG5vdCB1c2UgdGhpcyBhcyBpdCBtYXkKLS8vIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHdpdGhvdXQgd2FybmluZyEhCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX1BPRCxULDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9JTlRFUk5BTF9JU19QT0QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1BPRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTJkMzZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICAgICAgSG93YXJkIEhpbm5hbnQgYW5kIEpvaG4gTWFkZG9jayAyMDAwLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hdCBNYXJjdXMsIEplc3NlIEpvbmVzIGFuZCBBZG9iZSBTeXN0ZW1zIEluYyAyMDAxCi0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICAgIEZpeGVkIGlzX3BvaW50ZXIsIGlzX3JlZmVyZW5jZSwgaXNfY29uc3QsIGlzX3ZvbGF0aWxlLCBpc19zYW1lLCAKLS8vICAgIGlzX21lbWJlcl9wb2ludGVyIGJhc2VkIG9uIHRoZSBTaW11bGF0ZWQgUGFydGlhbCBTcGVjaWFsaXphdGlvbiB3b3JrIAotLy8gICAgb2YgTWF0IE1hcmN1cyBhbmQgSmVzc2UgSm9uZXMuIFNlZSAgaHR0cDovL29wZW5zb3VyY2UuYWRvYmUuY29tIG9yIAotLy8gICAgaHR0cDovL2dyb3Vwcy55YWhvby5jb20vZ3JvdXAvYm9vc3QvbWVzc2FnZS81NDQxIAotLy8gICAgU29tZSB3b3JrYXJvdW5kcyBpbiBoZXJlIHVzZSBpZGVhcyBzdWdnZXN0ZWQgZnJvbSAiR2VuZXJpYzxQcm9ncmFtbWluZz46IAotLy8gICAgTWFwcGluZ3MgYmV0d2VlbiBUeXBlcyBhbmQgVmFsdWVzIiAKLS8vICAgIGJ5IEFuZHJlaSBBbGV4YW5kcmVzY3UgKHNlZSBodHRwOi8vd3d3LmN1ai5jb20vZXhwZXJ0cy8xODEwL2FsZXhhbmRyLmh0bWwpLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfUE9JTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfUE9JTlRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfdGVzdGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvZmFsc2VfcmVzdWx0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3BvaW50ZXIsVCxfX2lzX3BvaW50ZXIoVCkpCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfcG9pbnRlcl9oZWxwZXIKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0jICAgZGVmaW5lIFRUX0FVWF9CT09MX1RSQUlUX0hFTFBFUl9QQVJUSUFMX1NQRUMoaGVscGVyLHNwLHJlc3VsdCkgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaGVscGVyPHNwPiBcCi17IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSByZXN1bHQpOyBcCi19OyBcCi0vKiovCi0KLVRUX0FVWF9CT09MX1RSQUlUX0hFTFBFUl9QQVJUSUFMX1NQRUMoaXNfcG9pbnRlcl9oZWxwZXIsVCosdHJ1ZSkKLQotIyAgIHVuZGVmIFRUX0FVWF9CT09MX1RSQUlUX0hFTFBFUl9QQVJUSUFMX1NQRUMKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3BvaW50ZXJfaW1wbAotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvaW50ZXJfaGVscGVyPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgLCA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19tZW1iZXJfcG9pbnRlcjxUPjo6dmFsdWUKLSAgICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUpCi0gICAgICAgICk7Ci0jZWxzZQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19wb2ludGVyX2hlbHBlcjx0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZQotICAgICAgICAgICAgLCA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19tZW1iZXJfcG9pbnRlcjxUPjo6dmFsdWUKLSAgICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUpCi0gICAgICAgICk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3BvaW50ZXIsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvaW50ZXJfaW1wbDxUPjo6dmFsdWUpCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIWRlZmluZWQoX19DT01PX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3BvaW50ZXIsVCYsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19wb2ludGVyLFQmIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfcG9pbnRlcixUJiB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3BvaW50ZXIsVCYgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotI2Vsc2UgLy8gbm8gcGFydGlhbCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotc3RydWN0IHBvaW50ZXJfaGVscGVyCi17Ci0gICAgcG9pbnRlcl9oZWxwZXIoY29uc3Qgdm9sYXRpbGUgdm9pZCopOwotfTsKLQoteWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBpc19wb2ludGVyX3Rlc3Rlcihwb2ludGVyX2hlbHBlcik7Ci1ub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgaXNfcG9pbnRlcl90ZXN0ZXIoLi4uKTsKLQotdGVtcGxhdGUgPGJvb2w+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl9zZWxlY3QKLSAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6ZmFsc2VfcmVzdWx0Ci17Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3BvaW50ZXJfc2VsZWN0PGZhbHNlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgc3RhdGljIFQmIG1ha2VfdCgpOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgICAgICAoMSA9PSBzaXplb2YoaXNfcG9pbnRlcl90ZXN0ZXIobWFrZV90KCkpKSksCi0gICAgICAgICAgICAgICAgICAgICgxID09IHNpemVvZih0eXBlX3RyYWl0czo6aXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihtYWtlX3QoKSkpKQotICAgICAgICAgICAgICAgID46OnZhbHVlKSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3BvaW50ZXJfaW1wbAotICAgIDogcHVibGljIGlzX3BvaW50ZXJfc2VsZWN0PAotICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvaW50ZXIsdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9pbnRlcix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2ludGVyLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvaW50ZXIsdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19wb2ludGVyLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19wb2ludGVyX2ltcGw8VD46OnZhbHVlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9seW1vcnBoaWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2x5bW9ycGhpYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YjY2MTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2x5bW9ycGhpYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDAuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19QT0xZTU9SUEhJQ19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfUE9MWU1PUlBISUNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSVNfUE9MWU1PUlBISUMKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNlbmRpZgotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmbmRlZiBORE5CT09TVF9JU19QT0xZTU9SUEhJQwotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2x5bW9ycGhpY19pbXAxCi17Ci0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgyNDA3KSAvLyBDV1Bybzcgc2hvdWxkIHJldHVybiBmYWxzZSBhbHdheXMuCi0gICAgdHlwZWRlZiBjaGFyIGQxLCAoJmQyKVsyXTsKLSMgZWxzZSAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIG5jdlQ7Ci0gICBzdHJ1Y3QgZDEgOiBwdWJsaWMgbmN2VAotICAgewotICAgICAgZDEoKTsKLSMgIGlmICFkZWZpbmVkKF9fR05VQ19fKSAvLyB0aGlzIHJhaXNlcyB3YXJuaW5ncyB3aXRoIHNvbWUgY2xhc3NlcywgYW5kIGJ1eXMgbm90aGluZyB3aXRoIEdDQwotICAgICAgfmQxKCl0aHJvdygpOwotIyAgZW5kaWYgCi0gICAgICBjaGFyIHBhZGRpbmdbMjU2XTsKLSAgIHByaXZhdGU6Ci0gICAgICAvLyBrZWVwIHNvbWUgcGlja3kgY29tcGlsZXJzIGhhcHB5OgotICAgICAgZDEoY29uc3QgZDEmKTsKLSAgICAgIGQxJiBvcGVyYXRvcj0oY29uc3QgZDEmKTsKLSAgIH07Ci0gICBzdHJ1Y3QgZDIgOiBwdWJsaWMgbmN2VAotICAgewotICAgICAgZDIoKTsKLSAgICAgIHZpcnR1YWwgfmQyKCl0aHJvdygpOwotIyAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgIWRlZmluZWQoX19JQ0wpCi0gICAgICAvLyBmb3Igc29tZSByZWFzb24gdGhpcyBtZXNzZXMgdXAgVkMrKyB3aGVuIFQgaGFzIHZpcnR1YWwgYmFzZXMsCi0gICAgICAvLyBwcm9iYWJseSBsaWtld2lzZSBmb3IgY29tcGlsZXJzIHRoYXQgdXNlIHRoZSBzYW1lIEFCSToKLSAgICAgIHN0cnVjdCB1bmlxdWV7fTsKLSAgICAgIHZpcnR1YWwgdm9pZCB1bmlxdWVfbmFtZV90b19ib29zdDU0ODc2MjkodW5pcXVlKik7Ci0jICBlbmRpZgotICAgICAgY2hhciBwYWRkaW5nWzI1Nl07Ci0gICBwcml2YXRlOgotICAgICAgLy8ga2VlcCBzb21lIHBpY2t5IGNvbXBpbGVycyBoYXBweToKLSAgICAgIGQyKGNvbnN0IGQyJik7Ci0gICAgICBkMiYgb3BlcmF0b3I9KGNvbnN0IGQyJik7Ci0gICB9OwotIyBlbmRpZiAKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoZDIpID09IHNpemVvZihkMSkpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvbHltb3JwaGljX2ltcDIKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGlzX2NsYXNzPgotc3RydWN0IGlzX3BvbHltb3JwaGljX3NlbGVjdG9yCi17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfcG9seW1vcnBoaWNfaW1wMjxUPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcG9seW1vcnBoaWNfc2VsZWN0b3I8dHJ1ZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19wb2x5bW9ycGhpY19pbXAxPFQ+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcG9seW1vcnBoaWNfaW1wCi17Ci0gICB0eXBlZGVmIGlzX3BvbHltb3JwaGljX3NlbGVjdG9yPCA6Om5kbmJvb3N0Ojppc19jbGFzczxUPjo6dmFsdWU+IHNlbGVjdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dGVtcGxhdGUgcmViaW5kPFQ+IGJpbmRlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmluZGVyOjp0eXBlIGltcF90eXBlOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gaW1wX3R5cGU6OnZhbHVlKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3BvbHltb3JwaGljLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19wb2x5bW9ycGhpY19pbXA8VD46OnZhbHVlKQotCi0jZWxzZSAvLyBORE5CT09TVF9JU19QT0xZTU9SUEhJQwotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3BvbHltb3JwaGljLFQsTkROQk9PU1RfSVNfUE9MWU1PUlBISUMoVCkpCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlkNmM0Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gICAgICBIb3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIDIwMDAsIDIwMTAuIAotLy8gIChDKSBDb3B5cmlnaHQgTWF0IE1hcmN1cywgSmVzc2UgSm9uZXMgYW5kIEFkb2JlIFN5c3RlbXMgSW5jIDIwMDEKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbHZhbHVlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcnZhbHVlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV9pbXBsCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgOjpuZG5ib29zdDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcmVmZXJlbmNlLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19yZWZlcmVuY2VfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcnZhbHVlX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3J2YWx1ZV9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2ZlMTQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcnZhbHVlX3JlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0KLS8vICAoQykgSm9obiBNYWRkb2NrIDIwMTAuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19SVkFMVUVfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19SVkFMVUVfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19ydmFsdWVfcmVmZXJlbmNlLFQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19ydmFsdWVfcmVmZXJlbmNlLFQmJix0cnVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDBiZDJmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICAgICAgSG93YXJkIEhpbm5hbnQgYW5kIEpvaG4gTWFkZG9jayAyMDAwLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hdCBNYXJjdXMsIEplc3NlIEpvbmVzIGFuZCBBZG9iZSBTeXN0ZW1zIEluYyAyMDAxCi0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICAgIEZpeGVkIGlzX3BvaW50ZXIsIGlzX3JlZmVyZW5jZSwgaXNfY29uc3QsIGlzX3ZvbGF0aWxlLCBpc19zYW1lLCAKLS8vICAgIGlzX21lbWJlcl9wb2ludGVyIGJhc2VkIG9uIHRoZSBTaW11bGF0ZWQgUGFydGlhbCBTcGVjaWFsaXphdGlvbiB3b3JrIAotLy8gICAgb2YgTWF0IE1hcmN1cyBhbmQgSmVzc2UgSm9uZXMuIFNlZSAgaHR0cDovL29wZW5zb3VyY2UuYWRvYmUuY29tIG9yIAotLy8gICAgaHR0cDovL2dyb3Vwcy55YWhvby5jb20vZ3JvdXAvYm9vc3QvbWVzc2FnZS81NDQxIAotLy8gICAgU29tZSB3b3JrYXJvdW5kcyBpbiBoZXJlIHVzZSBpZGVhcyBzdWdnZXN0ZWQgZnJvbSAiR2VuZXJpYzxQcm9ncmFtbWluZz46IAotLy8gICAgTWFwcGluZ3MgYmV0d2VlbiBUeXBlcyBhbmQgVmFsdWVzIiAKLS8vICAgIGJ5IEFuZHJlaSBBbGV4YW5kcmVzY3UgKHNlZSBodHRwOi8vd3d3LmN1ai5jb20vZXhwZXJ0cy8xODEwL2FsZXhhbmRyLmh0bWwpLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfU0FNRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfU0FNRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jZW5kaWYKLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKGlzX3NhbWUsVCxVLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIFQsaXNfc2FtZSxULFQsdHJ1ZSkKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLS8vIHdpdGhvdXQgdGhpcywgQm9ybGFuZCdzIGNvbXBpbGVyIGdpdmVzIHRoZSB3cm9uZyBhbnN3ZXIgZm9yCi0vLyByZWZlcmVuY2VzIHRvIGFycmF5czoKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBULGlzX3NhbWUsVCYsVCYsdHJ1ZSkKLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotLy8gdGhlIGZvbGxvd2luZyBWQzYgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gaXMgKk5PVCogbGVnYWwKLS8vIEMrKywgYnV0IGhhcyB0aGUgYWR2YW50YWdlIHRoYXQgaXQgd29ya3MgZm9yIGluY29tcGxldGUKLS8vIHR5cGVzLgotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGlzX3NhbWVfcGFydF8xCi17Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDI+ICBzdHJ1Y3QgcGFydF8yICAgICB7IGVudW0geyB2YWx1ZSA9IGZhbHNlIH07IH07Ci0gICAgdGVtcGxhdGU8PiAgICAgICAgICAgICBzdHJ1Y3QgcGFydF8yPFQxPiB7IGVudW0geyB2YWx1ZSA9IHRydWUgfTsgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPgotc3RydWN0IGlzX3NhbWVfaW1wbAotewotICAgIGVudW0geyB2YWx1ZSA9IG5kbmJvb3N0OjpkZXRhaWw6OmlzX3NhbWVfcGFydF8xPFQxPjo6dGVtcGxhdGUgcGFydF8yPFQyPjo6dmFsdWUgfTsKLX07Ci0KLSNlbHNlIC8vIGdlbmVyaWMgIm5vLXBhcnRpYWwtc3BlY2lhbGl6YXRpb24iIHZlcnNpb24KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci06Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUKLU5ETkJPT1NUX1RUX0RFQ0wgaXNfc2FtZV90ZXN0ZXIoVCosIFQqKTsKLQotOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUKLU5ETkJPT1NUX1RUX0RFQ0wgaXNfc2FtZV90ZXN0ZXIoLi4uKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1zdHJ1Y3QgaXNfc2FtZV9pbXBsCi17Ci0gICBzdGF0aWMgVCB0OwotICAgc3RhdGljIFUgdTsKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgIChzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSA9PSBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6aXNfc2FtZV90ZXN0ZXIoJnQsJnUpKSksCi0gICAgICAgICAoOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSA9PSA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VT46OnZhbHVlKSwKLSAgICAgICAgIChzaXplb2YoVCkgPT0gc2l6ZW9mKFUpKQotICAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01TVkMKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoaXNfc2FtZSxULFUsKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfc2FtZV9pbXBsPFQsVT46OnZhbHVlKSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmICAvLyBORE5CT09TVF9UVF9JU19TQU1FX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NjYWxhci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NjYWxhci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZTIwOGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zY2FsYXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19TQ0FMQVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1NDQUxBUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc2NhbGFyX2ltcGwKLXsgCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2VudW08VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19tZW1iZXJfcG9pbnRlcjxUPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci19OwotCi0vLyB0aGVzZSBzcGVjaWFsaXphdGlvbnMgYXJlIG9ubHkgcmVhbGx5IG5lZWRlZCBmb3IgY29tcGlsZXJzIAotLy8gd2l0aG91dCBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHN1cHBvcnQ6Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2NhbGFyX2ltcGw8dm9pZD57IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlICk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2NhbGFyX2ltcGw8dm9pZCBjb25zdD57IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlICk7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2NhbGFyX2ltcGw8dm9pZCB2b2xhdGlsZT57IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlICk7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2NhbGFyX2ltcGw8dm9pZCBjb25zdCB2b2xhdGlsZT57IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlICk7IH07Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfc2NhbGFyLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19zY2FsYXJfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19TQ0FMQVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NpZ25lZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NpZ25lZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MGM2ZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zaWduZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19TSUdORURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1NJR05FRF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWYgIShkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykgJiYgX19FREdfVkVSU0lPTl9fIDw9IDIzOCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04pCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3NpZ25lZF92YWx1ZXMKLXsKLSAgIC8vCi0gICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHVzZSBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQgaGVyZSwgdXNpbmcgZW51bSdzCi0gICAvLyByYXRoZXIgdGhhbiAicmVhbCIgc3RhdGljIGNvbnN0YW50cyBzaW1wbHkgZG9lc24ndCB3b3JrIG9yIGdpdmUKLSAgIC8vIHRoZSBjb3JyZWN0IGFuc3dlci4KLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSBub19jdl90OwotICAgc3RhdGljIGNvbnN0IG5vX2N2X3QgbWludXNfb25lID0gKHN0YXRpY19jYXN0PG5vX2N2X3Q+KC0xKSk7Ci0gICBzdGF0aWMgY29uc3Qgbm9fY3ZfdCB6ZXJvID0gKHN0YXRpY19jYXN0PG5vX2N2X3Q+KDApKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3NpZ25lZF9oZWxwZXIKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIG5vX2N2X3Q7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoISg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3NpZ25lZF92YWx1ZXM8VD46Om1pbnVzX29uZSAgPiBuZG5ib29zdDo6ZGV0YWlsOjppc19zaWduZWRfdmFsdWVzPFQ+Ojp6ZXJvKSkpOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgaW50ZWdyYWxfdHlwZT4KLXN0cnVjdCBpc19zaWduZWRfc2VsZWN0X2hlbHBlcgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX3NpZ25lZF9oZWxwZXI8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3NpZ25lZF9zZWxlY3RfaGVscGVyPGZhbHNlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGZhbHNlX3R5cGUgdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19zaWduZWRfaW1wCi17Ci0gICB0eXBlZGVmIGlzX3NpZ25lZF9zZWxlY3RfaGVscGVyPCAKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19lbnVtPFQ+Ojp2YWx1ZT46OnZhbHVlIAotICAgPiBzZWxlY3RvcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnRlbXBsYXRlIHJlYmluZDxUPiBiaW5kZXI7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJpbmRlcjo6dHlwZSB0eXBlOwotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxMzAwKQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gaXNfc2lnbmVkX2ltcDxUPjo6dHlwZTo6dmFsdWUpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHR5cGU6OnZhbHVlKTsKLSNlbmRpZgotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc19zaWduZWRfaW1wIDogcHVibGljIGZhbHNlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHZvbGF0aWxlIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGludD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8dm9sYXRpbGUgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8dm9sYXRpbGUgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3QgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHZvbGF0aWxlIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0jaWYgZGVmaW5lZChDSEFSX01JTikgJiYgKENIQVJfTUlOICE9IDApCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLSNlbmRpZgotI2lmIGRlZmluZWQoV0NIQVJfTUlOKSAmJiAoV0NIQVJfTUlOICE9IDApCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8dm9sYXRpbGUgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLSNlbmRpZgotCi0jZW5kaWYKLQotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3NpZ25lZCxULF9faXNfc2lnbmVkKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfc2lnbmVkLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19zaWduZWRfaW1wPFQ+Ojp2YWx1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3N0YXRlbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3N0YXRlbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OTY4ZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zdGF0ZWxlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19TVEFURUxFU1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1NUQVRFTEVTU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvbnN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb3B5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc3RhdGVsZXNzX2ltcGwKLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgIDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2NvbnN0cnVjdG9yPFQ+Ojp2YWx1ZSwKLSAgICAgICA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9jb3B5PFQ+Ojp2YWx1ZSwKLSAgICAgICA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ojp2YWx1ZSwKLSAgICAgICA6Om5kbmJvb3N0Ojppc19jbGFzczxUPjo6dmFsdWUsCi0gICAgICAgOjpuZG5ib29zdDo6aXNfZW1wdHk8VD46OnZhbHVlCi0gICAgID46OnZhbHVlKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19zdGF0ZWxlc3MsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3N0YXRlbGVzc19pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1NUQVRFTEVTU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5pb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc191bmlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0YjRiZDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc191bmlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1VOSU9OX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19VTklPTl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0jaWZuZGVmIF9fR05VQ19fCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzX3VuaW9uX2ltcGwKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIGN2dDsKLSNpZmRlZiBORE5CT09TVF9JU19VTklPTgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSVNfVU5JT04oY3Z0KSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotI2VuZGlmCi19OwotI2Vsc2UKLS8vCi0vLyB1c2luZyByZW1vdmVfY3YgaGVyZSBnZW5lcmF0ZXMgYSB3aG9sZSBsb2FkIG9mIG5lZWRsZXNzCi0vLyB3YXJuaW5ncyB3aXRoIGdjYywgc2luY2UgaXQgZG9lc24ndCBkbyBhbnkgZ29vZCB3aXRoIGdjYwotLy8gaW4gYW55IGNhc2UgKGF0IGxlYXN0IGF0IHByZXNlbnQpLCBqdXN0IHJlbW92ZSBpdDoKLS8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzX3VuaW9uX2ltcGwKLXsKLSNpZmRlZiBORE5CT09TVF9JU19VTklPTgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSVNfVU5JT04oVCkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLSNlbmRpZgotfTsKLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdW5pb24sVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3VuaW9uX2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfVU5JT05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3Vuc2lnbmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5zaWduZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmJhZjExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5zaWduZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19VTlNJR05FRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfVU5TSUdORURfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotI2lmICEoZGVmaW5lZChfX0VER19WRVJTSU9OX18pICYmIF9fRURHX1ZFUlNJT05fXyA8PSAyMzgpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc191bnNpZ25lZF92YWx1ZXMKLXsKLSAgIC8vCi0gICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHVzZSBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQgaGVyZSwgdXNpbmcgZW51bSdzCi0gICAvLyByYXRoZXIgdGhhbiAicmVhbCIgc3RhdGljIGNvbnN0YW50cyBzaW1wbHkgZG9lc24ndCB3b3JrIG9yIGdpdmUKLSAgIC8vIHRoZSBjb3JyZWN0IGFuc3dlci4KLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSBub19jdl90OwotICAgc3RhdGljIGNvbnN0IG5vX2N2X3QgbWludXNfb25lID0gKHN0YXRpY19jYXN0PG5vX2N2X3Q+KC0xKSk7Ci0gICBzdGF0aWMgY29uc3Qgbm9fY3ZfdCB6ZXJvID0gKHN0YXRpY19jYXN0PG5vX2N2X3Q+KDApKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3VudW5zaWduZWRfaGVscGVyCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjppc191bnNpZ25lZF92YWx1ZXM8VD46Om1pbnVzX29uZSA+IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfdW5zaWduZWRfdmFsdWVzPFQ+Ojp6ZXJvKSk7Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBpbnRlZ3JhbF90eXBlPgotc3RydWN0IGlzX3VudW5zaWduZWRfc2VsZWN0X2hlbHBlcgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX3VudW5zaWduZWRfaGVscGVyPFQ+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc191bnVuc2lnbmVkX3NlbGVjdF9oZWxwZXI8ZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgZmFsc2VfdHlwZSB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3Vuc2lnbmVkX2ltcAotewotICAgdHlwZWRlZiBpc191bnVuc2lnbmVkX3NlbGVjdF9oZWxwZXI8IAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2VudW08VD46OnZhbHVlPjo6dmFsdWUgCi0gICA+IHNlbGVjdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dGVtcGxhdGUgcmViaW5kPFQ+IGJpbmRlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmluZGVyOjp0eXBlIHR5cGU7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0eXBlOjp2YWx1ZSk7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcCA6IHB1YmxpYyBmYWxzZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dm9sYXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dm9sYXRpbGUgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHZvbGF0aWxlIHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3QgdW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dm9sYXRpbGUgdW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLSNlbmRpZgotI2lmIGRlZmluZWQoQ0hBUl9NSU4pICYmIChDSEFSX01JTiA9PSAwKQotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3QgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHZvbGF0aWxlIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLSNlbmRpZgotI2lmIGRlZmluZWQoV0NIQVJfTUlOKSAmJiAoV0NIQVJfTUlOID09IDApICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLSNlbmRpZgotCi0jZW5kaWYKLQotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3Vuc2lnbmVkLFQsX19pc191bnNpZ25lZChUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3Vuc2lnbmVkLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc191bnNpZ25lZF9pbXA8VD46OnZhbHVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdmlydHVhbF9iYXNlX29mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdmlydHVhbF9iYXNlX29mLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFjM2YyNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZpcnR1YWxfYmFzZV9vZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgRGFuaWVsIEZyZXkgYW5kIFJvYmVydCBSYW1leSAyMDA5LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAKLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfVklSVFVBTF9CQVNFX09GX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19WSVJUVUFMX0JBU0VfT0ZfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcoIHB1c2ggKQotI3ByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDU4NCA0MjUwKQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDQpCi0jcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZW5kaWYKLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgdGFnPgotc3RydWN0IGlzX3ZpcnR1YWxfYmFzZV9vZl9pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgRGVyaXZlZD4KLXN0cnVjdCBpc192aXJ0dWFsX2Jhc2Vfb2ZfaW1wbDxCYXNlLCBEZXJpdmVkLCBtcGw6OnRydWVfPgotewotI2lmZGVmIF9fQk9STEFORENfXwotICAgIHN0cnVjdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCA6IHB1YmxpYyB2aXJ0dWFsIERlcml2ZWQsIHB1YmxpYyB2aXJ0dWFsIEJhc2UgCi0gICAgewotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YKCk7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1goY29uc3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1gmKTsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCYgb3BlcmF0b3I9KGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YJik7Ci0gICAgICAgfmJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YKCl0aHJvdygpOwotICAgIH07Ci0gICAgc3RydWN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZIDogcHVibGljIHZpcnR1YWwgRGVyaXZlZCAKLSAgICB7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1koKTsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWShjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSYpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZJiBvcGVyYXRvcj0oY29uc3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kmKTsKLSAgICAgICB+Ym9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1koKXRocm93KCk7Ci0gICAgfTsKLSNlbHNlCi0gICAgc3RydWN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YIDogcHVibGljIERlcml2ZWQsIHZpcnR1YWwgQmFzZSAKLSAgICB7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1goKTsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWChjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCYpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YJiBvcGVyYXRvcj0oY29uc3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1gmKTsKLSAgICAgICB+Ym9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1goKXRocm93KCk7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kgOiBwdWJsaWMgRGVyaXZlZCAKLSAgICB7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1koKTsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWShjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSYpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZJiBvcGVyYXRvcj0oY29uc3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kmKTsKLSAgICAgICB+Ym9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1koKXRocm93KCk7Ci0gICAgfTsKLSNlbmRpZgotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1gpPT1zaXplb2YoYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kpKSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBEZXJpdmVkPgotc3RydWN0IGlzX3ZpcnR1YWxfYmFzZV9vZl9pbXBsMgotewotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmFuZF88aXNfYmFzZV9vZjxCYXNlLCBEZXJpdmVkPiwgbXBsOjpub3RfPGlzX3NhbWU8QmFzZSwgRGVyaXZlZD4gPiA+Ojp0eXBlIHRhZ190eXBlOwotICAgdHlwZWRlZiBpc192aXJ0dWFsX2Jhc2Vfb2ZfaW1wbDxCYXNlLCBEZXJpdmVkLCB0YWdfdHlwZT4gaW1wOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gaW1wOjp2YWx1ZSk7Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKCBwb3AgKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKAotICAgICAgaXNfdmlydHVhbF9iYXNlX29mCi0gICAgICAgLCBCYXNlCi0gICAgICAgLCBEZXJpdmVkCi0gICAgICAgLCAoOjpuZG5ib29zdDo6ZGV0YWlsOjppc192aXJ0dWFsX2Jhc2Vfb2ZfaW1wbDI8QmFzZSxEZXJpdmVkPjo6dmFsdWUpIAotKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfdmlydHVhbF9iYXNlX29mLEJhc2UmLERlcml2ZWQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX3ZpcnR1YWxfYmFzZV9vZixCYXNlLERlcml2ZWQmLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc192aXJ0dWFsX2Jhc2Vfb2YsQmFzZSYsRGVyaXZlZCYsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVjNmMzYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19WT0lEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19WT0lEX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8qIGlzIGEgdHlwZSBUIHZvaWQgLSBpc192b2lkPFQ+Ci0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3ZvaWQsVCxfX2lzX3ZvaWQoVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc192b2lkLFQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc192b2lkLHZvaWQsdHJ1ZSkKLQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfdm9pZCx2b2lkIGNvbnN0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc192b2lkLHZvaWQgdm9sYXRpbGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX3ZvaWQsdm9pZCBjb25zdCB2b2xhdGlsZSx0cnVlKQotI2VuZGlmCi0KLSNlbmRpZiAgLy8gbm9uLUNvZGVHZWFyIGltcGxlbWVudGF0aW9uCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19WT0lEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThhNGU0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gICAgICBIb3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIDIwMDAuIAotLy8gIChDKSBDb3B5cmlnaHQgTWF0IE1hcmN1cywgSmVzc2UgSm9uZXMgYW5kIEFkb2JlIFN5c3RlbXMgSW5jIDIwMDEKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gICAgRml4ZWQgaXNfcG9pbnRlciwgaXNfcmVmZXJlbmNlLCBpc19jb25zdCwgaXNfdm9sYXRpbGUsIGlzX3NhbWUsIAotLy8gICAgaXNfbWVtYmVyX3BvaW50ZXIgYmFzZWQgb24gdGhlIFNpbXVsYXRlZCBQYXJ0aWFsIFNwZWNpYWxpemF0aW9uIHdvcmsgCi0vLyAgICBvZiBNYXQgTWFyY3VzIGFuZCBKZXNzZSBKb25lcy4gU2VlICBodHRwOi8vb3BlbnNvdXJjZS5hZG9iZS5jb20gb3IgCi0vLyAgICBodHRwOi8vZ3JvdXBzLnlhaG9vLmNvbS9ncm91cC9ib29zdC9tZXNzYWdlLzU0NDEgCi0vLyAgICBTb21lIHdvcmthcm91bmRzIGluIGhlcmUgdXNlIGlkZWFzIHN1Z2dlc3RlZCBmcm9tICJHZW5lcmljPFByb2dyYW1taW5nPjogCi0vLyAgICBNYXBwaW5ncyBiZXR3ZWVuIFR5cGVzIGFuZCBWYWx1ZXMiIAotLy8gICAgYnkgQW5kcmVpIEFsZXhhbmRyZXNjdSAoc2VlIGh0dHA6Ly93d3cuY3VqLmNvbS9leHBlcnRzLzE4MTAvYWxleGFuZHIuaHRtbCkuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19WT0xBVElMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfVk9MQVRJTEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2N2X3RyYWl0c19pbXBsLmhwcD4KLSMgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTQwMCkKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHA+Ci0jICAgZW5kaWYKLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvZmFsc2VfcmVzdWx0LmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsewotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfdm9sYXRpbGVfcnZhbF9maWx0ZXIKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTQwMCkKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6Y3ZfdHJhaXRzX2ltcDx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2JvdW5kczxUPjo6dHlwZSo+Ojppc192b2xhdGlsZSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6ZGV0YWlsOjpjdl90cmFpdHNfaW1wPFQqPjo6aXNfdm9sYXRpbGUpOwotI2VuZGlmCi19OwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotLy8KLS8vIFdlIGNhbid0IGZpbHRlciBvdXQgcnZhbHVlX3JlZmVyZW5jZXMgYXQgdGhlIHNhbWUgbGV2ZWwgYXMKLS8vIHJlZmVyZW5jZXMgb3Igd2UgZ2V0IGFtYmlndWl0aWVzIGZyb20gbXN2YzoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc192b2xhdGlsZV9ydmFsX2ZpbHRlcjxUJiY+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotI2VuZGlmCi19Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdm9sYXRpbGUsVCxfX2lzX3ZvbGF0aWxlKFQpKQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotLy8qIGlzIGEgdHlwZSBUIGRlY2xhcmVkIHZvbGF0aWxlIC0gaXNfdm9sYXRpbGU8VD4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdm9sYXRpbGUsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3ZvbGF0aWxlX3J2YWxfZmlsdGVyPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3ZvbGF0aWxlLFQmLGZhbHNlKQotCi0jaWYgIGRlZmluZWQoTkROQk9PU1RfSUxMRUdBTF9DVl9SRUZFUkVOQ0VTKQotLy8gdGhlc2UgYXJlIGlsbGVnYWwgc3BlY2lhbGlzYXRpb25zOyBjdi1xdWFsaWZpZXMgYXBwbGllZCB0bwotLy8gcmVmZXJlbmNlcyBoYXZlIG5vIGVmZmVjdCBhY2NvcmRpbmcgdG8gWzguMy4ycDFdLAotLy8gQysrIEJ1aWxkZXIgcmVxdWlyZXMgdGhlbSB0aG91Z2ggYXMgaXQgdHJlYXRzIGN2LXF1YWxpZmllZAotLy8gcmVmZXJlbmNlcyBhcyBkaXN0aW5jdCB0eXBlcy4uLgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfdm9sYXRpbGUsVCYgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc192b2xhdGlsZSxUJiB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3ZvbGF0aWxlLFQmIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLSNlbHNlCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGU7Ci11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZTsKLQoteWVzX3R5cGUgaXNfdm9sYXRpbGVfdGVzdGVyKHZvaWQgY29uc3Qgdm9sYXRpbGUqKTsKLW5vX3R5cGUgaXNfdm9sYXRpbGVfdGVzdGVyKHZvaWQgY29uc3QqKTsKLQotdGVtcGxhdGUgPGJvb2wgaXNfcmVmLCBib29sIGFycmF5Pgotc3RydWN0IGlzX3ZvbGF0aWxlX2hlbHBlcgotICAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpmYWxzZV9yZXN1bHQKLXsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfdm9sYXRpbGVfaGVscGVyPGZhbHNlLGZhbHNlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgc3RhdGljIFQqIHQ7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgIHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjp5ZXNfdHlwZSkgPT0gc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6OmlzX3ZvbGF0aWxlX3Rlc3Rlcih0KSkKLSAgICAgICAgICAgICkpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3ZvbGF0aWxlX2hlbHBlcjxmYWxzZSx0cnVlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgc3RhdGljIFQgdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6Onllc190eXBlKSA9PSBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6aXNfdm9sYXRpbGVfdGVzdGVyKCZ0KSkKLSAgICAgICAgICAgICkpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc192b2xhdGlsZV9pbXBsCi0gICAgOiBwdWJsaWMgaXNfdm9sYXRpbGVfaGVscGVyPAotICAgICAgICAgIGlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgLCBpc19hcnJheTxUPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc192b2xhdGlsZSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc192b2xhdGlsZSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc192b2xhdGlsZSx2b2lkIHZvbGF0aWxlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3ZvbGF0aWxlLHZvaWQgY29uc3Qgdm9sYXRpbGUsdHJ1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8qIGlzIGEgdHlwZSBUIGRlY2xhcmVkIHZvbGF0aWxlIC0gaXNfdm9sYXRpbGU8VD4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdm9sYXRpbGUsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3ZvbGF0aWxlX2ltcGw8VD46OnZhbHVlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfVk9MQVRJTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2Vfc2lnbmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV9zaWduZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWQwN2YwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV9zaWduZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDcuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX01BS0VfU0lHTkVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9NQUtFX1NJR05FRF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF92b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IG1ha2Vfc2lnbmVkX2ltcAotewotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIDo6bmRuYm9vc3Q6OmlzX2VudW08VD46OnZhbHVlPjo6dmFsdWUpKTsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PTEzMDApCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPAotICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlLCBib29sPjo6dmFsdWU+Ojp2YWx1ZSkpOwotI2VuZGlmCi0KLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIHRfbm9fY3Y7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwgCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19zaWduZWQ8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgY2hhcj46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCB3Y2hhcl90Pjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIGJvb2w+Ojp2YWx1ZT46OnZhbHVlID46OnZhbHVlKSwKLSAgICAgIFQsCi0gICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8IAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgY2hhcj46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCB3Y2hhcl90Pjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIGJvb2w+Ojp2YWx1ZT46OnZhbHVlPgotICAgICAgICAgOjp2YWx1ZSksCi0gICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgIGlzX3NhbWU8dF9ub19jdiwgdW5zaWduZWQgY2hhcj4sCi0gICAgICAgICAgICBzaWduZWQgY2hhciwKLSAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCB1bnNpZ25lZCBzaG9ydD4sCi0gICAgICAgICAgICAgICBzaWduZWQgc2hvcnQsCi0gICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICAgIGlzX3NhbWU8dF9ub19jdiwgdW5zaWduZWQgaW50PiwKLSAgICAgICAgICAgICAgICAgIGludCwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCB1bnNpZ25lZCBsb25nPiwKLSAgICAgICAgICAgICAgICAgICAgIGxvbmcsCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotI2lmZGVmIE5ETkJPT1NUX0hBU19JTlQxMjgKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YobmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmludDEyOF90eXBlCi0gICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0jZW5kaWYKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICAgICAgICAgICAgICAgICAgX19pbnQ2NAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIGxvbmcKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgPjo6dHlwZSwKLSAgICAgICAgIC8vIE5vdCBhIHJlZ3VsYXIgaW50ZWdlciB0eXBlOgotICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZih1bnNpZ25lZCBjaGFyKSwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyLAotICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZih1bnNpZ25lZCBzaG9ydCksCi0gICAgICAgICAgICAgICBzaWduZWQgc2hvcnQsCi0gICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIGludCksCi0gICAgICAgICAgICAgICAgICBpbnQsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLAotICAgICAgICAgICAgICAgICAgICAgbG9uZywKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0jaWZkZWYgTkROQk9PU1RfSEFTX0lOVDEyOAotICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZihuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW50MTI4X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSNlbmRpZgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgICAgICAgICAgICAgICBfX2ludDY0Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgbG9uZwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICA+Ojp0eXBlCi0gICAgICA+Ojp0eXBlCi0gICA+Ojp0eXBlIGJhc2VfaW50ZWdlcl90eXBlOwotICAgCi0gICAvLyBBZGQgYmFjayBhbnkgY29uc3QgcXVhbGlmaWVyOgotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgIGlzX2NvbnN0PFQ+LAotICAgICAgdHlwZW5hbWUgYWRkX2NvbnN0PGJhc2VfaW50ZWdlcl90eXBlPjo6dHlwZSwKLSAgICAgIGJhc2VfaW50ZWdlcl90eXBlCi0gICA+Ojp0eXBlIGNvbnN0X2Jhc2VfaW50ZWdlcl90eXBlOwotICAgCi0gICAvLyBBZGQgYmFjayBhbnkgdm9sYXRpbGUgcXVhbGlmaWVyOgotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgIGlzX3ZvbGF0aWxlPFQ+LAotICAgICAgdHlwZW5hbWUgYWRkX3ZvbGF0aWxlPGNvbnN0X2Jhc2VfaW50ZWdlcl90eXBlPjo6dHlwZSwKLSAgICAgIGNvbnN0X2Jhc2VfaW50ZWdlcl90eXBlCi0gICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKG1ha2Vfc2lnbmVkLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9zaWduZWRfaW1wPFQ+Ojp0eXBlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUREX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV91bnNpZ25lZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0YjFkY2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA3LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9NQUtFX1VOU0lHTkVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9NQUtFX1VOU0lHTkVEX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc191bnNpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgbWFrZV91bnNpZ25lZF9pbXAKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCA6Om5kbmJvb3N0Ojppc19lbnVtPFQ+Ojp2YWx1ZT46OnZhbHVlKSk7Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0xMzAwKQotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTwKLSAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSwgYm9vbD46OnZhbHVlPjo6dmFsdWUpKTsKLSNlbmRpZgotCi0gICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSB0X25vX2N2OwotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8IAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdW5zaWduZWQ8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgY2hhcj46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCB3Y2hhcl90Pjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIGJvb2w+Ojp2YWx1ZT46OnZhbHVlID46OnZhbHVlKSwKLSAgICAgIFQsCi0gICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8IAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgY2hhcj46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCB3Y2hhcl90Pjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIGJvb2w+Ojp2YWx1ZT46OnZhbHVlPgotICAgICAgICAgOjp2YWx1ZSksCi0gICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgIGlzX3NhbWU8dF9ub19jdiwgc2lnbmVkIGNoYXI+LAotICAgICAgICAgICAgdW5zaWduZWQgY2hhciwKLSAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCBzaG9ydD4sCi0gICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCwKLSAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCBpbnQ+LAotICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIGxvbmc+LAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0jaWZkZWYgTkROQk9PU1RfSEFTX0lOVDEyOAotICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZihuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0jZW5kaWYKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgPjo6dHlwZSwKLSAgICAgICAgIC8vIE5vdCBhIHJlZ3VsYXIgaW50ZWdlciB0eXBlOgotICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZih1bnNpZ25lZCBjaGFyKSwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSwKLSAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0LAotICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZih1bnNpZ25lZCBpbnQpLAotICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZih1bnNpZ25lZCBsb25nKSwKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcsCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotI2lmZGVmIE5ETkJPT1NUX0hBU19JTlQxMjgKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YobmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSksIAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWludDEyOF90eXBlCi0gICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotI2VuZGlmCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50NjQKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgID46OnR5cGUKLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgYmFzZV9pbnRlZ2VyX3R5cGU7Ci0gICAKLSAgIC8vIEFkZCBiYWNrIGFueSBjb25zdCBxdWFsaWZpZXI6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgaXNfY29uc3Q8VD4sCi0gICAgICB0eXBlbmFtZSBhZGRfY29uc3Q8YmFzZV9pbnRlZ2VyX3R5cGU+Ojp0eXBlLAotICAgICAgYmFzZV9pbnRlZ2VyX3R5cGUKLSAgID46OnR5cGUgY29uc3RfYmFzZV9pbnRlZ2VyX3R5cGU7Ci0gICAKLSAgIC8vIEFkZCBiYWNrIGFueSB2b2xhdGlsZSBxdWFsaWZpZXI6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgaXNfdm9sYXRpbGU8VD4sCi0gICAgICB0eXBlbmFtZSBhZGRfdm9sYXRpbGU8Y29uc3RfYmFzZV9pbnRlZ2VyX3R5cGU+Ojp0eXBlLAotICAgICAgY29uc3RfYmFzZV9pbnRlZ2VyX3R5cGUKLSAgID46OnR5cGUgdHlwZTsKLX07Ci0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEobWFrZV91bnNpZ25lZCxULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfdW5zaWduZWRfaW1wPFQ+Ojp0eXBlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUREX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9hbGxfZXh0ZW50cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhOWM3Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9BTExfRVhURU5UX0hPTFRfMjAwNF8wODI3Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0FMTF9FWFRFTlRfSE9MVF8yMDA0XzA4MjcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX2FsbF9leHRlbnRzOwotCi0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPGJvb2wgSXNBcnJheT4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9hbGxfZXh0ZW50c19pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9hbGxfZXh0ZW50c19pbXBsX3R5cGVvZjx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVW10pOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAqKChUKilOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHJlZHVjZWRfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9hbGxfZXh0ZW50czxyZWR1Y2VkX3R5cGU+Ojp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0gLy9uYW1lc3BhY2UgZGV0YWlsCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfYWxsX2V4dGVudHMgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9hbGxfZXh0ZW50c19pbXBsX3R5cGVvZjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgICAgICAgICAgICAgICAgCi0gICAgICAgID46OnRlbXBsYXRlIGlubmVyPFQscmVtb3ZlX2FsbF9leHRlbnRzPFQ+ID46OnR5cGUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlbW92ZV9hbGxfZXh0ZW50cyxUKQotICAgIH07Ci19IC8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0JPVU5EU19IT0xUXzIwMDRfMDgyNwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2JvdW5kcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2JvdW5kcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3N2U3NjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9ib3VuZHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0JPVU5EU19IT0xUXzIwMDRfMDgyNwotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9CT1VORFNfSE9MVF8yMDA0XzA4MjcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPGJvb2wgSXNBcnJheT4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9ib3VuZHNfaW1wbF90eXBlb2YgewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfYm91bmRzX2ltcGxfdHlwZW9mPHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFVbXSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICooKFQqKU5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV9ib3VuZHMgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9ib3VuZHNfaW1wbF90eXBlb2Y8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlICAgICAgICAgICAgICAgIAotICAgICAgICA+Ojp0ZW1wbGF0ZSBpbm5lcjxULHJlbW92ZV9ib3VuZHM8VD4gPjo6dHlwZSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX2JvdW5kcyxUKQotICAgIH07Ci19IC8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0JPVU5EU19IT0xUXzIwMDRfMDgyNwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2NvbnN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY29uc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjNiOWE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY29uc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9DT05TVF9IT0xUXzIwMDRfMDgyOAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9DT05TVF9IT0xUXzIwMDRfMDgyOAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxib29sIElzUG9pbnRlcixib29sIElzQXJyYXksYm9vbCBJc0NvbnN0LGJvb2wgSXNWb2xhdGlsZT4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Db25zdAotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGxfdHlwZW9mPGZhbHNlLGZhbHNlLHRydWUsZmFsc2U+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFUgY29uc3QmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWCi0gICAgICAgIHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8ZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSB2b2xhdGlsZSxJRD4gdGVzdChVIGNvbnN0IHZvbGF0aWxlJigqKSgpKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKFQoKikoKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCYgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Db25zdCBQb2ludGVyCi0gICAgICAgIHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8dHJ1ZSxmYWxzZSx0cnVlLGZhbHNlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3RbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlW107Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YgUG9pbnRlcgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGxfdHlwZW9mPHRydWUsZmFsc2UsdHJ1ZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSB2b2xhdGlsZSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3Qgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlW107Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OyAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4gLy9Db25zdCBBcnJheQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGxfdHlwZW9mPGZhbHNlLHRydWUsdHJ1ZSxmYWxzZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPShzaXplb2YoVCkvc2l6ZW9mKCgqKChUKilOVUxMKSlbMF0pKSk7Ci0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VVt2YWx1ZV0sSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0W10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWIEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT0oc2l6ZW9mKFQpL3NpemVvZigoKigoVCopTlVMTCkpWzBdKSkpOwotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUgdm9sYXRpbGVbdmFsdWVdLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdCB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV9jb25zdCB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2NvbnN0X2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlCi0gICAgICAgID4gcmVtb3ZlX2NvbnN0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICByZW1vdmVfY29uc3RfdHlwZTo6dGVtcGxhdGUgaW5uZXI8Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0X3R5cGU6OnRlbXBsYXRlIHRyYW5zZm9ybV90eXBlPFQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgIHJlbW92ZV9jb25zdDxUPgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX2NvbnN0LFQpCi0gICAgfTsKLX0vL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9DT05TVF9IT0xUXzIwMDRfMDgyOApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jdi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2N2LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNhMDQzOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2N2LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQ1ZfSE9MVF8yMDA0XzA5MDEKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQ1ZfSE9MVF8yMDA0XzA5MDEKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCBJc1BvaW50ZXIsYm9vbCBJc0FycmF5LGJvb2wgSXNDb25zdCxib29sIElzVm9sYXRpbGU+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2YgewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vVm9sYXRpbGUKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVIHZvbGF0aWxlJigqKSgpKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKFQoKikoKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCYgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Db25zdAotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPGZhbHNlLGZhbHNlLHRydWUsZmFsc2U+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFUgY29uc3QmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWCi0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8ZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVIGNvbnN0IHZvbGF0aWxlJigqKSgpKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKFQoKikoKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCYgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Wb2xhdGlsZSBQb2ludGVyCi0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8dHJ1ZSxmYWxzZSxmYWxzZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdCh2b2lkKCopKFUgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlW107Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ29uc3QgUG9pbnRlcgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPHRydWUsZmFsc2UsdHJ1ZSxmYWxzZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0W10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZVtdOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWIFBvaW50ZXIKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjx0cnVlLGZhbHNlLHRydWUsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0IHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZVtdOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+IC8vVm9sYXRpbGUgQXJyYXkKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjxmYWxzZSx0cnVlLGZhbHNlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT0oc2l6ZW9mKFQpL3NpemVvZigoKigoVCopTlVMTCkpWzBdKSkpOwotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFVbdmFsdWVdLElEPiB0ZXN0KHZvaWQoKikoVSB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ29uc3QgQXJyYXkKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjxmYWxzZSx0cnVlLHRydWUsZmFsc2U+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT0oc2l6ZW9mKFQpL3NpemVvZigoKigoVCopTlVMTCkpWzBdKSkpOwotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFVbdmFsdWVdLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdFtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4gLy9DViBBcnJheQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPGZhbHNlLHRydWUsdHJ1ZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9KHNpemVvZihUKS9zaXplb2YoKCooKFQqKU5VTEwpKVswXSkpKTsKLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVW3ZhbHVlXSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3Qgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgIH0gLy9uYW1lc3BhY2UgZGV0YWlsCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfY3YgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9jdl9pbXBsX3R5cGVvZjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZQotICAgICAgICA+IHJlbW92ZV9jdl90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgcmVtb3ZlX2N2X3R5cGU6OnRlbXBsYXRlIGlubmVyPAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdl90eXBlOjp0ZW1wbGF0ZSB0cmFuc2Zvcm1fdHlwZTxUPjo6dHlwZSwKLSAgICAgICAgICAgICAgICByZW1vdmVfY3Y8VD4KLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlbW92ZV9jdixUKQotICAgIH07Ci19Ly9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQ1ZfSE9MVF8yMDA0XzA5MDEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfZXh0ZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfZXh0ZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg4Zjc1ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2V4dGVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfRVhURU5UX0hPTFRfMjAwNF8wODI3Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0VYVEVOVF9IT0xUXzIwMDRfMDgyNwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCBJc0FycmF5PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2V4dGVudF9pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9leHRlbnRfaW1wbF90eXBlb2Y8dHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVVtdKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKigoVCopTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9IC8vbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX2V4dGVudCB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2V4dGVudF9pbXBsX3R5cGVvZjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgICAgICAgICAgICAgICAgCi0gICAgICAgID46OnRlbXBsYXRlIGlubmVyPFQscmVtb3ZlX2V4dGVudDxUPiA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfZXh0ZW50LFQpCi0gICAgfTsKLX0gLy9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQk9VTkRTX0hPTFRfMjAwNF8wODI3Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3BvaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzExYmNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfUE9JTlRFUl9IT0xUXzIwMDRfMDgyNwotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9QT0lOVEVSX0hPTFRfMjAwNF8wODI3Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPGludCBJc1BvaW50ZXI+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcGxfdHlwZW9mPHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFUqKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKigoVCopTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9IC8vbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXIgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9wb2ludGVyX2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8VD46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIGlubmVyPFQscmVtb3ZlX3BvaW50ZXI8VD4gPjo6dHlwZSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX3BvaW50ZXIsVCkKLSAgICB9OwotfSAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19SRU1PVkVfUE9JTlRFUl9IT0xUXzIwMDRfMDgyNwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODMzNDU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9SRUZFUkVOQ0VfSE9MVF8yMDA0XzA4MjcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfUkVGRVJFTkNFX0hPTFRfMjAwNF8wODI3Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCBJc1JlZmVyZW5jZT4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9yZWZlcmVuY2VfaW1wbF90eXBlb2YgewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlX2ltcGxfdHlwZW9mPHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFUmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0gLy9uYW1lc3BhY2UgZGV0YWlsCi0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX3JlZmVyZW5jZSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9pbXBsX3R5cGVvZjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIGlubmVyPFQscmVtb3ZlX3JlZmVyZW5jZTxUPiA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfcmVmZXJlbmNlLFQpCi0gICAgfTsKLX0gLy9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfUkVGRVJFTkNFX0hPTFRfMjAwNF8wODI3CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3ZvbGF0aWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfdm9sYXRpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGUxNDk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfdm9sYXRpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9WT0xBVElMRV9IT0xUXzIwMDRfMDgyOAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9WT0xBVElMRV9IT0xUXzIwMDRfMDgyOAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxib29sIElzUG9pbnRlcixib29sIElzQXJyYXksYm9vbCBJc0NvbnN0LGJvb2wgSXNWb2xhdGlsZT4KLSAgICAgICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Wb2xhdGlsZQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGxfdHlwZW9mPGZhbHNlLGZhbHNlLGZhbHNlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFUgdm9sYXRpbGUmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OyAgICAgICAgICAgIAotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWCi0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8ZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSBjb25zdCxJRD4gdGVzdChVIGNvbnN0IHZvbGF0aWxlJigqKSgpKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKFQoKikoKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCYgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Wb2xhdGlsZSBQb2ludGVyCi0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8dHJ1ZSxmYWxzZSxmYWxzZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdCh2b2lkKCopKFUgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlW107Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YgUG9pbnRlcgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGxfdHlwZW9mPHRydWUsZmFsc2UsdHJ1ZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSBjb25zdCxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3Qgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlW107Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OyAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4gLy9Wb2xhdGlsZSBBcnJheQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGxfdHlwZW9mPGZhbHNlLHRydWUsZmFsc2UsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPShzaXplb2YoVCkvc2l6ZW9mKCgqKChUKilOVUxMKSlbMF0pKSk7Ci0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VVt2YWx1ZV0sSUQ+IHRlc3Qodm9pZCgqKShVIHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4gLy9DViBBcnJheQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGxfdHlwZW9mPGZhbHNlLHRydWUsdHJ1ZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9KHNpemVvZihUKS9zaXplb2YoKCooKFQqKU5VTEwpKVswXSkpKTsKLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVIGNvbnN0W3ZhbHVlXSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3Qgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgIH0gLy9uYW1lc3BhY2UgZGV0YWlsCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGUgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV92b2xhdGlsZV9pbXBsX3R5cGVvZjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZQotICAgICAgICA+IHJlbW92ZV92b2xhdGlsZV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgcmVtb3ZlX3ZvbGF0aWxlX3R5cGU6OnRlbXBsYXRlIGlubmVyPAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV92b2xhdGlsZV90eXBlOjp0ZW1wbGF0ZSB0cmFuc2Zvcm1fdHlwZTxUPjo6dHlwZSwKLSAgICAgICAgICAgICAgICByZW1vdmVfdm9sYXRpbGU8VD4KLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlbW92ZV92b2xhdGlsZSxUKQotICAgIH07Ci19Ly9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfVk9MQVRJTEVfSE9MVF8yMDA0XzA4MjgKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyNWRhZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRVRSQUlUU19NU1ZDX1RZUEVPRl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRVRSQUlUU19NU1ZDX1RZUEVPRl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD09MTMwMCkKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxib29sPgotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGVfaW1wbDsKLQotICAgICAgICAgICAgdHlwZWRlZiBpZDJ0eXBlX2ltcGw8dHJ1ZT4gaWQydHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfcmVnaXN0ZXJfdHlwZSA6IHB1YmxpYyBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGVfaW1wbDx0cnVlPiAgLy9WQzcuMCBzcGVjaWZpYyBidWdmZWF0dXJlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotIyBlbHNlIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19yZWdpc3Rlcl90eXBlIDogcHVibGljIG1zdmNfZXh0cmFjdF90eXBlPElEPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIG1zdmNfZXh0cmFjdF90eXBlPElEPiBiYXNlX3R5cGU7Ci0gICAgICAgICAgICBzdHJ1Y3QgYmFzZV90eXBlOjppZDJ0eXBlIC8vIFRoaXMgdXNlcyBuaWNlIFZDNi41IGFuZCBWQzcuMSBidWdmZWF0dXJlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotIyBlbmRpZgotfX0KLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRVRSQUlUU19NU1ZDX1RZUEVPRl9JTVBMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9vYmplY3RfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvb2JqZWN0X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYzlhZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9vYmplY3RfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBkZWZpbmVzIG9iamVjdCB0cmFpdHMgY2xhc3NlczoKLS8vICBpc19vYmplY3QsIGlzX3NjYWxhciwgaXNfY2xhc3MsIGlzX2NvbXBvdW5kLCBpc19wb2QsIAotLy8gIGhhc190cml2aWFsX2NvbnN0cnVjdG9yLCBoYXNfdHJpdmlhbF9jb3B5LCBoYXNfdHJpdmlhbF9hc3NpZ24sIAotLy8gIGhhc190cml2aWFsX2Rlc3RydWN0b3IsIGlzX2VtcHR5LgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9UVF9PQkpFQ1RfVFJBSVRTX0hQUF9JTkxDVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9PQkpFQ1RfVFJBSVRTX0hQUF9JTkxDVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29uc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvcHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfb2JqZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NjYWxhci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc3RhdGVsZXNzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX09CSkVDVF9UUkFJVFNfSFBQX0lOTENVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3Byb21vdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9wcm9tb3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlYmE0ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3Byb21vdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUgQWxleGFuZGVyIE5hc29ub3YuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19wcm9tb3RlX2hwcF9JTkNMVURFRAotI2RlZmluZSBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX3Byb21vdGVfaHBwX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX3Byb21vdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uLmhwcD4KLQotLy8gU2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcHJvbW90ZV9pbXBsCi0gIDogcHVibGljIGludGVncmFsX3Byb21vdGlvbjwKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmbG9hdGluZ19wb2ludF9wcm9tb3Rpb248VD46OnR5cGUKLSAgICAgID4KLXsKLX07Ci0KLX0KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMSgKLSAgICAgIHByb21vdGUKLSAgICAsIFQKLSAgICAsIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6cHJvbW90ZV9pbXBsPFQ+Ojp0eXBlCi0gICAgKQotfQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX3Byb21vdGVfaHBwX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmFuay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JhbmsuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTRmNjJmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmFuay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkFOS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkFOS19IUFBfSU5DTFVERUQKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IE4pOwotfTsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSLCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IHJhbmtfaW1wPFRbUl0sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSLCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IHJhbmtfaW1wPFQgY29uc3RbUl0sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSLCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IHJhbmtfaW1wPFQgdm9sYXRpbGVbUl0sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSLCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IHJhbmtfaW1wPFQgY29uc3Qgdm9sYXRpbGVbUl0sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pICYmICAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VFtdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OnJhbmtfaW1wPFQsIE4rMT46OnZhbHVlKSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VCBjb25zdFtdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OnJhbmtfaW1wPFQsIE4rMT46OnZhbHVlKSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VCB2b2xhdGlsZVtdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OnJhbmtfaW1wPFQsIE4rMT46OnZhbHVlKSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VCBjb25zdCB2b2xhdGlsZVtdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OnJhbmtfaW1wPFQsIE4rMT46OnZhbHVlKSk7Ci19OwotI2VuZGlmCi0jZW5kaWYKLX0KLQotI2VuZGlmIC8vICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9ERUYxKHJhbmssVCxfX2FycmF5X3JhbmsoVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9ERUYxKHJhbmssVCwoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULDA+Ojp2YWx1ZSkpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9hbGxfZXh0ZW50cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9hbGxfZXh0ZW50cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NWFhYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX0FMTF9FWFRFTlRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfQUxMX0VYVEVOVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9hbGxfZXh0ZW50cy5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9hbGxfZXh0ZW50cyxULFQpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2FsbF9leHRlbnRzLFRbTl0sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUPjo6dHlwZSB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYWxsX2V4dGVudHMsVCBjb25zdFtOXSx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQgY29uc3Q+Ojp0eXBlIHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9hbGxfZXh0ZW50cyxUIHZvbGF0aWxlW05dLHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYWxsX2V4dGVudHM8VCB2b2xhdGlsZT46OnR5cGUgdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2FsbF9leHRlbnRzLFQgY29uc3Qgdm9sYXRpbGVbTl0sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUIGNvbnN0IHZvbGF0aWxlPjo6dHlwZSB0eXBlKQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkgJiYgIWRlZmluZWQoX19JQk1DUFBfXykgJiYgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfYWxsX2V4dGVudHMsVFtdLHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYWxsX2V4dGVudHM8VD46OnR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfYWxsX2V4dGVudHMsVCBjb25zdFtdLHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYWxsX2V4dGVudHM8VCBjb25zdD46OnR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfYWxsX2V4dGVudHMsVCB2b2xhdGlsZVtdLHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYWxsX2V4dGVudHM8VCB2b2xhdGlsZT46OnR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfYWxsX2V4dGVudHMsVCBjb25zdCB2b2xhdGlsZVtdLHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYWxsX2V4dGVudHM8VCBjb25zdCB2b2xhdGlsZT46OnR5cGUpCi0jZW5kaWYKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1JFTU9WRV9CT1VORFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9ib3VuZHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEwOTcxNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9ib3VuZHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfQk9VTkRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfQk9VTkRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYm91bmRzLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX2JvdW5kcyxULFQpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2JvdW5kcyxUW05dLFQgdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2JvdW5kcyxUIGNvbnN0W05dLFQgY29uc3QgdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2JvdW5kcyxUIHZvbGF0aWxlW05dLFQgdm9sYXRpbGUgdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2JvdW5kcyxUIGNvbnN0IHZvbGF0aWxlW05dLFQgY29uc3Qgdm9sYXRpbGUgdHlwZSkKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pICYmICAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2JvdW5kcyxUW10sVCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9ib3VuZHMsVCBjb25zdFtdLFQgY29uc3QpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfYm91bmRzLFQgdm9sYXRpbGVbXSxUIHZvbGF0aWxlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2JvdW5kcyxUIGNvbnN0IHZvbGF0aWxlW10sVCBjb25zdCB2b2xhdGlsZSkKLSNlbmRpZgotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX0JPVU5EU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEzMTYxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1JFTU9WRV9DT05TVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkVNT1ZFX0NPTlNUX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2Jyb2tlbl9jb21waWxlcl9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY29uc3QuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNfdm9sPgotc3RydWN0IHJlbW92ZV9jb25zdF9oZWxwZXIKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jb25zdF9oZWxwZXI8VCwgdHJ1ZT4KLXsKLSAgICB0eXBlZGVmIFQgdm9sYXRpbGUgdHlwZTsKLX07Ci0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGwKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jb25zdF9oZWxwZXI8Ci0gICAgICAgICAgdHlwZW5hbWUgY3ZfdHJhaXRzX2ltcDxUKj46OnVucXVhbGlmaWVkX3R5cGUKLSAgICAgICAgLCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotLy8KLS8vIFdlIGNhbid0IGZpbHRlciBvdXQgcnZhbHVlX3JlZmVyZW5jZXMgYXQgdGhlIHNhbWUgbGV2ZWwgYXMKLS8vIHJlZmVyZW5jZXMgb3Igd2UgZ2V0IGFtYmlndWl0aWVzIGZyb20gbXN2YzoKLS8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY29uc3RfaW1wbDxUJiY+Ci17Ci0gICAgdHlwZWRlZiBUJiYgdHlwZTsKLX07Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vICogY29udmVydCBhIHR5cGUgVCB0byBub24tY29uc3QgdHlwZSAtIHJlbW92ZV9jb25zdDxUPgotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9jb25zdCxULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9jb25zdF9pbXBsPFQ+Ojp0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2NvbnN0LFQmLFQmKQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfY29uc3QsVCBjb25zdFtOXSxUIHR5cGVbTl0pCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9jb25zdCxUIGNvbnN0IHZvbGF0aWxlW05dLFQgdm9sYXRpbGUgdHlwZVtOXSkKLSNlbmRpZgotCi0jZWxpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfY29uc3QsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfY29uc3RfaW1wbDxUPjo6dHlwZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1JFTU9WRV9DT05TVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVjYjg2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1JFTU9WRV9DVl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkVNT1ZFX0NWX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jdi5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJ2YWx1ZV9yZWZfZmlsdGVyX3JlbV9jdgotewotICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpjdl90cmFpdHNfaW1wPFQqPjo6dW5xdWFsaWZpZWRfdHlwZSB0eXBlOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotLy8KLS8vIFdlIGNhbid0IGZpbHRlciBvdXQgcnZhbHVlX3JlZmVyZW5jZXMgYXQgdGhlIHNhbWUgbGV2ZWwgYXMKLS8vIHJlZmVyZW5jZXMgb3Igd2UgZ2V0IGFtYmlndWl0aWVzIGZyb20gbXN2YzoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBydmFsdWVfcmVmX2ZpbHRlcl9yZW1fY3Y8VCYmPgotewotICAgdHlwZWRlZiBUJiYgdHlwZTsKLX07Ci0jZW5kaWYKLQotfQotCi0KLS8vICBjb252ZXJ0IGEgdHlwZSBUIHRvIGEgbm9uLWN2LXF1YWxpZmllZCB0eXBlIC0gcmVtb3ZlX2N2PFQ+Ci1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9jdixULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJ2YWx1ZV9yZWZfZmlsdGVyX3JlbV9jdjxUPjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9jdixUJixUJikKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2N2LFQgY29uc3RbTl0sVCB0eXBlW05dKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfY3YsVCB2b2xhdGlsZVtOXSxUIHR5cGVbTl0pCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9jdixUIGNvbnN0IHZvbGF0aWxlW05dLFQgdHlwZVtOXSkKLSNlbmRpZgotCi0jZWxpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY3ZfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX3ZvbGF0aWxlX2ltcGw8IAotICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jb25zdF9pbXBsPFQ+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci19Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX2N2LFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2N2X2ltcGw8VD46OnR5cGUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfQ1ZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9leHRlbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfZXh0ZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEzMzE3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9leHRlbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLTIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1JFTU9WRV9FWFRFTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JFTU9WRV9FWFRFTlRfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9leHRlbnQuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfZXh0ZW50LFQsVCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfZXh0ZW50LFRbTl0sVCB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfZXh0ZW50LFQgY29uc3RbTl0sVCBjb25zdCB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfZXh0ZW50LFQgdm9sYXRpbGVbTl0sVCB2b2xhdGlsZSB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfZXh0ZW50LFQgY29uc3Qgdm9sYXRpbGVbTl0sVCBjb25zdCB2b2xhdGlsZSB0eXBlKQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkgJiYgIWRlZmluZWQoX19JQk1DUFBfXykgJiYgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfZXh0ZW50LFRbXSxUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2V4dGVudCxUIGNvbnN0W10sVCBjb25zdCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9leHRlbnQsVCB2b2xhdGlsZVtdLFQgdm9sYXRpbGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfZXh0ZW50LFQgY29uc3Qgdm9sYXRpbGVbXSxUIGNvbnN0IHZvbGF0aWxlKQotI2VuZGlmCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfQk9VTkRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE4YTJlOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX1BPSU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JFTU9WRV9QT0lOVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2Jyb2tlbl9jb21waWxlcl9zcGVjLmhwcD4KLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9wb2ludGVyLmhwcD4KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLSAgIC8vCi0gICAvLyBXZSBuZWVkIGFsbCB0aGlzIGNyYXp5IGluZGlyZWN0aW9uIGJlY2F1c2UgYSB0eXBlIHN1Y2ggYXM6Ci0gICAvLwotICAgLy8gVCAoKmNvbnN0KShVKQotICAgLy8KLSAgIC8vIERvZXMgbm90IGJpbmQgdG8gYSA8VCo+IG9yIDxUKmNvbnN0PiBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHdpdGggVkMxMCBhbmQgZWFybGllcgotICAgLy8KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiAKLSAgIHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXAKLSAgIHsKLSAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgfTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IAotICAgc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcDxUKj4KLSAgIHsKLSAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgfTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGJvb2wgYj4gCi0gICBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXJfaW1wMwotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfcG9pbnRlcl9pbXA8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxUPjo6dHlwZT46OnR5cGUgdHlwZTsKLSAgIH07Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiAKLSAgIHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXAzPFQsIGZhbHNlPgotICAgewotICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICB9OwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gCi0gICBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXJfaW1wMgotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfcG9pbnRlcl9pbXAzPFQsIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSB0eXBlOwotICAgfTsKLX0KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfcG9pbnRlcixULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9wb2ludGVyX2ltcDI8VD46OnR5cGUpCi0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX3BvaW50ZXIsVCxUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3BvaW50ZXIsVCosVCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9wb2ludGVyLFQqIGNvbnN0LFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfcG9pbnRlcixUKiB2b2xhdGlsZSxUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3BvaW50ZXIsVCogY29uc3Qgdm9sYXRpbGUsVCkKLQotI2VsaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX3BvaW50ZXIsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfcG9pbnRlcl9pbXBsPFQ+Ojp0eXBlKQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1JFTU9WRV9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MjFjNTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkVNT1ZFX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2Jyb2tlbl9jb21waWxlcl9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIGRldGFpbHsKLS8vCi0vLyBXZSBjYW4ndCBmaWx0ZXIgb3V0IHJ2YWx1ZV9yZWZlcmVuY2VzIGF0IHRoZSBzYW1lIGxldmVsIGFzCi0vLyByZWZlcmVuY2VzIG9yIHdlIGdldCBhbWJpZ3VpdGllcyBmcm9tIG1zdmM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWYKLXsKLSAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmPFQmJj4KLXsKLSAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfcmVmZXJlbmNlLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3J2YWx1ZV9yZWY8VD46OnR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfcmVmZXJlbmNlLFQmLFQpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lMTEVHQUxfQ1ZfUkVGRVJFTkNFUykKLS8vIHRoZXNlIGFyZSBpbGxlZ2FsIHNwZWNpYWxpc2F0aW9uczsgY3YtcXVhbGlmaWVzIGFwcGxpZWQgdG8KLS8vIHJlZmVyZW5jZXMgaGF2ZSBubyBlZmZlY3QgYWNjb3JkaW5nIHRvIFs4LjMuMnAxXSwKLS8vIEMrKyBCdWlsZGVyIHJlcXVpcmVzIHRoZW0gdGhvdWdoIGFzIGl0IHRyZWF0cyBjdi1xdWFsaWZpZWQKLS8vIHJlZmVyZW5jZXMgYXMgZGlzdGluY3QgdHlwZXMuLi4KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9yZWZlcmVuY2UsVCYgY29uc3QsVCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9yZWZlcmVuY2UsVCYgdm9sYXRpbGUsVCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9yZWZlcmVuY2UsVCYgY29uc3Qgdm9sYXRpbGUsVCkKLSNlbmRpZgotCi0jZWxpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfcmVmZXJlbmNlLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9pbXBsPFQ+Ojp0eXBlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3ZvbGF0aWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3ZvbGF0aWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMxZTliMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV92b2xhdGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1JFTU9WRV9WT0xBVElMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkVNT1ZFX1ZPTEFUSUxFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2Jyb2tlbl9jb21waWxlcl9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfdm9sYXRpbGUuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNfY29uc3Q+Ci1zdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2hlbHBlcgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2hlbHBlcjxULHRydWU+Ci17Ci0gICAgdHlwZWRlZiBUIGNvbnN0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX3ZvbGF0aWxlX2hlbHBlcjwKLSAgICAgICAgICB0eXBlbmFtZSBjdl90cmFpdHNfaW1wPFQqPjo6dW5xdWFsaWZpZWRfdHlwZQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsPFQmJj4KLXsKLSAgICB0eXBlZGVmIFQmJiB0eXBlOwotfTsKLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vICogY29udmVydCBhIHR5cGUgVCB0byBhIG5vbi12b2xhdGlsZSB0eXBlIC0gcmVtb3ZlX3ZvbGF0aWxlPFQ+Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX3ZvbGF0aWxlLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3ZvbGF0aWxlX2ltcGw8VD46OnR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfdm9sYXRpbGUsVCYsVCYpCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV92b2xhdGlsZSxUIHZvbGF0aWxlW05dLFQgdHlwZVtOXSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX3ZvbGF0aWxlLFQgY29uc3Qgdm9sYXRpbGVbTl0sVCBjb25zdCB0eXBlW05dKQotI2VuZGlmCi0KLSNlbGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV92b2xhdGlsZSxULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV92b2xhdGlsZV9pbXBsPFQ+Ojp0eXBlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX1ZPTEFUSUxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9zYW1lX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3NhbWVfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ3NmMwZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3NhbWVfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEFsZWtzZXkgR3VydG92b3ksIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBkZWZpbmVzIGlzX3NhbWU6Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfU0FNRV9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1NBTUVfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVFRfU0FNRV9UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3RyYW5zZm9ybV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy90cmFuc2Zvcm1fdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJiYWEwYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3RyYW5zZm9ybV90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0vLwotLy8gIGRlZmluZXMgdHJhaXRzIGNsYXNzZXMgZm9yIHRyYW5zZm9ybWluZyBvbmUgdHlwZSB0byBhbm90aGVyOgotLy8gIHJlbW92ZV9yZWZlcmVuY2UsIGFkZF9yZWZlcmVuY2UsIHJlbW92ZV9ib3VuZHMsIHJlbW92ZV9wb2ludGVyLgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9UVF9UUkFOU0ZPUk1fVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFOU0ZPUk1fVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9ib3VuZHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1RSQU5TRk9STV9UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy90eXBlX3dpdGhfYWxpZ25tZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkxNjBjNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzk5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9UWVBFX1dJVEhfQUxJR05NRU5UX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RZUEVfV0lUSF9BTElHTk1FTlRfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9yX2VhY2hfaS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3RvX2xpc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3RyYW5zZm9ybS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYXBwZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTIxKSAvLyBhbGlnbm1lbnQgaXMgc2Vuc2l0aXZlIHRvIHBhY2tpbmcKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZuZGVmIF9fQk9STEFORENfXwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotY2xhc3MgYWxpZ25tZW50X2R1bW15OwotdHlwZWRlZiB2b2lkICgqZnVuY3Rpb25fcHRyKSgpOwotdHlwZWRlZiBpbnQgKGFsaWdubWVudF9kdW1teTo6Km1lbWJlcl9wdHIpOwotdHlwZWRlZiBpbnQgKGFsaWdubWVudF9kdW1teTo6Km1lbWJlcl9mdW5jdGlvbl9wdHIpKCk7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9CQVNFX1RZUEVTIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1QoIFwKLSAgICAgICAgMTIsICggXAotICAgICAgICBjaGFyLCBzaG9ydCwgaW50LCBsb25nLCAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUsIGZsb2F0LCBkb3VibGUsIGxvbmcgZG91YmxlIFwKLSAgICAgICAgLCB2b2lkKiwgZnVuY3Rpb25fcHRyLCBtZW1iZXJfcHRyLCBtZW1iZXJfZnVuY3Rpb25fcHRyKSkKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9CQVNFX1RZUEVTIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1QoIFwKLSAgICAgICAgMTEsICggXAotICAgICAgICBjaGFyLCBzaG9ydCwgaW50LCBsb25nLCBmbG9hdCwgZG91YmxlLCBsb25nIGRvdWJsZSBcCi0gICAgICAgICwgdm9pZCosIGZ1bmN0aW9uX3B0ciwgbWVtYmVyX3B0ciwgbWVtYmVyX2Z1bmN0aW9uX3B0cikpCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfT05FX1QoRCxEYXRhLFQpIG5kbmJvb3N0OjpkZXRhaWw6Omhhc19vbmVfVDwgVCA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQUxJR05NRU5UX1NUUlVDVF9UWVBFUyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNKE5ETkJPT1NUX1RUX0hBU19PTkVfVCwgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfVFRfQUxJR05NRU5UX0JBU0VfVFlQRVMpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQUxJR05NRU5UX1RZUEVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EKE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9CQVNFX1RZUEVTLCAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9UVF9BTElHTk1FTlRfU1RSVUNUX1RZUEVTKQotCi0vLwotLy8gbG93ZXJfYWxpZ25tZW50X2hlbHBlciAtLQotLy8KLS8vIFRoaXMgdGVtcGxhdGUgZ2V0cyBpbnN0YW50aWF0ZWQgYSBsb3QsIHNvIHVzZSBwYXJ0aWFsCi0vLyBzcGVjaWFsaXphdGlvbiB3aGVuIGF2YWlsYWJsZSB0byByZWR1Y2UgdGhlIGNvbXBpbGVyIGJ1cmRlbi4KLS8vCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGUgPGJvb2wgZm91bmQgPSB0cnVlPgotc3RydWN0IGxvd2VyX2FsaWdubWVudF9oZWxwZXJfaW1wbAotewotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCwgY2xhc3M+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGNoYXIgdHlwZTsKLSAgICAgICAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9OwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGxvd2VyX2FsaWdubWVudF9oZWxwZXJfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgdGFyZ2V0LCBjbGFzcyBUZXN0VHlwZT4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgIDogcHVibGljIG1wbDo6aWZfYzwoYWxpZ25tZW50X29mPFRlc3RUeXBlPjo6dmFsdWUgPT0gdGFyZ2V0KSwgVGVzdFR5cGUsIGNoYXI+Ci0gICAgewotICAgICAgICBlbnVtIHsgdmFsdWUgPSAoYWxpZ25tZW50X29mPFRlc3RUeXBlPjo6dmFsdWUgPT0gdGFyZ2V0KSB9OwotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBmb3VuZCwgc3RkOjpzaXplX3QgdGFyZ2V0LCBjbGFzcyBUZXN0VHlwZT4KLXN0cnVjdCBsb3dlcl9hbGlnbm1lbnRfaGVscGVyCi0gIDogcHVibGljIGxvd2VyX2FsaWdubWVudF9oZWxwZXJfaW1wbDxmb3VuZD46OnRlbXBsYXRlIGFwcGx5PHRhcmdldCxUZXN0VHlwZT4KLXsKLX07Ci0jZWxzZQotdGVtcGxhdGUgPGJvb2wgZm91bmQsIHN0ZDo6c2l6ZV90IHRhcmdldCwgY2xhc3MgVGVzdFR5cGU+Ci1zdHJ1Y3QgbG93ZXJfYWxpZ25tZW50X2hlbHBlcgotewotICAgIHR5cGVkZWYgY2hhciB0eXBlOwotICAgIGVudW0geyB2YWx1ZSA9IHRydWUgfTsKLX07Ci0KLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCB0YXJnZXQsIGNsYXNzIFRlc3RUeXBlPgotc3RydWN0IGxvd2VyX2FsaWdubWVudF9oZWxwZXI8ZmFsc2UsdGFyZ2V0LFRlc3RUeXBlPgotewotICAgIGVudW0geyB2YWx1ZSA9IChhbGlnbm1lbnRfb2Y8VGVzdFR5cGU+Ojp2YWx1ZSA9PSB0YXJnZXQpIH07Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8dmFsdWUsIFRlc3RUeXBlLCBjaGFyPjo6dHlwZSB0eXBlOwotfTsKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0NIT09TRV9NSU5fQUxJR05NRU5UKFIsUCxJLFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZW5hbWUgbG93ZXJfYWxpZ25tZW50X2hlbHBlcjwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChmb3VuZCxJKSx0YXJnZXQsVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgID46OnR5cGUgTkROQk9PU1RfUFBfQ0FUKHQsSSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW51bSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGZvdW5kLE5ETkJPT1NUX1BQX0lOQyhJKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgID0gbG93ZXJfYWxpZ25tZW50X2hlbHBlcjxORE5CT09TVF9QUF9DQVQoZm91bmQsSSksdGFyZ2V0LFQgPjo6dmFsdWUgIFwKLSAgICAgICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9UVF9DSE9PU0VfVChSLFAsSSxUKSBUIE5ETkJPT1NUX1BQX0NBVCh0LEkpOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfb25lX1QKLXsKLSAgVCBkYXRhOwotfTsKLQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IHRhcmdldD4KLXVuaW9uIGxvd2VyX2FsaWdubWVudAotewotICAgIGVudW0geyBmb3VuZDAgPSBmYWxzZSB9OwotCi0gICAgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JKAotICAgICAgICAgIE5ETkJPT1NUX1RUX0NIT09TRV9NSU5fQUxJR05NRU5UCi0gICAgICAgICwgaWdub3JlZAotICAgICAgICAsIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9UWVBFUwotICAgICAgICApCi19OwotCi11bmlvbiBtYXhfYWxpZ24KLXsKLSAgICBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0koCi0gICAgICAgICAgTkROQk9PU1RfVFRfQ0hPT1NFX1QKLSAgICAgICAgLCBpZ25vcmVkCi0gICAgICAgICwgTkROQk9PU1RfVFRfQUxJR05NRU5UX1RZUEVTCi0gICAgICAgICkKLX07Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9BTElHTk1FTlRfQkFTRV9UWVBFUwotI3VuZGVmIE5ETkJPT1NUX1RUX0hBU19PTkVfVAotI3VuZGVmIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9TVFJVQ1RfVFlQRVMKLSN1bmRlZiBORE5CT09TVF9UVF9BTElHTk1FTlRfVFlQRVMKLSN1bmRlZiBORE5CT09TVF9UVF9DSE9PU0VfTUlOX0FMSUdOTUVOVAotI3VuZGVmIE5ETkJPT1NUX1RUX0NIT09TRV9UCi0KLXRlbXBsYXRlPHN0ZDo6c2l6ZV90IFRBbGlnbiwgc3RkOjpzaXplX3QgQWxpZ24+Ci1zdHJ1Y3QgaXNfYWxpZ25lZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLAotICAgICAgICB2YWx1ZSA9IChUQWxpZ24gPj0gQWxpZ24pICYgKFRBbGlnbiAlIEFsaWduID09IDApCi0gICAgICAgICk7Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24sdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYWxpZ25tZW50PDE+ICx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8Mj4gLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDw0PiAsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYWxpZ25tZW50PDg+ICx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8MTA+ICx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8MTY+ICx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8MzI+ICx0cnVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlPHN0ZDo6c2l6ZV90IEFsaWduPgotc3RydWN0IGlzX3BvZDwgOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8QWxpZ24+ID4KLXsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IHRydWUpOwotfTsKLSNlbmRpZgotCi0vLyBUaGlzIGFsaWdubWVudCBtZXRob2Qgb3JpZ2luYWxseSBkdWUgdG8gQnJpYW4gUGFya2VyLCBpbXBsZW1lbnRlZCBieSBEYXZpZAotLy8gQWJyYWhhbXMsIGFuZCB0aGVuIHBvcnRlZCBoZXJlIGJ5IERvdWcgR3JlZ29yLgotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEFsaWduPgotY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudF9pbXAKLXsKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYWxpZ25tZW50PEFsaWduPiB0MTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2FsaWduZWQ8IDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjx0MT46OnZhbHVlLEFsaWduID46OnZhbHVlCi0gICAgICAgICwgdDEKLSAgICAgICAgLCA6Om5kbmJvb3N0OjpkZXRhaWw6Om1heF9hbGlnbgotICAgICAgICA+Ojp0eXBlIGFsaWduX3Q7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIGZvdW5kID0gYWxpZ25tZW50X29mPGFsaWduX3Q+Ojp2YWx1ZSk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGZvdW5kID49IEFsaWduKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGZvdW5kICUgQWxpZ24gPT0gMCk7Ci0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiBhbGlnbl90IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBBbGlnbj4KLWNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQgCi0gIDogcHVibGljIDo6bmRuYm9vc3Q6OmRldGFpbDo6dHlwZV93aXRoX2FsaWdubWVudF9pbXA8QWxpZ24+Ci17Ci19OwotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLW5hbWVzcGFjZSBhbGlnbiB7Ci1zdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMikpKSBhMiB7fTsKLXN0cnVjdCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg0KSkpIGE0IHt9Owotc3RydWN0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDgpKSkgYTgge307Ci1zdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSkgYTE2IHt9Owotc3RydWN0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDMyKSkpIGEzMiB7fTsKLXN0cnVjdCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg2NCkpKSBhNjQge307Ci1zdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTI4KSkpIGExMjgge307Ci19Ci0KLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDwxPiAgeyBwdWJsaWM6IHR5cGVkZWYgY2hhciB0eXBlOyB9OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDI+ICB7IHB1YmxpYzogdHlwZWRlZiBhbGlnbjo6YTIgdHlwZTsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDw0PiAgeyBwdWJsaWM6IHR5cGVkZWYgYWxpZ246OmE0IHR5cGU7IH07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8OD4gIHsgcHVibGljOiB0eXBlZGVmIGFsaWduOjphOCB0eXBlOyB9OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDE2PiB7IHB1YmxpYzogdHlwZWRlZiBhbGlnbjo6YTE2IHR5cGU7IH07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8MzI+IHsgcHVibGljOiB0eXBlZGVmIGFsaWduOjphMzIgdHlwZTsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDw2ND4geyBwdWJsaWM6IHR5cGVkZWYgYWxpZ246OmE2NCB0eXBlOyB9OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDEyOD4geyBwdWJsaWM6IHR5cGVkZWYgYWxpZ246OmExMjggdHlwZTsgfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTIsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphNCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmE4LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTE2LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTMyLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTY0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTEyOCx0cnVlKQotfQotI2VuZGlmCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgKGRlZmluZWQoTkROQk9PU1RfSU5URUwpICYmIGRlZmluZWQoX01TQ19WRVIpKSkgJiYgX01TQ19WRVIgPj0gMTMwMAotLy8KLS8vIE1TVkMgc3VwcG9ydHMgdHlwZXMgd2hpY2ggaGF2ZSBhbGlnbm1lbnRzIGdyZWF0ZXIgdGhhbiB0aGUgbm9ybWFsCi0vLyBtYXhpbXVtOiB0aGVzZSBhcmUgdXNlZCBmb3IgZXhhbXBsZSBpbiB0aGUgdHlwZXMgX19tNjQgYW5kIF9fbTEyOAotLy8gdG8gcHJvdmlkZSB0eXBlcyB3aXRoIGFsaWdubWVudCByZXF1aXJlbWVudHMgd2hpY2ggbWF0Y2ggdGhlIFNTRQotLy8gcmVnaXN0ZXJzLiAgVGhlcmVmb3JlIHdlIGV4dGVuZCB0eXBlX3dpdGhfYWxpZ25tZW50PD4gdG8gc3VwcG9ydAotLy8gc3VjaCB0eXBlcywgaG93ZXZlciwgd2UgaGF2ZSB0byBiZSBjYXJlZnVsIHRvIHVzZSBhIGJ1aWx0aW4gdHlwZQotLy8gd2hlbmV2ZXIgcG9zc2libGUgb3RoZXJ3aXNlIHdlIGJyZWFrIHByZXZpb3VzbHkgd29ya2luZyBjb2RlOgotLy8gc2VlIGh0dHA6Ly9hcnRpY2xlLmdtYW5lLm9yZy9nbWFuZS5jb21wLmxpYi5ib29zdC5kZXZlbC8xNzMwMTEKLS8vIGZvciBhbiBleGFtcGxlIGFuZCB0ZXN0IGNhc2UuICBUaHVzIHR5cGVzIGxpa2UgYTggYmVsb3cgd2lsbAotLy8gYmUgdXNlZCAqb25seSogaWYgdGhlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIGNhbid0IHByb3ZpZGUgYSB0eXBlCi0vLyB3aXRoIHN1aXRhYmxlIGFsaWdubWVudC4gIFRoaXMgZG9lcyBtZWFuIGhvd2V2ZXIsIHRoYXQgdHlwZV93aXRoX2FsaWdubWVudDw+Ci0vLyBtYXkgcmV0dXJuIGEgdHlwZSB3aGljaCBjYW5ub3QgYmUgcGFzc2VkIHRocm91Z2ggYSBmdW5jdGlvbiBjYWxsCi0vLyBieSB2YWx1ZSAoYW5kIG5laXRoZXIgY2FuIGFueSB0eXBlIGNvbnRhaW5pbmcgc3VjaCBhIHR5cGUgbGlrZQotLy8gQm9vc3QuT3B0aW9uYWwpLiAgSG93ZXZlciwgdGhpcyBvbmx5IGhhcHBlbnMgd2hlbiB3ZSBoYXZlIG5vIGNob2ljZSAKLS8vIGluIHRoZSBtYXR0ZXIgYmVjYXVzZSBubyBvdGhlciAib3JkaW5hcnkiIHR5cGUgaXMgYXZhaWxhYmxlLgotLy8KLW5hbWVzcGFjZSBhbGlnbiB7Ci1zdHJ1Y3QgX19kZWNsc3BlYyhhbGlnbig4KSkgYTggeyAKLSAgIGNoYXIgbVs4XTsgCi0gICB0eXBlZGVmIGE4IHR5cGU7Ci19Owotc3RydWN0IF9fZGVjbHNwZWMoYWxpZ24oMTYpKSBhMTYgeyAKLSAgIGNoYXIgbVsxNl07IAotICAgdHlwZWRlZiBhMTYgdHlwZTsKLX07Ci1zdHJ1Y3QgX19kZWNsc3BlYyhhbGlnbigzMikpIGEzMiB7IAotICAgY2hhciBtWzMyXTsgCi0gICB0eXBlZGVmIGEzMiB0eXBlOwotfTsKLXN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDY0KSkgYTY0IAoteyAKLSAgIGNoYXIgbVs2NF07IAotICAgdHlwZWRlZiBhNjQgdHlwZTsKLX07Ci1zdHJ1Y3QgX19kZWNsc3BlYyhhbGlnbigxMjgpKSBhMTI4IHsgCi0gICBjaGFyIG1bMTI4XTsgCi0gICB0eXBlZGVmIGExMjggdHlwZTsKLX07Ci19Ci0KLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDw4PiAgCi17IAotICAgdHlwZWRlZiBtcGw6OmlmX2M8Ci0gICAgICA6Om5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8bmRuYm9vc3Q6OmRldGFpbDo6bWF4X2FsaWduPjo6dmFsdWUgPCA4LAotICAgICAgYWxpZ246OmE4LAotICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6dHlwZV93aXRoX2FsaWdubWVudF9pbXA8OD4gPjo6dHlwZSB0MTsgCi1wdWJsaWM6IAotICAgdHlwZWRlZiB0MTo6dHlwZSB0eXBlOwotfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDwxNj4gCi17IAotICAgdHlwZWRlZiBtcGw6OmlmX2M8Ci0gICAgICA6Om5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8bmRuYm9vc3Q6OmRldGFpbDo6bWF4X2FsaWduPjo6dmFsdWUgPCAxNiwKLSAgICAgIGFsaWduOjphMTYsCi0gICAgICBuZG5ib29zdDo6ZGV0YWlsOjp0eXBlX3dpdGhfYWxpZ25tZW50X2ltcDwxNj4gPjo6dHlwZSB0MTsgCi1wdWJsaWM6IAotICAgdHlwZWRlZiB0MTo6dHlwZSB0eXBlOwotfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDwzMj4gCi17IAotICAgdHlwZWRlZiBtcGw6OmlmX2M8Ci0gICAgICA6Om5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8bmRuYm9vc3Q6OmRldGFpbDo6bWF4X2FsaWduPjo6dmFsdWUgPCAzMiwKLSAgICAgIGFsaWduOjphMzIsCi0gICAgICBuZG5ib29zdDo6ZGV0YWlsOjp0eXBlX3dpdGhfYWxpZ25tZW50X2ltcDwzMj4gPjo6dHlwZSB0MTsgCi1wdWJsaWM6IAotICAgdHlwZWRlZiB0MTo6dHlwZSB0eXBlOwotfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDw2ND4gewotICAgdHlwZWRlZiBtcGw6OmlmX2M8Ci0gICAgICA6Om5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8bmRuYm9vc3Q6OmRldGFpbDo6bWF4X2FsaWduPjo6dmFsdWUgPCA2NCwKLSAgICAgIGFsaWduOjphNjQsCi0gICAgICBuZG5ib29zdDo6ZGV0YWlsOjp0eXBlX3dpdGhfYWxpZ25tZW50X2ltcDw2ND4gPjo6dHlwZSB0MTsgCi1wdWJsaWM6IAotICAgdHlwZWRlZiB0MTo6dHlwZSB0eXBlOwotfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDwxMjg+IHsKLSAgIHR5cGVkZWYgbXBsOjppZl9jPAotICAgICAgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPG5kbmJvb3N0OjpkZXRhaWw6Om1heF9hbGlnbj46OnZhbHVlIDwgMTI4LAotICAgICAgYWxpZ246OmExMjgsCi0gICAgICBuZG5ib29zdDo6ZGV0YWlsOjp0eXBlX3dpdGhfYWxpZ25tZW50X2ltcDwxMjg+ID46OnR5cGUgdDE7IAotcHVibGljOiAKLSAgIHR5cGVkZWYgdDE6OnR5cGUgdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmE4LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTE2LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTMyLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTY0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTEyOCx0cnVlKQotfQotI2VuZGlmCi0KLSNlbHNlCi0KLS8vCi0vLyBCb3JsYW5kIHNwZWNpZmljIHZlcnNpb24sIHdlIGhhdmUgdGhpcyBmb3IgdHdvIHJlYXNvbnM6Ci0vLyAxKSBUaGUgdmVyc2lvbiBhYm92ZSBkb2Vzbid0IGFsd2F5cyBjb21waWxlICh3aXRoIHRoZSBuZXcgdGVzdCBjYXNlcyBmb3IgZXhhbXBsZSkKLS8vIDIpIEJlY2F1c2Ugb2YgQm9ybGFuZHMgI3ByYWdtYSBvcHRpb24gd2UgY2FuIGNyZWF0ZSB0eXBlcyB3aXRoIGFsaWdubWVudHMgdGhhdCBhcmUKLS8vICAgIGdyZWF0ZXIgdGhhdCB0aGUgbGFyZ2VzdCBhbGlnbmVkIGJ1aWx0aW4gdHlwZS4KLQotbmFtZXNwYWNlIGFsaWduewotI3ByYWdtYSBvcHRpb24gcHVzaCAtYTE2Ci1zdHJ1Y3QgYTJ7IHNob3J0IHM7IH07Ci1zdHJ1Y3QgYTR7IGludCBzOyB9Owotc3RydWN0IGE4eyBkb3VibGUgczsgfTsKLXN0cnVjdCBhMTZ7IGxvbmcgZG91YmxlIHM7IH07Ci0jcHJhZ21hIG9wdGlvbiBwb3AKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXR5cGVkZWYgOjpuZG5ib29zdDo6YWxpZ246OmExNiBtYXhfYWxpZ247Ci0KLS8vI2lmICEgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmEyLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphOCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmExNix0cnVlKQotLy8jZW5kaWYKLX0KLQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+IHN0cnVjdCB0eXBlX3dpdGhfYWxpZ25tZW50Ci17Ci0gICAvLyBXZSBzaG91bGQgbmV2ZXIgZ2V0IHRvIGhlcmUsIGJ1dCBpZiB3ZSBkbyB1c2UgdGhlIG1heGltYWxseQotICAgLy8gYWxpZ25lZCB0eXBlOgotICAgLy8gTkROQk9PU1RfU1RBVElDX0FTU0VSVCgwKTsKLSAgIHR5cGVkZWYgYWxpZ246OmExNiB0eXBlOwotfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCB0eXBlX3dpdGhfYWxpZ25tZW50PDE+eyB0eXBlZGVmIGNoYXIgdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCB0eXBlX3dpdGhfYWxpZ25tZW50PDI+eyB0eXBlZGVmIGFsaWduOjphMiB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHR5cGVfd2l0aF9hbGlnbm1lbnQ8ND57IHR5cGVkZWYgYWxpZ246OmE0IHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgdHlwZV93aXRoX2FsaWdubWVudDw4PnsgdHlwZWRlZiBhbGlnbjo6YTggdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCB0eXBlX3dpdGhfYWxpZ25tZW50PDE2PnsgdHlwZWRlZiBhbGlnbjo6YTE2IHR5cGU7IH07Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfVFlQRV9XSVRIX0FMSUdOTUVOVF9JTkNMVURFRAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2RtYy90eXBlb2ZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9kbWMvdHlwZW9mX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjQwZjc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2RtYy90eXBlb2ZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA3IFBlZGVyIEhvbHQKLQotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX01TVkNfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTVNWQ19UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgdHlwZV9vZgotICAgIHsKLQotICAgICAgICB0ZW1wbGF0ZTxpbnQgTj4gc3RydWN0IGVuY29kZV9jb3VudGVyIDogZW5jb2RlX2NvdW50ZXI8TiAtIDE+IHt9OwotICAgICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBlbmNvZGVfY291bnRlcjwwPiB7fTsKLQotICAgICAgICBjaGFyICgqZW5jb2RlX2luZGV4KC4uLikpWzFdOwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5ERVgoVCkgKHNpemVvZigqbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9pbmRleCgobmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9jb3VudGVyPDEwMDA+KikwKSkpCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVYVF9JTkRFWChuZXh0KSBmcmllbmQgY2hhciAoKmVuY29kZV9pbmRleChlbmNvZGVfY291bnRlcjxuZXh0PiopKVtuZXh0XTsKLQotCi0gICAgICAgIC8vVHlwZW9mIGNvZGUKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19yZWdpc3Rlcl90eXBlIDogbXN2Y19leHRyYWN0X3R5cGU8SUQ+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgbXN2Y19leHRyYWN0X3R5cGU8SUQ+IGJhc2VfdHlwZTsKLSAgICAgICAgICAgIHN0cnVjdCBiYXNlX3R5cGU6OmlkMnR5cGUgLy8gVGhpcyB1c2VzIG5pY2UgVkM2LjUgYW5kIFZDNy4xIGJ1Z2ZlYXR1cmUsIGFsc28gd29ya3MgZm9yIERpZ2l0YWwgTWFycwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotCi0gICAgICAgIHRlbXBsYXRlPGludCBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfdHlwZWlkX3dyYXBwZXIgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxtcGw6OmludF88SUQ+ID46OmlkMnR5cGUgaWQydHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIC8vVGllIGl0IGFsbCB0b2dldGhlcgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgZW5jb2RlX3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgLy9HZXQgdGhlIG5leHQgYXZhaWxhYmxlIGNvbXBpbGUgdGltZSBjb25zdGFudHMgaW5kZXgKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT1ORE5CT09TVF9UWVBFT0ZfSU5ERVgoVCkpOwotICAgICAgICAgICAgLy9JbnN0YW50aWF0ZSB0aGUgdGVtcGxhdGUKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19yZWdpc3Rlcl90eXBlPFQsbXBsOjppbnRfPHZhbHVlPiA+OjppZDJ0eXBlIHR5cGU7Ci0gICAgICAgICAgICAvL1NldCB0aGUgbmV4dCBjb21waWxlIHRpbWUgY29uc3RhbnRzIGluZGV4Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsbmV4dD12YWx1ZSsxKTsKLSAgICAgICAgICAgIC8vSW5jcmVtZW50IHRoZSBjb21waWxlIHRpbWUgY29uc3RhbnQgKG9ubHkgbmVlZGVkIHdoZW4gZXh0ZW5zaW9ucyBhcmUgbm90IGFjdGl2ZQotICAgICAgICAgICAgTkROQk9PU1RfVFlQRU9GX05FWFRfSU5ERVgobmV4dCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0IHNpemVyCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhcigqdHlwZSlbZW5jb2RlX3R5cGU8VD46OnZhbHVlXTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgdHlwZW5hbWUgc2l6ZXI8VD46OnR5cGUgZW5jb2RlX3N0YXJ0KFQgY29uc3QmKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcmdhbml6ZXIsIHR5cGVuYW1lIFQ+Ci0gICAgICAgIG1zdmNfcmVnaXN0ZXJfdHlwZTxULE9yZ2FuaXplcj4gdHlwZW9mX3JlZ2lzdGVyX3R5cGUoY29uc3QgVCYsT3JnYW5pemVyKiA9MCk7Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRihleHByKSBcCi0gICAgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfdHlwZWlkX3dyYXBwZXI8c2l6ZW9mKCpuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3N0YXJ0KGV4cHIpKT46OnR5cGUKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RQTChleHByKSB0eXBlbmFtZSBORE5CT09TVF9UWVBFT0YoZXhwcikKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX1RQTChuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LF90eXBlb2ZfcmVnaXN0ZXJfdmFsdWU9c2l6ZW9mKG5kbmJvb3N0Ojp0eXBlX29mOjp0eXBlb2ZfcmVnaXN0ZXJfdHlwZTxuYW1lPihleHByKSkpO1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y19leHRyYWN0X3R5cGU8bmFtZT46OmlkMnR5cGUgaWQydHlwZTtcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWQydHlwZTo6dHlwZSB0eXBlO1wKLSAgICB9OwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKSBcCi0gICAgc3RydWN0IG5hbWUge1wKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxfdHlwZW9mX3JlZ2lzdGVyX3ZhbHVlPXNpemVvZihuZG5ib29zdDo6dHlwZV9vZjo6dHlwZW9mX3JlZ2lzdGVyX3R5cGU8bmFtZT4oZXhwcikpKTtcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfZXh0cmFjdF90eXBlPG5hbWU+OjppZDJ0eXBlIGlkMnR5cGU7XAotICAgICAgICB0eXBlZGVmIGlkMnR5cGU6OnR5cGUgdHlwZTtcCi0gICAgfTsKLQotICAgIH0KLX0KLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfTVNWQ19UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YTExNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gYm9vc3RpbnNwZWN0Om5vdW5uYW1lZAotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfREVDT0RFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX0RFQ09ERV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHQuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9TVVBQUkVTU19VTk5BTUVEX05BTUVTUEFDRQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlMgbmFtZXNwYWNlIHsgbmFtZXNwYWNlIG5kbmJvb3N0X3R5cGVvZiB7Ci0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TIH19Ci0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfTlNfUVVBTElGSUVSIG5kbmJvb3N0X3R5cGVvZgotCi0jZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlMgbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUyB9fQotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX05TX1FVQUxJRklFUiBuZG5ib29zdDo6dHlwZV9vZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URVhUICJ1bm5hbWVkIG5hbWVzcGFjZSBpcyBvZmYiCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL21lc3NhZ2UuaHBwPgotCi0jZW5kaWYKLQotTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUwotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUeXBlX05vdF9SZWdpc3RlcmVkX1dpdGhfVHlwZW9mX1N5c3RlbT4KLXN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsOwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBJdGVyPgotc3RydWN0IGRlY29kZV90eXBlX2ltcGwKLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOyAgLy8gTVNWQyBFVEkgd29ya2Fyb3VuZAotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBkZWNvZGVfbmVzdGVkX3RlbXBsYXRlX2hlbHBlcl9pbXBsOwotCi1ORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPgotICAgIHN0cnVjdCBlbmNvZGVfdHlwZSA6IE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfTlNfUVVBTElGSUVSOjplbmNvZGVfdHlwZV9pbXBsPFYsIFQ+Ci0gICAge307Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfdHlwZSA6IE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfTlNfUVVBTElGSUVSOjpkZWNvZGVfdHlwZV9pbXBsPAotICAgICAgICB0eXBlbmFtZSBJdGVyOjp0eXBlLAotICAgICAgICB0eXBlbmFtZSBJdGVyOjpuZXh0Ci0gICAgPgotICAgIHt9OwotfX0KLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfRU5DT0RFX0RFQ09ERV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGVfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGVfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyYjQ3Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9ERUNPREVfUEFSQU1TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX0RFQ09ERV9QQVJBTVNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotCi0vLyBBc3N1bWVzIGl0ZXIwIGNvbnRhaW5zIGluaXRpYWwgaXRlcmF0b3IKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNKHosIG4sIHRleHQpICAgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90eXBlPGl0ZXIjI24+IGRlY29kZSMjbjsgICAgIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRlY29kZSMjbjo6dHlwZSBwIyNuOyAgICAgIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRlY29kZSMjbjo6aXRlciBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUyhuKVwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQobiwgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTSwgfikKLQotLy8gVGhlIFAwLCBQMSwgLi4uIFBOIGFyZSBlbmNvZGVkIGFuZCBhZGRlZCB0byBWIAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TX0JFR0lOKHosIG4sIHRleHQpXAotICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfdHlwZTwKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNU19FTkQoeiwgbiwgdGV4dClcCi0gICAgLCBORE5CT09TVF9QUF9DQVQoUCwgbik+Ojp0eXBlCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMobiwgSUQpICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQobiwgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVNfQkVHSU4sIH4pIFwKLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6cHVzaF9iYWNrPFYsIG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4gPjo6dHlwZSAgICAgIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQobiwgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVNfRU5ELCB+KQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9FTkNPREVfREVDT0RFX1BBUkFNU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2ludF9lbmNvZGluZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9pbnRfZW5jb2RpbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzcyNzdjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2ludF9lbmNvZGluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9JTlRfRU5DT0RJTkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRfRU5DT0RJTkdfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBnZXRfdW5zaWduZWQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZ2V0X3Vuc2lnbmVkPHNpZ25lZCBjaGFyPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHR5cGU7Ci0gICAgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBnZXRfdW5zaWduZWQ8Y2hhcj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciB0eXBlOwotICAgIH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZ2V0X3Vuc2lnbmVkPHNob3J0PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB0eXBlOwotICAgIH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZ2V0X3Vuc2lnbmVkPGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHR5cGU7Ci0gICAgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBnZXRfdW5zaWduZWQ8bG9uZz4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgbiwgYm9vbCBPdmVyZmxvdz4KLSAgICBzdHJ1Y3QgcGFjawotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90ICwgdmFsdWU9KChuICsgMSkgKiAyICsgKE92ZXJmbG93ID8gMSA6IDApKSk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IG0+Ci0gICAgc3RydWN0IHVucGFjawotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IChtIC8gMikgLSAxKTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCBvdmVyZmxvdyA9IChtICUgMiA9PSAxKSk7Ci0gICAgfTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBzdGQ6OnNpemVfdCBuLCBib29sIG92ZXJmbG93ID0gKG4gPj0gMHgzZmZmZmZmZik+Ci0gICAgc3RydWN0IGVuY29kZV9zaXplX3QgOiBwdXNoX2JhY2s8Ci0gICAgICAgIFYsCi0gICAgICAgIG5kbmJvb3N0OjptcGw6OnNpemVfdDxwYWNrPG4sIGZhbHNlPjo6dmFsdWU+Ci0gICAgPgotICAgIHt9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgc3RkOjpzaXplX3Qgbj4KLSAgICBzdHJ1Y3QgZW5jb2RlX3NpemVfdDxWLCBuLCB0cnVlPiA6IHB1c2hfYmFjazx0eXBlbmFtZSBwdXNoX2JhY2s8Ci0gICAgICAgIFYsCi0gICAgICAgIG5kbmJvb3N0OjptcGw6OnNpemVfdDxwYWNrPG4gJSAweDNmZmZmZmZlLCB0cnVlPjo6dmFsdWU+ID46OnR5cGUsCi0gICAgICAgIG5kbmJvb3N0OjptcGw6OnNpemVfdDxuIC8gMHgzZmZmZmZmZT4KLSAgICA+Ci0gICAge307Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBULCBUIG4+Ci0gICAgc3RydWN0IGVuY29kZV9pbnRlZ3JhbCA6IGVuY29kZV9zaXplX3Q8IFYsICh0eXBlbmFtZSBnZXRfdW5zaWduZWQ8VD46OnR5cGUpbiwoKCh0eXBlbmFtZSBnZXRfdW5zaWduZWQ8VD46OnR5cGUpbik+PTB4M2ZmZmZmZmYpID4KLSAgICB7fTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGJvb2wgYj4KLSAgICBzdHJ1Y3QgZW5jb2RlX2ludGVncmFsPFYsIGJvb2wsIGI+IDogZW5jb2RlX3NpemVfdDwgViwgYj8xOjAsIGZhbHNlPgotICAgIHt9OwotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlciwgYm9vbCBvdmVyZmxvdz4KLSAgICBzdHJ1Y3QgZGVjb2RlX3NpemVfdDsKLQotICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IG4sIGNsYXNzIEl0ZXI+Ci0gICAgc3RydWN0IGRlY29kZV9zaXplX3Q8biwgSXRlciwgZmFsc2U+Ci0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsdmFsdWUgPSBuKTsKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IG4sIGNsYXNzIEl0ZXI+Ci0gICAgc3RydWN0IGRlY29kZV9zaXplX3Q8biwgSXRlciwgdHJ1ZT4KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCxtID0gSXRlcjo6dHlwZTo6dmFsdWUpOwotCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCx2YWx1ZSA9IChzdGQ6OnNpemVfdCltICogMHgzZmZmZmZmZSArIG4pOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXI6Om5leHQgaXRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX2ludGVncmFsCi0gICAgewotICAgICAgICB0eXBlZGVmIGRlY29kZV9pbnRlZ3JhbDxULEl0ZXI+IHNlbGZfdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LG0gPSBJdGVyOjp0eXBlOjp2YWx1ZSk7Ci0KLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LG4gPSB1bnBhY2s8bT46OnZhbHVlKTsKLQotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3Qsb3ZlcmZsb3cgPSB1bnBhY2s8bT46Om92ZXJmbG93KTsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXI6Om5leHQgbmV4dHBvczsKLQotICAgICAgICBzdGF0aWMgY29uc3QgVCB2YWx1ZSA9IChUKShzdGQ6OnNpemVfdClkZWNvZGVfc2l6ZV90PG4sIG5leHRwb3MsIG92ZXJmbG93Pjo6dmFsdWU7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZWNvZGVfc2l6ZV90PHNlbGZfdDo6biwgbmV4dHBvcywgc2VsZl90OjpvdmVyZmxvdz46Oml0ZXIgaXRlcjsKLSAgICB9OwotCi19fS8vbmFtZXNwYWNlCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX0lOVF9FTkNPRElOR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2ludGVncmFsX3RlbXBsYXRlX3BhcmFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2ludGVncmFsX3RlbXBsYXRlX3BhcmFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU0MThmMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9pbnRlZ3JhbF90ZW1wbGF0ZV9wYXJhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfVEVNUExBVEVfUEFSQU1fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3Vuc2lnbmVkICh1bnNpZ25lZCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3NpZ25lZCAoc2lnbmVkKQotCi0jZGVmaW5lIGNoYXJfTkROQk9PU1RfVFlQRU9GIChjaGFyKQotI2RlZmluZSBzaG9ydF9ORE5CT09TVF9UWVBFT0YgKHNob3J0KQotI2RlZmluZSBpbnRfTkROQk9PU1RfVFlQRU9GIChpbnQpCi0jZGVmaW5lIGxvbmdfTkROQk9PU1RfVFlQRU9GIChsb25nKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9jaGFyX05ETkJPT1NUX1RZUEVPRiAoY2hhcikKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3Nob3J0X05ETkJPT1NUX1RZUEVPRiAoc2hvcnQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9pbnRfTkROQk9PU1RfVFlQRU9GIChpbnQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9sb25nX05ETkJPT1NUX1RZUEVPRiAobG9uZykKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2Jvb2xfTkROQk9PU1RfVFlQRU9GIChib29sKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfdW5zaWduZWRfTkROQk9PU1RfVFlQRU9GICh1bnNpZ25lZCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3NpemVfdF9ORE5CT09TVF9UWVBFT0YgKHNpemVfdCkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfY2hhciAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oY2hhcikKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3Nob3J0ICAgICAgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHNob3J0KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfaW50ICAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oaW50KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfbG9uZyAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0obG9uZykKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX2Jvb2wgICAgICAgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKGJvb2wpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl91bnNpZ25lZCAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTSh1bnNpZ25lZCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3NpemVfdCAgICAgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHNpemVfdCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3Vuc2lnbmVkY2hhciAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHVuc2lnbmVkIGNoYXIpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl91bnNpZ25lZHNob3J0IE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTSh1bnNpZ25lZCBzaG9ydCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3Vuc2lnbmVkaW50ICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHVuc2lnbmVkIGludCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3Vuc2lnbmVkbG9uZyAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHVuc2lnbmVkIGxvbmcpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9zaWduZWRjaGFyICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShzaWduZWQgY2hhcikKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3NpZ25lZHNob3J0ICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHNpZ25lZCBzaG9ydCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3NpZ25lZGludCAgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHNpZ25lZCBpbnQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9zaWduZWRsb25nICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShzaWduZWQgbG9uZykKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX2ludGVncmFsKHgpICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHgpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMKFgpIGludGVncmFsKFgpIE5ETkJPT1NUX1RZUEVPRl9FQVQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VBVF9ORE5CT09TVF9UWVBFT0YKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2ludGVncmFsKFgpIChpbnRlZ3JhbChYKSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oVHlwZSlcCi0gICAgKElOVEVHUkFMX1BBUkFNKVwKLSAgICAoVHlwZSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fR0VUVFlQRShQYXJhbSlcCi0gICAgTkROQk9PU1RfUFBfU0VRX0VMRU0oMSwgUGFyYW0pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0VYUEFORFRZUEUoUGFyYW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFBhcmFtKQotCi0vLyBJTlRFR1JBTF9QQVJBTSAidmlydHVhbCBmdW5jdGlvbnMiIGltcGxlbWVudGF0aW9uCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0VOQ09ERShUaGlzLCBuKVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfaW50ZWdyYWw8XAotICAgICAgICBORE5CT09TVF9QUF9DQVQoViwgbiksXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fR0VUVFlQRShUaGlzKSxcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChQLCBuKVwKLSAgICA+Ojp0eXBlIE5ETkJPT1NUX1BQX0NBVChWLCBORE5CT09TVF9QUF9JTkMobikpOyAKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fREVDT0RFKFRoaXMsIG4pXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV9pbnRlZ3JhbDxORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fR0VUVFlQRShUaGlzKSwgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIG4pPiBORE5CT09TVF9QUF9DQVQoZCwgbik7XAotICAgIHN0YXRpYyBjb25zdCBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fR0VUVFlQRShUaGlzKSBORE5CT09TVF9QUF9DQVQoUCwgbikgPSBORE5CT09TVF9QUF9DQVQoZCwgbik6OnZhbHVlO1wKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChkLCBuKTo6aXRlciBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fUExBQ0VIT0xERVIoUGFyYW0pXAotICAgIChORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fR0VUVFlQRShQYXJhbSkpMAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9ERUNMQVJBVElPTl9UWVBFKFBhcmFtKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fR0VUVFlQRShQYXJhbSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fUExBQ0VIT0xERVJfVFlQRVMoUGFyYW0sIG4pXAotICAgIE5ETkJPT1NUX1BQX0NBVChULG4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0lTVEVNUExBVEUgMAotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21lc3NhZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbWVzc2FnZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0Nzg2OGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbWVzc2FnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQgTkROQk9PU1RfVFlQRU9GX01FU1NBR0VTCi0jICAgIHByYWdtYSBtZXNzYWdlKE5ETkJPT1NUX1RZUEVPRl9URVhUKQotI2VuZGlmCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX1RFWFQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21vZGlmaWVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tb2RpZmllcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTg1YjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21vZGlmaWVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9NT0RJRklFUlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NT0RJRklFUlNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaWRlbnRpdHkuaHBwPgotCi0jaW5jbHVkZSBORE5CT09TVF9UWVBFT0ZfSU5DUkVNRU5UX1JFR0lTVFJBVElPTl9HUk9VUCgpCi0KLS8vIG1vZGlmaWVycwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KElELCBGdW4pXAotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIEZ1bihUKT5cCi0gICAge1wKLSAgICAgICAgdHlwZWRlZlwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfdHlwZTxcCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6cHVzaF9iYWNrPFwKLSAgICAgICAgICAgIFZcCi0gICAgICAgICAgICAsIG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4gPjo6dHlwZVwKLSAgICAgICAgICAgICwgVD46OnR5cGVcCi0gICAgICAgICAgICB0eXBlO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPiBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+LCBJdGVyPlwKLSAgICB7XAotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfdHlwZTxJdGVyPiBkMTtcCi0gICAgICAgIHR5cGVkZWYgRnVuKHR5cGVuYW1lIGQxOjp0eXBlKSB0eXBlO1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkMTo6aXRlciBpdGVyO1wKLSAgICB9Ci0KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfY29uc3RfZnVuKFQpIGNvbnN0IFQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2Z1bihUKSB2b2xhdGlsZSBUCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9mdW4oVCkgdm9sYXRpbGUgY29uc3QgVAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfcG9pbnRlcl9mdW4oVCkgVCoKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3JlZmVyZW5jZV9mdW4oVCkgVCYKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi0vL0JvcmxhbmQgaW5jb3JyZWN0bHkgaGFuZGxlcyBUIGNvbnN0LCBUIGNvbnN0IHZvbGF0aWxlIGFuZCBUIHZvbGF0aWxlLgotLy9JdCBkcm9wcyB0aGUgZGVjb3JhdGlvbiBubyBtYXR0ZXIgd2hhdCwgc28gd2UgbmVlZCB0byB0cnkgdG8gaGFuZGxlIFQqIGNvbnN0IGV0Yy4gd2l0aG91dCBsb29zaW5nIHRoZSB0b3AgbW9kaWZpZXIuCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9wb2ludGVyX2Z1bihUKSBUIGNvbnN0ICoKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2NvbnN0X3JlZmVyZW5jZV9mdW4oVCkgVCBjb25zdCAmCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9wb2ludGVyX2Z1bihUKSBUIHZvbGF0aWxlKgotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfcmVmZXJlbmNlX2Z1bihUKSBUIHZvbGF0aWxlJgotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfcG9pbnRlcl9mdW4oVCkgVCB2b2xhdGlsZSBjb25zdCAqCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9yZWZlcmVuY2VfZnVuKFQpIFQgdm9sYXRpbGUgY29uc3QgJgotI2VuZGlmCi0KLU5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlMKLQotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0ZfY29uc3RfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0ZfcG9pbnRlcl9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0ZfcmVmZXJlbmNlX2Z1bik7Ci0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NjAwKQotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0ZfY29uc3RfcG9pbnRlcl9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0ZfY29uc3RfcmVmZXJlbmNlX2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9wb2ludGVyX2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9yZWZlcmVuY2VfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X3BvaW50ZXJfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X3JlZmVyZW5jZV9mdW4pOwotI2VuZGlmCi0KLU5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydAotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9wb2ludGVyX2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9yZWZlcmVuY2VfZnVuCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NjAwKQotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9wb2ludGVyX2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9yZWZlcmVuY2VfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX3BvaW50ZXJfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX3JlZmVyZW5jZV9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfcG9pbnRlcl9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfcmVmZXJlbmNlX2Z1bgotI2VuZGlmCi0KLS8vIGFycmF5cwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9hcnJheV9zdXBwb3J0KElELCBRdWFsaWZpZXIpXAotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQsIGludCBOPlwKLSAgICBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBRdWFsaWZpZXIoKSBUW05dPlwKLSAgICB7XAotICAgICAgICB0eXBlZGVmXAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV90eXBlPFwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjpwdXNoX2JhY2s8XAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OnB1c2hfYmFjazxcCi0gICAgICAgICAgICBWXAotICAgICAgICAgICAgLCBuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+ID46OnR5cGVcCi0gICAgICAgICAgICAsIG5kbmJvb3N0OjptcGw6OnNpemVfdDxOPiA+Ojp0eXBlXAotICAgICAgICAgICAgLCBUPjo6dHlwZVwKLSAgICAgICAgdHlwZTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj5cCi0gICAgc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiwgSXRlcj5cCi0gICAge1wKLSAgICAgICAgZW51bXtuID0gSXRlcjo6dHlwZTo6dmFsdWV9O1wKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3R5cGU8dHlwZW5hbWUgSXRlcjo6bmV4dD4gZDtcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZDo6dHlwZSBRdWFsaWZpZXIoKSB0eXBlW25dO1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkOjppdGVyIGl0ZXI7XAotICAgIH0KLQotTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUwotCi1ORE5CT09TVF9UWVBFT0ZfYXJyYXlfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1BQX0VNUFRZKTsKLU5ETkJPT1NUX1RZUEVPRl9hcnJheV9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfUFBfSURFTlRJVFkoY29uc3QpKTsKLU5ETkJPT1NUX1RZUEVPRl9hcnJheV9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfUFBfSURFTlRJVFkodm9sYXRpbGUpKTsKLU5ETkJPT1NUX1RZUEVPRl9hcnJheV9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfUFBfSURFTlRJVFkodm9sYXRpbGUgY29uc3QpKTsKLU5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfYXJyYXlfc3VwcG9ydAotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9NT0RJRklFUlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tc3ZjL3R5cGVvZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21zdmMvdHlwZW9mX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGVhN2UxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21zdmMvdHlwZW9mX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjgzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDA1IElnb3IgQ2hlc25va292LCBtYWlsdG86aWNoZXNub2tvdkBnbWFpbC5jb20gKFZDIDYuNSxWQyA3LjEgKyBjb3VudGVyIGNvZGUpCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNyBQZWRlciBIb2x0IChWQyA3LjAgKyBmcmFtZXdvcmspCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDYgU3RldmVuIFdhdGFuYWJlIChWQyA4LjApCi0KLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9NU1ZDX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRAotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01TVkNfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD49MTMxMCkKLSMgIGluY2x1ZGUgPHR5cGVpbmZvPgotIyBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgdHlwZV9vZgotICAgIHsKLQotICAgICAgICAvL0NvbXBpbGUgdGltZSBjb25zdGFudCBjb2RlCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw+PTEzMDApICYmIGRlZmluZWQoX01TQ19FWFRFTlNJT05TKQotICAgICAgICB0ZW1wbGF0ZTxpbnQgTj4gc3RydWN0IHRoZV9jb3VudGVyOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsaW50IE4gPSA1Lypmb3Igc2ltaWxhcml0eSovPgotICAgICAgICBzdHJ1Y3QgZW5jb2RlX2NvdW50ZXIKLSAgICAgICAgewotICAgICAgICAgICAgX19pZl9leGlzdHModGhlX2NvdW50ZXI8TiArIDI1Nj4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLGNvdW50PShlbmNvZGVfY291bnRlcjxULE4gKyAyNTc+Ojpjb3VudCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgX19pZl9ub3RfZXhpc3RzKHRoZV9jb3VudGVyPE4gKyAyNTY+KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIF9faWZfZXhpc3RzKHRoZV9jb3VudGVyPE4gKyA2ND4pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsY291bnQ9KGVuY29kZV9jb3VudGVyPFQsTiArIDY1Pjo6Y291bnQpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgX19pZl9ub3RfZXhpc3RzKHRoZV9jb3VudGVyPE4gKyA2ND4pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBfX2lmX2V4aXN0cyh0aGVfY291bnRlcjxOICsgMTY+KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsY291bnQ9KGVuY29kZV9jb3VudGVyPFQsTiArIDE3Pjo6Y291bnQpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBfX2lmX25vdF9leGlzdHModGhlX2NvdW50ZXI8TiArIDE2PikKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgX19pZl9leGlzdHModGhlX2NvdW50ZXI8TiArIDQ+KQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxjb3VudD0oZW5jb2RlX2NvdW50ZXI8VCxOICsgNT46OmNvdW50KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBfX2lmX25vdF9leGlzdHModGhlX2NvdW50ZXI8TiArIDQ+KQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faWZfZXhpc3RzKHRoZV9jb3VudGVyPE4+KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLGNvdW50PShlbmNvZGVfY291bnRlcjxULE4gKyAxPjo6Y291bnQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pZl9ub3RfZXhpc3RzKHRoZV9jb3VudGVyPE4+KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLGNvdW50PU4pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIHRoZV9jb3VudGVyPE4+IHR5cGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5ERVgoVCkgKGVuY29kZV9jb3VudGVyPFQ+Ojpjb3VudCkKLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVhUX0lOREVYKG5leHQpCi0jIGVsc2UKLSAgICAgICAgdGVtcGxhdGU8aW50IE4+IHN0cnVjdCBlbmNvZGVfY291bnRlciA6IGVuY29kZV9jb3VudGVyPE4gLSAxPiB7fTsKLSAgICAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZW5jb2RlX2NvdW50ZXI8MD4ge307Ci0KLSAgICAgICAgLy9OZWVkIHRvIGRlZmF1bHQgdG8gYSBsYXJnZXIgdmFsdWUgdGhhbiA0LCBhcyBkdWUgdG8gTVNWQydzIEVUSSBlcnJvcnMuIChzaXplb2YoaW50KT09NCkKLSAgICAgICAgY2hhciAoKmVuY29kZV9pbmRleCguLi4pKVs1XTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOREVYKFQpIChzaXplb2YoKm5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfaW5kZXgoKG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfY291bnRlcjwxMDA1PiopMCkpKQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FWFRfSU5ERVgobmV4dCkgZnJpZW5kIGNoYXIgKCplbmNvZGVfaW5kZXgoZW5jb2RlX2NvdW50ZXI8bmV4dD4qKSlbbmV4dF07Ci0jIGVuZGlmCi0KLSAgICAgICAgLy9UeXBlb2YgY29kZQotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw9PTEzMDApCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8Ym9vbD4KLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlX2ltcGw7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgaWQydHlwZV9pbXBsPHRydWU+IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3JlZ2lzdGVyX3R5cGUgOiBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGVfaW1wbDx0cnVlPiAgLy9WQzcuMCBzcGVjaWZpYyBidWdmZWF0dXJlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD49MTQwMCkKLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlX2RlZmF1bHRfcGFyYW0ge307Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQsIHR5cGVuYW1lIFQgPSBtc3ZjX2V4dHJhY3RfdHlwZV9kZWZhdWx0X3BhcmFtPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGU7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZTxJRCwgbXN2Y19leHRyYWN0X3R5cGVfZGVmYXVsdF9wYXJhbT4gewotICAgICAgICAgICAgdGVtcGxhdGU8Ym9vbD4KLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlX2ltcGw7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgaWQydHlwZV9pbXBsPHRydWU+IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQsIHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZSA6IG1zdmNfZXh0cmFjdF90eXBlPElELG1zdmNfZXh0cmFjdF90eXBlX2RlZmF1bHRfcGFyYW0+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlX2ltcGw8dHJ1ZT4gIC8vVkM4LjAgc3BlY2lmaWMgYnVnZmVhdHVyZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPGJvb2w+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZV9pbXBsOwotCi0gICAgICAgICAgICB0eXBlZGVmIGlkMnR5cGVfaW1wbDx0cnVlPiBpZDJ0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19yZWdpc3Rlcl90eXBlIDogbXN2Y19leHRyYWN0X3R5cGU8SUQsIFQ+Ci0gICAgICAgIHsKLSAgICAgICAgfTsKLSMgZWxzZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19yZWdpc3Rlcl90eXBlIDogbXN2Y19leHRyYWN0X3R5cGU8SUQ+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgbXN2Y19leHRyYWN0X3R5cGU8SUQ+IGJhc2VfdHlwZTsKLSAgICAgICAgICAgIHN0cnVjdCBiYXNlX3R5cGU6OmlkMnR5cGUgLy8gVGhpcyB1c2VzIG5pY2UgVkM2LjUgYW5kIFZDNy4xIGJ1Z2ZlYXR1cmUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0jIGVuZGlmCi0vLyBFQU46IHByZXByb2Nlc3MgdGhpcyBibG9jayBvdXQgb24gYWR2aWNlIG9mIFBlZGVyIEhvbHQKLS8vIHRvIGVsaW1pbmF0ZSBlcnJvcnMgaW4gdHlwZV90cmFpdHMvY29tbW9uX3R5cGUuaHBwCi0jIGlmIDAgLy9ORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPT0xMzEwKQotICAgICAgICB0ZW1wbGF0ZTxjb25zdCBzdGQ6OnR5cGVfaW5mbyYgcmVmX3R5cGVfaW5mbz4KLSAgICAgICAgc3RydWN0IG1zdmNfdHlwZWlkX3dyYXBwZXIgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxtc3ZjX3R5cGVpZF93cmFwcGVyPjo6aWQydHlwZSBpZDJ0eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZDJ0eXBlOjp0eXBlIHdyYXBwZWRfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgd3JhcHBlZF90eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgICAgIC8vVGhpcyBjbGFzcyBpcyB1c2VkIGZvciByZWdpc3RlcmluZyB0aGUgdHlwZSBULiBlbmNvZGVfdHlwZTxUPiBpcyBtYXBwZWQgYWdhaW5zdCB0eXBlaWQoZW5jb2RlX3R5cGU8VD4pLgotICAgICAgICAvL21zdmNfdHlwZWlkX3dyYXBwZXI8dHlwZWlkKGVuY29kZV90eXBlPFQ+KT4gd2lsbCBub3cgaGF2ZSBhIHR5cGUgdHlwZWRlZiB0aGF0IGVxdWFscyBlbmNvZGVfdHlwZTxUPi4KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGVuY29kZV90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgZW5jb2RlX3R5cGU8VD4gaW5wdXRfdHlwZTsKLSAgICAgICAgICAgIC8vSW52b2tlIHJlZ2lzdHJhdGlvbiBvZiBlbmNvZGVfdHlwZTxUPi4gdHlwZWlkKGVuY29kZV90eXBlPFQ+KSBpcyBub3cgbWFwcGVkIHRvIGVuY29kZV90eXBlPFQ+LiBEbyBub3QgdXNlIHJlZ2lzdGVyZWRfdHlwZSBmb3IgYW55dGhpbmcuCi0gICAgICAgICAgICAvL1RoZSByZWFzb24gZm9yIHJlZ2lzdGVyaW5nIGVuY29kZV90eXBlPFQ+IHJhdGhlciB0aGFuIFQsIGlzIHRoYXQgVkMgaGFuZGxlcyB0eXBlaWQoZnVuY3Rpb24gcmVmZXJlbmNlKSBwb29ybHkuIEJ5IGFkZGluZyBhbm90aGVyCi0gICAgICAgICAgICAvL2xldmVsIG9mIGluZGlyZWN0aW9uLCB3ZSBzb2x2ZSB0aGlzIHByb2JsZW0uCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfcmVnaXN0ZXJfdHlwZTxpbnB1dF90eXBlLG1zdmNfdHlwZWlkX3dyYXBwZXI8dHlwZWlkKGlucHV0X3R5cGUpPiA+OjppZDJ0eXBlIHJlZ2lzdGVyZWRfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIGRpc2FibGVfaWY8Ci0gICAgICAgICAgICB0eXBlbmFtZSBpc19mdW5jdGlvbjxUPjo6dHlwZSwKLSAgICAgICAgICAgIHR5cGVuYW1lIGVuY29kZV90eXBlPFQ+OjppbnB1dF90eXBlPjo6dHlwZSBlbmNvZGVfc3RhcnQoVCBjb25zdCYpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIGVuYWJsZV9pZjwKLSAgICAgICAgICAgIHR5cGVuYW1lIGlzX2Z1bmN0aW9uPFQ+Ojp0eXBlLAotICAgICAgICAgICAgdHlwZW5hbWUgZW5jb2RlX3R5cGU8VD46OmlucHV0X3R5cGU+Ojp0eXBlIGVuY29kZV9zdGFydChUJik7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3JnYW5pemVyLCB0eXBlbmFtZSBUPgotICAgICAgICBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxPcmdhbml6ZXI+IHR5cGVvZl9yZWdpc3Rlcl90eXBlKGNvbnN0IFQmKTsKLQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0YoZXhwcikgXAotICAgIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX3R5cGVpZF93cmFwcGVyPHR5cGVpZChuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3N0YXJ0KGV4cHIpKT46OnR5cGUKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RQTChleHByKSB0eXBlbmFtZSBORE5CT09TVF9UWVBFT0YoZXhwcikKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX1RQTChuYW1lLGV4cHIpIFwKLXN0cnVjdCBuYW1lIHtcCi0gICAgZW51bSB7X3R5cGVvZl9yZWdpc3Rlcl92YWx1ZT1zaXplb2YodHlwZWlkKG5kbmJvb3N0Ojp0eXBlX29mOjp0eXBlb2ZfcmVnaXN0ZXJfdHlwZTxuYW1lPihleHByKSkpfTtcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y19leHRyYWN0X3R5cGU8bmFtZT46OmlkMnR5cGUgaWQydHlwZTtcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZDJ0eXBlOjp0eXBlIHR5cGU7XAotfTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGKG5hbWUsZXhwcikgXAotc3RydWN0IG5hbWUge1wKLSAgICBlbnVtIHtfdHlwZW9mX3JlZ2lzdGVyX3ZhbHVlPXNpemVvZih0eXBlaWQobmRuYm9vc3Q6OnR5cGVfb2Y6OnR5cGVvZl9yZWdpc3Rlcl90eXBlPG5hbWU+KGV4cHIpKSl9O1wKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX2V4dHJhY3RfdHlwZTxuYW1lPjo6aWQydHlwZSBpZDJ0eXBlO1wKLSAgICB0eXBlZGVmIGlkMnR5cGU6OnR5cGUgdHlwZTtcCi19OwotCi0jIGVsc2UKLSAgICAgICAgdGVtcGxhdGU8aW50IElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y190eXBlaWRfd3JhcHBlciB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPG1wbDo6aW50XzxJRD4gPjo6aWQydHlwZSBpZDJ0eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgICAgIC8vV29ya2Fyb3VuZCBmb3IgRVRJLWJ1ZyBmb3IgVkM2IGFuZCBWQzcKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgbXN2Y190eXBlaWRfd3JhcHBlcjwxPiB7Ci0gICAgICAgICAgICB0eXBlZGVmIG1zdmNfdHlwZWlkX3dyYXBwZXI8MT4gdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgLy9Xb3JrYXJvdW5kIGZvciBFVEktYnVnIGZvciBWQzcuMQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3R5cGVpZF93cmFwcGVyPDQ+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgbXN2Y190eXBlaWRfd3JhcHBlcjw0PiB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIC8vVGllIGl0IGFsbCB0b2dldGhlcgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgZW5jb2RlX3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgLy9HZXQgdGhlIG5leHQgYXZhaWxhYmxlIGNvbXBpbGUgdGltZSBjb25zdGFudHMgaW5kZXgKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT1ORE5CT09TVF9UWVBFT0ZfSU5ERVgoVCkpOwotICAgICAgICAgICAgLy9JbnN0YW50aWF0ZSB0aGUgdGVtcGxhdGUKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19yZWdpc3Rlcl90eXBlPFQsbXBsOjppbnRfPHZhbHVlPiA+OjppZDJ0eXBlIHR5cGU7Ci0gICAgICAgICAgICAvL1NldCB0aGUgbmV4dCBjb21waWxlIHRpbWUgY29uc3RhbnRzIGluZGV4Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsbmV4dD12YWx1ZSsxKTsKLSAgICAgICAgICAgIC8vSW5jcmVtZW50IHRoZSBjb21waWxlIHRpbWUgY29uc3RhbnQgKG9ubHkgbmVlZGVkIHdoZW4gZXh0ZW5zaW9ucyBhcmUgbm90IGFjdGl2ZQotICAgICAgICAgICAgTkROQk9PU1RfVFlQRU9GX05FWFRfSU5ERVgobmV4dCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0IHNpemVyCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhcigqdHlwZSlbZW5jb2RlX3R5cGU8VD46OnZhbHVlXTsKLSAgICAgICAgfTsKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD49MTMxMCkKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUgZGlzYWJsZV9pZjwKLSAgICAgICAgICAgIHR5cGVuYW1lIGlzX2Z1bmN0aW9uPFQ+Ojp0eXBlLAotICAgICAgICAgICAgdHlwZW5hbWUgc2l6ZXI8VD46OnR5cGU+Ojp0eXBlIGVuY29kZV9zdGFydChUIGNvbnN0Jik7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUgZW5hYmxlX2lmPAotICAgICAgICAgICAgdHlwZW5hbWUgaXNfZnVuY3Rpb248VD46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSBzaXplcjxUPjo6dHlwZT46OnR5cGUgZW5jb2RlX3N0YXJ0KFQmKTsKLSMgZWxzZQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgdHlwZW5hbWUgc2l6ZXI8VD46OnR5cGUgZW5jb2RlX3N0YXJ0KFQgY29uc3QmKTsKLSMgZW5kaWYKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3JnYW5pemVyLCB0eXBlbmFtZSBUPgotICAgICAgICBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxPcmdhbml6ZXI+IHR5cGVvZl9yZWdpc3Rlcl90eXBlKGNvbnN0IFQmLE9yZ2FuaXplciogPTApOwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0YoZXhwcikgXAotICAgIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX3R5cGVpZF93cmFwcGVyPHNpemVvZigqbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9zdGFydChleHByKSk+Ojp0eXBlCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UUEwoZXhwcikgdHlwZW5hbWUgTkROQk9PU1RfVFlQRU9GKGV4cHIpCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9UUEwobmFtZSxleHByKSBcCi0gICAgc3RydWN0IG5hbWUge1wKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxfdHlwZW9mX3JlZ2lzdGVyX3ZhbHVlPXNpemVvZihuZG5ib29zdDo6dHlwZV9vZjo6dHlwZW9mX3JlZ2lzdGVyX3R5cGU8bmFtZT4oZXhwcikpKTtcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfZXh0cmFjdF90eXBlPG5hbWU+OjppZDJ0eXBlIGlkMnR5cGU7XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlkMnR5cGU6OnR5cGUgdHlwZTtcCi0gICAgfTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGKG5hbWUsZXhwcikgXAotICAgIHN0cnVjdCBuYW1lIHtcCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsX3R5cGVvZl9yZWdpc3Rlcl92YWx1ZT1zaXplb2YobmRuYm9vc3Q6OnR5cGVfb2Y6OnR5cGVvZl9yZWdpc3Rlcl90eXBlPG5hbWU+KGV4cHIpKSk7XAotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX2V4dHJhY3RfdHlwZTxuYW1lPjo6aWQydHlwZSBpZDJ0eXBlO1wKLSAgICAgICAgdHlwZWRlZiBpZDJ0eXBlOjp0eXBlIHR5cGU7XAotICAgIH07Ci0KLSNlbmRpZgotICAgIH0KLX0KLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfTVNWQ19UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL25hdGl2ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9uYXRpdmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODhiNDE5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL25hdGl2ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDYgQXJrYWRpeSBWZXJ0bGV5YgotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRV9IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBNU1ZDX1RZUEVPRl9IQUNLCi0KLSNpZmRlZiBORE5CT09TVF9OT19TRklOQUUKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gCi0gICAgICAgIFQmIGVuc3VyZV9vYmooY29uc3QgVCYpOwotCi19fQotCi0jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPiAKLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSMgaWZkZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gCi0gICAgVCYgZW5zdXJlX29iaihjb25zdCBUJik7Ci0jIGVsc2UKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICB0eXBlbmFtZSBlbmFibGVfaWY8aXNfZnVuY3Rpb248VD4sIFQmPjo6dHlwZQotICAgICAgICBlbnN1cmVfb2JqKFQmKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHR5cGVuYW1lIGRpc2FibGVfaWY8aXNfZnVuY3Rpb248VD4sIFQmPjo6dHlwZQotICAgICAgICBlbnN1cmVfb2JqKGNvbnN0IFQmKTsKLSMgZW5kaWYKLX19Ci0KLSNlbmRpZi8vTkROQk9PU1RfTk9fU0ZJTkFFCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GKGV4cHIpIE5ETkJPT1NUX1RZUEVPRl9LRVlXT1JEKG5kbmJvb3N0Ojp0eXBlX29mOjplbnN1cmVfb2JqKGV4cHIpKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFBMIE5ETkJPT1NUX1RZUEVPRgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9UUEwobmFtZSxleHByKSBcCi0gICAgc3RydWN0IG5hbWUge1wKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfVFBMKGV4cHIpIHR5cGU7XAotICAgIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGKG5hbWUsZXhwcikgXAotICAgIHN0cnVjdCBuYW1lIHtcCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GKGV4cHIpIHR5cGU7XAotICAgIH07Ci0KLSNlbmRpZi8vTVNWQ19UWVBFT0ZfSEFDSwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHgpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURSh4LCBwYXJhbXMpCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX05BVElWRV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcG9pbnRlcnNfZGF0YV9tZW1iZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3BvaW50ZXJzX2RhdGFfbWVtYmVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxODcyZDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcG9pbnRlcnNfZGF0YV9tZW1iZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfUE9JTlRFUlNfREFUQV9NRU1CRVJTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUE9JTlRFUlNfREFUQV9NRU1CRVJTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGVfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZS5ocHA+Ci0KLSNpbmNsdWRlIE5ETkJPT1NUX1RZUEVPRl9JTkNSRU1FTlRfUkVHSVNUUkFUSU9OX0dST1VQKCkKLQotTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUwotCi1lbnVtIHtQVFJfREFUQV9NRU1fSUQgPSBORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCl9OwotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBQMCwgY2xhc3MgUDE+Ci1zdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBQMCBQMTo6Kj4KLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKDIsIFBUUl9EQVRBX01FTV9JRCkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci1zdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8UFRSX0RBVEFfTUVNX0lEPiwgSXRlcj4KLXsKLSAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7Ci0gICAgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTVMoMikKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCB3b3JrYXJvdW5kewotICAgICAgICB0eXBlZGVmIHAwIFQ6OiogdHlwZTsKLSAgICB9OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8UFRSX0RBVEFfTUVNX0lEPiwgSXRlcj46OnRlbXBsYXRlIHdvcmthcm91bmQ8cDE+Ojp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyOwotfTsKLQotTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfUE9JTlRFUlNfREFUQV9NRU1CRVJTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmN0aW9ucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMjI5ZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfRlVOQ1RJT05TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfRlVOQ1RJT05TX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmdfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcD4KLQotI2luY2x1ZGUgTkROQk9PU1RfVFlQRU9GX0lOQ1JFTUVOVF9SRUdJU1RSQVRJT05fR1JPVVAoKQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkgMTAKLSNlbmRpZgotCi1lbnVtIAotewotICAgIEZVTl9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksCi0gICAgRlVOX1BUUl9JRCAgICAgICAgICAgICAgICAgICAgICA9IEZVTl9JRCArICAxICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgRlVOX1JFRl9JRCAgICAgICAgICAgICAgICAgICAgICA9IEZVTl9JRCArICAyICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgTUVNX0ZVTl9JRCAgICAgICAgICAgICAgICAgICAgICA9IEZVTl9JRCArICAzICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgQ09OU1RfTUVNX0ZVTl9JRCAgICAgICAgICAgICAgICA9IEZVTl9JRCArICA0ICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgVk9MQVRJTEVfTUVNX0ZVTl9JRCAgICAgICAgICAgICA9IEZVTl9JRCArICA1ICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgVk9MQVRJTEVfQ09OU1RfTUVNX0ZVTl9JRCAgICAgICA9IEZVTl9JRCArICA2ICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgRlVOX1ZBUl9JRCAgICAgICAgICAgICAgICAgICAgICA9IEZVTl9JRCArICA3ICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgRlVOX1ZBUl9QVFJfSUQgICAgICAgICAgICAgICAgICA9IEZVTl9JRCArICA4ICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgRlVOX1ZBUl9SRUZfSUQgICAgICAgICAgICAgICAgICA9IEZVTl9JRCArICA5ICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgTUVNX0ZVTl9WQVJfSUQgICAgICAgICAgICAgICAgICA9IEZVTl9JRCArIDEwICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgQ09OU1RfTUVNX0ZVTl9WQVJfSUQgICAgICAgICAgICA9IEZVTl9JRCArIDExICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgVk9MQVRJTEVfTUVNX0ZVTl9WQVJfSUQgICAgICAgICA9IEZVTl9JRCArIDEyICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSksCi0gICAgVk9MQVRJTEVfQ09OU1RfTUVNX0ZVTl9WQVJfSUQgICA9IEZVTl9JRCArIDEzICogTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSkKLX07Ci0KLU5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlMKLQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUyAoMCwgTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRklMRU5BTUVfMSA8bmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmN0aW9uc19pdGVyYXRlLmhwcD4KLSMgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfRlVOQ1RJT05TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zX2l0ZXJhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zX2l0ZXJhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjQ4N2E5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmN0aW9uc19pdGVyYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZV9wYXJhbXMuaHBwPgotCi0jZGVmaW5lIG4gTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkKLQotLy8gZnVuY3Rpb24gcG9pbnRlcnMKLQotdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4KLXN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFIoKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCkpPgotewotICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobiksIEZVTl9QVFJfSUQgKyBuKSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4KLXN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFIoKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCkgLi4uKT4KLXsKLSAgICB0eXBlZGVmIFIgTkROQk9PU1RfUFBfQ0FUKFAsIG4pOwotICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCBGVU5fVkFSX1BUUl9JRCArIG4pIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBJdGVyPgotc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEZVTl9QVFJfSUQgKyBuPiwgSXRlcj4KLXsKLSAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7Ci0gICAgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pKQotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHAsIG4pKCp0eXBlKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSk7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKSBpdGVyOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLXN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxGVU5fVkFSX1BUUl9JRCArIG4+LCBJdGVyPgotewotICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobikpCi0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikoKnR5cGUpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApIC4uLik7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKSBpdGVyOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTk9fRlVOQ1RJT05fVFlQRVMKLQotICAgIC8vIGZ1bmN0aW9uIHJlZmVyZW5jZXMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgY2xhc3MgUCk+Ci0gICAgc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUigmKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSk+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFIgTkROQk9PU1RfUFBfQ0FUKFAsIG4pOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSwgRlVOX1JFRl9JRCArIG4pIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgY2xhc3MgUCk+Ci0gICAgc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUigmKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSAuLi4pPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBSIE5ETkJPT1NUX1BQX0NBVChQLCBuKTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobiksIEZVTl9WQVJfUkVGX0lEICsgbikgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8RlVOX1JFRl9JRCArIG4+LCBJdGVyPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgICAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobikpCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHAsIG4pKCZ0eXBlKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSk7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0lOQyhuKSkgaXRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8RlVOX1ZBUl9SRUZfSUQgKyBuPiwgSXRlcj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pKQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChwLCBuKSgmdHlwZSkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgcCkgLi4uKTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKSBpdGVyOwotICAgIH07Ci0KLSAgICAvLyBmdW5jdGlvbnMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgY2xhc3MgUCk+Ci0gICAgc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSk+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFIgTkROQk9PU1RfUFBfQ0FUKFAsIG4pOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSwgRlVOX0lEICsgbikgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4KLSAgICBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBSKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApIC4uLik+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFIgTkROQk9PU1RfUFBfQ0FUKFAsIG4pOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSwgRlVOX1ZBUl9JRCArIG4pIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci0gICAgc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEZVTl9JRCArIG4+LCBJdGVyPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgICAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobikpCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHAsIG4pKHR5cGUpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApKTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKSBpdGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxGVU5fVkFSX0lEICsgbj4sIEl0ZXI+Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7Ci0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSkKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikodHlwZSkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgcCkgLi4uKTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKSBpdGVyOwotICAgIH07Ci0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX05PX0ZVTkNUSU9OX1RZUEVTCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05PX01FTUJFUl9GVU5DVElPTl9UWVBFUwotLy8gbWVtYmVyIGZ1bmN0aW9ucwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9xdWFsaWZpZXIKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2lkIE1FTV9GVU5fSUQKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfbWVtX2Z1bmN0aW9ucy5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3F1YWxpZmllciBjb25zdAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfaWQgQ09OU1RfTUVNX0ZVTl9JRAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9tZW1fZnVuY3Rpb25zLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfcXVhbGlmaWVyIHZvbGF0aWxlCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9pZCBWT0xBVElMRV9NRU1fRlVOX0lECi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX21lbV9mdW5jdGlvbnMuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9xdWFsaWZpZXIgdm9sYXRpbGUgY29uc3QKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2lkIFZPTEFUSUxFX0NPTlNUX01FTV9GVU5fSUQKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfbWVtX2Z1bmN0aW9ucy5ocHA+Ci0KLSN1bmRlZiBuCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmRhbWVudGFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmRhbWVudGFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU3MmVmMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5kYW1lbnRhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9GVU5EQU1FTlRBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0ZVTkRBTUVOVEFMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3R5cGVvZi5ocHA+Ci0KLSNpbmNsdWRlIE5ETkJPT1NUX1RZUEVPRl9JTkNSRU1FTlRfUkVHSVNUUkFUSU9OX0dST1VQKCkKLQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgY2hhcikKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHVuc2lnbmVkIHNob3J0KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgaW50KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgbG9uZykKLQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoc2lnbmVkIGNoYXIpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShzaWduZWQgc2hvcnQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShzaWduZWQgaW50KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoc2lnbmVkIGxvbmcpCi0KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKGJvb2wpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShjaGFyKQotCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShmbG9hdCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKGRvdWJsZSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKGxvbmcgZG91YmxlKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0vLyBJZiB0aGUgZm9sbG93aW5nIGxpbmUgZmFpbHMgdG8gY29tcGlsZSBhbmQgeW91J3JlIHVzaW5nIHRoZSBJbnRlbAotLy8gY29tcGlsZXIsIHNlZSBodHRwOi8vbGlzdHMuYm9vc3Qub3JnL01haWxBcmNoaXZlcy9ib29zdC11c2Vycy9tc2cwNjU2Ny5waHAsCi0vLyBhbmQgZGVmaW5lIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UIG9uIHRoZSBjb21tYW5kIGxpbmUuCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh3Y2hhcl90KQotI2VuZGlmCi0KLSNpZiAoZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA9PSAxMjAwKSkgXAotICAgIHx8IChkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gPD0gNjAwKSkgXAotICAgIHx8IChkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA9PSAweDYwMCkgJiYgKF9NU0NfVkVSID09IDEyMDApKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgX19pbnQ4KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoX19pbnQ4KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgX19pbnQxNikKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKF9faW50MTYpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBfX2ludDMyKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoX19pbnQzMikKLSNpZmRlZiBfX0JPUkxBTkRDX18KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHVuc2lnbmVkIF9faW50NjQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShfX2ludDY0KQotI2VuZGlmCi0jZW5kaWYKLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSg6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSg6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSkKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgX19pbnQ2NCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKF9faW50NjQpCi0jZW5kaWYKLQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodm9pZCkKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfRlVOREFNRU5UQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9tZW1fZnVuY3Rpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX21lbV9mdW5jdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWRlOGMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX21lbV9mdW5jdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGVfcGFyYW1zLmhwcD4KLQotLy8gbWVtYmVyIGZ1bmN0aW9ucwotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBULCBjbGFzcyBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPiAKLXN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFIoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCkpIE5ETkJPT1NUX1RZUEVPRl9xdWFsaWZpZXI+Ci17Ci0gICAgdHlwZWRlZiBSIE5ETkJPT1NUX1BQX0NBVChQLCBuKTsKLSAgICB0eXBlZGVmIFQgTkROQk9PU1RfUFBfQ0FUKFAsIE5ETkJPT1NUX1BQX0lOQyhuKSk7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUyhORE5CT09TVF9QUF9BREQobiwgMiksIE5ETkJPT1NUX1RZUEVPRl9pZCArIG4pIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBJdGVyPgotc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PE5ETkJPT1NUX1RZUEVPRl9pZCArIG4+LCBJdGVyPgotewotICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUyhORE5CT09TVF9QUF9BREQobiwgMikpCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHdvcmthcm91bmR7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHAsIG4pKFQ6Oip0eXBlKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSkgTkROQk9PU1RfVFlQRU9GX3F1YWxpZmllcjsKLSAgICB9OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgd29ya2Fyb3VuZDxORE5CT09TVF9QUF9DQVQocCwgTkROQk9PU1RfUFBfSU5DKG4pKT46OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9BREQobiwgMikpIGl0ZXI7Ci19OwotCi0vLyB1bmRlZiBwYXJhbWV0ZXJzCi0KLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfaWQKLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfcXVhbGlmaWVyCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90ZW1wbGF0ZV9lbmNvZGluZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90ZW1wbGF0ZV9lbmNvZGluZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyYTBmZTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfZW5jb2RpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX0VOQ09ESU5HX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfRU5DT0RJTkdfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvaXNfdW5hcnkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS90cmFuc2Zvcm0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2hfaS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9jYXQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9pbnRfZW5jb2RpbmcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3R5cGVfdGVtcGxhdGVfcGFyYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9pbnRlZ3JhbF90ZW1wbGF0ZV9wYXJhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX3RlbXBsYXRlX3BhcmFtLmhwcD4KLQotI2lmZGVmIF9fQk9STEFORENfXwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUVVBTElGWShQKSBzZWxmX3Q6OlAKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9RVUFMSUZZKFApIFAKLSNlbmRpZgotLy8gVGhlIHRlbXBsYXRlIHBhcmFtZXRlciBkZXNjcmlwdGlvbiwgZW50ZXJlZCBieSB0aGUgdXNlciwKLS8vIGlzIGNvbnZlcnRlZCBpbnRvIGEgcG9seW1vcnBoaWMgIm9iamVjdCIKLS8vIHRoYXQgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY29kZSByZXNwb25zaWJsZSBmb3IKLS8vIGVuY29kaW5nL2RlY29kaW5nIHRoZSBwYXJhbWV0ZXIsIGV0Yy4KLQotLy8gbWFrZSBzdXJlIHRvIGNhdCB0aGUgc2VxdWVuY2UgZmlyc3QsIGFuZCBvbmx5IHRoZW4gYWRkIHRoZSBwcmVmaXguCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSihlbGVtKSBORE5CT09TVF9QUF9DQVQoXAotICAgIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSixcCi0gICAgTkROQk9PU1RfUFBfU0VRX0NBVCgoXykgTkROQk9PU1RfVFlQRU9GX1RPX1NFUShlbGVtKSlcCi0gICAgKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UT19TRVEodG9rZW5zKSBORE5CT09TVF9UWVBFT0ZfICMjIHRva2VucyAjIyBfTkROQk9PU1RfVFlQRU9GCi0KLS8vIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9FWFBMSUNJVF9JRChOYW1lLCBQYXJhbXMsIElkKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfSU1QTChcCi0gICAgICAgIE5hbWUsXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpTKE5ETkJPT1NUX1RZUEVPRl9UT1NFUShQYXJhbXMpKSxcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX1RZUEVPRl9UT1NFUShQYXJhbXMpKSxcCi0gICAgICAgIElkKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShOYW1lLCBQYXJhbXMpXAotICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9FWFBMSUNJVF9JRChOYW1lLCBQYXJhbXMsIE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfT0JKRUNUX01BS0VSKHMsIGRhdGEsIGVsZW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSihlbGVtKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSlMoUGFyYW1zKVwKLSAgICBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNKE5ETkJPT1NUX1RZUEVPRl9PQkpFQ1RfTUFLRVIsIH4sIFBhcmFtcykKLQotLy8gQXMgc3VnZ2VzdGVkIGJ5IFBhdWwgTWVuc29uaWRlczoKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVE9TRVEoeClcCi0gICAgTkROQk9PU1RfUFBfSUlGKFwKLSAgICAgICAgTkROQk9PU1RfUFBfSVNfVU5BUlkoeCksXAotICAgICAgICB4IE5ETkJPT1NUX1BQX1RVUExFX0VBVCgzKSwgTkROQk9PU1RfUFBfUkVQRUFUXAotICAgICkoeCwgTkROQk9PU1RfVFlQRU9GX1RPU0VRXzIsIH4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RPU0VRXzIoeiwgbiwgXykgKGNsYXNzKQotCi0vLyBORE5CT09TVF9UWVBFT0ZfVklSVFVBTAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9DQVRfNChhLCBiLCBjLCBkKSBORE5CT09TVF9UWVBFT0ZfQ0FUXzRfSShhLCBiLCBjLCBkKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfQ0FUXzRfSShhLCBiLCBjLCBkKSBhICMjIGIgIyMgYyAjIyBkCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoRnVuLCBPYmopXAotICAgIE5ETkJPT1NUX1RZUEVPRl9DQVRfNChORE5CT09TVF9UWVBFT0ZfLCBORE5CT09TVF9QUF9TRVFfSEVBRChPYmopLCBfLCBGdW4pCi0KLS8vIE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTVtfVFJBSUxJTkddW18xXQotLy8gVHdvIHZlcnNpb25zIHByb3ZpZGVkIGR1ZSB0byByZWVudHJhbmN5IGlzc3VlCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1NFUV9FWFBBTkRfRUxFTUVOVCh6LG4sc2VxKVwKLSAgIE5ETkJPT1NUX1BQX1NFUV9FTEVNKDAsc2VxKSAoeixuLE5ETkJPT1NUX1BQX1NFUV9FTEVNKG4sTkROQk9PU1RfUFBfU0VRX0VMRU0oMSxzZXEpKSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oc2VxLG1hY3JvKVwKLSAgICBORE5CT09TVF9QUF9FTlVNKE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSksTkROQk9PU1RfVFlQRU9GX1NFUV9FWFBBTkRfRUxFTUVOVCwobWFjcm8pKHNlcSkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNX1RSQUlMSU5HKHNlcSxtYWNybylcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9TRVFfU0laRShzZXEpLE5ETkJPT1NUX1RZUEVPRl9TRVFfRVhQQU5EX0VMRU1FTlQsKG1hY3JvKShzZXEpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9TRVFfRVhQQU5EX0VMRU1FTlRfMSh6LG4sc2VxKVwKLSAgICBORE5CT09TVF9QUF9TRVFfRUxFTSgwLHNlcSkgKHosbixORE5CT09TVF9QUF9TRVFfRUxFTShuLE5ETkJPT1NUX1BQX1NFUV9FTEVNKDEsc2VxKSkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNXzEoc2VxLG1hY3JvKVwKLSAgICBORE5CT09TVF9QUF9FTlVNKE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSksTkROQk9PU1RfVFlQRU9GX1NFUV9FWFBBTkRfRUxFTUVOVF8xLChtYWNybykoc2VxKSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1fVFJBSUxJTkdfMShzZXEsbWFjcm8pXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcoTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSxORE5CT09TVF9UWVBFT0ZfU0VRX0VYUEFORF9FTEVNRU5UXzEsKG1hY3JvKShzZXEpKQotCi0vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUih6LCBuLCBlbGVtKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChQTEFDRUhPTERFUiwgZWxlbSkoZWxlbSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUExBQ0VIT0xERVJfVFlQRVMoeiwgbiwgZWxlbSlcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoUExBQ0VIT0xERVJfVFlQRVMsIGVsZW0pKGVsZW0sIG4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0VOQ09ERV9QQVJBTShyLCBkYXRhLCBuLCBlbGVtKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChFTkNPREUsIGVsZW0pKGVsZW0sIG4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0RFQ09ERV9QQVJBTShyLCBkYXRhLCBuLCBlbGVtKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChERUNPREUsIGVsZW0pKGVsZW0sIG4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX1BBUkFNX1BBSVIoeiwgbiwgZWxlbSkgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKEVYUEFORFRZUEUsIGVsZW0pKGVsZW0pIE5ETkJPT1NUX1BQX0NBVChQLCBuKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUZBVUxUX1RFTVBMQVRFX1RZUEUoTmFtZSxQYXJhbXMsSUQpXAotICAgIE5hbWU8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksIFApID4KLQotLy9TaW5jZSB3ZSBhcmUgY3JlYXRpbmcgYW4gaW50ZXJuYWwgZGVjb2RlIHN0cnVjdCwgd2UgbmVlZCB0byB1c2UgZGlmZmVyZW50IHRlbXBsYXRlIG5hbWVzLCBUIGluc3RlYWQgb2YgUC4KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ09ERVJfVFlQRV9QQVJBTV9QQUlSKHosbixlbGVtKSBcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoRVhQQU5EVFlQRSwgZWxlbSkoZWxlbSkgTkROQk9PU1RfUFBfQ0FUKFQsIG4pCi0KLS8vRGVmYXVsdCB0ZW1wbGF0ZSBwYXJhbSBkZWNvZGluZwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFREVGX0RFQ09ERURfVEVNUExBVEVfVFlQRShOYW1lLFBhcmFtcylcCi0gICAgdHlwZWRlZiBOYW1lPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksTkROQk9PU1RfVFlQRU9GX1FVQUxJRlkoUCkpPiB0eXBlOwotCi0vL0JyYW5jaCB0aGUgZGVjb2RpbmcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfREVDT0RFRF9UWVBFKE5hbWUsUGFyYW1zKVwKLSAgICBORE5CT09TVF9QUF9JRihORE5CT09TVF9UWVBFT0ZfSEFTX1RFTVBMQVRFUyhQYXJhbXMpLFwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfREVDT0RFRF9URU1QTEFURV9URU1QTEFURV9UWVBFLFwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfREVDT0RFRF9URU1QTEFURV9UWVBFKShOYW1lLFBhcmFtcykKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfSU1QTChOYW1lLCBQYXJhbXMsIFNpemUsIElEKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TXAotICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9URU1QTEFURV9JTVBMKE5hbWUsIFBhcmFtcywgSUQpXAotICAgIHRlbXBsYXRlPGNsYXNzIFZcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTV9UUkFJTElORyhQYXJhbXMsIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9QQVJBTV9QQUlSKVwKLSAgICA+XAotICAgIHN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIE5hbWU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoU2l6ZSwgUCk+ID5cCi0gICAge1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6cHVzaF9iYWNrPFYsIG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4gPjo6dHlwZSBWMDtcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9FTkNPREVfUEFSQU0sIH4sIFBhcmFtcylcCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKFYsIFNpemUpIHR5cGU7XAotICAgIH07XAotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+XAotICAgIHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4sIEl0ZXI+XAotICAgIHtcCi0gICAgICAgIHR5cGVkZWYgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+LCBJdGVyPiBzZWxmX3Q7XAotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4gc2VsZl9pZDtcCi0gICAgICAgIHR5cGVkZWYgSXRlciBpdGVyMDtcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9ERUNPREVfUEFSQU0sIH4sIFBhcmFtcylcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9UWVBFREVGX0RFQ09ERURfVFlQRShOYW1lLCBQYXJhbXMpXAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBTaXplKSBpdGVyO1wKLSAgICB9O1wKLSAgICBORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9FTkNPRElOR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX3RlbXBsYXRlX3BhcmFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX3RlbXBsYXRlX3BhcmFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA4MDJiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IFBlZGVyIEhvbHQKLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfVEVNUExBVEVfUEFSQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZvbGRfbGVmdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbnVtLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfdGVtcGxhdGUoeCkgICBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU0oeCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFKFgpIHRlbXBsYXRlKFgpIE5ETkJPT1NUX1RZUEVPRl9FQVQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3RlbXBsYXRlKFgpICh0ZW1wbGF0ZShYKSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU0oUGFyYW1zKVwKLSAgICAoVEVNUExBVEVfUEFSQU0pXAotICAgIChQYXJhbXMpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0dFVFBBUkFNUyhUaGlzKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfVE9TRVEoTkROQk9PU1RfUFBfU0VRX0VMRU0oMSwgVGhpcykpCi0KLS8vRW5jb2RlIC8gZGVjb2RlIHRoaXMKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0VOQ09ERShUaGlzLCBuKVwKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV90ZW1wbGF0ZTxORE5CT09TVF9QUF9DQVQoViwgbiksXAotICAgICAgIE5ETkJPT1NUX1BQX0NBVChQLCBuKTxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKUyhORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fR0VUUEFSQU1TKFRoaXMpKSxORE5CT09TVF9UWVBFT0ZfUExBQ0VIT0xERVIpID5cCi0gICA+Ojp0eXBlIE5ETkJPT1NUX1BQX0NBVChWLCBORE5CT09TVF9QUF9JTkMobikpOwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9ERUNPREUoVGhpcywgbilcCi0gICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfdGVtcGxhdGU8IE5ETkJPT1NUX1BQX0NBVChpdGVyLCBuKSA+IE5ETkJPT1NUX1BQX0NBVChkLCBuKTtcCi0gICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChkLCBuKTo6dHlwZSBORE5CT09TVF9QUF9DQVQoUCwgbik7XAotICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoZCwgbik6Oml0ZXIgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfUFBfSU5DKG4pKTsKLQotLy8gdGVtcGxhdGU8Y2xhc3MsIHVuc2lnbmVkIGludCwgLi4uPiBjbGFzcwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fRVhQQU5EVFlQRShUaGlzKSBcCi0gICAgdGVtcGxhdGUgPE5ETkJPT1NUX1BQX1NFUV9FTlVNKE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9HRVRQQVJBTVMoVGhpcykpID4gY2xhc3MKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fUExBQ0VIT0xERVIoUGFyYW0pXAotICAgIE5lc3RlZF9UZW1wbGF0ZV9UZW1wbGF0ZV9Bcmd1bWVudHNfTm90X1N1cHBvcnRlZAotCi0vLyd0ZW1wbGF0ZTxjbGFzcyxpbnQ+IGNsYXNzJyBpcyByZWR1Y2VkIHRvICdjbGFzcycKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0RFQ0xBUkFUSU9OX1RZUEUoUGFyYW0pIGNsYXNzCi0KLS8vIFQzPGludCwgKHVuc2lnbmVkIGludCkwLCAuLi4+Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9QTEFDRUhPTERFUl9UWVBFUyhQYXJhbSwgbilcCi0gICAgTkROQk9PU1RfUFBfQ0FUKFQsbik8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNXzEoTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKUyhORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fR0VUUEFSQU1TKFBhcmFtKSksTkROQk9PU1RfVFlQRU9GX1BMQUNFSE9MREVSKSA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0lTVEVNUExBVEUgMQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBtb3ZlIHRvIGVuY29kZV9kZWNvZGU/Ci0KLU5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlMKLQotdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVHlwZV9Ob3RfUmVnaXN0ZXJlZF9XaXRoX1R5cGVvZl9TeXN0ZW0+IHN0cnVjdCBlbmNvZGVfdGVtcGxhdGVfaW1wbDsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEl0ZXI+IHN0cnVjdCBkZWNvZGVfdGVtcGxhdGVfaW1wbDsKLQotTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4gc3RydWN0IGVuY29kZV90ZW1wbGF0ZQotICAgICAgICA6IE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfTlNfUVVBTElGSUVSOjplbmNvZGVfdGVtcGxhdGVfaW1wbDxWLCBUPgotICAgIHt9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4gc3RydWN0IGRlY29kZV90ZW1wbGF0ZQotICAgICAgICA6IE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfTlNfUVVBTElGSUVSOjpkZWNvZGVfdGVtcGxhdGVfaW1wbDx0eXBlbmFtZSBJdGVyOjp0eXBlLCB0eXBlbmFtZSBJdGVyOjpuZXh0PgotICAgIHt9OwotfX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gbW92ZSB0byB0ZW1wbGF0ZV9lbmNvZGluZy5ocHA/Ci0KLS8vVGVtcGxhdGUgdGVtcGxhdGUgcmVnaXN0cmF0aW9uCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFX0ZPUl9URU1QTEFURV9URU1QTEFURShOYW1lLFBhcmFtcyxJRClcCi0gICAgdGVtcGxhdGU8Y2xhc3MgVlwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNX1RSQUlMSU5HKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfUEFSQU1fUEFJUilcCi0gICAgPlwKLSAgICBzdHJ1Y3QgZW5jb2RlX3RlbXBsYXRlX2ltcGw8VixOYW1lPFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoXAotICAgICAgICBORE5CT09TVF9QUF9TRVFfU0laRShQYXJhbXMpLFwKLSAgICAgICAgUCk+ID5cCi0gICAgICAgIDogbmRuYm9vc3Q6OnR5cGVfb2Y6OnB1c2hfYmFjazxWLCBuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+ID5cCi0gICAge1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPiBzdHJ1Y3QgZGVjb2RlX3RlbXBsYXRlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiwgSXRlcj5cCi0gICAge1wKLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUKE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfSU5UX1BOLF8pXAotICAgICAgICB0eXBlZGVmIE5hbWU8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUExBQ0VIT0xERVIpID4gdHlwZTtcCi0gICAgICAgIHR5cGVkZWYgSXRlciBpdGVyO1wKLSAgICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFREVGX0lOVF9QTih6LG4sUGFyYW1zKSB0eXBlZGVmIGludCBORE5CT09TVF9QUF9DQVQoUCxuKTsKLQotI2lmZGVmIF9fQk9STEFORENfXwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfREVDT0RFX05FU1RFRF9URU1QTEFURV9IRUxQRVJfTkFNRSBORE5CT09TVF9QUF9DQVQoXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKFwKLSAgICAgICAgICAgICAgICBkZWNvZGVfbmVzdGVkX3RlbXBsYXRlX2hlbHBlcixcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVFJBVElPTl9HUk9VUFwKLSAgICAgICAgICAgICksMHgxMDAwMFwKLSAgICAgICAgKSxfX0xJTkVfX1wKLSAgICApCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNPREVfTkVTVEVEX1RFTVBMQVRFX0hFTFBFUl9JTVBMKE5hbWUsUGFyYW1zLElEKVwKLSAgICBzdHJ1Y3QgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9ORVNURURfVEVNUExBVEVfSEVMUEVSX05BTUUge1wKLSAgICAgICAgdGVtcGxhdGU8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDTEFSRV9ERUNPREVSX1RZUEVfUEFSQU1fUEFJUikgPlwKLSAgICAgICAgc3RydWN0IGRlY29kZV9wYXJhbXM7XAotICAgICAgICB0ZW1wbGF0ZTxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNPREVSX1RZUEVfUEFSQU1fUEFJUikgPlwKLSAgICAgICAgc3RydWN0IGRlY29kZV9wYXJhbXM8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUExBQ0VIT0xERVJfVFlQRVMpID5cCi0gICAgICAgIHtcCi0gICAgICAgICAgICB0eXBlZGVmIE5hbWU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSxUKT4gdHlwZTtcCi0gICAgICAgIH07XAotICAgIH07Ci0vL1RlbXBsYXRlIHRlbXBsYXRlIHBhcmFtIGRlY29kaW5nCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFREVGX0RFQ09ERURfVEVNUExBVEVfVEVNUExBVEVfVFlQRShOYW1lLFBhcmFtcylcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9UWVBFT0ZfREVDT0RFX05FU1RFRF9URU1QTEFURV9IRUxQRVJfTkFNRTo6ZGVjb2RlX3BhcmFtczxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9TRVFfU0laRShQYXJhbXMpLFApPjo6dHlwZSB0eXBlOwotCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDT0RFX05FU1RFRF9URU1QTEFURV9IRUxQRVJfSU1QTChOYW1lLFBhcmFtcyxJRCkKLQotLy9UZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbSBkZWNvZGluZwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9ERUNPREVEX1RFTVBMQVRFX1RFTVBMQVRFX1RZUEUoTmFtZSxQYXJhbXMpXAotICAgIHRlbXBsYXRlPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShQYXJhbXMsTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ0xBUkVfREVDT0RFUl9UWVBFX1BBUkFNX1BBSVIpID5cCi0gICAgc3RydWN0IGRlY29kZV9wYXJhbXM7XAotICAgIHRlbXBsYXRlPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShQYXJhbXMsTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ09ERVJfVFlQRV9QQVJBTV9QQUlSKSA+XAotICAgIHN0cnVjdCBkZWNvZGVfcGFyYW1zPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShQYXJhbXMsTkROQk9PU1RfVFlQRU9GX1BMQUNFSE9MREVSX1RZUEVTKSA+XAotICAgIHtcCi0gICAgICAgIHR5cGVkZWYgTmFtZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9TRVFfU0laRShQYXJhbXMpLFQpPiB0eXBlO1wKLSAgICB9O1wKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRlY29kZV9wYXJhbXM8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSxQKT46OnR5cGUgdHlwZTsKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDTEFSRV9ERUNPREVSX1RZUEVfUEFSQU1fUEFJUih6LG4sZWxlbSkgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKERFQ0xBUkFUSU9OX1RZUEUsIGVsZW0pKGVsZW0pIE5ETkJPT1NUX1BQX0NBVChULCBuKQotCi0vLyBORE5CT09TVF9UWVBFT0ZfSEFTX1RFTVBMQVRFUwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSEFTX1RFTVBMQVRFUyhQYXJhbXMpXAotICAgIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQoTkROQk9PU1RfVFlQRU9GX0hBU19URU1QTEFURVNfT1AsIDAsIFBhcmFtcykKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSEFTX1RFTVBMQVRFU19PUChzLCBzdGF0ZSwgZWxlbSlcCi0gICAgTkROQk9PU1RfUFBfT1Ioc3RhdGUsIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKElTVEVNUExBVEUsIGVsZW0pKQotCi0vL0RlZmluZSB0ZW1wbGF0ZSB0ZW1wbGF0ZSBhcmd1bWVudHMKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX1RFTVBMQVRFX0lNUEwoTmFtZSxQYXJhbXMsSUQpXAotICAgIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1RZUEVPRl9IQVNfVEVNUExBVEVTKFBhcmFtcyksXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDT0RFX05FU1RFRF9URU1QTEFURV9IRUxQRVJfSU1QTCxcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFX0ZPUl9URU1QTEFURV9URU1QTEFURSkoTmFtZSxQYXJhbXMsSUQpCi0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVfZW5jb2RpbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZV9lbmNvZGluZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNTliZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZV9lbmNvZGluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1RZUEVfRU5DT0RJTkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX0VOQ09ESU5HX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFX0lNUEwoVCwgSWQpICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgVCA+ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIDogbmRuYm9vc3Q6OnR5cGVfb2Y6OnB1c2hfYmFjazxWLCBuZG5ib29zdDo6bXBsOjpzaXplX3Q8SWQ+ID4gICAgICAgICBcCi0gICAge307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4gc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElkPiwgSXRlcj4gXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIFQgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEVfRVhQTElDSVRfSUQoVHlwZSwgSWQpICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRV9JTVBMKFR5cGUsIElkKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKFR5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEVfRVhQTElDSVRfSUQoVHlwZSwgTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpKQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9UWVBFX0VOQ09ESU5HX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZV90ZW1wbGF0ZV9wYXJhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlX3RlbXBsYXRlX3BhcmFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFiYzQ1Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlX3RlbXBsYXRlX3BhcmFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVFlQRV9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfVEVNUExBVEVfUEFSQU1fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2NsYXNzX05ETkJPT1NUX1RZUEVPRiAoY2xhc3MpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl90eXBlbmFtZV9ORE5CT09TVF9UWVBFT0YgKHR5cGVuYW1lKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9jbGFzcyBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfdHlwZW5hbWUgTkROQk9PU1RfVFlQRU9GX1RZUEVfUEFSQU0KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTVwKLSAgICAoVFlQRV9QQVJBTSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTV9FWFBBTkRUWVBFKFBhcmFtKSBjbGFzcwotCi0vLyBUWVBFX1BBUkFNICJ2aXJ0dWFsIGZ1bmN0aW9ucyIgaW1wbGVtZW50YXRpb24KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTV9FTkNPREUoVGhpcywgbilcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3R5cGU8XAotICAgICAgICBORE5CT09TVF9QUF9DQVQoViwgbiksXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoUCwgbilcCi0gICAgPjo6dHlwZSBORE5CT09TVF9QUF9DQVQoViwgTkROQk9PU1RfUFBfSU5DKG4pKTsgCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfUEFSQU1fREVDT0RFKFRoaXMsIG4pXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90eXBlPCBORE5CT09TVF9QUF9DQVQoaXRlciwgbikgPiBORE5CT09TVF9QUF9DQVQoZCwgbik7XAotICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGQsIG4pOjp0eXBlIE5ETkJPT1NUX1BQX0NBVChQLCBuKTtcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoZCwgbik6Oml0ZXIgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0lOQyhuKSk7Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfUEFSQU1fUExBQ0VIT0xERVIoUGFyYW0pIGludAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTV9ERUNMQVJBVElPTl9UWVBFKFBhcmFtKSBjbGFzcwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTV9QTEFDRUhPTERFUl9UWVBFUyhQYXJhbSwgbikgTkROQk9PU1RfUFBfQ0FUKFQsbikKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfUEFSQU1fSVNURU1QTEFURSAwCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1RZUEVfVEVNUExBVEVfUEFSQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZW9mLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg0N2JhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVFlQRU9GX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRU9GX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UWVBFT0ZfQ09NUExJQU5UKQotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTikgJiYgZGVmaW5lZChORE5CT09TVF9UWVBFT0ZfTkFUSVZFKQotIyAgIGVycm9yIGJvdGggdHlwZW9mIGVtdWxhdGlvbiBhbmQgbmF0aXZlIG1vZGUgcmVxdWVzdGVkCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19DT01PX18pCi0jICAgaWZkZWYgX19HTlVHX18KLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGVuZGlmCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQgdHlwZW9mCi0jICAgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgZW5kaWYKLSMgICAgICAgZWxzZQotIyAgICAgICAgICAgZXJyb3IgbmF0aXZlIHR5cGVvZiBpcyBub3Qgc3VwcG9ydGVkCi0jICAgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fSUNMKSB8fCBkZWZpbmVkKF9fSUNDKSB8fCBkZWZpbmVkKF9fRUNDKQotIyAgIGlmZGVmIF9fR05VQ19fCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9LRVlXT1JEIF9fdHlwZW9mX18KLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICBlbHNlCi0jICAgICAgICAgICBlcnJvciBuYXRpdmUgdHlwZW9mIGlzIG5vdCBzdXBwb3J0ZWQKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICBlbmRpZgotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQgX190eXBlb2ZfXwotIyAgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19NV0VSS1NfXykKLSMgICBpZihfX01XRVJLU19fIDw9IDB4MzAwMykgIC8vIDgueAotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZW5kaWYKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCBfX3R5cGVvZl9fCi0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OX1VOU1VQUE9SVEVECi0jICAgICAgIGVuZGlmCi0jICAgZWxzZSAvLyA5LngKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGVuZGlmCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQgX190eXBlb2ZfXwotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkIF9fQ09ERUdFQVJDX18KLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT05fVU5TVVBQT1JURUQKLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OX1VOU1VQUE9SVEVECi0jICAgZW5kaWYKLSNlbGlmIGRlZmluZWQgX19CT1JMQU5EQ19fCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OX1VOU1VQUE9SVEVECi0jICAgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTl9VTlNVUFBPUlRFRAotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkIF9fRE1DX18KLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgZW5kaWYKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2RtYy90eXBlb2ZfaW1wbC5ocHA+Ci0jICAgICAgIGRlZmluZSBNU1ZDX1RZUEVPRl9IQUNLCi0jICAgZW5kaWYKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0jICAgaWYgKF9NU0NfVkVSIDw9IDEzMDApICAvLyA2LjUsIDcuMAotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZW5kaWYKLSMgICAgICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9tc3ZjL3R5cGVvZl9pbXBsLmhwcD4KLSMgICAgICAgICAgIGRlZmluZSBNU1ZDX1RZUEVPRl9IQUNLCi0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGVycm9yIHR5cGVvZiBlbXVsYXRpb24gaXMgbm90IHN1cHBvcnRlZAotIyAgICAgICBlbmRpZgotIyAgIGVsaWYgKF9NU0NfVkVSID49IDEzMTApICAvLyA3LjEgLT4KLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICAgICAgaWZuZGVmIF9NU0NfRVhURU5TSU9OUwotIyAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgICAgIGVsc2UKLSMgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgICBlbmRpZgotIyAgICAgICAgICAgZW5kaWYKLSMgICAgICAgZW5kaWYKLSMgICAgICAgaWZkZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL21zdmMvdHlwZW9mX2ltcGwuaHBwPgotIyAgICAgICAgICAgZGVmaW5lIE1TVkNfVFlQRU9GX0hBQ0sKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZChfX0hQX2FDQykKLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGVycm9yIG5hdGl2ZSB0eXBlb2YgaXMgbm90IHN1cHBvcnRlZAotIyAgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19ERUNDWFgpCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBlcnJvciBuYXRpdmUgdHlwZW9mIGlzIG5vdCBzdXBwb3J0ZWQKLSMgICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLSMgICBpZiAoX19CT1JMQU5EQ19fIDwgMHg1OTApCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTk9fRlVOQ1RJT05fVFlQRVMKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OT19NRU1CRVJfRlVOQ1RJT05fVFlQRVMKLSMgICBlbmRpZgotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgZXJyb3IgbmF0aXZlIHR5cGVvZiBpcyBub3Qgc3VwcG9ydGVkCi0jICAgZW5kaWYKLSNlbGlmIGRlZmluZWQoX19TVU5QUk9fQ0MpCi0jICAgaWYgKF9fU1VOUFJPX0NDIDwgMHg1OTAgKQotIyAgICAgaWZkZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgIGVycm9yIG5hdGl2ZSB0eXBlb2YgaXMgbm90IHN1cHBvcnRlZAotIyAgICAgZW5kaWYKLSMgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgIGVuZGlmCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9LRVlXT1JEIF9fdHlwZW9mX18KLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLSNlbHNlIC8vdW5rbm93biBjb21waWxlcgotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9LRVlXT1JECi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQgdHlwZW9mCi0jICAgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpXAotICAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNUUkFUSU9OX0dST1VQICogMHgxMDAwMCArIF9fTElORV9fCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOQ1JFTUVOVF9SRUdJU1RSQVRJT05fR1JPVVAoKVwKLSAgICAgPG5kbmJvb3N0L3R5cGVvZi9pbmNyX3JlZ2lzdHJhdGlvbl9ncm91cC5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OX1VOU1VQUE9SVEVECi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3Vuc3VwcG9ydGVkLmhwcD4KLSNlbGlmIGRlZmluZWQgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVYVCAidXNpbmcgdHlwZW9mIGVtdWxhdGlvbiIKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvbWVzc2FnZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3R5cGVvZl9pbXBsLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdHlwZV9lbmNvZGluZy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX2VuY29kaW5nLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvbW9kaWZpZXJzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvcG9pbnRlcnNfZGF0YV9tZW1iZXJzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuZGFtZW50YWwuaHBwPgotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URVhUICJ1c2luZyBuYXRpdmUgdHlwZW9mIgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9tZXNzYWdlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvbmF0aXZlLmhwcD4KLSNlbHNlCi0jICAgZXJyb3IgdHlwZW9mIGNvbmZpZ3VyYXRpb24gZXJyb3IKLSNlbmRpZgotCi0vLyBhdXRvCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE8oVmFyLCBFeHByKSBORE5CT09TVF9UWVBFT0YoRXhwcikgVmFyID0gRXhwcgotI2RlZmluZSBORE5CT09TVF9BVVRPX1RQTChWYXIsIEV4cHIpIE5ETkJPT1NUX1RZUEVPRl9UUEwoRXhwcikgVmFyID0gRXhwcgotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9UWVBFT0ZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlb2ZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlb2ZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZWMyOGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZW9mX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2l6ZV90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3ZlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVkVDVE9SKG4pIE5ETkJPT1NUX1BQX0NBVChuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yLCBuKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9zaXplcl9pdGVtKHosIG4sIF8pXAotICAgIGNoYXIgaXRlbSAjIyBuW1Y6Oml0ZW0gIyMgbiA6OnZhbHVlXTsKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFY+Ci0gICAgc3RydWN0IHNpemVyCi0gICAgewotICAgICAgICAvLyBjaGFyIGl0ZW0wW1Y6Oml0ZW0wOjp2YWx1ZV07Ci0gICAgICAgIC8vIGNoYXIgaXRlbTFbVjo6aXRlbTE6OnZhbHVlXTsKLSAgICAgICAgLy8gLi4uCi0KLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFLCBORE5CT09TVF9UWVBFT0Zfc2l6ZXJfaXRlbSwgfikKLSAgICB9OwotfX0KLQotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9zaXplcl9pdGVtCi0KLS8vCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0jIGlmZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+Ci0gICAgc2l6ZXI8dHlwZW5hbWUgZW5jb2RlX3R5cGU8ViwgVD46OnR5cGU+IGVuY29kZShjb25zdCBUJik7Ci0jIGVsc2UKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPgotICAgIHR5cGVuYW1lIGVuYWJsZV9pZjwKLSAgICAgICAgdHlwZW5hbWUgaXNfZnVuY3Rpb248VD46OnR5cGUsCi0gICAgICAgIHNpemVyPHR5cGVuYW1lIGVuY29kZV90eXBlPFYsIFQ+Ojp0eXBlPiA+Ojp0eXBlIGVuY29kZShUJik7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPgotICAgIHR5cGVuYW1lIGRpc2FibGVfaWY8Ci0gICAgICAgIHR5cGVuYW1lIGlzX2Z1bmN0aW9uPFQ+Ojp0eXBlLAotICAgICAgICBzaXplcjx0eXBlbmFtZSBlbmNvZGVfdHlwZTxWLCBUPjo6dHlwZT4gPjo6dHlwZSBlbmNvZGUoY29uc3QgVCYpOwotIyBlbmRpZgotfX0KLS8vCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPgotICAgIHN0cnVjdCBkZWNvZGVfYmVnaW4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVjb2RlX3R5cGU8dHlwZW5hbWUgVjo6YmVnaW4+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX19Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVJVEVNKHosIG4sIGV4cHIpXAotICAgIG5kbmJvb3N0OjptcGw6OnNpemVfdDxzaXplb2YobmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZTxORE5CT09TVF9UWVBFT0ZfVkVDVE9SKDApPD4gPihleHByKS5pdGVtICMjIG4pPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVEX1ZFQ1RPUihFeHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WRUNUT1IoTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUpPCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTShORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSwgTkROQk9PU1RfVFlQRU9GX1RZUEVJVEVNLCBFeHByKSBcCi0gICAgPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRihFeHByKVwKLSAgICBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX2JlZ2luPE5ETkJPT1NUX1RZUEVPRl9FTkNPREVEX1ZFQ1RPUihFeHByKSA+Ojp0eXBlCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RQTCB0eXBlbmFtZSBORE5CT09TVF9UWVBFT0YKLQotLy9vZmZzZXRfdmVjdG9yIGlzIHVzZWQgdG8gZGVsYXkgdGhlIGluc2VydGlvbiBvZiBkYXRhIGludG8gdGhlIHZlY3RvciBpbiBvcmRlciB0byBhbGxvdwotLy9lbmNvZGluZyB0byBiZSBkb25lIGluIG1hbnkgc3RlcHMKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWLHR5cGVuYW1lIE9mZnNldD4KLSAgICBzdHJ1Y3Qgb2Zmc2V0X3ZlY3RvciB7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsY2xhc3MgT2Zmc2V0LGNsYXNzIFQ+Ci0gICAgc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6b2Zmc2V0X3ZlY3RvcjxWLE9mZnNldD4sVD4gewotICAgICAgICB0eXBlZGVmIG9mZnNldF92ZWN0b3I8Vix0eXBlbmFtZSBPZmZzZXQ6OnByaW9yPiB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLGNsYXNzIFQ+Ci0gICAgc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6b2Zmc2V0X3ZlY3RvcjxWLG1wbDo6c2l6ZV90PDA+ID4sVD4gewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHB1c2hfYmFjazxWLFQ+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX19Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFSVRFTSh6LCBuLCBleHByKVwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LE5ETkJPT1NUX1BQX0NBVCh2YWx1ZSxuKSA9IHNpemVvZihuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlPF90eXBlb2Zfc3RhcnRfdmVjdG9yPihleHByKS5pdGVtICMjIG4pKTtcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpzaXplX3Q8TkROQk9PU1RfUFBfQ0FUKHNlbGZfdDo6dmFsdWUsbik+IE5ETkJPT1NUX1BQX0NBVChpdGVtLG4pOwotCi0jaWZkZWYgX19ETUNfXwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVJVEVNXzIoeixuLGV4cHIpXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb248aXRlcmF0aW9uPjo6TkROQk9PU1RfUFBfQ0FUKGl0ZW0sbikgTkROQk9PU1RfUFBfQ0FUKGl0ZW0sbik7Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0ZSQUNUSU9OVFlQRSgpXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVChORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSxORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVJVEVNXzIsXylcCi0gICAgdHlwZWRlZiBfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8UG9zPiBmcmFjdGlvbl90eXBlOwotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0ZSQUNUSU9OVFlQRSgpXAotICAgIHR5cGVkZWYgX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb248c2VsZl90OjppdGVyYXRpb24+IGZyYWN0aW9uX3R5cGU7Ci0jZW5kaWYKLQotI2lmZGVmIF9fQk9STEFORENfXwotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBvcyx0eXBlbmFtZSBJdGVyPgotICAgIHN0cnVjdCBnZW5lcmljX3R5cGVvZl9mcmFjdGlvbl9pdGVyIHsKLSAgICAgICAgdHlwZWRlZiBnZW5lcmljX3R5cGVvZl9mcmFjdGlvbl9pdGVyPFBvcyxJdGVyPiBzZWxmX3Q7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgcG9zPShQb3M6OnZhbHVlKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBpdGVyYXRpb249KHBvcy81KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCB3aGVyZT1wb3MlNTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyOjp0ZW1wbGF0ZSBfYXBwbHlfbmV4dDxzZWxmX3Q6Oml0ZXJhdGlvbj46OnR5cGUgZnJhY3Rpb25fdHlwZTsKLSAgICAgICAgdHlwZWRlZiBnZW5lcmljX3R5cGVvZl9mcmFjdGlvbl9pdGVyPHR5cGVuYW1lIFBvczo6bmV4dCxJdGVyPiBuZXh0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZfaXRlcjxmcmFjdGlvbl90eXBlLG1wbDo6aW50XzxzZWxmX3Q6OndoZXJlPiA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX19Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9JTVBMKGV4cHIpIFwKLSAgICAgICAgdGVtcGxhdGU8aW50IF9UeXBlb2ZfSXRlcmF0aW9uPlwKLSAgICAgICAgc3RydWN0IF90eXBlb2ZfZW5jb2RlX2ZyYWN0aW9uIHtcCi0gICAgICAgICAgICB0eXBlZGVmIF90eXBlb2ZfZW5jb2RlX2ZyYWN0aW9uPF9UeXBlb2ZfSXRlcmF0aW9uPiBzZWxmX3Q7XAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxfdHlwZW9mX2VuY29kZV9vZmZzZXQgPSAoX1R5cGVvZl9JdGVyYXRpb24qTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUpKTtcCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpvZmZzZXRfdmVjdG9yPE5ETkJPT1NUX1RZUEVPRl9WRUNUT1IoMCk8PixuZG5ib29zdDo6bXBsOjpzaXplX3Q8c2VsZl90OjpfdHlwZW9mX2VuY29kZV9vZmZzZXQ+ID4gX3R5cGVvZl9zdGFydF92ZWN0b3I7XAotICAgICAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFLE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRUlURU0sZXhwcilcCi0gICAgICAgICAgICB0ZW1wbGF0ZTxpbnQgTmV4dD5cCi0gICAgICAgICAgICBzdHJ1Y3QgX2FwcGx5X25leHQge1wKLSAgICAgICAgICAgICAgICB0eXBlZGVmIF90eXBlb2ZfZW5jb2RlX2ZyYWN0aW9uPE5leHQ+IHR5cGU7XAotICAgICAgICAgICAgfTtcCi0gICAgICAgIH07XAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQb3M+XAotICAgICAgICBzdHJ1Y3QgX3R5cGVvZl9mcmFjdGlvbl9pdGVyIHtcCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpnZW5lcmljX3R5cGVvZl9mcmFjdGlvbl9pdGVyPFBvcyxfdHlwZW9mX2VuY29kZV9mcmFjdGlvbjwwPiA+IHNlbGZfdDtcCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGZfdDo6bmV4dCBuZXh0O1wKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZl90Ojp0eXBlIHR5cGU7XAotICAgICAgICB9OwotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX0lNUEwoZXhwcikgXAotICAgICAgICB0ZW1wbGF0ZTxpbnQgX1R5cGVvZl9JdGVyYXRpb24+XAotICAgICAgICBzdHJ1Y3QgX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb24ge1wKLSAgICAgICAgICAgIHR5cGVkZWYgX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb248X1R5cGVvZl9JdGVyYXRpb24+IHNlbGZfdDtcCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LF90eXBlb2ZfZW5jb2RlX29mZnNldCA9IChfVHlwZW9mX0l0ZXJhdGlvbipORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSkpO1wKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6Om9mZnNldF92ZWN0b3I8TkROQk9PU1RfVFlQRU9GX1ZFQ1RPUigwKTw+LG5kbmJvb3N0OjptcGw6OnNpemVfdDxzZWxmX3Q6Ol90eXBlb2ZfZW5jb2RlX29mZnNldD4gPiBfdHlwZW9mX3N0YXJ0X3ZlY3RvcjtcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUsTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFSVRFTSxleHByKVwKLSAgICAgICAgfTtcCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBvcz5cCi0gICAgICAgIHN0cnVjdCBfdHlwZW9mX2ZyYWN0aW9uX2l0ZXIge1wKLSAgICAgICAgICAgIHR5cGVkZWYgX3R5cGVvZl9mcmFjdGlvbl9pdGVyPFBvcz4gc2VsZl90O1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQscG9zPShQb3M6OnZhbHVlKSk7XAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxpdGVyYXRpb249KHBvcy9ORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSkpO1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsd2hlcmU9cG9zJU5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKTtcCi0gICAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfRlJBQ1RJT05UWVBFKClcCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjp2X2l0ZXI8ZnJhY3Rpb25fdHlwZSxuZG5ib29zdDo6bXBsOjppbnRfPHNlbGZfdDo6d2hlcmU+ID46OnR5cGUgdHlwZTtcCi0gICAgICAgICAgICB0eXBlZGVmIF90eXBlb2ZfZnJhY3Rpb25faXRlcjx0eXBlbmFtZSBQb3M6Om5leHQ+IG5leHQ7XAotICAgICAgICB9OwotI2VuZGlmCi0jaWZkZWYgX19NV0VSS1NfXwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKSBcCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPlwKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoX3R5cGVvZl90ZW1wbGF0ZV8sbmFtZSkge1wKLSAgICBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfSU1QTChleHByKVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfdHlwZTxfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PDA+ID4gPjo6dHlwZSB0eXBlO1wKLX07XAotdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoX3R5cGVvZl90ZW1wbGF0ZV8sbmFtZSk8aW50PiBuYW1lOwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfVFBMKG5hbWUsZXhwcikgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGKG5hbWUsZXhwcikKLQotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9UUEwobmFtZSxleHByKSBcCi0gICAgc3RydWN0IG5hbWUge1wKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX0lNUEwoZXhwcilcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90eXBlPF90eXBlb2ZfZnJhY3Rpb25faXRlcjxuZG5ib29zdDo6bXBsOjpzaXplX3Q8MD4gPiA+Ojp0eXBlIHR5cGU7XAotICAgIH07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRihuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfSU1QTChleHByKVwKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3R5cGU8X3R5cGVvZl9mcmFjdGlvbl9pdGVyPG5kbmJvb3N0OjptcGw6OnNpemVfdDwwPiA+ID46OnR5cGUgdHlwZTtcCi0gICAgfTsKLSNlbmRpZgotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9DT01QTElBTlRfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi91bnN1cHBvcnRlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi91bnN1cHBvcnRlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExYjJhODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdW5zdXBwb3J0ZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDEwIFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9VTlNVUFBPUlRFRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1VOU1VQUE9SVEVEX0hQUF9JTkNMVURFRAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgc3RydWN0IHR5cGVvZl9lbXVsYXRpb25faXNfdW5zdXBwb3J0ZWRfb25fdGhpc19jb21waWxlciB7fTsKLX19Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GKGV4cHIpIG5kbmJvb3N0Ojp0eXBlX29mOjp0eXBlb2ZfZW11bGF0aW9uX2lzX3Vuc3VwcG9ydGVkX29uX3RoaXNfY29tcGlsZXIKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RQTCBORE5CT09TVF9UWVBFT0YKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfVFBMKG5hbWUsZXhwcikgXAotc3RydWN0IG5hbWUge1wKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9UUEwoZXhwcikgdHlwZTtcCi19OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRihuYW1lLGV4cHIpIFwKLXN0cnVjdCBuYW1lIHtcCi0gICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0YoZXhwcikgdHlwZTtcCi19OwotCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoeCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKHgsIHBhcmFtcykKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZiMWRmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNiBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1ZFQ1RPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vc2VsZi5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUKLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgNTAKLSNlbmRpZgotCi0vLwotLy8gVG8gcmVjcmVhdGUgdGhlIHByZXByb2Nlc3NlZCB2ZXJzaW9ucyBvZiB0aGlzIGZpbGUgcHJlcHJvY2VzcyBhbmQgcnVuCi0vLwotLy8gICAkKE5ETkJPT1NUX1JPT1QpL2xpYnMvdHlwZW9mL3Rvb2xzL3ByZXByb2Nlc3MucGwKLS8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RZUEVPRl9QUF9JTkNMVURFX0VYVEVSTkFMKQotCi0jICAgdW5kZWYgTkROQk9PU1RfVFlQRU9GX1BQX0lOQ0xVREVfRVhURVJOQUwKLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfVFlQRU9GX1BSRVBST0NFU1NJTkdfTU9ERSkgJiYgIU5ETkJPT1NUX1BQX0lTX1NFTEZJU0gKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JTkRJUkVDVF9TRUxGIDxuZG5ib29zdC90eXBlb2YvdmVjdG9yLmhwcD4KLSMgICBpZiAgIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFIDwgNTAKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLSMgICBlbGlmIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFIDwgMTAwCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdmVjdG9yNTAuaHBwPgotIyAgICAgZGVmaW5lICBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSA1MQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotIyAgIGVsaWYgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgPCAxNTAKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi92ZWN0b3IxMDAuaHBwPgotIyAgICAgZGVmaW5lICBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSAxMDEKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLSMgICBlbGlmIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFIDwgMjAwCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdmVjdG9yMTUwLmhwcD4KLSMgICAgIGRlZmluZSAgTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUgMTUxCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lOQ0xVREVfU0VMRigpCi0jICAgZWxpZiBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSA8PSAyNTAKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi92ZWN0b3IyMDAuaHBwPgotIyAgICAgZGVmaW5lICBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSAyMDEKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLSMgICBlbHNlCi0jICAgICBlcnJvciAiTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgdG9vIGhpZ2giCi0jICAgZW5kaWYKLQotI2Vsc2UvLyBkZWZpbmVkKE5ETkJPT1NUX1RZUEVPRl9QUkVQUk9DRVNTSU5HX01PREUpIHx8IE5ETkJPT1NUX1BQX0lTX1NFTEZJU0gKLQotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfUFBfTkVYVF9TSVpFCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1BQX05FWFRfU0laRSBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRQotIyAgIGVuZGlmCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUgMAotIyAgIGVuZGlmCi0KLSMgICBpZiBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSA8PSBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRQotCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0X2Zyb21fdG8uaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvbm90LmhwcD4KLQotLy8gaXRlcmF0b3IKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9zcGVjX2l0ZXIobilcCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+XAotICAgICAgICBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzxuPiA+XAotICAgICAgICB7XAotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtICMjIG4gdHlwZTtcCi0gICAgICAgICAgICB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88biArIDE+ID4gbmV4dDtcCi0gICAgICAgIH07Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIEluY3JlYXNlX05ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFPiBzdHJ1Y3Qgdl9pdGVyOyAvLyBub3QgZGVmaW5lZAotIyAgICAgZGVmaW5lICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyAgTkROQk9PU1RfVFlQRU9GX3NwZWNfaXRlcgotIyAgICAgZGVmaW5lICBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgXAotICAgICAgICAoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFKSwgXAotICAgICAgICAgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKSkKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0KLX19Ci0KLSMgICAgIHVuZGVmIE5ETkJPT1NUX1RZUEVPRl9zcGVjX2l0ZXIKLQotLy8gdmVjdG9yCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfdHlwZWRlZl9pdGVtKHosIG4sIF8pXAotICAgICAgICB0eXBlZGVmIFAgIyMgbiBpdGVtICMjIG47Ci0KLSMgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfdHlwZWRlZl9mYWtlX2l0ZW0oeiwgbiwgXylcCi0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0gIyMgbjsKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9kZWZpbmVfdmVjdG9yKG4pXAotICAgICAgICB0ZW1wbGF0ZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBjbGFzcyBQKSBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9OT1QobiksIGNsYXNzIFQgPSB2b2lkKT5cCi0gICAgICAgIHN0cnVjdCB2ZWN0b3IgIyMgblwKLSAgICAgICAge1wKLSAgICAgICAgICAgIHR5cGVkZWYgdl9pdGVyPHZlY3RvciAjIyBuPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sUCk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47XAotICAgICAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUKG4sIE5ETkJPT1NUX1RZUEVPRl90eXBlZGVmX2l0ZW0sIH4pXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8obiwgTkROQk9PU1RfVFlQRU9GX1BQX05FWFRfU0laRSwgTkROQk9PU1RfVFlQRU9GX3R5cGVkZWZfZmFrZV9pdGVtLCB+KVwKLSAgICAgICAgfTsKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotCi0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPICBORE5CT09TVF9UWVBFT0ZfZGVmaW5lX3ZlY3RvcgotIyAgICAgZGVmaW5lICBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgXAotICAgICAgICAoTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUsTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUpCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotCi19fQotCi0jICAgICB1bmRlZiBORE5CT09TVF9UWVBFT0ZfdHlwZWRlZl9pdGVtCi0jICAgICB1bmRlZiBORE5CT09TVF9UWVBFT0ZfdHlwZWRlZl9mYWtlX2l0ZW0KLSMgICAgIHVuZGVmIE5ETkJPT1NUX1RZUEVPRl9kZWZpbmVfdmVjdG9yCi0KLS8vIHB1c2hfYmFjawotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3NwZWNfcHVzaF9iYWNrKG4pXAotICAgICAgICB0ZW1wbGF0ZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBjbGFzcyBQKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBjbGFzcyBUPlwKLSAgICAgICAgc3RydWN0IHB1c2hfYmFjazxORE5CT09TVF9QUF9DQVQobmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvciwgbik8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCk+LCBUPlwKLSAgICAgICAge1wKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IsIE5ETkJPT1NUX1BQX0lOQyhuKSk8XAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIFRcCi0gICAgICAgICAgICA+IHR5cGU7XAotICAgICAgICB9OwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSMgICBpZiAgIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFIDwgNTAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrIHsKLSAgICAgICAgdHlwZWRlZiBWIHR5cGU7Ci0gICAgfTsKLSMgICBlbmRpZgotICAgIC8vZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gbGV0IHB1c2hfYmFjayBpZ25vcmUgVCwgYW5kIHJldHVybiB0aGUgaW5wdXQgdmVjdG9yLgotICAgIC8vVGhpcyBpcyB0byBsZXQgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGIHdvcmsgcHJvcGVybHkgd2l0aCB0aGUgZGVmYXVsdCB2ZWN0b3IuCi0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPICBORE5CT09TVF9UWVBFT0Zfc3BlY19wdXNoX2JhY2sKLSMgICAgIGRlZmluZSAgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTIFwKLSAgICAgICAgKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSksIFwKLSAgICAgICAgIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSkpCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotCi19fQotCi0jICAgICB1bmRlZiBORE5CT09TVF9UWVBFT0Zfc3BlY19wdXNoX2JhY2sKLQotIyAgIGVuZGlmLy9ORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRTw9TkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUKLSMgICB1bmRlZiAgTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUKLSMgICB1bmRlZiAgTkROQk9PU1RfVFlQRU9GX1BQX05FWFRfU0laRQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9QUkVQUk9DRVNTSU5HX01PREUgfHwgTkROQk9PU1RfUFBfSVNfU0VMRklTSAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9WRUNUT1JfSFBQX0lOQ0xVREVECi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9WRUNUT1JfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjEwMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IxMDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjE2Y2Q5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjEwMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gQ29weXJpZ2h0IChDKSAyMDA1IFBlZGVyIEhvbHQKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLyBQcmVwcm9jZXNzZWQgY29kZSwgZG8gbm90IGVkaXQgbWFudWFsbHkgIQotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBJbmNyZWFzZV9ORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRT4gc3RydWN0IHZfaXRlcjsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDczPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDczICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTkgKyAxPiA+IG5leHQ7IH07Ci19fQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA9IHZvaWQ+IHN0cnVjdCB2ZWN0b3IwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMDw+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0wOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgPiBzdHJ1Y3QgdmVjdG9yMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE8IFAwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSA+IHN0cnVjdCB2ZWN0b3IyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjwgUDAgLCBQMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyID4gc3RydWN0IHZlY3RvcjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzPCBQMCAsIFAxICwgUDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgPiBzdHJ1Y3QgdmVjdG9yNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFAzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCA+IHN0cnVjdCB2ZWN0b3I1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ID4gc3RydWN0IHZlY3RvcjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgPiBzdHJ1Y3QgdmVjdG9yNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyA+IHN0cnVjdCB2ZWN0b3I4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ID4gc3RydWN0IHZlY3RvcjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgPiBzdHJ1Y3QgdmVjdG9yMTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCA+IHN0cnVjdCB2ZWN0b3IxMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExID4gc3RydWN0IHZlY3RvcjEyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgPiBzdHJ1Y3QgdmVjdG9yMTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyA+IHN0cnVjdCB2ZWN0b3IxNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ID4gc3RydWN0IHZlY3RvcjE1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgPiBzdHJ1Y3QgdmVjdG9yMTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiA+IHN0cnVjdCB2ZWN0b3IxNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ID4gc3RydWN0IHZlY3RvcjE4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggPiBzdHJ1Y3QgdmVjdG9yMTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSA+IHN0cnVjdCB2ZWN0b3IyMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwID4gc3RydWN0IHZlY3RvcjIxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgPiBzdHJ1Y3QgdmVjdG9yMjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiA+IHN0cnVjdCB2ZWN0b3IyMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzID4gc3RydWN0IHZlY3RvcjI0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgPiBzdHJ1Y3QgdmVjdG9yMjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSA+IHN0cnVjdCB2ZWN0b3IyNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ID4gc3RydWN0IHZlY3RvcjI3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgPiBzdHJ1Y3QgdmVjdG9yMjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCA+IHN0cnVjdCB2ZWN0b3IyOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ID4gc3RydWN0IHZlY3RvcjMwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgPiBzdHJ1Y3QgdmVjdG9yMzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSA+IHN0cnVjdCB2ZWN0b3IzMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyID4gc3RydWN0IHZlY3RvcjMzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgPiBzdHJ1Y3QgdmVjdG9yMzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCA+IHN0cnVjdCB2ZWN0b3IzNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ID4gc3RydWN0IHZlY3RvcjM2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgPiBzdHJ1Y3QgdmVjdG9yMzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyA+IHN0cnVjdCB2ZWN0b3IzOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ID4gc3RydWN0IHZlY3RvcjM5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgPiBzdHJ1Y3QgdmVjdG9yNDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCA+IHN0cnVjdCB2ZWN0b3I0MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxID4gc3RydWN0IHZlY3RvcjQyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgPiBzdHJ1Y3QgdmVjdG9yNDMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyA+IHN0cnVjdCB2ZWN0b3I0NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ID4gc3RydWN0IHZlY3RvcjQ1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgPiBzdHJ1Y3QgdmVjdG9yNDYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiA+IHN0cnVjdCB2ZWN0b3I0NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ID4gc3RydWN0IHZlY3RvcjQ4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggPiBzdHJ1Y3QgdmVjdG9yNDkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSA+IHN0cnVjdCB2ZWN0b3I1MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwID4gc3RydWN0IHZlY3RvcjUxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgPiBzdHJ1Y3QgdmVjdG9yNTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiA+IHN0cnVjdCB2ZWN0b3I1MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzID4gc3RydWN0IHZlY3RvcjU0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgPiBzdHJ1Y3QgdmVjdG9yNTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSA+IHN0cnVjdCB2ZWN0b3I1NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ID4gc3RydWN0IHZlY3RvcjU3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgPiBzdHJ1Y3QgdmVjdG9yNTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCA+IHN0cnVjdCB2ZWN0b3I1OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ID4gc3RydWN0IHZlY3RvcjYwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgPiBzdHJ1Y3QgdmVjdG9yNjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSA+IHN0cnVjdCB2ZWN0b3I2MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyID4gc3RydWN0IHZlY3RvcjYzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgPiBzdHJ1Y3QgdmVjdG9yNjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCA+IHN0cnVjdCB2ZWN0b3I2NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ID4gc3RydWN0IHZlY3RvcjY2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgPiBzdHJ1Y3QgdmVjdG9yNjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyA+IHN0cnVjdCB2ZWN0b3I2OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ID4gc3RydWN0IHZlY3RvcjY5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgPiBzdHJ1Y3QgdmVjdG9yNzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCA+IHN0cnVjdCB2ZWN0b3I3MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxID4gc3RydWN0IHZlY3RvcjcyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgPiBzdHJ1Y3QgdmVjdG9yNzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyA+IHN0cnVjdCB2ZWN0b3I3NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ID4gc3RydWN0IHZlY3Rvcjc1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgPiBzdHJ1Y3QgdmVjdG9yNzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiA+IHN0cnVjdCB2ZWN0b3I3NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ID4gc3RydWN0IHZlY3Rvcjc4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggPiBzdHJ1Y3QgdmVjdG9yNzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSA+IHN0cnVjdCB2ZWN0b3I4MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwID4gc3RydWN0IHZlY3RvcjgxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgPiBzdHJ1Y3QgdmVjdG9yODIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiA+IHN0cnVjdCB2ZWN0b3I4MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzID4gc3RydWN0IHZlY3Rvcjg0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgPiBzdHJ1Y3QgdmVjdG9yODUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSA+IHN0cnVjdCB2ZWN0b3I4NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ID4gc3RydWN0IHZlY3Rvcjg3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgPiBzdHJ1Y3QgdmVjdG9yODggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCA+IHN0cnVjdCB2ZWN0b3I4OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ID4gc3RydWN0IHZlY3RvcjkwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgPiBzdHJ1Y3QgdmVjdG9yOTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSA+IHN0cnVjdCB2ZWN0b3I5MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyID4gc3RydWN0IHZlY3RvcjkzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgPiBzdHJ1Y3QgdmVjdG9yOTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCA+IHN0cnVjdCB2ZWN0b3I5NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ID4gc3RydWN0IHZlY3Rvcjk2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgPiBzdHJ1Y3QgdmVjdG9yOTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyA+IHN0cnVjdCB2ZWN0b3I5OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ID4gc3RydWN0IHZlY3Rvcjk5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgPiBzdHJ1Y3QgdmVjdG9yMTAwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLX19Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjayB7Ci0gICAgICAgIHR5cGVkZWYgViB0eXBlOwotICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IwPD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE8IFAwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyPCBQMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI8IFAwICwgUDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM8IFAwICwgUDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM8IFAwICwgUDEgLCBQMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFAzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBUID4gdHlwZTsgfTsKLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IxNTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMTUwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgyZTg0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IxNTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8gUHJlcHJvY2Vzc2VkIGNvZGUsIGRvIG5vdCBlZGl0IG1hbnVhbGx5ICEKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgSW5jcmVhc2VfTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkU+IHN0cnVjdCB2X2l0ZXI7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0wIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTczIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTAxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTEwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTExICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTEzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTMxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDkgKyAxPiA+IG5leHQ7IH07Ci19fQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA9IHZvaWQ+IHN0cnVjdCB2ZWN0b3IwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMDw+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0wOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgPiBzdHJ1Y3QgdmVjdG9yMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE8IFAwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSA+IHN0cnVjdCB2ZWN0b3IyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjwgUDAgLCBQMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyID4gc3RydWN0IHZlY3RvcjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzPCBQMCAsIFAxICwgUDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgPiBzdHJ1Y3QgdmVjdG9yNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFAzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCA+IHN0cnVjdCB2ZWN0b3I1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ID4gc3RydWN0IHZlY3RvcjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgPiBzdHJ1Y3QgdmVjdG9yNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyA+IHN0cnVjdCB2ZWN0b3I4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ID4gc3RydWN0IHZlY3RvcjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgPiBzdHJ1Y3QgdmVjdG9yMTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCA+IHN0cnVjdCB2ZWN0b3IxMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExID4gc3RydWN0IHZlY3RvcjEyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgPiBzdHJ1Y3QgdmVjdG9yMTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyA+IHN0cnVjdCB2ZWN0b3IxNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ID4gc3RydWN0IHZlY3RvcjE1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgPiBzdHJ1Y3QgdmVjdG9yMTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiA+IHN0cnVjdCB2ZWN0b3IxNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ID4gc3RydWN0IHZlY3RvcjE4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggPiBzdHJ1Y3QgdmVjdG9yMTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSA+IHN0cnVjdCB2ZWN0b3IyMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwID4gc3RydWN0IHZlY3RvcjIxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgPiBzdHJ1Y3QgdmVjdG9yMjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiA+IHN0cnVjdCB2ZWN0b3IyMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzID4gc3RydWN0IHZlY3RvcjI0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgPiBzdHJ1Y3QgdmVjdG9yMjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSA+IHN0cnVjdCB2ZWN0b3IyNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ID4gc3RydWN0IHZlY3RvcjI3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgPiBzdHJ1Y3QgdmVjdG9yMjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCA+IHN0cnVjdCB2ZWN0b3IyOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ID4gc3RydWN0IHZlY3RvcjMwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgPiBzdHJ1Y3QgdmVjdG9yMzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSA+IHN0cnVjdCB2ZWN0b3IzMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyID4gc3RydWN0IHZlY3RvcjMzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgPiBzdHJ1Y3QgdmVjdG9yMzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCA+IHN0cnVjdCB2ZWN0b3IzNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ID4gc3RydWN0IHZlY3RvcjM2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgPiBzdHJ1Y3QgdmVjdG9yMzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyA+IHN0cnVjdCB2ZWN0b3IzOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ID4gc3RydWN0IHZlY3RvcjM5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgPiBzdHJ1Y3QgdmVjdG9yNDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCA+IHN0cnVjdCB2ZWN0b3I0MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxID4gc3RydWN0IHZlY3RvcjQyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgPiBzdHJ1Y3QgdmVjdG9yNDMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyA+IHN0cnVjdCB2ZWN0b3I0NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ID4gc3RydWN0IHZlY3RvcjQ1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgPiBzdHJ1Y3QgdmVjdG9yNDYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiA+IHN0cnVjdCB2ZWN0b3I0NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ID4gc3RydWN0IHZlY3RvcjQ4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggPiBzdHJ1Y3QgdmVjdG9yNDkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSA+IHN0cnVjdCB2ZWN0b3I1MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwID4gc3RydWN0IHZlY3RvcjUxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgPiBzdHJ1Y3QgdmVjdG9yNTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiA+IHN0cnVjdCB2ZWN0b3I1MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzID4gc3RydWN0IHZlY3RvcjU0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgPiBzdHJ1Y3QgdmVjdG9yNTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSA+IHN0cnVjdCB2ZWN0b3I1NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ID4gc3RydWN0IHZlY3RvcjU3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgPiBzdHJ1Y3QgdmVjdG9yNTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCA+IHN0cnVjdCB2ZWN0b3I1OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ID4gc3RydWN0IHZlY3RvcjYwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgPiBzdHJ1Y3QgdmVjdG9yNjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSA+IHN0cnVjdCB2ZWN0b3I2MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyID4gc3RydWN0IHZlY3RvcjYzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgPiBzdHJ1Y3QgdmVjdG9yNjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCA+IHN0cnVjdCB2ZWN0b3I2NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ID4gc3RydWN0IHZlY3RvcjY2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgPiBzdHJ1Y3QgdmVjdG9yNjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyA+IHN0cnVjdCB2ZWN0b3I2OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ID4gc3RydWN0IHZlY3RvcjY5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgPiBzdHJ1Y3QgdmVjdG9yNzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCA+IHN0cnVjdCB2ZWN0b3I3MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxID4gc3RydWN0IHZlY3RvcjcyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgPiBzdHJ1Y3QgdmVjdG9yNzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyA+IHN0cnVjdCB2ZWN0b3I3NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ID4gc3RydWN0IHZlY3Rvcjc1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgPiBzdHJ1Y3QgdmVjdG9yNzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiA+IHN0cnVjdCB2ZWN0b3I3NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ID4gc3RydWN0IHZlY3Rvcjc4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggPiBzdHJ1Y3QgdmVjdG9yNzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSA+IHN0cnVjdCB2ZWN0b3I4MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwID4gc3RydWN0IHZlY3RvcjgxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgPiBzdHJ1Y3QgdmVjdG9yODIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiA+IHN0cnVjdCB2ZWN0b3I4MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzID4gc3RydWN0IHZlY3Rvcjg0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgPiBzdHJ1Y3QgdmVjdG9yODUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSA+IHN0cnVjdCB2ZWN0b3I4NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ID4gc3RydWN0IHZlY3Rvcjg3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgPiBzdHJ1Y3QgdmVjdG9yODggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCA+IHN0cnVjdCB2ZWN0b3I4OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ID4gc3RydWN0IHZlY3RvcjkwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgPiBzdHJ1Y3QgdmVjdG9yOTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSA+IHN0cnVjdCB2ZWN0b3I5MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyID4gc3RydWN0IHZlY3RvcjkzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgPiBzdHJ1Y3QgdmVjdG9yOTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCA+IHN0cnVjdCB2ZWN0b3I5NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ID4gc3RydWN0IHZlY3Rvcjk2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgPiBzdHJ1Y3QgdmVjdG9yOTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyA+IHN0cnVjdCB2ZWN0b3I5OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ID4gc3RydWN0IHZlY3Rvcjk5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgPiBzdHJ1Y3QgdmVjdG9yMTAwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCA+IHN0cnVjdCB2ZWN0b3IxMDEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxID4gc3RydWN0IHZlY3RvcjEwMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgPiBzdHJ1Y3QgdmVjdG9yMTAzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyA+IHN0cnVjdCB2ZWN0b3IxMDQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ID4gc3RydWN0IHZlY3RvcjEwNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgPiBzdHJ1Y3QgdmVjdG9yMTA2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiA+IHN0cnVjdCB2ZWN0b3IxMDcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ID4gc3RydWN0IHZlY3RvcjEwOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggPiBzdHJ1Y3QgdmVjdG9yMTA5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSA+IHN0cnVjdCB2ZWN0b3IxMTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwID4gc3RydWN0IHZlY3RvcjExMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgPiBzdHJ1Y3QgdmVjdG9yMTEyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiA+IHN0cnVjdCB2ZWN0b3IxMTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzID4gc3RydWN0IHZlY3RvcjExNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgPiBzdHJ1Y3QgdmVjdG9yMTE1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSA+IHN0cnVjdCB2ZWN0b3IxMTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ID4gc3RydWN0IHZlY3RvcjExNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgPiBzdHJ1Y3QgdmVjdG9yMTE4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCA+IHN0cnVjdCB2ZWN0b3IxMTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ID4gc3RydWN0IHZlY3RvcjEyMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgPiBzdHJ1Y3QgdmVjdG9yMTIxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSA+IHN0cnVjdCB2ZWN0b3IxMjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyID4gc3RydWN0IHZlY3RvcjEyMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgPiBzdHJ1Y3QgdmVjdG9yMTI0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCA+IHN0cnVjdCB2ZWN0b3IxMjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ID4gc3RydWN0IHZlY3RvcjEyNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgPiBzdHJ1Y3QgdmVjdG9yMTI3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyA+IHN0cnVjdCB2ZWN0b3IxMjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ID4gc3RydWN0IHZlY3RvcjEyOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgPiBzdHJ1Y3QgdmVjdG9yMTMwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCA+IHN0cnVjdCB2ZWN0b3IxMzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxID4gc3RydWN0IHZlY3RvcjEzMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgPiBzdHJ1Y3QgdmVjdG9yMTMzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyA+IHN0cnVjdCB2ZWN0b3IxMzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ID4gc3RydWN0IHZlY3RvcjEzNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgPiBzdHJ1Y3QgdmVjdG9yMTM2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiA+IHN0cnVjdCB2ZWN0b3IxMzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ID4gc3RydWN0IHZlY3RvcjEzOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggPiBzdHJ1Y3QgdmVjdG9yMTM5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSA+IHN0cnVjdCB2ZWN0b3IxNDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwID4gc3RydWN0IHZlY3RvcjE0MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgPiBzdHJ1Y3QgdmVjdG9yMTQyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiA+IHN0cnVjdCB2ZWN0b3IxNDMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzID4gc3RydWN0IHZlY3RvcjE0NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgPiBzdHJ1Y3QgdmVjdG9yMTQ1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSA+IHN0cnVjdCB2ZWN0b3IxNDYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ID4gc3RydWN0IHZlY3RvcjE0NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgPiBzdHJ1Y3QgdmVjdG9yMTQ4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCA+IHN0cnVjdCB2ZWN0b3IxNDkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ID4gc3RydWN0IHZlY3RvcjE1MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgUDk5IGl0ZW05OTsgdHlwZWRlZiBQMTAwIGl0ZW0xMDA7IHR5cGVkZWYgUDEwMSBpdGVtMTAxOyB0eXBlZGVmIFAxMDIgaXRlbTEwMjsgdHlwZWRlZiBQMTAzIGl0ZW0xMDM7IHR5cGVkZWYgUDEwNCBpdGVtMTA0OyB0eXBlZGVmIFAxMDUgaXRlbTEwNTsgdHlwZWRlZiBQMTA2IGl0ZW0xMDY7IHR5cGVkZWYgUDEwNyBpdGVtMTA3OyB0eXBlZGVmIFAxMDggaXRlbTEwODsgdHlwZWRlZiBQMTA5IGl0ZW0xMDk7IHR5cGVkZWYgUDExMCBpdGVtMTEwOyB0eXBlZGVmIFAxMTEgaXRlbTExMTsgdHlwZWRlZiBQMTEyIGl0ZW0xMTI7IHR5cGVkZWYgUDExMyBpdGVtMTEzOyB0eXBlZGVmIFAxMTQgaXRlbTExNDsgdHlwZWRlZiBQMTE1IGl0ZW0xMTU7IHR5cGVkZWYgUDExNiBpdGVtMTE2OyB0eXBlZGVmIFAxMTcgaXRlbTExNzsgdHlwZWRlZiBQMTE4IGl0ZW0xMTg7IHR5cGVkZWYgUDExOSBpdGVtMTE5OyB0eXBlZGVmIFAxMjAgaXRlbTEyMDsgdHlwZWRlZiBQMTIxIGl0ZW0xMjE7IHR5cGVkZWYgUDEyMiBpdGVtMTIyOyB0eXBlZGVmIFAxMjMgaXRlbTEyMzsgdHlwZWRlZiBQMTI0IGl0ZW0xMjQ7IHR5cGVkZWYgUDEyNSBpdGVtMTI1OyB0eXBlZGVmIFAxMjYgaXRlbTEyNjsgdHlwZWRlZiBQMTI3IGl0ZW0xMjc7IHR5cGVkZWYgUDEyOCBpdGVtMTI4OyB0eXBlZGVmIFAxMjkgaXRlbTEyOTsgdHlwZWRlZiBQMTMwIGl0ZW0xMzA7IHR5cGVkZWYgUDEzMSBpdGVtMTMxOyB0eXBlZGVmIFAxMzIgaXRlbTEzMjsgdHlwZWRlZiBQMTMzIGl0ZW0xMzM7IHR5cGVkZWYgUDEzNCBpdGVtMTM0OyB0eXBlZGVmIFAxMzUgaXRlbTEzNTsgdHlwZWRlZiBQMTM2IGl0ZW0xMzY7IHR5cGVkZWYgUDEzNyBpdGVtMTM3OyB0eXBlZGVmIFAxMzggaXRlbTEzODsgdHlwZWRlZiBQMTM5IGl0ZW0xMzk7IHR5cGVkZWYgUDE0MCBpdGVtMTQwOyB0eXBlZGVmIFAxNDEgaXRlbTE0MTsgdHlwZWRlZiBQMTQyIGl0ZW0xNDI7IHR5cGVkZWYgUDE0MyBpdGVtMTQzOyB0eXBlZGVmIFAxNDQgaXRlbTE0NDsgdHlwZWRlZiBQMTQ1IGl0ZW0xNDU7IHR5cGVkZWYgUDE0NiBpdGVtMTQ2OyB0eXBlZGVmIFAxNDcgaXRlbTE0NzsgdHlwZWRlZiBQMTQ4IGl0ZW0xNDg7IHR5cGVkZWYgUDE0OSBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrIHsKLSAgICAgICAgdHlwZWRlZiBWIHR5cGU7Ci0gICAgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjA8PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxPCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTwgUDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI8IFAwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjwgUDAgLCBQMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzwgUDAgLCBQMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzwgUDAgLCBQMSAsIFAyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgUDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBUID4gdHlwZTsgfTsKLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IyMDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMjAwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBhOGQwYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IyMDAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8gUHJlcHJvY2Vzc2VkIGNvZGUsIGRvIG5vdCBlZGl0IG1hbnVhbGx5ICEKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgSW5jcmVhc2VfTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkU+IHN0cnVjdCB2X2l0ZXI7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0wIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTczIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTAxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTEwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTExICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTEzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTMxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTUyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTU1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTU2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTU4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTU5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTYxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTYyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTY0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTY1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTY3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTY4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTcwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTcwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTcxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTczPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTczIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTc0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTc2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTc3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTc5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTgwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTgyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTgyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTgzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTg1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTg2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTg4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTg5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTkxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTkyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTk0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTk1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTk3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTk4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5OSArIDE+ID4gbmV4dDsgfTsKLX19Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID0gdm9pZD4gc3RydWN0IHZlY3RvcjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IwPD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCA+IHN0cnVjdCB2ZWN0b3IxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTwgUDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxID4gc3RydWN0IHZlY3RvcjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyPCBQMCAsIFAxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgPiBzdHJ1Y3QgdmVjdG9yMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM8IFAwICwgUDEgLCBQMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyA+IHN0cnVjdCB2ZWN0b3I0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgUDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ID4gc3RydWN0IHZlY3RvcjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgPiBzdHJ1Y3QgdmVjdG9yNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiA+IHN0cnVjdCB2ZWN0b3I3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ID4gc3RydWN0IHZlY3RvcjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggPiBzdHJ1Y3QgdmVjdG9yOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSA+IHN0cnVjdCB2ZWN0b3IxMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwID4gc3RydWN0IHZlY3RvcjExIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgPiBzdHJ1Y3QgdmVjdG9yMTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiA+IHN0cnVjdCB2ZWN0b3IxMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzID4gc3RydWN0IHZlY3RvcjE0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgPiBzdHJ1Y3QgdmVjdG9yMTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSA+IHN0cnVjdCB2ZWN0b3IxNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ID4gc3RydWN0IHZlY3RvcjE3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgPiBzdHJ1Y3QgdmVjdG9yMTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCA+IHN0cnVjdCB2ZWN0b3IxOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ID4gc3RydWN0IHZlY3RvcjIwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgPiBzdHJ1Y3QgdmVjdG9yMjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSA+IHN0cnVjdCB2ZWN0b3IyMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyID4gc3RydWN0IHZlY3RvcjIzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgPiBzdHJ1Y3QgdmVjdG9yMjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCA+IHN0cnVjdCB2ZWN0b3IyNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ID4gc3RydWN0IHZlY3RvcjI2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgPiBzdHJ1Y3QgdmVjdG9yMjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyA+IHN0cnVjdCB2ZWN0b3IyOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ID4gc3RydWN0IHZlY3RvcjI5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgPiBzdHJ1Y3QgdmVjdG9yMzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCA+IHN0cnVjdCB2ZWN0b3IzMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxID4gc3RydWN0IHZlY3RvcjMyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgPiBzdHJ1Y3QgdmVjdG9yMzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyA+IHN0cnVjdCB2ZWN0b3IzNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ID4gc3RydWN0IHZlY3RvcjM1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgPiBzdHJ1Y3QgdmVjdG9yMzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiA+IHN0cnVjdCB2ZWN0b3IzNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ID4gc3RydWN0IHZlY3RvcjM4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggPiBzdHJ1Y3QgdmVjdG9yMzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSA+IHN0cnVjdCB2ZWN0b3I0MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwID4gc3RydWN0IHZlY3RvcjQxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgPiBzdHJ1Y3QgdmVjdG9yNDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiA+IHN0cnVjdCB2ZWN0b3I0MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzID4gc3RydWN0IHZlY3RvcjQ0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgPiBzdHJ1Y3QgdmVjdG9yNDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSA+IHN0cnVjdCB2ZWN0b3I0NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ID4gc3RydWN0IHZlY3RvcjQ3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgPiBzdHJ1Y3QgdmVjdG9yNDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCA+IHN0cnVjdCB2ZWN0b3I0OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ID4gc3RydWN0IHZlY3RvcjUwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgPiBzdHJ1Y3QgdmVjdG9yNTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSA+IHN0cnVjdCB2ZWN0b3I1MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyID4gc3RydWN0IHZlY3RvcjUzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgPiBzdHJ1Y3QgdmVjdG9yNTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCA+IHN0cnVjdCB2ZWN0b3I1NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ID4gc3RydWN0IHZlY3RvcjU2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgPiBzdHJ1Y3QgdmVjdG9yNTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyA+IHN0cnVjdCB2ZWN0b3I1OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ID4gc3RydWN0IHZlY3RvcjU5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgPiBzdHJ1Y3QgdmVjdG9yNjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCA+IHN0cnVjdCB2ZWN0b3I2MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxID4gc3RydWN0IHZlY3RvcjYyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgPiBzdHJ1Y3QgdmVjdG9yNjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyA+IHN0cnVjdCB2ZWN0b3I2NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ID4gc3RydWN0IHZlY3RvcjY1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgPiBzdHJ1Y3QgdmVjdG9yNjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiA+IHN0cnVjdCB2ZWN0b3I2NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ID4gc3RydWN0IHZlY3RvcjY4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggPiBzdHJ1Y3QgdmVjdG9yNjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSA+IHN0cnVjdCB2ZWN0b3I3MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwID4gc3RydWN0IHZlY3RvcjcxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgPiBzdHJ1Y3QgdmVjdG9yNzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiA+IHN0cnVjdCB2ZWN0b3I3MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczID4gc3RydWN0IHZlY3Rvcjc0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgPiBzdHJ1Y3QgdmVjdG9yNzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSA+IHN0cnVjdCB2ZWN0b3I3NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ID4gc3RydWN0IHZlY3Rvcjc3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgPiBzdHJ1Y3QgdmVjdG9yNzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCA+IHN0cnVjdCB2ZWN0b3I3OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ID4gc3RydWN0IHZlY3RvcjgwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgPiBzdHJ1Y3QgdmVjdG9yODEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSA+IHN0cnVjdCB2ZWN0b3I4MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyID4gc3RydWN0IHZlY3RvcjgzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgPiBzdHJ1Y3QgdmVjdG9yODQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCA+IHN0cnVjdCB2ZWN0b3I4NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ID4gc3RydWN0IHZlY3Rvcjg2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgPiBzdHJ1Y3QgdmVjdG9yODcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyA+IHN0cnVjdCB2ZWN0b3I4OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ID4gc3RydWN0IHZlY3Rvcjg5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgPiBzdHJ1Y3QgdmVjdG9yOTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCA+IHN0cnVjdCB2ZWN0b3I5MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxID4gc3RydWN0IHZlY3RvcjkyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgPiBzdHJ1Y3QgdmVjdG9yOTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyA+IHN0cnVjdCB2ZWN0b3I5NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ID4gc3RydWN0IHZlY3Rvcjk1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgPiBzdHJ1Y3QgdmVjdG9yOTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiA+IHN0cnVjdCB2ZWN0b3I5NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ID4gc3RydWN0IHZlY3Rvcjk4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggPiBzdHJ1Y3QgdmVjdG9yOTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSA+IHN0cnVjdCB2ZWN0b3IxMDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwID4gc3RydWN0IHZlY3RvcjEwMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgPiBzdHJ1Y3QgdmVjdG9yMTAyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiA+IHN0cnVjdCB2ZWN0b3IxMDMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzID4gc3RydWN0IHZlY3RvcjEwNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgPiBzdHJ1Y3QgdmVjdG9yMTA1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSA+IHN0cnVjdCB2ZWN0b3IxMDYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ID4gc3RydWN0IHZlY3RvcjEwNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgPiBzdHJ1Y3QgdmVjdG9yMTA4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCA+IHN0cnVjdCB2ZWN0b3IxMDkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ID4gc3RydWN0IHZlY3RvcjExMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgPiBzdHJ1Y3QgdmVjdG9yMTExIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSA+IHN0cnVjdCB2ZWN0b3IxMTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyID4gc3RydWN0IHZlY3RvcjExMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgPiBzdHJ1Y3QgdmVjdG9yMTE0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCA+IHN0cnVjdCB2ZWN0b3IxMTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ID4gc3RydWN0IHZlY3RvcjExNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgPiBzdHJ1Y3QgdmVjdG9yMTE3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyA+IHN0cnVjdCB2ZWN0b3IxMTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ID4gc3RydWN0IHZlY3RvcjExOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgPiBzdHJ1Y3QgdmVjdG9yMTIwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCA+IHN0cnVjdCB2ZWN0b3IxMjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxID4gc3RydWN0IHZlY3RvcjEyMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgPiBzdHJ1Y3QgdmVjdG9yMTIzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyA+IHN0cnVjdCB2ZWN0b3IxMjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ID4gc3RydWN0IHZlY3RvcjEyNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgPiBzdHJ1Y3QgdmVjdG9yMTI2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiA+IHN0cnVjdCB2ZWN0b3IxMjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ID4gc3RydWN0IHZlY3RvcjEyOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggPiBzdHJ1Y3QgdmVjdG9yMTI5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSA+IHN0cnVjdCB2ZWN0b3IxMzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwID4gc3RydWN0IHZlY3RvcjEzMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgPiBzdHJ1Y3QgdmVjdG9yMTMyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiA+IHN0cnVjdCB2ZWN0b3IxMzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzID4gc3RydWN0IHZlY3RvcjEzNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgPiBzdHJ1Y3QgdmVjdG9yMTM1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSA+IHN0cnVjdCB2ZWN0b3IxMzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ID4gc3RydWN0IHZlY3RvcjEzNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgPiBzdHJ1Y3QgdmVjdG9yMTM4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCA+IHN0cnVjdCB2ZWN0b3IxMzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ID4gc3RydWN0IHZlY3RvcjE0MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgPiBzdHJ1Y3QgdmVjdG9yMTQxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSA+IHN0cnVjdCB2ZWN0b3IxNDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyID4gc3RydWN0IHZlY3RvcjE0MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgPiBzdHJ1Y3QgdmVjdG9yMTQ0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCA+IHN0cnVjdCB2ZWN0b3IxNDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ID4gc3RydWN0IHZlY3RvcjE0NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgPiBzdHJ1Y3QgdmVjdG9yMTQ3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyA+IHN0cnVjdCB2ZWN0b3IxNDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ID4gc3RydWN0IHZlY3RvcjE0OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgPiBzdHJ1Y3QgdmVjdG9yMTUwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCA+IHN0cnVjdCB2ZWN0b3IxNTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxID4gc3RydWN0IHZlY3RvcjE1MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgPiBzdHJ1Y3QgdmVjdG9yMTUzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyA+IHN0cnVjdCB2ZWN0b3IxNTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ID4gc3RydWN0IHZlY3RvcjE1NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgPiBzdHJ1Y3QgdmVjdG9yMTU2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiA+IHN0cnVjdCB2ZWN0b3IxNTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ID4gc3RydWN0IHZlY3RvcjE1OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggPiBzdHJ1Y3QgdmVjdG9yMTU5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSA+IHN0cnVjdCB2ZWN0b3IxNjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwID4gc3RydWN0IHZlY3RvcjE2MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgPiBzdHJ1Y3QgdmVjdG9yMTYyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiA+IHN0cnVjdCB2ZWN0b3IxNjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzID4gc3RydWN0IHZlY3RvcjE2NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgPiBzdHJ1Y3QgdmVjdG9yMTY1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSA+IHN0cnVjdCB2ZWN0b3IxNjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ID4gc3RydWN0IHZlY3RvcjE2NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgPiBzdHJ1Y3QgdmVjdG9yMTY4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCA+IHN0cnVjdCB2ZWN0b3IxNjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ID4gc3RydWN0IHZlY3RvcjE3MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgPiBzdHJ1Y3QgdmVjdG9yMTcxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSA+IHN0cnVjdCB2ZWN0b3IxNzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyID4gc3RydWN0IHZlY3RvcjE3MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgPiBzdHJ1Y3QgdmVjdG9yMTc0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCA+IHN0cnVjdCB2ZWN0b3IxNzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ID4gc3RydWN0IHZlY3RvcjE3NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgPiBzdHJ1Y3QgdmVjdG9yMTc3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyA+IHN0cnVjdCB2ZWN0b3IxNzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ID4gc3RydWN0IHZlY3RvcjE3OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgPiBzdHJ1Y3QgdmVjdG9yMTgwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCA+IHN0cnVjdCB2ZWN0b3IxODEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxID4gc3RydWN0IHZlY3RvcjE4MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgPiBzdHJ1Y3QgdmVjdG9yMTgzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyA+IHN0cnVjdCB2ZWN0b3IxODQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ID4gc3RydWN0IHZlY3RvcjE4NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgPiBzdHJ1Y3QgdmVjdG9yMTg2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiA+IHN0cnVjdCB2ZWN0b3IxODcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ID4gc3RydWN0IHZlY3RvcjE4OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggPiBzdHJ1Y3QgdmVjdG9yMTg5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSA+IHN0cnVjdCB2ZWN0b3IxOTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwID4gc3RydWN0IHZlY3RvcjE5MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIFAxOTAgaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgPiBzdHJ1Y3QgdmVjdG9yMTkyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIFAxOTAgaXRlbTE5MDsgdHlwZWRlZiBQMTkxIGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiA+IHN0cnVjdCB2ZWN0b3IxOTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIFAxOTAgaXRlbTE5MDsgdHlwZWRlZiBQMTkxIGl0ZW0xOTE7IHR5cGVkZWYgUDE5MiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzID4gc3RydWN0IHZlY3RvcjE5NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIFAxOTAgaXRlbTE5MDsgdHlwZWRlZiBQMTkxIGl0ZW0xOTE7IHR5cGVkZWYgUDE5MiBpdGVtMTkyOyB0eXBlZGVmIFAxOTMgaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgPiBzdHJ1Y3QgdmVjdG9yMTk1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIFAxOTAgaXRlbTE5MDsgdHlwZWRlZiBQMTkxIGl0ZW0xOTE7IHR5cGVkZWYgUDE5MiBpdGVtMTkyOyB0eXBlZGVmIFAxOTMgaXRlbTE5MzsgdHlwZWRlZiBQMTk0IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSA+IHN0cnVjdCB2ZWN0b3IxOTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIFAxOTAgaXRlbTE5MDsgdHlwZWRlZiBQMTkxIGl0ZW0xOTE7IHR5cGVkZWYgUDE5MiBpdGVtMTkyOyB0eXBlZGVmIFAxOTMgaXRlbTE5MzsgdHlwZWRlZiBQMTk0IGl0ZW0xOTQ7IHR5cGVkZWYgUDE5NSBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBQMTk2ID4gc3RydWN0IHZlY3RvcjE5NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIFAxOTAgaXRlbTE5MDsgdHlwZWRlZiBQMTkxIGl0ZW0xOTE7IHR5cGVkZWYgUDE5MiBpdGVtMTkyOyB0eXBlZGVmIFAxOTMgaXRlbTE5MzsgdHlwZWRlZiBQMTk0IGl0ZW0xOTQ7IHR5cGVkZWYgUDE5NSBpdGVtMTk1OyB0eXBlZGVmIFAxOTYgaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ICwgY2xhc3MgUDE5NiAsIGNsYXNzIFAxOTcgPiBzdHJ1Y3QgdmVjdG9yMTk4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTYgLCBQMTk3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIFAxOTAgaXRlbTE5MDsgdHlwZWRlZiBQMTkxIGl0ZW0xOTE7IHR5cGVkZWYgUDE5MiBpdGVtMTkyOyB0eXBlZGVmIFAxOTMgaXRlbTE5MzsgdHlwZWRlZiBQMTk0IGl0ZW0xOTQ7IHR5cGVkZWYgUDE5NSBpdGVtMTk1OyB0eXBlZGVmIFAxOTYgaXRlbTE5NjsgdHlwZWRlZiBQMTk3IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFAxOTYgLCBjbGFzcyBQMTk3ICwgY2xhc3MgUDE5OCA+IHN0cnVjdCB2ZWN0b3IxOTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTcgLCBQMTk4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIFAxOTAgaXRlbTE5MDsgdHlwZWRlZiBQMTkxIGl0ZW0xOTE7IHR5cGVkZWYgUDE5MiBpdGVtMTkyOyB0eXBlZGVmIFAxOTMgaXRlbTE5MzsgdHlwZWRlZiBQMTk0IGl0ZW0xOTQ7IHR5cGVkZWYgUDE5NSBpdGVtMTk1OyB0eXBlZGVmIFAxOTYgaXRlbTE5NjsgdHlwZWRlZiBQMTk3IGl0ZW0xOTc7IHR5cGVkZWYgUDE5OCBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBQMTk2ICwgY2xhc3MgUDE5NyAsIGNsYXNzIFAxOTggLCBjbGFzcyBQMTk5ID4gc3RydWN0IHZlY3RvcjIwMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2ICwgUDE5NyAsIFAxOTggLCBQMTk5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgUDE1MCBpdGVtMTUwOyB0eXBlZGVmIFAxNTEgaXRlbTE1MTsgdHlwZWRlZiBQMTUyIGl0ZW0xNTI7IHR5cGVkZWYgUDE1MyBpdGVtMTUzOyB0eXBlZGVmIFAxNTQgaXRlbTE1NDsgdHlwZWRlZiBQMTU1IGl0ZW0xNTU7IHR5cGVkZWYgUDE1NiBpdGVtMTU2OyB0eXBlZGVmIFAxNTcgaXRlbTE1NzsgdHlwZWRlZiBQMTU4IGl0ZW0xNTg7IHR5cGVkZWYgUDE1OSBpdGVtMTU5OyB0eXBlZGVmIFAxNjAgaXRlbTE2MDsgdHlwZWRlZiBQMTYxIGl0ZW0xNjE7IHR5cGVkZWYgUDE2MiBpdGVtMTYyOyB0eXBlZGVmIFAxNjMgaXRlbTE2MzsgdHlwZWRlZiBQMTY0IGl0ZW0xNjQ7IHR5cGVkZWYgUDE2NSBpdGVtMTY1OyB0eXBlZGVmIFAxNjYgaXRlbTE2NjsgdHlwZWRlZiBQMTY3IGl0ZW0xNjc7IHR5cGVkZWYgUDE2OCBpdGVtMTY4OyB0eXBlZGVmIFAxNjkgaXRlbTE2OTsgdHlwZWRlZiBQMTcwIGl0ZW0xNzA7IHR5cGVkZWYgUDE3MSBpdGVtMTcxOyB0eXBlZGVmIFAxNzIgaXRlbTE3MjsgdHlwZWRlZiBQMTczIGl0ZW0xNzM7IHR5cGVkZWYgUDE3NCBpdGVtMTc0OyB0eXBlZGVmIFAxNzUgaXRlbTE3NTsgdHlwZWRlZiBQMTc2IGl0ZW0xNzY7IHR5cGVkZWYgUDE3NyBpdGVtMTc3OyB0eXBlZGVmIFAxNzggaXRlbTE3ODsgdHlwZWRlZiBQMTc5IGl0ZW0xNzk7IHR5cGVkZWYgUDE4MCBpdGVtMTgwOyB0eXBlZGVmIFAxODEgaXRlbTE4MTsgdHlwZWRlZiBQMTgyIGl0ZW0xODI7IHR5cGVkZWYgUDE4MyBpdGVtMTgzOyB0eXBlZGVmIFAxODQgaXRlbTE4NDsgdHlwZWRlZiBQMTg1IGl0ZW0xODU7IHR5cGVkZWYgUDE4NiBpdGVtMTg2OyB0eXBlZGVmIFAxODcgaXRlbTE4NzsgdHlwZWRlZiBQMTg4IGl0ZW0xODg7IHR5cGVkZWYgUDE4OSBpdGVtMTg5OyB0eXBlZGVmIFAxOTAgaXRlbTE5MDsgdHlwZWRlZiBQMTkxIGl0ZW0xOTE7IHR5cGVkZWYgUDE5MiBpdGVtMTkyOyB0eXBlZGVmIFAxOTMgaXRlbTE5MzsgdHlwZWRlZiBQMTk0IGl0ZW0xOTQ7IHR5cGVkZWYgUDE5NSBpdGVtMTk1OyB0eXBlZGVmIFAxOTYgaXRlbTE5NjsgdHlwZWRlZiBQMTk3IGl0ZW0xOTc7IHR5cGVkZWYgUDE5OCBpdGVtMTk4OyB0eXBlZGVmIFAxOTkgaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLX19Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjayB7Ci0gICAgICAgIHR5cGVkZWYgViB0eXBlOwotICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IwPD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE8IFAwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyPCBQMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI8IFAwICwgUDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM8IFAwICwgUDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM8IFAwICwgUDEgLCBQMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFAzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBQMTk2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFAxOTYgLCBjbGFzcyBQMTk3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTYgLCBQMTk3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ICwgY2xhc3MgUDE5NiAsIGNsYXNzIFAxOTcgLCBjbGFzcyBQMTk4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTYgLCBQMTk3ICwgUDE5OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTYgLCBQMTk3ICwgUDE5OCAsIFQgPiB0eXBlOyB9OwotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjUwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjUwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA0MWNlNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3I1MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gQ29weXJpZ2h0IChDKSAyMDA1IFBlZGVyIEhvbHQKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLyBQcmVwcm9jZXNzZWQgY29kZSwgZG8gbm90IGVkaXQgbWFudWFsbHkgIQotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBJbmNyZWFzZV9ORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRT4gc3RydWN0IHZfaXRlcjsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5ICsgMT4gPiBuZXh0OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPSB2b2lkPiBzdHJ1Y3QgdmVjdG9yMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjA8PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwID4gc3RydWN0IHZlY3RvcjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxPCBQMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgPiBzdHJ1Y3QgdmVjdG9yMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI8IFAwICwgUDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiA+IHN0cnVjdCB2ZWN0b3IzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzwgUDAgLCBQMSAsIFAyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzID4gc3RydWN0IHZlY3RvcjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBQMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgPiBzdHJ1Y3QgdmVjdG9yNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSA+IHN0cnVjdCB2ZWN0b3I2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ID4gc3RydWN0IHZlY3RvcjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgPiBzdHJ1Y3QgdmVjdG9yOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCA+IHN0cnVjdCB2ZWN0b3I5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ID4gc3RydWN0IHZlY3RvcjEwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgPiBzdHJ1Y3QgdmVjdG9yMTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSA+IHN0cnVjdCB2ZWN0b3IxMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyID4gc3RydWN0IHZlY3RvcjEzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgPiBzdHJ1Y3QgdmVjdG9yMTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCA+IHN0cnVjdCB2ZWN0b3IxNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ID4gc3RydWN0IHZlY3RvcjE2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgPiBzdHJ1Y3QgdmVjdG9yMTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyA+IHN0cnVjdCB2ZWN0b3IxOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ID4gc3RydWN0IHZlY3RvcjE5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgPiBzdHJ1Y3QgdmVjdG9yMjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCA+IHN0cnVjdCB2ZWN0b3IyMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxID4gc3RydWN0IHZlY3RvcjIyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgPiBzdHJ1Y3QgdmVjdG9yMjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyA+IHN0cnVjdCB2ZWN0b3IyNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ID4gc3RydWN0IHZlY3RvcjI1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgPiBzdHJ1Y3QgdmVjdG9yMjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiA+IHN0cnVjdCB2ZWN0b3IyNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ID4gc3RydWN0IHZlY3RvcjI4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggPiBzdHJ1Y3QgdmVjdG9yMjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSA+IHN0cnVjdCB2ZWN0b3IzMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwID4gc3RydWN0IHZlY3RvcjMxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgPiBzdHJ1Y3QgdmVjdG9yMzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiA+IHN0cnVjdCB2ZWN0b3IzMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzID4gc3RydWN0IHZlY3RvcjM0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgPiBzdHJ1Y3QgdmVjdG9yMzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSA+IHN0cnVjdCB2ZWN0b3IzNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ID4gc3RydWN0IHZlY3RvcjM3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgPiBzdHJ1Y3QgdmVjdG9yMzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCA+IHN0cnVjdCB2ZWN0b3IzOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ID4gc3RydWN0IHZlY3RvcjQwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgPiBzdHJ1Y3QgdmVjdG9yNDEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSA+IHN0cnVjdCB2ZWN0b3I0MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyID4gc3RydWN0IHZlY3RvcjQzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgPiBzdHJ1Y3QgdmVjdG9yNDQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCA+IHN0cnVjdCB2ZWN0b3I0NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ID4gc3RydWN0IHZlY3RvcjQ2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgPiBzdHJ1Y3QgdmVjdG9yNDcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyA+IHN0cnVjdCB2ZWN0b3I0OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ID4gc3RydWN0IHZlY3RvcjQ5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgPiBzdHJ1Y3QgdmVjdG9yNTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci19fQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2sgewotICAgICAgICB0eXBlZGVmIFYgdHlwZTsKLSAgICB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMDw+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE8IFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxPCBQMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjwgUDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyPCBQMCAsIFAxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzPCBQMCAsIFAxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzPCBQMCAsIFAxICwgUDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBQMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBUID4gdHlwZTsgfTsKLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3VuaXRzL2RldGFpbC91dGlsaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5pdHMvZGV0YWlsL3V0aWxpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWVlYmMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5pdHMvZGV0YWlsL3V0aWxpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8vIEJvb3N0LlVuaXRzIC0gQSBDKysgbGlicmFyeSBmb3IgemVyby1vdmVyaGVhZCBkaW1lbnNpb25hbCBhbmFseXNpcyBhbmQgCi0vLyB1bml0L3F1YW50aXR5IG1hbmlwdWxhdGlvbiBhbmQgY29udmVyc2lvbgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IE1hdHRoaWFzIENocmlzdGlhbiBTY2hhYmVsCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDggU3RldmVuIFdhdGFuYWJlCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOSVRTX1VUSUxJVFlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VOSVRTX1VUSUxJVFlfSFBQCi0KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPHR5cGVpbmZvPgotI2luY2x1ZGUgPHN0cmluZz4KLQotI2lmIGRlZmluZWQoX19HTElCQ1hYX18pIHx8IGRlZmluZWQoX19HTElCQ1BQX18pCi0jZGVmaW5lIE5ETkJPT1NUX1VOSVRTX1VTRV9ERU1BTkdMSU5HCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jZW5kaWYgLy8gX19HTlVDX18KLQotI2lmZGVmIE5ETkJPT1NUX1VOSVRTX1VTRV9ERU1BTkdMSU5HCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3JlcGxhY2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdHMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotaW5saW5lCi1zdGQ6OnN0cmluZwotZGVtYW5nbGUoY29uc3QgY2hhciogbmFtZSkKLXsKLSAgICAvLyBuZWVkIHRvIGRlbWFuZ2xlIEMrKyBzeW1ib2xzCi0gICAgY2hhciogICAgICAgcmVhbG5hbWU7Ci0gICAgc3RkOjpzaXplX3QgbGVuOyAKLSAgICBpbnQgICAgICAgICBzdGF0OwotICAgICAKLSAgICByZWFsbmFtZSA9IGFiaTo6X19jeGFfZGVtYW5nbGUobmFtZSxOVUxMLCZsZW4sJnN0YXQpOwotICAgIAotICAgIGlmIChyZWFsbmFtZSAhPSBOVUxMKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgICBvdXQocmVhbG5hbWUpOwotICAgICAgICAKLSAgICAgICAgc3RkOjpmcmVlKHJlYWxuYW1lKTsKLSAgICAgICAgCi0gICAgICAgIG5kbmJvb3N0OjpyZXBsYWNlX2FsbChvdXQsIm5kbmJvb3N0Ojp1bml0czo6IiwiIik7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gb3V0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc3RkOjpzdHJpbmcoImRlbWFuZ2xlIDo6IGVycm9yIC0gdW5hYmxlIHRvIGRlbWFuZ2xlIHNwZWNpZmllZCBzeW1ib2wiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIEw+Ci1zdGQ6OnN0cmluZyBzaW1wbGlmeV90eXBlbmFtZShjb25zdCBMJiAvKnNvdXJjZSovKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICAgZGVtYW5nbGVkID0gZGV0YWlsOjpkZW1hbmdsZSh0eXBlaWQoTCkubmFtZSgpKTsKLQotICAgIHJldHVybiBkZW1hbmdsZWQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX1VOSVRTX1VTRV9ERU1BTkdMSU5HCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0cyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi1pbmxpbmUKLXN0ZDo6c3RyaW5nCi1kZW1hbmdsZShjb25zdCBjaGFyKiBuYW1lKQotewotICAgIHJldHVybiBuYW1lOwotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgTD4KLXN0ZDo6c3RyaW5nIHNpbXBsaWZ5X3R5cGVuYW1lKGNvbnN0IEwmIC8qc291cmNlKi8pCi17Ci0gICAgcmV0dXJuIHN0ZDo6c3RyaW5nKHR5cGVpZChMKS5uYW1lKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1bml0cwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyBUbyBnZXQgc3lzdGVtLXNwZWNpZmljIHByZWRlZmluZWQgbWFjcm9zOgotLy8gZ2NjIC1hcmNoIHBwYyAtZE0gLUUgLSA8IC9kZXYvbnVsbCB8IHNvcnQgCi0KLSNlbmRpZiAvLyBORE5CT09TVF9VTklUU19VU0VfREVNQU5HTElORwotCi0jZW5kaWYgLy8gTkROQk9PU1RfVU5JVFNfVVRJTElUWV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9hbGxvY2F0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYWxsb2NhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDZhOGVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9hbGxvY2F0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAxMSBEYW5pZWwgSmFtZXMuCi0vLyBDb3B5cmlnaHQgMjAwOSBQYWJsbyBIYWxwZXJuLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91bm9yZGVyZWQgZm9yIGRvY3VtZW50YXRpb24KLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfQUxMT0NBVEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9BTExPQ0FURV9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9tb3ZlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9sdmFsdWVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90dXBsZS90dXBsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc2VsZWN0X3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRSkKLSNpbmNsdWRlIDx0dXBsZT4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTEyKSAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzQ1KSAvLyBiZWhhdmlvciBjaGFuZ2U6IGFuIG9iamVjdCBvZiBQT0QgdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0ZWQgd2l0aCBhbiBpbml0aWFsaXplciBvZiB0aGUgZm9ybSAoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBkZWZhdWx0LWluaXRpYWxpemVkLgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfTElNSVQgMTAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIEJpdHMgYW5kIHBpZWNlcyBmb3IgaW1wbGVtZW50aW5nIHRyYWl0cwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfbHZhbHVlX3JlZmVyZW5jZTxUPjo6dHlwZSBtYWtlKCk7Ci0gICAgc3RydWN0IGNob2ljZTkgeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVs5XTsgfTsKLSAgICBzdHJ1Y3QgY2hvaWNlOCA6IGNob2ljZTkgeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVs4XTsgfTsKLSAgICBzdHJ1Y3QgY2hvaWNlNyA6IGNob2ljZTggeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVs3XTsgfTsKLSAgICBzdHJ1Y3QgY2hvaWNlNiA6IGNob2ljZTcgeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVs2XTsgfTsKLSAgICBzdHJ1Y3QgY2hvaWNlNSA6IGNob2ljZTYgeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVs1XTsgfTsKLSAgICBzdHJ1Y3QgY2hvaWNlNCA6IGNob2ljZTUgeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVs0XTsgfTsKLSAgICBzdHJ1Y3QgY2hvaWNlMyA6IGNob2ljZTQgeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVszXTsgfTsKLSAgICBzdHJ1Y3QgY2hvaWNlMiA6IGNob2ljZTMgeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVsyXTsgfTsKLSAgICBzdHJ1Y3QgY2hvaWNlMSA6IGNob2ljZTIgeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVsxXTsgfTsKLSAgICBjaG9pY2UxIGNob29zZSgpOwotCi0gICAgdHlwZWRlZiBjaG9pY2UxOjp0eXBlIHllc190eXBlOwotICAgIHR5cGVkZWYgY2hvaWNlMjo6dHlwZSBub190eXBlOwotCi0gICAgc3RydWN0IHByaXZhdGVfdHlwZQotICAgIHsKLSAgICAgICBwcml2YXRlX3R5cGUgY29uc3QgJm9wZXJhdG9yLChpbnQpIGNvbnN0OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBub190eXBlIGlzX3ByaXZhdGVfdHlwZShUIGNvbnN0Jik7Ci0gICAgeWVzX3R5cGUgaXNfcHJpdmF0ZV90eXBlKHByaXZhdGVfdHlwZSBjb25zdCYpOwotCi0gICAgc3RydWN0IGNvbnZlcnRfZnJvbV9hbnl0aGluZyB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBjb252ZXJ0X2Zyb21fYW55dGhpbmcoVCBjb25zdCYpOwotICAgIH07Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gZW1wbGFjZV9hcmdzCi0gICAgLy8KLSAgICAvLyBFaXRoZXIgZm9yd2FyZGluZyB2YXJpYWRpYyBhcmd1bWVudHMsIG9yIHN0b3JpbmcgdGhlIGFyZ3VtZW50cyBpbgotICAgIC8vIGVtcGxhY2VfYXJncyMjbgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFIHR5cGVuYW1lLi4uIEFyZ3MKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUyBORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIGFyZ3MKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfRk9SV0FSRCBuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLgotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MxKGEwKSBhMAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTMihhMCwgYTEpIGEwLCBhMQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTMyhhMCwgYTEsIGEyKSBhMCwgYTEsIGEyCi0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfVEVNUExBVEUgdHlwZW5hbWUgQXJncwotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTIEFyZ3MgY29uc3QmIGFyZ3MKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfRk9SV0FSRCBhcmdzCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0ZXRF9QQVJBTSh6LCBuLCBhKSBcCi0gICAgTkROQk9PU1RfRldEX1JFRihORE5CT09TVF9QUF9DQVQoQSwgbikpIE5ETkJPT1NUX1BQX0NBVChhLCBuKQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DQUxMX0ZPUldBUkQoeiwgaSwgYSkgXAotICAgIG5kbmJvb3N0Ojpmb3J3YXJkPE5ETkJPT1NUX1BQX0NBVChBLGkpPihORE5CT09TVF9QUF9DQVQoYSxpKSkKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRUFSR1MoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKT4gICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChlbXBsYWNlX2FyZ3MsIG4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfRUFSR1NfTUVNQkVSLCBfKSAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChlbXBsYWNlX2FyZ3MsIG4pICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1ooeiwgbiwgQXJnLCBiKSAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKSA6IE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19JTklULCBfKSAgICAgICAgICAgICBcCi0gICAgICAgIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpPiAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpbmxpbmUgTkROQk9PU1RfUFBfQ0FUKGVtcGxhY2VfYXJncywgbikgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgID4gY3JlYXRlX2VtcGxhY2VfYXJncyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0ZXRF9QQVJBTSwgYikgICAgICAgICAgICAgICAgICBcCi0gICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGVtcGxhY2VfYXJncywgbikgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIEEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA+IGUoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCBiKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MxIGNyZWF0ZV9lbXBsYWNlX2FyZ3MKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUzIgY3JlYXRlX2VtcGxhY2VfYXJncwotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTMyBjcmVhdGVfZW1wbGFjZV9hcmdzCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19NRU1CRVIoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgTkROQk9PU1RfRldEX1JFRihORE5CT09TVF9QUF9DQVQoQSwgbikpIE5ETkJPT1NUX1BQX0NBVChBcmcsIG4pOyAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQXJnLCBuKSBORE5CT09TVF9QUF9DQVQoYSwgbik7Ci0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTX0lOSVQoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKGEsIG4pKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxORE5CT09TVF9QUF9DQVQoQSxuKT4oTkROQk9PU1RfUFBfQ0FUKGIsIG4pKSkKLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRUFSR1NfTUVNQkVSKHosIG4sIF8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfbHZhbHVlX3JlZmVyZW5jZTxORE5CT09TVF9QUF9DQVQoQSwgbik+Ojp0eXBlICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChBcmcsIG4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChBcmcsIG4pIE5ETkJPT1NUX1BQX0NBVChhLCBuKTsKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRUFSR1NfSU5JVCh6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9DQVQoYSwgbikoTkROQk9PU1RfUFBfQ0FUKGIsIG4pKQotCi0jZW5kaWYKLQotTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oMSwgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfTElNSVQsIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHUywKLSAgICBfKQotCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRklORV9FTVBMQUNFX0FSR1MKLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfRUFSR1NfTUVNQkVSCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTX0lOSVQKLQotI2VuZGlmCi0KLX19fQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIFBpY2sgd2hpY2ggdmVyc2lvbiBvZiBhbGxvY2F0b3JfdHJhaXRzIHRvIHVzZQotLy8KLS8vIDAgPSBPd24gcGFydGlhbCBpbXBsZW1lbnRhdGlvbgotLy8gMSA9IHN0ZDo6YWxsb2NhdG9yX3RyYWl0cwotLy8gMiA9IG5kbmJvb3N0Ojpjb250YWluZXI6OmFsbG9jYXRvcl90cmFpdHMKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfQUxMT0NBVE9SX1RSQUlUUykKLSMgICBpZiBkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKSAmJiBcCi0gICAgICAgICAgICAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDcpKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTIDAKLSMgICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICAgICAgaWYgTkROQk9PU1RfTVNWQyA8IDE0MDAKLSAgICAgICAgICAgIC8vIFVzZSBjb250YWluZXIncyBhbGxvY2F0b3JfdHJhaXRzIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBWaXN1YWwKLSAgICAgICAgICAgIC8vIEMrKyBhcyBJIGRvbid0IHRlc3Qgd2l0aCB0aGVtLgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfQUxMT0NBVE9SX1RSQUlUUyAyCi0jICAgICAgIGVuZGlmCi0jICAgZW5kaWYKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTKQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMgMAotI2VuZGlmCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gU29tZSB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBhbGxvY2F0b3JfdHJhaXRzLCBidXQgdXNlZnVsIGVsc2V3aGVyZSBzbwotLy8gdGhleSdyZSBhbHdheXMgZGVmaW5lZC4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUykKLSMgIGluY2x1ZGUgPHR5cGVfdHJhaXRzPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBJbnRlZ3JhbF9jb25zdHJhbnQsIHRydWVfdHlwZSwgZmFsc2VfdHlwZQotICAgIC8vCi0gICAgLy8gVXNlcyB0aGUgc3RhbmRhcmQgdmVyc2lvbnMgaWYgYXZhaWxhYmxlLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTKQotCi0gICAgdXNpbmcgc3RkOjppbnRlZ3JhbF9jb25zdGFudDsKLSAgICB1c2luZyBzdGQ6OnRydWVfdHlwZTsKLSAgICB1c2luZyBzdGQ6OmZhbHNlX3R5cGU7Ci0KLSNlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCBWYWx1ZT4KLSAgICBzdHJ1Y3QgaW50ZWdyYWxfY29uc3RhbnQgeyBlbnVtIHsgdmFsdWUgPSBWYWx1ZSB9OyB9OwotCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+IHRydWVfdHlwZTsKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+IGZhbHNlX3R5cGU7Ci0KLSNlbmRpZgotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIEV4cGxpY2l0bHkgY2FsbCBhIGRlc3RydWN0b3IKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMCkgLy8gdW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJhbWV0ZXIKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgaW5saW5lIHZvaWQgZGVzdHJveShUKiB4KSB7Ci0gICAgICAgIHgtPn5UKCk7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIEV4cHJlc3Npb24gdGVzdCBtZWNoYW5pc20KLSAgICAvLwotICAgIC8vIFdoZW4gU0ZJTkFFIGV4cHJlc3Npb25zIGFyZSBhdmFpbGFibGUsIGRlZmluZQotICAgIC8vIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfRlVOQ1RJT04gd2hpY2ggY2FuIGNoZWNrIGlmIGEgZnVuY3Rpb24gY2FsbCBpcwotICAgIC8vIHN1cHBvcnRlZCBieSBhIGNsYXNzLCBvdGhlcndpc2UgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfTUVNQkVSIHdoaWNoCi0gICAgLy8gY2FuIGRldGVjdCBpZiBhIGNsYXNzIGhhcyB0aGUgc3BlY2lmaWVkIG1lbWJlciwgYnV0IG5vdCB0aGF0IGl0IGhhcyB0aGUKLSAgICAvLyBjb3JyZWN0IHR5cGUsIHRoaXMgaXMgZ29vZCBlbm91Z2ggZm9yIGEgcGFzc2FibGUgaW1wcmVzc2lvbiBvZgotICAgIC8vIGFsbG9jYXRvcl90cmFpdHMuCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUVfRVhQUikKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB1bnNpZ25lZCBpbnQ+IHN0cnVjdCBleHByX3Rlc3Q7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBleHByX3Rlc3Q8VCwgc2l6ZW9mKGNoYXIpPiA6IFQge307Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0YXRpYyBjaGFyIGZvcl9leHByX3Rlc3QoVSBjb25zdCYpOwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DSEVDS19FWFBSRVNTSU9OKGNvdW50LCByZXN1bHQsIGV4cHJlc3Npb24pICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZXhwcl90ZXN0PCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoY2hvaWNlLCByZXN1bHQpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Zm9yX2V4cHJfdGVzdCgoICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAoZXhwcmVzc2lvbiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAwKSkpPjo6dHlwZSB0ZXN0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgY291bnQpKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX0VYUFJFU1NJT04oY291bnQsIHJlc3VsdCkgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIHJlc3VsdCk6OnR5cGUgdGVzdCggICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoY2hvaWNlLCBjb3VudCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19GVU5DVElPTihuYW1lLCB0aGluZywgYXJncywgXykgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChoYXNfLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0NIRUNLX0VYUFJFU1NJT04oMSwgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8IHRoaW5nID4oKS5uYW1lIGFyZ3MpOyAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9FWFBSRVNTSU9OKDIsIDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVudW0geyB2YWx1ZSA9IHNpemVvZih0ZXN0PFQ+KGNob29zZSgpKSkgPT0gc2l6ZW9mKGNob2ljZTE6OnR5cGUpIH07XAotICAgIH0KLQotI2Vsc2UKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaWRlbnRpdHkgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ0hFQ0tfTUVNQkVSKGNvdW50LCByZXN1bHQsIG5hbWUsIG1lbWJlcikgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmlkZW50aXR5PG1lbWJlcj46OnR5cGUgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoY2hlY2ssIGNvdW50KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPE5ETkJPT1NUX1BQX0NBVChjaGVjaywgY291bnQpIGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQodGVzdCwgY291bnQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoY2hvaWNlLCByZXN1bHQpIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gc3RhdGljIHR5cGVuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVCh0ZXN0LCBjb3VudCk8JlU6Om5hbWU+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZXN0KE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIGNvdW50KSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9NRU1CRVIoY291bnQsIHJlc3VsdCkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gc3RhdGljIE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIHJlc3VsdCk6OnR5cGUgICAgICAgICAgICBcCi0gICAgICAgIHRlc3QoTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgY291bnQpKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfTUVNQkVSKG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoaGFzXywgbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0cnVjdCBpbXBsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RydWN0IGJhc2VfbWl4aW4geyBpbnQgbmFtZTsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0cnVjdCBiYXNlIDogcHVibGljIFQsIHB1YmxpYyBiYXNlX21peGluIHt9OyAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0NIRUNLX01FTUJFUigxLCAxLCBuYW1lLCBpbnQgYmFzZV9taXhpbjo6Kik7ICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX01FTUJFUigyLCAyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZW51bSB7IHZhbHVlID0gc2l6ZW9mKGNob2ljZTI6OnR5cGUpID09ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBzaXplb2YodGVzdDxiYXNlPihjaG9vc2UoKSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVudW0geyB2YWx1ZSA9IGltcGw6OnZhbHVlIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotI2VuZGlmCi0KLX19fQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIEFsbG9jYXRvciB0cmFpdHMKLS8vCi0vLyBGaXJzdCBvdXIgaW1wbGVtZW50YXRpb24sIHRoZW4gbGF0ZXIgbGlnaHQgd3JhcHBlcnMgYXJvdW5kIHRoZSBhbHRlcm5hdGl2ZXMKLQotI2lmIE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfQUxMT0NBVE9SX1RSQUlUUyA9PSAwCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wb2ludGVyX3RvX290aGVyLmhwcD4KLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBlbmRpZgotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKSAmJiBcCi0gICAgICAgICFkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9GVUxMX0NPTlNUUlVDVCAxCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9GVUxMX0NPTlNUUlVDVCAwCi0jICAgZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8gVE9ETzogRG9lcyB0aGlzIG1hdGNoIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OnJlYmluZF9hbGxvYzxUPj8KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlYmluZF93cmFwCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jOjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgcmViaW5kPFQ+OjpvdGhlciB0eXBlOwotICAgIH07Ci0KLSMgICBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIE5ETkJPT1NUX01TVkMgPD0gMTQwMAotCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHRuYW1lKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUcCwgdHlwZW5hbWUgRGVmYXVsdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgZGVmYXVsdF90eXBlXyAjIyB0bmFtZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNob2ljZTE6OnR5cGUgdGVzdChjaG9pY2UxLCB0eXBlbmFtZSBYOjp0bmFtZSogPSAwKTsgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNob2ljZTI6OnR5cGUgdGVzdChjaG9pY2UyLCB2b2lkKiA9IDApOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdHJ1Y3QgRGVmYXVsdFdyYXAgeyB0eXBlZGVmIERlZmF1bHQgdG5hbWU7IH07ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVudW0geyB2YWx1ZSA9ICgxID09IHNpemVvZih0ZXN0PFRwPihjaG9vc2UoKSkpKSB9OyAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppZl90cnVlPHZhbHVlPjo6ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9ORVNURURfVEVNUExBVEUgdGhlbjxUcCwgRGVmYXVsdFdyYXA+ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgOjp0eXBlOjp0bmFtZSB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSMgICBlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVDI+Ci0gICAgc3RydWN0IHNmaW5hZSA6IFQyIHt9OwotCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHRuYW1lKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUcCwgdHlwZW5hbWUgRGVmYXVsdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgZGVmYXVsdF90eXBlXyAjIyB0bmFtZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6c2ZpbmFlPCAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgWDo6dG5hbWUsIGNob2ljZTE+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdGVzdChjaG9pY2UxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgY2hvaWNlMjo6dHlwZSB0ZXN0KGNob2ljZTIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0cnVjdCBEZWZhdWx0V3JhcCB7IHR5cGVkZWYgRGVmYXVsdCB0bmFtZTsgfTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW51bSB7IHZhbHVlID0gKDEgPT0gc2l6ZW9mKHRlc3Q8VHA+KGNob29zZSgpKSkpIH07ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmlmX3RydWU8dmFsdWU+OjogICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX05FU1RFRF9URU1QTEFURSB0aGVuPFRwLCBEZWZhdWx0V3JhcD4gICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICA6OnR5cGU6OnRuYW1lIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRShULHRuYW1lLCBhcmcpICAgICAgICAgICAgICAgICAgIFwKLSAgICB0eXBlbmFtZSBkZWZhdWx0X3R5cGVfICMjIHRuYW1lPFQsIGFyZz46OnR5cGUKLQotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQocG9pbnRlcik7Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVChjb25zdF9wb2ludGVyKTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHZvaWRfcG9pbnRlcik7Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVChjb25zdF92b2lkX3BvaW50ZXIpOwotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQoZGlmZmVyZW5jZV90eXBlKTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHNpemVfdHlwZSk7Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVChwcm9wYWdhdGVfb25fY29udGFpbmVyX2NvcHlfYXNzaWdubWVudCk7Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVChwcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudCk7Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVChwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXApOwotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIpCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX0ZVTkNUSU9OKAotICAgICAgICBzZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uLCBVIGNvbnN0LCAoKSwgMAotICAgICk7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX0ZVTkNUSU9OKAotICAgICAgICBtYXhfc2l6ZSwgVSBjb25zdCwgKCksIDAKLSAgICApOwotCi0jICAgICAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19GVU5DVElPTigKLSAgICBjb25zdHJ1Y3QsIFUsICgKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYWtlPFZhbHVlVHlwZSo+KCksCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTxBcmdzIGNvbnN0PigpLi4uKSwgMgotICAgICk7Ci0KLSMgICAgICAgZWxzZQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX0ZVTkNUSU9OKAotICAgIGNvbnN0cnVjdCwgVSwgKAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8VmFsdWVUeXBlKj4oKSwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYWtlPFZhbHVlVHlwZSBjb25zdD4oKSksIDIKLSAgICApOwotCi0jICAgICAgIGVuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfRlVOQ1RJT04oCi0gICAgICAgIGRlc3Ryb3ksIFUsIChuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8VmFsdWVUeXBlKj4oKSksIDEKLSAgICApOwotCi0jICAgZWxzZQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19NRU1CRVIoc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbik7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX01FTUJFUihtYXhfc2l6ZSk7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfTUVNQkVSKGNvbnN0cnVjdCk7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfTUVNQkVSKGRlc3Ryb3kpOwotCi0jICAgZW5kaWYKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLSAgICBpbmxpbmUgQWxsb2MgY2FsbF9zZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKGNvbnN0IEFsbG9jJiByaHMsCi0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Ci0gICAgICAgICAgICBoYXNfc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbjxBbGxvYz46OnZhbHVlLCB2b2lkKgotICAgICAgICA+Ojp0eXBlID0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiByaHMuc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLSAgICBpbmxpbmUgQWxsb2MgY2FsbF9zZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKGNvbnN0IEFsbG9jJiByaHMsCi0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OgotICAgICAgICAgICAgaGFzX3NlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb248QWxsb2M+Ojp2YWx1ZSwgdm9pZCoKLSAgICAgICAgPjo6dHlwZSA9IDApCi0gICAgewotICAgICAgICByZXR1cm4gcmhzOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTaXplVHlwZSwgdHlwZW5hbWUgQWxsb2M+Ci0gICAgaW5saW5lIFNpemVUeXBlIGNhbGxfbWF4X3NpemUoY29uc3QgQWxsb2MmIGEsCi0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX21heF9zaXplPEFsbG9jPjo6dmFsdWUsIHZvaWQqCi0gICAgICAgID46OnR5cGUgPSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEubWF4X3NpemUoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2l6ZVR5cGUsIHR5cGVuYW1lIEFsbG9jPgotICAgIGlubGluZSBTaXplVHlwZSBjYWxsX21heF9zaXplKGNvbnN0IEFsbG9jJiwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX21heF9zaXplPEFsbG9jPjo6dmFsdWUsIHZvaWQqCi0gICAgICAgID46OnR5cGUgPSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPFNpemVUeXBlPjo6bWF4KSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLSAgICBzdHJ1Y3QgYWxsb2NhdG9yX3RyYWl0cwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBBbGxvYyBhbGxvY2F0b3JfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBbGxvYzo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRShBbGxvYywgcG9pbnRlciwgdmFsdWVfdHlwZSopCi0gICAgICAgICAgICBwb2ludGVyOwotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgcG9pbnRlcl90b19vdGhlciA6IG5kbmJvb3N0Ojpwb2ludGVyX3RvX290aGVyPHBvaW50ZXIsIFQ+IHt9OwotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRShBbGxvYywgY29uc3RfcG9pbnRlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIHBvaW50ZXJfdG9fb3RoZXI8Y29uc3QgdmFsdWVfdHlwZT46OnR5cGUpCi0gICAgICAgICAgICBjb25zdF9wb2ludGVyOwotCi0gICAgICAgIC8vdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKEFsbG9jLCB2b2lkX3BvaW50ZXIsCi0gICAgICAgIC8vICAgIHR5cGVuYW1lIHBvaW50ZXJfdG9fb3RoZXI8dm9pZD46OnR5cGUpCi0gICAgICAgIC8vICAgIHZvaWRfcG9pbnRlcjsKLSAgICAgICAgLy8KLSAgICAgICAgLy90eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoQWxsb2MsIGNvbnN0X3ZvaWRfcG9pbnRlciwKLSAgICAgICAgLy8gICAgdHlwZW5hbWUgcG9pbnRlcl90b19vdGhlcjxjb25zdCB2b2lkPjo6dHlwZSkKLSAgICAgICAgLy8gICAgY29uc3Rfdm9pZF9wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRShBbGxvYywgZGlmZmVyZW5jZV90eXBlLAotICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3QpIGRpZmZlcmVuY2VfdHlwZTsKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoQWxsb2MsIHNpemVfdHlwZSwgc3RkOjpzaXplX3QpCi0gICAgICAgICAgICBzaXplX3R5cGU7Ci0KLSAgICAgICAgLy8gVE9ETzogcmViaW5kX2FsbG9jIGFuZCByZWJpbmRfdHJhaXRzCi0KLSAgICAgICAgc3RhdGljIHBvaW50ZXIgYWxsb2NhdGUoQWxsb2MmIGEsIHNpemVfdHlwZSBuKQotICAgICAgICAgICAgeyByZXR1cm4gYS5hbGxvY2F0ZShuKTsgfQotCi0gICAgICAgIC8vIEkgbmV2ZXIgdXNlIHRoaXMsIHNvIEknbGwganVzdCBjb21tZW50IGl0IG91dCBmb3Igbm93LgotICAgICAgICAvLwotICAgICAgICAvL3N0YXRpYyBwb2ludGVyIGFsbG9jYXRlKEFsbG9jJiBhLCBzaXplX3R5cGUgbiwKLSAgICAgICAgLy8gICAgICAgIGNvbnN0X3ZvaWRfcG9pbnRlciBoaW50KQotICAgICAgICAvLyAgICB7IHJldHVybiBERUZBVUxUX0ZVTkMoYWxsb2NhdGUsIHBvaW50ZXIpKGEsIG4sIGhpbnQpOyB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZShBbGxvYyYgYSwgcG9pbnRlciBwLCBzaXplX3R5cGUgbikKLSAgICAgICAgICAgIHsgYS5kZWFsbG9jYXRlKHAsIG4pOyB9Ci0KLSAgICBwdWJsaWM6Ci0KLSMgICBpZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0ZVTExfQ09OU1RSVUNUCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfY29uc3RydWN0PEFsbG9jLCBULCBBcmdzLi4uPgotICAgICAgICAgICAgICAgIDo6dmFsdWU+Ojp0eXBlCi0gICAgICAgICAgICBjb25zdHJ1Y3QoQWxsb2MmIGEsIFQqIHAsIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4geCkKLSAgICAgICAgewotICAgICAgICAgICAgYS5jb25zdHJ1Y3QocCwgbmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oeCkuLi4pOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2NvbnN0cnVjdDxBbGxvYywgVCwgQXJncy4uLj4KLSAgICAgICAgICAgICAgICA6OnZhbHVlPjo6dHlwZQotICAgICAgICAgICAgY29uc3RydWN0KEFsbG9jJiwgVCogcCwgTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXcgKCh2b2lkKikgcCkgVChuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPih4KS4uLik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19kZXN0cm95PEFsbG9jLCBUPjo6dmFsdWU+Ojp0eXBlCi0gICAgICAgICAgICBkZXN0cm95KEFsbG9jJiBhLCBUKiBwKQotICAgICAgICB7Ci0gICAgICAgICAgICBhLmRlc3Ryb3kocCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfZGVzdHJveTxBbGxvYywgVD46OnZhbHVlPjo6dHlwZQotICAgICAgICAgICAgZGVzdHJveShBbGxvYyYsIFQqIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveShwKTsKLSAgICAgICAgfQotCi0jICAgZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUVfRVhQUikKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19jb25zdHJ1Y3Q8QWxsb2MsIFQ+Ojp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGNvbnN0cnVjdChBbGxvYyYgYSwgVCogcCwgVCBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgYS5jb25zdHJ1Y3QocCwgeCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfY29uc3RydWN0PEFsbG9jLCBUPjo6dmFsdWU+Ojp0eXBlCi0gICAgICAgICAgICBjb25zdHJ1Y3QoQWxsb2MmLCBUKiBwLCBUIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXcgKCh2b2lkKikgcCkgVCh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2Rlc3Ryb3k8QWxsb2MsIFQ+Ojp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGRlc3Ryb3koQWxsb2MmIGEsIFQqIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGEuZGVzdHJveShwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19kZXN0cm95PEFsbG9jLCBUPjo6dmFsdWU+Ojp0eXBlCi0gICAgICAgICAgICBkZXN0cm95KEFsbG9jJiwgVCogcCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95KHApOwotICAgICAgICB9Ci0KLSMgICBlbHNlCi0KLSAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBTRklOQUUgZXhwcmVzc2lvbnMsIG9ubHkgY2FsbCBjb25zdHJ1Y3QgZm9yIHRoZQotICAgICAgICAvLyBjb3B5IGNvbnN0cnVjdG9yIGZvciB0aGUgYWxsb2NhdG9yJ3MgdmFsdWVfdHlwZSAtIGFzIHRoYXQncwotICAgICAgICAvLyB0aGUgb25seSBjb25zdHJ1Y3QgbWV0aG9kIHRoYXQgb2xkIGZhc2hpb25lZCBhbGxvY2F0b3JzIHN1cHBvcnQuCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvYyYgYSwgVCogcCwgVCBjb25zdCYgeCwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfY29uc3RydWN0PEFsbG9jLCBUPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8VCwgdmFsdWVfdHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICB2b2lkKj46OnR5cGUgPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBhLmNvbnN0cnVjdChwLCB4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3QoQWxsb2MmLCBUKiBwLCBUIGNvbnN0JiB4LAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19jb25zdHJ1Y3Q8QWxsb2MsIFQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPFQsIHZhbHVlX3R5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICB2b2lkKj46OnR5cGUgPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXcgKCh2b2lkKikgcCkgVCh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEFsbG9jJiBhLCBUKiBwLAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2Rlc3Ryb3k8QWxsb2MsIFQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPFQsIHZhbHVlX3R5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICB2b2lkKj46OnR5cGUgPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBhLmRlc3Ryb3kocCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShBbGxvYyYsIFQqIHAsCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2Rlc3Ryb3k8QWxsb2MsIFQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPFQsIHZhbHVlX3R5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICB2b2lkKj46OnR5cGUgPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3kocCk7Ci0gICAgICAgIH0KLQotIyAgIGVuZGlmCi0KLSAgICAgICAgc3RhdGljIHNpemVfdHlwZSBtYXhfc2l6ZShjb25zdCBBbGxvYyYgYSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y2FsbF9tYXhfc2l6ZTxzaXplX3R5cGU+KGEpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWxsb2NhdG9yIHByb3BhZ2F0aW9uIG9uIGNvbnN0cnVjdGlvbgotCi0gICAgICAgIHN0YXRpYyBBbGxvYyBzZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKEFsbG9jIGNvbnN0JiByaHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OgotICAgICAgICAgICAgICAgIGNhbGxfc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbihyaHMpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWxsb2NhdG9yIHByb3BhZ2F0aW9uIG9uIGFzc2lnbm1lbnQgYW5kIHN3YXAuCi0gICAgICAgIC8vIFJldHVybiB0cnVlIGlmIGxocyBpcyBtb2RpZmllZC4KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKAotICAgICAgICAgICAgQWxsb2MsIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50LCBmYWxzZV90eXBlKQotICAgICAgICAgICAgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQ7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRSgKLSAgICAgICAgICAgIEFsbG9jLHByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50LCBmYWxzZV90eXBlKQotICAgICAgICAgICAgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQ7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRSgKLSAgICAgICAgICAgIEFsbG9jLHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcCxmYWxzZV90eXBlKQotICAgICAgICAgICAgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOwotICAgIH07Ci19fX0KLQotIyAgIHVuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQKLSMgICB1bmRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gc3RkOjphbGxvY2F0b3JfdHJhaXRzCi0KLSNlbGlmIE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfQUxMT0NBVE9SX1RSQUlUUyA9PSAxCi0KLSMgICBpbmNsdWRlIDxtZW1vcnk+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9GVUxMX0NPTlNUUlVDVCAxCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLSAgICBzdHJ1Y3QgYWxsb2NhdG9yX3RyYWl0cyA6IHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz4ge307Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlYmluZF93cmFwCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OgotICAgICAgICAgICAgdGVtcGxhdGUgcmViaW5kX2FsbG9jPFQ+IHR5cGU7Ci0gICAgfTsKLX19fQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIG5kbmJvb3N0Ojpjb250YWluZXI6OmFsbG9jYXRvcl90cmFpdHMKLQotI2VsaWYgTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTID09IDIKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbnRhaW5lci9hbGxvY2F0b3JfdHJhaXRzLmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0ZVTExfQ09OU1RSVUNUIDAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIHN0cnVjdCBhbGxvY2F0b3JfdHJhaXRzIDoKLSAgICAgICAgbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz4ge307Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlYmluZF93cmFwIDoKLSAgICAgICAgbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OgotICAgICAgICAgICAgdGVtcGxhdGUgcG9ydGFibGVfcmViaW5kX2FsbG9jPFQ+Ci0gICAge307Ci0KLX19fQotCi0jZWxzZQotCi0jZXJyb3IgIkludmFsaWQgTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTIHZhbHVlLiIKLQotI2VuZGlmCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGNhbGxfY29uc3RydWN0Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0KLSMgICBpZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0ZVTExfQ09OU1RSVUNUCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgaW5saW5lIHZvaWQgY2FsbF9jb25zdHJ1Y3QoQWxsb2MmIGFsbG9jLCBUKiBhZGRyZXNzLAotICAgICAgICBORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIGFyZ3MpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+Ojpjb25zdHJ1Y3QoYWxsb2MsCi0gICAgICAgICAgICBhZGRyZXNzLCBuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBUPgotICAgIGlubGluZSB2b2lkIGRlc3Ryb3lfdmFsdWVfaW1wbChBbGxvYyYgYWxsb2MsIFQqIHgpIHsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6ZGVzdHJveShhbGxvYywgeCk7Ci0gICAgfQotCi0KLSMgICBlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgaW5saW5lIHZvaWQgY2FsbF9jb25zdHJ1Y3QoQWxsb2MmLCBUKiBhZGRyZXNzLAotICAgICAgICBORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIGFyZ3MpCi0gICAgewotICAgICAgICBuZXcoKHZvaWQqKSBhZGRyZXNzKSBUKG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQgZGVzdHJveV92YWx1ZV9pbXBsKEFsbG9jJiwgVCogeCkgewotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3koeCk7Ci0gICAgfQotCi0KLSMgICBlbmRpZgotCi0jZWxzZQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBUPgotICAgIGlubGluZSB2b2lkIGRlc3Ryb3lfdmFsdWVfaW1wbChBbGxvYyYsIFQqIHgpIHsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95KHgpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gQ29uc3RydWN0IGZyb20gdHVwbGUKLSAgICAvLwotICAgIC8vIFVzZWQgZm9yIHBpZWNld2lzZSBjb25zdHJ1Y3Rpb24uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFKG4sIG5hbWVzcGFjZV8pICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgY29uc3RydWN0X2Zyb21fdHVwbGUoQWxsb2MmIGFsbG9jLCBUKiBwdHIsIG5hbWVzcGFjZV8gdHVwbGU8PikgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y2FsbF9jb25zdHJ1Y3QoYWxsb2MsIHB0cik7ICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oMSwgbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEVfSU1QTCwgbmFtZXNwYWNlXykKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEVfSU1QTCh6LCBuLCBuYW1lc3BhY2VfKSAgICAgIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgY29uc3RydWN0X2Zyb21fdHVwbGUoQWxsb2MmIGFsbG9jLCBUKiBwdHIsICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5hbWVzcGFjZV8gdHVwbGU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCBBKT4gY29uc3QmIHgpICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNhbGxfY29uc3RydWN0KGFsbG9jLCBwdHIsICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9HRVRfVFVQTEVfQVJHLCBuYW1lc3BhY2VfKSBcCi0gICAgICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfR0VUX1RVUExFX0FSRyh6LCBuLCBuYW1lc3BhY2VfKSAgICAgICAgICAgICAgICAgIFwKLSAgICBuYW1lc3BhY2VfIGdldDxuPih4KQotCi0jZWxpZiAhZGVmaW5lZChfX1NVTlBST19DQykKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEUobiwgbmFtZXNwYWNlXykgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZShBbGxvYyYsIFQqIHB0ciwgbmFtZXNwYWNlXyB0dXBsZTw+KSAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmV3ICgodm9pZCopIHB0cikgVCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTygxLCBuLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRV9JTVBMLCBuYW1lc3BhY2VfKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRV9JTVBMKHosIG4sIG5hbWVzcGFjZV8pICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKT4gICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZShBbGxvYyYsIFQqIHB0ciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIEEpPiBjb25zdCYgeCkgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5ldyAoKHZvaWQqKSBwdHIpIFQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0dFVF9UVVBMRV9BUkcsIG5hbWVzcGFjZV8pIFwKLSAgICAgICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9HRVRfVFVQTEVfQVJHKHosIG4sIG5hbWVzcGFjZV8pICAgICAgICAgICAgICAgICAgXAotICAgIG5hbWVzcGFjZV8gZ2V0PG4+KHgpCi0KLSNlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8aW50IE4+IHN0cnVjdCBsZW5ndGgge307Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFKG4sIG5hbWVzcGFjZV8pICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgY29uc3RydWN0X2Zyb21fdHVwbGVfaW1wbCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bGVuZ3RoPDA+LCBBbGxvYyYsIFQqIHB0ciwgICAgICAgICAgICBcCi0gICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPD4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmV3ICgodm9pZCopIHB0cikgVCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTygxLCBuLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRV9JTVBMLCBuYW1lc3BhY2VfKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRV9JTVBMKHosIG4sIG5hbWVzcGFjZV8pICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKT4gICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZV9pbXBsKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpsZW5ndGg8bj4sIEFsbG9jJiwgVCogcHRyLCAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5hbWVzcGFjZV8gdHVwbGU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCBBKT4gY29uc3QmIHgpICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZXcgKCh2b2lkKikgcHRyKSBUKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9HRVRfVFVQTEVfQVJHLCBuYW1lc3BhY2VfKSBcCi0gICAgICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfR0VUX1RVUExFX0FSRyh6LCBuLCBuYW1lc3BhY2VfKSAgICAgICAgICAgICAgICAgIFwKLSAgICBuYW1lc3BhY2VfIGdldDxuPih4KQotCi0jZW5kaWYKLQotTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFKDEwLCBuZG5ib29zdDo6KQotCi0jaWYgIWRlZmluZWQoX19TVU5QUk9fQ0MpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRSkKLSAgIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRSgxMCwgc3RkOjopCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRQotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRV9JTVBMCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0dFVF9UVVBMRV9BUkcKLQotI2lmIGRlZmluZWQoX19TVU5QUk9fQ0MpCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR1cGxlPgotICAgIHZvaWQgY29uc3RydWN0X2Zyb21fdHVwbGUoQWxsb2MmIGFsbG9jLCBUKiBwdHIsIFR1cGxlIGNvbnN0JiB4KQotICAgIHsKLSAgICAgICAgY29uc3RydWN0X2Zyb21fdHVwbGVfaW1wbCgKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bGVuZ3RoPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0dXBsZXM6Omxlbmd0aDxUdXBsZT46OnZhbHVlPigpLAotICAgICAgICAgICAgYWxsb2MsIHB0ciwgeCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBUcmFpdCB0byBjaGVjayBmb3IgcGllY2V3aXNlIGNvbnN0cnVjdGlvbi4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMD4KLSAgICBzdHJ1Y3QgdXNlX3BpZWNld2lzZSB7Ci0gICAgICAgIHN0YXRpYyBjaG9pY2UxOjp0eXBlIHRlc3QoY2hvaWNlMSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnBpZWNld2lzZV9jb25zdHJ1Y3RfdCk7Ci0KLSAgICAgICAgc3RhdGljIGNob2ljZTI6OnR5cGUgdGVzdChjaG9pY2UyLCAuLi4pOwotCi0gICAgICAgIGVudW0geyB2YWx1ZSA9IHNpemVvZihjaG9pY2UxOjp0eXBlKSA9PQotICAgICAgICAgICAgc2l6ZW9mKHRlc3QoY2hvb3NlKCksIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTxBMD4oKSkpIH07Ci0gICAgfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBDb25zdHJ1Y3QgZnJvbSB2YXJpYWRpYyBwYXJhbWV0ZXJzCi0KLSAgICAvLyBGb3IgdGhlIHN0YW5kYXJkIHBhaXIgY29uc3RydWN0b3IuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgaW5saW5lIHZvaWQgY29uc3RydWN0X3ZhbHVlX2ltcGwoQWxsb2MmIGFsbG9jLCBUKiBhZGRyZXNzLAotICAgICAgICBORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIGFyZ3MpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNhbGxfY29uc3RydWN0KGFsbG9jLAotICAgICAgICAgICAgYWRkcmVzcywgbmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgIH0KLQotICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcGllY2VfY29uc3RydWN0Ci0gICAgLy8KLSAgICAvLyBUT0RPOiBXaGVuIHBvc3NpYmxlLCBpdCBtaWdodCBiZSBiZXR0ZXIgdG8gdXNlIHN0ZDo6cGFpcidzCi0gICAgLy8gY29uc3RydWN0b3IgZm9yIHN0ZDo6cGllY2VfY29uc3RydWN0IHdpdGggc3RkOjp0dXBsZS4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgQSwgdHlwZW5hbWUgQiwKLSAgICAgICAgdHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLSAgICBpbmxpbmUgdHlwZW5hbWUgZW5hYmxlX2lmPHVzZV9waWVjZXdpc2U8QTA+LCB2b2lkPjo6dHlwZQotICAgICAgICBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYgYWxsb2MsIHN0ZDo6cGFpcjxBLCBCPiogYWRkcmVzcywKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApLCBORE5CT09TVF9GV0RfUkVGKEExKSBhMSwgTkROQk9PU1RfRldEX1JFRihBMikgYTIpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNvbnN0cnVjdF9mcm9tX3R1cGxlKGFsbG9jLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmFkZHJlc3NvZihhZGRyZXNzLT5maXJzdCksIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSkpOwotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNvbnN0cnVjdF9mcm9tX3R1cGxlKGFsbG9jLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmFkZHJlc3NvZihhZGRyZXNzLT5zZWNvbmQpLCBuZG5ib29zdDo6Zm9yd2FyZDxBMj4oYTIpKTsKLSAgICB9Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gQ29uc3RydWN0IGZyb20gZW1wbGFjZV9hcmdzCi0KLSAgICAvLyBFeHBsaWNpdGx5IHdyaXRlIG91dCBmaXJzdCB0aHJlZSBvdmVybG9hZHMgZm9yIHRoZSBzYWtlIG9mIHNhbmUKLSAgICAvLyBlcnJvciBtZXNzYWdlcy4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQTA+Ci0gICAgaW5saW5lIHZvaWQgY29uc3RydWN0X3ZhbHVlX2ltcGwoQWxsb2MmLCBUKiBhZGRyZXNzLAotICAgICAgICAgICAgZW1wbGFjZV9hcmdzMTxBMD4gY29uc3QmIGFyZ3MpCi0gICAgewotICAgICAgICBuZXcoKHZvaWQqKSBhZGRyZXNzKSBUKG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhcmdzLmEwKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTE+Ci0gICAgaW5saW5lIHZvaWQgY29uc3RydWN0X3ZhbHVlX2ltcGwoQWxsb2MmLCBUKiBhZGRyZXNzLAotICAgICAgICAgICAgZW1wbGFjZV9hcmdzMjxBMCwgQTE+IGNvbnN0JiBhcmdzKQotICAgIHsKLSAgICAgICAgbmV3KCh2b2lkKikgYWRkcmVzcykgVCgKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhcmdzLmEwKSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhcmdzLmExKQotICAgICAgICApOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLSAgICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYsIFQqIGFkZHJlc3MsCi0gICAgICAgICAgICBlbXBsYWNlX2FyZ3MzPEEwLCBBMSwgQTI+IGNvbnN0JiBhcmdzKQotICAgIHsKLSAgICAgICAgbmV3KCh2b2lkKikgYWRkcmVzcykgVCgKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhcmdzLmEwKSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhcmdzLmExKSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEyPihhcmdzLmEyKQotICAgICAgICApOwotICAgIH0KLQotICAgIC8vIFVzZSBhIG1hY3JvIGZvciB0aGUgcmVzdC4KLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0lNUEwoeiwgbnVtX3BhcmFtcywgXykgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG51bV9wYXJhbXMsIHR5cGVuYW1lIEEpICAgICAgICAgICAgICAgICAgIFwKLSAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaW5saW5lIHZvaWQgY29uc3RydWN0X3ZhbHVlX2ltcGwoQWxsb2MmLCBUKiBhZGRyZXNzLCAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Ok5ETkJPT1NUX1BQX0NBVChlbXBsYWNlX2FyZ3MsbnVtX3BhcmFtcykgPCAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbnVtX3BhcmFtcywgQSkgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgID4gY29uc3QmIGFyZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmV3KCh2b2lkKikgYWRkcmVzcykgVCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihudW1fcGFyYW1zLCBORE5CT09TVF9VTk9SREVSRURfQ0FMTF9GT1JXQVJELCAgICAgXAotICAgICAgICAgICAgICAgIGFyZ3MuYSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTyg0LCBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9MSU1JVCwKLSAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9JTVBMLCBfKQotCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9JTVBMCi0KLSAgICAvLyBDb25zdHJ1Y3Qgd2l0aCBwaWVjZV9jb25zdHJ1Y3QKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgQSwgdHlwZW5hbWUgQiwKLSAgICAgICAgdHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLSAgICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYgYWxsb2MsIHN0ZDo6cGFpcjxBLCBCPiogYWRkcmVzcywKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wbGFjZV9hcmdzMzxBMCwgQTEsIEEyPiBjb25zdCYgYXJncywKLSAgICAgICAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZjx1c2VfcGllY2V3aXNlPEEwPiwgdm9pZCo+Ojp0eXBlID0gMCkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29uc3RydWN0X2Zyb21fdHVwbGUoYWxsb2MsCi0gICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKGFkZHJlc3MtPmZpcnN0KSwgYXJncy5hMSk7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29uc3RydWN0X2Zyb21fdHVwbGUoYWxsb2MsCi0gICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKGFkZHJlc3MtPnNlY29uZCksIGFyZ3MuYTIpOwotICAgIH0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotCi19fX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBTb21lIGhlbHBlciBmdW5jdGlvbnMgZm9yIGFsbG9jYXRpbmcgJiBjb25zdHJ1Y3RpbmcKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vCi0gICAgLy8gYXJyYXlfY29uc3RydWN0b3IKLSAgICAvLwotICAgIC8vIEFsbG9jYXRlIGFuZCBjb25zdHJ1Y3QgYW4gYXJyYXkgaW4gYW4gZXhjZXB0aW9uIHNhZmUgbWFubmVyLCBhbmQKLSAgICAvLyBjbGVhbiB1cCBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGJlZm9yZSB0aGUgY29udGFpbmVyIHRha2VzIGNoYXJnZQotICAgIC8vIG9mIGl0LgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICBzdHJ1Y3QgYXJyYXlfY29uc3RydWN0b3IKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj4gdHJhaXRzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6cG9pbnRlciBwb2ludGVyOwotCi0gICAgICAgIEFsbG9jYXRvciYgYWxsb2NfOwotICAgICAgICBwb2ludGVyIHB0cl87Ci0gICAgICAgIHBvaW50ZXIgY29uc3RydWN0ZWRfOwotICAgICAgICBzdGQ6OnNpemVfdCBsZW5ndGhfOwotCi0gICAgICAgIGFycmF5X2NvbnN0cnVjdG9yKEFsbG9jYXRvciYgYSkKLSAgICAgICAgICAgIDogYWxsb2NfKGEpLCBwdHJfKCksIGNvbnN0cnVjdGVkXygpLCBsZW5ndGhfKDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdGVkXyA9IHBvaW50ZXIoKTsKLSAgICAgICAgICAgIHB0cl8gPSBwb2ludGVyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+YXJyYXlfY29uc3RydWN0b3IoKSB7Ci0gICAgICAgICAgICBpZiAocHRyXykgewotICAgICAgICAgICAgICAgIGZvcihwb2ludGVyIHAgPSBwdHJfOyBwICE9IGNvbnN0cnVjdGVkXzsgKytwKQotICAgICAgICAgICAgICAgICAgICB0cmFpdHM6OmRlc3Ryb3koYWxsb2NfLCBuZG5ib29zdDo6YWRkcmVzc29mKCpwKSk7Ci0KLSAgICAgICAgICAgICAgICB0cmFpdHM6OmRlYWxsb2NhdGUoYWxsb2NfLCBwdHJfLCBsZW5ndGhfKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPgotICAgICAgICB2b2lkIGNvbnN0cnVjdChWIGNvbnN0JiB2LCBzdGQ6OnNpemVfdCBsKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoIXB0cl8pOwotICAgICAgICAgICAgbGVuZ3RoXyA9IGw7Ci0gICAgICAgICAgICBwdHJfID0gdHJhaXRzOjphbGxvY2F0ZShhbGxvY18sIGxlbmd0aF8pOwotICAgICAgICAgICAgcG9pbnRlciBlbmQgPSBwdHJfICsgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KGxlbmd0aF8pOwotICAgICAgICAgICAgZm9yKGNvbnN0cnVjdGVkXyA9IHB0cl87IGNvbnN0cnVjdGVkXyAhPSBlbmQ7ICsrY29uc3RydWN0ZWRfKQotICAgICAgICAgICAgICAgIHRyYWl0czo6Y29uc3RydWN0KGFsbG9jXywgbmRuYm9vc3Q6OmFkZHJlc3NvZigqY29uc3RydWN0ZWRfKSwgdik7Ci0gICAgICAgIH0KLQotICAgICAgICBwb2ludGVyIGdldCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwdHJfOwotICAgICAgICB9Ci0KLSAgICAgICAgcG9pbnRlciByZWxlYXNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcG9pbnRlciBwKHB0cl8pOwotICAgICAgICAgICAgcHRyXyA9IHBvaW50ZXIoKTsKLSAgICAgICAgICAgIHJldHVybiBwOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotCi0gICAgICAgIGFycmF5X2NvbnN0cnVjdG9yKGFycmF5X2NvbnN0cnVjdG9yIGNvbnN0Jik7Ci0gICAgICAgIGFycmF5X2NvbnN0cnVjdG9yJiBvcGVyYXRvcj0oYXJyYXlfY29uc3RydWN0b3IgY29uc3QmKTsKLSAgICB9OwotfX19Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2J1Y2tldHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2J1Y2tldHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjJkZjQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9idWNrZXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IEplcmVteSBCLiBNYWl0aW4tU2hlcGFyZC4KLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDExIERhbmllbCBKYW1lcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9NQU5BR0VSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX01BTkFHRVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91dGlsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2FsbG9jYXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbmVkX3N0b3JhZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zd2FwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+IHN0cnVjdCB0YWJsZTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZVBvaW50ZXI+IHN0cnVjdCBidWNrZXQ7Ci0gICAgc3RydWN0IHB0cl9idWNrZXQ7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPiBzdHJ1Y3QgdGFibGVfaW1wbDsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+IHN0cnVjdCBncm91cGVkX3RhYmxlX2ltcGw7Ci0KLX19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGl0ZXJhdG9yX2RldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gSXRlcmF0b3JzCi0gICAgLy8KLSAgICAvLyBhbGwgbm8gdGhyb3cKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBzdHJ1Y3QgaXRlcmF0b3I7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIENvbnN0Tm9kZVBvaW50ZXI+IHN0cnVjdCBjX2l0ZXJhdG9yOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBQb2xpY3k+IHN0cnVjdCBsX2l0ZXJhdG9yOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBDb25zdE5vZGVQb2ludGVyLCB0eXBlbmFtZSBQb2xpY3k+Ci0gICAgICAgIHN0cnVjdCBjbF9pdGVyYXRvcjsKLQotICAgIC8vIExvY2FsIEl0ZXJhdG9ycwotICAgIC8vCi0gICAgLy8gYWxsIG5vIHRocm93Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgUG9saWN5PgotICAgIHN0cnVjdCBsX2l0ZXJhdG9yCi0gICAgICAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcjwKLSAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlLAotICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3QsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjpub2RlX3BvaW50ZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlJj4KLSAgICB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlMiwgdHlwZW5hbWUgQ29uc3ROb2RlUG9pbnRlciwgdHlwZW5hbWUgUG9saWN5Mj4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OmNsX2l0ZXJhdG9yOwotICAgIHByaXZhdGU6Ci0jZW5kaWYKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjpub2RlX3BvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6aXRlcmF0b3I8Tm9kZT4gaXRlcmF0b3I7Ci0gICAgICAgIG5vZGVfcG9pbnRlciBwdHJfOwotICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfOwotICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfY291bnRfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotCi0gICAgICAgIGxfaXRlcmF0b3IoKSA6IHB0cl8oKSB7fQotCi0gICAgICAgIGxfaXRlcmF0b3IoaXRlcmF0b3IgeCwgc3RkOjpzaXplX3QgYiwgc3RkOjpzaXplX3QgYykKLSAgICAgICAgICAgIDogcHRyXyh4Lm5vZGVfKSwgYnVja2V0XyhiKSwgYnVja2V0X2NvdW50XyhjKSB7fQotCi0gICAgICAgIHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBwdHJfLT52YWx1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBwdHJfLT52YWx1ZV9wdHIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7Ci0gICAgICAgICAgICBwdHJfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwdHJfLT5uZXh0Xyk7Ci0gICAgICAgICAgICBpZiAocHRyXyAmJiBQb2xpY3k6OnRvX2J1Y2tldChidWNrZXRfY291bnRfLCBwdHJfLT5oYXNoXykKLSAgICAgICAgICAgICAgICAgICAgIT0gYnVja2V0XykKLSAgICAgICAgICAgICAgICBwdHJfID0gbm9kZV9wb2ludGVyKCk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBsX2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7Ci0gICAgICAgICAgICBsX2l0ZXJhdG9yIHRtcCgqdGhpcyk7Ci0gICAgICAgICAgICArKygqdGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gdG1wOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGxfaXRlcmF0b3IgeCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHB0cl8gPT0geC5wdHJfOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGxfaXRlcmF0b3IgeCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHB0cl8gIT0geC5wdHJfOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBDb25zdE5vZGVQb2ludGVyLCB0eXBlbmFtZSBQb2xpY3k+Ci0gICAgc3RydWN0IGNsX2l0ZXJhdG9yCi0gICAgICAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcjwKLSAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlLAotICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3QsCi0gICAgICAgICAgICBDb25zdE5vZGVQb2ludGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSBjb25zdCY+Ci0gICAgewotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6bF9pdGVyYXRvcgotICAgICAgICAgICAgPE5vZGUsIFBvbGljeT47Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6Om5vZGVfcG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjppdGVyYXRvcjxOb2RlPiBpdGVyYXRvcjsKLSAgICAgICAgbm9kZV9wb2ludGVyIHB0cl87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9jb3VudF87Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgY2xfaXRlcmF0b3IoKSA6IHB0cl8oKSB7fQotCi0gICAgICAgIGNsX2l0ZXJhdG9yKGl0ZXJhdG9yIHgsIHN0ZDo6c2l6ZV90IGIsIHN0ZDo6c2l6ZV90IGMpIDoKLSAgICAgICAgICAgIHB0cl8oeC5ub2RlXyksIGJ1Y2tldF8oYiksIGJ1Y2tldF9jb3VudF8oYykge30KLQotICAgICAgICBjbF9pdGVyYXRvcihuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OmxfaXRlcmF0b3I8Ci0gICAgICAgICAgICAgICAgTm9kZSwgUG9saWN5PiBjb25zdCYgeCkgOgotICAgICAgICAgICAgcHRyXyh4LnB0cl8pLCBidWNrZXRfKHguYnVja2V0XyksIGJ1Y2tldF9jb3VudF8oeC5idWNrZXRfY291bnRfKQotICAgICAgICB7fQotCi0gICAgICAgIHZhbHVlX3R5cGUgY29uc3QmIG9wZXJhdG9yKigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBwdHJfLT52YWx1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSBjb25zdCogb3BlcmF0b3ItPigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBwdHJfLT52YWx1ZV9wdHIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNsX2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgewotICAgICAgICAgICAgcHRyXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHRyXy0+bmV4dF8pOwotICAgICAgICAgICAgaWYgKHB0cl8gJiYgUG9saWN5Ojp0b19idWNrZXQoYnVja2V0X2NvdW50XywgcHRyXy0+aGFzaF8pCi0gICAgICAgICAgICAgICAgICAgICE9IGJ1Y2tldF8pCi0gICAgICAgICAgICAgICAgcHRyXyA9IG5vZGVfcG9pbnRlcigpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgY2xfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsKLSAgICAgICAgICAgIGNsX2l0ZXJhdG9yIHRtcCgqdGhpcyk7Ci0gICAgICAgICAgICArKygqdGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gdG1wOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjbF9pdGVyYXRvciBjb25zdCYgeCwgY2xfaXRlcmF0b3IgY29uc3QmIHkpIHsKLSAgICAgICAgICAgIHJldHVybiB4LnB0cl8gPT0geS5wdHJfOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjbF9pdGVyYXRvciBjb25zdCYgeCwgY2xfaXRlcmF0b3IgY29uc3QmIHkpIHsKLSAgICAgICAgICAgIHJldHVybiB4LnB0cl8gIT0geS5wdHJfOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPgotICAgIHN0cnVjdCBpdGVyYXRvcgotICAgICAgICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3I8Ci0gICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSwKLSAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6bm9kZV9wb2ludGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSY+Ci0gICAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6Y19pdGVyYXRvcjsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OmxfaXRlcmF0b3I7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6Y2xfaXRlcmF0b3I7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZV9pbXBsOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX3RhYmxlX2ltcGw7Ci0gICAgcHJpdmF0ZToKLSNlbmRpZgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6Om5vZGVfcG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIG5vZGVfcG9pbnRlciBub2RlXzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLQotICAgICAgICBpdGVyYXRvcigpIDogbm9kZV8oKSB7fQotCi0gICAgICAgIGV4cGxpY2l0IGl0ZXJhdG9yKHR5cGVuYW1lIE5vZGU6OmxpbmtfcG9pbnRlciB4KSA6Ci0gICAgICAgICAgICBub2RlXyhzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHgpKSB7fQotCi0gICAgICAgIHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBub2RlXy0+dmFsdWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gJm5vZGVfLT52YWx1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7Ci0gICAgICAgICAgICBub2RlXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4obm9kZV8tPm5leHRfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7Ci0gICAgICAgICAgICBpdGVyYXRvciB0bXAobm9kZV8pOwotICAgICAgICAgICAgbm9kZV8gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KG5vZGVfLT5uZXh0Xyk7Ci0gICAgICAgICAgICByZXR1cm4gdG1wOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGl0ZXJhdG9yIGNvbnN0JiB4KSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZV8gPT0geC5ub2RlXzsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShpdGVyYXRvciBjb25zdCYgeCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIG5vZGVfICE9IHgubm9kZV87Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIENvbnN0Tm9kZVBvaW50ZXI+Ci0gICAgc3RydWN0IGNfaXRlcmF0b3IKLSAgICAgICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yPAotICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUsCi0gICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICAgIENvbnN0Tm9kZVBvaW50ZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlIGNvbnN0Jj4KLSAgICB7Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjppdGVyYXRvcjxOb2RlPjsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGVfaW1wbDsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF90YWJsZV9pbXBsOwotCi0gICAgcHJpdmF0ZToKLSNlbmRpZgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6Om5vZGVfcG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjppdGVyYXRvcjxOb2RlPiBpdGVyYXRvcjsKLSAgICAgICAgbm9kZV9wb2ludGVyIG5vZGVfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotCi0gICAgICAgIGNfaXRlcmF0b3IoKSA6IG5vZGVfKCkge30KLQotICAgICAgICBleHBsaWNpdCBjX2l0ZXJhdG9yKHR5cGVuYW1lIE5vZGU6OmxpbmtfcG9pbnRlciB4KSA6Ci0gICAgICAgICAgICBub2RlXyhzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHgpKSB7fQotCi0gICAgICAgIGNfaXRlcmF0b3IoaXRlcmF0b3IgY29uc3QmIHgpIDogbm9kZV8oeC5ub2RlXykge30KLQotICAgICAgICB2YWx1ZV90eXBlIGNvbnN0JiBvcGVyYXRvciooKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZV8tPnZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlIGNvbnN0KiBvcGVyYXRvci0+KCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuICZub2RlXy0+dmFsdWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7Ci0gICAgICAgICAgICBub2RlXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4obm9kZV8tPm5leHRfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIGNfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsKLSAgICAgICAgICAgIGNfaXRlcmF0b3IgdG1wKG5vZGVfKTsKLSAgICAgICAgICAgIG5vZGVfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihub2RlXy0+bmV4dF8pOwotICAgICAgICAgICAgcmV0dXJuIHRtcDsKLSAgICAgICAgfQotCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY19pdGVyYXRvciBjb25zdCYgeCwgY19pdGVyYXRvciBjb25zdCYgeSkgewotICAgICAgICAgICAgcmV0dXJuIHgubm9kZV8gPT0geS5ub2RlXzsKLSAgICAgICAgfQotCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY19pdGVyYXRvciBjb25zdCYgeCwgY19pdGVyYXRvciBjb25zdCYgeSkgewotICAgICAgICAgICAgcmV0dXJuIHgubm9kZV8gIT0geS5ub2RlXzsKLSAgICAgICAgfQotICAgIH07Ci19fX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vCi0gICAgLy8gTm9kZSBjb25zdHJ1Y3Rpb24KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlQWxsb2M+Ci0gICAgc3RydWN0IG5vZGVfY29uc3RydWN0b3IKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICB0eXBlZGVmIE5vZGVBbGxvYyBub2RlX2FsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Tm9kZUFsbG9jPgotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6dmFsdWVfdHlwZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6cG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotCi0gICAgcHJvdGVjdGVkOgotCi0gICAgICAgIG5vZGVfYWxsb2NhdG9yJiBhbGxvY187Ci0gICAgICAgIG5vZGVfcG9pbnRlciBub2RlXzsKLSAgICAgICAgYm9vbCBub2RlX2NvbnN0cnVjdGVkXzsKLSAgICAgICAgYm9vbCB2YWx1ZV9jb25zdHJ1Y3RlZF87Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgbm9kZV9jb25zdHJ1Y3Rvcihub2RlX2FsbG9jYXRvciYgbikgOgotICAgICAgICAgICAgYWxsb2NfKG4pLAotICAgICAgICAgICAgbm9kZV8oKSwKLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0ZWRfKGZhbHNlKSwKLSAgICAgICAgICAgIHZhbHVlX2NvbnN0cnVjdGVkXyhmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgfm5vZGVfY29uc3RydWN0b3IoKTsKLQotICAgICAgICB2b2lkIGNvbnN0cnVjdCgpOwotCi0gICAgICAgIHRlbXBsYXRlIDxORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9URU1QTEFURT4KLSAgICAgICAgdm9pZCBjb25zdHJ1Y3Rfd2l0aF92YWx1ZShORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3QoKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29uc3RydWN0X3ZhbHVlX2ltcGwoCi0gICAgICAgICAgICAgICAgYWxsb2NfLCBub2RlXy0+dmFsdWVfcHRyKCksIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0ZPUldBUkQpOwotICAgICAgICAgICAgdmFsdWVfY29uc3RydWN0ZWRfID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMD4KLSAgICAgICAgdm9pZCBjb25zdHJ1Y3Rfd2l0aF92YWx1ZTIoTkROQk9PU1RfRldEX1JFRihBMCkgYTApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdCgpOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb25zdHJ1Y3RfdmFsdWVfaW1wbCgKLSAgICAgICAgICAgICAgICBhbGxvY18sIG5vZGVfLT52YWx1ZV9wdHIoKSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTMShuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApKSk7Ci0gICAgICAgICAgICB2YWx1ZV9jb25zdHJ1Y3RlZF8gPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSBjb25zdCYgdmFsdWUoKSBjb25zdCB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQobm9kZV8gJiYgbm9kZV9jb25zdHJ1Y3RlZF8gJiYgdmFsdWVfY29uc3RydWN0ZWRfKTsKLSAgICAgICAgICAgIHJldHVybiBub2RlXy0+dmFsdWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIG5vIHRocm93Ci0gICAgICAgIG5vZGVfcG9pbnRlciByZWxlYXNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKG5vZGVfICYmIG5vZGVfY29uc3RydWN0ZWRfKTsKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBwID0gbm9kZV87Ci0gICAgICAgICAgICBub2RlXyA9IG5vZGVfcG9pbnRlcigpOwotICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIG5vZGVfY29uc3RydWN0b3Iobm9kZV9jb25zdHJ1Y3RvciBjb25zdCYpOwotICAgICAgICBub2RlX2NvbnN0cnVjdG9yJiBvcGVyYXRvcj0obm9kZV9jb25zdHJ1Y3RvciBjb25zdCYpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci0gICAgbm9kZV9jb25zdHJ1Y3RvcjxBbGxvYz46On5ub2RlX2NvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIGlmIChub2RlXykgewotICAgICAgICAgICAgaWYgKHZhbHVlX2NvbnN0cnVjdGVkXykgewotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveV92YWx1ZV9pbXBsKGFsbG9jXywKLSAgICAgICAgICAgICAgICAgICAgbm9kZV8tPnZhbHVlX3B0cigpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5vZGVfY29uc3RydWN0ZWRfKSB7Ci0gICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZXN0cm95KGFsbG9jXywKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFkZHJlc3NvZigqbm9kZV8pKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZWFsbG9jYXRlKGFsbG9jXywgbm9kZV8sIDEpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIHZvaWQgbm9kZV9jb25zdHJ1Y3RvcjxBbGxvYz46OmNvbnN0cnVjdCgpCi0gICAgewotICAgICAgICBpZighbm9kZV8pIHsKLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0ZWRfID0gZmFsc2U7Ci0gICAgICAgICAgICB2YWx1ZV9jb25zdHJ1Y3RlZF8gPSBmYWxzZTsKLQotICAgICAgICAgICAgbm9kZV8gPSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmFsbG9jYXRlKGFsbG9jXywgMSk7Ci0KLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6Y29uc3RydWN0KGFsbG9jXywKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKCpub2RlXyksIG5vZGUoKSk7Ci0gICAgICAgICAgICBub2RlXy0+aW5pdChub2RlXyk7Ci0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdGVkXyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQobm9kZV9jb25zdHJ1Y3RlZF8pOwotCi0gICAgICAgICAgICBpZiAodmFsdWVfY29uc3RydWN0ZWRfKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveV92YWx1ZV9pbXBsKGFsbG9jXywKLSAgICAgICAgICAgICAgICAgICAgbm9kZV8tPnZhbHVlX3B0cigpKTsKLSAgICAgICAgICAgICAgICB2YWx1ZV9jb25zdHJ1Y3RlZF8gPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLwotICAgIC8vIE5vZGUgSG9sZGVyCi0gICAgLy8KLSAgICAvLyBUZW1wb3Jhcnkgc3RvcmUgZm9yIG5vZGVzLiBEZWxldGVzIGFueSB0aGF0IGFyZW4ndCB1c2VkLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGVBbGxvYz4KLSAgICBzdHJ1Y3Qgbm9kZV9ob2xkZXIgOiBwcml2YXRlIG5vZGVfY29uc3RydWN0b3I8Tm9kZUFsbG9jPgotICAgIHsKLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG5vZGVfY29uc3RydWN0b3I8Tm9kZUFsbG9jPiBiYXNlOwotCi0gICAgICAgIHR5cGVkZWYgTm9kZUFsbG9jIG5vZGVfYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxOb2RlQWxsb2M+Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjp2YWx1ZV90eXBlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZTo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6Oml0ZXJhdG9yPG5vZGU+IGl0ZXJhdG9yOwotCi0gICAgICAgIG5vZGVfcG9pbnRlciBub2Rlc187Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhYmxlPgotICAgICAgICBleHBsaWNpdCBub2RlX2hvbGRlcihUYWJsZSYgYikgOgotICAgICAgICAgICAgYmFzZShiLm5vZGVfYWxsb2MoKSksCi0gICAgICAgICAgICBub2Rlc18oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoYi5zaXplXykgewotICAgICAgICAgICAgICAgIHR5cGVuYW1lIFRhYmxlOjpsaW5rX3BvaW50ZXIgcHJldiA9IGIuZ2V0X3ByZXZpb3VzX3N0YXJ0KCk7Ci0gICAgICAgICAgICAgICAgbm9kZXNfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0Xyk7Ci0gICAgICAgICAgICAgICAgcHJldi0+bmV4dF8gPSBsaW5rX3BvaW50ZXIoKTsKLSAgICAgICAgICAgICAgICBiLnNpemVfID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIH5ub2RlX2hvbGRlcigpOwotCi0gICAgICAgIHZvaWQgbm9kZV9mb3JfYXNzaWdubWVudCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpcy0+bm9kZV8gJiYgbm9kZXNfKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy0+bm9kZV8gPSBub2Rlc187Ci0gICAgICAgICAgICAgICAgbm9kZXNfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihub2Rlc18tPm5leHRfKTsKLSAgICAgICAgICAgICAgICB0aGlzLT5ub2RlXy0+aW5pdCh0aGlzLT5ub2RlXyk7Ci0gICAgICAgICAgICAgICAgdGhpcy0+bm9kZV8tPm5leHRfID0gbGlua19wb2ludGVyKCk7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLT5ub2RlX2NvbnN0cnVjdGVkXyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdGhpcy0+dmFsdWVfY29uc3RydWN0ZWRfID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhc3NpZ25faW1wbChUIGNvbnN0JiB2KSB7Ci0gICAgICAgICAgICBpZiAodGhpcy0+bm9kZV8gJiYgdGhpcy0+dmFsdWVfY29uc3RydWN0ZWRfKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy0+bm9kZV8tPnZhbHVlKCkgPSB2OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy0+Y29uc3RydWN0X3dpdGhfdmFsdWUyKHYpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICAgICAgaW5saW5lIHZvaWQgYXNzaWduX2ltcGwoc3RkOjpwYWlyPFQxIGNvbnN0LCBUMj4gY29uc3QmIHYpIHsKLSAgICAgICAgICAgIHRoaXMtPmNvbnN0cnVjdF93aXRoX3ZhbHVlMih2KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBtb3ZlX2Fzc2lnbl9pbXBsKFQmIHYpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLT5ub2RlXyAmJiB0aGlzLT52YWx1ZV9jb25zdHJ1Y3RlZF8pIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5ub2RlXy0+dmFsdWUoKSA9IG5kbmJvb3N0Ojptb3ZlKHYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy0+Y29uc3RydWN0X3dpdGhfdmFsdWUyKG5kbmJvb3N0Ojptb3ZlKHYpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgICAgIGlubGluZSB2b2lkIG1vdmVfYXNzaWduX2ltcGwoc3RkOjpwYWlyPFQxIGNvbnN0LCBUMj4mIHYpIHsKLSAgICAgICAgICAgIHRoaXMtPmNvbnN0cnVjdF93aXRoX3ZhbHVlMihuZG5ib29zdDo6bW92ZSh2KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBub2RlX3BvaW50ZXIgY29weV9vZih2YWx1ZV90eXBlIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX2Zvcl9hc3NpZ25tZW50KCk7Ci0gICAgICAgICAgICBhc3NpZ25faW1wbCh2KTsKLSAgICAgICAgICAgIHJldHVybiBiYXNlOjpyZWxlYXNlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBub2RlX3BvaW50ZXIgbW92ZV9jb3B5X29mKHZhbHVlX3R5cGUmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfZm9yX2Fzc2lnbm1lbnQoKTsKLSAgICAgICAgICAgIG1vdmVfYXNzaWduX2ltcGwodik7Ci0gICAgICAgICAgICByZXR1cm4gYmFzZTo6cmVsZWFzZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3Iobm9kZXNfKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci0gICAgbm9kZV9ob2xkZXI8QWxsb2M+Ojp+bm9kZV9ob2xkZXIoKQotICAgIHsKLSAgICAgICAgd2hpbGUgKG5vZGVzXykgewotICAgICAgICAgICAgbm9kZV9wb2ludGVyIHAgPSBub2Rlc187Ci0gICAgICAgICAgICBub2Rlc18gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHAtPm5leHRfKTsKLQotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95X3ZhbHVlX2ltcGwodGhpcy0+YWxsb2NfLAotICAgICAgICAgICAgICAgIHAtPnZhbHVlX3B0cigpKTsKLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6ZGVzdHJveSh0aGlzLT5hbGxvY18sIG5kbmJvb3N0OjphZGRyZXNzb2YoKnApKTsKLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6ZGVhbGxvY2F0ZSh0aGlzLT5hbGxvY18sIHAsIDEpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vCi0gICAgLy8gQnVja2V0Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZVBvaW50ZXI+Ci0gICAgc3RydWN0IGJ1Y2tldAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBOb2RlUG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0gICAgICAgIGxpbmtfcG9pbnRlciBuZXh0XzsKLQotICAgICAgICBidWNrZXQoKSA6IG5leHRfKCkge30KLQotICAgICAgICBsaW5rX3BvaW50ZXIgZmlyc3RfZnJvbV9zdGFydCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXh0XzsKLSAgICAgICAgfQotCi0gICAgICAgIGVudW0geyBleHRyYV9ub2RlID0gdHJ1ZSB9OwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgcHRyX2J1Y2tldAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBwdHJfYnVja2V0KiBsaW5rX3BvaW50ZXI7Ci0gICAgICAgIGxpbmtfcG9pbnRlciBuZXh0XzsKLQotICAgICAgICBwdHJfYnVja2V0KCkgOiBuZXh0XygwKSB7fQotCi0gICAgICAgIGxpbmtfcG9pbnRlciBmaXJzdF9mcm9tX3N0YXJ0KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBlbnVtIHsgZXh0cmFfbm9kZSA9IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLwotICAgIC8vIEhhc2ggUG9saWN5Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2l6ZVQ+Ci0gICAgc3RydWN0IHByaW1lX3BvbGljeQotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2gsIHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgU2l6ZVQgYXBwbHlfaGFzaChIYXNoIGNvbnN0JiBoZiwgVCBjb25zdCYgeCkgewotICAgICAgICAgICAgcmV0dXJuIGhmKHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCB0b19idWNrZXQoU2l6ZVQgYnVja2V0X2NvdW50LCBTaXplVCBoYXNoKSB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaCAlIGJ1Y2tldF9jb3VudDsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgU2l6ZVQgbmV3X2J1Y2tldF9jb3VudChTaXplVCBtaW4pIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om5leHRfcHJpbWUobWluKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgU2l6ZVQgcHJldl9idWNrZXRfY291bnQoU2l6ZVQgbWF4KSB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwcmV2X3ByaW1lKG1heCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNpemVUPgotICAgIHN0cnVjdCBtaXg2NF9wb2xpY3kKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoLCB0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgaW5saW5lIFNpemVUIGFwcGx5X2hhc2goSGFzaCBjb25zdCYgaGYsIFQgY29uc3QmIHgpIHsKLSAgICAgICAgICAgIFNpemVUIGtleSA9IGhmKHgpOwotICAgICAgICAgICAga2V5ID0gKH5rZXkpICsgKGtleSA8PCAyMSk7IC8vIGtleSA9IChrZXkgPDwgMjEpIC0ga2V5IC0gMTsKLSAgICAgICAgICAgIGtleSA9IGtleSBeIChrZXkgPj4gMjQpOwotICAgICAgICAgICAga2V5ID0gKGtleSArIChrZXkgPDwgMykpICsgKGtleSA8PCA4KTsgLy8ga2V5ICogMjY1Ci0gICAgICAgICAgICBrZXkgPSBrZXkgXiAoa2V5ID4+IDE0KTsKLSAgICAgICAgICAgIGtleSA9IChrZXkgKyAoa2V5IDw8IDIpKSArIChrZXkgPDwgNCk7IC8vIGtleSAqIDIxCi0gICAgICAgICAgICBrZXkgPSBrZXkgXiAoa2V5ID4+IDI4KTsKLSAgICAgICAgICAgIGtleSA9IGtleSArIChrZXkgPDwgMzEpOwotICAgICAgICAgICAgcmV0dXJuIGtleTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgU2l6ZVQgdG9fYnVja2V0KFNpemVUIGJ1Y2tldF9jb3VudCwgU2l6ZVQgaGFzaCkgewotICAgICAgICAgICAgcmV0dXJuIGhhc2ggJiAoYnVja2V0X2NvdW50IC0gMSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgaW5saW5lIFNpemVUIG5ld19idWNrZXRfY291bnQoU2l6ZVQgbWluKSB7Ci0gICAgICAgICAgICBpZiAobWluIDw9IDQpIHJldHVybiA0OwotICAgICAgICAgICAgLS1taW47Ci0gICAgICAgICAgICBtaW4gfD0gbWluID4+IDE7Ci0gICAgICAgICAgICBtaW4gfD0gbWluID4+IDI7Ci0gICAgICAgICAgICBtaW4gfD0gbWluID4+IDQ7Ci0gICAgICAgICAgICBtaW4gfD0gbWluID4+IDg7Ci0gICAgICAgICAgICBtaW4gfD0gbWluID4+IDE2OwotICAgICAgICAgICAgbWluIHw9IG1pbiA+PiAzMjsKLSAgICAgICAgICAgIHJldHVybiBtaW4gKyAxOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCBwcmV2X2J1Y2tldF9jb3VudChTaXplVCBtYXgpIHsKLSAgICAgICAgICAgIG1heCB8PSBtYXggPj4gMTsKLSAgICAgICAgICAgIG1heCB8PSBtYXggPj4gMjsKLSAgICAgICAgICAgIG1heCB8PSBtYXggPj4gNDsKLSAgICAgICAgICAgIG1heCB8PSBtYXggPj4gODsKLSAgICAgICAgICAgIG1heCB8PSBtYXggPj4gMTY7Ci0gICAgICAgICAgICBtYXggfD0gbWF4ID4+IDMyOwotICAgICAgICAgICAgcmV0dXJuIChtYXggPj4gMSkgKyAxOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxpbnQgZGlnaXRzLCBpbnQgcmFkaXg+Ci0gICAgc3RydWN0IHBpY2tfcG9saWN5X2ltcGwgewotICAgICAgICB0eXBlZGVmIHByaW1lX3BvbGljeTxzdGQ6OnNpemVfdD4gdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgcGlja19wb2xpY3lfaW1wbDw2NCwgMj4gewotICAgICAgICB0eXBlZGVmIG1peDY0X3BvbGljeTxzdGQ6OnNpemVfdD4gdHlwZTsKLSAgICB9OwotCi0gICAgc3RydWN0IHBpY2tfcG9saWN5IDoKLSAgICAgICAgcGlja19wb2xpY3lfaW1wbDwKLSAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjpkaWdpdHMsCi0gICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6cmFkaXg+IHt9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIEZ1bmN0aW9ucwotCi0gICAgLy8gQXNzaWduaW5nIGFuZCBzd2FwcGluZyB0aGUgZXF1YWxpdHkgYW5kIGhhc2ggZnVuY3Rpb24gb2JqZWN0cwotICAgIC8vIG5lZWRzIHN0cm9uZyBleGNlcHRpb24gc2FmZXR5LiBUbyBpbXBsZW1lbnQgdGhhdCBub3JtYWxseSB3ZSdkCi0gICAgLy8gcmVxdWlyZSBvbmUgb2YgdGhlbSB0byBiZSBrbm93biB0byBub3QgdGhyb3cgYW5kIHRoZSBvdGhlciB0bwotICAgIC8vIGd1YXJhbnRlZSBzdHJvbmcgZXhjZXB0aW9uIHNhZmV0eS4gVW5mb3J0dW5hdGVseSB0aGV5IGJvdGggb25seQotICAgIC8vIGhhdmUgYmFzaWMgZXhjZXB0aW9uIHNhZmV0eS4gU28gdG8gYWNoZWl2ZSBzdHJvbmcgZXhjZXB0aW9uCi0gICAgLy8gc2FmZXR5IHdlIGhhdmUgc3RvcmFnZSBzcGFjZSBmb3IgdHdvIGNvcGllcywgYW5kIGFzc2lnbiB0aGUgbmV3Ci0gICAgLy8gY29waWVzIHRvIHRoZSB1bnVzZWQgc3BhY2UuIFRoZW4gc3dpdGNoIHRvIHVzaW5nIHRoYXQgdG8gdXNlCi0gICAgLy8gdGhlbS4gVGhpcyBpcyBpbXBsZW1lbnRlZCBpbiAnc2V0X2hhc2hfZnVuY3Rpb25zJyB3aGljaAotICAgIC8vIGF0b21pY2FsbHkgYXNzaWducyB0aGUgbmV3IGZ1bmN0aW9uIG9iamVjdHMgaW4gYSBzdHJvbmdseQotICAgIC8vIGV4Y2VwdGlvbiBzYWZlIG1hbm5lci4KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBILCBjbGFzcyBQLCBib29sIE5vVGhyb3dNb3ZlQXNzaWduPgotICAgIGNsYXNzIHNldF9oYXNoX2Z1bmN0aW9uczsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBILCBjbGFzcyBQPgotICAgIGNsYXNzIGZ1bmN0aW9ucwotICAgIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIG5vdGhyb3dfbW92ZV9hc3NpZ25hYmxlID0KLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8SD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPFA+Ojp2YWx1ZTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUgPQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxIPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8UD46OnZhbHVlOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6c2V0X2hhc2hfZnVuY3Rpb25zPEgsIFAsCi0gICAgICAgICAgICAgICBub3Rocm93X21vdmVfYXNzaWduYWJsZT47Ci0gICAgICAgIGZ1bmN0aW9ucyYgb3BlcmF0b3I9KGZ1bmN0aW9ucyBjb25zdCYpOwotCi0gICAgICAgIHR5cGVkZWYgY29tcHJlc3NlZDxILCBQPiBmdW5jdGlvbl9wYWlyOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFsaWduZWRfc3RvcmFnZTwKLSAgICAgICAgICAgIHNpemVvZihmdW5jdGlvbl9wYWlyKSwKLSAgICAgICAgICAgIG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8ZnVuY3Rpb25fcGFpcj46OnZhbHVlPjo6dHlwZSBhbGlnbmVkX2Z1bmN0aW9uOwotCi0gICAgICAgIGJvb2wgY3VycmVudF87IC8vIFRoZSBjdXJyZW50bHkgYWN0aXZlIGZ1bmN0aW9ucy4KLSAgICAgICAgYWxpZ25lZF9mdW5jdGlvbiBmdW5jc19bMl07Ci0KLSAgICAgICAgZnVuY3Rpb25fcGFpciBjb25zdCYgY3VycmVudCgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8ZnVuY3Rpb25fcGFpciBjb25zdCo+KAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHZvaWQgY29uc3QqPigmZnVuY3NfW2N1cnJlbnRfXSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb25fcGFpciYgY3VycmVudCgpIHsKLSAgICAgICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8ZnVuY3Rpb25fcGFpcio+KAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHZvaWQqPigmZnVuY3NfW2N1cnJlbnRfXSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjb25zdHJ1Y3QoYm9vbCB3aGljaCwgSCBjb25zdCYgaGYsIFAgY29uc3QmIGVxKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXcoKHZvaWQqKSAmZnVuY3NfW3doaWNoXSkgZnVuY3Rpb25fcGFpcihoZiwgZXEpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjb25zdHJ1Y3QoYm9vbCB3aGljaCwgZnVuY3Rpb25fcGFpciBjb25zdCYgZikKLSAgICAgICAgewotICAgICAgICAgICAgbmV3KCh2b2lkKikgJmZ1bmNzX1t3aGljaF0pIGZ1bmN0aW9uX3BhaXIoZik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgY29uc3RydWN0KGJvb2wgd2hpY2gsIGZ1bmN0aW9uX3BhaXImIGYsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZyBtKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXcoKHZvaWQqKSAmZnVuY3NfW3doaWNoXSkgZnVuY3Rpb25fcGFpcihmLCBtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGVzdHJveShib29sIHdoaWNoKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3koKGZ1bmN0aW9uX3BhaXIqKSgmZnVuY3NfW3doaWNoXSkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6c2V0X2hhc2hfZnVuY3Rpb25zPEgsIFAsCi0gICAgICAgICAgICAgICAgbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU+IHNldF9oYXNoX2Z1bmN0aW9uczsKLQotICAgICAgICBmdW5jdGlvbnMoSCBjb25zdCYgaGYsIFAgY29uc3QmIGVxKQotICAgICAgICAgICAgOiBjdXJyZW50XyhmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RydWN0KGN1cnJlbnRfLCBoZiwgZXEpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb25zKGZ1bmN0aW9ucyBjb25zdCYgYmYpCi0gICAgICAgICAgICA6IGN1cnJlbnRfKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3QoY3VycmVudF8sIGJmLmN1cnJlbnQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbnMoZnVuY3Rpb25zJiBiZiwgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZyBtKQotICAgICAgICAgICAgOiBjdXJyZW50XyhmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlKSB7Ci0gICAgICAgICAgICAgICAgY29uc3RydWN0KGN1cnJlbnRfLCBiZi5jdXJyZW50KCksIG0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29uc3RydWN0KGN1cnJlbnRfLCBiZi5jdXJyZW50KCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgfmZ1bmN0aW9ucygpIHsKLSAgICAgICAgICAgIHRoaXMtPmRlc3Ryb3koY3VycmVudF8pOwotICAgICAgICB9Ci0KLSAgICAgICAgSCBjb25zdCYgaGFzaF9mdW5jdGlvbigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50KCkuZmlyc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIFAgY29uc3QmIGtleV9lcSgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50KCkuc2Vjb25kKCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEgsIGNsYXNzIFA+Ci0gICAgY2xhc3Mgc2V0X2hhc2hfZnVuY3Rpb25zPEgsIFAsIGZhbHNlPgotICAgIHsKLSAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zKHNldF9oYXNoX2Z1bmN0aW9ucyBjb25zdCYpOwotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMmIG9wZXJhdG9yPShzZXRfaGFzaF9mdW5jdGlvbnMgY29uc3QmKTsKLQotICAgICAgICB0eXBlZGVmIGZ1bmN0aW9uczxILCBQPiBmdW5jdGlvbnNfdHlwZTsKLSAgICAKLSAgICAgICAgZnVuY3Rpb25zX3R5cGUmIGZ1bmN0aW9uc187Ci0gICAgICAgIGJvb2wgdG1wX2Z1bmN0aW9uc187Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zKGZ1bmN0aW9uc190eXBlJiBmLCBIIGNvbnN0JiBoLCBQIGNvbnN0JiBwKQotICAgICAgICAgIDogZnVuY3Rpb25zXyhmKSwKLSAgICAgICAgICAgIHRtcF9mdW5jdGlvbnNfKCFmLmN1cnJlbnRfKQotICAgICAgICB7Ci0gICAgICAgICAgICBmLmNvbnN0cnVjdCh0bXBfZnVuY3Rpb25zXywgaCwgcCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMoZnVuY3Rpb25zX3R5cGUmIGYsIGZ1bmN0aW9uc190eXBlIGNvbnN0JiBvdGhlcikKLSAgICAgICAgICA6IGZ1bmN0aW9uc18oZiksCi0gICAgICAgICAgICB0bXBfZnVuY3Rpb25zXyghZi5jdXJyZW50XykKLSAgICAgICAgewotICAgICAgICAgICAgZi5jb25zdHJ1Y3QodG1wX2Z1bmN0aW9uc18sIG90aGVyLmN1cnJlbnQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2V0X2hhc2hfZnVuY3Rpb25zKCkKLSAgICAgICAgewotICAgICAgICAgICAgZnVuY3Rpb25zXy5kZXN0cm95KHRtcF9mdW5jdGlvbnNfKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY29tbWl0KCkKLSAgICAgICAgewotICAgICAgICAgICAgZnVuY3Rpb25zXy5jdXJyZW50XyA9IHRtcF9mdW5jdGlvbnNfOwotICAgICAgICAgICAgdG1wX2Z1bmN0aW9uc18gPSAhdG1wX2Z1bmN0aW9uc187Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEgsIGNsYXNzIFA+Ci0gICAgY2xhc3Mgc2V0X2hhc2hfZnVuY3Rpb25zPEgsIFAsIHRydWU+Ci0gICAgewotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMoc2V0X2hhc2hfZnVuY3Rpb25zIGNvbnN0Jik7Ci0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyYgb3BlcmF0b3I9KHNldF9oYXNoX2Z1bmN0aW9ucyBjb25zdCYpOwotCi0gICAgICAgIHR5cGVkZWYgZnVuY3Rpb25zPEgsIFA+IGZ1bmN0aW9uc190eXBlOwotCi0gICAgICAgIGZ1bmN0aW9uc190eXBlJiBmdW5jdGlvbnNfOwotICAgICAgICBIIGhhc2hfOwotICAgICAgICBQIHByZWRfOwotICAgIAotICAgIHB1YmxpYzoKLQotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMoZnVuY3Rpb25zX3R5cGUmIGYsIEggY29uc3QmIGgsIFAgY29uc3QmIHApIDoKLSAgICAgICAgICAgIGZ1bmN0aW9uc18oZiksCi0gICAgICAgICAgICBoYXNoXyhoKSwKLSAgICAgICAgICAgIHByZWRfKHApIHt9Ci0KLSAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zKGZ1bmN0aW9uc190eXBlJiBmLCBmdW5jdGlvbnNfdHlwZSBjb25zdCYgb3RoZXIpIDoKLSAgICAgICAgICAgIGZ1bmN0aW9uc18oZiksCi0gICAgICAgICAgICBoYXNoXyhvdGhlci5oYXNoX2Z1bmN0aW9uKCkpLAotICAgICAgICAgICAgcHJlZF8ob3RoZXIua2V5X2VxKCkpIHt9Ci0KLSAgICAgICAgdm9pZCBjb21taXQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmdW5jdGlvbnNfLmN1cnJlbnQoKS5maXJzdCgpID0gbmRuYm9vc3Q6Om1vdmUoaGFzaF8pOwotICAgICAgICAgICAgZnVuY3Rpb25zXy5jdXJyZW50KCkuc2Vjb25kKCkgPSBuZG5ib29zdDo6bW92ZShwcmVkXyk7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBydmFsdWUgcGFyYW1ldGVycyB3aGVuIHR5cGUgY2FuJ3QgYmUgYSBORE5CT09TVF9SVl9SRUYoVCkgcGFyYW1ldGVyCi0gICAgLy8gZS5nLiBmb3IgaW50Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX1JWX1JFRihUKSBORE5CT09TVF9SVl9SRUYoVCkKLSNlbHNlCi0gICAgc3RydWN0IHBsZWFzZV9pZ25vcmVfdGhpc19vdmVybG9hZCB7Ci0gICAgICAgIHR5cGVkZWYgcGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBydl9yZWZfaW1wbCB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUlZfUkVGKFQpIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBydl9yZWYgOgotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppZl90cnVlPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2NsYXNzPFQ+Ojp2YWx1ZQotICAgICAgICA+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgdGhlbiA8Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJ2X3JlZl9pbXBsPFQ+LAotICAgICAgICAgICAgcGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkCi0gICAgICAgID46OnR5cGUKLSAgICB7fTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfUlZfUkVGKFQpIFwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpydl9yZWY8VD46OnR5cGUKLSNlbmRpZgotfX19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2VxdWl2YWxlbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2VxdWl2YWxlbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjYyZDU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9lcXVpdmFsZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IEplcmVteSBCLiBNYWl0aW4tU2hlcGFyZC4KLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDExIERhbmllbCBKYW1lcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9FUVVJVkFMRU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0VRVUlWQUxFTlRfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC90YWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9leHRyYWN0X2tleS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPiBzdHJ1Y3QgZ3JvdXBlZF9ub2RlOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgZ3JvdXBlZF9wdHJfbm9kZTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+IHN0cnVjdCBncm91cGVkX3RhYmxlX2ltcGw7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgZ3JvdXBlZF9ub2RlIDoKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp2YWx1ZV9iYXNlPFQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpyZWJpbmRfd3JhcDwKLSAgICAgICAgICAgIEEsIGdyb3VwZWRfbm9kZTxBLCBUPiA+Ojp0eXBlIGFsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Ci0gICAgICAgICAgICBhbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcj46OnBvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIG5vZGVfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0KLSAgICAgICAgbGlua19wb2ludGVyIG5leHRfOwotICAgICAgICBub2RlX3BvaW50ZXIgZ3JvdXBfcHJldl87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGhhc2hfOwotCi0gICAgICAgIGdyb3VwZWRfbm9kZSgpIDoKLSAgICAgICAgICAgIG5leHRfKCksCi0gICAgICAgICAgICBncm91cF9wcmV2XygpLAotICAgICAgICAgICAgaGFzaF8oMCkKLSAgICAgICAge30KLQotICAgICAgICB2b2lkIGluaXQobm9kZV9wb2ludGVyIHNlbGYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdyb3VwX3ByZXZfID0gc2VsZjsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZ3JvdXBlZF9ub2RlJiBvcGVyYXRvcj0oZ3JvdXBlZF9ub2RlIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBncm91cGVkX3B0cl9ub2RlIDoKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp2YWx1ZV9iYXNlPFQ+LAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0IGJ1Y2tldF9iYXNlOwotICAgICAgICB0eXBlZGVmIGdyb3VwZWRfcHRyX25vZGU8VD4qIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBwdHJfYnVja2V0KiBsaW5rX3BvaW50ZXI7Ci0KLSAgICAgICAgbm9kZV9wb2ludGVyIGdyb3VwX3ByZXZfOwotICAgICAgICBzdGQ6OnNpemVfdCBoYXNoXzsKLQotICAgICAgICBncm91cGVkX3B0cl9ub2RlKCkgOgotICAgICAgICAgICAgYnVja2V0X2Jhc2UoKSwKLSAgICAgICAgICAgIGdyb3VwX3ByZXZfKDApLAotICAgICAgICAgICAgaGFzaF8oMCkKLSAgICAgICAge30KLQotICAgICAgICB2b2lkIGluaXQobm9kZV9wb2ludGVyIHNlbGYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdyb3VwX3ByZXZfID0gc2VsZjsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZ3JvdXBlZF9wdHJfbm9kZSYgb3BlcmF0b3I9KGdyb3VwZWRfcHRyX25vZGUgY29uc3QmKTsKLSAgICB9OwotCi0gICAgLy8gSWYgdGhlIGFsbG9jYXRvciB1c2VzIHJhdyBwb2ludGVycyB1c2UgZ3JvdXBlZF9wdHJfbm9kZQotICAgIC8vIE90aGVyd2lzZSB1c2UgZ3JvdXBlZF9ub2RlLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIE5vZGVQdHIsIHR5cGVuYW1lIEJ1Y2tldFB0cj4KLSAgICBzdHJ1Y3QgcGlja19ncm91cGVkX25vZGUyCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF9ub2RlPEEsIFQ+IG5vZGU7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPEEsIG5vZGU+Ojp0eXBlCi0gICAgICAgID46OnBvaW50ZXIgbm9kZV9wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpidWNrZXQ8bm9kZV9wb2ludGVyPiBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgbm9kZV9wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHBpY2tfZ3JvdXBlZF9ub2RlMjxBLCBULAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omdyb3VwZWRfcHRyX25vZGU8VD4qLAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQqPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omdyb3VwZWRfcHRyX25vZGU8VD4gbm9kZTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIGJ1Y2tldCogbGlua19wb2ludGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcGlja19ncm91cGVkX25vZGUKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpyZWJpbmRfd3JhcDxBLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF9wdHJfbm9kZTxUPiA+Ojp0eXBlCi0gICAgICAgID4gdGVudGF0aXZlX25vZGVfdHJhaXRzOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpyZWJpbmRfd3JhcDxBLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCA+Ojp0eXBlCi0gICAgICAgID4gdGVudGF0aXZlX2J1Y2tldF90cmFpdHM7Ci0KLSAgICAgICAgdHlwZWRlZiBwaWNrX2dyb3VwZWRfbm9kZTI8QSwgVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIHRlbnRhdGl2ZV9ub2RlX3RyYWl0czo6cG9pbnRlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIHRlbnRhdGl2ZV9idWNrZXRfdHJhaXRzOjpwb2ludGVyPiBwaWNrOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEgsIHR5cGVuYW1lIFA+Ci0gICAgc3RydWN0IG11bHRpc2V0Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bXVsdGlzZXQ8QSwgVCwgSCwgUD4gdHlwZXM7Ci0KLSAgICAgICAgdHlwZWRlZiBBIGFsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgSCBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgUCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgVCBrZXlfdHlwZTsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3I+IHRyYWl0czsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfZ3JvdXBlZF9ub2RlPGFsbG9jYXRvciwKLSAgICAgICAgICAgIHZhbHVlX3R5cGU+IHBpY2s7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF90YWJsZV9pbXBsPHR5cGVzPiB0YWJsZTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnNldF9leHRyYWN0b3I8dmFsdWVfdHlwZT4gZXh0cmFjdG9yOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwaWNrX3BvbGljeTo6dHlwZSBwb2xpY3k7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBNLCB0eXBlbmFtZSBILCB0eXBlbmFtZSBQPgotICAgIHN0cnVjdCBtdWx0aW1hcAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om11bHRpbWFwPEEsIEssIE0sIEgsIFA+IHR5cGVzOwotCi0gICAgICAgIHR5cGVkZWYgQSBhbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPEsgY29uc3QsIE0+IHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgSCBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgUCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgSyBrZXlfdHlwZTsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3I+IHRyYWl0czsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfZ3JvdXBlZF9ub2RlPGFsbG9jYXRvciwKLSAgICAgICAgICAgICAgICB2YWx1ZV90eXBlPiBwaWNrOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6Om5vZGUgbm9kZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omdyb3VwZWRfdGFibGVfaW1wbDx0eXBlcz4gdGFibGU7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYXBfZXh0cmFjdG9yPGtleV90eXBlLCB2YWx1ZV90eXBlPgotICAgICAgICAgICAgZXh0cmFjdG9yOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwaWNrX3BvbGljeTo6dHlwZSBwb2xpY3k7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4KLSAgICBzdHJ1Y3QgZ3JvdXBlZF90YWJsZV9pbXBsIDogbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZTxUeXBlcz4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZTxUeXBlcz4gdGFibGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6cG9saWN5IHBvbGljeTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bm9kZV9wb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bm9kZV9hbGxvY2F0b3Igbm9kZV9hbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfYWxsb2NhdG9yX3RyYWl0cyBub2RlX2FsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmJ1Y2tldF9wb2ludGVyIGJ1Y2tldF9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpoYXNoZXIgaGFzaGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjprZXlfZXF1YWwga2V5X2VxdWFsOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjprZXlfdHlwZSBrZXlfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bm9kZV9jb25zdHJ1Y3RvciBub2RlX2NvbnN0cnVjdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpleHRyYWN0b3IgZXh0cmFjdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y19pdGVyYXRvciBjX2l0ZXJhdG9yOwotCi0gICAgICAgIC8vIENvbnN0cnVjdG9ycwotCi0gICAgICAgIGdyb3VwZWRfdGFibGVfaW1wbChzdGQ6OnNpemVfdCBuLAotICAgICAgICAgICAgICAgIGhhc2hlciBjb25zdCYgaGYsCi0gICAgICAgICAgICAgICAga2V5X2VxdWFsIGNvbnN0JiBlcSwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSkKLSAgICAgICAgICA6IHRhYmxlKG4sIGhmLCBlcSwgYSkKLSAgICAgICAge30KLQotICAgICAgICBncm91cGVkX3RhYmxlX2ltcGwoZ3JvdXBlZF90YWJsZV9pbXBsIGNvbnN0JiB4KQotICAgICAgICAgIDogdGFibGUoeCwgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjoKLSAgICAgICAgICAgICAgICBzZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKHgubm9kZV9hbGxvYygpKSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+aW5pdCh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGdyb3VwZWRfdGFibGVfaW1wbChncm91cGVkX3RhYmxlX2ltcGwgY29uc3QmIHgsCi0gICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3IgY29uc3QmIGEpCi0gICAgICAgICAgOiB0YWJsZSh4LCBhKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5pbml0KHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ3JvdXBlZF90YWJsZV9pbXBsKGdyb3VwZWRfdGFibGVfaW1wbCYgeCwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgICAgOiB0YWJsZSh4LCBtKQotICAgICAgICB7fQotCi0gICAgICAgIGdyb3VwZWRfdGFibGVfaW1wbChncm91cGVkX3RhYmxlX2ltcGwmIHgsCi0gICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3IgY29uc3QmIGEsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZyBtKQotICAgICAgICAgIDogdGFibGUoeCwgYSwgbSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+bW92ZV9pbml0KHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWNjZXNzb3JzCi0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgUHJlZD4KLSAgICAgICAgaXRlcmF0b3IgZmluZF9ub2RlX2ltcGwoCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2gsCi0gICAgICAgICAgICAgICAgS2V5IGNvbnN0JiBrLAotICAgICAgICAgICAgICAgIFByZWQgY29uc3QmIGVxKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXggPSB0aGlzLT5oYXNoX3RvX2J1Y2tldChrZXlfaGFzaCk7Ci0gICAgICAgICAgICBpdGVyYXRvciBuID0gdGhpcy0+YmVnaW4oYnVja2V0X2luZGV4KTsKLQotICAgICAgICAgICAgZm9yICg7OykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIW4ubm9kZV8pIHJldHVybiBuOwotCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgbm9kZV9oYXNoID0gbi5ub2RlXy0+aGFzaF87Ci0gICAgICAgICAgICAgICAgaWYgKGtleV9oYXNoID09IG5vZGVfaGFzaCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcShrLCB0aGlzLT5nZXRfa2V5KCpuKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmhhc2hfdG9fYnVja2V0KG5vZGVfaGFzaCkgIT0gYnVja2V0X2luZGV4KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbiA9IGl0ZXJhdG9yKG4ubm9kZV8tPmdyb3VwX3ByZXZfLT5uZXh0Xyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBjb3VudChrZXlfdHlwZSBjb25zdCYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaXRlcmF0b3IgbiA9IHRoaXMtPmZpbmRfbm9kZShrKTsKLSAgICAgICAgICAgIGlmICghbi5ub2RlXykgcmV0dXJuIDA7Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHggPSAwOwotICAgICAgICAgICAgbm9kZV9wb2ludGVyIGl0ID0gbi5ub2RlXzsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpdCA9IGl0LT5ncm91cF9wcmV2XzsKLSAgICAgICAgICAgICAgICArK3g7Ci0gICAgICAgICAgICB9IHdoaWxlKGl0ICE9IG4ubm9kZV8pOwotCi0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+Ci0gICAgICAgICAgICBlcXVhbF9yYW5nZShrZXlfdHlwZSBjb25zdCYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaXRlcmF0b3IgbiA9IHRoaXMtPmZpbmRfbm9kZShrKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigKLSAgICAgICAgICAgICAgICBuLCBuLm5vZGVfID8gaXRlcmF0b3Iobi5ub2RlXy0+Z3JvdXBfcHJldl8tPm5leHRfKSA6IG4pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRXF1YWxpdHkKLQotICAgICAgICBib29sIGVxdWFscyhncm91cGVkX3RhYmxlX2ltcGwgY29uc3QmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZih0aGlzLT5zaXplXyAhPSBvdGhlci5zaXplXykgcmV0dXJuIGZhbHNlOwotICAgIAotICAgICAgICAgICAgZm9yKGl0ZXJhdG9yIG4xID0gdGhpcy0+YmVnaW4oKTsgbjEubm9kZV87KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIG4yID0gb3RoZXIuZmluZF9tYXRjaGluZ19ub2RlKG4xKTsKLSAgICAgICAgICAgICAgICBpZiAoIW4yLm5vZGVfKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgZW5kMShuMS5ub2RlXy0+Z3JvdXBfcHJldl8tPm5leHRfKTsKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBlbmQyKG4yLm5vZGVfLT5ncm91cF9wcmV2Xy0+bmV4dF8pOwotICAgICAgICAgICAgICAgIGlmICghZ3JvdXBfZXF1YWxzKG4xLCBlbmQxLCBuMiwgZW5kMikpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBuMSA9IGVuZDE7ICAgIAotICAgICAgICAgICAgfQotICAgIAotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBncm91cF9lcXVhbHMoaXRlcmF0b3IgbjEsIGl0ZXJhdG9yIGVuZDEsCi0gICAgICAgICAgICAgICAgaXRlcmF0b3IgbjIsIGl0ZXJhdG9yIGVuZDIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvcig7OykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoKm4xICE9ICpuMikgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICArK24xOwotICAgICAgICAgICAgICAgICsrbjI7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobjEgPT0gZW5kMSkgcmV0dXJuIG4yID09IGVuZDI7Ci0gICAgICAgICAgICAgICAgaWYgKG4yID09IGVuZDIpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yKGl0ZXJhdG9yIG4xYSA9IG4xLCBuMmEgPSBuMjs7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICsrbjFhOwotICAgICAgICAgICAgICAgICsrbjJhOwotCi0gICAgICAgICAgICAgICAgaWYgKG4xYSA9PSBlbmQxKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG4yYSA9PSBlbmQyKSBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG4yYSA9PSBlbmQyKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGl0ZXJhdG9yIHN0YXJ0ID0gbjE7Ci0gICAgICAgICAgICBmb3IoO24xICE9IGVuZDE7ICsrbjEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFsdWVfdHlwZSBjb25zdCYgdiA9ICpuMTsKLSAgICAgICAgICAgICAgICBpZiAoZmluZChzdGFydCwgbjEsIHYpKSBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBtYXRjaGVzID0gY291bnRfZXF1YWwobjIsIGVuZDIsIHYpOwotICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcykgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIG5leHQgPSBuMTsKLSAgICAgICAgICAgICAgICArK25leHQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1hdGNoZXMgIT0gMSArIGNvdW50X2VxdWFsKG5leHQsIGVuZDEsIHYpKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZmluZChpdGVyYXRvciBuLCBpdGVyYXRvciBlbmQsIHZhbHVlX3R5cGUgY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvcig7biAhPSBlbmQ7ICsrbikKLSAgICAgICAgICAgICAgICBpZiAoKm4gPT0gdikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgc3RkOjpzaXplX3QgY291bnRfZXF1YWwoaXRlcmF0b3IgbiwgaXRlcmF0b3IgZW5kLAotICAgICAgICAgICAgdmFsdWVfdHlwZSBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzaXplX3QgY291bnQgPSAwOwotICAgICAgICAgICAgZm9yKDtuICE9IGVuZDsgKytuKQotICAgICAgICAgICAgICAgIGlmICgqbiA9PSB2KSArK2NvdW50OwotICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRW1wbGFjZS9JbnNlcnQKLQotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgYWRkX2FmdGVyX25vZGUoCi0gICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIG4sCi0gICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIHBvcykKLSAgICAgICAgewotICAgICAgICAgICAgbi0+bmV4dF8gPSBwb3MtPmdyb3VwX3ByZXZfLT5uZXh0XzsKLSAgICAgICAgICAgIG4tPmdyb3VwX3ByZXZfID0gcG9zLT5ncm91cF9wcmV2XzsKLSAgICAgICAgICAgIHBvcy0+Z3JvdXBfcHJldl8tPm5leHRfID0gbjsKLSAgICAgICAgICAgIHBvcy0+Z3JvdXBfcHJldl8gPSBuOwotICAgICAgICB9Ci0KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yIGFkZF9ub2RlKAotICAgICAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3ImIGEsCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2gsCi0gICAgICAgICAgICAgICAgaXRlcmF0b3IgcG9zKQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX3BvaW50ZXIgbiA9IGEucmVsZWFzZSgpOwotICAgICAgICAgICAgbi0+aGFzaF8gPSBrZXlfaGFzaDsKLSAgICAgICAgICAgIGlmIChwb3Mubm9kZV8pIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5hZGRfYWZ0ZXJfbm9kZShuLCBwb3Mubm9kZV8pOwotICAgICAgICAgICAgICAgIGlmIChuLT5uZXh0XykgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBuZXh0X2J1Y2tldCA9IHRoaXMtPmhhc2hfdG9fYnVja2V0KAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihuLT5uZXh0XyktPmhhc2hfKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRfYnVja2V0ICE9IHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+Z2V0X2J1Y2tldChuZXh0X2J1Y2tldCktPm5leHRfID0gbjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyIGIgPSB0aGlzLT5nZXRfYnVja2V0KAotICAgICAgICAgICAgICAgICAgICB0aGlzLT5oYXNoX3RvX2J1Y2tldChrZXlfaGFzaCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFiLT5uZXh0XykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmtfcG9pbnRlciBzdGFydF9ub2RlID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRfbm9kZS0+bmV4dF8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmdldF9idWNrZXQodGhpcy0+aGFzaF90b19idWNrZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihzdGFydF9ub2RlLT5uZXh0XyktPmhhc2hfCi0gICAgICAgICAgICAgICAgICAgICAgICApKS0+bmV4dF8gPSBuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgCi0gICAgICAgICAgICAgICAgICAgIGItPm5leHRfID0gc3RhcnRfbm9kZTsKLSAgICAgICAgICAgICAgICAgICAgbi0+bmV4dF8gPSBzdGFydF9ub2RlLT5uZXh0XzsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRfbm9kZS0+bmV4dF8gPSBuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBuLT5uZXh0XyA9IGItPm5leHRfLT5uZXh0XzsKLSAgICAgICAgICAgICAgICAgICAgYi0+bmV4dF8tPm5leHRfID0gbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK3RoaXMtPnNpemVfOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKG4pOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9pbXBsKG5vZGVfY29uc3RydWN0b3ImIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGtleV90eXBlIGNvbnN0JiBrID0gdGhpcy0+Z2V0X2tleShhLnZhbHVlKCkpOwotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgaXRlcmF0b3IgcG9zaXRpb24gPSB0aGlzLT5maW5kX25vZGUoa2V5X2hhc2gsIGspOwotCi0gICAgICAgICAgICAvLyByZXNlcnZlIGhhcyBiYXNpYyBleGNlcHRpb24gc2FmZXR5IGlmIHRoZSBoYXNoIGZ1bmN0aW9uCi0gICAgICAgICAgICAvLyB0aHJvd3MsIHN0cm9uZyBvdGhlcndpc2UuCi0gICAgICAgICAgICB0aGlzLT5yZXNlcnZlX2Zvcl9pbnNlcnQodGhpcy0+c2l6ZV8gKyAxKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5hZGRfbm9kZShhLCBrZXlfaGFzaCwgcG9zaXRpb24pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlbXBsYWNlX2ltcGxfbm9fcmVoYXNoKG5vZGVfY29uc3RydWN0b3ImIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGtleV90eXBlIGNvbnN0JiBrID0gdGhpcy0+Z2V0X2tleShhLnZhbHVlKCkpOwotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgdGhpcy0+YWRkX25vZGUoYSwga2V5X2hhc2gsIHRoaXMtPmZpbmRfbm9kZShrZXlfaGFzaCwgaykpOwotICAgICAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wbGFjZV9hcmdzMTwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBsZWFzZV9pZ25vcmVfdGhpc19vdmVybG9hZD4gY29uc3QmKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLSMgICBlbHNlCi0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwbGVhc2VfaWdub3JlX3RoaXNfb3ZlcmxvYWQgY29uc3QmKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLSMgICBlbmRpZgotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZShORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKTsKLQotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKGVtcGxhY2VfaW1wbChhKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gSW5zZXJ0IHJhbmdlIG1ldGhvZHMKLQotICAgICAgICAvLyBpZiBoYXNoIGZ1bmN0aW9uIHRocm93cywgb3IgaW5zZXJ0aW5nID4gMSBlbGVtZW50LCBiYXNpYyBleGNlcHRpb24KLSAgICAgICAgLy8gc2FmZXR5LiBTdHJvbmcgb3RoZXJ3aXNlCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVuYWJsZV9pZl9mb3J3YXJkPEksIHZvaWQ+Ojp0eXBlCi0gICAgICAgICAgICBpbnNlcnRfcmFuZ2UoSSBpLCBJIGopCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKGkgPT0gaikgcmV0dXJuOwotCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBkaXN0YW5jZSA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGlzdGFuY2UoaSwgaik7Ci0gICAgICAgICAgICBpZihkaXN0YW5jZSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIoKmkpOwotICAgICAgICAgICAgICAgIGVtcGxhY2VfaW1wbChhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8vIE9ubHkgcmVxdWlyZSBiYXNpYyBleGNlcHRpb24gc2FmZXR5IGhlcmUKLSAgICAgICAgICAgICAgICB0aGlzLT5yZXNlcnZlX2Zvcl9pbnNlcnQodGhpcy0+c2l6ZV8gKyBkaXN0YW5jZSk7Ci0KLSAgICAgICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSAhPSBqOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIoKmkpOwotICAgICAgICAgICAgICAgICAgICBlbXBsYWNlX2ltcGxfbm9fcmVoYXNoKGEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRpc2FibGVfaWZfZm9yd2FyZDxJLCB2b2lkPjo6dHlwZQotICAgICAgICAgICAgaW5zZXJ0X3JhbmdlKEkgaSwgSSBqKQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgIGZvciAoOyBpICE9IGo7ICsraSkgewotICAgICAgICAgICAgICAgIGEuY29uc3RydWN0X3dpdGhfdmFsdWUyKCppKTsKLSAgICAgICAgICAgICAgICBlbXBsYWNlX2ltcGwoYSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gRXJhc2UKLSAgICAgICAgLy8KLSAgICAgICAgLy8gbm8gdGhyb3cKLQotICAgICAgICBzdGQ6OnNpemVfdCBlcmFzZV9rZXkoa2V5X3R5cGUgY29uc3QmIGspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKCF0aGlzLT5zaXplXykgcmV0dXJuIDA7Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gdGhpcy0+aGFzaChrKTsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCA9IHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKTsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KGJ1Y2tldF9pbmRleCk7Ci0gICAgICAgICAgICBpZiAoIXByZXYpIHJldHVybiAwOwotCi0gICAgICAgICAgICBmb3IgKDs7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghcHJldi0+bmV4dF8pIHJldHVybiAwOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG5vZGVfaGFzaCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT5oYXNoXzsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy0+aGFzaF90b19idWNrZXQobm9kZV9oYXNoKSAhPSBidWNrZXRfaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChub2RlX2hhc2ggPT0ga2V5X2hhc2ggJiYKLSAgICAgICAgICAgICAgICAgICAgdGhpcy0+a2V5X2VxKCkoaywgdGhpcy0+Z2V0X2tleSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT52YWx1ZSgpKSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIHByZXYgPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+Z3JvdXBfcHJldl87Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBmaXJzdF9ub2RlID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0Xyk7Ci0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgZW5kID0gZmlyc3Rfbm9kZS0+Z3JvdXBfcHJldl8tPm5leHRfOwotCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBjb3VudCA9IHRoaXMtPmRlbGV0ZV9ub2RlcyhwcmV2LCBlbmQpOwotICAgICAgICAgICAgdGhpcy0+Zml4X2J1Y2tldChidWNrZXRfaW5kZXgsIHByZXYpOwotICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZXJhc2UoY19pdGVyYXRvciByKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoci5ub2RlXyk7Ci0gICAgICAgICAgICBpdGVyYXRvciBuZXh0KHIubm9kZV8pOwotICAgICAgICAgICAgKytuZXh0OwotICAgICAgICAgICAgZXJhc2Vfbm9kZXMoci5ub2RlXywgbmV4dC5ub2RlXyk7Ci0gICAgICAgICAgICByZXR1cm4gbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGVyYXNlX3JhbmdlKGNfaXRlcmF0b3IgcjEsIGNfaXRlcmF0b3IgcjIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyMSA9PSByMikgcmV0dXJuIGl0ZXJhdG9yKHIyLm5vZGVfKTsKLSAgICAgICAgICAgIGVyYXNlX25vZGVzKHIxLm5vZGVfLCByMi5ub2RlXyk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IocjIubm9kZV8pOwotICAgICAgICB9Ci0KLSAgICAgICAgbGlua19wb2ludGVyIGVyYXNlX25vZGVzKG5vZGVfcG9pbnRlciBiZWdpbiwgbm9kZV9wb2ludGVyIGVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2luZGV4ID0gdGhpcy0+aGFzaF90b19idWNrZXQoYmVnaW4tPmhhc2hfKTsKLQotICAgICAgICAgICAgLy8gU3BsaXQgdGhlIGdyb3VwcyBjb250YWluaW5nICdiZWdpbicgYW5kICdlbmQnLgotICAgICAgICAgICAgLy8gQW5kIGdldCB0aGUgcG9pbnRlciB0byB0aGUgbm9kZSBiZWZvcmUgYmVnaW4gd2hpbGUKLSAgICAgICAgICAgIC8vIHdlJ3JlIGF0IGl0LgotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSBzcGxpdF9ncm91cHMoYmVnaW4sIGVuZCk7Ci0KLSAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSAncHJldicgaXQgbWVhbnMgdGhhdCBiZWdpbiBpcyBhdCB0aGUKLSAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiBhIGJsb2NrLCBzbyBzZWFyY2ggdGhyb3VnaCB0aGUgYmxvY2tzIGluIHRoZQotICAgICAgICAgICAgLy8gc2FtZSBidWNrZXQuCi0gICAgICAgICAgICBpZiAoIXByZXYpIHsKLSAgICAgICAgICAgICAgICBwcmV2ID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KGJ1Y2tldF9pbmRleCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHByZXYtPm5leHRfICE9IGJlZ2luKQotICAgICAgICAgICAgICAgICAgICBwcmV2ID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPmdyb3VwX3ByZXZfOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBEZWxldGUgdGhlIG5vZGVzLgotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGxpbmtfcG9pbnRlciBncm91cF9lbmQgPQotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+Z3JvdXBfcHJldl8tPm5leHRfOwotICAgICAgICAgICAgICAgIHRoaXMtPmRlbGV0ZV9ub2RlcyhwcmV2LCBncm91cF9lbmQpOwotICAgICAgICAgICAgICAgIGJ1Y2tldF9pbmRleCA9IHRoaXMtPmZpeF9idWNrZXQoYnVja2V0X2luZGV4LCBwcmV2KTsKLSAgICAgICAgICAgIH0gd2hpbGUocHJldi0+bmV4dF8gIT0gZW5kKTsKLQotICAgICAgICAgICAgcmV0dXJuIHByZXY7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgbGlua19wb2ludGVyIHNwbGl0X2dyb3Vwcyhub2RlX3BvaW50ZXIgYmVnaW4sIG5vZGVfcG9pbnRlciBlbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBwcmV2ID0gYmVnaW4tPmdyb3VwX3ByZXZfOwotICAgICAgICAgICAgaWYgKHByZXYtPm5leHRfICE9IGJlZ2luKSBwcmV2ID0gbm9kZV9wb2ludGVyKCk7Ci0KLSAgICAgICAgICAgIGlmIChlbmQpIHsKLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgZmlyc3QgPSBlbmQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGZpcnN0ICE9IGJlZ2luICYmIGZpcnN0LT5ncm91cF9wcmV2Xy0+bmV4dF8gPT0gZmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmaXJzdC0+Z3JvdXBfcHJldl87Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnN3YXAoZmlyc3QtPmdyb3VwX3ByZXZfLCBlbmQtPmdyb3VwX3ByZXZfKTsKLSAgICAgICAgICAgICAgICBpZiAoZmlyc3QgPT0gYmVnaW4pIHJldHVybiBwcmV2OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAocHJldikgewotICAgICAgICAgICAgICAgIG5vZGVfcG9pbnRlciBmaXJzdCA9IHByZXY7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGZpcnN0LT5ncm91cF9wcmV2Xy0+bmV4dF8gPT0gZmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmaXJzdC0+Z3JvdXBfcHJldl87Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpzd2FwKGZpcnN0LT5ncm91cF9wcmV2XywgYmVnaW4tPmdyb3VwX3ByZXZfKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHByZXY7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gZmlsbF9idWNrZXRzCi0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIE5vZGVDcmVhdG9yPgotICAgICAgICBzdGF0aWMgdm9pZCBmaWxsX2J1Y2tldHMoaXRlcmF0b3IgbiwgdGFibGUmIGRzdCwKLSAgICAgICAgICAgIE5vZGVDcmVhdG9yJiBjcmVhdG9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IGRzdC5nZXRfcHJldmlvdXNfc3RhcnQoKTsKLQotICAgICAgICAgICAgd2hpbGUgKG4ubm9kZV8pIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IG4ubm9kZV8tPmhhc2hfOwotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIGdyb3VwX2VuZChuLm5vZGVfLT5ncm91cF9wcmV2Xy0+bmV4dF8pOwotCi0gICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIGZpcnN0X25vZGUgPSBjcmVhdG9yLmNyZWF0ZSgqbik7Ci0gICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIGVuZCA9IGZpcnN0X25vZGU7Ci0gICAgICAgICAgICAgICAgZmlyc3Rfbm9kZS0+aGFzaF8gPSBrZXlfaGFzaDsKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0XyA9IGZpcnN0X25vZGU7Ci0gICAgICAgICAgICAgICAgKytkc3Quc2l6ZV87Ci0KLSAgICAgICAgICAgICAgICBmb3IgKCsrbjsgbiAhPSBncm91cF9lbmQ7ICsrbikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGVuZCA9IGNyZWF0b3IuY3JlYXRlKCpuKTsKLSAgICAgICAgICAgICAgICAgICAgZW5kLT5oYXNoXyA9IGtleV9oYXNoOwotICAgICAgICAgICAgICAgICAgICBhZGRfYWZ0ZXJfbm9kZShlbmQsIGZpcnN0X25vZGUpOwotICAgICAgICAgICAgICAgICAgICArK2RzdC5zaXplXzsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBwcmV2ID0gcGxhY2VfaW5fYnVja2V0KGRzdCwgcHJldiwgZW5kKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIHN0cm9uZyBvdGhlcndpc2UgZXhjZXB0aW9uIHNhZmV0eQotICAgICAgICB2b2lkIHJlaGFzaF9pbXBsKHN0ZDo6c2l6ZV90IG51bV9idWNrZXRzKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQodGhpcy0+YnVja2V0c18pOwotCi0gICAgICAgICAgICB0aGlzLT5jcmVhdGVfYnVja2V0cyhudW1fYnVja2V0cyk7Ci0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IHRoaXMtPmdldF9wcmV2aW91c19zdGFydCgpOwotICAgICAgICAgICAgd2hpbGUgKHByZXYtPm5leHRfKQotICAgICAgICAgICAgICAgIHByZXYgPSBwbGFjZV9pbl9idWNrZXQoKnRoaXMsIHByZXYsCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT5ncm91cF9wcmV2Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIG5vZGVzIHBsYWNpbmcgdGhlbSBpbiB0aGUgY29ycmVjdCBidWNrZXRzLgotICAgICAgICAvLyBwcmU6IHByZXYtPm5leHRfIGlzIG5vdCBudWxsLgotICAgICAgICBzdGF0aWMgbGlua19wb2ludGVyIHBsYWNlX2luX2J1Y2tldCh0YWJsZSYgZHN0LAotICAgICAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2LCBub2RlX3BvaW50ZXIgZW5kKQotICAgICAgICB7Ci0gICAgICAgICAgICBidWNrZXRfcG9pbnRlciBiID0gZHN0LmdldF9idWNrZXQoZHN0Lmhhc2hfdG9fYnVja2V0KGVuZC0+aGFzaF8pKTsKLQotICAgICAgICAgICAgaWYgKCFiLT5uZXh0XykgewotICAgICAgICAgICAgICAgIGItPm5leHRfID0gcHJldjsKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5kOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGlua19wb2ludGVyIG5leHQgPSBlbmQtPm5leHRfOwotICAgICAgICAgICAgICAgIGVuZC0+bmV4dF8gPSBiLT5uZXh0Xy0+bmV4dF87Ci0gICAgICAgICAgICAgICAgYi0+bmV4dF8tPm5leHRfID0gcHJldi0+bmV4dF87Ci0gICAgICAgICAgICAgICAgcHJldi0+bmV4dF8gPSBuZXh0OwotICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLX19fQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9leHRyYWN0X2tleS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXh0cmFjdF9rZXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2U3YWJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9leHRyYWN0X2tleS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMSBEYW5pZWwgSmFtZXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRVhUUkFDVF9LRVlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRVhUUkFDVF9LRVlfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3RhYmxlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB1bm9yZGVyZWQgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLyBrZXkgZXh0cmFjdG9ycwotICAgIC8vCi0gICAgLy8gbm8gdGhyb3cKLSAgICAvLwotICAgIC8vICdleHRyYWN0X2tleScgaXMgY2FsbGVkIHdpdGggdGhlIGVtcGxhY2UgcGFyYW1ldGVycyB0byByZXR1cm4gYQotICAgIC8vIGtleSBpZiBhdmFpbGFibGUgb3IgJ25vX2tleScgaXMgb25lIGlzbid0IGFuZCB3aWxsIG5lZWQgdG8gYmUKLSAgICAvLyBjb25zdHJ1Y3RlZC4gVGhpcyBjb3VsZCBiZSBkb25lIGJ5IG92ZXJsb2FkaW5nIHRoZSBlbXBsYWNlIGltcGxlbWVudGF0aW9uCi0gICAgLy8gZm9yIHRoZSBkaWZmZXJlbnQgY2FzZXMsIGJ1dCB0aGF0J3MgYSBiaXQgdHJpY2t5IG9uIGNvbXBpbGVycyB3aXRob3V0Ci0gICAgLy8gdmFyaWFkaWMgdGVtcGxhdGVzLgotCi0gICAgc3RydWN0IG5vX2tleSB7Ci0gICAgICAgIG5vX2tleSgpIHt9Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBub19rZXkoVCBjb25zdCYpIHt9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlzX2tleSB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMj4KLSAgICAgICAgc3RhdGljIGNob2ljZTE6OnR5cGUgdGVzdChUMiBjb25zdCYpOwotICAgICAgICBzdGF0aWMgY2hvaWNlMjo6dHlwZSB0ZXN0KEtleSBjb25zdCYpOwotICAgICAgICAKLSAgICAgICAgZW51bSB7IHZhbHVlID0gc2l6ZW9mKHRlc3QobmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYWtlPFQ+KCkpKSA9PQotICAgICAgICAgICAgc2l6ZW9mKGNob2ljZTI6OnR5cGUpIH07Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmlmX3RydWU8dmFsdWU+OjoKLSAgICAgICAgICAgIE5ETkJPT1NUX05FU1RFRF9URU1QTEFURSB0aGVuPEtleSBjb25zdCYsIG5vX2tleT46OnR5cGUgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFZhbHVlVHlwZT4KLSAgICBzdHJ1Y3Qgc2V0X2V4dHJhY3RvcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUga2V5X3R5cGU7Ci0KLSAgICAgICAgc3RhdGljIGtleV90eXBlIGNvbnN0JiBleHRyYWN0KGtleV90eXBlIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsKLSAgICAgICAgfQotICAgICAgICAKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoQXJncyBjb25zdCYuLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEFyZz4KLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KEFyZyBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyPgotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoQXJnMSBjb25zdCYsIEFyZzIgY29uc3QmKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBWYWx1ZVR5cGU+Ci0gICAgc3RydWN0IG1hcF9leHRyYWN0b3IKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jb25zdDxLZXk+Ojp0eXBlIGtleV90eXBlOwotCi0gICAgICAgIHN0YXRpYyBrZXlfdHlwZSBjb25zdCYgZXh0cmFjdCh2YWx1ZV90eXBlIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdi5maXJzdDsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBTZWNvbmQ+Ci0gICAgICAgIHN0YXRpYyBrZXlfdHlwZSBjb25zdCYgZXh0cmFjdChzdGQ6OnBhaXI8a2V5X3R5cGUsIFNlY29uZD4gY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2LmZpcnN0OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFNlY29uZD4KLSAgICAgICAgc3RhdGljIGtleV90eXBlIGNvbnN0JiBleHRyYWN0KAotICAgICAgICAgICAgc3RkOjpwYWlyPGtleV90eXBlIGNvbnN0LCBTZWNvbmQ+IGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdi5maXJzdDsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBBcmcxPgotICAgICAgICBzdGF0aWMga2V5X3R5cGUgY29uc3QmIGV4dHJhY3Qoa2V5X3R5cGUgY29uc3QmIGssIEFyZzEgY29uc3QmKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gazsKLSAgICAgICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KEFyZ3MgY29uc3QmLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7Ci0gICAgICAgIH0KLSNlbHNlCi0KLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEFyZz4KLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KEFyZyBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBBcmcsIGNsYXNzIEFyZzE+Ci0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdChBcmcgY29uc3QmLCBBcmcxIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfS0VZX0ZST01fVFVQTEUobmFtZXNwYWNlXykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdChuZG5ib29zdDo6dW5vcmRlcmVkOjpwaWVjZXdpc2VfY29uc3RydWN0X3QsICAgICAgXAotICAgICAgICAgICAgICAgIG5hbWVzcGFjZV8gdHVwbGU8PiBjb25zdCYsIFQyIGNvbnN0JikgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBUMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgaXNfa2V5PGtleV90eXBlLCBUPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGV4dHJhY3QobmRuYm9vc3Q6OnVub3JkZXJlZDo6cGllY2V3aXNlX2NvbnN0cnVjdF90LCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTxUPiBjb25zdCYgaywgVDIgY29uc3QmKSAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBpc19rZXk8a2V5X3R5cGUsIFQ+Ojp0eXBlKCAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlXyBnZXQ8MD4oaykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0tFWV9GUk9NX1RVUExFKG5hbWVzcGFjZV8pICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdChuZG5ib29zdDo6dW5vcmRlcmVkOjpwaWVjZXdpc2VfY29uc3RydWN0X3QsICAgICAgXAotICAgICAgICAgICAgICAgIG5hbWVzcGFjZV8gdHVwbGU8PiBjb25zdCYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgaXNfa2V5PGtleV90eXBlLCBUPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGV4dHJhY3QobmRuYm9vc3Q6OnVub3JkZXJlZDo6cGllY2V3aXNlX2NvbnN0cnVjdF90LCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTxUPiBjb25zdCYgaykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBpc19rZXk8a2V5X3R5cGUsIFQ+Ojp0eXBlKCAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlXyBnZXQ8MD4oaykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9Ci0KLSNlbmRpZgotCi1ORE5CT09TVF9VTk9SREVSRURfS0VZX0ZST01fVFVQTEUobmRuYm9vc3Q6OikKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRSkKLU5ETkJPT1NUX1VOT1JERVJFRF9LRVlfRlJPTV9UVVBMRShzdGQ6OikKLSNlbmRpZgotICAgIH07Ci19fX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGY0Y2RhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRldEX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLW5hbWVzcGFjZSB1bm9yZGVyZWQKLXsKLSAgICBzdHJ1Y3QgcGllY2V3aXNlX2NvbnN0cnVjdF90IHt9OwotICAgIGNvbnN0IHBpZWNld2lzZV9jb25zdHJ1Y3RfdCBwaWVjZXdpc2VfY29uc3RydWN0ID0gcGllY2V3aXNlX2NvbnN0cnVjdF90KCk7Ci19Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3RhYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC90YWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NDE0ODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3RhYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IEplcmVteSBCLiBNYWl0aW4tU2hlcGFyZC4KLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDExIERhbmllbCBKYW1lcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9BTExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfQUxMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9idWNrZXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3V0aWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWduZWRfc3RvcmFnZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLSNpbmNsdWRlIDxjbWF0aD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykgLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1VOT1JERVJFRF9ERVBSRUNBVEVEX0VRVUFMSVRZKQotCi0jaWYgZGVmaW5lZChfX0VER19fKQotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19ETUNfXykKLSNwcmFnbWEgbWVzc2FnZSgiV2FybmluZzogTkROQk9PU1RfVU5PUkRFUkVEX0RFUFJFQ0FURURfRVFVQUxJVFkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4iKQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgfHwgZGVmaW5lZChfX0hQX2FDQykgfHwgXAotICAgIGRlZmluZWQoX19TVU5QUk9fQ0MpIHx8IGRlZmluZWQoX19JQk1DUFBfXykKLSN3YXJuaW5nICJORE5CT09TVF9VTk9SREVSRURfREVQUkVDQVRFRF9FUVVBTElUWSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiIKLSNlbmRpZgotCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGNvbnZlcnQgZG91YmxlIHRvIHN0ZDo6c2l6ZV90Ci0KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgZG91YmxlX3RvX3NpemUoZG91YmxlIGYpCi0gICAgewotICAgICAgICByZXR1cm4gZiA+PSBzdGF0aWNfY2FzdDxkb3VibGU+KAotICAgICAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjptYXgpKCkpID8KLSAgICAgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6bWF4KSgpIDoKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihmKTsKLSAgICB9Ci0KLSAgICAvLyBUaGUgc3BhY2UgdXNlZCB0byBzdG9yZSB2YWx1ZXMgaW4gYSBub2RlLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBzdHJ1Y3QgdmFsdWVfYmFzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUgdmFsdWVfdHlwZTsKLQotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6YWxpZ25lZF9zdG9yYWdlPAotICAgICAgICAgICAgc2l6ZW9mKHZhbHVlX3R5cGUpLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmFsaWdubWVudF9vZjx2YWx1ZV90eXBlPjo6dmFsdWU+Ojp0eXBlIGRhdGFfOwotCi0gICAgICAgIHZvaWQqIGFkZHJlc3MoKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUmIHZhbHVlKCkgewotICAgICAgICAgICAgcmV0dXJuICooVmFsdWVUeXBlKikgdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUqIHZhbHVlX3B0cigpIHsKLSAgICAgICAgICAgIHJldHVybiAoVmFsdWVUeXBlKikgdGhpczsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLQotICAgICAgICB2YWx1ZV9iYXNlJiBvcGVyYXRvcj0odmFsdWVfYmFzZSBjb25zdCYpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZUFsbG9jPgotICAgIHN0cnVjdCBjb3B5X25vZGVzCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxOb2RlQWxsb2M+Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM7Ci0KLSAgICAgICAgbm9kZV9jb25zdHJ1Y3RvcjxOb2RlQWxsb2M+IGNvbnN0cnVjdG9yOwotCi0gICAgICAgIGV4cGxpY2l0IGNvcHlfbm9kZXMoTm9kZUFsbG9jJiBhKSA6IGNvbnN0cnVjdG9yKGEpIHt9Ci0KLSAgICAgICAgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyIGNyZWF0ZSgKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnZhbHVlX3R5cGU6OnZhbHVlX3R5cGUgY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yLmNvbnN0cnVjdF93aXRoX3ZhbHVlMih2KTsKLSAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rvci5yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGVBbGxvYz4KLSAgICBzdHJ1Y3QgbW92ZV9ub2RlcwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Tm9kZUFsbG9jPgotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOwotCi0gICAgICAgIG5vZGVfY29uc3RydWN0b3I8Tm9kZUFsbG9jPiBjb25zdHJ1Y3RvcjsKLQotICAgICAgICBleHBsaWNpdCBtb3ZlX25vZGVzKE5vZGVBbGxvYyYgYSkgOiBjb25zdHJ1Y3RvcihhKSB7fQotCi0gICAgICAgIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6cG9pbnRlciBjcmVhdGUoCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjp2YWx1ZV90eXBlOjp2YWx1ZV90eXBlJiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3Rvci5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIobmRuYm9vc3Q6Om1vdmUodikpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yLnJlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQnVja2V0cz4KLSAgICBzdHJ1Y3QgYXNzaWduX25vZGVzCi0gICAgewotICAgICAgICBub2RlX2hvbGRlcjx0eXBlbmFtZSBCdWNrZXRzOjpub2RlX2FsbG9jYXRvcj4gaG9sZGVyOwotCi0gICAgICAgIGV4cGxpY2l0IGFzc2lnbl9ub2RlcyhCdWNrZXRzJiBiKSA6IGhvbGRlcihiKSB7fQotCi0gICAgICAgIHR5cGVuYW1lIEJ1Y2tldHM6Om5vZGVfcG9pbnRlciBjcmVhdGUoCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgQnVja2V0czo6dmFsdWVfdHlwZSBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhvbGRlci5jb3B5X29mKHYpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCdWNrZXRzPgotICAgIHN0cnVjdCBtb3ZlX2Fzc2lnbl9ub2RlcwotICAgIHsKLSAgICAgICAgbm9kZV9ob2xkZXI8dHlwZW5hbWUgQnVja2V0czo6bm9kZV9hbGxvY2F0b3I+IGhvbGRlcjsKLQotICAgICAgICBleHBsaWNpdCBtb3ZlX2Fzc2lnbl9ub2RlcyhCdWNrZXRzJiBiKSA6IGhvbGRlcihiKSB7fQotCi0gICAgICAgIHR5cGVuYW1lIEJ1Y2tldHM6Om5vZGVfcG9pbnRlciBjcmVhdGUoCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgQnVja2V0czo6dmFsdWVfdHlwZSYgdikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhvbGRlci5tb3ZlX2NvcHlfb2Yodik7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPgotICAgIHN0cnVjdCB0YWJsZSA6Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZnVuY3Rpb25zPAotICAgICAgICAgICAgdHlwZW5hbWUgVHlwZXM6Omhhc2hlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjprZXlfZXF1YWw+Ci0gICAgewotICAgIHByaXZhdGU6Ci0gICAgICAgIHRhYmxlKHRhYmxlIGNvbnN0Jik7Ci0gICAgICAgIHRhYmxlJiBvcGVyYXRvcj0odGFibGUgY29uc3QmKTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6Om5vZGUgbm9kZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6aGFzaGVyIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6a2V5X2VxdWFsIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6a2V5X3R5cGUga2V5X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OmV4dHJhY3RvciBleHRyYWN0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6dGFibGUgdGFibGVfaW1wbDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6cG9saWN5IHBvbGljeTsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZnVuY3Rpb25zPAotICAgICAgICAgICAgdHlwZW5hbWUgVHlwZXM6Omhhc2hlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjprZXlfZXF1YWw+IGZ1bmN0aW9uczsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmdW5jdGlvbnM6OnNldF9oYXNoX2Z1bmN0aW9ucyBzZXRfaGFzaF9mdW5jdGlvbnM7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6YWxsb2NhdG9yIGFsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OgotICAgICAgICAgICAgcmViaW5kX3dyYXA8YWxsb2NhdG9yLCBub2RlPjo6dHlwZSBub2RlX2FsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OgotICAgICAgICAgICAgcmViaW5kX3dyYXA8YWxsb2NhdG9yLCBidWNrZXQ+Ojp0eXBlIGJ1Y2tldF9hbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPG5vZGVfYWxsb2NhdG9yPgotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxidWNrZXRfYWxsb2NhdG9yPgotICAgICAgICAgICAgYnVja2V0X2FsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyCi0gICAgICAgICAgICBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpjb25zdF9wb2ludGVyCi0gICAgICAgICAgICBjb25zdF9ub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYnVja2V0X2FsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIKLSAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bm9kZV9jb25zdHJ1Y3Rvcjxub2RlX2FsbG9jYXRvcj4KLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3I7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OgotICAgICAgICAgICAgaXRlcmF0b3I8bm9kZT4gaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjoKLSAgICAgICAgICAgIGNfaXRlcmF0b3I8bm9kZSwgY29uc3Rfbm9kZV9wb2ludGVyPiBjX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6Ci0gICAgICAgICAgICBsX2l0ZXJhdG9yPG5vZGUsIHBvbGljeT4gbF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OgotICAgICAgICAgICAgY2xfaXRlcmF0b3I8bm9kZSwgY29uc3Rfbm9kZV9wb2ludGVyLCBwb2xpY3k+IGNsX2l0ZXJhdG9yOwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBNZW1iZXJzCi0KLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb21wcmVzc2VkPGJ1Y2tldF9hbGxvY2F0b3IsIG5vZGVfYWxsb2NhdG9yPgotICAgICAgICAgICAgYWxsb2NhdG9yc187Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9jb3VudF87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHNpemVfOwotICAgICAgICBmbG9hdCBtbGZfOwotICAgICAgICBzdGQ6OnNpemVfdCBtYXhfbG9hZF87Ci0gICAgICAgIGJ1Y2tldF9wb2ludGVyIGJ1Y2tldHNfOwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBEYXRhIGFjY2VzcwotCi0gICAgICAgIGJ1Y2tldF9hbGxvY2F0b3IgY29uc3QmIGJ1Y2tldF9hbGxvYygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3JzXy5maXJzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgbm9kZV9hbGxvY2F0b3IgY29uc3QmIG5vZGVfYWxsb2MoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yc18uc2Vjb25kKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBidWNrZXRfYWxsb2NhdG9yJiBidWNrZXRfYWxsb2MoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yc18uZmlyc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5vZGVfYWxsb2NhdG9yJiBub2RlX2FsbG9jKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvcnNfLnNlY29uZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgbWF4X2J1Y2tldF9jb3VudCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIC0xIHRvIGFjY291bnQgZm9yIHRoZSBzdGFydCBidWNrZXQuCi0gICAgICAgICAgICByZXR1cm4gcG9saWN5OjpwcmV2X2J1Y2tldF9jb3VudCgKLSAgICAgICAgICAgICAgICBidWNrZXRfYWxsb2NhdG9yX3RyYWl0czo6bWF4X3NpemUoYnVja2V0X2FsbG9jKCkpIC0gMSk7Ci0gICAgICAgIH0KLQotICAgICAgICBidWNrZXRfcG9pbnRlciBnZXRfYnVja2V0KHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGJ1Y2tldHNfKTsKLSAgICAgICAgICAgIHJldHVybiBidWNrZXRzXyArIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PihidWNrZXRfaW5kZXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgbGlua19wb2ludGVyIGdldF9wcmV2aW91c19zdGFydCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBnZXRfYnVja2V0KGJ1Y2tldF9jb3VudF8pLT5maXJzdF9mcm9tX3N0YXJ0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBsaW5rX3BvaW50ZXIgZ2V0X3ByZXZpb3VzX3N0YXJ0KHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdldF9idWNrZXQoYnVja2V0X2luZGV4KS0+bmV4dF87Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzaXplXyA/IGl0ZXJhdG9yKGdldF9wcmV2aW91c19zdGFydCgpLT5uZXh0XykgOiBpdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgYmVnaW4oc3RkOjpzaXplX3QgYnVja2V0X2luZGV4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXNpemVfKSByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gZ2V0X3ByZXZpb3VzX3N0YXJ0KGJ1Y2tldF9pbmRleCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJldiA/IGl0ZXJhdG9yKHByZXYtPm5leHRfKSA6IGl0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN0ZDo6c2l6ZV90IGhhc2hfdG9fYnVja2V0KHN0ZDo6c2l6ZV90IGhhc2gpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwb2xpY3k6OnRvX2J1Y2tldChidWNrZXRfY291bnRfLCBoYXNoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IGxvYWRfZmFjdG9yKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGJ1Y2tldF9jb3VudF8gIT0gMCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNpemVfKQotICAgICAgICAgICAgICAgIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJ1Y2tldF9jb3VudF8pOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X3NpemUoc3RkOjpzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGl0ZXJhdG9yIGl0ID0gYmVnaW4oaW5kZXgpOwotICAgICAgICAgICAgaWYgKCFpdC5ub2RlXykgcmV0dXJuIDA7Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gMDsKLSAgICAgICAgICAgIHdoaWxlKGl0Lm5vZGVfICYmIGhhc2hfdG9fYnVja2V0KGl0Lm5vZGVfLT5oYXNoXykgPT0gaW5kZXgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICAgICAgICArK2l0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gTG9hZCBtZXRob2RzCi0KLSAgICAgICAgc3RkOjpzaXplX3QgbWF4X3NpemUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIAotICAgICAgICAgICAgLy8gc2l6ZSA8IG1sZl8gKiBjb3VudAotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZG91YmxlX3RvX3NpemUoY2VpbCgKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtbGZfKSAqCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obWF4X2J1Y2tldF9jb3VudCgpKQotICAgICAgICAgICAgICAgICkpIC0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcmVjYWxjdWxhdGVfbWF4X2xvYWQoKQotICAgICAgICB7Ci0gICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIAotICAgICAgICAgICAgLy8gRnJvbSA2LjMuMS8xMzoKLSAgICAgICAgICAgIC8vIE9ubHkgcmVzaXplIHdoZW4gc2l6ZSA+PSBtbGZfICogY291bnQKLSAgICAgICAgICAgIG1heF9sb2FkXyA9IGJ1Y2tldHNfID8gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkb3VibGVfdG9fc2l6ZShjZWlsKAotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1sZl8pICoKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihidWNrZXRfY291bnRfKQotICAgICAgICAgICAgICAgICkpIDogMDsKLQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtYXhfbG9hZF9mYWN0b3IoZmxvYXQgeikKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHogPiAwKTsKLSAgICAgICAgICAgIG1sZl8gPSAoc3RkOjptYXgpKHosIG1pbmltdW1fbWF4X2xvYWRfZmFjdG9yKTsKLSAgICAgICAgICAgIHJlY2FsY3VsYXRlX21heF9sb2FkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBtaW5fYnVja2V0c19mb3Jfc2l6ZShzdGQ6OnNpemVfdCBzaXplKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQobWxmXyA+PSBtaW5pbXVtX21heF9sb2FkX2ZhY3Rvcik7Ci0gICAgCi0gICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIAotICAgICAgICAgICAgLy8gRnJvbSA2LjMuMS8xMzoKLSAgICAgICAgICAgIC8vIHNpemUgPCBtbGZfICogY291bnQKLSAgICAgICAgICAgIC8vID0+IGNvdW50ID4gc2l6ZSAvIG1sZl8KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBPciBmcm9tIHJlaGFzaCBwb3N0LWNvbmRpdGlvbjoKLSAgICAgICAgICAgIC8vIGNvdW50ID4gc2l6ZSAvIG1sZl8KLQotICAgICAgICAgICAgcmV0dXJuIHBvbGljeTo6bmV3X2J1Y2tldF9jb3VudCgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRvdWJsZV90b19zaXplKGZsb29yKAotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHNpemUpIC8KLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtbGZfKSkpICsgMSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gQ29uc3RydWN0b3JzCi0KLSAgICAgICAgdGFibGUoc3RkOjpzaXplX3QgbnVtX2J1Y2tldHMsCi0gICAgICAgICAgICAgICAgaGFzaGVyIGNvbnN0JiBoZiwKLSAgICAgICAgICAgICAgICBrZXlfZXF1YWwgY29uc3QmIGVxLAotICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhKSA6Ci0gICAgICAgICAgICBmdW5jdGlvbnMoaGYsIGVxKSwKLSAgICAgICAgICAgIGFsbG9jYXRvcnNfKGEsYSksCi0gICAgICAgICAgICBidWNrZXRfY291bnRfKHBvbGljeTo6bmV3X2J1Y2tldF9jb3VudChudW1fYnVja2V0cykpLAotICAgICAgICAgICAgc2l6ZV8oMCksCi0gICAgICAgICAgICBtbGZfKDEuMGYpLAotICAgICAgICAgICAgbWF4X2xvYWRfKDApLAotICAgICAgICAgICAgYnVja2V0c18oKQotICAgICAgICB7fQotCi0gICAgICAgIHRhYmxlKHRhYmxlIGNvbnN0JiB4LCBub2RlX2FsbG9jYXRvciBjb25zdCYgYSkgOgotICAgICAgICAgICAgZnVuY3Rpb25zKHgpLAotICAgICAgICAgICAgYWxsb2NhdG9yc18oYSxhKSwKLSAgICAgICAgICAgIGJ1Y2tldF9jb3VudF8oeC5taW5fYnVja2V0c19mb3Jfc2l6ZSh4LnNpemVfKSksCi0gICAgICAgICAgICBzaXplXygwKSwKLSAgICAgICAgICAgIG1sZl8oeC5tbGZfKSwKLSAgICAgICAgICAgIG1heF9sb2FkXygwKSwKLSAgICAgICAgICAgIGJ1Y2tldHNfKCkKLSAgICAgICAge30KLQotICAgICAgICB0YWJsZSh0YWJsZSYgeCwgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZyBtKSA6Ci0gICAgICAgICAgICBmdW5jdGlvbnMoeCwgbSksCi0gICAgICAgICAgICBhbGxvY2F0b3JzXyh4LmFsbG9jYXRvcnNfLCBtKSwKLSAgICAgICAgICAgIGJ1Y2tldF9jb3VudF8oeC5idWNrZXRfY291bnRfKSwKLSAgICAgICAgICAgIHNpemVfKHguc2l6ZV8pLAotICAgICAgICAgICAgbWxmXyh4Lm1sZl8pLAotICAgICAgICAgICAgbWF4X2xvYWRfKHgubWF4X2xvYWRfKSwKLSAgICAgICAgICAgIGJ1Y2tldHNfKHguYnVja2V0c18pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHguYnVja2V0c18gPSBidWNrZXRfcG9pbnRlcigpOwotICAgICAgICAgICAgeC5zaXplXyA9IDA7Ci0gICAgICAgICAgICB4Lm1heF9sb2FkXyA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICB0YWJsZSh0YWJsZSYgeCwgbm9kZV9hbGxvY2F0b3IgY29uc3QmIGEsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZyBtKSA6Ci0gICAgICAgICAgICBmdW5jdGlvbnMoeCwgbSksCi0gICAgICAgICAgICBhbGxvY2F0b3JzXyhhLCBhKSwKLSAgICAgICAgICAgIGJ1Y2tldF9jb3VudF8oeC5idWNrZXRfY291bnRfKSwKLSAgICAgICAgICAgIHNpemVfKDApLAotICAgICAgICAgICAgbWxmXyh4Lm1sZl8pLAotICAgICAgICAgICAgbWF4X2xvYWRfKHgubWF4X2xvYWRfKSwKLSAgICAgICAgICAgIGJ1Y2tldHNfKCkKLSAgICAgICAge30KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gSW5pdGlhbGlzYXRpb24uCi0KLSAgICAgICAgdm9pZCBpbml0KHRhYmxlIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoeC5zaXplXykgewotICAgICAgICAgICAgICAgIGNyZWF0ZV9idWNrZXRzKGJ1Y2tldF9jb3VudF8pOwotICAgICAgICAgICAgICAgIGNvcHlfbm9kZXM8bm9kZV9hbGxvY2F0b3I+IGNvcHkobm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgICAgICB0YWJsZV9pbXBsOjpmaWxsX2J1Y2tldHMoeC5iZWdpbigpLCAqdGhpcywgY29weSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1vdmVfaW5pdCh0YWJsZSYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYobm9kZV9hbGxvYygpID09IHgubm9kZV9hbGxvYygpKSB7Ci0gICAgICAgICAgICAgICAgbW92ZV9idWNrZXRzX2Zyb20oeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKHguc2l6ZV8pIHsKLSAgICAgICAgICAgICAgICAvLyBUT0RPOiBDb3VsZCBwaWNrIG5ldyBidWNrZXQgc2l6ZT8KLSAgICAgICAgICAgICAgICBjcmVhdGVfYnVja2V0cyhidWNrZXRfY291bnRfKTsKLQotICAgICAgICAgICAgICAgIG1vdmVfbm9kZXM8bm9kZV9hbGxvY2F0b3I+IG1vdmUobm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgICAgICBub2RlX2hvbGRlcjxub2RlX2FsbG9jYXRvcj4gbm9kZXMoeCk7Ci0gICAgICAgICAgICAgICAgdGFibGVfaW1wbDo6ZmlsbF9idWNrZXRzKG5vZGVzLmJlZ2luKCksICp0aGlzLCBtb3ZlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBDcmVhdGUgYnVja2V0cwotCi0gICAgICAgIHZvaWQgY3JlYXRlX2J1Y2tldHMoc3RkOjpzaXplX3QgbmV3X2NvdW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFycmF5X2NvbnN0cnVjdG9yPGJ1Y2tldF9hbGxvY2F0b3I+Ci0gICAgICAgICAgICAgICAgY29uc3RydWN0b3IoYnVja2V0X2FsbG9jKCkpOwotICAgIAotICAgICAgICAgICAgLy8gQ3JlYXRlcyBhbiBleHRyYSBidWNrZXQgdG8gYWN0IGFzIHRoZSBzdGFydCBub2RlLgotICAgICAgICAgICAgY29uc3RydWN0b3IuY29uc3RydWN0KGJ1Y2tldCgpLCBuZXdfY291bnQgKyAxKTsKLQotICAgICAgICAgICAgaWYgKGJ1Y2tldHNfKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIENvcHkgdGhlIG5vZGVzIHRvIHRoZSBuZXcgYnVja2V0cywgaW5jbHVkaW5nIHRoZSBkdW1teQotICAgICAgICAgICAgICAgIC8vIG5vZGUgaWYgdGhlcmUgaXMgb25lLgotICAgICAgICAgICAgICAgIChjb25zdHJ1Y3Rvci5nZXQoKSArCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PihuZXdfY291bnQpKS0+bmV4dF8gPQotICAgICAgICAgICAgICAgICAgICAgICAgKGJ1Y2tldHNfICsgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Y2tldF9jb3VudF8pKS0+bmV4dF87Ci0gICAgICAgICAgICAgICAgZGVzdHJveV9idWNrZXRzKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChidWNrZXQ6OmV4dHJhX25vZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKG5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICAgICAgYS5jb25zdHJ1Y3QoKTsKLQotICAgICAgICAgICAgICAgIChjb25zdHJ1Y3Rvci5nZXQoKSArCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PihuZXdfY291bnQpKS0+bmV4dF8gPQotICAgICAgICAgICAgICAgICAgICAgICAgYS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJ1Y2tldF9jb3VudF8gPSBuZXdfY291bnQ7Ci0gICAgICAgICAgICBidWNrZXRzXyA9IGNvbnN0cnVjdG9yLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJlY2FsY3VsYXRlX21heF9sb2FkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gU3dhcCBhbmQgTW92ZQotCi0gICAgICAgIHZvaWQgc3dhcF9hbGxvY2F0b3JzKHRhYmxlJiBvdGhlciwgZmFsc2VfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIDIzLjIuMS44LCBpZiBwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXAgaXMKLSAgICAgICAgICAgIC8vIGZhbHNlIHRoZSBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkIHVubGVzcyB0aGUgYWxsb2NhdG9ycwotICAgICAgICAgICAgLy8gYXJlIGVxdWFsLgotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKG5vZGVfYWxsb2MoKSA9PSBvdGhlci5ub2RlX2FsbG9jKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzd2FwX2FsbG9jYXRvcnModGFibGUmIG90aGVyLCB0cnVlX3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFsbG9jYXRvcnNfLnN3YXAob3RoZXIuYWxsb2NhdG9yc18pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gT25seSBzd2FwcyB0aGUgYWxsb2NhdG9ycyBpZiBwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXAKLSAgICAgICAgdm9pZCBzd2FwKHRhYmxlJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMgb3AxKCp0aGlzLCB4KTsKLSAgICAgICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyBvcDIoeCwgKnRoaXMpOwotCi0gICAgICAgICAgICAvLyBJIHRoaW5rIHN3YXAgY2FuIHRocm93IGlmIFByb3BhZ2F0ZTo6dmFsdWUsCi0gICAgICAgICAgICAvLyBzaW5jZSB0aGUgYWxsb2NhdG9ycycgc3dhcCBjYW4gdGhyb3cuIE5vdCBzdXJlIHRob3VnaC4KLSAgICAgICAgICAgIHN3YXBfYWxsb2NhdG9ycyh4LAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwKLSAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3RyYWl0czxub2RlX2FsbG9jYXRvcj46OgotICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA6OnZhbHVlPigpKTsKLQotICAgICAgICAgICAgbmRuYm9vc3Q6OnN3YXAoYnVja2V0c18sIHguYnVja2V0c18pOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnN3YXAoYnVja2V0X2NvdW50XywgeC5idWNrZXRfY291bnRfKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpzd2FwKHNpemVfLCB4LnNpemVfKTsKLSAgICAgICAgICAgIHN0ZDo6c3dhcChtbGZfLCB4Lm1sZl8pOwotICAgICAgICAgICAgc3RkOjpzd2FwKG1heF9sb2FkXywgeC5tYXhfbG9hZF8pOwotICAgICAgICAgICAgb3AxLmNvbW1pdCgpOwotICAgICAgICAgICAgb3AyLmNvbW1pdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtb3ZlX2J1Y2tldHNfZnJvbSh0YWJsZSYgb3RoZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChub2RlX2FsbG9jKCkgPT0gb3RoZXIubm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCghYnVja2V0c18pOwotICAgICAgICAgICAgYnVja2V0c18gPSBvdGhlci5idWNrZXRzXzsKLSAgICAgICAgICAgIGJ1Y2tldF9jb3VudF8gPSBvdGhlci5idWNrZXRfY291bnRfOwotICAgICAgICAgICAgc2l6ZV8gPSBvdGhlci5zaXplXzsKLSAgICAgICAgICAgIG90aGVyLmJ1Y2tldHNfID0gYnVja2V0X3BvaW50ZXIoKTsKLSAgICAgICAgICAgIG90aGVyLnNpemVfID0gMDsKLSAgICAgICAgICAgIG90aGVyLm1heF9sb2FkXyA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gRGVsZXRlL2Rlc3RydWN0Ci0KLSAgICAgICAgfnRhYmxlKCkKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZXRlX2J1Y2tldHMoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGVsZXRlX25vZGUobGlua19wb2ludGVyIHByZXYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBuID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0Xyk7Ci0gICAgICAgICAgICBwcmV2LT5uZXh0XyA9IG4tPm5leHRfOwotCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3lfdmFsdWVfaW1wbChub2RlX2FsbG9jKCksCi0gICAgICAgICAgICAgICAgbi0+dmFsdWVfcHRyKCkpOwotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZXN0cm95KG5vZGVfYWxsb2MoKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFkZHJlc3NvZigqbikpOwotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZWFsbG9jYXRlKG5vZGVfYWxsb2MoKSwgbiwgMSk7Ci0gICAgICAgICAgICAtLXNpemVfOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgZGVsZXRlX25vZGVzKGxpbmtfcG9pbnRlciBwcmV2LCBsaW5rX3BvaW50ZXIgZW5kKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQocHJldi0+bmV4dF8gIT0gZW5kKTsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3QgY291bnQgPSAwOwotCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgZGVsZXRlX25vZGUocHJldik7Ci0gICAgICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICAgIH0gd2hpbGUgKHByZXYtPm5leHRfICE9IGVuZCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGVsZXRlX2J1Y2tldHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZihidWNrZXRzXykgewotICAgICAgICAgICAgICAgIGlmIChzaXplXykgZGVsZXRlX25vZGVzKGdldF9wcmV2aW91c19zdGFydCgpLCBsaW5rX3BvaW50ZXIoKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYnVja2V0OjpleHRyYV9ub2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVfcG9pbnRlciBuID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfYnVja2V0KGJ1Y2tldF9jb3VudF8pLT5uZXh0Xyk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6ZGVzdHJveShub2RlX2FsbG9jKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFkZHJlc3NvZigqbikpOwotICAgICAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlYWxsb2NhdGUobm9kZV9hbGxvYygpLCBuLCAxKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBkZXN0cm95X2J1Y2tldHMoKTsKLSAgICAgICAgICAgICAgICBidWNrZXRzXyA9IGJ1Y2tldF9wb2ludGVyKCk7Ci0gICAgICAgICAgICAgICAgbWF4X2xvYWRfID0gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCFzaXplXyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNsZWFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFzaXplXykgcmV0dXJuOwotCi0gICAgICAgICAgICBkZWxldGVfbm9kZXMoZ2V0X3ByZXZpb3VzX3N0YXJ0KCksIGxpbmtfcG9pbnRlcigpKTsKLSAgICAgICAgICAgIGNsZWFyX2J1Y2tldHMoKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCFzaXplXyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNsZWFyX2J1Y2tldHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBidWNrZXRfcG9pbnRlciBlbmQgPSBnZXRfYnVja2V0KGJ1Y2tldF9jb3VudF8pOwotICAgICAgICAgICAgZm9yKGJ1Y2tldF9wb2ludGVyIGl0ID0gYnVja2V0c187IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpdC0+bmV4dF8gPSBub2RlX3BvaW50ZXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGVzdHJveV9idWNrZXRzKCkKLSAgICAgICAgewotICAgICAgICAgICAgYnVja2V0X3BvaW50ZXIgZW5kID0gZ2V0X2J1Y2tldChidWNrZXRfY291bnRfICsgMSk7Ci0gICAgICAgICAgICBmb3IoYnVja2V0X3BvaW50ZXIgaXQgPSBidWNrZXRzXzsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJ1Y2tldF9hbGxvY2F0b3JfdHJhaXRzOjpkZXN0cm95KGJ1Y2tldF9hbGxvYygpLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKCppdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBidWNrZXRfYWxsb2NhdG9yX3RyYWl0czo6ZGVhbGxvY2F0ZShidWNrZXRfYWxsb2MoKSwKLSAgICAgICAgICAgICAgICBidWNrZXRzXywgYnVja2V0X2NvdW50XyArIDEpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIEZpeCBidWNrZXRzIGFmdGVyIGRlbGV0ZQotICAgICAgICAvLwotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGZpeF9idWNrZXQoc3RkOjpzaXplX3QgYnVja2V0X2luZGV4LCBsaW5rX3BvaW50ZXIgcHJldikKLSAgICAgICAgewotICAgICAgICAgICAgbGlua19wb2ludGVyIGVuZCA9IHByZXYtPm5leHRfOwotICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2luZGV4MiA9IGJ1Y2tldF9pbmRleDsKLQotICAgICAgICAgICAgaWYgKGVuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBidWNrZXRfaW5kZXgyID0gaGFzaF90b19idWNrZXQoCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4oZW5kKS0+aGFzaF8pOwotCi0gICAgICAgICAgICAgICAgLy8gSWYgYmVnaW4gYW5kIGVuZCBhcmUgaW4gdGhlIHNhbWUgYnVja2V0LCB0aGVuCi0gICAgICAgICAgICAgICAgLy8gdGhlcmUncyBub3RoaW5nIHRvIGRvLgotICAgICAgICAgICAgICAgIGlmIChidWNrZXRfaW5kZXggPT0gYnVja2V0X2luZGV4MikgcmV0dXJuIGJ1Y2tldF9pbmRleDI7Ci0KLSAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGJ1Y2tldCBjb250YWluaW5nIGVuZC4KLSAgICAgICAgICAgICAgICBnZXRfYnVja2V0KGJ1Y2tldF9pbmRleDIpLT5uZXh0XyA9IHByZXY7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgYnVja2V0IGlzIG5vdyBlbXB0eS4KLSAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyIHRoaXNfYnVja2V0ID0gZ2V0X2J1Y2tldChidWNrZXRfaW5kZXgpOwotICAgICAgICAgICAgaWYgKHRoaXNfYnVja2V0LT5uZXh0XyA9PSBwcmV2KQotICAgICAgICAgICAgICAgIHRoaXNfYnVja2V0LT5uZXh0XyA9IGxpbmtfcG9pbnRlcigpOwotCi0gICAgICAgICAgICByZXR1cm4gYnVja2V0X2luZGV4MjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBBc3NpZ25tZW50Ci0KLSAgICAgICAgdm9pZCBhc3NpZ24odGFibGUgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzICE9IG5kbmJvb3N0OjphZGRyZXNzb2YoeCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXNzaWduKHgsCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90cmFpdHM8bm9kZV9hbGxvY2F0b3I+OjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50Ojp2YWx1ZT4oKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGFzc2lnbih0YWJsZSBjb25zdCYgeCwgZmFsc2VfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gU3Ryb25nIGV4Y2VwdGlvbiBzYWZldHkuCi0gICAgICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMgbmV3X2Z1bmNfdGhpcygqdGhpcywgeCk7Ci0gICAgICAgICAgICBuZXdfZnVuY190aGlzLmNvbW1pdCgpOwotICAgICAgICAgICAgbWxmXyA9IHgubWxmXzsKLSAgICAgICAgICAgIHJlY2FsY3VsYXRlX21heF9sb2FkKCk7Ci0KLSAgICAgICAgICAgIGlmICghc2l6ZV8gJiYgIXguc2l6ZV8pIHJldHVybjsKLQotICAgICAgICAgICAgaWYgKHguc2l6ZV8gPj0gbWF4X2xvYWRfKSB7Ci0gICAgICAgICAgICAgICAgY3JlYXRlX2J1Y2tldHMobWluX2J1Y2tldHNfZm9yX3NpemUoeC5zaXplXykpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgY2xlYXJfYnVja2V0cygpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBhc3NpZ25fbm9kZXMgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBjb250YWluZXIncyBlbGVtZW50cywKLSAgICAgICAgICAgIC8vIGFzc2lnbmluZyB0byB0aGVtIGlmIHBvc3NpYmxlLCBhbmQgZGVsZXRpbmcgYW55IHRoYXQgYXJlCi0gICAgICAgICAgICAvLyBsZWZ0IG92ZXIuCi0gICAgICAgICAgICBhc3NpZ25fbm9kZXM8dGFibGU+IGFzc2lnbigqdGhpcyk7Ci0gICAgICAgICAgICB0YWJsZV9pbXBsOjpmaWxsX2J1Y2tldHMoeC5iZWdpbigpLCAqdGhpcywgYXNzaWduKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYXNzaWduKHRhYmxlIGNvbnN0JiB4LCB0cnVlX3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlX2FsbG9jKCkgPT0geC5ub2RlX2FsbG9jKCkpIHsKLSAgICAgICAgICAgICAgICBhbGxvY2F0b3JzXy5hc3NpZ24oeC5hbGxvY2F0b3JzXyk7Ci0gICAgICAgICAgICAgICAgYXNzaWduKHgsIGZhbHNlX3R5cGUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMgbmV3X2Z1bmNfdGhpcygqdGhpcywgeCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBEZWxldGUgZXZlcnl0aGluZyB3aXRoIGN1cnJlbnQgYWxsb2NhdG9ycyBiZWZvcmUgYXNzaWduaW5nCi0gICAgICAgICAgICAgICAgLy8gdGhlIG5ldyBvbmVzLgotICAgICAgICAgICAgICAgIGRlbGV0ZV9idWNrZXRzKCk7Ci0gICAgICAgICAgICAgICAgYWxsb2NhdG9yc18uYXNzaWduKHguYWxsb2NhdG9yc18pOwotCi0gICAgICAgICAgICAgICAgLy8gQ29weSBvdmVyIG90aGVyIGRhdGEsIGFsbCBubyB0aHJvdy4KLSAgICAgICAgICAgICAgICBuZXdfZnVuY190aGlzLmNvbW1pdCgpOwotICAgICAgICAgICAgICAgIG1sZl8gPSB4Lm1sZl87Ci0gICAgICAgICAgICAgICAgYnVja2V0X2NvdW50XyA9IG1pbl9idWNrZXRzX2Zvcl9zaXplKHguc2l6ZV8pOwotICAgICAgICAgICAgICAgIG1heF9sb2FkXyA9IDA7Ci0KLSAgICAgICAgICAgICAgICAvLyBGaW5hbGx5IGNvcHkgdGhlIGVsZW1lbnRzLgotICAgICAgICAgICAgICAgIGlmICh4LnNpemVfKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZV9idWNrZXRzKGJ1Y2tldF9jb3VudF8pOwotICAgICAgICAgICAgICAgICAgICBjb3B5X25vZGVzPG5vZGVfYWxsb2NhdG9yPiBjb3B5KG5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHRhYmxlX2ltcGw6OmZpbGxfYnVja2V0cyh4LmJlZ2luKCksICp0aGlzLCBjb3B5KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1vdmVfYXNzaWduKHRhYmxlJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcyAhPSBuZG5ib29zdDo6YWRkcmVzc29mKHgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1vdmVfYXNzaWduKHgsCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90cmFpdHM8bm9kZV9hbGxvY2F0b3I+OjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50Ojp2YWx1ZT4oKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1vdmVfYXNzaWduKHRhYmxlJiB4LCB0cnVlX3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZV9idWNrZXRzKCk7Ci0gICAgICAgICAgICBhbGxvY2F0b3JzXy5tb3ZlX2Fzc2lnbih4LmFsbG9jYXRvcnNfKTsKLSAgICAgICAgICAgIG1vdmVfYXNzaWduX25vX2FsbG9jKHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtb3ZlX2Fzc2lnbih0YWJsZSYgeCwgZmFsc2VfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGVfYWxsb2MoKSA9PSB4Lm5vZGVfYWxsb2MoKSkgewotICAgICAgICAgICAgICAgIGRlbGV0ZV9idWNrZXRzKCk7Ci0gICAgICAgICAgICAgICAgbW92ZV9hc3NpZ25fbm9fYWxsb2MoeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMgbmV3X2Z1bmNfdGhpcygqdGhpcywgeCk7Ci0gICAgICAgICAgICAgICAgbmV3X2Z1bmNfdGhpcy5jb21taXQoKTsKLSAgICAgICAgICAgICAgICBtbGZfID0geC5tbGZfOwotICAgICAgICAgICAgICAgIHJlY2FsY3VsYXRlX21heF9sb2FkKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXNpemVfICYmICF4LnNpemVfKSByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBpZiAoeC5zaXplXyA+PSBtYXhfbG9hZF8pIHsKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2J1Y2tldHMobWluX2J1Y2tldHNfZm9yX3NpemUoeC5zaXplXykpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY2xlYXJfYnVja2V0cygpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIG1vdmVfYXNzaWduX25vZGVzIHRha2VzIG93bmVyc2hpcCBvZiB0aGUgY29udGFpbmVyJ3MKLSAgICAgICAgICAgICAgICAvLyBlbGVtZW50cywgYXNzaWduaW5nIHRvIHRoZW0gaWYgcG9zc2libGUsIGFuZCBkZWxldGluZwotICAgICAgICAgICAgICAgIC8vIGFueSB0aGF0IGFyZSBsZWZ0IG92ZXIuCi0gICAgICAgICAgICAgICAgbW92ZV9hc3NpZ25fbm9kZXM8dGFibGU+IGFzc2lnbigqdGhpcyk7Ci0gICAgICAgICAgICAgICAgbm9kZV9ob2xkZXI8bm9kZV9hbGxvY2F0b3I+IG5vZGVzKHgpOwotICAgICAgICAgICAgICAgIHRhYmxlX2ltcGw6OmZpbGxfYnVja2V0cyhub2Rlcy5iZWdpbigpLCAqdGhpcywgYXNzaWduKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBtb3ZlX2Fzc2lnbl9ub19hbGxvYyh0YWJsZSYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zIG5ld19mdW5jX3RoaXMoKnRoaXMsIHgpOwotICAgICAgICAgICAgLy8gTm8gdGhyb3cgZnJvbSBoZXJlLgotICAgICAgICAgICAgbWxmXyA9IHgubWxmXzsKLSAgICAgICAgICAgIG1heF9sb2FkXyA9IHgubWF4X2xvYWRfOwotICAgICAgICAgICAgbW92ZV9idWNrZXRzX2Zyb20oeCk7Ci0gICAgICAgICAgICBuZXdfZnVuY190aGlzLmNvbW1pdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWNjZXNzb3JzCi0KLSAgICAgICAga2V5X3R5cGUgY29uc3QmIGdldF9rZXkodmFsdWVfdHlwZSBjb25zdCYgeCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGV4dHJhY3Rvcjo6ZXh0cmFjdCh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGhhc2goa2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwb2xpY3k6OmFwcGx5X2hhc2godGhpcy0+aGFzaF9mdW5jdGlvbigpLCBrKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpbmQgTm9kZQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIEhhc2gsIHR5cGVuYW1lIFByZWQ+Ci0gICAgICAgIGl0ZXJhdG9yIGdlbmVyaWNfZmluZF9ub2RlKAotICAgICAgICAgICAgICAgIEtleSBjb25zdCYgaywKLSAgICAgICAgICAgICAgICBIYXNoIGNvbnN0JiBoZiwKLSAgICAgICAgICAgICAgICBQcmVkIGNvbnN0JiBlcSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHRhYmxlX2ltcGwgY29uc3QqPih0aGlzKS0+Ci0gICAgICAgICAgICAgICAgZmluZF9ub2RlX2ltcGwocG9saWN5OjphcHBseV9oYXNoKGhmLCBrKSwgaywgZXEpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZmluZF9ub2RlKAotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoLAotICAgICAgICAgICAgICAgIGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dGFibGVfaW1wbCBjb25zdCo+KHRoaXMpLT4KLSAgICAgICAgICAgICAgICBmaW5kX25vZGVfaW1wbChrZXlfaGFzaCwgaywgdGhpcy0+a2V5X2VxKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZmluZF9ub2RlKGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dGFibGVfaW1wbCBjb25zdCo+KHRoaXMpLT4KLSAgICAgICAgICAgICAgICBmaW5kX25vZGVfaW1wbChoYXNoKGspLCBrLCB0aGlzLT5rZXlfZXEoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBmaW5kX21hdGNoaW5nX25vZGUoaXRlcmF0b3IgbikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgLy8gVE9ETzogRG9lcyB0aGlzIGFwcGx5IHRvIEMrKzExPwotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEZvciBzb21lIHN0dXBpZCByZWFzb24sIEkgZGVjaWRlZCB0byBzdXBwb3J0IGVxdWFsaXR5IGNvbXBhcmlzb24KLSAgICAgICAgICAgIC8vIHdoZW4gZGlmZmVyZW50IGhhc2ggZnVuY3Rpb25zIGFyZSB1c2VkLiBTbyBJIGNhbid0IHVzZSB0aGUgaGFzaAotICAgICAgICAgICAgLy8gdmFsdWUgZnJvbSB0aGUgbm9kZSBoZXJlLgotICAgIAotICAgICAgICAgICAgcmV0dXJuIGZpbmRfbm9kZShnZXRfa2V5KCpuKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZXNlcnZlIGFuZCByZWhhc2gKLQotICAgICAgICB2b2lkIHJlc2VydmVfZm9yX2luc2VydChzdGQ6OnNpemVfdCk7Ci0gICAgICAgIHZvaWQgcmVoYXNoKHN0ZDo6c2l6ZV90KTsKLSAgICAgICAgdm9pZCByZXNlcnZlKHN0ZDo6c2l6ZV90KTsKLSAgICB9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIFJlc2VydmUgJiBSZWhhc2gKLQotICAgIC8vIGJhc2ljIGV4Y2VwdGlvbiBzYWZldHkKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+Ci0gICAgaW5saW5lIHZvaWQgdGFibGU8VHlwZXM+OjpyZXNlcnZlX2Zvcl9pbnNlcnQoc3RkOjpzaXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIGlmICghYnVja2V0c18pIHsKLSAgICAgICAgICAgIGNyZWF0ZV9idWNrZXRzKChzdGQ6Om1heCkoYnVja2V0X2NvdW50XywKLSAgICAgICAgICAgICAgICBtaW5fYnVja2V0c19mb3Jfc2l6ZShzaXplKSkpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgc3RhbmRhcmQgdGhpcyBzaG91bGQgYmUgJ3NpemUgPj0gbWF4X2xvYWRfJywKLSAgICAgICAgLy8gYnV0IEkgdGhpbmsgdGhpcyBpcyBiZXR0ZXIsIGRlZmVjdCByZXBvcnQgZmlsZWQuCi0gICAgICAgIGVsc2UgaWYoc2l6ZSA+IG1heF9sb2FkXykgewotICAgICAgICAgICAgc3RkOjpzaXplX3QgbnVtX2J1Y2tldHMKLSAgICAgICAgICAgICAgICA9IG1pbl9idWNrZXRzX2Zvcl9zaXplKChzdGQ6Om1heCkoc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV8gKyAoc2l6ZV8gPj4gMSkpKTsKLQotICAgICAgICAgICAgaWYgKG51bV9idWNrZXRzICE9IGJ1Y2tldF9jb3VudF8pCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dGFibGVfaW1wbCo+KHRoaXMpLT5yZWhhc2hfaW1wbChudW1fYnVja2V0cyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBpZiBoYXNoIGZ1bmN0aW9uIHRocm93cywgYmFzaWMgZXhjZXB0aW9uIHNhZmV0eQotICAgIC8vIHN0cm9uZyBvdGhlcndpc2UuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+Ci0gICAgaW5saW5lIHZvaWQgdGFibGU8VHlwZXM+OjpyZWhhc2goc3RkOjpzaXplX3QgbWluX2J1Y2tldHMpCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotCi0gICAgICAgIGlmKCFzaXplXykgewotICAgICAgICAgICAgZGVsZXRlX2J1Y2tldHMoKTsKLSAgICAgICAgICAgIGJ1Y2tldF9jb3VudF8gPSBwb2xpY3k6Om5ld19idWNrZXRfY291bnQobWluX2J1Y2tldHMpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbWluX2J1Y2tldHMgPSBwb2xpY3k6Om5ld19idWNrZXRfY291bnQoKHN0ZDo6bWF4KShtaW5fYnVja2V0cywKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRvdWJsZV90b19zaXplKGZsb29yKAotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHNpemVfKSAvCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obWxmXykpKSArIDEpKTsKLQotICAgICAgICAgICAgaWYobWluX2J1Y2tldHMgIT0gYnVja2V0X2NvdW50XykKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx0YWJsZV9pbXBsKj4odGhpcyktPnJlaGFzaF9pbXBsKG1pbl9idWNrZXRzKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4KLSAgICBpbmxpbmUgdm9pZCB0YWJsZTxUeXBlcz46OnJlc2VydmUoc3RkOjpzaXplX3QgbnVtX2VsZW1lbnRzKQotICAgIHsKLSAgICAgICAgcmVoYXNoKHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigKLSAgICAgICAgICAgIHN0ZDo6Y2VpbChzdGF0aWNfY2FzdDxkb3VibGU+KG51bV9lbGVtZW50cykgLyBtbGZfKSkpOwotICAgIH0KLX19fQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91bmlxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3VuaXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MTMyNTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3VuaXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MjIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBKZXJlbXkgQi4gTWFpdGluLVNoZXBhcmQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMSBEYW5pZWwgSmFtZXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfVU5JUVVFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX1VOSVFVRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3RhYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2V4dHJhY3Rfa2V5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQ+IHN0cnVjdCB1bmlxdWVfbm9kZTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHB0cl9ub2RlOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4gc3RydWN0IHRhYmxlX2ltcGw7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgdW5pcXVlX25vZGUgOgotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnZhbHVlX2Jhc2U8VD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPAotICAgICAgICAgICAgQSwgdW5pcXVlX25vZGU8QSwgVD4gPjo6dHlwZTo6cG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgbm9kZV9wb2ludGVyIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICBsaW5rX3BvaW50ZXIgbmV4dF87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGhhc2hfOwotCi0gICAgICAgIHVuaXF1ZV9ub2RlKCkgOgotICAgICAgICAgICAgbmV4dF8oKSwKLSAgICAgICAgICAgIGhhc2hfKDApCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdm9pZCBpbml0KG5vZGVfcG9pbnRlcikKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB1bmlxdWVfbm9kZSYgb3BlcmF0b3I9KHVuaXF1ZV9ub2RlIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBwdHJfbm9kZSA6Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dmFsdWVfYmFzZTxUPiwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCBidWNrZXRfYmFzZTsKLSAgICAgICAgdHlwZWRlZiBwdHJfbm9kZTxUPiogbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHB0cl9idWNrZXQqIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICBzdGQ6OnNpemVfdCBoYXNoXzsKLQotICAgICAgICBwdHJfbm9kZSgpIDoKLSAgICAgICAgICAgIGJ1Y2tldF9iYXNlKCksCi0gICAgICAgICAgICBoYXNoXygwKQotICAgICAgICB7fQotCi0gICAgICAgIHZvaWQgaW5pdChub2RlX3BvaW50ZXIpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgcHRyX25vZGUmIG9wZXJhdG9yPShwdHJfbm9kZSBjb25zdCYpOwotICAgIH07Ci0KLSAgICAvLyBJZiB0aGUgYWxsb2NhdG9yIHVzZXMgcmF3IHBvaW50ZXJzIHVzZSBwdHJfbm9kZQotICAgIC8vIE90aGVyd2lzZSB1c2Ugbm9kZS4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBOb2RlUHRyLCB0eXBlbmFtZSBCdWNrZXRQdHI+Ci0gICAgc3RydWN0IHBpY2tfbm9kZTIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp1bmlxdWVfbm9kZTxBLCBUPiBub2RlOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpyZWJpbmRfd3JhcDxBLCBub2RlPjo6dHlwZQotICAgICAgICA+Ojpwb2ludGVyIG5vZGVfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YnVja2V0PG5vZGVfcG9pbnRlcj4gYnVja2V0OwotICAgICAgICB0eXBlZGVmIG5vZGVfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBwaWNrX25vZGUyPEEsIFQsCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX25vZGU8VD4qLAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQqPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9ub2RlPFQ+IG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiBidWNrZXQqIGxpbmtfcG9pbnRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHBpY2tfbm9kZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPEEsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfbm9kZTxUPiA+Ojp0eXBlCi0gICAgICAgID4gdGVudGF0aXZlX25vZGVfdHJhaXRzOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpyZWJpbmRfd3JhcDxBLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCA+Ojp0eXBlCi0gICAgICAgID4gdGVudGF0aXZlX2J1Y2tldF90cmFpdHM7Ci0KLSAgICAgICAgdHlwZWRlZiBwaWNrX25vZGUyPEEsIFQsCi0gICAgICAgICAgICB0eXBlbmFtZSB0ZW50YXRpdmVfbm9kZV90cmFpdHM6OnBvaW50ZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSB0ZW50YXRpdmVfYnVja2V0X3RyYWl0czo6cG9pbnRlcj4gcGljazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6Om5vZGUgbm9kZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBILCB0eXBlbmFtZSBQPgotICAgIHN0cnVjdCBzZXQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpzZXQ8QSwgVCwgSCwgUD4gdHlwZXM7Ci0KLSAgICAgICAgdHlwZWRlZiBBIGFsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgSCBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgUCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgVCBrZXlfdHlwZTsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3I+IHRyYWl0czsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfbm9kZTxhbGxvY2F0b3IsIHZhbHVlX3R5cGU+IHBpY2s7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGVfaW1wbDx0eXBlcz4gdGFibGU7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpzZXRfZXh0cmFjdG9yPHZhbHVlX3R5cGU+IGV4dHJhY3RvcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19wb2xpY3k6OnR5cGUgcG9saWN5OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgSywgdHlwZW5hbWUgTSwgdHlwZW5hbWUgSCwgdHlwZW5hbWUgUD4KLSAgICBzdHJ1Y3QgbWFwCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFwPEEsIEssIE0sIEgsIFA+IHR5cGVzOwotCi0gICAgICAgIHR5cGVkZWYgQSBhbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPEsgY29uc3QsIE0+IHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgSCBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgUCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgSyBrZXlfdHlwZTsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3I+Ci0gICAgICAgICAgICB0cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwaWNrX25vZGU8YWxsb2NhdG9yLCB2YWx1ZV90eXBlPiBwaWNrOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6Om5vZGUgbm9kZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlX2ltcGw8dHlwZXM+IHRhYmxlOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFwX2V4dHJhY3RvcjxrZXlfdHlwZSwgdmFsdWVfdHlwZT4KLSAgICAgICAgICAgIGV4dHJhY3RvcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19wb2xpY3k6OnR5cGUgcG9saWN5OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+Ci0gICAgc3RydWN0IHRhYmxlX2ltcGwgOiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlPFR5cGVzPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlPFR5cGVzPiB0YWJsZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpwb2xpY3kgcG9saWN5OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX3BvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX2FsbG9jYXRvciBub2RlX2FsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bm9kZV9hbGxvY2F0b3JfdHJhaXRzIG5vZGVfYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6YnVja2V0X3BvaW50ZXIgYnVja2V0X3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Omhhc2hlciBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmtleV9lcXVhbCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmtleV90eXBlIGtleV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX2NvbnN0cnVjdG9yIG5vZGVfY29uc3RydWN0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmV4dHJhY3RvciBleHRyYWN0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjX2l0ZXJhdG9yIGNfaXRlcmF0b3I7Ci0KLSAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGVtcGxhY2VfcmV0dXJuOwotCi0gICAgICAgIC8vIENvbnN0cnVjdG9ycwotCi0gICAgICAgIHRhYmxlX2ltcGwoc3RkOjpzaXplX3QgbiwKLSAgICAgICAgICAgICAgICBoYXNoZXIgY29uc3QmIGhmLAotICAgICAgICAgICAgICAgIGtleV9lcXVhbCBjb25zdCYgZXEsCi0gICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3IgY29uc3QmIGEpCi0gICAgICAgICAgOiB0YWJsZShuLCBoZiwgZXEsIGEpCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdGFibGVfaW1wbCh0YWJsZV9pbXBsIGNvbnN0JiB4KQotICAgICAgICAgIDogdGFibGUoeCwgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjoKLSAgICAgICAgICAgICAgICBzZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKHgubm9kZV9hbGxvYygpKSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+aW5pdCh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRhYmxlX2ltcGwodGFibGVfaW1wbCBjb25zdCYgeCwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSkKLSAgICAgICAgICA6IHRhYmxlKHgsIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPmluaXQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0YWJsZV9pbXBsKHRhYmxlX2ltcGwmIHgsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZyBtKQotICAgICAgICAgIDogdGFibGUoeCwgbSkKLSAgICAgICAge30KLQotICAgICAgICB0YWJsZV9pbXBsKHRhYmxlX2ltcGwmIHgsCi0gICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3IgY29uc3QmIGEsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZyBtKQotICAgICAgICAgIDogdGFibGUoeCwgYSwgbSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+bW92ZV9pbml0KHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWNjZXNzb3JzCi0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgUHJlZD4KLSAgICAgICAgaXRlcmF0b3IgZmluZF9ub2RlX2ltcGwoCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2gsCi0gICAgICAgICAgICAgICAgS2V5IGNvbnN0JiBrLAotICAgICAgICAgICAgICAgIFByZWQgY29uc3QmIGVxKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXggPSB0aGlzLT5oYXNoX3RvX2J1Y2tldChrZXlfaGFzaCk7Ci0gICAgICAgICAgICBpdGVyYXRvciBuID0gdGhpcy0+YmVnaW4oYnVja2V0X2luZGV4KTsKLQotICAgICAgICAgICAgZm9yICg7OykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIW4ubm9kZV8pIHJldHVybiBuOwotCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgbm9kZV9oYXNoID0gbi5ub2RlXy0+aGFzaF87Ci0gICAgICAgICAgICAgICAgaWYgKGtleV9oYXNoID09IG5vZGVfaGFzaCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcShrLCB0aGlzLT5nZXRfa2V5KCpuKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmhhc2hfdG9fYnVja2V0KG5vZGVfaGFzaCkgIT0gYnVja2V0X2luZGV4KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgKytuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgY291bnQoa2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5maW5kX25vZGUoaykubm9kZV8gPyAxIDogMDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUmIGF0KGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy0+c2l6ZV8pIHsKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBpdCA9IHRoaXMtPmZpbmRfbm9kZShrKTsKLSAgICAgICAgICAgICAgICBpZiAoaXQubm9kZV8pIHJldHVybiAqaXQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgc3RkOjpvdXRfb2ZfcmFuZ2UoIlVuYWJsZSB0byBmaW5kIGtleSBpbiB1bm9yZGVyZWRfbWFwLiIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+Ci0gICAgICAgICAgICBlcXVhbF9yYW5nZShrZXlfdHlwZSBjb25zdCYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaXRlcmF0b3IgbiA9IHRoaXMtPmZpbmRfbm9kZShrKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG4yID0gbjsKLSAgICAgICAgICAgIGlmIChuMi5ub2RlXykgKytuMjsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihuLCBuMik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBlcXVhbHMKLQotICAgICAgICBib29sIGVxdWFscyh0YWJsZV9pbXBsIGNvbnN0JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYodGhpcy0+c2l6ZV8gIT0gb3RoZXIuc2l6ZV8pIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAgICAgICAgIGZvcihpdGVyYXRvciBuMSA9IHRoaXMtPmJlZ2luKCk7IG4xLm5vZGVfOyArK24xKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIG4yID0gb3RoZXIuZmluZF9tYXRjaGluZ19ub2RlKG4xKTsKLQotICAgICAgICAgICAgICAgIGlmICghbjIubm9kZV8gfHwgKm4xICE9ICpuMikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgIAotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFbXBsYWNlL0luc2VydAotCi0gICAgICAgIGlubGluZSBpdGVyYXRvciBhZGRfbm9kZSgKLSAgICAgICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yJiBhLAotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoKQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX3BvaW50ZXIgbiA9IGEucmVsZWFzZSgpOwotICAgICAgICAgICAgbi0+aGFzaF8gPSBrZXlfaGFzaDsKLSAgICAKLSAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyIGIgPSB0aGlzLT5nZXRfYnVja2V0KHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKSk7Ci0KLSAgICAgICAgICAgIGlmICghYi0+bmV4dF8pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGlua19wb2ludGVyIHN0YXJ0X25vZGUgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoc3RhcnRfbm9kZS0+bmV4dF8pIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy0+Z2V0X2J1Y2tldCh0aGlzLT5oYXNoX3RvX2J1Y2tldCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4oc3RhcnRfbm9kZS0+bmV4dF8pLT5oYXNoXykKLSAgICAgICAgICAgICAgICAgICAgKS0+bmV4dF8gPSBuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGItPm5leHRfID0gc3RhcnRfbm9kZTsKLSAgICAgICAgICAgICAgICBuLT5uZXh0XyA9IHN0YXJ0X25vZGUtPm5leHRfOwotICAgICAgICAgICAgICAgIHN0YXJ0X25vZGUtPm5leHRfID0gbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBuLT5uZXh0XyA9IGItPm5leHRfLT5uZXh0XzsKLSAgICAgICAgICAgICAgICBiLT5uZXh0Xy0+bmV4dF8gPSBuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICArK3RoaXMtPnNpemVfOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKG4pOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSYgb3BlcmF0b3JbXShrZXlfdHlwZSBjb25zdCYgaykKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2YWx1ZV90eXBlOjpzZWNvbmRfdHlwZSBtYXBwZWRfdHlwZTsKLSAgICAKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gdGhpcy0+aGFzaChrKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIHBvcyA9IHRoaXMtPmZpbmRfbm9kZShrZXlfaGFzaCwgayk7Ci0gICAgCi0gICAgICAgICAgICBpZiAocG9zLm5vZGVfKSByZXR1cm4gKnBvczsKLSAgICAKLSAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgbm9kZSBiZWZvcmUgcmVoYXNoaW5nIGluIGNhc2UgaXQgdGhyb3dzIGFuCi0gICAgICAgICAgICAvLyBleGNlcHRpb24gKG5lZWQgc3Ryb25nIHNhZmV0eSBpbiBzdWNoIGEgY2FzZSkuCi0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgIGEuY29uc3RydWN0X3dpdGhfdmFsdWUoTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUzMoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6bWFrZV90dXBsZShrKSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6bWFrZV90dXBsZSgpKSk7Ci0gICAgCi0gICAgICAgICAgICB0aGlzLT5yZXNlcnZlX2Zvcl9pbnNlcnQodGhpcy0+c2l6ZV8gKyAxKTsKLSAgICAgICAgICAgIHJldHVybiAqYWRkX25vZGUoYSwga2V5X2hhc2gpOwotICAgICAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wbGFjZV9hcmdzMTwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBsZWFzZV9pZ25vcmVfdGhpc19vdmVybG9hZD4gY29uc3QmKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGVtcGxhY2VfcmV0dXJuKHRoaXMtPmJlZ2luKCksIGZhbHNlKTsKLSAgICAgICAgfQotIyAgIGVsc2UKLSAgICAgICAgZW1wbGFjZV9yZXR1cm4gZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBsZWFzZV9pZ25vcmVfdGhpc19vdmVybG9hZCBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9yZXR1cm4odGhpcy0+YmVnaW4oKSwgZmFsc2UpOwotICAgICAgICB9Ci0jICAgZW5kaWYKLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlIDxORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9URU1QTEFURT4KLSAgICAgICAgZW1wbGFjZV9yZXR1cm4gZW1wbGFjZShORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTKQotICAgICAgICB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICAgICAgcmV0dXJuIGVtcGxhY2VfaW1wbCgKLSAgICAgICAgICAgICAgICBleHRyYWN0b3I6OmV4dHJhY3QoTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfRk9SV0FSRCksCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfRk9SV0FSRCk7Ci0jZWxzZQotICAgICAgICAgICAgcmV0dXJuIGVtcGxhY2VfaW1wbCgKLSAgICAgICAgICAgICAgICBleHRyYWN0b3I6OmV4dHJhY3QoYXJncy5hMCwgYXJncy5hMSksCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfRk9SV0FSRCk7Ci0jZW5kaWYKLSAgICAgICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMD4KLSAgICAgICAgZW1wbGFjZV9yZXR1cm4gZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcGxhY2VfYXJnczE8QTA+IGNvbnN0JiBhcmdzKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9pbXBsKGV4dHJhY3Rvcjo6ZXh0cmFjdChhcmdzLmEwKSwgYXJncyk7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlIDxORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9URU1QTEFURT4KLSAgICAgICAgZW1wbGFjZV9yZXR1cm4gZW1wbGFjZV9pbXBsKGtleV90eXBlIGNvbnN0JiBrLAotICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUykKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgaXRlcmF0b3IgcG9zID0gdGhpcy0+ZmluZF9ub2RlKGtleV9oYXNoLCBrKTsKLSAgICAKLSAgICAgICAgICAgIGlmIChwb3Mubm9kZV8pIHJldHVybiBlbXBsYWNlX3JldHVybihwb3MsIGZhbHNlKTsKLSAgICAKLSAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgbm9kZSBiZWZvcmUgcmVoYXNoaW5nIGluIGNhc2UgaXQgdGhyb3dzIGFuCi0gICAgICAgICAgICAvLyBleGNlcHRpb24gKG5lZWQgc3Ryb25nIHNhZmV0eSBpbiBzdWNoIGEgY2FzZSkuCi0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgIGEuY29uc3RydWN0X3dpdGhfdmFsdWUoTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfRk9SV0FSRCk7Ci0gICAgCi0gICAgICAgICAgICAvLyByZXNlcnZlIGhhcyBiYXNpYyBleGNlcHRpb24gc2FmZXR5IGlmIHRoZSBoYXNoIGZ1bmN0aW9uCi0gICAgICAgICAgICAvLyB0aHJvd3MsIHN0cm9uZyBvdGhlcndpc2UuCi0gICAgICAgICAgICB0aGlzLT5yZXNlcnZlX2Zvcl9pbnNlcnQodGhpcy0+c2l6ZV8gKyAxKTsKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX3JldHVybih0aGlzLT5hZGRfbm9kZShhLCBrZXlfaGFzaCksIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZW1wbGFjZV9yZXR1cm4gZW1wbGFjZV9pbXBsX3dpdGhfbm9kZShub2RlX2NvbnN0cnVjdG9yJiBhKQotICAgICAgICB7Ci0gICAgICAgICAgICBrZXlfdHlwZSBjb25zdCYgayA9IHRoaXMtPmdldF9rZXkoYS52YWx1ZSgpKTsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gdGhpcy0+aGFzaChrKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIHBvcyA9IHRoaXMtPmZpbmRfbm9kZShrZXlfaGFzaCwgayk7Ci0KLSAgICAgICAgICAgIGlmIChwb3Mubm9kZV8pIHJldHVybiBlbXBsYWNlX3JldHVybihwb3MsIGZhbHNlKTsKLQotICAgICAgICAgICAgLy8gcmVzZXJ2ZSBoYXMgYmFzaWMgZXhjZXB0aW9uIHNhZmV0eSBpZiB0aGUgaGFzaCBmdW5jdGlvbgotICAgICAgICAgICAgLy8gdGhyb3dzLCBzdHJvbmcgb3RoZXJ3aXNlLgotICAgICAgICAgICAgdGhpcy0+cmVzZXJ2ZV9mb3JfaW5zZXJ0KHRoaXMtPnNpemVfICsgMSk7Ci0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9yZXR1cm4odGhpcy0+YWRkX25vZGUoYSwga2V5X2hhc2gpLCB0cnVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9URU1QTEFURT4KLSAgICAgICAgZW1wbGFjZV9yZXR1cm4gZW1wbGFjZV9pbXBsKG5vX2tleSwgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUykKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRG9uJ3QgaGF2ZSBhIGtleSwgc28gY29uc3RydWN0IHRoZSBub2RlIGZpcnN0IGluIG9yZGVyCi0gICAgICAgICAgICAvLyB0byBiZSBhYmxlIHRvIGxvb2t1cCB0aGUgcG9zaXRpb24uCi0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgIGEuY29uc3RydWN0X3dpdGhfdmFsdWUoTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfRk9SV0FSRCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9pbXBsX3dpdGhfbm9kZShhKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBJbnNlcnQgcmFuZ2UgbWV0aG9kcwotICAgICAgICAvLwotICAgICAgICAvLyBpZiBoYXNoIGZ1bmN0aW9uIHRocm93cywgb3IgaW5zZXJ0aW5nID4gMSBlbGVtZW50LCBiYXNpYyBleGNlcHRpb24KLSAgICAgICAgLy8gc2FmZXR5IHN0cm9uZyBvdGhlcndpc2UKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdm9pZCBpbnNlcnRfcmFuZ2UoSW5wdXRJdCBpLCBJbnB1dEl0IGopCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKGkgIT0gaikKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5zZXJ0X3JhbmdlX2ltcGwoZXh0cmFjdG9yOjpleHRyYWN0KCppKSwgaSwgaik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdm9pZCBpbnNlcnRfcmFuZ2VfaW1wbChrZXlfdHlwZSBjb25zdCYgaywgSW5wdXRJdCBpLCBJbnB1dEl0IGopCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotCi0gICAgICAgICAgICBpbnNlcnRfcmFuZ2VfaW1wbDIoYSwgaywgaSwgaik7Ci0KLSAgICAgICAgICAgIHdoaWxlKCsraSAhPSBqKSB7Ci0gICAgICAgICAgICAgICAgLy8gTm90ZTogY2FuJ3QgdXNlIGdldF9rZXkgYXMgJyppJyBtaWdodCBub3QgYmUgdmFsdWVfdHlwZSAtIGl0Ci0gICAgICAgICAgICAgICAgLy8gY291bGQgYmUgYSBwYWlyIHdpdGggZmlyc3RfdHlwZXMgYXMga2V5X3R5cGUgd2l0aG91dCBjb25zdCBvcgotICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IHNlY29uZF90eXBlLgotICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgLy8gVE9ETzogTWlnaHQgYmUgd29ydGggc3RvcmluZyB0aGUgdmFsdWVfdHlwZSBpbnN0ZWFkIG9mIHRoZQotICAgICAgICAgICAgICAgIC8vIGtleSBoZXJlLiBDb3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiAnKmknIGlzIGV4cGVuc2l2ZS4gQ291bGQKLSAgICAgICAgICAgICAgICAvLyBiZSBsZXNzIGVmZmljaWVudCBpZiBjb3B5aW5nIHRoZSBmdWxsIHZhbHVlX3R5cGUgaXMKLSAgICAgICAgICAgICAgICAvLyBleHBlbnNpdmUuCi0gICAgICAgICAgICAgICAgaW5zZXJ0X3JhbmdlX2ltcGwyKGEsIGV4dHJhY3Rvcjo6ZXh0cmFjdCgqaSksIGksIGopOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHZvaWQgaW5zZXJ0X3JhbmdlX2ltcGwyKG5vZGVfY29uc3RydWN0b3ImIGEsIGtleV90eXBlIGNvbnN0JiBrLAotICAgICAgICAgICAgSW5wdXRJdCBpLCBJbnB1dEl0IGopCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIE5vIHNpZGUgZWZmZWN0cyBpbiB0aGlzIGluaXRpYWwgY29kZQotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgaXRlcmF0b3IgcG9zID0gdGhpcy0+ZmluZF9ub2RlKGtleV9oYXNoLCBrKTsKLSAgICAKLSAgICAgICAgICAgIGlmICghcG9zLm5vZGVfKSB7Ci0gICAgICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIoKmkpOwotICAgICAgICAgICAgICAgIGlmKHRoaXMtPnNpemVfICsgMSA+IHRoaXMtPm1heF9sb2FkXykKLSAgICAgICAgICAgICAgICAgICAgdGhpcy0+cmVzZXJ2ZV9mb3JfaW5zZXJ0KHRoaXMtPnNpemVfICsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5zZXJ0X3NpemUoaSwgaikpOwotICAgIAotICAgICAgICAgICAgICAgIC8vIE5vdGhpbmcgYWZ0ZXIgdGhpcyBwb2ludCBjYW4gdGhyb3cuCi0gICAgICAgICAgICAgICAgdGhpcy0+YWRkX25vZGUoYSwga2V5X2hhc2gpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHZvaWQgaW5zZXJ0X3JhbmdlX2ltcGwobm9fa2V5LCBJbnB1dEl0IGksIElucHV0SXQgaikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0KLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlMigqaSk7Ci0gICAgICAgICAgICAgICAgZW1wbGFjZV9pbXBsX3dpdGhfbm9kZShhKTsKLSAgICAgICAgICAgIH0gd2hpbGUoKytpICE9IGopOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIEVyYXNlCi0gICAgICAgIC8vCi0gICAgICAgIC8vIG5vIHRocm93Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgZXJhc2Vfa2V5KGtleV90eXBlIGNvbnN0JiBrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZighdGhpcy0+c2l6ZV8pIHJldHVybiAwOwotCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXggPSB0aGlzLT5oYXNoX3RvX2J1Y2tldChrZXlfaGFzaCk7Ci0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IHRoaXMtPmdldF9wcmV2aW91c19zdGFydChidWNrZXRfaW5kZXgpOwotICAgICAgICAgICAgaWYgKCFwcmV2KSByZXR1cm4gMDsKLQotICAgICAgICAgICAgZm9yICg7OykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByZXYtPm5leHRfKSByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBub2RlX2hhc2ggPQotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+aGFzaF87Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMtPmhhc2hfdG9fYnVja2V0KG5vZGVfaGFzaCkgIT0gYnVja2V0X2luZGV4KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAobm9kZV9oYXNoID09IGtleV9oYXNoICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5rZXlfZXEoKShrLCB0aGlzLT5nZXRfa2V5KAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPnZhbHVlKCkpKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgcHJldiA9IHByZXYtPm5leHRfOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgZW5kID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPm5leHRfOwotCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBjb3VudCA9IHRoaXMtPmRlbGV0ZV9ub2RlcyhwcmV2LCBlbmQpOwotICAgICAgICAgICAgdGhpcy0+Zml4X2J1Y2tldChidWNrZXRfaW5kZXgsIHByZXYpOwotICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZXJhc2UoY19pdGVyYXRvciByKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoci5ub2RlXyk7Ci0gICAgICAgICAgICBpdGVyYXRvciBuZXh0KHIubm9kZV8pOwotICAgICAgICAgICAgKytuZXh0OwotICAgICAgICAgICAgZXJhc2Vfbm9kZXMoci5ub2RlXywgbmV4dC5ub2RlXyk7Ci0gICAgICAgICAgICByZXR1cm4gbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGVyYXNlX3JhbmdlKGNfaXRlcmF0b3IgcjEsIGNfaXRlcmF0b3IgcjIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyMSA9PSByMikgcmV0dXJuIGl0ZXJhdG9yKHIyLm5vZGVfKTsKLSAgICAgICAgICAgIGVyYXNlX25vZGVzKHIxLm5vZGVfLCByMi5ub2RlXyk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IocjIubm9kZV8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlcmFzZV9ub2Rlcyhub2RlX3BvaW50ZXIgYmVnaW4sIG5vZGVfcG9pbnRlciBlbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCA9IHRoaXMtPmhhc2hfdG9fYnVja2V0KGJlZ2luLT5oYXNoXyk7Ci0KLSAgICAgICAgICAgIC8vIEZpbmQgdGhlIG5vZGUgYmVmb3JlIGJlZ2luLgotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoYnVja2V0X2luZGV4KTsKLSAgICAgICAgICAgIHdoaWxlKHByZXYtPm5leHRfICE9IGJlZ2luKSBwcmV2ID0gcHJldi0+bmV4dF87Ci0KLSAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgbm9kZXMuCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgdGhpcy0+ZGVsZXRlX25vZGUocHJldik7Ci0gICAgICAgICAgICAgICAgYnVja2V0X2luZGV4ID0gdGhpcy0+Zml4X2J1Y2tldChidWNrZXRfaW5kZXgsIHByZXYpOwotICAgICAgICAgICAgfSB3aGlsZSAocHJldi0+bmV4dF8gIT0gZW5kKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBmaWxsX2J1Y2tldHMKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUNyZWF0b3I+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGZpbGxfYnVja2V0cyhpdGVyYXRvciBuLCB0YWJsZSYgZHN0LAotICAgICAgICAgICAgTm9kZUNyZWF0b3ImIGNyZWF0b3IpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gZHN0LmdldF9wcmV2aW91c19zdGFydCgpOwotCi0gICAgICAgICAgICB3aGlsZSAobi5ub2RlXykgewotICAgICAgICAgICAgICAgIG5vZGVfcG9pbnRlciBub2RlID0gY3JlYXRvci5jcmVhdGUoKm4pOwotICAgICAgICAgICAgICAgIG5vZGUtPmhhc2hfID0gbi5ub2RlXy0+aGFzaF87Ci0gICAgICAgICAgICAgICAgcHJldi0+bmV4dF8gPSBub2RlOwotICAgICAgICAgICAgICAgICsrZHN0LnNpemVfOwotICAgICAgICAgICAgICAgICsrbjsKLQotICAgICAgICAgICAgICAgIHByZXYgPSBwbGFjZV9pbl9idWNrZXQoZHN0LCBwcmV2KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIHN0cm9uZyBvdGhlcndpc2UgZXhjZXB0aW9uIHNhZmV0eQotICAgICAgICB2b2lkIHJlaGFzaF9pbXBsKHN0ZDo6c2l6ZV90IG51bV9idWNrZXRzKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQodGhpcy0+YnVja2V0c18pOwotCi0gICAgICAgICAgICB0aGlzLT5jcmVhdGVfYnVja2V0cyhudW1fYnVja2V0cyk7Ci0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IHRoaXMtPmdldF9wcmV2aW91c19zdGFydCgpOwotICAgICAgICAgICAgd2hpbGUgKHByZXYtPm5leHRfKQotICAgICAgICAgICAgICAgIHByZXYgPSBwbGFjZV9pbl9idWNrZXQoKnRoaXMsIHByZXYpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBub2RlcyBwbGFjaW5nIHRoZW0gaW4gdGhlIGNvcnJlY3QgYnVja2V0cy4KLSAgICAgICAgLy8gcHJlOiBwcmV2LT5uZXh0XyBpcyBub3QgbnVsbC4KLSAgICAgICAgc3RhdGljIGxpbmtfcG9pbnRlciBwbGFjZV9pbl9idWNrZXQodGFibGUmIGRzdCwgbGlua19wb2ludGVyIHByZXYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBuID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0Xyk7Ci0gICAgICAgICAgICBidWNrZXRfcG9pbnRlciBiID0gZHN0LmdldF9idWNrZXQoZHN0Lmhhc2hfdG9fYnVja2V0KG4tPmhhc2hfKSk7Ci0KLSAgICAgICAgICAgIGlmICghYi0+bmV4dF8pIHsKLSAgICAgICAgICAgICAgICBiLT5uZXh0XyA9IHByZXY7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0XyA9IG4tPm5leHRfOwotICAgICAgICAgICAgICAgIG4tPm5leHRfID0gYi0+bmV4dF8tPm5leHRfOwotICAgICAgICAgICAgICAgIGItPm5leHRfLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotfX19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3V0aWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3V0aWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTFkYjg1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91dGlsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IEplcmVteSBCLiBNYWl0aW4tU2hlcGFyZC4KLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDExIERhbmllbCBKYW1lcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9VVElMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX1VUSUxfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NlbGVjdF90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL21vdmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zd2FwLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1fbWF4X2xvYWRfZmFjdG9yID0gMWUtM2Y7Ci0gICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGRlZmF1bHRfYnVja2V0X2NvdW50ID0gMTE7Ci0gICAgc3RydWN0IG1vdmVfdGFnIHt9OwotICAgIHN0cnVjdCBlbXB0eV9lbXBsYWNlIHt9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGl0ZXJhdG9yIFNGSU5BRQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEk+Ci0gICAgc3RydWN0IGlzX2ZvcndhcmQgOgotICAgICAgICBuZG5ib29zdDo6aXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6aXRlcmF0b3JfdHJhdmVyc2FsPEk+Ojp0eXBlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmRfdHJhdmVyc2FsX3RhZz4KLSAgICB7fTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJLCB0eXBlbmFtZSBSZXR1cm5UeXBlPgotICAgIHN0cnVjdCBlbmFibGVfaWZfZm9yd2FyZCA6Ci0gICAgICAgIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aXNfZm9yd2FyZDxJPjo6dmFsdWUsCi0gICAgICAgICAgICBSZXR1cm5UeXBlPgotICAgIHt9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEksIHR5cGVuYW1lIFJldHVyblR5cGU+Ci0gICAgc3RydWN0IGRpc2FibGVfaWZfZm9yd2FyZCA6Ci0gICAgICAgIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmlzX2ZvcndhcmQ8ST46OnZhbHVlLAotICAgICAgICAgICAgUmV0dXJuVHlwZT4KLSAgICB7fTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBwcmltZXMKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfUFJJTUVTIFwKLSAgICAoMTd1bCkoMjl1bCkoMzd1bCkoNTN1bCkoNjd1bCkoNzl1bCkgXAotICAgICg5N3VsKSgxMzF1bCkoMTkzdWwpKDI1N3VsKSgzODl1bCkoNTIxdWwpKDc2OXVsKSBcCi0gICAgKDEwMzF1bCkoMTU0M3VsKSgyMDUzdWwpKDMwNzl1bCkoNjE1MXVsKSgxMjI4OXVsKSgyNDU5M3VsKSBcCi0gICAgKDQ5MTU3dWwpKDk4MzE3dWwpKDE5NjYxM3VsKSgzOTMyNDF1bCkoNzg2NDMzdWwpIFwKLSAgICAoMTU3Mjg2OXVsKSgzMTQ1NzM5dWwpKDYyOTE0Njl1bCkoMTI1ODI5MTd1bCkoMjUxNjU4NDN1bCkgXAotICAgICg1MDMzMTY1M3VsKSgxMDA2NjMzMTl1bCkoMjAxMzI2NjExdWwpKDQwMjY1MzE4OXVsKSg4MDUzMDY0NTd1bCkgXAotICAgICgxNjEwNjEyNzQxdWwpKDMyMjEyMjU0NzN1bCkoNDI5NDk2NzI5MXVsKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHByaW1lX2xpc3RfdGVtcGxhdGUKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBjb25zdCB2YWx1ZVtdOwotCi0jaWYgIWRlZmluZWQoU1VOUFJPX0NDKQotICAgICAgICBzdGF0aWMgc3RkOjpwdHJkaWZmX3QgY29uc3QgbGVuZ3RoOwotI2Vsc2UKLSAgICAgICAgc3RhdGljIHN0ZDo6cHRyZGlmZl90IGNvbnN0IGxlbmd0aAotICAgICAgICAgICAgPSBORE5CT09TVF9QUF9TRVFfU0laRShORE5CT09TVF9VTk9SREVSRURfUFJJTUVTKTsKLSNlbmRpZgotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0ZDo6c2l6ZV90IGNvbnN0IHByaW1lX2xpc3RfdGVtcGxhdGU8VD46OnZhbHVlW10gPSB7Ci0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9FTlVNKE5ETkJPT1NUX1VOT1JERVJFRF9QUklNRVMpCi0gICAgfTsKLQotI2lmICFkZWZpbmVkKFNVTlBST19DQykKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0ZDo6cHRyZGlmZl90IGNvbnN0IHByaW1lX2xpc3RfdGVtcGxhdGU8VD46Omxlbmd0aAotICAgICAgICA9IE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX1VOT1JERVJFRF9QUklNRVMpOwotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfUFJJTUVTCi0KLSAgICB0eXBlZGVmIHByaW1lX2xpc3RfdGVtcGxhdGU8c3RkOjpzaXplX3Q+IHByaW1lX2xpc3Q7Ci0KLSAgICAvLyBubyB0aHJvdwotICAgIGlubGluZSBzdGQ6OnNpemVfdCBuZXh0X3ByaW1lKHN0ZDo6c2l6ZV90IG51bSkgewotICAgICAgICBzdGQ6OnNpemVfdCBjb25zdCogY29uc3QgcHJpbWVfbGlzdF9iZWdpbiA9IHByaW1lX2xpc3Q6OnZhbHVlOwotICAgICAgICBzdGQ6OnNpemVfdCBjb25zdCogY29uc3QgcHJpbWVfbGlzdF9lbmQgPSBwcmltZV9saXN0X2JlZ2luICsKLSAgICAgICAgICAgIHByaW1lX2xpc3Q6Omxlbmd0aDsKLSAgICAgICAgc3RkOjpzaXplX3QgY29uc3QqIGJvdW5kID0KLSAgICAgICAgICAgIHN0ZDo6bG93ZXJfYm91bmQocHJpbWVfbGlzdF9iZWdpbiwgcHJpbWVfbGlzdF9lbmQsIG51bSk7Ci0gICAgICAgIGlmKGJvdW5kID09IHByaW1lX2xpc3RfZW5kKQotICAgICAgICAgICAgYm91bmQtLTsKLSAgICAgICAgcmV0dXJuICpib3VuZDsKLSAgICB9Ci0KLSAgICAvLyBubyB0aHJvdwotICAgIGlubGluZSBzdGQ6OnNpemVfdCBwcmV2X3ByaW1lKHN0ZDo6c2l6ZV90IG51bSkgewotICAgICAgICBzdGQ6OnNpemVfdCBjb25zdCogY29uc3QgcHJpbWVfbGlzdF9iZWdpbiA9IHByaW1lX2xpc3Q6OnZhbHVlOwotICAgICAgICBzdGQ6OnNpemVfdCBjb25zdCogY29uc3QgcHJpbWVfbGlzdF9lbmQgPSBwcmltZV9saXN0X2JlZ2luICsKLSAgICAgICAgICAgIHByaW1lX2xpc3Q6Omxlbmd0aDsKLSAgICAgICAgc3RkOjpzaXplX3QgY29uc3QqIGJvdW5kID0KLSAgICAgICAgICAgIHN0ZDo6dXBwZXJfYm91bmQocHJpbWVfbGlzdF9iZWdpbixwcmltZV9saXN0X2VuZCwgbnVtKTsKLSAgICAgICAgaWYoYm91bmQgIT0gcHJpbWVfbGlzdF9iZWdpbikKLSAgICAgICAgICAgIGJvdW5kLS07Ci0gICAgICAgIHJldHVybiAqYm91bmQ7Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGluc2VydF9zaXplL2luaXRpYWxfc2l6ZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFKQotCi0gICAgdXNpbmcgOjpzdGQ6OmRpc3RhbmNlOwotCi0jZWxzZQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyYXRvcj4KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgZGlzdGFuY2UoRm9yd2FyZEl0ZXJhdG9yIGksIEZvcndhcmRJdGVyYXRvciBqKSB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHg7Ci0gICAgICAgIHN0ZDo6ZGlzdGFuY2UoaSwgaiwgeCk7Ci0gICAgICAgIHJldHVybiB4OwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgST4KLSAgICBpbmxpbmUgdHlwZW5hbWUKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbmFibGVfaWZfZm9yd2FyZDxJLCBzdGQ6OnNpemVfdD46OnR5cGUKLSAgICAgICAgaW5zZXJ0X3NpemUoSSBpLCBJIGopCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpkaXN0YW5jZShpLCBqKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgST4KLSAgICBpbmxpbmUgdHlwZW5hbWUKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkaXNhYmxlX2lmX2ZvcndhcmQ8SSwgc3RkOjpzaXplX3Q+Ojp0eXBlCi0gICAgICAgIGluc2VydF9zaXplKEksIEkpCi0gICAgewotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgST4KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaW5pdGlhbF9zaXplKEkgaSwgSSBqLAotICAgICAgICBzdGQ6OnNpemVfdCBudW1fYnVja2V0cyA9Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlZmF1bHRfYnVja2V0X2NvdW50KQotICAgIHsKLSAgICAgICAgLy8gVE9ETzogV2h5ICsxPwotICAgICAgICByZXR1cm4gKHN0ZDo6bWF4KSgKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5zZXJ0X3NpemUoaSwgaikgKyAxLAotICAgICAgICAgICAgbnVtX2J1Y2tldHMpOwotICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBjb21wcmVzc2VkCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IEluZGV4PgotICAgIHN0cnVjdCBjb21wcmVzc2VkX2Jhc2UgOiBwcml2YXRlIFQKLSAgICB7Ci0gICAgICAgIGNvbXByZXNzZWRfYmFzZShUIGNvbnN0JiB4KSA6IFQoeCkge30KLSAgICAgICAgY29tcHJlc3NlZF9iYXNlKFQmIHgsIG1vdmVfdGFnKSA6IFQobmRuYm9vc3Q6Om1vdmUoeCkpIHt9Ci0KLSAgICAgICAgVCYgZ2V0KCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgICAgICAgVCBjb25zdCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICB9OwotICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgSW5kZXg+Ci0gICAgc3RydWN0IHVuY29tcHJlc3NlZF9iYXNlCi0gICAgewotICAgICAgICB1bmNvbXByZXNzZWRfYmFzZShUIGNvbnN0JiB4KSA6IHZhbHVlXyh4KSB7fQotICAgICAgICB1bmNvbXByZXNzZWRfYmFzZShUJiB4LCBtb3ZlX3RhZykgOiB2YWx1ZV8obmRuYm9vc3Q6Om1vdmUoeCkpIHt9Ci0KLSAgICAgICAgVCYgZ2V0KCkgeyByZXR1cm4gdmFsdWVfOyB9Ci0gICAgICAgIFQgY29uc3QmIGdldCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotICAgIHByaXZhdGU6Ci0gICAgICAgIFQgdmFsdWVfOwotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGludCBJbmRleD4KLSAgICBzdHJ1Y3QgZ2VuZXJhdGVfYmFzZQotICAgICAgOiBuZG5ib29zdDo6ZGV0YWlsOjppZl90cnVlPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2VtcHR5PFQ+Ojp2YWx1ZQotICAgICAgICA+OjogTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHRoZW48Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNvbXByZXNzZWRfYmFzZTxULCBJbmRleD4sCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnVuY29tcHJlc3NlZF9iYXNlPFQsIEluZGV4PgotICAgICAgICA+Ci0gICAge307Ci0gICAgCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICBzdHJ1Y3QgY29tcHJlc3NlZAotICAgICAgOiBwcml2YXRlIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z2VuZXJhdGVfYmFzZTxUMSwgMT46OnR5cGUsCi0gICAgICAgIHByaXZhdGUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpnZW5lcmF0ZV9iYXNlPFQyLCAyPjo6dHlwZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZW5lcmF0ZV9iYXNlPFQxLCAxPjo6dHlwZSBiYXNlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZW5lcmF0ZV9iYXNlPFQyLCAyPjo6dHlwZSBiYXNlMjsKLQotICAgICAgICB0eXBlZGVmIFQxIGZpcnN0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgVDIgc2Vjb25kX3R5cGU7Ci0gICAgICAgIAotICAgICAgICBmaXJzdF90eXBlJiBmaXJzdCgpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxiYXNlMSo+KHRoaXMpLT5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZpcnN0X3R5cGUgY29uc3QmIGZpcnN0KCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJhc2UxIGNvbnN0Kj4odGhpcyktPmdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2Vjb25kX3R5cGUmIHNlY29uZCgpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxiYXNlMio+KHRoaXMpLT5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNlY29uZF90eXBlIGNvbnN0JiBzZWNvbmQoKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8YmFzZTIgY29uc3QqPih0aGlzKS0+Z2V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIFNlY29uZD4KLSAgICAgICAgY29tcHJlc3NlZChGaXJzdCBjb25zdCYgeDEsIFNlY29uZCBjb25zdCYgeDIpCi0gICAgICAgICAgICA6IGJhc2UxKHgxKSwgYmFzZTIoeDIpIHt9Ci0KLSAgICAgICAgY29tcHJlc3NlZChjb21wcmVzc2VkIGNvbnN0JiB4KQotICAgICAgICAgICAgOiBiYXNlMSh4LmZpcnN0KCkpLCBiYXNlMih4LnNlY29uZCgpKSB7fQotCi0gICAgICAgIGNvbXByZXNzZWQoY29tcHJlc3NlZCYgeCwgbW92ZV90YWcgbSkKLSAgICAgICAgICAgIDogYmFzZTEoeC5maXJzdCgpLCBtKSwgYmFzZTIoeC5zZWNvbmQoKSwgbSkge30KLQotICAgICAgICB2b2lkIGFzc2lnbihjb21wcmVzc2VkIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBmaXJzdCgpID0geC5maXJzdCgpOwotICAgICAgICAgICAgc2Vjb25kKCkgPSB4LnNlY29uZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtb3ZlX2Fzc2lnbihjb21wcmVzc2VkJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBmaXJzdCgpID0gbmRuYm9vc3Q6Om1vdmUoeC5maXJzdCgpKTsKLSAgICAgICAgICAgIHNlY29uZCgpID0gbmRuYm9vc3Q6Om1vdmUoeC5zZWNvbmQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc3dhcChjb21wcmVzc2VkJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6c3dhcChmaXJzdCgpLCB4LmZpcnN0KCkpOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnN3YXAoc2Vjb25kKCksIHguc2Vjb25kKCkpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAvLyBQcmV2ZW50IGFzc2lnbm1lbnQganVzdCB0byBtYWtlIHVzZSBvZiBhc3NpZ24gb3IKLSAgICAgICAgLy8gbW92ZV9hc3NpZ24gZXhwbGljaXQuCi0gICAgICAgIGNvbXByZXNzZWQmIG9wZXJhdG9yPShjb21wcmVzc2VkIGNvbnN0Jik7Ci0gICAgfTsKLX19fQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvdW5vcmRlcmVkX3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMzIzOTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvdW5vcmRlcmVkX3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQ5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91bm9yZGVyZWQgZm9yIGRvY3VtZW50YXRpb24KLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfVU5PUkRFUkVEX1NFVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX1VOT1JERVJFRF9TRVRfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2VxdWl2YWxlbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdW5pcXVlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3V0aWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9tb3ZlLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI2lmIE5ETkJPT1NUX01TVkMgPj0gMTQwMAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDM5NikgLy90aGUgaW5saW5lIHNwZWNpZmllciBjYW5ub3QgYmUgdXNlZCB3aGVuIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyaWVuZCBkZWNsYXJhdGlvbiByZWZlcnMgdG8gYSBzcGVjaWFsaXphdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYSBmdW5jdGlvbiB0ZW1wbGF0ZQotI2VuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci1uYW1lc3BhY2UgdW5vcmRlcmVkCi17Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgY2xhc3MgdW5vcmRlcmVkX3NldAotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfTU9WRSkKLSAgICAgICAgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUodW5vcmRlcmVkX3NldCkKLSNlbmRpZgotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIFQga2V5X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIEggaGFzaGVyOwotICAgICAgICB0eXBlZGVmIFAga2V5X2VxdWFsOwotICAgICAgICB0eXBlZGVmIEEgYWxsb2NhdG9yX3R5cGU7Ci0KLSAgICBwcml2YXRlOgotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpzZXQ8QSwgVCwgSCwgUD4gdHlwZXM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZXM6OnRyYWl0cyBhbGxvY2F0b3JfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVzOjp0YWJsZSB0YWJsZTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhbGxvY2F0b3JfdHJhaXRzOjpjb25zdF9wb2ludGVyIGNvbnN0X3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiB2YWx1ZV90eXBlJiByZWZlcmVuY2U7Ci0gICAgICAgIHR5cGVkZWYgdmFsdWVfdHlwZSBjb25zdCYgY29uc3RfcmVmZXJlbmNlOwotCi0gICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjbF9pdGVyYXRvciBjb25zdF9sb2NhbF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y2xfaXRlcmF0b3IgbG9jYWxfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNfaXRlcmF0b3IgaXRlcmF0b3I7Ci0KLSAgICBwcml2YXRlOgotCi0gICAgICAgIHRhYmxlIHRhYmxlXzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICAvLyBjb25zdHJ1Y3RvcnMKLQotICAgICAgICBleHBsaWNpdCB1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiA9IGhhc2hlcigpLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYgPSBrZXlfZXF1YWwoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgPSBhbGxvY2F0b3JfdHlwZSgpKTsKLQotICAgICAgICBleHBsaWNpdCB1bm9yZGVyZWRfc2V0KGFsbG9jYXRvcl90eXBlIGNvbnN0Jik7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHVub3JkZXJlZF9zZXQoSW5wdXRJdCwgSW5wdXRJdCk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICAgICAgSW5wdXRJdCwgSW5wdXRJdCwKLSAgICAgICAgICAgICAgICBzaXplX3R5cGUsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiA9IGhhc2hlcigpLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYgPSBrZXlfZXF1YWwoKSk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICAgICAgSW5wdXRJdCwgSW5wdXRJdCwKLSAgICAgICAgICAgICAgICBzaXplX3R5cGUsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiwKLSAgICAgICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwmLAotICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJik7Ci0KLSAgICAgICAgLy8gY29weS9tb3ZlIGNvbnN0cnVjdG9ycwotCi0gICAgICAgIHVub3JkZXJlZF9zZXQodW5vcmRlcmVkX3NldCBjb25zdCYpOwotCi0gICAgICAgIHVub3JkZXJlZF9zZXQodW5vcmRlcmVkX3NldCBjb25zdCYsIGFsbG9jYXRvcl90eXBlIGNvbnN0Jik7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfTU9WRSkKLSAgICAgICAgdW5vcmRlcmVkX3NldChORE5CT09TVF9SVl9SRUYodW5vcmRlcmVkX3NldCkgb3RoZXIpCi0gICAgICAgICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcoKSkKLSAgICAgICAgewotICAgICAgICB9Ci0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICAgICAgdW5vcmRlcmVkX3NldCh1bm9yZGVyZWRfc2V0JiYgb3RoZXIpCi0gICAgICAgICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcoKSkKLSAgICAgICAgewotICAgICAgICB9Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICB1bm9yZGVyZWRfc2V0KHVub3JkZXJlZF9zZXQmJiwgYWxsb2NhdG9yX3R5cGUgY29uc3QmKTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgICAgIHVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+LAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiA9IGhhc2hlcigpLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCZsID0ga2V5X2VxdWFsKCksCi0gICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmID0gYWxsb2NhdG9yX3R5cGUoKSk7Ci0jZW5kaWYKLQotICAgICAgICAvLyBEZXN0cnVjdG9yCi0KLSAgICAgICAgfnVub3JkZXJlZF9zZXQoKTsKLQotICAgICAgICAvLyBBc3NpZ24KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9NT1ZFKQotICAgICAgICB1bm9yZGVyZWRfc2V0JiBvcGVyYXRvcj0oTkROQk9PU1RfQ09QWV9BU1NJR05fUkVGKHVub3JkZXJlZF9zZXQpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5hc3NpZ24oeC50YWJsZV8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5vcmRlcmVkX3NldCYgb3BlcmF0b3I9KE5ETkJPT1NUX1JWX1JFRih1bm9yZGVyZWRfc2V0KSB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0YWJsZV8ubW92ZV9hc3NpZ24oeC50YWJsZV8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICB1bm9yZGVyZWRfc2V0JiBvcGVyYXRvcj0odW5vcmRlcmVkX3NldCBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLmFzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICB1bm9yZGVyZWRfc2V0JiBvcGVyYXRvcj0odW5vcmRlcmVkX3NldCYmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5tb3ZlX2Fzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLSNlbmRpZgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICAgICAgdW5vcmRlcmVkX3NldCYgb3BlcmF0b3I9KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPik7Ci0jZW5kaWYKLQotICAgICAgICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5ub2RlX2FsbG9jKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBzaXplIGFuZCBjYXBhY2l0eQotCi0gICAgICAgIGJvb2wgZW1wdHkoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLnNpemVfID09IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uc2l6ZV87Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVDsKLQotICAgICAgICAvLyBpdGVyYXRvcnMKLQotICAgICAgICBpdGVyYXRvciBiZWdpbigpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uYmVnaW4oKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5iZWdpbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZW5kKCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNiZWdpbigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uYmVnaW4oKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGVtcGxhY2UKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+Ci0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZShORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIGFyZ3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZShuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLCBORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIGFyZ3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZShuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikuZmlyc3Q7Ci0gICAgICAgIH0KLSNlbHNlCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTEwMCkpCi0KLSAgICAgICAgLy8gMCBhcmd1bWVudCBlbXBsYWNlIHJlcXVpcmVzIHNwZWNpYWwgdHJlYXRtZW50IGluIGNhc2UKLSAgICAgICAgLy8gdGhlIGNvbnRhaW5lciBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHZhbHVlIHR5cGUgdGhhdAotICAgICAgICAvLyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLgotCi0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcHR5X2VtcGxhY2UKLSAgICAgICAgICAgICAgICAgICAgPSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcHR5X2VtcGxhY2UoKSwKLSAgICAgICAgICAgICAgICB2YWx1ZV90eXBlIHYgPSB2YWx1ZV90eXBlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlKG5kbmJvb3N0Ojptb3ZlKHYpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciBoaW50LAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wdHlfZW1wbGFjZQotICAgICAgICAgICAgICAgICAgICA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wdHlfZW1wbGFjZSgpLAotICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgdiA9IHZhbHVlX3R5cGUoKQotICAgICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZV9oaW50KGhpbnQsIG5kbmJvb3N0Ojptb3ZlKHYpKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTA+Ci0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZShORE5CT09TVF9GV0RfUkVGKEEwKSBhMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTA+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciwgTkROQk9PU1RfRldEX1JFRihBMCkgYTApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCkpCi0gICAgICAgICAgICApLmZpcnN0OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMT4KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpKQotICAgICAgICAgICAgKS5maXJzdDsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGVtcGxhY2UoCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMikgYTIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEyPihhMikpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMSkgYTEsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEyKSBhMikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTI+KGEyKSkKLSAgICAgICAgICAgICkuZmlyc3Q7Ci0gICAgICAgIH0KLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRSh6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKSAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9GV0RfUEFSQU0sIGEpICAgICAgXAotICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9DQUxMX0ZPUldBUkQsICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdGVtcGxhdGUgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9GV0RfUEFSQU0sIGEpICAgICAgXAotICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9DQUxMX0ZPUldBUkQsICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICkpLmZpcnN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0KLQotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTyg0LCBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9MSU1JVCwKLSAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFLCBfKQotCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0UKLQotI2VuZGlmCi0KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnQodmFsdWVfdHlwZSBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2UoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydChORE5CT09TVF9VTk9SREVSRURfUlZfUkVGKHZhbHVlX3R5cGUpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlKG5kbmJvb3N0Ojptb3ZlKHgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCB2YWx1ZV90eXBlIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZV9oaW50KGhpbnQsIHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX1JWX1JFRih2YWx1ZV90eXBlKSB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZV9oaW50KGhpbnQsIG5kbmJvb3N0Ojptb3ZlKHgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PiB2b2lkIGluc2VydChJbnB1dEl0LCBJbnB1dEl0KTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgICAgICB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4pOwotI2VuZGlmCi0KLSAgICAgICAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IpOwotICAgICAgICBzaXplX3R5cGUgZXJhc2UoY29uc3Qga2V5X3R5cGUmKTsKLSAgICAgICAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yKTsKLSAgICAgICAgdm9pZCBxdWlja19lcmFzZShjb25zdF9pdGVyYXRvciBpdCkgeyBlcmFzZShpdCk7IH0KLSAgICAgICAgdm9pZCBlcmFzZV9yZXR1cm5fdm9pZChjb25zdF9pdGVyYXRvciBpdCkgeyBlcmFzZShpdCk7IH0KLQotICAgICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgICAgIHZvaWQgc3dhcCh1bm9yZGVyZWRfc2V0Jik7Ci0KLSAgICAgICAgLy8gb2JzZXJ2ZXJzCi0KLSAgICAgICAgaGFzaGVyIGhhc2hfZnVuY3Rpb24oKSBjb25zdDsKLSAgICAgICAga2V5X2VxdWFsIGtleV9lcSgpIGNvbnN0OwotCi0gICAgICAgIC8vIGxvb2t1cAotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X3R5cGUmKSBjb25zdDsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29tcGF0aWJsZUtleSwgY2xhc3MgQ29tcGF0aWJsZUhhc2gsCi0gICAgICAgICAgICBjbGFzcyBDb21wYXRpYmxlUHJlZGljYXRlPgotICAgICAgICBjb25zdF9pdGVyYXRvciBmaW5kKAotICAgICAgICAgICAgICAgIENvbXBhdGlibGVLZXkgY29uc3QmLAotICAgICAgICAgICAgICAgIENvbXBhdGlibGVIYXNoIGNvbnN0JiwKLSAgICAgICAgICAgICAgICBDb21wYXRpYmxlUHJlZGljYXRlIGNvbnN0JikgY29uc3Q7Ci0KLSAgICAgICAgc2l6ZV90eXBlIGNvdW50KGNvbnN0IGtleV90eXBlJikgY29uc3Q7Ci0KLSAgICAgICAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4KLSAgICAgICAgZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmKSBjb25zdDsKLQotICAgICAgICAvLyBidWNrZXQgaW50ZXJmYWNlCi0KLSAgICAgICAgc2l6ZV90eXBlIGJ1Y2tldF9jb3VudCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uYnVja2V0X2NvdW50XzsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBtYXhfYnVja2V0X2NvdW50KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5tYXhfYnVja2V0X2NvdW50KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3R5cGUgYnVja2V0X3NpemUoc2l6ZV90eXBlKSBjb25zdDsKLQotICAgICAgICBzaXplX3R5cGUgYnVja2V0KGNvbnN0IGtleV90eXBlJiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmhhc2hfdG9fYnVja2V0KHRhYmxlXy5oYXNoKGspKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxvY2FsX2l0ZXJhdG9yIGJlZ2luKHNpemVfdHlwZSBuKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYWxfaXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgdGFibGVfLmJlZ2luKG4pLCBuLCB0YWJsZV8uYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9sb2NhbF9pdGVyYXRvciBiZWdpbihzaXplX3R5cGUgbikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKAotICAgICAgICAgICAgICAgIHRhYmxlXy5iZWdpbihuKSwgbiwgdGFibGVfLmJ1Y2tldF9jb3VudF8pOwotICAgICAgICB9Ci0KLSAgICAgICAgbG9jYWxfaXRlcmF0b3IgZW5kKHNpemVfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2FsX2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9sb2NhbF9pdGVyYXRvciBlbmQoc2l6ZV90eXBlKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGNiZWdpbihzaXplX3R5cGUgbikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKAotICAgICAgICAgICAgICAgIHRhYmxlXy5iZWdpbihuKSwgbiwgdGFibGVfLmJ1Y2tldF9jb3VudF8pOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IgY2VuZChzaXplX3R5cGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9sb2NhbF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gaGFzaCBwb2xpY3kKLQotICAgICAgICBmbG9hdCBtYXhfbG9hZF9mYWN0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLm1sZl87Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdCBsb2FkX2ZhY3RvcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUOwotICAgICAgICB2b2lkIG1heF9sb2FkX2ZhY3RvcihmbG9hdCkgTkROQk9PU1RfTk9FWENFUFQ7Ci0gICAgICAgIHZvaWQgcmVoYXNoKHNpemVfdHlwZSk7Ci0gICAgICAgIHZvaWQgcmVzZXJ2ZShzaXplX3R5cGUpOwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4MDU4MikKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PTxULEgsUCxBPigKLSAgICAgICAgICAgICAgICB1bm9yZGVyZWRfc2V0IGNvbnN0JiwgdW5vcmRlcmVkX3NldCBjb25zdCYpOwotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9PFQsSCxQLEE+KAotICAgICAgICAgICAgICAgIHVub3JkZXJlZF9zZXQgY29uc3QmLCB1bm9yZGVyZWRfc2V0IGNvbnN0Jik7Ci0jZW5kaWYKLSAgICB9OyAvLyBjbGFzcyB0ZW1wbGF0ZSB1bm9yZGVyZWRfc2V0Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBjbGFzcyB1bm9yZGVyZWRfbXVsdGlzZXQKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX01PVkUpCi0gICAgICAgIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFKHVub3JkZXJlZF9tdWx0aXNldCkKLSNlbmRpZgotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIFQga2V5X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIEggaGFzaGVyOwotICAgICAgICB0eXBlZGVmIFAga2V5X2VxdWFsOwotICAgICAgICB0eXBlZGVmIEEgYWxsb2NhdG9yX3R5cGU7Ci0KLSAgICBwcml2YXRlOgotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptdWx0aXNldDxBLCBULCBILCBQPiB0eXBlczsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlczo6dHJhaXRzIGFsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZXM6OnRhYmxlIHRhYmxlOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czo6cG9pbnRlciBwb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM6OmNvbnN0X3BvaW50ZXIgY29uc3RfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKLSAgICAgICAgdHlwZWRlZiB2YWx1ZV90eXBlIGNvbnN0JiBjb25zdF9yZWZlcmVuY2U7Ci0KLSAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNsX2l0ZXJhdG9yIGNvbnN0X2xvY2FsX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjbF9pdGVyYXRvciBsb2NhbF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y19pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y19pdGVyYXRvciBpdGVyYXRvcjsKLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdGFibGUgdGFibGVfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIC8vIGNvbnN0cnVjdG9ycwotCi0gICAgICAgIGV4cGxpY2l0IHVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgICAgICBzaXplX3R5cGUgPSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlZmF1bHRfYnVja2V0X2NvdW50LAotICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgPSBoYXNoZXIoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwmID0ga2V5X2VxdWFsKCksCi0gICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmID0gYWxsb2NhdG9yX3R5cGUoKSk7Ci0KLSAgICAgICAgZXhwbGljaXQgdW5vcmRlcmVkX211bHRpc2V0KGFsbG9jYXRvcl90eXBlIGNvbnN0Jik7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldChJbnB1dEl0LCBJbnB1dEl0KTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgICAgIElucHV0SXQsIElucHV0SXQsCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlLAotICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgPSBoYXNoZXIoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwmID0ga2V5X2VxdWFsKCkpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICAgICAgSW5wdXRJdCwgSW5wdXRJdCwKLSAgICAgICAgICAgICAgICBzaXplX3R5cGUsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiwKLSAgICAgICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwmLAotICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJik7Ci0KLSAgICAgICAgLy8gY29weS9tb3ZlIGNvbnN0cnVjdG9ycwotCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCh1bm9yZGVyZWRfbXVsdGlzZXQgY29uc3QmKTsKLQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQodW5vcmRlcmVkX211bHRpc2V0IGNvbnN0JiwgYWxsb2NhdG9yX3R5cGUgY29uc3QmKTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9NT1ZFKQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQoTkROQk9PU1RfUlZfUkVGKHVub3JkZXJlZF9tdWx0aXNldCkgb3RoZXIpCi0gICAgICAgICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcoKSkKLSAgICAgICAgewotICAgICAgICB9Ci0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KHVub3JkZXJlZF9tdWx0aXNldCYmIG90aGVyKQotICAgICAgICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfLCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnKCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KHVub3JkZXJlZF9tdWx0aXNldCYmLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYpOwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiwKLSAgICAgICAgICAgICAgICBzaXplX3R5cGUgPSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlZmF1bHRfYnVja2V0X2NvdW50LAotICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlciYgPSBoYXNoZXIoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwmbCA9IGtleV9lcXVhbCgpLAotICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiA9IGFsbG9jYXRvcl90eXBlKCkpOwotI2VuZGlmCi0KLSAgICAgICAgLy8gRGVzdHJ1Y3RvcgotCi0gICAgICAgIH51bm9yZGVyZWRfbXVsdGlzZXQoKTsKLQotICAgICAgICAvLyBBc3NpZ24KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9NT1ZFKQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQmIG9wZXJhdG9yPSgKLSAgICAgICAgICAgICAgICBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUYodW5vcmRlcmVkX211bHRpc2V0KSB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0YWJsZV8uYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCYgb3BlcmF0b3I9KE5ETkJPT1NUX1JWX1JFRih1bm9yZGVyZWRfbXVsdGlzZXQpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5tb3ZlX2Fzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCYgb3BlcmF0b3I9KHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLmFzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQmIG9wZXJhdG9yPSh1bm9yZGVyZWRfbXVsdGlzZXQmJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0YWJsZV8ubW92ZV9hc3NpZ24oeC50YWJsZV8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCYgb3BlcmF0b3I9KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPik7Ci0jZW5kaWYKLQotICAgICAgICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5ub2RlX2FsbG9jKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBzaXplIGFuZCBjYXBhY2l0eQotCi0gICAgICAgIGJvb2wgZW1wdHkoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLnNpemVfID09IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uc2l6ZV87Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVDsKLQotICAgICAgICAvLyBpdGVyYXRvcnMKLQotICAgICAgICBpdGVyYXRvciBiZWdpbigpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcih0YWJsZV8uYmVnaW4oKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcih0YWJsZV8uYmVnaW4oKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlbmQoKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRhYmxlXy5iZWdpbigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGVtcGxhY2UKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UoTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiBhcmdzKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UobmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciwgTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiBhcmdzKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UobmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICB9Ci0jZWxzZQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDUxMDApKQotCi0gICAgICAgIC8vIDAgYXJndW1lbnQgZW1wbGFjZSByZXF1aXJlcyBzcGVjaWFsIHRyZWF0bWVudCBpbiBjYXNlCi0gICAgICAgIC8vIHRoZSBjb250YWluZXIgaXMgaW5zdGFudGlhdGVkIHdpdGggYSB2YWx1ZSB0eXBlIHRoYXQKLSAgICAgICAgLy8gZG9lc24ndCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLQotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wdHlfZW1wbGFjZQotICAgICAgICAgICAgICAgICAgICA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wdHlfZW1wbGFjZSgpLAotICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgdiA9IHZhbHVlX3R5cGUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2UobmRuYm9vc3Q6Om1vdmUodikpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yIGhpbnQsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlCi0gICAgICAgICAgICAgICAgICAgID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlKCksCi0gICAgICAgICAgICAgICAgdmFsdWVfdHlwZSB2ID0gdmFsdWVfdHlwZSgpCi0gICAgICAgICAgICApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlX2hpbnQoaGludCwgbmRuYm9vc3Q6Om1vdmUodikpOwotICAgICAgICB9Ci0KLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMD4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZShORE5CT09TVF9GV0RfUkVGKEEwKSBhMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTA+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciwgTkROQk9PU1RfRldEX1JFRihBMCkgYTApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCkpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMT4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZSgKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMSkgYTEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSkpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMT4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZSgKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMSkgYTEsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEyKSBhMikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTI+KGEyKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTIpIGEyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMj4oYTIpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFKHosIG4sIF8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdGVtcGxhdGUgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgaXRlcmF0b3IgZW1wbGFjZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0ZXRF9QQVJBTSwgYSkgICAgICBcCi0gICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncyggICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0NBTExfRk9SV0FSRCwgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSkgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0ZXRF9QQVJBTSwgYSkgICAgICBcCi0gICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncyggICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0NBTExfRk9SV0FSRCwgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfQotCi0gICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDQsIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0xJTUlULAotICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0UsIF8pCi0KLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRQotCi0jZW5kaWYKLQotICAgICAgICBpdGVyYXRvciBpbnNlcnQodmFsdWVfdHlwZSBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2UoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBpbnNlcnQoTkROQk9PU1RfVU5PUkRFUkVEX1JWX1JFRih2YWx1ZV90eXBlKSB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZShuZG5ib29zdDo6bW92ZSh4KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwgdmFsdWVfdHlwZSBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2VfaGludChoaW50LCB4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9SVl9SRUYodmFsdWVfdHlwZSkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2VfaGludChoaW50LCBuZG5ib29zdDo6bW92ZSh4KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4gdm9pZCBpbnNlcnQoSW5wdXRJdCwgSW5wdXRJdCk7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICAgICAgdm9pZCBpbnNlcnQoc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+KTsKLSNlbmRpZgotCi0gICAgICAgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yKTsKLSAgICAgICAgc2l6ZV90eXBlIGVyYXNlKGNvbnN0IGtleV90eXBlJik7Ci0gICAgICAgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcik7Ci0gICAgICAgIHZvaWQgcXVpY2tfZXJhc2UoY29uc3RfaXRlcmF0b3IgaXQpIHsgZXJhc2UoaXQpOyB9Ci0gICAgICAgIHZvaWQgZXJhc2VfcmV0dXJuX3ZvaWQoY29uc3RfaXRlcmF0b3IgaXQpIHsgZXJhc2UoaXQpOyB9Ci0KLSAgICAgICAgdm9pZCBjbGVhcigpOwotICAgICAgICB2b2lkIHN3YXAodW5vcmRlcmVkX211bHRpc2V0Jik7Ci0KLSAgICAgICAgLy8gb2JzZXJ2ZXJzCi0KLSAgICAgICAgaGFzaGVyIGhhc2hfZnVuY3Rpb24oKSBjb25zdDsKLSAgICAgICAga2V5X2VxdWFsIGtleV9lcSgpIGNvbnN0OwotCi0gICAgICAgIC8vIGxvb2t1cAotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X3R5cGUmKSBjb25zdDsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29tcGF0aWJsZUtleSwgY2xhc3MgQ29tcGF0aWJsZUhhc2gsCi0gICAgICAgICAgICBjbGFzcyBDb21wYXRpYmxlUHJlZGljYXRlPgotICAgICAgICBjb25zdF9pdGVyYXRvciBmaW5kKAotICAgICAgICAgICAgICAgIENvbXBhdGlibGVLZXkgY29uc3QmLAotICAgICAgICAgICAgICAgIENvbXBhdGlibGVIYXNoIGNvbnN0JiwKLSAgICAgICAgICAgICAgICBDb21wYXRpYmxlUHJlZGljYXRlIGNvbnN0JikgY29uc3Q7Ci0KLSAgICAgICAgc2l6ZV90eXBlIGNvdW50KGNvbnN0IGtleV90eXBlJikgY29uc3Q7Ci0KLSAgICAgICAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4KLSAgICAgICAgZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmKSBjb25zdDsKLQotICAgICAgICAvLyBidWNrZXQgaW50ZXJmYWNlCi0KLSAgICAgICAgc2l6ZV90eXBlIGJ1Y2tldF9jb3VudCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uYnVja2V0X2NvdW50XzsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBtYXhfYnVja2V0X2NvdW50KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5tYXhfYnVja2V0X2NvdW50KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3R5cGUgYnVja2V0X3NpemUoc2l6ZV90eXBlKSBjb25zdDsKLQotICAgICAgICBzaXplX3R5cGUgYnVja2V0KGNvbnN0IGtleV90eXBlJiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmhhc2hfdG9fYnVja2V0KHRhYmxlXy5oYXNoKGspKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxvY2FsX2l0ZXJhdG9yIGJlZ2luKHNpemVfdHlwZSBuKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYWxfaXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgdGFibGVfLmJlZ2luKG4pLCBuLCB0YWJsZV8uYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9sb2NhbF9pdGVyYXRvciBiZWdpbihzaXplX3R5cGUgbikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKAotICAgICAgICAgICAgICAgIHRhYmxlXy5iZWdpbihuKSwgbiwgdGFibGVfLmJ1Y2tldF9jb3VudF8pOwotICAgICAgICB9Ci0KLSAgICAgICAgbG9jYWxfaXRlcmF0b3IgZW5kKHNpemVfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxvY2FsX2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9sb2NhbF9pdGVyYXRvciBlbmQoc2l6ZV90eXBlKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGNiZWdpbihzaXplX3R5cGUgbikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKAotICAgICAgICAgICAgICAgIHRhYmxlXy5iZWdpbihuKSwgbiwgdGFibGVfLmJ1Y2tldF9jb3VudF8pOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IgY2VuZChzaXplX3R5cGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9sb2NhbF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gaGFzaCBwb2xpY3kKLQotICAgICAgICBmbG9hdCBtYXhfbG9hZF9mYWN0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLm1sZl87Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdCBsb2FkX2ZhY3RvcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUOwotICAgICAgICB2b2lkIG1heF9sb2FkX2ZhY3RvcihmbG9hdCkgTkROQk9PU1RfTk9FWENFUFQ7Ci0gICAgICAgIHZvaWQgcmVoYXNoKHNpemVfdHlwZSk7Ci0gICAgICAgIHZvaWQgcmVzZXJ2ZShzaXplX3R5cGUpOwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4MDU4MikKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PTxULEgsUCxBPigKLSAgICAgICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQgY29uc3QmLCB1bm9yZGVyZWRfbXVsdGlzZXQgY29uc3QmKTsKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPTxULEgsUCxBPigKLSAgICAgICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQgY29uc3QmLCB1bm9yZGVyZWRfbXVsdGlzZXQgY29uc3QmKTsKLSNlbmRpZgotICAgIH07IC8vIGNsYXNzIHRlbXBsYXRlIHVub3JkZXJlZF9tdWx0aXNldAotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgIHNpemVfdHlwZSBuLCBjb25zdCBoYXNoZXIgJmhmLCBjb25zdCBrZXlfZXF1YWwgJmVxbCwKLSAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhKQotICAgICAgOiB0YWJsZV8obiwgaGYsIGVxbCwgYSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldChhbGxvY2F0b3JfdHlwZSBjb25zdCYgYSkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQsCi0gICAgICAgICAgICBoYXNoZXIoKSwga2V5X2VxdWFsKCksIGEpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0IGNvbnN0JiBvdGhlciwgYWxsb2NhdG9yX3R5cGUgY29uc3QmIGEpCi0gICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIGEpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoSW5wdXRJdCBmLCBJbnB1dEl0IGwpCi0gICAgICA6IHRhYmxlXyhuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmluaXRpYWxfc2l6ZShmLCBsKSwKLSAgICAgICAgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhbGxvY2F0b3JfdHlwZSgpKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmLCBsKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgSW5wdXRJdCBmLCBJbnB1dEl0IGwsCi0gICAgICAgICAgICBzaXplX3R5cGUgbiwKLSAgICAgICAgICAgIGNvbnN0IGhhc2hlciAmaGYsCi0gICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwgJmVxbCkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKGYsIGwsIG4pLAotICAgICAgICAgICAgaGYsIGVxbCwgYWxsb2NhdG9yX3R5cGUoKSkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UoZiwgbCk7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICBJbnB1dEl0IGYsIElucHV0SXQgbCwKLSAgICAgICAgICAgIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgY29uc3QgaGFzaGVyICZoZiwKLSAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCAmZXFsLAotICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXyhuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmluaXRpYWxfc2l6ZShmLCBsLCBuKSwgaGYsIGVxbCwgYSkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UoZiwgbCk7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46On51bm9yZGVyZWRfc2V0KCkge30KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0IGNvbnN0JiBvdGhlcikKLSAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXykKLSAgICB7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldCYmIG90aGVyLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYgYSkKLSAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgYSwgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZygpKQotICAgIHsKLSAgICB9Ci0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QsIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgY29uc3QgaGFzaGVyICZoZiwgY29uc3Qga2V5X2VxdWFsICZlcWwsIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhKQotICAgICAgOiB0YWJsZV8oCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmluaXRpYWxfc2l6ZSgKLSAgICAgICAgICAgICAgICBsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCksIG4pLAotICAgICAgICAgICAgaGYsIGVxbCwgYSkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UobGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+JiB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpvcGVyYXRvcj0oCi0gICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5jbGVhcigpOwotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8gc2l6ZSBhbmQgY2FwYWNpdHkKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Om1heF9zaXplKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8ubWF4X3NpemUoKTsKLSAgICB9Ci0KLSAgICAvLyBtb2RpZmllcnMKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgIHZvaWQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6aW5zZXJ0KElucHV0SXQgZmlyc3QsIElucHV0SXQgbGFzdCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UoZmlyc3QsIGxhc3QpOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6aW5zZXJ0KAotICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjppdGVyYXRvcgotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjplcmFzZShjb25zdF9pdGVyYXRvciBwb3NpdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZXJhc2UocG9zaXRpb24pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnNpemVfdHlwZQotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjplcmFzZShjb25zdCBrZXlfdHlwZSYgaykKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZXJhc2Vfa2V5KGspOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Oml0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmVyYXNlKAotICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmVyYXNlX3JhbmdlKGZpcnN0LCBsYXN0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmNsZWFyKCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5jbGVhcigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6c3dhcCh1bm9yZGVyZWRfc2V0JiBvdGhlcikKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5zd2FwKG90aGVyLnRhYmxlXyk7Ci0gICAgfQotCi0gICAgLy8gb2JzZXJ2ZXJzCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpoYXNoZXIKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6aGFzaF9mdW5jdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmhhc2hfZnVuY3Rpb24oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjprZXlfZXF1YWwKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6a2V5X2VxKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8ua2V5X2VxKCk7Ci0gICAgfQotCi0gICAgLy8gbG9va3VwCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojpjb25zdF9pdGVyYXRvcgotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpmaW5kKGNvbnN0IGtleV90eXBlJiBrKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5maW5kX25vZGUoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIENvbXBhdGlibGVLZXksIGNsYXNzIENvbXBhdGlibGVIYXNoLAotICAgICAgICBjbGFzcyBDb21wYXRpYmxlUHJlZGljYXRlPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmZpbmQoCi0gICAgICAgICAgICBDb21wYXRpYmxlS2V5IGNvbnN0JiBrLAotICAgICAgICAgICAgQ29tcGF0aWJsZUhhc2ggY29uc3QmIGhhc2gsCi0gICAgICAgICAgICBDb21wYXRpYmxlUHJlZGljYXRlIGNvbnN0JiBlcSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZ2VuZXJpY19maW5kX25vZGUoaywgaGFzaCwgZXEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnNpemVfdHlwZQotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojpjb3VudChjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uY291bnQoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgc3RkOjpwYWlyPAotICAgICAgICAgICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6Y29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojpjb25zdF9pdGVyYXRvcj4KLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6ZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmVxdWFsX3JhbmdlKGspOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnNpemVfdHlwZQotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpidWNrZXRfc2l6ZShzaXplX3R5cGUgbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uYnVja2V0X3NpemUobik7Ci0gICAgfQotCi0gICAgLy8gaGFzaCBwb2xpY3kKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGZsb2F0IHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmxvYWRfZmFjdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8ubG9hZF9mYWN0b3IoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Om1heF9sb2FkX2ZhY3RvcihmbG9hdCBtKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGFibGVfLm1heF9sb2FkX2ZhY3RvcihtKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnJlaGFzaChzaXplX3R5cGUgbikKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5yZWhhc2gobik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpyZXNlcnZlKHNpemVfdHlwZSBuKQotICAgIHsKLSAgICAgICAgdGFibGVfLnJlc2VydmUobik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSgKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT4gY29uc3QmIG0xLAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPiBjb25zdCYgbTIpCi0gICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19DT0RFR0VBUkNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDYxMykpCi0gICAgICAgIHN0cnVjdCBkdW1teSB7IHVub3JkZXJlZF9zZXQ8VCxILFAsQT4geDsgfTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gbTEudGFibGVfLmVxdWFscyhtMi50YWJsZV8pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+IGNvbnN0JiBtMSwKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT4gY29uc3QmIG0yKQotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA2MTMpKQotICAgICAgICBzdHJ1Y3QgZHVtbXkgeyB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+IHg7IH07Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuICFtMS50YWJsZV8uZXF1YWxzKG0yLnRhYmxlXyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgaW5saW5lIHZvaWQgc3dhcCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT4gJm0xLAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPiAmbTIpCi0gICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19DT0RFR0VBUkNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDYxMykpCi0gICAgICAgIHN0cnVjdCBkdW1teSB7IHVub3JkZXJlZF9zZXQ8VCxILFAsQT4geDsgfTsKLSNlbmRpZgotICAgICAgICBtMS5zd2FwKG0yKTsKLSAgICB9Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgIHNpemVfdHlwZSBuLCBjb25zdCBoYXNoZXIgJmhmLCBjb25zdCBrZXlfZXF1YWwgJmVxbCwKLSAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhKQotICAgICAgOiB0YWJsZV8obiwgaGYsIGVxbCwgYSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoYWxsb2NhdG9yX3R5cGUgY29uc3QmIGEpCi0gICAgICA6IHRhYmxlXyhuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlZmF1bHRfYnVja2V0X2NvdW50LAotICAgICAgICAgICAgaGFzaGVyKCksIGtleV9lcXVhbCgpLCBhKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYgb3RoZXIsIGFsbG9jYXRvcl90eXBlIGNvbnN0JiBhKQotICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfLCBhKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldChJbnB1dEl0IGYsIElucHV0SXQgbCkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKGYsIGwpLAotICAgICAgICBoYXNoZXIoKSwga2V5X2VxdWFsKCksIGFsbG9jYXRvcl90eXBlKCkpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGYsIGwpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgSW5wdXRJdCBmLCBJbnB1dEl0IGwsCi0gICAgICAgICAgICBzaXplX3R5cGUgbiwKLSAgICAgICAgICAgIGNvbnN0IGhhc2hlciAmaGYsCi0gICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwgJmVxbCkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKGYsIGwsIG4pLAotICAgICAgICAgICAgaGYsIGVxbCwgYWxsb2NhdG9yX3R5cGUoKSkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UoZiwgbCk7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgSW5wdXRJdCBmLCBJbnB1dEl0IGwsCi0gICAgICAgICAgICBzaXplX3R5cGUgbiwKLSAgICAgICAgICAgIGNvbnN0IGhhc2hlciAmaGYsCi0gICAgICAgICAgICBjb25zdCBrZXlfZXF1YWwgJmVxbCwKLSAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoZiwgbCwgbiksIGhmLCBlcWwsIGEpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGYsIGwpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46On51bm9yZGVyZWRfbXVsdGlzZXQoKSB7fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQgY29uc3QmIG90aGVyKQotICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfKQotICAgIHsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0JiYgb3RoZXIsIGFsbG9jYXRvcl90eXBlIGNvbnN0JiBhKQotICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfLCBhLCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnKCkpCi0gICAgewotICAgIH0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QsIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgY29uc3QgaGFzaGVyICZoZiwgY29uc3Qga2V5X2VxdWFsICZlcWwsIGNvbnN0IGFsbG9jYXRvcl90eXBlICZhKQotICAgICAgOiB0YWJsZV8oCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmluaXRpYWxfc2l6ZSgKLSAgICAgICAgICAgICAgICBsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCksIG4pLAotICAgICAgICAgICAgaGYsIGVxbCwgYSkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UobGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4mIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6b3BlcmF0b3I9KAotICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QpCi0gICAgewotICAgICAgICB0YWJsZV8uY2xlYXIoKTsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIC8vIHNpemUgYW5kIGNhcGFjaXR5Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Om1heF9zaXplKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8ubWF4X3NpemUoKTsKLSAgICB9Ci0KLSAgICAvLyBtb2RpZmllcnMKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgIHZvaWQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjppbnNlcnQoSW5wdXRJdCBmaXJzdCwgSW5wdXRJdCBsYXN0KQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmaXJzdCwgbGFzdCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Omluc2VydCgKLSAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBsaXN0KQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwotICAgIH0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjppdGVyYXRvcgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmVyYXNlKGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcmFzZShwb3NpdGlvbik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpzaXplX3R5cGUKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjplcmFzZShjb25zdCBrZXlfdHlwZSYgaykKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZXJhc2Vfa2V5KGspOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6aXRlcmF0b3IKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjplcmFzZSgKLSAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZXJhc2VfcmFuZ2UoZmlyc3QsIGxhc3QpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpjbGVhcigpCi0gICAgewotICAgICAgICB0YWJsZV8uY2xlYXIoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6c3dhcCh1bm9yZGVyZWRfbXVsdGlzZXQmIG90aGVyKQotICAgIHsKLSAgICAgICAgdGFibGVfLnN3YXAob3RoZXIudGFibGVfKTsKLSAgICB9Ci0KLSAgICAvLyBvYnNlcnZlcnMKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6aGFzaGVyCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6aGFzaF9mdW5jdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmhhc2hfZnVuY3Rpb24oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmtleV9lcXVhbAotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmtleV9lcSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmtleV9lcSgpOwotICAgIH0KLQotICAgIC8vIGxvb2t1cAotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojpjb25zdF9pdGVyYXRvcgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmZpbmQoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmZpbmRfbm9kZShrKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29tcGF0aWJsZUtleSwgY2xhc3MgQ29tcGF0aWJsZUhhc2gsCi0gICAgICAgIGNsYXNzIENvbXBhdGlibGVQcmVkaWNhdGU+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojpjb25zdF9pdGVyYXRvcgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmZpbmQoCi0gICAgICAgICAgICBDb21wYXRpYmxlS2V5IGNvbnN0JiBrLAotICAgICAgICAgICAgQ29tcGF0aWJsZUhhc2ggY29uc3QmIGhhc2gsCi0gICAgICAgICAgICBDb21wYXRpYmxlUHJlZGljYXRlIGNvbnN0JiBlcSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZ2VuZXJpY19maW5kX25vZGUoaywgaGFzaCwgZXEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6c2l6ZV90eXBlCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6Y291bnQoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmNvdW50KGspOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHN0ZDo6cGFpcjwKLSAgICAgICAgICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6Y29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yPgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmVxdWFsX3JhbmdlKGNvbnN0IGtleV90eXBlJiBrKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcXVhbF9yYW5nZShrKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnNpemVfdHlwZQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmJ1Y2tldF9zaXplKHNpemVfdHlwZSBuKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5idWNrZXRfc2l6ZShuKTsKLSAgICB9Ci0KLSAgICAvLyBoYXNoIHBvbGljeQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgZmxvYXQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojpsb2FkX2ZhY3RvcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmxvYWRfZmFjdG9yKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Om1heF9sb2FkX2ZhY3RvcihmbG9hdCBtKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGFibGVfLm1heF9sb2FkX2ZhY3RvcihtKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6cmVoYXNoKHNpemVfdHlwZSBuKQotICAgIHsKLSAgICAgICAgdGFibGVfLnJlaGFzaChuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6cmVzZXJ2ZShzaXplX3R5cGUgbikKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5yZXNlcnZlKG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4gY29uc3QmIG0xLAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+IGNvbnN0JiBtMikKLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEzKSkKLSAgICAgICAgc3RydWN0IGR1bW15IHsgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+IHg7IH07Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIG0xLnRhYmxlXy5lcXVhbHMobTIudGFibGVfKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+IGNvbnN0JiBtMSwKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiBjb25zdCYgbTIpCi0gICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19DT0RFR0VBUkNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDYxMykpCi0gICAgICAgIHN0cnVjdCBkdW1teSB7IHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiB4OyB9OwotI2VuZGlmCi0gICAgICAgIHJldHVybiAhbTEudGFibGVfLmVxdWFscyhtMi50YWJsZV8pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGlubGluZSB2b2lkIHN3YXAoCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4gJm0xLAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+ICZtMikKLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEzKSkKLSAgICAgICAgc3RydWN0IGR1bW15IHsgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+IHg7IH07Ci0jZW5kaWYKLSAgICAgICAgbTEuc3dhcChtMik7Ci0gICAgfQotfSAvLyBuYW1lc3BhY2UgdW5vcmRlcmVkCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVU5PUkRFUkVEX1VOT1JERVJFRF9TRVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMWE2NTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvdW5vcmRlcmVkX3NldF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfU0VUX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX1NFVF9GV0RfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2hfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2Z3ZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSB1bm9yZGVyZWQKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULAotICAgICAgICAgICAgY2xhc3MgSCA9IG5kbmJvb3N0OjpoYXNoPFQ+LAotICAgICAgICAgICAgY2xhc3MgUCA9IHN0ZDo6ZXF1YWxfdG88VD4sCi0gICAgICAgICAgICBjbGFzcyBBID0gc3RkOjphbGxvY2F0b3I8VD4gPgotICAgICAgICBjbGFzcyB1bm9yZGVyZWRfc2V0OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KHVub3JkZXJlZF9zZXQ8VCwgSCwgUCwgQT4gY29uc3QmLAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULCBILCBQLCBBPiBjb25zdCYpOwotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSh1bm9yZGVyZWRfc2V0PFQsIEgsIFAsIEE+IGNvbnN0JiwKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQ8VCwgSCwgUCwgQT4gY29uc3QmKTsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgICAgIGlubGluZSB2b2lkIHN3YXAodW5vcmRlcmVkX3NldDxULCBILCBQLCBBPiAmbTEsCi0gICAgICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULCBILCBQLCBBPiAmbTIpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULAotICAgICAgICAgICAgY2xhc3MgSCA9IG5kbmJvb3N0OjpoYXNoPFQ+LAotICAgICAgICAgICAgY2xhc3MgUCA9IHN0ZDo6ZXF1YWxfdG88VD4sCi0gICAgICAgICAgICBjbGFzcyBBID0gc3RkOjphbGxvY2F0b3I8VD4gPgotICAgICAgICBjbGFzcyB1bm9yZGVyZWRfbXVsdGlzZXQ7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0odW5vcmRlcmVkX211bHRpc2V0PFQsIEgsIFAsIEE+IGNvbnN0JiwKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULCBILCBQLCBBPiBjb25zdCYpOwotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSh1bm9yZGVyZWRfbXVsdGlzZXQ8VCwgSCwgUCwgQT4gY29uc3QmLAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsIEgsIFAsIEE+IGNvbnN0Jik7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgICAgICBpbmxpbmUgdm9pZCBzd2FwKHVub3JkZXJlZF9tdWx0aXNldDxULCBILCBQLCBBPiAmbTEsCi0gICAgICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsIEgsIFAsIEE+ICZtMik7Ci0gICAgfQotCi0gICAgdXNpbmcgbmRuYm9vc3Q6OnVub3JkZXJlZDo6dW5vcmRlcmVkX3NldDsKLSAgICB1c2luZyBuZG5ib29zdDo6dW5vcmRlcmVkOjp1bm9yZGVyZWRfbXVsdGlzZXQ7Ci0gICAgdXNpbmcgbmRuYm9vc3Q6OnVub3JkZXJlZDo6c3dhcDsKLSAgICB1c2luZyBuZG5ib29zdDo6dW5vcmRlcmVkOjpvcGVyYXRvcj09OwotICAgIHVzaW5nIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Om9wZXJhdG9yIT07Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWRfc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkX3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZTg1ZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWRfc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMDggRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91bm9yZGVyZWQgZm9yIGRvY3VtZW50YXRpb24KLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfU0VUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfU0VUX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0LmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1VOT1JERVJFRF9TRVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgzZjBlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLy8gIEJvb3N0IHV0aWxpdHkuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCAxOTk5LTIwMDMgQWxla3NleSBHdXJ0b3ZveS4gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZQotLy8gIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBhIGNvcHkgYXQgPGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dD4uKQotCi0vLyAgU2VlIDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvPiBmb3IgdGhlIGxpYnJhcnkncyBob21lIHBhZ2UuCi0KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2Jhc2VfZnJvbV9tZW1iZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYmluYXJ5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9pZGVudGl0eV90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbmV4dF9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvbm9uY29weWFibGUuaHBwPgotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1VUSUxJVFlfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTZmYmFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMiBCcmFkIEtpbmcgKGJyYWQua2luZ0BraXR3YXJlLmNvbSkKLS8vICAgICAgICAgICAgICAgICAgICBEb3VnbGFzIEdyZWdvciAoZ3JlZ29kQGNzLnJwaS5lZHUpCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9BRERSRVNTT0ZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9VVElMSVRZX0FERFJFU1NPRl9IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRyX2ltcGxfcmVmCi17Ci0gICAgVCAmIHZfOwotCi0gICAgaW5saW5lIGFkZHJfaW1wbF9yZWYoIFQgJiB2ICk6IHZfKCB2ICkge30KLSAgICBpbmxpbmUgb3BlcmF0b3IgVCYgKCkgY29uc3QgeyByZXR1cm4gdl87IH0KLQotcHJpdmF0ZToKLSAgICBhZGRyX2ltcGxfcmVmICYgb3BlcmF0b3I9KGNvbnN0IGFkZHJfaW1wbF9yZWYgJik7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgYWRkcmVzc29mX2ltcGwKLXsKLSAgICBzdGF0aWMgaW5saW5lIFQgKiBmKCBUICYgdiwgbG9uZyApCi0gICAgewotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oCi0gICAgICAgICAgICAmY29uc3RfY2FzdDxjaGFyJj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2xhdGlsZSBjaGFyICY+KHYpKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSBUICogZiggVCAqIHYsIGludCApCi0gICAgewotICAgICAgICByZXR1cm4gdjsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgVD4gVCAqIGFkZHJlc3NvZiggVCAmIHYgKQotewotI2lmIChkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCggMHg2MTAgKSApICkgfHwgZGVmaW5lZCggX19TVU5QUk9fQ0MgKQotCi0gICAgcmV0dXJuIG5kbmJvb3N0OjpkZXRhaWw6OmFkZHJlc3NvZl9pbXBsPFQ+OjpmKCB2LCAwICk7Ci0KLSNlbHNlCi0KLSAgICByZXR1cm4gbmRuYm9vc3Q6OmRldGFpbDo6YWRkcmVzc29mX2ltcGw8VD46OmYoIG5kbmJvb3N0OjpkZXRhaWw6OmFkZHJfaW1wbF9yZWY8VD4oIHYgKSwgMCApOwotCi0jZW5kaWYKLX0KLQotI2lmIGRlZmluZWQoIF9fU1VOUFJPX0NDICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCggMHg1OTAgKSApCi0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZHJlc3NvZl9hZGRwCi17Ci0gICAgdHlwZWRlZiBUICogdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiA+Ci10eXBlbmFtZSBkZXRhaWw6OmFkZHJlc3NvZl9hZGRwPCBUW05dID46OnR5cGUgYWRkcmVzc29mKCBUICgmdClbTl0gKQotewotICAgIHJldHVybiAmdDsKLX0KLQotI2VuZGlmCi0KLS8vIEJvcmxhbmQgZG9lc24ndCBsaWtlIGNhc3RpbmcgYW4gYXJyYXkgcmVmZXJlbmNlIHRvIGEgY2hhciByZWZlcmVuY2UKLS8vIGJ1dCB0aGVzZSBvdmVybG9hZHMgd29yayBhcm91bmQgdGhlIHByb2JsZW0uCi0jaWYgZGVmaW5lZCggX19CT1JMQU5EQ19fICkgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpCi10ZW1wbGF0ZTx0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4+Ci1UICgqYWRkcmVzc29mKFQgKCZ0KVtOXSkpW05dCi17Ci0gICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKCopW05dPigmdCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTj4KLWNvbnN0IFQgKCphZGRyZXNzb2YoY29uc3QgVCAoJnQpW05dKSlbTl0KLXsKLSAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFQoKilbTl0+KCZ0KTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVVRJTElUWV9BRERSRVNTT0ZfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYmFzZV9mcm9tX21lbWJlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYmFzZV9mcm9tX21lbWJlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5OWJkMzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2Jhc2VfZnJvbV9tZW1iZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLy8gIGJvb3N0IHV0aWxpdHkvYmFzZV9mcm9tX21lbWJlci5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCAyMDAxLCAyMDAzLCAyMDA0IERhcnlsZSBXYWxrZXIuICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgYSBjb3B5IGF0Ci0vLyAgPGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dD4uKQotCi0vLyAgU2VlIDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvPiBmb3IgdGhlIGxpYnJhcnkncyBob21lIHBhZ2UuCi0KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9CQVNFX0ZST01fTUVNQkVSX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0JBU0VfRlJPTV9NRU1CRVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcD4KLQotCi0vLyAgQmFzZS1mcm9tLW1lbWJlciBhcml0eSBjb25maWd1cmF0aW9uIG1hY3JvICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBUaGUgZm9sbG93aW5nIG1hY3JvIGRldGVybWluZXMgaG93IG1hbnkgYXJndW1lbnRzIHdpbGwgYmUgaW4gdGhlIGxhcmdlc3QKLS8vIGNvbnN0cnVjdG9yIHRlbXBsYXRlIG9mIGJhc2VfZnJvbV9tZW1iZXIuICBDb25zdHJ1Y3RvciB0ZW1wbGF0ZXMgd2lsbCBiZQotLy8gZ2VuZXJhdGVkIGZyb20gb25lIGFyZ3VtZW50IHRvIHRoaXMgbWF4aW11bS4gIENvZGUgZnJvbSBvdGhlciBmaWxlcyBjYW4gcmVhZAotLy8gdGhpcyBudW1iZXIgaWYgdGhleSBuZWVkIHRvIGFsd2F5cyBtYXRjaCB0aGUgZXhhY3QgbWF4aW11bSBiYXNlX2Zyb21fbWVtYmVyCi0vLyB1c2VzLiAgVGhlIG1heGltdW0gY29uc3RydWN0b3IgbGVuZ3RoIGNhbiBiZSBjaGFuZ2VkIGJ5IG92ZXJyaWRpbmcgdGhlCi0vLyAjZGVmaW5lZCBjb25zdGFudC4gIE1ha2Ugc3VyZSB0byBhcHBseSB0aGUgb3ZlcnJpZGUsIGlmIGFueSwgZm9yIGFsbCBzb3VyY2UKLS8vIGZpbGVzIGR1cmluZyBwcm9qZWN0IGNvbXBpbGluZyBmb3IgY29uc2lzdGVuY3kuCi0KLS8vIENvbnRyaWJ1dGVkIGJ5IEpvbmF0aGFuIFR1cmthbmlzCi0KLSNpZm5kZWYgTkROQk9PU1RfQkFTRV9GUk9NX01FTUJFUl9NQVhfQVJJVFkKLSNkZWZpbmUgTkROQk9PU1RfQkFTRV9GUk9NX01FTUJFUl9NQVhfQVJJVFkgIDEwCi0jZW5kaWYKLQotCi0vLyAgQW4gaXRlcmF0aW9uIG9mIGEgY29uc3RydWN0b3IgdGVtcGxhdGUgZm9yIGJhc2VfZnJvbV9tZW1iZXIgIC0tLS0tLS0tLS0tLS0vLwotCi0vLyBBIG1hY3JvIHRoYXQgc2hvdWxkIGV4cGFuZCB0bzoKLS8vICAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIFQxLCAuLi4sIHR5cGVuYW1lIFRuID4KLS8vICAgICBiYXNlX2Zyb21fbWVtYmVyKCBUMSB4MSwgLi4uLCBUbiB4biApCi0vLyAgICAgICAgIDogbWVtYmVyKCB4MSwgLi4uLCB4biApCi0vLyAgICAgICAgIHt9Ci0vLyBUaGlzIG1hY3JvIHNob3VsZCBvbmx5IHBlcnNpc3Qgd2l0aGluIHRoaXMgZmlsZS4KLQotI2RlZmluZSBORE5CT09TVF9QUklWQVRFX0NUUl9ERUYoIHosIG4sIGRhdGEgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCB0eXBlbmFtZSBUKSA+ICAgICAgICAgICAgICAgICAgIFwKLSAgICBleHBsaWNpdCBiYXNlX2Zyb21fbWVtYmVyKCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMobiwgVCwgeCkgKSAgXAotICAgICAgICA6IG1lbWJlciggTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgeCkgKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAvKiovCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLS8vICBCYXNlLWZyb20tbWVtYmVyIGNsYXNzIHRlbXBsYXRlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIEhlbHBlciB0byBpbml0aWFsaXplIGEgYmFzZSBvYmplY3Qgc28gYSBkZXJpdmVkIGNsYXNzIGNhbiB1c2UgdGhpcwotLy8gb2JqZWN0IGluIHRoZSBpbml0aWFsaXphdGlvbiBvZiBhbm90aGVyIGJhc2UgY2xhc3MuICBVc2VkIGJ5Ci0vLyBEaWV0bWFyIEt1ZWhsIGZyb20gaWRlYXMgYnkgUm9uIEtsYXRjaG8gdG8gc29sdmUgdGhlIHByb2JsZW0gb2YgYQotLy8gYmFzZSBjbGFzcyBuZWVkaW5nIHRvIGJlIGluaXRpYWxpemVkIGJ5IGEgbWVtYmVyLgotCi0vLyBDb250cmlidXRlZCBieSBEYXJ5bGUgV2Fsa2VyCi0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTWVtYmVyVHlwZSwgaW50IFVuaXF1ZUlEID0gMCA+Ci1jbGFzcyBiYXNlX2Zyb21fbWVtYmVyCi17Ci1wcm90ZWN0ZWQ6Ci0gICAgTWVtYmVyVHlwZSAgbWVtYmVyOwotCi0gICAgYmFzZV9mcm9tX21lbWJlcigpCi0gICAgICAgIDogbWVtYmVyKCkKLSAgICAgICAge30KLQotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKCAxLCBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfQkFTRV9GUk9NX01FTUJFUl9NQVhfQVJJVFkpLAotICAgICBORE5CT09TVF9QUklWQVRFX0NUUl9ERUYsIF8gKQotCi19OyAgLy8gbmRuYm9vc3Q6OmJhc2VfZnJvbV9tZW1iZXIKLQotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotLy8gVW5kbyBhbnkgcHJpdmF0ZSBtYWNyb3MKLSN1bmRlZiBORE5CT09TVF9QUklWQVRFX0NUUl9ERUYKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1VUSUxJVFlfQkFTRV9GUk9NX01FTUJFUl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9iaW5hcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2JpbmFyeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NDFhZmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2JpbmFyeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MDggKzAsMCBAQAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIENvcHlyaWdodCAoYykgMjAwNSBNYXR0aGV3IENhbGFicmVzZQotCi0gICAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotICAgIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0JJTkFSWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9CSU5BUllfSFBQCi0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotICAgIEJpbmFyeSBMaXRlcmFsIFV0aWxpdHkKLSAgICBfX19fX19fX19fX19fX19fX19fX19fCi0KLQotICAgIFRoZSBmb2xsb3dpbmcgY29kZSB3b3JrcyBieSBjb252ZXJ0aW5nIHRoZSBpbnB1dCBiaXQgcGF0dGVybiBpbnRvIGEKLSAgICBCb29zdC5QcmVwcm9jZXNzb3Igc2VxdWVuY2UsIHRoZW4gY29udmVydGluZyBncm91cGluZ3Mgb2YgMyBiaXRzIGVhY2ggaW50bwotICAgIHRoZSBjb3JyZXNwb25kaW5nIG9jdGFsIGRpZ2l0LCBhbmQgZmluYWxseSBjb25jYXRlbmF0aW5nIGFsbCBvZiB0aGUgZGlnaXRzCi0gICAgdG9nZXRoZXIgYWxvbmcgd2l0aCBhIGxlYWRpbmcgemVyby4gVGhpcyB5aWVsZHMgYSBzdGFuZGFyZCBvY3RhbCBsaXRlcmFsCi0gICAgd2l0aCB0aGUgZGVzaXJlZCB2YWx1ZSBhcyBzcGVjaWZpZWQgaW4gYml0cy4KLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RlZHVjZV9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvdHJhbnNmb3JtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9tb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9CSU5BUlkoIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfQklOQVJZX0xJVEVSQUxfRCggTkROQk9PU1RfUFBfREVEVUNFX0QoKSwgYml0X2dyb3VwaW5ncyApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9VKCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTCggYml0X2dyb3VwaW5ncywgVSApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9MKCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTCggYml0X2dyb3VwaW5ncywgTCApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9VTCggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTCggYml0X2dyb3VwaW5ncywgVUwgKSAKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfTFUoIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUwoIGJpdF9ncm91cGluZ3MsIExVICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX0xMKCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBMTCApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9VTEwoIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTCggYml0X2dyb3VwaW5ncywgVUxMICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX0xMVSggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBMTFUgKSAKLQotI2RlZmluZSBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTCggYml0X2dyb3VwaW5ncywgc3VmZml4ICkgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUxfRCggTkROQk9PU1RfUFBfREVEVUNFX0QoKSwgYml0X2dyb3VwaW5ncywgc3VmZml4ICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUxfRCggZCwgYml0X2dyb3VwaW5ncywgc3VmZml4ICkgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfQklOQVJZX0xJVEVSQUxfRCggZCwgYml0X2dyb3VwaW5ncyApLCBzdWZmaXggKSAKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfTElURVJBTF9EKCBkLCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfUFBfU0VRX0NBVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICggKDApIE5ETkJPT1NUX0RFVEFJTF9DUkVBVEVfQklOQVJZX0xJVEVSQUxfT0NUQUxfU0VRVUVOQ0UoIGQsIGJpdF9ncm91cGluZ3MgKSAgXAotICApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DUkVBVEVfQklOQVJZX0xJVEVSQUxfT0NUQUxfU0VRVUVOQ0UoIGQsIGJpdF9ncm91cGluZ3MgKSAgXAotICBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKCBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMX09QRVJBVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICwgTkROQk9PU1RfUFBfTklMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAsIE5ETkJPT1NUX1BQX0lERU5USVRZKCBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fVFJJUExFX1NFUVVFTkNFICkoKVwKLSAgICAoIE5ETkJPT1NUX0RFVEFJTF9DT01QTEVURV9UUklQTEVfU0VRVUVOQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICwgTkROQk9PU1RfREVUQUlMX0NSRUFURV9CSU5BUllfTElURVJBTF9CSVRfU0VRVUVOQ0UoIGQsIGJpdF9ncm91cGluZ3MgKSAgICBcCi0gICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fVFJJUExFX1NFUVVFTkNFKCBiaXRfc2VxdWVuY2UgKSAgIFwKLSAgTkROQk9PU1RfUFBfQ0FUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICggTkROQk9PU1RfREVUQUlMX0NPTlZFUlRfQklUX1NFUVVFTkNFX1RPX1BBUkVOVEhFVElDX1RVUExFXzEgYml0X3NlcXVlbmNlICAgICAgXAotICAsIEVORF9CSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklUU19QRVJfT0NUSVQgMwotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DT01QTEVURV9UUklQTEVfU0VRVUVOQ0UoIGQsIGluY29tcGxldGVfbmliYmxlX3NlcXVlbmNlICkgXAotICBORE5CT09TVF9QUF9DQVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKCBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX1RSSVBMRV9DT01QTEVUSU9OX1NFUVVFTkNFXyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICwgTkROQk9PU1RfUFBfTU9EX0QoIGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9QUF9TRVFfU0laRSggaW5jb21wbGV0ZV9uaWJibGVfc2VxdWVuY2UgKSAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfREVUQUlMX0JJVFNfUEVSX09DVElUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5jb21wbGV0ZV9uaWJibGVfc2VxdWVuY2UgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0ZJWEVEX0NPTVBMKCBiaXQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfREVUQUlMX0ZJWEVEX0NPTVBMXywgYml0ICkKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfRklYRURfQ09NUExfMCAxIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9GSVhFRF9DT01QTF8xIDAgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NSRUFURV9CSU5BUllfTElURVJBTF9CSVRfU0VRVUVOQ0UoIGQsIGJpdF9ncm91cGluZ3MgKSAgICBcCi0gIE5ETkJPT1NUX1BQX0VNUFRZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9QUF9DQVQoIE5ETkJPT1NUX1BQX1dISUxFXywgZCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKCBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfUFJFRElDQVRFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICwgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX09QRVJBVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAsIGJpdF9ncm91cGluZ3MgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfUFJFRElDQVRFKCBkLCBzdGF0ZSApICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfREVUQUlMX0ZJWEVEX0NPTVBMKCBORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTKCBzdGF0ZSApICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX09QRVJBVElPTiggZCwgc3RhdGUgKSAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0RFVEFJTF9TUExJVF9BTkRfU1dBUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoIE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfLCBzdGF0ZSApICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF9PUEVSQVRJT04oIHMsIGR1bW15X3BhcmFtLCB0dXBsZSApICAgICAgICBcCi0gIE5ETkJPT1NUX0RFVEFJTF9URVJOQVJZX1RSSVBMRV9UT19PQ1RBTCB0dXBsZSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVEVSTkFSWV9UUklQTEVfVE9fT0NUQUwoIGJpdDIsIGJpdDEsIGJpdDAgKSAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfREVUQUlMX1RSSVBMRV9UT19PQ1RBTF8gIyMgYml0MiAjIyBiaXQxICMjIGJpdDAgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NSRUFURV9UUklQTEVfQ09NUExFVElPTl9TRVFVRU5DRV8xICgwKSgwKQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX1RSSVBMRV9DT01QTEVUSU9OX1NFUVVFTkNFXzIgKDApCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DUkVBVEVfVFJJUExFX0NPTVBMRVRJT05fU0VRVUVOQ0VfMCAgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NPTlZFUlRfQklUX1NFUVVFTkNFX1RPX1BBUkVOVEhFVElDX1RVUExFXzFFTkRfQklUICAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMSggYml0ICkgICAgICAgIFwKLSAgKCAoIGJpdCwgTkROQk9PU1RfREVUQUlMX0NPTlZFUlRfQklUX1NFUVVFTkNFX1RPX1BBUkVOVEhFVElDX1RVUExFXzIgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NPTlZFUlRfQklUX1NFUVVFTkNFX1RPX1BBUkVOVEhFVElDX1RVUExFXzIoIGJpdCApICAgICAgICBcCi0gIGJpdCwgTkROQk9PU1RfREVUQUlMX0NPTlZFUlRfQklUX1NFUVVFTkNFX1RPX1BBUkVOVEhFVElDX1RVUExFXzMgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NPTlZFUlRfQklUX1NFUVVFTkNFX1RPX1BBUkVOVEhFVElDX1RVUExFXzMoIGJpdCApICAgICAgICBcCi0gIGJpdCApICkgTkROQk9PU1RfREVUQUlMX0NPTlZFUlRfQklUX1NFUVVFTkNFX1RPX1BBUkVOVEhFVElDX1RVUExFXzEgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQTElUX0FORF9TV0FQKCBwYXJhbXMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1BQX0lERU5USVRZKCBORE5CT09TVF9ERVRBSUxfU1BMSVRfQU5EX1NXQVBfUEFSQU1TICkoKSggcGFyYW1zICkKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BMSVRfQU5EX1NXQVBfUEFSQU1TKCBmaXJzdF9wYXJhbSwgc2Vjb25kX3BhcmFtICkgICAgICAgIFwKLSAgc2Vjb25kX3BhcmFtIGZpcnN0X3BhcmFtIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9MRUZUX09GX0NPTU1BKCBwYXJhbXMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9QUF9JREVOVElUWSggTkROQk9PU1RfREVUQUlMX0ZJUlNUX01BQ1JPX1BBUkFNICkoKSggcGFyYW1zICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0ZJUlNUX01BQ1JPX1BBUkFNKCBmaXJzdF9wYXJhbSwgc2Vjb25kX3BhcmFtICkgICAgICAgICAgICBcCi0gIGZpcnN0X3BhcmFtIAotCi0vKiBCZWdpbiBkZXJpdmVkIGNvbmNlcHRzIGZyb20gQ2hhb3MgYnkgUGF1bCBNZW5zb25pZGVzICovCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHUyggcGFyYW0gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0RFVEFJTF9MRUZUX09GX0NPTU1BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoIE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHU19SXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX0RFVEFJTF9JU19OVUxMQVJZX0FSR1NfQyBwYXJhbSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9JU19OVUxMQVJZX0FSR1NfQygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAxIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9JU19OVUxMQVJZX0FSR1NfUl8xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAxLCBORE5CT09TVF9QUF9OSUwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHU19SX05ETkJPT1NUX0RFVEFJTF9JU19OVUxMQVJZX0FSR1NfQyAgICAgICAgICBcCi0gIDAsIE5ETkJPT1NUX1BQX05JTCAKLQotLyogRW5kIGRlcml2ZWQgY29uY2VwdHMgZnJvbSBDaGFvcyBieSBQYXVsIE1lbnNvbmlkZXMgKi8KLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMXzAwMCAwIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMXzAwMSAxIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMXzAxMCAyIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMXzAxMSAzIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMXzEwMCA0IAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMXzEwMSA1IAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMXzExMCA2IAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMXzExMSA3IAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAgKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMSAoMSksIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwICgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxICgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwICgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExICgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwICgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxICgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwICgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExICgxKSgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwICgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMSAoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAgKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExICgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMCAoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEgKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwICgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMSAoMSkoMSkoMSksIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAgKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMSAoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwICgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEgKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMCAoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxICgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAgKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMSAoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwICgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEgKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMCAoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExICgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAgKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMSAoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwICgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEgKDEpKDEpKDEpKDEpLCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMCAoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMSAoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMCAoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMSAoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMCAoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMSAoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMCAoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMSAoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMCAoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMSAoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMCAoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMSAoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMCAoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMSAoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMCAoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMSAoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMCAoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMSAoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMCAoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMSAoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMCAoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMSAoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMCAoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMSAoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMCAoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMSAoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMCAoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMSAoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMCAoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMSAoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMCAoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMSAoMSkoMSkoMSkoMSkoMSksIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMCAoMCkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDEgKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwICgwKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMSAoMCkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDAgKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxICgwKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMCAoMCkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTEgKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwICgwKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMSAoMCkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTAgKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExICgwKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMCAoMCkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDEgKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwICgwKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMSAoMCkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDAgKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxICgwKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMCAoMCkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTEgKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwICgwKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMSAoMCkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTAgKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExICgwKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMCAoMCkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDEgKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwICgwKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMSAoMCkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDAgKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxICgwKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMCAoMCkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTEgKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwICgxKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMSAoMSkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTAgKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExICgxKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMCAoMSkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDEgKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwICgxKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMSAoMSkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDAgKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxICgxKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMCAoMSkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTEgKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwICgxKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMSAoMSkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTAgKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExICgxKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMCAoMSkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDEgKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwICgxKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMSAoMSkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDAgKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxICgxKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMCAoMSkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTEgKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwICgxKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMSAoMSkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTAgKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExICgxKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMCAoMSkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDEgKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwICgxKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMSAoMSkoMSkoMSkoMSkoMSkoMSksIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMDAgKDApKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMSAoMCkoMCkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDEwICgwKSgwKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMTEgKDApKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwMCAoMCkoMCkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTAxICgwKSgwKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMTAgKDApKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMSAoMCkoMCkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDAwICgwKSgwKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMDEgKDApKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxMCAoMCkoMCkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDExICgwKSgwKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMDAgKDApKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMSAoMCkoMCkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTEwICgwKSgwKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMTEgKDApKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwMCAoMCkoMCkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDAxICgwKSgwKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMTAgKDApKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMSAoMCkoMCkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTAwICgwKSgwKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMDEgKDApKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExMCAoMCkoMCkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTExICgwKSgwKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMDAgKDApKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMSAoMCkoMCkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDEwICgwKSgwKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMTEgKDApKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwMCAoMCkoMCkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTAxICgwKSgwKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMTAgKDApKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMSAoMCkoMCkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDAwICgwKSgxKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMDEgKDApKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxMCAoMCkoMSkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDExICgwKSgxKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMDAgKDApKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMSAoMCkoMSkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTEwICgwKSgxKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMTEgKDApKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwMCAoMCkoMSkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDAxICgwKSgxKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMTAgKDApKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMSAoMCkoMSkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTAwICgwKSgxKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMDEgKDApKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExMCAoMCkoMSkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTExICgwKSgxKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMDAgKDApKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMSAoMCkoMSkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDEwICgwKSgxKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMTEgKDApKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwMCAoMCkoMSkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTAxICgwKSgxKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMTAgKDApKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMSAoMCkoMSkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDAwICgwKSgxKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMDEgKDApKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxMCAoMCkoMSkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDExICgwKSgxKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMDAgKDApKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMSAoMCkoMSkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTEwICgwKSgxKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMTEgKDApKDEpKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwMCAoMSkoMCkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDAxICgxKSgwKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMTAgKDEpKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMSAoMSkoMCkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTAwICgxKSgwKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMDEgKDEpKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExMCAoMSkoMCkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTExICgxKSgwKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMDAgKDEpKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMSAoMSkoMCkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDEwICgxKSgwKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMTEgKDEpKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwMCAoMSkoMCkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTAxICgxKSgwKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMTAgKDEpKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMSAoMSkoMCkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDAwICgxKSgwKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMDEgKDEpKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxMCAoMSkoMCkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDExICgxKSgwKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMDAgKDEpKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMSAoMSkoMCkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTEwICgxKSgwKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMTEgKDEpKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwMCAoMSkoMCkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDAxICgxKSgwKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMTAgKDEpKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMSAoMSkoMCkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTAwICgxKSgwKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMDEgKDEpKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExMCAoMSkoMCkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTExICgxKSgwKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMDAgKDEpKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMSAoMSkoMSkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDEwICgxKSgxKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMTEgKDEpKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwMCAoMSkoMSkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTAxICgxKSgxKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMTAgKDEpKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMSAoMSkoMSkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDAwICgxKSgxKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMDEgKDEpKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxMCAoMSkoMSkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDExICgxKSgxKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMDAgKDEpKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMSAoMSkoMSkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTEwICgxKSgxKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMTEgKDEpKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwMCAoMSkoMSkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDAxICgxKSgxKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMTAgKDEpKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMSAoMSkoMSkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTAwICgxKSgxKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMDEgKDEpKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExMCAoMSkoMSkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTExICgxKSgxKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMDAgKDEpKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMSAoMSkoMSkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDEwICgxKSgxKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMTEgKDEpKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwMCAoMSkoMSkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTAxICgxKSgxKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMTAgKDEpKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMSAoMSkoMSkoMSkoMSkoMSkoMSkoMSksIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMDAwICgwKSgwKSgwKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMDAxICgwKSgwKSgwKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMDEwICgwKSgwKSgwKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMDExICgwKSgwKSgwKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMTAwICgwKSgwKSgwKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMTAxICgwKSgwKSgwKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMTEwICgwKSgwKSgwKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMTExICgwKSgwKSgwKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMDAwICgwKSgwKSgwKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMDAxICgwKSgwKSgwKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMDEwICgwKSgwKSgwKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMDExICgwKSgwKSgwKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMTAwICgwKSgwKSgwKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMTAxICgwKSgwKSgwKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMTEwICgwKSgwKSgwKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMTExICgwKSgwKSgwKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMDAwICgwKSgwKSgwKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMDAxICgwKSgwKSgwKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMDEwICgwKSgwKSgwKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMDExICgwKSgwKSgwKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMTAwICgwKSgwKSgwKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMTAxICgwKSgwKSgwKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMTEwICgwKSgwKSgwKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMTExICgwKSgwKSgwKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMDAwICgwKSgwKSgwKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMDAxICgwKSgwKSgwKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMDEwICgwKSgwKSgwKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMDExICgwKSgwKSgwKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMTAwICgwKSgwKSgwKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMTAxICgwKSgwKSgwKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMTEwICgwKSgwKSgwKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMTExICgwKSgwKSgwKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMDAwICgwKSgwKSgxKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMDAxICgwKSgwKSgxKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMDEwICgwKSgwKSgxKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMDExICgwKSgwKSgxKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMTAwICgwKSgwKSgxKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMTAxICgwKSgwKSgxKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMTEwICgwKSgwKSgxKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMTExICgwKSgwKSgxKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMDAwICgwKSgwKSgxKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMDAxICgwKSgwKSgxKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMDEwICgwKSgwKSgxKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMDExICgwKSgwKSgxKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMTAwICgwKSgwKSgxKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMTAxICgwKSgwKSgxKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMTEwICgwKSgwKSgxKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMTExICgwKSgwKSgxKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMDAwICgwKSgwKSgxKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMDAxICgwKSgwKSgxKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMDEwICgwKSgwKSgxKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMDExICgwKSgwKSgxKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMTAwICgwKSgwKSgxKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMTAxICgwKSgwKSgxKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMTEwICgwKSgwKSgxKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMTExICgwKSgwKSgxKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMDAwICgwKSgwKSgxKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMDAxICgwKSgwKSgxKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMDEwICgwKSgwKSgxKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMDExICgwKSgwKSgxKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMTAwICgwKSgwKSgxKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMTAxICgwKSgwKSgxKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMTEwICgwKSgwKSgxKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMTExICgwKSgwKSgxKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMDAwICgwKSgxKSgwKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMDAxICgwKSgxKSgwKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMDEwICgwKSgxKSgwKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMDExICgwKSgxKSgwKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMTAwICgwKSgxKSgwKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMTAxICgwKSgxKSgwKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMTEwICgwKSgxKSgwKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMTExICgwKSgxKSgwKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMDAwICgwKSgxKSgwKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMDAxICgwKSgxKSgwKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMDEwICgwKSgxKSgwKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMDExICgwKSgxKSgwKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMTAwICgwKSgxKSgwKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMTAxICgwKSgxKSgwKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMTEwICgwKSgxKSgwKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMTExICgwKSgxKSgwKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMDAwICgwKSgxKSgwKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMDAxICgwKSgxKSgwKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMDEwICgwKSgxKSgwKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMDExICgwKSgxKSgwKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMTAwICgwKSgxKSgwKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMTAxICgwKSgxKSgwKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMTEwICgwKSgxKSgwKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMTExICgwKSgxKSgwKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMDAwICgwKSgxKSgwKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMDAxICgwKSgxKSgwKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMDEwICgwKSgxKSgwKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMDExICgwKSgxKSgwKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMTAwICgwKSgxKSgwKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMTAxICgwKSgxKSgwKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMTEwICgwKSgxKSgwKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMTExICgwKSgxKSgwKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMDAwICgwKSgxKSgxKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMDAxICgwKSgxKSgxKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMDEwICgwKSgxKSgxKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMDExICgwKSgxKSgxKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMTAwICgwKSgxKSgxKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMTAxICgwKSgxKSgxKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMTEwICgwKSgxKSgxKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMTExICgwKSgxKSgxKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMDAwICgwKSgxKSgxKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMDAxICgwKSgxKSgxKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMDEwICgwKSgxKSgxKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMDExICgwKSgxKSgxKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMTAwICgwKSgxKSgxKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMTAxICgwKSgxKSgxKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMTEwICgwKSgxKSgxKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMTExICgwKSgxKSgxKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMDAwICgwKSgxKSgxKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMDAxICgwKSgxKSgxKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMDEwICgwKSgxKSgxKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMDExICgwKSgxKSgxKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMTAwICgwKSgxKSgxKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMTAxICgwKSgxKSgxKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMTEwICgwKSgxKSgxKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMTExICgwKSgxKSgxKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMDAwICgwKSgxKSgxKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMDAxICgwKSgxKSgxKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMDEwICgwKSgxKSgxKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMDExICgwKSgxKSgxKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMTAwICgwKSgxKSgxKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMTAxICgwKSgxKSgxKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMTEwICgwKSgxKSgxKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMTExICgwKSgxKSgxKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMDAwICgxKSgwKSgwKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMDAxICgxKSgwKSgwKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMDEwICgxKSgwKSgwKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMDExICgxKSgwKSgwKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMTAwICgxKSgwKSgwKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMTAxICgxKSgwKSgwKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMTEwICgxKSgwKSgwKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMTExICgxKSgwKSgwKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMDAwICgxKSgwKSgwKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMDAxICgxKSgwKSgwKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMDEwICgxKSgwKSgwKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMDExICgxKSgwKSgwKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMTAwICgxKSgwKSgwKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMTAxICgxKSgwKSgwKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMTEwICgxKSgwKSgwKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMTExICgxKSgwKSgwKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMDAwICgxKSgwKSgwKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMDAxICgxKSgwKSgwKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMDEwICgxKSgwKSgwKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMDExICgxKSgwKSgwKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMTAwICgxKSgwKSgwKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMTAxICgxKSgwKSgwKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMTEwICgxKSgwKSgwKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMTExICgxKSgwKSgwKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMDAwICgxKSgwKSgwKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMDAxICgxKSgwKSgwKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMDEwICgxKSgwKSgwKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMDExICgxKSgwKSgwKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMTAwICgxKSgwKSgwKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMTAxICgxKSgwKSgwKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMTEwICgxKSgwKSgwKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMTExICgxKSgwKSgwKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMDAwICgxKSgwKSgxKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMDAxICgxKSgwKSgxKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMDEwICgxKSgwKSgxKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMDExICgxKSgwKSgxKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMTAwICgxKSgwKSgxKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMTAxICgxKSgwKSgxKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMTEwICgxKSgwKSgxKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMTExICgxKSgwKSgxKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMDAwICgxKSgwKSgxKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMDAxICgxKSgwKSgxKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMDEwICgxKSgwKSgxKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMDExICgxKSgwKSgxKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMTAwICgxKSgwKSgxKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMTAxICgxKSgwKSgxKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMTEwICgxKSgwKSgxKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMTExICgxKSgwKSgxKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMDAwICgxKSgwKSgxKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMDAxICgxKSgwKSgxKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMDEwICgxKSgwKSgxKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMDExICgxKSgwKSgxKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMTAwICgxKSgwKSgxKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMTAxICgxKSgwKSgxKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMTEwICgxKSgwKSgxKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMTExICgxKSgwKSgxKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMDAwICgxKSgwKSgxKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMDAxICgxKSgwKSgxKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMDEwICgxKSgwKSgxKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMDExICgxKSgwKSgxKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMTAwICgxKSgwKSgxKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMTAxICgxKSgwKSgxKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMTEwICgxKSgwKSgxKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMTExICgxKSgwKSgxKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMDAwICgxKSgxKSgwKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMDAxICgxKSgxKSgwKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMDEwICgxKSgxKSgwKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMDExICgxKSgxKSgwKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMTAwICgxKSgxKSgwKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMTAxICgxKSgxKSgwKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMTEwICgxKSgxKSgwKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMTExICgxKSgxKSgwKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMDAwICgxKSgxKSgwKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMDAxICgxKSgxKSgwKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMDEwICgxKSgxKSgwKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMDExICgxKSgxKSgwKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMTAwICgxKSgxKSgwKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMTAxICgxKSgxKSgwKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMTEwICgxKSgxKSgwKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMTExICgxKSgxKSgwKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMDAwICgxKSgxKSgwKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMDAxICgxKSgxKSgwKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMDEwICgxKSgxKSgwKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMDExICgxKSgxKSgwKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMTAwICgxKSgxKSgwKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMTAxICgxKSgxKSgwKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMTEwICgxKSgxKSgwKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMTExICgxKSgxKSgwKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMDAwICgxKSgxKSgwKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMDAxICgxKSgxKSgwKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMDEwICgxKSgxKSgwKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMDExICgxKSgxKSgwKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMTAwICgxKSgxKSgwKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMTAxICgxKSgxKSgwKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMTEwICgxKSgxKSgwKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMTExICgxKSgxKSgwKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMDAwICgxKSgxKSgxKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMDAxICgxKSgxKSgxKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMDEwICgxKSgxKSgxKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMDExICgxKSgxKSgxKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMTAwICgxKSgxKSgxKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMTAxICgxKSgxKSgxKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMTEwICgxKSgxKSgxKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMTExICgxKSgxKSgxKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMDAwICgxKSgxKSgxKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMDAxICgxKSgxKSgxKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMDEwICgxKSgxKSgxKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMDExICgxKSgxKSgxKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMTAwICgxKSgxKSgxKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMTAxICgxKSgxKSgxKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMTEwICgxKSgxKSgxKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMTExICgxKSgxKSgxKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMDAwICgxKSgxKSgxKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMDAxICgxKSgxKSgxKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMDEwICgxKSgxKSgxKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMDExICgxKSgxKSgxKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMTAwICgxKSgxKSgxKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMTAxICgxKSgxKSgxKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMTEwICgxKSgxKSgxKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMTExICgxKSgxKSgxKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMDAwICgxKSgxKSgxKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMDAxICgxKSgxKSgxKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMDEwICgxKSgxKSgxKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMDExICgxKSgxKSgxKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMTAwICgxKSgxKSgxKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMTAxICgxKSgxKSgxKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMTEwICgxKSgxKSgxKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMTExICgxKSgxKSgxKSgxKSgxKSgxKSgxKSgxKSwgCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2NvbXBhcmVfcG9pbnRlZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2NvbXBhcmVfcG9pbnRlZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWYxZGRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9jb21wYXJlX3BvaW50ZWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9DT01QQVJFX1BPSU5URUVTXzI1QUdPMjAwM19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9DT01QQVJFX1BPSU5URUVTXzI1QUdPMjAwM19IUFAKLQotI2luY2x1ZGU8ZnVuY3Rpb25hbD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gdGVtcGxhdGU8Y2xhc3MgT1A+IGJvb2wgZXF1YWxfcG9pbnRlZXMoT1AgY29uc3QmIHgsIE9QIGNvbnN0JiB5KTsKLS8vIHRlbXBsYXRlPGNsYXNzIE9QPiBzdHJ1Y3QgZXF1YWxfcG9pbnRlZXNfdDsKLS8vCi0vLyBCZWluZyBPUCBhIG1vZGVsIG9mIE9wdGlvbmFsUG9pbnRlZSAoZWl0aGVyIGEgcG9pbnRlciBvciBhbiBvcHRpb25hbCk6Ci0vLwotLy8gSWYgYm90aCB4IGFuZCB5IGhhdmUgdmFsaWQgcG9pbnRlZXMsIHJldHVybnMgdGhlIHJlc3VsdCBvZiAoKnggPT0gKnkpCi0vLyBJZiBvbmx5IG9uZSBoYXMgYSB2YWxpZCBwb2ludGVlLCByZXR1cm5zIGZhbHNlLgotLy8gSWYgbm9uZSBoYXZlIHZhbGlkIHBvaW50ZWVzLCByZXR1cm5zIHRydWUuCi0vLyBOby10aHJvdwotdGVtcGxhdGU8Y2xhc3MgT3B0aW9uYWxQb2ludGVlPgotaW5saW5lCi1ib29sIGVxdWFsX3BvaW50ZWVzICggT3B0aW9uYWxQb2ludGVlIGNvbnN0JiB4LCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHkgKQotewotICByZXR1cm4gKCF4KSAhPSAoIXkpID8gZmFsc2UgOiAoICF4ID8gdHJ1ZSA6ICgqeCkgPT0gKCp5KSApIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgT3B0aW9uYWxQb2ludGVlPgotc3RydWN0IGVxdWFsX3BvaW50ZWVzX3QgOiBzdGQ6OmJpbmFyeV9mdW5jdGlvbjxPcHRpb25hbFBvaW50ZWUsT3B0aW9uYWxQb2ludGVlLGJvb2w+Ci17Ci0gIGJvb2wgb3BlcmF0b3IoKSAoIE9wdGlvbmFsUG9pbnRlZSBjb25zdCYgeCwgT3B0aW9uYWxQb2ludGVlIGNvbnN0JiB5ICkgY29uc3QKLSAgICB7IHJldHVybiBlcXVhbF9wb2ludGVlcyh4LHkpIDsgfQotfSA7Ci0KLS8vIHRlbXBsYXRlPGNsYXNzIE9QPiBib29sIGxlc3NfcG9pbnRlZXMoT1AgY29uc3QmIHgsIE9QIGNvbnN0JiB5KTsKLS8vIHRlbXBsYXRlPGNsYXNzIE9QPiBzdHJ1Y3QgbGVzc19wb2ludGVlc190OwotLy8KLS8vIEJlaW5nIE9QIGEgbW9kZWwgb2YgT3B0aW9uYWxQb2ludGVlIChlaXRoZXIgYSBwb2ludGVyIG9yIGFuIG9wdGlvbmFsKToKLS8vCi0vLyBJZiB5IGhhcyBub3QgYSB2YWxpZCBwb2ludGVlLCByZXR1cm5zIGZhbHNlLgotLy8gRWxzZUlmIHggaGFzIG5vdCBhIHZhbGlkIHBvaW50ZWUsIHJldHVybnMgdHJ1ZS4KLS8vIEVsc2VJZiBib3RoIHggYW5kIHkgaGF2ZSB2YWxpZCBwb2ludGVlcywgcmV0dXJucyB0aGUgcmVzdWx0IG9mICgqeCA8ICp5KQotLy8gTm8tdGhyb3cKLXRlbXBsYXRlPGNsYXNzIE9wdGlvbmFsUG9pbnRlZT4KLWlubGluZQotYm9vbCBsZXNzX3BvaW50ZWVzICggT3B0aW9uYWxQb2ludGVlIGNvbnN0JiB4LCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHkgKQotewotICByZXR1cm4gIXkgPyBmYWxzZSA6ICggIXggPyB0cnVlIDogKCp4KSA8ICgqeSkgKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIE9wdGlvbmFsUG9pbnRlZT4KLXN0cnVjdCBsZXNzX3BvaW50ZWVzX3QgOiBzdGQ6OmJpbmFyeV9mdW5jdGlvbjxPcHRpb25hbFBvaW50ZWUsT3B0aW9uYWxQb2ludGVlLGJvb2w+Ci17Ci0gIGJvb2wgb3BlcmF0b3IoKSAoIE9wdGlvbmFsUG9pbnRlZSBjb25zdCYgeCwgT3B0aW9uYWxQb2ludGVlIGNvbnN0JiB5ICkgY29uc3QKLSAgICB7IHJldHVybiBsZXNzX3BvaW50ZWVzKHgseSkgOyB9Ci19IDsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZWNsdmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZWNsdmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjllMWEzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGVjbHZhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgY29tbW9uX3R5cGUuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IDIwMTAgVmljZW50ZSBKLiBCb3RldCBFc2NyaWJhCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9ERUNMVkFMX19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0RFQ0xWQUxfX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9ydmFsdWVfcmVmZXJlbmNlLmhwcD4KLS8vI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9sdmFsdWVfcmVmZXJlbmNlLmhwcD4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgIEMrKzAzIGltcGxlbWVudGF0aW9uIG9mICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgVmljZW50ZSBKLiBCb3RldCBFc2NyaWJhICAgICAgICAgICAgICAgLy8KLS8vfiAyMC4zLjQgRnVuY3Rpb24gdGVtcGxhdGUgZGVjbHZhbCBbZGVjbHZhbF0KLS8vfiAxIFRoZSBsaWJyYXJ5IHByb3ZpZGVzIHRoZSBmdW5jdGlvbiB0ZW1wbGF0ZSBkZWNsdmFsIHRvIHNpbXBsaWZ5IHRoZSBkZWZpbml0aW9uIG9mIGV4cHJlc3Npb25zIHdoaWNoIG9jY3VyIGFzCi0vL34gdW5ldmFsdWF0ZWQgb3BlcmFuZHMuCi0vL34gMiBSZW1hcmtzOiBJZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQsIHRoZSBwcm9ncmFtIGlzIGlsbC1mb3JtZWQuCi0vL34gMyBSZW1hcmtzOiBUaGUgdGVtcGxhdGUgcGFyYW1ldGVyIFQgb2YgZGVjbHZhbCBtYXkgYmUgYW4gaW5jb21wbGV0ZSB0eXBlLgotLy9+IFsgRXhhbXBsZToKLQotLy9+IHRlbXBsYXRlIDxjbGFzcyBUbywgY2xhc3MgRnJvbT4KLS8vfiBkZWNsdHlwZShzdGF0aWNfY2FzdDxUbz4oZGVjbHZhbDxGcm9tPigpKSkgY29udmVydChGcm9tJiYpOwotCi0vL34gZGVjbGFyZXMgYSBmdW5jdGlvbiB0ZW1wbGF0ZSBjb252ZXJ0IHdoaWNoIG9ubHkgcGFydGljaXBhdHMgaW4gb3ZlcmxvYWRpbmcgaWYgdGhlIHR5cGUgRnJvbSBjYW4gYmUKLS8vfiBleHBsaWNpdGx5IGNvbnZlcnRlZCB0byB0eXBlIFRvLiBGb3IgYW5vdGhlciBleGFtcGxlIHNlZSBjbGFzcyB0ZW1wbGF0ZSBjb21tb25fdHlwZSAoMjAuNy42LjYpLiCXZW5kCi0vL34gZXhhbXBsZSBdCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8VD46OnR5cGUgZGVjbHZhbCgpIE5ETkJPT1NUX05PRVhDRVBUOyAvLyBhcyB1bmV2YWx1YXRlZCBvcGVyYW5kCi0vLyNlbHNlCi0vLyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS8vICAgIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp0eXBlIGRlY2x2YWwoKSBORE5CT09TVF9OT0VYQ0VQVDsgLy8gYXMgdW5ldmFsdWF0ZWQgb3BlcmFuZAotLy8jZW5kaWYKLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9ERUNMVkFMX19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvaW5fcGxhY2VfZmFjdG9yeV9wcmVmaXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3ByZWZpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNGM1YWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3ByZWZpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8gQ29weXJpZ2h0IChDKSAyMDA3LCBUb2JpYXMgU2Nod2luZ2VyLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfREVUQUlMX0lOUExBQ0VfRkFDVE9SWV9QUkVGSVhfMDRBUFIyMDA3X0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0RFVEFJTF9JTlBMQUNFX0ZBQ1RPUllfUFJFRklYXzA0QVBSMjAwN19IUFAKLQotI2luY2x1ZGUgPG5ldz4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL3BhcmVuLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0RFRklORV9JTlBMQUNFX0ZBQ1RPUllfQ0xBU1NfTUVNQkVSX0lOSVQoeixuLF8pIE5ETkJPT1NUX1BQX0NBVChtX2EsbikgTkROQk9PU1RfUFBfTFBBUkVOKCkgTkROQk9PU1RfUFBfQ0FUKGEsbikgTkROQk9PU1RfUFBfUlBBUkVOKCkKLSNkZWZpbmUgTkROQk9PU1RfREVGSU5FX0lOUExBQ0VfRkFDVE9SWV9DTEFTU19NRU1CRVJfREVDTCh6LG4sXykgTkROQk9PU1RfUFBfQ0FUKEEsbikgY29uc3QmIE5ETkJPT1NUX1BQX0NBVChtX2Esbik7Ci0KLSNkZWZpbmUgTkROQk9PU1RfTUFYX0lOUExBQ0VfRkFDVE9SWV9BUklUWSAxMAotCi0jdW5kZWYgTkROQk9PU1RfVVRJTElUWV9ERVRBSUxfSU5QTEFDRV9GQUNUT1JZX1NVRkZJWF8wNEFQUjIwMDdfSFBQCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL2luX3BsYWNlX2ZhY3Rvcnlfc3VmZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvaW5fcGxhY2VfZmFjdG9yeV9zdWZmaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzYyZGExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvaW5fcGxhY2VfZmFjdG9yeV9zdWZmaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vIENvcHlyaWdodCAoQykgMjAwNywgVG9iaWFzIFNjaHdpbmdlci4KLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0RFVEFJTF9JTlBMQUNFX0ZBQ1RPUllfU1VGRklYXzA0QVBSMjAwN19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9ERVRBSUxfSU5QTEFDRV9GQUNUT1JZX1NVRkZJWF8wNEFQUjIwMDdfSFBQCi0KLSN1bmRlZiBORE5CT09TVF9ERUZJTkVfSU5QTEFDRV9GQUNUT1JZX0NMQVNTX01FTUJFUl9JTklUCi0jdW5kZWYgTkROQk9PU1RfREVGSU5FX0lOUExBQ0VfRkFDVE9SWV9DTEFTU19NRU1CRVJfREVDTAotI3VuZGVmIE5ETkJPT1NUX01BWF9JTlBMQUNFX0ZBQ1RPUllfQVJJVFkKLQotI3VuZGVmIE5ETkJPT1NUX1VUSUxJVFlfREVUQUlMX0lOUExBQ0VfRkFDVE9SWV9QUkVGSVhfMDRBUFIyMDA3X0hQUAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9yZXN1bHRfb2ZfaXRlcmF0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL3Jlc3VsdF9vZl9pdGVyYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYyOThhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL3Jlc3VsdF9vZl9pdGVyYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi0vLyBCb29zdCByZXN1bHRfb2YgbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgQ29weXJpZ2h0IERhbmllbCBXYWxrZXIsIEVyaWMgTmllYmxlciwgTWljaGVsIE1vcmluIDIwMDgtMjAxMi4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yCi0vLyAgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotIyBlcnJvciBCb29zdCByZXN1bHRfb2YgLSBkbyBub3QgaW5jbHVkZSB0aGlzIGZpbGUhCi0jZW5kaWYKLQotLy8gQ1dQcm84IHJlcXVpcmVzIGFuIGFyZ3VtZW50IGluIGEgZnVuY3Rpb24gdHlwZSBzcGVjaWFsaXphdGlvbgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMikpICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTigpID09IDAKLSMgZGVmaW5lIE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTIHZvaWQKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9SRVNVTFRfT0ZfQVJHUyBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKQotI2VuZGlmCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU1MSkpCi10ZW1wbGF0ZTx0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHRyMV9yZXN1bHRfb2Y8RihORE5CT09TVF9SRVNVTFRfT0ZfQVJHUyk+Ci0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBtcGw6Om9yXzwgaXNfcG9pbnRlcjxGPiwgaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXI8Rj4gPgotICAgICAgICAsIG5kbmJvb3N0OjpkZXRhaWw6OnRyMV9yZXN1bHRfb2ZfaW1wbDwKLSAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxGPjo6dHlwZSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxGPjo6dHlwZShORE5CT09TVF9SRVNVTFRfT0ZfQVJHUyksCi0gICAgICAgICAgICAobmRuYm9vc3Q6OmRldGFpbDo6aGFzX3Jlc3VsdF90eXBlPEY+Ojp2YWx1ZSk+Ci0gICAgICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6dHIxX3Jlc3VsdF9vZl9pbXBsPAotICAgICAgICAgICAgRiwKLSAgICAgICAgICAgIEYoTkROQk9PU1RfUkVTVUxUX09GX0FSR1MpLAotICAgICAgICAgICAgKG5kbmJvb3N0OjpkZXRhaWw6Omhhc19yZXN1bHRfdHlwZTxGPjo6dmFsdWUpPiA+Ojp0eXBlIHsgfTsKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfUkVTVUxUX09GX1VTRV9ERUNMVFlQRQotCi0vLyBVc2VzIGRlY2x2YWwgZm9sbG93aW5nIE4zMjI1IDIwLjcuNy42IHdoZW4gRiBpcyBub3QgYSBwb2ludGVyLgotdGVtcGxhdGU8dHlwZW5hbWUgRiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCByZXN1bHRfb2Y8RihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSk+Ci0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcjxGPgotICAgICAgICAsIGRldGFpbDo6dHIxX3Jlc3VsdF9vZl9pbXBsPAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PEY+Ojp0eXBlLAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PEY+Ojp0eXBlKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKSwgZmFsc2UKLSAgICAgICAgICA+Ci0gICAgICAgICwgZGV0YWlsOjpjcHAweF9yZXN1bHRfb2ZfaW1wbDwKLSAgICAgICAgICAgICAgRihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSkKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi17fTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TRklOQUVfRVhQUgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXzJfLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIHR5cGVuYW1lIFQpPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXzJfLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk8UihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgVCkpPiB7Ci0gICAgUiBvcGVyYXRvcigpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBUKSkgY29uc3Q7Ci0gICAgdHlwZWRlZiByZXN1bHRfb2ZfcHJpdmF0ZV90eXBlIGNvbnN0ICYoKnBmbl90KSguLi4pOwotICAgIG9wZXJhdG9yIHBmbl90KCkgY29uc3Qgdm9sYXRpbGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPEYgKj4KLSAgOiBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2NhbGxhYmxlX2Z1bl8yXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPEY+Ci17fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2NhbGxhYmxlX2Z1bl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTxGICY+Ci0gIDogTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fMl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTxGPgote307Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9zZWxlY3RfY2FsbF93cmFwcGVyX3R5cGVfLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSkKLSAgOiBtcGw6OmV2YWxfaWY8Ci0gICAgICAgIGlzX2NsYXNzPHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8Rj46OnR5cGU+LAotICAgICAgICByZXN1bHRfb2Zfd3JhcF9jYWxsYWJsZV9jbGFzczxGPiwKLSAgICAgICAgbXBsOjppZGVudGl0eTxORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2NhbGxhYmxlX2Z1bl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTx0eXBlbmFtZSByZW1vdmVfY3Y8Rj46OnR5cGU+ID4KLSAgICA+Ci17fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9pc19jYWxsYWJsZV8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX3NlbGVjdF9jYWxsX3dyYXBwZXJfdHlwZV8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTxGPjo6dHlwZSB3cmFwcGVyX3Q7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSAoCi0gICAgICAgIHNpemVvZihyZXN1bHRfb2Zfbm9fdHlwZSkgPT0gc2l6ZW9mKGRldGFpbDo6cmVzdWx0X29mX2lzX3ByaXZhdGVfdHlwZSgKLSAgICAgICAgICAgIChuZG5ib29zdDo6ZGVjbHZhbDx3cmFwcGVyX3Q+KCkoTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBuZG5ib29zdDo6ZGVjbHZhbDxULCA+KCkgTkROQk9PU1RfUFBfSU5URVJDRVBUKSksIHJlc3VsdF9vZl93ZWlyZF90eXBlKCkpCi0gICAgICAgICkpCi0gICAgKTsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IGNwcDB4X3Jlc3VsdF9vZl9pbXBsPEYoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLCB0cnVlPgotICAgIDogbGF6eV9lbmFibGVfaWY8Ci0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9pc19jYWxsYWJsZV8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTxGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBUKT4KLSAgICAgICAgLCBjcHAweF9yZXN1bHRfb2ZfaW1wbDxGKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKSwgZmFsc2U+Ci0gICAgICA+Ci17fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCBjcHAweF9yZXN1bHRfb2ZfaW1wbDxGKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKSwgZmFsc2U+Ci17Ci0gIHR5cGVkZWYgZGVjbHR5cGUoCi0gICAgbmRuYm9vc3Q6OmRlY2x2YWw8Rj4oKSgKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgbmRuYm9vc3Q6OmRlY2x2YWw8VCwgPigpIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVCkKLSAgICApCi0gICkgdHlwZTsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgY3BwMHhfcmVzdWx0X29mX2ltcGw8RihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVzdWx0X29mX2Fsd2F5c192b2lkPGRlY2x0eXBlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGVjbHZhbDxGPigpKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBuZG5ib29zdDo6ZGVjbHZhbDxULCA+KCkgTkROQk9PU1RfUFBfSU5URVJDRVBUKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKT46OnR5cGU+IHsKLSAgdHlwZWRlZiBkZWNsdHlwZSgKLSAgICBuZG5ib29zdDo6ZGVjbHZhbDxGPigpKAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBuZG5ib29zdDo6ZGVjbHZhbDxULCA+KCkgTkROQk9PU1RfUFBfSU5URVJDRVBUKQotICAgICkKLSAgKSB0eXBlOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0jZWxzZSAvLyBkZWZpbmVkKE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUpCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU1MSkpCi10ZW1wbGF0ZTx0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHJlc3VsdF9vZjxGKE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTKT4KLSAgICA6IHRyMV9yZXN1bHRfb2Y8RihORE5CT09TVF9SRVNVTFRfT0ZfQVJHUyk+IHsgfTsKLSNlbmRpZgotCi0jZW5kaWYgLy8gZGVmaW5lZChORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFKQotCi0jdW5kZWYgTkROQk9PU1RfUkVTVUxUX09GX0FSR1MKLQotI2lmIE5ETkJPT1NUX1BQX0lURVJBVElPTigpID49IDEKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsICB0eXBlbmFtZSBGQXJncyBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8UiAoKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLCBGQXJncywgZmFsc2U+Ci17Ci0gIHR5cGVkZWYgUiB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgIHR5cGVuYW1lIEZBcmdzIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDxSICgmKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksIEZBcmdzLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRkFyZ3MgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPFIgKFQwOjoqKQotICAgICAgICAgICAgICAgICAgICAgKE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLAotICAgICAgICAgICAgICAgICBGQXJncywgZmFsc2U+Ci17Ci0gIHR5cGVkZWYgUiB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRkFyZ3MgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPFIgKFQwOjoqKQotICAgICAgICAgICAgICAgICAgICAgKE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCwKLSAgICAgICAgICAgICAgICAgRkFyZ3MsIGZhbHNlPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEZBcmdzIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDxSIChUMDo6KikKLSAgICAgICAgICAgICAgICAgICAgIChORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKQotICAgICAgICAgICAgICAgICAgICAgdm9sYXRpbGUsCi0gICAgICAgICAgICAgICAgIEZBcmdzLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGQXJncyBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8UiAoVDA6OiopCi0gICAgICAgICAgICAgICAgICAgICAoTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSkKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvbGF0aWxlLAotICAgICAgICAgICAgICAgICBGQXJncywgZmFsc2U+Ci17Ci0gIHR5cGVkZWYgUiB0eXBlOwotfTsKLSNlbmRpZgotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MTI4ZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLy8gQm9vc3QgZW5hYmxlX2lmIGxpYnJhcnkKLQotLy8gQ29weXJpZ2h0IDIwMDMgKGMpIFRoZSBUcnVzdGVlcyBvZiBJbmRpYW5hIFVuaXZlcnNpdHkuCi0KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgICBBdXRob3JzOiBKYWFra28gSmFydmkgKGphamFydmkgYXQgb3NsLml1LmVkdSkKLS8vICAgICAgICAgICAgIEplcmVtaWFoIFdpbGxjb2NrIChqZXdpbGxjbyBhdCBvc2wuaXUuZWR1KQotLy8gICAgICAgICAgICAgQW5kcmV3IEx1bXNkYWluZSAobHVtcyBhdCBvc2wuaXUuZWR1KQotCi0KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9FTkFCTEVfSUZfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfRU5BQkxFX0lGX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLQotLy8gRXZlbiB0aGUgZGVmaW5pdGlvbiBvZiBlbmFibGVfaWYgY2F1c2VzIHByb2JsZW1zIG9uIHNvbWUgY29tcGlsZXJzLAotLy8gc28gaXQncyBtYWNyb2VkIG91dCBmb3IgYWxsIGNvbXBpbGVycyB0aGF0IGRvIG5vdCBzdXBwb3J0IFNGSU5BRQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAKLSAgdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVCA9IHZvaWQ+Ci0gIHN0cnVjdCBlbmFibGVfaWZfYyB7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBlbmFibGVfaWZfYzxmYWxzZSwgVD4ge307Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSB2b2lkPiAKLSAgc3RydWN0IGVuYWJsZV9pZiA6IHB1YmxpYyBlbmFibGVfaWZfYzxDb25kOjp2YWx1ZSwgVD4ge307Ci0KLSAgdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVD4KLSAgc3RydWN0IGxhenlfZW5hYmxlX2lmX2MgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBzdHJ1Y3QgbGF6eV9lbmFibGVfaWZfYzxmYWxzZSwgVD4ge307Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQ+IAotICBzdHJ1Y3QgbGF6eV9lbmFibGVfaWYgOiBwdWJsaWMgbGF6eV9lbmFibGVfaWZfYzxDb25kOjp2YWx1ZSwgVD4ge307Ci0KLQotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUID0gdm9pZD4KLSAgc3RydWN0IGRpc2FibGVfaWZfYyB7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBkaXNhYmxlX2lmX2M8dHJ1ZSwgVD4ge307Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSB2b2lkPiAKLSAgc3RydWN0IGRpc2FibGVfaWYgOiBwdWJsaWMgZGlzYWJsZV9pZl9jPENvbmQ6OnZhbHVlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUPgotICBzdHJ1Y3QgbGF6eV9kaXNhYmxlX2lmX2MgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBzdHJ1Y3QgbGF6eV9kaXNhYmxlX2lmX2M8dHJ1ZSwgVD4ge307Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQ+IAotICBzdHJ1Y3QgbGF6eV9kaXNhYmxlX2lmIDogcHVibGljIGxhenlfZGlzYWJsZV9pZl9jPENvbmQ6OnZhbHVlLCBUPiB7fTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2Vsc2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICBuYW1lc3BhY2UgZGV0YWlsIHsgdHlwZWRlZiB2b2lkIGVuYWJsZV9pZl9kZWZhdWx0X1Q7IH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgc3RydWN0IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI7Ci0KLSAgdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4KLSAgc3RydWN0IGVuYWJsZV9pZl9jIDogZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjxUPgotICB7IH07Ci0KLSAgdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4gCi0gIHN0cnVjdCBkaXNhYmxlX2lmX2MgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUID0gZGV0YWlsOjplbmFibGVfaWZfZGVmYXVsdF9UPiAKLSAgc3RydWN0IGxhenlfZW5hYmxlX2lmX2MgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUID0gZGV0YWlsOjplbmFibGVfaWZfZGVmYXVsdF9UPiAKLSAgc3RydWN0IGxhenlfZGlzYWJsZV9pZl9jIDogZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjxUPgotICB7IH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+IAotICBzdHJ1Y3QgZW5hYmxlX2lmIDogZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjxUPgotICB7IH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+IAotICBzdHJ1Y3QgZGlzYWJsZV9pZiA6IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI8VD4KLSAgeyB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBDb25kLCBjbGFzcyBUID0gZGV0YWlsOjplbmFibGVfaWZfZGVmYXVsdF9UPiAKLSAgc3RydWN0IGxhenlfZW5hYmxlX2lmIDogZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjxUPgotICB7IH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+IAotICBzdHJ1Y3QgbGF6eV9kaXNhYmxlX2lmIDogZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjxUPgotICB7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19TRklOQUUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvaWRlbnRpdHlfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvaWRlbnRpdHlfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZWI4MzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2lkZW50aXR5X3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBMb3JlbnpvIENhbWluaXRpCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAKLS8vIChzZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGEgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8gSG9tZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvaWRlbnRpdHlfdHlwZQotCi0vKiogQGZpbGUKLVdyYXAgdHlwZSBleHByZXNzaW9ucyB3aXRoIHJvdW5kIHBhcmVudGhlc2lzIHNvIHRoZXkgY2FuIGJlIHBhc3NlZCB0byBtYWNyb3MKLWV2ZW4gaWYgdGhleSBjb250YWluIGNvbW1hcy4KLSovCi0KLSNpZm5kZWYgTkROQk9PU1RfSURFTlRJVFlfVFlQRV9IUFBfCi0jZGVmaW5lIE5ETkJPT1NUX0lERU5USVRZX1RZUEVfSFBQXwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZnVuY3Rpb25fdHJhaXRzLmhwcD4KLQotLyoqCi1AYnJpZWYgVGhpcyBtYWNybyBhbGxvd3MgdG8gd3JhcCB0aGUgc3BlY2lmaWVkIHR5cGUgZXhwcmVzc2lvbiB3aXRoaW4gZXh0cmEKLXJvdW5kIHBhcmVudGhlc2lzIHNvIHRoZSB0eXBlIGNhbiBiZSBwYXNzZWQgYXMgYSBzaW5nbGUgbWFjcm8gcGFyYW1ldGVyIGV2ZW4gaWYKLWl0IGNvbnRhaW5zIGNvbW1hcyAobm90IGFscmVhZHkgd3JhcHBlZCB3aXRoaW4gcm91bmQgcGFyZW50aGVzaXMpLgotCi1AUGFyYW1zCi1AUGFyYW17cGFyZW50aGVzaXplZF90eXBlLAotVGhlIHR5cGUgZXhwcmVzc2lvbiB0byBiZSBwYXNzZWQgYXMgbWFjcm8gcGFyYW1ldGVyIHdyYXBwZWQgYnkgYSBzaW5nbGUgc2V0Ci1vZiByb3VuZCBwYXJlbnRoZXNpcyA8Yz4oLi4uKTwvYz4uCi1UaGlzIHR5cGUgZXhwcmVzc2lvbiBjYW4gY29udGFpbiBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGNvbW1hcy4KLX0KLUBFbmRQYXJhbXMKLQotVGhpcyBtYWNybyB3b3JrcyBvbiBhbnkgQysrMDMgY29tcGlsZXIgKGl0IGRvZXMgbm90IHVzZSB2YXJpYWRpYyBtYWNyb3MpLgotCi1UaGlzIG1hY3JvIG11c3QgYmUgcHJlZml4ZWQgYnkgPGM+dHlwZW5hbWU8L2M+IHdoZW4gdXNlZCB3aXRoaW4gdGVtcGxhdGVzLgotTm90ZSB0aGF0IHRoZSBjb21waWxlciB3aWxsIG5vdCBiZSBhYmxlIHRvIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIGZ1bmN0aW9uCi10ZW1wbGF0ZSBwYXJhbWV0ZXJzIHdoZW4gdGhleSBhcmUgd3JhcHBlZCB3aXRoIHRoaXMgbWFjcm8gKHRoZXNlIHBhcmFtZXRlcnMKLW5lZWQgdG8gYmUgZXhwbGljaXRseSBzcGVjaWZpZWQgd2hlbiBjYWxsaW5nIHRoZSBmdW5jdGlvbiB0ZW1wbGF0ZSkuCi0KLU9uIHNvbWUgY29tcGlsZXJzIChsaWtlIEdDQyksIHVzaW5nIHRoaXMgbWFjcm8gb24gYWJzdHJhY3QgdHlwZXMgcmVxdWlyZXMgdG8KLWFkZCBhbmQgcmVtb3ZlIGEgcmVmZXJlbmNlIHRvIHRoZSBzcGVjaWZpZWQgdHlwZS4KLSovCi0jZGVmaW5lIE5ETkJPT1NUX0lERU5USVRZX1RZUEUocGFyZW50aGVzaXplZF90eXBlKSBcCi0gICAgLyogbXVzdCBOT1QgcHJlZml4IHRoaXMgd2l0aCBgOjpgIHRvIHdvcmsgd2l0aCBwYXJlbnRoZXNpemVkIHN5bnRheCAqLyBcCi0gICAgbmRuYm9vc3Q6OmZ1bmN0aW9uX3RyYWl0czwgdm9pZCBwYXJlbnRoZXNpemVkX3R5cGUgPjo6YXJnMV90eXBlCi0KLSNlbmRpZiAvLyAjaW5jbHVkZSBndWFyZAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvaW5fcGxhY2VfZmFjdG9yeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvaW5fcGxhY2VfZmFjdG9yeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMDc3ZGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2luX3BsYWNlX2ZhY3RvcnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vIENvcHlyaWdodCAoQykgMjAwNywgVG9iaWFzIFNjaHdpbmdlci4KLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0lOUExBQ0VfRkFDVE9SWV8wNEFQUjIwMDdfSFBQCi0jaWZuZGVmIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvaW5fcGxhY2VfZmFjdG9yeV9wcmVmaXguaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1jbGFzcyBpbl9wbGFjZV9mYWN0b3J5X2Jhc2Uge30gOwotCi0jZGVmaW5lICBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTICgwLCBORE5CT09TVF9NQVhfSU5QTEFDRV9GQUNUT1JZX0FSSVRZKQotI2RlZmluZSAgTkROQk9PU1RfUFBfRklMRU5BTUVfMSA8bmRuYm9vc3QvdXRpbGl0eS9pbl9wbGFjZV9mYWN0b3J5LmhwcD4KLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvaW5fcGxhY2VfZmFjdG9yeV9zdWZmaXguaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfSU5QTEFDRV9GQUNUT1JZXzA0QVBSMjAwN19IUFAKLSNlbHNlCi0jZGVmaW5lIE4gTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkKLQotI2lmIE4KLXRlbXBsYXRlPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhOLCBjbGFzcyBBKSA+Ci0jZW5kaWYKLWNsYXNzIE5ETkJPT1NUX1BQX0NBVChpbl9wbGFjZV9mYWN0b3J5LE4pCi0gIDogCi0gIHB1YmxpYyBpbl9wbGFjZV9mYWN0b3J5X2Jhc2UKLXsKLXB1YmxpYzoKLQotICBleHBsaWNpdCBORE5CT09TVF9QUF9DQVQoaW5fcGxhY2VfZmFjdG9yeSxOKQotICAgICAgKCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoTixBLGNvbnN0JiBhKSApCi0jaWYgTiA+IDAKLSAgICA6IE5ETkJPT1NUX1BQX0VOVU0oTiwgTkROQk9PU1RfREVGSU5FX0lOUExBQ0VfRkFDVE9SWV9DTEFTU19NRU1CRVJfSU5JVCwgXykKLSNlbmRpZgotICB7fQotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gIHZvaWQqIGFwcGx5KHZvaWQqIGFkZHJlc3MKLSAgICAgIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKFQpKSBjb25zdAotICB7Ci0gICAgcmV0dXJuIG5ldyhhZGRyZXNzKSBUKCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhOLCBtX2EpICk7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBUPgotICB2b2lkKiBhcHBseSh2b2lkKiBhZGRyZXNzLCBzdGQ6OnNpemVfdCBuCi0gICAgICBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRShUKSkgY29uc3QKLSAgewotICAgIGZvcihjaGFyKiBuZXh0ID0gYWRkcmVzcyA9IHRoaXMtPk5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBhcHBseTxUPihhZGRyZXNzKTsKLSAgICAgICAgISEgLS1uOykKLSAgICAgIHRoaXMtPk5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBhcHBseTxUPihuZXh0ID0gbmV4dCtzaXplb2YoVCkpOwotICAgIHJldHVybiBhZGRyZXNzOyAKLSAgfQotCi0gIE5ETkJPT1NUX1BQX1JFUEVBVChOLCBORE5CT09TVF9ERUZJTkVfSU5QTEFDRV9GQUNUT1JZX0NMQVNTX01FTUJFUl9ERUNMLCBfKQotfTsKLQotI2lmIE4gPiAwCi10ZW1wbGF0ZTwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTiwgY2xhc3MgQSkgPgotaW5saW5lIE5ETkJPT1NUX1BQX0NBVChpbl9wbGFjZV9mYWN0b3J5LE4pPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhOLCBBKSA+Ci1pbl9wbGFjZSggTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKE4sIEEsIGNvbnN0JiBhKSApCi17Ci0gIHJldHVybiBORE5CT09TVF9QUF9DQVQoaW5fcGxhY2VfZmFjdG9yeSxOKTwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTiwgQSkgPgotICAgICAgKCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhOLCBhKSApOwotfQotI2Vsc2UKLWlubGluZSBpbl9wbGFjZV9mYWN0b3J5MCBpbl9wbGFjZSgpCi17Ci0gIHJldHVybiBpbl9wbGFjZV9mYWN0b3J5MCgpOwotfQotI2VuZGlmCi0KLSN1bmRlZiBOCi0jZW5kaWYKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvcmVzdWx0X29mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9yZXN1bHRfb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOThmYzhhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9yZXN1bHRfb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLS8vIEJvb3N0IHJlc3VsdF9vZiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5Ci0jaWZuZGVmIE5ETkJPT1NUX1JFU1VMVF9PRl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVTVUxUX09GX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pbnRlcmNlcHQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9kZWNsdmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfUkVTVUxUX09GX05VTV9BUkdTCi0jICBkZWZpbmUgTkROQk9PU1RfUkVTVUxUX09GX05VTV9BUkdTIDE2Ci0jZW5kaWYKLQotLy8gVXNlIHRoZSBkZWNsdHlwZS1iYXNlZCB2ZXJzaW9uIG9mIHJlc3VsdF9vZiBieSBkZWZhdWx0IGlmIHRoZSBjb21waWxlcgotLy8gc3VwcG9ydHMgTjMyNzYgPGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL0pUQzEvU0MyMi9XRzIxL2RvY3MvcGFwZXJzLzIwMTEvbjMyNzYucGRmPi4KLS8vIFRoZSB1c2VyIGNhbiBmb3JjZSB0aGUgY2hvaWNlIGJ5IGRlZmluaW5nIGVpdGhlciBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFIG9yCi0vLyBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX1RSMSwgYnV0IG5vdCBib3RoIQotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVTVUxUX09GX1VTRV9ERUNMVFlQRSkgJiYgZGVmaW5lZChORE5CT09TVF9SRVNVTFRfT0ZfVVNFX1RSMSkKLSMgIGVycm9yIEJvdGggTkROQk9PU1RfUkVTVUxUX09GX1VTRV9ERUNMVFlQRSBhbmQgTkROQk9PU1RfUkVTVUxUX09GX1VTRV9UUjEgY2Fubm90IGJlIGRlZmluZWQgYXQgdGhlIHNhbWUgdGltZS4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfVFIxCi0jICBpZm5kZWYgTkROQk9PU1RfUkVTVUxUX09GX1VTRV9ERUNMVFlQRQotIyAgICBpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYgLy8gdGhpcyBpbXBsaWVzICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFKQotIyAgICAgIGRlZmluZSBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFCi0jICAgIGVsc2UKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfUkVTVUxUX09GX1VTRV9UUjEKLSMgICAgZW5kaWYKLSMgIGVuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4gc3RydWN0IHJlc3VsdF9vZjsKLXRlbXBsYXRlPHR5cGVuYW1lIEY+IHN0cnVjdCB0cjFfcmVzdWx0X29mOyAvLyBhIFRSMS1zdHlsZSBpbXBsZW1lbnRhdGlvbiBvZiByZXN1bHRfb2YKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLW5hbWVzcGFjZSBkZXRhaWwgewotCi1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9ERUYocmVzdWx0X3R5cGUpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIEZBcmdzLCBib29sIEhhc1Jlc3VsdFR5cGU+IHN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw7Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TRklOQUVfRVhQUgotCi0vLyBUaGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYW55IG90aGVyIHdheSB0byB0dXJuIHRoaXMgb2ZmIHN1Y2ggdGhhdCB0aGUgcHJlc2VuY2Ugb2YKLS8vIHRoZSB1c2VyLWRlZmluZWQgb3BlcmF0b3IsKCkgYmVsb3cgZG9lc24ndCBjYXVzZSBzcHVyaW91cyB3YXJuaW5nIGFsbCBvdmVyIHRoZSBwbGFjZSwKLS8vIHNvIHVuY29uZGl0aW9uYWxseSB0dXJuIGl0IG9mZi4KLSNpZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0OTEzKSAvLyB1c2VyIGRlZmluZWQgYmluYXJ5IG9wZXJhdG9yICcsJyBleGlzdHMgYnV0IG5vIG92ZXJsb2FkIGNvdWxkIGNvbnZlcnQgYWxsIG9wZXJhbmRzLCBkZWZhdWx0IGJ1aWx0LWluIGJpbmFyeSBvcGVyYXRvciAnLCcgdXNlZAotI2VuZGlmCi0KLXN0cnVjdCByZXN1bHRfb2ZfcHJpdmF0ZV90eXBlIHt9OwotCi1zdHJ1Y3QgcmVzdWx0X29mX3dlaXJkX3R5cGUgewotICBmcmllbmQgcmVzdWx0X29mX3ByaXZhdGVfdHlwZSBvcGVyYXRvciwocmVzdWx0X29mX3ByaXZhdGVfdHlwZSwgcmVzdWx0X29mX3dlaXJkX3R5cGUpOwotfTsKLQotdHlwZWRlZiBjaGFyIHJlc3VsdF9vZl95ZXNfdHlwZTsgICAgICAvLyBzaXplb2YocmVzdWx0X29mX3llc190eXBlKSA9PSAxCi10eXBlZGVmIGNoYXIgKCZyZXN1bHRfb2Zfbm9fdHlwZSlbMl07IC8vIHNpemVvZihyZXN1bHRfb2Zfbm9fdHlwZSkgID09IDIKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc3VsdF9vZl9ub190eXBlIHJlc3VsdF9vZl9pc19wcml2YXRlX3R5cGUoVCBjb25zdCAmKTsKLXJlc3VsdF9vZl95ZXNfdHlwZSByZXN1bHRfb2ZfaXNfcHJpdmF0ZV90eXBlKHJlc3VsdF9vZl9wcml2YXRlX3R5cGUpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotc3RydWN0IHJlc3VsdF9vZl9jYWxsYWJsZV9jbGFzcyA6IEMgewotICAgIHJlc3VsdF9vZl9jYWxsYWJsZV9jbGFzcygpOwotICAgIHR5cGVkZWYgcmVzdWx0X29mX3ByaXZhdGVfdHlwZSBjb25zdCAmKCpwZm5fdCkoLi4uKTsKLSAgICBvcGVyYXRvciBwZm5fdCgpIGNvbnN0IHZvbGF0aWxlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLXN0cnVjdCByZXN1bHRfb2Zfd3JhcF9jYWxsYWJsZV9jbGFzcyB7Ci0gIHR5cGVkZWYgcmVzdWx0X29mX2NhbGxhYmxlX2NsYXNzPEM+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotc3RydWN0IHJlc3VsdF9vZl93cmFwX2NhbGxhYmxlX2NsYXNzPEMgY29uc3Q+IHsKLSAgdHlwZWRlZiByZXN1bHRfb2ZfY2FsbGFibGVfY2xhc3M8Qz4gY29uc3QgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1zdHJ1Y3QgcmVzdWx0X29mX3dyYXBfY2FsbGFibGVfY2xhc3M8QyB2b2xhdGlsZT4gewotICB0eXBlZGVmIHJlc3VsdF9vZl9jYWxsYWJsZV9jbGFzczxDPiB2b2xhdGlsZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLXN0cnVjdCByZXN1bHRfb2Zfd3JhcF9jYWxsYWJsZV9jbGFzczxDIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgcmVzdWx0X29mX2NhbGxhYmxlX2NsYXNzPEM+IGNvbnN0IHZvbGF0aWxlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotc3RydWN0IHJlc3VsdF9vZl93cmFwX2NhbGxhYmxlX2NsYXNzPEMgJj4gewotICB0eXBlZGVmIHR5cGVuYW1lIHJlc3VsdF9vZl93cmFwX2NhbGxhYmxlX2NsYXNzPEM+Ojp0eXBlICZ0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiwgYm9vbCBUZXN0Q2FsbGFiaWxpdHkgPSB0cnVlPiBzdHJ1Y3QgY3BwMHhfcmVzdWx0X29mX2ltcGw7Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVzdWx0X29mX2Fsd2F5c192b2lkCi17Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4gc3RydWN0IGNwcDB4X3Jlc3VsdF9vZl9pbXBsIHt9OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCByZXN1bHRfb2Zfdm9pZF9pbXBsCi17Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLXN0cnVjdCByZXN1bHRfb2Zfdm9pZF9pbXBsPFIgKCopKHZvaWQpPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgcmVzdWx0X29mX3ZvaWRfaW1wbDxSICgmKSh2b2lkKT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi0vLyBEZXRlcm1pbmUgdGhlIHJldHVybiB0eXBlIG9mIGEgZnVuY3Rpb24gcG9pbnRlciBvciBwb2ludGVyIHRvIG1lbWJlci4KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIEZBcmdzPgotc3RydWN0IHJlc3VsdF9vZl9wb2ludGVyCi0gIDogdHIxX3Jlc3VsdF9vZl9pbXBsPHR5cGVuYW1lIHJlbW92ZV9jdjxGPjo6dHlwZSwgRkFyZ3MsIGZhbHNlPiB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIEZBcmdzPgotc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDxGLCBGQXJncywgdHJ1ZT4KLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGOjpyZXN1bHRfdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRkFyZ3M+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fd2l0aF9ub19hcmdzIDogbXBsOjpmYWxzZV8ge307Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fd2l0aF9ub19hcmdzPEYodm9pZCk+IDogbXBsOjp0cnVlXyB7fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRkFyZ3M+Ci1zdHJ1Y3QgcmVzdWx0X29mX25lc3RlZF9yZXN1bHQgOiBGOjp0ZW1wbGF0ZSByZXN1bHQ8RkFyZ3M+Ci17fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRkFyZ3M+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPEYsIEZBcmdzLCBmYWxzZT4KLSAgOiBtcGw6OmlmXzxpc19mdW5jdGlvbl93aXRoX25vX2FyZ3M8RkFyZ3M+LAotICAgICAgICAgICAgIHJlc3VsdF9vZl92b2lkX2ltcGw8Rj4sCi0gICAgICAgICAgICAgcmVzdWx0X29mX25lc3RlZF9yZXN1bHQ8RiwgRkFyZ3M+ID46OnR5cGUKLXt9OwotCi19IC8vIGVuZCBuYW1lc3BhY2UgZGV0YWlsCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCgwLE5ETkJPT1NUX1JFU1VMVF9PRl9OVU1fQVJHUyw8bmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvcmVzdWx0X29mX2l0ZXJhdGUuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9OT19SRVNVTFRfT0YgMQotI2VuZGlmCi0KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFU1VMVF9PRl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9zd2FwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9zd2FwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVmODBmMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvc3dhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggU3RldmVuIFdhdGFuYWJlLCBKb3NlcGggR2F1dGVyaW4sIE5pZWxzIERla2tlcgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfU1dBUF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9TV0FQX0hQUAotCi0vLyBOb3RlOiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyB1dGlsaXR5IGNvbnRhaW5zIHZhcmlvdXMgd29ya2Fyb3VuZHM6Ci0vLyAtIHN3YXBfaW1wbCBpcyBwdXQgb3V0c2lkZSB0aGUgYm9vc3QgbmFtZXNwYWNlLCB0byBhdm9pZCBpbmZpbml0ZQotLy8gcmVjdXJzaW9uIChjYXVzaW5nIHN0YWNrIG92ZXJmbG93KSB3aGVuIHN3YXBwaW5nIG9iamVjdHMgb2YgYSBwcmltaXRpdmUKLS8vIHR5cGUuCi0vLyAtIHN3YXBfaW1wbCBoYXMgYSB1c2luZy1kaXJlY3RpdmUsIHJhdGhlciB0aGFuIGEgdXNpbmctZGVjbGFyYXRpb24sCi0vLyBiZWNhdXNlIHNvbWUgY29tcGlsZXJzIChpbmNsdWRpbmcgTVNWQyA3LjEsIEJvcmxhbmQgNS45LjMsIGFuZAotLy8gSW50ZWwgOC4xKSBkb24ndCBkbyBhcmd1bWVudC1kZXBlbmRlbnQgbG9va3VwIHdoZW4gaXQgaGFzIGEKLS8vIHVzaW5nLWRlY2xhcmF0aW9uIGluc3RlYWQuCi0vLyAtIG5kbmJvb3N0Ojpzd2FwIGhhcyB0d28gdGVtcGxhdGUgYXJndW1lbnRzLCBpbnN0ZWFkIG9mIG9uZSwgdG8KLS8vIGF2b2lkIGFtYmlndWl0eSB3aGVuIHN3YXBwaW5nIG9iamVjdHMgb2YgYSBCb29zdCB0eXBlIHRoYXQgZG9lcwotLy8gbm90IGhhdmUgaXRzIG93biBuZG5ib29zdDo6c3dhcCBvdmVybG9hZC4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gLy9mb3Igc3RkOjpzd2FwCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gLy9mb3Igc3RkOjpzaXplX3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0X3N3YXBfaW1wbAotewotICB0ZW1wbGF0ZTxjbGFzcyBUPgotICB2b2lkIHN3YXBfaW1wbChUJiBsZWZ0LCBUJiByaWdodCkKLSAgewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ly91c2Ugc3RkOjpzd2FwIGlmIGFyZ3VtZW50IGRlcGVuZGVudCBsb29rdXAgZmFpbHMKLSAgICBzd2FwKGxlZnQscmlnaHQpOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgdm9pZCBzd2FwX2ltcGwoVCAoJiBsZWZ0KVtOXSwgVCAoJiByaWdodClbTl0pCi0gIHsKLSAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKQotICAgIHsKLSAgICAgIDo6bmRuYm9vc3Rfc3dhcF9pbXBsOjpzd2FwX2ltcGwobGVmdFtpXSwgcmlnaHRbaV0pOwotICAgIH0KLSAgfQotfQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICB2b2lkIHN3YXAoVDEmIGxlZnQsIFQyJiByaWdodCkKLSAgewotICAgIDo6bmRuYm9vc3Rfc3dhcF9pbXBsOjpzd2FwX2ltcGwobGVmdCwgcmlnaHQpOwotICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3ZhbHVlX2luaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3ZhbHVlX2luaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTM0YWUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS92YWx1ZV9pbml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDItMjAwOCwgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIDIxIEFnbyAyMDAyIChDcmVhdGVkKSBGZXJuYW5kbyBDYWNjaW9sYQotLy8gMjQgRGVjIDIwMDcgKFJlZmFjdG9yZWQgYW5kIHdvcmtlZCBhcm91bmQgdmFyaW91cyBjb21waWxlciBidWdzKSBGZXJuYW5kbyBDYWNjaW9sYSwgTmllbHMgRGVra2VyCi0vLyAyMyBNYXkgMjAwOCAoRml4ZWQgb3BlcmF0b3I9IGNvbnN0IGlzc3VlLCBhZGRlZCBpbml0aWFsaXplZF92YWx1ZSkgTmllbHMgRGVra2VyLCBGZXJuYW5kbyBDYWNjaW9sYQotLy8gMjEgQWdvIDIwMDggKEFkZGVkIHN3YXApIE5pZWxzIERla2tlciwgRmVybmFuZG8gQ2FjY2lvbGEKLS8vIDIwIEZlYiAyMDA5IChGaXhlZCBsb2dpY2FsIGNvbnN0LW5lc3MgaXNzdWVzKSBOaWVscyBEZWtrZXIsIEZlcm5hbmRvIENhY2Npb2xhCi0vLyAwMyBBcHIgMjAxMCAoQWRkZWQgaW5pdGlhbGl6ZWQ8VD4sIHN1Z2dlc3RlZCBieSBKZWZmcmV5IEhlbGxydW5nLCBmaXhpbmcgIzM0NzIpIE5pZWxzIERla2tlcgotLy8gMzAgTWF5IDIwMTAgKE1hZGUgbWVtc2V0IGNhbGwgY29uZGl0aW9uYWwsIGZpeGluZyAjMzg2OSkgTmllbHMgRGVra2VyCi0vLwotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX1ZBTFVFX0lOSVRfMjFBR08yMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX1ZBTFVFX0lOSVRfMjFBR08yMDAyX0hQUAotCi0vLyBOb3RlOiBUaGUgaW1wbGVtZW50YXRpb24gb2YgbmRuYm9vc3Q6OnZhbHVlX2luaXRpYWxpemVkIGhhZCB0byBkZWFsIHdpdGggdGhlCi0vLyBmYWN0IHRoYXQgdmFyaW91cyBjb21waWxlcnMgaGF2ZW4ndCBmdWxseSBpbXBsZW1lbnRlZCB2YWx1ZS1pbml0aWFsaXphdGlvbi4KLS8vIFRoZSBjb25zdHJ1Y3RvciBvZiBuZG5ib29zdDo6dmFsdWVfaW5pdGlhbGl6ZWQ8VD4gd29ya3MgYXJvdW5kIHRoZXNlIGNvbXBpbGVyCi0vLyBpc3N1ZXMsIGJ5IGNsZWFyaW5nIHRoZSBieXRlcyBvZiBULCBiZWZvcmUgY29uc3RydWN0aW5nIHRoZSBUIG9iamVjdCBpdAotLy8gY29udGFpbnMuIE1vcmUgZGV0YWlscyBvbiB0aGVzZSBpc3N1ZXMgYXJlIGF0IGxpYnMvdXRpbGl0eS92YWx1ZV9pbml0Lmh0bQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxpZ25lZF9zdG9yYWdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBGb3IgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04uCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2N2X3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zd2FwLmhwcD4KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPG5ldz4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI2lmIF9NU0NfVkVSID49IDEzMTAKLS8vIEl0IGlzIHNhZmUgdG8gaWdub3JlIHRoZSBmb2xsb3dpbmcgd2FybmluZyBmcm9tIE1TVkMgNy4xIG9yIGhpZ2hlcjoKLS8vICJ3YXJuaW5nIEM0MzUxOiBuZXcgYmVoYXZpb3I6IGVsZW1lbnRzIG9mIGFycmF5IHdpbGwgYmUgZGVmYXVsdCBpbml0aWFsaXplZCIKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzUxKQotLy8gSXQgaXMgc2FmZSB0byBpZ25vcmUgdGhlIGZvbGxvd2luZyBNU1ZDIHdhcm5pbmcsIHdoaWNoIG1heSBwb3AgdXAgd2hlbiBUIGlzIAotLy8gYSBjb25zdCB0eXBlOiAid2FybmluZyBDNDUxMjogYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkIi4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTEyKQotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX0NPTVBMRVRFX1ZBTFVFX0lOSVRJQUxJWkFUSU9OCi0gIC8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogVGhlIG1hY3JvIE5ETkJPT1NUX0RFVEFJTF9WQUxVRV9JTklUX1dPUktBUk9VTkRfU1VHR0VTVEVEIAotICAvLyBzdWdnZXN0cyB0aGF0IGEgd29ya2Fyb3VuZCBzaG91bGQgYmUgYXBwbGllZCwgYmVjYXVzZSBvZiBjb21waWxlciBpc3N1ZXMgCi0gIC8vIHJlZ2FyZGluZyB2YWx1ZS1pbml0aWFsaXphdGlvbi4KLSAgI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVkFMVUVfSU5JVF9XT1JLQVJPVU5EX1NVR0dFU1RFRAotI2VuZGlmCi0KLS8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogVGhlIG1hY3JvIE5ETkJPT1NUX0RFVEFJTF9WQUxVRV9JTklUX1dPUktBUk9VTkQKLS8vIHN3aXRjaGVzIHRoZSB2YWx1ZS1pbml0aWFsaXphdGlvbiB3b3JrYXJvdW5kIGVpdGhlciBvbiBvciBvZmYuCi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9WQUxVRV9JTklUX1dPUktBUk9VTkQKLSAgI2lmZGVmIE5ETkJPT1NUX0RFVEFJTF9WQUxVRV9JTklUX1dPUktBUk9VTkRfU1VHR0VTVEVECi0gICNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORCAxCi0gICNlbHNlCi0gICNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORCAwCi0gICNlbmRpZgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFzcyBpbml0aWFsaXplZAotewotICBwcml2YXRlIDoKLSAgICBzdHJ1Y3Qgd3JhcHBlcgotICAgIHsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MikpCi0gICAgICB0eXBlbmFtZQotI2VuZGlmIAotICAgICAgcmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlIGRhdGE7Ci0KLSAgICAgIHdyYXBwZXIoKQotICAgICAgOgotICAgICAgZGF0YSgpCi0gICAgICB7Ci0gICAgICB9Ci0KLSAgICAgIHdyYXBwZXIoVCBjb25zdCAmIGFyZykKLSAgICAgIDoKLSAgICAgIGRhdGEoYXJnKQotICAgICAgewotICAgICAgfQotICAgIH07Ci0KLSAgICBtdXRhYmxlCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1OTIpKQotICAgICAgdHlwZW5hbWUKLSNlbmRpZiAKLSAgICAgIGFsaWduZWRfc3RvcmFnZTxzaXplb2Yod3JhcHBlciksIGFsaWdubWVudF9vZjx3cmFwcGVyPjo6dmFsdWU+Ojp0eXBlIHg7Ci0KLSAgICB3cmFwcGVyICogd3JhcHBlcl9hZGRyZXNzKCkgY29uc3QKLSAgICB7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8d3JhcHBlciAqPiggc3RhdGljX2Nhc3Q8dm9pZCo+KCZ4KSk7Ci0gICAgfQotCi0gIHB1YmxpYyA6Ci0KLSAgICBpbml0aWFsaXplZCgpCi0gICAgewotI2lmIE5ETkJPT1NUX0RFVEFJTF9WQUxVRV9JTklUX1dPUktBUk9VTkQKLSAgICAgIHN0ZDo6bWVtc2V0KCZ4LCAwLCBzaXplb2YoeCkpOwotI2VuZGlmCi0gICAgICBuZXcgKHdyYXBwZXJfYWRkcmVzcygpKSB3cmFwcGVyKCk7Ci0gICAgfQotCi0gICAgaW5pdGlhbGl6ZWQoaW5pdGlhbGl6ZWQgY29uc3QgJiBhcmcpCi0gICAgewotICAgICAgbmV3ICh3cmFwcGVyX2FkZHJlc3MoKSkgd3JhcHBlciggc3RhdGljX2Nhc3Q8d3JhcHBlciBjb25zdCAmPigqKGFyZy53cmFwcGVyX2FkZHJlc3MoKSkpKTsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBpbml0aWFsaXplZChUIGNvbnN0ICYgYXJnKQotICAgIHsKLSAgICAgIG5ldyAod3JhcHBlcl9hZGRyZXNzKCkpIHdyYXBwZXIoYXJnKTsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplZCAmIG9wZXJhdG9yPShpbml0aWFsaXplZCBjb25zdCAmIGFyZykKLSAgICB7Ci0gICAgICAvLyBBc3NpZ25tZW50IGlzIG9ubHkgYWxsb3dlZCB3aGVuIFQgaXMgbm9uLWNvbnN0LgotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggISBpc19jb25zdDxUPjo6dmFsdWUgKTsKLSAgICAgICp3cmFwcGVyX2FkZHJlc3MoKSA9IHN0YXRpY19jYXN0PHdyYXBwZXIgY29uc3QgJj4oKihhcmcud3JhcHBlcl9hZGRyZXNzKCkpKTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB+aW5pdGlhbGl6ZWQoKQotICAgIHsKLSAgICAgIHdyYXBwZXJfYWRkcmVzcygpLT53cmFwcGVyOjp+d3JhcHBlcigpOwotICAgIH0KLQotICAgIFQgY29uc3QgJiBkYXRhKCkgY29uc3QKLSAgICB7Ci0gICAgICByZXR1cm4gd3JhcHBlcl9hZGRyZXNzKCktPmRhdGE7Ci0gICAgfQotCi0gICAgVCYgZGF0YSgpCi0gICAgewotICAgICAgcmV0dXJuIHdyYXBwZXJfYWRkcmVzcygpLT5kYXRhOwotICAgIH0KLQotICAgIHZvaWQgc3dhcChpbml0aWFsaXplZCAmIGFyZykKLSAgICB7Ci0gICAgICA6Om5kbmJvb3N0Ojpzd2FwKCB0aGlzLT5kYXRhKCksIGFyZy5kYXRhKCkgKTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBUIGNvbnN0ICYoKSBjb25zdAotICAgIHsKLSAgICAgIHJldHVybiB3cmFwcGVyX2FkZHJlc3MoKS0+ZGF0YTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBUJigpCi0gICAgewotICAgICAgcmV0dXJuIHdyYXBwZXJfYWRkcmVzcygpLT5kYXRhOwotICAgIH0KLQotfSA7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1UIGNvbnN0JiBnZXQgKCBpbml0aWFsaXplZDxUPiBjb25zdCYgeCApCi17Ci0gIHJldHVybiB4LmRhdGEoKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1UJiBnZXQgKCBpbml0aWFsaXplZDxUPiYgeCApCi17Ci0gIHJldHVybiB4LmRhdGEoKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci12b2lkIHN3YXAgKCBpbml0aWFsaXplZDxUPiAmIGxocywgaW5pdGlhbGl6ZWQ8VD4gJiByaHMgKQotewotICBsaHMuc3dhcChyaHMpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWNsYXNzIHZhbHVlX2luaXRpYWxpemVkCi17Ci0gIHByaXZhdGUgOgotCi0gICAgLy8gaW5pdGlhbGl6ZWQ8VD4gZG9lcyB2YWx1ZS1pbml0aWFsaXphdGlvbiBieSBkZWZhdWx0LgotICAgIGluaXRpYWxpemVkPFQ+IG1fZGF0YTsKLQotICBwdWJsaWMgOgotICAgIAotICAgIHZhbHVlX2luaXRpYWxpemVkKCkKLSAgICA6Ci0gICAgbV9kYXRhKCkKLSAgICB7IH0KLSAgICAKLSAgICBUIGNvbnN0ICYgZGF0YSgpIGNvbnN0Ci0gICAgewotICAgICAgcmV0dXJuIG1fZGF0YS5kYXRhKCk7Ci0gICAgfQotCi0gICAgVCYgZGF0YSgpCi0gICAgewotICAgICAgcmV0dXJuIG1fZGF0YS5kYXRhKCk7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKHZhbHVlX2luaXRpYWxpemVkICYgYXJnKQotICAgIHsKLSAgICAgIG1fZGF0YS5zd2FwKGFyZy5tX2RhdGEpOwotICAgIH0KLQotICAgIG9wZXJhdG9yIFQgY29uc3QgJigpIGNvbnN0Ci0gICAgewotICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBUJigpCi0gICAgewotICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci19IDsKLQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotVCBjb25zdCYgZ2V0ICggdmFsdWVfaW5pdGlhbGl6ZWQ8VD4gY29uc3QmIHggKQotewotICByZXR1cm4geC5kYXRhKCkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotVCYgZ2V0ICggdmFsdWVfaW5pdGlhbGl6ZWQ8VD4mIHggKQotewotICByZXR1cm4geC5kYXRhKCkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotdm9pZCBzd2FwICggdmFsdWVfaW5pdGlhbGl6ZWQ8VD4gJiBsaHMsIHZhbHVlX2luaXRpYWxpemVkPFQ+ICYgcmhzICkKLXsKLSAgbGhzLnN3YXAocmhzKSA7Ci19Ci0KLQotY2xhc3MgaW5pdGlhbGl6ZWRfdmFsdWVfdAotewotICBwdWJsaWMgOgotICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBvcGVyYXRvciBUKCkgY29uc3QKLSAgICB7Ci0gICAgICByZXR1cm4gaW5pdGlhbGl6ZWQ8VD4oKS5kYXRhKCk7Ci0gICAgfQotfTsKLQotaW5pdGlhbGl6ZWRfdmFsdWVfdCBjb25zdCBpbml0aWFsaXplZF92YWx1ZSA9IHt9IDsKLQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdmVyc2lvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ZlcnNpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjM1ZjEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdmVyc2lvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLyAgQm9vc3QgdmVyc2lvbi5ocHAgY29uZmlndXJhdGlvbiBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBtYWRkb2NrIDE5OTkuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29uZmlnIGZvciBkb2N1bWVudGF0aW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfVkVSU0lPTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVkVSU0lPTl9IUFAKLQotLy8KLS8vICBDYXV0aW9uLCB0aGlzIGlzIHRoZSBvbmx5IGJvb3N0IGhlYWRlciB0aGF0IGlzIGd1YXJlbnRlZWQKLS8vICB0byBjaGFuZ2Ugd2l0aCBldmVyeSBib29zdCByZWxlYXNlLCBpbmNsdWRpbmcgdGhpcyBoZWFkZXIKLS8vICB3aWxsIGNhdXNlIGEgcmVjb21waWxlIGV2ZXJ5IHRpbWUgYSBuZXcgYm9vc3QgdmVyc2lvbiBpcwotLy8gIHJlbGVhc2VkLgotLy8KLS8vICBORE5CT09TVF9WRVJTSU9OICUgMTAwIGlzIHRoZSBwYXRjaCBsZXZlbAotLy8gIE5ETkJPT1NUX1ZFUlNJT04gLyAxMDAgJSAxMDAwIGlzIHRoZSBtaW5vciB2ZXJzaW9uCi0vLyAgTkROQk9PU1RfVkVSU0lPTiAvIDEwMDAwMCBpcyB0aGUgbWFqb3IgdmVyc2lvbgotCi0jZGVmaW5lIE5ETkJPT1NUX1ZFUlNJT04gMTA1NDAwCi0KLS8vCi0vLyAgTkROQk9PU1RfTElCX1ZFUlNJT04gbXVzdCBiZSBkZWZpbmVkIHRvIGJlIHRoZSBzYW1lIGFzIE5ETkJPT1NUX1ZFUlNJT04KLS8vICBidXQgYXMgYSAqc3RyaW5nKiBpbiB0aGUgZm9ybSAieF95W196XSIgd2hlcmUgeCBpcyB0aGUgbWFqb3IgdmVyc2lvbgotLy8gIG51bWJlciwgeSBpcyB0aGUgbWlub3IgdmVyc2lvbiBudW1iZXIsIGFuZCB6IGlzIHRoZSBwYXRjaCBsZXZlbCBpZiBub3QgMC4KLS8vICBUaGlzIGlzIHVzZWQgYnkgPGNvbmZpZy9hdXRvX2xpbmsuaHBwPiB0byBzZWxlY3Qgd2hpY2ggbGlicmFyeSB2ZXJzaW9uIHRvIGxpbmsgdG8uCi0KLSNkZWZpbmUgTkROQk9PU1RfTElCX1ZFUlNJT04gIjFfNTQiCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC92aXNpdF9lYWNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdmlzaXRfZWFjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZDAxNWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC92aXNpdF9lYWNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vIEJvb3N0LlNpZ25hbHMgbGlicmFyeQotCi0vLyBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMS0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NpZ25hbHMKLQotI2lmbmRlZiBORE5CT09TVF9WSVNJVF9FQUNIX0hQUAotI2RlZmluZSBORE5CT09TVF9WSVNJVF9FQUNIX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvciwgdHlwZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQgdmlzaXRfZWFjaChWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBUJiB0LCBsb25nKQotICB7Ci0gICAgdmlzaXRvcih0KTsKLSAgfQotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3IsIHR5cGVuYW1lIFQ+Ci0gIGlubGluZSB2b2lkIHZpc2l0X2VhY2goVmlzaXRvciYgdmlzaXRvciwgY29uc3QgVCYgdCkKLSAgewotICAgIHZpc2l0X2VhY2godmlzaXRvciwgdCwgMCk7Ci0gIH0KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1ZJU0lUX0VBQ0hfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3dlYWtfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvd2Vha19wdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDNkNzdmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvd2Vha19wdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9XRUFLX1BUUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfV0VBS19QVFJfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgd2Vha19wdHIuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci93ZWFrX3B0ci5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3dlYWtfcHRyLmhwcD4KLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1dFQUtfUFRSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvbGlibmRuLWNwcC1kZXYucGMuaW4gYi9saWJuZG4tY3BwLWRldi5wYy5pbgppbmRleCA2MjE5ZDBiLi4wZTMxOTQ5IDEwMDY0NAotLS0gYS9saWJuZG4tY3BwLWRldi5wYy5pbgorKysgYi9saWJuZG4tY3BwLWRldi5wYy5pbgpAQCAtNiw1ICs2LDUgQEAKIE5hbWU6IGxpYm5kbi1jcHAtZGV2CiBEZXNjcmlwdGlvbjogRGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiBDKysgQVBJIGZvciBORE4gKE5ETi1UTFYgcGFja2V0IGZvcm1hdCkKIFZlcnNpb246IEBWRVJTSU9OQAotTGliczogLUwke2xpYmRpcn0gQE9QRU5TU0xfTERGTEFHU0AgQENSWVBUT1BQX0xERkxBR1NAIEBTUUxJVEUzX0xERkxBR1NAIEBCT09TVF9MREZMQUdTQCAtbG5kbi1jcHAtZGV2IEBPUEVOU1NMX0xJQlNAIEBDUllQVE9QUF9MSUJTQCBAT1NYX1NFQ1VSSVRZX0xJQlNAIEBCT09TVF9TWVNURU1fTElCQCBAQk9PU1RfRklMRVNZU1RFTV9MSUJACi1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSBAT1BFTlNTTF9JTkNMVURFU0AgQENSWVBUT1BQX0lOQ0xVREVTQCBAU1FMSVRFM19DRkxBR1NAIEBCT09TVF9DUFBGTEFHU0AKK0xpYnM6IC1MJHtsaWJkaXJ9IEBFWFRSQV9MREZMQUdTQCAtbG5kbi1jcHAtZGV2IEBFWFRSQV9MSUJTQAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQEVYVFJBX0lOQ0xVREVTQApkaWZmIC0tZ2l0IGEvbTQvYXhfYm9vc3RfYXNpby5tNCBiL200L2F4X2Jvb3N0X2FzaW8ubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1N2Q0ODcuLjAwMDAwMDAKLS0tIGEvbTQvYXhfYm9vc3RfYXNpby5tNAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyAgICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9ib29zdF9hc2lvLmh0bWwKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jCi0jIFNZTk9QU0lTCi0jCi0jICAgQVhfQk9PU1RfQVNJTwotIwotIyBERVNDUklQVElPTgotIwotIyAgIFRlc3QgZm9yIEFzaW8gbGlicmFyeSBmcm9tIHRoZSBCb29zdCBDKysgbGlicmFyaWVzLiBUaGUgbWFjcm8gcmVxdWlyZXMgYQotIyAgIHByZWNlZGluZyBjYWxsIHRvIEFYX0JPT1NUX0JBU0UuIEZ1cnRoZXIgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXQKLSMgICA8aHR0cDovL3JhbmRzcHJpbmdlci5kZS9ib29zdC9pbmRleC5odG1sPi4KLSMKLSMgICBUaGlzIG1hY3JvIGNhbGxzOgotIwotIyAgICAgQUNfU1VCU1QoQk9PU1RfQVNJT19MSUIpCi0jCi0jICAgQW5kIHNldHM6Ci0jCi0jICAgICBIQVZFX0JPT1NUX0FTSU8KLSMKLSMgTElDRU5TRQotIwotIyAgIENvcHlyaWdodCAoYykgMjAwOCBUaG9tYXMgUG9yc2NoYmVyZyA8dGhvbWFzQHJhbmRzcHJpbmdlci5kZT4KLSMgICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZSBHcmVlbndlbGwgPHBldGVAbXUub3JnPgotIwotIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQotIyAgIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywgd2l0aG91dCBhbnkKLSMgICB3YXJyYW50eS4KLQotI3NlcmlhbCAxNgotCi1BQ19ERUZVTihbQVhfQk9PU1RfQVNJT10sCi1bCi0JQUNfQVJHX1dJVEgoW2Jvb3N0LWFzaW9dLAotCUFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYm9vc3QtYXNpb0A8OkA9c3BlY2lhbC1saWJAOj5AXSwKLSAgICAgICAgICAgICAgICAgICBbdXNlIHRoZSBBU0lPIGxpYnJhcnkgZnJvbSBib29zdCAtIGl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBjZXJ0YWluIGxpYnJhcnkgZm9yIHRoZSBsaW5rZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGUuZy4gLS13aXRoLWJvb3N0LWFzaW89Ym9vc3Rfc3lzdGVtLWdjYzQxLW10LTFfMzQgXSksCi0gICAgICAgIFsKLSAgICAgICAgaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgotCQkJd2FudF9ib29zdD0ibm8iCi0gICAgICAgIGVsaWYgdGVzdCAiJHdpdGh2YWwiID0gInllcyI7IHRoZW4KLSAgICAgICAgICAgIHdhbnRfYm9vc3Q9InllcyIKLSAgICAgICAgICAgIGF4X2Jvb3N0X3VzZXJfYXNpb19saWI9IiIKLSAgICAgICAgZWxzZQotCQkgICAgd2FudF9ib29zdD0ieWVzIgotCQlheF9ib29zdF91c2VyX2FzaW9fbGliPSIkd2l0aHZhbCIKLQkJZmkKLSAgICAgICAgXSwKLSAgICAgICAgW3dhbnRfYm9vc3Q9InllcyJdCi0JKQotCi0JaWYgdGVzdCAieCR3YW50X2Jvb3N0IiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKLQkJQ1BQRkxBR1NfU0FWRUQ9IiRDUFBGTEFHUyIKLQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkQk9PU1RfQ1BQRkxBR1MiCi0JCWV4cG9ydCBDUFBGTEFHUwotCi0JCUxERkxBR1NfU0FWRUQ9IiRMREZMQUdTIgotCQlMREZMQUdTPSIkTERGTEFHUyAkQk9PU1RfTERGTEFHUyIKLQkJZXhwb3J0IExERkxBR1MKLQotICAgICAgICBBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIHRoZSBCb29zdDo6QVNJTyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSwKLQkJCQkJICAgYXhfY3ZfYm9vc3RfYXNpbywKLSAgICAgICAgW0FDX0xBTkdfUFVTSChbQysrXSkKLQkJIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sgQCU6QGluY2x1ZGUgPGJvb3N0L2FzaW8uaHBwPgotCQkJCQkJCQkJCQldXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29zdDo6YXNpbzo6aW9fc2VydmljZSBpbzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3N0OjpzeXN0ZW06OmVycm9yX2NvZGUgdGltZXJfcmVzdWx0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vc3Q6OmFzaW86OmRlYWRsaW5lX3RpbWVyIHQoaW8pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5jYW5jZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvLnJ1bl9vbmUoKTsKLQkJCQkJCQkJCXJldHVybiAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXSldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheF9jdl9ib29zdF9hc2lvPXllcywgYXhfY3ZfYm9vc3RfYXNpbz1ubykKLSAgICAgICAgIEFDX0xBTkdfUE9QKFtDKytdKQotCQldKQotCQlpZiB0ZXN0ICJ4JGF4X2N2X2Jvb3N0X2FzaW8iID0gInh5ZXMiOyB0aGVuCi0JCQlBQ19ERUZJTkUoSEFWRV9CT09TVF9BU0lPLCxbZGVmaW5lIGlmIHRoZSBCb29zdDo6QVNJTyBsaWJyYXJ5IGlzIGF2YWlsYWJsZV0pCi0JCQlCTj1ib29zdF9zeXN0ZW0KLQkJCUJPT1NUTElCRElSPWBlY2hvICRCT09TVF9MREZMQUdTIHwgc2VkIC1lICdzL0A8OkBeXC9AOj5AKi8vJ2AKLSAgICAgICAgICAgIGlmIHRlc3QgIngkYXhfYm9vc3RfdXNlcl9hc2lvX2xpYiIgPSAieCI7IHRoZW4KLQkJCQlmb3IgYXhfbGliIGluIGBscyAkQk9PU1RMSUJESVIvbGliYm9vc3Rfc3lzdGVtKi5zbyogJEJPT1NUTElCRElSL2xpYmJvb3N0X3N5c3RlbSouZHlsaWIqICRCT09TVExJQkRJUi9saWJib29zdF9zeXN0ZW0qLmEqIDI+L2Rldi9udWxsIHwgc2VkICdzLC4qLywsJyB8IHNlZCAtZSAncztebGliXChib29zdF9zeXN0ZW0uKlwpXC5zby4qJDtcMTsnIC1lICdzO15saWJcKGJvb3N0X3N5c3RlbS4qXClcLmR5bGliLiokO1wxOycgLWUgJ3M7XmxpYlwoYm9vc3Rfc3lzdGVtLipcKVwuYS4qJDtcMTsnIGAgOyBkbwotCQkJCSAgICBBQ19DSEVDS19MSUIoJGF4X2xpYiwgbWFpbiwgW0JPT1NUX0FTSU9fTElCPSItbCRheF9saWIiIEFDX1NVQlNUKEJPT1NUX0FTSU9fTElCKSBsaW5rX3RocmVhZD0ieWVzIiBicmVha10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua190aHJlYWQ9Im5vIl0pCi0JCQkJZG9uZQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgZm9yIGF4X2xpYiBpbiAkYXhfYm9vc3RfdXNlcl9hc2lvX2xpYiAkQk4tJGF4X2Jvb3N0X3VzZXJfYXNpb19saWI7IGRvCi0JCQkJICAgICAgQUNfQ0hFQ0tfTElCKCRheF9saWIsIG1haW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtCT09TVF9BU0lPX0xJQj0iLWwkYXhfbGliIiBBQ19TVUJTVChCT09TVF9BU0lPX0xJQikgbGlua19hc2lvPSJ5ZXMiIGJyZWFrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtfYXNpbz0ibm8iXSkKLSAgICAgICAgICAgICAgICAgIGRvbmUKLQotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGlmIHRlc3QgIngkYXhfbGliIiA9ICJ4IjsgdGhlbgotICAgICAgICAgICAgICAgIEFDX01TR19FUlJPUihDb3VsZCBub3QgZmluZCBhIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkhKQotICAgICAgICAgICAgZmkKLQkJCWlmIHRlc3QgIngkbGlua19hc2lvIiA9ICJ4bm8iOyB0aGVuCi0JCQkJQUNfTVNHX0VSUk9SKENvdWxkIG5vdCBsaW5rIGFnYWluc3QgJGF4X2xpYiAhKQotCQkJZmkKLQkJZmkKLQotCQlDUFBGTEFHUz0iJENQUEZMQUdTX1NBVkVEIgotCUxERkxBR1M9IiRMREZMQUdTX1NBVkVEIgotCWZpCi1dKQpkaWZmIC0tZ2l0IGEvbTQvYXhfYm9vc3RfYmFzZS5tNCBiL200L2F4X2Jvb3N0X2Jhc2UubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiN2NlMzUuLjAwMDAwMDAKLS0tIGEvbTQvYXhfYm9vc3RfYmFzZS5tNAorKysgL2Rldi9udWxsCkBAIC0xLDI3MiArMCwwIEBACi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyAgICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9ib29zdF9iYXNlLmh0bWwKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jCi0jIFNZTk9QU0lTCi0jCi0jICAgQVhfQk9PU1RfQkFTRShbTUlOSU1VTS1WRVJTSU9OXSwgW0FDVElPTi1JRi1GT1VORF0sIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKLSMKLSMgREVTQ1JJUFRJT04KLSMKLSMgICBUZXN0IGZvciB0aGUgQm9vc3QgQysrIGxpYnJhcmllcyBvZiBhIHBhcnRpY3VsYXIgdmVyc2lvbiAob3IgbmV3ZXIpCi0jCi0jICAgSWYgbm8gcGF0aCB0byB0aGUgaW5zdGFsbGVkIGJvb3N0IGxpYnJhcnkgaXMgZ2l2ZW4gdGhlIG1hY3JvIHNlYXJjaHMKLSMgICB1bmRlciAvdXNyLCAvdXNyL2xvY2FsLCAvb3B0IGFuZCAvb3B0L2xvY2FsIGFuZCBldmFsdWF0ZXMgdGhlCi0jICAgJEJPT1NUX1JPT1QgZW52aXJvbm1lbnQgdmFyaWFibGUuIEZ1cnRoZXIgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXQKLSMgICA8aHR0cDovL3JhbmRzcHJpbmdlci5kZS9ib29zdC9pbmRleC5odG1sPi4KLSMKLSMgICBUaGlzIG1hY3JvIGNhbGxzOgotIwotIyAgICAgQUNfU1VCU1QoQk9PU1RfQ1BQRkxBR1MpIC8gQUNfU1VCU1QoQk9PU1RfTERGTEFHUykKLSMKLSMgICBBbmQgc2V0czoKLSMKLSMgICAgIEhBVkVfQk9PU1QKLSMKLSMgTElDRU5TRQotIwotIyAgIENvcHlyaWdodCAoYykgMjAwOCBUaG9tYXMgUG9yc2NoYmVyZyA8dGhvbWFzQHJhbmRzcHJpbmdlci5kZT4KLSMgICBDb3B5cmlnaHQgKGMpIDIwMDkgUGV0ZXIgQWRvbHBocwotIwotIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQotIyAgIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywgd2l0aG91dCBhbnkKLSMgICB3YXJyYW50eS4KLQotI3NlcmlhbCAyMgotCi1BQ19ERUZVTihbQVhfQk9PU1RfQkFTRV0sCi1bCi1BQ19BUkdfV0lUSChbYm9vc3RdLAotICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1ib29zdEA8OkA9QVJHQDo+QF0sCi0gICAgW3VzZSBCb29zdCBsaWJyYXJ5IGZyb20gYSBzdGFuZGFyZCBsb2NhdGlvbiAoQVJHPXllcyksCi0gICAgIGZyb20gdGhlIHNwZWNpZmllZCBsb2NhdGlvbiAoQVJHPTxwYXRoPiksCi0gICAgIG9yIGRpc2FibGUgaXQgKEFSRz1ubykKLSAgICAgQDw6QEFSRz15ZXNAOj5AIF0pXSwKLSAgICBbCi0gICAgaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgotICAgICAgICB3YW50X2Jvb3N0PSJubyIKLSAgICBlbGlmIHRlc3QgIiR3aXRodmFsIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgIHdhbnRfYm9vc3Q9InllcyIKLSAgICAgICAgYWNfYm9vc3RfcGF0aD0iIgotICAgIGVsc2UKLSAgICAgICAgd2FudF9ib29zdD0ieWVzIgotICAgICAgICBhY19ib29zdF9wYXRoPSIkd2l0aHZhbCIKLSAgICBmaQotICAgIF0sCi0gICAgW3dhbnRfYm9vc3Q9InllcyJdKQotCi0KLUFDX0FSR19XSVRIKFtib29zdC1saWJkaXJdLAotICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLWJvb3N0LWxpYmRpcj1MSUJfRElSXSwKLSAgICAgICAgW0ZvcmNlIGdpdmVuIGRpcmVjdG9yeSBmb3IgYm9vc3QgbGlicmFyaWVzLiBOb3RlIHRoYXQgdGhpcyB3aWxsIG92ZXJyaWRlIGxpYnJhcnkgcGF0aCBkZXRlY3Rpb24sIHNvIHVzZSB0aGlzIHBhcmFtZXRlciBvbmx5IGlmIGRlZmF1bHQgbGlicmFyeSBkZXRlY3Rpb24gZmFpbHMgYW5kIHlvdSBrbm93IGV4YWN0bHkgd2hlcmUgeW91ciBib29zdCBsaWJyYXJpZXMgYXJlIGxvY2F0ZWQuXSksCi0gICAgICAgIFsKLSAgICAgICAgaWYgdGVzdCAtZCAiJHdpdGh2YWwiCi0gICAgICAgIHRoZW4KLSAgICAgICAgICAgICAgICBhY19ib29zdF9saWJfcGF0aD0iJHdpdGh2YWwiCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoLS13aXRoLWJvb3N0LWxpYmRpciBleHBlY3RlZCBkaXJlY3RvcnkgbmFtZSkKLSAgICAgICAgZmkKLSAgICAgICAgXSwKLSAgICAgICAgW2FjX2Jvb3N0X2xpYl9wYXRoPSIiXQotKQotCi1pZiB0ZXN0ICJ4JHdhbnRfYm9vc3QiID0gInh5ZXMiOyB0aGVuCi0gICAgYm9vc3RfbGliX3ZlcnNpb25fcmVxPWlmZWxzZShbJDFdLCAsMS4yMC4wLCQxKQotICAgIGJvb3N0X2xpYl92ZXJzaW9uX3JlcV9zaG9ydGVuPWBleHByICRib29zdF9saWJfdmVyc2lvbl9yZXEgOiAnXChbWzAtOV1dKlwuW1swLTldXSpcKSdgCi0gICAgYm9vc3RfbGliX3ZlcnNpb25fcmVxX21ham9yPWBleHByICRib29zdF9saWJfdmVyc2lvbl9yZXEgOiAnXChbWzAtOV1dKlwpJ2AKLSAgICBib29zdF9saWJfdmVyc2lvbl9yZXFfbWlub3I9YGV4cHIgJGJvb3N0X2xpYl92ZXJzaW9uX3JlcSA6ICdbWzAtOV1dKlwuXChbWzAtOV1dKlwpJ2AKLSAgICBib29zdF9saWJfdmVyc2lvbl9yZXFfc3ViX21pbm9yPWBleHByICRib29zdF9saWJfdmVyc2lvbl9yZXEgOiAnW1swLTldXSpcLltbMC05XV0qXC5cKFtbMC05XV0qXCknYAotICAgIGlmIHRlc3QgIngkYm9vc3RfbGliX3ZlcnNpb25fcmVxX3N1Yl9taW5vciIgPSAieCIgOyB0aGVuCi0gICAgICAgIGJvb3N0X2xpYl92ZXJzaW9uX3JlcV9zdWJfbWlub3I9IjAiCi0gICAgICAgIGZpCi0gICAgV0FOVF9CT09TVF9WRVJTSU9OPWBleHByICRib29zdF9saWJfdmVyc2lvbl9yZXFfbWFqb3IgXCogMTAwMDAwIFwrICAkYm9vc3RfbGliX3ZlcnNpb25fcmVxX21pbm9yIFwqIDEwMCBcKyAkYm9vc3RfbGliX3ZlcnNpb25fcmVxX3N1Yl9taW5vcmAKLSAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGJvb3N0bGliID49ICRib29zdF9saWJfdmVyc2lvbl9yZXEpCi0gICAgc3VjY2VlZGVkPW5vCi0KLSAgICBkbmwgT24gNjQtYml0IHN5c3RlbXMgY2hlY2sgZm9yIHN5c3RlbSBsaWJyYXJpZXMgaW4gYm90aCBsaWI2NCBhbmQgbGliLgotICAgIGRubCBUaGUgZm9ybWVyIGlzIHNwZWNpZmllZCBieSBGSFMsIGJ1dCBlLmcuIERlYmlhbiBkb2VzIG5vdCBhZGhlcmUgdG8KLSAgICBkbmwgdGhpcyAoYXMgaXQgcmlzZXMgcHJvYmxlbXMgZm9yIGdlbmVyaWMgbXVsdGktYXJjaCBzdXBwb3J0KS4KLSAgICBkbmwgVGhlIGxhc3QgZW50cnkgaW4gdGhlIGxpc3QgaXMgY2hvc2VuIGJ5IGRlZmF1bHQgd2hlbiBubyBsaWJyYXJpZXMKLSAgICBkbmwgYXJlIGZvdW5kLCBlLmcuIHdoZW4gb25seSBoZWFkZXItb25seSBsaWJyYXJpZXMgYXJlIGluc3RhbGxlZCEKLSAgICBsaWJzdWJkaXJzPSJsaWIiCi0gICAgYXhfYXJjaD1gdW5hbWUgLW1gCi0gICAgY2FzZSAkYXhfYXJjaCBpbgotICAgICAgeDg2XzY0fHBwYzY0fHMzOTB4fHNwYXJjNjR8YWFyY2g2NCkKLSAgICAgICAgbGlic3ViZGlycz0ibGliNjQgbGliIGxpYjY0IgotICAgICAgICA7OwotICAgIGVzYWMKLQotICAgIGRubCBhbGxvdyBmb3IgcmVhbCBtdWx0aS1hcmNoIHBhdGhzIGUuZy4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS4gR2l2ZQotICAgIGRubCB0aGVtIHByaW9yaXR5IG92ZXIgdGhlIG90aGVyIHBhdGhzIHNpbmNlLCBpZiBsaWJzIGFyZSBmb3VuZCB0aGVyZSwgdGhleQotICAgIGRubCBhcmUgYWxtb3N0IGFzc3VyZWRseSB0aGUgb25lcyBkZXNpcmVkLgotICAgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKLSAgICBsaWJzdWJkaXJzPSJsaWIvJHtob3N0X2NwdX0tJHtob3N0X29zfSAkbGlic3ViZGlycyIKLQotICAgIGNhc2UgJHtob3N0X2NwdX0gaW4KLSAgICAgIGk/ODYpCi0gICAgICAgIGxpYnN1YmRpcnM9ImxpYi9pMzg2LSR7aG9zdF9vc30gJGxpYnN1YmRpcnMiCi0gICAgICAgIDs7Ci0gICAgZXNhYwotCi0gICAgZG5sIGZpcnN0IHdlIGNoZWNrIHRoZSBzeXN0ZW0gbG9jYXRpb24gZm9yIGJvb3N0IGxpYnJhcmllcwotICAgIGRubCB0aGlzIGxvY2F0aW9uIGlzdCBjaG9zZW4gaWYgYm9vc3QgbGlicmFyaWVzIGFyZSBpbnN0YWxsZWQgd2l0aCB0aGUgLS1sYXlvdXQ9c3lzdGVtIG9wdGlvbgotICAgIGRubCBvciBpZiB5b3UgaW5zdGFsbCBib29zdCB3aXRoIFJQTQotICAgIGlmIHRlc3QgIiRhY19ib29zdF9wYXRoIiAhPSAiIjsgdGhlbgotICAgICAgICBCT09TVF9DUFBGTEFHUz0iLUkkYWNfYm9vc3RfcGF0aC9pbmNsdWRlIgotICAgICAgICBmb3IgYWNfYm9vc3RfcGF0aF90bXAgaW4gJGxpYnN1YmRpcnM7IGRvCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFjX2Jvb3N0X3BhdGgiLyIkYWNfYm9vc3RfcGF0aF90bXAiIDsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgQk9PU1RfTERGTEFHUz0iLUwkYWNfYm9vc3RfcGF0aC8kYWNfYm9vc3RfcGF0aF90bXAiCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICBlbGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9IHllczsgdGhlbgotICAgICAgICBmb3IgYWNfYm9vc3RfcGF0aF90bXAgaW4gL3VzciAvdXNyL2xvY2FsIC9vcHQgL29wdC9sb2NhbCA7IGRvCi0gICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWNfYm9vc3RfcGF0aF90bXAvaW5jbHVkZS9ib29zdCIgJiYgdGVzdCAtciAiJGFjX2Jvb3N0X3BhdGhfdG1wL2luY2x1ZGUvYm9vc3QiOyB0aGVuCi0gICAgICAgICAgICAgICAgZm9yIGxpYnN1YmRpciBpbiAkbGlic3ViZGlycyA7IGRvCi0gICAgICAgICAgICAgICAgICAgIGlmIGxzICIkYWNfYm9vc3RfcGF0aF90bXAvJGxpYnN1YmRpci9saWJib29zdF8iKiA+L2Rldi9udWxsIDI+JjEgOyB0aGVuIGJyZWFrOyBmaQotICAgICAgICAgICAgICAgIGRvbmUKLSAgICAgICAgICAgICAgICBCT09TVF9MREZMQUdTPSItTCRhY19ib29zdF9wYXRoX3RtcC8kbGlic3ViZGlyIgotICAgICAgICAgICAgICAgIEJPT1NUX0NQUEZMQUdTPSItSSRhY19ib29zdF9wYXRoX3RtcC9pbmNsdWRlIgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgIGZpCi0KLSAgICBkbmwgb3ZlcndyaXRlIGxkIGZsYWdzIGlmIHdlIGhhdmUgcmVxdWlyZWQgc3BlY2lhbCBkaXJlY3Rvcnkgd2l0aAotICAgIGRubCAtLXdpdGgtYm9vc3QtbGliZGlyIHBhcmFtZXRlcgotICAgIGlmIHRlc3QgIiRhY19ib29zdF9saWJfcGF0aCIgIT0gIiI7IHRoZW4KLSAgICAgICBCT09TVF9MREZMQUdTPSItTCRhY19ib29zdF9saWJfcGF0aCIKLSAgICBmaQotCi0gICAgQ1BQRkxBR1NfU0FWRUQ9IiRDUFBGTEFHUyIKLSAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRCT09TVF9DUFBGTEFHUyIKLSAgICBleHBvcnQgQ1BQRkxBR1MKLQotICAgIExERkxBR1NfU0FWRUQ9IiRMREZMQUdTIgotICAgIExERkxBR1M9IiRMREZMQUdTICRCT09TVF9MREZMQUdTIgotICAgIGV4cG9ydCBMREZMQUdTCi0KLSAgICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NYWF0pCi0gICAgQUNfTEFOR19QVVNIKEMrKykKLSAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotICAgIEAlOkBpbmNsdWRlIDxib29zdC92ZXJzaW9uLmhwcD4KLSAgICBdXSwgW1sKLSAgICAjaWYgQk9PU1RfVkVSU0lPTiA+PSAkV0FOVF9CT09TVF9WRVJTSU9OCi0gICAgLy8gRXZlcnl0aGluZyBpcyBva2F5Ci0gICAgI2Vsc2UKLSAgICAjICBlcnJvciBCb29zdCB2ZXJzaW9uIGlzIHRvbyBvbGQKLSAgICAjZW5kaWYKLSAgICBdXSldLFsKLSAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICAgc3VjY2VlZGVkPXllcwotICAgIGZvdW5kX3N5c3RlbT15ZXMKLSAgICAgICAgXSxbCi0gICAgICAgIF0pCi0gICAgQUNfTEFOR19QT1AoW0MrK10pCi0KLQotCi0gICAgZG5sIGlmIHdlIGZvdW5kIG5vIGJvb3N0IHdpdGggc3lzdGVtIGxheW91dCB3ZSBzZWFyY2ggZm9yIGJvb3N0IGxpYnJhcmllcwotICAgIGRubCBidWlsdCBhbmQgaW5zdGFsbGVkIHdpdGhvdXQgdGhlIC0tbGF5b3V0PXN5c3RlbSBvcHRpb24gb3IgZm9yIGEgc3RhZ2VkKG5vdCBpbnN0YWxsZWQpIHZlcnNpb24KLSAgICBpZiB0ZXN0ICJ4JHN1Y2NlZWRlZCIgIT0gInh5ZXMiOyB0aGVuCi0gICAgICAgIF92ZXJzaW9uPTAKLSAgICAgICAgaWYgdGVzdCAiJGFjX2Jvb3N0X3BhdGgiICE9ICIiOyB0aGVuCi0gICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWNfYm9vc3RfcGF0aCIgJiYgdGVzdCAtciAiJGFjX2Jvb3N0X3BhdGgiOyB0aGVuCi0gICAgICAgICAgICAgICAgZm9yIGkgaW4gYGxzIC1kICRhY19ib29zdF9wYXRoL2luY2x1ZGUvYm9vc3QtKiAyPi9kZXYvbnVsbGA7IGRvCi0gICAgICAgICAgICAgICAgICAgIF92ZXJzaW9uX3RtcD1gZWNobyAkaSB8IHNlZCAicyMkYWNfYm9vc3RfcGF0aCMjIiB8IHNlZCAncy9cL2luY2x1ZGVcL2Jvb3N0LS8vJyB8IHNlZCAncy9fLy4vJ2AKLSAgICAgICAgICAgICAgICAgICAgVl9DSEVDSz1gZXhwciAkX3ZlcnNpb25fdG1wIFw+ICRfdmVyc2lvbmAKLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJFZfQ0hFQ0siID0gIjEiIDsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgX3ZlcnNpb249JF92ZXJzaW9uX3RtcAotICAgICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgICAgICBWRVJTSU9OX1VOREVSU0NPUkU9YGVjaG8gJF92ZXJzaW9uIHwgc2VkICdzL1wuL18vJ2AKLSAgICAgICAgICAgICAgICAgICAgQk9PU1RfQ1BQRkxBR1M9Ii1JJGFjX2Jvb3N0X3BhdGgvaW5jbHVkZS9ib29zdC0kVkVSU0lPTl9VTkRFUlNDT1JFIgotICAgICAgICAgICAgICAgIGRvbmUKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9IHllczsgdGhlbgotICAgICAgICAgICAgICAgIGZvciBhY19ib29zdF9wYXRoIGluIC91c3IgL3Vzci9sb2NhbCAvb3B0IC9vcHQvbG9jYWwgOyBkbwotICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWNfYm9vc3RfcGF0aCIgJiYgdGVzdCAtciAiJGFjX2Jvb3N0X3BhdGgiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBgbHMgLWQgJGFjX2Jvb3N0X3BhdGgvaW5jbHVkZS9ib29zdC0qIDI+L2Rldi9udWxsYDsgZG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdmVyc2lvbl90bXA9YGVjaG8gJGkgfCBzZWQgInMjJGFjX2Jvb3N0X3BhdGgjIyIgfCBzZWQgJ3MvXC9pbmNsdWRlXC9ib29zdC0vLycgfCBzZWQgJ3MvXy8uLydgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVl9DSEVDSz1gZXhwciAkX3ZlcnNpb25fdG1wIFw+ICRfdmVyc2lvbmAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkVl9DSEVDSyIgPSAiMSIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJzaW9uPSRfdmVyc2lvbl90bXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdF9wYXRoPSRhY19ib29zdF9wYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKLSAgICAgICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgICBkb25lCi0KLSAgICAgICAgICAgICAgICBWRVJTSU9OX1VOREVSU0NPUkU9YGVjaG8gJF92ZXJzaW9uIHwgc2VkICdzL1wuL18vJ2AKLSAgICAgICAgICAgICAgICBCT09TVF9DUFBGTEFHUz0iLUkkYmVzdF9wYXRoL2luY2x1ZGUvYm9vc3QtJFZFUlNJT05fVU5ERVJTQ09SRSIKLSAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkYWNfYm9vc3RfbGliX3BhdGgiID0gIiI7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpYnN1YmRpciBpbiAkbGlic3ViZGlycyA7IGRvCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBscyAiJGJlc3RfcGF0aC8kbGlic3ViZGlyL2xpYmJvb3N0XyIqID4vZGV2L251bGwgMj4mMSA7IHRoZW4gYnJlYWs7IGZpCi0gICAgICAgICAgICAgICAgICAgIGRvbmUKLSAgICAgICAgICAgICAgICAgICAgQk9PU1RfTERGTEFHUz0iLUwkYmVzdF9wYXRoLyRsaWJzdWJkaXIiCi0gICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGZpCi0KLSAgICAgICAgICAgIGlmIHRlc3QgIngkQk9PU1RfUk9PVCIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgICAgICAgZm9yIGxpYnN1YmRpciBpbiAkbGlic3ViZGlycyA7IGRvCi0gICAgICAgICAgICAgICAgICAgIGlmIGxzICIkQk9PU1RfUk9PVC9zdGFnZS8kbGlic3ViZGlyL2xpYmJvb3N0XyIqID4vZGV2L251bGwgMj4mMSA7IHRoZW4gYnJlYWs7IGZpCi0gICAgICAgICAgICAgICAgZG9uZQotICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRCT09TVF9ST09UIiAmJiB0ZXN0IC1yICIkQk9PU1RfUk9PVCIgJiYgdGVzdCAtZCAiJEJPT1NUX1JPT1Qvc3RhZ2UvJGxpYnN1YmRpciIgJiYgdGVzdCAtciAiJEJPT1NUX1JPT1Qvc3RhZ2UvJGxpYnN1YmRpciI7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9kaXI9YGV4cHIgLy8kQk9PU1RfUk9PVCA6ICcuKi9cKC4qXCknYAotICAgICAgICAgICAgICAgICAgICBzdGFnZV92ZXJzaW9uPWBlY2hvICR2ZXJzaW9uX2RpciB8IHNlZCAncy9ib29zdF8vLycgfCBzZWQgJ3MvXy8uL2cnYAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2VfdmVyc2lvbl9zaG9ydGVuPWBleHByICRzdGFnZV92ZXJzaW9uIDogJ1woW1swLTldXSpcLltbMC05XV0qXCknYAotICAgICAgICAgICAgICAgICAgICBWX0NIRUNLPWBleHByICRzdGFnZV92ZXJzaW9uX3Nob3J0ZW4gXD5cPSAkX3ZlcnNpb25gCi0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRWX0NIRUNLIiA9ICIxIiAtYSAiJGFjX2Jvb3N0X2xpYl9wYXRoIiA9ICIiIDsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX05PVElDRShXZSB3aWxsIHVzZSBhIHN0YWdlZCBib29zdCBsaWJyYXJ5IGZyb20gJEJPT1NUX1JPT1QpCi0gICAgICAgICAgICAgICAgICAgICAgICBCT09TVF9DUFBGTEFHUz0iLUkkQk9PU1RfUk9PVCIKLSAgICAgICAgICAgICAgICAgICAgICAgIEJPT1NUX0xERkxBR1M9Ii1MJEJPT1NUX1JPT1Qvc3RhZ2UvJGxpYnN1YmRpciIKLSAgICAgICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgZmkKLSAgICAgICAgZmkKLQotICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRCT09TVF9DUFBGTEFHUyIKLSAgICAgICAgZXhwb3J0IENQUEZMQUdTCi0gICAgICAgIExERkxBR1M9IiRMREZMQUdTICRCT09TVF9MREZMQUdTIgotICAgICAgICBleHBvcnQgTERGTEFHUwotCi0gICAgICAgIEFDX0xBTkdfUFVTSChDKyspCi0gICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCi0gICAgICAgIEAlOkBpbmNsdWRlIDxib29zdC92ZXJzaW9uLmhwcD4KLSAgICAgICAgXV0sIFtbCi0gICAgICAgICNpZiBCT09TVF9WRVJTSU9OID49ICRXQU5UX0JPT1NUX1ZFUlNJT04KLSAgICAgICAgLy8gRXZlcnl0aGluZyBpcyBva2F5Ci0gICAgICAgICNlbHNlCi0gICAgICAgICMgIGVycm9yIEJvb3N0IHZlcnNpb24gaXMgdG9vIG9sZAotICAgICAgICAjZW5kaWYKLSAgICAgICAgXV0pXSxbCi0gICAgICAgICAgICBBQ19NU0dfUkVTVUxUKHllcykKLSAgICAgICAgc3VjY2VlZGVkPXllcwotICAgICAgICBmb3VuZF9zeXN0ZW09eWVzCi0gICAgICAgICAgICBdLFsKLSAgICAgICAgICAgIF0pCi0gICAgICAgIEFDX0xBTkdfUE9QKFtDKytdKQotICAgIGZpCi0KLSAgICBpZiB0ZXN0ICIkc3VjY2VlZGVkIiAhPSAieWVzIiA7IHRoZW4KLSAgICAgICAgaWYgdGVzdCAiJF92ZXJzaW9uIiA9ICIwIiA7IHRoZW4KLSAgICAgICAgICAgIEFDX01TR19OT1RJQ0UoW1tXZSBjb3VsZCBub3QgZGV0ZWN0IHRoZSBib29zdCBsaWJyYXJpZXMgKHZlcnNpb24gJGJvb3N0X2xpYl92ZXJzaW9uX3JlcV9zaG9ydGVuIG9yIGhpZ2hlcikuIElmIHlvdSBoYXZlIGEgc3RhZ2VkIGJvb3N0IGxpYnJhcnkgKHN0aWxsIG5vdCBpbnN0YWxsZWQpIHBsZWFzZSBzcGVjaWZ5IFwkQk9PU1RfUk9PVCBpbiB5b3VyIGVudmlyb25tZW50IGFuZCBkbyBub3QgZ2l2ZSBhIFBBVEggdG8gLS13aXRoLWJvb3N0IG9wdGlvbi4gIElmIHlvdSBhcmUgc3VyZSB5b3UgaGF2ZSBib29zdCBpbnN0YWxsZWQsIHRoZW4gY2hlY2sgeW91ciB2ZXJzaW9uIG51bWJlciBsb29raW5nIGluIDxib29zdC92ZXJzaW9uLmhwcD4uIFNlZSBodHRwOi8vcmFuZHNwcmluZ2VyLmRlL2Jvb3N0IGZvciBtb3JlIGRvY3VtZW50YXRpb24uXV0pCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEFDX01TR19OT1RJQ0UoW1lvdXIgYm9vc3QgbGlicmFyaWVzIHNlZW1zIHRvIG9sZCAodmVyc2lvbiAkX3ZlcnNpb24pLl0pCi0gICAgICAgIGZpCi0gICAgICAgICMgZXhlY3V0ZSBBQ1RJT04tSUYtTk9ULUZPVU5EIChpZiBwcmVzZW50KToKLSAgICAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKLSAgICBlbHNlCi0gICAgICAgIEFDX1NVQlNUKEJPT1NUX0NQUEZMQUdTKQotICAgICAgICBBQ19TVUJTVChCT09TVF9MREZMQUdTKQotICAgICAgICBBQ19ERUZJTkUoSEFWRV9CT09TVCwsW2RlZmluZSBpZiB0aGUgQm9vc3QgbGlicmFyeSBpcyBhdmFpbGFibGVdKQotICAgICAgICAjIGV4ZWN1dGUgQUNUSU9OLUlGLUZPVU5EIChpZiBwcmVzZW50KToKLSAgICAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLSAgICBmaQotCi0gICAgQ1BQRkxBR1M9IiRDUFBGTEFHU19TQVZFRCIKLSAgICBMREZMQUdTPSIkTERGTEFHU19TQVZFRCIKLWZpCi0KLV0pCmRpZmYgLS1naXQgYS9tNC9heF9ib29zdF9maWxlc3lzdGVtLm00IGIvbTQvYXhfYm9vc3RfZmlsZXN5c3RlbS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE2MjE2My4uMDAwMDAwMAotLS0gYS9tNC9heF9ib29zdF9maWxlc3lzdGVtLm00CisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2Jvb3N0X2ZpbGVzeXN0ZW0uaHRtbAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMKLSMgU1lOT1BTSVMKLSMKLSMgICBBWF9CT09TVF9GSUxFU1lTVEVNCi0jCi0jIERFU0NSSVBUSU9OCi0jCi0jICAgVGVzdCBmb3IgRmlsZXN5c3RlbSBsaWJyYXJ5IGZyb20gdGhlIEJvb3N0IEMrKyBsaWJyYXJpZXMuIFRoZSBtYWNybwotIyAgIHJlcXVpcmVzIGEgcHJlY2VkaW5nIGNhbGwgdG8gQVhfQk9PU1RfQkFTRS4gRnVydGhlciBkb2N1bWVudGF0aW9uIGlzCi0jICAgYXZhaWxhYmxlIGF0IDxodHRwOi8vcmFuZHNwcmluZ2VyLmRlL2Jvb3N0L2luZGV4Lmh0bWw+LgotIwotIyAgIFRoaXMgbWFjcm8gY2FsbHM6Ci0jCi0jICAgICBBQ19TVUJTVChCT09TVF9GSUxFU1lTVEVNX0xJQikKLSMKLSMgICBBbmQgc2V0czoKLSMKLSMgICAgIEhBVkVfQk9PU1RfRklMRVNZU1RFTQotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA5IFRob21hcyBQb3JzY2hiZXJnIDx0aG9tYXNAcmFuZHNwcmluZ2VyLmRlPgotIyAgIENvcHlyaWdodCAoYykgMjAwOSBNaWNoYWVsIFRpbmRhbAotIyAgIENvcHlyaWdodCAoYykgMjAwOSBSb21hbiBSeWJhbGtvIDxsaWJ0b3JyZW50QHJvbWFuci5pbmZvPgotIwotIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQotIyAgIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywgd2l0aG91dCBhbnkKLSMgICB3YXJyYW50eS4KLQotI3NlcmlhbCAyNgotCi1BQ19ERUZVTihbQVhfQk9PU1RfRklMRVNZU1RFTV0sCi1bCi0JQUNfQVJHX1dJVEgoW2Jvb3N0LWZpbGVzeXN0ZW1dLAotCUFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYm9vc3QtZmlsZXN5c3RlbUA8OkA9c3BlY2lhbC1saWJAOj5AXSwKLSAgICAgICAgICAgICAgICAgICBbdXNlIHRoZSBGaWxlc3lzdGVtIGxpYnJhcnkgZnJvbSBib29zdCAtIGl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBjZXJ0YWluIGxpYnJhcnkgZm9yIHRoZSBsaW5rZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGUuZy4gLS13aXRoLWJvb3N0LWZpbGVzeXN0ZW09Ym9vc3RfZmlsZXN5c3RlbS1nY2MtbXQgXSksCi0gICAgICAgIFsKLSAgICAgICAgaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgotCQkJd2FudF9ib29zdD0ibm8iCi0gICAgICAgIGVsaWYgdGVzdCAiJHdpdGh2YWwiID0gInllcyI7IHRoZW4KLSAgICAgICAgICAgIHdhbnRfYm9vc3Q9InllcyIKLSAgICAgICAgICAgIGF4X2Jvb3N0X3VzZXJfZmlsZXN5c3RlbV9saWI9IiIKLSAgICAgICAgZWxzZQotCQkgICAgd2FudF9ib29zdD0ieWVzIgotCQlheF9ib29zdF91c2VyX2ZpbGVzeXN0ZW1fbGliPSIkd2l0aHZhbCIKLQkJZmkKLSAgICAgICAgXSwKLSAgICAgICAgW3dhbnRfYm9vc3Q9InllcyJdCi0JKQotCi0JaWYgdGVzdCAieCR3YW50X2Jvb3N0IiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKLQkJQ1BQRkxBR1NfU0FWRUQ9IiRDUFBGTEFHUyIKLQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkQk9PU1RfQ1BQRkxBR1MiCi0JCWV4cG9ydCBDUFBGTEFHUwotCi0JCUxERkxBR1NfU0FWRUQ9IiRMREZMQUdTIgotCQlMREZMQUdTPSIkTERGTEFHUyAkQk9PU1RfTERGTEFHUyIKLQkJZXhwb3J0IExERkxBR1MKLQotCQlMSUJTX1NBVkVEPSRMSUJTCi0JCUxJQlM9IiRMSUJTICRCT09TVF9TWVNURU1fTElCIgotCQlleHBvcnQgTElCUwotCi0gICAgICAgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgdGhlIEJvb3N0OjpGaWxlc3lzdGVtIGxpYnJhcnkgaXMgYXZhaWxhYmxlLAotCQkJCQkgICBheF9jdl9ib29zdF9maWxlc3lzdGVtLAotICAgICAgICBbQUNfTEFOR19QVVNIKFtDKytdKQotICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW0AlOkBpbmNsdWRlIDxib29zdC9maWxlc3lzdGVtL3BhdGguaHBwPl1dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW3VzaW5nIG5hbWVzcGFjZSBib29zdDo6ZmlsZXN5c3RlbTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCBteV9wYXRoKCAiZm9vL2Jhci9kYXRhLnR4dCIgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XV0pXSwKLQkJCQkJICAgICAgIGF4X2N2X2Jvb3N0X2ZpbGVzeXN0ZW09eWVzLCBheF9jdl9ib29zdF9maWxlc3lzdGVtPW5vKQotICAgICAgICAgQUNfTEFOR19QT1AoW0MrK10pCi0JCV0pCi0JCWlmIHRlc3QgIngkYXhfY3ZfYm9vc3RfZmlsZXN5c3RlbSIgPSAieHllcyI7IHRoZW4KLQkJCUFDX0RFRklORShIQVZFX0JPT1NUX0ZJTEVTWVNURU0sLFtkZWZpbmUgaWYgdGhlIEJvb3N0OjpGaWxlc3lzdGVtIGxpYnJhcnkgaXMgYXZhaWxhYmxlXSkKLSAgICAgICAgICAgIEJPT1NUTElCRElSPWBlY2hvICRCT09TVF9MREZMQUdTIHwgc2VkIC1lICdzL0A8OkBeXC9AOj5AKi8vJ2AKLSAgICAgICAgICAgIGlmIHRlc3QgIngkYXhfYm9vc3RfdXNlcl9maWxlc3lzdGVtX2xpYiIgPSAieCI7IHRoZW4KLSAgICAgICAgICAgICAgICBmb3IgbGliZXh0ZW5zaW9uIGluIGBscyAtciAkQk9PU1RMSUJESVIvbGliYm9vc3RfZmlsZXN5c3RlbSogMj4vZGV2L251bGwgfCBzZWQgJ3MsLiovbGliLCwnIHwgc2VkICdzLFwuLiosLCdgIDsgZG8KLSAgICAgICAgICAgICAgICAgICAgIGF4X2xpYj0ke2xpYmV4dGVuc2lvbn0KLQkJCQkgICAgQUNfQ0hFQ0tfTElCKCRheF9saWIsIGV4aXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQk9PU1RfRklMRVNZU1RFTV9MSUI9Ii1sJGF4X2xpYiI7IEFDX1NVQlNUKEJPT1NUX0ZJTEVTWVNURU1fTElCKSBsaW5rX2ZpbGVzeXN0ZW09InllcyI7IGJyZWFrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rX2ZpbGVzeXN0ZW09Im5vIl0pCi0JCQkJZG9uZQotICAgICAgICAgICAgICAgIGlmIHRlc3QgIngkbGlua19maWxlc3lzdGVtIiAhPSAieHllcyI7IHRoZW4KLSAgICAgICAgICAgICAgICBmb3IgbGliZXh0ZW5zaW9uIGluIGBscyAtciAkQk9PU1RMSUJESVIvYm9vc3RfZmlsZXN5c3RlbSogMj4vZGV2L251bGwgfCBzZWQgJ3MsLiovLCwnIHwgc2VkIC1lICdzLFwuLiosLCdgIDsgZG8KLSAgICAgICAgICAgICAgICAgICAgIGF4X2xpYj0ke2xpYmV4dGVuc2lvbn0KLQkJCQkgICAgQUNfQ0hFQ0tfTElCKCRheF9saWIsIGV4aXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQk9PU1RfRklMRVNZU1RFTV9MSUI9Ii1sJGF4X2xpYiI7IEFDX1NVQlNUKEJPT1NUX0ZJTEVTWVNURU1fTElCKSBsaW5rX2ZpbGVzeXN0ZW09InllcyI7IGJyZWFrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rX2ZpbGVzeXN0ZW09Im5vIl0pCi0JCQkJZG9uZQotCQkgICAgZmkKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgIGZvciBheF9saWIgaW4gJGF4X2Jvb3N0X3VzZXJfZmlsZXN5c3RlbV9saWIgYm9vc3RfZmlsZXN5c3RlbS0kYXhfYm9vc3RfdXNlcl9maWxlc3lzdGVtX2xpYjsgZG8KLQkJCQkgICAgICBBQ19DSEVDS19MSUIoJGF4X2xpYiwgZXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0JPT1NUX0ZJTEVTWVNURU1fTElCPSItbCRheF9saWIiOyBBQ19TVUJTVChCT09TVF9GSUxFU1lTVEVNX0xJQikgbGlua19maWxlc3lzdGVtPSJ5ZXMiOyBicmVha10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rX2ZpbGVzeXN0ZW09Im5vIl0pCi0gICAgICAgICAgICAgICAgICBkb25lCi0KLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBpZiB0ZXN0ICJ4JGF4X2xpYiIgPSAieCI7IHRoZW4KLSAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoQ291bGQgbm90IGZpbmQgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5ISkKLSAgICAgICAgICAgIGZpCi0JCQlpZiB0ZXN0ICJ4JGxpbmtfZmlsZXN5c3RlbSIgIT0gInh5ZXMiOyB0aGVuCi0JCQkJQUNfTVNHX0VSUk9SKENvdWxkIG5vdCBsaW5rIGFnYWluc3QgJGF4X2xpYiAhKQotCQkJZmkKLQkJZmkKLQotCQlDUFBGTEFHUz0iJENQUEZMQUdTX1NBVkVEIgotCQlMREZMQUdTPSIkTERGTEFHU19TQVZFRCIKLQkJTElCUz0iJExJQlNfU0FWRUQiCi0JZmkKLV0pCmRpZmYgLS1naXQgYS9tNC9heF9ib29zdF9zeXN0ZW0ubTQgYi9tNC9heF9ib29zdF9zeXN0ZW0ubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0YzQ1NTUuLjAwMDAwMDAKLS0tIGEvbTQvYXhfYm9vc3Rfc3lzdGVtLm00CisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfYm9vc3Rfc3lzdGVtLmh0bWwKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jCi0jIFNZTk9QU0lTCi0jCi0jICAgQVhfQk9PU1RfU1lTVEVNCi0jCi0jIERFU0NSSVBUSU9OCi0jCi0jICAgVGVzdCBmb3IgU3lzdGVtIGxpYnJhcnkgZnJvbSB0aGUgQm9vc3QgQysrIGxpYnJhcmllcy4gVGhlIG1hY3JvIHJlcXVpcmVzCi0jICAgYSBwcmVjZWRpbmcgY2FsbCB0byBBWF9CT09TVF9CQVNFLiBGdXJ0aGVyIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0Ci0jICAgPGh0dHA6Ly9yYW5kc3ByaW5nZXIuZGUvYm9vc3QvaW5kZXguaHRtbD4uCi0jCi0jICAgVGhpcyBtYWNybyBjYWxsczoKLSMKLSMgICAgIEFDX1NVQlNUKEJPT1NUX1NZU1RFTV9MSUIpCi0jCi0jICAgQW5kIHNldHM6Ci0jCi0jICAgICBIQVZFX0JPT1NUX1NZU1RFTQotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA4IFRob21hcyBQb3JzY2hiZXJnIDx0aG9tYXNAcmFuZHNwcmluZ2VyLmRlPgotIyAgIENvcHlyaWdodCAoYykgMjAwOCBNaWNoYWVsIFRpbmRhbAotIyAgIENvcHlyaWdodCAoYykgMjAwOCBEYW5pZWwgQ2FzaW1pcm8gPGRhbi5jYXNpbWlyb0BnbWFpbC5jb20+Ci0jCi0jICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCi0jICAgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlCi0jICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotIyAgIHdhcnJhbnR5LgotCi0jc2VyaWFsIDE3Ci0KLUFDX0RFRlVOKFtBWF9CT09TVF9TWVNURU1dLAotWwotCUFDX0FSR19XSVRIKFtib29zdC1zeXN0ZW1dLAotCUFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYm9vc3Qtc3lzdGVtQDw6QD1zcGVjaWFsLWxpYkA6PkBdLAotICAgICAgICAgICAgICAgICAgIFt1c2UgdGhlIFN5c3RlbSBsaWJyYXJ5IGZyb20gYm9vc3QgLSBpdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgY2VydGFpbiBsaWJyYXJ5IGZvciB0aGUgbGlua2VyCi0gICAgICAgICAgICAgICAgICAgICAgICBlLmcuIC0td2l0aC1ib29zdC1zeXN0ZW09Ym9vc3Rfc3lzdGVtLWdjYy1tdCBdKSwKLSAgICAgICAgWwotICAgICAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAibm8iOyB0aGVuCi0JCQl3YW50X2Jvb3N0PSJubyIKLSAgICAgICAgZWxpZiB0ZXN0ICIkd2l0aHZhbCIgPSAieWVzIjsgdGhlbgotICAgICAgICAgICAgd2FudF9ib29zdD0ieWVzIgotICAgICAgICAgICAgYXhfYm9vc3RfdXNlcl9zeXN0ZW1fbGliPSIiCi0gICAgICAgIGVsc2UKLQkJICAgIHdhbnRfYm9vc3Q9InllcyIKLQkJYXhfYm9vc3RfdXNlcl9zeXN0ZW1fbGliPSIkd2l0aHZhbCIKLQkJZmkKLSAgICAgICAgXSwKLSAgICAgICAgW3dhbnRfYm9vc3Q9InllcyJdCi0JKQotCi0JaWYgdGVzdCAieCR3YW50X2Jvb3N0IiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKLSAgICAgICAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSkKLQkJQ1BQRkxBR1NfU0FWRUQ9IiRDUFBGTEFHUyIKLQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkQk9PU1RfQ1BQRkxBR1MiCi0JCWV4cG9ydCBDUFBGTEFHUwotCi0JCUxERkxBR1NfU0FWRUQ9IiRMREZMQUdTIgotCQlMREZMQUdTPSIkTERGTEFHUyAkQk9PU1RfTERGTEFHUyIKLQkJZXhwb3J0IExERkxBR1MKLQotICAgICAgICBBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIHRoZSBCb29zdDo6U3lzdGVtIGxpYnJhcnkgaXMgYXZhaWxhYmxlLAotCQkJCQkgICBheF9jdl9ib29zdF9zeXN0ZW0sCi0gICAgICAgIFtBQ19MQU5HX1BVU0goW0MrK10pCi0JCQkgQ1hYRkxBR1NfU0FWRT0kQ1hYRkxBR1MKLQotCQkJIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tAJTpAaW5jbHVkZSA8Ym9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwPl1dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW2Jvb3N0OjpzeXN0ZW06OnN5c3RlbV9jYXRlZ29yeV1dKV0sCi0gICAgICAgICAgICAgICAgICAgYXhfY3ZfYm9vc3Rfc3lzdGVtPXllcywgYXhfY3ZfYm9vc3Rfc3lzdGVtPW5vKQotCQkJIENYWEZMQUdTPSRDWFhGTEFHU19TQVZFCi0gICAgICAgICAgICAgQUNfTEFOR19QT1AoW0MrK10pCi0JCV0pCi0JCWlmIHRlc3QgIngkYXhfY3ZfYm9vc3Rfc3lzdGVtIiA9ICJ4eWVzIjsgdGhlbgotCQkJQUNfU1VCU1QoQk9PU1RfQ1BQRkxBR1MpCi0KLQkJCUFDX0RFRklORShIQVZFX0JPT1NUX1NZU1RFTSwsW2RlZmluZSBpZiB0aGUgQm9vc3Q6OlN5c3RlbSBsaWJyYXJ5IGlzIGF2YWlsYWJsZV0pCi0gICAgICAgICAgICBCT09TVExJQkRJUj1gZWNobyAkQk9PU1RfTERGTEFHUyB8IHNlZCAtZSAncy9APDpAXlwvQDo+QCovLydgCi0KLQkJCUxERkxBR1NfU0FWRT0kTERGTEFHUwotICAgICAgICAgICAgaWYgdGVzdCAieCRheF9ib29zdF91c2VyX3N5c3RlbV9saWIiID0gIngiOyB0aGVuCi0gICAgICAgICAgICAgICAgZm9yIGxpYmV4dGVuc2lvbiBpbiBgbHMgLXIgJEJPT1NUTElCRElSL2xpYmJvb3N0X3N5c3RlbSogMj4vZGV2L251bGwgfCBzZWQgJ3MsLiovbGliLCwnIHwgc2VkICdzLFwuLiosLCdgIDsgZG8KLSAgICAgICAgICAgICAgICAgICAgIGF4X2xpYj0ke2xpYmV4dGVuc2lvbn0KLQkJCQkgICAgQUNfQ0hFQ0tfTElCKCRheF9saWIsIGV4aXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQk9PU1RfU1lTVEVNX0xJQj0iLWwkYXhfbGliIjsgQUNfU1VCU1QoQk9PU1RfU1lTVEVNX0xJQikgbGlua19zeXN0ZW09InllcyI7IGJyZWFrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rX3N5c3RlbT0ibm8iXSkKLQkJCQlkb25lCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAieCRsaW5rX3N5c3RlbSIgIT0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICAgICAgZm9yIGxpYmV4dGVuc2lvbiBpbiBgbHMgLXIgJEJPT1NUTElCRElSL2Jvb3N0X3N5c3RlbSogMj4vZGV2L251bGwgfCBzZWQgJ3MsLiovLCwnIHwgc2VkIC1lICdzLFwuLiosLCdgIDsgZG8KLSAgICAgICAgICAgICAgICAgICAgIGF4X2xpYj0ke2xpYmV4dGVuc2lvbn0KLQkJCQkgICAgQUNfQ0hFQ0tfTElCKCRheF9saWIsIGV4aXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQk9PU1RfU1lTVEVNX0xJQj0iLWwkYXhfbGliIjsgQUNfU1VCU1QoQk9PU1RfU1lTVEVNX0xJQikgbGlua19zeXN0ZW09InllcyI7IGJyZWFrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rX3N5c3RlbT0ibm8iXSkKLQkJCQlkb25lCi0gICAgICAgICAgICAgICAgZmkKLQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgZm9yIGF4X2xpYiBpbiAkYXhfYm9vc3RfdXNlcl9zeXN0ZW1fbGliIGJvb3N0X3N5c3RlbS0kYXhfYm9vc3RfdXNlcl9zeXN0ZW1fbGliOyBkbwotCQkJCSAgICAgIEFDX0NIRUNLX0xJQigkYXhfbGliLCBleGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQk9PU1RfU1lTVEVNX0xJQj0iLWwkYXhfbGliIjsgQUNfU1VCU1QoQk9PU1RfU1lTVEVNX0xJQikgbGlua19zeXN0ZW09InllcyI7IGJyZWFrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtfc3lzdGVtPSJubyJdKQotICAgICAgICAgICAgICAgICAgZG9uZQotCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgaWYgdGVzdCAieCRheF9saWIiID0gIngiOyB0aGVuCi0gICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKENvdWxkIG5vdCBmaW5kIGEgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSEpCi0gICAgICAgICAgICBmaQotCQkJaWYgdGVzdCAieCRsaW5rX3N5c3RlbSIgPSAieG5vIjsgdGhlbgotCQkJCUFDX01TR19FUlJPUihDb3VsZCBub3QgbGluayBhZ2FpbnN0ICRheF9saWIgISkKLQkJCWZpCi0JCWZpCi0KLQkJQ1BQRkxBR1M9IiRDUFBGTEFHU19TQVZFRCIKLQlMREZMQUdTPSIkTERGTEFHU19TQVZFRCIKLQlmaQotXSkKZGlmZiAtLWdpdCBhL200L2F4X2Jvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsubTQgYi9tNC9heF9ib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrLm00CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTE1ZjU1Li4wMDAwMDAwCi0tLSBhL200L2F4X2Jvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsubTQKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay5odG1sCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jCi0jIFNZTk9QU0lTCi0jCi0jICAgQVhfQk9PU1RfVU5JVF9URVNUX0ZSQU1FV09SSwotIwotIyBERVNDUklQVElPTgotIwotIyAgIFRlc3QgZm9yIFVuaXRfVGVzdF9GcmFtZXdvcmsgbGlicmFyeSBmcm9tIHRoZSBCb29zdCBDKysgbGlicmFyaWVzLiBUaGUKLSMgICBtYWNybyByZXF1aXJlcyBhIHByZWNlZGluZyBjYWxsIHRvIEFYX0JPT1NUX0JBU0UuIEZ1cnRoZXIgZG9jdW1lbnRhdGlvbgotIyAgIGlzIGF2YWlsYWJsZSBhdCA8aHR0cDovL3JhbmRzcHJpbmdlci5kZS9ib29zdC9pbmRleC5odG1sPi4KLSMKLSMgICBUaGlzIG1hY3JvIGNhbGxzOgotIwotIyAgICAgQUNfU1VCU1QoQk9PU1RfVU5JVF9URVNUX0ZSQU1FV09SS19MSUIpCi0jCi0jICAgQW5kIHNldHM6Ci0jCi0jICAgICBIQVZFX0JPT1NUX1VOSVRfVEVTVF9GUkFNRVdPUksKLSMKLSMgTElDRU5TRQotIwotIyAgIENvcHlyaWdodCAoYykgMjAwOCBUaG9tYXMgUG9yc2NoYmVyZyA8dGhvbWFzQHJhbmRzcHJpbmdlci5kZT4KLSMKLSMgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKLSMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSMgICBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsIHdpdGhvdXQgYW55Ci0jICAgd2FycmFudHkuCi0KLSNzZXJpYWwgMTkKLQotQUNfREVGVU4oW0FYX0JPT1NUX1VOSVRfVEVTVF9GUkFNRVdPUktdLAotWwotCUFDX0FSR19XSVRIKFtib29zdC11bml0LXRlc3QtZnJhbWV3b3JrXSwKLQlBU19IRUxQX1NUUklORyhbLS13aXRoLWJvb3N0LXVuaXQtdGVzdC1mcmFtZXdvcmtAPDpAPXNwZWNpYWwtbGliQDo+QF0sCi0gICAgICAgICAgICAgICAgICAgW3VzZSB0aGUgVW5pdF9UZXN0X0ZyYW1ld29yayBsaWJyYXJ5IGZyb20gYm9vc3QgLSBpdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgY2VydGFpbiBsaWJyYXJ5IGZvciB0aGUgbGlua2VyCi0gICAgICAgICAgICAgICAgICAgICAgICBlLmcuIC0td2l0aC1ib29zdC11bml0LXRlc3QtZnJhbWV3b3JrPWJvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmstZ2NjIF0pLAotICAgICAgICBbCi0gICAgICAgIGlmIHRlc3QgIiR3aXRodmFsIiA9ICJubyI7IHRoZW4KLQkJCXdhbnRfYm9vc3Q9Im5vIgotICAgICAgICBlbGlmIHRlc3QgIiR3aXRodmFsIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgICAgICB3YW50X2Jvb3N0PSJ5ZXMiCi0gICAgICAgICAgICBheF9ib29zdF91c2VyX3VuaXRfdGVzdF9mcmFtZXdvcmtfbGliPSIiCi0gICAgICAgIGVsc2UKLQkJICAgIHdhbnRfYm9vc3Q9InllcyIKLQkJYXhfYm9vc3RfdXNlcl91bml0X3Rlc3RfZnJhbWV3b3JrX2xpYj0iJHdpdGh2YWwiCi0JCWZpCi0gICAgICAgIF0sCi0gICAgICAgIFt3YW50X2Jvb3N0PSJ5ZXMiXQotCSkKLQotCWlmIHRlc3QgIngkd2FudF9ib29zdCIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCi0JCUNQUEZMQUdTX1NBVkVEPSIkQ1BQRkxBR1MiCi0JCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJEJPT1NUX0NQUEZMQUdTIgotCQlleHBvcnQgQ1BQRkxBR1MKLQotCQlMREZMQUdTX1NBVkVEPSIkTERGTEFHUyIKLQkJTERGTEFHUz0iJExERkxBR1MgJEJPT1NUX0xERkxBR1MiCi0JCWV4cG9ydCBMREZMQUdTCi0KLSAgICAgICAgQUNfQ0FDSEVfQ0hFQ0sod2hldGhlciB0aGUgQm9vc3Q6OlVuaXRfVGVzdF9GcmFtZXdvcmsgbGlicmFyeSBpcyBhdmFpbGFibGUsCi0JCQkJCSAgIGF4X2N2X2Jvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmssCi0gICAgICAgIFtBQ19MQU5HX1BVU0goW0MrK10pCi0JCQkgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW0AlOkBpbmNsdWRlIDxib29zdC90ZXN0L3VuaXRfdGVzdC5ocHA+XV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW3VzaW5nIGJvb3N0Ojp1bml0X3Rlc3Q6OnRlc3Rfc3VpdGU7Ci0JCQkJCQkJIHRlc3Rfc3VpdGUqIHRlc3Q9IEJPT1NUX1RFU1RfU1VJVEUoICJVbml0IHRlc3QgZXhhbXBsZSAxIiApOyByZXR1cm4gMDtdXSldLAotICAgICAgICAgICAgICAgICAgIGF4X2N2X2Jvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcms9eWVzLCBheF9jdl9ib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrPW5vKQotICAgICAgICAgQUNfTEFOR19QT1AoW0MrK10pCi0JCV0pCi0JCWlmIHRlc3QgIngkYXhfY3ZfYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yayIgPSAieHllcyI7IHRoZW4KLQkJCUFDX0RFRklORShIQVZFX0JPT1NUX1VOSVRfVEVTVF9GUkFNRVdPUkssLFtkZWZpbmUgaWYgdGhlIEJvb3N0OjpVbml0X1Rlc3RfRnJhbWV3b3JrIGxpYnJhcnkgaXMgYXZhaWxhYmxlXSkKLSAgICAgICAgICAgIEJPT1NUTElCRElSPWBlY2hvICRCT09TVF9MREZMQUdTIHwgc2VkIC1lICdzL0A8OkBeXC9AOj5AKi8vJ2AKLQotICAgICAgICAgICAgaWYgdGVzdCAieCRheF9ib29zdF91c2VyX3VuaXRfdGVzdF9mcmFtZXdvcmtfbGliIiA9ICJ4IjsgdGhlbgotCQkJc2F2ZWRfbGRmbGFncz0iJHtMREZMQUdTfSIKLSAgICAgICAgICAgICAgICBmb3IgbW9uaXRvcl9saWJyYXJ5IGluIGBscyAkQk9PU1RMSUJESVIvbGliYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yayouc28qICRCT09TVExJQkRJUi9saWJib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrKi5keWxpYiogJEJPT1NUTElCRElSL2xpYmJvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsqLmEqIDI+L2Rldi9udWxsYCA7IGRvCi0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXIgJG1vbml0b3JfbGlicmFyeSA7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgbGliZXh0ZW5zaW9uPWBlY2hvICRtb25pdG9yX2xpYnJhcnkgfCBzZWQgJ3MsLiovLCwnIHwgc2VkIC1lICdzO15saWJcKGJvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsuKlwpXC5zby4qJDtcMTsnIC1lICdzO15saWJcKGJvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsuKlwpXC5keWxpYi4qJDtcMTsnIC1lICdzO15saWJcKGJvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsuKlwpXC5hLiokO1wxOydgCi0gICAgICAgICAgICAgICAgICAgICAgIGF4X2xpYj0ke2xpYmV4dGVuc2lvbn0KLSAgICAgICAgICAgICAgICAgICAgICAgbGlua191bml0X3Rlc3RfZnJhbWV3b3JrPSJ5ZXMiCi0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgbGlua191bml0X3Rlc3RfZnJhbWV3b3JrPSJubyIKLSAgICAgICAgICAgICAgICAgICAgZmkKLQotCQkJICAgIGlmIHRlc3QgIngkbGlua191bml0X3Rlc3RfZnJhbWV3b3JrIiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgIEJPT1NUX1VOSVRfVEVTVF9GUkFNRVdPUktfTElCPSItbCRheF9saWIiCi0gICAgICAgICAgICAgICAgICAgICAgQUNfU1VCU1QoQk9PU1RfVU5JVF9URVNUX0ZSQU1FV09SS19MSUIpCi0JCQkJCSAgYnJlYWsKLQkJCQkgICAgZmkKLSAgICAgICAgICAgICAgICBkb25lCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAieCRsaW5rX3VuaXRfdGVzdF9mcmFtZXdvcmsiICE9ICJ4eWVzIjsgdGhlbgotICAgICAgICAgICAgICAgIGZvciBsaWJleHRlbnNpb24gaW4gYGxzICRCT09TVExJQkRJUi9ib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrKi5kbGwqICRCT09TVExJQkRJUi9ib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrKi5hKiAyPi9kZXYvbnVsbCAgfCBzZWQgJ3MsLiovLCwnIHwgc2VkIC1lICdzO15cKGJvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsuKlwpXC5kbGwuKiQ7XDE7JyAtZSAnczteXChib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrLipcKVwuYS4qJDtcMTsnYCA7IGRvCi0gICAgICAgICAgICAgICAgICAgICBheF9saWI9JHtsaWJleHRlbnNpb259Ci0JCQkJICAgIEFDX0NIRUNLX0xJQigkYXhfbGliLCBleGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0JPT1NUX1VOSVRfVEVTVF9GUkFNRVdPUktfTElCPSItbCRheF9saWIiOyBBQ19TVUJTVChCT09TVF9VTklUX1RFU1RfRlJBTUVXT1JLX0xJQikgbGlua191bml0X3Rlc3RfZnJhbWV3b3JrPSJ5ZXMiOyBicmVha10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua191bml0X3Rlc3RfZnJhbWV3b3JrPSJubyJdKQotCQkJCWRvbmUKLSAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGxpbmtfdW5pdF90ZXN0X2ZyYW1ld29yaz0ibm8iCi0JCQlzYXZlZF9sZGZsYWdzPSIke0xERkxBR1N9IgotICAgICAgICAgICAgICAgIGZvciBheF9saWIgaW4gYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay0kYXhfYm9vc3RfdXNlcl91bml0X3Rlc3RfZnJhbWV3b3JrX2xpYiAkYXhfYm9vc3RfdXNlcl91bml0X3Rlc3RfZnJhbWV3b3JrX2xpYiA7IGRvCi0gICAgICAgICAgICAgICAgICAgaWYgdGVzdCAieCRsaW5rX3VuaXRfdGVzdF9mcmFtZXdvcmsiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgICAgICBmb3IgdW5pdHRlc3RfbGlicmFyeSBpbiBgbHMgJEJPT1NUTElCRElSL2xpYiR7YXhfbGlifS5zbyogJEJPT1NUTElCRElSL2xpYiR7YXhfbGlifS5hKiAyPi9kZXYvbnVsbGAgOyBkbwotICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXIgJHVuaXR0ZXN0X2xpYnJhcnkgOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgIGxpYmV4dGVuc2lvbj1gZWNobyAkdW5pdHRlc3RfbGlicmFyeSB8IHNlZCAncywuKi8sLCcgfCBzZWQgLWUgJ3M7XmxpYlwoYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay4qXClcLnNvLiokO1wxOycgLWUgJ3M7XmxpYlwoYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay4qXClcLmEqJDtcMTsnYAotICAgICAgICAgICAgICAgICAgICAgICBheF9saWI9JHtsaWJleHRlbnNpb259Ci0gICAgICAgICAgICAgICAgICAgICAgIGxpbmtfdW5pdF90ZXN0X2ZyYW1ld29yaz0ieWVzIgotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgIGxpbmtfdW5pdF90ZXN0X2ZyYW1ld29yaz0ibm8iCi0gICAgICAgICAgICAgICAgICAgIGZpCi0KLQkJCQlpZiB0ZXN0ICJ4JGxpbmtfdW5pdF90ZXN0X2ZyYW1ld29yayIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJPT1NUX1VOSVRfVEVTVF9GUkFNRVdPUktfTElCPSItbCRheF9saWIiCi0gICAgICAgICAgICAgICAgICAgICAgICBBQ19TVUJTVChCT09TVF9VTklUX1RFU1RfRlJBTUVXT1JLX0xJQikKLQkJCQkJICAgIGJyZWFrCi0JCQkJICAgIGZpCi0gICAgICAgICAgICAgICAgICBkb25lCi0gICAgICAgICAgICAgICBkb25lCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgaWYgdGVzdCAieCRheF9saWIiID0gIngiOyB0aGVuCi0gICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKENvdWxkIG5vdCBmaW5kIGEgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSEpCi0gICAgICAgICAgICBmaQotCQkJaWYgdGVzdCAieCRsaW5rX3VuaXRfdGVzdF9mcmFtZXdvcmsiICE9ICJ4eWVzIjsgdGhlbgotCQkJCUFDX01TR19FUlJPUihDb3VsZCBub3QgbGluayBhZ2FpbnN0ICRheF9saWIgISkKLQkJCWZpCi0JCWZpCi0KLQkJQ1BQRkxBR1M9IiRDUFBGTEFHU19TQVZFRCIKLQlMREZMQUdTPSIkTERGTEFHU19TQVZFRCIKLQlmaQotXSkKZGlmZiAtLWdpdCBhL200L2F4X2NoZWNrX29wZW5zc2wubTQgYi9tNC9heF9jaGVja19vcGVuc3NsLm00CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODdjNWE2Li4wMDAwMDAwCi0tLSBhL200L2F4X2NoZWNrX29wZW5zc2wubTQKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NoZWNrX29wZW5zc2wuaHRtbAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMKLSMgU1lOT1BTSVMKLSMKLSMgICBBWF9DSEVDS19PUEVOU1NMKFthY3Rpb24taWYtZm91bmRbLCBhY3Rpb24taWYtbm90LWZvdW5kXV0pCi0jCi0jIERFU0NSSVBUSU9OCi0jCi0jICAgTG9vayBmb3IgT3BlblNTTCBpbiBhIG51bWJlciBvZiBkZWZhdWx0IHNwb3RzLCBvciBpbiBhIHVzZXItc2VsZWN0ZWQKLSMgICBzcG90ICh2aWEgLS13aXRoLW9wZW5zc2wpLiAgU2V0cwotIwotIyAgICAgT1BFTlNTTF9JTkNMVURFUyB0byB0aGUgaW5jbHVkZSBkaXJlY3RpdmVzIHJlcXVpcmVkCi0jICAgICBPUEVOU1NMX0xJQlMgdG8gdGhlIC1sIGRpcmVjdGl2ZXMgcmVxdWlyZWQKLSMgICAgIE9QRU5TU0xfTERGTEFHUyB0byB0aGUgLUwgb3IgLVIgZmxhZ3MgcmVxdWlyZWQKLSMKLSMgICBhbmQgY2FsbHMgQUNUSU9OLUlGLUZPVU5EIG9yIEFDVElPTi1JRi1OT1QtRk9VTkQgYXBwcm9wcmlhdGVseQotIwotIyAgIFRoaXMgbWFjcm8gc2V0cyBPUEVOU1NMX0lOQ0xVREVTIHN1Y2ggdGhhdCBzb3VyY2UgZmlsZXMgc2hvdWxkIHVzZSB0aGUKLSMgICBvcGVuc3NsLyBkaXJlY3RvcnkgaW4gaW5jbHVkZSBkaXJlY3RpdmVzOgotIwotIyAgICAgI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA5LDIwMTAgWm1hbmRhIEluYy4gPGh0dHA6Ly93d3cuem1hbmRhLmNvbS8+Ci0jICAgQ29weXJpZ2h0IChjKSAyMDA5LDIwMTAgRHVzdGluIEouIE1pdGNoZWxsIDxkdXN0aW5Aem1hbmRhLmNvbT4KLSMKLSMgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKLSMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSMgICBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsIHdpdGhvdXQgYW55Ci0jICAgd2FycmFudHkuCi0KLSNzZXJpYWwgOAotCi1BVV9BTElBUyhbQ0hFQ0tfU1NMXSwgW0FYX0NIRUNLX09QRU5TU0xdKQotQUNfREVGVU4oW0FYX0NIRUNLX09QRU5TU0xdLCBbCi0gICAgZm91bmQ9ZmFsc2UKLSAgICBBQ19BUkdfV0lUSChbb3BlbnNzbF0sCi0gICAgICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLW9wZW5zc2w9RElSXSwKLSAgICAgICAgICAgIFtyb290IG9mIHRoZSBPcGVuU1NMIGRpcmVjdG9yeV0pXSwKLSAgICAgICAgWwotICAgICAgICAgICAgY2FzZSAiJHdpdGh2YWwiIGluCi0gICAgICAgICAgICAiIiB8IHkgfCB5ZSB8IHllcyB8IG4gfCBubykKLSAgICAgICAgICAgIEFDX01TR19FUlJPUihbSW52YWxpZCAtLXdpdGgtb3BlbnNzbCB2YWx1ZV0pCi0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqKSBzc2xkaXJzPSIkd2l0aHZhbCIKLSAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgIGVzYWMKLSAgICAgICAgXSwgWwotICAgICAgICAgICAgIyBpZiBwa2ctY29uZmlnIGlzIGluc3RhbGxlZCBhbmQgb3BlbnNzbCBoYXMgaW5zdGFsbGVkIGEgLnBjIGZpbGUsCi0gICAgICAgICAgICAjIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gYW5kIGRvbid0IHNlYXJjaCBzc2xkaXJzCi0gICAgICAgICAgICBBQ19QQVRIX1BST0coW1BLR19DT05GSUddLCBbcGtnLWNvbmZpZ10pCi0gICAgICAgICAgICBpZiB0ZXN0IHgiJFBLR19DT05GSUciICE9IHgiIjsgdGhlbgotICAgICAgICAgICAgICAgIE9QRU5TU0xfTERGTEFHUz1gJFBLR19DT05GSUcgb3BlbnNzbCAtLWxpYnMtb25seS1MIDI+L2Rldi9udWxsYAotICAgICAgICAgICAgICAgIGlmIHRlc3QgJD8gPSAwOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgIE9QRU5TU0xfTElCUz1gJFBLR19DT05GSUcgb3BlbnNzbCAtLWxpYnMtb25seS1sIDI+L2Rldi9udWxsYAotICAgICAgICAgICAgICAgICAgICBPUEVOU1NMX0lOQ0xVREVTPWAkUEtHX0NPTkZJRyBvcGVuc3NsIC0tY2ZsYWdzLW9ubHktSSAyPi9kZXYvbnVsbGAKLSAgICAgICAgICAgICAgICAgICAgZm91bmQ9dHJ1ZQotICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBmaQotCi0gICAgICAgICAgICAjIG5vIHN1Y2ggbHVjazsgdXNlIHNvbWUgZGVmYXVsdCBzc2xkaXJzCi0gICAgICAgICAgICBpZiAhICRmb3VuZDsgdGhlbgotICAgICAgICAgICAgICAgIHNzbGRpcnM9Ii91c3IvbG9jYWwvc3NsIC91c3IvbGliL3NzbCAvdXNyL3NzbCAvdXNyL3BrZyAvdXNyL2xvY2FsIC91c3IiCi0gICAgICAgICAgICBmaQotICAgICAgICBdCi0gICAgICAgICkKLQotCi0gICAgIyBub3RlIHRoYXQgd2UgI2luY2x1ZGUgPG9wZW5zc2wvZm9vLmg+LCBzbyB0aGUgT3BlblNTTCBoZWFkZXJzIGhhdmUgdG8gYmUgaW4KLSAgICAjIGFuICdvcGVuc3NsJyBzdWJkaXJlY3RvcnkKLQotICAgIGlmICEgJGZvdW5kOyB0aGVuCi0gICAgICAgIE9QRU5TU0xfSU5DTFVERVM9Ci0gICAgICAgIGZvciBzc2xkaXIgaW4gJHNzbGRpcnM7IGRvCi0gICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBvcGVuc3NsL3NzbC5oIGluICRzc2xkaXJdKQotICAgICAgICAgICAgaWYgdGVzdCAtZiAiJHNzbGRpci9pbmNsdWRlL29wZW5zc2wvc3NsLmgiOyB0aGVuCi0gICAgICAgICAgICAgICAgT1BFTlNTTF9JTkNMVURFUz0iLUkkc3NsZGlyL2luY2x1ZGUiCi0gICAgICAgICAgICAgICAgT1BFTlNTTF9MREZMQUdTPSItTCRzc2xkaXIvbGliIgotICAgICAgICAgICAgICAgIE9QRU5TU0xfTElCUz0iLWxzc2wgLWxjcnlwdG8iCi0gICAgICAgICAgICAgICAgZm91bmQ9dHJ1ZQotICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0KLSAgICAgICAgIyBpZiB0aGUgZmlsZSB3YXNuJ3QgZm91bmQsIHdlbGwsIGdvIGFoZWFkIGFuZCB0cnkgdGhlIGxpbmsgYW55d2F5IC0tIG1heWJlCi0gICAgICAgICMgaXQgd2lsbCBqdXN0IHdvcmshCi0gICAgZmkKLQotICAgICMgdHJ5IHRoZSBwcmVwcm9jZXNzb3IgYW5kIGxpbmtlciB3aXRoIG91ciBuZXcgZmxhZ3MsCi0gICAgIyBiZWluZyBjYXJlZnVsIG5vdCB0byBwb2xsdXRlIHRoZSBnbG9iYWwgTElCUywgTERGTEFHUywgYW5kIENQUEZMQUdTCi0KLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgY29tcGlsaW5nIGFuZCBsaW5raW5nIGFnYWluc3QgT3BlblNTTCB3b3Jrc10pCi0gICAgZWNobyAiVHJ5aW5nIGxpbmsgd2l0aCBPUEVOU1NMX0xERkxBR1M9JE9QRU5TU0xfTERGTEFHUzsiIFwKLSAgICAgICAgIk9QRU5TU0xfTElCUz0kT1BFTlNTTF9MSUJTOyBPUEVOU1NMX0lOQ0xVREVTPSRPUEVOU1NMX0lOQ0xVREVTIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0KLSAgICBzYXZlX0xJQlM9IiRMSUJTIgotICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0gICAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotICAgIExERkxBR1M9IiRMREZMQUdTICRPUEVOU1NMX0xERkxBR1MiCi0gICAgTElCUz0iJE9QRU5TU0xfTElCUyAkTElCUyIKLSAgICBDUFBGTEFHUz0iJE9QRU5TU0xfSU5DTFVERVMgJENQUEZMQUdTIgotICAgIEFDX0xJTktfSUZFTFNFKAotICAgICAgICBbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD5dLCBbU1NMX25ldyhOVUxMKV0pXSwKLSAgICAgICAgWwotICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICAgICAgICAgICQxCi0gICAgICAgIF0sIFsKLSAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICAgICAgICAgICQyCi0gICAgICAgIF0pCi0gICAgQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgotICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0gICAgTElCUz0iJHNhdmVfTElCUyIKLQotICAgIEFDX1NVQlNUKFtPUEVOU1NMX0lOQ0xVREVTXSkKLSAgICBBQ19TVUJTVChbT1BFTlNTTF9MSUJTXSkKLSAgICBBQ19TVUJTVChbT1BFTlNTTF9MREZMQUdTXSkKLV0pCmRpZmYgLS1naXQgYS9tNC9heF9jeHhfY29tcGlsZV9zdGRjeHhfMTEubTQgYi9tNC9heF9jeHhfY29tcGlsZV9zdGRjeHhfMTEubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNDBhYzEuLjAwMDAwMDAKLS0tIGEvbTQvYXhfY3h4X2NvbXBpbGVfc3RkY3h4XzExLm00CisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY3h4X2NvbXBpbGVfc3RkY3h4XzExLmh0bWwKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIwotIyBTWU5PUFNJUwotIwotIyAgIEFYX0NYWF9DT01QSUxFX1NURENYWF8xMShbZXh0fG5vZXh0XSxbbWFuZGF0b3J5fG9wdGlvbmFsXSkKLSMKLSMgREVTQ1JJUFRJT04KLSMKLSMgICBDaGVjayBmb3IgYmFzZWxpbmUgbGFuZ3VhZ2UgY292ZXJhZ2UgaW4gdGhlIGNvbXBpbGVyIGZvciB0aGUgQysrMTEKLSMgICBzdGFuZGFyZDsgaWYgbmVjZXNzYXJ5LCBhZGQgc3dpdGNoZXMgdG8gQ1hYRkxBR1MgdG8gZW5hYmxlIHN1cHBvcnQuCi0jCi0jICAgVGhlIGZpcnN0IGFyZ3VtZW50LCBpZiBzcGVjaWZpZWQsIGluZGljYXRlcyB3aGV0aGVyIHlvdSBpbnNpc3Qgb24gYW4KLSMgICBleHRlbmRlZCBtb2RlIChlLmcuIC1zdGQ9Z251KysxMSkgb3IgYSBzdHJpY3QgY29uZm9ybWFuY2UgbW9kZSAoZS5nLgotIyAgIC1zdGQ9YysrMTEpLiAgSWYgbmVpdGhlciBpcyBzcGVjaWZpZWQsIHlvdSBnZXQgd2hhdGV2ZXIgd29ya3MsIHdpdGgKLSMgICBwcmVmZXJlbmNlIGZvciBhbiBleHRlbmRlZCBtb2RlLgotIwotIyAgIFRoZSBzZWNvbmQgYXJndW1lbnQsIGlmIHNwZWNpZmllZCAnbWFuZGF0b3J5JyBvciBpZiBsZWZ0IHVuc3BlY2lmaWVkLAotIyAgIGluZGljYXRlcyB0aGF0IGJhc2VsaW5lIEMrKzExIHN1cHBvcnQgaXMgcmVxdWlyZWQgYW5kIHRoYXQgdGhlIG1hY3JvCi0jICAgc2hvdWxkIGVycm9yIG91dCBpZiBubyBtb2RlIHdpdGggdGhhdCBzdXBwb3J0IGlzIGZvdW5kLiAgSWYgc3BlY2lmaWVkCi0jICAgJ29wdGlvbmFsJywgdGhlbiBjb25maWd1cmF0aW9uIHByb2NlZWRzIHJlZ2FyZGxlc3MsIGFmdGVyIGRlZmluaW5nCi0jICAgSEFWRV9DWFgxMSBpZiBhbmQgb25seSBpZiBhIHN1cHBvcnRpbmcgbW9kZSBpcyBmb3VuZC4KLSMKLSMgTElDRU5TRQotIwotIyAgIENvcHlyaWdodCAoYykgMjAwOCBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSMgICBDb3B5cmlnaHQgKGMpIDIwMTIgWmFjayBXZWluYmVyZyA8emFja3dAcGFuaXguY29tPgotIyAgIENvcHlyaWdodCAoYykgMjAxMyBSb3kgU3RvZ25lciA8cm95c3RnbnJAaWNlcy51dGV4YXMuZWR1PgotIwotIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQotIyAgIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywgd2l0aG91dCBhbnkKLSMgICB3YXJyYW50eS4KLQotI3NlcmlhbCAzCi0KLW00X2RlZmluZShbX0FYX0NYWF9DT01QSUxFX1NURENYWF8xMV90ZXN0Ym9keV0sIFsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGNoZWNrCi0gICAgewotICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoaW50KSA8PSBzaXplb2YoVCksICJub3QgYmlnIGVub3VnaCIpOwotICAgIH07Ci0KLSAgICB0eXBlZGVmIGNoZWNrPGNoZWNrPGJvb2w+PiByaWdodF9hbmdsZV9icmFja2V0czsKLQotICAgIGludCBhOwotICAgIGRlY2x0eXBlKGEpIGI7Ci0KLSAgICB0eXBlZGVmIGNoZWNrPGludD4gY2hlY2tfdHlwZTsKLSAgICBjaGVja190eXBlIGM7Ci0gICAgY2hlY2tfdHlwZSYmIGNyID0gc3RhdGljX2Nhc3Q8Y2hlY2tfdHlwZSYmPihjKTsKLQotICAgIGF1dG8gZCA9IGE7Ci1dKQotCi1BQ19ERUZVTihbQVhfQ1hYX0NPTVBJTEVfU1REQ1hYXzExXSwgW2RubAotICBBQ19BUkdfV0lUSChbYysrMTFdLAotICAgIEFTX0hFTFBfU1RSSU5HKAotICAgICAgICBbLS13aXRoLWMrKzExPUA8OkBBUkdAOj5AXSwKLSAgICAgICAgW3VzZSBDKysxMSB3aGVuIGF2YWlsYWJsZSBAPDpAZGVmYXVsdD1ub0A6PkBdCi0gICAgKSwKLSAgICBbCi0gICAgaWYgdGVzdCAiJHdpdGh2YWwiID0gInllcyI7IHRoZW4KLSAgICAgICAgV0FOVF9DWFgxMT0ieWVzIgotICAgIGZpCi0gICAgXSwKLSAgICBbV0FOVF9DWFgxMT0ibm8iXQotICApCi0KLSAgaWYgdGVzdCAieCRXQU5UX0NYWDExIiA9ICJ4eWVzIjsgdGhlbgotICAgIG00X2lmKFskMV0sIFtdLCBbXSwKLSAgICAgICAgICBbJDFdLCBbZXh0XSwgW10sCi0gICAgICAgICAgWyQxXSwgW25vZXh0XSwgW10sCi0gICAgICAgICAgW200X2ZhdGFsKFtpbnZhbGlkIGFyZ3VtZW50IGAkMScgdG8gQVhfQ1hYX0NPTVBJTEVfU1REQ1hYXzExXSldKWRubAotICAgIG00X2lmKFskMl0sIFtdLCBbYXhfY3h4X2NvbXBpbGVfY3h4MTFfcmVxdWlyZWQ9dHJ1ZV0sCi0gICAgICAgICAgWyQyXSwgW21hbmRhdG9yeV0sIFtheF9jeHhfY29tcGlsZV9jeHgxMV9yZXF1aXJlZD10cnVlXSwKLSAgICAgICAgICBbJDJdLCBbb3B0aW9uYWxdLCBbYXhfY3h4X2NvbXBpbGVfY3h4MTFfcmVxdWlyZWQ9ZmFsc2VdLAotICAgICAgICAgIFttNF9mYXRhbChbaW52YWxpZCBzZWNvbmQgYXJndW1lbnQgYCQyJyB0byBBWF9DWFhfQ09NUElMRV9TVERDWFhfMTFdKV0pZG5sCi0gICAgQUNfTEFOR19QVVNIKFtDKytdKWRubAotICAgIGFjX3N1Y2Nlc3M9bm8KLSAgICBBQ19DQUNIRV9DSEVDSyh3aGV0aGVyICRDWFggc3VwcG9ydHMgQysrMTEgZmVhdHVyZXMgYnkgZGVmYXVsdCwKLSAgICBheF9jdl9jeHhfY29tcGlsZV9jeHgxMSwKLSAgICBbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtfQVhfQ1hYX0NPTVBJTEVfU1REQ1hYXzExX3Rlc3Rib2R5XSldLAotICAgICAgW2F4X2N2X2N4eF9jb21waWxlX2N4eDExPXllc10sCi0gICAgICBbYXhfY3ZfY3h4X2NvbXBpbGVfY3h4MTE9bm9dKV0pCi0gICAgaWYgdGVzdCB4JGF4X2N2X2N4eF9jb21waWxlX2N4eDExID0geHllczsgdGhlbgotICAgICAgYWNfc3VjY2Vzcz15ZXMKLSAgICBmaQotICAgIAotICAgIG00X2lmKFskMV0sIFtub2V4dF0sIFtdLCBbZG5sCi0gICAgaWYgdGVzdCB4JGFjX3N1Y2Nlc3MgPSB4bm87IHRoZW4KLSAgICAgIGZvciBzd2l0Y2ggaW4gLXN0ZD1nbnUrKzExIC1zdGQ9Z251KysweDsgZG8KLSAgICAgICAgY2FjaGV2YXI9QVNfVFJfU0goW2F4X2N2X2N4eF9jb21waWxlX2N4eDExXyRzd2l0Y2hdKQotICAgICAgICBBQ19DQUNIRV9DSEVDSyh3aGV0aGVyICRDWFggc3VwcG9ydHMgQysrMTEgZmVhdHVyZXMgd2l0aCAkc3dpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGV2YXIsCi0gICAgICAgICAgW2FjX3NhdmVfQ1hYRkxBR1M9IiRDWFhGTEFHUyIKLSAgICAgICAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAkc3dpdGNoIgotICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW19BWF9DWFhfQ09NUElMRV9TVERDWFhfMTFfdGVzdGJvZHldKV0sCi0gICAgICAgICAgICBbZXZhbCAkY2FjaGV2YXI9eWVzXSwKLSAgICAgICAgICAgIFtldmFsICRjYWNoZXZhcj1ub10pCi0gICAgICAgICAgIENYWEZMQUdTPSIkYWNfc2F2ZV9DWFhGTEFHUyJdKQotICAgICAgICBpZiBldmFsIHRlc3QgeFwkJGNhY2hldmFyID0geHllczsgdGhlbgotICAgICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgJHN3aXRjaCIKLSAgICAgICAgICBhY19zdWNjZXNzPXllcwotICAgICAgICAgIGJyZWFrCi0gICAgICAgIGZpCi0gICAgICBkb25lCi0gICAgZmldKQotICAgIAotICAgIG00X2lmKFskMV0sIFtleHRdLCBbXSwgW2RubAotICAgIGlmIHRlc3QgeCRhY19zdWNjZXNzID0geG5vOyB0aGVuCi0gICAgICBmb3Igc3dpdGNoIGluIC1zdGQ9YysrMTEgLXN0ZD1jKysweDsgZG8KLSAgICAgICAgY2FjaGV2YXI9QVNfVFJfU0goW2F4X2N2X2N4eF9jb21waWxlX2N4eDExXyRzd2l0Y2hdKQotICAgICAgICBBQ19DQUNIRV9DSEVDSyh3aGV0aGVyICRDWFggc3VwcG9ydHMgQysrMTEgZmVhdHVyZXMgd2l0aCAkc3dpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGV2YXIsCi0gICAgICAgICAgW2FjX3NhdmVfQ1hYRkxBR1M9IiRDWFhGTEFHUyIKLSAgICAgICAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAkc3dpdGNoIgotICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW19BWF9DWFhfQ09NUElMRV9TVERDWFhfMTFfdGVzdGJvZHldKV0sCi0gICAgICAgICAgICBbZXZhbCAkY2FjaGV2YXI9eWVzXSwKLSAgICAgICAgICAgIFtldmFsICRjYWNoZXZhcj1ub10pCi0gICAgICAgICAgIENYWEZMQUdTPSIkYWNfc2F2ZV9DWFhGTEFHUyJdKQotICAgICAgICBpZiBldmFsIHRlc3QgeFwkJGNhY2hldmFyID0geHllczsgdGhlbgotICAgICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgJHN3aXRjaCIKLSAgICAgICAgICBhY19zdWNjZXNzPXllcwotICAgICAgICAgIGJyZWFrCi0gICAgICAgIGZpCi0gICAgICBkb25lCi0gICAgZmldKQotICAgIEFDX0xBTkdfUE9QKFtDKytdKQotICAgIGlmIHRlc3QgeCRheF9jeHhfY29tcGlsZV9jeHgxMV9yZXF1aXJlZCA9IHh0cnVlOyB0aGVuCi0gICAgICBpZiB0ZXN0IHgkYWNfc3VjY2VzcyA9IHhubzsgdGhlbgotICAgICAgICBBQ19NU0dfRVJST1IoWyoqKiBBIGNvbXBpbGVyIHdpdGggc3VwcG9ydCBmb3IgQysrMTEgbGFuZ3VhZ2UgZmVhdHVyZXMgaXMgcmVxdWlyZWQuXSkKLSAgICAgIGZpCi0gICAgZWxzZQotICAgICAgaWYgdGVzdCB4JGFjX3N1Y2Nlc3MgPSB4bm87IHRoZW4KLSAgICAgICAgSEFWRV9DWFgxMT0wCi0gICAgICAgIEFDX01TR19OT1RJQ0UoW05vIGNvbXBpbGVyIHdpdGggQysrMTEgc3VwcG9ydCB3YXMgZm91bmRdKQotICAgICAgZWxzZQotICAgICAgICBIQVZFX0NYWDExPTEKLSAgICAgICAgQUNfREVGSU5FKEhBVkVfQ1hYMTEsMSwKLSAgICAgICAgICAgICAgICAgIFtkZWZpbmUgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGJhc2ljIEMrKzExIHN5bnRheF0pCi0gICAgICBmaQotICAgIAotICAgICAgQUNfU1VCU1QoSEFWRV9DWFgxMSkKLSAgICBmaQotICBmaQotXSkKZGlmZiAtLWdpdCBhL200L2F4X2xpYl9jcnlwdG9wcC5tNCBiL200L2F4X2xpYl9jcnlwdG9wcC5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRmNTFmZC4uMDAwMDAwMAotLS0gYS9tNC9heF9saWJfY3J5cHRvcHAubTQKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotIyBTWU5PUFNJUwotIwotIyAgIEFYX0xJQl9DUllQVE9QUChbQUNUSU9OLUlGLUZPVU5EXSxbQUNUSU9OLUlGLU5PVC1GT1VORF0pCi0jCi0jIERFU0NSSVBUSU9OCi0jCi0jICAgVGVzdCBmb3IgdGhlIENyeXB0bysrIGxpYnJhcnkKLSMKLSMgICBJZiBubyBpbnRhbGxhdGlvbiBwcmVmaXggdG8gdGhlIGluc3RhbGxlZCBDcnlwdG8rKyBsaWJyYXJ5IGlzIGdpdmVuIHRoZQotIyAgIG1hY3JvIHNlYXJjaGVzIHVuZGVyIC91c3IsIC91c3IvbG9jYWwsIGFuZCAvb3B0LgotIwotIyAgIFRoaXMgbWFjcm8gY2FsbHM6Ci0jCi0jICAgICBBQ19TVUJTVChDUllQVE9QUF9JTkNMVURFUykKLSMgICAgIEFDX1NVQlNUKENSWVBUT1BQX0xERkxBR1MpCi0jICAgICBBQ19TVUJTVChDUllQVE9QUF9MSUJTKQotIwotIyAgIEFuZCBzZXRzOgotIwotIyAgICAgSEFWRV9DUllQVE9QUAotCi1BQ19ERUZVTihbQVhfTElCX0NSWVBUT1BQXSwKLVsKLSAgICBBQ19BUkdfV0lUSChbY3J5cHRvcHBdLAotICAgICAgICBBU19IRUxQX1NUUklORygKLSAgICAgICAgICAgIFstLXdpdGgtY3J5cHRvcHA9QDw6QEFSR0A6PkBdLAotICAgICAgICAgICAgW3VzZSBDcnlwdG8rKyBsaWJyYXJ5IEA8OkBkZWZhdWx0PXllc0A6PkAsIG9wdGlvbmFsbHkgc3BlY2lmeSB0aGUgcHJlZml4IGZvciB0aGUgbGlicmFyeV0KLSAgICAgICAgKSwKLSAgICAgICAgWwotICAgICAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAibm8iOyB0aGVuCi0gICAgICAgICAgICBXQU5UX0NSWVBUT1BQPSJubyIKLSAgICAgICAgZWxpZiB0ZXN0ICIkd2l0aHZhbCIgPSAieWVzIjsgdGhlbgotICAgICAgICAgICAgV0FOVF9DUllQVE9QUD0ieWVzIgotICAgICAgICAgICAgYWNfY3J5cHRvcHBfcGF0aD0iIgotICAgICAgICBlbHNlCi0gICAgICAgICAgICBXQU5UX0NSWVBUT1BQPSJ5ZXMiCi0gICAgICAgICAgICBhY19jcnlwdG9wcF9wYXRoPSIkd2l0aHZhbCIKLSAgICAgICAgZmkKLSAgICAgICAgXSwKLSAgICAgICAgW1dBTlRfQ1JZUFRPUFA9InllcyJdCi0gICAgKQotCi0gICAgQ1JZUFRPUFBfQ0ZMQUdTPSIiCi0gICAgQ1JZUFRPUFBfTERGTEFHUz0iIgotICAgIENSWVBUT1BQX0xJQlM9IiIKLQotICAgIGlmIHRlc3QgIngkV0FOVF9DUllQVE9QUCIgPSAieHllcyI7IHRoZW4KLQotICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBDcnlwdG8rKyBsaWJyYXJ5XSkKLQotICAgICAgICBhY19jcnlwdG9wcF9oZWFkZXI9ImNyeXB0b3BwL2NyeXB0bGliLmgiCi0gICAgICAgIGFjX2NyeXB0b3BwX2xpYnM9Ii1sY3J5cHRvcHAiCi0KLSAgICAgICAgaWYgdGVzdCAiJGFjX2NyeXB0b3BwX3BhdGgiICE9ICIiOyB0aGVuCi0gICAgICAgICAgICBhY19jcnlwdG9wcF9sZGZsYWdzPSItTCRhY19jcnlwdG9wcF9wYXRoL2xpYiIKLSAgICAgICAgICAgIGFjX2NyeXB0b3BwX2NwcGZsYWdzPSItSSRhY19jcnlwdG9wcF9wYXRoL2luY2x1ZGUiCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZvciBhY19jcnlwdG9wcF9wYXRoX3RtcCBpbiAvdXNyIC91c3IvbG9jYWwgL29wdCA7IGRvCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGFjX2NyeXB0b3BwX3BhdGhfdG1wL2luY2x1ZGUvJGFjX2NyeXB0b3BwX2hlYWRlciIgXAotICAgICAgICAgICAgICAgICAgICAmJiB0ZXN0IC1yICIkYWNfY3J5cHRvcHBfcGF0aF90bXAvaW5jbHVkZS8kYWNfY3J5cHRvcHBfaGVhZGVyIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICBhY19jcnlwdG9wcF9wYXRoPSRhY19jcnlwdG9wcF9wYXRoX3RtcAotICAgICAgICAgICAgICAgICAgICBhY19jcnlwdG9wcF9jcHBmbGFncz0iLUkkYWNfY3J5cHRvcHBfcGF0aF90bXAvaW5jbHVkZSIKLSAgICAgICAgICAgICAgICAgICAgYWNfY3J5cHRvcHBfbGRmbGFncz0iLUwkYWNfY3J5cHRvcHBfcGF0aF90bXAvbGliIgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgZG9uZQotICAgICAgICBmaQotCi0gICAgICAgIENSWVBUT1BQX0lOQ0xVREVTPSIkYWNfY3J5cHRvcHBfY3BwZmxhZ3MiCi0gICAgICAgIENSWVBUT1BQX0xERkxBR1M9IiRhY19jcnlwdG9wcF9sZGZsYWdzIgotICAgICAgICBDUllQVE9QUF9MSUJTPSIkYWNfY3J5cHRvcHBfbGlicyIKLQotICAgICAgICBzYXZlX0xJQlM9IiRMSUJTIgotICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotICAgICAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0KLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgJENSWVBUT1BQX0xERkxBR1MiCi0gICAgICAgIExJQlM9IiRDUllQVE9QUF9MSUJTICRMSUJTIgotICAgICAgICBDUFBGTEFHUz0iJENSWVBUT1BQX0lOQ0xVREVTICRDUFBGTEFHUyIKLSAgICAgICAgQUNfTEFOR19QVVNIKEMrKykKLSAgICAgICAgQUNfTElOS19JRkVMU0UoCi0gICAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVkZSA8Y3J5cHRvcHAvY3J5cHRsaWIuaD5dLCBbXSldLAotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICAgICAgICAgICAgICAgJDEKLSAgICAgICAgICAgIF0sIFsKLSAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgICAgICAgICAgICAgJDIKLSAgICAgICAgICAgIF0pCi0gICAgICAgIEFDX0xBTkdfUE9QKFtDKytdKQotICAgICAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCi0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0gICAgICAgIExJQlM9IiRzYXZlX0xJQlMiCi0KLSAgICAgICAgQUNfU1VCU1QoQ1JZUFRPUFBfSU5DTFVERVMpCi0gICAgICAgIEFDX1NVQlNUKENSWVBUT1BQX0xERkxBR1MpCi0gICAgICAgIEFDX1NVQlNUKENSWVBUT1BQX0xJQlMpCi0KLSAgICAgICAgQUNfREVGSU5FKFtIQVZFX0NSWVBUT1BQXSwgW10sIFtIYXZlIHRoZSBDcnlwdG8rKyBsaWJyYXJ5XSkKLSAgICBmaQotXSkKZGlmZiAtLWdpdCBhL200L2F4X2xpYl9zcWxpdGUzLm00IGIvbTQvYXhfbGliX3NxbGl0ZTMubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NzE3MTYuLjAwMDAwMDAKLS0tIGEvbTQvYXhfbGliX3NxbGl0ZTMubTQKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9saWJfc3FsaXRlMy5odG1sCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIwotIyBTWU5PUFNJUwotIwotIyAgIEFYX0xJQl9TUUxJVEUzKFtNSU5JTVVNLVZFUlNJT05dKQotIwotIyBERVNDUklQVElPTgotIwotIyAgIFRlc3QgZm9yIHRoZSBTUUxpdGUgMyBsaWJyYXJ5IG9mIGEgcGFydGljdWxhciB2ZXJzaW9uIChvciBuZXdlcikKLSMKLSMgICBUaGlzIG1hY3JvIHRha2VzIG9ubHkgb25lIG9wdGlvbmFsIGFyZ3VtZW50LCByZXF1aXJlZCB2ZXJzaW9uIG9mIFNRTGl0ZQotIyAgIDMgbGlicmFyeS4gSWYgcmVxdWlyZWQgdmVyc2lvbiBpcyBub3QgcGFzc2VkLCAzLjAuMCBpcyB1c2VkIGluIHRoZSB0ZXN0Ci0jICAgb2YgZXhpc3RhbmNlIG9mIFNRTGl0ZSAzLgotIwotIyAgIElmIG5vIGludGFsbGF0aW9uIHByZWZpeCB0byB0aGUgaW5zdGFsbGVkIFNRTGl0ZSBsaWJyYXJ5IGlzIGdpdmVuIHRoZQotIyAgIG1hY3JvIHNlYXJjaGVzIHVuZGVyIC91c3IsIC91c3IvbG9jYWwsIGFuZCAvb3B0LgotIwotIyAgIFRoaXMgbWFjcm8gY2FsbHM6Ci0jCi0jICAgICBBQ19TVUJTVChTUUxJVEUzX0NGTEFHUykKLSMgICAgIEFDX1NVQlNUKFNRTElURTNfTERGTEFHUykKLSMgICAgIEFDX1NVQlNUKFNRTElURTNfVkVSU0lPTikKLSMKLSMgICBBbmQgc2V0czoKLSMKLSMgICAgIEhBVkVfU1FMSVRFMwotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA4IE1hdGV1c3ogTG9za290IDxtYXRldXN6QGxvc2tvdC5uZXQ+Ci0jCi0jICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCi0jICAgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlCi0jICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotIyAgIHdhcnJhbnR5LgotCi0jc2VyaWFsIDE0Ci0KLUFDX0RFRlVOKFtBWF9MSUJfU1FMSVRFM10sCi1bCi0gICAgQUNfQVJHX1dJVEgoW3NxbGl0ZTNdLAotICAgICAgICBBU19IRUxQX1NUUklORygKLSAgICAgICAgICAgIFstLXdpdGgtc3FsaXRlMz1APDpAQVJHQDo+QF0sCi0gICAgICAgICAgICBbdXNlIFNRTGl0ZSAzIGxpYnJhcnkgQDw6QGRlZmF1bHQ9eWVzQDo+QCwgb3B0aW9uYWxseSBzcGVjaWZ5IHRoZSBwcmVmaXggZm9yIHNxbGl0ZTMgbGlicmFyeV0KLSAgICAgICAgKSwKLSAgICAgICAgWwotICAgICAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAibm8iOyB0aGVuCi0gICAgICAgICAgICBXQU5UX1NRTElURTM9Im5vIgotICAgICAgICBlbGlmIHRlc3QgIiR3aXRodmFsIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgICAgICBXQU5UX1NRTElURTM9InllcyIKLSAgICAgICAgICAgIGFjX3NxbGl0ZTNfcGF0aD0iIgotICAgICAgICBlbHNlCi0gICAgICAgICAgICBXQU5UX1NRTElURTM9InllcyIKLSAgICAgICAgICAgIGFjX3NxbGl0ZTNfcGF0aD0iJHdpdGh2YWwiCi0gICAgICAgIGZpCi0gICAgICAgIF0sCi0gICAgICAgIFtXQU5UX1NRTElURTM9InllcyJdCi0gICAgKQotCi0gICAgU1FMSVRFM19DRkxBR1M9IiIKLSAgICBTUUxJVEUzX0xERkxBR1M9IiIKLSAgICBTUUxJVEUzX1ZFUlNJT049IiIKLQotICAgIGlmIHRlc3QgIngkV0FOVF9TUUxJVEUzIiA9ICJ4eWVzIjsgdGhlbgotCi0gICAgICAgIGFjX3NxbGl0ZTNfaGVhZGVyPSJzcWxpdGUzLmgiCi0KLSAgICAgICAgc3FsaXRlM192ZXJzaW9uX3JlcT1pZmVsc2UoWyQxXSwgW10sIFszLjAuMF0sIFskMV0pCi0gICAgICAgIHNxbGl0ZTNfdmVyc2lvbl9yZXFfc2hvcnRlbj1gZXhwciAkc3FsaXRlM192ZXJzaW9uX3JlcSA6ICdcKFtbMC05XV0qXC5bWzAtOV1dKlwpJ2AKLSAgICAgICAgc3FsaXRlM192ZXJzaW9uX3JlcV9tYWpvcj1gZXhwciAkc3FsaXRlM192ZXJzaW9uX3JlcSA6ICdcKFtbMC05XV0qXCknYAotICAgICAgICBzcWxpdGUzX3ZlcnNpb25fcmVxX21pbm9yPWBleHByICRzcWxpdGUzX3ZlcnNpb25fcmVxIDogJ1tbMC05XV0qXC5cKFtbMC05XV0qXCknYAotICAgICAgICBzcWxpdGUzX3ZlcnNpb25fcmVxX21pY3JvPWBleHByICRzcWxpdGUzX3ZlcnNpb25fcmVxIDogJ1tbMC05XV0qXC5bWzAtOV1dKlwuXChbWzAtOV1dKlwpJ2AKLSAgICAgICAgaWYgdGVzdCAieCRzcWxpdGUzX3ZlcnNpb25fcmVxX21pY3JvIiA9ICJ4IiA7IHRoZW4KLSAgICAgICAgICAgIHNxbGl0ZTNfdmVyc2lvbl9yZXFfbWljcm89IjAiCi0gICAgICAgIGZpCi0KLSAgICAgICAgc3FsaXRlM192ZXJzaW9uX3JlcV9udW1iZXI9YGV4cHIgJHNxbGl0ZTNfdmVyc2lvbl9yZXFfbWFqb3IgXCogMTAwMDAwMCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwrICRzcWxpdGUzX3ZlcnNpb25fcmVxX21pbm9yIFwqIDEwMDAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcKyAkc3FsaXRlM192ZXJzaW9uX3JlcV9taWNyb2AKLQotICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBTUUxpdGUzIGxpYnJhcnkgPj0gJHNxbGl0ZTNfdmVyc2lvbl9yZXFdKQotCi0gICAgICAgIGlmIHRlc3QgIiRhY19zcWxpdGUzX3BhdGgiICE9ICIiOyB0aGVuCi0gICAgICAgICAgICBhY19zcWxpdGUzX2xkZmxhZ3M9Ii1MJGFjX3NxbGl0ZTNfcGF0aC9saWIiCi0gICAgICAgICAgICBhY19zcWxpdGUzX2NwcGZsYWdzPSItSSRhY19zcWxpdGUzX3BhdGgvaW5jbHVkZSIKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9yIGFjX3NxbGl0ZTNfcGF0aF90bXAgaW4gL3VzciAvdXNyL2xvY2FsIC9vcHQgOyBkbwotICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRhY19zcWxpdGUzX3BhdGhfdG1wL2luY2x1ZGUvJGFjX3NxbGl0ZTNfaGVhZGVyIiBcCi0gICAgICAgICAgICAgICAgICAgICYmIHRlc3QgLXIgIiRhY19zcWxpdGUzX3BhdGhfdG1wL2luY2x1ZGUvJGFjX3NxbGl0ZTNfaGVhZGVyIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICBhY19zcWxpdGUzX3BhdGg9JGFjX3NxbGl0ZTNfcGF0aF90bXAKLSAgICAgICAgICAgICAgICAgICAgYWNfc3FsaXRlM19jcHBmbGFncz0iLUkkYWNfc3FsaXRlM19wYXRoX3RtcC9pbmNsdWRlIgotICAgICAgICAgICAgICAgICAgICBhY19zcWxpdGUzX2xkZmxhZ3M9Ii1MJGFjX3NxbGl0ZTNfcGF0aF90bXAvbGliIgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgZG9uZQotICAgICAgICBmaQotCi0gICAgICAgIGFjX3NxbGl0ZTNfbGRmbGFncz0iJGFjX3NxbGl0ZTNfbGRmbGFncyAtbHNxbGl0ZTMiCi0KLSAgICAgICAgc2F2ZWRfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkYWNfc3FsaXRlM19jcHBmbGFncyIKLQotICAgICAgICBBQ19MQU5HX1BVU0goQykKLSAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1tAJTpAaW5jbHVkZSA8c3FsaXRlMy5oPl1dLAotICAgICAgICAgICAgICAgIFtbCi0jaWYgKFNRTElURV9WRVJTSU9OX05VTUJFUiA+PSAkc3FsaXRlM192ZXJzaW9uX3JlcV9udW1iZXIpCi0vKiBFdmVyeXRoaW5nIGlzIG9rYXkgKi8KLSNlbHNlCi0jICBlcnJvciBTUUxpdGUgdmVyc2lvbiBpcyB0b28gb2xkCi0jZW5kaWYKLSAgICAgICAgICAgICAgICBdXQotICAgICAgICAgICAgKQotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICAgICAgICAgICBzdWNjZXNzPSJ5ZXMiCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgWwotICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbbm90IGZvdW5kXSkKLSAgICAgICAgICAgIHN1Y2Nlc3M9Im5vIgotICAgICAgICAgICAgXQotICAgICAgICApCi0gICAgICAgIEFDX0xBTkdfUE9QKEMpCi0KLSAgICAgICAgQ1BQRkxBR1M9IiRzYXZlZF9DUFBGTEFHUyIKLQotICAgICAgICBpZiB0ZXN0ICIkc3VjY2VzcyIgPSAieWVzIjsgdGhlbgotCi0gICAgICAgICAgICBTUUxJVEUzX0NGTEFHUz0iJGFjX3NxbGl0ZTNfY3BwZmxhZ3MiCi0gICAgICAgICAgICBTUUxJVEUzX0xERkxBR1M9IiRhY19zcWxpdGUzX2xkZmxhZ3MiCi0KLSAgICAgICAgICAgIGFjX3NxbGl0ZTNfaGVhZGVyX3BhdGg9IiRhY19zcWxpdGUzX3BhdGgvaW5jbHVkZS8kYWNfc3FsaXRlM19oZWFkZXIiCi0KLSAgICAgICAgICAgIGRubCBSZXRyaWV2ZSBTUUxpdGUgcmVsZWFzZSB2ZXJzaW9uCi0gICAgICAgICAgICBpZiB0ZXN0ICJ4JGFjX3NxbGl0ZTNfaGVhZGVyX3BhdGgiICE9ICJ4IjsgdGhlbgotICAgICAgICAgICAgICAgIGFjX3NxbGl0ZTNfdmVyc2lvbj1gY2F0ICRhY19zcWxpdGUzX2hlYWRlcl9wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgfCBncmVwICcjZGVmaW5lLipTUUxJVEVfVkVSU0lPTi4qXCInIHwgc2VkIC1lICdzLy4qICIvLycgXAotICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgJ3MvIi8vJ2AKLSAgICAgICAgICAgICAgICBpZiB0ZXN0ICRhY19zcWxpdGUzX3ZlcnNpb24gIT0gIiI7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgU1FMSVRFM19WRVJTSU9OPSRhY19zcWxpdGUzX3ZlcnNpb24KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIEFDX01TR19XQVJOKFtDYW5ub3QgZmluZCBTUUxJVEVfVkVSU0lPTiBtYWNybyBpbiBzcWxpdGUzLmggaGVhZGVyIHRvIHJldHJpZXZlIFNRTGl0ZSB2ZXJzaW9uIV0pCi0gICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGZpCi0KLSAgICAgICAgICAgIEFDX1NVQlNUKFNRTElURTNfQ0ZMQUdTKQotICAgICAgICAgICAgQUNfU1VCU1QoU1FMSVRFM19MREZMQUdTKQotICAgICAgICAgICAgQUNfU1VCU1QoU1FMSVRFM19WRVJTSU9OKQotICAgICAgICAgICAgQUNfREVGSU5FKFtIQVZFX1NRTElURTNdLCBbXSwgW0hhdmUgdGhlIFNRTElURTMgbGlicmFyeV0pCi0gICAgICAgIGZpCi0gICAgZmkKLV0pCmRpZmYgLS1naXQgYS9tNC9heF9wcmVmaXhfY29uZmlnX2gubTQgYi9tNC9heF9wcmVmaXhfY29uZmlnX2gubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYTM5MDYuLjAwMDAwMDAKLS0tIGEvbTQvYXhfcHJlZml4X2NvbmZpZ19oLm00CisrKyAvZGV2L251bGwKQEAgLTEsMjA5ICswLDAgQEAKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X3ByZWZpeF9jb25maWdfaC5odG1sCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIwotIyBTWU5PUFNJUwotIwotIyAgIEFYX1BSRUZJWF9DT05GSUdfSCBbKE9VVFBVVC1IRUFERVIgWyxQUkVGSVggWyxPUklHLUhFQURFUl1dKV0KLSMKLSMgREVTQ1JJUFRJT04KLSMKLSMgICBUaGlzIGlzIGEgbmV3IHZhcmlhbnQgZnJvbSBhY19wcmVmaXhfY29uZmlnXyB0aGlzIG9uZSB3aWxsIHVzZSBhCi0jICAgbG93ZXJjYXNlLXByZWZpeCBpZiB0aGUgY29uZmlnLWRlZmluZSB3YXMgc3RhcnRpbmcgd2l0aCBhCi0jICAgbG93ZXJjYXNlLWNoYXIsIGUuZy4gIiNkZWZpbmUgY29uc3QiLCAiI2RlZmluZSByZXN0cmljdCIsIG9yICIjZGVmaW5lCi0jICAgb2ZmX3QiLCAoYW5kIHRoaXMgb25lIGNhbiBsaXZlIGluIGFub3RoZXIgZGlyZWN0b3J5LCBlLmcuCi0jICAgdGVzdHBrZy9jb25maWcuaCB0aGVyZWZvcmUgSSBkZWNpZGVkIHRvIG1vdmUgdGhlIG91dHB1dC1oZWFkZXIgdG8gYmUgdGhlCi0jICAgZmlyc3QgYXJnKQotIwotIyAgIHRha2VzIHRoZSB1c3VhbCBjb25maWcuaCBnZW5lcmF0ZWQgaGVhZGVyIGZpbGU7IGxvb2tzIGZvciBlYWNoIG9mIHRoZQotIyAgIGdlbmVyYXRlZCAiI2RlZmluZSBTT01FREVGIiBsaW5lcywgYW5kIHByZWZpeGVzIHRoZSBkZWZpbmVkIG5hbWUgKGllLgotIyAgIG1ha2VzIGl0ICIjZGVmaW5lIFBSRUZJWF9TT01FREVGIi4gVGhlIHJlc3VsdCBpcyB3cml0dGVuIHRvIHRoZSBvdXRwdXQKLSMgICBjb25maWcuaGVhZGVyIGZpbGUuIFRoZSBQUkVGSVggaXMgY29udmVydGVkIHRvIHVwcGVyY2FzZSBmb3IgdGhlCi0jICAgY29udmVyc2lvbnMuCi0jCi0jICAgRGVmYXVsdHM6Ci0jCi0jICAgICBPVVRQVVQtSEVBREVSID0gJFBBQ0tBR0UtY29uZmlnLmgKLSMgICAgIFBSRUZJWCA9ICRQQUNLQUdFCi0jICAgICBPUklHLUhFQURFUiwgZnJvbSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIwotIyAgIFlvdXIgY29uZmlndXJlLmFjIHNjcmlwdCBzaG91bGQgY29udGFpbiBib3RoIG1hY3JvcyBpbiB0aGlzIG9yZGVyLCBhbmQKLSMgICB1bmxpa2UgdGhlIGVhcmxpZXIgdmFyaWF0aW9ucyBvZiB0aGlzIHByZWZpeC1tYWNybyBpdCBpcyBva2F5IHRvIHBsYWNlCi0jICAgdGhlIEFYX1BSRUZJWF9DT05GSUdfSCBjYWxsIGJlZm9yZSB0aGUgQUNfT1VUUFVUIGludm9rYXRpb24uCi0jCi0jICAgRXhhbXBsZToKLSMKLSMgICAgIEFDX0lOSVQoY29uZmlnLmguaW4pICAgICAgICAjIGNvbmZpZy5oLmluIGFzIGNyZWF0ZWQgYnkgImF1dG9oZWFkZXIiCi0jICAgICBBTV9JTklUX0FVVE9NQUtFKHRlc3Rwa2csIDAuMS4xKSAgICAjIG1ha2VzICN1bmRlZiBWRVJTSU9OIGFuZCBQQUNLQUdFCi0jICAgICBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKSAgICAgICAgICAjIHByZXAgY29uZmlnLmggZnJvbSBjb25maWcuaC5pbgotIyAgICAgQVhfUFJFRklYX0NPTkZJR19IKG15bGliL19jb25maWcuaCkgIyBwcmVwIG15bGliL19jb25maWcuaCBmcm9tIGl0Li4KLSMgICAgIEFDX01FTU9SWV9IICAgICAgICAgICAgICAgICAgICAgICAgICMgbWFrZXMgIiN1bmRlZiBORUVEX01FTU9SWV9IIgotIyAgICAgQUNfQ19DT05TVF9IICAgICAgICAgICAgICAgICAgICAgICAgIyBtYWtlcyAiI3VuZGVmIGNvbnN0IgotIyAgICAgQUNfT1VUUFVUKE1ha2VmaWxlKSAgICAgICAgICAgICAgICAgIyBjcmVhdGVzIHRoZSAiY29uZmlnLmgiIG5vdwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQgYWxzbyBteWxpYi9fY29uZmlnLmgKLSMKLSMgICBpZiB0aGUgYXJndW1lbnQgdG8gQVhfUFJFRklYX0NPTkZJR19IIHdvdWxkIGhhdmUgYmVlbiBvbWl0dGVkIHRoZW4gdGhlCi0jICAgZGVmYXVsdCBvdXRwdXRmaWxlIHdvdWxkIGhhdmUgYmVlbiBjYWxsZWQgc2ltcGx5ICJ0ZXN0cGtnLWNvbmZpZy5oIiwgYnV0Ci0jICAgZXZlbiB1bmRlciB0aGUgbmFtZSAibXlsaWIvX2NvbmZpZy5oIiBpdCBjb250YWlucyBwcmVmaXgtZGVmaW5lcyBsaWtlCi0jCi0jICAgICAjaWZuZGVmIFRFU1RQS0dfVkVSU0lPTgotIyAgICAgI2RlZmluZSBURVNUUEtHX1ZFUlNJT04gIjAuMS4xIgotIyAgICAgI2VuZGlmCi0jICAgICAjaWZuZGVmIFRFU1RQS0dfTkVFRF9NRU1PUllfSAotIyAgICAgI2RlZmluZSBURVNUUEtHX05FRURfTUVNT1JZX0ggMQotIyAgICAgI2VuZGlmCi0jICAgICAjaWZuZGVmIF90ZXN0cGtnX2NvbnN0Ci0jICAgICAjZGVmaW5lIF90ZXN0cGtnX2NvbnN0IF9jb25zdAotIyAgICAgI2VuZGlmCi0jCi0jICAgYW5kIHRoaXMgIm15bGliL19jb25maWcuaCIgY2FuIGJlIGluc3RhbGxlZCBhbG9uZyB3aXRoIG90aGVyCi0jICAgaGVhZGVyLWZpbGVzLCB3aGljaCBpcyBtb3N0IGNvbnZlbmllbnQgd2hlbiBjcmVhdGluZyBhIHNoYXJlZCBsaWJyYXJ5Ci0jICAgKHRoYXQgaGFzIHNvbWUgaGVhZGVycykgd2hlcmUgc29tZSBmdW5jdGlvbmFsaXR5IGlzIGRlcGVuZGVudCBvbiB0aGUKLSMgICBPUy1mZWF0dXJlcyBkZXRlY3RlZCBhdCBjb21waWxlLXRpbWUuIE5vIG5lZWQgdG8gaW52ZW50IHNvbWUKLSMgICAibXlsaWItY29uZmRlZnMuaC5pbiIgbWFudWFsbHkuIDotKQotIwotIyAgIE5vdGUgdGhhdCBzb21lIEFDX0RFRklORXMgdGhhdCBlbmQgdXAgaW4gdGhlIGNvbmZpZy5oIGZpbGUgYXJlIGFjdHVhbGx5Ci0jICAgc2VsZi1yZWZlcmVudGlhbCAtIGUuZy4gQUNfQ19JTkxJTkUsIEFDX0NfQ09OU1QsIGFuZCB0aGUgQUNfVFlQRV9PRkZfVAotIyAgIHNheSB0aGF0IHRoZXkgIndpbGwgZGVmaW5lIGlubGluZXxjb25zdHxvZmZfdCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IGRvCi0jICAgaXQgYnkgaXRzZWxmIi4gWW91IG1pZ2h0IHdhbnQgdG8gY2xlYW4gdXAgYWJvdXQgdGhlc2UgLSBjb25zaWRlciBhbgotIyAgIGV4dHJhIG15bGliL2NvbmYuaCB0aGF0IHJlYWRzIHNvbWV0aGluZyBsaWtlOgotIwotIyAgICAgI2luY2x1ZGUgPG15bGliL19jb25maWcuaD4KLSMgICAgICNpZm5kZWYgX3Rlc3Rwa2dfY29uc3QKLSMgICAgICNkZWZpbmUgX3Rlc3Rwa2dfY29uc3QgY29uc3QKLSMgICAgICNlbmRpZgotIwotIyAgIGFuZCB0aGVuIHN0YXJ0IHVzaW5nIF90ZXN0cGtnX2NvbnN0IGluIHRoZSBoZWFkZXIgZmlsZXMuIFRoYXQgaXMgYWxzbyBhCi0jICAgZ29vZCB0aGluZyB0byBkaWZmZXJlbnRpYXRlIHdoZXRoZXIgc29tZSBsaWJyYXJ5LXVzZXIgaGFzIHN0YXJ0aW5nIHRvCi0jICAgdGFrZSB1cCB3aXRoIGEgZGlmZmVyZW50IGNvbXBpbGVyLCBzbyBwZXJoYXBzIGl0IGNvdWxkIHJlYWQgc29tZXRoaW5nCi0jICAgbGlrZSB0aGlzOgotIwotIyAgICAgI2lmZGVmIF9NU0NfVkVSCi0jICAgICAjaW5jbHVkZSA8bXlsaWIvX21zdmMuaD4KLSMgICAgICNlbHNlCi0jICAgICAjaW5jbHVkZSA8bXlsaWIvX2NvbmZpZy5oPgotIyAgICAgI2VuZGlmCi0jICAgICAjaWZuZGVmIF90ZXN0cGtnX2NvbnN0Ci0jICAgICAjZGVmaW5lIF90ZXN0cGtnX2NvbnN0IGNvbnN0Ci0jICAgICAjZW5kaWYKLSMKLSMgTElDRU5TRQotIwotIyAgIENvcHlyaWdodCAoYykgMjAwOCBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgotIyAgIENvcHlyaWdodCAoYykgMjAwOCBNYXJ0ZW4gU3ZhbnRlc3NvbgotIyAgIENvcHlyaWdodCAoYykgMjAwOCBHZXJhbGQgUG9pbnQgPEdlcmFsZC5Qb2ludEBsYWJyaS5mcj4KLSMKLSMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKLSMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCi0jICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0jCi0jICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKLSMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQotIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKLSMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCi0jICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCi0jICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgotIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgotIwotIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgotIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKLSMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCi0jICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCi0KLSNzZXJpYWwgMTEKLQotQUNfREVGVU4oW0FYX1BSRUZJWF9DT05GSUdfSF0sW2RubAotQUNfUFJFUkVRKFsyLjYyXSkKLUFDX0JFRk9SRShbQUNfQ09ORklHX0hFQURFUlNdLFskMF0pZG5sCi1BQ19DT05GSUdfQ09NTUFORFMoW2lmZWxzZSgkMSwsJFBBQ0tBR0UtY29uZmlnLmgsJDEpXSxbZG5sCi1BU19WQVJfUFVTSERFRihbX09VVF0sW2FjX3ByZWZpeF9jb25mX09VVF0pZG5sCi1BU19WQVJfUFVTSERFRihbX0RFRl0sW2FjX3ByZWZpeF9jb25mX0RFRl0pZG5sCi1BU19WQVJfUFVTSERFRihbX1BLR10sW2FjX3ByZWZpeF9jb25mX1BLR10pZG5sCi1BU19WQVJfUFVTSERFRihbX0xPV10sW2FjX3ByZWZpeF9jb25mX0xPV10pZG5sCi1BU19WQVJfUFVTSERFRihbX1VQUF0sW2FjX3ByZWZpeF9jb25mX1VQUF0pZG5sCi1BU19WQVJfUFVTSERFRihbX0lOUF0sW2FjX3ByZWZpeF9jb25mX0lOUF0pZG5sCi1tNF9wdXNoZGVmKFtfc2NyaXB0XSxbY29uZnRlc3QucHJlZml4XSlkbmwKLW00X3B1c2hkZWYoW19zeW1ib2xdLFttNF9jcl9MZXR0ZXJzW11tNF9jcl9kaWdpdHNbXV9dKWRubAotX09VVD1gZWNobyBpZmVsc2UoJDEsICwgJFBBQ0tBR0UtY29uZmlnLmgsICQxKWAKLV9ERUY9YGVjaG8gXyRfT1VUIHwgc2VkIC1lICJ5Om00X2NyX2xldHRlcnM6bTRfY3JfTEVUVEVSU1tdOiIgLWUgInMvQDw6QF5tNF9jcl9MZXR0ZXJzQDo+QC9fL2ciYAotX1BLRz1gZWNobyBpZmVsc2UoJDIsICwgJFBBQ0tBR0UsICQyKWAKLV9MT1c9YGVjaG8gXyRfUEtHIHwgc2VkIC1lICJ5Om00X2NyX0xFVFRFUlMtOm00X2NyX2xldHRlcnNbXV86ImAKLV9VUFA9YGVjaG8gJF9QS0cgfCBzZWQgLWUgInk6bTRfY3JfbGV0dGVycy06bTRfY3JfTEVUVEVSU1tdXzoiICAtZSAiL15APDpAbTRfY3JfZGlnaXRzQDo+QC9zL14vXy8iYAotX0lOUD1gZWNobyAiaWZlbHNlKCQzLCwsJDMpIiB8IHNlZCAtZSAncy8gKi8vJ2AKLWlmIHRlc3QgIi4kX0lOUCIgPSAiLiI7IHRoZW4KLSAgIGZvciBhY19maWxlIGluIDogJENPTkZJR19IRUFERVJTOyBkbyB0ZXN0ICJfJGFjX2ZpbGUiID0gXzogJiYgY29udGludWUKLSAgICAgY2FzZSAiJGFjX2ZpbGUiIGluCi0gICAgICAgICouaCkgX0lOUD0kYWNfZmlsZSA7OwotICAgICAgICAqKQotICAgICBlc2FjCi0gICAgIHRlc3QgIi4kX0lOUCIgIT0gIi4iICYmIGJyZWFrCi0gICBkb25lCi1maQotaWYgdGVzdCAiLiRfSU5QIiA9ICIuIjsgdGhlbgotICAgY2FzZSAiJF9PVVQiIGluCi0gICAgICAqLyopIF9JTlA9YGJhc2VuYW1lICIkX09VVCJgCi0gICAgICA7OwotICAgICAgKi0qKSBfSU5QPWBlY2hvICIkX09VVCIgfCBzZWQgLWUgInMvQDw6QF9zeW1ib2xAOj5AKi0vLyJgCi0gICAgICA7OwotICAgICAgKikgX0lOUD1jb25maWcuaAotICAgICAgOzsKLSAgIGVzYWMKLWZpCi1pZiB0ZXN0IC16ICIkX1BLRyIgOyB0aGVuCi0gICBBQ19NU0dfRVJST1IoW25vIHByZWZpeCBmb3IgX1BSRUZJWF9QS0dfQ09ORklHX0hdKQotZWxzZQotICBpZiB0ZXN0ICEgLWYgIiRfSU5QIiA7IHRoZW4gaWYgdGVzdCAtZiAiJHNyY2Rpci8kX0lOUCIgOyB0aGVuCi0gICAgIF9JTlA9IiRzcmNkaXIvJF9JTlAiCi0gIGZpIGZpCi0gIEFDX01TR19OT1RJQ0UoY3JlYXRpbmcgJF9PVVQgLSBwcmVmaXggJF9VUFAgZm9yICRfSU5QIGRlZmluZXMpCi0gIGlmIHRlc3QgLWYgJF9JTlAgOyB0aGVuCi0gICAgQVNfRUNITyhbInMvXkAlOkB1bmRlZiAgKlxcKEA8OkBtNF9jcl9MRVRURVJTW11fQDo+QFxcKS9AJTpAdW5kZWYgJF9VUFAiIl9cXDEvIl0pID4gX3NjcmlwdAotICAgIEFTX0VDSE8oWyJzL15AJTpAdW5kZWYgICpcXChAPDpAbTRfY3JfbGV0dGVyc0A6PkBcXCkvQCU6QHVuZGVmICRfTE9XIiJfXFwxLyJdKSA+PiBfc2NyaXB0Ci0gICAgQVNfRUNITyhbInMvXkAlOkBkZWZbXWluZSAgKlxcKEA8OkBtNF9jcl9MRVRURVJTW11fQDo+QEA8OkBfc3ltYm9sQDo+QCpcXClcXCguKlxcKS9AJTpAaWZuZGVmICRfVVBQIiJfXFwxXFwiXSkgPj4gX3NjcmlwdAotICAgIEFTX0VDSE8oWyJAJTpAZGVmW11pbmUgJF9VUFAiIl9cXDFcXDJcXCJdKSA+PiBfc2NyaXB0Ci0gICAgQVNfRUNITyhbIkAlOkBlbmRpZi8iXSkgPj4gX3NjcmlwdAotICAgIEFTX0VDSE8oWyJzL15AJTpAZGVmW11pbmUgICpcXChAPDpAbTRfY3JfbGV0dGVyc0A6PkBAPDpAX3N5bWJvbEA6PkAqXFwpXFwoLipcXCkvQCU6QGlmbmRlZiAkX0xPVyIiX1xcMVxcIl0pID4+IF9zY3JpcHQKLSAgICBBU19FQ0hPKFsiQCU6QGRlZmluZSAkX0xPVyIiX1xcMVxcMlxcIl0pID4+IF9zY3JpcHQKLSAgICBBU19FQ0hPKFsiQCU6QGVuZGlmLyJdKSA+PiBfc2NyaXB0Ci0gICAgIyBub3cgZXhlY3V0aW5nIF9zY3JpcHQgb24gX0RFRiBpbnB1dCB0byBjcmVhdGUgX09VVCBvdXRwdXQgZmlsZQotICAgIGVjaG8gIkAlOkBpZm5kZWYgJF9ERUYiICAgICAgPiR0bXAvcGNvbmZpZy5oCi0gICAgZWNobyAiQCU6QGRlZltdaW5lICRfREVGIDEiID4+JHRtcC9wY29uZmlnLmgKLSAgICBlY2hvICcgJyA+PiR0bXAvcGNvbmZpZy5oCi0gICAgZWNobyAvJyonICRfT1VULiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBhdCBlbmQgb2YgY29uZmlndXJlLiAnKicvID4+JHRtcC9wY29uZmlnLmgKLQotICAgIHNlZCAtZiBfc2NyaXB0ICRfSU5QID4+JHRtcC9wY29uZmlnLmgKLSAgICBlY2hvICcgJyA+PiR0bXAvcGNvbmZpZy5oCi0gICAgZWNobyAnLyogb25jZTonICRfREVGICcqLycgPj4kdG1wL3Bjb25maWcuaAotICAgIGVjaG8gIkAlOkBlbmRpZiIgPj4kdG1wL3Bjb25maWcuaAotICAgIGlmIGNtcCAtcyAkX09VVCAkdG1wL3Bjb25maWcuaCAyPi9kZXYvbnVsbDsgdGhlbgotICAgICAgQUNfTVNHX05PVElDRShbJF9PVVQgaXMgdW5jaGFuZ2VkXSkKLSAgICBlbHNlCi0gICAgICBhY19kaXI9YEFTX0RJUk5BTUUoWyIkX09VVCJdKWAKLSAgICAgIEFTX01LRElSX1AoWyIkYWNfZGlyIl0pCi0gICAgICBybSAtZiAiJF9PVVQiCi0gICAgICBtdiAkdG1wL3Bjb25maWcuaCAiJF9PVVQiCi0gICAgZmkKLSAgICBjcCBfc2NyaXB0IF9jb25maWdzLnNlZAotICBlbHNlCi0gICAgQUNfTVNHX0VSUk9SKFtpbnB1dCBmaWxlICRfSU5QIGRvZXMgbm90IGV4aXN0IC0gc2tpcCBnZW5lcmF0aW5nICRfT1VUXSkKLSAgZmkKLSAgcm0gLWYgY29uZnRlc3QuKgotZmkKLW00X3BvcGRlZihbX3N5bWJvbF0pZG5sCi1tNF9wb3BkZWYoW19zY3JpcHRdKWRubAotQVNfVkFSX1BPUERFRihbX0lOUF0pZG5sCi1BU19WQVJfUE9QREVGKFtfVVBQXSlkbmwKLUFTX1ZBUl9QT1BERUYoW19MT1ddKWRubAotQVNfVkFSX1BPUERFRihbX1BLR10pZG5sCi1BU19WQVJfUE9QREVGKFtfREVGXSlkbmwKLUFTX1ZBUl9QT1BERUYoW19PVVRdKWRubAotXSxbUEFDS0FHRT0iJFBBQ0tBR0UiXSldKQpkaWZmIC0tZ2l0IGEvbTQvYXhfcHJvZ19kb3h5Z2VuLm00IGIvbTQvYXhfcHJvZ19kb3h5Z2VuLm00CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGIyMmIwLi4wMDAwMDAwCi0tLSBhL200L2F4X3Byb2dfZG94eWdlbi5tNAorKysgL2Rldi9udWxsCkBAIC0xLDUzMiArMCwwIEBACi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X3Byb2dfZG94eWdlbi5odG1sCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIwotIyBTWU5PUFNJUwotIwotIyAgIERYX0lOSVRfRE9YWUdFTihQUk9KRUNULU5BTUUsIERPWFlGSUxFLVBBVEgsIFtPVVRQVVQtRElSXSkKLSMgICBEWF9ET1hZR0VOX0ZFQVRVUkUoT058T0ZGKQotIyAgIERYX0RPVF9GRUFUVVJFKE9OfE9GRikKLSMgICBEWF9IVE1MX0ZFQVRVUkUoT058T0ZGKQotIyAgIERYX0NITV9GRUFUVVJFKE9OfE9GRikKLSMgICBEWF9DSElfRkVBVFVSRShPTnxPRkYpCi0jICAgRFhfTUFOX0ZFQVRVUkUoT058T0ZGKQotIyAgIERYX1JURl9GRUFUVVJFKE9OfE9GRikKLSMgICBEWF9YTUxfRkVBVFVSRShPTnxPRkYpCi0jICAgRFhfUERGX0ZFQVRVUkUoT058T0ZGKQotIyAgIERYX1BTX0ZFQVRVUkUoT058T0ZGKQotIwotIyBERVNDUklQVElPTgotIwotIyAgIFRoZSBEWF8qX0ZFQVRVUkUgbWFjcm9zIGNvbnRyb2wgdGhlIGRlZmF1bHQgc2V0dGluZyBmb3IgdGhlIGdpdmVuCi0jICAgRG94eWdlbiBmZWF0dXJlLiBTdXBwb3J0ZWQgZmVhdHVyZXMgYXJlICdET1hZR0VOJyBpdHNlbGYsICdET1QnIGZvcgotIyAgIGdlbmVyYXRpbmcgZ3JhcGhpY3MsICdIVE1MJyBmb3IgcGxhaW4gSFRNTCwgJ0NITScgZm9yIGNvbXByZXNzZWQgSFRNTAotIyAgIGhlbHAgKGZvciBNUyB1c2VycyksICdDSEknIGZvciBnZW5lcmF0aW5nIGEgc2VwZXJhdGUgLmNoaSBmaWxlIGJ5IHRoZQotIyAgIC5jaG0gZmlsZSwgYW5kICdNQU4nLCAnUlRGJywgJ1hNTCcsICdQREYnIGFuZCAnUFMnIGZvciB0aGUgYXBwcm9wcmlhdGUKLSMgICBvdXRwdXQgZm9ybWF0cy4gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIERPWFlHRU5fUEFQRVJfU0laRSBtYXkgYmUKLSMgICBzcGVjaWZpZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgJ2E0d2lkZScgcGFwZXIgc2l6ZS4KLSMKLSMgICBCeSBkZWZhdWx0LCBIVE1MLCBQREYgYW5kIFBTIGRvY3VtZW50YXRpb24gaXMgZ2VuZXJhdGVkIGFzIHRoaXMgc2VlbXMgdG8KLSMgICBiZSB0aGUgbW9zdCBwb3B1bGFyIGFuZCBwb3J0YWJsZSBjb21iaW5hdGlvbi4gTUFOIHBhZ2VzIGNyZWF0ZWQgYnkKLSMgICBEb3h5Z2VuIGFyZSB1c3VhbGx5IHByb2JsZW1hdGljLCB0aG91Z2ggYnkgcGlja2luZyBhbiBhcHByb3ByaWF0ZSBzdWJzZXQKLSMgICBhbmQgZG9pbmcgc29tZSBtYXNzYWdpbmcgdGhleSBtaWdodCBiZSBiZXR0ZXIgdGhhbiBub3RoaW5nLiBDSE0gYW5kIFJURgotIyAgIGFyZSBzcGVjaWZpYyBmb3IgTVMgKG5vdGUgdGhhdCB5b3UgY2FuJ3QgZ2VuZXJhdGUgYm90aCBIVE1MIGFuZCBDSE0gYXQKLSMgICB0aGUgc2FtZSB0aW1lKS4gVGhlIFhNTCBpcyByYXRoZXIgdXNlbGVzcyB1bmxlc3MgeW91IGFwcGx5IHNwZWNpYWxpemVkCi0jICAgcG9zdC1wcm9jZXNzaW5nIHRvIGl0LgotIwotIyAgIFRoZSBtYWNyb3MgbWFpbmx5IGNvbnRyb2wgdGhlIGRlZmF1bHQgc3RhdGUgb2YgdGhlIGZlYXR1cmUuIFRoZSB1c2UgY2FuCi0jICAgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYnkgc3BlY2lmeWluZyAtLWVuYWJsZSBvciAtLWRpc2FibGUuIFRoZSBtYWNyb3MKLSMgICBlbnN1cmUgdGhhdCBjb250cmFkaWN0b3J5IGZsYWdzIGFyZSBub3QgZ2l2ZW4gKGUuZy4sCi0jICAgLS1lbmFibGUtZG94eWdlbi1odG1sIGFuZCAtLWVuYWJsZS1kb3h5Z2VuLWNobSwKLSMgICAtLWVuYWJsZS1kb3h5Z2VuLWFueXRoaW5nIHdpdGggLS1kaXNhYmxlLWRveHlnZW4sIGV0Yy4pIEZpbmFsbHksIGVhY2gKLSMgICBmZWF0dXJlIHdpbGwgYmUgYXV0b21hdGljYWxseSBkaXNhYmxlZCAod2l0aCBhIHdhcm5pbmcpIGlmIHRoZSByZXF1aXJlZAotIyAgIHByb2dyYW1zIGFyZSBtaXNzaW5nLgotIwotIyAgIE9uY2UgYWxsIHRoZSBmZWF0dXJlIGRlZmF1bHRzIGhhdmUgYmVlbiBzcGVjaWZpZWQsIGNhbGwgRFhfSU5JVF9ET1hZR0VOCi0jICAgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6IGEgb25lLXdvcmQgbmFtZSBmb3IgdGhlIHByb2plY3QgZm9yIHVzZQotIyAgIGFzIGEgZmlsZW5hbWUgYmFzZSBldGMuLCBhbiBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZpbGUgbmFtZSAodGhlCi0jICAgZGVmYXVsdCBpcyAnRG94eWZpbGUnLCB0aGUgc2FtZSBhcyBEb3h5Z2VuJ3MgZGVmYXVsdCksIGFuZCBhbiBvcHRpb25hbAotIyAgIG91dHB1dCBkaXJlY3RvcnkgbmFtZSAodGhlIGRlZmF1bHQgaXMgJ2RveHlnZW4tZG9jJykuCi0jCi0jICAgQXV0b21ha2UgU3VwcG9ydAotIwotIyAgIFRoZSBmb2xsb3dpbmcgaXMgYSB0ZW1wbGF0ZSBhbWluY2x1ZGUuYW0gZmlsZSBmb3IgdXNlIHdpdGggQXV0b21ha2UuCi0jICAgTWFrZSB0YXJnZXRzIGFuZCB2YXJpYWJsZXMgdmFsdWVzIGFyZSBjb250cm9sbGVkIGJ5IHRoZSB2YXJpb3VzCi0jICAgRFhfQ09ORF8qIGNvbmRpdGlvbmFscyBzZXQgYnkgYXV0b2NvbmYuCi0jCi0jICAgVGhlIHByb3ZpZGVkIHRhcmdldHMgYXJlOgotIwotIyAgICAgZG94eWdlbi1kb2M6IEdlbmVyYXRlIGFsbCBkb3h5Z2VuIGRvY3VtZW50YXRpb24uCi0jCi0jICAgICBkb3h5Z2VuLXJ1bjogUnVuIGRveHlnZW4sIHdoaWNoIHdpbGwgZ2VuZXJhdGUgc29tZSBvZiB0aGUKLSMgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uIChIVE1MLCBDSE0sIENISSwgTUFOLCBSVEYsIFhNTCkKLSMgICAgICAgICAgICAgICAgICBidXQgd2lsbCBub3QgZG8gdGhlIHBvc3QgcHJvY2Vzc2luZyByZXF1aXJlZAotIyAgICAgICAgICAgICAgICAgIGZvciB0aGUgcmVzdCBvZiBpdCAoUFMsIFBERiwgYW5kIHNvbWUgTUFOKS4KLSMKLSMgICAgIGRveHlnZW4tbWFuOiBSZW5hbWUgc29tZSBkb3h5Z2VuIGdlbmVyYXRlZCBtYW4gcGFnZXMuCi0jCi0jICAgICBkb3h5Z2VuLXBzOiAgR2VuZXJhdGUgZG94eWdlbiBQb3N0U2NyaXB0IGRvY3VtZW50YXRpb24uCi0jCi0jICAgICBkb3h5Z2VuLXBkZjogR2VuZXJhdGUgZG94eWdlbiBQREYgZG9jdW1lbnRhdGlvbi4KLSMKLSMgICBOb3RlIHRoYXQgYnkgZGVmYXVsdCB0aGVzZSBhcmUgbm90IGludGVncmF0ZWQgaW50byB0aGUgYXV0b21ha2UgdGFyZ2V0cy4KLSMgICBJZiBkb3h5Z2VuIGlzIHVzZWQgdG8gZ2VuZXJhdGUgbWFuIHBhZ2VzLCB5b3UgY2FuIGFjaGlldmUgdGhpcwotIyAgIGludGVncmF0aW9uIGJ5IHNldHRpbmcgbWFuM19NQU5TIHRvIHRoZSBsaXN0IG9mIG1hbiBwYWdlcyBnZW5lcmF0ZWQgYW5kCi0jICAgdGhlbiBhZGRpbmcgdGhlIGRlcGVuZGVuY3k6Ci0jCi0jICAgICAkKG1hbjNfTUFOUyk6IGRveHlnZW4tZG9jCi0jCi0jICAgVGhpcyB3aWxsIGNhdXNlIG1ha2UgdG8gcnVuIGRveHlnZW4gYW5kIGdlbmVyYXRlIGFsbCB0aGUgZG9jdW1lbnRhdGlvbi4KLSMKLSMgICBUaGUgZm9sbG93aW5nIHZhcmlhYmxlIGlzIGludGVuZGVkIGZvciB1c2UgaW4gTWFrZWZpbGUuYW06Ci0jCi0jICAgICBEWF9DTEVBTkZJTEVTID0gZXZlcnl0aGluZyB0byBjbGVhbi4KLSMKLSMgICBUaGVuIGFkZCB0aGlzIHZhcmlhYmxlIHRvIE1PU1RMWUNMRUFORklMRVMuCi0jCi0jICAgICAtLS0tLSBiZWdpbiBhbWluY2x1ZGUuYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jICAgICAjIyBGb3JtYXQtaW5kZXBlbmRlbnQgRG94eWdlbiBydWxlcy4gIyMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIwotIyAgICAgaWYgRFhfQ09ORF9kb2MKLSMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMgICAgICMjIFJ1bGVzIHNwZWNpZmljIGZvciBIVE1MIG91dHB1dC4gIyMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMKLSMgICAgIGlmIERYX0NPTkRfaHRtbAotIwotIyAgICAgRFhfQ0xFQU5fSFRNTCA9IEBEWF9ET0NESVJAL2h0bWwKLSMKLSMgICAgIGVuZGlmIERYX0NPTkRfaHRtbAotIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jICAgICAjIyBSdWxlcyBzcGVjaWZpYyBmb3IgQ0hNIG91dHB1dC4gIyMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIwotIyAgICAgaWYgRFhfQ09ORF9jaG0KLSMKLSMgICAgIERYX0NMRUFOX0NITSA9IEBEWF9ET0NESVJAL2NobQotIwotIyAgICAgaWYgRFhfQ09ORF9jaGkKLSMKLSMgICAgIERYX0NMRUFOX0NISSA9IEBEWF9ET0NESVJAL0BQQUNLQUdFQC5jaGkKLSMKLSMgICAgIGVuZGlmIERYX0NPTkRfY2hpCi0jCi0jICAgICBlbmRpZiBEWF9DT05EX2NobQotIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jICAgICAjIyBSdWxlcyBzcGVjaWZpYyBmb3IgTUFOIG91dHB1dC4gIyMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIwotIyAgICAgaWYgRFhfQ09ORF9tYW4KLSMKLSMgICAgIERYX0NMRUFOX01BTiA9IEBEWF9ET0NESVJAL21hbgotIwotIyAgICAgZW5kaWYgRFhfQ09ORF9tYW4KLSMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyAgICAgIyMgUnVsZXMgc3BlY2lmaWMgZm9yIFJURiBvdXRwdXQuICMjCi0jICAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMKLSMgICAgIGlmIERYX0NPTkRfcnRmCi0jCi0jICAgICBEWF9DTEVBTl9SVEYgPSBARFhfRE9DRElSQC9ydGYKLSMKLSMgICAgIGVuZGlmIERYX0NPTkRfcnRmCi0jCi0jICAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMgICAgICMjIFJ1bGVzIHNwZWNpZmljIGZvciBYTUwgb3V0cHV0LiAjIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jCi0jICAgICBpZiBEWF9DT05EX3htbAotIwotIyAgICAgRFhfQ0xFQU5fWE1MID0gQERYX0RPQ0RJUkAveG1sCi0jCi0jICAgICBlbmRpZiBEWF9DT05EX3htbAotIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMgICAgICMjIFJ1bGVzIHNwZWNpZmljIGZvciBQUyBvdXRwdXQuICMjCi0jICAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIwotIyAgICAgaWYgRFhfQ09ORF9wcwotIwotIyAgICAgRFhfQ0xFQU5fUFMgPSBARFhfRE9DRElSQC9AUEFDS0FHRUAucHMKLSMKLSMgICAgIERYX1BTX0dPQUwgPSBkb3h5Z2VuLXBzCi0jCi0jICAgICBkb3h5Z2VuLXBzOiBARFhfRE9DRElSQC9AUEFDS0FHRUAucHMKLSMKLSMgICAgIEBEWF9ET0NESVJAL0BQQUNLQUdFQC5wczogQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnRhZwotIyAgICAgICAgIGNkIEBEWF9ET0NESVJAL2xhdGV4OyBcCi0jICAgICAgICAgcm0gLWYgKi5hdXggKi50b2MgKi5pZHggKi5pbmQgKi5pbGcgKi5sb2cgKi5vdXQ7IFwKLSMgICAgICAgICAkKERYX0xBVEVYKSByZWZtYW4udGV4OyBcCi0jICAgICAgICAgJChNQUtFSU5ERVhfUEFUSCkgcmVmbWFuLmlkeDsgXAotIyAgICAgICAgICQoRFhfTEFURVgpIHJlZm1hbi50ZXg7IFwKLSMgICAgICAgICBjb3VudGRvd249NTsgXAotIyAgICAgICAgIHdoaWxlICQoRFhfRUdSRVApICdSZXJ1biAoTGFUZVh8dG8gZ2V0IGNyb3NzLXJlZmVyZW5jZXMgcmlnaHQpJyBcCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmbWFuLmxvZyA+IC9kZXYvbnVsbCAyPiYxIFwKLSMgICAgICAgICAgICAmJiB0ZXN0ICQkY291bnRkb3duIC1ndCAwOyBkbyBcCi0jICAgICAgICAgICAgICQoRFhfTEFURVgpIHJlZm1hbi50ZXg7IFwKLSMgICAgICAgICAgICAgY291bnRkb3duPWBleHByICQkY291bnRkb3duIC0gMWA7IFwKLSMgICAgICAgICBkb25lOyBcCi0jICAgICAgICAgJChEWF9EVklQUykgLW8gLi4vQFBBQ0tBR0VALnBzIHJlZm1hbi5kdmkKLSMKLSMgICAgIGVuZGlmIERYX0NPTkRfcHMKLSMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyAgICAgIyMgUnVsZXMgc3BlY2lmaWMgZm9yIFBERiBvdXRwdXQuICMjCi0jICAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMKLSMgICAgIGlmIERYX0NPTkRfcGRmCi0jCi0jICAgICBEWF9DTEVBTl9QREYgPSBARFhfRE9DRElSQC9AUEFDS0FHRUAucGRmCi0jCi0jICAgICBEWF9QREZfR09BTCA9IGRveHlnZW4tcGRmCi0jCi0jICAgICBkb3h5Z2VuLXBkZjogQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnBkZgotIwotIyAgICAgQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnBkZjogQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnRhZwotIyAgICAgICAgIGNkIEBEWF9ET0NESVJAL2xhdGV4OyBcCi0jICAgICAgICAgcm0gLWYgKi5hdXggKi50b2MgKi5pZHggKi5pbmQgKi5pbGcgKi5sb2cgKi5vdXQ7IFwKLSMgICAgICAgICAkKERYX1BERkxBVEVYKSByZWZtYW4udGV4OyBcCi0jICAgICAgICAgJChEWF9NQUtFSU5ERVgpIHJlZm1hbi5pZHg7IFwKLSMgICAgICAgICAkKERYX1BERkxBVEVYKSByZWZtYW4udGV4OyBcCi0jICAgICAgICAgY291bnRkb3duPTU7IFwKLSMgICAgICAgICB3aGlsZSAkKERYX0VHUkVQKSAnUmVydW4gKExhVGVYfHRvIGdldCBjcm9zcy1yZWZlcmVuY2VzIHJpZ2h0KScgXAotIyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZm1hbi5sb2cgPiAvZGV2L251bGwgMj4mMSBcCi0jICAgICAgICAgICAgJiYgdGVzdCAkJGNvdW50ZG93biAtZ3QgMDsgZG8gXAotIyAgICAgICAgICAgICAkKERYX1BERkxBVEVYKSByZWZtYW4udGV4OyBcCi0jICAgICAgICAgICAgIGNvdW50ZG93bj1gZXhwciAkJGNvdW50ZG93biAtIDFgOyBcCi0jICAgICAgICAgZG9uZTsgXAotIyAgICAgICAgIG12IHJlZm1hbi5wZGYgLi4vQFBBQ0tBR0VALnBkZgotIwotIyAgICAgZW5kaWYgRFhfQ09ORF9wZGYKLSMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMgICAgICMjIFJ1bGVzIHNwZWNpZmljIGZvciBMYVRlWCAoc2hhcmVkIGZvciBQUyBhbmQgUERGKS4gIyMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMKLSMgICAgIGlmIERYX0NPTkRfbGF0ZXgKLSMKLSMgICAgIERYX0NMRUFOX0xBVEVYID0gQERYX0RPQ0RJUkAvbGF0ZXgKLSMKLSMgICAgIGVuZGlmIERYX0NPTkRfbGF0ZXgKLSMKLSMgICAgIC5QSE9OWTogZG94eWdlbi1ydW4gZG94eWdlbi1kb2MgJChEWF9QU19HT0FMKSAkKERYX1BERl9HT0FMKQotIwotIyAgICAgLklOVEVSTUVESUFURTogZG94eWdlbi1ydW4gJChEWF9QU19HT0FMKSAkKERYX1BERl9HT0FMKQotIwotIyAgICAgZG94eWdlbi1ydW46IEBEWF9ET0NESVJAL0BQQUNLQUdFQC50YWcKLSMKLSMgICAgIGRveHlnZW4tZG9jOiBkb3h5Z2VuLXJ1biAkKERYX1BTX0dPQUwpICQoRFhfUERGX0dPQUwpCi0jCi0jICAgICBARFhfRE9DRElSQC9AUEFDS0FHRUAudGFnOiAkKERYX0NPTkZJRykgJChwa2dpbmNsdWRlX0hFQURFUlMpCi0jICAgICAgICAgcm0gLXJmIEBEWF9ET0NESVJACi0jICAgICAgICAgJChEWF9FTlYpICQoRFhfRE9YWUdFTikgJChzcmNkaXIpLyQoRFhfQ09ORklHKQotIwotIyAgICAgRFhfQ0xFQU5GSUxFUyA9IFwKLSMgICAgICAgICBARFhfRE9DRElSQC9AUEFDS0FHRUAudGFnIFwKLSMgICAgICAgICAtciBcCi0jICAgICAgICAgJChEWF9DTEVBTl9IVE1MKSBcCi0jICAgICAgICAgJChEWF9DTEVBTl9DSE0pIFwKLSMgICAgICAgICAkKERYX0NMRUFOX0NISSkgXAotIyAgICAgICAgICQoRFhfQ0xFQU5fTUFOKSBcCi0jICAgICAgICAgJChEWF9DTEVBTl9SVEYpIFwKLSMgICAgICAgICAkKERYX0NMRUFOX1hNTCkgXAotIyAgICAgICAgICQoRFhfQ0xFQU5fUFMpIFwKLSMgICAgICAgICAkKERYX0NMRUFOX1BERikgXAotIyAgICAgICAgICQoRFhfQ0xFQU5fTEFURVgpCi0jCi0jICAgICBlbmRpZiBEWF9DT05EX2RvYwotIwotIyAgICAgLS0tLS0gZW5kIGFtaW5jbHVkZS5hbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLSMgTElDRU5TRQotIwotIyAgIENvcHlyaWdodCAoYykgMjAwOSBPcmVuIEJlbi1LaWtpIDxvcmVuQGJlbi1raWtpLm9yZz4KLSMKLSMgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKLSMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSMgICBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsIHdpdGhvdXQgYW55Ci0jICAgd2FycmFudHkuCi0KLSNzZXJpYWwgMTIKLQotIyMgLS0tLS0tLS0tLSMjCi0jIyBEZWZhdWx0cy4gIyMKLSMjIC0tLS0tLS0tLS0jIwotCi1EWF9FTlY9IiIKLUFDX0RFRlVOKFtEWF9GRUFUVVJFX2RvY10sICBPTikKLUFDX0RFRlVOKFtEWF9GRUFUVVJFX2RvdF0sICBPRkYpCi1BQ19ERUZVTihbRFhfRkVBVFVSRV9tYW5dLCAgT0ZGKQotQUNfREVGVU4oW0RYX0ZFQVRVUkVfaHRtbF0sIE9OKQotQUNfREVGVU4oW0RYX0ZFQVRVUkVfY2htXSwgIE9GRikKLUFDX0RFRlVOKFtEWF9GRUFUVVJFX2NoaV0sICBPRkYpCi1BQ19ERUZVTihbRFhfRkVBVFVSRV9ydGZdLCAgT0ZGKQotQUNfREVGVU4oW0RYX0ZFQVRVUkVfeG1sXSwgIE9GRikKLUFDX0RFRlVOKFtEWF9GRUFUVVJFX3BkZl0sICBPTikKLUFDX0RFRlVOKFtEWF9GRUFUVVJFX3BzXSwgICBPTikKLQotIyMgLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBQcml2YXRlIG1hY3Jvcy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLSAjIwotCi0jIERYX0VOVl9BUFBFTkQoVkFSSUFCTEUsIFZBTFVFKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQXBwZW5kIFZBUklBQkxFPSJWQUxVRSIgdG8gRFhfRU5WIGZvciBpbnZva2luZyBkb3h5Z2VuLgotQUNfREVGVU4oW0RYX0VOVl9BUFBFTkRdLCBbQUNfU1VCU1QoW0RYX0VOVl0sIFsiJERYX0VOViAkMT0nJDInIl0pXSkKLQotIyBEWF9ESVJOQU1FX0VYUFIKLSMgLS0tLS0tLS0tLS0tLS0tCi0jIEV4cGFuZCBpbnRvIGEgc2hlbGwgZXhwcmVzc2lvbiBwcmludHMgdGhlIGRpcmVjdG9yeSBwYXJ0IG9mIGEgcGF0aC4KLUFDX0RFRlVOKFtEWF9ESVJOQU1FX0VYUFJdLAotICAgICAgICAgW1tleHByICIuJDEiIDogJ1woXC5cKVteL10qJCcgXHwgIngkMSIgOiAneFwoLipcKS9bXi9dKiQnXV0pCi0KLSMgRFhfSUZfRkVBVFVSRShGRUFUVVJFLCBJRi1PTiwgSUYtT0ZGKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEV4cGFuZHMgYWNjb3JkaW5nIHRvIHRoZSBNNCAoc3RhdGljKSBzdGF0dXMgb2YgdGhlIGZlYXR1cmUuCi1BQ19ERUZVTihbRFhfSUZfRkVBVFVSRV0sIFtpZmVsc2UoRFhfRkVBVFVSRV8kMSwgT04sIFskMl0sIFskM10pXSkKLQotIyBEWF9SRVFVSVJFX1BST0coVkFSSUFCTEUsIFBST0dSQU0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUmVxdWlyZSB0aGUgc3BlY2lmaWVkIHByb2dyYW0gdG8gYmUgZm91bmQgZm9yIHRoZSBEWF9DVVJSRU5UX0ZFQVRVUkUgdG8gd29yay4KLUFDX0RFRlVOKFtEWF9SRVFVSVJFX1BST0ddLCBbCi1BQ19QQVRIX1RPT0woWyQxXSwgWyQyXSkKLWlmIHRlc3QgIiREWF9GTEFHX1tdRFhfQ1VSUkVOVF9GRUFUVVJFJCQxIiA9IDE7IHRoZW4KLSAgICBBQ19NU0dfV0FSTihbJDIgbm90IGZvdW5kIC0gd2lsbCBub3QgRFhfQ1VSUkVOVF9ERVNDUklQVElPTl0pCi0gICAgQUNfU1VCU1QoRFhfRkxBR19bXURYX0NVUlJFTlRfRkVBVFVSRSwgMCkKLWZpCi1dKQotCi0jIERYX1RFU1RfRkVBVFVSRShGRUFUVVJFKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRXhwYW5kIHRvIGEgc2hlbGwgZXhwcmVzc2lvbiB0ZXN0aW5nIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYWN0aXZlLgotQUNfREVGVU4oW0RYX1RFU1RfRkVBVFVSRV0sIFt0ZXN0ICIkRFhfRkxBR18kMSIgPSAxXSkKLQotIyBEWF9DSEVDS19ERVBFTkQoUkVRVUlSRURfRkVBVFVSRSwgUkVRVUlSRURfU1RBVEUpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVmVyaWZ5IHRoYXQgYSByZXF1aXJlZCBmZWF0dXJlcyBoYXMgdGhlIHJpZ2h0IHN0YXRlIGJlZm9yZSB0cnlpbmcgdG8gdHVybiBvbgotIyB0aGUgRFhfQ1VSUkVOVF9GRUFUVVJFLgotQUNfREVGVU4oW0RYX0NIRUNLX0RFUEVORF0sIFsKLXRlc3QgIiREWF9GTEFHXyQxIiA9ICIkMiIgXAotfHwgQUNfTVNHX0VSUk9SKFtkb3h5Z2VuLURYX0NVUlJFTlRfRkVBVFVSRSBpZmVsc2UoWyQyXSwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlcywgY29udHJhZGljdHMpIGRveHlnZW4tRFhfQ1VSUkVOVF9GRUFUVVJFXSkKLV0pCi0KLSMgRFhfQ0xFQVJfREVQRU5EKEZFQVRVUkUsIFJFUVVJUkVEX0ZFQVRVUkUsIFJFUVVJUkVEX1NUQVRFKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFR1cm4gb2ZmIHRoZSBEWF9DVVJSRU5UX0ZFQVRVUkUgaWYgdGhlIHJlcXVpcmVkIGZlYXR1cmUgaXMgb2ZmLgotQUNfREVGVU4oW0RYX0NMRUFSX0RFUEVORF0sIFsKLXRlc3QgIiREWF9GTEFHXyQxIiA9ICIkMiIgfHwgQUNfU1VCU1QoRFhfRkxBR19bXURYX0NVUlJFTlRfRkVBVFVSRSwgMCkKLV0pCi0KLSMgRFhfRkVBVFVSRV9BUkcoRkVBVFVSRSwgREVTQ1JJUFRJT04sCi0jICAgICAgICAgICAgICAgIENIRUNLX0RFUEVORCwgQ0xFQVJfREVQRU5ELAotIyAgICAgICAgICAgICAgICBSRVFVSVJFLCBETy1JRi1PTiwgRE8tSUYtT0ZGKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBQYXJzZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbiBjb250cm9sbGluZyBhIGZlYXR1cmUuIENIRUNLX0RFUEVORCBpcyBjYWxsZWQKLSMgaWYgdGhlIHVzZXIgZXhwbGljaXRseSB0dXJucyB0aGUgZmVhdHVyZSBvbiAoYW5kIGludm9rZXMgRFhfQ0hFQ0tfREVQRU5EKSwKLSMgb3RoZXJ3aXNlIENMRUFSX0RFUEVORCBpcyBjYWxsZWQgdG8gdHVybiBvZmYgdGhlIGRlZmF1bHQgc3RhdGUgaWYgYSByZXF1aXJlZAotIyBmZWF0dXJlIGlzIGRpc2FibGVkICh1c2luZyBEWF9DTEVBUl9ERVBFTkQpLiBSRVFVSVJFIHBlcmZvcm1zIGFkZGl0aW9uYWwKLSMgcmVxdWlyZW1lbnQgdGVzdHMgKERYX1JFUVVJUkVfUFJPRykuIEZpbmFsbHksIGFuIGF1dG9tYWtlIGZsYWcgaXMgc2V0IGFuZAotIyBETy1JRi1PTiBvciBETy1JRi1PRkYgYXJlIGNhbGxlZCBhY2NvcmRpbmcgdG8gdGhlIGZpbmFsIHN0YXRlIG9mIHRoZSBmZWF0dXJlLgotQUNfREVGVU4oW0RYX0FSR19BQkxFXSwgWwotICAgIEFDX0RFRlVOKFtEWF9DVVJSRU5UX0ZFQVRVUkVdLCBbJDFdKQotICAgIEFDX0RFRlVOKFtEWF9DVVJSRU5UX0RFU0NSSVBUSU9OXSwgWyQyXSkKLSAgICBBQ19BUkdfRU5BQkxFKGRveHlnZW4tJDEsCi0gICAgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoRFhfSUZfRkVBVFVSRShbJDFdLCBbLS1kaXNhYmxlLWRveHlnZW4tJDFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy0tZW5hYmxlLWRveHlnZW4tJDFdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWF9JRl9GRUFUVVJFKFskMV0sIFtkb24ndCAkMl0sIFskMl0pKV0sCi0gICAgICAgICAgICAgICAgICBbCi1jYXNlICIkZW5hYmxldmFsIiBpbgotIygKLXl8WXx5ZXN8WWVzfFlFUykKLSAgICBBQ19TVUJTVChbRFhfRkxBR18kMV0sIDEpCi0gICAgJDMKLTs7ICMoCi1ufE58bm98Tm98Tk8pCi0gICAgQUNfU1VCU1QoW0RYX0ZMQUdfJDFdLCAwKQotOzsgIygKLSopCi0gICAgQUNfTVNHX0VSUk9SKFtpbnZhbGlkIHZhbHVlICckZW5hYmxldmFsJyBnaXZlbiB0byBkb3h5Z2VuLSQxXSkKLTs7Ci1lc2FjCi1dLCBbCi1BQ19TVUJTVChbRFhfRkxBR18kMV0sIFtEWF9JRl9GRUFUVVJFKFskMV0sIDEsIDApXSkKLSQ0Ci1dKQotaWYgRFhfVEVTVF9GRUFUVVJFKFskMV0pOyB0aGVuCi0gICAgJDUKLSAgICA6Ci1maQotQU1fQ09ORElUSU9OQUwoRFhfQ09ORF8kMSwgRFhfVEVTVF9GRUFUVVJFKFskMV0pKQotaWYgRFhfVEVTVF9GRUFUVVJFKFskMV0pOyB0aGVuCi0gICAgJDYKLSAgICA6Ci1lbHNlCi0gICAgJDcKLSAgICA6Ci1maQotXSkKLQotIyMgLS0tLS0tLS0tLS0tLS0gIyMKLSMjIFB1YmxpYyBtYWNyb3MuICMjCi0jIyAtLS0tLS0tLS0tLS0tLSAjIwotCi0jIERYX1hYWF9GRUFUVVJFKERFRkFVTFRfU1RBVEUpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbRFhfRE9YWUdFTl9GRUFUVVJFXSwgW0FDX0RFRlVOKFtEWF9GRUFUVVJFX2RvY10sICBbJDFdKV0pCi1BQ19ERUZVTihbRFhfRE9UX0ZFQVRVUkVdLCAgICAgW0FDX0RFRlVOKFtEWF9GRUFUVVJFX2RvdF0sIFskMV0pXSkKLUFDX0RFRlVOKFtEWF9NQU5fRkVBVFVSRV0sICAgICBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfbWFuXSwgIFskMV0pXSkKLUFDX0RFRlVOKFtEWF9IVE1MX0ZFQVRVUkVdLCAgICBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfaHRtbF0sIFskMV0pXSkKLUFDX0RFRlVOKFtEWF9DSE1fRkVBVFVSRV0sICAgICBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfY2htXSwgIFskMV0pXSkKLUFDX0RFRlVOKFtEWF9DSElfRkVBVFVSRV0sICAgICBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfY2hpXSwgIFskMV0pXSkKLUFDX0RFRlVOKFtEWF9SVEZfRkVBVFVSRV0sICAgICBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfcnRmXSwgIFskMV0pXSkKLUFDX0RFRlVOKFtEWF9YTUxfRkVBVFVSRV0sICAgICBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfeG1sXSwgIFskMV0pXSkKLUFDX0RFRlVOKFtEWF9YTUxfRkVBVFVSRV0sICAgICBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfeG1sXSwgIFskMV0pXSkKLUFDX0RFRlVOKFtEWF9QREZfRkVBVFVSRV0sICAgICBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfcGRmXSwgIFskMV0pXSkKLUFDX0RFRlVOKFtEWF9QU19GRUFUVVJFXSwgICAgICBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfcHNdLCAgIFskMV0pXSkKLQotIyBEWF9JTklUX0RPWFlHRU4oUFJPSkVDVCwgW0NPTkZJRy1GSUxFXSwgW09VVFBVVC1ET0MtRElSXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFBST0pFQ1QgYWxzbyBzZXJ2ZXMgYXMgdGhlIGJhc2UgbmFtZSBmb3IgdGhlIGRvY3VtZW50YXRpb24gZmlsZXMuCi0jIFRoZSBkZWZhdWx0IENPTkZJRy1GSUxFIGlzICJEb3h5ZmlsZSIgYW5kIE9VVFBVVC1ET0MtRElSIGlzICJkb3h5Z2VuLWRvYyIuCi1BQ19ERUZVTihbRFhfSU5JVF9ET1hZR0VOXSwgWwotCi0jIEZpbGVzOgotQUNfU1VCU1QoW0RYX1BST0pFQ1RdLCBbJDFdKQotQUNfU1VCU1QoW0RYX0NPTkZJR10sIFtpZmVsc2UoWyQyXSwgW10sIERveHlmaWxlLCBbJDJdKV0pCi1BQ19TVUJTVChbRFhfRE9DRElSXSwgW2lmZWxzZShbJDNdLCBbXSwgZG94eWdlbi1kb2MsIFskM10pXSkKLQotIyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdXNlZCBpbnNpZGUgZG94eWdlbi5jZmc6Ci1EWF9FTlZfQVBQRU5EKFNSQ0RJUiwgJHNyY2RpcikKLURYX0VOVl9BUFBFTkQoUFJPSkVDVCwgJERYX1BST0pFQ1QpCi1EWF9FTlZfQVBQRU5EKERPQ0RJUiwgJERYX0RPQ0RJUikKLURYX0VOVl9BUFBFTkQoVkVSU0lPTiwgJFBBQ0tBR0VfVkVSU0lPTikKLQotIyBEb3h5Z2VuIGl0c2VsZjoKLURYX0FSR19BQkxFKGRvYywgW2dlbmVyYXRlIGFueSBkb3h5Z2VuIGRvY3VtZW50YXRpb25dLAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFtEWF9SRVFVSVJFX1BST0coW0RYX0RPWFlHRU5dLCBkb3h5Z2VuKQotICAgICAgICAgICAgIERYX1JFUVVJUkVfUFJPRyhbRFhfUEVSTF0sIHBlcmwpXSwKLSAgICAgICAgICAgIFtEWF9FTlZfQVBQRU5EKFBFUkxfUEFUSCwgJERYX1BFUkwpXSkKLQotIyBEb3QgZm9yIGdyYXBoaWNzOgotRFhfQVJHX0FCTEUoZG90LCBbZ2VuZXJhdGUgZ3JhcGhpY3MgZm9yIGRveHlnZW4gZG9jdW1lbnRhdGlvbl0sCi0gICAgICAgICAgICBbRFhfQ0hFQ0tfREVQRU5EKGRvYywgMSldLAotICAgICAgICAgICAgW0RYX0NMRUFSX0RFUEVORChkb2MsIDEpXSwKLSAgICAgICAgICAgIFtEWF9SRVFVSVJFX1BST0coW0RYX0RPVF0sIGRvdCldLAotICAgICAgICAgICAgW0RYX0VOVl9BUFBFTkQoSEFWRV9ET1QsIFlFUykKLSAgICAgICAgICAgICBEWF9FTlZfQVBQRU5EKERPVF9QQVRILCBbYERYX0RJUk5BTUVfRVhQUigkRFhfRE9UKWBdKV0sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChIQVZFX0RPVCwgTk8pXSkKLQotIyBNYW4gcGFnZXMgZ2VuZXJhdGlvbjoKLURYX0FSR19BQkxFKG1hbiwgW2dlbmVyYXRlIGRveHlnZW4gbWFudWFsIHBhZ2VzXSwKLSAgICAgICAgICAgIFtEWF9DSEVDS19ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbRFhfQ0xFQVJfREVQRU5EKGRvYywgMSldLAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChHRU5FUkFURV9NQU4sIFlFUyldLAotICAgICAgICAgICAgW0RYX0VOVl9BUFBFTkQoR0VORVJBVEVfTUFOLCBOTyldKQotCi0jIFJURiBmaWxlIGdlbmVyYXRpb246Ci1EWF9BUkdfQUJMRShydGYsIFtnZW5lcmF0ZSBkb3h5Z2VuIFJURiBkb2N1bWVudGF0aW9uXSwKLSAgICAgICAgICAgIFtEWF9DSEVDS19ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbRFhfQ0xFQVJfREVQRU5EKGRvYywgMSldLAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChHRU5FUkFURV9SVEYsIFlFUyldLAotICAgICAgICAgICAgW0RYX0VOVl9BUFBFTkQoR0VORVJBVEVfUlRGLCBOTyldKQotCi0jIFhNTCBmaWxlIGdlbmVyYXRpb246Ci1EWF9BUkdfQUJMRSh4bWwsIFtnZW5lcmF0ZSBkb3h5Z2VuIFhNTCBkb2N1bWVudGF0aW9uXSwKLSAgICAgICAgICAgIFtEWF9DSEVDS19ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbRFhfQ0xFQVJfREVQRU5EKGRvYywgMSldLAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChHRU5FUkFURV9YTUwsIFlFUyldLAotICAgICAgICAgICAgW0RYX0VOVl9BUFBFTkQoR0VORVJBVEVfWE1MLCBOTyldKQotCi0jIChDb21wcmVzc2VkKSBIVE1MIGhlbHAgZ2VuZXJhdGlvbjoKLURYX0FSR19BQkxFKGNobSwgW2dlbmVyYXRlIGRveHlnZW4gY29tcHJlc3NlZCBIVE1MIGhlbHAgZG9jdW1lbnRhdGlvbl0sCi0gICAgICAgICAgICBbRFhfQ0hFQ0tfREVQRU5EKGRvYywgMSldLAotICAgICAgICAgICAgW0RYX0NMRUFSX0RFUEVORChkb2MsIDEpXSwKLSAgICAgICAgICAgIFtEWF9SRVFVSVJFX1BST0coW0RYX0hIQ10sIGhoYyldLAotICAgICAgICAgICAgW0RYX0VOVl9BUFBFTkQoSEhDX1BBVEgsICREWF9ISEMpCi0gICAgICAgICAgICAgRFhfRU5WX0FQUEVORChHRU5FUkFURV9IVE1MLCBZRVMpCi0gICAgICAgICAgICAgRFhfRU5WX0FQUEVORChHRU5FUkFURV9IVE1MSEVMUCwgWUVTKV0sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChHRU5FUkFURV9IVE1MSEVMUCwgTk8pXSkKLQotIyBTZXBlcmF0ZSBDSEkgZmlsZSBnZW5lcmF0aW9uLgotRFhfQVJHX0FCTEUoY2hpLCBbZ2VuZXJhdGUgZG94eWdlbiBzZXBlcmF0ZSBjb21wcmVzc2VkIEhUTUwgaGVscCBpbmRleCBmaWxlXSwKLSAgICAgICAgICAgIFtEWF9DSEVDS19ERVBFTkQoY2htLCAxKV0sCi0gICAgICAgICAgICBbRFhfQ0xFQVJfREVQRU5EKGNobSwgMSldLAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChHRU5FUkFURV9DSEksIFlFUyldLAotICAgICAgICAgICAgW0RYX0VOVl9BUFBFTkQoR0VORVJBVEVfQ0hJLCBOTyldKQotCi0jIFBsYWluIEhUTUwgcGFnZXMgZ2VuZXJhdGlvbjoKLURYX0FSR19BQkxFKGh0bWwsIFtnZW5lcmF0ZSBkb3h5Z2VuIHBsYWluIEhUTUwgZG9jdW1lbnRhdGlvbl0sCi0gICAgICAgICAgICBbRFhfQ0hFQ0tfREVQRU5EKGRvYywgMSkgRFhfQ0hFQ0tfREVQRU5EKGNobSwgMCldLAotICAgICAgICAgICAgW0RYX0NMRUFSX0RFUEVORChkb2MsIDEpIERYX0NMRUFSX0RFUEVORChjaG0sIDApXSwKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgW0RYX0VOVl9BUFBFTkQoR0VORVJBVEVfSFRNTCwgWUVTKV0sCi0gICAgICAgICAgICBbRFhfVEVTVF9GRUFUVVJFKGNobSkgfHwgRFhfRU5WX0FQUEVORChHRU5FUkFURV9IVE1MLCBOTyldKQotCi0jIFBvc3RTY3JpcHQgZmlsZSBnZW5lcmF0aW9uOgotRFhfQVJHX0FCTEUocHMsIFtnZW5lcmF0ZSBkb3h5Z2VuIFBvc3RTY3JpcHQgZG9jdW1lbnRhdGlvbl0sCi0gICAgICAgICAgICBbRFhfQ0hFQ0tfREVQRU5EKGRvYywgMSldLAotICAgICAgICAgICAgW0RYX0NMRUFSX0RFUEVORChkb2MsIDEpXSwKLSAgICAgICAgICAgIFtEWF9SRVFVSVJFX1BST0coW0RYX0xBVEVYXSwgbGF0ZXgpCi0gICAgICAgICAgICAgRFhfUkVRVUlSRV9QUk9HKFtEWF9NQUtFSU5ERVhdLCBtYWtlaW5kZXgpCi0gICAgICAgICAgICAgRFhfUkVRVUlSRV9QUk9HKFtEWF9EVklQU10sIGR2aXBzKQotICAgICAgICAgICAgIERYX1JFUVVJUkVfUFJPRyhbRFhfRUdSRVBdLCBlZ3JlcCldKQotCi0jIFBERiBmaWxlIGdlbmVyYXRpb246Ci1EWF9BUkdfQUJMRShwZGYsIFtnZW5lcmF0ZSBkb3h5Z2VuIFBERiBkb2N1bWVudGF0aW9uXSwKLSAgICAgICAgICAgIFtEWF9DSEVDS19ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbRFhfQ0xFQVJfREVQRU5EKGRvYywgMSldLAotICAgICAgICAgICAgW0RYX1JFUVVJUkVfUFJPRyhbRFhfUERGTEFURVhdLCBwZGZsYXRleCkKLSAgICAgICAgICAgICBEWF9SRVFVSVJFX1BST0coW0RYX01BS0VJTkRFWF0sIG1ha2VpbmRleCkKLSAgICAgICAgICAgICBEWF9SRVFVSVJFX1BST0coW0RYX0VHUkVQXSwgZWdyZXApXSkKLQotIyBMYVRlWCBnZW5lcmF0aW9uIGZvciBQUyBhbmQvb3IgUERGOgotQU1fQ09ORElUSU9OQUwoRFhfQ09ORF9sYXRleCwgRFhfVEVTVF9GRUFUVVJFKHBzKSB8fCBEWF9URVNUX0ZFQVRVUkUocGRmKSkKLWlmIERYX1RFU1RfRkVBVFVSRShwcykgfHwgRFhfVEVTVF9GRUFUVVJFKHBkZik7IHRoZW4KLSAgICBEWF9FTlZfQVBQRU5EKEdFTkVSQVRFX0xBVEVYLCBZRVMpCi1lbHNlCi0gICAgRFhfRU5WX0FQUEVORChHRU5FUkFURV9MQVRFWCwgTk8pCi1maQotCi0jIFBhcGVyIHNpemUgZm9yIFBTIGFuZC9vciBQREY6Ci1BQ19BUkdfVkFSKERPWFlHRU5fUEFQRVJfU0laRSwKLSAgICAgICAgICAgW2E0d2lkZSAoZGVmYXVsdCksIGE0LCBsZXR0ZXIsIGxlZ2FsIG9yIGV4ZWN1dGl2ZV0pCi1jYXNlICIkRE9YWUdFTl9QQVBFUl9TSVpFIiBpbgotIygKLSIiKQotICAgIEFDX1NVQlNUKERPWFlHRU5fUEFQRVJfU0laRSwgIiIpCi07OyAjKAotYTR3aWRlfGE0fGxldHRlcnxsZWdhbHxleGVjdXRpdmUpCi0gICAgRFhfRU5WX0FQUEVORChQQVBFUl9TSVpFLCAkRE9YWUdFTl9QQVBFUl9TSVpFKQotOzsgIygKLSopCi0gICAgQUNfTVNHX0VSUk9SKFt1bmtub3duIERPWFlHRU5fUEFQRVJfU0laRT0nJERPWFlHRU5fUEFQRVJfU0laRSddKQotOzsKLWVzYWMKLQotI0ZvciBkZWJ1Z2dpbmc6Ci0jZWNobyBEWF9GTEFHX2RvYz0kRFhfRkxBR19kb2MKLSNlY2hvIERYX0ZMQUdfZG90PSREWF9GTEFHX2RvdAotI2VjaG8gRFhfRkxBR19tYW49JERYX0ZMQUdfbWFuCi0jZWNobyBEWF9GTEFHX2h0bWw9JERYX0ZMQUdfaHRtbAotI2VjaG8gRFhfRkxBR19jaG09JERYX0ZMQUdfY2htCi0jZWNobyBEWF9GTEFHX2NoaT0kRFhfRkxBR19jaGkKLSNlY2hvIERYX0ZMQUdfcnRmPSREWF9GTEFHX3J0ZgotI2VjaG8gRFhfRkxBR194bWw9JERYX0ZMQUdfeG1sCi0jZWNobyBEWF9GTEFHX3BkZj0kRFhfRkxBR19wZGYKLSNlY2hvIERYX0ZMQUdfcHM9JERYX0ZMQUdfcHMKLSNlY2hvIERYX0VOVj0kRFhfRU5WCi1dKQpkaWZmIC0tZ2l0IGEvc3JjL2MvZGF0YS5oIGIvc3JjL2MvZGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmFhODNjLi4wMDAwMDAwCi0tLSBhL3NyYy9jL2RhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9EQVRBX0gKLSNkZWZpbmUgTkROX0RBVEFfSAotCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvYy9kYXRhLXR5cGVzLmg+Ci0jaW5jbHVkZSAibmFtZS5oIgotI2luY2x1ZGUgInB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5oIgotI2luY2x1ZGUgImtleS1sb2NhdG9yLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBBbiBuZG5fU2lnbmF0dXJlIHN0cnVjdCBob2xkcyB0aGUgc2lnbmF0dXJlIGJpdHMgYW5kIG90aGVyIGluZm8gcmVwcmVzZW50aW5nIHRoZSBzaWduYXR1cmUgaW4gYSBkYXRhIHBhY2tldC4KLSAqLwotc3RydWN0IG5kbl9TaWduYXR1cmUgewotICBzdHJ1Y3QgbmRuX0Jsb2IgZGlnZXN0QWxnb3JpdGhtOyAvKio8IEEgQmxvYiB3aG9zZSB2YWx1ZSBpcyBhIHBvaW50ZXIgdG8gYSBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gIDAgZm9yIG5vbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgSWYgbm9uZSwgZGVmYXVsdCBpcyAyLjE2Ljg0MC4xLjEwMS4zLjQuMi4xIChzaGEtMjU2KS4gKi8KLSAgc3RydWN0IG5kbl9CbG9iIHdpdG5lc3M7ICAgICAgICAgLyoqPCBBIEJsb2Igd2hvc2UgdmFsdWUgaXMgYSBwb2ludGVyIHRvIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiAgMCBmb3Igbm9uZS4gKi8KLSAgc3RydWN0IG5kbl9CbG9iIHNpZ25hdHVyZTsKLSAgc3RydWN0IG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0OwotICBzdHJ1Y3QgbmRuX0tleUxvY2F0b3Iga2V5TG9jYXRvcjsKLX07Ci0KLS8qKgotICogSW5pdGlhbGl6ZSB0aGUgbmRuX1NpZ25hdHVyZSBzdHJ1Y3Qgd2l0aCB2YWx1ZXMgZm9yIG5vbmUgYW5kIHRoZSBkZWZhdWx0IGRpZ2VzdEFsZ29yaXRobS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX01ldGFJbmZvIHN0cnVjdC4KLSAqIEBwYXJhbSBrZXlOYW1lQ29tcG9uZW50cyBUaGUgcHJlLWFsbG9jYXRlZCBhcnJheSBvZiBuZG5fTmFtZUNvbXBvbmVudCBmb3IgdGhlIGtleUxvY2F0b3IuCi0gKiBAcGFyYW0gbWF4S2V5TmFtZUNvbXBvbmVudHMgVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYWxsb2NhdGVkIGtleU5hbWVDb21wb25lbnRzIGFycmF5LgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX1NpZ25hdHVyZV9pbml0aWFsaXplKHN0cnVjdCBuZG5fU2lnbmF0dXJlICpzZWxmLCBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKmtleU5hbWVDb21wb25lbnRzLCBzaXplX3QgbWF4S2V5TmFtZUNvbXBvbmVudHMpIHsKLSAgbmRuX0Jsb2JfaW5pdGlhbGl6ZSgmc2VsZi0+ZGlnZXN0QWxnb3JpdGhtLCAwLCAwKTsKLSAgbmRuX0Jsb2JfaW5pdGlhbGl6ZSgmc2VsZi0+d2l0bmVzcywgMCwgMCk7Ci0gIG5kbl9CbG9iX2luaXRpYWxpemUoJnNlbGYtPnNpZ25hdHVyZSwgMCwgMCk7Ci0gIG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3RfaW5pdGlhbGl6ZSgmc2VsZi0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0KTsKLSAgbmRuX0tleUxvY2F0b3JfaW5pdGlhbGl6ZSgmc2VsZi0+a2V5TG9jYXRvciwga2V5TmFtZUNvbXBvbmVudHMsIG1heEtleU5hbWVDb21wb25lbnRzKTsKLX0KLQotLyoqCi0gKiBBbiBuZG5fTWV0YUluZm8gc3RydWN0IGhvbGRzIHRoZSBtZXRhIGluZm8gd2hpY2ggaXMgc2lnbmVkIGluc2lkZSB0aGUgZGF0YSBwYWNrZXQuCi0gKi8KLXN0cnVjdCBuZG5fTWV0YUluZm8gewotICBuZG5fTWlsbGlzZWNvbmRzU2luY2UxOTcwIHRpbWVzdGFtcE1pbGxpc2Vjb25kczsgLyoqPCBtaWxsaXNlY29uZHMgc2luY2UgMS8xLzE5NzAuIC0xIGZvciBub25lICovCi0gIG5kbl9Db250ZW50VHlwZSB0eXBlOyAgICAgICAgICAgICAgICAgIC8qKjwgZGVmYXVsdCBpcyBuZG5fQ29udGVudFR5cGVfREFUQS4gLTEgZm9yIG5vbmUgKi8KLSAgaW50IGZyZXNobmVzc1NlY29uZHM7ICAgICAgICAgICAgICAgICAgLyoqPCAtMSBmb3Igbm9uZSAqLwotICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgZmluYWxCbG9ja0lEOyAvKio8IGhhcyBhIHBvaW50ZXIgdG8gYSBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gIDAgZm9yIG5vbmUgKi8KLX07Ci0KLS8qKgotICogSW5pdGlhbGl6ZSB0aGUgbmRuX01ldGFJbmZvIHN0cnVjdCB3aXRoIHZhbHVlcyBmb3Igbm9uZSBhbmQgdGhlIHR5cGUgdG8gdGhlIGRlZmF1bHQgbmRuX0NvbnRlbnRUeXBlX0RBVEEuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9NZXRhSW5mbyBzdHJ1Y3QuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fTWV0YUluZm9faW5pdGlhbGl6ZQotICAoc3RydWN0IG5kbl9NZXRhSW5mbyAqc2VsZikgewotICBzZWxmLT50eXBlID0gbmRuX0NvbnRlbnRUeXBlX0RBVEE7Ci0gIHNlbGYtPmZyZXNobmVzc1NlY29uZHMgPSAtMTsKLSAgbmRuX05hbWVDb21wb25lbnRfaW5pdGlhbGl6ZSgmc2VsZi0+ZmluYWxCbG9ja0lELCAwLCAwKTsKLX0KLQotc3RydWN0IG5kbl9EYXRhIHsKLSAgc3RydWN0IG5kbl9TaWduYXR1cmUgc2lnbmF0dXJlOwotICBzdHJ1Y3QgbmRuX05hbWUgbmFtZTsKLSAgc3RydWN0IG5kbl9NZXRhSW5mbyBtZXRhSW5mbzsKLSAgc3RydWN0IG5kbl9CbG9iIGNvbnRlbnQ7ICAgICAvKio8IEEgQmxvYiB3aXRoIGEgcG9pbnRlciB0byB0aGUgY29udGVudC4gKi8KLX07Ci0KLS8qKgotICogSW5pdGlhbGl6ZSBhbiBuZG5fRGF0YSBzdHJ1Y3Qgd2l0aCB0aGUgcHJlLWFsbG9jYXRlZCBuYW1lQ29tcG9uZW50cyBhbmQga2V5TmFtZUNvbXBvbmVudHMsCi0gKiBhbmQgZGVmYXVsdHMgZm9yIGFsbCB0aGUgdmFsdWVzLgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fRGF0YSBzdHJ1Y3QuCi0gKiBAcGFyYW0gbmFtZUNvbXBvbmVudHMgVGhlIHByZS1hbGxvY2F0ZWQgYXJyYXkgb2YgbmRuX05hbWVDb21wb25lbnQuCi0gKiBAcGFyYW0gbWF4TmFtZUNvbXBvbmVudHMgVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYWxsb2NhdGVkIG5hbWVDb21wb25lbnRzIGFycmF5LgotICogQHBhcmFtIGtleU5hbWVDb21wb25lbnRzIFRoZSBwcmUtYWxsb2NhdGVkIGFycmF5IG9mIG5kbl9OYW1lQ29tcG9uZW50IGZvciB0aGUgc2lnbmF0dXJlLmtleUxvY2F0b3IuCi0gKiBAcGFyYW0gbWF4S2V5TmFtZUNvbXBvbmVudHMgVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYWxsb2NhdGVkIGtleU5hbWVDb21wb25lbnRzIGFycmF5LgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX0RhdGFfaW5pdGlhbGl6ZQotICAoc3RydWN0IG5kbl9EYXRhICpzZWxmLCBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKm5hbWVDb21wb25lbnRzLCBzaXplX3QgbWF4TmFtZUNvbXBvbmVudHMsIAotICAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICprZXlOYW1lQ29tcG9uZW50cywgc2l6ZV90IG1heEtleU5hbWVDb21wb25lbnRzKSAKLXsKLSAgbmRuX1NpZ25hdHVyZV9pbml0aWFsaXplKCZzZWxmLT5zaWduYXR1cmUsIGtleU5hbWVDb21wb25lbnRzLCBtYXhLZXlOYW1lQ29tcG9uZW50cyk7Ci0gIG5kbl9OYW1lX2luaXRpYWxpemUoJnNlbGYtPm5hbWUsIG5hbWVDb21wb25lbnRzLCBtYXhOYW1lQ29tcG9uZW50cyk7Ci0gIG5kbl9NZXRhSW5mb19pbml0aWFsaXplKCZzZWxmLT5tZXRhSW5mbyk7Ci0gIG5kbl9CbG9iX2luaXRpYWxpemUoJnNlbGYtPmNvbnRlbnQsIDAsIDApOwotfQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZGF0YS5jIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kYXRhLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4MDEzY2YuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kYXRhLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNDIgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogRGVyaXZlZCBmcm9tIENvbnRlbnRPYmplY3QuanMgYnkgTWVraSBDaGVyYW91aS4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1lbmNvZGVyLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1kZWNvZGVyLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1uYW1lLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWRhdGEuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWtleS5oIgotCi1zdGF0aWMgbmRuX0Vycm9yIGVuY29kZVNpZ25hdHVyZShzdHJ1Y3QgbmRuX1NpZ25hdHVyZSAqc2lnbmF0dXJlLCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKmVuY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfU2lnbmF0dXJlKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgLy8gVE9ETzogQ2hlY2sgaWYgZGlnZXN0QWxnb3JpdGhtIGlzIHRoZSBzYW1lIGFzIHRoZSBkZWZhdWx0LCBhbmQgc2tpcCBpdCwgb3RoZXJ3aXNlIGVuY29kZSBpdCBhcyBVREFUQS4KLQotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbEJsb2JEVGFnRWxlbWVudChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfV2l0bmVzcywgJnNpZ25hdHVyZS0+d2l0bmVzcykpKQotICAgIHJldHVybiBlcnJvcjsKLQotICAvLyBSZXF1aXJlIGEgc2lnbmF0dXJlLgotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iRFRhZ0VsZW1lbnQoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1NpZ25hdHVyZUJpdHMsICZzaWduYXR1cmUtPnNpZ25hdHVyZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRDbG9zZShlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOyAgICAKLX0KLQotc3RhdGljIG5kbl9FcnJvciBkZWNvZGVTaWduYXR1cmUoc3RydWN0IG5kbl9TaWduYXR1cmUgKnNpZ25hdHVyZSwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudFN0YXJ0RFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfU2lnbmF0dXJlKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgLyogVE9ETzogZGlnZXN0QWxnb3JpdGhtIGFzIFVEQVRBICovIHNpZ25hdHVyZS0+ZGlnZXN0QWxnb3JpdGhtLnZhbHVlID0gMDsgc2lnbmF0dXJlLT5kaWdlc3RBbGdvcml0aG0ubGVuZ3RoID0gMDsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxCaW5hcnlEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19XaXRuZXNzLCAwLCAmc2lnbmF0dXJlLT53aXRuZXNzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgLy8gUmVxdWlyZSBhIHNpZ25hdHVyZS4KLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19TaWduYXR1cmVCaXRzLCAwLCAmc2lnbmF0dXJlLT5zaWduYXR1cmUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1zdGF0aWMgbmRuX0Vycm9yIGVuY29kZVNpZ25lZEluZm8oc3RydWN0IG5kbl9TaWduYXR1cmUgKnNpZ25hdHVyZSwgc3RydWN0IG5kbl9NZXRhSW5mbyAqbWV0YUluZm8sIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2RlcikKLXsKLSAgaWYgKChpbnQpbWV0YUluZm8tPnR5cGUgPCAwKQotICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLQotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRTdGFydERUYWcoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1NpZ25lZEluZm8pKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0KLSAgLy8gVGhpcyB3aWxsIHNraXAgZW5jb2RpbmcgaWYgdGhlcmUgaXMgbm8gcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LgotICBpZiAoKGVycm9yID0gbmRuX2VuY29kZUJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCgmc2lnbmF0dXJlLT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbFRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudAotICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19UaW1lc3RhbXAsIG1ldGFJbmZvLT50aW1lc3RhbXBNaWxsaXNlY29uZHMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoISgoaW50KW1ldGFJbmZvLT50eXBlIDwgMCB8fCBtZXRhSW5mby0+dHlwZSA9PSBuZG5fQ29udGVudFR5cGVfREFUQSkpIHsKLSAgICAvLyBOb3QgdGhlIGRlZmF1bHQgb2YgREFUQSwgc28gd2UgbmVlZCB0byBlbmNvZGUgdGhlIHR5cGUuCi0gICAgc3RydWN0IG5kbl9CbG9iIHR5cGVCeXRlczsKLSAgICB0eXBlQnl0ZXMubGVuZ3RoID0gMzsKLSAgICBpZiAobWV0YUluZm8tPnR5cGUgPT0gbmRuX0NvbnRlbnRUeXBlX0VOQ1IpCi0gICAgICB0eXBlQnl0ZXMudmFsdWUgPSAodWludDhfdCAqKSJceDEwXHhEMFx4OTEiOwotICAgIGVsc2UgaWYgKG1ldGFJbmZvLT50eXBlID09IG5kbl9Db250ZW50VHlwZV9HT05FKQotICAgICAgdHlwZUJ5dGVzLnZhbHVlID0gKHVpbnQ4X3QgKikiXHgxOFx4RTNceDQ0IjsKLSAgICBlbHNlIGlmIChtZXRhSW5mby0+dHlwZSA9PSBuZG5fQ29udGVudFR5cGVfS0VZKQotICAgICAgdHlwZUJ5dGVzLnZhbHVlID0gKHVpbnQ4X3QgKikiXHgyOFx4NDZceDNGIjsKLSAgICBlbHNlIGlmIChtZXRhSW5mby0+dHlwZSA9PSBuZG5fQ29udGVudFR5cGVfTElOSykKLSAgICAgIHR5cGVCeXRlcy52YWx1ZSA9ICh1aW50OF90ICopIlx4MkNceDgzXHg0QSI7Ci0gICAgZWxzZSBpZiAobWV0YUluZm8tPnR5cGUgPT0gbmRuX0NvbnRlbnRUeXBlX05BQ0spCi0gICAgICB0eXBlQnl0ZXMudmFsdWUgPSAodWludDhfdCAqKSJceDM0XHgwMFx4OEEiOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9Db250ZW50VHlwZTsKLQotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfVHlwZSwgJnR5cGVCeXRlcykpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbFVuc2lnbmVkRGVjaW1hbEludERUYWdFbGVtZW50Ci0gICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0ZyZXNobmVzc1NlY29uZHMsIG1ldGFJbmZvLT5mcmVzaG5lc3NTZWNvbmRzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlT3B0aW9uYWxCbG9iRFRhZ0VsZW1lbnQKLSAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfRmluYWxCbG9ja0lELCAmbWV0YUluZm8tPmZpbmFsQmxvY2tJRC52YWx1ZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAKLSAgLy8gVGhpcyB3aWxsIHNraXAgZW5jb2RpbmcgaWYgdGhlcmUgaXMgbm8ga2V5IGxvY2F0b3IuCi0gIGlmICgoZXJyb3IgPSBuZG5fZW5jb2RlQmluYXJ5WG1sS2V5TG9jYXRvcigmc2lnbmF0dXJlLT5rZXlMb2NhdG9yLCBlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7ICAKLX0KLQotc3RhdGljIG5kbl9FcnJvciBkZWNvZGVTaWduZWRJbmZvKHN0cnVjdCBuZG5fU2lnbmF0dXJlICpzaWduYXR1cmUsIHN0cnVjdCBuZG5fTWV0YUluZm8gKm1ldGFJbmZvLCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19TaWduZWRJbmZvKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVPcHRpb25hbEJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCgmc2lnbmF0dXJlLT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIGRlY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50Ci0gICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19UaW1lc3RhbXAsICZtZXRhSW5mby0+dGltZXN0YW1wTWlsbGlzZWNvbmRzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgc3RydWN0IG5kbl9CbG9iIHR5cGVCeXRlczsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbEJpbmFyeURUYWdFbGVtZW50Ci0gICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1R5cGUsIDAsICZ0eXBlQnl0ZXMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmICh0eXBlQnl0ZXMubGVuZ3RoID09IDApCi0gICAgLy8gVGhlIGRlZmF1bHQgVHlwZSBpcyBEQVRBLgotICAgIG1ldGFJbmZvLT50eXBlID0gbmRuX0NvbnRlbnRUeXBlX0RBVEE7Ci0gIGVsc2UgaWYgKHR5cGVCeXRlcy5sZW5ndGggPT0gMykgewotICAgIC8vIEFsbCB0aGUgcmVjb2duaXplZCBjb250ZW50IHR5cGVzIGFyZSAzIGJ5dGVzLgotICAgIGlmIChuZG5fbWVtY21wKHR5cGVCeXRlcy52YWx1ZSwgKHVpbnQ4X3QgKikiXHgwQ1x4MDRceEMwIiwgdHlwZUJ5dGVzLmxlbmd0aCkgPT0gMCkKLSAgICAgIG1ldGFJbmZvLT50eXBlID0gbmRuX0NvbnRlbnRUeXBlX0RBVEE7Ci0gICAgZWxzZSBpZiAobmRuX21lbWNtcCh0eXBlQnl0ZXMudmFsdWUsICh1aW50OF90ICopIlx4MTBceEQwXHg5MSIsIHR5cGVCeXRlcy5sZW5ndGgpID09IDApCi0gICAgICBtZXRhSW5mby0+dHlwZSA9IG5kbl9Db250ZW50VHlwZV9FTkNSOwotICAgIGVsc2UgaWYgKG5kbl9tZW1jbXAodHlwZUJ5dGVzLnZhbHVlLCAodWludDhfdCAqKSJceDE4XHhFM1x4NDQiLCB0eXBlQnl0ZXMubGVuZ3RoKSA9PSAwKQotICAgICAgbWV0YUluZm8tPnR5cGUgPSBuZG5fQ29udGVudFR5cGVfR09ORTsKLSAgICBlbHNlIGlmIChuZG5fbWVtY21wKHR5cGVCeXRlcy52YWx1ZSwgKHVpbnQ4X3QgKikiXHgyOFx4NDZceDNGIiwgdHlwZUJ5dGVzLmxlbmd0aCkgPT0gMCkKLSAgICAgIG1ldGFJbmZvLT50eXBlID0gbmRuX0NvbnRlbnRUeXBlX0tFWTsKLSAgICBlbHNlIGlmIChuZG5fbWVtY21wKHR5cGVCeXRlcy52YWx1ZSwgKHVpbnQ4X3QgKikiXHgyQ1x4ODNceDRBIiwgdHlwZUJ5dGVzLmxlbmd0aCkgPT0gMCkKLSAgICAgIG1ldGFJbmZvLT50eXBlID0gbmRuX0NvbnRlbnRUeXBlX0xJTks7Ci0gICAgZWxzZSBpZiAobmRuX21lbWNtcCh0eXBlQnl0ZXMudmFsdWUsICh1aW50OF90ICopIlx4MzRceDAwXHg4QSIsIHR5cGVCeXRlcy5sZW5ndGgpID09IDApCi0gICAgICBtZXRhSW5mby0+dHlwZSA9IG5kbl9Db250ZW50VHlwZV9OQUNLOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9Db250ZW50VHlwZTsKLSAgfQotICBlbHNlCi0gICAgcmV0dXJuIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX0NvbnRlbnRUeXBlOwotIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfRnJlc2huZXNzU2Vjb25kcywgJm1ldGFJbmZvLT5mcmVzaG5lc3NTZWNvbmRzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxCaW5hcnlEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19GaW5hbEJsb2NrSUQsIDAsICZtZXRhSW5mby0+ZmluYWxCbG9ja0lELnZhbHVlKSkpCi0gICAgcmV0dXJuIGVycm9yOwotCi0gIGlmICgoZXJyb3IgPSBuZG5fZGVjb2RlT3B0aW9uYWxCaW5hcnlYbWxLZXlMb2NhdG9yKCZzaWduYXR1cmUtPmtleUxvY2F0b3IsIGRlY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX2VuY29kZUJpbmFyeVhtbERhdGEKLSAgKHN0cnVjdCBuZG5fRGF0YSAqZGF0YSwgc2l6ZV90ICpzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkVuZE9mZnNldCwgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRTdGFydERUYWcoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0NvbnRlbnRPYmplY3QpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gZW5jb2RlU2lnbmF0dXJlKCZkYXRhLT5zaWduYXR1cmUsIGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICAqc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0ID0gZW5jb2Rlci0+b2Zmc2V0OwotCi0gIGlmICgoZXJyb3IgPSBuZG5fZW5jb2RlQmluYXJ5WG1sTmFtZSgmZGF0YS0+bmFtZSwgZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBlbmNvZGVTaWduZWRJbmZvKCZkYXRhLT5zaWduYXR1cmUsICZkYXRhLT5tZXRhSW5mbywgZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLQotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iRFRhZ0VsZW1lbnQoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0NvbnRlbnQsICZkYXRhLT5jb250ZW50KSkpCi0gICAgcmV0dXJuIGVycm9yOwotCi0gICpzaWduZWRQb3J0aW9uRW5kT2Zmc2V0ID0gZW5jb2Rlci0+b2Zmc2V0OwotCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRDbG9zZShlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX2RlY29kZUJpbmFyeVhtbERhdGEKLSAgKHN0cnVjdCBuZG5fRGF0YSAqZGF0YSwgc2l6ZV90ICpzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkVuZE9mZnNldCwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudFN0YXJ0RFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ29udGVudE9iamVjdCkpKQotICAgIHJldHVybiBlcnJvcjsKLQotICBpbnQgZ290RXhwZWN0ZWRUYWc7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfU2lnbmF0dXJlLCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmIChnb3RFeHBlY3RlZFRhZykgewotICAgIGlmICgoZXJyb3IgPSBkZWNvZGVTaWduYXR1cmUoJmRhdGEtPnNpZ25hdHVyZSwgZGVjb2RlcikpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIGVsc2UKLSAgICBuZG5fU2lnbmF0dXJlX2luaXRpYWxpemUoJmRhdGEtPnNpZ25hdHVyZSwgZGF0YS0+c2lnbmF0dXJlLmtleUxvY2F0b3Iua2V5TmFtZS5jb21wb25lbnRzLCBkYXRhLT5zaWduYXR1cmUua2V5TG9jYXRvci5rZXlOYW1lLm1heENvbXBvbmVudHMpOwotICAKLSAgKnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCA9IGRlY29kZXItPm9mZnNldDsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fZGVjb2RlQmluYXJ5WG1sTmFtZSgmZGF0YS0+bmFtZSwgZGVjb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfU2lnbmVkSW5mbywgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICBpZiAoKGVycm9yID0gZGVjb2RlU2lnbmVkSW5mbygmZGF0YS0+c2lnbmF0dXJlLCAmZGF0YS0+bWV0YUluZm8sIGRlY29kZXIpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgfQotICBlbHNlCi0gICAgbmRuX01ldGFJbmZvX2luaXRpYWxpemUoJmRhdGEtPm1ldGFJbmZvKTsKLQotICAvLyBSZXF1aXJlIGEgQ29udGVudCBlbGVtZW50LCBidXQgc2V0IGFsbG93TnVsbCB0byBhbGxvdyBhIG1pc3NpbmcgQkxPQi4KLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ29udGVudCwgMSwgJmRhdGEtPmNvbnRlbnQpKSkKLSAgICByZXR1cm4gZXJyb3I7IAotICAKLSAgKnNpZ25lZFBvcnRpb25FbmRPZmZzZXQgPSBkZWNvZGVyLT5vZmZzZXQ7Ci0KLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50Q2xvc2UoZGVjb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZGF0YS5oIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ODY1YmEuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZX1hNTF9EQVRBX0gKLSNkZWZpbmUgTkROX0JJTkFSWV9YTUxfREFUQV9ICi0KLSNpbmNsdWRlICIuLi9lcnJvcnMuaCIKLSNpbmNsdWRlICIuLi9kYXRhLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1lbmNvZGVyLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1kZWNvZGVyLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBFbmNvZGUgdGhlIGRhdGEgcGFja2V0IGFzIGJpbmFyeSBYTUwuCi0gKiBAcGFyYW0gZGF0YSBQb2ludGVyIHRvIHRoZSBkYXRhIG9iamVjdCB0byBlbmNvZGUuCi0gKiBAcGFyYW0gc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0IFJldHVybiB0aGUgb2Zmc2V0IGluIHRoZSBlbmNvZGluZyBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAqIElmIHlvdSBhcmUgbm90IGVuY29kaW5nIGluIG9yZGVyIHRvIHNpZ24sIHlvdSBjYW4gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gKiBAcGFyYW0gc2lnbmVkUG9ydGlvbkVuZE9mZnNldCBSZXR1cm4gdGhlIG9mZnNldCBpbiB0aGUgZW5jb2Rpbmcgb2YgdGhlIGVuZCBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gKiBJZiB5b3UgYXJlIG5vdCBlbmNvZGluZyBpbiBvcmRlciB0byBzaWduLCB5b3UgY2FuIGlnbm9yZSB0aGlzIHJldHVybmVkIHZhbHVlLgotICogQHBhcmFtIGVuY29kZXIgUG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0IHdoaWNoIHJlY2VpdmVzIHRoZSBlbmNvZGluZy4gCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotbmRuX0Vycm9yIG5kbl9lbmNvZGVCaW5hcnlYbWxEYXRhCi0gIChzdHJ1Y3QgbmRuX0RhdGEgKmRhdGEsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaXplX3QgKnNpZ25lZFBvcnRpb25FbmRPZmZzZXQsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2Rlcik7Ci0KLS8qKgotICogRGVjb2RlIHRoZSBkYXRhIHBhY2tldCBhcyBiaW5hcnkgWE1MIGFuZCBzZXQgdGhlIGZpZWxkcyBpbiB0aGUgZGF0YSBvYmplY3QuCi0gKiBAcGFyYW0gZGF0YSBQb2ludGVyIHRvIHRoZSBkYXRhIG9iamVjdCB3aG9zZSBmaWVsZHMgYXJlIHVwZGF0ZWQuCi0gKiBAcGFyYW0gc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0IFJldHVybiB0aGUgb2Zmc2V0IGluIHRoZSBpbnB1dCBidWZmZXIgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gKiBJZiB5b3UgYXJlIG5vdCBkZWNvZGluZyBpbiBvcmRlciB0byB2ZXJpZnksIHlvdSBjYW4gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gKiBAcGFyYW0gc2lnbmVkUG9ydGlvbkVuZE9mZnNldCBSZXR1cm4gdGhlIG9mZnNldCBpbiB0aGUgaW5wdXQgYnVmZmVyIG9mIHRoZSBlbmQgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICogSWYgeW91IGFyZSBub3QgZGVjb2RpbmcgaW4gb3JkZXIgdG8gdmVyaWZ5LCB5b3UgY2FuIGlnbm9yZSB0aGlzIHJldHVybmVkIHZhbHVlLgotICogQHBhcmFtIGRlY29kZXIgUG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0IHdoaWNoIGhhcyBiZWVuIGluaXRpYWxpemVkIHdpdGggdGhlIGJ1ZmZlciB0byBkZWNvZGUuIAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLW5kbl9FcnJvciBuZG5fZGVjb2RlQmluYXJ5WG1sRGF0YQotICAoc3RydWN0IG5kbl9EYXRhICpkYXRhLCBzaXplX3QgKnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2l6ZV90ICpzaWduZWRQb3J0aW9uRW5kT2Zmc2V0LCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZGVjb2Rlci5jIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMGNlNTEuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMzYgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogRGVyaXZlZCBmcm9tIEJpbmFyeVhNTERlY29kZXIuanMgYnkgTWVraSBDaGVyYW91aS4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZGVjb2Rlci5oIgotCi0vKioKLSAqIFJldHVybiB0aGUgb2N0ZXQgYXQgc2VsZi0+b2Zmc2V0LCBjb252ZXJ0aW5nIHRvIHVuc2lnbmVkIGludC4gIEluY3JlbWVudCBzZWxmLT5vZmZzZXQuCi0gKiBUaGlzIGRvZXMgbm90IGNoZWNrIGZvciByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQsIHNvIHRoaXMgaXMgY2FsbGVkICJ1bnNhZmUiLgotICovCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB1bnNhZmVSZWFkT2N0ZXQoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmKSAKLXsKLSAgcmV0dXJuICh1bnNpZ25lZCBpbnQpKHNlbGYtPmlucHV0W3NlbGYtPm9mZnNldCsrXSAmIDB4ZmYpOyAgCi19Ci0KLS8qKgotICogUmV0dXJuIHRoZSBvY3RldCBhdCBzZWxmLT5vZmZzZXQsIGNvbnZlcnRpbmcgdG8gdW5zaWduZWQgaW50LiAgRG8gbm90IGluY3JlbWVudCBzZWxmLT5vZmZzZXQuCi0gKiBUaGlzIGRvZXMgbm90IGNoZWNrIGZvciByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQsIHNvIHRoaXMgaXMgY2FsbGVkICJ1bnNhZmUiLgotICovCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB1bnNhZmVHZXRPY3RldChzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYpIAotewotICByZXR1cm4gKHVuc2lnbmVkIGludCkoc2VsZi0+aW5wdXRbc2VsZi0+b2Zmc2V0XSAmIDB4ZmYpOyAgCi19Ci0KLS8qKgotICogUGFyc2UgdGhlIHZhbHVlIGFzIGEgZGVjaW1hbCB1bnNpZ25lZCBpbnRlZ2VyLiAgVGhpcyBkb2VzIG5vdCBjaGVjayBmb3Igd2hpdGVzcGFjZSBvciArIHNpZ24uCi0gKiBJZiB2YWx1ZUxlbmd0aCBpcyAwLCB0aGlzIHN1Y2NlZWRzIHdpdGggcmVzdWx0T3V0IDAuCi0gKiBAcGFyYW0gdmFsdWUKLSAqIEBwYXJhbSB2YWx1ZUxlbmd0aAotICogQHBhcmFtIHJlc3VsdE91dCBvdXRwdXQgdGhlIHBhcnNlZCBpbnRlZ2VyLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUsIGluY2x1ZGluZyBpZiBhbiBlbGVtZW50IG9mIHZhbHVlIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXQuCi0gKi8KLXN0YXRpYyBuZG5fRXJyb3IgcGFyc2VVbnNpZ25lZERlY2ltYWxJbnQodWludDhfdCAqdmFsdWUsIHNpemVfdCB2YWx1ZUxlbmd0aCwgdW5zaWduZWQgaW50ICpyZXN1bHRPdXQpCi17Ci0gIHVuc2lnbmVkIGludCByZXN1bHQgPSAwOwotICAKLSAgc2l6ZV90IGk7Ci0gIGZvciAoaSA9IDA7IGkgPCB2YWx1ZUxlbmd0aDsgKytpKSB7Ci0gICAgdWludDhfdCBkaWdpdCA9IHZhbHVlW2ldOwotICAgIGlmICghKGRpZ2l0ID49ICcwJyAmJiBkaWdpdCA8PSAnOScpKQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9lbGVtZW50X29mX3ZhbHVlX2lzX25vdF9hX2RlY2ltYWxfZGlnaXQ7Ci0KLSAgICByZXN1bHQgKj0gMTA7Ci0gICAgcmVzdWx0ICs9ICh1bnNpZ25lZCBpbnQpKGRpZ2l0IC0gJzAnKTsKLSAgfQotICAgIAotICAqcmVzdWx0T3V0ID0gcmVzdWx0OwotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9kZWNvZGVUeXBlQW5kVmFsdWUoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgKnR5cGUsIHVuc2lnbmVkIGludCAqdmFsdWVPdXQpIAotewotICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAwOwotICBpbnQgZ290Rmlyc3RPY3RldCA9IDA7Ci0gIAotICB3aGlsZSAoMSkgewotICAgIGlmIChzZWxmLT5vZmZzZXQgPj0gc2VsZi0+aW5wdXRMZW5ndGgpCi0gICAgICByZXR1cm4gTkROX0VSUk9SX3JlYWRfcGFzdF90aGVfZW5kX29mX3RoZV9pbnB1dDsKLSAgICAKLSAgICB1bnNpZ25lZCBpbnQgb2N0ZXQgPSB1bnNhZmVSZWFkT2N0ZXQoc2VsZik7Ci0gICAgCi0gICAgaWYgKCFnb3RGaXJzdE9jdGV0KSB7Ci0gICAgICBpZiAob2N0ZXQgPT0gMCkKLSAgICAgICAgcmV0dXJuIE5ETl9FUlJPUl90aGVfZmlyc3RfaGVhZGVyX29jdGV0X21heV9ub3RfYmVfemVybzsKLSAgICAgIAotICAgICAgZ290Rmlyc3RPY3RldCA9IDE7Ci0gICAgfQotICAgIAotICAgIGlmIChvY3RldCAmIG5kbl9CaW5hcnlYbWxfVFRfRklOQUwpIHsKLSAgICAgIC8vIEZpbmlzaGVkLgotICAgICAgKnR5cGUgPSBvY3RldCAmIG5kbl9CaW5hcnlYbWxfVFRfTUFTSzsKLSAgICAgIHZhbHVlID0gKHZhbHVlIDw8IG5kbl9CaW5hcnlYbWxfVFRfVkFMVUVfQklUUykgfCAoKG9jdGV0ID4+IG5kbl9CaW5hcnlYbWxfVFRfQklUUykgJiBuZG5fQmluYXJ5WG1sX1RUX1ZBTFVFX01BU0spOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIHZhbHVlID0gKHZhbHVlIDw8IG5kbl9CaW5hcnlYbWxfUkVHVUxBUl9WQUxVRV9CSVRTKSB8IChvY3RldCAmIG5kbl9CaW5hcnlYbWxfUkVHVUxBUl9WQUxVRV9NQVNLKTsgICAgCi0gIH0KLQotICAqdmFsdWVPdXQgPSB2YWx1ZTsKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRTdGFydERUYWcoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcpCi17Ci0gIGlmIChzZWxmLT5vZmZzZXQgPT0gc2VsZi0+cHJldmlvdXNseVBlZWtlZERUYWdTdGFydE9mZnNldCkgewotICAgIC8vIHBlZWtEVGFnIGFscmVhZHkgZGVjb2RlZCB0aGlzIERUYWcuCi0gICAgaWYgKHNlbGYtPnByZXZpb3VzbHlQZWVrZWREVGFnICE9IGV4cGVjdGVkVGFnKQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9kaWRfbm90X2dldF90aGVfZXhwZWN0ZWRfRFRBRzsKLQotICAgIC8vIEZhc3QgZm9yd2FyZCBwYXN0IHRoZSBoZWFkZXIuCi0gICAgc2VsZi0+b2Zmc2V0ID0gc2VsZi0+cHJldmlvdXNseVBlZWtlZERUYWdFbmRPZmZzZXQ7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgbmRuX0Vycm9yIGVycm9yOwotICAgIHVuc2lnbmVkIGludCB0eXBlOwotICAgIHVuc2lnbmVkIGludCB2YWx1ZTsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfZGVjb2RlVHlwZUFuZFZhbHVlKHNlbGYsICZ0eXBlLCAmdmFsdWUpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLQotICAgIGlmICh0eXBlICE9IG5kbl9CaW5hcnlYbWxfRFRBRykKLSAgICAgIHJldHVybiBORE5fRVJST1JfaGVhZGVyX3R5cGVfaXNfbm90X2FfRFRBRzsKLQotICAgIGlmICh2YWx1ZSAhPSBleHBlY3RlZFRhZykKLSAgICAgIHJldHVybiBORE5fRVJST1JfZGlkX25vdF9nZXRfdGhlX2V4cGVjdGVkX0RUQUc7Ci0gIH0KLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50Q2xvc2Uoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmKQotewotICBpZiAoc2VsZi0+b2Zmc2V0ID49IHNlbGYtPmlucHV0TGVuZ3RoKQotICAgIHJldHVybiBORE5fRVJST1JfcmVhZF9wYXN0X3RoZV9lbmRfb2ZfdGhlX2lucHV0OwotICAKLSAgaWYgKHVuc2FmZVJlYWRPY3RldChzZWxmKSAhPSBuZG5fQmluYXJ5WG1sX0NMT1NFKQotICAgIHJldHVybiBORE5fRVJST1JfZGlkX25vdF9nZXRfdGhlX2V4cGVjdGVkX2VsZW1lbnRfY2xvc2U7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCBleHBlY3RlZFRhZywgaW50ICpnb3RFeHBlY3RlZFRhZykKLXsKLSAgaWYgKHNlbGYtPm9mZnNldCA9PSBzZWxmLT5wcmV2aW91c2x5UGVla2VkRFRhZ1N0YXJ0T2Zmc2V0KQotICAgIC8vIFdlIGFscmVhZHkgZGVjb2RlZCB0aGlzIERUYWcuCi0gICAgKmdvdEV4cGVjdGVkVGFnID0gKHNlbGYtPnByZXZpb3VzbHlQZWVrZWREVGFnID09IGV4cGVjdGVkVGFnID8gMSA6IDApOwotICBlbHNlIHsKLSAgICAvLyBEZWZhdWx0IHRvIDAuCi0gICAgKmdvdEV4cGVjdGVkVGFnID0gMDsKLQotICAgIC8vIEZpcnN0IGNoZWNrIGlmIGl0IGlzIGFuIGVsZW1lbnQgY2xvc2UgKHdoaWNoIGNhbm5vdCBiZSB0aGUgZXhwZWN0ZWQgdGFnKS4gIAotICAgIGlmIChzZWxmLT5vZmZzZXQgPj0gc2VsZi0+aW5wdXRMZW5ndGgpCi0gICAgICByZXR1cm4gTkROX0VSUk9SX3JlYWRfcGFzdF90aGVfZW5kX29mX3RoZV9pbnB1dDsKLSAgICBpZiAodW5zYWZlR2V0T2N0ZXQoc2VsZikgPT0gbmRuX0JpbmFyeVhtbF9DTE9TRSkKLSAgICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLQotICAgIHVuc2lnbmVkIGludCB0eXBlOwotICAgIHVuc2lnbmVkIGludCB2YWx1ZTsKLSAgICBzaXplX3Qgc2F2ZU9mZnNldCA9IHNlbGYtPm9mZnNldDsKLSAgICBuZG5fRXJyb3IgZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9kZWNvZGVUeXBlQW5kVmFsdWUoc2VsZiwgJnR5cGUsICZ2YWx1ZSk7Ci0gICAgLy8gcmVhZEVsZW1lbnRTdGFydERUYWcgd2lsbCB1c2UgdGhpcyB0byBmYXN0IGZvcndhcmQuCi0gICAgc2VsZi0+cHJldmlvdXNseVBlZWtlZERUYWdFbmRPZmZzZXQgPSBzZWxmLT5vZmZzZXQ7Ci0gICAgLy8gUmVzdG9yZSBvZmZzZXQuCi0gICAgc2VsZi0+b2Zmc2V0ID0gc2F2ZU9mZnNldDsKLQotICAgIGlmIChlcnJvcikKLSAgICAgIHJldHVybiBlcnJvcjsKLQotICAgIGlmICh0eXBlID09IG5kbl9CaW5hcnlYbWxfRFRBRykgewotICAgICAgc2VsZi0+cHJldmlvdXNseVBlZWtlZERUYWdTdGFydE9mZnNldCA9IHNhdmVPZmZzZXQ7Ci0gICAgICBzZWxmLT5wcmV2aW91c2x5UGVla2VkRFRhZyA9IHZhbHVlOwotCi0gICAgICBpZiAodmFsdWUgPT0gZXhwZWN0ZWRUYWcpCi0gICAgICAgICpnb3RFeHBlY3RlZFRhZyA9IDE7Ci0gICAgfQotICB9Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkQmluYXJ5RFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBpbnQgYWxsb3dOdWxsLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudFN0YXJ0RFRhZyhzZWxmLCBleHBlY3RlZFRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmIChhbGxvd051bGwpIHsKLSAgICBpZiAoc2VsZi0+b2Zmc2V0ID49IHNlbGYtPmlucHV0TGVuZ3RoKQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9yZWFkX3Bhc3RfdGhlX2VuZF9vZl90aGVfaW5wdXQ7Ci0gIAotICAgIGlmICh1bnNhZmVHZXRPY3RldChzZWxmKSA9PSBuZG5fQmluYXJ5WG1sX0NMT1NFKSB7Ci0gICAgICAvLyBUaGUgYmluYXJ5IGl0ZW0gaXMgbWlzc2luZywgYW5kIHRoaXMgaXMgYWxsb3dlZCwgc28gcmVhZCB0aGUgZWxlbWVudCBjbG9zZSBhbmQgcmV0dXJuIGEgbnVsbCB2YWx1ZS4KLSAgICAgICsrc2VsZi0+b2Zmc2V0OwotICAgICAgdmFsdWUtPnZhbHVlID0gMDsKLSAgICAgIHZhbHVlLT5sZW5ndGggPSAwOwotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICAgIH0KLSAgfQotICAKLSAgdW5zaWduZWQgaW50IGl0ZW1UeXBlOwotICB1bnNpZ25lZCBpbnQgdWludFZhbHVlTGVuZ3RoOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfZGVjb2RlVHlwZUFuZFZhbHVlKHNlbGYsICZpdGVtVHlwZSwgJnVpbnRWYWx1ZUxlbmd0aCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgLy8gSWdub3JlIGl0ZW1UeXBlLgotICB2YWx1ZS0+dmFsdWUgPSBzZWxmLT5pbnB1dCArIHNlbGYtPm9mZnNldDsKLSAgdmFsdWUtPmxlbmd0aCA9IChzaXplX3QpdWludFZhbHVlTGVuZ3RoOwotICBzZWxmLT5vZmZzZXQgKz0gdmFsdWUtPmxlbmd0aDsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudENsb3NlKHNlbGYpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxCaW5hcnlEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIGludCBhbGxvd051bGwsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaW50IGdvdEV4cGVjdGVkVGFnOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoc2VsZiwgZXhwZWN0ZWRUYWcsICZnb3RFeHBlY3RlZFRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudChzZWxmLCBleHBlY3RlZFRhZywgYWxsb3dOdWxsLCB2YWx1ZSkpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIGVsc2UgewotICAgIHZhbHVlLT52YWx1ZSA9IDA7Ci0gICAgdmFsdWUtPmxlbmd0aCA9IDA7Ci0gIH0gIAotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFVEYXRhRFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudFN0YXJ0RFRhZyhzZWxmLCBleHBlY3RlZFRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgdW5zaWduZWQgaW50IGl0ZW1UeXBlOwotICB1bnNpZ25lZCBpbnQgdWludFZhbHVlTGVuZ3RoOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfZGVjb2RlVHlwZUFuZFZhbHVlKHNlbGYsICZpdGVtVHlwZSwgJnVpbnRWYWx1ZUxlbmd0aCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKGl0ZW1UeXBlICE9IG5kbl9CaW5hcnlYbWxfVURBVEEpCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9pdGVtX2lzX25vdF9VREFUQTsKLSAgdmFsdWUtPnZhbHVlID0gc2VsZi0+aW5wdXQgKyBzZWxmLT5vZmZzZXQ7Ci0gIHZhbHVlLT5sZW5ndGggPSB1aW50VmFsdWVMZW5ndGg7Ci0gIHNlbGYtPm9mZnNldCArPSB2YWx1ZS0+bGVuZ3RoOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50Q2xvc2Uoc2VsZikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbFVEYXRhRFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGludCBnb3RFeHBlY3RlZFRhZzsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKHNlbGYsIGV4cGVjdGVkVGFnLCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmIChnb3RFeHBlY3RlZFRhZykgewotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkVURhdGFEVGFnRWxlbWVudChzZWxmLCBleHBlY3RlZFRhZywgdmFsdWUpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgfQotICBlbHNlIHsKLSAgICB2YWx1ZS0+dmFsdWUgPSAwOwotICAgIHZhbHVlLT5sZW5ndGggPSAwOwotICB9ICAKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIHVuc2lnbmVkIGludCAqdmFsdWUpCi17Ci0gIHN0cnVjdCBuZG5fQmxvYiB1ZGF0YVZhbHVlOwotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkVURhdGFEVGFnRWxlbWVudChzZWxmLCBleHBlY3RlZFRhZywgJnVkYXRhVmFsdWUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gcGFyc2VVbnNpZ25lZERlY2ltYWxJbnQodWRhdGFWYWx1ZS52YWx1ZSwgdWRhdGFWYWx1ZS5sZW5ndGgsIHZhbHVlKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBpbnQgKnZhbHVlKQotewotICBpbnQgZ290RXhwZWN0ZWRUYWc7Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKHNlbGYsIGV4cGVjdGVkVGFnLCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gIGlmICghZ290RXhwZWN0ZWRUYWcpIHsKLSAgICAqdmFsdWUgPSAtMTsKLSAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0gIH0KLQotICB1bnNpZ25lZCBpbnQgdW5zaWduZWRWYWx1ZTsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudChzZWxmLCBleHBlY3RlZFRhZywgJnVuc2lnbmVkVmFsdWUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICAqdmFsdWUgPSAoaW50KXVuc2lnbmVkVmFsdWU7Ci0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRUaW1lTWlsbGlzZWNvbmRzRFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBuZG5fTWlsbGlzZWNvbmRzU2luY2UxOTcwICptaWxsaXNlY29uZHMpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgc3RydWN0IG5kbl9CbG9iIGJ5dGVzOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50KHNlbGYsIGV4cGVjdGVkVGFnLCAwLCAmYnl0ZXMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gICptaWxsaXNlY29uZHMgPSAxMDAwLjAgKiBuZG5fQmluYXJ5WG1sRGVjb2Rlcl91bnNpZ25lZEJpZ0VuZGlhblRvRG91YmxlKGJ5dGVzLnZhbHVlLCBieXRlcy5sZW5ndGgpIC8gNDA5Ni4wOwotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7ICAKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbFRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIG5kbl9NaWxsaXNlY29uZHNTaW5jZTE5NzAgKm1pbGxpc2Vjb25kcykKLXsKLSAgaW50IGdvdEV4cGVjdGVkVGFnOwotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhzZWxmLCBleHBlY3RlZFRhZywgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAgIAotICBpZiAoIWdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgKm1pbGxpc2Vjb25kcyA9IC0xLjA7Ci0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICB9Ci0KLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRUaW1lTWlsbGlzZWNvbmRzRFRhZ0VsZW1lbnQoc2VsZiwgZXhwZWN0ZWRUYWcsIG1pbGxpc2Vjb25kcykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotZG91YmxlIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3Vuc2lnbmVkQmlnRW5kaWFuVG9Eb3VibGUodWludDhfdCAqYnl0ZXMsIHNpemVfdCBieXRlc0xlbmd0aCkgCi17Ci0gIGRvdWJsZSByZXN1bHQgPSAwLjA7Ci0gIHNpemVfdCBpOwotICBmb3IgKGkgPSAwOyBpIDwgYnl0ZXNMZW5ndGg7ICsraSkgewotICAgIHJlc3VsdCAqPSAyNTYuMDsKLSAgICByZXN1bHQgKz0gKGRvdWJsZSlieXRlc1tpXTsKLSAgfQotICAKLSAgcmV0dXJuIHJlc3VsdDsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZGVjb2Rlci5oIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmZTE0NjkuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JJTkFSWVhNTERFQ09ERVJfSAotI2RlZmluZSBORE5fQklOQVJZWE1MREVDT0RFUl9ICi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2NvbW1vbi5oPgotI2luY2x1ZGUgIi4uL2Vycm9ycy5oIgotI2luY2x1ZGUgIi4uL3V0aWwvYmxvYi5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciB7Ci0gIHVpbnQ4X3QgKmlucHV0OwotICBzaXplX3QgaW5wdXRMZW5ndGg7Ci0gIHNpemVfdCBvZmZzZXQ7Ci0gIC8vIHBlZWtEVGFnIHNldHMgYW5kIGNoZWNrcyB0aGVzZSwgYW5kIHJlYWRFbGVtZW50U3RhcnREVGFnIHVzZXMgdGhlbSB0byBhdm9pZCByZWFkaW5nIGFnYWluLgotICBzaXplX3QgcHJldmlvdXNseVBlZWtlZERUYWdTdGFydE9mZnNldDsKLSAgc2l6ZV90IHByZXZpb3VzbHlQZWVrZWREVGFnRW5kT2Zmc2V0OwotICB1bnNpZ25lZCBpbnQgcHJldmlvdXNseVBlZWtlZERUYWc7Ci19OwotCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX0JpbmFyeVhtbERlY29kZXJfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgpIAotewotICBzZWxmLT5pbnB1dCA9IGlucHV0OwotICBzZWxmLT5pbnB1dExlbmd0aCA9IGlucHV0TGVuZ3RoOwotICBzZWxmLT5vZmZzZXQgPSAwOwotICBzZWxmLT5wcmV2aW91c2x5UGVla2VkRFRhZ1N0YXJ0T2Zmc2V0ID0gKHNpemVfdCktMTsKLX0KLQotLyoqCi0gKiBEZWNvZGUgdGhlIGhlYWRlcidzIHR5cGUgYW5kIHZhbHVlIGZyb20gc2VsZidzIGlucHV0IHN0YXJ0aW5nIGF0IG9mZnNldC4gVXBkYXRlIG9mZnNldC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHBhcmFtIHR5cGUgb3V0cHV0IGZvciB0aGUgaGVhZGVyIHR5cGUKLSAqIEBwYXJhbSB2YWx1ZSBvdXRwdXQgZm9yIHRoZSBoZWFkZXIgdmFsdWUKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlIGZvciByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQgb3IgaWYgdGhlIGluaXRpYWwgYnl0ZSBpcyB6ZXJvCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9kZWNvZGVUeXBlQW5kVmFsdWUoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgKnR5cGUsIHVuc2lnbmVkIGludCAqdmFsdWUpOwotCi0vKioKLSAqIERlY29kZSB0aGUgaGVhZGVyIGZyb20gc2VsZidzIGlucHV0IHN0YXJ0aW5nIGF0IG9mZnNldCwgZXhwZWN0aW5nIHRoZSB0eXBlIHRvIGJlIERUQUcgYW5kIHRoZSB2YWx1ZSB0byBiZSBleHBlY3RlZFRhZy4KLSAqIFVwZGF0ZSBvZmZzZXQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBleHBlY3RlZFRhZyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIERUQUcKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLCBpbmNsdWRpbmcgYW4gZXJyb3IgaWYgbm90IHRoZSBleHBlY3RlZCB0YWcKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnKTsKLQotLyoqCi0gKiBSZWFkIG9uZSBieXRlIGZyb20gc2VsZidzIGlucHV0IHN0YXJ0aW5nIGF0IG9mZnNldCwgZXhwZWN0aW5nIGl0IHRvIGJlIHRoZSBlbGVtZW50IGNsb3NlLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGFuIGVycm9yIGlmIG5vdCB0aGUgZWxlbWVudCBjbG9zZQotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYpOwotCi0vKioKLSAqIERlY29kZSB0aGUgaGVhZGVyIGZyb20gc2VsZidzIGlucHV0IHN0YXJ0aW5nIGF0IG9mZnNldCwgYW5kIGlmIGl0IGlzIGEgRFRBRyB3aGVyZSB0aGUgdmFsdWUgaXMgdGhlIGV4cGVjdGVkVGFnLAotICogdGhlbiBzZXQgZ290RXhwZWN0ZWRUYWcgdG8gMSwgZWxzZSAwLiAgRG8gbm90IHVwZGF0ZSBvZmZzZXQsIGluY2x1ZGluZyBpZiByZXR1cm5pbmcgYW4gZXJyb3IuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBleHBlY3RlZFRhZyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIERUQUcKLSAqIEBwYXJhbSBnb3RFeHBlY3RlZFRhZyBvdXRwdXQgYSAxIGlmIGdvdCB0aGUgZXhwZWN0ZWQgdGFnLCBlbHNlIDAKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlIGZvciByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBpbnQgKmdvdEV4cGVjdGVkVGFnKTsKLQotLyoqCi0gKiBEZWNvZGUgdGhlIGhlYWRlciBmcm9tIHNlbGYncyBpbnB1dCBzdGFydGluZyBhdCBvZmZzZXQsIGV4cGVjdGluZyB0aGUgdHlwZSB0byBiZSBEVEFHIGFuZCB0aGUgdmFsdWUgdG8gYmUgZXhwZWN0ZWRUYWcuCi0gKiBUaGVuIHJlYWQgb25lIGl0ZW0gb2YgYW55IHR5cGUgKHByZXN1bWFibHkgQkxPQiwgVURBVEEsIFRBRyBvciBBVFRSKSBhbmQgcmV0dXJuIHRoZSBpdGVtJ3MgdmFsdWUgYW5kIGxlbmd0aC4KLSAqIEhvd2V2ZXIsIGlmIGFsbG93TnVsbCBpcyAxLCB0aGVuIHRoZSBpdGVtIG1heSBiZSBhYnNlbnQuCi0gKiBGaW5hbGx5LCByZWFkIHRoZSBlbGVtZW50IGNsb3NlLiAgVXBkYXRlIG9mZnNldC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHBhcmFtIGV4cGVjdGVkVGFnIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgRFRBRwotICogQHBhcmFtIGFsbG93TnVsbCAxIGlmIHRoZSBiaW5hcnkgaXRlbSBtYXkgYmUgbWlzc2luZwotICogQHBhcmFtIHZhbHVlIG91dHB1dCBhIHBvaW50ZXIgdG8gdGhlIGJpbmFyeSBkYXRhIGluc2lkZSBzZWxmJ3MgaW5wdXQgYnVmZmVyLiBIb3dldmVyLCBpZiBhbGxvd051bGwgaXMgMSBhbmQgdGhlCi0gKiBiaW5hcnkgZGF0YSBpdGVtIGlzIGFic2VudCwgdGhlbiBzZXQgdmFsdWUgYW5kIGxlbmd0aCB0byAwLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUsIGluY2x1ZGluZyBhbiBlcnJvciBpZiBub3QgdGhlIGV4cGVjdGVkIHRhZywgb3IgaWYgYWxsb3dOdWxsIGlzIDAKLSAqIGFuZCB0aGUgYmluYXJ5IGRhdGEgaXMgYWJzZW50Ci0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkQmluYXJ5RFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBpbnQgYWxsb3dOdWxsLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKTsKLQotLyoqCi0gKiBQZWVrIGF0IHRoZSBuZXh0IGVsZW1lbnQgYW5kIGlmIGl0IGlzIHRoZSBleHBlY3RlZFRhZywgY2FsbCBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkQmluYXJ5RFRhZ0VsZW1lbnQuCi0gKiBPdGhlcndpc2UsIHNldCB2YWx1ZSBhbmQgdmFsdWVMZW5ndGggdG8gMC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHBhcmFtIGV4cGVjdGVkVGFnIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgRFRBRwotICogQHBhcmFtIGFsbG93TnVsbCAxIGlmIHRoZSBiaW5hcnkgaXRlbSBtYXkgYmUgbWlzc2luZwotICogQHBhcmFtIHZhbHVlIG91dHB1dCBhIHBvaW50ZXIgdG8gdGhlIGJpbmFyeSBkYXRhIGluc2lkZSBzZWxmJ3MgaW5wdXQgYnVmZmVyLiBIb3dldmVyLCBpZiBhbGxvd051bGwgaXMgMSBhbmQgdGhlCi0gKiBiaW5hcnkgZGF0YSBpdGVtIGlzIGFic2VudCwgdGhlbiBzZXQgdmFsdWUgYW5kIGxlbmd0aCB0byAwLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUsIGluY2x1ZGluZyBpZiBhbGxvd051bGwgaXMgMCBhbmQgdGhlIGJpbmFyeSBkYXRhIGlzIGFic2VudAotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsQmluYXJ5RFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBpbnQgYWxsb3dOdWxsLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKTsKLQotLyoqCi0gKiBEZWNvZGUgdGhlIGhlYWRlciBmcm9tIHNlbGYncyBpbnB1dCBzdGFydGluZyBhdCBvZmZzZXQsIGV4cGVjdGluZyB0aGUgdHlwZSB0byBiZSBEVEFHIGFuZCB0aGUgdmFsdWUgdG8gYmUgZXhwZWN0ZWRUYWcuCi0gKiBUaGVuIHJlYWQgb25lIGl0ZW0gZXhwZWN0aW5nIGl0IHRvIGJlIHR5cGUgVURBVEEsIGFuZCByZXR1cm4gdGhlIGl0ZW0ncyB2YWx1ZSBhbmQgbGVuZ3RoLgotICogRmluYWxseSwgcmVhZCB0aGUgZWxlbWVudCBjbG9zZS4gIFVwZGF0ZSBvZmZzZXQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBleHBlY3RlZFRhZyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIERUQUcKLSAqIEBwYXJhbSB2YWx1ZSBvdXRwdXQgYSBwb2ludGVyIHRvIHRoZSBiaW5hcnkgZGF0YSBpbnNpZGUgc2VsZidzIGlucHV0IGJ1ZmZlci4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLCBpbmNsdWRpbmcgYW4gZXJyb3IgaWYgbm90IHRoZSBleHBlY3RlZCB0YWcsIG9yIGlmIHRoZSBpdGVtIGlzIG5vdCBVREFUQS4KLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRVRGF0YURUYWdFbGVtZW50Ci0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCBleHBlY3RlZFRhZywgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSk7Ci0KLS8qKgotICogUGVlayBhdCB0aGUgbmV4dCBlbGVtZW50IGFuZCBpZiBpdCBpcyB0aGUgZXhwZWN0ZWRUYWcsIGNhbGwgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFVEYXRhRFRhZ0VsZW1lbnQuCi0gKiBPdGhlcndpc2UsIHNldCB2YWx1ZSBhbmQgdmFsdWVMZW5ndGggdG8gMC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHBhcmFtIGV4cGVjdGVkVGFnIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgRFRBRwotICogQHBhcmFtIHZhbHVlIG91dHB1dCBhIHBvaW50ZXIgdG8gdGhlIGJpbmFyeSBkYXRhIGluc2lkZSBzZWxmJ3MgaW5wdXQgYnVmZmVyLiBIb3dldmVyLCBpZiBhbGxvd051bGwgaXMgMSBhbmQgdGhlCi0gKiBiaW5hcnkgZGF0YSBpdGVtIGlzIGFic2VudCwgdGhlbiBzZXQgdmFsdWUgYW5kIGxlbmd0aCB0byAwLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVRGF0YURUYWdFbGVtZW50Ci0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCBleHBlY3RlZFRhZywgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSk7Ci0KLS8qKgotICogRGVjb2RlIHRoZSBoZWFkZXIgZnJvbSBzZWxmJ3MgaW5wdXQgc3RhcnRpbmcgYXQgb2Zmc2V0LCBleHBlY3RpbmcgdGhlIHR5cGUgdG8gYmUgRFRBRyBhbmQgdGhlIHZhbHVlIHRvIGJlIGV4cGVjdGVkVGFnLgotICogVGhlbiByZWFkIG9uZSBpdGVtIGV4cGVjdGluZyBpdCB0byBiZSB0eXBlIFVEQVRBLCBwYXJzZSBpdCBhcyBhbiB1bnNpZ25lZCBkZWNpbWFsIGludGVnZXIgYW5kIHJldHVybiB0aGUgaW50ZWdlci4KLSAqIEZpbmFsbHksIHJlYWQgdGhlIGVsZW1lbnQgY2xvc2UuICBVcGRhdGUgb2Zmc2V0LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gZXhwZWN0ZWRUYWcgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBEVEFHCi0gKiBAcGFyYW0gdmFsdWUgb3V0cHV0IHRoZSB1bnNpZ25lZCBpbnRlZ2VyCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGFuIGVycm9yIGlmIG5vdCB0aGUgZXhwZWN0ZWQgdGFnLCBvciBpZiB0aGUgaXRlbSBpcyBub3QgVURBVEEsCi0gKiBvciBjYW4ndCBwYXJzZSB0aGUgaW50ZWdlcgotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFVuc2lnbmVkSW50ZWdlckRUYWdFbGVtZW50Ci0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCBleHBlY3RlZFRhZywgdW5zaWduZWQgaW50ICp2YWx1ZSk7Ci0KLS8qKgotICogUGVlayBhdCB0aGUgbmV4dCBlbGVtZW50LCBhbmQgaWYgaXQgaGFzIHRoZSBleHBlY3RlZFRhZyB0aGVuIGNhbGwgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFVuc2lnbmVkSW50ZWdlckRUYWdFbGVtZW50LgotICogT3RoZXJ3aXNlLCBzZXQgdmFsdWUgdG8gLTEuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBleHBlY3RlZFRhZyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIERUQUcKLSAqIEBwYXJhbSB2YWx1ZSBvdXRwdXQgdGhlIHVuc2lnbmVkIGludGVnZXIgY2FzdCB0byBpbnQsIG9yIC0xIGlmIHRoZSBuZXh0IGVsZW1lbnQgZG9lc24ndCBoYXZlIGV4cGVjdGVkVGFnLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUsIGluY2x1ZGluZyBhbiBlcnJvciBpZiB0aGUgaXRlbSBpcyBub3QgVURBVEEsCi0gKiBvciBjYW4ndCBwYXJzZSB0aGUgaW50ZWdlcgotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBpbnQgKnZhbHVlKTsKLQotLyoqCi0gKiBEZWNvZGUgdGhlIGhlYWRlciBmcm9tIHNlbGYncyBpbnB1dCBzdGFydGluZyBhdCBvZmZzZXQsIGV4cGVjdGluZyB0aGUgdHlwZSB0byBiZSBEVEFHIGFuZCB0aGUgdmFsdWUgdG8gYmUgZXhwZWN0ZWRUYWcuCi0gKiBUaGVuIHJlYWQgb25lIGl0ZW0sIHBhcnNlIGl0IGFzIGFuIHVuc2lnbmVkIGJpZyBlbmRpYW4gaW50ZWdlciBpbiA0MDk2IHRpY2tzIHBlciBzZWNvbmQsIGFuZCBjb252ZXJ0IGl0IHRvIG1pbGxpc2Vjb25kcy4KLSAqIEZpbmFsbHksIHJlYWQgdGhlIGVsZW1lbnQgY2xvc2UuICBVcGRhdGUgb2Zmc2V0LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gZXhwZWN0ZWRUYWcgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBEVEFHCi0gKiBAcGFyYW0gbWlsbGlzZWNvbmRzIG91dHB1dCB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcwotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUsIGluY2x1ZGluZyBhbiBlcnJvciBpZiBub3QgdGhlIGV4cGVjdGVkIHRhZwotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIG5kbl9NaWxsaXNlY29uZHNTaW5jZTE5NzAgKm1pbGxpc2Vjb25kcyk7Ci0KLS8qKgotICogUGVlayBhdCB0aGUgbmV4dCBlbGVtZW50LCBhbmQgaWYgaXQgaGFzIHRoZSBleHBlY3RlZFRhZyB0aGVuIGNhbGwgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudC4KLSAqIE90aGVyd2lzZSwgc2V0IHZhbHVlIHRvIC0xLjAgLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gZXhwZWN0ZWRUYWcgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBEVEFHCi0gKiBAcGFyYW0gbWlsbGlzZWNvbmRzIG91dHB1dCB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgb3IgLTEuMCBpZiB0aGUgbmV4dCBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBleHBlY3RlZFRhZy4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxUaW1lTWlsbGlzZWNvbmRzRFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBuZG5fTWlsbGlzZWNvbmRzU2luY2UxOTcwICptaWxsaXNlY29uZHMpOwotCi0vKioKLSAqIEludGVycHJldCB0aGUgYnl0ZXMgYXMgYW4gdW5zaWduZWQgYmlnIGVuZGlhbiBpbnRlZ2VyIGFuZCBjb252ZXJ0IHRvIGEgZG91YmxlLiBEb24ndCBjaGVjayBmb3Igb3ZlcmZsb3cuCi0gKiBXZSB1c2UgYSBkb3VibGUgYmVjYXVzZSBpdCBpcyBsYXJnZSBlbm91Z2ggdG8gcmVwcmVzZW50IE5ETiB0aW1lICg0MDk2IHRpY2tzIHBlciBzZWNvbmQgc2luY2UgMTk3MCkuCi0gKiBAcGFyYW0gYnl0ZXMgcG9pbnRlciB0byB0aGUgYXJyYXkgb2YgYnl0ZXMKLSAqIEBwYXJhbSBieXRlc0xlbmd0aCB0aGUgbGVuZ3RoIG9mIGJ5dGVzCi0gKiBAcmV0dXJuIHRoZSByZXN1bHQKLSAqLwotZG91YmxlIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3Vuc2lnbmVkQmlnRW5kaWFuVG9Eb3VibGUodWludDhfdCAqYnl0ZXMsIHNpemVfdCBieXRlc0xlbmd0aCk7IAotCi0vKioKLSAqIFNldCB0aGUgb2Zmc2V0IGludG8gdGhlIGlucHV0LCB1c2VkIGZvciB0aGUgbmV4dCByZWFkLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gb2Zmc2V0IHRoZSBuZXcgb2Zmc2V0Ci0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9zZWVrKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgc2l6ZV90IG9mZnNldCkgCi17Ci0gIHNlbGYtPm9mZnNldCA9IG9mZnNldDsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWVsZW1lbnQtcmVhZGVyLmMgYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWVsZW1lbnQtcmVhZGVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1MGE5NzguLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbGVtZW50LXJlYWRlci5jCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlICJiaW5hcnkteG1sLWVsZW1lbnQtcmVhZGVyLmgiCi0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlcl9vblJlY2VpdmVkRGF0YQotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxFbGVtZW50UmVhZGVyICpzZWxmLCB1aW50OF90ICpkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKLXsKLSAgLy8gUHJvY2VzcyBtdWx0aXBsZSBvYmplY3RzIGluIHRoZSBkYXRhLgotICB3aGlsZSgxKSB7Ci0gICAgLy8gU2NhbiB0aGUgaW5wdXQgdG8gY2hlY2sgaWYgYSB3aG9sZSBiaW5hcnkgWE1MIG9iamVjdCBoYXMgYmVlbiByZWFkLgotICAgIG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX3NlZWsoJnNlbGYtPnN0cnVjdHVyZURlY29kZXIsIDApOwotICAgIAotICAgIG5kbl9FcnJvciBlcnJvcjsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfZmluZEVsZW1lbnRFbmQoJnNlbGYtPnN0cnVjdHVyZURlY29kZXIsIGRhdGEsIGRhdGFMZW5ndGgpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgICBpZiAoc2VsZi0+c3RydWN0dXJlRGVjb2Rlci5nb3RFbGVtZW50RW5kKSB7Ci0gICAgICAvLyBHb3QgdGhlIHJlbWFpbmRlciBvZiBhbiBlbGVtZW50LiAgUmVwb3J0IHRvIHRoZSBjYWxsZXIuCi0gICAgICBpZiAoc2VsZi0+dXNlUGFydGlhbERhdGEpIHsKLSAgICAgICAgLy8gV2UgaGF2ZSBwYXJ0aWFsIGRhdGEgZnJvbSBhIHByZXZpb3VzIGNhbGwsIHNvIGFwcGVuZCB0aGlzIGRhdGEgYW5kIHBvaW50IHRvIHBhcnRpYWxEYXRhLgotICAgICAgICBpZiAoKGVycm9yID0gbmRuX0R5bmFtaWNVSW50OEFycmF5X3NldCgmc2VsZi0+cGFydGlhbERhdGEsIGRhdGEsIHNlbGYtPnN0cnVjdHVyZURlY29kZXIub2Zmc2V0LCBzZWxmLT5wYXJ0aWFsRGF0YUxlbmd0aCkpKQotICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgc2VsZi0+cGFydGlhbERhdGFMZW5ndGggKz0gZGF0YUxlbmd0aDsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgKCpzZWxmLT5lbGVtZW50TGlzdGVuZXItPm9uUmVjZWl2ZWRFbGVtZW50KShzZWxmLT5lbGVtZW50TGlzdGVuZXIsIHNlbGYtPnBhcnRpYWxEYXRhLmFycmF5LCBzZWxmLT5wYXJ0aWFsRGF0YUxlbmd0aCk7Ci0gICAgICAgIC8vIEFzc3VtZSB3ZSBkb24ndCBuZWVkIHRvIHVzZSBwYXJ0aWFsRGF0YSBhbnltb3JlIHVudGlsIG5lZWRlZC4KLSAgICAgICAgc2VsZi0+dXNlUGFydGlhbERhdGEgPSAwOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAvLyBXZSBhcmUgbm90IHVzaW5nIHBhcnRpYWxEYXRhLCBzbyBqdXN0IHBvaW50IHRvIHRoZSBpbnB1dCBkYXRhIGJ1ZmZlci4KLSAgICAgICAgKCpzZWxmLT5lbGVtZW50TGlzdGVuZXItPm9uUmVjZWl2ZWRFbGVtZW50KShzZWxmLT5lbGVtZW50TGlzdGVuZXIsIGRhdGEsIHNlbGYtPnN0cnVjdHVyZURlY29kZXIub2Zmc2V0KTsKLSAgICAgICAgCi0gICAgICAvLyBOZWVkIHRvIHJlYWQgYSBuZXcgb2JqZWN0LgotICAgICAgZGF0YSArPSBzZWxmLT5zdHJ1Y3R1cmVEZWNvZGVyLm9mZnNldDsKLSAgICAgIGRhdGFMZW5ndGggLT0gc2VsZi0+c3RydWN0dXJlRGVjb2Rlci5vZmZzZXQ7Ci0gICAgICBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2Rlcl9pbml0aWFsaXplKCZzZWxmLT5zdHJ1Y3R1cmVEZWNvZGVyKTsKLSAgICAgIGlmIChkYXRhTGVuZ3RoID09IDApCi0gICAgICAgIC8vIE5vIG1vcmUgZGF0YSBpbiB0aGUgcGFja2V0LgotICAgICAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0gICAgICAgICAgICAKLSAgICAgIC8vIGVsc2UgbG9vcCBiYWNrIHRvIGRlY29kZS4KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAvLyBTYXZlIHJlbWFpbmluZyBkYXRhIGZvciBhIGxhdGVyIGNhbGwuCi0gICAgICBpZiAoIXNlbGYtPnVzZVBhcnRpYWxEYXRhKSB7Ci0gICAgICAgIHNlbGYtPnVzZVBhcnRpYWxEYXRhID0gMTsKLSAgICAgICAgc2VsZi0+cGFydGlhbERhdGFMZW5ndGggPSAwOwotICAgICAgfQotICAgICAgCi0gICAgICBpZiAoKGVycm9yID0gbmRuX0R5bmFtaWNVSW50OEFycmF5X3NldCgmc2VsZi0+cGFydGlhbERhdGEsIGRhdGEsIGRhdGFMZW5ndGgsIHNlbGYtPnBhcnRpYWxEYXRhTGVuZ3RoKSkpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgIHNlbGYtPnBhcnRpYWxEYXRhTGVuZ3RoICs9IGRhdGFMZW5ndGg7Ci0gICAgICAKLSAgICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLSAgICB9Ci0gIH0gICAgICAKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZWxlbWVudC1yZWFkZXIuaCBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZWxlbWVudC1yZWFkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk0ZjM5Ny4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWVsZW1lbnQtcmVhZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZX1hNTF9FTEVNRU5UX1JFQURFUl9ICi0jZGVmaW5lIE5ETl9CSU5BUllfWE1MX0VMRU1FTlRfUkVBREVSX0gKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5oPgotI2luY2x1ZGUgIi4uL2Vycm9ycy5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaCIKLSNpbmNsdWRlICIuLi91dGlsL2R5bmFtaWMtdWludDgtYXJyYXkuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotICAKLS8qKgotICogQSBCaW5hcnlYbWxFbGVtZW50UmVhZGVyIGxldHMgeW91IGNhbGwgbmRuX0JpbmFyeVhtbEVsZW1lbnRSZWFkZXJfb25SZWNlaXZlZERhdGEgbXVsdGlwbGUgdGltZXMgd2hpY2ggdXNlcyBhbgotICogbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIgdG8gZGV0ZWN0IHRoZSBlbmQgb2YgYSBiaW5hcnkgWE1MIGVsZW1lbnQgYW5kIGNhbGxzCi0gKiAoKmVsZW1lbnRMaXN0ZW5lci0+b25SZWNlaXZlZEVsZW1lbnQpKGVsZW1lbnQsIGVsZW1lbnRMZW5ndGgpIHdpdGggdGhlIGVsZW1lbnQuIAotICogVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIGEgc2luZ2xlIGNhbGwgdG8gb25SZWNlaXZlZERhdGEgbWF5IGNvbnRhaW4gbXVsdGlwbGUgZWxlbWVudHMuCi0gKi8KLXN0cnVjdCBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlciB7Ci0gIHN0cnVjdCBuZG5fRWxlbWVudExpc3RlbmVyICplbGVtZW50TGlzdGVuZXI7Ci0gIHN0cnVjdCBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciBzdHJ1Y3R1cmVEZWNvZGVyOwotICBpbnQgdXNlUGFydGlhbERhdGE7Ci0gIHN0cnVjdCBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgcGFydGlhbERhdGE7Ci0gIHNpemVfdCBwYXJ0aWFsRGF0YUxlbmd0aDsKLX07Ci0KLS8qKgotICogSW5pdGlhbGl6ZSBhbiBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlciBzdHJ1Y3Qgd2l0aCB0aGUgZWxlbWVudExpc3RlbmVyIGFuZCBhIGJ1ZmZlciBmb3Igc2F2aW5nIHBhcnRpYWwgZGF0YS4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbGVtZW50UmVhZGVyIHN0cnVjdAotICogQHBhcmFtIGVsZW1lbnRMaXN0ZW5lciBwb2ludGVyIHRvIHRoZSBuZG5fRWxlbWVudExpc3RlbmVyIHVzZWQgYnkgbmRuX0JpbmFyeVhtbEVsZW1lbnRSZWFkZXJfb25SZWNlaXZlZERhdGEuCi0gKiBAcGFyYW0gYnVmZmVyIHRoZSBhbGxvY2F0ZWQgYnVmZmVyLiAgSWYgcmVhbGxvY0Z1bmN0aW9uIGlzIG51bGwsIHRoaXMgc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byBzYXZlIGEgZnVsbCBlbGVtZW50LCBwZXJoYXBzIDgwMDAgYnl0ZXMuCi0gKiBAcGFyYW0gYnVmZmVyTGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlcgotICogQHBhcmFtIHJlYWxsb2NGdW5jdGlvbiBzZWUgbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aC4gIFRoaXMgbWF5IGJlIDAuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlcl9pbml0aWFsaXplCi0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVsZW1lbnRSZWFkZXIgKnNlbGYsIHN0cnVjdCBuZG5fRWxlbWVudExpc3RlbmVyICplbGVtZW50TGlzdGVuZXIsCi0gICB1aW50OF90ICpidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIHVpbnQ4X3QgKiAoKnJlYWxsb2NGdW5jdGlvbikoc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSAqc2VsZiwgdWludDhfdCAqLCBzaXplX3QpKQotewotICBzZWxmLT5lbGVtZW50TGlzdGVuZXIgPSBlbGVtZW50TGlzdGVuZXI7Ci0gIG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX2luaXRpYWxpemUoJnNlbGYtPnN0cnVjdHVyZURlY29kZXIpOwotICBzZWxmLT51c2VQYXJ0aWFsRGF0YSA9IDA7Ci0gIG5kbl9EeW5hbWljVUludDhBcnJheV9pbml0aWFsaXplKCZzZWxmLT5wYXJ0aWFsRGF0YSwgYnVmZmVyLCBidWZmZXJMZW5ndGgsIHJlYWxsb2NGdW5jdGlvbik7Ci19Ci0KLS8qKgotICogQ29udGludWUgdG8gcmVhZCBiaW5hcnkgWE1MIGRhdGEgdW50aWwgdGhlIGVuZCBvZiBhbiBlbGVtZW50LCB0aGVuIGNhbGwgKCplbGVtZW50TGlzdGVuZXItPm9uUmVjZWl2ZWRFbGVtZW50KShlbGVtZW50LCBlbGVtZW50TGVuZ3RoKS4KLSAqIFRoZSBidWZmZXIgcGFzc2VkIHRvIG9uUmVjZWl2ZWRFbGVtZW50IGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoaXMgY2FsbC4gIElmIHlvdSBuZWVkIHRoZSBkYXRhIGxhdGVyLCB5b3UgbXVzdCBjb3B5LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVsZW1lbnRSZWFkZXIgc3RydWN0Ci0gKiBAcGFyYW0gZGF0YSBwb2ludGVyIHRvIHRoZSBidWZmZXIgd2l0aCB0aGUgYmluYXJ5IFhNTCBieXRlcwotICogQHBhcmFtIGRhdGFMZW5ndGggbGVuZ3RoIG9mIGRhdGEKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlcl9vblJlY2VpdmVkRGF0YQotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxFbGVtZW50UmVhZGVyICpzZWxmLCB1aW50OF90ICpkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbmNvZGVyLmMgYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI3Y2JiYy4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDM1OCArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBEZXJpdmVkIGZyb20gQmluYXJ5WE1MRW5jb2Rlci5qcyBieSBNZWtpIENoZXJhb3VpLgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSAiLi4vdXRpbC9uZG5fbWVtb3J5LmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZW5jb2Rlci5oIgotCi1lbnVtIHsKLSAgRU5DT0RJTkdfTElNSVRfMV9CWVRFID0gKCgxIDw8IG5kbl9CaW5hcnlYbWxfVFRfVkFMVUVfQklUUykgLSAxKSwKLSAgRU5DT0RJTkdfTElNSVRfMl9CWVRFUyA9ICgoMSA8PCAobmRuX0JpbmFyeVhtbF9UVF9WQUxVRV9CSVRTICsgbmRuX0JpbmFyeVhtbF9SRUdVTEFSX1ZBTFVFX0JJVFMpKSAtIDEpLAotICBFTkNPRElOR19MSU1JVF8zX0JZVEVTID0gKCgxIDw8IChuZG5fQmluYXJ5WG1sX1RUX1ZBTFVFX0JJVFMgKyAyICogbmRuX0JpbmFyeVhtbF9SRUdVTEFSX1ZBTFVFX0JJVFMpKSAtIDEpCi19OwotCi0vKioKLSAqIENhbGwgbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aCB0byBlbnN1cmUgdGhhdCB0aGVyZSBpcyBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0LCBhbmQgY29weQotICogYXJyYXkgdG8gdGhlIG91dHB1dC4gIFRoaXMgZG9lcyBub3Qgd3JpdGUgYSBoZWFkZXIuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBhcnJheSB0aGUgYXJyYXkgdG8gY29weQotICogQHBhcmFtIGFycmF5TGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5Ci0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1zdGF0aWMgbmRuX0Vycm9yIHdyaXRlQXJyYXkoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCB1aW50OF90ICphcnJheSwgc2l6ZV90IGFycmF5TGVuZ3RoKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoKHNlbGYtPm91dHB1dCwgc2VsZi0+b2Zmc2V0ICsgYXJyYXlMZW5ndGgpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBuZG5fbWVtY3B5KHNlbGYtPm91dHB1dC0+YXJyYXkgKyBzZWxmLT5vZmZzZXQsIGFycmF5LCBhcnJheUxlbmd0aCk7Ci0gIHNlbGYtPm9mZnNldCArPSBhcnJheUxlbmd0aDsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotLyoqCi0gKiBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB0byBlbmNvZGUgYSBoZWFkZXIgb2YgdmFsdWUgeC4KLSAqLwotc3RhdGljIHNpemVfdCBnZXROSGVhZGVyRW5jb2RpbmdCeXRlcyh1bnNpZ25lZCBpbnQgeCkgCi17Ci0gIC8vIERvIGEgcXVpY2sgY2hlY2sgZm9yIHByZS1jb21waWxlZCByZXN1bHRzLgotICBpZiAoeCA8PSBFTkNPRElOR19MSU1JVF8xX0JZVEUpIAotICAgIHJldHVybiAxOwotICBpZiAoeCA8PSBFTkNPRElOR19MSU1JVF8yX0JZVEVTKSAKLSAgICByZXR1cm4gMjsKLSAgaWYgKHggPD0gRU5DT0RJTkdfTElNSVRfM19CWVRFUykgCi0gICAgcmV0dXJuIDM7Ci0gIAotICBzaXplX3QgbkJ5dGVzID0gMTsKLSAgCi0gIC8vIExhc3QgYnl0ZSBnaXZlcyB5b3UgVFRfVkFMVUVfQklUUy4KLSAgLy8gUmVtYWluZGVyIGVhY2ggZ2l2ZXMgeW91IFJFR1VMQVJfVkFMVUVfQklUUy4KLSAgeCA+Pj0gbmRuX0JpbmFyeVhtbF9UVF9WQUxVRV9CSVRTOwotICB3aGlsZSAoeCAhPSAwKSB7Ci0gICAgKytuQnl0ZXM7Ci0gICAgeCA+Pj0gbmRuX0JpbmFyeVhtbF9SRUdVTEFSX1ZBTFVFX0JJVFM7Ci0gIH0KLSAgCi0gIHJldHVybiBuQnl0ZXM7Ci19Ci0KLS8qKgotICogUmV2ZXJzZSB0aGUgbGVuZ3RoIGJ5dGVzIGluIGFycmF5LgotICogQHBhcmFtIGFycmF5Ci0gKiBAcGFyYW0gbGVuZ3RoCi0gKi8KLXN0YXRpYyB2b2lkIHJldmVyc2UodWludDhfdCAqYXJyYXksIHNpemVfdCBsZW5ndGgpIAotewotICBpZiAobGVuZ3RoID09IDApCi0gICAgcmV0dXJuOwotICAKLSAgdWludDhfdCAqbGVmdCA9IGFycmF5OwotICB1aW50OF90ICpyaWdodCA9IGFycmF5ICsgbGVuZ3RoIC0gMTsKLSAgd2hpbGUgKGxlZnQgPCByaWdodCkgewotICAgIC8vIFN3YXAuCi0gICAgdWludDhfdCB0ZW1wID0gKmxlZnQ7Ci0gICAgKmxlZnQgPSAqcmlnaHQ7Ci0gICAgKnJpZ2h0ID0gdGVtcDsKLSAgICAKLSAgICArK2xlZnQ7Ci0gICAgLS1yaWdodDsKLSAgfQotfQotCi0vKioKLSAqIFdyaXRlIHggYXMgYW4gdW5zaWduZWQgZGVjaW1hbCBpbnRlZ2VyIHRvIHRoZSBvdXRwdXQgd2l0aCB0aGUgZGlnaXRzIGluIHJldmVyc2Ugb3JkZXIsIHVzaW5nIG5kbl9EeW5hbWljVUludDhBcnJheV9lbnN1cmVMZW5ndGguCi0gKiBUaGlzIGRvZXMgbm90IHdyaXRlIGEgaGVhZGVyLgotICogV2UgZW5jb2RlIGluIHJldmVyc2Ugb3JkZXIsIGJlY2F1c2UgdGhpcyBpcyB0aGUgbmF0dXJhbCB3YXkgdG8gZW5jb2RlIHRoZSBkaWdpdHMsIGFuZCB0aGUgY2FsbGVyIGNhbiByZXZlcnNlIGFzIG5lZWRlZC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIHggdGhlIHVuc2lnbmVkIGludCB0byB3cml0ZQotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotc3RhdGljIG5kbl9FcnJvciBlbmNvZGVSZXZlcnNlZFVuc2lnbmVkRGVjaW1hbEludChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB4KSAKLXsKLSAgd2hpbGUgKDEpIHsKLSAgICBuZG5fRXJyb3IgZXJyb3I7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9EeW5hbWljVUludDhBcnJheV9lbnN1cmVMZW5ndGgoc2VsZi0+b3V0cHV0LCBzZWxmLT5vZmZzZXQgKyAxKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gICAgc2VsZi0+b3V0cHV0LT5hcnJheVtzZWxmLT5vZmZzZXQrK10gPSAodWludDhfdCkoeCAlIDEwICsgJzAnKTsKLSAgICB4IC89IDEwOwotICAgIAotICAgIGlmICh4ID09IDApCi0gICAgICBicmVhazsKLSAgfQotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi0vKioKLSAqIFJldmVyc2UgdGhlIGJ1ZmZlciBpbiBzZWxmLT5vdXRwdXQtPmFycmF5IGZyb20gc3RhcnRPZmZzZXQgdG8gdGhlIGN1cnJlbnQgb2Zmc2V0LCB0aGVuIHNoaWZ0IGl0IHJpZ2h0IGJ5IHRoZSBhbW91bnQgCi0gKiBuZWVkZWQgdG8gcHJlZml4IGEgaGVhZGVyIHdpdGggdHlwZSwgdGhlbiBlbmNvZGUgdGhlIGhlYWRlciBhdCBzdGFydE9mZnNldC4KLSAqIFdlIHJldmVyc2UgYW5kIHNoaWZ0IGluIHRoZSBzYW1lIGZ1bmN0aW9uIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGNvcHlpbmcgaWYgd2UgZmlyc3QgcmV2ZXJzZSB0aGVuIHNoaWZ0LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gc3RhcnRPZmZzZXQgdGhlIG9mZnNldCBpbiBzZWxmLT5vdXRwdXQtPmFycmF5IG9mIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIHRvIHNoaWZ0IHJpZ2h0Ci0gKiBAcGFyYW0gdHlwZSB0aGUgaGVhZGVyIHR5cGUKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLXN0YXRpYyBuZG5fRXJyb3IgcmV2ZXJzZUJ1ZmZlckFuZEluc2VydEhlYWRlcgotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCBzaXplX3Qgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGludCB0eXBlKQotewotICBzaXplX3QgbkJ1ZmZlckJ5dGVzID0gc2VsZi0+b2Zmc2V0IC0gc3RhcnRPZmZzZXQ7Ci0gIHNpemVfdCBuSGVhZGVyQnl0ZXMgPSBnZXROSGVhZGVyRW5jb2RpbmdCeXRlcyhuQnVmZmVyQnl0ZXMpOwotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoKHNlbGYtPm91dHB1dCwgc2VsZi0+b2Zmc2V0ICsgbkhlYWRlckJ5dGVzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgLy8gVG8gcmV2ZXJzZSBhbmQgc2hpZnQgYXQgdGhlIHNhbWUgdGltZSwgd2UgZmlyc3Qgc2hpZnQgbkhlYWRlckJ5dGVzIHRvIHRoZSBkZXN0aW5hdGlvbiB3aGlsZSByZXZlcnNpbmcsCi0gIC8vICAgdGhlbiByZXZlcnNlIHRoZSByZW1haW5pbmcgYnl0ZXMgaW4gcGxhY2UuCi0gIHVpbnQ4X3QgKmZyb20gPSBzZWxmLT5vdXRwdXQtPmFycmF5ICsgc3RhcnRPZmZzZXQ7Ci0gIHVpbnQ4X3QgKmZyb21FbmQgPSBmcm9tICsgbkhlYWRlckJ5dGVzOwotICB1aW50OF90ICp0byA9IHNlbGYtPm91dHB1dC0+YXJyYXkgKyBzdGFydE9mZnNldCArIG5CdWZmZXJCeXRlcyArIG5IZWFkZXJCeXRlcyAtIDE7Ci0gIHdoaWxlIChmcm9tIDwgZnJvbUVuZCkKLSAgICAqKHRvLS0pID0gKihmcm9tKyspOwotICAvLyBSZXZlcnNlIHRoZSByZW1haW5pbmcgYnl0ZXMgaW4gcGxhY2UgKGlmIGFueSkuCi0gIGlmIChuQnVmZmVyQnl0ZXMgPiBuSGVhZGVyQnl0ZXMpCi0gICAgcmV2ZXJzZShzZWxmLT5vdXRwdXQtPmFycmF5ICsgc3RhcnRPZmZzZXQgKyBuSGVhZGVyQnl0ZXMsIG5CdWZmZXJCeXRlcyAtIG5IZWFkZXJCeXRlcyk7Ci0gIAotICAvLyBPdmVycmlkZSB0aGUgb2Zmc2V0IHRvIGZvcmNlIGVuY29kZVR5cGVBbmRWYWx1ZSB0byBlbmNvZGUgYXQgc3RhcnRPZmZzZXQsIHRoZW4gZml4IHRoZSBvZmZzZXQuCi0gIHNlbGYtPm9mZnNldCA9IHN0YXJ0T2Zmc2V0OwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfZW5jb2RlVHlwZUFuZFZhbHVlKHNlbGYsIHR5cGUsIG5CdWZmZXJCeXRlcykpKQotICAgIC8vIFdlIGRvbid0IHJlYWxseSBleHBlY3QgdG8gZ2V0IGFuIGVycm9yLCBzaW5jZSB3ZSBoYXZlIGFscmVhZHkgZW5zdXJlZCB0aGUgbGVuZ3RoLgotICAgIHJldHVybiBlcnJvcjsKLSAgc2VsZi0+b2Zmc2V0ID0gc3RhcnRPZmZzZXQgKyBuSGVhZGVyQnl0ZXMgKyBuQnVmZmVyQnl0ZXM7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLS8qKgotICogU3BsaXQgdGhlIGFic29sdXRlIHZhbHVlIG9mIHgsIHJvdW5kZWQgdG8gYW4gaW50ZWdlciBpbnRvIDMyIGJpdCB1bnNpZ25lZCBpbnRlZ2VycyBoaTMyIGFuZCBsbzMyLgotICogV2UgbmVlZCB0aGlzIGJlY2F1c2Ugbm90IGFsbCBDIGNvbXBpbGVycyBzdXBwb3J0IDY0IGJpdCBsb25nIGxvbmcgaW50ZWdlcnMsIHNvIHdlIGNhcnJ5IGFyb3VuZAotICogYSBoaWdoIHByZWNpc2lvbiB2YWx1ZSBhcyBhIGRvdWJsZSwgd2hpY2ggd2UgYXNzdW1lIGhhcyBtb3JlIHRoYW4gMzIgYml0cy4KLSAqIEJ1dCB3ZSB3YW50IHRvIGRvIGJpdC13aXNlIG9wZXJhdGlvbnMgb24gaW50ZWdlcnMuCi0gKiBAcGFyYW0geCB0aGUgZG91YmxlIHZhbHVlCi0gKiBAcGFyYW0gaGkzMiBvdXRwdXQgdGhlIGhpZ2ggMzIgYml0cwotICogQHBhcmFtIGxvMzIgb3V0cHV0IHRoZSBsb3cgMzIgYml0cwotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgc3BsaXRBYnNEb3VibGUoZG91YmxlIHgsIHVuc2lnbmVkIGxvbmcgKmhpMzIsIHVuc2lnbmVkIGxvbmcgKmxvMzIpCi17Ci0gIGlmICh4IDwgMCkKLSAgICB4ID0gLXg7Ci0gIHggPSByb3VuZCh4KTsKLSAgCi0gIGRvdWJsZSB0d29Qb3dlcjMyID0gNDI5NDk2NzI5Ni4wOwotICBkb3VibGUgbG8zMkRvdWJsZSA9IGZtb2QoeCwgdHdvUG93ZXIzMik7Ci0gICpsbzMyID0gKHVuc2lnbmVkIGxvbmcpbG8zMkRvdWJsZTsKLSAgKmhpMzIgPSAodW5zaWduZWQgbG9uZykoKHggLSBsbzMyRG91YmxlKSAvIHR3b1Bvd2VyMzIpOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfZW5jb2RlVHlwZUFuZFZhbHVlKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHR5cGUsIHVuc2lnbmVkIGludCB2YWx1ZSkKLXsKLSAgaWYgKHR5cGUgPiBuZG5fQmluYXJ5WG1sX1VEQVRBKQotICAgIHJldHVybiBORE5fRVJST1JfaGVhZGVyX3R5cGVfaXNfb3V0X29mX3JhbmdlOwotICAKLSAgLy8gRW5jb2RlIGJhY2t3YXJkcy4gQ2FsY3VsYXRlIGhvdyBtYW55IGJ5dGVzIHdlIG5lZWQuCi0gIHNpemVfdCBuRW5jb2RpbmdCeXRlcyA9IGdldE5IZWFkZXJFbmNvZGluZ0J5dGVzKHZhbHVlKTsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aChzZWxmLT5vdXRwdXQsIHNlbGYtPm9mZnNldCArIG5FbmNvZGluZ0J5dGVzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotCi0gIC8vIEJvdHRvbSA0IGJpdHMgb2YgdmFsdWUgZ28gaW4gbGFzdCBieXRlIHdpdGggdGFnLgotICBzZWxmLT5vdXRwdXQtPmFycmF5W3NlbGYtPm9mZnNldCArIG5FbmNvZGluZ0J5dGVzIC0gMV0gPSAKLSAgICAoKG5kbl9CaW5hcnlYbWxfVFRfTUFTSyAmIHR5cGUpIHwgCi0gICAgKChuZG5fQmluYXJ5WG1sX1RUX1ZBTFVFX01BU0sgJiB2YWx1ZSkgPDwgbmRuX0JpbmFyeVhtbF9UVF9CSVRTKSkgfAotICAgIG5kbl9CaW5hcnlYbWxfVFRfRklOQUw7IC8vIHNldCB0b3AgYml0IGZvciBsYXN0IGJ5dGUKLSAgdmFsdWUgPj49IG5kbl9CaW5hcnlYbWxfVFRfVkFMVUVfQklUUzsKLSAgCi0gIC8vIFJlc3Qgb2YgdmFsdWUgZ29lcyBpbnRvIHByZWNlZGluZyBieXRlcywgNyBiaXRzIHBlciBieXRlLiAoWmVybyB0b3AgYml0IGlzICJtb3JlIiBmbGFnLikKLSAgc2l6ZV90IGkgPSBzZWxmLT5vZmZzZXQgKyBuRW5jb2RpbmdCeXRlcyAtIDI7Ci0gIHdoaWxlICh2YWx1ZSAhPSAwICYmIGkgPj0gc2VsZi0+b2Zmc2V0KSB7Ci0gICAgc2VsZi0+b3V0cHV0LT5hcnJheVtpXSA9ICh2YWx1ZSAmIG5kbl9CaW5hcnlYbWxfUkVHVUxBUl9WQUxVRV9NQVNLKTsKLSAgICB2YWx1ZSA+Pj0gbmRuX0JpbmFyeVhtbF9SRUdVTEFSX1ZBTFVFX0JJVFM7Ci0gICAgLS1pOwotICB9Ci0gIGlmICh2YWx1ZSAhPSAwKQotICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gaWYgZ2V0TkhlYWRlckVuY29kaW5nQnl0ZXMgaXMgY29ycmVjdC4KLSAgICByZXR1cm4gTkROX0VSUk9SX2VuY29kZVR5cGVBbmRWYWx1ZV9taXNjYWxjdWxhdGVkX05fZW5jb2RpbmdfYnl0ZXM7Ci0gIAotICBzZWxmLT5vZmZzZXQrPSBuRW5jb2RpbmdCeXRlczsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZikKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aChzZWxmLT5vdXRwdXQsIHNlbGYtPm9mZnNldCArIDEpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBzZWxmLT5vdXRwdXQtPmFycmF5W3NlbGYtPm9mZnNldF0gPSBuZG5fQmluYXJ5WG1sX0NMT1NFOwotICBzZWxmLT5vZmZzZXQgKz0gMTsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYihzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX2VuY29kZVR5cGVBbmRWYWx1ZShzZWxmLCBuZG5fQmluYXJ5WG1sX0JMT0IsIHZhbHVlLT5sZW5ndGgpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gd3JpdGVBcnJheShzZWxmLCB2YWx1ZS0+dmFsdWUsIHZhbHVlLT5sZW5ndGgpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB0YWcsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhzZWxmLCB0YWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iKHNlbGYsIHZhbHVlKSkpCi0gICAgcmV0dXJuIGVycm9yOyAgCi0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2Uoc2VsZikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVURhdGEoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl9lbmNvZGVUeXBlQW5kVmFsdWUoc2VsZiwgbmRuX0JpbmFyeVhtbF9VREFUQSwgdmFsdWUtPmxlbmd0aCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSB3cml0ZUFycmF5KHNlbGYsIHZhbHVlLT52YWx1ZSwgdmFsdWUtPmxlbmd0aCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVURhdGFEVGFnRWxlbWVudChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB0YWcsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhzZWxmLCB0YWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVRGF0YShzZWxmLCB2YWx1ZSkpKQotICAgIHJldHVybiBlcnJvcjsgIAotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKHNlbGYpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVuc2lnbmVkRGVjaW1hbEludChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB2YWx1ZSkKLXsKLSAgLy8gRmlyc3Qgd3JpdGUgdGhlIGRlY2ltYWwgaW50ICh0byBmaW5kIG91dCBob3cgbWFueSBieXRlcyBpdCBpcyksIHRoZW4gc2hpZnQgaXQgZm9yd2FyZCB0byBtYWtlIHJvb20gZm9yIHRoZSBoZWFkZXIuCi0gIHNpemVfdCBzdGFydE9mZnNldCA9IHNlbGYtPm9mZnNldDsKLSAgCi0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IGVuY29kZVJldmVyc2VkVW5zaWduZWREZWNpbWFsSW50KHNlbGYsIHZhbHVlKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IHJldmVyc2VCdWZmZXJBbmRJbnNlcnRIZWFkZXIoc2VsZiwgc3RhcnRPZmZzZXQsIG5kbl9CaW5hcnlYbWxfVURBVEEpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVuc2lnbmVkRGVjaW1hbEludERUYWdFbGVtZW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHRhZywgdW5zaWduZWQgaW50IHZhbHVlKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRTdGFydERUYWcoc2VsZiwgdGFnKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVW5zaWduZWREZWNpbWFsSW50KHNlbGYsIHZhbHVlKSkpCi0gICAgcmV0dXJuIGVycm9yOyAgCi0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2Uoc2VsZikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQWJzRG91YmxlQmlnRW5kaWFuQmxvYihzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIGRvdWJsZSB2YWx1ZSkKLXsKLSAgdW5zaWduZWQgbG9uZyBoaTMyLCBsbzMyOwotICBzcGxpdEFic0RvdWJsZSh2YWx1ZSwgJmhpMzIsICZsbzMyKTsKLSAgCi0gIC8vIEZpcnN0IGVuY29kZSB0aGUgYmlnIGVuZGlhbiBiYWNrd2FyZHMsIHRoZW4gcmV2ZXJzZUJ1ZmZlckFuZEluc2VydEhlYWRlciB3aWxsIHJldmVyc2UgaXQuCi0gIHNpemVfdCBzdGFydE9mZnNldCA9IHNlbGYtPm9mZnNldDsKLSAgCi0gIG5kbl9FcnJvciBlcnJvcjsKLSAgd2hpbGUgKGxvMzIgIT0gMCkgewotICAgIGlmICgoZXJyb3IgPSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoKHNlbGYtPm91dHB1dCwgc2VsZi0+b2Zmc2V0ICsgMSkpKQotICAgICAgcmV0dXJuIGVycm9yOwotICAgIAotICAgIHNlbGYtPm91dHB1dC0+YXJyYXlbc2VsZi0+b2Zmc2V0KytdID0gKHVpbnQ4X3QpKGxvMzIgJiAweGZmKTsKLSAgICBsbzMyID4+PSA4OwotICB9Ci0gIAotICBpZiAoaGkzMiAhPSAwKSB7Ci0gICAgLy8gUGFkIHRoZSBsbyB2YWx1ZXMgb3V0IHRvIDQgYnl0ZXMuCi0gICAgd2hpbGUgKHNlbGYtPm9mZnNldCAtIHN0YXJ0T2Zmc2V0IDwgNCkgewotICAgICAgaWYgKChlcnJvciA9IG5kbl9EeW5hbWljVUludDhBcnJheV9lbnN1cmVMZW5ndGgoc2VsZi0+b3V0cHV0LCBzZWxmLT5vZmZzZXQgKyAxKSkpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgICAgIHNlbGYtPm91dHB1dC0+YXJyYXlbc2VsZi0+b2Zmc2V0KytdID0gMDsKLSAgICB9Ci0gICAgCi0gICAgLy8gRW5jb2RlIGhpMzIKLSAgICB3aGlsZSAoaGkzMiAhPSAwKSB7Ci0gICAgICBpZiAoKGVycm9yID0gbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aChzZWxmLT5vdXRwdXQsIHNlbGYtPm9mZnNldCArIDEpKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIAotICAgICAgc2VsZi0+b3V0cHV0LT5hcnJheVtzZWxmLT5vZmZzZXQrK10gPSAodWludDhfdCkoaGkzMiAmIDB4ZmYpOwotICAgICAgaGkzMiA+Pj0gODsKLSAgICB9Ci0gIH0KLSAgCi0gIGlmICgoZXJyb3IgPSByZXZlcnNlQnVmZmVyQW5kSW5zZXJ0SGVhZGVyKHNlbGYsIHN0YXJ0T2Zmc2V0LCBuZG5fQmluYXJ5WG1sX0JMT0IpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB0YWcsIGRvdWJsZSBtaWxsaXNlY29uZHMpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhzZWxmLCB0YWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQWJzRG91YmxlQmlnRW5kaWFuQmxvYihzZWxmLCAobWlsbGlzZWNvbmRzIC8gMTAwMC4wKSAqIDQwOTYuMCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKHNlbGYpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19CmRpZmYgLS1naXQgYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuaCBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZW5jb2Rlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWZhNmI5Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllYTUxFTkNPREVSX0gKLSNkZWZpbmUgTkROX0JJTkFSWVhNTEVOQ09ERVJfSAotCi0jaW5jbHVkZSAiLi4vZXJyb3JzLmgiCi0jaW5jbHVkZSAiLi4vdXRpbC9keW5hbWljLXVpbnQ4LWFycmF5LmgiCi0jaW5jbHVkZSAiLi4vdXRpbC9ibG9iLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKiBBbiBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QgaXMgdXNlZCBieSBhbGwgdGhlIGVuY29kaW5nIGZ1bmN0aW9ucy4gIFlvdSBzaG91bGQgaW5pdGlhbGl6ZSBpdCB3aXRoCi0gKiAgbmRuX0JpbmFyeVhtbEVuY29kZXJfaW5pdGlhbGl6ZS4KLSAqLwotc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyIHsKLSAgc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSAqb3V0cHV0OyAvKio8IEEgcG9pbnRlciB0byBhIG5kbl9EeW5hbWljVUludDhBcnJheSB3aGljaCByZWNlaXZlcyB0aGUgZW5jb2RlZCBvdXRwdXQgKi8KLSAgc2l6ZV90IG9mZnNldDsgICAgICAgICAgICAgICAgICAgICAgICAvKio8IHRoZSBvZmZzZXQgaW50byBvdXRwdXQuYXJyYXkgZm9yIHRoZSBuZXh0IGVuY29kaW5nICovCi19OwotCi0vKioKLSAqIEluaXRpYWxpemUgYW4gbmRuX0JpbmFyeVhtbEVuY29kZXJfaW5pdGlhbGl6ZSBzdHJ1Y3Qgd2l0aCB0aGUgYXJndW1lbnRzIGZvciBpbml0aWFsaXppbmcgdGhlIG5kbl9EeW5hbWljVUludDhBcnJheS4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIG91dHB1dCBBIHBvaW50ZXIgdG8gYSBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgc3RydWN0IHdoaWNoIHJlY2VpdmVzIHRoZSBlbmNvZGVkIG91dHB1dC4gIFRoZSBzdHJ1Y3QgbXVzdAotICogcmVtYWluIHZhbGlkIGR1cmluZyB0aGUgZW50aXJlIGxpZmUgb2YgdGhpcyBuZG5fQmluYXJ5WG1sRW5jb2Rlci4gSWYgdGhlIG91dHB1dC0+cmVhbGxvYwotICogZnVuY3Rpb24gcG9pbnRlciBpcyBudWxsLCBpdHMgYXJyYXkgbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gcmVjZWl2ZSB0aGUgZW50aXJlIGVuY29kaW5nLgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX0JpbmFyeVhtbEVuY29kZXJfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHN0cnVjdCBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgKm91dHB1dCkgCi17Ci0gIHNlbGYtPm91dHB1dCA9IG91dHB1dDsKLSAgc2VsZi0+b2Zmc2V0ID0gMDsKLX0KLQotLyoqCi0gKiBFbmNvZGUgYSBoZWFkZXIgd2l0aCB0aGUgdHlwZSBhbmQgdmFsdWUgYW5kIHdyaXRlIGl0IHRvIHNlbGYtPm91dHB1dC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIHR5cGUgdGhlIGhlYWRlciB0eXBlCi0gKiBAcGFyYW0gdmFsdWUgdGhlIGhlYWRlciB2YWx1ZQotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX2VuY29kZVR5cGVBbmRWYWx1ZShzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB0eXBlLCB1bnNpZ25lZCBpbnQgdmFsdWUpOwotCi0vKioKLSAqIFdyaXRlIGFuIGVsZW1lbnQgc3RhcnQgaGVhZGVyIHVzaW5nIERUQUcgd2l0aCB0aGUgdGFnIHRvIHNlbGYtPm91dHB1dC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIHRhZyB0aGUgRFRBRyB0YWcKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB0YWcpIAotewotICByZXR1cm4gbmRuX0JpbmFyeVhtbEVuY29kZXJfZW5jb2RlVHlwZUFuZFZhbHVlKHNlbGYsIG5kbl9CaW5hcnlYbWxfRFRBRywgdGFnKTsKLX0KLQotLyoqCi0gKiBXcml0ZSBhbiBlbGVtZW50IGNsb3NlIHRvIHNlbGYtPm91dHB1dC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZik7Ci0KLS8qKgotICogV3JpdGUgYSBCTE9CIGhlYWRlciwgdGhlbiB0aGUgYnl0ZXMgb2YgdGhlIGJsb2IgdmFsdWUgdG8gc2VsZi0+b3V0cHV0LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gdmFsdWUgQSBCbG9iIHdpdGggdGhlIGFycmF5IG9mIGJ5dGVzIGZvciB0aGUgdmFsdWUuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSk7Ci0KLS8qKgotICogV3JpdGUgYW4gZWxlbWVudCBzdGFydCBoZWFkZXIgdXNpbmcgRFRBRyB3aXRoIHRoZSB0YWcgdG8gc2VsZi0+b3V0cHV0LCB0aGVuIHRoZSBibG9iLCB0aGVuIGFuIGVsZW1lbnQgY2xvc2UuCi0gKiAoSWYgeW91IHdhbnQgdG8ganVzdCB3cml0ZSB0aGUgYmxvYiwgdXNlIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYiAuKQotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gdGFnIHRoZSBEVEFHIHRhZwotICogQHBhcmFtIHZhbHVlIEEgQmxvYiB3aXRoIHRoZSBhcnJheSBvZiBieXRlcyBmb3IgdGhlIHZhbHVlLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHRhZywgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSk7Ci0KLS8qKgotICogSWYgdmFsdWUgb3IgdmFsdWVMZW4gaXMgMCB0aGVuIGRvIG5vdGhpbmcsIG90aGVyd2lzZSBjYWxsIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QuCi0gKiBAcGFyYW0gdGFnIFRoZSBEVEFHIHRhZy4KLSAqIEBwYXJhbSB2YWx1ZSBBIEJsb2Igd2l0aCB0aGUgYXJyYXkgb2YgYnl0ZXMgZm9yIHRoZSB2YWx1ZS4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlT3B0aW9uYWxCbG9iRFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHRhZywgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSkKLXsKLSAgaWYgKHZhbHVlLT52YWx1ZSAmJiB2YWx1ZS0+bGVuZ3RoID4gMCkKLSAgICByZXR1cm4gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iRFRhZ0VsZW1lbnQoc2VsZiwgdGFnLCB2YWx1ZSk7Ci0gIGVsc2UKLSAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLS8qKgotICogV3JpdGUgYSBVREFUQSBoZWFkZXIsIHRoZW4gdGhlIGJ5dGVzIG9mIHRoZSBVREFUQSB2YWx1ZSB0byBzZWxmLT5vdXRwdXQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSB2YWx1ZSBBIEJsb2Igd2l0aCB0aGUgYXJyYXkgb2YgYnl0ZXMgZm9yIHRoZSB2YWx1ZS4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVEYXRhKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSk7Ci0KLS8qKgotICogV3JpdGUgYW4gZWxlbWVudCBzdGFydCBoZWFkZXIgdXNpbmcgRFRBRyB3aXRoIHRoZSB0YWcgdG8gc2VsZi0+b3V0cHV0LCB0aGVuIHRoZSBVREFUQSB2YWx1ZSwgdGhlbiBhbiBlbGVtZW50IGNsb3NlLgotICogKElmIHlvdSB3YW50IHRvIGp1c3Qgd3JpdGUgdGhlIFVEQVRBIHZhbHVlLCB1c2UgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVRGF0YSAuKQotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gdGFnIHRoZSBEVEFHIHRhZwotICogQHBhcmFtIHZhbHVlIEEgQmxvYiB3aXRoIHRoZSBhcnJheSBvZiBieXRlcyBmb3IgdGhlIHZhbHVlLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVURhdGFEVGFnRWxlbWVudChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB0YWcsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpOwotCi0vKioKLSAqIElmIHZhbHVlIG9yIHZhbHVlTGVuIGlzIDAgdGhlbiBkbyBub3RoaW5nLCBvdGhlcndpc2UgY2FsbCBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVEYXRhRFRhZ0VsZW1lbnQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSB0YWcgdGhlIERUQUcgdGFnCi0gKiBAcGFyYW0gdmFsdWUgQSBCbG9iIHdpdGggdGhlIGFycmF5IG9mIGJ5dGVzIGZvciB0aGUgdmFsdWUuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1zdGF0aWMgaW5saW5lIG5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVURhdGFEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgdGFnLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKQotewotICBpZiAodmFsdWUtPnZhbHVlICYmIHZhbHVlLT5sZW5ndGggPiAwKQotICAgIHJldHVybiBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVEYXRhRFRhZ0VsZW1lbnQoc2VsZiwgdGFnLCB2YWx1ZSk7Ci0gIGVsc2UKLSAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLS8qKgotICogV3JpdGUgYSBVREFUQSBoZWFkZXIsIHRoZW4gdGhlIHZhbHVlIGFzIGFuIHVuc2lnbmVkIGRlY2ltYWwgaW50ZWdlci4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIHZhbHVlIHRoZSB1bnNpZ25lZCBpbnQKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVuc2lnbmVkRGVjaW1hbEludChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB2YWx1ZSk7Ci0KLS8qKgotICogV3JpdGUgYW4gZWxlbWVudCBzdGFydCBoZWFkZXIgdXNpbmcgRFRBRyB3aXRoIHRoZSB0YWcgdG8gc2VsZi0+b3V0cHV0LCB0aGVuIHRoZSB2YWx1ZSBhcyBhbiB1bnNpZ25lZCBkZWNpbWFsIGludGVnZXIsIAotICogdGhlbiBhbiBlbGVtZW50IGNsb3NlLgotICogKElmIHlvdSB3YW50IHRvIGp1c3Qgd3JpdGUgdGhlIGludGVnZXIsIHVzZSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVuc2lnbmVkRGVjaW1hbEludCAuKQotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gdGFnIHRoZSBEVEFHIHRhZwotICogQHBhcmFtIHZhbHVlIHRoZSB1bnNpZ25lZCBpbnQKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVuc2lnbmVkRGVjaW1hbEludERUYWdFbGVtZW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHRhZywgdW5zaWduZWQgaW50IHZhbHVlKTsKLQotLyoqCi0gKiBJZiB2YWx1ZSBpcyBuZWdhdGl2ZSB0aGVuIGRvIG5vdGhpbmcsIG90aGVyd2lzZSBjYWxsIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVW5zaWduZWREZWNpbWFsSW50RFRhZ0VsZW1lbnQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSB0YWcgdGhlIERUQUcgdGFnCi0gKiBAcGFyYW0gdmFsdWUgbmVnYXRpdmUgZm9yIG5vbmUsIG90aGVyd2lzZSB1c2UgKHVuc2lnbmVkIGludCl2YWx1ZQotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbFVuc2lnbmVkRGVjaW1hbEludERUYWdFbGVtZW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHRhZywgaW50IHZhbHVlKQotewotICBpZiAodmFsdWUgPj0gMCkKLSAgICByZXR1cm4gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVbnNpZ25lZERlY2ltYWxJbnREVGFnRWxlbWVudChzZWxmLCB0YWcsIChzaXplX3QpdmFsdWUpOwotICBlbHNlCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi0vKioKLSAqIFdyaXRlIGEgQkxPQiBoZWFkZXIsIHRoZW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHZhbHVlLCByb3VuZGVkIHRvIGFuIGludGVnZXIsIHRvIHNlbGYtPm91dHB1dCBlbmNvZGVkIGFzIGJpZyBlbmRpYW4uCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSB2YWx1ZSB0aGUgZG91YmxlIHRvIGVuY29kZSBhcyBiaWcgZW5kaWFuLiAgSWYgdmFsdWUgaXMgMCwgdGhlIGJpZyBlbmRpYW4gZW5jb2RpbmcgaGFzIHplcm8gYnl0ZXMuCi0gKiBUaGUgdmFsdWUgaXMgY29udmVydGVkIHRvIGFic29sdXRlIHZhbHVlLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQWJzRG91YmxlQmlnRW5kaWFuQmxvYihzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIGRvdWJsZSB2YWx1ZSk7Ci0KLS8qKgotICogV3JpdGUgYW4gZWxlbWVudCBzdGFydCBoZWFkZXIgdXNpbmcgRFRBRyB3aXRoIHRoZSB0YWcgdG8gc2VsZi0+b3V0cHV0LCB0aGVuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBtaWxsaXNlY29uZHMKLSAqIGFzIGEgYmlnIGVuZGlhbiBCTE9CIGNvbnZlcnRlZCB0byA0MDk2IHRpY2tzIHBlciBzZWNvbmQsIHRoZW4gYW4gZWxlbWVudCBjbG9zZS4KLSAqIChJZiB5b3Ugd2FudCB0byBqdXN0IHdyaXRlIHRoZSBpbnRlZ2VyLCB1c2UgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVbnNpZ25lZERlY2ltYWxJbnQgLikKLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIHRhZyB0aGUgRFRBRyB0YWcKLSAqIEBwYXJhbSBtaWxsaXNlY29uZHMgdGhlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVUaW1lTWlsbGlzZWNvbmRzRFRhZ0VsZW1lbnQoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgdGFnLCBkb3VibGUgbWlsbGlzZWNvbmRzKTsKLQotLyoqCi0gKiBJZiBtaWxsaXNlY29uZHMgaXMgbmVnYXRpdmUgdGhlbiBkbyBub3RoaW5nLCBvdGhlcndpc2UgY2FsbCBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIHRhZyB0aGUgRFRBRyB0YWcKLSAqIEBwYXJhbSBtaWxsaXNlY29uZHMgbmVnYXRpdmUgZm9yIG5vbmUsIG90aGVyd2lzZSB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcwotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbFRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgdGFnLCBkb3VibGUgbWlsbGlzZWNvbmRzKQotewotICBpZiAobWlsbGlzZWNvbmRzID49IDApCi0gICAgcmV0dXJuIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50KHNlbGYsIHRhZywgbWlsbGlzZWNvbmRzKTsKLSAgZWxzZQotICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZm9yd2FyZGluZy1lbnRyeS5jIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1mb3J3YXJkaW5nLWVudHJ5LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZWQ1MmEuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1mb3J3YXJkaW5nLWVudHJ5LmMKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBEZXJpdmVkIGZyb20gRm9yd2FyZGluZ0VudHJ5LmpzIGJ5IE1la2kgQ2hlcmFvdWkuCi0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgImJpbmFyeS14bWwuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWZvcndhcmRpbmctZW50cnkuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLW5hbWUuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWtleS5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtcHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmgiCi0KLW5kbl9FcnJvciBuZG5fZW5jb2RlQmluYXJ5WG1sRm9yd2FyZGluZ0VudHJ5KHN0cnVjdCBuZG5fRm9yd2FyZGluZ0VudHJ5ICpmb3J3YXJkaW5nRW50cnksIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2RlcikKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50U3RhcnREVGFnKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19Gb3J3YXJkaW5nRW50cnkpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVURhdGFEVGFnRWxlbWVudAotICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19BY3Rpb24sICZmb3J3YXJkaW5nRW50cnktPmFjdGlvbikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9lbmNvZGVCaW5hcnlYbWxOYW1lKCZmb3J3YXJkaW5nRW50cnktPnByZWZpeCwgZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgLy8gVGhpcyB3aWxsIHNraXAgZW5jb2RpbmcgaWYgdGhlcmUgaXMgbm8gcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LgotICBpZiAoKGVycm9yID0gbmRuX2VuY29kZUJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCgmZm9yd2FyZGluZ0VudHJ5LT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVW5zaWduZWREZWNpbWFsSW50RFRhZ0VsZW1lbnQKLSAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfRmFjZUlELCBmb3J3YXJkaW5nRW50cnktPmZhY2VJZCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVW5zaWduZWREZWNpbWFsSW50RFRhZ0VsZW1lbnQKLSAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfRm9yd2FyZGluZ0ZsYWdzLCAKLSAgICAgICBuZG5fRm9yd2FyZGluZ0ZsYWdzX2dldEZvcndhcmRpbmdFbnRyeUZsYWdzKCZmb3J3YXJkaW5nRW50cnktPmZvcndhcmRpbmdGbGFncykpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVW5zaWduZWREZWNpbWFsSW50RFRhZ0VsZW1lbnQKLSAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfRnJlc2huZXNzU2Vjb25kcywgZm9yd2FyZGluZ0VudHJ5LT5mcmVzaG5lc3NTZWNvbmRzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7ICAKLX0KLQotbmRuX0Vycm9yIG5kbl9kZWNvZGVCaW5hcnlYbWxGb3J3YXJkaW5nRW50cnkoc3RydWN0IG5kbl9Gb3J3YXJkaW5nRW50cnkgKmZvcndhcmRpbmdFbnRyeSwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudFN0YXJ0RFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfRm9yd2FyZGluZ0VudHJ5KSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAgIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVURhdGFEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19BY3Rpb24sICZmb3J3YXJkaW5nRW50cnktPmFjdGlvbikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVCaW5hcnlYbWxOYW1lKCZmb3J3YXJkaW5nRW50cnktPnByZWZpeCwgZGVjb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVPcHRpb25hbEJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCgmZm9yd2FyZGluZ0VudHJ5LT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIGRlY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19GYWNlSUQsICZmb3J3YXJkaW5nRW50cnktPmZhY2VJZCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGludCBmb3J3YXJkaW5nRW50cnlGbGFnczsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbFVuc2lnbmVkSW50ZWdlckRUYWdFbGVtZW50Ci0gICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0ZvcndhcmRpbmdGbGFncywgJmZvcndhcmRpbmdFbnRyeUZsYWdzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoZm9yd2FyZGluZ0VudHJ5RmxhZ3MgPj0gMCkKLSAgICBuZG5fRm9yd2FyZGluZ0ZsYWdzX3NldEZvcndhcmRpbmdFbnRyeUZsYWdzKCZmb3J3YXJkaW5nRW50cnktPmZvcndhcmRpbmdGbGFncywgZm9yd2FyZGluZ0VudHJ5RmxhZ3MpOwotICBlbHNlCi0gICAgLy8gVGhpcyBzZXRzIHRoZSBkZWZhdWx0IGZsYWdzLgotICAgIG5kbl9Gb3J3YXJkaW5nRmxhZ3NfaW5pdGlhbGl6ZSgmZm9yd2FyZGluZ0VudHJ5LT5mb3J3YXJkaW5nRmxhZ3MpOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbFVuc2lnbmVkSW50ZWdlckRUYWdFbGVtZW50Ci0gICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0ZyZXNobmVzc1NlY29uZHMsICZmb3J3YXJkaW5nRW50cnktPmZyZXNobmVzc1NlY29uZHMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0KLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50Q2xvc2UoZGVjb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZm9yd2FyZGluZy1lbnRyeS5oIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1mb3J3YXJkaW5nLWVudHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwOGYyOTIuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1mb3J3YXJkaW5nLWVudHJ5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZX1hNTF9GT1JXQVJESU5HX0VOVFJZX0gKLSNkZWZpbmUgTkROX0JJTkFSWV9YTUxfRk9SV0FSRElOR19FTlRSWV9ICi0KLSNpbmNsdWRlICIuLi9lcnJvcnMuaCIKLSNpbmNsdWRlICIuLi9mb3J3YXJkaW5nLWVudHJ5LmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1lbmNvZGVyLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1kZWNvZGVyLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBFbmNvZGUgdGhlIG5kbl9Gb3J3YXJkaW5nRW50cnkgc3RydWN0IHVzaW5nIEJpbmFyeSBYTUwuCi0gKiBAcGFyYW0gZm9yd2FyZGluZ0VudHJ5IHBvaW50ZXIgdG8gdGhlIG5kbl9Gb3J3YXJkaW5nRW50cnkgc3RydWN0Ci0gKiBAcGFyYW0gZW5jb2RlciBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLW5kbl9FcnJvciBuZG5fZW5jb2RlQmluYXJ5WG1sRm9yd2FyZGluZ0VudHJ5KHN0cnVjdCBuZG5fRm9yd2FyZGluZ0VudHJ5ICpmb3J3YXJkaW5nRW50cnksIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2Rlcik7Ci0KLS8qKgotICogRXhwZWN0IHRoZSBuZXh0IGVsZW1lbnQgdG8gYmUgYSBCaW5hcnkgWE1MIEZvcndhcmRpbmdFbnRyeSBhbmQgZGVjb2RlIGludG8gdGhlIG5kbl9Gb3J3YXJkaW5nRW50cnkgc3RydWN0LgotICogQHBhcmFtIGZvcndhcmRpbmdFbnRyeSBwb2ludGVyIHRvIHRoZSBuZG5fRm9yd2FyZGluZ0VudHJ5IHN0cnVjdAotICogQHBhcmFtIGRlY29kZXIgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGlmIHRoZSBuZXh0IGVsZW1lbnQgaXMgbm90IEtleUxvY2F0b3IuCi0gKi8KLW5kbl9FcnJvciBuZG5fZGVjb2RlQmluYXJ5WG1sRm9yd2FyZGluZ0VudHJ5KHN0cnVjdCBuZG5fRm9yd2FyZGluZ0VudHJ5ICpmb3J3YXJkaW5nRW50cnksIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2Rlcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1pbnRlcmVzdC5jIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1pbnRlcmVzdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGRhM2U0Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtaW50ZXJlc3QuYworKysgL2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBEZXJpdmVkIGZyb20gSW50ZXJlc3QuanMgYnkgTWVraSBDaGVyYW91aS4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1lbmNvZGVyLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1kZWNvZGVyLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1uYW1lLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWludGVyZXN0LmgiCi0KLXN0YXRpYyBuZG5fRXJyb3IgZW5jb2RlRXhjbHVkZShzdHJ1Y3QgbmRuX0V4Y2x1ZGUgKmV4Y2x1ZGUsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2RlcikKLXsKLSAgaWYgKGV4Y2x1ZGUtPm5FbnRyaWVzID09IDApCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICAKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50U3RhcnREVGFnKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19FeGNsdWRlKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgLy8gVE9ETzogRG8gd2Ugd2FudCB0byBvcmRlciB0aGUgY29tcG9uZW50cyAoZXhjZXB0IGZvciBBTlkpPwotICBzaXplX3QgaTsKLSAgZm9yIChpID0gMDsgaSA8IGV4Y2x1ZGUtPm5FbnRyaWVzOyArK2kpIHsKLSAgICBzdHJ1Y3QgbmRuX0V4Y2x1ZGVFbnRyeSAqZW50cnkgPSAmZXhjbHVkZS0+ZW50cmllc1tpXTsKLSAgICAKLSAgICBpZiAoZW50cnktPnR5cGUgPT0gbmRuX0V4Y2x1ZGVfQ09NUE9ORU5UKSB7Ci0gICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iRFRhZ0VsZW1lbnQoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0NvbXBvbmVudCwgJmVudHJ5LT5jb21wb25lbnQudmFsdWUpKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLSAgICBlbHNlIGlmIChlbnRyeS0+dHlwZSA9PSBuZG5fRXhjbHVkZV9BTlkpIHsKLSAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRTdGFydERUYWcoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0FueSkpKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2UoZW5jb2RlcikpKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJldHVybiBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9FeGNsdWRlVHlwZTsKLSAgfQotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7ICAKLX0KLQotc3RhdGljIG5kbl9FcnJvciBkZWNvZGVFeGNsdWRlKHN0cnVjdCBuZG5fRXhjbHVkZSAqZXhjbHVkZSwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudFN0YXJ0RFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfRXhjbHVkZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgZXhjbHVkZS0+bkVudHJpZXMgPSAwOwotICB3aGlsZSAoMSkgewotICAgIGludCBnb3RFeHBlY3RlZFRhZzsKLSAgICAKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0NvbXBvbmVudCwgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgICByZXR1cm4gZXJyb3I7ICAgIAotICAgIGlmIChnb3RFeHBlY3RlZFRhZykgewotICAgICAgLy8gQ29tcG9uZW50Ci0gICAgICBzdHJ1Y3QgbmRuX0Jsb2IgY29tcG9uZW50OwotICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ29tcG9uZW50LCAwLCAmY29tcG9uZW50KSkpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgICAgIC8vIEFkZCB0aGUgY29tcG9uZW50IGVudHJ5LgotICAgICAgaWYgKGV4Y2x1ZGUtPm5FbnRyaWVzID49IGV4Y2x1ZGUtPm1heEVudHJpZXMpCi0gICAgICAgIHJldHVybiBORE5fRVJST1JfcmVhZF9hbl9lbnRyeV9wYXN0X3RoZV9tYXhpbXVtX251bWJlcl9vZl9lbnRyaWVzX2FsbG93ZWRfaW5fdGhlX2V4Y2x1ZGU7Ci0gICAgICBuZG5fRXhjbHVkZUVudHJ5X2luaXRpYWxpemUoZXhjbHVkZS0+ZW50cmllcyArIGV4Y2x1ZGUtPm5FbnRyaWVzLCBuZG5fRXhjbHVkZV9DT01QT05FTlQsIGNvbXBvbmVudC52YWx1ZSwgY29tcG9uZW50Lmxlbmd0aCk7Ci0gICAgICArK2V4Y2x1ZGUtPm5FbnRyaWVzOwotCi0gICAgICBjb250aW51ZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19BbnksICZnb3RFeHBlY3RlZFRhZykpKQotICAgICAgcmV0dXJuIGVycm9yOyAgICAKLSAgICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICAgIC8vIEFueQotICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19BbnkpKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50Q2xvc2UoZGVjb2RlcikpKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gICAgICAvLyBBZGQgdGhlIGFueSBlbnRyeS4KLSAgICAgIGlmIChleGNsdWRlLT5uRW50cmllcyA+PSBleGNsdWRlLT5tYXhFbnRyaWVzKQotICAgICAgICByZXR1cm4gTkROX0VSUk9SX3JlYWRfYW5fZW50cnlfcGFzdF90aGVfbWF4aW11bV9udW1iZXJfb2ZfZW50cmllc19hbGxvd2VkX2luX3RoZV9leGNsdWRlOwotICAgICAgbmRuX0V4Y2x1ZGVFbnRyeV9pbml0aWFsaXplKGV4Y2x1ZGUtPmVudHJpZXMgKyBleGNsdWRlLT5uRW50cmllcywgbmRuX0V4Y2x1ZGVfQU5ZLCAwLCAwKTsKLSAgICAgICsrZXhjbHVkZS0+bkVudHJpZXM7Ci0KLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLSAgICAKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0Jsb29tLCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICAgIHJldHVybiBlcnJvcjsgICAgCi0gICAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgICAvLyBTa2lwIHRoZSBCbG9vbSBhbmQgdHJlYXQgaXQgYXMgQW55LgotICAgICAgc3RydWN0IG5kbl9CbG9iIHZhbHVlOwotICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQmxvb20sIDAsICZ2YWx1ZSkpKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gICAgICAvLyBBZGQgdGhlIGFueSBlbnRyeS4KLSAgICAgIGlmIChleGNsdWRlLT5uRW50cmllcyA+PSBleGNsdWRlLT5tYXhFbnRyaWVzKQotICAgICAgICByZXR1cm4gTkROX0VSUk9SX3JlYWRfYW5fZW50cnlfcGFzdF90aGVfbWF4aW11bV9udW1iZXJfb2ZfZW50cmllc19hbGxvd2VkX2luX3RoZV9leGNsdWRlOwotICAgICAgbmRuX0V4Y2x1ZGVFbnRyeV9pbml0aWFsaXplKGV4Y2x1ZGUtPmVudHJpZXMgKyBleGNsdWRlLT5uRW50cmllcywgbmRuX0V4Y2x1ZGVfQU5ZLCAwLCAwKTsKLSAgICAgICsrZXhjbHVkZS0+bkVudHJpZXM7Ci0KLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLSAgICAKLSAgICAvLyBFbHNlIG5vIG1vcmUgZW50cmllcy4KLSAgICBicmVhazsKLSAgfQotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50Q2xvc2UoZGVjb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9lbmNvZGVCaW5hcnlYbWxJbnRlcmVzdChzdHJ1Y3QgbmRuX0ludGVyZXN0ICppbnRlcmVzdCwgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRTdGFydERUYWcoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0ludGVyZXN0KSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAgIAotICBpZiAoKGVycm9yID0gbmRuX2VuY29kZUJpbmFyeVhtbE5hbWUoJmludGVyZXN0LT5uYW1lLCBlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlT3B0aW9uYWxVbnNpZ25lZERlY2ltYWxJbnREVGFnRWxlbWVudAotICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19NaW5TdWZmaXhDb21wb25lbnRzLCBpbnRlcmVzdC0+bWluU3VmZml4Q29tcG9uZW50cykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlT3B0aW9uYWxVbnNpZ25lZERlY2ltYWxJbnREVGFnRWxlbWVudAotICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19NYXhTdWZmaXhDb21wb25lbnRzLCBpbnRlcmVzdC0+bWF4U3VmZml4Q29tcG9uZW50cykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgLy8gVGhpcyB3aWxsIHNraXAgZW5jb2RpbmcgaWYgdGhlcmUgaXMgbm8gcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LgotICBpZiAoKGVycm9yID0gbmRuX2VuY29kZUJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCgmaW50ZXJlc3QtPnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIC8vIFRoaXMgd2lsbCBza2lwIGVuY29kaW5nIGlmIHRoZXJlIGlzIG5vIGV4Y2x1ZGUuCi0gIGlmICgoZXJyb3IgPSBlbmNvZGVFeGNsdWRlKCZpbnRlcmVzdC0+ZXhjbHVkZSwgZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLQotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbFVuc2lnbmVkRGVjaW1hbEludERUYWdFbGVtZW50Ci0gICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0NoaWxkU2VsZWN0b3IsIGludGVyZXN0LT5jaGlsZFNlbGVjdG9yKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoaW50ZXJlc3QtPmFuc3dlck9yaWdpbktpbmQgPj0gMCAmJiBpbnRlcmVzdC0+YW5zd2VyT3JpZ2luS2luZCAhPSBuZG5fSW50ZXJlc3RfREVGQVVMVF9BTlNXRVJfT1JJR0lOX0tJTkQpIHsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVbnNpZ25lZERlY2ltYWxJbnREVGFnRWxlbWVudAotICAgICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0Fuc3dlck9yaWdpbktpbmQsICh1bnNpZ25lZCBpbnQpaW50ZXJlc3QtPmFuc3dlck9yaWdpbktpbmQpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgfQotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbFVuc2lnbmVkRGVjaW1hbEludERUYWdFbGVtZW50Ci0gICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1Njb3BlLCBpbnRlcmVzdC0+c2NvcGUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbFRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudAotICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19JbnRlcmVzdExpZmV0aW1lLCBpbnRlcmVzdC0+aW50ZXJlc3RMaWZldGltZU1pbGxpc2Vjb25kcykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsQmxvYkRUYWdFbGVtZW50KGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19Ob25jZSwgJmludGVyZXN0LT5ub25jZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRDbG9zZShlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOyAgCi19Ci0KLW5kbl9FcnJvciBuZG5fZGVjb2RlQmluYXJ5WG1sSW50ZXJlc3Qoc3RydWN0IG5kbl9JbnRlcmVzdCAqaW50ZXJlc3QsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2RlcikKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRTdGFydERUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0ludGVyZXN0KSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAgIAotICBpZiAoKGVycm9yID0gbmRuX2RlY29kZUJpbmFyeVhtbE5hbWUoJmludGVyZXN0LT5uYW1lLCBkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAgICAgIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfTWluU3VmZml4Q29tcG9uZW50cywgJmludGVyZXN0LT5taW5TdWZmaXhDb21wb25lbnRzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfTWF4U3VmZml4Q29tcG9uZW50cywgJmludGVyZXN0LT5tYXhTdWZmaXhDb21wb25lbnRzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVPcHRpb25hbEJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCgmaW50ZXJlc3QtPnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgZGVjb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGludCBnb3RFeHBlY3RlZFRhZzsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19FeGNsdWRlLCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmIChnb3RFeHBlY3RlZFRhZykgewotICAgIGlmICgoZXJyb3IgPSBkZWNvZGVFeGNsdWRlKCZpbnRlcmVzdC0+ZXhjbHVkZSwgZGVjb2RlcikpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIGVsc2UKLSAgICBpbnRlcmVzdC0+ZXhjbHVkZS5uRW50cmllcyA9IDA7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ2hpbGRTZWxlY3RvciwgJmludGVyZXN0LT5jaGlsZFNlbGVjdG9yKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQW5zd2VyT3JpZ2luS2luZCwgJmludGVyZXN0LT5hbnN3ZXJPcmlnaW5LaW5kKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfU2NvcGUsICZpbnRlcmVzdC0+c2NvcGUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50Ci0gICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19JbnRlcmVzdExpZmV0aW1lLCAmaW50ZXJlc3QtPmludGVyZXN0TGlmZXRpbWVNaWxsaXNlY29uZHMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsQmluYXJ5RFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfTm9uY2UsIDAsICZpbnRlcmVzdC0+bm9uY2UpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0KLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50Q2xvc2UoZGVjb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtaW50ZXJlc3QuaCBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtaW50ZXJlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMyYWZlNC4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWludGVyZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZWE1MSU5URVJFU1RfSAotI2RlZmluZSBORE5fQklOQVJZWE1MSU5URVJFU1RfSAotCi0jaW5jbHVkZSAiLi4vZXJyb3JzLmgiCi0jaW5jbHVkZSAiLi4vaW50ZXJlc3QuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWVuY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWRlY29kZXIuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1uZG5fRXJyb3IgbmRuX2VuY29kZUJpbmFyeVhtbEludGVyZXN0KHN0cnVjdCBuZG5fSW50ZXJlc3QgKmludGVyZXN0LCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKmVuY29kZXIpOwotCi1uZG5fRXJyb3IgbmRuX2RlY29kZUJpbmFyeVhtbEludGVyZXN0KHN0cnVjdCBuZG5fSW50ZXJlc3QgKmludGVyZXN0LCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1rZXkuYyBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwta2V5LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNTU5MTEuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1rZXkuYworKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBEZXJpdmVkIGZyb20gS2V5LmpzIGJ5IE1la2kgQ2hlcmFvdWkuCi0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgImJpbmFyeS14bWwuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLXN0cnVjdHVyZS1kZWNvZGVyLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1rZXkuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLW5hbWUuaCIKLQotc3RhdGljIG5kbl9FcnJvciBkZWNvZGVLZXlOYW1lRGF0YShzdHJ1Y3QgbmRuX0tleUxvY2F0b3IgKmtleUxvY2F0b3IsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2RlcikKLXsKLSAgaW50IGdvdEV4cGVjdGVkVGFnOwotICBuZG5fRXJyb3IgZXJyb3I7IAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICBrZXlMb2NhdG9yLT5rZXlOYW1lVHlwZSA9IG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfUFVCTElDX0tFWV9ESUdFU1Q7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudAotICAgICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgMCwgJmtleUxvY2F0b3ItPmtleURhdGEpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgfQotICBlbHNlIHsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlckNlcnRpZmljYXRlRGlnZXN0LCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICAgIGtleUxvY2F0b3ItPmtleU5hbWVUeXBlID0gbmRuX0tleU5hbWVUeXBlX1BVQkxJU0hFUl9DRVJUSUZJQ0FURV9ESUdFU1Q7Ci0gICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50Ci0gICAgICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19QdWJsaXNoZXJDZXJ0aWZpY2F0ZURpZ2VzdCwgMCwgJmtleUxvY2F0b3ItPmtleURhdGEpKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVySXNzdWVyS2V5RGlnZXN0LCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgICAgIGtleUxvY2F0b3ItPmtleU5hbWVUeXBlID0gbmRuX0tleU5hbWVUeXBlX1BVQkxJU0hFUl9JU1NVRVJfS0VZX0RJR0VTVDsKLSAgICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudAotICAgICAgICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19QdWJsaXNoZXJJc3N1ZXJLZXlEaWdlc3QsIDAsICZrZXlMb2NhdG9yLT5rZXlEYXRhKSkpCi0gICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVySXNzdWVyQ2VydGlmaWNhdGVEaWdlc3QsICZnb3RFeHBlY3RlZFRhZykpKQotICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgICAgICAga2V5TG9jYXRvci0+a2V5TmFtZVR5cGUgPSBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0lTU1VFUl9DRVJUSUZJQ0FURV9ESUdFU1Q7Ci0gICAgICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudAotICAgICAgICAgICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlcklzc3VlckNlcnRpZmljYXRlRGlnZXN0LCAwLCAma2V5TG9jYXRvci0+a2V5RGF0YSkpKQotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIC8vIEtleSBuYW1lIGRhdGEgaXMgb21pdHRlZC4KLSAgICAgICAgICBrZXlMb2NhdG9yLT5rZXlOYW1lVHlwZSA9IC0xOwotICAgICAgICAgIGtleUxvY2F0b3ItPmtleURhdGEubGVuZ3RoID0gMDsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX2VuY29kZUJpbmFyeVhtbEtleUxvY2F0b3Ioc3RydWN0IG5kbl9LZXlMb2NhdG9yICprZXlMb2NhdG9yLCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKmVuY29kZXIpCi17Ci0gIGlmICgoaW50KWtleUxvY2F0b3ItPnR5cGUgPCAwKQotICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLQotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRTdGFydERUYWcoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0tleUxvY2F0b3IpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0KLSAgaWYgKGtleUxvY2F0b3ItPnR5cGUgPT0gbmRuX0tleUxvY2F0b3JUeXBlX0tFWSkgewotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfS2V5LCAma2V5TG9jYXRvci0+a2V5RGF0YSkpKQotICAgICAgcmV0dXJuIGVycm9yOyAgICAKLSAgfQotICBlbHNlIGlmIChrZXlMb2NhdG9yLT50eXBlID09IG5kbl9LZXlMb2NhdG9yVHlwZV9DRVJUSUZJQ0FURSkgewotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ2VydGlmaWNhdGUsICZrZXlMb2NhdG9yLT5rZXlEYXRhKSkpCi0gICAgICByZXR1cm4gZXJyb3I7ICAgIAotICB9Ci0gIGVsc2UgaWYgKGtleUxvY2F0b3ItPnR5cGUgPT0gbmRuX0tleUxvY2F0b3JUeXBlX0tFWU5BTUUpIHsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50U3RhcnREVGFnKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19LZXlOYW1lKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9lbmNvZGVCaW5hcnlYbWxOYW1lKCZrZXlMb2NhdG9yLT5rZXlOYW1lLCBlbmNvZGVyKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gICAgaWYgKChpbnQpa2V5TG9jYXRvci0+a2V5TmFtZVR5cGUgPj0gMCAmJiBrZXlMb2NhdG9yLT5rZXlEYXRhLmxlbmd0aCA+IDApIHsKLSAgICAgIGlmIChrZXlMb2NhdG9yLT5rZXlOYW1lVHlwZSA9PSBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX1BVQkxJQ19LRVlfRElHRVNUKSB7Ci0gICAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudAotICAgICAgICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsICZrZXlMb2NhdG9yLT5rZXlEYXRhKSkpCi0gICAgICAgICAgcmV0dXJuIGVycm9yOyAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGtleUxvY2F0b3ItPmtleU5hbWVUeXBlID09IG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfQ0VSVElGSUNBVEVfRElHRVNUKSB7Ci0gICAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudAotICAgICAgICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19QdWJsaXNoZXJDZXJ0aWZpY2F0ZURpZ2VzdCwgJmtleUxvY2F0b3ItPmtleURhdGEpKSkKLSAgICAgICAgICByZXR1cm4gZXJyb3I7ICAgIAotICAgICAgfQotICAgICAgZWxzZSBpZiAoa2V5TG9jYXRvci0+a2V5TmFtZVR5cGUgPT0gbmRuX0tleU5hbWVUeXBlX1BVQkxJU0hFUl9JU1NVRVJfS0VZX0RJR0VTVCkgewotICAgICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iRFRhZ0VsZW1lbnQKLSAgICAgICAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVySXNzdWVyS2V5RGlnZXN0LCAma2V5TG9jYXRvci0+a2V5RGF0YSkpKQotICAgICAgICAgIHJldHVybiBlcnJvcjsgICAgCi0gICAgICB9Ci0gICAgICBlbHNlIGlmIChrZXlMb2NhdG9yLT5rZXlOYW1lVHlwZSA9PSBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0lTU1VFUl9DRVJUSUZJQ0FURV9ESUdFU1QpIHsKLSAgICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50Ci0gICAgICAgICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlcklzc3VlckNlcnRpZmljYXRlRGlnZXN0LCAma2V5TG9jYXRvci0+a2V5RGF0YSkpKQotICAgICAgICAgIHJldHVybiBlcnJvcjsgICAgCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9LZXlOYW1lVHlwZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKGVuY29kZXIpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgfQotICBlbHNlCi0gICAgcmV0dXJuIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX0tleUxvY2F0b3JUeXBlOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fZGVjb2RlQmluYXJ5WG1sS2V5TG9jYXRvcihzdHJ1Y3QgbmRuX0tleUxvY2F0b3IgKmtleUxvY2F0b3IsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2RlcikKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRTdGFydERUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0tleUxvY2F0b3IpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0KLSAgaW50IGdvdEV4cGVjdGVkVGFnOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0tleSwgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICBrZXlMb2NhdG9yLT50eXBlID0gbmRuX0tleUxvY2F0b3JUeXBlX0tFWTsKLSAgICAKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50KGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19LZXksIDAsICZrZXlMb2NhdG9yLT5rZXlEYXRhKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19DZXJ0aWZpY2F0ZSwgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gICAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgICBrZXlMb2NhdG9yLT50eXBlID0gbmRuX0tleUxvY2F0b3JUeXBlX0NFUlRJRklDQVRFOwotICAgIAotICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudAotICAgICAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ2VydGlmaWNhdGUsIDAsICZrZXlMb2NhdG9yLT5rZXlEYXRhKSkpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0tleU5hbWUsICZnb3RFeHBlY3RlZFRhZykpKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICAgICAga2V5TG9jYXRvci0+dHlwZSA9IG5kbl9LZXlMb2NhdG9yVHlwZV9LRVlOQU1FOwotICAgICAgICAKLSAgICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19LZXlOYW1lKSkpCi0gICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICBpZiAoKGVycm9yID0gbmRuX2RlY29kZUJpbmFyeVhtbE5hbWUoJmtleUxvY2F0b3ItPmtleU5hbWUsIGRlY29kZXIpKSkKLSAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIGlmICgoZXJyb3IgPSBkZWNvZGVLZXlOYW1lRGF0YShrZXlMb2NhdG9yLCBkZWNvZGVyKSkpCi0gICAgICAgICAgcmV0dXJuIGVycm9yOyAgICAgICAgCi0gICAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudENsb3NlKGRlY29kZXIpKSkKLSAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBORE5fRVJST1JfZGVjb2RlQmluYXJ5WG1sS2V5TG9jYXRvcl91bnJlY29nbml6ZWRfa2V5X2xvY2F0b3JfdHlwZTsKLSAgICB9Ci0gIH0KLQotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX2RlY29kZU9wdGlvbmFsQmluYXJ5WG1sS2V5TG9jYXRvcihzdHJ1Y3QgbmRuX0tleUxvY2F0b3IgKmtleUxvY2F0b3IsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2RlcikKLXsKLSAgaW50IGdvdEV4cGVjdGVkVGFnOwotICBuZG5fRXJyb3IgZXJyb3I7IAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0tleUxvY2F0b3IsICZnb3RFeHBlY3RlZFRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVCaW5hcnlYbWxLZXlMb2NhdG9yKGtleUxvY2F0b3IsIGRlY29kZXIpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgfQotICBlbHNlCi0gICAgbmRuX0tleUxvY2F0b3JfaW5pdGlhbGl6ZShrZXlMb2NhdG9yLCBrZXlMb2NhdG9yLT5rZXlOYW1lLmNvbXBvbmVudHMsIGtleUxvY2F0b3ItPmtleU5hbWUubWF4Q29tcG9uZW50cyk7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19CmRpZmYgLS1naXQgYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWtleS5oIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1rZXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZkOGY1NC4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWtleS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JJTkFSWVhNTEtFWV9ICi0jZGVmaW5lIE5ETl9CSU5BUllYTUxLRVlfSAotCi0jaW5jbHVkZSAiLi4va2V5LWxvY2F0b3IuaCIKLSNpbmNsdWRlICIuLi9lcnJvcnMuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWVuY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWRlY29kZXIuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIEVuY29kZSB0aGUgbmRuX0tleUxvY2F0b3Igc3RydWN0IHVzaW5nIEJpbmFyeSBYTUwuICBJZiBrZXlMb2NhdG9yLT50eXBlIGlzIC0xLCB0aGVuIGRvIG5vdGhpbmcuIAotICogQHBhcmFtIGtleUxvY2F0b3IgcG9pbnRlciB0byB0aGUgbmRuX0tleUxvY2F0b3Igc3RydWN0Ci0gKiBAcGFyYW0gZW5jb2RlciBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLW5kbl9FcnJvciBuZG5fZW5jb2RlQmluYXJ5WG1sS2V5TG9jYXRvcihzdHJ1Y3QgbmRuX0tleUxvY2F0b3IgKmtleUxvY2F0b3IsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2Rlcik7Ci0KLS8qKgotICogRXhwZWN0IHRoZSBuZXh0IGVsZW1lbnQgdG8gYmUgYSBCaW5hcnkgWE1MIEtleUxvY2F0b3IgYW5kIGRlY29kZSBpbnRvIHRoZSBuZG5fS2V5TG9jYXRvciBzdHJ1Y3QuCi0gKiBAcGFyYW0ga2V5TG9jYXRvciBwb2ludGVyIHRvIHRoZSBuZG5fS2V5TG9jYXRvciBzdHJ1Y3QKLSAqIEBwYXJhbSBkZWNvZGVyIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUsIGluY2x1ZGluZyBpZiB0aGUgbmV4dCBlbGVtZW50IGlzIG5vdCBLZXlMb2NhdG9yLgotICovCi1uZG5fRXJyb3IgbmRuX2RlY29kZUJpbmFyeVhtbEtleUxvY2F0b3Ioc3RydWN0IG5kbl9LZXlMb2NhdG9yICprZXlMb2NhdG9yLCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpOwotCi0vKioKLSAqIFBlZWsgdGhlIG5leHQgZWxlbWVudCBhbmQgaWYgaXQgaXMgYSBCaW5hcnkgWE1MIEtleUxvY2F0b3IgYW5kIGRlY29kZSBpbnRvIHRoZSBuZG5fS2V5TG9jYXRvciBzdHJ1Y3QuCi0gKiBPdGhlcndpc2UsIHNldCB0aGUgbmRuX0tleUxvY2F0b3Igc3RydWN0IHRvIG5vbmUuCi0gKiBAcGFyYW0ga2V5TG9jYXRvciBwb2ludGVyIHRvIHRoZSBuZG5fS2V5TG9jYXRvciBzdHJ1Y3QKLSAqIEBwYXJhbSBkZWNvZGVyIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUsIGluY2x1ZGluZyBpZiB0aGUgbmV4dCBlbGVtZW50IGlzIG5vdCBLZXlMb2NhdG9yLgotICovCi1uZG5fRXJyb3IgbmRuX2RlY29kZU9wdGlvbmFsQmluYXJ5WG1sS2V5TG9jYXRvcihzdHJ1Y3QgbmRuX0tleUxvY2F0b3IgKmtleUxvY2F0b3IsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2Rlcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1uYW1lLmMgYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLW5hbWUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRmODFjMy4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLW5hbWUuYworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIERlcml2ZWQgZnJvbSBOYW1lLmpzIGJ5IE1la2kgQ2hlcmFvdWkuCi0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgImJpbmFyeS14bWwtZW5jb2Rlci5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZGVjb2Rlci5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtbmFtZS5oIgotCi1uZG5fRXJyb3IgbmRuX2VuY29kZUJpbmFyeVhtbE5hbWUoc3RydWN0IG5kbl9OYW1lICpuYW1lLCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKmVuY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfTmFtZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHNpemVfdCBpOwotICBmb3IgKGkgPSAwOyBpIDwgbmFtZS0+bkNvbXBvbmVudHM7ICsraSkgewotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ29tcG9uZW50LCAmbmFtZS0+Y29tcG9uZW50c1tpXS52YWx1ZSkpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2UoZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9kZWNvZGVCaW5hcnlYbWxOYW1lKHN0cnVjdCBuZG5fTmFtZSAqbmFtZSwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudFN0YXJ0RFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfTmFtZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgbmFtZS0+bkNvbXBvbmVudHMgPSAwOwotICB3aGlsZSAoMSkgewotICAgIGludCBnb3RFeHBlY3RlZFRhZzsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0NvbXBvbmVudCwgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gICAgaWYgKCFnb3RFeHBlY3RlZFRhZykKLSAgICAgIC8vIE5vIG1vcmUgY29tcG9uZW50cy4KLSAgICAgIGJyZWFrOwotICAgIAotICAgIHN0cnVjdCBuZG5fQmxvYiBjb21wb25lbnQ7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ29tcG9uZW50LCAwLCAmY29tcG9uZW50KSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9OYW1lX2FwcGVuZEJsb2IobmFtZSwgJmNvbXBvbmVudCkpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1uYW1lLmggYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLW5hbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY5ZGZjNS4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLW5hbWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllYTUxOQU1FX0gKLSNkZWZpbmUgTkROX0JJTkFSWVhNTE5BTUVfSAotCi0jaW5jbHVkZSAiLi4vZXJyb3JzLmgiCi0jaW5jbHVkZSAiLi4vbmFtZS5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZW5jb2Rlci5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZGVjb2Rlci5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLW5kbl9FcnJvciBuZG5fZW5jb2RlQmluYXJ5WG1sTmFtZShzdHJ1Y3QgbmRuX05hbWUgKm5hbWUsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2Rlcik7Ci0KLW5kbl9FcnJvciBuZG5fZGVjb2RlQmluYXJ5WG1sTmFtZShzdHJ1Y3QgbmRuX05hbWUgKm5hbWUsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2Rlcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLXB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5jIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0ODE0Ny4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLXB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5jCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogRGVyaXZlZCBmcm9tIFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdC5qcyBieSBNZWtpIENoZXJhb3VpLgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlICJiaW5hcnkteG1sLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCIKLQotbmRuX0Vycm9yIG5kbl9lbmNvZGVCaW5hcnlYbWxQdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QKLSAgKHN0cnVjdCBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0ICpwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2RlcikKLXsgIAotICBpZiAoIXB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdC0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0LnZhbHVlIHx8IHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdC0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0Lmxlbmd0aCA9PSAwKQotICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLSAgCi0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50Ci0gICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgJnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdC0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0KSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX2RlY29kZUJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdAotICAoc3RydWN0IG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgKnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7IAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50Ci0gICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgMCwgJnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdC0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0KSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX2RlY29kZU9wdGlvbmFsQmluYXJ5WG1sUHVibGlzaGVyUHVibGljS2V5RGlnZXN0Ci0gIChzdHJ1Y3QgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCAqcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpCi17Ci0gIGludCBnb3RFeHBlY3RlZFRhZzsKLSAgbmRuX0Vycm9yIGVycm9yOyAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsICZnb3RFeHBlY3RlZFRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVCaW5hcnlYbWxQdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QocHVibGlzaGVyUHVibGljS2V5RGlnZXN0LCBkZWNvZGVyKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QudmFsdWUgPSAwOwotICAgIHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdC0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0Lmxlbmd0aCA9IDA7Ci0gIH0KLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtcHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmggYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLXB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDc2MjA1Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtcHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZWE1MUFVCTElTSEVSUFVCTElDS0VZRElHRVNUX0gKLSNkZWZpbmUgTkROX0JJTkFSWVhNTFBVQkxJU0hFUlBVQkxJQ0tFWURJR0VTVF9ICi0KLSNpbmNsdWRlICIuLi9lcnJvcnMuaCIKLSNpbmNsdWRlICIuLi9wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWVuY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWRlY29kZXIuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIEVuY29kZSB0aGUgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBzdHJ1Y3QgdXNpbmcgQmluYXJ5IFhNTC4gIElmIHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdC0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0IG9yCi0gKiBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3RMZW5ndGggaXMgMCwgdGhlbiBkbyBub3RoaW5nLiAKLSAqIEBwYXJhbSBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgcG9pbnRlciB0byB0aGUgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBzdHJ1Y3QKLSAqIEBwYXJhbSBlbmNvZGVyIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9lbmNvZGVCaW5hcnlYbWxQdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QKLSAgKHN0cnVjdCBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0ICpwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2Rlcik7Ci0KLS8qKgotICogRXhwZWN0IHRoZSBuZXh0IGVsZW1lbnQgdG8gYmUgYSBCaW5hcnkgWE1MIFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBhbmQgZGVjb2RlIGludG8gdGhlIG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3Qgc3RydWN0LgotICogQHBhcmFtIHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBwb2ludGVyIHRvIHRoZSBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0IHN0cnVjdAotICogQHBhcmFtIGRlY29kZXIgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGlmIHRoZSBuZXh0IGVsZW1lbnQgaXMgbm90IFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdC4KLSAqLwotbmRuX0Vycm9yIG5kbl9kZWNvZGVCaW5hcnlYbWxQdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QKLSAgKHN0cnVjdCBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0ICpwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2Rlcik7Ci0KLS8qKgotICogUGVlayB0aGUgbmV4dCBlbGVtZW50IGFuZCBpZiBpdCBpcyBhIEJpbmFyeSBYTUwgUHVibGlzaGVyUHVibGljS2V5RGlnZXN0IGFuZCBkZWNvZGUgaW50byB0aGUgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBzdHJ1Y3QuCi0gKiBPdGhlcndpc2UsIHNldCB0aGUgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBzdHJ1Y3QgdG8gbm9uZS4KLSAqIEBwYXJhbSBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgcG9pbnRlciB0byB0aGUgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBzdHJ1Y3QKLSAqIEBwYXJhbSBkZWNvZGVyIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUsIGluY2x1ZGluZyBpZiB0aGUgbmV4dCBlbGVtZW50IGlzIG5vdCBQdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QuCi0gKi8KLW5kbl9FcnJvciBuZG5fZGVjb2RlT3B0aW9uYWxCaW5hcnlYbWxQdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QKLSAgKHN0cnVjdCBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0ICpwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2Rlcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1zdHJ1Y3R1cmUtZGVjb2Rlci5jIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1zdHJ1Y3R1cmUtZGVjb2Rlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGUyZjA5Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgIi4uL3V0aWwvbmRuX21lbW9yeS5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWRlY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLXN0cnVjdHVyZS1kZWNvZGVyLmgiCi0KLXZvaWQgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIgKnNlbGYpIAotewotICBzZWxmLT5nb3RFbGVtZW50RW5kID0gMDsKLSAgc2VsZi0+b2Zmc2V0ID0gMDsKLSAgc2VsZi0+bGV2ZWwgPSAwOwotICBzZWxmLT5zdGF0ZSA9IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX1JFQURfSEVBREVSX09SX0NMT1NFOwotICBzZWxmLT5oZWFkZXJMZW5ndGggPSAwOwotICBzZWxmLT51c2VIZWFkZXJCdWZmZXIgPSAwOwotICBzZWxmLT5uQnl0ZXNUb1JlYWQgPSAwOwotfQotCi0vKioKLSAqIFNldCB0aGUgc3RhdGUgdG8gUkVBRF9IRUFERVJfT1JfQ0xPU0UgYW5kIHNldCB1cCB0byBzdGFydCByZWFkaW5nIHRoZSBoZWFkZXIuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydEhlYWRlcihzdHJ1Y3QgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIgKnNlbGYpCi17Ci0gIHNlbGYtPmhlYWRlckxlbmd0aCA9IDA7Ci0gIHNlbGYtPnVzZUhlYWRlckJ1ZmZlciA9IDA7Ci0gIHNlbGYtPnN0YXRlID0gbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfUkVBRF9IRUFERVJfT1JfQ0xPU0U7ICAgIAotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfZmluZEVsZW1lbnRFbmQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciAqc2VsZiwgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkgCi17Ci0gIGlmIChzZWxmLT5nb3RFbGVtZW50RW5kKQotICAgIC8vIFNvbWVvbmUgaXMgY2FsbGluZyB3aGVuIHdlIGFscmVhZHkgZ290IHRoZSBlbmQuCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICAKLSAgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyIGRlY29kZXI7Ci0gIG5kbl9CaW5hcnlYbWxEZWNvZGVyX2luaXRpYWxpemUoJmRlY29kZXIsIGlucHV0LCBpbnB1dExlbmd0aCk7Ci0gIAotICB3aGlsZSAoMSkgewotICAgIGlmIChzZWxmLT5vZmZzZXQgPj0gaW5wdXRMZW5ndGgpCi0gICAgICAvLyBBbGwgdGhlIGNhc2VzIGFzc3VtZSB3ZSBoYXZlIHNvbWUgaW5wdXQuIFJldHVybiBhbmQgd2FpdCBmb3IgbW9yZS4KLSAgICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLSAgICAKLSAgICBpZiAoc2VsZi0+c3RhdGUgPT0gbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfUkVBRF9IRUFERVJfT1JfQ0xPU0UpIHsKLSAgICAgIC8vIEZpcnN0IGNoZWNrIGZvciBDTE9TRS4KLSAgICAgIGlmIChzZWxmLT5oZWFkZXJMZW5ndGggPT0gMCAmJiBpbnB1dFtzZWxmLT5vZmZzZXRdID09IG5kbl9CaW5hcnlYbWxfQ0xPU0UpIHsKLSAgICAgICAgKytzZWxmLT5vZmZzZXQ7Ci0gICAgICAgIC8vIENsb3NlIHRoZSBsZXZlbC4KLSAgICAgICAgLS1zZWxmLT5sZXZlbDsKLSAgICAgICAgaWYgKHNlbGYtPmxldmVsID09IDApIHsKLSAgICAgICAgICAvLyBGaW5pc2hlZC4KLSAgICAgICAgICBzZWxmLT5nb3RFbGVtZW50RW5kID0gMTsKLSAgICAgICAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNlbGYtPmxldmVsIDwgMCkKLSAgICAgICAgICByZXR1cm4gTkROX0VSUk9SX2ZpbmRFbGVtZW50RW5kX3VuZXhwZWN0ZWRfY2xvc2VfdGFnOwotICAgICAgICAgIAotICAgICAgICAvLyBHZXQgcmVhZHkgZm9yIHRoZSBuZXh0IGhlYWRlci4KLSAgICAgICAgc3RhcnRIZWFkZXIoc2VsZik7Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgICAgICAKLSAgICAgIHNpemVfdCBzdGFydGluZ0hlYWRlckxlbmd0aCA9IHNlbGYtPmhlYWRlckxlbmd0aDsKLSAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGlmIChzZWxmLT5vZmZzZXQgPj0gaW5wdXRMZW5ndGgpIHsKLSAgICAgICAgICAvLyBXZSBjYW4ndCBnZXQgYWxsIG9mIHRoZSBoZWFkZXIgYnl0ZXMgZnJvbSB0aGlzIGlucHV0LiBTYXZlIGluIGhlYWRlckJ1ZmZlci4KLSAgICAgICAgICBpZiAoc2VsZi0+aGVhZGVyTGVuZ3RoID4gc2l6ZW9mKHNlbGYtPmhlYWRlckJ1ZmZlcikpCi0gICAgICAgICAgICByZXR1cm4gTkROX0VSUk9SX2Nhbm5vdF9zdG9yZV9tb3JlX2hlYWRlcl9ieXRlc190aGFuX3RoZV9zaXplX29mX2hlYWRlckJ1ZmZlcjsKLSAgICAgICAgICBzZWxmLT51c2VIZWFkZXJCdWZmZXIgPSAxOwotICAgICAgICAgIHNpemVfdCBuTmV3Qnl0ZXMgPSBzZWxmLT5oZWFkZXJMZW5ndGggLSBzdGFydGluZ0hlYWRlckxlbmd0aDsKLSAgICAgICAgICBuZG5fbWVtY3B5KHNlbGYtPmhlYWRlckJ1ZmZlciArIHN0YXJ0aW5nSGVhZGVyTGVuZ3RoLCBpbnB1dCArIChzZWxmLT5vZmZzZXQgLSBuTmV3Qnl0ZXMpLCBuTmV3Qnl0ZXMpOwotICAgICAgICAgICAgCi0gICAgICAgICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICAgICAgICB9Ci0gICAgICAgIHVuc2lnbmVkIGludCBoZWFkZXJCeXRlID0gKHVuc2lnbmVkIGludClpbnB1dFtzZWxmLT5vZmZzZXQrK107Ci0gICAgICAgICsrc2VsZi0+aGVhZGVyTGVuZ3RoOwotICAgICAgICBpZiAoaGVhZGVyQnl0ZSAmIG5kbl9CaW5hcnlYbWxfVFRfRklOQUwpCi0gICAgICAgICAgLy8gQnJlYWsgYW5kIHJlYWQgdGhlIGhlYWRlci4KLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgICAgCi0gICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKLSAgICAgIHVuc2lnbmVkIGludCB2YWx1ZTsKLSAgICAgIGlmIChzZWxmLT51c2VIZWFkZXJCdWZmZXIpIHsKLSAgICAgICAgLy8gQ29weSB0aGUgcmVtYWluaW5nIGJ5dGVzIGludG8gaGVhZGVyQnVmZmVyLgotICAgICAgICBpZiAoc2VsZi0+aGVhZGVyTGVuZ3RoID4gc2l6ZW9mKHNlbGYtPmhlYWRlckJ1ZmZlcikpCi0gICAgICAgICAgcmV0dXJuIE5ETl9FUlJPUl9jYW5ub3Rfc3RvcmVfbW9yZV9oZWFkZXJfYnl0ZXNfdGhhbl90aGVfc2l6ZV9vZl9oZWFkZXJCdWZmZXI7Ci0gICAgICAgIHNpemVfdCBuTmV3Qnl0ZXMgPSBzZWxmLT5oZWFkZXJMZW5ndGggLSBzdGFydGluZ0hlYWRlckxlbmd0aDsKLSAgICAgICAgbmRuX21lbWNweShzZWxmLT5oZWFkZXJCdWZmZXIgKyBzdGFydGluZ0hlYWRlckxlbmd0aCwgaW5wdXQgKyAoc2VsZi0+b2Zmc2V0IC0gbk5ld0J5dGVzKSwgbk5ld0J5dGVzKTsKLQotICAgICAgICAvLyBVc2UgYSBsb2NhbCBkZWNvZGVyIGp1c3QgZm9yIHRoZSBoZWFkZXJCdWZmZXIuCi0gICAgICAgIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciBidWZmZXJEZWNvZGVyOwotICAgICAgICBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9pbml0aWFsaXplKCZidWZmZXJEZWNvZGVyLCBzZWxmLT5oZWFkZXJCdWZmZXIsIHNpemVvZihzZWxmLT5oZWFkZXJCdWZmZXIpKTsKLSAgICAgICAgaWYgKG5kbl9CaW5hcnlYbWxEZWNvZGVyX2RlY29kZVR5cGVBbmRWYWx1ZSgmYnVmZmVyRGVjb2RlciwgJnR5cGUsICZ2YWx1ZSkpCi0gICAgICAgICAgcmV0dXJuIE5ETl9FUlJPUl9maW5kRWxlbWVudEVuZF9jYW5ub3RfcmVhZF9oZWFkZXJfdHlwZV9hbmRfdmFsdWU7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgLy8gV2UgZGlkbid0IGhhdmUgdG8gdXNlIHRoZSBoZWFkZXJCdWZmZXIuCi0gICAgICAgIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3NlZWsoJmRlY29kZXIsIHNlbGYtPm9mZnNldCAtIHNlbGYtPmhlYWRlckxlbmd0aCk7Ci0gICAgICAgIGlmIChuZG5fQmluYXJ5WG1sRGVjb2Rlcl9kZWNvZGVUeXBlQW5kVmFsdWUoJmRlY29kZXIsICZ0eXBlLCAmdmFsdWUpKQotICAgICAgICAgIHJldHVybiBORE5fRVJST1JfZmluZEVsZW1lbnRFbmRfY2Fubm90X3JlYWRfaGVhZGVyX3R5cGVfYW5kX3ZhbHVlOwotICAgICAgfQotICAgICAgICAKLSAgICAgIC8vIFNldCB0aGUgbmV4dCBzdGF0ZSBiYXNlZCBvbiB0aGUgdHlwZS4KLSAgICAgIGlmICh0eXBlID09IG5kbl9CaW5hcnlYbWxfREFUVFIpCi0gICAgICAgIC8vIFdlIGFscmVhZHkgY29uc3VtZWQgdGhlIGl0ZW0uIFJFQURfSEVBREVSX09SX0NMT1NFIGFnYWluLgotICAgICAgICAvLyBCaW5hcnkgWE1MIGhhcyBydWxlcyBhYm91dCB3aGF0IG11c3QgZm9sbG93IGFuIGF0dHJpYnV0ZSwgYnV0IHdlIGFyZSBqdXN0IHNjYW5uaW5nLgotICAgICAgICBzdGFydEhlYWRlcihzZWxmKTsKLSAgICAgIGVsc2UgaWYgKHR5cGUgPT0gbmRuX0JpbmFyeVhtbF9EVEFHIHx8IHR5cGUgPT0gbmRuX0JpbmFyeVhtbF9FWFQpIHsKLSAgICAgICAgLy8gU3RhcnQgYSBuZXcgbGV2ZWwgYW5kIFJFQURfSEVBREVSX09SX0NMT1NFIGFnYWluLgotICAgICAgICArK3NlbGYtPmxldmVsOwotICAgICAgICBzdGFydEhlYWRlcihzZWxmKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHR5cGUgPT0gbmRuX0JpbmFyeVhtbF9UQUcgfHwgdHlwZSA9PSBuZG5fQmluYXJ5WG1sX0FUVFIpIHsKLSAgICAgICAgaWYgKHR5cGUgPT0gbmRuX0JpbmFyeVhtbF9UQUcpCi0gICAgICAgICAgLy8gU3RhcnQgYSBuZXcgbGV2ZWwgYW5kIHJlYWQgdGhlIHRhZy4KLSAgICAgICAgICArK3NlbGYtPmxldmVsOwotICAgICAgICAvLyBNaW5pbXVtIHRhZyBvciBhdHRyaWJ1dGUgbGVuZ3RoIGlzIDEuCi0gICAgICAgIHNlbGYtPm5CeXRlc1RvUmVhZCA9IHZhbHVlICsgMTsKLSAgICAgICAgc2VsZi0+c3RhdGUgPSBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2Rlcl9SRUFEX0JZVEVTOwotICAgICAgICAvLyBCaW5hcnkgWE1MIGhhcyBydWxlcyBhYm91dCB3aGF0IG11c3QgZm9sbG93IGFuIGF0dHJpYnV0ZSwgYnV0IHdlIGFyZSBqdXN0IHNjYW5uaW5nLgotICAgICAgfQotICAgICAgZWxzZSBpZiAodHlwZSA9PSBuZG5fQmluYXJ5WG1sX0JMT0IgfHwgdHlwZSA9PSBuZG5fQmluYXJ5WG1sX1VEQVRBKSB7Ci0gICAgICAgIHNlbGYtPm5CeXRlc1RvUmVhZCA9IHZhbHVlOwotICAgICAgICBzZWxmLT5zdGF0ZSA9IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX1JFQURfQllURVM7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBORE5fRVJST1JfZmluZEVsZW1lbnRFbmRfdW5yZWNvZ25pemVkX2hlYWRlcl90eXBlOwotICAgIH0gIAotICAgIGVsc2UgaWYgKHNlbGYtPnN0YXRlID09IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX1JFQURfQllURVMpIHsKLSAgICAgIHNpemVfdCBuUmVtYWluaW5nQnl0ZXMgPSBpbnB1dExlbmd0aCAtIHNlbGYtPm9mZnNldDsKLSAgICAgIGlmIChuUmVtYWluaW5nQnl0ZXMgPCBzZWxmLT5uQnl0ZXNUb1JlYWQpIHsKLSAgICAgICAgLy8gTmVlZCBtb3JlLgotICAgICAgICBzZWxmLT5vZmZzZXQgKz0gblJlbWFpbmluZ0J5dGVzOwotICAgICAgICBzZWxmLT5uQnl0ZXNUb1JlYWQgLT0gblJlbWFpbmluZ0J5dGVzOwotICAgICAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0gICAgICB9Ci0gICAgICAvLyBHb3QgdGhlIGJ5dGVzLiBSZWFkIGEgbmV3IGhlYWRlciBvciBjbG9zZS4KLSAgICAgIHNlbGYtPm9mZnNldCArPSBzZWxmLT5uQnl0ZXNUb1JlYWQ7Ci0gICAgICBzdGFydEhlYWRlcihzZWxmKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IHRoaXMgdG8gaGFwcGVuLgotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9maW5kRWxlbWVudEVuZF91bnJlY29nbml6ZWRfc3RhdGU7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaCBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE1YWQwOC4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLXN0cnVjdHVyZS1kZWNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZWE1MU1RSVUNUVVJFREVDT0RFUl9ICi0jZGVmaW5lIE5ETl9CSU5BUllYTUxTVFJVQ1RVUkVERUNPREVSX0gKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvY29tbW9uLmg+Ci0jaW5jbHVkZSAiLi4vZXJyb3JzLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotc3RydWN0IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyIHsKLSAgaW50IGdvdEVsZW1lbnRFbmQ7IC8qKjwgYm9vbGVhbiAqLwotICBzaXplX3Qgb2Zmc2V0OwotICBpbnQgbGV2ZWw7Ci0gIGludCBzdGF0ZTsKLSAgc2l6ZV90IGhlYWRlckxlbmd0aDsKLSAgaW50IHVzZUhlYWRlckJ1ZmZlcjsgLyoqPCBib29sZWFuICovCi0gIC8vIDEwIGJ5dGVzIGlzIGVub3VnaCB0byBob2xkIGFuIGVuY29kZWQgaGVhZGVyIHdpdGggYSB0eXBlIGFuZCBhIDY0IGJpdCB2YWx1ZS4KLSAgdWludDhfdCBoZWFkZXJCdWZmZXJbMTBdOwotICBpbnQgbkJ5dGVzVG9SZWFkOwotfTsKLQotZW51bSB7Ci0gIG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX1JFQURfSEVBREVSX09SX0NMT1NFLAotICBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2Rlcl9SRUFEX0JZVEVTCi19OwotCi12b2lkIG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX2luaXRpYWxpemUoc3RydWN0IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyICpzZWxmKTsKLSAgICAgICAgCi0vKioKLSAqIENvbnRpbnVlIHNjYW5uaW5nIGlucHV0IHN0YXJ0aW5nIGZyb20gc2VsZi0+b2Zmc2V0IHRvIGZpbmQgdGhlIGVsZW1lbnQgZW5kLiAgT24gcmV0dXJuLCB5b3UgbXVzdCBjaGVjawotICogICBzZWxmLT5nb3RFbGVtZW50RW5kOiBJZiB0aGUgZW5kIG9mIHRoZSBlbGVtZW50IHdoaWNoIHN0YXJ0ZWQgYXQgb2Zmc2V0IDAgaXMgZm91bmQsIAotICogICB0aGVuIHNlbGYtPmdvdEVsZW1lbnRFbmQgaXMgMSBhbmQgc2VsZi0+b2Zmc2V0IGlzIHRoZSBsZW5ndGggb2YgdGhlIGVsZW1lbnQuICBPdGhlcndpc2UsIHNlbGYtZm9yRWxlbWVudEVuZCBpcyAwIAotICogICB3aGljaCBtZWFucyB5b3Ugc2hvdWxkIHJlYWQgbW9yZSBpbnRvIGlucHV0IGFuZCBjYWxsIGFnYWluLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gaW5wdXQgdGhlIGlucHV0IGJ1ZmZlci4gWW91IGhhdmUgdG8gcGFzcyBpbiBpbnB1dCBlYWNoIHRpbWUgYmVjYXVzZSB0aGUgYnVmZmVyIGNvdWxkIGJlIHJlYWxsb2NhdGVkLgotICogQHBhcmFtIGlucHV0TGVuZ3RoIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gaW5wdXQuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfZmluZEVsZW1lbnRFbmQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciAqc2VsZiwgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCk7Ci0KLS8qKgotICogU2V0IHRoZSBvZmZzZXQgaW50byB0aGUgaW5wdXQsIHVzZWQgZm9yIHRoZSBuZXh0IHJlYWQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBvZmZzZXQgdGhlIG5ldyBvZmZzZXQKLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX3NlZWsoc3RydWN0IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyICpzZWxmLCBzaXplX3Qgb2Zmc2V0KSAKLXsKLSAgc2VsZi0+b2Zmc2V0ID0gb2Zmc2V0OwotfQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwuaCBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM2OTU4Yi4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JJTkFSWVhNTF9ICi0jZGVmaW5lIE5ETl9CSU5BUllYTUxfSAotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLWVudW0gewotICBuZG5fQmluYXJ5WG1sX0VYVCA9IDB4MDAsICAgCi0gIG5kbl9CaW5hcnlYbWxfVEFHID0gMHgwMSwgCi0gIG5kbl9CaW5hcnlYbWxfRFRBRyA9IDB4MDIsIAotICBuZG5fQmluYXJ5WG1sX0FUVFIgPSAweDAzLCAKLSAgbmRuX0JpbmFyeVhtbF9EQVRUUiA9IDB4MDQsIAotICBuZG5fQmluYXJ5WG1sX0JMT0IgPSAweDA1LCAKLSAgbmRuX0JpbmFyeVhtbF9VREFUQSA9IDB4MDYsIAotICBuZG5fQmluYXJ5WG1sX0NMT1NFID0gMHgwLAotCi0gIG5kbl9CaW5hcnlYbWxfVFRfQklUUyA9IDMsCi0gIG5kbl9CaW5hcnlYbWxfVFRfTUFTSyA9ICgoMSA8PCBuZG5fQmluYXJ5WG1sX1RUX0JJVFMpIC0gMSksCi0gIG5kbl9CaW5hcnlYbWxfVFRfVkFMVUVfQklUUyA9IDQsCi0gIG5kbl9CaW5hcnlYbWxfVFRfVkFMVUVfTUFTSyA9ICgoMSA8PCAobmRuX0JpbmFyeVhtbF9UVF9WQUxVRV9CSVRTKSkgLSAxKSwKLSAgbmRuX0JpbmFyeVhtbF9SRUdVTEFSX1ZBTFVFX0JJVFMgPSA3LAotICBuZG5fQmluYXJ5WG1sX1JFR1VMQVJfVkFMVUVfTUFTSyA9ICgoMSA8PCBuZG5fQmluYXJ5WG1sX1JFR1VMQVJfVkFMVUVfQklUUykgLSAxKSwKLSAgbmRuX0JpbmFyeVhtbF9UVF9GSU5BTCA9IDB4ODAsCi0KLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0FueSA9IDEzLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTmFtZSA9IDE0LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfQ29tcG9uZW50ID0gMTUsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19DZXJ0aWZpY2F0ZSA9IDE2LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfQ29sbGVjdGlvbiA9IDE3LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfQ29tcGxldGVOYW1lID0gMTgsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Db250ZW50ID0gMTksCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TaWduZWRJbmZvID0gMjAsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Db250ZW50RGlnZXN0ID0gMjEsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Db250ZW50SGFzaCA9IDIyLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfQ291bnQgPSAyNCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0hlYWRlciA9IDI1LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfSW50ZXJlc3QgPSAyNiwgIC8qIDIwMDkwOTE1ICovCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19LZXkgPSAyNywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0tleUxvY2F0b3IgPSAyOCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0tleU5hbWUgPSAyOSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0xlbmd0aCA9IDMwLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTGluayA9IDMxLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTGlua0F1dGhlbnRpY2F0b3IgPSAzMiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX05hbWVDb21wb25lbnRDb3VudCA9IDMzLCAgLyogRGVwcmVjYXRlZEluSW50ZXJlc3QgKi8KLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1Jvb3REaWdlc3QgPSAzNiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1NpZ25hdHVyZSA9IDM3LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU3RhcnQgPSAzOCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1RpbWVzdGFtcCA9IDM5LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfVHlwZSA9IDQwLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTm9uY2UgPSA0MSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1Njb3BlID0gNDIsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19FeGNsdWRlID0gNDMsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19CbG9vbSA9IDQ0LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfQmxvb21TZWVkID0gNDUsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19BbnN3ZXJPcmlnaW5LaW5kID0gNDcsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19JbnRlcmVzdExpZmV0aW1lID0gNDgsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19XaXRuZXNzID0gNTMsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TaWduYXR1cmVCaXRzID0gNTQsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19EaWdlc3RBbGdvcml0aG0gPSA1NSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0Jsb2NrU2l6ZSA9IDU2LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfRnJlc2huZXNzU2Vjb25kcyA9IDU4LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfRmluYWxCbG9ja0lEID0gNTksCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgPSA2MCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlckNlcnRpZmljYXRlRGlnZXN0ID0gNjEsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19QdWJsaXNoZXJJc3N1ZXJLZXlEaWdlc3QgPSA2MiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlcklzc3VlckNlcnRpZmljYXRlRGlnZXN0ID0gNjMsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Db250ZW50T2JqZWN0ID0gNjQsICAvKiAyMDA5MDkxNSAqLwotICBuZG5fQmluYXJ5WG1sX0RUYWdfV3JhcHBlZEtleSA9IDY1LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfV3JhcHBpbmdLZXlJZGVudGlmaWVyID0gNjYsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19XcmFwQWxnb3JpdGhtID0gNjcsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19LZXlBbGdvcml0aG0gPSA2OCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0xhYmVsID0gNjksCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19FbmNyeXB0ZWRLZXkgPSA3MCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0VuY3J5cHRlZE5vbmNlS2V5ID0gNzEsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19XcmFwcGluZ0tleU5hbWUgPSA3MiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0FjdGlvbiA9IDczLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfRmFjZUlEID0gNzQsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19JUFByb3RvID0gNzUsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Ib3N0ID0gNzYsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Qb3J0ID0gNzcsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19NdWx0aWNhc3RJbnRlcmZhY2UgPSA3OCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0ZvcndhcmRpbmdGbGFncyA9IDc5LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfRmFjZUluc3RhbmNlID0gODAsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Gb3J3YXJkaW5nRW50cnkgPSA4MSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX011bHRpY2FzdFRUTCA9IDgyLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTWluU3VmZml4Q29tcG9uZW50cyA9IDgzLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTWF4U3VmZml4Q29tcG9uZW50cyA9IDg0LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfQ2hpbGRTZWxlY3RvciA9IDg1LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUmVwb3NpdG9yeUluZm8gPSA4NiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1ZlcnNpb24gPSA4NywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1JlcG9zaXRvcnlWZXJzaW9uID0gODgsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19HbG9iYWxQcmVmaXggPSA4OSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0xvY2FsTmFtZSA9IDkwLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUG9saWN5ID0gOTEsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19OYW1lc3BhY2UgPSA5MiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0dsb2JhbFByZWZpeE5hbWUgPSA5MywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1BvbGljeVZlcnNpb24gPSA5NCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0tleVZhbHVlU2V0ID0gOTUsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19LZXlWYWx1ZVBhaXIgPSA5NiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0ludGVnZXJWYWx1ZSA9IDk3LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfRGVjaW1hbFZhbHVlID0gOTgsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TdHJpbmdWYWx1ZSA9IDk5LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfQmluYXJ5VmFsdWUgPSAxMDAsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19OYW1lVmFsdWUgPSAxMDEsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19FbnRyeSA9IDEwMiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0FDTCA9IDEwMywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1BhcmFtZXRlcml6ZWROYW1lID0gMTA0LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUHJlZml4ID0gMTA1LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU3VmZml4ID0gMTA2LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUm9vdCA9IDEwNywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1Byb2ZpbGVOYW1lID0gMTA4LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUGFyYW1ldGVycyA9IDEwOSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0luZm9TdHJpbmcgPSAxMTAsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TdGF0dXNSZXNwb25zZSA9IDExMiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N0YXR1c0NvZGUgPSAxMTMsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TdGF0dXNUZXh0ID0gMTE0LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU3luY05vZGUgPSAxMTUsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jTm9kZUtpbmQgPSAxMTYsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jTm9kZUVsZW1lbnQgPSAxMTcsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jVmVyc2lvbiA9IDExOCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N5bmNOb2RlRWxlbWVudHMgPSAxMTksCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jQ29udGVudEhhc2ggPSAxMjAsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jTGVhZkNvdW50ID0gMTIxLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU3luY1RyZWVEZXB0aCA9IDEyMiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N5bmNCeXRlQ291bnQgPSAxMjMsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jQ29uZmlnU2xpY2UgPSAxMjQsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jQ29uZmlnU2xpY2VMaXN0ID0gMTI1LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU3luY0NvbmZpZ1NsaWNlT3AgPSAxMjYsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jTm9kZURlbHRhcyA9IDEyNywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1NlcXVlbmNlTnVtYmVyID0gMjU2LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTkROUHJvdG9jb2xEYXRhVW5pdCA9IDIwNTg3NzQ0IC8vIHRoZSBlbmNvZGVkIGVtcHR5IGVsZW1lbnQsIHZpZXdlZCBhcyBhIHN0cmluZyBpcyAiTkROXDIwMlwwMDAiCi19OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL2Vycm9ycy5jIGIvc3JjL2MvZXJyb3JzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNmI4YmIuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZXJyb3JzLmMKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgImVycm9ycy5oIgotCi1jaGFyICpuZG5fZ2V0RXJyb3JTdHJpbmcoaW50IGVycm9yKQotewotICBzd2l0Y2ggKGVycm9yKSB7Ci0gIGNhc2UgTkROX0VSUk9SX3N1Y2Nlc3M6Ci0gICAgcmV0dXJuICAgICAgIlN1Y2Nlc3MiOyAKLSAgY2FzZSBORE5fRVJST1JfZWxlbWVudF9vZl92YWx1ZV9pc19ub3RfYV9kZWNpbWFsX2RpZ2l0OgotICAgIHJldHVybiAgICAgICJFbGVtZW50IG9mIHZhbHVlIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXQiOwotICBjYXNlIE5ETl9FUlJPUl9yZWFkX3Bhc3RfdGhlX2VuZF9vZl90aGVfaW5wdXQ6Ci0gICAgcmV0dXJuICAgICAgIlJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCI7Ci0gIGNhc2UgTkROX0VSUk9SX3RoZV9maXJzdF9oZWFkZXJfb2N0ZXRfbWF5X25vdF9iZV96ZXJvOgotICAgIHJldHVybiAgICAgICJUaGUgZmlyc3QgaGVhZGVyIG9jdGV0IG1heSBub3QgYmUgemVybyI7Ci0gIGNhc2UgTkROX0VSUk9SX2hlYWRlcl90eXBlX2lzX25vdF9hX0RUQUc6Ci0gICAgcmV0dXJuICAgICAgIkhlYWRlciB0eXBlIGlzIG5vdCBhIERUQUciOwotICBjYXNlIE5ETl9FUlJPUl9kaWRfbm90X2dldF90aGVfZXhwZWN0ZWRfRFRBRzoKLSAgICByZXR1cm4gICAgICAiRGlkIG5vdCBnZXQgdGhlIGV4cGVjdGVkIERUQUciOwotICBjYXNlIE5ETl9FUlJPUl9kaWRfbm90X2dldF90aGVfZXhwZWN0ZWRfZWxlbWVudF9jbG9zZToKLSAgICByZXR1cm4gICAgICAiRGlkIG5vdCBnZXQgdGhlIGV4cGVjdGVkIGVsZW1lbnQgY2xvc2UiOwotICBjYXNlIE5ETl9FUlJPUl9pdGVtX2lzX25vdF9VREFUQToKLSAgICByZXR1cm4gICAgICAiSXRlbSBpcyBub3QgVURBVEEiOwotICBjYXNlIE5ETl9FUlJPUl9oZWFkZXJfdHlwZV9pc19vdXRfb2ZfcmFuZ2U6Ci0gICAgcmV0dXJuICAgICAgIkhlYWRlciB0eXBlIGlzIG91dCBvZiByYW5nZSI7Ci0gIGNhc2UgTkROX0VSUk9SX2VuY29kZVR5cGVBbmRWYWx1ZV9taXNjYWxjdWxhdGVkX05fZW5jb2RpbmdfYnl0ZXM6Ci0gICAgcmV0dXJuICAgICAgIkVuY29kZVR5cGVBbmRWYWx1ZSBtaXNjYWxjdWxhdGVkIE4gZW5jb2RpbmcgYnl0ZXMiOwotICBjYXNlIE5ETl9FUlJPUl9hdHRlbXB0X3RvX2FkZF9hX2NvbXBvbmVudF9wYXN0X3RoZV9tYXhpbXVtX251bWJlcl9vZl9jb21wb25lbnRzX2FsbG93ZWRfaW5fdGhlX25hbWU6Ci0gICAgcmV0dXJuICAgICAgIkF0dGVtcHQgdG8gYWRkIGEgY29tcG9uZW50IHBhc3QgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbXBvbmVudHMgYWxsb3dlZCBpbiB0aGUgbmFtZSI7Ci0gIGNhc2UgTkROX0VSUk9SX3JlYWRfYW5fZW50cnlfcGFzdF90aGVfbWF4aW11bV9udW1iZXJfb2ZfZW50cmllc19hbGxvd2VkX2luX3RoZV9leGNsdWRlOgotICAgIHJldHVybiAgICAgICJSZWFkIGFuIGVudHJ5IHBhc3QgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgYWxsb3dlZCBpbiB0aGUgZXhjbHVkZSI7Ci0gIGNhc2UgTkROX0VSUk9SX2ZpbmRFbGVtZW50RW5kX3VuZXhwZWN0ZWRfY2xvc2VfdGFnOgotICAgIHJldHVybiAgICAgICJGaW5kRWxlbWVudEVuZCB1bmV4cGVjdGVkIGNsb3NlIHRhZyI7Ci0gIGNhc2UgTkROX0VSUk9SX2Nhbm5vdF9zdG9yZV9tb3JlX2hlYWRlcl9ieXRlc190aGFuX3RoZV9zaXplX29mX2hlYWRlckJ1ZmZlcjoKLSAgICByZXR1cm4gICAgICAiQ2Fubm90IHN0b3JlIG1vcmUgaGVhZGVyIGJ5dGVzIHRoYW4gdGhlIHNpemUgb2YgaGVhZGVyQnVmZmVyIjsKLSAgY2FzZSBORE5fRVJST1JfZmluZEVsZW1lbnRFbmRfY2Fubm90X3JlYWRfaGVhZGVyX3R5cGVfYW5kX3ZhbHVlOgotICAgIHJldHVybiAgICAgICJGaW5kRWxlbWVudEVuZCBjYW5ub3QgcmVhZCBoZWFkZXIgdHlwZSBhbmQgdmFsdWUiOwotICBjYXNlIE5ETl9FUlJPUl9maW5kRWxlbWVudEVuZF91bnJlY29nbml6ZWRfaGVhZGVyX3R5cGU6Ci0gICAgcmV0dXJuICAgICAgIkZpbmRFbGVtZW50RW5kIHVucmVjb2duaXplZCBoZWFkZXIgdHlwZSI7Ci0gIGNhc2UgTkROX0VSUk9SX2ZpbmRFbGVtZW50RW5kX3VucmVjb2duaXplZF9zdGF0ZToKLSAgICByZXR1cm4gICAgICAiRmluZEVsZW1lbnRFbmQgdW5yZWNvZ25pemVkIHN0YXRlIjsKLSAgY2FzZSBORE5fRVJST1JfRHluYW1pY1VJbnQ4QXJyYXlfcmVhbGxvY19mdW5jdGlvbl9wb2ludGVyX25vdF9zdXBwbGllZDoKLSAgICByZXR1cm4gICAgICAiRHluYW1pY1VJbnQ4QXJyYXkgcmVhbGxvYyBmdW5jdGlvbiBwb2ludGVyIG5vdCBzdXBwbGllZCI7Ci0gIGNhc2UgTkROX0VSUk9SX0R5bmFtaWNVSW50OEFycmF5X3JlYWxsb2NfZmFpbGVkOgotICAgIHJldHVybiAgICAgICJEeW5hbWljVUludDhBcnJheSByZWFsbG9jIGZhaWxlZCI7Ci0gIGNhc2UgTkROX0VSUk9SX3VucmVjb2duaXplZF9uZG5fRXhjbHVkZVR5cGU6Ci0gICAgcmV0dXJuICAgICAgIlVucmVjb2duaXplZCBuZG5fRXhjbHVkZVR5cGUiOwotICBjYXNlIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX0NvbnRlbnRUeXBlOgotICAgIHJldHVybiAgICAgICJVbnJlY29nbml6ZWQgbmRuX0NvbnRlbnRUeXBlIjsKLSAgY2FzZSBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9LZXlMb2NhdG9yVHlwZToKLSAgICByZXR1cm4gICAgICAiVW5yZWNvZ25pemVkIG5kbl9LZXlMb2NhdG9yVHlwZSI7Ci0gIGNhc2UgTkROX0VSUk9SX3VucmVjb2duaXplZF9uZG5fS2V5TmFtZVR5cGU6Ci0gICAgcmV0dXJuICAgICAgIlVucmVjb2duaXplZCBuZG5fS2V5TmFtZVR5cGUiOwotICBjYXNlIE5ETl9FUlJPUl9kZWNvZGVCaW5hcnlYbWxLZXlMb2NhdG9yX3VucmVjb2duaXplZF9rZXlfbG9jYXRvcl90eXBlOgotICAgIHJldHVybiAgICAgICJkZWNvZGVCaW5hcnlYbWxLZXlMb2NhdG9yIHVucmVjb2duaXplZCBrZXkgbG9jYXRvciB0eXBlIjsKLSAgY2FzZSBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9Tb2NrZXRUcmFuc3BvcnQ6Ci0gICAgcmV0dXJuICAgICAgIlVucmVjb2duaXplZCBuZG5fU29ja2V0VHJhbnNwb3J0IjsKLSAgY2FzZSBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX2dldGFkZHJpbmZvOgotICAgIHJldHVybiAgICAgICJTb2NrZXRUcmFuc3BvcnQgZXJyb3IgaW4gZ2V0YWRkcmluZm8iOwotICBjYXNlIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfY2Fubm90X2Nvbm5lY3RfdG9fc29ja2V0OgotICAgIHJldHVybiAgICAgICJTb2NrZXRUcmFuc3BvcnQgY2Fubm90IGNvbm5lY3QgdG8gc29ja2V0IjsKLSAgY2FzZSBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X3NvY2tldF9pc19ub3Rfb3BlbjoKLSAgICByZXR1cm4gICAgICAiU29ja2V0VHJhbnNwb3J0IHNvY2tldCBpcyBub3Qgb3BlbiI7Ci0gIGNhc2UgTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9lcnJvcl9pbl9zZW5kOgotICAgIHJldHVybiAgICAgICJTb2NrZXRUcmFuc3BvcnQgZXJyb3IgaW4gc2VuZCI7Ci0gIGNhc2UgTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9lcnJvcl9pbl9wb2xsOgotICAgIHJldHVybiAgICAgICJTb2NrZXRUcmFuc3BvcnQgZXJyb3IgaW4gcG9sbCI7Ci0gIGNhc2UgTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9lcnJvcl9pbl9yZWN2OgotICAgIHJldHVybiAgICAgICJTb2NrZXRUcmFuc3BvcnQgZXJyb3IgaW4gcmVjdiI7Ci0gIGNhc2UgTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9lcnJvcl9pbl9jbG9zZToKLSAgICByZXR1cm4gICAgICAiU29ja2V0VHJhbnNwb3J0IGVycm9yIGluIGNsb3NlIjsKLSAgY2FzZSBORE5fRVJST1JfTmFtZV9jb21wb25lbnRfZG9lc19ub3RfYmVnaW5fd2l0aF90aGVfZXhwZWN0ZWRfbWFya2VyOgotICAgIHJldHVybiAgICAgICJOYW1lIGNvbXBvbmVudCBkb2VzIG5vdCBiZWdpbiB3aXRoIHRoZSBleHBlY3RlZCBtYXJrZXIiOwotICBjYXNlIE5ETl9FUlJPUl9UaW1lX2Z1bmN0aW9uc19hcmVfbm90X3N1cHBvcnRlZF9ieV90aGVfc3RhbmRhcmRfbGlicmFyeToKLSAgICByZXR1cm4gICAgICAiVGltZSBmdW5jdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHN0YW5kYXJkIGxpYnJhcnkiOwotICBjYXNlIE5ETl9FUlJPUl9DYWxlbmRhcl90aW1lX3ZhbHVlX291dF9vZl9yYW5nZToKLSAgICByZXR1cm4gICAgICAiQ2FsZW5kYXIgdGltZSB2YWx1ZSBvdXQgb2YgcmFuZ2UiOwotICBkZWZhdWx0OgotICAgIHJldHVybiAidW5yZWNvZ25pemVkIG5kbl9FcnJvciBjb2RlIjsgIAotICB9Ci19CmRpZmYgLS1naXQgYS9zcmMvYy9lcnJvcnMuaCBiL3NyYy9jL2Vycm9ycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTA2YWEzLi4wMDAwMDAwCi0tLSBhL3NyYy9jL2Vycm9ycy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoqCi0gKiBEZWZpbmUgZXJyb3IgY29kZXMgYW5kIG5kbl9nZXRFcnJvclN0cmluZyB0byBjb252ZXJ0IHRvIGEgc3RyaW5nLgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3IsIEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9FUlJPUlNfSAotI2RlZmluZSBORE5fRVJST1JTX0gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIGVudW0gewotICBORE5fRVJST1Jfc3VjY2VzcyA9IDAsCi0gIE5ETl9FUlJPUl9lbGVtZW50X29mX3ZhbHVlX2lzX25vdF9hX2RlY2ltYWxfZGlnaXQsCi0gIE5ETl9FUlJPUl9yZWFkX3Bhc3RfdGhlX2VuZF9vZl90aGVfaW5wdXQsCi0gIE5ETl9FUlJPUl90aGVfZmlyc3RfaGVhZGVyX29jdGV0X21heV9ub3RfYmVfemVybywKLSAgTkROX0VSUk9SX2hlYWRlcl90eXBlX2lzX25vdF9hX0RUQUcsCi0gIE5ETl9FUlJPUl9kaWRfbm90X2dldF90aGVfZXhwZWN0ZWRfRFRBRywKLSAgTkROX0VSUk9SX2RpZF9ub3RfZ2V0X3RoZV9leHBlY3RlZF9lbGVtZW50X2Nsb3NlLAotICBORE5fRVJST1JfaXRlbV9pc19ub3RfVURBVEEsCi0gIE5ETl9FUlJPUl9oZWFkZXJfdHlwZV9pc19vdXRfb2ZfcmFuZ2UsCi0gIE5ETl9FUlJPUl9lbmNvZGVUeXBlQW5kVmFsdWVfbWlzY2FsY3VsYXRlZF9OX2VuY29kaW5nX2J5dGVzLAotICBORE5fRVJST1JfYXR0ZW1wdF90b19hZGRfYV9jb21wb25lbnRfcGFzdF90aGVfbWF4aW11bV9udW1iZXJfb2ZfY29tcG9uZW50c19hbGxvd2VkX2luX3RoZV9uYW1lLAotICBORE5fRVJST1JfcmVhZF9hbl9lbnRyeV9wYXN0X3RoZV9tYXhpbXVtX251bWJlcl9vZl9lbnRyaWVzX2FsbG93ZWRfaW5fdGhlX2V4Y2x1ZGUsCi0gIE5ETl9FUlJPUl9maW5kRWxlbWVudEVuZF91bmV4cGVjdGVkX2Nsb3NlX3RhZywKLSAgTkROX0VSUk9SX2Nhbm5vdF9zdG9yZV9tb3JlX2hlYWRlcl9ieXRlc190aGFuX3RoZV9zaXplX29mX2hlYWRlckJ1ZmZlciwKLSAgTkROX0VSUk9SX2ZpbmRFbGVtZW50RW5kX2Nhbm5vdF9yZWFkX2hlYWRlcl90eXBlX2FuZF92YWx1ZSwKLSAgTkROX0VSUk9SX2ZpbmRFbGVtZW50RW5kX3VucmVjb2duaXplZF9oZWFkZXJfdHlwZSwKLSAgTkROX0VSUk9SX2ZpbmRFbGVtZW50RW5kX3VucmVjb2duaXplZF9zdGF0ZSwKLSAgTkROX0VSUk9SX0R5bmFtaWNVSW50OEFycmF5X3JlYWxsb2NfZnVuY3Rpb25fcG9pbnRlcl9ub3Rfc3VwcGxpZWQsCi0gIE5ETl9FUlJPUl9EeW5hbWljVUludDhBcnJheV9yZWFsbG9jX2ZhaWxlZCwKLSAgTkROX0VSUk9SX3VucmVjb2duaXplZF9uZG5fRXhjbHVkZVR5cGUsCi0gIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX0NvbnRlbnRUeXBlLAotICBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9LZXlMb2NhdG9yVHlwZSwKLSAgTkROX0VSUk9SX3VucmVjb2duaXplZF9uZG5fS2V5TmFtZVR5cGUsCi0gIE5ETl9FUlJPUl9kZWNvZGVCaW5hcnlYbWxLZXlMb2NhdG9yX3VucmVjb2duaXplZF9rZXlfbG9jYXRvcl90eXBlLAotICBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9Tb2NrZXRUcmFuc3BvcnQsCi0gIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfZXJyb3JfaW5fZ2V0YWRkcmluZm8sCi0gIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfY2Fubm90X2Nvbm5lY3RfdG9fc29ja2V0LAotICBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X3NvY2tldF9pc19ub3Rfb3BlbiwKLSAgTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9lcnJvcl9pbl9zZW5kLAotICBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX3BvbGwsCi0gIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfZXJyb3JfaW5fcmVjdiwKLSAgTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9lcnJvcl9pbl9jbG9zZSwKLSAgTkROX0VSUk9SX05hbWVfY29tcG9uZW50X2RvZXNfbm90X2JlZ2luX3dpdGhfdGhlX2V4cGVjdGVkX21hcmtlciwKLSAgTkROX0VSUk9SX1RpbWVfZnVuY3Rpb25zX2FyZV9ub3Rfc3VwcG9ydGVkX2J5X3RoZV9zdGFuZGFyZF9saWJyYXJ5LAotICBORE5fRVJST1JfQ2FsZW5kYXJfdGltZV92YWx1ZV9vdXRfb2ZfcmFuZ2UKLX0gbmRuX0Vycm9yOwotICAKLS8qKgotICogQ29udmVydCB0aGUgZXJyb3IgY29kZSB0byBpdHMgc3RyaW5nLgotICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciBjb2RlCi0gKiBAcmV0dXJuIHRoZSBlcnJvciBzdHJpbmcgb3IgInVucmVjb2duaXplZCBuZG5fRXJyb3IgY29kZSIKLSAqLwotY2hhciAqbmRuX2dldEVycm9yU3RyaW5nKGludCBlcnJvcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvZm9yd2FyZGluZy1lbnRyeS5oIGIvc3JjL2MvZm9yd2FyZGluZy1lbnRyeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGVhZDRjLi4wMDAwMDAwCi0tLSBhL3NyYy9jL2ZvcndhcmRpbmctZW50cnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9GT1JXQVJESU5HX0VOVFJZX0gKLSNkZWZpbmUgTkROX0ZPUldBUkRJTkdfRU5UUllfSAotCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvYy9jb21tb24uaD4KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2ZvcndhcmRpbmctZmxhZ3MuaD4KLSNpbmNsdWRlICJuYW1lLmgiCi0jaW5jbHVkZSAicHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiBlbnVtIHsKLSAgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0FDVElWRSAgICAgICAgID0gMSwKLSAgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0NISUxEX0lOSEVSSVQgID0gMiwKLSAgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0FEVkVSVElTRSAgICAgID0gNCwKLSAgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0xBU1QgICAgICAgICAgID0gOCwKLSAgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0NBUFRVUkUgICAgICAgPSAxNiwKLSAgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0xPQ0FMICAgICAgICAgPSAzMiwKLSAgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX1RBUCAgICAgICAgICAgPSA2NCwKLSAgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0NBUFRVUkVfT0sgICA9IDEyOAotfSBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3M7Ci0KLS8qKgotICogQW4gbmRuX0ZvcndhcmRpbmdFbnRyeSBob2xkcyBmaWVsZHMgZm9yIGEgRm9yd2FyZGluZ0VudHJ5IHdoaWNoIGlzIHVzZWQgdG8gcmVnaXN0ZXIgYSBwcmVmaXggd2l0aCBhIGh1Yi4KLSAqLwotc3RydWN0IG5kbl9Gb3J3YXJkaW5nRW50cnkgewotICBzdHJ1Y3QgbmRuX0Jsb2IgYWN0aW9uOyAgIC8qKjwgQSBCbG9iIHdob3NlIHZhbHVlIGlzIGEgcG9pbnRlciB0byBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiAgMCBmb3Igbm9uZS4gKi8KLSAgc3RydWN0IG5kbl9OYW1lIHByZWZpeDsKLSAgc3RydWN0IG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0OwotICBpbnQgZmFjZUlkOyAgICAgICAgICAgICAgIC8qKjwgLTEgZm9yIG5vbmUuICovCi0gIHN0cnVjdCBuZG5fRm9yd2FyZGluZ0ZsYWdzIGZvcndhcmRpbmdGbGFnczsKLSAgaW50IGZyZXNobmVzc1NlY29uZHM7ICAgICAvKio8IC0xIGZvciBub25lLiAqLwotfTsKLQotLyoqCi0gKiBJbml0aWFsaXplIGFuIG5kbl9Gb3J3YXJkaW5nRW50cnkgc3RydWN0IHdpdGggdGhlIHByZS1hbGxvY2F0ZWQgcHJlZml4TmFtZUNvbXBvbmVudHMsCi0gKiBhbmQgZGVmYXVsdHMgZm9yIGFsbCB0aGUgdmFsdWVzLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0ludGVyZXN0IHN0cnVjdAotICogQHBhcmFtIHByZWZpeE5hbWVDb21wb25lbnRzIHRoZSBwcmUtYWxsb2NhdGVkIGFycmF5IG9mIG5kbl9OYW1lQ29tcG9uZW50Ci0gKiBAcGFyYW0gbWF4UHJlZml4TmFtZUNvbXBvbmVudHMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYWxsb2NhdGVkIHByZWZpeE5hbWVDb21wb25lbnRzIGFycmF5Ci0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fRm9yd2FyZGluZ0VudHJ5X2luaXRpYWxpemUKLSAgKHN0cnVjdCBuZG5fRm9yd2FyZGluZ0VudHJ5ICpzZWxmLCBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKnByZWZpeE5hbWVDb21wb25lbnRzLCBzaXplX3QgbWF4UHJlZml4TmFtZUNvbXBvbmVudHMpIAotewotICBuZG5fQmxvYl9pbml0aWFsaXplKCZzZWxmLT5hY3Rpb24sIDAsIDApOwotICBuZG5fTmFtZV9pbml0aWFsaXplKCZzZWxmLT5wcmVmaXgsIHByZWZpeE5hbWVDb21wb25lbnRzLCBtYXhQcmVmaXhOYW1lQ29tcG9uZW50cyk7Ci0gIG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3RfaW5pdGlhbGl6ZSgmc2VsZi0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0KTsKLSAgc2VsZi0+ZmFjZUlkID0gLTE7Ci0gIG5kbl9Gb3J3YXJkaW5nRmxhZ3NfaW5pdGlhbGl6ZSgmc2VsZi0+Zm9yd2FyZGluZ0ZsYWdzKTsKLSAgc2VsZi0+ZnJlc2huZXNzU2Vjb25kcyA9IC0xOwotfQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL2ZvcndhcmRpbmctZmxhZ3MuYyBiL3NyYy9jL2ZvcndhcmRpbmctZmxhZ3MuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU1MmE4Yi4uMDAwMDAwMAotLS0gYS9zcmMvYy9mb3J3YXJkaW5nLWZsYWdzLmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgImZvcndhcmRpbmctZW50cnkuaCIKLQotdm9pZCBuZG5fRm9yd2FyZGluZ0ZsYWdzX2luaXRpYWxpemUoc3RydWN0IG5kbl9Gb3J3YXJkaW5nRmxhZ3MgKnNlbGYpCi17Ci0gIHNlbGYtPmFjdGl2ZSA9IDE7Ci0gIHNlbGYtPmNoaWxkSW5oZXJpdCA9IDE7Ci0gIHNlbGYtPmFkdmVydGlzZSA9IDA7Ci0gIHNlbGYtPmxhc3QgPSAwOwotICBzZWxmLT5jYXB0dXJlID0gMDsKLSAgc2VsZi0+bG9jYWwgPSAwOwotICBzZWxmLT50YXAgPSAwOwotICBzZWxmLT5jYXB0dXJlT2sgPSAwOwotfQotCi1pbnQgbmRuX0ZvcndhcmRpbmdGbGFnc19nZXRGb3J3YXJkaW5nRW50cnlGbGFncyhzdHJ1Y3QgbmRuX0ZvcndhcmRpbmdGbGFncyAqc2VsZikKLXsKLSAgaW50IHJlc3VsdCA9IDA7Ci0gIAotICBpZiAoc2VsZi0+YWN0aXZlKQotICAgIHJlc3VsdCB8PSBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQUNUSVZFOwotICBpZiAoc2VsZi0+Y2hpbGRJbmhlcml0KQotICAgIHJlc3VsdCB8PSBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQ0hJTERfSU5IRVJJVDsKLSAgaWYgKHNlbGYtPmFkdmVydGlzZSkKLSAgICByZXN1bHQgfD0gbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0FEVkVSVElTRTsKLSAgaWYgKHNlbGYtPmxhc3QpCi0gICAgcmVzdWx0IHw9IG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnc19MQVNUOwotICBpZiAoc2VsZi0+Y2FwdHVyZSkKLSAgICByZXN1bHQgfD0gbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0NBUFRVUkU7Ci0gIGlmIChzZWxmLT5sb2NhbCkKLSAgICByZXN1bHQgfD0gbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0xPQ0FMOwotICBpZiAoc2VsZi0+dGFwKQotICAgIHJlc3VsdCB8PSBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfVEFQOwotICBpZiAoc2VsZi0+Y2FwdHVyZU9rKQotICAgIHJlc3VsdCB8PSBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQ0FQVFVSRV9PSzsKLSAgCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgbmRuX0ZvcndhcmRpbmdGbGFnc19zZXRGb3J3YXJkaW5nRW50cnlGbGFncyhzdHJ1Y3QgbmRuX0ZvcndhcmRpbmdGbGFncyAqc2VsZiwgaW50IGZvcndhcmRpbmdFbnRyeUZsYWdzKQotewotICBzZWxmLT5hY3RpdmUgPSAoZm9yd2FyZGluZ0VudHJ5RmxhZ3MgJiBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQUNUSVZFKSA/IDEgOiAwOwotICBzZWxmLT5jaGlsZEluaGVyaXQgPSAoZm9yd2FyZGluZ0VudHJ5RmxhZ3MgJiBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQ0hJTERfSU5IRVJJVCkgPyAxIDogMDsKLSAgc2VsZi0+YWR2ZXJ0aXNlID0gKGZvcndhcmRpbmdFbnRyeUZsYWdzICYgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0FEVkVSVElTRSkgPyAxIDogMDsKLSAgc2VsZi0+bGFzdCA9IChmb3J3YXJkaW5nRW50cnlGbGFncyAmIG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnc19MQVNUKSA/IDEgOiAwOwotICBzZWxmLT5jYXB0dXJlID0gKGZvcndhcmRpbmdFbnRyeUZsYWdzICYgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0NBUFRVUkUpID8gMSA6IDA7Ci0gIHNlbGYtPmxvY2FsID0gKGZvcndhcmRpbmdFbnRyeUZsYWdzICYgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0xPQ0FMKSA/IDEgOiAwOwotICBzZWxmLT50YXAgPSAoZm9yd2FyZGluZ0VudHJ5RmxhZ3MgJiBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfVEFQKSA/IDEgOiAwOwotICBzZWxmLT5jYXB0dXJlT2sgPSAoZm9yd2FyZGluZ0VudHJ5RmxhZ3MgJiBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQ0FQVFVSRV9PSykgPyAxIDogMDsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2ludGVyZXN0LmMgYi9zcmMvYy9pbnRlcmVzdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGMzZmY2Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2ludGVyZXN0LmMKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgInV0aWwvbmRuX21lbW9yeS5oIgotI2luY2x1ZGUgImludGVyZXN0LmgiCi0KLWludCBuZG5fRXhjbHVkZV9jb21wYXJlQ29tcG9uZW50cyhzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKmNvbXBvbmVudDEsIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqY29tcG9uZW50MikKLXsKLSAgaWYgKGNvbXBvbmVudDEtPnZhbHVlLmxlbmd0aCA8IGNvbXBvbmVudDItPnZhbHVlLmxlbmd0aCkKLSAgICByZXR1cm4gLTE7Ci0gIGlmIChjb21wb25lbnQxLT52YWx1ZS5sZW5ndGggPiBjb21wb25lbnQyLT52YWx1ZS5sZW5ndGgpCi0gICAgcmV0dXJuIDE7Ci0KLSAgLy8gVGhlIGNvbXBvbmVudHMgYXJlIGVxdWFsIGxlbmd0aC4gIEp1c3QgZG8gYSBieXRlIGNvbXBhcmUuICAKLSAgcmV0dXJuIG5kbl9tZW1jbXAoY29tcG9uZW50MS0+dmFsdWUudmFsdWUsIGNvbXBvbmVudDItPnZhbHVlLnZhbHVlLCBjb21wb25lbnQxLT52YWx1ZS5sZW5ndGgpOwotfQotCi1pbnQgbmRuX0V4Y2x1ZGVfbWF0Y2hlcyhzdHJ1Y3QgbmRuX0V4Y2x1ZGUgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqY29tcG9uZW50KQotewotICBzaXplX3QgaTsKLSAgZm9yIChpID0gMDsgaSA8IHNlbGYtPm5FbnRyaWVzOyArK2kpIHsKLSAgICBpZiAoc2VsZi0+ZW50cmllc1tpXS50eXBlID09IG5kbl9FeGNsdWRlX0FOWSkgewotICAgICAgc3RydWN0IG5kbl9FeGNsdWRlRW50cnkgKmxvd2VyQm91bmQgPSAwOwotICAgICAgaWYgKGkgPiAwKQotICAgICAgICBsb3dlckJvdW5kID0gc2VsZi0+ZW50cmllcyArIChpIC0gMSk7Ci0gICAgICAKLSAgICAgIC8vIEZpbmQgdGhlIHVwcGVyIGJvdW5kLCBwb3NzaWJseSBza2lwcGluZyBvdmVyIG11bHRpcGxlIEFOWSBpbiBhIHJvdy4KLSAgICAgIHNpemVfdCBpVXBwZXJCb3VuZDsKLSAgICAgIHN0cnVjdCBuZG5fRXhjbHVkZUVudHJ5ICp1cHBlckJvdW5kID0gMDsKLSAgICAgIGZvciAoaVVwcGVyQm91bmQgPSBpICsgMTsgaVVwcGVyQm91bmQgPCBzZWxmLT5uRW50cmllczsgKytpVXBwZXJCb3VuZCkgewotICAgICAgICBpZiAoc2VsZi0+ZW50cmllc1tpVXBwZXJCb3VuZF0udHlwZSA9PSBuZG5fRXhjbHVkZV9DT01QT05FTlQpIHsKLSAgICAgICAgICB1cHBlckJvdW5kID0gc2VsZi0+ZW50cmllcyArIGlVcHBlckJvdW5kOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIC8vIElmIGxvd2VyQm91bmQgIT0gMCwgd2UgYWxyZWFkeSBjaGVja2VkIGNvbXBvbmVudCBlcXVhbHMgbG93ZXJCb3VuZCBvbiB0aGUgbGFzdCBwYXNzLgotICAgICAgLy8gSWYgdXBwZXJCb3VuZCAhPSAwLCB3ZSB3aWxsIGNoZWNrIGNvbXBvbmVudCBlcXVhbHMgdXBwZXJCb3VuZCBvbiB0aGUgbmV4dCBwYXNzLgotICAgICAgaWYgKHVwcGVyQm91bmQgIT0gMCkgewotICAgICAgICBpZiAobG93ZXJCb3VuZCAhPSAwKSB7Ci0gICAgICAgICAgaWYgKG5kbl9FeGNsdWRlX2NvbXBhcmVDb21wb25lbnRzKGNvbXBvbmVudCwgJmxvd2VyQm91bmQtPmNvbXBvbmVudCkgPiAwICYmCi0gICAgICAgICAgICAgIG5kbl9FeGNsdWRlX2NvbXBhcmVDb21wb25lbnRzKGNvbXBvbmVudCwgJnVwcGVyQm91bmQtPmNvbXBvbmVudCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgaWYgKG5kbl9FeGNsdWRlX2NvbXBhcmVDb21wb25lbnRzKGNvbXBvbmVudCwgJnVwcGVyQm91bmQtPmNvbXBvbmVudCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIE1ha2UgaSBlcXVhbCBpVXBwZXJCb3VuZCBvbiB0aGUgbmV4dCBwYXNzLgotICAgICAgICBpID0gaVVwcGVyQm91bmQgLSAxOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChsb3dlckJvdW5kICE9IDApIHsKLSAgICAgICAgICBpZiAobmRuX0V4Y2x1ZGVfY29tcGFyZUNvbXBvbmVudHMoY29tcG9uZW50LCAmbG93ZXJCb3VuZC0+Y29tcG9uZW50KSA+IDApCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgLy8gdGhpcy52YWx1ZXMgaGFzIG9ubHkgQU5ZLgotICAgICAgICAgIHJldHVybiAxOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIGlmIChuZG5fRXhjbHVkZV9jb21wYXJlQ29tcG9uZW50cyhjb21wb25lbnQsICZzZWxmLT5lbnRyaWVzW2ldLmNvbXBvbmVudCkgPT0gMCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICB9Ci0gIAotICByZXR1cm4gMDsgIAotfQotCi1pbnQgbmRuX0ludGVyZXN0X21hdGNoZXNOYW1lKHN0cnVjdCBuZG5fSW50ZXJlc3QgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZSAqbmFtZSkKLXsKLSAgaWYgKCFuZG5fTmFtZV9tYXRjaCgmc2VsZi0+bmFtZSwgbmFtZSkpCi0gICAgcmV0dXJuIDA7Ci0gIAotICBpZiAoc2VsZi0+bWluU3VmZml4Q29tcG9uZW50cyA+PSAwICYmCi0gICAgLy8gQWRkIDEgZm9yIHRoZSBpbXBsaWNpdCBkaWdlc3QuCi0gICAgIShuYW1lLT5uQ29tcG9uZW50cyArIDEgLSBzZWxmLT5uYW1lLm5Db21wb25lbnRzID49IHNlbGYtPm1pblN1ZmZpeENvbXBvbmVudHMpKQotICAgIHJldHVybiAwOwotICBpZiAoc2VsZi0+bWF4U3VmZml4Q29tcG9uZW50cyA+PSAwICYmCi0gICAgLy8gQWRkIDEgZm9yIHRoZSBpbXBsaWNpdCBkaWdlc3QuCi0gICAgIShuYW1lLT5uQ29tcG9uZW50cyArIDEgLSBzZWxmLT5uYW1lLm5Db21wb25lbnRzIDw9IHNlbGYtPm1heFN1ZmZpeENvbXBvbmVudHMpKQotICAgIHJldHVybiAwOwotICBpZiAoc2VsZi0+ZXhjbHVkZS5uRW50cmllcyA+IDAgJiYgbmFtZS0+bkNvbXBvbmVudHMgPiBzZWxmLT5uYW1lLm5Db21wb25lbnRzICYmCi0gICAgICBuZG5fRXhjbHVkZV9tYXRjaGVzKCZzZWxmLT5leGNsdWRlLCBuYW1lLT5jb21wb25lbnRzICsgc2VsZi0+bmFtZS5uQ29tcG9uZW50cykpCi0gICAgcmV0dXJuIDA7Ci0gIAotICByZXR1cm4gMTsgCi19CmRpZmYgLS1naXQgYS9zcmMvYy9pbnRlcmVzdC5oIGIvc3JjL2MvaW50ZXJlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYwYTU4Ny4uMDAwMDAwMAotLS0gYS9zcmMvYy9pbnRlcmVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9JTlRFUkVTVF9ICi0jZGVmaW5lIE5ETl9JTlRFUkVTVF9ICi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2ludGVyZXN0LXR5cGVzLmg+Ci0jaW5jbHVkZSAibmFtZS5oIgotI2luY2x1ZGUgInB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogQW4gbmRuX0V4Y2x1ZGVFbnRyeSBob2xkcyBhbiBuZG5fRXhjbHVkZVR5cGUsIGFuZCBpZiBpdCBpcyBhIENPTVBPTkVOVCwgaXQgaG9sZHMgYSBwb2ludGVyIHRvIHRoZSBjb21wb25lbnQgdmFsdWUuCi0gKi8KLXN0cnVjdCBuZG5fRXhjbHVkZUVudHJ5IHsKLSAgbmRuX0V4Y2x1ZGVUeXBlIHR5cGU7Ci0gIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCBjb21wb25lbnQ7Ci19OwotCi0vKioKLSAqIAotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX05hbWVDb21wb25lbnQgc3RydWN0Ci0gKiBAcGFyYW0gdHlwZSBvbmUgb2YgdGhlIG5kbl9FeGNsdWRlVHlwZSBlbnVtCi0gKiBAcGFyYW0gY29tcG9uZW50IHRoZSBwcmUtYWxsb2NhdGVkIGJ1ZmZlciBmb3IgdGhlIGNvbXBvbmVudCB2YWx1ZSwgb25seSB1c2VkIGlmIHR5cGUgaXMgbmRuX0V4Y2x1ZGVfQ09NUE9ORU5UCi0gKiBAcGFyYW0gY29tcG9uZW50TGVuZ3RoIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdmFsdWUsIG9ubHkgdXNlZCBpZiB0eXBlIGlzIG5kbl9FeGNsdWRlX0NPTVBPTkVOVAotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX0V4Y2x1ZGVFbnRyeV9pbml0aWFsaXplKHN0cnVjdCBuZG5fRXhjbHVkZUVudHJ5ICpzZWxmLCBuZG5fRXhjbHVkZVR5cGUgdHlwZSwgdWludDhfdCAqY29tcG9uZW50LCBzaXplX3QgY29tcG9uZW50TGVuZ3RoKSAKLXsKLSAgc2VsZi0+dHlwZSA9IHR5cGU7Ci0gIG5kbl9OYW1lQ29tcG9uZW50X2luaXRpYWxpemUoJnNlbGYtPmNvbXBvbmVudCwgY29tcG9uZW50LCBjb21wb25lbnRMZW5ndGgpOwotfQotCi0vKioKLSAqIEFuIG5kbl9FeGNsdWRlIGhvbGRzIGFuIGFycmF5IG9mIG5kbl9FeGNsdWRlRW50cnkuCi0gKi8KLXN0cnVjdCBuZG5fRXhjbHVkZSB7Ci0gIHN0cnVjdCBuZG5fRXhjbHVkZUVudHJ5ICplbnRyaWVzOyAgLyoqPCBwb2ludGVyIHRvIHRoZSBhcnJheSBvZiBlbnRyaWVzLiAqLwotICBzaXplX3QgbWF4RW50cmllczsgICAgICAgICAgICAgICAgIC8qKjwgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYWxsb2NhdGVkIGVudHJpZXMgYXJyYXkgKi8KLSAgc2l6ZV90IG5FbnRyaWVzOyAgICAgICAgICAgICAgICAgICAvKio8IHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZXhjbHVkZSwgMCBmb3Igbm8gZXhjbHVkZSAqLwotfTsKLS8qKgotICogSW5pdGlhbGl6ZSBhbiBuZG5fRXhjbHVkZSBzdHJ1Y3Qgd2l0aCB0aGUgZW50cmllcyBhcnJheS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX0V4Y2x1ZGUgc3RydWN0LgotICogQHBhcmFtIGVudHJpZXMgdGhlIHByZS1hbGxvY2F0ZWQgYXJyYXkgb2YgbmRuX0V4Y2x1ZGVFbnRyeQotICogQHBhcmFtIG1heEVudHJpZXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYWxsb2NhdGVkIGVudHJpZXMgYXJyYXkKLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9FeGNsdWRlX2luaXRpYWxpemUoc3RydWN0IG5kbl9FeGNsdWRlICpzZWxmLCBzdHJ1Y3QgbmRuX0V4Y2x1ZGVFbnRyeSAqZW50cmllcywgc2l6ZV90IG1heEVudHJpZXMpIAotewotICBzZWxmLT5lbnRyaWVzID0gZW50cmllczsKLSAgc2VsZi0+bWF4RW50cmllcyA9IG1heEVudHJpZXM7Ci0gIHNlbGYtPm5FbnRyaWVzID0gMDsKLX0KLQotLyoqCi0gKiBDb21wYXJlIHRoZSBjb21wb25lbnRzIHVzaW5nIE5ETiBjb21wb25lbnQgb3JkZXJpbmcuCi0gKiBBIGNvbXBvbmVudCBpcyBsZXNzIGlmIGl0IGlzIHNob3J0ZXIsIG90aGVyd2lzZSBpZiBlcXVhbCBsZW5ndGggZG8gYSBieXRlIGNvbXBhcmlzb24uCi0gKiBAcGFyYW0gY29tcG9uZW50MSBBIHBvaW50ZXIgdG8gdGhlIGZpcnN0IG5hbWUgY29tcG9uZW50LgotICogQHBhcmFtIGNvbXBvbmVudDIgQSBwb2ludGVyIHRvIHRoZSBzZWNvbmQgbmFtZSBjb21wb25lbnQuCi0gKiBAcmV0dXJuIC0xIGlmIGNvbXBvbmVudDEgaXMgbGVzcyB0aGFuIGNvbXBvbmVudDIsIDEgaWYgZ3JlYXRlciBvciAwIGlmIGVxdWFsLgotICovCi1pbnQgbmRuX0V4Y2x1ZGVfY29tcGFyZUNvbXBvbmVudHMoc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpjb21wb25lbnQxLCBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKmNvbXBvbmVudDIpOwotCi0vKioKLSAqIENoZWNrIGlmIHRoZSBjb21wb25lbnQgbWF0Y2hlcyBhbnkgb2YgdGhlIGV4Y2x1ZGUgY3JpdGVyaWEuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9FeGNsdWRlIHN0cnVjdC4KLSAqIEBwYXJhbSBjb21wb25lbnQgQSBwb2ludGVyIHRvIHRoZSBuYW1lIGNvbXBvbmVudCB0byBjaGVjay4KLSAqIEByZXR1cm4gMSBpZiB0aGUgY29tcG9uZW50IG1hdGNoZXMgYW55IG9mIHRoZSBleGNsdWRlIGNyaXRlcmlhLCBvdGhlcndpc2UgMC4KLSAqLwotaW50IG5kbl9FeGNsdWRlX21hdGNoZXMoc3RydWN0IG5kbl9FeGNsdWRlICpzZWxmLCBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKmNvbXBvbmVudCk7Ci0KLS8qKgotICogQW4gbmRuX0ludGVyZXN0IGhvbGRzIGFuIG5kbl9OYW1lIGFuZCBvdGhlciBmaWVsZHMgZm9yIGFuIGludGVyZXN0LgotICovCi1zdHJ1Y3QgbmRuX0ludGVyZXN0IHsKLSAgc3RydWN0IG5kbl9OYW1lIG5hbWU7Ci0gIGludCBtaW5TdWZmaXhDb21wb25lbnRzOyAgLyoqPCAtMSBmb3Igbm9uZSAqLwotICBpbnQgbWF4U3VmZml4Q29tcG9uZW50czsgIC8qKjwgLTEgZm9yIG5vbmUgKi8KLSAgc3RydWN0IG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0OwotICBzdHJ1Y3QgbmRuX0V4Y2x1ZGUgZXhjbHVkZTsKLSAgaW50IGNoaWxkU2VsZWN0b3I7ICAgICAgICAvKio8IC0xIGZvciBub25lICovCi0gIGludCBhbnN3ZXJPcmlnaW5LaW5kOyAgICAgLyoqPCAtMSBmb3Igbm9uZSAqLwotICBpbnQgc2NvcGU7ICAgICAgICAgICAgICAgIC8qKjwgLTEgZm9yIG5vbmUgKi8KLSAgbmRuX01pbGxpc2Vjb25kcyBpbnRlcmVzdExpZmV0aW1lTWlsbGlzZWNvbmRzOyAvKio8IG1pbGxpc2Vjb25kcy4gLTEuMCBmb3Igbm9uZSAqLwotICBzdHJ1Y3QgbmRuX0Jsb2Igbm9uY2U7ICAgIC8qKjwgVGhlIGJsb2Igd2hvc2UgdmFsdWUgaXMgYSBwb2ludGVyIHRvIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIuICAwIGZvciBub25lICovCi19OwotCi0vKioKLSAqIEluaXRpYWxpemUgYW4gbmRuX0ludGVyZXN0IHN0cnVjdCB3aXRoIHRoZSBwcmUtYWxsb2NhdGVkIG5hbWVDb21wb25lbnRzIGFuZCBleGNsdWRlRW50cmllcywKLSAqIGFuZCBkZWZhdWx0cyBmb3IgYWxsIHRoZSB2YWx1ZXMuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fSW50ZXJlc3Qgc3RydWN0Ci0gKiBAcGFyYW0gbmFtZUNvbXBvbmVudHMgdGhlIHByZS1hbGxvY2F0ZWQgYXJyYXkgb2YgbmRuX05hbWVDb21wb25lbnQKLSAqIEBwYXJhbSBtYXhOYW1lQ29tcG9uZW50cyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQgbmFtZUNvbXBvbmVudHMgYXJyYXkKLSAqIEBwYXJhbSBleGNsdWRlRW50cmllcyB0aGUgcHJlLWFsbG9jYXRlZCBhcnJheSBvZiBuZG5fRXhjbHVkZUVudHJ5Ci0gKiBAcGFyYW0gbWF4RXhjbHVkZUVudHJpZXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYWxsb2NhdGVkIGV4Y2x1ZGVFbnRyaWVzIGFycmF5Ci0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fSW50ZXJlc3RfaW5pdGlhbGl6ZQotICAoc3RydWN0IG5kbl9JbnRlcmVzdCAqc2VsZiwgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpuYW1lQ29tcG9uZW50cywgc2l6ZV90IG1heE5hbWVDb21wb25lbnRzLAotICAgc3RydWN0IG5kbl9FeGNsdWRlRW50cnkgKmV4Y2x1ZGVFbnRyaWVzLCBzaXplX3QgbWF4RXhjbHVkZUVudHJpZXMpIAotewotICBuZG5fTmFtZV9pbml0aWFsaXplKCZzZWxmLT5uYW1lLCBuYW1lQ29tcG9uZW50cywgbWF4TmFtZUNvbXBvbmVudHMpOwotICBzZWxmLT5taW5TdWZmaXhDb21wb25lbnRzID0gLTE7Ci0gIHNlbGYtPm1heFN1ZmZpeENvbXBvbmVudHMgPSAtMTsKLSAgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdF9pbml0aWFsaXplKCZzZWxmLT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QpOwotICBuZG5fRXhjbHVkZV9pbml0aWFsaXplKCZzZWxmLT5leGNsdWRlLCBleGNsdWRlRW50cmllcywgbWF4RXhjbHVkZUVudHJpZXMpOwotICBzZWxmLT5jaGlsZFNlbGVjdG9yID0gLTE7Ci0gIHNlbGYtPmFuc3dlck9yaWdpbktpbmQgPSAtMTsKLSAgc2VsZi0+c2NvcGUgPSAtMTsKLSAgc2VsZi0+aW50ZXJlc3RMaWZldGltZU1pbGxpc2Vjb25kcyA9IC0xLjA7Ci0gIG5kbl9CbG9iX2luaXRpYWxpemUoJnNlbGYtPm5vbmNlLCAwLCAwKTsKLX0KLQotLyoqCi0gKiBDaGVjayBpZiBzZWxmJ3MgbmFtZSBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lICh1c2luZyBuZG5fTmFtZV9tYXRjaCkgYW5kIHRoZSBnaXZlbiBuYW1lIGFsc28gY29uZm9ybXMgdG8gdGhlIAotICogaW50ZXJlc3Qgc2VsZWN0b3JzLgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fSW50ZXJlc3Qgc3RydWN0LgotICogQHBhcmFtIG5hbWUgQSBwb2ludGVyIHRvIHRoZSBuYW1lIHRvIGNoZWNrLgotICogQHJldHVybiAxIGlmIHRoZSBuYW1lIGFuZCBpbnRlcmVzdCBzZWxlY3RvcnMgbWF0Y2gsIDAgb3RoZXJ3aXNlLgotICovCi1pbnQgbmRuX0ludGVyZXN0X21hdGNoZXNOYW1lKHN0cnVjdCBuZG5fSW50ZXJlc3QgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZSAqbmFtZSk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9zcmMvYy9rZXktbG9jYXRvci5oIGIvc3JjL2Mva2V5LWxvY2F0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI3NWJhOS4uMDAwMDAwMAotLS0gYS9zcmMvYy9rZXktbG9jYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0tFWV9MT0NBVE9SX0gKLSNkZWZpbmUgTkROX0tFWV9MT0NBVE9SX0gKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2Mva2V5LXR5cGVzLmg+Ci0jaW5jbHVkZSAibmFtZS5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogQW4gbmRuX0tleUxvY2F0b3IgaG9sZHMgdGhlIHR5cGUgb2Yga2V5IGxvY2F0b3IgYW5kIHJlbGF0ZWQgZGF0YS4KLSAqLwotc3RydWN0IG5kbl9LZXlMb2NhdG9yIHsKLSAgbmRuX0tleUxvY2F0b3JUeXBlIHR5cGU7ICAgICAvKio8IC0xIGZvciBub25lICovCi0gIHN0cnVjdCBuZG5fQmxvYiBrZXlEYXRhOyAgICAgICAgICAgIC8qKjwgQSBCbG9iIHdob3NlIHZhbHVlIGlzIGEgcG9pbnRlciB0byBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyIGZvciB0aGUga2V5IGRhdGEgYXMgZm9sbG93czoKLSAgICAqICAgSWYgdHlwZSBpcyBuZG5fS2V5TG9jYXRvclR5cGVfS0VZLCB0aGUga2V5IGRhdGEuCi0gICAgKiAgIElmIHR5cGUgaXMgbmRuX0tleUxvY2F0b3JUeXBlX0NFUlRJRklDQVRFLCB0aGUgY2VydGlmaWNhdGUgZGF0YS4gCi0gICAgKiAgIElmIHR5cGUgaXMgbmRuX0tleUxvY2F0b3JUeXBlX0tFWU5BTUUgYW5kIGtleU5hbWVUeXBlIGlzIG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfUFVCTElDX0tFWV9ESUdFU1QsIHRoZSBwdWJsaXNoZXIgcHVibGljIGtleSBkaWdlc3QuIAotICAgICogICBJZiB0eXBlIGlzIG5kbl9LZXlMb2NhdG9yVHlwZV9LRVlOQU1FIGFuZCBrZXlOYW1lVHlwZSBpcyBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0NFUlRJRklDQVRFX0RJR0VTVCwgdGhlIHB1Ymxpc2hlciBjZXJ0aWZpY2F0ZSBkaWdlc3QuIAotICAgICogICBJZiB0eXBlIGlzIG5kbl9LZXlMb2NhdG9yVHlwZV9LRVlOQU1FIGFuZCBrZXlOYW1lVHlwZSBpcyBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0lTU1VFUl9LRVlfRElHRVNULCB0aGUgcHVibGlzaGVyIGlzc3VlciBrZXkgZGlnZXN0LiAKLSAgICAqICAgSWYgdHlwZSBpcyBuZG5fS2V5TG9jYXRvclR5cGVfS0VZTkFNRSBhbmQga2V5TmFtZVR5cGUgaXMgbmRuX0tleU5hbWVUeXBlX1BVQkxJU0hFUl9JU1NVRVJfQ0VSVElGSUNBVEVfRElHRVNULCB0aGUgcHVibGlzaGVyIGlzc3VlciBjZXJ0aWZpY2F0ZSBkaWdlc3QuIAotICAgICovCi0gIHN0cnVjdCBuZG5fTmFtZSBrZXlOYW1lOyAgICAgLyoqPCBUaGUga2V5IG5hbWUgKG9ubHkgdXNlZCBpZiB0eXBlIGlzIG5kbl9LZXlMb2NhdG9yVHlwZV9LRVlOQU1FLikgKi8KLSAgbmRuX0tleU5hbWVUeXBlIGtleU5hbWVUeXBlOyAvKio8IFRoZSB0eXBlIG9mIGRhdGEgZm9yIGtleU5hbWUsIC0xIGZvciBub25lLiAob25seSB1c2VkIGlmIHR5cGUgaXMgbmRuX0tleUxvY2F0b3JUeXBlX0tFWU5BTUUuKSAqLwotfTsKLQotLyoqCi0gKiBJbml0aWFsaXplIGFuIG5kbl9LZXlMb2NhdG9yIHN0cnVjdCB3aXRoIHRoZSBwcmUtYWxsb2NhdGVkIG5hbWVDb21wb25lbnRzLCBhbmQgZGVmYXVsdHMgZm9yIGFsbCB0aGUgdmFsdWVzLgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fS2V5TG9jYXRvciBzdHJ1Y3QuCi0gKiBAcGFyYW0ga2V5TmFtZUNvbXBvbmVudHMgVGhlIHByZS1hbGxvY2F0ZWQgYXJyYXkgb2YgbmRuX05hbWVDb21wb25lbnQuCi0gKiBAcGFyYW0gbWF4S2V5TmFtZUNvbXBvbmVudHMgVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYWxsb2NhdGVkIGtleU5hbWVDb21wb25lbnRzIGFycmF5LgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX0tleUxvY2F0b3JfaW5pdGlhbGl6ZQotICAoc3RydWN0IG5kbl9LZXlMb2NhdG9yICpzZWxmLCBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKmtleU5hbWVDb21wb25lbnRzLCBzaXplX3QgbWF4S2V5TmFtZUNvbXBvbmVudHMpIHsKLSAgc2VsZi0+dHlwZSA9IChuZG5fS2V5TG9jYXRvclR5cGUpLTE7Ci0gIG5kbl9CbG9iX2luaXRpYWxpemUoJnNlbGYtPmtleURhdGEsIDAsIDApOwotICBuZG5fTmFtZV9pbml0aWFsaXplKCZzZWxmLT5rZXlOYW1lLCBrZXlOYW1lQ29tcG9uZW50cywgbWF4S2V5TmFtZUNvbXBvbmVudHMpOwotICBzZWxmLT5rZXlOYW1lVHlwZSA9IChuZG5fS2V5TmFtZVR5cGUpLTE7Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvbmFtZS5jIGIvc3JjL2MvbmFtZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDdkNTgzLi4wMDAwMDAwCi0tLSBhL3NyYy9jL25hbWUuYworKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSAidXRpbC9uZG5fbWVtb3J5LmgiCi0jaW5jbHVkZSAibmFtZS5oIgotCi11aW50NjRfdCBuZG5fTmFtZUNvbXBvbmVudF90b051bWJlcihzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKnNlbGYpCi17Ci0gIHVpbnQ2NF90IHJlc3VsdCA9IDA7Ci0gIHNpemVfdCBpOwotICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+dmFsdWUubGVuZ3RoOyArK2kpIHsKLSAgICByZXN1bHQgKj0gMjU2OwotICAgIHJlc3VsdCArPSAodWludDY0X3Qpc2VsZi0+dmFsdWUudmFsdWVbaV07Ci0gIH0KLSAgCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLW5kbl9FcnJvciBuZG5fTmFtZUNvbXBvbmVudF90b051bWJlcldpdGhNYXJrZXIoc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpzZWxmLCB1aW50OF90IG1hcmtlciwgdWludDY0X3QgKnJlc3VsdCkKLXsKLSAgaWYgKHNlbGYtPnZhbHVlLmxlbmd0aCA9PSAwIHx8IHNlbGYtPnZhbHVlLnZhbHVlWzBdICE9IG1hcmtlcikKLSAgICByZXR1cm4gTkROX0VSUk9SX05hbWVfY29tcG9uZW50X2RvZXNfbm90X2JlZ2luX3dpdGhfdGhlX2V4cGVjdGVkX21hcmtlcjsKLSAgCi0gIHVpbnQ2NF90IGxvY2FsUmVzdWx0ID0gMDsKLSAgc2l6ZV90IGk7Ci0gIGZvciAoaSA9IDE7IGkgPCBzZWxmLT52YWx1ZS5sZW5ndGg7ICsraSkgewotICAgIGxvY2FsUmVzdWx0ICo9IDI1NjsKLSAgICBsb2NhbFJlc3VsdCArPSAodWludDY0X3Qpc2VsZi0+dmFsdWUudmFsdWVbaV07Ci0gIH0KLSAgCi0gICpyZXN1bHQgPSBsb2NhbFJlc3VsdDsKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1pbnQgbmRuX05hbWVfbWF0Y2goc3RydWN0IG5kbl9OYW1lICpzZWxmLCBzdHJ1Y3QgbmRuX05hbWUgKm5hbWUpCi17Ci0gIC8vIFRoaXMgbmFtZSBpcyBsb25nZXIgdGhhbiB0aGUgbmFtZSB3ZSBhcmUgY2hlY2tpbmcgaXQgYWdhaW5zdC4KLSAgaWYgKHNlbGYtPm5Db21wb25lbnRzID4gbmFtZS0+bkNvbXBvbmVudHMpCi0gICAgcmV0dXJuIDA7Ci0KLSAgLy8gQ2hlY2sgaWYgYXQgbGVhc3Qgb25lIG9mIGdpdmVuIGNvbXBvbmVudHMgZG9lc24ndCBtYXRjaC4KLSAgc2l6ZV90IGk7Ci0gIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5uQ29tcG9uZW50czsgKytpKSB7Ci0gICAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpzZWxmQ29tcG9uZW50ID0gc2VsZi0+Y29tcG9uZW50cyArIGk7Ci0gICAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpuYW1lQ29tcG9uZW50ID0gbmFtZS0+Y29tcG9uZW50cyArIGk7Ci0KLSAgICBpZiAoc2VsZkNvbXBvbmVudC0+dmFsdWUubGVuZ3RoICE9IG5hbWVDb21wb25lbnQtPnZhbHVlLmxlbmd0aCB8fAotICAgICAgICBuZG5fbWVtY21wKHNlbGZDb21wb25lbnQtPnZhbHVlLnZhbHVlLCBuYW1lQ29tcG9uZW50LT52YWx1ZS52YWx1ZSwgc2VsZkNvbXBvbmVudC0+dmFsdWUubGVuZ3RoKSAhPSAwKQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLQotICByZXR1cm4gMTsKLX0KLQotbmRuX0Vycm9yIG5kbl9OYW1lX2FwcGVuZENvbXBvbmVudChzdHJ1Y3QgbmRuX05hbWUgKnNlbGYsIHVpbnQ4X3QqIHZhbHVlLCBzaXplX3QgdmFsdWVMZW5ndGgpCi17Ci0gIGlmIChzZWxmLT5uQ29tcG9uZW50cyA+PSBzZWxmLT5tYXhDb21wb25lbnRzKQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9hdHRlbXB0X3RvX2FkZF9hX2NvbXBvbmVudF9wYXN0X3RoZV9tYXhpbXVtX251bWJlcl9vZl9jb21wb25lbnRzX2FsbG93ZWRfaW5fdGhlX25hbWU7Ci0gIG5kbl9OYW1lQ29tcG9uZW50X2luaXRpYWxpemUoc2VsZi0+Y29tcG9uZW50cyArIHNlbGYtPm5Db21wb25lbnRzLCB2YWx1ZSwgdmFsdWVMZW5ndGgpOwotICArK3NlbGYtPm5Db21wb25lbnRzOwotICAgICAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9OYW1lX2FwcGVuZFN0cmluZyhzdHJ1Y3QgbmRuX05hbWUgKnNlbGYsIGNoYXIqIHZhbHVlKQotewotICByZXR1cm4gbmRuX05hbWVfYXBwZW5kQ29tcG9uZW50KHNlbGYsICh1aW50OF90Kil2YWx1ZSwgc3RybGVuKHZhbHVlKSk7Ci19CmRpZmYgLS1naXQgYS9zcmMvYy9uYW1lLmggYi9zcmMvYy9uYW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyOGYxYjEuLjAwMDAwMDAKLS0tIGEvc3JjL2MvbmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9OQU1FX0gKLSNkZWZpbmUgTkROX05BTUVfSAotCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvYy9jb21tb24uaD4KLSNpbmNsdWRlICJlcnJvcnMuaCIKLSNpbmNsdWRlICJ1dGlsL2Jsb2IuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotICAKLS8qKgotICogQW4gbmRuX05hbWVDb21wb25lbnQgaG9sZHMgYSBwb2ludGVyIHRvIHRoZSBjb21wb25lbnQgdmFsdWUuCi0gKi8KLXN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCB7Ci0gIHN0cnVjdCBuZG5fQmxvYiB2YWx1ZTsgICAgIC8qKjwgQSBCbG9iIHdpdGggYSBwb2ludGVyIHRvIHRoZSBwcmUtYWxsb2NhdGVkIGJ1ZmZlciBmb3IgdGhlIGNvbXBvbmVudCB2YWx1ZSAqLwotfTsKLQotLyoqCi0gKiAKLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9OYW1lQ29tcG9uZW50IHN0cnVjdAotICogQHBhcmFtIHZhbHVlIHRoZSBwcmUtYWxsb2NhdGVkIGJ1ZmZlciBmb3IgdGhlIGNvbXBvbmVudCB2YWx1ZQotICogQHBhcmFtIHZhbHVlTGVuZ3RoIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdmFsdWUKLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9OYW1lQ29tcG9uZW50X2luaXRpYWxpemUoc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpzZWxmLCB1aW50OF90ICp2YWx1ZSwgc2l6ZV90IHZhbHVlTGVuZ3RoKSAKLXsKLSAgbmRuX0Jsb2JfaW5pdGlhbGl6ZSgmc2VsZi0+dmFsdWUsIHZhbHVlLCB2YWx1ZUxlbmd0aCk7Ci19Ci0KLS8qKgotICogSW50ZXJwcmV0IHRoZSBuYW1lIGNvbXBvbmVudCBhcyBhIG5ldHdvcmstb3JkZXJlZCBudW1iZXIgYW5kIHJldHVybiBhbiBpbnRlZ2VyLgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fTmFtZUNvbXBvbmVudCBzdHJ1Y3QuCi0gKiBAcmV0dXJuIFRoZSBpbnRlZ2VyIG51bWJlci4KLSAqLwotdWludDY0X3QgbmRuX05hbWVDb21wb25lbnRfdG9OdW1iZXIoc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpzZWxmKTsKLQotLyoqCi0gKiBJbnRlcnByZXQgdGhlIG5hbWUgY29tcG9uZW50IGFzIGEgbmV0d29yay1vcmRlcmVkIG51bWJlciB3aXRoIGEgbWFya2VyIGFuZCByZXR1cm4gYW4gaW50ZWdlci4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX05hbWVDb21wb25lbnQgc3RydWN0LgotICogQHBhcmFtIG1hcmtlciBUaGUgcmVxdWlyZWQgZmlyc3QgYnl0ZSBvZiB0aGUgY29tcG9uZW50LgotICogQHBhcmFtIHJlc3VsdCBSZXR1cm4gdGhlIGludGVnZXIgbnVtYmVyLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBvciBhbiBlcnJvciBjb2RlIGlmIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBjb21wb25lbnQgZG9lcyBub3QgZXF1YWwgdGhlIG1hcmtlci4KLSAqLwotbmRuX0Vycm9yIG5kbl9OYW1lQ29tcG9uZW50X3RvTnVtYmVyV2l0aE1hcmtlcihzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKnNlbGYsIHVpbnQ4X3QgbWFya2VyLCB1aW50NjRfdCAqcmVzdWx0KTsKLQotLyoqCi0gKiBBbiBuZG5fTmFtZSBob2xkcyBhbiBhcnJheSBvZiBuZG5fTmFtZUNvbXBvbmVudC4KLSAqLwotc3RydWN0IG5kbl9OYW1lIHsKLSAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpjb21wb25lbnRzOyAvKio8IHBvaW50ZXIgdG8gdGhlIGFycmF5IG9mIGNvbXBvbmVudHMuICovCi0gIHNpemVfdCBtYXhDb21wb25lbnRzOyAgICAgICAgICAgICAgICAgLyoqPCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQgY29tcG9uZW50cyBhcnJheSAqLwotICBzaXplX3QgbkNvbXBvbmVudHM7ICAgICAgICAgICAgICAgICAgIC8qKjwgdGhlIG51bWJlciBvZiBjb21wb25lbnRzIGluIHRoZSBuYW1lICovCi19OwotCi0vKioKLSAqIEluaXRpYWxpemUgYW4gbmRuX05hbWUgc3RydWN0IHdpdGggdGhlIGNvbXBvbmVudHMgYXJyYXkuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fTmFtZSBzdHJ1Y3QKLSAqIEBwYXJhbSBjb21wb25lbnRzIHRoZSBwcmUtYWxsb2NhdGVkIGFycmF5IG9mIG5kbl9OYW1lQ29tcG9uZW50Ci0gKiBAcGFyYW0gbWF4Q29tcG9uZW50cyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQgY29tcG9uZW50cyBhcnJheQotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX05hbWVfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX05hbWUgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqY29tcG9uZW50cywgc2l6ZV90IG1heENvbXBvbmVudHMpIAotewotICBzZWxmLT5jb21wb25lbnRzID0gY29tcG9uZW50czsKLSAgc2VsZi0+bWF4Q29tcG9uZW50cyA9IG1heENvbXBvbmVudHM7Ci0gIHNlbGYtPm5Db21wb25lbnRzID0gMDsKLX0KLQotLyoqCi0gKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgTiBjb21wb25lbnRzIG9mIHRoaXMgbmFtZSBhcmUgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IE4gY29tcG9uZW50cyBvZiB0aGUgZ2l2ZW4gbmFtZS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX05hbWUgc3RydWN0LgotICogQHBhcmFtIG5hbWUgQSBwb2ludGVyIHRvIHRoZSBvdGhlciBuYW1lIHRvIG1hdGNoLgotICogQHJldHVybiAxIGlmIHRoaXMgbWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZSwgMCBvdGhlcndpc2UuICBUaGlzIGFsd2F5cyByZXR1cm5zIDEgaWYgdGhpcyBuYW1lIGlzIGVtcHR5LgotICovCi1pbnQgbmRuX05hbWVfbWF0Y2goc3RydWN0IG5kbl9OYW1lICpzZWxmLCBzdHJ1Y3QgbmRuX05hbWUgKm5hbWUpOwotCi0vKioKLSAqIEFwcGVuZCBhIGNvbXBvbmVudCB0byB0aGlzIG5hbWUgd2l0aCB0aGUgYnl0ZXMgaW4gdGhlIGdpdmVuIGFycmF5LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX05hbWUgc3RydWN0LgotICogQHBhcmFtIHZhbHVlIFRoZSBieXRlcyBvZiB0aGUgY29tcG9uZW50LiAgVGhpcyBkb2VzIG5vdCBjb3B5IHRoZSBieXRlcy4KLSAqIEBwYXJhbSB2YWx1ZUxlbmd0aCBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIHZhbHVlLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBvciBhbiBlcnJvciBjb2RlIGlmIHRoZXJlIGlzIG5vIG1vcmUgcm9vbSBpbiB0aGUgY29tcG9uZW50cyBhcnJheSAobkNvbXBvbmVudHMgaXMgYWxyZWFkeSBtYXhDb21wb25lbnRzKS4KLSAqLwotbmRuX0Vycm9yIG5kbl9OYW1lX2FwcGVuZENvbXBvbmVudChzdHJ1Y3QgbmRuX05hbWUgKnNlbGYsIHVpbnQ4X3QqIHZhbHVlLCBzaXplX3QgdmFsdWVMZW5ndGgpOwotCi0vKioKLSAqIEFwcGVuZCBhIGNvbXBvbmVudCB0byB0aGlzIG5hbWUgd2l0aCB0aGUgYnl0ZXMgaW4gdGhlIGdpdmVuIGJsb2IuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fTmFtZSBzdHJ1Y3QuCi0gKiBAcGFyYW0gdmFsdWUgQW4gbmRuX0Jsb2Igd2l0aCB0aGUgYnl0ZXMgb2YgdGhlIGNvbXBvbmVudC4gIFRoaXMgZG9lcyBub3QgY29weSB0aGUgYnl0ZXMuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIGNvZGUgaWYgdGhlcmUgaXMgbm8gbW9yZSByb29tIGluIHRoZSBjb21wb25lbnRzIGFycmF5IChuQ29tcG9uZW50cyBpcyBhbHJlYWR5IG1heENvbXBvbmVudHMpLgotICovCi1zdGF0aWMgaW5saW5lIG5kbl9FcnJvciBuZG5fTmFtZV9hcHBlbmRCbG9iKHN0cnVjdCBuZG5fTmFtZSAqc2VsZiwgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSkKLXsKLSAgcmV0dXJuIG5kbl9OYW1lX2FwcGVuZENvbXBvbmVudChzZWxmLCB2YWx1ZS0+dmFsdWUsIHZhbHVlLT5sZW5ndGgpOwotfQotCi0vKioKLSAqIEFwcGVuZCBhIGNvbXBvbmVudCB0byB0aGlzIG5hbWUgd2l0aCB0aGUgYnl0ZXMgaW4gcmF3IHN0cmluZyB2YWx1ZS4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9OYW1lIHN0cnVjdC4KLSAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgdHJlYXRlZCBhcyBhIGJ5dGUgYXJyYXkuICBUaGlzIGRvZXMgbm90IGNvcHkgdGhlIGJ5dGVzLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBvciBhbiBlcnJvciBjb2RlIGlmIHRoZXJlIGlzIG5vIG1vcmUgcm9vbSBpbiB0aGUgY29tcG9uZW50cyBhcnJheSAobkNvbXBvbmVudHMgaXMgYWxyZWFkeSBtYXhDb21wb25lbnRzKS4KLSAqLwotbmRuX0Vycm9yIG5kbl9OYW1lX2FwcGVuZFN0cmluZyhzdHJ1Y3QgbmRuX05hbWUgKnNlbGYsIGNoYXIqIHZhbHVlKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL3NyYy9jL3B1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5oIGIvc3JjL2MvcHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MWFjMzIuLjAwMDAwMDAKLS0tIGEvc3JjL2MvcHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fUFVCTElTSEVSUFVCTElDS0VZRElHRVNUX0gKLSNkZWZpbmUgTkROX1BVQkxJU0hFUlBVQkxJQ0tFWURJR0VTVF9ICi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2NvbW1vbi5oPgotI2luY2x1ZGUgInV0aWwvYmxvYi5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogQSBQdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgaG9sZHMgYSBwb2ludGVyIHRvIHRoZSBwdWJsaXNoZXIgcHVibGljIGtleSBkaWdlc3QgdmFsdWUsIGlmIGFueS4KLSAqIFdlIG1ha2UgYSBzZXBhcmF0ZSBzdHJ1Y3Qgc2luY2UgdGhpcyBpcyB1c2VkIGJ5IG11bHRpcGxlIG90aGVyIHN0cnVjdHMuCi0gKi8KLXN0cnVjdCBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0IHsKLSAgc3RydWN0IG5kbl9CbG9iIHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdDsgLyoqPCBBIEJsb2Igd2hvc2UgdmFsdWUgaXMgYSBwb2ludGVyIHRvIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiAgMCBmb3Igbm9uZSAqLwotfTsKLQotLyoqCi0gKiBJbml0aWFsaXplIGFuIG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3Qgc3RydWN0IHdpdGggMCBmb3Igbm9uZS4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3RfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCAqc2VsZikKLXsKLSAgbmRuX0Jsb2JfaW5pdGlhbGl6ZSgmc2VsZi0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0LCAwLCAwKTsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy90cmFuc3BvcnQvc29ja2V0LXRyYW5zcG9ydC5jIGIvc3JjL2MvdHJhbnNwb3J0L3NvY2tldC10cmFuc3BvcnQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlhNWI1Ny4uMDAwMDAwMAotLS0gYS9zcmMvYy90cmFuc3BvcnQvc29ja2V0LXRyYW5zcG9ydC5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAic29ja2V0LXRyYW5zcG9ydC5oIgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxuZXRkYi5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0jaW5jbHVkZSA8cG9sbC5oPgotI2luY2x1ZGUgIi4uL3V0aWwvbmRuX21lbW9yeS5oIgotCi1uZG5fRXJyb3IgbmRuX1NvY2tldFRyYW5zcG9ydF9jb25uZWN0KHN0cnVjdCBuZG5fU29ja2V0VHJhbnNwb3J0ICpzZWxmLCBuZG5fU29ja2V0VHlwZSBzb2NrZXRUeXBlLCBjaGFyICpob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0KQotewotICBpZiAoc2VsZi0+c29ja2V0RGVzY3JpcHRvciA+PSAwKSB7Ci0gICAgY2xvc2Uoc2VsZi0+c29ja2V0RGVzY3JpcHRvcik7Ci0gICAgc2VsZi0+c29ja2V0RGVzY3JpcHRvciA9IC0xOwotICB9Ci0gIAotICBzdHJ1Y3QgYWRkcmluZm8gaGludHM7Ci0gIG5kbl9tZW1zZXQoKHVpbnQ4X3QgKikmaGludHMsIDAsIHNpemVvZihoaW50cykpOwotICBoaW50cy5haV9mYW1pbHkgPSBBRl9VTlNQRUM7Ci0gIGlmIChzb2NrZXRUeXBlID09IFNPQ0tFVF9UQ1ApCi0gICAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKLSAgZWxzZSBpZiAoc29ja2V0VHlwZSA9PSBTT0NLRVRfVURQKQotICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19ER1JBTTsKLSAgZWxzZQotICAgIHJldHVybiBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9Tb2NrZXRUcmFuc3BvcnQ7Ci0KLSAgY2hhciBwb3J0U3RyaW5nWzEwXTsKLSAgc3ByaW50Zihwb3J0U3RyaW5nLCAiJWQiLCBwb3J0KTsKLSAgCi0gIHN0cnVjdCBhZGRyaW5mbyAqc2VydmVySW5mbzsKLSAgaWYgKGdldGFkZHJpbmZvKGhvc3QsIHBvcnRTdHJpbmcsICZoaW50cywgJnNlcnZlckluZm8pICE9IDApCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfZXJyb3JfaW5fZ2V0YWRkcmluZm87Ci0KLSAgLy8gbG9vcCB0aHJvdWdoIGFsbCB0aGUgcmVzdWx0cyBhbmQgY29ubmVjdCB0byB0aGUgZmlyc3Qgd2UgY2FuCi0gIHN0cnVjdCBhZGRyaW5mbyAqcDsKLSAgaW50IHNvY2tldERlc2NyaXB0b3I7Ci0gIGZvcihwID0gc2VydmVySW5mbzsgcCAhPSBOVUxMOyBwID0gcC0+YWlfbmV4dCkgewotICAgIGlmICgoc29ja2V0RGVzY3JpcHRvciA9IHNvY2tldChwLT5haV9mYW1pbHksIHAtPmFpX3NvY2t0eXBlLCBwLT5haV9wcm90b2NvbCkpID09IC0xKQotICAgICAgY29udGludWU7Ci0KLSAgICBpZiAoY29ubmVjdChzb2NrZXREZXNjcmlwdG9yLCBwLT5haV9hZGRyLCBwLT5haV9hZGRybGVuKSA9PSAtMSkgewotICAgICAgY2xvc2Uoc29ja2V0RGVzY3JpcHRvcik7Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBicmVhazsKLSAgfQotCi0gIGlmIChwID09IE5VTEwpIHsKLSAgICBmcmVlYWRkcmluZm8oc2VydmVySW5mbyk7Ci0gICAgcmV0dXJuIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfY2Fubm90X2Nvbm5lY3RfdG9fc29ja2V0OwotICB9Ci0KLSAgZnJlZWFkZHJpbmZvKHNlcnZlckluZm8pOwotICBzZWxmLT5zb2NrZXREZXNjcmlwdG9yID0gc29ja2V0RGVzY3JpcHRvcjsKLQotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fU29ja2V0VHJhbnNwb3J0X3NlbmQoc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgKnNlbGYsIHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQotewotICBpZiAoc2VsZi0+c29ja2V0RGVzY3JpcHRvciA8IDApCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfc29ja2V0X2lzX25vdF9vcGVuOwotICAKLSAgaW50IG5CeXRlczsKLSAgd2hpbGUgKDEpIHsKLSAgICBpZiAoKG5CeXRlcyA9IHNlbmQoc2VsZi0+c29ja2V0RGVzY3JpcHRvciwgZGF0YSwgZGF0YUxlbmd0aCwgMCkpIDwgMCkKLSAgICAgIHJldHVybiBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX3NlbmQ7Ci0gICAgaWYgKG5CeXRlcyA+PSBkYXRhTGVuZ3RoKQotICAgICAgYnJlYWs7Ci0gICAgCi0gICAgLy8gU2VuZCBtb3JlLgotICAgIGRhdGFMZW5ndGggLT0gbkJ5dGVzOwotICB9Ci0KLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOyAgCi19Ci0KLW5kbl9FcnJvciBuZG5fU29ja2V0VHJhbnNwb3J0X3JlY2VpdmVJc1JlYWR5KHN0cnVjdCBuZG5fU29ja2V0VHJhbnNwb3J0ICpzZWxmLCBpbnQgKnJlY2VpdmVJc1JlYWR5KQotewotICAvLyBEZWZhdWx0IHRvIG5vdCByZWFkeS4KLSAgKnJlY2VpdmVJc1JlYWR5ID0gMDsKLQotICBpZiAoc2VsZi0+c29ja2V0RGVzY3JpcHRvciA8IDApCi0gICAgLy8gVGhlIHNvY2tldCBpcyBub3Qgb3Blbi4gIEp1c3Qgc2lsZW50bHkgcmV0dXJuLgotICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLSAgCi0gIHN0cnVjdCBwb2xsZmQgcG9sbEluZm9bMV07Ci0gIHBvbGxJbmZvWzBdLmZkID0gc2VsZi0+c29ja2V0RGVzY3JpcHRvcjsKLSAgcG9sbEluZm9bMF0uZXZlbnRzID0gUE9MTElOOwotICAKLSAgaW50IHBvbGxSZXN1bHQgPSBwb2xsKHBvbGxJbmZvLCAxLCAwKTsKLQotICBpZiAocG9sbFJlc3VsdCA8IDApCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfZXJyb3JfaW5fcG9sbDsKLSAgZWxzZSBpZiAocG9sbFJlc3VsdCA9PSAwKQotICAgIC8vIFRpbWVvdXQsIHNvIG5vIGRhdGEgcmVhZHkuCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICBlbHNlIHsKLSAgIGlmIChwb2xsSW5mb1swXS5yZXZlbnRzICYgUE9MTElOKQotICAgICAqcmVjZWl2ZUlzUmVhZHkgPSAxOwotICB9Ci0KLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX1NvY2tldFRyYW5zcG9ydF9yZWNlaXZlCi0gIChzdHJ1Y3QgbmRuX1NvY2tldFRyYW5zcG9ydCAqc2VsZiwgdWludDhfdCAqYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBzaXplX3QgKm5CeXRlc091dCkKLXsKLSAgaWYgKHNlbGYtPnNvY2tldERlc2NyaXB0b3IgPCAwKQotICAgIHJldHVybiBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X3NvY2tldF9pc19ub3Rfb3BlbjsKLQotICBpbnQgbkJ5dGVzOyAgCi0gIGlmICgobkJ5dGVzID0gcmVjdihzZWxmLT5zb2NrZXREZXNjcmlwdG9yLCBidWZmZXIsIGJ1ZmZlckxlbmd0aCwgMCkpID09IC0xKQotICAgIHJldHVybiBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX3JlY3Y7Ci0KLSAgKm5CeXRlc091dCA9IChzaXplX3QpbkJ5dGVzOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOyAgCi19Ci0KLW5kbl9FcnJvciBuZG5fU29ja2V0VHJhbnNwb3J0X2Nsb3NlKHN0cnVjdCBuZG5fU29ja2V0VHJhbnNwb3J0ICpzZWxmKQotewotICBpZiAoc2VsZi0+c29ja2V0RGVzY3JpcHRvciA8IDApCi0gICAgLy8gQWxyZWFkeSBjbG9zZWQuICBEbyBub3RoaW5nLgotICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLSAgCi0gIGlmIChjbG9zZShzZWxmLT5zb2NrZXREZXNjcmlwdG9yKSAhPSAwKQotICAgIHJldHVybiBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX2Nsb3NlOwotICAKLSAgc2VsZi0+c29ja2V0RGVzY3JpcHRvciA9IC0xOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvdHJhbnNwb3J0L3NvY2tldC10cmFuc3BvcnQuaCBiL3NyYy9jL3RyYW5zcG9ydC9zb2NrZXQtdHJhbnNwb3J0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZGJiNTYuLjAwMDAwMDAKLS0tIGEvc3JjL2MvdHJhbnNwb3J0L3NvY2tldC10cmFuc3BvcnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9TT0NLRVRUUkFOU1BPUlRfSAotI2RlZmluZSBORE5fU09DS0VUVFJBTlNQT1JUX0gKLQotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2NvbW1vbi5oPgotI2luY2x1ZGUgIi4uL2Vycm9ycy5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXR5cGVkZWYgZW51bSB7Ci0gIFNPQ0tFVF9UQ1AsCi0gIFNPQ0tFVF9VRFAKLX0gbmRuX1NvY2tldFR5cGU7Ci0gIAotc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgewotICBpbnQgc29ja2V0RGVzY3JpcHRvcjsgLyoqPCAtMSBpZiBub3QgY29ubmVjdGVkICovCi19OwotICAKLS8qKgotICogSW5pdGlhbGl6ZSB0aGUgbmRuX1NvY2tldFRyYW5zcG9ydCBzdHJ1Y3Qgd2l0aCBkZWZhdWx0IHZhbHVlcyBmb3Igbm8gY29ubmVjdGlvbiB5ZXQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9Tb2NrZXRUcmFuc3BvcnQgc3RydWN0LgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX1NvY2tldFRyYW5zcG9ydF9pbml0aWFsaXplKHN0cnVjdCBuZG5fU29ja2V0VHJhbnNwb3J0ICpzZWxmKQotewotICBzZWxmLT5zb2NrZXREZXNjcmlwdG9yID0gLTE7Ci19Ci0KLS8qKgotICogQ29ubmVjdCB3aXRoIFRDUCBvciBVRFAgdG8gdGhlIGhvc3Q6cG9ydC4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1NvY2tldFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKiBAcGFyYW0gc29ja2V0VHlwZSBTT0NLRVRfVENQIG9yIFNPQ0tFVF9VRFAuCi0gKiBAcGFyYW0gaG9zdCBUaGUgaG9zdCB0byBjb25uZWN0IHRvLgotICogQHBhcmFtIHBvcnQgVGhlIHBvcnQgdG8gY29ubmVjdCB0by4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLgotICovCi1uZG5fRXJyb3IgbmRuX1NvY2tldFRyYW5zcG9ydF9jb25uZWN0KHN0cnVjdCBuZG5fU29ja2V0VHJhbnNwb3J0ICpzZWxmLCBuZG5fU29ja2V0VHlwZSBzb2NrZXRUeXBlLCBjaGFyICpob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0KTsKLQotLyoqCi0gKiBTZW5kIGRhdGEgdG8gdGhlIHNvY2tldC4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1NvY2tldFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKiBAcGFyYW0gZGF0YSBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBvZiBkYXRhIHRvIHNlbmQuCi0gKiBAcGFyYW0gZGF0YUxlbmd0aCBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGRhdGEuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotbmRuX0Vycm9yIG5kbl9Tb2NrZXRUcmFuc3BvcnRfc2VuZChzdHJ1Y3QgbmRuX1NvY2tldFRyYW5zcG9ydCAqc2VsZiwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwotCi0vKioKLSAqIENoZWNrIGlmIHRoZXJlIGlzIGRhdGEgcmVhZHkgb24gdGhlIHNvY2tldCB0byBiZSByZWNlaXZlZCB3aXRoIG5kbl9Tb2NrZXRUcmFuc3BvcnRfcmVjZWl2ZS4KLSAqIFRoaXMgZG9lcyBub3QgYmxvY2ssIGFuZCByZXR1cm5zIGltbWVkaWF0ZWx5LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fU29ja2V0VHJhbnNwb3J0IHN0cnVjdC4KLSAqIEBwYXJhbSByZWNlaXZlSXNSZWFkeSBUaGlzIHdpbGwgYmUgc2V0IHRvIDEgaWYgZGF0YSBpcyByZWFkeSwgMCBpZiBub3QuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotbmRuX0Vycm9yIG5kbl9Tb2NrZXRUcmFuc3BvcnRfcmVjZWl2ZUlzUmVhZHkoc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgKnNlbGYsIGludCAqcmVjZWl2ZUlzUmVhZHkpOwotCi0vKioKLSAqIFJlY2VpdmUgZGF0YSBmcm9tIHRoZSBzb2NrZXQuICBOT1RFOiBUaGlzIGlzIGEgYmxvY2tpbmcgY2FsbC4gIFlvdSBzaG91bGQgZmlyc3QgY2FsbCBuZG5fU29ja2V0VHJhbnNwb3J0X3JlY2VpdmVJc1JlYWR5Ci0gKiB0byBtYWtlIHN1cmUgdGhlcmUgaXMgZGF0YSByZWFkeSB0byByZWNlaXZlLgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fU29ja2V0VHJhbnNwb3J0IHN0cnVjdC4KLSAqIEBwYXJhbSBidWZmZXIgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgZGF0YS4KLSAqIEBwYXJhbSBidWZmZXJMZW5ndGggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGJ1ZmZlci4KLSAqIEBwYXJhbSBuQnl0ZXMgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgaW50byBidWZmZXIuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotbmRuX0Vycm9yIG5kbl9Tb2NrZXRUcmFuc3BvcnRfcmVjZWl2ZQotICAoc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgKnNlbGYsIHVpbnQ4X3QgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgc2l6ZV90ICpuQnl0ZXMpOwotCi0vKioKLSAqIENsb3NlIHRoZSBzb2NrZXQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9Tb2NrZXRUcmFuc3BvcnQgc3RydWN0LgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLW5kbl9FcnJvciBuZG5fU29ja2V0VHJhbnNwb3J0X2Nsb3NlKHN0cnVjdCBuZG5fU29ja2V0VHJhbnNwb3J0ICpzZWxmKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy90cmFuc3BvcnQvdGNwLXRyYW5zcG9ydC5oIGIvc3JjL2MvdHJhbnNwb3J0L3RjcC10cmFuc3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVmMmU4ZS4uMDAwMDAwMAotLS0gYS9zcmMvYy90cmFuc3BvcnQvdGNwLXRyYW5zcG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyogCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX1RDUFRSQU5TUE9SVF9ICi0jZGVmaW5lIE5ETl9UQ1BUUkFOU1BPUlRfSAotCi0jaW5jbHVkZSAic29ja2V0LXRyYW5zcG9ydC5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXN0cnVjdCBuZG5fVGNwVHJhbnNwb3J0IHsKLSAgc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgYmFzZTsKLX07Ci0gIAotLyoqCi0gKiBJbml0aWFsaXplIHRoZSBuZG5fVGNwVHJhbnNwb3J0IHN0cnVjdCB3aXRoIGRlZmF1bHQgdmFsdWVzIGZvciBubyBjb25uZWN0aW9uIHlldC4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1RjcFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fVGNwVHJhbnNwb3J0X2luaXRpYWxpemUoc3RydWN0IG5kbl9UY3BUcmFuc3BvcnQgKnNlbGYpCi17Ci0gIG5kbl9Tb2NrZXRUcmFuc3BvcnRfaW5pdGlhbGl6ZSgmc2VsZi0+YmFzZSk7Ci19Ci0KLS8qKgotICogQ29ubmVjdCB3aXRoIFRDUCB0byB0aGUgaG9zdDpwb3J0LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fVGNwVHJhbnNwb3J0IHN0cnVjdC4KLSAqIEBwYXJhbSBob3N0IFRoZSBob3N0IHRvIGNvbm5lY3QgdG8uCi0gKiBAcGFyYW0gcG9ydCBUaGUgcG9ydCB0byBjb25uZWN0IHRvLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9UY3BUcmFuc3BvcnRfY29ubmVjdChzdHJ1Y3QgbmRuX1RjcFRyYW5zcG9ydCAqc2VsZiwgY2hhciAqaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9ydCkKLXsKLSAgcmV0dXJuIG5kbl9Tb2NrZXRUcmFuc3BvcnRfY29ubmVjdCgmc2VsZi0+YmFzZSwgU09DS0VUX1RDUCwgaG9zdCwgcG9ydCk7Ci19Ci0KLS8qKgotICogU2VuZCBkYXRhIHRvIHRoZSBzb2NrZXQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9UY3BUcmFuc3BvcnQgc3RydWN0LgotICogQHBhcmFtIGRhdGEgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgb2YgZGF0YSB0byBzZW5kLgotICogQHBhcmFtIGRhdGFMZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyBpbiBkYXRhLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9UY3BUcmFuc3BvcnRfc2VuZChzdHJ1Y3QgbmRuX1RjcFRyYW5zcG9ydCAqc2VsZiwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCi17Ci0gIHJldHVybiBuZG5fU29ja2V0VHJhbnNwb3J0X3NlbmQoJnNlbGYtPmJhc2UsIGRhdGEsIGRhdGFMZW5ndGgpOwotfQotCi0vKioKLSAqIENoZWNrIGlmIHRoZXJlIGlzIGRhdGEgcmVhZHkgb24gdGhlIHNvY2tldCB0byBiZSByZWNlaXZlZCB3aXRoIG5kbl9UY3BUcmFuc3BvcnRfcmVjZWl2ZS4KLSAqIFRoaXMgZG9lcyBub3QgYmxvY2ssIGFuZCByZXR1cm5zIGltbWVkaWF0ZWx5LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fVGNwVHJhbnNwb3J0IHN0cnVjdC4KLSAqIEBwYXJhbSByZWNlaXZlSXNSZWFkeSBUaGlzIHdpbGwgYmUgc2V0IHRvIDEgaWYgZGF0YSBpcyByZWFkeSwgMCBpZiBub3QuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX1RjcFRyYW5zcG9ydF9yZWNlaXZlSXNSZWFkeShzdHJ1Y3QgbmRuX1RjcFRyYW5zcG9ydCAqc2VsZiwgaW50ICpyZWNlaXZlSXNSZWFkeSkKLXsKLSAgcmV0dXJuIG5kbl9Tb2NrZXRUcmFuc3BvcnRfcmVjZWl2ZUlzUmVhZHkoJnNlbGYtPmJhc2UsIHJlY2VpdmVJc1JlYWR5KTsKLX0KLQotLyoqCi0gKiBSZWNlaXZlIGRhdGEgZnJvbSB0aGUgc29ja2V0LiAgTk9URTogVGhpcyBpcyBhIGJsb2NraW5nIGNhbGwuICBZb3Ugc2hvdWxkIGZpcnN0IGNhbGwgbmRuX1NvY2tldFRyYW5zcG9ydF9yZWNlaXZlSXNSZWFkeQotICogdG8gbWFrZSBzdXJlIHRoZXJlIGlzIGRhdGEgcmVhZHkgdG8gcmVjZWl2ZS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1RjcFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKiBAcGFyYW0gYnVmZmVyIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGRhdGEuCi0gKiBAcGFyYW0gYnVmZmVyTGVuZ3RoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBidWZmZXIuCi0gKiBAcGFyYW0gbkJ5dGVzIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGludG8gYnVmZmVyLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9UY3BUcmFuc3BvcnRfcmVjZWl2ZQotICAoc3RydWN0IG5kbl9UY3BUcmFuc3BvcnQgKnNlbGYsIHVpbnQ4X3QgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgc2l6ZV90ICpuQnl0ZXMpCi17Ci0gIHJldHVybiBuZG5fU29ja2V0VHJhbnNwb3J0X3JlY2VpdmUoJnNlbGYtPmJhc2UsIGJ1ZmZlciwgYnVmZmVyTGVuZ3RoLCBuQnl0ZXMpOwotfQotCi0vKioKLSAqIENsb3NlIHRoZSBzb2NrZXQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9UY3BUcmFuc3BvcnQgc3RydWN0LgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9UY3BUcmFuc3BvcnRfY2xvc2Uoc3RydWN0IG5kbl9UY3BUcmFuc3BvcnQgKnNlbGYpCi17Ci0gIHJldHVybiBuZG5fU29ja2V0VHJhbnNwb3J0X2Nsb3NlKCZzZWxmLT5iYXNlKTsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy90cmFuc3BvcnQvdWRwLXRyYW5zcG9ydC5oIGIvc3JjL2MvdHJhbnNwb3J0L3VkcC10cmFuc3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBkMTA2Yi4uMDAwMDAwMAotLS0gYS9zcmMvYy90cmFuc3BvcnQvdWRwLXRyYW5zcG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyogCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX1VEUFRSQU5TUE9SVF9ICi0jZGVmaW5lIE5ETl9VRFBUUkFOU1BPUlRfSAotCi0jaW5jbHVkZSAic29ja2V0LXRyYW5zcG9ydC5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXN0cnVjdCBuZG5fVWRwVHJhbnNwb3J0IHsKLSAgc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgYmFzZTsKLX07Ci0gIAotLyoqCi0gKiBJbml0aWFsaXplIHRoZSBuZG5fVWRwVHJhbnNwb3J0IHN0cnVjdCB3aXRoIGRlZmF1bHQgdmFsdWVzIGZvciBubyBjb25uZWN0aW9uIHlldC4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1VkcFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fVWRwVHJhbnNwb3J0X2luaXRpYWxpemUoc3RydWN0IG5kbl9VZHBUcmFuc3BvcnQgKnNlbGYpCi17Ci0gIG5kbl9Tb2NrZXRUcmFuc3BvcnRfaW5pdGlhbGl6ZSgmc2VsZi0+YmFzZSk7Ci19Ci0KLS8qKgotICogQ29ubmVjdCB3aXRoIFVEUCB0byB0aGUgaG9zdDpwb3J0LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fVWRwVHJhbnNwb3J0IHN0cnVjdC4KLSAqIEBwYXJhbSBob3N0IFRoZSBob3N0IHRvIGNvbm5lY3QgdG8uCi0gKiBAcGFyYW0gcG9ydCBUaGUgcG9ydCB0byBjb25uZWN0IHRvLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9VZHBUcmFuc3BvcnRfY29ubmVjdChzdHJ1Y3QgbmRuX1VkcFRyYW5zcG9ydCAqc2VsZiwgY2hhciAqaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9ydCkKLXsKLSAgcmV0dXJuIG5kbl9Tb2NrZXRUcmFuc3BvcnRfY29ubmVjdCgmc2VsZi0+YmFzZSwgU09DS0VUX1VEUCwgaG9zdCwgcG9ydCk7Ci19Ci0KLS8qKgotICogU2VuZCBkYXRhIHRvIHRoZSBzb2NrZXQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9VZHBUcmFuc3BvcnQgc3RydWN0LgotICogQHBhcmFtIGRhdGEgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgb2YgZGF0YSB0byBzZW5kLgotICogQHBhcmFtIGRhdGFMZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyBpbiBkYXRhLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9VZHBUcmFuc3BvcnRfc2VuZChzdHJ1Y3QgbmRuX1VkcFRyYW5zcG9ydCAqc2VsZiwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCi17Ci0gIHJldHVybiBuZG5fU29ja2V0VHJhbnNwb3J0X3NlbmQoJnNlbGYtPmJhc2UsIGRhdGEsIGRhdGFMZW5ndGgpOwotfQotCi0vKioKLSAqIENoZWNrIGlmIHRoZXJlIGlzIGRhdGEgcmVhZHkgb24gdGhlIHNvY2tldCB0byBiZSByZWNlaXZlZCB3aXRoIG5kbl9VZHBUcmFuc3BvcnRfcmVjZWl2ZS4KLSAqIFRoaXMgZG9lcyBub3QgYmxvY2ssIGFuZCByZXR1cm5zIGltbWVkaWF0ZWx5LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fVWRwVHJhbnNwb3J0IHN0cnVjdC4KLSAqIEBwYXJhbSByZWNlaXZlSXNSZWFkeSBUaGlzIHdpbGwgYmUgc2V0IHRvIDEgaWYgZGF0YSBpcyByZWFkeSwgMCBpZiBub3QuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX1VkcFRyYW5zcG9ydF9yZWNlaXZlSXNSZWFkeShzdHJ1Y3QgbmRuX1VkcFRyYW5zcG9ydCAqc2VsZiwgaW50ICpyZWNlaXZlSXNSZWFkeSkKLXsKLSAgcmV0dXJuIG5kbl9Tb2NrZXRUcmFuc3BvcnRfcmVjZWl2ZUlzUmVhZHkoJnNlbGYtPmJhc2UsIHJlY2VpdmVJc1JlYWR5KTsKLX0KLQotLyoqCi0gKiBSZWNlaXZlIGRhdGEgZnJvbSB0aGUgc29ja2V0LiAgTk9URTogVGhpcyBpcyBhIGJsb2NraW5nIGNhbGwuICBZb3Ugc2hvdWxkIGZpcnN0IGNhbGwgbmRuX1NvY2tldFRyYW5zcG9ydF9yZWNlaXZlSXNSZWFkeQotICogdG8gbWFrZSBzdXJlIHRoZXJlIGlzIGRhdGEgcmVhZHkgdG8gcmVjZWl2ZS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1VkcFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKiBAcGFyYW0gYnVmZmVyIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGRhdGEuCi0gKiBAcGFyYW0gYnVmZmVyTGVuZ3RoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBidWZmZXIuCi0gKiBAcGFyYW0gbkJ5dGVzIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGludG8gYnVmZmVyLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9VZHBUcmFuc3BvcnRfcmVjZWl2ZQotICAoc3RydWN0IG5kbl9VZHBUcmFuc3BvcnQgKnNlbGYsIHVpbnQ4X3QgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgc2l6ZV90ICpuQnl0ZXMpCi17Ci0gIHJldHVybiBuZG5fU29ja2V0VHJhbnNwb3J0X3JlY2VpdmUoJnNlbGYtPmJhc2UsIGJ1ZmZlciwgYnVmZmVyTGVuZ3RoLCBuQnl0ZXMpOwotfQotCi0vKioKLSAqIENsb3NlIHRoZSBzb2NrZXQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9VZHBUcmFuc3BvcnQgc3RydWN0LgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9VZHBUcmFuc3BvcnRfY2xvc2Uoc3RydWN0IG5kbl9VZHBUcmFuc3BvcnQgKnNlbGYpCi17Ci0gIHJldHVybiBuZG5fU29ja2V0VHJhbnNwb3J0X2Nsb3NlKCZzZWxmLT5iYXNlKTsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy91dGlsL2Jsb2IuaCBiL3NyYy9jL3V0aWwvYmxvYi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGJiYWY5Li4wMDAwMDAwCi0tLSBhL3NyYy9jL3V0aWwvYmxvYi5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JMT0JfSAotI2RlZmluZSBORE5fQkxPQl9ICi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2NvbW1vbi5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogQW4gbmRuX0Jsb2IgaG9sZHMgYSBwb2ludGVyIHRvIGEgcmVhZC1vbmx5IHByZS1hbGxvY2F0ZWQgYnVmZmVyIGFuZCBpdHMgbGVuZ3RoLgotICovCi1zdHJ1Y3QgbmRuX0Jsb2IgewotICB1aW50OF90ICp2YWx1ZTsgLyoqPCBwb2ludGVyIHRvIHRoZSBwcmUtYWxsb2NhdGVkIGJ1ZmZlciBmb3IgdGhlIHZhbHVlLiBNdXN0IGJlIHRyZWF0ZWQgYXMgcmVhZCBvbmx5LiAqLwotICBzaXplX3QgbGVuZ3RoOyAgLyoqPCB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHZhbHVlLiAqLwotfTsKLQotLyoqCi0gKiBJbml0aWFsaXplIHRoZSBuZG5fQmxvYiBzdHJ1Y3Qgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmxvYiBzdHJ1Y3QuCi0gKiBAcGFyYW0gdmFsdWUgVGhlIHByZS1hbGxvY2F0ZWQgYnVmZmVyIGZvciB0aGUgdmFsdWUsIG9yIDAgZm9yIG5vbmUuCi0gKiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdmFsdWUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fQmxvYl9pbml0aWFsaXplKHN0cnVjdCBuZG5fQmxvYiAqc2VsZiwgdWludDhfdCAqdmFsdWUsIHNpemVfdCBsZW5ndGgpIAotewotICBzZWxmLT52YWx1ZSA9IHZhbHVlOwotICBzZWxmLT5sZW5ndGggPSBsZW5ndGg7Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvdXRpbC9jcnlwdG8uYyBiL3NyYy9jL3V0aWwvY3J5cHRvLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NGU1YjguLjAwMDAwMDAKLS0tIGEvc3JjL2MvdXRpbC9jcnlwdG8uYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAibmRuLWNwcC1kZXYvYy91dGlsL2NyeXB0by5oIgotCi12b2lkIG5kbl9kaWdlc3RTaGEyNTYoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHVpbnQ4X3QgKmRpZ2VzdCkKLXsKLSAgU0hBMjU2X0NUWCBzaGEyNTY7Ci0gIFNIQTI1Nl9Jbml0KCZzaGEyNTYpOwotICBTSEEyNTZfVXBkYXRlKCZzaGEyNTYsIGRhdGEsIGRhdGFMZW5ndGgpOwotICBTSEEyNTZfRmluYWwoZGlnZXN0LCAmc2hhMjU2KTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL3V0aWwvZHluYW1pYy11aW50OC1hcnJheS5jIGIvc3JjL2MvdXRpbC9keW5hbWljLXVpbnQ4LWFycmF5LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYmZkN2MuLjAwMDAwMDAKLS0tIGEvc3JjL2MvdXRpbC9keW5hbWljLXVpbnQ4LWFycmF5LmMKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgImR5bmFtaWMtdWludDgtYXJyYXkuaCIKLQotbmRuX0Vycm9yIG5kbl9EeW5hbWljVUludDhBcnJheV9yZWFsbG9jQXJyYXkoc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSAqc2VsZiwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgaWYgKCFzZWxmLT5yZWFsbG9jKQotICAgIHJldHVybiBORE5fRVJST1JfRHluYW1pY1VJbnQ4QXJyYXlfcmVhbGxvY19mdW5jdGlvbl9wb2ludGVyX25vdF9zdXBwbGllZDsKLSAgCi0gIC8vIFNlZSBpZiBkb3VibGUgaXMgZW5vdWdoLgotICBzaXplX3QgbmV3TGVuZ3RoID0gc2VsZi0+bGVuZ3RoICogMjsKLSAgaWYgKGxlbmd0aCA+IG5ld0xlbmd0aCkKLSAgICAvLyBUaGUgbmVlZGVkIGxlbmd0aCBpcyBtdWNoIGdyZWF0ZXIsIHNvIHVzZSBpdC4KLSAgICBuZXdMZW5ndGggPSBsZW5ndGg7Ci0gICAgCi0gIHVpbnQ4X3QgKm5ld0FycmF5ID0gKCpzZWxmLT5yZWFsbG9jKShzZWxmLCBzZWxmLT5hcnJheSwgbmV3TGVuZ3RoKTsKLSAgaWYgKCFuZXdBcnJheSkKLSAgICByZXR1cm4gTkROX0VSUk9SX0R5bmFtaWNVSW50OEFycmF5X3JlYWxsb2NfZmFpbGVkOwotICAKLSAgc2VsZi0+YXJyYXkgPSBuZXdBcnJheTsKLSAgc2VsZi0+bGVuZ3RoID0gbmV3TGVuZ3RoOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvdXRpbC9keW5hbWljLXVpbnQ4LWFycmF5LmggYi9zcmMvYy91dGlsL2R5bmFtaWMtdWludDgtYXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU0ODY2Mi4uMDAwMDAwMAotLS0gYS9zcmMvYy91dGlsL2R5bmFtaWMtdWludDgtYXJyYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9EWU5BTUlDVUNIQVJBUlJBWV9ICi0jZGVmaW5lIE5ETl9EWU5BTUlDVUNIQVJBUlJBWV9ICi0KLSNpbmNsdWRlICIuLi9lcnJvcnMuaCIKLSNpbmNsdWRlICJuZG5fbWVtb3J5LmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSB7Ci0gIHVpbnQ4X3QgKmFycmF5OyAvKio8IHRoZSBhbGxvY2F0ZWQgYXJyYXkgYnVmZmVyICovCi0gIHNpemVfdCBsZW5ndGg7ICAvKio8IHRoZSBsZW5ndGggb2YgdGhlIGFsbG9jYXRlZCBhcnJheSBidWZmZXIgKi8KLSAgdWludDhfdCAqICgqcmVhbGxvYykKLSAgICAoc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSAqc2VsZiwgdWludDhfdCAqYXJyYXksIHNpemVfdCBsZW5ndGgpOyAvKio8IGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHRoYXQgcmVhbGxvY2F0ZXMgYXJyYXkgYW5kIHJldHVybnMgYSBuZXcgcG9pbnRlciB0byBhIGJ1ZmZlciBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGxlbmd0aCBieXRlcywgb3IgMCBmb3IgZXJyb3IuICBPbiBzdWNjZXNzLCB0aGUgY29udGVudHMgb2YgdGhlIG9sZCBidWZmZXIgYXJlIGNvcGllZCB0byB0aGUgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBPbiBzdWNjZXNzLCB0aGUgb3JpZ2luYWwgYXJyYXkgcG9pbnRlciB3aWxsIG5vIGxvbmdlciBiZSB1c2VkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNlbGYgaXMgYSBwb2ludGVyIHRvIHRoZSBzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5IHdoaWNoIGlzIGNhbGxpbmcgcmVhbGxvYy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIgbWF5IGJlIDAgKHdoaWNoIGNhdXNlcyBhbiBlcnJvciBpZiBhIHJlYWxsb2NhdGUgaXMgbmVjZXNzYXJ5KS4gKi8KLX07Ci0KLS8qKgotICogSW5pdGlhbGl6ZSBhbiBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgc3RydWN0IHdpdGggdGhlIGdpdmVuIGFycmF5IGJ1ZmZlci4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9EeW5hbWljVUludDhBcnJheSBzdHJ1Y3QKLSAqIEBwYXJhbSBhcnJheSB0aGUgYWxsb2NhdGVkIGFycmF5IGJ1ZmZlcgotICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBhbGxvY2F0ZWQgYXJyYXkgYnVmZmVyCi0gKiBAcGFyYW0gcmVhbGxvY0Z1bmN0aW9uIHNlZSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoLiAgVGhpcyBtYXkgYmUgMC4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9EeW5hbWljVUludDhBcnJheV9pbml0aWFsaXplCi0gIChzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpzZWxmLCB1aW50OF90ICphcnJheSwgc2l6ZV90IGxlbmd0aCwgCi0gICB1aW50OF90ICogKCpyZWFsbG9jRnVuY3Rpb24pKHN0cnVjdCBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgKnNlbGYsIHVpbnQ4X3QgKiwgc2l6ZV90KSkgCi17Ci0gIHNlbGYtPmFycmF5ID0gYXJyYXk7Ci0gIHNlbGYtPmxlbmd0aCA9IGxlbmd0aDsKLSAgc2VsZi0+cmVhbGxvYyA9IHJlYWxsb2NGdW5jdGlvbjsKLX0KLQotLyoqCi0gKiBEbyB0aGUgd29yayBvZiBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoIGlmIHJlYWxsb2MgaXMgbmVjZXNzYXJ5LgotICogSWYgdGhlIHNlbGYtPnJlYWxsb2MgZnVuY3Rpb24gcG9pbnRlciBpcyBudWxsLCB0aGVuIHJldHVybiBhbiBlcnJvci4KLSAqIElmIG5vdCBudWxsLCBjYWxsIHNlbGYtPnJlYWxsb2MgdG8gcmVhbGxvY2F0ZSBzZWxmLT5hcnJheSwgYW5kIHVwZGF0ZSBzZWxmLT5sZW5ndGggKHdoaWNoIG1heSBiZSBncmVhdGVyIHRoYW4gbGVuZ3RoKS4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9EeW5hbWljVUludDhBcnJheSBzdHJ1Y3QKLSAqIEBwYXJhbSBsZW5ndGggdGhlIG5lZWRlZCBtaW5pbXVtIHNpemUgZm9yIHNlbGYtPmxlbmd0aAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUgaWYgY2FuJ3QgcmVhbGxvY2F0ZSB0aGUgYXJyYXkKLSAqLwotbmRuX0Vycm9yIG5kbl9EeW5hbWljVUludDhBcnJheV9yZWFsbG9jQXJyYXkoc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSAqc2VsZiwgc2l6ZV90IGxlbmd0aCk7Ci0KLS8qKgotICogRW5zdXJlIHRoYXQgc2VsZi0+bGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBsZW5ndGguICBJZiBpdCBpcywganVzdCByZXR1cm4gMCBmb3Igc3VjY2Vzcy4KLSAqIE90aGVyd2lzZSwgaWYgdGhlIHNlbGYtPnJlYWxsb2MgZnVuY3Rpb24gcG9pbnRlciBpcyBudWxsLCB0aGVuIHJldHVybiBhbiBlcnJvci4KLSAqIElmIG5vdCBudWxsLCBjYWxsIHNlbGYtPnJlYWxsb2MgdG8gcmVhbGxvY2F0ZSBzZWxmLT5hcnJheSwgYW5kIHVwZGF0ZSBzZWxmLT5sZW5ndGggKHdoaWNoIG1heSBiZSBncmVhdGVyIHRoYW4gbGVuZ3RoKS4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9EeW5hbWljVUludDhBcnJheSBzdHJ1Y3QKLSAqIEBwYXJhbSBsZW5ndGggdGhlIG5lZWRlZCBtaW5pbXVtIHNpemUgZm9yIHNlbGYtPmxlbmd0aAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUgaWYgbmVlZCB0byByZWFsbG9jYXRlIHRoZSBhcnJheSBidXQgY2FuJ3QKLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aChzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpzZWxmLCBzaXplX3QgbGVuZ3RoKSAKLXsKLSAgaWYgKHNlbGYtPmxlbmd0aCA+PSBsZW5ndGgpCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotCi0gIHJldHVybiBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfcmVhbGxvY0FycmF5KHNlbGYsIGxlbmd0aCk7Ci19Ci0KLS8qKgotICogQ29weSB2YWx1ZSBpbnRvIHNlbGYtPmFycmF5IGF0IG9mZnNldCwgdXNpbmcgbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aCB0byBtYWtlIHN1cmUgc2VsZi0+YXJyYXkgaGFzIGVub3VnaCBsZW5ndGguCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgc3RydWN0Ci0gKiBAcGFyYW0gdmFsdWUgdGhlIGJ1ZmZlciB0byBjb3B5IGZyb20KLSAqIEBwYXJhbSB2YWx1ZUxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSBidWZmZXIKLSAqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCBpbiBzZWxmLT5hcnJheSB0byBjb3B5IHRvCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSBpZiBuZWVkIHRvIHJlYWxsb2NhdGUgdGhlIGFycmF5IGJ1dCBjYW4ndAotICovCi1zdGF0aWMgaW5saW5lIG5kbl9FcnJvciBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfc2V0Ci0gIChzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpzZWxmLCB1aW50OF90ICp2YWx1ZSwgc2l6ZV90IHZhbHVlTGVuZ3RoLCBzaXplX3Qgb2Zmc2V0KSAKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aChzZWxmLCB2YWx1ZUxlbmd0aCArIG9mZnNldCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgbmRuX21lbWNweShzZWxmLT5hcnJheSArIG9mZnNldCwgdmFsdWUsIHZhbHVlTGVuZ3RoKTsKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL3NyYy9jL3V0aWwvbmRuX21lbW9yeS5jIGIvc3JjL2MvdXRpbC9uZG5fbWVtb3J5LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YzM1MTAuLjAwMDAwMDAKLS0tIGEvc3JjL2MvdXRpbC9uZG5fbWVtb3J5LmMKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgIm5kbl9tZW1vcnkuaCIKLQotI2lmICFORE5fQ1BQX0hBVkVfTUVNQ01QCi1pbnQgbmRuX21lbWNtcChjb25zdCB1aW50OF90ICpidWYxLCBjb25zdCB1aW50OF90ICpidWYyLCBzaXplX3QgbGVuKQotewotICBzaXplX3QgaTsKLSAgCi0gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgIGlmIChidWYxW2ldID4gYnVmMltpXSkKLSAgICAgIHJldHVybiAxOwotICAgIGVsc2UgaWYgKGJ1ZjFbaV0gPCBidWYyW2ldKQotICAgICAgcmV0dXJuIC0xOwotICB9Ci0gIAotICByZXR1cm4gMDsKLX0KLSNlbHNlCi1pbnQgbmRuX21lbWNtcF9zdHViX3RvX2F2b2lkX2VtcHR5X2ZpbGVfd2FybmluZyA9IDA7Ci0jZW5kaWYKLQotI2lmICFORE5fQ1BQX0hBVkVfTUVNQ1BZCi12b2lkIG5kbl9tZW1jcHkodWludDhfdCAqZGVzdCwgY29uc3QgdWludDhfdCAqc3JjLCBzaXplX3QgbGVuKQotewotICBzaXplX3QgaTsKLSAgCi0gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICBkZXN0W2ldID0gc3JjW2ldOwotfQotI2Vsc2UKLWludCBuZG5fbWVtY3B5X3N0dWJfdG9fYXZvaWRfZW1wdHlfZmlsZV93YXJuaW5nID0gMDsKLSNlbmRpZgotCi0jaWYgIU5ETl9DUFBfSEFWRV9NRU1TRVQKLXZvaWQgbmRuX21lbXNldCh1aW50OF90ICpkZXN0LCBpbnQgdmFsLCBzaXplX3QgbGVuKQotewotICBzaXplX3QgaTsKLSAgCi0gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICBkZXN0W2ldID0gKHVpbnQ4X3QpdmFsOwotfQotI2Vsc2UKLWludCBuZG5fbWVtc2V0X3N0dWJfdG9fYXZvaWRfZW1wdHlfZmlsZV93YXJuaW5nID0gMDsKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvdXRpbC9uZG5fbWVtb3J5LmggYi9zcmMvYy91dGlsL25kbl9tZW1vcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA3NzliZS4uMDAwMDAwMAotLS0gYS9zcmMvYy91dGlsL25kbl9tZW1vcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0vKgotICogQmFzZWQgb24gTkROX0NQUF9IQVZFX01FTUNQWSBhbmQgTkROX0NQUF9IQVZFX01FTVNFVCBpbiBuZG4tY3BwLWNvbmZpZy5oLCB1c2UgdGhlIGxpYnJhcnkgdmVyc2lvbiBvciBhIGxvY2FsIGltcGxlbWVudGF0aW9uIG9mIG1lbWNtcCwgbWVtY3B5IGFuZCBtZW1zZXQuCi0gKi8KLQotI2lmbmRlZiBORE5fTUVNT1JZX0gKLSNkZWZpbmUgTkROX01FTU9SWV9ICi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2NvbW1vbi5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLSNpZiBORE5fQ1BQX0hBVkVfTUVNQ01QCi0jaW5jbHVkZSA8bWVtb3J5Lmg+Ci0vKioKLSAqIFVzZSB0aGUgbGlicmFyeSB2ZXJzaW9uIG9mIG1lbWNtcC4KLSAqLwotc3RhdGljIGlubGluZSBpbnQgbmRuX21lbWNtcChjb25zdCB1aW50OF90ICpidWYxLCBjb25zdCB1aW50OF90ICpidWYyLCBzaXplX3QgbGVuKSB7IHJldHVybiBtZW1jbXAoYnVmMSwgYnVmMiwgbGVuKTsgfQotI2Vsc2UKLS8qKgotICogVXNlIGEgbG9jYWwgaW1wbGVtZW50YXRpb24gb2YgbWVtY21wIGluc3RlYWQgb2YgdGhlIGxpYnJhcnkgdmVyc2lvbi4KLSAqLwotaW50IG5kbl9tZW1jbXAoY29uc3QgdWludDhfdCAqYnVmMSwgY29uc3QgdWludDhfdCAqYnVmMiwgc2l6ZV90IGxlbik7Ci0jZW5kaWYKLQotI2lmIE5ETl9DUFBfSEFWRV9NRU1DUFkKLSNpbmNsdWRlIDxtZW1vcnkuaD4KLS8qKgotICogVXNlIHRoZSBsaWJyYXJ5IHZlcnNpb24gb2YgbWVtY3B5LgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX21lbWNweSh1aW50OF90ICpkZXN0LCBjb25zdCB1aW50OF90ICpzcmMsIHNpemVfdCBsZW4pIHsgbWVtY3B5KGRlc3QsIHNyYywgbGVuKTsgfQotI2Vsc2UKLS8qKgotICogVXNlIGEgbG9jYWwgaW1wbGVtZW50YXRpb24gb2YgbWVtY3B5IGluc3RlYWQgb2YgdGhlIGxpYnJhcnkgdmVyc2lvbi4KLSAqLwotdm9pZCBuZG5fbWVtY3B5KHVpbnQ4X3QgKmRlc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywgc2l6ZV90IGxlbik7Ci0jZW5kaWYKLQotI2lmIE5ETl9DUFBfSEFWRV9NRU1TRVQKLSNpbmNsdWRlIDxtZW1vcnkuaD4KLS8qKgotICogVXNlIHRoZSBsaWJyYXJ5IHZlcnNpb24gb2YgbWVtc2V0LgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX21lbXNldCh1aW50OF90ICpkZXN0LCBpbnQgdmFsLCBzaXplX3QgbGVuKSB7IG1lbXNldChkZXN0LCB2YWwsIGxlbik7IH0KLSNlbHNlCi0vKioKLSAqIFVzZSBhIGxvY2FsIGltcGxlbWVudGF0aW9uIG9mIG1lbXNldCBpbnN0ZWFkIG9mIHRoZSBsaWJyYXJ5IHZlcnNpb24uCi0gKi8KLXZvaWQgbmRuX21lbXNldCh1aW50OF90ICpkZXN0LCBpbnQgdmFsLCBzaXplX3QgbGVuKTsKLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvc3JjL2MvdXRpbC9uZG5fcmVhbGxvYy5jIGIvc3JjL2MvdXRpbC9uZG5fcmVhbGxvYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzE0N2Y0Li4wMDAwMDAwCi0tLSBhL3NyYy9jL3V0aWwvbmRuX3JlYWxsb2MuYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSAibmRuX3JlYWxsb2MuaCIKLQotdWludDhfdCAqbmRuX3JlYWxsb2Moc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSAqc2VsZiwgdWludDhfdCAqYXJyYXksIHNpemVfdCBsZW5ndGgpCi17Ci0gIHJldHVybiAodWludDhfdCAqKXJlYWxsb2MoYXJyYXksIGxlbmd0aCk7Ci19CmRpZmYgLS1naXQgYS9zcmMvYy91dGlsL25kbl9yZWFsbG9jLmggYi9zcmMvYy91dGlsL25kbl9yZWFsbG9jLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZWI2YWYuLjAwMDAwMDAKLS0tIGEvc3JjL2MvdXRpbC9uZG5fcmVhbGxvYy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX05ETl9SRUFMTE9DX0gKLSNkZWZpbmUgTkROX05ETl9SRUFMTE9DX0gKLQotI2luY2x1ZGUgImR5bmFtaWMtdWludDgtYXJyYXkuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIFdyYXAgdGhlIEMgc3RkbGliIHJlYWxsb2MgdG8gY29udmVydCB0by9mcm9tIHZvaWQgKiB0byB1aW50OF90ICouCi0gKiBUaGlzIGNhbiBiZSB1c2VkIGJ5IG5kbl9EeW5hbWljVUludDhBcnJheV9pbml0aWFsaXplLgotICogQHBhcmFtIHNlbGYgVGhpcyBpcyBpZ25vcmVkLgotICogQHBhcmFtIGFycmF5IHRoZSBhbGxvY2F0ZWQgYXJyYXkgYnVmZmVyIHRvIHJlYWxsb2MuCi0gKiBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggZm9yIHRoZSBuZXcgYXJyYXkgYnVmZmVyLgotICogQHJldHVybiB0aGUgbmV3IGFsbG9jYXRlZCBhcnJheSBidWZmZXIuCi0gKi8KLXVpbnQ4X3QgKm5kbl9yZWFsbG9jKHN0cnVjdCBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgKnNlbGYsIHVpbnQ4X3QgKmFycmF5LCBzaXplX3QgbGVuZ3RoKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy91dGlsL3RpbWUuYyBiL3NyYy9jL3V0aWwvdGltZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDcxOWMyLi4wMDAwMDAwCi0tLSBhL3NyYy9jL3V0aWwvdGltZS5jCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9uZG4tY3BwLWNvbmZpZy5oPgotI2lmIE5ETl9DUFBfSEFWRV9USU1FX0gKLSNpbmNsdWRlIDx0aW1lLmg+Ci0jZW5kaWYKLSNpZiBORE5fQ1BQX0hBVkVfU1lTX1RJTUVfSAotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlICJ0aW1lLmgiCi0KLW5kbl9NaWxsaXNlY29uZHNTaW5jZTE5NzAgCi1uZG5fZ2V0Tm93TWlsbGlzZWNvbmRzKCkKLXsKLSAgc3RydWN0IHRpbWV2YWwgdDsKLSAgLy8gTm90ZTogY29uZmlndXJlLmFjIHJlcXVpcmVzIGdldHRpbWVvZmRheS4KLSAgZ2V0dGltZW9mZGF5KCZ0LCAwKTsKLSAgcmV0dXJuIHQudHZfc2VjICogMTAwMC4wICsgdC50dl91c2VjIC8gMTAwMC4wOwotfQotCi1uZG5fRXJyb3IKLW5kbl90b0lzb1N0cmluZyhuZG5fTWlsbGlzZWNvbmRzU2luY2UxOTcwIG1pbGxpc2Vjb25kcywgY2hhciAqaXNvU3RyaW5nKQotewotI2lmIE5ETl9DUFBfSEFWRV9HTVRJTUVfU1VQUE9SVAotICBpZiAobWlsbGlzZWNvbmRzIDwgMCkKLSAgICByZXR1cm4gTkROX0VSUk9SX0NhbGVuZGFyX3RpbWVfdmFsdWVfb3V0X29mX3JhbmdlOwotICBlbHNlIGlmIChtaWxsaXNlY29uZHMgPiAyZTE0KQotICAgIC8vIDJlMTQgaXMgYWJvdXQgdGhlIHllYXIgODMwMC4gIFdlIGRvbid0IHdhbnQgdG8gZ28gb3ZlciBhIDQtZGlnaXQgeWVhci4KLSAgICByZXR1cm4gTkROX0VSUk9SX0NhbGVuZGFyX3RpbWVfdmFsdWVfb3V0X29mX3JhbmdlOwotICAKLSAgZG91YmxlIHNlY29uZHNTaW5jZTE5NzAgPSBtaWxsaXNlY29uZHMgLyAxMDAwLjA7Ci0gIGNoYXIgZnJhY3Rpb25CdWZmZXJbMTBdOwotICBzcHJpbnRmKGZyYWN0aW9uQnVmZmVyLCAiJS4wNmxmIiwgZm1vZChzZWNvbmRzU2luY2UxOTcwLCAxLjApKTsKLSAgY29uc3QgY2hhciAqZnJhY3Rpb24gPSBzdHJjaHIoZnJhY3Rpb25CdWZmZXIsICcuJyk7Ci0gIGlmICghZnJhY3Rpb24pCi0gICAgLy8gRG9uJ3QgZXhwZWN0IHRoaXMgdG8gaGFwcGVuLgotICAgIGZyYWN0aW9uID0gIi4wMDAwMDAiOwotICAgIAotICB0aW1lX3Qgc2Vjb25kcyA9ICh0aW1lX3Qpc2Vjb25kc1NpbmNlMTk3MDsKLSAgc3RydWN0IHRtKiBnbXQgPSBnbXRpbWUoJnNlY29uZHMpOwotICBzcHJpbnRmKGlzb1N0cmluZywgIiUwNGQlMDJkJTAyZFQlMDJkJTAyZCUwMmQlcyIsIDE5MDAgKyBnbXQtPnRtX3llYXIsIGdtdC0+dG1fbW9uICsgMSwgZ210LT50bV9tZGF5LAotICAgIGdtdC0+dG1faG91ciwgZ210LT50bV9taW4sIGdtdC0+dG1fc2VjLCBmcmFjdGlvbik7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0jZWxzZQotICByZXR1cm4gTkROX0VSUk9SX1RpbWVfZnVuY3Rpb25zX2FyZV9ub3Rfc3VwcG9ydGVkX2J5X3RoZV9zdGFuZGFyZF9saWJyYXJ5OwotI2VuZGlmCi19Ci0KLW5kbl9FcnJvcgotbmRuX2Zyb21Jc29TdHJpbmcoY29uc3QgY2hhciogaXNvU3RyaW5nLCBuZG5fTWlsbGlzZWNvbmRzU2luY2UxOTcwICptaWxsaXNlY29uZHMpCi17Ci0jaWYgTkROX0NQUF9IQVZFX0dNVElNRV9TVVBQT1JUCi0gIC8vIEluaXRpYWxpemUgdGltZSB6b25lLCBldGMuCi0gIHRpbWVfdCBkdW1teVRpbWUgPSAwOwotICBzdHJ1Y3QgdG0gdG0xID0gKmdtdGltZSgmZHVtbXlUaW1lKTsKLSAgCi0gIHNzY2FuZihpc29TdHJpbmcsICIlNGQlMmQlMmRUJTJkJTJkIiwgJnRtMS50bV95ZWFyLCAmdG0xLnRtX21vbiwgJnRtMS50bV9tZGF5LCAmdG0xLnRtX2hvdXIsICZ0bTEudG1fbWluKTsKLSAgLy8gU2tpcCB0aGUgdGltZSBwYXN0IG1pbnV0ZXMgYW5kIGdldCB0aGUgZmxvYXQgc2Vjb25kcy4KLSAgZG91YmxlIHNlY29uZHM7Ci0gIHNzY2FuZihpc29TdHJpbmcgKyAoNCArIDIgKyAyICsgMSArIDIgKyAyKSwgIiVsZiIsICZzZWNvbmRzKTsKLSAgCi0gIC8vIHRtX3llYXIgc3RhcnRzIGZyb20gMTkwMC4KLSAgdG0xLnRtX3llYXIgLT0gMTkwMDsKLSAgLy8gdG1fbW9uIHN0YXJ0cyBmcm9tIDAsIG5vdCAxLgotICB0bTEudG1fbW9uIC09IDE7Ci0gIHRtMS50bV9zZWMgPSAwOwotICAKLSAgKm1pbGxpc2Vjb25kcyA9ICh0aW1lZ20oJnRtMSkgKyBzZWNvbmRzKSAqIDEwMDAuMDsKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotI2Vsc2UKLSAgcmV0dXJuIE5ETl9FUlJPUl9UaW1lX2Z1bmN0aW9uc19hcmVfbm90X3N1cHBvcnRlZF9ieV90aGVfc3RhbmRhcmRfbGlicmFyeTsKLSNlbmRpZgotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvdXRpbC90aW1lLmggYi9zcmMvYy91dGlsL3RpbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc0ZWYyMS4uMDAwMDAwMAotLS0gYS9zcmMvYy91dGlsL3RpbWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9USU1FX0gKLSNkZWZpbmUgTkROX1RJTUVfSAotCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvYy9jb21tb24uaD4KLSNpbmNsdWRlICIuLi9lcnJvcnMuaCIKLQotI2lmZGVmICBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBVc2UgZ2V0dGltZW9mZGF5IHRvIHJldHVybiB0aGUgY3VycmVudCB0aW1lIGluIG1pbGxpc2Vjb25kcy4KLSAqIEByZXR1cm4gVGhlIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29uZHMgc2luY2UgMS8xLzE5NzAsIGluY2x1ZGluZyBmcmFjdGlvbnMgb2YgYSBtaWxsaXNlY29uZCBhY2NvcmRpbmcgdG8gdGltZXZhbC50dl91c2VjLgotICovCi1uZG5fTWlsbGlzZWNvbmRzU2luY2UxOTcwIAotbmRuX2dldE5vd01pbGxpc2Vjb25kcygpOwotCi0vKioKLSAqIENvbnZlcnQgdGhlIHRpbWUgZnJvbSBtaWxsaXNlY29uZHMgdG8gYW4gSVNPIHRpbWUgc3RyaW5nLCBmb3IgZXhhbXBsZSAiMjAxMzEwMThUMTg0MTM4LjQyMzM1NSIuCi0gKiBAcGFyYW0gbWlsbGlzZWNvbmRzIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyBzaW5jZSAxLzEvMTk3MCwgaW5jbHVkaW5nIGZyYWN0aW9ucyBvZiBhIG1pbGxpc2Vjb25kLgotICogQHBhcmFtIGlzb1N0cmluZyBBIGJ1ZmZlciBvZiBhdCBsZWFzdCAyMyBieXRlcyB0byByZWNlaXZlIHRoZSBudWxsLXRlcm1pbmF0ZWQgSVNPIHRpbWUgc3RyaW5nLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUgaW5jbHVkaW5nIGlmIHdlIGRvbid0IGhhdmUgbmVjZXNzYXJ5IHN0YW5kYXJkIGxpYnJhcnkgc3VwcG9ydC4KLSAqLwotbmRuX0Vycm9yCi1uZG5fdG9Jc29TdHJpbmcobmRuX01pbGxpc2Vjb25kc1NpbmNlMTk3MCBtaWxsaXNlY29uZHMsIGNoYXIgKmlzb1N0cmluZyk7Ci0KLS8qKgotICogUGFyc2UgdGhlIElTTyB0aW1lIHN0cmluZyBhbmQgcmV0dXJuIHRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcy4KLSAqIEBwYXJhbSBpc29TdHJpbmcgVGhlIElTTyB0aW1lIHN0cmluZywgZm9yIGV4YW1wbGUgIjIwMTMxMDE4VDE4NDEzOC40MjMzNTUiLgotICogQHBhcmFtIG1pbGxpc2Vjb25kcyBSZXR1cm4gdGhlIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHNpbmNlIDEvMS8xOTcwLCBpbmNsdWRpbmcgZnJhY3Rpb25zIG9mIGEgbWlsbGlzZWNvbmQuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSBpbmNsdWRpbmcgaWYgd2UgZG9uJ3QgaGF2ZSBuZWNlc3Nhcnkgc3RhbmRhcmQgbGlicmFyeSBzdXBwb3J0LgotICovCi1uZG5fRXJyb3IKLW5kbl9mcm9tSXNvU3RyaW5nKGNvbnN0IGNoYXIqIGlzb1N0cmluZywgbmRuX01pbGxpc2Vjb25kc1NpbmNlMTk3MCAqbWlsbGlzZWNvbmRzKTsKLQotI2lmZGVmICBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi5jcHAgYi9zcmMvY29tbW9uLmNwcAppbmRleCAzMTU2OWUzLi41M2RmNmUxIDEwMDY0NAotLS0gYS9zcmMvY29tbW9uLmNwcAorKysgYi9zcmMvY29tbW9uLmNwcApAQCAtNywxMyArNyw3IEBACiAKICNpbmNsdWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2NvbW1vbi5ocHA+Ci0KLSNpZiBORE5fQ1BQX0hBVkVfVElNRV9ICi0jaW5jbHVkZSA8dGltZS5oPgotI2VuZGlmCi0jaWYgTkROX0NQUF9IQVZFX1NZU19USU1FX0gKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2VuZGlmCisjaW5jbHVkZSAidXRpbC90aW1lLmhwcCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNDAsMTAgKzM0LDcgQEAKIE1pbGxpc2Vjb25kc1NpbmNlMTk3MAogZ2V0Tm93KCkKIHsKLSAgc3RydWN0IHRpbWV2YWwgdDsKLSAgLy8gTm90ZTogY29uZmlndXJlLmFjIHJlcXVpcmVzIGdldHRpbWVvZmRheS4KLSAgZ2V0dGltZW9mZGF5KCZ0LCAwKTsKLSAgcmV0dXJuIHQudHZfc2VjICogMTAwMC4wICsgdC50dl91c2VjIC8gMTAwMC4wOworICByZXR1cm4gZ2V0Tm93TWlsbGlzZWNvbmRzKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtZGVjb2Rlci5ocHAgYi9zcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc1ODNlNS4uMDAwMDAwMAotLS0gYS9zcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbCAtKi0gKi8KLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllYTUxERUNPREVSX0hQUAotI2RlZmluZSBORE5fQklOQVJZWE1MREVDT0RFUl9IUFAKLQotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlICIuLi9jL2Vycm9ycy5oIgotI2luY2x1ZGUgIi4uL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBuZG4gewotICAKLS8qKgotICogQSBCaW5hcnlYbWxEZWNvZGVyIGV4dGVuZHMgYSBDIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdCBhbmQgd3JhcHMgcmVsYXRlZCBmdW5jdGlvbnMuCi0gKi8KLWNsYXNzIEJpbmFyeVhtbERlY29kZXIgOiBwdWJsaWMgbmRuX0JpbmFyeVhtbERlY29kZXIgewotcHVibGljOgotICAvKioKLSAgICogSW5pdGlhbGl6ZSB0aGUgYmFzZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3Qgd2l0aCB0aGUgaW5wdXQuCi0gICAqLwotICBCaW5hcnlYbWxEZWNvZGVyKGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgpIAotICB7Ci0gICAgbmRuX0JpbmFyeVhtbERlY29kZXJfaW5pdGlhbGl6ZSh0aGlzLCAodWludDhfdCAqKWlucHV0LCBpbnB1dExlbmd0aCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBEZWNvZGUgdGhlIGhlYWRlciBmcm9tIHRoZSBpbnB1dCBzdGFydGluZyBhdCBvZmZzZXQsIGFuZCBpZiBpdCBpcyBhIERUQUcgd2hlcmUgdGhlIHZhbHVlIGlzIHRoZSBleHBlY3RlZFRhZywKLSAgICogdGhlbiByZXR1cm4gdHJ1ZSwgZWxzZSBmYWxzZS4gIERvIG5vdCB1cGRhdGUgb2Zmc2V0LCBpbmNsdWRpbmcgaWYgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLgotICAgKiBAcGFyYW0gZXhwZWN0ZWRUYWcgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBEVEFHCi0gICAqIEByZXR1cm4gdHJ1ZSBpZiBnb3QgdGhlIGV4cGVjdGVkIHRhZywgZWxzZSBmYWxzZQotICAgKi8KLSAgYm9vbCAKLSAgcGVla0RUYWcodW5zaWduZWQgaW50IGV4cGVjdGVkVGFnKSAKLSAgewotICAgIGludCBnb3RFeHBlY3RlZFRhZzsKLSAgICBuZG5fRXJyb3IgZXJyb3I7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKHRoaXMsIGV4cGVjdGVkVGFnLCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICAgIHRocm93IHJ1bnRpbWVfZXJyb3IobmRuX2dldEVycm9yU3RyaW5nKGVycm9yKSk7Ci0gICAgCi0gICAgcmV0dXJuIGdvdEV4cGVjdGVkVGFnOwotICB9Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtZW5jb2Rlci5ocHAgYi9zcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbmNvZGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFlMzkxMy4uMDAwMDAwMAotLS0gYS9zcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbmNvZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbCAtKi0gKi8KLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllYTUxFTkNPREVSX0hQUAotI2RlZmluZSBORE5fQklOQVJZWE1MRU5DT0RFUl9IUFAKLQotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jb21tb24uaHBwPgotI2luY2x1ZGUgIi4uL3V0aWwvZHluYW1pYy11aW50OC12ZWN0b3IuaHBwIgotI2luY2x1ZGUgIi4uL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbmNvZGVyLmgiCi0KLW5hbWVzcGFjZSBuZG4gewotICAKLS8qKgotICogQSBCaW5hcnlYbWxFbmNvZGVyIGV4dGVuZHMgYSBDIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdCBhbmQgd3JhcHMgcmVsYXRlZCBmdW5jdGlvbnMuCi0gKi8KLWNsYXNzIEJpbmFyeVhtbEVuY29kZXIgOiBwdWJsaWMgbmRuX0JpbmFyeVhtbEVuY29kZXIgewotcHVibGljOgotICAvKioKLSAgICogSW5pdGlhbGl6ZSB0aGUgYmFzZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3Qgd2l0aCB0aGUgaW5pdGlhbExlbmd0aC4gIFVzZSBzaW1wbGVSZWFsbG9jLgotICAgKiBAcGFyYW0gaW5pdGlhbExlbmd0aCBUaGUgaW5pdGlhbCBzaXplIG9mIHRoZSBvdXRwdXQuICBJZiBvbWl0dGVkLCB1c2UgMTYuCi0gICAqLwotICBCaW5hcnlYbWxFbmNvZGVyKHNpemVfdCBpbml0aWFsTGVuZ3RoID0gMTYpIAotICA6IG91dHB1dF8oMTYpCi0gIHsKLSAgICBuZG5fQmluYXJ5WG1sRW5jb2Rlcl9pbml0aWFsaXplKHRoaXMsICZvdXRwdXRfKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFJlc2l6ZSB0aGUgb3V0cHV0IHZlY3RvciB0byB0aGUgY29ycmVjdCBlbmNvZGluZyBsZW5ndGggYW5kIHJldHVybi4KLSAgICogQHJldHVybiBUaGUgZW5jb2RpbmcgYXMgYSBzaGFyZWRfcHRyLiAgQXNzdW1lIHRoYXQgdGhlIGNhbGxlciBub3cgb3ducyB0aGUgdmVjdG9yLgotICAgKi8KLSAgY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxzdGQ6OnZlY3Rvcjx1aW50OF90PiA+JiAKLSAgZ2V0T3V0cHV0KCkgCi0gIHsKLSAgICBvdXRwdXRfLmdldCgpLT5yZXNpemUob2Zmc2V0KTsKLSAgICByZXR1cm4gb3V0cHV0Xy5nZXQoKTsKLSAgfQotICAKLSAgRHluYW1pY1VJbnQ4VmVjdG9yIG91dHB1dF87Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaHBwIGIvc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzA3NzYzLi4wMDAwMDAwCi0tLSBhL3NyYy9lbmNvZGluZy9iaW5hcnkteG1sLXN0cnVjdHVyZS1kZWNvZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbCAtKi0gKi8KLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllYTUxTVFJVQ1RVUkVERUNPREVSX0hQUAotI2RlZmluZSBORE5fQklOQVJZWE1MU1RSVUNUVVJFREVDT0RFUl9IUFAKLQotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlICIuLi9jL2VuY29kaW5nL0JpbmFyeVhNTFN0cnVjdHVyZURlY29kZXIuaCIKLQotbmFtZXNwYWNlIG5kbiB7Ci0gIAotLyoqCi0gKiBBIEJpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIgZXh0ZW5kcyBhIEMgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIgc3RydWN0IGFuZCB3cmFwcyByZWxhdGVkIGZ1bmN0aW9ucy4KLSAqLwotY2xhc3MgQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciA6IHByaXZhdGUgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIgewotcHVibGljOgotICBCaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyKCkgCi0gIHsKLSAgICBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2Rlcl9pbml0aWFsaXplKHRoaXMpOwotICB9Ci0gIAotICAvKioKLSAgICogQ29udGludWUgc2Nhbm5pbmcgaW5wdXQgc3RhcnRpbmcgZnJvbSBnZXRPZmZzZXQoKSB0byBmaW5kIHRoZSBlbGVtZW50IGVuZC4gIAotICAgKiBJZiB0aGUgZW5kIG9mIHRoZSBlbGVtZW50IHdoaWNoIHN0YXJ0ZWQgYXQgb2Zmc2V0IDAgaXMgZm91bmQsIHRoZW4gcmV0dXJuIHRydWUgYW5kIGdldE9mZnNldCgpIGlzIHRoZSBsZW5ndGggb2YgCi0gICAqICAgdGhlIGVsZW1lbnQuICBPdGhlcndpc2UgcmV0dXJuIGZhbHNlLCB3aGljaCBtZWFucyB5b3Ugc2hvdWxkIHJlYWQgbW9yZSBpbnRvIGlucHV0IGFuZCBjYWxsIGFnYWluLgotICAgKiBAcGFyYW0gaW5wdXQgdGhlIGlucHV0IGJ1ZmZlci4gWW91IGhhdmUgdG8gcGFzcyBpbiBpbnB1dCBlYWNoIHRpbWUgYmVjYXVzZSB0aGUgYnVmZmVyIGNvdWxkIGJlIHJlYWxsb2NhdGVkLgotICAgKiBAcGFyYW0gaW5wdXRMZW5ndGggdGhlIG51bWJlciBvZiBieXRlcyBpbiBpbnB1dC4KLSAgICogQHJldHVybiB0cnVlIGlmIGZvdW5kIHRoZSBlbGVtZW50IGVuZCwgZmFsc2UgaWYgbmVlZCB0byByZWFkIG1vcmUuIChUaGlzIGlzIHRoZSBzYW1lIGFzIHJldHVybmluZyBnb3RFbGVtZW50RW5kKCkuKQotICAgKi8KLSAgYm9vbCAKLSAgZmluZEVsZW1lbnRFbmQodWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkgCi0gIHsKLSAgICBuZG5fRXJyb3IgZXJyb3I7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX2ZpbmRFbGVtZW50RW5kKHRoaXMsIGlucHV0LCBpbnB1dExlbmd0aCkpKQotICAgICAgdGhyb3cgcnVudGltZV9lcnJvcihuZG5fZ2V0RXJyb3JTdHJpbmcoZXJyb3IpKTsKLSAgICByZXR1cm4gZ290RWxlbWVudEVuZCgpOwotICB9Ci0gIAotICBzaXplX3QgCi0gIGdldE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG9mZnNldDsgfQotICAKLSAgYm9vbCAKLSAgZ290RWxlbWVudEVuZCgpIGNvbnN0IHsgcmV0dXJuIGdvdEVsZW1lbnRFbmQgIT0gMDsgfQotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9lbmNvZGluZy9iaW5hcnkteG1sLXdpcmUtZm9ybWF0LmNwcCBiL3NyYy9lbmNvZGluZy9iaW5hcnkteG1sLXdpcmUtZm9ybWF0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNlOGI3Yi4uMDAwMDAwMAotLS0gYS9zcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC13aXJlLWZvcm1hdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzYgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvaW50ZXJlc3QuaHBwPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2RhdGEuaHBwPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2ZvcndhcmRpbmctZW50cnkuaHBwPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2VuY29kaW5nL2JpbmFyeS14bWwtd2lyZS1mb3JtYXQuaHBwPgotI2luY2x1ZGUgIi4uL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1pbnRlcmVzdC5oIgotI2luY2x1ZGUgIi4uL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kYXRhLmgiCi0jaW5jbHVkZSAiLi4vYy9lbmNvZGluZy9iaW5hcnkteG1sLWZvcndhcmRpbmctZW50cnkuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWVuY29kZXIuaHBwIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZGVjb2Rlci5ocHAiCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBuZG4gewotCi1uYW1lc3BhY2UgYyB7Ci0KLWNsYXNzIEV4Y2x1ZGUgOiBwdWJsaWMgbmRuOjpFeGNsdWRlCi17Ci1wdWJsaWM6Ci0gIHZvaWQKLSAgZ2V0KHN0cnVjdCBuZG5fRXhjbHVkZSYgZXhjbHVkZVN0cnVjdCkgY29uc3QKLSAgewotICAgIGlmIChleGNsdWRlU3RydWN0Lm1heEVudHJpZXMgPCBzaXplKCkpCi0gICAgICB0aHJvdyBydW50aW1lX2Vycm9yKCJleGNsdWRlU3RydWN0Lm1heEVudHJpZXMgbXVzdCBiZSA+PSB0aGlzIGV4Y2x1ZGUgZ2V0RW50cnlDb3VudCgpIik7Ci0KLSAgICBpbnQgZW50cmllcyA9IDA7Ci0gICAgZm9yIChFeGNsdWRlOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGkgPSByYmVnaW4gKCk7IGkgIT0gcmVuZCAoKTsgaSsrKQotICAgICAgewotICAgICAgICBpZiAoIWktPmZpcnN0LmVtcHR5KCkpCi0gICAgICAgICAgewotICAgICAgICAgICAgZXhjbHVkZVN0cnVjdC5lbnRyaWVzW2VudHJpZXNdLnR5cGUgPSBuZG5fRXhjbHVkZV9DT01QT05FTlQ7Ci0gICAgICAgICAgICBleGNsdWRlU3RydWN0LmVudHJpZXNbZW50cmllc10uY29tcG9uZW50LnZhbHVlLnZhbHVlID0gY29uc3RfY2FzdDx1aW50OF90Kj4oaS0+Zmlyc3QuZ2V0VmFsdWUoKS5idWYoKSk7Ci0gICAgICAgICAgICBleGNsdWRlU3RydWN0LmVudHJpZXNbZW50cmllc10uY29tcG9uZW50LnZhbHVlLmxlbmd0aCA9IGktPmZpcnN0LmdldFZhbHVlKCkuc2l6ZSgpOwotICAgICAgICAgICAgKytlbnRyaWVzOwotICAgICAgICAgIH0KLSAgICAgICAgaWYgKGktPnNlY29uZCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBleGNsdWRlU3RydWN0LmVudHJpZXNbZW50cmllc10udHlwZSA9IG5kbl9FeGNsdWRlX0FOWTsKLSAgICAgICAgICAgICsrZW50cmllczsKLSAgICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICBleGNsdWRlU3RydWN0Lm5FbnRyaWVzID0gZW50cmllczsKLSAgfQotCi0gIHZvaWQKLSAgc2V0KGNvbnN0IHN0cnVjdCBuZG5fRXhjbHVkZSYgZXhjbHVkZVN0cnVjdCkKLSAgewotICAgIGNsZWFyKCk7Ci0KLSAgICBpZiAoZXhjbHVkZVN0cnVjdC5uRW50cmllcyA9PSAwKQotICAgICAgcmV0dXJuOwotCi0gICAgaW50IGkgPSAwOwotICAgIGlmIChleGNsdWRlU3RydWN0LmVudHJpZXNbaV0udHlwZSA9PSBuZG5fRXhjbHVkZV9BTlkpIHsKLSAgICAgIGFwcGVuZEV4Y2x1ZGUoIi8iLCB0cnVlKTsKLSAgICAgIGkrKzsKLSAgICB9Ci0KLSAgICB3aGlsZSAoaSA8IGV4Y2x1ZGVTdHJ1Y3QubkVudHJpZXMpIHsKLSAgICAgIG5kbl9FeGNsdWRlRW50cnkgKmVudHJ5ID0gJmV4Y2x1ZGVTdHJ1Y3QuZW50cmllc1tpXTsKLQotICAgICAgaWYgKGVudHJ5LT50eXBlICE9IG5kbl9FeGNsdWRlX0NPTVBPTkVOVCkKLSAgICAgICAgdGhyb3cgcnVudGltZV9lcnJvcigidW5yZWNvZ25pemVkIG5kbl9FeGNsdWRlVHlwZSIpOwotCi0gICAgICBOYW1lOjpDb21wb25lbnQgZXhjbHVkZWRDb21wb25lbnQgKGVudHJ5LT5jb21wb25lbnQudmFsdWUudmFsdWUsIGVudHJ5LT5jb21wb25lbnQudmFsdWUubGVuZ3RoKTsKLSAgICAgICsraTsKLSAgICAgIGVudHJ5ID0gJmV4Y2x1ZGVTdHJ1Y3QuZW50cmllc1tpXTsKLQotICAgICAgaWYgKGkgPCBleGNsdWRlU3RydWN0Lm5FbnRyaWVzKSB7Ci0gICAgICAgIGlmIChlbnRyeS0+dHlwZSA9PSBuZG5fRXhjbHVkZV9BTlkpIHsKLSAgICAgICAgICBhcHBlbmRFeGNsdWRlKGV4Y2x1ZGVkQ29tcG9uZW50LCB0cnVlKTsKLSAgICAgICAgICArK2k7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGFwcGVuZEV4Y2x1ZGUoZXhjbHVkZWRDb21wb25lbnQsIGZhbHNlKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgYXBwZW5kRXhjbHVkZShleGNsdWRlZENvbXBvbmVudCwgZmFsc2UpOwotICAgIH0KLSAgfQotfTsKLQotY2xhc3MgTmFtZSA6IHB1YmxpYyBuZG46Ok5hbWUKLXsKLXB1YmxpYzoKLSAgdm9pZCAKLSAgZ2V0KHN0cnVjdCBuZG5fTmFtZSYgbmFtZVN0cnVjdCkgY29uc3QKLSAgewotICAgIGlmIChuYW1lU3RydWN0Lm1heENvbXBvbmVudHMgPCBzaXplKCkpCi0gICAgICB0aHJvdyBydW50aW1lX2Vycm9yKCJuYW1lU3RydWN0Lm1heENvbXBvbmVudHMgbXVzdCBiZSA+PSB0aGlzIG5hbWUgZ2V0TkNvbXBvbmVudHMoKSIpOwotICAKLSAgICBuYW1lU3RydWN0Lm5Db21wb25lbnRzID0gc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmFtZVN0cnVjdC5uQ29tcG9uZW50czsgKytpKSB7Ci0gICAgICBuYW1lU3RydWN0LmNvbXBvbmVudHNbaV0udmFsdWUudmFsdWUgPSBjb25zdF9jYXN0PHVpbnQ4X3QqPihuZG46Ok5hbWU6OmdldChpKS5nZXRWYWx1ZSgpLmJ1ZigpKTsKLSAgICAgIG5hbWVTdHJ1Y3QuY29tcG9uZW50c1tpXS52YWx1ZS5sZW5ndGggPSBuZG46Ok5hbWU6OmdldChpKS5nZXRWYWx1ZSgpLnNpemUoKTsKLSAgICB9Ci0gIH0KLSAgCi0gIHZvaWQgCi0gIHNldChjb25zdCBzdHJ1Y3QgbmRuX05hbWUmIG5hbWVTdHJ1Y3QpIAotICB7Ci0gICAgY2xlYXIoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5hbWVTdHJ1Y3QubkNvbXBvbmVudHM7ICsraSkKLSAgICAgIGFwcGVuZChuYW1lU3RydWN0LmNvbXBvbmVudHNbaV0udmFsdWUudmFsdWUsIG5hbWVTdHJ1Y3QuY29tcG9uZW50c1tpXS52YWx1ZS5sZW5ndGgpOyAgCi0gIH0KLX07Ci0KLWNsYXNzIEludGVyZXN0IDogcHVibGljIG5kbjo6SW50ZXJlc3QKLXsKLXB1YmxpYzoKLSAgdm9pZCAKLSAgZ2V0KHN0cnVjdCBuZG5fSW50ZXJlc3QmIGludGVyZXN0U3RydWN0KSBjb25zdCAKLSAgewotICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYzo6TmFtZSY+KGdldE5hbWUoKSkuZ2V0KGludGVyZXN0U3RydWN0Lm5hbWUpOwotICAgIGludGVyZXN0U3RydWN0Lm1pblN1ZmZpeENvbXBvbmVudHMgPSBnZXRNaW5TdWZmaXhDb21wb25lbnRzKCk7Ci0gICAgaW50ZXJlc3RTdHJ1Y3QubWF4U3VmZml4Q29tcG9uZW50cyA9IGdldE1heFN1ZmZpeENvbXBvbmVudHMoKTsKLSAgICAvLyBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3RfLmdldChpbnRlcmVzdFN0cnVjdC5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QpOwotICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYzo6RXhjbHVkZSY+KGdldEV4Y2x1ZGUoKSkuZ2V0KGludGVyZXN0U3RydWN0LmV4Y2x1ZGUpOwotICAgIGludGVyZXN0U3RydWN0LmNoaWxkU2VsZWN0b3IgPSBnZXRDaGlsZFNlbGVjdG9yKCk7Ci0gICAgaW50ZXJlc3RTdHJ1Y3QuYW5zd2VyT3JpZ2luS2luZCA9IGdldE11c3RCZUZyZXNoKCkgPwotICAgICAgKG5kbl9JbnRlcmVzdF9BTlNXRVJfQ09OVEVOVF9TVE9SRSB8IG5kbl9JbnRlcmVzdF9BTlNXRVJfR0VORVJBVEVEKQotICAgICAgOgotICAgICAgKG5kbl9JbnRlcmVzdF9BTlNXRVJfQ09OVEVOVF9TVE9SRSB8IG5kbl9JbnRlcmVzdF9BTlNXRVJfR0VORVJBVEVEIHwgbmRuX0ludGVyZXN0X0FOU1dFUl9TVEFMRSk7Ci0gICAgaW50ZXJlc3RTdHJ1Y3Quc2NvcGUgPSBnZXRTY29wZSgpOwotICAgIGludGVyZXN0U3RydWN0LmludGVyZXN0TGlmZXRpbWVNaWxsaXNlY29uZHMgPSBnZXRJbnRlcmVzdExpZmV0aW1lKCk7Ci0KLSAgICBpbnRlcmVzdFN0cnVjdC5ub25jZS5sZW5ndGggPSA0OwotICAgIGludGVyZXN0U3RydWN0Lm5vbmNlLnZhbHVlID0gY29uc3RfY2FzdDx1aW50OF90Kj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGdldE5vbmNlKCkpKTsKLSAgfSAgCi0KLSAgdm9pZCAKLSAgc2V0KGNvbnN0IHN0cnVjdCBuZG5fSW50ZXJlc3QmIGludGVyZXN0U3RydWN0KSAKLSAgewotICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Yzo6TmFtZSY+KGdldE5hbWUoKSkuc2V0KGludGVyZXN0U3RydWN0Lm5hbWUpOwotICAgIHNldE1pblN1ZmZpeENvbXBvbmVudHMoaW50ZXJlc3RTdHJ1Y3QubWluU3VmZml4Q29tcG9uZW50cyk7Ci0gICAgc2V0TWF4U3VmZml4Q29tcG9uZW50cyhpbnRlcmVzdFN0cnVjdC5tYXhTdWZmaXhDb21wb25lbnRzKTsKLSAgCi0gICAgLy8gcHVibGlzaGVyUHVibGljS2V5RGlnZXN0Xy5zZXQoaW50ZXJlc3RTdHJ1Y3QucHVibGlzaGVyUHVibGljS2V5RGlnZXN0KTsKLSAgCi0gICAgcmVpbnRlcnByZXRfY2FzdDxjOjpFeGNsdWRlJj4oZ2V0RXhjbHVkZSgpKS5zZXQoaW50ZXJlc3RTdHJ1Y3QuZXhjbHVkZSk7Ci0gICAgc2V0Q2hpbGRTZWxlY3RvcihpbnRlcmVzdFN0cnVjdC5jaGlsZFNlbGVjdG9yKTsKLSAgICAvLyBhbnN3ZXJPcmlnaW5LaW5kXyA9IGludGVyZXN0U3RydWN0LmFuc3dlck9yaWdpbktpbmQ7Ci0gICAgc2V0U2NvcGUoaW50ZXJlc3RTdHJ1Y3Quc2NvcGUpOwotICAgIHNldEludGVyZXN0TGlmZXRpbWUoaW50ZXJlc3RTdHJ1Y3QuaW50ZXJlc3RMaWZldGltZU1pbGxpc2Vjb25kcyk7Ci0KLSAgICBzZXROb25jZSgqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGludGVyZXN0U3RydWN0Lm5vbmNlLnZhbHVlKSk7Ci0gIH0KLX07Ci0KLWNsYXNzIERhdGEgOiBwdWJsaWMgbmRuOjpEYXRhCi17Ci1wdWJsaWM6Ci0gIHZvaWQgCi0gIGdldChzdHJ1Y3QgbmRuX0RhdGEmIGRhdGFTdHJ1Y3QpIGNvbnN0IAotICB7Ci0gICAgLy8gc2lnbmF0dXJlXy0+Z2V0KGRhdGFTdHJ1Y3Quc2lnbmF0dXJlKTsKLSAgICAvLyBuYW1lXy5nZXQoZGF0YVN0cnVjdC5uYW1lKTsKLSAgICAvLyBtZXRhSW5mb18uZ2V0KGRhdGFTdHJ1Y3QubWV0YUluZm8pOwotICAgIC8vIGNvbnRlbnRfLmdldChkYXRhU3RydWN0LmNvbnRlbnQpOwotICB9Ci0KLSAgdm9pZCAKLSAgc2V0KGNvbnN0IHN0cnVjdCBuZG5fRGF0YSYgZGF0YVN0cnVjdCkKLSAgewotICAgIC8vIHNpZ25hdHVyZV8tPnNldChkYXRhU3RydWN0LnNpZ25hdHVyZSk7Ci0gICAgLy8gbmFtZV8uc2V0KGRhdGFTdHJ1Y3QubmFtZSk7Ci0gICAgLy8gbWV0YUluZm9fLnNldChkYXRhU3RydWN0Lm1ldGFJbmZvKTsKLSAgICAvLyBjb250ZW50XyA9IEJsb2IoZGF0YVN0cnVjdC5jb250ZW50KTsKLSAgfQotfTsKLQotY2xhc3MgRm9yd2FyZGluZ0VudHJ5IDogcHVibGljIG5kbjo6Rm9yd2FyZGluZ0VudHJ5Ci17Ci1wdWJsaWM6Ci0gIHZvaWQgCi0gIGdldChzdHJ1Y3QgbmRuX0ZvcndhcmRpbmdFbnRyeSYgZm9yd2FyZGluZ0VudHJ5U3RydWN0KSBjb25zdCAKLSAgewotICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYzo6TmFtZSY+KGdldFByZWZpeCgpKS5nZXQoZm9yd2FyZGluZ0VudHJ5U3RydWN0LnByZWZpeCk7Ci0gICAgLy8gcHVibGlzaGVyUHVibGljS2V5RGlnZXN0Xy5nZXQoZm9yd2FyZGluZ0VudHJ5U3RydWN0LnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCk7Ci0gICAgZm9yd2FyZGluZ0VudHJ5U3RydWN0LmZhY2VJZCA9IGdldEZhY2VJZCgpOwotICAgIC8vIGZvcndhcmRpbmdFbnRyeVN0cnVjdC5mb3J3YXJkaW5nRmxhZ3MgPSBnZXRGb3J3YXJkaW5nRmxhZ3MoKTsKLSAgICBmb3J3YXJkaW5nRW50cnlTdHJ1Y3QuZnJlc2huZXNzU2Vjb25kcyA9IGdldEZyZXNobmVzc1BlcmlvZCgpIC8gMTAwMDsKLQotICAgIGZvcndhcmRpbmdFbnRyeVN0cnVjdC5hY3Rpb24ubGVuZ3RoID0gZ2V0QWN0aW9uKCkuc2l6ZSgpOwotICAgIGlmIChnZXRBY3Rpb24oKS5zaXplKCkgPiAwKQotICAgICAgZm9yd2FyZGluZ0VudHJ5U3RydWN0LmFjdGlvbi52YWx1ZSA9ICh1aW50OF90ICopJmdldEFjdGlvbigpOwotICAgIGVsc2UKLSAgICAgIGZvcndhcmRpbmdFbnRyeVN0cnVjdC5hY3Rpb24udmFsdWUgPSAwOwotICB9Ci0KLSAgdm9pZCAKLSAgc2V0KGNvbnN0IHN0cnVjdCBuZG5fRm9yd2FyZGluZ0VudHJ5JiBmb3J3YXJkaW5nRW50cnlTdHJ1Y3QpIAotICB7Ci0gICAgaWYgKGZvcndhcmRpbmdFbnRyeVN0cnVjdC5hY3Rpb24udmFsdWUgJiYgZm9yd2FyZGluZ0VudHJ5U3RydWN0LmFjdGlvbi5sZW5ndGggPiAwKQotICAgICAgc2V0QWN0aW9uKHN0cmluZyhmb3J3YXJkaW5nRW50cnlTdHJ1Y3QuYWN0aW9uLnZhbHVlLCBmb3J3YXJkaW5nRW50cnlTdHJ1Y3QuYWN0aW9uLnZhbHVlICsgZm9yd2FyZGluZ0VudHJ5U3RydWN0LmFjdGlvbi5sZW5ndGgpKTsKLSAgICBlbHNlCi0gICAgICBzZXRBY3Rpb24oIiIpOwotCi0gICAgTmFtZSBwcmVmaXg7Ci0gICAgcmVpbnRlcnByZXRfY2FzdDxjOjpOYW1lJj4ocHJlZml4KS5zZXQoZm9yd2FyZGluZ0VudHJ5U3RydWN0LnByZWZpeCk7Ci0gICAgc2V0UHJlZml4KHByZWZpeCk7Ci0gICAgLy8gcHVibGlzaGVyUHVibGljS2V5RGlnZXN0Xy5zZXQoZm9yd2FyZGluZ0VudHJ5U3RydWN0LnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCk7ICAKLSAgICBzZXRGYWNlSWQoZm9yd2FyZGluZ0VudHJ5U3RydWN0LmZhY2VJZCk7Ci0gICAgLy8gc2V0Rm9yd2FyZGluZ0ZsYWdzKGZvcndhcmRpbmdFbnRyeVN0cnVjdC5mb3J3YXJkaW5nRmxhZ3MpOwotICAgIHNldEZyZXNobmVzc1BlcmlvZChmb3J3YXJkaW5nRW50cnlTdHJ1Y3QuZnJlc2huZXNzU2Vjb25kcyAqIDEwMDApOwotICB9Ci19OwotCi19Ci0KLQotLy8gVGhpcyBpcyBkZWNsYXJlZCBpbiB0aGUgV2lyZUZvcm1hdCBjbGFzcy4KLVdpcmVGb3JtYXQqCi1XaXJlRm9ybWF0OjpuZXdJbml0aWFsRGVmYXVsdFdpcmVGb3JtYXQoKSAKLXsKLSAgcmV0dXJuIG5ldyBCaW5hcnlYbWxXaXJlRm9ybWF0KCk7Ci19Ci0gIAotQmxvYiAKLUJpbmFyeVhtbFdpcmVGb3JtYXQ6OmVuY29kZUludGVyZXN0KGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCkgCi17Ci0gIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCBuYW1lQ29tcG9uZW50c1sxMDBdOwotICBzdHJ1Y3QgbmRuX0V4Y2x1ZGVFbnRyeSBleGNsdWRlRW50cmllc1sxMDBdOwotICBzdHJ1Y3QgbmRuX0ludGVyZXN0IGludGVyZXN0U3RydWN0OwotICBuZG5fSW50ZXJlc3RfaW5pdGlhbGl6ZQotICAgICgmaW50ZXJlc3RTdHJ1Y3QsIG5hbWVDb21wb25lbnRzLCBzaXplb2YobmFtZUNvbXBvbmVudHMpIC8gc2l6ZW9mKG5hbWVDb21wb25lbnRzWzBdKSwgCi0gICAgIGV4Y2x1ZGVFbnRyaWVzLCBzaXplb2YoZXhjbHVkZUVudHJpZXMpIC8gc2l6ZW9mKGV4Y2x1ZGVFbnRyaWVzWzBdKSk7Ci0gIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYzo6SW50ZXJlc3QmPihpbnRlcmVzdCkuZ2V0KGludGVyZXN0U3RydWN0KTsKLQotICBCaW5hcnlYbWxFbmNvZGVyIGVuY29kZXI7Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9lbmNvZGVCaW5hcnlYbWxJbnRlcmVzdCgmaW50ZXJlc3RTdHJ1Y3QsICZlbmNvZGVyKSkpCi0gICAgdGhyb3cgcnVudGltZV9lcnJvcihuZG5fZ2V0RXJyb3JTdHJpbmcoZXJyb3IpKTsKLSAgICAgCi0gIHJldHVybiBlbmNvZGVyLmdldE91dHB1dCgpOwotfQotCi12b2lkIAotQmluYXJ5WG1sV2lyZUZvcm1hdDo6ZGVjb2RlSW50ZXJlc3QoSW50ZXJlc3QmIGludGVyZXN0LCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKQotewotICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgbmFtZUNvbXBvbmVudHNbMTAwXTsKLSAgc3RydWN0IG5kbl9FeGNsdWRlRW50cnkgZXhjbHVkZUVudHJpZXNbMTAwXTsKLSAgc3RydWN0IG5kbl9JbnRlcmVzdCBpbnRlcmVzdFN0cnVjdDsKLSAgbmRuX0ludGVyZXN0X2luaXRpYWxpemUKLSAgICAoJmludGVyZXN0U3RydWN0LCBuYW1lQ29tcG9uZW50cywgc2l6ZW9mKG5hbWVDb21wb25lbnRzKSAvIHNpemVvZihuYW1lQ29tcG9uZW50c1swXSksIAotICAgICBleGNsdWRlRW50cmllcywgc2l6ZW9mKGV4Y2x1ZGVFbnRyaWVzKSAvIHNpemVvZihleGNsdWRlRW50cmllc1swXSkpOwotICAgIAotICBCaW5hcnlYbWxEZWNvZGVyIGRlY29kZXIoaW5wdXQsIGlucHV0TGVuZ3RoKTsgIAotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fZGVjb2RlQmluYXJ5WG1sSW50ZXJlc3QoJmludGVyZXN0U3RydWN0LCAmZGVjb2RlcikpKQotICAgIHRocm93IHJ1bnRpbWVfZXJyb3IobmRuX2dldEVycm9yU3RyaW5nKGVycm9yKSk7Ci0KLSAgcmVpbnRlcnByZXRfY2FzdDxjOjpJbnRlcmVzdCY+KGludGVyZXN0KS5zZXQoaW50ZXJlc3RTdHJ1Y3QpOwotfQotCi1CbG9iIAotQmluYXJ5WG1sV2lyZUZvcm1hdDo6ZW5jb2RlRGF0YShjb25zdCBEYXRhJiBkYXRhLCBzaXplX3QgKnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2l6ZV90ICpzaWduZWRQb3J0aW9uRW5kT2Zmc2V0KSAKLXsKLSAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IG5hbWVDb21wb25lbnRzWzEwMF07Ci0gIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCBrZXlOYW1lQ29tcG9uZW50c1sxMDBdOwotICBzdHJ1Y3QgbmRuX0RhdGEgZGF0YVN0cnVjdDsKLSAgbmRuX0RhdGFfaW5pdGlhbGl6ZQotICAgICgmZGF0YVN0cnVjdCwgbmFtZUNvbXBvbmVudHMsIHNpemVvZihuYW1lQ29tcG9uZW50cykgLyBzaXplb2YobmFtZUNvbXBvbmVudHNbMF0pLCAKLSAgICAga2V5TmFtZUNvbXBvbmVudHMsIHNpemVvZihrZXlOYW1lQ29tcG9uZW50cykgLyBzaXplb2Yoa2V5TmFtZUNvbXBvbmVudHNbMF0pKTsKLSAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjOjpEYXRhJj4oZGF0YSkuZ2V0KGRhdGFTdHJ1Y3QpOwotCi0gIEJpbmFyeVhtbEVuY29kZXIgZW5jb2RlcigxNTAwKTsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX2VuY29kZUJpbmFyeVhtbERhdGEoJmRhdGFTdHJ1Y3QsIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2lnbmVkUG9ydGlvbkVuZE9mZnNldCwgJmVuY29kZXIpKSkKLSAgICB0aHJvdyBydW50aW1lX2Vycm9yKG5kbl9nZXRFcnJvclN0cmluZyhlcnJvcikpOwotICAgICAKLSAgcmV0dXJuIGVuY29kZXIuZ2V0T3V0cHV0KCk7Ci19Ci0KLXZvaWQgCi1CaW5hcnlYbWxXaXJlRm9ybWF0OjpkZWNvZGVEYXRhCi0gIChEYXRhJiBkYXRhLCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoLCBzaXplX3QgKnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2l6ZV90ICpzaWduZWRQb3J0aW9uRW5kT2Zmc2V0KQotewotICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgbmFtZUNvbXBvbmVudHNbMTAwXTsKLSAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IGtleU5hbWVDb21wb25lbnRzWzEwMF07Ci0gIHN0cnVjdCBuZG5fRGF0YSBkYXRhU3RydWN0OwotICBuZG5fRGF0YV9pbml0aWFsaXplCi0gICAgKCZkYXRhU3RydWN0LCBuYW1lQ29tcG9uZW50cywgc2l6ZW9mKG5hbWVDb21wb25lbnRzKSAvIHNpemVvZihuYW1lQ29tcG9uZW50c1swXSksIAotICAgICBrZXlOYW1lQ29tcG9uZW50cywgc2l6ZW9mKGtleU5hbWVDb21wb25lbnRzKSAvIHNpemVvZihrZXlOYW1lQ29tcG9uZW50c1swXSkpOwotICAgIAotICBCaW5hcnlYbWxEZWNvZGVyIGRlY29kZXIoaW5wdXQsIGlucHV0TGVuZ3RoKTsgIAotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fZGVjb2RlQmluYXJ5WG1sRGF0YSgmZGF0YVN0cnVjdCwgc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0LCAmZGVjb2RlcikpKQotICAgIHRocm93IHJ1bnRpbWVfZXJyb3IobmRuX2dldEVycm9yU3RyaW5nKGVycm9yKSk7Ci0KLSAgcmVpbnRlcnByZXRfY2FzdDxjOjpEYXRhJj4oZGF0YSkuc2V0KGRhdGFTdHJ1Y3QpOwotfQotCi1CbG9iIAotQmluYXJ5WG1sV2lyZUZvcm1hdDo6ZW5jb2RlRm9yd2FyZGluZ0VudHJ5KGNvbnN0IEZvcndhcmRpbmdFbnRyeSYgZm9yd2FyZGluZ0VudHJ5KSAKLXsKLSAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IHByZWZpeE5hbWVDb21wb25lbnRzWzEwMF07Ci0gIHN0cnVjdCBuZG5fRm9yd2FyZGluZ0VudHJ5IGZvcndhcmRpbmdFbnRyeVN0cnVjdDsKLSAgbmRuX0ZvcndhcmRpbmdFbnRyeV9pbml0aWFsaXplCi0gICAgKCZmb3J3YXJkaW5nRW50cnlTdHJ1Y3QsIHByZWZpeE5hbWVDb21wb25lbnRzLCBzaXplb2YocHJlZml4TmFtZUNvbXBvbmVudHMpIC8gc2l6ZW9mKHByZWZpeE5hbWVDb21wb25lbnRzWzBdKSk7Ci0gIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYzo6Rm9yd2FyZGluZ0VudHJ5Jj4oZm9yd2FyZGluZ0VudHJ5KS5nZXQoZm9yd2FyZGluZ0VudHJ5U3RydWN0KTsKLQotICBCaW5hcnlYbWxFbmNvZGVyIGVuY29kZXI7Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9lbmNvZGVCaW5hcnlYbWxGb3J3YXJkaW5nRW50cnkoJmZvcndhcmRpbmdFbnRyeVN0cnVjdCwgJmVuY29kZXIpKSkKLSAgICB0aHJvdyBydW50aW1lX2Vycm9yKG5kbl9nZXRFcnJvclN0cmluZyhlcnJvcikpOwotICAgICAKLSAgcmV0dXJuIGVuY29kZXIuZ2V0T3V0cHV0KCk7Ci19Ci0KLXZvaWQgCi1CaW5hcnlYbWxXaXJlRm9ybWF0OjpkZWNvZGVGb3J3YXJkaW5nRW50cnkoRm9yd2FyZGluZ0VudHJ5JiBmb3J3YXJkaW5nRW50cnksIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgpCi17Ci0gIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCBwcmVmaXhOYW1lQ29tcG9uZW50c1sxMDBdOwotICBzdHJ1Y3QgbmRuX0ZvcndhcmRpbmdFbnRyeSBmb3J3YXJkaW5nRW50cnlTdHJ1Y3Q7Ci0gIG5kbl9Gb3J3YXJkaW5nRW50cnlfaW5pdGlhbGl6ZQotICAgICgmZm9yd2FyZGluZ0VudHJ5U3RydWN0LCBwcmVmaXhOYW1lQ29tcG9uZW50cywgc2l6ZW9mKHByZWZpeE5hbWVDb21wb25lbnRzKSAvIHNpemVvZihwcmVmaXhOYW1lQ29tcG9uZW50c1swXSkpOwotICAgIAotICBCaW5hcnlYbWxEZWNvZGVyIGRlY29kZXIoaW5wdXQsIGlucHV0TGVuZ3RoKTsgIAotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fZGVjb2RlQmluYXJ5WG1sRm9yd2FyZGluZ0VudHJ5KCZmb3J3YXJkaW5nRW50cnlTdHJ1Y3QsICZkZWNvZGVyKSkpCi0gICAgdGhyb3cgcnVudGltZV9lcnJvcihuZG5fZ2V0RXJyb3JTdHJpbmcoZXJyb3IpKTsKLQotICByZWludGVycHJldF9jYXN0PGM6OkZvcndhcmRpbmdFbnRyeSY+KGZvcndhcmRpbmdFbnRyeSkuc2V0KGZvcndhcmRpbmdFbnRyeVN0cnVjdCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL3NyYy9lbmNvZGluZy9jcnlwdG9wcC9hc25fZXh0LmNwcCBiL3NyYy9lbmNvZGluZy9jcnlwdG9wcC9hc25fZXh0LmNwcAppbmRleCA3YThlZGExLi40ZGYwNmM1IDEwMDY0NAotLS0gYS9zcmMvZW5jb2RpbmcvY3J5cHRvcHAvYXNuX2V4dC5jcHAKKysrIGIvc3JjL2VuY29kaW5nL2NyeXB0b3BwL2Fzbl9leHQuY3BwCkBAIC04LDE0ICs4LDYgQEAKIAogI2luY2x1ZGUgPG5kbi1jcHAtZGV2L25kbi1jcHAtY29uZmlnLmg+CiAjaW5jbHVkZSAiYXNuX2V4dC5ocHAiCi0KLSNpZiBORE5fQ1BQX0hBVkVfVElNRV9ICi0jaW5jbHVkZSA8dGltZS5oPgotI2VuZGlmCi0jaWYgTkROX0NQUF9IQVZFX1NZU19USU1FX0gKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2VuZGlmCi0KICNpbmNsdWRlICIuLi8uLi91dGlsL3RpbWUuaHBwIgogCiAjaW5jbHVkZSA8Ym9vc3QvZm9ybWF0LmhwcD4KQEAgLTMzLDE3ICsyNSwyMSBAQAogICBlbHNlIGlmICh0aW1lID4gMmUxNCkKICAgICAvLyAyZTE0IGlzIGFib3V0IHRoZSB5ZWFyIDgzMDAuICBXZSBkb24ndCB3YW50IHRvIGdvIG92ZXIgYSA0LWRpZ2l0IHllYXIuCiAgICAgdGhyb3cgQXNuOjpFcnJvcigiQ2FsZW5kYXIgdGltZSB2YWx1ZSBvdXQgb2YgcmFuZ2UiKTsKLSAgCi0gIHRpbWVfdCBzZWNvbmRzU2luY2UxOTcwID0gdGltZSAvIDEwMDA7Ci0gIHN0cnVjdCB0bSogZ210ID0gZ210aW1lKCZzZWNvbmRzU2luY2UxOTcwKTsKIAotICBzdGQ6OnN0cmluZyBhc24xdGltZSAoKGJvb3N0Ojpmb3JtYXQoIiUwNGQlMDJkJTAyZCUwMmQlMDJkJTAyZFoiKQotICAgICAgICAgICAgICAgICAgICAgICAgICUgKDE5MDAgKyBnbXQtPnRtX3llYXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgJSAoZ210LT50bV9tb24gKyAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICUgZ210LT50bV9tZGF5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJSBnbXQtPnRtX2hvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAlIGdtdC0+dG1fbWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgJSBnbXQtPnRtX3NlYykuc3RyKCkpOworCisgIGJvb3N0Ojpwb3NpeF90aW1lOjpwdGltZSBib29zdFRpbWUgPQorICAgIFVOSVhfRVBPQ0hfVElNRSArIGJvb3N0Ojpwb3NpeF90aW1lOjptaWxsaXNlY29uZHModGltZSk7CisgIAorICBjb25zdCBib29zdDo6Zm9ybWF0IGYgPSBib29zdDo6Zm9ybWF0KCIlMDRkJTAyZCUwMmQlMDJkJTAyZCUwMmRaIikKKyAgICAgICAgICAgICAgICAlIGJvb3N0VGltZS5kYXRlKCkueWVhcl9tb250aF9kYXkoKS55ZWFyCisgICAgICAgICAgICAgICAgJSBib29zdFRpbWUuZGF0ZSgpLnllYXJfbW9udGhfZGF5KCkubW9udGguYXNfbnVtYmVyKCkKKyAgICAgICAgICAgICAgICAlIGJvb3N0VGltZS5kYXRlKCkueWVhcl9tb250aF9kYXkoKS5kYXkuYXNfbnVtYmVyKCkKKyAgICAgICAgICAgICAgICAlIGJvb3N0VGltZS50aW1lX29mX2RheSgpLmhvdXJzKCkKKyAgICAgICAgICAgICAgICAlIGJvb3N0VGltZS50aW1lX29mX2RheSgpLm1pbnV0ZXMoKQorICAgICAgICAgICAgICAgICUgYm9vc3RUaW1lLnRpbWVfb2ZfZGF5KCkuc2Vjb25kcygpCisgICAgOworCisgIHN0ZDo6c3RyaW5nIGFzbjF0aW1lID0gZi5zdHIoKTsKICAgCiAgIGJ0LlB1dChHRU5FUkFMSVpFRF9USU1FKTsKICAgc2l6ZV90IGxlbmd0aEJ5dGVzID0gREVSTGVuZ3RoRW5jb2RlKGJ0LCBhc24xdGltZS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2VuY29kaW5nL2VsZW1lbnQtbGlzdGVuZXIuY3BwIGIvc3JjL2VuY29kaW5nL2VsZW1lbnQtbGlzdGVuZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjU2NzE3Li4wMDAwMDAwCi0tLSBhL3NyYy9lbmNvZGluZy9lbGVtZW50LWxpc3RlbmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbCAtKi0gKi8KLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG4gewotCi12b2lkIAotRWxlbWVudExpc3RlbmVyOjpzdGF0aWNPblJlY2VpdmVkRWxlbWVudChzdHJ1Y3QgbmRuX0VsZW1lbnRMaXN0ZW5lciAqc2VsZiwgdWludDhfdCAqZWxlbWVudCwgc2l6ZV90IGVsZW1lbnRMZW5ndGgpCi17Ci0gICgoRWxlbWVudExpc3RlbmVyICopc2VsZiktPm9uUmVjZWl2ZWRFbGVtZW50KGVsZW1lbnQsIGVsZW1lbnRMZW5ndGgpOwotfQotCi19CmRpZmYgLS1naXQgYS9zcmMvZW5jb2Rpbmcvd2lyZS1mb3JtYXQuY3BwIGIvc3JjL2VuY29kaW5nL3dpcmUtZm9ybWF0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZmMjRlNS4uMDAwMDAwMAotLS0gYS9zcmMvZW5jb2Rpbmcvd2lyZS1mb3JtYXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvZW5jb2Rpbmcvd2lyZS1mb3JtYXQuaHBwPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgbmRuIHsKLQotc3RhdGljIGJvb2wgZ290SW5pdGlhbERlZmF1bHRXaXJlRm9ybWF0ID0gZmFsc2U7Ci0KLVdpcmVGb3JtYXQqIFdpcmVGb3JtYXQ6OmRlZmF1bHRXaXJlRm9ybWF0XyA9IDA7Ci0KLVdpcmVGb3JtYXQqCi1XaXJlRm9ybWF0OjpnZXREZWZhdWx0V2lyZUZvcm1hdCgpCi17Ci0gIGlmICghZGVmYXVsdFdpcmVGb3JtYXRfICYmICFnb3RJbml0aWFsRGVmYXVsdFdpcmVGb3JtYXQpIHsKLSAgICAvLyBUaGVyZSBpcyBubyBkZWZhdWx0V2lyZUZvcm1hdF8gYW5kIHdlIGhhdmUgbm90IHlldCBpbml0aWFsaXplZCBpbml0aWFsRGVmYXVsdFdpcmVGb3JtYXRfLCBzbyBpbml0aWFsaXplIGFuZCB1c2UgaXQuCi0gICAgZ290SW5pdGlhbERlZmF1bHRXaXJlRm9ybWF0ID0gdHJ1ZTsKLSAgICAvLyBOT1RFOiBUaGlzIGFsbG9jYXRlcyBvbmUgb2JqZWN0IHdoaWNoIHdlIG5ldmVyIGZyZWUgZm9yIHRoZSBsaWZlIG9mIHRoZSBhcHBsaWNhdGlvbi4KLSAgICBkZWZhdWx0V2lyZUZvcm1hdF8gPSBuZXdJbml0aWFsRGVmYXVsdFdpcmVGb3JtYXQoKTsKLSAgfQotICAKLSAgcmV0dXJuIGRlZmF1bHRXaXJlRm9ybWF0XzsKLX0KLQotQmxvYiAKLVdpcmVGb3JtYXQ6OmVuY29kZUludGVyZXN0KGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCkgCi17Ci0gIHRocm93IGxvZ2ljX2Vycm9yKCJ1bmltcGxlbWVudGVkIik7Ci19Ci0KLXZvaWQgCi1XaXJlRm9ybWF0OjpkZWNvZGVJbnRlcmVzdChJbnRlcmVzdCYgaW50ZXJlc3QsIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgpIAotewotICB0aHJvdyBsb2dpY19lcnJvcigidW5pbXBsZW1lbnRlZCIpOwotfQotCi1CbG9iIAotV2lyZUZvcm1hdDo6ZW5jb2RlRGF0YShjb25zdCBEYXRhJiBkYXRhLCBzaXplX3QgKnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2l6ZV90ICpzaWduZWRQb3J0aW9uRW5kT2Zmc2V0KSAKLXsKLSAgdGhyb3cgbG9naWNfZXJyb3IoInVuaW1wbGVtZW50ZWQiKTsKLX0KLQotdm9pZCAKLVdpcmVGb3JtYXQ6OmRlY29kZURhdGEKLSAgKERhdGEmIGRhdGEsIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaXplX3QgKnNpZ25lZFBvcnRpb25FbmRPZmZzZXQpIAotewotICB0aHJvdyBsb2dpY19lcnJvcigidW5pbXBsZW1lbnRlZCIpOwotfQotCi1CbG9iIAotV2lyZUZvcm1hdDo6ZW5jb2RlRm9yd2FyZGluZ0VudHJ5KGNvbnN0IEZvcndhcmRpbmdFbnRyeSYgZm9yd2FyZGluZ0VudHJ5KSAKLXsKLSAgdGhyb3cgbG9naWNfZXJyb3IoInVuaW1wbGVtZW50ZWQiKTsKLX0KLQotdm9pZCAKLVdpcmVGb3JtYXQ6OmRlY29kZUZvcndhcmRpbmdFbnRyeShGb3J3YXJkaW5nRW50cnkmIGZvcndhcmRpbmdFbnRyeSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkgCi17Ci0gIHRocm93IGxvZ2ljX2Vycm9yKCJ1bmltcGxlbWVudGVkIik7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL3NyYy9uYW1lLmNwcCBiL3NyYy9uYW1lLmNwcAppbmRleCA3YTNkMTcxLi40ODRmZGMwIDEwMDY0NAotLS0gYS9zcmMvbmFtZS5jcHAKKysrIGIvc3JjL25hbWUuY3BwCkBAIC04LDEwICs4LDkgQEAKIAogI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxuZG4tY3BwLWRldi9uYW1lLmhwcD4KLSNpbmNsdWRlICJjL3V0aWwvbmRuX21lbW9yeS5oIgotI2luY2x1ZGUgImMvdXRpbC90aW1lLmgiCisjaW5jbHVkZSAidXRpbC90aW1lLmhwcCIKIAogI2luY2x1ZGUgInV0aWwvc3RyaW5nLWhlbHBlci5ocHAiCiAKQEAgLTkxLDcgKzkwLDcgQEAKICAgICByZXR1cm4gMTsKIAogICAvLyBUaGUgY29tcG9uZW50cyBhcmUgZXF1YWwgbGVuZ3RoLiAgSnVzdCBkbyBhIGJ5dGUgY29tcGFyZS4gIAotICByZXR1cm4gbmRuX21lbWNtcChnZXRWYWx1ZSgpLmJ1ZigpLCBvdGhlci5nZXRWYWx1ZSgpLmJ1ZigpLCBnZXRWYWx1ZSgpLnNpemUoKSk7CisgIHJldHVybiBzdGQ6Om1lbWNtcChnZXRWYWx1ZSgpLmJ1ZigpLCBvdGhlci5nZXRWYWx1ZSgpLmJ1ZigpLCBnZXRWYWx1ZSgpLnNpemUoKSk7CiB9CiAKIC8vIGNvbnN0IEJsb2NrICYKZGlmZiAtLWdpdCBhL3NyYy9ub2RlLmNwcCBiL3NyYy9ub2RlLmNwcAppbmRleCBmZTE5MmNjLi5mYjIxNmNhIDEwMDY0NAotLS0gYS9zcmMvbm9kZS5jcHAKKysrIGIvc3JjL25vZGUuY3BwCkBAIC02LDcgKzYsNyBAQAogICovCiAKICNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSAiYy91dGlsL3RpbWUuaCIKKyNpbmNsdWRlICJ1dGlsL3RpbWUuaHBwIgogCiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvZm9yd2FyZGluZy1lbnRyeS5ocHA+CiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvZmFjZS1pbnN0YW5jZS5ocHA+CmRpZmYgLS1naXQgYS9zcmMvc2VjdXJpdHkvc2VjLXB1YmxpYy1pbmZvLXNxbGl0ZTMuY3BwIGIvc3JjL3NlY3VyaXR5L3NlYy1wdWJsaWMtaW5mby1zcWxpdGUzLmNwcAppbmRleCA4YjY4YWM2Li4yMDcyMDkxIDEwMDY0NAotLS0gYS9zcmMvc2VjdXJpdHkvc2VjLXB1YmxpYy1pbmZvLXNxbGl0ZTMuY3BwCisrKyBiL3NyYy9zZWN1cml0eS9zZWMtcHVibGljLWluZm8tc3FsaXRlMy5jcHAKQEAgLTE3LDcgKzE3LDggQEAKICNpbmNsdWRlIDxmc3RyZWFtPgogI2luY2x1ZGUgPGJvb3N0L2ZpbGVzeXN0ZW0uaHBwPgogI2luY2x1ZGUgIi4uL3V0aWwvbG9nZ2luZy5ocHAiCi0jaW5jbHVkZSAiLi4vYy91dGlsL3RpbWUuaCIKKyNpbmNsdWRlICIuLi91dGlsL3RpbWUuaHBwIgorCiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvZGF0YS5ocHA+CiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvc2VjdXJpdHkvaWRlbnRpdHktY2VydGlmaWNhdGUuaHBwPgogI2luY2x1ZGUgPG5kbi1jcHAtZGV2L3NlY3VyaXR5L3NlYy1wdWJsaWMtaW5mby1zcWxpdGUzLmhwcD4KZGlmZiAtLWdpdCBhL3NyYy90cmFuc3BvcnQvdGNwLXRyYW5zcG9ydC5jcHAgYi9zcmMvdHJhbnNwb3J0L3RjcC10cmFuc3BvcnQuY3BwCmluZGV4IGY3NWRjZDIuLjJlNzhjYzMgMTAwNjQ0Ci0tLSBhL3NyYy90cmFuc3BvcnQvdGNwLXRyYW5zcG9ydC5jcHAKKysrIGIvc3JjL3RyYW5zcG9ydC90Y3AtdHJhbnNwb3J0LmNwcApAQCAtMTAsNyArMTAsNiBAQAogCiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvZmFjZS5ocHA+CiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvdHJhbnNwb3J0L3RjcC10cmFuc3BvcnQuaHBwPgotI2luY2x1ZGUgIi4uL2MvdXRpbC9uZG5fbWVtb3J5LmgiCiAKICNpbmNsdWRlIDxib29zdC9hc2lvLmhwcD4KICNpZiBORE5fQ1BQX0hBVkVfQ1hYMTEKQEAgLTE3OSw3ICsxNzgsOCBAQAogICAgICAgICBpZiAocGFydGlhbERhdGFTaXplXyA+IDApCiAgICAgICAgICAgewogICAgICAgICAgICAgc2l6ZV90IG5ld0RhdGFTaXplID0gc3RkOjptaW4oYnl0ZXNfcmVjdmQsIE1BWF9MRU5HVEgtcGFydGlhbERhdGFTaXplXyk7Ci0gICAgICAgICAgICBuZG5fbWVtY3B5KHBhcnRpYWxEYXRhXyArIHBhcnRpYWxEYXRhU2l6ZV8sIGlucHV0QnVmZmVyXywgbmV3RGF0YVNpemUpOworICAgICAgICAgICAgc3RkOjpjb3B5KGlucHV0QnVmZmVyXywgaW5wdXRCdWZmZXJfICsgbmV3RGF0YVNpemUsIHBhcnRpYWxEYXRhXyArIHBhcnRpYWxEYXRhU2l6ZV8pOworCiAgICAgICAgICAgICBwYXJ0aWFsRGF0YVNpemVfICs9IG5ld0RhdGFTaXplOwogICAgICAgICAgICAgICAKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSAwOwpAQCAtMTk0LDcgKzE5NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgcGFydGlhbERhdGFTaXplXyA9IGJ5dGVzX3JlY3ZkIC0gbmV3RGF0YVNpemU7Ci0gICAgICAgICAgICAgICAgICAgIG5kbl9tZW1jcHkocGFydGlhbERhdGFfLCBpbnB1dEJ1ZmZlcl8gKyBuZXdEYXRhU2l6ZSwgcGFydGlhbERhdGFTaXplXyk7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y29weShpbnB1dEJ1ZmZlcl8gKyBuZXdEYXRhU2l6ZSwgaW5wdXRCdWZmZXJfICsgbmV3RGF0YVNpemUgKyBwYXJ0aWFsRGF0YVNpemVfLCBwYXJ0aWFsRGF0YV8pOwogCiAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NBbGwocGFydGlhbERhdGFfLCBvZmZzZXQsIHBhcnRpYWxEYXRhU2l6ZV8pOwogCkBAIC0yMTIsNyArMjEyLDcgQEAKICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID4gMCkKICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcGFydGlhbERhdGFTaXplXyAtPSBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIG5kbl9tZW1jcHkocGFydGlhbERhdGFfLCBwYXJ0aWFsRGF0YV8gKyBvZmZzZXQsIHBhcnRpYWxEYXRhU2l6ZV8pOworICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvcHkocGFydGlhbERhdGFfICsgb2Zmc2V0LCBwYXJ0aWFsRGF0YV8gKyBvZmZzZXQgKyBwYXJ0aWFsRGF0YVNpemVfLCBwYXJ0aWFsRGF0YV8pOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9mZnNldCA9PSAwICYmIHBhcnRpYWxEYXRhU2l6ZV8gPT0gTUFYX0xFTkdUSCkKICAgICAgICAgICAgICAgICAgIHsKQEAgLTIzNSw3ICsyMzUsNyBAQAogICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPiAwKQogICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsRGF0YVNpemVfID0gYnl0ZXNfcmVjdmQgLSBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIG5kbl9tZW1jcHkocGFydGlhbERhdGFfLCBpbnB1dEJ1ZmZlcl8gKyBvZmZzZXQsIHBhcnRpYWxEYXRhU2l6ZV8pOworICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvcHkoaW5wdXRCdWZmZXJfICsgb2Zmc2V0LCBpbnB1dEJ1ZmZlcl8gKyBvZmZzZXQgKyBwYXJ0aWFsRGF0YVNpemVfLCBwYXJ0aWFsRGF0YV8pOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL3RyYW5zcG9ydC91bml4LXRyYW5zcG9ydC5jcHAgYi9zcmMvdHJhbnNwb3J0L3VuaXgtdHJhbnNwb3J0LmNwcAppbmRleCA5NTRiMTJjLi41ZDI2ZTE1IDEwMDY0NAotLS0gYS9zcmMvdHJhbnNwb3J0L3VuaXgtdHJhbnNwb3J0LmNwcAorKysgYi9zcmMvdHJhbnNwb3J0L3VuaXgtdHJhbnNwb3J0LmNwcApAQCAtMTAsNyArMTAsNiBAQAogCiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvZmFjZS5ocHA+CiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvdHJhbnNwb3J0L3VuaXgtdHJhbnNwb3J0LmhwcD4KLSNpbmNsdWRlICIuLi9jL3V0aWwvbmRuX21lbW9yeS5oIgogCiAjaW5jbHVkZSA8Ym9vc3QvYXNpby5ocHA+CiAjaWYgTkROX0NQUF9IQVZFX0NYWDExCkBAIC0xNDgsNyArMTQ3LDggQEAKICAgICAgICAgaWYgKHBhcnRpYWxEYXRhU2l6ZV8gPiAwKQogICAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBuZXdEYXRhU2l6ZSA9IHN0ZDo6bWluKGJ5dGVzX3JlY3ZkLCBNQVhfTEVOR1RILXBhcnRpYWxEYXRhU2l6ZV8pOwotICAgICAgICAgICAgbmRuX21lbWNweShwYXJ0aWFsRGF0YV8gKyBwYXJ0aWFsRGF0YVNpemVfLCBpbnB1dEJ1ZmZlcl8sIG5ld0RhdGFTaXplKTsKKyAgICAgICAgICAgIHN0ZDo6Y29weShpbnB1dEJ1ZmZlcl8sIGlucHV0QnVmZmVyXyArIG5ld0RhdGFTaXplLCBwYXJ0aWFsRGF0YV8gKyBwYXJ0aWFsRGF0YVNpemVfKTsKKwogICAgICAgICAgICAgcGFydGlhbERhdGFTaXplXyArPSBuZXdEYXRhU2l6ZTsKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKQEAgLTE2Myw3ICsxNjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxEYXRhU2l6ZV8gPSBieXRlc19yZWN2ZCAtIG5ld0RhdGFTaXplOwotICAgICAgICAgICAgICAgICAgICBuZG5fbWVtY3B5KHBhcnRpYWxEYXRhXywgaW5wdXRCdWZmZXJfICsgbmV3RGF0YVNpemUsIHBhcnRpYWxEYXRhU2l6ZV8pOworICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvcHkoaW5wdXRCdWZmZXJfICsgbmV3RGF0YVNpemUsIGlucHV0QnVmZmVyXyArIG5ld0RhdGFTaXplICsgcGFydGlhbERhdGFTaXplXywgcGFydGlhbERhdGFfKTsKIAogICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQWxsKHBhcnRpYWxEYXRhXywgb2Zmc2V0LCBwYXJ0aWFsRGF0YVNpemVfKTsKIApAQCAtMTgxLDcgKzE4MSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA+IDApCiAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxEYXRhU2l6ZV8gLT0gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBuZG5fbWVtY3B5KHBhcnRpYWxEYXRhXywgcGFydGlhbERhdGFfICsgb2Zmc2V0LCBwYXJ0aWFsRGF0YVNpemVfKTsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpjb3B5KHBhcnRpYWxEYXRhXyArIG9mZnNldCwgcGFydGlhbERhdGFfICsgb2Zmc2V0ICsgcGFydGlhbERhdGFTaXplXywgcGFydGlhbERhdGFfKTsKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChvZmZzZXQgPT0gMCAmJiBwYXJ0aWFsRGF0YVNpemVfID09IE1BWF9MRU5HVEgpCiAgICAgICAgICAgICAgICAgICB7CkBAIC0yMDQsNyArMjA0LDcgQEAKICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID4gMCkKICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcGFydGlhbERhdGFTaXplXyA9IGJ5dGVzX3JlY3ZkIC0gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBuZG5fbWVtY3B5KHBhcnRpYWxEYXRhXywgaW5wdXRCdWZmZXJfICsgb2Zmc2V0LCBwYXJ0aWFsRGF0YVNpemVfKTsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpjb3B5KGlucHV0QnVmZmVyXyArIG9mZnNldCwgaW5wdXRCdWZmZXJfICsgb2Zmc2V0ICsgcGFydGlhbERhdGFTaXplXywgcGFydGlhbERhdGFfKTsKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3NyYy91dGlsL2Jsb2Itc3RyZWFtLmhwcCBiL3NyYy91dGlsL2Jsb2Itc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JhZDRiNy4uMDAwMDAwMAotLS0gYS9zcmMvdXRpbC9ibG9iLXN0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBBbGV4YW5kZXIgQWZhbmFzeWV2IDxhbGV4YW5kZXIuYWZhbmFzeWV2QHVjbGEuZWR1PgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JMT0JfU1RSRUFNX0hQUAotI2RlZmluZSBORE5fQkxPQl9TVFJFQU1fSFBQCi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jb21tb24uaHBwPgotCi0jaWYgTkROX0NQUF9VU0VfU1lTVEVNX0JPT1NUCi0jaW5jbHVkZSA8Ym9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPgotI2luY2x1ZGUgPGJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxib29zdC9pb3N0cmVhbXMvc3RyZWFtLmhwcD4KLW5hbWVzcGFjZSBuZG5ib29zdCA9IGJvb3N0OwotI2Vsc2UKLS8vIFdlIGNhbiB1c2UgbmRuYm9vc3Q6Omlvc3RyZWFtcyBiZWNhdXNlIHRoaXMgaXMgaW50ZXJuYWwgYW5kIHdpbGwgbm90IGNvbmZsaWN0IHdpdGggdGhlIGFwcGxpY2F0aW9uIGlmIGl0IHVzZXMgYm9vc3Q6Omlvc3RyZWFtcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW0uaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG4gewotCi1jbGFzcyBibG9iX2FwcGVuZF9kZXZpY2UgewotcHVibGljOgotICB0eXBlZGVmIGNoYXIgIGNoYXJfdHlwZTsKLSAgdHlwZWRlZiBuZG5ib29zdDo6aW9zdHJlYW1zOjpzaW5rX3RhZyBjYXRlZ29yeTsKLSAgCi0gIGJsb2JfYXBwZW5kX2RldmljZShzdGQ6OnZlY3Rvcjx1aW50OF90PiYgY29udGFpbmVyKQotICA6IGNvbnRhaW5lcl8oY29udGFpbmVyKQotICB7Ci0gIH0KLSAgCi0gIHN0ZDo6c3RyZWFtc2l6ZQotICB3cml0ZShjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICB7Ci0gICAgc3RkOjpjb3B5KHMsIHMrbiwgc3RkOjpiYWNrX2luc2VydGVyKGNvbnRhaW5lcl8pKTsKLSAgICByZXR1cm4gbjsKLSAgfQotICAKLXByb3RlY3RlZDoKLSAgc3RkOjp2ZWN0b3I8dWludDhfdD4mIGNvbnRhaW5lcl87Ci19OwotCi0vKioKLSAqIFRoaXMgaXMgY2FsbGVkICJibG9iX3N0cmVhbSIgYnV0IGl0IGRvZXNuJ3QgdXNlIGFuIG5kbjo6QmxvYiB3aGljaCBpcyBpbW11dGFibGUuICBJdCB1c2VzIGEgcG9pbnRlciB0byBhIHZlY3Rvcjx1aW50OF90Pi4KLSAqIFRoaXMgaXMgaW50ZWRlZCBmb3IgaW50ZXJuYWwgbGlicmFyeSB1c2UsIG5vdCBleHBvcnRlZCBpbiB0aGUgQVBJLgotICovCi1zdHJ1Y3QgYmxvYl9zdHJlYW0gOiBwdWJsaWMgbmRuYm9vc3Q6Omlvc3RyZWFtczo6c3RyZWFtPGJsb2JfYXBwZW5kX2RldmljZT4KLXsKLSAgYmxvYl9zdHJlYW0oKQotICAgIDogYnVmZmVyXyhuZXcgc3RkOjp2ZWN0b3I8dWludDhfdD4oKSkKLSAgICAsIGRldmljZV8oKmJ1ZmZlcl8pCi0gIHsKLSAgICBvcGVuKGRldmljZV8pOwotICB9Ci0KLSAgcHRyX2xpYjo6c2hhcmVkX3B0cjxzdGQ6OnZlY3Rvcjx1aW50OF90PiA+Ci0gIGJ1ZigpCi0gIHsKLSAgICBmbHVzaCgpOwotICAgIHJldHVybiBidWZmZXJfOwotICB9Ci0KLXByaXZhdGU6Ci0gIHB0cl9saWI6OnNoYXJlZF9wdHI8c3RkOjp2ZWN0b3I8dWludDhfdD4gPiBidWZmZXJfOwotICBibG9iX2FwcGVuZF9kZXZpY2UgZGV2aWNlXzsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdXRpbC9ibG9iLmNwcCBiL3NyYy91dGlsL2Jsb2IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjI5N2M2Li4wMDAwMDAwCi0tLSBhL3NyYy91dGlsL2Jsb2IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlICIuLi9jL3V0aWwvYmxvYi5oIgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L3V0aWwvYmxvYi5ocHA+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBuZG4gewotCi1CbG9iOjpCbG9iKGNvbnN0IHN0cnVjdCBuZG5fQmxvYiYgYmxvYlN0cnVjdCkKLSAgOiBwdHJfbGliOjpzaGFyZWRfcHRyPGNvbnN0IHZlY3Rvcjx1aW50OF90PiA+KG5ldyB2ZWN0b3I8dWludDhfdD4oYmxvYlN0cnVjdC52YWx1ZSwgYmxvYlN0cnVjdC52YWx1ZSArIGJsb2JTdHJ1Y3QubGVuZ3RoKSkKLXsKLX0KLQotdm9pZCAKLUJsb2I6OmdldChzdHJ1Y3QgbmRuX0Jsb2ImIGJsb2JTdHJ1Y3QpIGNvbnN0IAotewotICBibG9iU3RydWN0Lmxlbmd0aCA9IHNpemUoKTsgCi0gIGlmIChzaXplKCkgPiAwKQotICAgIGJsb2JTdHJ1Y3QudmFsdWUgPSAodWludDhfdCopYnVmKCk7Ci0gIGVsc2UKLSAgICBibG9iU3RydWN0LnZhbHVlID0gMDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvY2hhbmdlZC1ldmVudC5jcHAgYi9zcmMvdXRpbC9jaGFuZ2VkLWV2ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhkY2I5OC4uMDAwMDAwMAotLS0gYS9zcmMvdXRpbC9jaGFuZ2VkLWV2ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbCAtKi0gKi8KLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiY2hhbmdlZC1ldmVudC5ocHAiCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBuZG4gewotCi12b2lkIAotQ2hhbmdlZEV2ZW50OjpmaXJlKCkKLXsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0ZW5lcnNfLnNpemUoKTsgKytpKQotICAgIGxpc3RlbmVyc19baV0oKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvY2hhbmdlZC1ldmVudC5ocHAgYi9zcmMvdXRpbC9jaGFuZ2VkLWV2ZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVlODU0OS4uMDAwMDAwMAotLS0gYS9zcmMvdXRpbC9jaGFuZ2VkLWV2ZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbCAtKi0gKi8KLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9DSEFOR0VEX0VWRU5UX0hQUAotI2RlZmluZSBORE5fQ0hBTkdFRF9FVkVOVF9IUFAKLQotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jb21tb24uaHBwPgotCi1uYW1lc3BhY2UgbmRuIHsKLQotLyoqCi0gKiBBbiBPbkNoYW5nZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNhbGxlZCB0byBub3RpZnkgYSBsaXN0ZW5lciBvZiBhIGNoYW5nZWQgZXZlbnQuCi0gKi8KLXR5cGVkZWYgZnVuY19saWI6OmZ1bmN0aW9uPHZvaWQoKT4gT25DaGFuZ2VkOwotCi1jbGFzcyBDaGFuZ2VkRXZlbnQgewotcHVibGljOgotICAvKioKLSAgICogQWRkIG9uQ2hhbmdlZCB0byB0aGUgbGlzdGVuZXIgbGlzdC4gVGhpcyBkb2VzIG5vdCBjaGVjayBpZiBhIGR1cGxpY2F0ZSBpcyBhbHJlYWR5IGluIHRoZSBsaXN0LgotICAgKiBAcGFyYW0gb25DaGFuZ2VkIFRoZSBPbkNoYW5nZWQgZnVuY3Rpb24gb2JqZWN0LgotICAgKi8KLSAgdm9pZCAKLSAgYWRkKE9uQ2hhbmdlZCBvbkNoYW5nZWQpCi0gIHsKLSAgICBsaXN0ZW5lcnNfLnB1c2hfYmFjayhvbkNoYW5nZWQpOwotICB9Ci0gIAotICAvKioKLSAgICogQ2FsbCBhbGwgdGhlIGxpc3RlbmVycy4KLSAgICovCi0gIHZvaWQgCi0gIGZpcmUoKTsKLQotI2lmIDAgIAotcHJpdmF0ZToKLSNlbmRpZgotICBzdGQ6OnZlY3RvcjxPbkNoYW5nZWQ+IGxpc3RlbmVyc187Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvY3J5cHRvLmNwcCBiL3NyYy91dGlsL2NyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UxNzI1OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy91dGlsL2NyeXB0by5jcHAKQEAgLTAsMCArMSwxOSBAQAorLyoqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgorICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgorICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgorICovCisKKyNpbmNsdWRlICJuZG4tY3BwLWRldi91dGlsL2NyeXB0by5ocHAiCisKK25hbWVzcGFjZSBuZG4geworCit2b2lkIG5kbl9kaWdlc3RTaGEyNTYoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHVpbnQ4X3QgKmRpZ2VzdCkKK3sKKyAgU0hBMjU2X0NUWCBzaGEyNTY7CisgIFNIQTI1Nl9Jbml0KCZzaGEyNTYpOworICBTSEEyNTZfVXBkYXRlKCZzaGEyNTYsIGRhdGEsIGRhdGFMZW5ndGgpOworICBTSEEyNTZfRmluYWwoZGlnZXN0LCAmc2hhMjU2KTsKK30KKworfSAvLyBuYW1lc3BhY2UgbmRuCmRpZmYgLS1naXQgYS9zcmMvdXRpbC9keW5hbWljLXVpbnQ4LXZlY3Rvci5jcHAgYi9zcmMvdXRpbC9keW5hbWljLXVpbnQ4LXZlY3Rvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5N2ZjMGUuLjAwMDAwMDAKLS0tIGEvc3JjL3V0aWwvZHluYW1pYy11aW50OC12ZWN0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlICJkeW5hbWljLXVpbnQ4LXZlY3Rvci5ocHAiCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBuZG4gewotCi1EeW5hbWljVUludDhWZWN0b3I6OkR5bmFtaWNVSW50OFZlY3RvcihzaXplX3QgaW5pdGlhbExlbmd0aCkKLTogdmVjdG9yXyhuZXcgdmVjdG9yPHVpbnQ4X3Q+KGluaXRpYWxMZW5ndGgpKQotewotICBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfaW5pdGlhbGl6ZSh0aGlzLCAmdmVjdG9yXy0+ZnJvbnQoKSwgaW5pdGlhbExlbmd0aCwgRHluYW1pY1VJbnQ4VmVjdG9yOjpyZWFsbG9jKTsKLX0KLQotdWludDhfdCoKLUR5bmFtaWNVSW50OFZlY3Rvcjo6cmVhbGxvYyhzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpzZWxmLCB1aW50OF90ICphcnJheSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgLy8gQmVjYXVzZSB0aGlzIG1ldGhvZCBpcyBwcml2YXRlLCBhc3N1bWUgdGhlcmUgaXMgbm90IGEgcHJvYmxlbSB3aXRoIHVwY2FzdGluZy4KLSAgRHluYW1pY1VJbnQ4VmVjdG9yICp0aGlzT2JqZWN0ID0gKER5bmFtaWNVSW50OFZlY3RvciAqKXNlbGY7Ci0gIAotICBpZiAoYXJyYXkgIT0gJnRoaXNPYmplY3QtPnZlY3Rvcl8tPmZyb250KCkpCi0gICAgLy8gV2UgZG9uJ3QgZXhwZWN0IHRoaXMgdG8gZXZlciBoYXBwZW4uIFRoZSBjYWxsZXIgZGlkbid0IHBhc3MgdGhlIGFycmF5IGZyb20gdGhpcyBvYmplY3QuCi0gICAgcmV0dXJuIDA7Ci0gIAotICB0aGlzT2JqZWN0LT52ZWN0b3JfLT5yZXNpemUobGVuZ3RoKTsKLSAgcmV0dXJuICZ0aGlzT2JqZWN0LT52ZWN0b3JfLT5mcm9udCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9zcmMvdXRpbC9keW5hbWljLXVpbnQ4LXZlY3Rvci5ocHAgYi9zcmMvdXRpbC9keW5hbWljLXVpbnQ4LXZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZWQxZWUuLjAwMDAwMDAKLS0tIGEvc3JjL3V0aWwvZHluYW1pYy11aW50OC12ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0RZTkFNSUNfVUNIQVJfVkVDVE9SX0hQUAotI2RlZmluZSBORE5fRFlOQU1JQ19VQ0hBUl9WRUNUT1JfSFBQCi0KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvY29tbW9uLmhwcD4KLSNpbmNsdWRlICIuLi9jL3V0aWwvZHluYW1pYy11aW50OC1hcnJheS5oIgotCi1uYW1lc3BhY2UgbmRuIHsKLQotLyoqCi0gKiBBIER5bmFtaWNVSW50OFZlY3RvciBleHRlbmRzIG5kbl9EeW5hbWljVUludDhBcnJheSB0byBob2xkIGEgc2hhcmVkX3B0cjx2ZWN0b3I8dWludDhfdD4gPiBmb3IgdXNlIHdpdGgKLSAqIEMgZnVuY3Rpb25zIHdoaWNoIG5lZWQgYW4gbmRuX0R5bmFtaWNVSW50OEFycmF5LgotICovCi1jbGFzcyBEeW5hbWljVUludDhWZWN0b3IgOiBwdWJsaWMgbmRuX0R5bmFtaWNVSW50OEFycmF5IHsKLXB1YmxpYzoKLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyBEeW5hbWljVUludDhWZWN0b3Igd2l0aCBhbiBpbml0aWFsIGxlbmd0aC4KLSAgICogQHBhcmFtIGluaXRpYWxMZW5ndGggVGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgYWxsb2NhdGVkIHZlY3Rvci4KLSAgICovCi0gIER5bmFtaWNVSW50OFZlY3RvcihzaXplX3QgaW5pdGlhbExlbmd0aCk7Ci0gIAotICAvKioKLSAgICogR2V0IHRoZSBzaGFyZWRfcHRyIHRvIHRoZSBhbGxvY2F0ZWQgdmVjdG9yLgotICAgKiBAcmV0dXJuIFRoZSBzaGFyZWRfcHRyIHRvIHRoZSBhbGxvY2F0ZWQgdmVjdG9yLiAKLSAgICovCi0gIHB0cl9saWI6OnNoYXJlZF9wdHI8c3RkOjp2ZWN0b3I8dWludDhfdD4gPiYgCi0gIGdldCgpIHsgcmV0dXJuIHZlY3Rvcl87IH0KLSAgCi1wcml2YXRlOgotICAvKioKLSAgICogSW1wbGVtZW50IHRoZSBzdGF0aWMgcmVhbGxvYyBmdW5jdGlvbiB1c2luZyB2ZWN0b3IgcmVzaXplLgotICAgKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhpcyBvYmplY3QuCi0gICAqIEBwYXJhbSBhcnJheSBTaG91bGQgYmUgdGhlIGZyb250IG9mIHRoZSB2ZWN0b3IuCi0gICAqIEBwYXJhbSBsZW5ndGggVGhlIG5ldyBsZW5ndGggZm9yIHRoZSB2ZWN0b3IuCi0gICAqIEByZXR1cm4gVGhlIGZyb250IG9mIHRoZSBhbGxvY2F0ZWQgdmVjdG9yLgotICAgKi8KLSAgc3RhdGljIHVpbnQ4X3QqCi0gIHJlYWxsb2Moc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSAqc2VsZiwgdWludDhfdCAqYXJyYXksIHNpemVfdCBsZW5ndGgpOwotICAKLSAgcHRyX2xpYjo6c2hhcmVkX3B0cjxzdGQ6OnZlY3Rvcjx1aW50OF90PiA+IHZlY3Rvcl87Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvbG9nZ2luZy5ocHAgYi9zcmMvdXRpbC9sb2dnaW5nLmhwcAppbmRleCA3M2M2ZDEyLi5lOWJmNGQ1IDEwMDY0NAotLS0gYS9zcmMvdXRpbC9sb2dnaW5nLmhwcAorKysgYi9zcmMvdXRpbC9sb2dnaW5nLmhwcApAQCAtNjQsMTEgKzY0LDEwIEBACiAKICNpZmRlZiBfREVCVUcKIAotI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAKICNkZWZpbmUgX0xPR19ERUJVRyh4KSBcCi0gIHsgdGltZV90IG5vdyA9IHRpbWUoMCk7IHN0ZDo6c3RyaW5nIHMgPSBzdGQ6OnN0cmluZyhjdGltZSgmbm93KSk7IHN0ZDo6Y2xvZyA8PCBzLnN1YnN0cigwLCBzLnNpemUoKSAtIDEpIDw8ICIgIiA8PCB4IDw8IHN0ZDo6ZW5kbDsgfQorICB7IHN0ZDo6Y2xvZyA8PCBzLnN1YnN0cigwLCBzLnNpemUoKSAtIDEpIDw8ICIgIiA8PCB4IDw8IHN0ZDo6ZW5kbDsgfQogCiAjZWxzZQogI2RlZmluZSBfTE9HX0RFQlVHKHgpCmRpZmYgLS1naXQgYS9zcmMvdXRpbC9uZG5kLWlkLWZldGNoZXIuaHBwIGIvc3JjL3V0aWwvbmRuZC1pZC1mZXRjaGVyLmhwcAppbmRleCA2YTEyMjRlLi5lMTBlYjM4IDEwMDY0NAotLS0gYS9zcmMvdXRpbC9uZG5kLWlkLWZldGNoZXIuaHBwCisrKyBiL3NyYy91dGlsL25kbmQtaWQtZmV0Y2hlci5ocHAKQEAgLTksNyArOSw3IEBACiAjZGVmaW5lIE5ETl9ORE5EX0lEX0ZFVENIRVJfSFBQCiAKICNpbmNsdWRlIDxuZG4tY3BwLWRldi9jb21tb24uaHBwPgotI2luY2x1ZGUgIm5kbi1jcHAtZGV2L2MvdXRpbC9jcnlwdG8uaCIKKyNpbmNsdWRlICJuZG4tY3BwLWRldi91dGlsL2NyeXB0by5ocHAiCiAKIG5hbWVzcGFjZSBuZG4gewogCmRpZmYgLS1naXQgYS9zcmMvdXRpbC90aW1lLmhwcCBiL3NyYy91dGlsL3RpbWUuaHBwCmluZGV4IDkwNDgyZDkuLjdiNDJiNGEgMTAwNjQ0Ci0tLSBhL3NyYy91dGlsL3RpbWUuaHBwCisrKyBiL3NyYy91dGlsL3RpbWUuaHBwCkBAIC04LDExICs4LDMwIEBACiAjaWZuZGVmIE5ETl9USU1FX0hQUAogI2RlZmluZSBORE5fVElNRV9IUFAKIAotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlICIuLi9jL3V0aWwvdGltZS5oIgorI2luY2x1ZGUgIm5kbi1jcHAtZGV2L2NvbW1vbi5ocHAiCisjaW5jbHVkZSA8Ym9vc3QvZGF0ZV90aW1lL3Bvc2l4X3RpbWUvcG9zaXhfdGltZS5ocHA+CiAKIG5hbWVzcGFjZSBuZG4gewogCitjb25zdCBib29zdDo6cG9zaXhfdGltZTo6cHRpbWUgVU5JWF9FUE9DSF9USU1FID0KKyAgYm9vc3Q6OnBvc2l4X3RpbWU6OnB0aW1lIChib29zdDo6Z3JlZ29yaWFuOjpkYXRlICgxOTcwLCBib29zdDo6Z3JlZ29yaWFuOjpKYW4sIDEpKTsKKworLyoqCisgKiBAYnJpZWYgR2V0IHRoZSBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzIHNpbmNlIDEvMS8xOTcwLCBpbmNsdWRpbmcgZnJhY3Rpb25zIG9mIGEgbWlsbGlzZWNvbmQKKyAqLworaW5saW5lIE1pbGxpc2Vjb25kc1NpbmNlMTk3MCAKK2dldE5vd01pbGxpc2Vjb25kcygpCit7CisgIHJldHVybiAoYm9vc3Q6OnBvc2l4X3RpbWU6Om1pY3Jvc2VjX2Nsb2NrOjp1bml2ZXJzYWxfdGltZSgpIC0gVU5JWF9FUE9DSF9USU1FKS50b3RhbF9taWxsaXNlY29uZHMoKTsKK30KKworaW5saW5lIE1pbGxpc2Vjb25kc1NpbmNlMTk3MCAKK25kbl9nZXROb3dNaWxsaXNlY29uZHMoKQoreworICByZXR1cm4gZ2V0Tm93TWlsbGlzZWNvbmRzKCk7Cit9CisKKwogLyoqCiAgKiBDb252ZXJ0IHRvIHRoZSBJU08gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0aW1lLgogICogQHBhcmFtIHRpbWUgTWlsbGlzZWNvbmRzIHNpbmNlIDEvMS8xOTcwLgpAQCAtMjEsMTIgKzQwLDEzIEBACiBpbmxpbmUgc3RkOjpzdHJpbmcKIHRvSXNvU3RyaW5nKGNvbnN0IE1pbGxpc2Vjb25kc1NpbmNlMTk3MCYgdGltZSkKIHsKLSAgY2hhciBpc29TdHJpbmdbMjVdOwotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fdG9Jc29TdHJpbmcodGltZSwgaXNvU3RyaW5nKSkpCi0gICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKG5kbl9nZXRFcnJvclN0cmluZyhlcnJvcikpOwotICAKLSAgcmV0dXJuIGlzb1N0cmluZzsKKyAgYm9vc3Q6OnBvc2l4X3RpbWU6OnB0aW1lIGJvb3N0VGltZSA9IFVOSVhfRVBPQ0hfVElNRSArIGJvb3N0Ojpwb3NpeF90aW1lOjptaWxsaXNlY29uZHModGltZSk7CisKKyAgLy8vIEB0b2RvIERldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgbmVjZXNzYXJ5IGF0IGFsbAorICBpZiAoKHRpbWUgJSAxMDAwKSA9PSAwKQorICAgIHJldHVybiBib29zdDo6cG9zaXhfdGltZTo6dG9faXNvX3N0cmluZyhib29zdFRpbWUpICsgIi4wMDAwMDAiOyAKKyAgZWxzZQorICAgIHJldHVybiBib29zdDo6cG9zaXhfdGltZTo6dG9faXNvX3N0cmluZyhib29zdFRpbWUpOwogfQogICAKIC8qKgpAQCAtMzcsMTIgKzU3LDkgQEAKIGlubGluZSBNaWxsaXNlY29uZHNTaW5jZTE5NzAKIGZyb21Jc29TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIGlzb1N0cmluZykKIHsKLSAgTWlsbGlzZWNvbmRzU2luY2UxOTcwIG1pbGxpc2Vjb25kczsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX2Zyb21Jc29TdHJpbmcoaXNvU3RyaW5nLmNfc3RyKCksICZtaWxsaXNlY29uZHMpKSkKLSAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IobmRuX2dldEVycm9yU3RyaW5nKGVycm9yKSk7CisgIGJvb3N0Ojpwb3NpeF90aW1lOjpwdGltZSBib29zdFRpbWUgPSBib29zdDo6cG9zaXhfdGltZTo6ZnJvbV9pc29fc3RyaW5nKGlzb1N0cmluZyk7CiAgIAotICByZXR1cm4gbWlsbGlzZWNvbmRzOworICByZXR1cm4gKGJvb3N0VGltZS1VTklYX0VQT0NIX1RJTUUpLnRvdGFsX21pbGxpc2Vjb25kcygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBuZG4KZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlOTlhYjUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0KLUxEQUREID0gLi4vbGlibmRuLWNwcC1kZXYubGEgQEJPT1NUX1NZU1RFTV9MSUJACi0KLW5vaW5zdF9QUk9HUkFNUyA9IFwKLQl0ZXN0LWdldC1hc3luYyBcCi0JdGVzdC1wdWJsaXNoLWFzeW5jIFwKLQl0ZXN0LWVuY29kZS1kZWNvZGUtYmVuY2htYXJrCi0KLXRlc3RfZW5jb2RlX2RlY29kZV9iZW5jaG1hcmtfU09VUkNFUyA9IHRlc3QtZW5jb2RlLWRlY29kZS1iZW5jaG1hcmsuY3BwCi0KLXRlc3RfZ2V0X2FzeW5jX1NPVVJDRVMgPSB0ZXN0LWdldC1hc3luYy5jcHAKLQotdGVzdF9wdWJsaXNoX2FzeW5jX1NPVVJDRVMgPSB0ZXN0LXB1Ymxpc2gtYXN5bmMuY3BwCmRpZmYgLS1naXQgYS90ZXN0c19ib29zdC9tYWluLmNwcCBiL3Rlc3RzL21haW4uY3BwCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0c19ib29zdC9tYWluLmNwcApyZW5hbWUgdG8gdGVzdHMvbWFpbi5jcHAKZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3QtZW5jb2RlLWRlY29kZS1iZW5jaG1hcmsuY3BwIGIvdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWJlbmNobWFyay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNjc4ZjAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWJlbmNobWFyay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0ODEgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDx0aW1lLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9kYXRhLmhwcD4KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9zZWN1cml0eS9rZXktY2hhaW4uaHBwPgotLy8gI2luY2x1ZGUgPG5kbi1jcHAtZGV2L3NlY3VyaXR5L3BvbGljeS9zZWxmLXZlcmlmeS1wb2xpY3ktbWFuYWdlci5ocHA+Ci0KLS8vIEhhY2s6IEhvb2sgZGlyZWN0bHkgaW50byBub24tQVBJIGZ1bmN0aW9ucy4KLSNpbmNsdWRlICIuLi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRlY29kZXIuaCIKLSNpbmNsdWRlICIuLi9zcmMvYy9kYXRhLmgiCi0jaW5jbHVkZSAiLi4vc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kYXRhLmgiCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvYy91dGlsL2NyeXB0by5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotdXNpbmcgbmFtZXNwYWNlIG5kbjsKLQotc3RhdGljIGRvdWJsZQotZ2V0Tm93U2Vjb25kcygpCi17Ci0gIHN0cnVjdCB0aW1ldmFsIHQ7Ci0gIGdldHRpbWVvZmRheSgmdCwgMCk7Ci0gIHJldHVybiB0LnR2X3NlYyArIHQudHZfdXNlYyAvIDEwMDAwMDAuMDsKLX0KLQotc3RhdGljIGJvb2wKLXZlcmlmeVJzYVNpZ25hdHVyZQotICAodWludDhfdCogc2lnbmVkUG9ydGlvbiwgc2l6ZV90IHNpZ25lZFBvcnRpb25MZW5ndGgsIHVpbnQ4X3QqIHNpZ25hdHVyZUJpdHMsIHNpemVfdCBzaWduYXR1cmVCaXRzTGVuZ3RoLCAKLSAgIHVpbnQ4X3QqIHB1YmxpY0tleURlciwgc2l6ZV90IHB1YmxpY0tleURlckxlbmd0aCkKLXsKLSAgLy8gU2V0IHNpZ25lZFBvcnRpb25EaWdlc3QgdG8gdGhlIGRpZ2VzdCBvZiB0aGUgc2lnbmVkIHBvcnRpb24gb2YgdGhlIHdpcmUgZW5jb2RpbmcuCi0gIHVpbnQ4X3Qgc2lnbmVkUG9ydGlvbkRpZ2VzdFtTSEEyNTZfRElHRVNUX0xFTkdUSF07Ci0gIG5kbl9kaWdlc3RTaGEyNTYoc2lnbmVkUG9ydGlvbiwgc2lnbmVkUG9ydGlvbkxlbmd0aCwgc2lnbmVkUG9ydGlvbkRpZ2VzdCk7Ci0gIAotICAvLyBWZXJpZnkgdGhlIHNpZ25lZFBvcnRpb25EaWdlc3QuCi0gIC8vIFVzZSBhIHRlbXBvcmFyeSBwb2ludGVyIHNpbmNlIGQyaSB1cGRhdGVzIGl0LgotICBjb25zdCB1aW50OF90ICpkZXJQb2ludGVyID0gcHVibGljS2V5RGVyOwotICBSU0EgKnJzYVB1YmxpY0tleSA9IGQyaV9SU0FfUFVCS0VZKE5VTEwsICZkZXJQb2ludGVyLCBwdWJsaWNLZXlEZXJMZW5ndGgpOwotICBpZiAoIXJzYVB1YmxpY0tleSkgewotICAgIC8vIERvbid0IGV4cGVjdCB0aGlzIHRvIGhhcHBlbi4KLSAgICBjb3V0IDw8ICJFcnJvciBkZWNvZGluZyBwdWJsaWMga2V5IGluIGQyaV9SU0FQdWJsaWNLZXkiIDw8IGVuZGw7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgaW50IHN1Y2Nlc3MgPSBSU0FfdmVyaWZ5Ci0gICAgKE5JRF9zaGEyNTYsIHNpZ25lZFBvcnRpb25EaWdlc3QsIHNpemVvZihzaWduZWRQb3J0aW9uRGlnZXN0KSwgc2lnbmF0dXJlQml0cywgc2lnbmF0dXJlQml0c0xlbmd0aCwgcnNhUHVibGljS2V5KTsKLSAgLy8gRnJlZSB0aGUgcHVibGljIGtleSBiZWZvcmUgY2hlY2tpbmcgZm9yIHN1Y2Nlc3MuCi0gIFJTQV9mcmVlKHJzYVB1YmxpY0tleSk7Ci0gIAotICAvLyBSU0FfdmVyaWZ5IHJldHVybnMgMSBmb3IgYSB2YWxpZCBzaWduYXR1cmUuCi0gIHJldHVybiAoc3VjY2VzcyA9PSAxKTsKLX0KLQotc3RhdGljIHVpbnQ4X3QgREVGQVVMVF9QVUJMSUNfS0VZX0RFUltdID0gewotMHgzMCwgMHg4MSwgMHg5RiwgMHgzMCwgMHgwRCwgMHgwNiwgMHgwOSwgMHgyQSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhGNywgMHgwRCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNSwgMHgwMCwgMHgwMywgMHg4MSwKLTB4OEQsIDB4MDAsIDB4MzAsIDB4ODEsIDB4ODksIDB4MDIsIDB4ODEsIDB4ODEsIDB4MDAsIDB4RTEsIDB4N0QsIDB4MzAsIDB4QTcsIDB4RDgsIDB4MjgsIDB4QUIsIDB4MUIsIDB4ODQsIDB4MEIsIDB4MTcsCi0weDU0LCAweDJELCAweENBLCAweEY2LCAweDIwLCAweDdBLCAweEZELCAweDIyLCAweDFFLCAweDA4LCAweDZCLCAweDJBLCAweDYwLCAweEQxLCAweDZDLCAweEI3LCAweEY1LCAweDQ0LCAweDQ4LCAweEJBLAotMHg5RiwgMHgzRiwgMHgwOCwgMHhCQywgMHhEMCwgMHg5OSwgMHhEQiwgMHgyMSwgMHhERCwgMHgxNiwgMHgyQSwgMHg3NywgMHg5RSwgMHg2MSwgMHhBQSwgMHg4OSwgMHhFRSwgMHhFNSwgMHg1NCwgMHhEMywKLTB4QTQsIDB4N0QsIDB4RTIsIDB4MzAsIDB4QkMsIDB4N0EsIDB4QzUsIDB4OTAsIDB4RDUsIDB4MjQsIDB4MDYsIDB4N0MsIDB4MzgsIDB4OTgsIDB4QkIsIDB4QTYsIDB4RjUsIDB4REMsIDB4NDMsIDB4NjAsCi0weEI4LCAweDQ1LCAweEVELCAweEE0LCAweDhDLCAweEJELCAweDlDLCAweEYxLCAweDI2LCAweEE3LCAweDIzLCAweDQ0LCAweDVGLCAweDBFLCAweDE5LCAweDUyLCAweEQ3LCAweDMyLCAweDVBLCAweDc1LAotMHhGQSwgMHhGNSwgMHg1NiwgMHgxNCwgMHg0RiwgMHg5QSwgMHg5OCwgMHhBRiwgMHg3MSwgMHg4NiwgMHhCMCwgMHgyNywgMHg4NiwgMHg4NSwgMHhCOCwgMHhFMiwgMHhDMCwgMHg4QiwgMHhFQSwgMHg4NywKLTB4MTcsIDB4MUIsIDB4NEQsIDB4RUUsIDB4NTgsIDB4NUMsIDB4MTgsIDB4MjgsIDB4MjksIDB4NUIsIDB4NTMsIDB4OTUsIDB4RUIsIDB4NEEsIDB4MTcsIDB4NzcsIDB4OUYsIDB4MDIsIDB4MDMsIDB4MDEsCi0weDAwLCAweDAxICAKLX07Ci0KLXN0YXRpYyB1aW50OF90IERFRkFVTFRfUFJJVkFURV9LRVlfREVSW10gPSB7Ci0weDMwLCAweDgyLCAweDAyLCAweDVkLCAweDAyLCAweDAxLCAweDAwLCAweDAyLCAweDgxLCAweDgxLCAweDAwLCAweGUxLCAweDdkLCAweDMwLCAweGE3LCAweGQ4LCAweDI4LCAweGFiLCAweDFiLCAweDg0LAotMHgwYiwgMHgxNywgMHg1NCwgMHgyZCwgMHhjYSwgMHhmNiwgMHgyMCwgMHg3YSwgMHhmZCwgMHgyMiwgMHgxZSwgMHgwOCwgMHg2YiwgMHgyYSwgMHg2MCwgMHhkMSwgMHg2YywgMHhiNywgMHhmNSwgMHg0NCwKLTB4NDgsIDB4YmEsIDB4OWYsIDB4M2YsIDB4MDgsIDB4YmMsIDB4ZDAsIDB4OTksIDB4ZGIsIDB4MjEsIDB4ZGQsIDB4MTYsIDB4MmEsIDB4NzcsIDB4OWUsIDB4NjEsIDB4YWEsIDB4ODksIDB4ZWUsIDB4ZTUsCi0weDU0LCAweGQzLCAweGE0LCAweDdkLCAweGUyLCAweDMwLCAweGJjLCAweDdhLCAweGM1LCAweDkwLCAweGQ1LCAweDI0LCAweDA2LCAweDdjLCAweDM4LCAweDk4LCAweGJiLCAweGE2LCAweGY1LCAweGRjLAotMHg0MywgMHg2MCwgMHhiOCwgMHg0NSwgMHhlZCwgMHhhNCwgMHg4YywgMHhiZCwgMHg5YywgMHhmMSwgMHgyNiwgMHhhNywgMHgyMywgMHg0NCwgMHg1ZiwgMHgwZSwgMHgxOSwgMHg1MiwgMHhkNywgMHgzMiwKLTB4NWEsIDB4NzUsIDB4ZmEsIDB4ZjUsIDB4NTYsIDB4MTQsIDB4NGYsIDB4OWEsIDB4OTgsIDB4YWYsIDB4NzEsIDB4ODYsIDB4YjAsIDB4MjcsIDB4ODYsIDB4ODUsIDB4YjgsIDB4ZTIsIDB4YzAsIDB4OGIsCi0weGVhLCAweDg3LCAweDE3LCAweDFiLCAweDRkLCAweGVlLCAweDU4LCAweDVjLCAweDE4LCAweDI4LCAweDI5LCAweDViLCAweDUzLCAweDk1LCAweGViLCAweDRhLCAweDE3LCAweDc3LCAweDlmLCAweDAyLAotMHgwMywgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMiwgMHg4MSwgMHg4MCwgMHgxYSwgMHg0YiwgMHhmYSwgMHg0ZiwgMHhhOCwgMHhjMiwgMHhkZCwgMHg2OSwgMHhhMSwgMHgxNSwgMHg5NiwgMHgwYiwgMHhlOCwKLTB4MjcsIDB4NDIsIDB4NWEsIDB4ZjksIDB4NWMsIDB4ZWEsIDB4MGMsIDB4YWMsIDB4OTgsIDB4YWEsIDB4ZTEsIDB4OGQsIDB4YWEsIDB4ZWIsIDB4MmQsIDB4M2MsIDB4NjAsIDB4NmEsIDB4ZmIsIDB4NDUsCi0weDYzLCAweGE0LCAweDc5LCAweDgzLCAweDY3LCAweGVkLCAweGU0LCAweDE1LCAweGMwLCAweGIwLCAweDIwLCAweDk1LCAweDZkLCAweDQ5LCAweDE2LCAweGM2LCAweDQyLCAweDA1LCAweDQ4LCAweGFhLAotMHhiMSwgMHhhNSwgMHg1MywgMHg2NSwgMHhkMiwgMHgwMiwgMHg5OSwgMHgwOCwgMHhkMSwgMHg4NCwgMHhjYywgMHhmMCwgMHhjZCwgMHhlYSwgMHg2MSwgMHhjOSwgMHgzOSwgMHgwMiwgMHgzZiwgMHg4NywKLTB4NGEsIDB4ZTUsIDB4YzQsIDB4ZDIsIDB4MDcsIDB4MDIsIDB4ZTEsIDB4OWYsIDB4YTAsIDB4MDYsIDB4YzIsIDB4Y2MsIDB4MDIsIDB4ZTcsIDB4YWEsIDB4NmMsIDB4OTksIDB4OGEsIDB4ZjgsIDB4NDksCi0weDAwLCAweGYxLCAweGEyLCAweDhjLCAweDBjLCAweDhhLCAweGI5LCAweDRmLCAweDZkLCAweDczLCAweDNiLCAweDJjLCAweGI3LCAweDlmLCAweDhhLCAweGE2LCAweDdmLCAweDliLCAweDlmLCAweGI3LAotMHhhMSwgMHhjYywgMHg3NCwgMHgyZSwgMHg4ZiwgMHhiOCwgMHhiMCwgMHgyNiwgMHg4OSwgMHhkMiwgMHhlNSwgMHg2NiwgMHhlOCwgMHg4ZSwgMHhhMSwgMHgwMiwgMHg0MSwgMHgwMCwgMHhmYywgMHhlNywKLTB4NTIsIDB4YmMsIDB4NGUsIDB4OTUsIDB4YjYsIDB4MWEsIDB4YjQsIDB4NjIsIDB4Y2MsIDB4ZDgsIDB4MDYsIDB4ZTEsIDB4ZGMsIDB4N2EsIDB4YTIsIDB4YjYsIDB4NzEsIDB4MDEsIDB4YWEsIDB4MjcsCi0weGZjLCAweDk5LCAweGU1LCAweGYyLCAweDU0LCAweGJiLCAweGIyLCAweDg1LCAweGUxLCAweDk2LCAweDU0LCAweDJkLCAweGNiLCAweGJhLCAweDg2LCAweGZhLCAweDgwLCAweGRmLCAweGNmLCAweDM5LAotMHhlNiwgMHg3NCwgMHhjYiwgMHgyMiwgMHhjZSwgMHg3MCwgMHhhYSwgMHgxMCwgMHgwMCwgMHg3MywgMHgxZCwgMHg0NSwgMHgwYSwgMHgzOSwgMHg1MSwgMHg4NCwgMHhmNSwgMHgxNSwgMHg4ZiwgMHgzNywKLTB4NzYsIDB4OTEsIDB4MDIsIDB4NDEsIDB4MDAsIDB4ZTQsIDB4M2YsIDB4ZjAsIDB4ZjQsIDB4ZGUsIDB4NzksIDB4NzcsIDB4NDgsIDB4OWIsIDB4OWMsIDB4MjgsIDB4NDUsIDB4MjYsIDB4NTcsIDB4M2MsCi0weDcxLCAweDQwLCAweDI4LCAweDZhLCAweGExLCAweGZlLCAweGMzLCAweGU1LCAweDM3LCAweGExLCAweDAzLCAweGY2LCAweDJkLCAweGJlLCAweDgwLCAweDY0LCAweDcyLCAweDY5LCAweDJlLCAweDliLAotMHg0ZCwgMHhlMywgMHgyZSwgMHgxYiwgMHhmZSwgMHhlNywgMHhmOSwgMHg3NywgMHg4YywgMHgxOCwgMHg1MywgMHg5ZiwgMHhlMiwgMHhmZSwgMHgwMCwgMHhiYiwgMHg0OSwgMHgyMCwgMHg0NywgMHhkZiwKLTB4MDEsIDB4NjEsIDB4ODcsIDB4ZDYsIDB4ZTMsIDB4NDQsIDB4YjUsIDB4MDMsIDB4MmYsIDB4MDIsIDB4NDAsIDB4NTQsIDB4ZWMsIDB4N2MsIDB4YmMsIDB4ZGQsIDB4MGEsIDB4YWEsIDB4ZGUsIDB4ZTYsCi0weGM5LCAweGYyLCAweDhkLCAweDZjLCAweDJhLCAweDM1LCAweGY2LCAweDNjLCAweDYzLCAweDU1LCAweDI5LCAweDQwLCAweGYxLCAweDMyLCAweDgyLCAweDlmLCAweDUzLCAweGIzLCAweDllLCAweDVmLAotMHhjMSwgMHg1MywgMHg1MiwgMHgzZSwgMHhhYywgMHgyZSwgMHgyOCwgMHg1MSwgMHhhMSwgMHgxNiwgMHhkYiwgMHg5MCwgMHhlMywgMHg5OSwgMHg3ZSwgMHg4OCwgMHhhNCwgMHgwNCwgMHg3YywgMHg5MiwKLTB4YWUsIDB4ZDIsIDB4ZTcsIDB4ZDQsIDB4ZTEsIDB4NTUsIDB4MjAsIDB4OTAsIDB4M2UsIDB4M2MsIDB4NmEsIDB4NjMsIDB4ZjAsIDB4MzQsIDB4ZjEsIDB4MDIsIDB4NDEsIDB4MDAsIDB4ODQsIDB4NWEsCi0weDE3LCAweDZjLCAweGM2LCAweDNjLCAweDg0LCAweGQwLCAweDkzLCAweDdhLCAweGZmLCAweDU2LCAweGU5LCAweDllLCAweDk4LCAweDJiLCAweGNiLCAweDVhLCAweDI0LCAweDRhLCAweGZmLCAweDIxLAotMHhiNCwgMHg5ZSwgMHg4NywgMHgzZCwgMHg3NiwgMHhkOCwgMHg5YiwgMHhhOCwgMHg3MywgMHg5NiwgMHg2YywgMHgyYiwgMHg1YywgMHg1ZSwgMHhkMywgMHhhNiwgMHhmZiwgMHgxMCwgMHhkNiwgMHg4ZSwKLTB4YWYsIDB4YTUsIDB4OGEsIDB4Y2QsIDB4YTIsIDB4ZGUsIDB4Y2IsIDB4MGUsIDB4YmQsIDB4OGEsIDB4ZWYsIDB4YWUsIDB4ZmQsIDB4M2YsIDB4MWQsIDB4YzAsIDB4ZDgsIDB4ZjgsIDB4M2IsIDB4ZjUsCi0weDAyLCAweDdkLCAweDAyLCAweDQxLCAweDAwLCAweDhiLCAweDI2LCAweGQzLCAweDJjLCAweDdkLCAweDI4LCAweDM4LCAweDkyLCAweGYxLCAweGJmLCAweDE1LCAweDE2LCAweDM5LCAweDUwLCAweGM4LAotMHg2ZCwgMHgzMiwgMHhlYywgMHgyOCwgMHhmMiwgMHg4YiwgMHhkOCwgMHg3MCwgMHhjNSwgMHhlZCwgMHhlMSwgMHg3YiwgMHhmZiwgMHgyZCwgMHg2NiwgMHg4YywgMHg4NiwgMHg3NywgMHg0MywgMHhlYiwKLTB4YjYsIDB4ZjYsIDB4NTAsIDB4NjYsIDB4YjAsIDB4NDAsIDB4MjQsIDB4NmEsIDB4YWYsIDB4OTgsIDB4MjEsIDB4NDUsIDB4MzAsIDB4MDEsIDB4NTksIDB4ZDAsIDB4YzMsIDB4ZmMsIDB4N2IsIDB4YWUsCi0weDMwLCAweDE4LCAweGViLCAweDkwLCAweGZiLCAweDE3LCAweGQzLCAweGNlLCAweGI1Ci19OwotCi0vKioKLSAqIExvb3AgdG8gZW5jb2RlIGEgZGF0YSBwYWNrZXQgbkl0ZXJhdGlvbnMgdGltZXMgdXNpbmcgQysrLgotICogQHBhcmFtIG5JdGVyYXRpb25zIFRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucy4KLSAqIEBwYXJhbSB1c2VDb21wbGV4IElmIHRydWUsIHVzZSBhIGxhcmdlIG5hbWUsIGxhcmdlIGNvbnRlbnQgYW5kIGFsbCBmaWVsZHMuICBJZiBmYWxzZSwgdXNlIGEgc21hbGwgbmFtZSwgc21hbGwgY29udGVudAotICogYW5kIG9ubHkgcmVxdWlyZWQgZmllbGRzLgotICogQHBhcmFtIHVzZUNyeXB0byBJZiB0cnVlLCBzaWduIHRoZSBkYXRhIHBhY2tldC4gIElmIGZhbHNlLCB1c2UgYSBibGFuayBzaWduYXR1cmUuCi0gKiBAcGFyYW0gZW5jb2RpbmcgU2V0IHRoaXMgdG8gdGhlIHdpcmUgZW5jb2RpbmcuCi0gKiBAcmV0dXJuIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBmb3IgYWxsIGl0ZXJhdGlvbnMuCi0gKi8KLXN0YXRpYyBkb3VibGUKLWJlbmNobWFya0VuY29kZURhdGFTZWNvbmRzQ3BwKGludCBuSXRlcmF0aW9ucywgYm9vbCB1c2VDb21wbGV4LCBib29sIHVzZUNyeXB0bywgQmxvY2smIGVuY29kaW5nKQotewotICBOYW1lIG5hbWU7Ci0gIEJsb2NrIGNvbnRlbnQ7Ci0gIGlmICh1c2VDb21wbGV4KSB7Ci0gICAgLy8gVXNlIGEgbGFyZ2UgbmFtZSBhbmQgY29udGVudC4KLSAgICBuYW1lID0gTmFtZSgiL25kbi91Y2xhLmVkdS9hcHBzL2x3bmRuLXRlc3QvbnVtYmVycy50eHQvJUZEJTA1JTA1JUU4JTBDJUNFJTFELyUwMCIpOyAKLSAgICAKLSAgICBvc3RyaW5nc3RyZWFtIGNvbnRlbnRTdHJlYW07Ci0gICAgaW50IGNvdW50ID0gMTsKLSAgICBjb250ZW50U3RyZWFtIDw8IChjb3VudCsrKTsKLSAgICB3aGlsZSAoY29udGVudFN0cmVhbS5zdHIoKS5sZW5ndGgoKSA8IDExNzApCi0gICAgICBjb250ZW50U3RyZWFtIDw8ICIgIiA8PCAoY291bnQrKyk7Ci0gICAgY29udGVudCA9IGRhdGFCbG9jayhUbHY6OkNvbnRlbnQsIGNvbnRlbnRTdHJlYW0uc3RyKCkuY19zdHIoKSwgY29udGVudFN0cmVhbS5zdHIoKS5sZW5ndGgoKSk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgLy8gVXNlIGEgc21hbGwgbmFtZSBhbmQgY29udGVudC4KLSAgICBuYW1lID0gTmFtZSgiL3Rlc3QiKTsKLSAgICBjb250ZW50ID0gZGF0YUJsb2NrKFRsdjo6Q29udGVudCwgImFiYyIsIDMpOwotICB9Ci0gIHN0ZDo6Y291dCA8PCAiQ29udGVudCBzaXplOiAiIDw8IGNvbnRlbnQudmFsdWVfc2l6ZSgpIDw8IHN0ZDo6ZW5kbDsKLSAgCi0gIC8vIEluaXRpYWxpemUgdGhlIEtleUNoYWluIHN0b3JhZ2UgaW4gY2FzZSB1c2VDcnlwdG8gaXMgdHJ1ZS4KLSAgS2V5Q2hhaW5JbXBsPFNlY1B1YmxpY0luZm9NZW1vcnksIFNlY1RwbU1lbW9yeT4ga2V5Q2hhaW47Ci0KLSAgTmFtZSBrZXlOYW1lKCIvdGVzdG5hbWUvZHNrLTEyMyIpOwotCi0gIC8vIEluaXRpYWxpemUgdGhlIHN0b3JhZ2UuCi0gIGtleUNoYWluLmFkZFB1YmxpY0tleShrZXlOYW1lLCBLRVlfVFlQRV9SU0EsCi0gICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNLZXkoREVGQVVMVF9QVUJMSUNfS0VZX0RFUiwgc2l6ZW9mKERFRkFVTFRfUFVCTElDX0tFWV9ERVIpKSk7Ci0KLSAga2V5Q2hhaW4uc2V0S2V5UGFpckZvcktleU5hbWUoa2V5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVF9QVUJMSUNfS0VZX0RFUiwgc2l6ZW9mKERFRkFVTFRfUFVCTElDX0tFWV9ERVIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX1BSSVZBVEVfS0VZX0RFUiwgc2l6ZW9mKERFRkFVTFRfUFJJVkFURV9LRVlfREVSKSk7Ci0KLSAga2V5Q2hhaW4uYWRkQ2VydGlmaWNhdGVBc0tleURlZmF1bHQoKmtleUNoYWluLnNlbGZTaWduKGtleU5hbWUpKTsKLSAgTmFtZSBjZXJ0aWZpY2F0ZU5hbWUgPSBrZXlDaGFpbi5nZXREZWZhdWx0Q2VydGlmaWNhdGVOYW1lKCk7Ci0gIAotICAvLyBTZXQgdXAgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0IGFuZCBzaWduYXR1cmVCaXRzIGluIGNhc2UgdXNlQ3J5cHRvIGlzIGZhbHNlLgotICB1aW50OF90IHNpZ25hdHVyZUJpdHNBcnJheVsxMjhdOwotICBtZW1zZXQoc2lnbmF0dXJlQml0c0FycmF5LCAwLCBzaXplb2Yoc2lnbmF0dXJlQml0c0FycmF5KSk7Ci0gIEJsb2NrIHNpZ25hdHVyZVZhbHVlID0gZGF0YUJsb2NrKFRsdjo6U2lnbmF0dXJlVmFsdWUsIHNpZ25hdHVyZUJpdHNBcnJheSwgc2l6ZW9mKHNpZ25hdHVyZUJpdHNBcnJheSkpOwotCi0gIGRvdWJsZSBzdGFydCA9IGdldE5vd1NlY29uZHMoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBuSXRlcmF0aW9uczsgKytpKSB7Ci0gICAgRGF0YSBkYXRhKG5hbWUpOwotICAgIGRhdGEuc2V0Q29udGVudChjb250ZW50KTsKLSAgICBpZiAodXNlQ29tcGxleCkgewotICAgICAgZGF0YS5zZXRGcmVzaG5lc3NQZXJpb2QoMTAwMDAwMCk7Ci0gICAgfQotCi0gICAgaWYgKHVzZUNyeXB0bykKLSAgICAgIC8vIFRoaXMgc2V0cyB0aGUgc2lnbmF0dXJlIGZpZWxkcy4KLSAgICAgIGtleUNoYWluLnNpZ24oZGF0YSk7Ci0gICAgZWxzZSB7Ci0gICAgICAvLyBJbWl0YXRlIHJlYWwgc2lnbiBtZXRob2QgdG8gc2V0IHVwIHRoZSBzaWduYXR1cmUgZmllbGRzLCBidXQgZG9uJ3QgYWN0dWFsbHkgc2lnbi4KLSAgICAgIFNpZ25hdHVyZVNoYTI1NldpdGhSc2Egc2lnbmF0dXJlOwotICAgICAgc2lnbmF0dXJlLnNldEtleUxvY2F0b3IoY2VydGlmaWNhdGVOYW1lKTsKLSAgICAgIHNpZ25hdHVyZS5zZXRWYWx1ZShzaWduYXR1cmVWYWx1ZSk7Ci0gICAgICBkYXRhLnNldFNpZ25hdHVyZShzaWduYXR1cmUpOwotICAgIH0KLQotICAgIGVuY29kaW5nID0gZGF0YS53aXJlRW5jb2RlKCk7Ci0gIH0KLSAgZG91YmxlIGZpbmlzaCA9IGdldE5vd1NlY29uZHMoKTsKLSAgICAKLSAgcmV0dXJuIGZpbmlzaCAtIHN0YXJ0OwotfQotCi1zdGF0aWMgdm9pZCAKLW9uVmVyaWZpZWQoY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxEYXRhPiYgZGF0YSkKLXsKLSAgLy8gRG8gbm90aGluZyBzaW5jZSB3ZSBleHBlY3QgaXQgdG8gdmVyaWZ5LgotfQotCi1zdGF0aWMgdm9pZCAKLW9uVmVyaWZ5RmFpbGVkKGNvbnN0IHB0cl9saWI6OnNoYXJlZF9wdHI8RGF0YT4mIGRhdGEpCi17Ci0gIGNvdXQgPDwgIlNpZ25hdHVyZSB2ZXJpZmljYXRpb246IEZBSUxFRCIgPDwgZW5kbDsKLX0KLQotLyoqCi0gKiBMb29wIHRvIGRlY29kZSBhIGRhdGEgcGFja2V0IG5JdGVyYXRpb25zIHRpbWVzIHVzaW5nIEMrKy4KLSAqIEBwYXJhbSBuSXRlcmF0aW9ucyBUaGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMuCi0gKiBAcGFyYW0gdXNlQ3J5cHRvIElmIHRydWUsIHZlcmlmeSB0aGUgc2lnbmF0dXJlLiAgSWYgZmFsc2UsIGRvbid0IHZlcmlmeS4KLSAqIEBwYXJhbSBlbmNvZGluZyBUaGUgd2lyZSBlbmNvZGluZyB0byBkZWNvZGUuCi0gKiBAcmV0dXJuIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBmb3IgYWxsIGl0ZXJhdGlvbnMuCi0gKi8KLXN0YXRpYyBkb3VibGUgCi1iZW5jaG1hcmtEZWNvZGVEYXRhU2Vjb25kc0NwcChpbnQgbkl0ZXJhdGlvbnMsIGJvb2wgdXNlQ3J5cHRvLCBjb25zdCBDb25zdEJ1ZmZlclB0ciAmZW5jb2RpbmcpCi17Ci0gIC8vIC8vIEluaXRpYWxpemUgdGhlIEtleUNoYWluIHN0b3JhZ2UgaW4gY2FzZSB1c2VDcnlwdG8gaXMgdHJ1ZS4KLSAgLy8gcHRyX2xpYjo6c2hhcmVkX3B0cjxNZW1vcnlJZGVudGl0eVN0b3JhZ2U+IGlkZW50aXR5U3RvcmFnZShuZXcgTWVtb3J5SWRlbnRpdHlTdG9yYWdlKCkpOwotICAvLyBpZGVudGl0eVN0b3JhZ2UtPmFkZEtleShrZXlOYW1lLCBLRVlfVFlQRV9SU0EsIEJsb2IoREVGQVVMVF9QVUJMSUNfS0VZX0RFUiwgc2l6ZW9mKERFRkFVTFRfUFVCTElDX0tFWV9ERVIpKSk7Ci0gIAotICAvLyBwdHJfbGliOjpzaGFyZWRfcHRyPE1lbW9yeVByaXZhdGVLZXlTdG9yYWdlPiBwcml2YXRlS2V5U3RvcmFnZShuZXcgTWVtb3J5UHJpdmF0ZUtleVN0b3JhZ2UoKSk7Ci0gIC8vIEtleUNoYWluIGtleUNoYWluKGlkZW50aXR5U3RvcmFnZSwgcHJpdmF0ZUtleVN0b3JhZ2UpOwotICAKLSAgLy8gTmFtZSBrZXlOYW1lKCIvdGVzdG5hbWUvRFNLLTEyMyIpOwotCi0gIHNpemVfdCBuYW1lU2l6ZSA9IDA7Ci0gIGRvdWJsZSBzdGFydCA9IGdldE5vd1NlY29uZHMoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBuSXRlcmF0aW9uczsgKytpKSB7Ci0gICAgRGF0YSBkYXRhOwotICAgIGRhdGEud2lyZURlY29kZShlbmNvZGluZyk7Ci0gICAgCi0gIC8vICAgaWYgKHVzZUNyeXB0bykKLSAgLy8gICAgIGtleUNoYWluLnZlcmlmeURhdGEoZGF0YSwgb25WZXJpZmllZCwgb25WZXJpZnlGYWlsZWQpOwotICB9Ci0gIGRvdWJsZSBmaW5pc2ggPSBnZXROb3dTZWNvbmRzKCk7Ci0gCi0gIHJldHVybiBmaW5pc2ggLSBzdGFydDsKLX0KLQotLyoqCi0gKiBMb29wIHRvIGVuY29kZSBhIGRhdGEgcGFja2V0IG5JdGVyYXRpb25zIHRpbWVzIHVzaW5nIEMuCi0gKiBAcGFyYW0gbkl0ZXJhdGlvbnMgVGhlIG51bWJlciBvZiBpdGVyYXRpb25zLgotICogQHBhcmFtIHVzZUNvbXBsZXggSWYgdHJ1ZSwgdXNlIGEgbGFyZ2UgbmFtZSwgbGFyZ2UgY29udGVudCBhbmQgYWxsIGZpZWxkcy4gIElmIGZhbHNlLCB1c2UgYSBzbWFsbCBuYW1lLCBzbWFsbCBjb250ZW50Ci0gKiBhbmQgb25seSByZXF1aXJlZCBmaWVsZHMuCi0gKiBAcGFyYW0gdXNlQ3J5cHRvIElmIHRydWUsIHNpZ24gdGhlIGRhdGEgcGFja2V0LiAgSWYgZmFsc2UsIHVzZSBhIGJsYW5rIHNpZ25hdHVyZS4KLSAqIEBwYXJhbSBlbmNvZGluZyBPdXRwdXQgYnVmZmVyIGZvciB0aGUgd2lyZSBlbmNvZGluZy4KLSAqIEBwYXJhbSBtYXhFbmNvZGluZ0xlbmd0aCBUaGUgc2l6ZSBvZiB0aGUgZW5jb2RpbmcgYnVmZmVyLgotICogQHBhcmFtIGVuY29kaW5nTGVuZ3RoIFJldHVybiB0aGUgbnVtYmVyIG9mIG91dHB1dCBieXRlcyBpbiBlbmNvZGluZy4KLSAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBzZWNvbmRzIGZvciBhbGwgaXRlcmF0aW9ucy4KLSAqLwotc3RhdGljIGRvdWJsZSAKLWJlbmNobWFya0VuY29kZURhdGFTZWNvbmRzQwotICAoaW50IG5JdGVyYXRpb25zLCBib29sIHVzZUNvbXBsZXgsIGJvb2wgdXNlQ3J5cHRvLCB1aW50OF90KiBlbmNvZGluZywgc2l6ZV90IG1heEVuY29kaW5nTGVuZ3RoLCBzaXplX3QgKmVuY29kaW5nTGVuZ3RoKQotewotICBzdHJ1Y3QgbmRuX0Jsb2IgZmluYWxCbG9ja0lkOwotICBuZG5fQmxvYl9pbml0aWFsaXplKCZmaW5hbEJsb2NrSWQsICh1aW50OF90KikiXHgwMCIsIDEpOwotCi0gIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCBuYW1lQ29tcG9uZW50c1syMF07Ci0gIHN0cnVjdCBuZG5fTmFtZSBuYW1lOwotICBuZG5fTmFtZV9pbml0aWFsaXplKCZuYW1lLCBuYW1lQ29tcG9uZW50cywgc2l6ZW9mKG5hbWVDb21wb25lbnRzKSAvIHNpemVvZihuYW1lQ29tcG9uZW50c1swXSkpOwotICBCdWZmZXIgY29udGVudEJsb2I7Ci0gIHN0cnVjdCBuZG5fQmxvYiBjb250ZW50OwotICBpZiAodXNlQ29tcGxleCkgewotICAgIC8vIFVzZSBhIGxhcmdlIG5hbWUgYW5kIGNvbnRlbnQuCi0gICAgbmRuX05hbWVfYXBwZW5kU3RyaW5nKCZuYW1lLCAoY2hhciopIm5kbiIpOwotICAgIG5kbl9OYW1lX2FwcGVuZFN0cmluZygmbmFtZSwgKGNoYXIqKSJ1Y2xhLmVkdSIpOwotICAgIG5kbl9OYW1lX2FwcGVuZFN0cmluZygmbmFtZSwgKGNoYXIqKSJhcHBzIik7Ci0gICAgbmRuX05hbWVfYXBwZW5kU3RyaW5nKCZuYW1lLCAoY2hhciopImx3bmRuLXRlc3QiKTsKLSAgICBuZG5fTmFtZV9hcHBlbmRTdHJpbmcoJm5hbWUsIChjaGFyKikibnVtYmVycy50eHQiKTsKLSAgICBuZG5fTmFtZV9hcHBlbmRTdHJpbmcoJm5hbWUsIChjaGFyKikiXHhGRFx4MDVceDA1XHhFOFx4MENceENFXHgxRCIpOwotICAgIG5kbl9OYW1lX2FwcGVuZEJsb2IoJm5hbWUsICZmaW5hbEJsb2NrSWQpOwotICAgIAotICAgIG9zdHJpbmdzdHJlYW0gY29udGVudFN0cmVhbTsKLSAgICBpbnQgY291bnQgPSAxOwotICAgIGNvbnRlbnRTdHJlYW0gPDwgKGNvdW50KyspOwotICAgIHdoaWxlIChjb250ZW50U3RyZWFtLnN0cigpLmxlbmd0aCgpIDwgMTE3MCkKLSAgICAgIGNvbnRlbnRTdHJlYW0gPDwgIiAiIDw8IChjb3VudCsrKTsKLSAgICBjb250ZW50QmxvYiA9IEJ1ZmZlcigodWludDhfdCopY29udGVudFN0cmVhbS5zdHIoKS5jX3N0cigpLCBjb250ZW50U3RyZWFtLnN0cigpLmxlbmd0aCgpKTsKLSAgfQotICBlbHNlIHsKLSAgICAvLyBVc2UgYSBzbWFsbCBuYW1lIGFuZCBjb250ZW50LgotICAgIG5kbl9OYW1lX2FwcGVuZFN0cmluZygmbmFtZSwgKGNoYXIqKSJ0ZXN0Iik7Ci0gICAgY29udGVudEJsb2IgPSBCdWZmZXIoKHVpbnQ4X3QqKSJhYmMiLCAzKTsKLSAgfQotICBuZG5fQmxvYl9pbml0aWFsaXplKCZjb250ZW50LCAodWludDhfdCopY29udGVudEJsb2IuYnVmKCksIGNvbnRlbnRCbG9iLnNpemUoKSk7Ci0gIAotICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgY2VydGlmaWNhdGVOYW1lQ29tcG9uZW50c1syMF07Ci0gIHN0cnVjdCBuZG5fTmFtZSBjZXJ0aWZpY2F0ZU5hbWU7Ci0gIG5kbl9OYW1lX2luaXRpYWxpemUoJmNlcnRpZmljYXRlTmFtZSwgY2VydGlmaWNhdGVOYW1lQ29tcG9uZW50cywgc2l6ZW9mKGNlcnRpZmljYXRlTmFtZUNvbXBvbmVudHMpIC8gc2l6ZW9mKGNlcnRpZmljYXRlTmFtZUNvbXBvbmVudHNbMF0pKTsKLSAgbmRuX05hbWVfYXBwZW5kU3RyaW5nKCZjZXJ0aWZpY2F0ZU5hbWUsIChjaGFyKikidGVzdG5hbWUiKTsKLSAgbmRuX05hbWVfYXBwZW5kU3RyaW5nKCZjZXJ0aWZpY2F0ZU5hbWUsIChjaGFyKikiS0VZIik7Ci0gIG5kbl9OYW1lX2FwcGVuZFN0cmluZygmY2VydGlmaWNhdGVOYW1lLCAoY2hhciopIkRTSy0xMjMiKTsKLSAgbmRuX05hbWVfYXBwZW5kU3RyaW5nKCZjZXJ0aWZpY2F0ZU5hbWUsIChjaGFyKikiSUQtQ0VSVCIpOwotICBuZG5fTmFtZV9hcHBlbmRTdHJpbmcoJmNlcnRpZmljYXRlTmFtZSwgKGNoYXIqKSIwIik7Ci0gIAotICAvLyBTZXQgdXAgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0IGFuZCBzaWduYXR1cmVCaXRzIGluIGNhc2UgdXNlQ3J5cHRvIGlzIGZhbHNlLgotICB1aW50OF90KiBwdWJsaWNLZXlEZXIgPSBERUZBVUxUX1BVQkxJQ19LRVlfREVSOwotICBzaXplX3QgcHVibGljS2V5RGVyTGVuZ3RoID0gc2l6ZW9mKERFRkFVTFRfUFVCTElDX0tFWV9ERVIpOwotICB1aW50OF90IHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdEFycmF5W1NIQTI1Nl9ESUdFU1RfTEVOR1RIXTsKLSAgbmRuX2RpZ2VzdFNoYTI1NihwdWJsaWNLZXlEZXIsIHB1YmxpY0tleURlckxlbmd0aCwgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0QXJyYXkpOwotICBzdHJ1Y3QgbmRuX0Jsb2IgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0OwotICBuZG5fQmxvYl9pbml0aWFsaXplKCZwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdEFycmF5LCBzaXplb2YocHVibGlzaGVyUHVibGljS2V5RGlnZXN0QXJyYXkpKTsKLSAgdWludDhfdCBzaWduYXR1cmVCaXRzQXJyYXlbMTI4XTsKLSAgbWVtc2V0KHNpZ25hdHVyZUJpdHNBcnJheSwgMCwgc2l6ZW9mKHNpZ25hdHVyZUJpdHNBcnJheSkpOwotICAKLSAgLy8gU2V0IHVwIHRoZSBwcml2YXRlIGtleSBub3cgaW4gY2FzZSB1c2VDcnlwdG8gaXMgdHJ1ZS4KLSAgLy8gVXNlIGEgdGVtcG9yYXJ5IHBvaW50ZXIgc2luY2UgZDJpIHVwZGF0ZXMgaXQuCi0gIGNvbnN0IHVpbnQ4X3QgKnByaXZhdGVLZXlEZXJQb2ludGVyID0gREVGQVVMVF9QUklWQVRFX0tFWV9ERVI7Ci0gIFJTQSAqcHJpdmF0ZUtleSA9IGQyaV9SU0FQcml2YXRlS2V5KE5VTEwsICZwcml2YXRlS2V5RGVyUG9pbnRlciwgc2l6ZW9mKERFRkFVTFRfUFJJVkFURV9LRVlfREVSKSk7Ci0gIGlmICghcHJpdmF0ZUtleSkgewotICAgIC8vIERvbid0IGV4cGVjdCB0aGlzIHRvIGhhcHBlbi4KLSAgICBjb3V0IDw8ICJFcnJvciBkZWNvZGluZyBwcml2YXRlIGtleSBERVIiIDw8IGVuZGw7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgCi0gIGRvdWJsZSBzdGFydCA9IGdldE5vd1NlY29uZHMoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBuSXRlcmF0aW9uczsgKytpKSB7Ci0gICAgc3RydWN0IG5kbl9EYXRhIGRhdGE7Ci0gICAgbmRuX0RhdGFfaW5pdGlhbGl6ZSgmZGF0YSwgbmFtZS5jb21wb25lbnRzLCBuYW1lLm1heENvbXBvbmVudHMsIGNlcnRpZmljYXRlTmFtZS5jb21wb25lbnRzLCBjZXJ0aWZpY2F0ZU5hbWUubWF4Q29tcG9uZW50cyk7Ci0gICAgCi0gICAgZGF0YS5uYW1lID0gbmFtZTsKLSAgICBkYXRhLmNvbnRlbnQgPSBjb250ZW50OwotICAgIGlmICh1c2VDb21wbGV4KSB7Ci0gICAgICBkYXRhLm1ldGFJbmZvLnRpbWVzdGFtcE1pbGxpc2Vjb25kcyA9IDEuM2UrMTI7Ci0gICAgICBkYXRhLm1ldGFJbmZvLmZyZXNobmVzc1NlY29uZHMgPSAxMDAwOwotICAgICAgbmRuX05hbWVDb21wb25lbnRfaW5pdGlhbGl6ZSgmZGF0YS5tZXRhSW5mby5maW5hbEJsb2NrSUQsIGZpbmFsQmxvY2tJZC52YWx1ZSwgZmluYWxCbG9ja0lkLmxlbmd0aCk7Ci0gICAgfQotCi0gICAgc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSBvdXRwdXQ7Ci0gICAgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyIGVuY29kZXI7Ci0gICAgc2l6ZV90IHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2lnbmVkUG9ydGlvbkVuZE9mZnNldDsKLSAgICBuZG5fRXJyb3IgZXJyb3I7Ci0KLSAgICBkYXRhLnNpZ25hdHVyZS5rZXlMb2NhdG9yLnR5cGUgPSBuZG5fS2V5TG9jYXRvclR5cGVfS0VZTkFNRTsKLSAgICBkYXRhLnNpZ25hdHVyZS5rZXlMb2NhdG9yLmtleU5hbWUgPSBjZXJ0aWZpY2F0ZU5hbWU7Ci0gICAgZGF0YS5zaWduYXR1cmUua2V5TG9jYXRvci5rZXlOYW1lVHlwZSA9IChuZG5fS2V5TmFtZVR5cGUpLTE7Ci0gICAgZGF0YS5zaWduYXR1cmUucHVibGlzaGVyUHVibGljS2V5RGlnZXN0LnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCA9IHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdDsKLSAgICBpZiAodXNlQ3J5cHRvKSB7Ci0gICAgICAvLyBFbmNvZGUgb25jZSB0byBnZXQgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgICAgbmRuX0R5bmFtaWNVSW50OEFycmF5X2luaXRpYWxpemUoJm91dHB1dCwgZW5jb2RpbmcsIG1heEVuY29kaW5nTGVuZ3RoLCAwKTsKLSAgICAgIG5kbl9CaW5hcnlYbWxFbmNvZGVyX2luaXRpYWxpemUoJmVuY29kZXIsICZvdXRwdXQpOyAgICAKLSAgICAgIGlmICgoZXJyb3IgPSBuZG5fZW5jb2RlQmluYXJ5WG1sRGF0YSgmZGF0YSwgJnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgJnNpZ25lZFBvcnRpb25FbmRPZmZzZXQsICZlbmNvZGVyKSkpIHsKLSAgICAgICAgY291dCA8PCAiRXJyb3IgaW4gbmRuX2VuY29kZUJpbmFyeVhtbERhdGE6ICIgPDwgbmRuX2dldEVycm9yU3RyaW5nKGVycm9yKSA8PCBlbmRsOwotICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLSAgICAgIAotICAgICAgLy8gSW1pdGF0ZSBNZW1vcnlQcml2YXRlS2V5U3RvcmFnZTo6c2lnbi4KLSAgICAgIHVpbnQ4X3QgZGlnZXN0W1NIQTI1Nl9ESUdFU1RfTEVOR1RIXTsKLSAgICAgIG5kbl9kaWdlc3RTaGEyNTYoZW5jb2RpbmcgKyBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpZ25lZFBvcnRpb25FbmRPZmZzZXQgLSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIGRpZ2VzdCk7Ci0gICAgICB1bnNpZ25lZCBpbnQgc2lnbmF0dXJlQml0c0xlbmd0aDsKLSAgICAgIGlmICghUlNBX3NpZ24oTklEX3NoYTI1NiwgZGlnZXN0LCBzaXplb2YoZGlnZXN0KSwgc2lnbmF0dXJlQml0c0FycmF5LCAmc2lnbmF0dXJlQml0c0xlbmd0aCwgcHJpdmF0ZUtleSkpIHsKLSAgICAgICAgLy8gRG9uJ3QgZXhwZWN0IHRoaXMgdG8gaGFwcGVuLgotICAgICAgICBjb3V0IDw8ICJFcnJvciBpbiBSU0Ffc2lnbiIgPDwgZW5kbDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICB9ICAgIAotICAgICAgCi0gICAgICBuZG5fQmxvYl9pbml0aWFsaXplKCZkYXRhLnNpZ25hdHVyZS5zaWduYXR1cmUsIHNpZ25hdHVyZUJpdHNBcnJheSwgc2lnbmF0dXJlQml0c0xlbmd0aCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIC8vIFNldCB1cCB0aGUgc2lnbmF0dXJlLCBidXQgZG9uJ3Qgc2lnbi4KLSAgICAgIG5kbl9CbG9iX2luaXRpYWxpemUoJmRhdGEuc2lnbmF0dXJlLnNpZ25hdHVyZSwgc2lnbmF0dXJlQml0c0FycmF5LCBzaXplb2Yoc2lnbmF0dXJlQml0c0FycmF5KSk7Ci0KLSAgICAvLyBBc3N1bWUgdGhlIGVuY29kaW5nIGJ1ZmZlciBpcyBiaWcgZW5vdWdoIHNvIHdlIGRvbid0IG5lZWQgdG8gZHluYW1pY2FsbHkgcmVhbGxvY2F0ZS4KLSAgICBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfaW5pdGlhbGl6ZSgmb3V0cHV0LCBlbmNvZGluZywgbWF4RW5jb2RpbmdMZW5ndGgsIDApOwotICAgIG5kbl9CaW5hcnlYbWxFbmNvZGVyX2luaXRpYWxpemUoJmVuY29kZXIsICZvdXRwdXQpOyAgICAKLSAgICBpZiAoKGVycm9yID0gbmRuX2VuY29kZUJpbmFyeVhtbERhdGEoJmRhdGEsICZzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsICZzaWduZWRQb3J0aW9uRW5kT2Zmc2V0LCAmZW5jb2RlcikpKSB7Ci0gICAgICBjb3V0IDw8ICJFcnJvciBpbiBuZG5fZW5jb2RlQmluYXJ5WG1sRGF0YTogIiA8PCBuZG5fZ2V0RXJyb3JTdHJpbmcoZXJyb3IpIDw8IGVuZGw7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9ICAgIAotICAgICplbmNvZGluZ0xlbmd0aCA9IGVuY29kZXIub2Zmc2V0OwotICB9Ci0gIGRvdWJsZSBmaW5pc2ggPSBnZXROb3dTZWNvbmRzKCk7Ci0gIAotICBpZiAocHJpdmF0ZUtleSkKLSAgICBSU0FfZnJlZShwcml2YXRlS2V5KTsKLSAgCi0gIHJldHVybiBmaW5pc2ggLSBzdGFydDsKLX0KLQotLyoqCi0gKiBMb29wIHRvIGRlY29kZSBhIGRhdGEgcGFja2V0IG5JdGVyYXRpb25zIHRpbWVzIHVzaW5nIEMuCi0gKiBAcGFyYW0gbkl0ZXJhdGlvbnMgVGhlIG51bWJlciBvZiBpdGVyYXRpb25zLgotICogQHBhcmFtIHVzZUNyeXB0byBJZiB0cnVlLCB2ZXJpZnkgdGhlIHNpZ25hdHVyZS4gIElmIGZhbHNlLCBkb24ndCB2ZXJpZnkuCi0gKiBAcGFyYW0gZW5jb2RpbmcgVGhlIGJ1ZmZlciB3aXRoIHdpcmUgZW5jb2RpbmcgdG8gZGVjb2RlLgotICogQHBhcmFtIGVuY29kaW5nTGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGVuY29kaW5nLgotICogQHJldHVybiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgZm9yIGFsbCBpdGVyYXRpb25zLgotICovCi1zdGF0aWMgZG91YmxlIAotYmVuY2htYXJrRGVjb2RlRGF0YVNlY29uZHNDKGludCBuSXRlcmF0aW9ucywgYm9vbCB1c2VDcnlwdG8sIHVpbnQ4X3QqIGVuY29kaW5nLCBzaXplX3QgZW5jb2RpbmdMZW5ndGgpCi17Ci0gIGRvdWJsZSBzdGFydCA9IGdldE5vd1NlY29uZHMoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBuSXRlcmF0aW9uczsgKytpKSB7Ci0gICAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IG5hbWVDb21wb25lbnRzWzEwMF07Ci0gICAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IGtleU5hbWVDb21wb25lbnRzWzEwMF07Ci0gICAgc3RydWN0IG5kbl9EYXRhIGRhdGE7Ci0gICAgbmRuX0RhdGFfaW5pdGlhbGl6ZQotICAgICAgKCZkYXRhLCBuYW1lQ29tcG9uZW50cywgc2l6ZW9mKG5hbWVDb21wb25lbnRzKSAvIHNpemVvZihuYW1lQ29tcG9uZW50c1swXSksIAotICAgICAgIGtleU5hbWVDb21wb25lbnRzLCBzaXplb2Yoa2V5TmFtZUNvbXBvbmVudHMpIC8gc2l6ZW9mKGtleU5hbWVDb21wb25lbnRzWzBdKSk7Ci0KLSAgICBuZG5fQmluYXJ5WG1sRGVjb2RlciBkZWNvZGVyOwotICAgIG5kbl9CaW5hcnlYbWxEZWNvZGVyX2luaXRpYWxpemUoJmRlY29kZXIsIGVuY29kaW5nLCBlbmNvZGluZ0xlbmd0aCk7ICAKLSAgICBzaXplX3Qgc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0OwotICAgIG5kbl9FcnJvciBlcnJvcjsKLSAgICBpZiAoKGVycm9yID0gbmRuX2RlY29kZUJpbmFyeVhtbERhdGEoJmRhdGEsICZzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsICZzaWduZWRQb3J0aW9uRW5kT2Zmc2V0LCAmZGVjb2RlcikpKSB7Ci0gICAgICBjb3V0IDw8ICJFcnJvciBpbiBuZG5fZGVjb2RlQmluYXJ5WG1sRGF0YTogIiA8PCBuZG5fZ2V0RXJyb3JTdHJpbmcoZXJyb3IpIDw8IGVuZGw7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHVzZUNyeXB0bykgewotICAgICAgaWYgKCF2ZXJpZnlSc2FTaWduYXR1cmUKLSAgICAgICAgICAoZW5jb2RpbmcgKyBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpZ25lZFBvcnRpb25FbmRPZmZzZXQgLSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsCi0gICAgICAgICAgIGRhdGEuc2lnbmF0dXJlLnNpZ25hdHVyZS52YWx1ZSwgZGF0YS5zaWduYXR1cmUuc2lnbmF0dXJlLmxlbmd0aCwKLSAgICAgICAgICAgREVGQVVMVF9QVUJMSUNfS0VZX0RFUiwgc2l6ZW9mKERFRkFVTFRfUFVCTElDX0tFWV9ERVIpKSkKLSAgICAgICAgY291dCA8PCAiU2lnbmF0dXJlIHZlcmlmaWNhdGlvbjogRkFJTEVEIiA8PCBlbmRsOwotICAgIH0KLSAgfQotICBkb3VibGUgZmluaXNoID0gZ2V0Tm93U2Vjb25kcygpOwotIAotICByZXR1cm4gZmluaXNoIC0gc3RhcnQ7Ci19Ci0KLS8qKgotICogQ2FsbCBiZW5jaG1hcmtFbmNvZGVEYXRhU2Vjb25kc0NwcCBhbmQgYmVuY2htYXJrRGVjb2RlRGF0YVNlY29uZHNDcHAgd2l0aCBhcHByb3ByaWF0ZSBuSW50ZXJhdGlvbnMuICBQcmludCB0aGUgCi0gKiByZXN1bHRzIHRvIGNvdXQuCi0gKiBAcGFyYW0gdXNlQ29tcGxleCBTZWUgYmVuY2htYXJrRW5jb2RlRGF0YVNlY29uZHNDcHAuCi0gKiBAcGFyYW0gdXNlQ3J5cHRvIFNlZSBiZW5jaG1hcmtFbmNvZGVEYXRhU2Vjb25kc0NwcCBhbmQgYmVuY2htYXJrRGVjb2RlRGF0YVNlY29uZHNDcHAuCi0gKi8KLXN0YXRpYyB2b2lkCi1iZW5jaG1hcmtFbmNvZGVEZWNvZGVEYXRhQ3BwKGJvb2wgdXNlQ29tcGxleCwgYm9vbCB1c2VDcnlwdG8pCi17Ci0gIEJsb2NrIGVuY29kaW5nOwotICB7Ci0gICAgaW50IG5JdGVyYXRpb25zID0gdXNlQ3J5cHRvID8gMjAwMDAgOiAyMDAwMDA7Ci0gICAgZG91YmxlIGR1cmF0aW9uID0gYmVuY2htYXJrRW5jb2RlRGF0YVNlY29uZHNDcHAobkl0ZXJhdGlvbnMsIHVzZUNvbXBsZXgsIHVzZUNyeXB0bywgZW5jb2RpbmcpOwotICAgIGNvdXQgPDwgIkVuY29kZSAiIDw8ICh1c2VDb21wbGV4ID8gImNvbXBsZXgiIDogInNpbXBsZSAiKSA8PCAiIGRhdGEgQysrOiBDcnlwdG8/ICIgPDwgKHVzZUNyeXB0byA/ICJ5ZXMiIDogIm5vICIpIAotICAgICAgICAgPDwgIiwgRHVyYXRpb24gc2VjLCBIejogIiA8PCBkdXJhdGlvbiA8PCAiLCAiIDw8IChuSXRlcmF0aW9ucyAvIGR1cmF0aW9uKSA8PCBlbmRsOyAgCi0gIH0KLQotICBCdWZmZXJQdHIgd2lyZSA9IHB0cl9saWI6Om1ha2Vfc2hhcmVkPEJ1ZmZlcj4oZW5jb2Rpbmcud2lyZSgpLCBlbmNvZGluZy5zaXplKCkpOwotICB7Ci0gICAgaW50IG5JdGVyYXRpb25zID0gdXNlQ3J5cHRvID8gMTAwMDAgOiAxMDAwMDAwOwotICAgIGRvdWJsZSBkdXJhdGlvbiA9IGJlbmNobWFya0RlY29kZURhdGFTZWNvbmRzQ3BwKG5JdGVyYXRpb25zLCB1c2VDcnlwdG8sIHdpcmUpOwotICAgIGNvdXQgPDwgIkRlY29kZSAiIDw8ICh1c2VDb21wbGV4ID8gImNvbXBsZXgiIDogInNpbXBsZSAiKSA8PCAiIGRhdGEgQysrOiBDcnlwdG8/ICIgPDwgKHVzZUNyeXB0byA/ICJ5ZXMiIDogIm5vICIpIAotICAgICAgICAgPDwgIiwgRHVyYXRpb24gc2VjLCBIejogIiA8PCBkdXJhdGlvbiA8PCAiLCAiIDw8IChuSXRlcmF0aW9ucyAvIGR1cmF0aW9uKSA8PCBlbmRsOyAgCi0gIH0KLX0KLQotLyoqCi0gKiBDYWxsIGJlbmNobWFya0VuY29kZURhdGFTZWNvbmRzQyBhbmQgYmVuY2htYXJrRGVjb2RlRGF0YVNlY29uZHNDIHdpdGggYXBwcm9wcmlhdGUgbkludGVyYXRpb25zLiAgUHJpbnQgdGhlIAotICogcmVzdWx0cyB0byBjb3V0LgotICogQHBhcmFtIHVzZUNvbXBsZXggU2VlIGJlbmNobWFya0VuY29kZURhdGFTZWNvbmRzQy4KLSAqIEBwYXJhbSB1c2VDcnlwdG8gU2VlIGJlbmNobWFya0VuY29kZURhdGFTZWNvbmRzQyBhbmQgYmVuY2htYXJrRGVjb2RlRGF0YVNlY29uZHNDLgotICovCi1zdGF0aWMgdm9pZAotYmVuY2htYXJrRW5jb2RlRGVjb2RlRGF0YUMoYm9vbCB1c2VDb21wbGV4LCBib29sIHVzZUNyeXB0bykKLXsKLSAgdWludDhfdCBlbmNvZGluZ1sxNTAwXTsKLSAgc2l6ZV90IGVuY29kaW5nTGVuZ3RoOwotICB7Ci0gICAgaW50IG5JdGVyYXRpb25zID0gdXNlQ3J5cHRvID8gMjAwMDAgOiAxMDAwMDAwMDsKLSAgICBkb3VibGUgZHVyYXRpb24gPSBiZW5jaG1hcmtFbmNvZGVEYXRhU2Vjb25kc0Mobkl0ZXJhdGlvbnMsIHVzZUNvbXBsZXgsIHVzZUNyeXB0bywgZW5jb2RpbmcsIHNpemVvZihlbmNvZGluZyksICZlbmNvZGluZ0xlbmd0aCk7Ci0gICAgY291dCA8PCAiRW5jb2RlICIgPDwgKHVzZUNvbXBsZXggPyAiY29tcGxleCIgOiAic2ltcGxlICIpIDw8ICIgZGF0YSBDOiAgIENyeXB0bz8gIiA8PCAodXNlQ3J5cHRvID8gInllcyIgOiAibm8gIikgCi0gICAgICAgICA8PCAiLCBEdXJhdGlvbiBzZWMsIEh6OiAiIDw8IGR1cmF0aW9uIDw8ICIsICIgPDwgKG5JdGVyYXRpb25zIC8gZHVyYXRpb24pIDw8IGVuZGw7ICAKLSAgfQotICB7Ci0gICAgaW50IG5JdGVyYXRpb25zID0gdXNlQ3J5cHRvID8gMTUwMDAwIDogMTUwMDAwMDA7Ci0gICAgZG91YmxlIGR1cmF0aW9uID0gYmVuY2htYXJrRGVjb2RlRGF0YVNlY29uZHNDKG5JdGVyYXRpb25zLCB1c2VDcnlwdG8sIGVuY29kaW5nLCBlbmNvZGluZ0xlbmd0aCk7Ci0gICAgY291dCA8PCAiRGVjb2RlICIgPDwgKHVzZUNvbXBsZXggPyAiY29tcGxleCIgOiAic2ltcGxlICIpIDw8ICIgZGF0YSBDOiAgIENyeXB0bz8gIiA8PCAodXNlQ3J5cHRvID8gInllcyIgOiAibm8gIikgCi0gICAgICAgICA8PCAiLCBEdXJhdGlvbiBzZWMsIEh6OiAiIDw8IGR1cmF0aW9uIDw8ICIsICIgPDwgKG5JdGVyYXRpb25zIC8gZHVyYXRpb24pIDw8IGVuZGw7ICAKLSAgfQotfQotCi1pbnQgCi1tYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLXsKLSAgdHJ5IHsKLSAgICBiZW5jaG1hcmtFbmNvZGVEZWNvZGVEYXRhQ3BwKGZhbHNlLCBmYWxzZSk7Ci0gICAgYmVuY2htYXJrRW5jb2RlRGVjb2RlRGF0YUNwcCh0cnVlLCBmYWxzZSk7Ci0gICAgYmVuY2htYXJrRW5jb2RlRGVjb2RlRGF0YUNwcChmYWxzZSwgdHJ1ZSk7Ci0gICAgYmVuY2htYXJrRW5jb2RlRGVjb2RlRGF0YUNwcCh0cnVlLCB0cnVlKTsKLSAgICAKLSAgICBiZW5jaG1hcmtFbmNvZGVEZWNvZGVEYXRhQyhmYWxzZSwgZmFsc2UpOwotICAgIGJlbmNobWFya0VuY29kZURlY29kZURhdGFDKHRydWUsIGZhbHNlKTsKLSAgICBiZW5jaG1hcmtFbmNvZGVEZWNvZGVEYXRhQyhmYWxzZSwgdHJ1ZSk7Ci0gICAgYmVuY2htYXJrRW5jb2RlRGVjb2RlRGF0YUModHJ1ZSwgdHJ1ZSk7Ci0gIH0gY2F0Y2ggKHN0ZDo6ZXhjZXB0aW9uJiBlKSB7Ci0gICAgY291dCA8PCAiZXhjZXB0aW9uOiAiIDw8IGUud2hhdCgpIDw8IGVuZGw7Ci0gIH0KLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS90ZXN0c19ib29zdC90ZXN0LWVuY29kZS1kZWNvZGUtYmxvY2suY3BwIGIvdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWJsb2NrLmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHNfYm9vc3QvdGVzdC1lbmNvZGUtZGVjb2RlLWJsb2NrLmNwcApyZW5hbWUgdG8gdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWJsb2NrLmNwcApkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWNlcnRpZmljYXRlLmNwcCBiL3Rlc3RzL3Rlc3QtZW5jb2RlLWRlY29kZS1jZXJ0aWZpY2F0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRhMzJiYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Rlc3QtZW5jb2RlLWRlY29kZS1jZXJ0aWZpY2F0ZS5jcHAKQEAgLTAsMCArMSwxODMgQEAKKy8qKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KKyAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KKyAqLworCisjaW5jbHVkZSA8Ym9vc3QvdGVzdC91bml0X3Rlc3QuaHBwPgorCisjaW5jbHVkZSA8bmRuLWNwcC1kZXYvc2VjdXJpdHkvY2VydGlmaWNhdGUuaHBwPgorI2luY2x1ZGUgPG5kbi1jcHAtZGV2L3NlY3VyaXR5L3B1YmxpYy1rZXkuaHBwPgorCisjaWYgX19jbGFuZ19fCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdGF1dG9sb2dpY2FsLWNvbXBhcmUiCisjZW5kaWYKKworI2luY2x1ZGUgPGNyeXB0b3BwL2NyeXB0bGliLmg+CisjaW5jbHVkZSA8Y3J5cHRvcHAvcnNhLmg+CisjaW5jbHVkZSA8Y3J5cHRvcHAvZmlsZXMuaD4KKworI2luY2x1ZGUgPGZzdHJlYW0+CisjaW5jbHVkZSA8Ym9vc3QvdGVzdC9vdXRwdXRfdGVzdF9zdHJlYW0uaHBwPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIG5kbjsKKwordXNpbmcgbmFtZXNwYWNlIENyeXB0b1BQOworCitCT09TVF9BVVRPX1RFU1RfU1VJVEUoVGVzdENlcnRpZmljYXRlKQorCitjb25zdCB1aW50OF90IENlcnRpZmljYXRlUmF3W10gPSB7Cit9OworCitjb25zdCB1bnNpZ25lZCBjaGFyIFBSSVZBVEVfS0VZX0RFUltdID0geworMHgzMCwgMHg4MiwgMHgwMiwgMHg3NCwgMHgwMiwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwZCwgMHgwNiwgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwgMHgwMSwgMHgwMSwgMHgwMSwKKzB4MDUsIDB4MDAsIDB4MDQsIDB4ODIsIDB4MDIsIDB4NWUsIDB4MzAsIDB4ODIsIDB4MDIsIDB4NWEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MDIsIDB4ODEsIDB4ODEsIDB4MDAsIDB4OWUsIDB4MDYsIDB4M2UsCisweDQ3LCAweDg1LCAweGIyLCAweDM0LCAweDM3LCAweGFhLCAweDg1LCAweDQ3LCAweGFjLCAweDAzLCAweDI0LCAweDgzLCAweGI1LCAweDljLCAweGE4LCAweDA1LCAweDNhLCAweDI0LCAweDFlLCAweGViLAorMHg4OSwgMHgwMSwgMHhiYiwgMHhlOSwgMHg5YiwgMHhiMiwgMHhjMywgMHgyMiwgMHhhYywgMHg2OCwgMHhlMywgMHhmMCwgMHg2YywgMHgwMiwgMHhjZSwgMHg2OCwgMHhhNiwgMHhjNCwgMHhkMCwgMHhhNywKKzB4MDYsIDB4OTAsIDB4OWMsIDB4YWEsIDB4MWIsIDB4MDgsIDB4MWQsIDB4OGIsIDB4NDMsIDB4OWEsIDB4MzMsIDB4NjcsIDB4NDQsIDB4NmQsIDB4MjEsIDB4YTMsIDB4MWIsIDB4ODgsIDB4OWEsIDB4OTcsCisweDVlLCAweDU5LCAweGM0LCAweDE1LCAweDBiLCAweGQ5LCAweDJjLCAweGJkLCAweDUxLCAweDA3LCAweDYxLCAweDgyLCAweGFkLCAweGMxLCAweGI4LCAweGQ3LCAweGJmLCAweDliLCAweGNmLCAweDdkLAorMHgyNCwgMHhjMiwgMHg2MywgMHhmMywgMHg5NywgMHgxNywgMHhlYiwgMHhmZSwgMHg2MiwgMHgyNSwgMHhiYSwgMHg1YiwgMHg0ZCwgMHg4YSwgMHhjMiwgMHg3YSwgMHhiZCwgMHg0MywgMHg4YSwgMHg4ZiwKKzB4YjgsIDB4ZjIsIDB4ZjEsIDB4YzUsIDB4NmEsIDB4MzAsIDB4ZDMsIDB4NTAsIDB4OGMsIDB4YzgsIDB4OWEsIDB4ZGYsIDB4ZWYsIDB4ZWQsIDB4MzUsIDB4ZTcsIDB4N2EsIDB4NjIsIDB4ZWEsIDB4NzYsCisweDdjLCAweGJiLCAweDA4LCAweDI2LCAweGM3LCAweDAyLCAweDAxLCAweDExLCAweDAyLCAweDgxLCAweDgwLCAweDA0LCAweGE1LCAweGQ0LCAweGE3LCAweGMwLCAweDJhLCAweGUzLCAweDZiLCAweDBjLAorMHg4YiwgMHg3MywgMHgwYywgMHg5NiwgMHhhZSwgMHg0MCwgMHgxYiwgMHhlZSwgMHgwNCwgMHhmMSwgMHgxOCwgMHg0YywgMHg1YiwgMHg0MywgMHgyOSwgMHhhZCwgMHgzYSwgMHgzYiwgMHg5MywgMHhhMywKKzB4NjAsIDB4MTcsIDB4OWIsIDB4YTgsIDB4YmIsIDB4NjgsIDB4ZjQsIDB4MWUsIDB4MzMsIDB4M2YsIDB4NTAsIDB4MzIsIDB4ZjcsIDB4MTMsIDB4ZjgsIDB4YTksIDB4ZTYsIDB4N2QsIDB4NzksIDB4NDQsCisweDAwLCAweGRlLCAweDcyLCAweGVkLCAweGYyLCAweDczLCAweGZhLCAweDdiLCAweGFlLCAweDJhLCAweDcxLCAweGMwLCAweDQwLCAweGM4LCAweDM3LCAweDZmLCAweDM4LCAweGIyLCAweDY5LCAweDFmLAorMHhhOCwgMHg4MywgMHg3YiwgMHg0MiwgMHgwMCwgMHg3MywgMHg0NiwgMHhlNiwgMHg0YywgMHg5MSwgMHg3ZiwgMHgxMywgMHgwNiwgMHg2OSwgMHgwNiwgMHhkOCwgMHgzZiwgMHgyMiwgMHgxNSwgMHg3NSwKKzB4ZjYsIDB4ZGUsIDB4Y2QsIDB4YjAsIDB4YmMsIDB4NjYsIDB4NjEsIDB4OTEsIDB4MDgsIDB4OWIsIDB4MmIsIDB4YjIsIDB4MDAsIDB4YTksIDB4NjcsIDB4MDUsIDB4MzksIDB4NDAsIDB4YjksIDB4MzcsCisweDg1LCAweDg4LCAweDRmLCAweDc2LCAweDc5LCAweDYzLCAweGMwLCAweDg4LCAweDNjLCAweDg2LCAweGE4LCAweDEyLCAweDk0LCAweDVmLCAweGU0LCAweDM2LCAweDNkLCAweGVhLCAweGI5LCAweDAyLAorMHg0MSwgMHgwMCwgMHhiNiwgMHgyZSwgMHhiYiwgMHhjZCwgMHgyZiwgMHgzYSwgMHg5OSwgMHhlMCwgMHhhMSwgMHhhNSwgMHg0NCwgMHg3NywgMHhlYSwgMHgwYiwgMHhiZSwgMHgxNiwgMHg5NSwgMHgwZSwKKzB4NjQsIDB4YTcsIDB4NjgsIDB4ZDcsIDB4NGIsIDB4MTUsIDB4MTUsIDB4MjMsIDB4ZTIsIDB4MWUsIDB4NGUsIDB4MDAsIDB4MmMsIDB4MjIsIDB4OTcsIDB4YWUsIDB4YjAsIDB4NzQsIDB4YTYsIDB4OTksCisweGQwLCAweDVkLCAweGI3LCAweDFiLCAweDEwLCAweDM0LCAweDEzLCAweGQyLCAweDVmLCAweDZlLCAweDU2LCAweGFkLCAweDg1LCAweDRhLCAweGRiLCAweGYwLCAweDc4LCAweGJkLCAweGY0LCAweDhjLAorMHhiNywgMHg5YSwgMHgzZSwgMHg5OSwgMHhlZiwgMHhiOSwgMHgwMiwgMHg0MSwgMHgwMCwgMHhkZSwgMHgwZCwgMHhhNywgMHg0OCwgMHg3NSwgMHg5MCwgMHhhZCwgMHgxMSwgMHhhMSwgMHhhYywgMHhlZSwKKzB4Y2IsIDB4NDEsIDB4ODEsIDB4YzYsIDB4YzgsIDB4N2YsIDB4ZTcsIDB4MjUsIDB4OTQsIDB4YTEsIDB4MmEsIDB4MjEsIDB4YTgsIDB4NTcsIDB4ZmUsIDB4ODQsIDB4ZjIsIDB4NWUsIDB4YjQsIDB4OTYsCisweDM1LCAweGFmLCAweGVmLCAweDJlLCAweDdhLCAweGY4LCAweGRhLCAweDNmLCAweGFjLCAweDhhLCAweDNjLCAweDFjLCAweDljLCAweGJkLCAweDQ0LCAweGQ2LCAweDkwLCAweGI1LCAweGNlLCAweDFiLAorMHgxMiwgMHhmOSwgMHgzYiwgMHg4YywgMHg2OSwgMHhmNiwgMHhhOSwgMHgwMiwgMHg5MywgMHg0OCwgMHgzNSwgMHgwYSwgMHg3ZiwgMHgwMiwgMHg0MCwgMHg2YiwgMHgyYSwgMHg4YywgMHg5NiwgMHhkMCwKKzB4N2MsIDB4ZDIsIDB4ZmMsIDB4OWIsIDB4NTIsIDB4MjgsIDB4NDYsIDB4ODksIDB4YWMsIDB4OGQsIDB4ZWYsIDB4MmEsIDB4ODAsIDB4ZWYsIDB4ZWEsIDB4MDEsIDB4NmYsIDB4OTUsIDB4OTMsIDB4ZWUsCisweDUxLCAweDU3LCAweGQ1LCAweDk3LCAweDRiLCAweDY1LCAweDQxLCAweDg2LCAweDY2LCAweGMyLCAweDI2LCAweDgwLCAweDFlLCAweDNlLCAweDU1LCAweDNlLCAweDg4LCAweDYzLCAweGUyLCAweDY2LAorMHgwMywgMHg0NywgMHgzMSwgMHhkOCwgMHhhMiwgMHg0ZSwgMHg2OCwgMHg0NSwgMHgyNCwgMHgwYSwgMHhjYSwgMHgxNywgMHg2MSwgMHhkNSwgMHg2OSwgMHhjYSwgMHg3OCwgMHhhYiwgMHgyMSwgMHgwMiwKKzB4NDEsIDB4MDAsIDB4OGYsIDB4YWUsIDB4N2IsIDB4NGQsIDB4MDAsIDB4YzcsIDB4MDYsIDB4OTIsIDB4ZjAsIDB4MjQsIDB4OWEsIDB4ODMsIDB4ODQsIDB4YmQsIDB4NjIsIDB4ODEsIDB4YmMsIDB4MmMsCisweDI3LCAweDYwLCAweDJjLCAweDBjLCAweDMzLCAweGU1LCAweDY2LCAweDFkLCAweDI4LCAweGQ5LCAweDEwLCAweDFhLCAweDdmLCAweDRmLCAweGVhLCAweDRmLCAweDc4LCAweDZkLCAweGIwLCAweDE0LAorMHhiZiwgMHhjOSwgMHhmZiwgMHgxNywgMHhkNiwgMHg0NywgMHg0ZCwgMHg0YSwgMHhhOCwgMHhmNCwgMHgzOSwgMHg2NywgMHgzZSwgMHhiMSwgMHhlYywgMHg4ZiwgMHhmMSwgMHg3MSwgMHhiZCwgMHhiOCwKKzB4YTcsIDB4NTAsIDB4M2QsIDB4YzcsIDB4ZjcsIDB4YmIsIDB4MDIsIDB4NDAsIDB4MGQsIDB4ODUsIDB4MzIsIDB4NzMsIDB4OWYsIDB4MGEsIDB4MzMsIDB4MmYsIDB4NGIsIDB4YTIsIDB4YmQsIDB4ZDEsCisweGIxLCAweDQyLCAweGYwLCAweDcyLCAweGE4LCAweDdhLCAweGM4LCAweDE1LCAweDM3LCAweDFiLCAweGRlLCAweDc2LCAweDcwLCAweGNlLCAweGZkLCAweDY5LCAweDIwLCAweDAwLCAweDRkLCAweGM5LAorMHg0ZiwgMHgzNSwgMHg2ZiwgMHhkMSwgMHgzNSwgMHhhMSwgMHgwNCwgMHg5NSwgMHgzMCwgMHhlOCwgMHgzYiwgMHhkNSwgMHgwMywgMHg1YSwgMHg1MCwgMHgyMSwgMHg2ZCwgMHhhMCwgMHg4NCwgMHgzOSwKKzB4ZTksIDB4MmUsIDB4MWUsIDB4ZmMsIDB4ZTQsIDB4ODIsIDB4NDMsIDB4MjAsIDB4NDYsIDB4N2QsIDB4MGEsIDB4YjYKK307CisKK2NvbnN0IHVpbnQ4X3QgUFVCTElDX0tFWVtdID0geworMHgzMCwgMHg4MSwgMHg5ZCwgMHgzMCwgMHgwZCwgMHgwNiwgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNSwgMHgwMCwgMHgwMywgMHg4MSwKKzB4OGIsIDB4MDAsIDB4MzAsIDB4ODEsIDB4ODcsIDB4MDIsIDB4ODEsIDB4ODEsIDB4MDAsIDB4OWUsIDB4MDYsIDB4M2UsIDB4NDcsIDB4ODUsIDB4YjIsIDB4MzQsIDB4MzcsIDB4YWEsIDB4ODUsIDB4NDcsCisweGFjLCAweDAzLCAweDI0LCAweDgzLCAweGI1LCAweDljLCAweGE4LCAweDA1LCAweDNhLCAweDI0LCAweDFlLCAweGViLCAweDg5LCAweDAxLCAweGJiLCAweGU5LCAweDliLCAweGIyLCAweGMzLCAweDIyLAorMHhhYywgMHg2OCwgMHhlMywgMHhmMCwgMHg2YywgMHgwMiwgMHhjZSwgMHg2OCwgMHhhNiwgMHhjNCwgMHhkMCwgMHhhNywgMHgwNiwgMHg5MCwgMHg5YywgMHhhYSwgMHgxYiwgMHgwOCwgMHgxZCwgMHg4YiwKKzB4NDMsIDB4OWEsIDB4MzMsIDB4NjcsIDB4NDQsIDB4NmQsIDB4MjEsIDB4YTMsIDB4MWIsIDB4ODgsIDB4OWEsIDB4OTcsIDB4NWUsIDB4NTksIDB4YzQsIDB4MTUsIDB4MGIsIDB4ZDksIDB4MmMsIDB4YmQsCisweDUxLCAweDA3LCAweDYxLCAweDgyLCAweGFkLCAweGMxLCAweGI4LCAweGQ3LCAweGJmLCAweDliLCAweGNmLCAweDdkLCAweDI0LCAweGMyLCAweDYzLCAweGYzLCAweDk3LCAweDE3LCAweGViLCAweGZlLAorMHg2MiwgMHgyNSwgMHhiYSwgMHg1YiwgMHg0ZCwgMHg4YSwgMHhjMiwgMHg3YSwgMHhiZCwgMHg0MywgMHg4YSwgMHg4ZiwgMHhiOCwgMHhmMiwgMHhmMSwgMHhjNSwgMHg2YSwgMHgzMCwgMHhkMywgMHg1MCwKKzB4OGMsIDB4YzgsIDB4OWEsIDB4ZGYsIDB4ZWYsIDB4ZWQsIDB4MzUsIDB4ZTcsIDB4N2EsIDB4NjIsIDB4ZWEsIDB4NzYsIDB4N2MsIDB4YmIsIDB4MDgsIDB4MjYsIDB4YzcsIDB4MDIsIDB4MDEsIDB4MTEKK307CisKK2NvbnN0IHVpbnQ4X3QgQ0VSVFtdID0geworMHgzMCwgMHg4MSwgMHhmZiwgMHgzMCwgMHgyMiwgMHgxOCwgMHgwZiwgMHgzMiwgMHgzMCwgMHgzMSwgMHgzMywgMHgzMSwgMHgzMiwgMHgzMiwgMHgzNiwgMHgzMiwgMHgzMywgMHgzMiwgMHgzMiwgMHgzNSwgMHgzNCwgMHg1YSwgMHgxOCwgMHgwZiwgMHgzMiwgMHgzMCwgMHgzMSwgMHgzMywgMHgzMSwgMHgzMiwgMHgzMiwgMHgzNiwgMHgzMiwgMHgzMywgMHgzMiwgMHgzMiwgMHgzNSwgMHgzNCwgMHg1YSwgMHgzMCwgMHgxMiwgMHgzMCwgMHgxMCwgMHgwNiwgMHgwMywgMHg1NSwgMHgwNCwgMHgyOSwgMHgxMywgMHgwOSwgMHg1NCwgMHg0NSwgMHg1MywgMHg1NCwgMHgyMCwgMHg0ZSwgMHg0MSwgMHg0ZCwgMHg0NSwgMHgzMCwgMHg4MSwgMHg5ZCwgMHgzMCwgMHgwZCwgMHgwNiwgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNSwgMHgwMCwgMHgwMywgMHg4MSwgMHg4YiwgMHgwMCwgMHgzMCwgMHg4MSwgMHg4NywgMHgwMiwgMHg4MSwgMHg4MSwgMHgwMCwgMHg5ZSwgMHgwNiwgMHgzZSwgMHg0NywgMHg4NSwgMHhiMiwgMHgzNCwgMHgzNywgMHhhYSwgMHg4NSwgMHg0NywgMHhhYywgMHgwMywgMHgyNCwgMHg4MywgMHhiNSwgMHg5YywgMHhhOCwgMHgwNSwgMHgzYSwgMHgyNCwgMHgxZSwgMHhlYiwgMHg4OSwgMHgwMSwgMHhiYiwgMHhlOSwgMHg5YiwgMHhiMiwgMHhjMywgMHgyMiwgMHhhYywgMHg2OCwgMHhlMywgMHhmMCwgMHg2YywgMHgwMiwgMHhjZSwgMHg2OCwgMHhhNiwgMHhjNCwgMHhkMCwgMHhhNywgMHgwNiwgMHg5MCwgMHg5YywgMHhhYSwgMHgxYiwgMHgwOCwgMHgxZCwgMHg4YiwgMHg0MywgMHg5YSwgMHgzMywgMHg2NywgMHg0NCwgMHg2ZCwgMHgyMSwgMHhhMywgMHgxYiwgMHg4OCwgMHg5YSwgMHg5NywgMHg1ZSwgMHg1OSwgMHhjNCwgMHgxNSwgMHgwYiwgMHhkOSwgMHgyYywgMHhiZCwgMHg1MSwgMHgwNywgMHg2MSwgMHg4MiwgMHhhZCwgMHhjMSwgMHhiOCwgMHhkNywgMHhiZiwgMHg5YiwgMHhjZiwgMHg3ZCwgMHgyNCwgMHhjMiwgMHg2MywgMHhmMywgMHg5NywgMHgxNywgMHhlYiwgMHhmZSwgMHg2MiwgMHgyNSwgMHhiYSwgMHg1YiwgMHg0ZCwgMHg4YSwgMHhjMiwgMHg3YSwgMHhiZCwgMHg0MywgMHg4YSwgMHg4ZiwgMHhiOCwgMHhmMiwgMHhmMSwgMHhjNSwgMHg2YSwgMHgzMCwgMHhkMywgMHg1MCwgMHg4YywgMHhjOCwgMHg5YSwgMHhkZiwgMHhlZiwgMHhlZCwgMHgzNSwgMHhlNywgMHg3YSwgMHg2MiwgMHhlYSwgMHg3NiwgMHg3YywgMHhiYiwgMHgwOCwgMHgyNiwgMHhjNywgMHgwMiwgMHgwMSwgMHgxMSwgMHgzMCwgMHgyNSwgMHgzMCwgMHgyMywgMHgwNiwgMHgwNiwgMHgyYiwgMHgwNiwgMHgwMSwgMHgwNSwgMHgyMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHhmZiwgMHgwNCwgMHgxNiwgMHgzMCwgMHgxNCwgMHgwNCwgMHgwYywgMHgyZiwgMHg2OCwgMHg2NSwgMHg2YywgMHg2YywgMHg2ZiwgMHgyZiwgMHg2YiwgMHg2OSwgMHg3NCwgMHg3NCwgMHg3OSwgMHgwMiwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMSwgMHgwYQorfTsKKworY29uc3Qgc3RkOjpzdHJpbmcgQ0VSVF9JTkZPID0gIkNlcnRpZmljYXRlIG5hbWU6XG4iCisgICIgIC9cbiIKKyAgIlZhbGlkaXR5OlxuIgorICAiICBOb3RCZWZvcmU6IDIwMTMxMjI2VDIzMjI1NC4wMDAwMDBcbiIKKyAgIiAgTm90QWZ0ZXI6IDIwMTMxMjI2VDIzMjI1NC4wMDAwMDBcbiIKKyAgIlN1YmplY3QgRGVzY3JpcHRpb246XG4iCisgICIgIDIuNS40LjQxOiBURVNUIE5BTUVcbiIKKyAgIlB1YmxpYyBrZXkgYml0czpcbiIKKyAgIk1JR2RNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0R0xBRENCaHdLQmdRQ2VCajVIaGJJME42cUZSNndESklPMW5LZ0ZcbiIKKyAgIk9pUWU2NGtCdSttYnNzTWlyR2pqOEd3Q3ptaW14TkNuQnBDY3Foc0lIWXREbWpOblJHMGhveHVJbXBkZVdjUVZcbiIKKyAgIkM5a3N2VkVIWVlLdHdialh2NXZQZlNUQ1kvT1hGK3YrWWlXNlcwMkt3bnE5UTRxUHVQTHh4V293MDFDTXlKcmZcbiIKKyAgIjcrMDE1M3BpNm5aOHV3Z214d0lCXG4iOworCitCT09TVF9BVVRPX1RFU1RfQ0FTRSAoRW5jb2RlKQoreworICBuZG46OkNlcnRpZmljYXRlIGM7CisKKyAgLy8gdmFsaWRpdHkKKyAgYy5zZXROb3RCZWZvcmUoMTM4ODEwMDE3NDAwMCk7IC8vIDEyLzI2LzIwMTMgQCAxMToyMnBtCisgIGMuc2V0Tm90QWZ0ZXIoMTM4ODEwMDE3NDAwMCk7IC8vIDEyLzI2LzIwMTMgQCAxMToyMnBtCisKKyAgLy8gc3ViamVjdAorICBjLmFkZFN1YmplY3REZXNjcmlwdGlvbihDZXJ0aWZpY2F0ZVN1YmplY3REZXNjcmlwdGlvbigiMi41LjQuNDEiLCAiVEVTVCBOQU1FIikpOworCisgIC8vIHB1YmxpY0tleUluZm8KKyAgbmRuOjpQdWJsaWNLZXkga2V5KFBVQkxJQ19LRVksIHNpemVvZihQVUJMSUNfS0VZKSk7CisgIGMuc2V0UHVibGljS2V5SW5mbyhrZXkpOworCisgIC8vIGV4dGVuc2lvbnMKKyAgQk9PU1RfUkVRVUlSRV9OT19USFJPVyh7CisgICAgc3RkOjpzdHJpbmcgZXh0ZW5zdGlvblZhbHVlOworICAgIFN0cmluZ1Npbmsgc2luayhleHRlbnN0aW9uVmFsdWUpOworICAgIERFUlNlcXVlbmNlRW5jb2RlciBzZXEoc2luayk7CisgICAgeworICAgICAgc3RkOjpzdHJpbmcgbmFtZSgiL2hlbGxvL2tpdHR5Iik7CisgICAgICBERVJFbmNvZGVPY3RldFN0cmluZyhzZXEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5hbWUuY19zdHIoKSksIG5hbWUuc2l6ZSgpKTsKKyAgICAgIC8vIHRydXN0Q2xhc3MKKyAgICAgIERFUkVuY29kZVVuc2lnbmVkPHVpbnQzMl90PihzZXEsIDApOworICAgICAgLy8gdHJ1c3RMZXZlbAorICAgICAgREVSRW5jb2RlVW5zaWduZWQ8dWludDMyX3Q+KHNlcSwgMTApOworICAgIH0KKyAgICBzZXEuTWVzc2FnZUVuZCgpOworICAKKyAgICBjLmFkZEV4dGVuc2lvbihDZXJ0aWZpY2F0ZUV4dGVuc2lvbigiMS4zLjYuMS41LjMyLjEiLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGV4dGVuc3Rpb25WYWx1ZS5jX3N0cigpKSwgZXh0ZW5zdGlvblZhbHVlLnNpemUoKSkpOworICB9KTsKKyAgLy8gUlNBOjpQdWJsaWNLZXkgcDsKKyAgLy8gU3RyaW5nU291cmNlIHNvdXJjZShULCBzaXplb2YoVCksIHRydWUpOworICAvLyBwLkxvYWQoc291cmNlKTsKKworICBCT09TVF9SRVFVSVJFX05PX1RIUk9XKGMuZW5jb2RlKCkpOworICAKKyAgLy8gb2ZzdHJlYW0gb2YoImNlcnQub3V0Iik7CisgIC8vIG9mLndyaXRlKChjb25zdCBjaGFyKiljLmdldENvbnRlbnQoKS52YWx1ZSgpLCBjLmdldENvbnRlbnQoKS52YWx1ZV9zaXplKCkpOworICAKKyAgLy8gY29uc3QgQmxvY2sgJndpcmUgPSBpLndpcmVFbmNvZGUoKTsKKyAgQk9PU1RfUkVRVUlSRV9FUVVBTF9DT0xMRUNUSU9OUyhDRVJULCBDRVJUK3NpemVvZihDRVJUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRDb250ZW50KCkudmFsdWVfYmVnaW4oKSwgYy5nZXRDb250ZW50KCkudmFsdWVfZW5kKCkpOworCisgIHN0ZDo6b3N0cmluZ3N0cmVhbSBvczsKKyAgb3MgPDwgYyA8PCBzdGQ6OmVuZGw7CisgIHN0ZDo6c3RyaW5nIGluZm8ob3Muc3RyKCkpOworICBCT09TVF9SRVFVSVJFX0VRVUFMX0NPTExFQ1RJT05TKENFUlRfSU5GTy5iZWdpbigpLCBDRVJUX0lORk8uZW5kKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5iZWdpbigpLCBpbmZvLmVuZCgpKTsKK30KKworY29uc3QgdW5zaWduZWQgY2hhciBSRUFMX0NFUlRbXSA9IHsKKzB4MzAsIDB4ODIsIDB4MDEsIDB4NjMsIDB4MzAsIDB4MjIsIDB4MTgsIDB4MGYsIDB4MzIsIDB4MzAsIDB4MzEsIDB4MzMsIDB4MzEsIDB4MzEsIDB4MzAsIDB4MzEsIDB4MzEsIDB4MzcsIDB4MzEsIDB4MzEsIDB4MzIsIDB4MzIsIDB4NWEsIDB4MTgsIDB4MGYsIDB4MzIsIDB4MzAsIDB4MzEsIDB4MzQsIDB4MzEsIDB4MzEsIDB4MzAsIDB4MzEsIDB4MzEsIDB4MzcsIDB4MzEsIDB4MzEsIDB4MzIsIDB4MzIsIDB4NWEsIDB4MzAsIDB4MTksIDB4MzAsIDB4MTcsIDB4MDYsIDB4MDMsIDB4NTUsIDB4MDQsIDB4MjksIDB4MTMsIDB4MTAsIDB4NGUsIDB4NDQsIDB4NGUsIDB4MjAsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4NjIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4NTIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4MzAsIDB4ODIsIDB4MDEsIDB4MjAsIDB4MzAsIDB4MGQsIDB4MDYsIDB4MDksIDB4MmEsIDB4ODYsIDB4NDgsIDB4ODYsIDB4ZjcsIDB4MGQsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDUsIDB4MDAsIDB4MDMsIDB4ODIsIDB4MDEsIDB4MGQsIDB4MDAsIDB4MzAsIDB4ODIsIDB4MDEsIDB4MDgsIDB4MDIsIDB4ODIsIDB4MDEsIDB4MDEsIDB4MDAsIDB4ZDMsIDB4YWMsIDB4N2UsIDB4N2EsIDB4NWMsIDB4MzMsIDB4NTgsIDB4MjEsIDB4ZGEsIDB4ZTAsIDB4OGQsIDB4ZGIsIDB4Y2EsIDB4YjYsIDB4MDIsIDB4MzAsIDB4MDIsIDB4MTUsIDB4YzUsIDB4MGEsIDB4NTEsIDB4NTQsIDB4YmIsIDB4OGUsIDB4NWUsIDB4OWQsIDB4MjEsIDB4ZjgsIDB4MTQsIDB4YmUsIDB4ZTQsIDB4NjMsIDB4NjAsIDB4MzEsIDB4NTMsIDB4ZTIsIDB4ZWYsIDB4ZWUsIDB4MzQsIDB4YTMsIDB4OGMsIDB4ZDIsIDB4MjQsIDB4NmYsIDB4YTQsIDB4ODksIDB4NGYsIDB4MDIsIDB4MjAsIDB4N2QsIDB4NjYsIDB4YjYsIDB4M2YsIDB4MTEsIDB4NDAsIDB4MGMsIDB4YzEsIDB4NWYsIDB4ZDgsIDB4NDUsIDB4MjMsIDB4OTUsIDB4NDAsIDB4YzgsIDB4ZTAsIDB4YmMsIDB4OWQsIDB4MmYsIDB4MDMsIDB4ZjEsIDB4ODMsIDB4OWYsIDB4MDcsIDB4MGIsIDB4NzYsIDB4YzksIDB4MTAsIDB4ZDksIDB4M2UsIDB4MGIsIDB4NzUsIDB4MTMsIDB4OTMsIDB4ZTksIDB4YzksIDB4ODUsIDB4MDEsIDB4ODgsIDB4MzYsIDB4MmUsIDB4YWIsIDB4ZmMsIDB4ZTYsIDB4MjQsIDB4MzIsIDB4ZmMsIDB4YzYsIDB4M2MsIDB4NDAsIDB4OTcsIDB4MWEsIDB4Y2MsIDB4Y2QsIDB4NTMsIDB4YWEsIDB4MGYsIDB4ZmIsIDB4YTMsIDB4ZmUsIDB4ZjksIDB4MjQsIDB4NzAsIDB4MTMsIDB4M2YsIDB4NGYsIDB4NWIsIDB4N2QsIDB4NDMsIDB4YWEsIDB4NzUsIDB4MGEsIDB4OTQsIDB4NzIsIDB4YWIsIDB4ZTEsIDB4OGMsIDB4NDUsIDB4YjUsIDB4NzgsIDB4MTAsIDB4MDEsIDB4ZWYsIDB4MWYsIDB4YjMsIDB4MDUsIDB4NmYsIDB4YTYsIDB4YzMsIDB4YWMsIDB4N2YsIDB4NmQsIDB4ZjAsIDB4MzEsIDB4YzQsIDB4ODMsIDB4YjMsIDB4NGYsIDB4NTAsIDB4MjYsIDB4OTIsIDB4NDAsIDB4MWEsIDB4ZGQsIDB4ZWMsIDB4ZmIsIDB4Y2IsIDB4ZWYsIDB4NjMsIDB4ZmUsIDB4NDEsIDB4ZDgsIDB4OGQsIDB4MWYsIDB4ZGMsIDB4ZWMsIDB4ZmMsIDB4NDgsIDB4OTUsIDB4Y2MsIDB4MDksIDB4MWUsIDB4MzAsIDB4NmUsIDB4MjIsIDB4OWUsIDB4MjQsIDB4OTcsIDB4MmUsIDB4ZTYsIDB4MGMsIDB4ZGYsIDB4M2QsIDB4MjAsIDB4MzIsIDB4YWEsIDB4OWMsIDB4YzksIDB4NDUsIDB4MTQsIDB4YWYsIDB4YWEsIDB4ZjUsIDB4MTcsIDB4ZDIsIDB4MDEsIDB4OTgsIDB4MzMsIDB4YmUsIDB4MmEsIDB4OWYsIDB4N2IsIDB4OWQsIDB4OTgsIDB4N2MsIDB4NTQsIDB4MjIsIDB4ZmUsIDB4NzIsIDB4NzIsIDB4MDQsIDB4YzMsIDB4MmMsIDB4YzAsIDB4MTQsIDB4MGIsIDB4YTksIDB4NDAsIDB4N2UsIDB4NDYsIDB4YTEsIDB4NzUsIDB4MTYsIDB4MWEsIDB4MjcsIDB4OWUsIDB4ZjIsIDB4ODIsIDB4OTYsIDB4YzAsIDB4N2QsIDB4YWYsIDB4MTgsIDB4NzUsIDB4ZmIsIDB4YmIsIDB4YWIsIDB4MTYsIDB4NjYsIDB4YzAsIDB4YTksIDB4ZDcsIDB4OTMsIDB4NGMsIDB4NDgsIDB4NmQsIDB4Y2UsIDB4MGIsIDB4ODgsIDB4ZDQsIDB4MjEsIDB4OTMsIDB4ODQsIDB4ODksIDB4NTUsIDB4MDUsIDB4ZDUsIDB4MDIsIDB4MDEsIDB4MTEKK307CisKK2NvbnN0IHN0ZDo6c3RyaW5nIFJFQUxfQ0VSVF9JTkZPID0gIkNlcnRpZmljYXRlIG5hbWU6XG4iCisiICAvdG1wXG4iCisiVmFsaWRpdHk6XG4iCisiICBOb3RCZWZvcmU6IDIwMTMxMTAxVDE3MTEyMi4wMDAwMDBcbiIKKyIgIE5vdEFmdGVyOiAyMDE0MTEwMVQxNzExMjIuMDAwMDAwXG4iCisiU3ViamVjdCBEZXNjcmlwdGlvbjpcbiIKKyIgIDIuNS40LjQxOiBORE4gVGVzdGJlZCBSb290XG4iCisiUHVibGljIGtleSBiaXRzOlxuIgorIk1JSUJJREFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUTBBTUlJQkNBS0NBUUVBMDZ4K2Vsd3pXQ0hhNEkzYnlyWUNcbiIKKyJNQUlWeFFwUlZMdU9YcDBoK0JTKzVHTmdNVlBpNys0MG80elNKRytraVU4Q0lIMW10ajhSUUF6Qlg5aEZJNVZBXG4iCisieU9DOG5TOEQ4WU9mQnd0MnlSRFpQZ3QxRTVQcHlZVUJpRFl1cS96bUpETDh4anhBbHhyTXpWT3FEL3VqL3Zra1xuIgorImNCTS9UMXQ5UTZwMUNwUnlxK0dNUmJWNEVBSHZIN01GYjZiRHJIOXQ4REhFZzdOUFVDYVNRQnJkN1B2TDcyUCtcbiIKKyJRZGlOSDl6cy9FaVZ6QWtlTUc0aW5pU1hMdVlNM3owZ01xcWN5VVVVcjZyMUY5SUJtRE8rS3A5N25aaDhWQ0wrXG4iCisiY25JRXd5ekFGQXVwUUg1R29YVVdHaWVlOG9LV3dIMnZHSFg3dTZzV1pzQ3AxNU5NU0czT0M0alVJWk9FaVZVRlxuIgorIjFRSUJcbiI7CisKK0JPT1NUX0FVVE9fVEVTVF9DQVNFIChEZWNvZGUpCit7CisgIG5kbjo6RGF0YSBkKCIvdG1wIik7CisgIGQuc2V0Q29udGVudChSRUFMX0NFUlQsIHNpemVvZihSRUFMX0NFUlQpKTsKKworICBuZG46OkNlcnRpZmljYXRlIGMoZCk7CisKKyAgc3RkOjpvc3RyaW5nc3RyZWFtIG9zOworICBvcyA8PCBjIDw8IHN0ZDo6ZW5kbDsKKyAgc3RkOjpzdHJpbmcgaW5mbyhvcy5zdHIoKSk7CisgIEJPT1NUX1JFUVVJUkVfRVFVQUxfQ09MTEVDVElPTlMoUkVBTF9DRVJUX0lORk8uYmVnaW4oKSwgUkVBTF9DRVJUX0lORk8uZW5kKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5iZWdpbigpLCBpbmZvLmVuZCgpKTsKK30KKworQk9PU1RfQVVUT19URVNUX1NVSVRFX0VORCgpCmRpZmYgLS1naXQgYS90ZXN0c19ib29zdC90ZXN0LWVuY29kZS1kZWNvZGUtZGF0YS5jcHAgYi90ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtZGF0YS5jcHAKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzX2Jvb3N0L3Rlc3QtZW5jb2RlLWRlY29kZS1kYXRhLmNwcApyZW5hbWUgdG8gdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWRhdGEuY3BwCmRpZmYgLS1naXQgYS90ZXN0c19ib29zdC90ZXN0LWVuY29kZS1kZWNvZGUtZm9yd2FyZGluZy1lbnRyeS5jcHAgYi90ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtZm9yd2FyZGluZy1lbnRyeS5jcHAKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzX2Jvb3N0L3Rlc3QtZW5jb2RlLWRlY29kZS1mb3J3YXJkaW5nLWVudHJ5LmNwcApyZW5hbWUgdG8gdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWZvcndhcmRpbmctZW50cnkuY3BwCmRpZmYgLS1naXQgYS90ZXN0c19ib29zdC90ZXN0LWVuY29kZS1kZWNvZGUtaW50ZXJlc3QuY3BwIGIvdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWludGVyZXN0LmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHNfYm9vc3QvdGVzdC1lbmNvZGUtZGVjb2RlLWludGVyZXN0LmNwcApyZW5hbWUgdG8gdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWludGVyZXN0LmNwcApkaWZmIC0tZ2l0IGEvdGVzdHNfYm9vc3QvdGVzdC1mYWNlcy5jcHAgYi90ZXN0cy90ZXN0LWZhY2VzLmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHNfYm9vc3QvdGVzdC1mYWNlcy5jcHAKcmVuYW1lIHRvIHRlc3RzL3Rlc3QtZmFjZXMuY3BwCmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0LWdldC1hc3luYy5jcHAgYi90ZXN0cy90ZXN0LWdldC1hc3luYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMDRjZDguLjAwMDAwMDAKLS0tIGEvdGVzdHMvdGVzdC1nZXQtYXN5bmMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvZmFjZS5ocHA+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2UgbmRuOwotdXNpbmcgbmFtZXNwYWNlIG5kbjo6ZnVuY19saWI7Ci0jaWYgTkROX0NQUF9IQVZFX1NURF9GVU5DVElPTgotLy8gSW4gdGhlIHN0ZCBsaWJyYXJ5LCB0aGUgcGxhY2Vob2xkZXJzIGFyZSBpbiBhIGRpZmZlcmVudCBuYW1lc3BhY2UgdGhhbiBib29zdC4KLXVzaW5nIG5hbWVzcGFjZSBmdW5jX2xpYjo6cGxhY2Vob2xkZXJzOwotI2VuZGlmCi0KLWNsYXNzIENvdW50ZXIKLXsKLXB1YmxpYzoKLSAgQ291bnRlcigpIHsKLSAgICBjYWxsYmFja0NvdW50XyA9IDA7Ci0gIH0KLQotICB2b2lkIG9uRGF0YShjb25zdCBwdHJfbGliOjpzaGFyZWRfcHRyPGNvbnN0IEludGVyZXN0PiYgaW50ZXJlc3QsIGNvbnN0IHB0cl9saWI6OnNoYXJlZF9wdHI8RGF0YT4mIGRhdGEpCi0gIHsKLSAgICArK2NhbGxiYWNrQ291bnRfOwotICAgIGNvdXQgPDwgIkdvdCBkYXRhIHBhY2tldCB3aXRoIG5hbWUgIiA8PCBkYXRhLT5nZXROYW1lKCkudG9VcmkoKSA8PCBlbmRsOwotICAgIC8vIGNvdXQgPDwgc3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEtPmdldENvbnRlbnQoKS52YWx1ZSgpKSwgZGF0YS0+Z2V0Q29udGVudCgpLnZhbHVlX3NpemUoKSkgPDwgZW5kbDsKLSAgfQotCi0gIHZvaWQgb25UaW1lb3V0KGNvbnN0IHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3QgSW50ZXJlc3Q+JiBpbnRlcmVzdCkKLSAgewotICAgICsrY2FsbGJhY2tDb3VudF87Ci0gICAgY291dCA8PCAiVGltZSBvdXQgZm9yIGludGVyZXN0ICIgPDwgaW50ZXJlc3QtPmdldE5hbWUoKS50b1VyaSgpIDw8IGVuZGw7Ci0gIH0KLQotICBpbnQgY2FsbGJhY2tDb3VudF87Ci19OwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gIHRyeSB7Ci0gICAgRmFjZSBmYWNlOwotCi0gICAgLy8gQ291bnRlciBob2xkcyBkYXRhIHVzZWQgYnkgdGhlIGNhbGxiYWNrcy4KLSAgICBDb3VudGVyIGNvdW50ZXI7Ci0KLSAgICBOYW1lIG5hbWUxKCIvJUMxLk0uUy5sb2NhbGhvc3QvJUMxLk0uU1JWL25kbmQvS0VZIik7Ci0gICAgY291dCA8PCAiRXhwcmVzcyBuYW1lICIgPDwgbmFtZTEudG9VcmkoKSA8PCBlbmRsOwotICAgIC8vIFVzZSBiaW5kIHRvIHBhc3MgdGhlIGNvdW50ZXIgb2JqZWN0IHRvIHRoZSBjYWxsYmFja3MuCi0gICAgZmFjZS5leHByZXNzSW50ZXJlc3QobmFtZTEsIGJpbmQoJkNvdW50ZXI6Om9uRGF0YSwgJmNvdW50ZXIsIF8xLCBfMiksIGJpbmQoJkNvdW50ZXI6Om9uVGltZW91dCwgJmNvdW50ZXIsIF8xKSk7Ci0KLSAgICBOYW1lIG5hbWUyKCIvbmRueC9waW5nIik7Ci0gICAgY291dCA8PCAiRXhwcmVzcyBuYW1lICIgPDwgbmFtZTIudG9VcmkoKSA8PCBlbmRsOwotICAgIGZhY2UuZXhwcmVzc0ludGVyZXN0KG5hbWUyLCBiaW5kKCZDb3VudGVyOjpvbkRhdGEsICZjb3VudGVyLCBfMSwgXzIpLCBiaW5kKCZDb3VudGVyOjpvblRpbWVvdXQsICZjb3VudGVyLCBfMSkpOwotCi0gICAgTmFtZSBuYW1lMygiL3Rlc3QvdGltZW91dCIpOwotICAgIGNvdXQgPDwgIkV4cHJlc3MgbmFtZSAiIDw8IG5hbWUzLnRvVXJpKCkgPDwgZW5kbDsKLSAgICBmYWNlLmV4cHJlc3NJbnRlcmVzdChuYW1lMywgYmluZCgmQ291bnRlcjo6b25EYXRhLCAmY291bnRlciwgXzEsIF8yKSwgYmluZCgmQ291bnRlcjo6b25UaW1lb3V0LCAmY291bnRlciwgXzEpKTsKLQotICAgIC8vIFRoZSBtYWluIGV2ZW50IGxvb3AuCi0gICAgZmFjZS5wcm9jZXNzRXZlbnRzKCk7Ci0KLSAgfSBjYXRjaCAoc3RkOjpleGNlcHRpb24mIGUpIHsKLSAgICBjb3V0IDw8ICJleGNlcHRpb246ICIgPDwgZS53aGF0KCkgPDwgZW5kbDsKLSAgfQotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3QtcHVibGlzaC1hc3luYy5jcHAgYi90ZXN0cy90ZXN0LXB1Ymxpc2gtYXN5bmMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmE2ODBmLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL3Rlc3QtcHVibGlzaC1hc3luYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2ZhY2UuaHBwPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L3NlY3VyaXR5L2tleS1jaGFpbi5ocHA+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2UgbmRuOwotCi1zdGF0aWMgdWludDhfdCBERUZBVUxUX1BVQkxJQ19LRVlfREVSW10gPSB7Ci0weDMwLCAweDgxLCAweDlGLCAweDMwLCAweDBELCAweDA2LCAweDA5LCAweDJBLCAweDg2LCAweDQ4LCAweDg2LCAweEY3LCAweDBELCAweDAxLCAweDAxLCAweDAxLCAweDA1LCAweDAwLCAweDAzLCAweDgxLAotMHg4RCwgMHgwMCwgMHgzMCwgMHg4MSwgMHg4OSwgMHgwMiwgMHg4MSwgMHg4MSwgMHgwMCwgMHhFMSwgMHg3RCwgMHgzMCwgMHhBNywgMHhEOCwgMHgyOCwgMHhBQiwgMHgxQiwgMHg4NCwgMHgwQiwgMHgxNywKLTB4NTQsIDB4MkQsIDB4Q0EsIDB4RjYsIDB4MjAsIDB4N0EsIDB4RkQsIDB4MjIsIDB4MUUsIDB4MDgsIDB4NkIsIDB4MkEsIDB4NjAsIDB4RDEsIDB4NkMsIDB4QjcsIDB4RjUsIDB4NDQsIDB4NDgsIDB4QkEsCi0weDlGLCAweDNGLCAweDA4LCAweEJDLCAweEQwLCAweDk5LCAweERCLCAweDIxLCAweERELCAweDE2LCAweDJBLCAweDc3LCAweDlFLCAweDYxLCAweEFBLCAweDg5LCAweEVFLCAweEU1LCAweDU0LCAweEQzLAotMHhBNCwgMHg3RCwgMHhFMiwgMHgzMCwgMHhCQywgMHg3QSwgMHhDNSwgMHg5MCwgMHhENSwgMHgyNCwgMHgwNiwgMHg3QywgMHgzOCwgMHg5OCwgMHhCQiwgMHhBNiwgMHhGNSwgMHhEQywgMHg0MywgMHg2MCwKLTB4QjgsIDB4NDUsIDB4RUQsIDB4QTQsIDB4OEMsIDB4QkQsIDB4OUMsIDB4RjEsIDB4MjYsIDB4QTcsIDB4MjMsIDB4NDQsIDB4NUYsIDB4MEUsIDB4MTksIDB4NTIsIDB4RDcsIDB4MzIsIDB4NUEsIDB4NzUsCi0weEZBLCAweEY1LCAweDU2LCAweDE0LCAweDRGLCAweDlBLCAweDk4LCAweEFGLCAweDcxLCAweDg2LCAweEIwLCAweDI3LCAweDg2LCAweDg1LCAweEI4LCAweEUyLCAweEMwLCAweDhCLCAweEVBLCAweDg3LAotMHgxNywgMHgxQiwgMHg0RCwgMHhFRSwgMHg1OCwgMHg1QywgMHgxOCwgMHgyOCwgMHgyOSwgMHg1QiwgMHg1MywgMHg5NSwgMHhFQiwgMHg0QSwgMHgxNywgMHg3NywgMHg5RiwgMHgwMiwgMHgwMywgMHgwMSwKLTB4MDAsIDAxICAKLX07Ci0KLXN0YXRpYyB1aW50OF90IERFRkFVTFRfUFJJVkFURV9LRVlfREVSW10gPSB7Ci0weDMwLCAweDgyLCAweDAyLCAweDVkLCAweDAyLCAweDAxLCAweDAwLCAweDAyLCAweDgxLCAweDgxLCAweDAwLCAweGUxLCAweDdkLCAweDMwLCAweGE3LCAweGQ4LCAweDI4LCAweGFiLCAweDFiLCAweDg0LAotMHgwYiwgMHgxNywgMHg1NCwgMHgyZCwgMHhjYSwgMHhmNiwgMHgyMCwgMHg3YSwgMHhmZCwgMHgyMiwgMHgxZSwgMHgwOCwgMHg2YiwgMHgyYSwgMHg2MCwgMHhkMSwgMHg2YywgMHhiNywgMHhmNSwgMHg0NCwKLTB4NDgsIDB4YmEsIDB4OWYsIDB4M2YsIDB4MDgsIDB4YmMsIDB4ZDAsIDB4OTksIDB4ZGIsIDB4MjEsIDB4ZGQsIDB4MTYsIDB4MmEsIDB4NzcsIDB4OWUsIDB4NjEsIDB4YWEsIDB4ODksIDB4ZWUsIDB4ZTUsCi0weDU0LCAweGQzLCAweGE0LCAweDdkLCAweGUyLCAweDMwLCAweGJjLCAweDdhLCAweGM1LCAweDkwLCAweGQ1LCAweDI0LCAweDA2LCAweDdjLCAweDM4LCAweDk4LCAweGJiLCAweGE2LCAweGY1LCAweGRjLAotMHg0MywgMHg2MCwgMHhiOCwgMHg0NSwgMHhlZCwgMHhhNCwgMHg4YywgMHhiZCwgMHg5YywgMHhmMSwgMHgyNiwgMHhhNywgMHgyMywgMHg0NCwgMHg1ZiwgMHgwZSwgMHgxOSwgMHg1MiwgMHhkNywgMHgzMiwKLTB4NWEsIDB4NzUsIDB4ZmEsIDB4ZjUsIDB4NTYsIDB4MTQsIDB4NGYsIDB4OWEsIDB4OTgsIDB4YWYsIDB4NzEsIDB4ODYsIDB4YjAsIDB4MjcsIDB4ODYsIDB4ODUsIDB4YjgsIDB4ZTIsIDB4YzAsIDB4OGIsCi0weGVhLCAweDg3LCAweDE3LCAweDFiLCAweDRkLCAweGVlLCAweDU4LCAweDVjLCAweDE4LCAweDI4LCAweDI5LCAweDViLCAweDUzLCAweDk1LCAweGViLCAweDRhLCAweDE3LCAweDc3LCAweDlmLCAweDAyLAotMHgwMywgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMiwgMHg4MSwgMHg4MCwgMHgxYSwgMHg0YiwgMHhmYSwgMHg0ZiwgMHhhOCwgMHhjMiwgMHhkZCwgMHg2OSwgMHhhMSwgMHgxNSwgMHg5NiwgMHgwYiwgMHhlOCwKLTB4MjcsIDB4NDIsIDB4NWEsIDB4ZjksIDB4NWMsIDB4ZWEsIDB4MGMsIDB4YWMsIDB4OTgsIDB4YWEsIDB4ZTEsIDB4OGQsIDB4YWEsIDB4ZWIsIDB4MmQsIDB4M2MsIDB4NjAsIDB4NmEsIDB4ZmIsIDB4NDUsCi0weDYzLCAweGE0LCAweDc5LCAweDgzLCAweDY3LCAweGVkLCAweGU0LCAweDE1LCAweGMwLCAweGIwLCAweDIwLCAweDk1LCAweDZkLCAweDQ5LCAweDE2LCAweGM2LCAweDQyLCAweDA1LCAweDQ4LCAweGFhLAotMHhiMSwgMHhhNSwgMHg1MywgMHg2NSwgMHhkMiwgMHgwMiwgMHg5OSwgMHgwOCwgMHhkMSwgMHg4NCwgMHhjYywgMHhmMCwgMHhjZCwgMHhlYSwgMHg2MSwgMHhjOSwgMHgzOSwgMHgwMiwgMHgzZiwgMHg4NywKLTB4NGEsIDB4ZTUsIDB4YzQsIDB4ZDIsIDB4MDcsIDB4MDIsIDB4ZTEsIDB4OWYsIDB4YTAsIDB4MDYsIDB4YzIsIDB4Y2MsIDB4MDIsIDB4ZTcsIDB4YWEsIDB4NmMsIDB4OTksIDB4OGEsIDB4ZjgsIDB4NDksCi0weDAwLCAweGYxLCAweGEyLCAweDhjLCAweDBjLCAweDhhLCAweGI5LCAweDRmLCAweDZkLCAweDczLCAweDNiLCAweDJjLCAweGI3LCAweDlmLCAweDhhLCAweGE2LCAweDdmLCAweDliLCAweDlmLCAweGI3LAotMHhhMSwgMHhjYywgMHg3NCwgMHgyZSwgMHg4ZiwgMHhiOCwgMHhiMCwgMHgyNiwgMHg4OSwgMHhkMiwgMHhlNSwgMHg2NiwgMHhlOCwgMHg4ZSwgMHhhMSwgMHgwMiwgMHg0MSwgMHgwMCwgMHhmYywgMHhlNywKLTB4NTIsIDB4YmMsIDB4NGUsIDB4OTUsIDB4YjYsIDB4MWEsIDB4YjQsIDB4NjIsIDB4Y2MsIDB4ZDgsIDB4MDYsIDB4ZTEsIDB4ZGMsIDB4N2EsIDB4YTIsIDB4YjYsIDB4NzEsIDB4MDEsIDB4YWEsIDB4MjcsCi0weGZjLCAweDk5LCAweGU1LCAweGYyLCAweDU0LCAweGJiLCAweGIyLCAweDg1LCAweGUxLCAweDk2LCAweDU0LCAweDJkLCAweGNiLCAweGJhLCAweDg2LCAweGZhLCAweDgwLCAweGRmLCAweGNmLCAweDM5LAotMHhlNiwgMHg3NCwgMHhjYiwgMHgyMiwgMHhjZSwgMHg3MCwgMHhhYSwgMHgxMCwgMHgwMCwgMHg3MywgMHgxZCwgMHg0NSwgMHgwYSwgMHgzOSwgMHg1MSwgMHg4NCwgMHhmNSwgMHgxNSwgMHg4ZiwgMHgzNywKLTB4NzYsIDB4OTEsIDB4MDIsIDB4NDEsIDB4MDAsIDB4ZTQsIDB4M2YsIDB4ZjAsIDB4ZjQsIDB4ZGUsIDB4NzksIDB4NzcsIDB4NDgsIDB4OWIsIDB4OWMsIDB4MjgsIDB4NDUsIDB4MjYsIDB4NTcsIDB4M2MsCi0weDcxLCAweDQwLCAweDI4LCAweDZhLCAweGExLCAweGZlLCAweGMzLCAweGU1LCAweDM3LCAweGExLCAweDAzLCAweGY2LCAweDJkLCAweGJlLCAweDgwLCAweDY0LCAweDcyLCAweDY5LCAweDJlLCAweDliLAotMHg0ZCwgMHhlMywgMHgyZSwgMHgxYiwgMHhmZSwgMHhlNywgMHhmOSwgMHg3NywgMHg4YywgMHgxOCwgMHg1MywgMHg5ZiwgMHhlMiwgMHhmZSwgMHgwMCwgMHhiYiwgMHg0OSwgMHgyMCwgMHg0NywgMHhkZiwKLTB4MDEsIDB4NjEsIDB4ODcsIDB4ZDYsIDB4ZTMsIDB4NDQsIDB4YjUsIDB4MDMsIDB4MmYsIDB4MDIsIDB4NDAsIDB4NTQsIDB4ZWMsIDB4N2MsIDB4YmMsIDB4ZGQsIDB4MGEsIDB4YWEsIDB4ZGUsIDB4ZTYsCi0weGM5LCAweGYyLCAweDhkLCAweDZjLCAweDJhLCAweDM1LCAweGY2LCAweDNjLCAweDYzLCAweDU1LCAweDI5LCAweDQwLCAweGYxLCAweDMyLCAweDgyLCAweDlmLCAweDUzLCAweGIzLCAweDllLCAweDVmLAotMHhjMSwgMHg1MywgMHg1MiwgMHgzZSwgMHhhYywgMHgyZSwgMHgyOCwgMHg1MSwgMHhhMSwgMHgxNiwgMHhkYiwgMHg5MCwgMHhlMywgMHg5OSwgMHg3ZSwgMHg4OCwgMHhhNCwgMHgwNCwgMHg3YywgMHg5MiwKLTB4YWUsIDB4ZDIsIDB4ZTcsIDB4ZDQsIDB4ZTEsIDB4NTUsIDB4MjAsIDB4OTAsIDB4M2UsIDB4M2MsIDB4NmEsIDB4NjMsIDB4ZjAsIDB4MzQsIDB4ZjEsIDB4MDIsIDB4NDEsIDB4MDAsIDB4ODQsIDB4NWEsCi0weDE3LCAweDZjLCAweGM2LCAweDNjLCAweDg0LCAweGQwLCAweDkzLCAweDdhLCAweGZmLCAweDU2LCAweGU5LCAweDllLCAweDk4LCAweDJiLCAweGNiLCAweDVhLCAweDI0LCAweDRhLCAweGZmLCAweDIxLAotMHhiNCwgMHg5ZSwgMHg4NywgMHgzZCwgMHg3NiwgMHhkOCwgMHg5YiwgMHhhOCwgMHg3MywgMHg5NiwgMHg2YywgMHgyYiwgMHg1YywgMHg1ZSwgMHhkMywgMHhhNiwgMHhmZiwgMHgxMCwgMHhkNiwgMHg4ZSwKLTB4YWYsIDB4YTUsIDB4OGEsIDB4Y2QsIDB4YTIsIDB4ZGUsIDB4Y2IsIDB4MGUsIDB4YmQsIDB4OGEsIDB4ZWYsIDB4YWUsIDB4ZmQsIDB4M2YsIDB4MWQsIDB4YzAsIDB4ZDgsIDB4ZjgsIDB4M2IsIDB4ZjUsCi0weDAyLCAweDdkLCAweDAyLCAweDQxLCAweDAwLCAweDhiLCAweDI2LCAweGQzLCAweDJjLCAweDdkLCAweDI4LCAweDM4LCAweDkyLCAweGYxLCAweGJmLCAweDE1LCAweDE2LCAweDM5LCAweDUwLCAweGM4LAotMHg2ZCwgMHgzMiwgMHhlYywgMHgyOCwgMHhmMiwgMHg4YiwgMHhkOCwgMHg3MCwgMHhjNSwgMHhlZCwgMHhlMSwgMHg3YiwgMHhmZiwgMHgyZCwgMHg2NiwgMHg4YywgMHg4NiwgMHg3NywgMHg0MywgMHhlYiwKLTB4YjYsIDB4ZjYsIDB4NTAsIDB4NjYsIDB4YjAsIDB4NDAsIDB4MjQsIDB4NmEsIDB4YWYsIDB4OTgsIDB4MjEsIDB4NDUsIDB4MzAsIDB4MDEsIDB4NTksIDB4ZDAsIDB4YzMsIDB4ZmMsIDB4N2IsIDB4YWUsCi0weDMwLCAweDE4LCAweGViLCAweDkwLCAweGZiLCAweDE3LCAweGQzLCAweGNlLCAweGI1Ci19OwotCi1jbGFzcyBFY2hvIHsKLXB1YmxpYzoKLSAgRWNobyhLZXlDaGFpbkltcGw8U2VjUHVibGljSW5mb01lbW9yeSwgU2VjVHBtTWVtb3J5PiAma2V5Q2hhaW4sIEZhY2UgJmZhY2UpCi0gICAgOiBrZXlDaGFpbl8oa2V5Q2hhaW4pCi0gICAgLCBmYWNlXyhmYWNlKQotICAgICwgcmVzcG9uc2VDb3VudF8oMCkKLSAgeyAKLSAgfQotICAKLSAgLy8gb25JbnRlcmVzdC4KLSAgdm9pZCBvcGVyYXRvcigpCi0gICAgIChjb25zdCBwdHJfbGliOjpzaGFyZWRfcHRyPGNvbnN0IE5hbWU+JiBwcmVmaXgsIGNvbnN0IHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3QgSW50ZXJlc3Q+JiBpbnRlcmVzdCkgCi0gIHsKLSAgICArK3Jlc3BvbnNlQ291bnRfOwotICAgIAotICAgIC8vIE1ha2UgYW5kIHNpZ24gYSBEYXRhIHBhY2tldC4KLSAgICBEYXRhIGRhdGEoaW50ZXJlc3QtPmdldE5hbWUoKSk7Ci0gICAgc3RyaW5nIGNvbnRlbnQoc3RyaW5nKCJFY2hvICIpICsgaW50ZXJlc3QtPmdldE5hbWUoKS50b1VyaSgpKTsKLSAgICBkYXRhLnNldEZyZXNobmVzc1BlcmlvZCgxMDAwKTsKLSAgICBkYXRhLnNldENvbnRlbnQoKGNvbnN0IHVpbnQ4X3QgKikmY29udGVudFswXSwgY29udGVudC5zaXplKCkpOwotCi0gICAga2V5Q2hhaW5fLnNpZ24oZGF0YSk7Ci0KLSAgICAvLyBQdXQgZGF0YSBvbiB3aXJlCi0gICAgZmFjZV8ucHV0KGRhdGEpOwotCi0gICAgLy8gVW5yZWdpc3RlciBwcmVmaXggdG8gZW5zdXJlIHRoYXQgdGhlIHByb2Nlc3NpbmcgdGhyZWFkIGZpbmlzaGVzIGFmdGVyIERhdGEKLSAgICAvLyBwYWNrZXQgaXMgc2VuZCBvdXQgdG8gdGhlIGZvcndhcmRlcgotICAgIGZhY2VfLnVuc2V0SW50ZXJlc3RGaWx0ZXIoaWRfKTsKLSAgfQotICAKLSAgLy8gb25SZWdpc3RlckZhaWxlZC4KLSAgdm9pZCBvcGVyYXRvcigpKGNvbnN0IHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3QgTmFtZT4mIHByZWZpeCkKLSAgewotICAgICsrcmVzcG9uc2VDb3VudF87Ci0gICAgY291dCA8PCAiUmVnaXN0ZXIgZmFpbGVkIGZvciBwcmVmaXggIiA8PCBwcmVmaXgtPnRvVXJpKCkgPDwgZW5kbDsKLSAgfQotCi0gIEtleUNoYWluSW1wbDxTZWNQdWJsaWNJbmZvTWVtb3J5LCBTZWNUcG1NZW1vcnk+ICZrZXlDaGFpbl87Ci0gIEZhY2UgJmZhY2VfOwotICBpbnQgcmVzcG9uc2VDb3VudF87Ci0KLSAgY29uc3QgUmVnaXN0ZXJlZFByZWZpeElkICppZF87Ci19OwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gIHRyeSB7Ci0gICAgRmFjZSBmYWNlOwotICAgICAgICAKLSAgICBLZXlDaGFpbkltcGw8U2VjUHVibGljSW5mb01lbW9yeSwgU2VjVHBtTWVtb3J5PiBrZXlDaGFpbjsKLQotICAgIE5hbWUga2V5TmFtZSgiL3Rlc3RuYW1lL2Rzay0xMjMiKTsKLQotICAgIC8vIEluaXRpYWxpemUgdGhlIHN0b3JhZ2UuCi0gICAga2V5Q2hhaW4uYWRkUHVibGljS2V5KGtleU5hbWUsIEtFWV9UWVBFX1JTQSwKLQkJCQkgIFB1YmxpY0tleShERUZBVUxUX1BVQkxJQ19LRVlfREVSLCBzaXplb2YoREVGQVVMVF9QVUJMSUNfS0VZX0RFUikpKTsKLQotICAgIGtleUNoYWluLnNldEtleVBhaXJGb3JLZXlOYW1lKGtleU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfUFVCTElDX0tFWV9ERVIsIHNpemVvZihERUZBVUxUX1BVQkxJQ19LRVlfREVSKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVF9QUklWQVRFX0tFWV9ERVIsIHNpemVvZihERUZBVUxUX1BSSVZBVEVfS0VZX0RFUikpOwotCi0gICAga2V5Q2hhaW4uYWRkQ2VydGlmaWNhdGVBc0tleURlZmF1bHQoKmtleUNoYWluLnNlbGZTaWduKGtleU5hbWUpKTsKLSAgICAKLSAgIAotICAgIEVjaG8gZWNobyhrZXlDaGFpbiwgZmFjZSk7Ci0gICAgTmFtZSBwcmVmaXgoIi90ZXN0ZWNobyIpOwotICAgIGNvdXQgPDwgIlJlZ2lzdGVyIHByZWZpeCAgIiA8PCBwcmVmaXgudG9VcmkoKSA8PCBlbmRsOwotICAgIGVjaG8uaWRfID0gZmFjZS5zZXRJbnRlcmVzdEZpbHRlcihwcmVmaXgsIGZ1bmNfbGliOjpyZWYoZWNobyksIGZ1bmNfbGliOjpyZWYoZWNobykpOwotICAgIAotICAgIGZhY2UucHJvY2Vzc0V2ZW50cygpOwotICB9IGNhdGNoIChzdGQ6OmV4Y2VwdGlvbiYgZSkgewotICAgIGNvdXQgPDwgImV4Y2VwdGlvbjogIiA8PCBlLndoYXQoKSA8PCBlbmRsOwotICB9Ci0gIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdC1zZWMtdHBtLWZpbGUuY3BwIGIvdGVzdHMvdGVzdC1zZWMtdHBtLWZpbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NGE4NGIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy90ZXN0LXNlYy10cG0tZmlsZS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgorICogQGF1dGhvcjogWWluZ2RpIFl1IDx5aW5nZGkwQGNzLnVjbGEuZWR1PgorICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgorICovCisKKyNpZiBfX2NsYW5nX18KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3RhdXRvbG9naWNhbC1jb21wYXJlIgorLy8gI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKy8vICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Jlb3JkZXIiCisvLyAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCisvLyAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24iCisvLyAjZWxpZiBfX0dOVUNfXworLy8gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Jlb3JkZXIiCisvLyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXZhcmlhYmxlIgorLy8gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKKyNlbmRpZgorCisjaW5jbHVkZSA8Ym9vc3QvdGVzdC91bml0X3Rlc3QuaHBwPgorCisjaW5jbHVkZSA8bmRuLWNwcC1kZXYvc2VjdXJpdHkva2V5LWNoYWluLmhwcD4KKyNpbmNsdWRlIDxjcnlwdG9wcC9yc2EuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKK3VzaW5nIG5hbWVzcGFjZSBuZG47CisKKworQk9PU1RfQVVUT19URVNUX1NVSVRFKFRlc3RTZWNUcG1GaWxlKQorCitCT09TVF9BVVRPX1RFU1RfQ0FTRSAoU2lnblZlcmlmeSkKK3sKKyAgU2VjVHBtRmlsZSB0cG07CisKKyAgTmFtZSBrZXlOYW1lKCIvdG1wL2tzay0xMjM0NTYiKTsKKyAgdHJ5IHsKKyAgICB0cG0uZ2VuZXJhdGVLZXlQYWlySW5UcG0oa2V5TmFtZSwgS0VZX1RZUEVfUlNBLCAyMDQ4KTsKKyAgfQorICBjYXRjaChjb25zdCBTZWNUcG06OkVycm9yJikgeworICB9CisgIAorICBEYXRhIGRhdGEoIi90bXAvdGVzdC8xIik7CisgIGNvbnN0IHVpbnQ4X3QgY29udGVudFtdID0gezB4MDEsIDB4MDIsIDB4MDMsIDB4MDR9OworCisgIEJsb2NrIHNpZ0Jsb2NrID0gdHBtLnNpZ25JblRwbShjb250ZW50LCBzaXplb2YoY29udGVudCksIGtleU5hbWUsIERJR0VTVF9BTEdPUklUSE1fU0hBMjU2KTsKKyAgcHRyX2xpYjo6c2hhcmVkX3B0cjxQdWJsaWNLZXk+IHB1YmtleVB0ciA9IHRwbS5nZXRQdWJsaWNLZXlGcm9tVHBtKGtleU5hbWUpOworCisgIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ3J5cHRvUFA7CisgICAgCisgICAgUlNBOjpQdWJsaWNLZXkgcHVibGljS2V5OworICAgIEJ5dGVRdWV1ZSBxdWV1ZTsKKyAgICBxdWV1ZS5QdXQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBieXRlKj4ocHVia2V5UHRyLT5nZXQoKS5idWYoKSksIHB1YmtleVB0ci0+Z2V0KCkuc2l6ZSgpKTsKKyAgICBwdWJsaWNLZXkuTG9hZChxdWV1ZSk7CisKKyAgICBSU0FTUzxQS0NTMXYxNSwgU0hBMjU2Pjo6VmVyaWZpZXIgdmVyaWZpZXIgKHB1YmxpY0tleSk7CisgICAgYm9vbCByZXN1bHQgPSB2ZXJpZmllci5WZXJpZnlNZXNzYWdlKGNvbnRlbnQsIHNpemVvZihjb250ZW50KSwKKwkJCQkgIHNpZ0Jsb2NrLnZhbHVlKCksIHNpZ0Jsb2NrLnZhbHVlX3NpemUoKSk7CisgIAorICAgIEJPT1NUX1JFUVVJUkVfRVFVQUwocmVzdWx0LCB0cnVlKTsKKyAgfQorCisgIC8vV2Ugc2hvdWxkIHJlbW92ZSB0aGUgdGVtcG9yYXJ5IHRlc3Qga2V5LCB0aGlzIHNob3VsZCBiZSBmaXhlZCBpbiBhIGxhdGVyIGNvbW1pdCB3aGljaCB3aWxsIGFkZCBkZWxldGUgb3BlcmF0aW9uIGluIFNlY1RwbS4KK30KKworQk9PU1RfQVVUT19URVNUX1NVSVRFX0VORCgpCmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0LXRpbWUuY3BwIGIvdGVzdHMvdGVzdC10aW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzc3ZmJkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGVzdC10aW1lLmNwcApAQCAtMCwwICsxLDIzIEBACisvKioKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCisgKi8KKworI2luY2x1ZGUgPGJvb3N0L3Rlc3QvdW5pdF90ZXN0LmhwcD4KKworI2luY2x1ZGUgPC4uL3NyYy91dGlsL3RpbWUuaHBwPgorCitCT09TVF9BVVRPX1RFU1RfU1VJVEUoVGVzdFRpbWUpCisKK0JPT1NUX0FVVE9fVEVTVF9DQVNFIChTaW1wbGUpCit7CisgIG5kbjo6TWlsbGlzZWNvbmRzU2luY2UxOTcwIHZhbHVlID0gbmRuOjpnZXROb3dNaWxsaXNlY29uZHMoKTsKKyAgQk9PU1RfQ0hFQ0tfR1QodmFsdWUsIDEzOTA5NjY5NjcwMzIpOworCisgIEJPT1NUX0NIRUNLX0VRVUFMKG5kbjo6dG9Jc29TdHJpbmcoMTM5MDk2Njk2NzAzMiksICIyMDE0MDEyOVQwMzQyNDcuMDMyMDAwIik7CisgIEJPT1NUX0NIRUNLX0VRVUFMKG5kbjo6ZnJvbUlzb1N0cmluZygiMjAxNDAxMjlUMDM0MjQ3LjAzMjAwMCIpLCAxMzkwOTY2OTY3MDMyKTsKKworICBCT09TVF9DSEVDS19FUVVBTChuZG46OmZyb21Jc29TdHJpbmcoIjIwMTQwMTI5VDAzNDI0Ny4wMzIwMDBaIiksIDEzOTA5NjY5NjcwMzIpOworfQorCitCT09TVF9BVVRPX1RFU1RfU1VJVEVfRU5EKCkKZGlmZiAtLWdpdCBhL3Rlc3RzL3dzY3JpcHQgYi90ZXN0cy93c2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2M2MwMzEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy93c2NyaXB0CkBAIC0wLDAgKzEsMTIgQEAKKyMgLSotIE1vZGU6IHB5dGhvbjsgcHktaW5kZW50LW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjb2Rpbmc6IHV0Zi04OyAtKi0KKwordG9wID0gJy4uJworCitkZWYgYnVpbGQoYmxkKToKKyAgICB1bml0dGVzdHMgPSBibGQucHJvZ3JhbSAoCisgICAgICAgIHRhcmdldD0idW5pdC10ZXN0cyIsCisgICAgICAgIGZlYXR1cmVzID0gImN4eCBjeHhwcm9ncmFtIiwKKyAgICAgICAgc291cmNlID0gYmxkLnBhdGguYW50X2dsb2IoWycqKi8qLmNwcCddKSwKKyAgICAgICAgdXNlID0gJ25kbi1jcHAtZGV2JywKKyAgICAgICAgaW5zdGFsbF9wcmVmaXggPSBOb25lLAorICAgICAgICApCmRpZmYgLS1naXQgYS90ZXN0c19ib29zdC9NYWtlZmlsZS5hbSBiL3Rlc3RzX2Jvb3N0L01ha2VmaWxlLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTgwNjEzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzX2Jvb3N0L01ha2VmaWxlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotCi1ub2luc3RfUFJPR1JBTVM9dW5pdC10ZXN0cwotCi0jIGZvciBpIGluIGBmaW5kIC4gLW5hbWUgJyouY3BwJ2A7IGRvIGVjaG8gIiAgJGkgXFwiOyBkb25lCi11bml0X3Rlc3RzX1NPVVJDRVMgPSBcCi0gIG1haW4uY3BwIFwKLSAgdGVzdC1lbmNvZGUtZGVjb2RlLWNlcnRpZmljYXRlLmNwcCBcCi0gIHRlc3QtZW5jb2RlLWRlY29kZS1kYXRhLmNwcCBcCi0gIHRlc3QtZW5jb2RlLWRlY29kZS1pbnRlcmVzdC5jcHAgXAotICB0ZXN0LWVuY29kZS1kZWNvZGUtZm9yd2FyZGluZy1lbnRyeS5jcHAgXAotICB0ZXN0LWVuY29kZS1kZWNvZGUtYmxvY2suY3BwIFwKLSAgdGVzdC1zZWMtdHBtLWZpbGUuY3BwIFwKLSAgdGVzdC1mYWNlcy5jcHAKLQotdW5pdF90ZXN0c19MREFERCA9IC4uL2xpYm5kbi1jcHAtZGV2LmxhIEBCT09TVF9TWVNURU1fTElCQCBAQk9PU1RfVU5JVF9URVNUX0ZSQU1FV09SS19MSUJAIEBPUEVOU1NMX0xJQlNAIEBDUllQVE9QUF9MSUJTQCBAT1NYX1NFQ1VSSVRZX0xJQlNACmRpZmYgLS1naXQgYS90ZXN0c19ib29zdC90ZXN0LWVuY29kZS1kZWNvZGUtY2VydGlmaWNhdGUuY3BwIGIvdGVzdHNfYm9vc3QvdGVzdC1lbmNvZGUtZGVjb2RlLWNlcnRpZmljYXRlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhmMDE1OS4uMDAwMDAwMAotLS0gYS90ZXN0c19ib29zdC90ZXN0LWVuY29kZS1kZWNvZGUtY2VydGlmaWNhdGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSA8Ym9vc3QvdGVzdC91bml0X3Rlc3QuaHBwPgotCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvc2VjdXJpdHkvY2VydGlmaWNhdGUuaHBwPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L3NlY3VyaXR5L3B1YmxpYy1rZXkuaHBwPgotCi0jaWYgX19jbGFuZ19fCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdGF1dG9sb2dpY2FsLWNvbXBhcmUiCi0jZW5kaWYKLQotI2luY2x1ZGUgPGNyeXB0b3BwL2NyeXB0bGliLmg+Ci0jaW5jbHVkZSA8Y3J5cHRvcHAvcnNhLmg+Ci0jaW5jbHVkZSA8Y3J5cHRvcHAvZmlsZXMuaD4KLQotI2luY2x1ZGUgPGZzdHJlYW0+Ci0jaW5jbHVkZSA8Ym9vc3QvdGVzdC9vdXRwdXRfdGVzdF9zdHJlYW0uaHBwPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotdXNpbmcgbmFtZXNwYWNlIG5kbjsKLQotdXNpbmcgbmFtZXNwYWNlIENyeXB0b1BQOwotCi1CT09TVF9BVVRPX1RFU1RfU1VJVEUoVGVzdENlcnRpZmljYXRlKQotCi1jb25zdCB1aW50OF90IENlcnRpZmljYXRlUmF3W10gPSB7Ci19OwotCi1jb25zdCB1bnNpZ25lZCBjaGFyIFBSSVZBVEVfS0VZX0RFUltdID0gewotMHgzMCwgMHg4MiwgMHgwMiwgMHg3NCwgMHgwMiwgMHgwMSwgMHgwMCwgMHgzMCwgMHgwZCwgMHgwNiwgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwgMHgwMSwgMHgwMSwgMHgwMSwKLTB4MDUsIDB4MDAsIDB4MDQsIDB4ODIsIDB4MDIsIDB4NWUsIDB4MzAsIDB4ODIsIDB4MDIsIDB4NWEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MDIsIDB4ODEsIDB4ODEsIDB4MDAsIDB4OWUsIDB4MDYsIDB4M2UsCi0weDQ3LCAweDg1LCAweGIyLCAweDM0LCAweDM3LCAweGFhLCAweDg1LCAweDQ3LCAweGFjLCAweDAzLCAweDI0LCAweDgzLCAweGI1LCAweDljLCAweGE4LCAweDA1LCAweDNhLCAweDI0LCAweDFlLCAweGViLAotMHg4OSwgMHgwMSwgMHhiYiwgMHhlOSwgMHg5YiwgMHhiMiwgMHhjMywgMHgyMiwgMHhhYywgMHg2OCwgMHhlMywgMHhmMCwgMHg2YywgMHgwMiwgMHhjZSwgMHg2OCwgMHhhNiwgMHhjNCwgMHhkMCwgMHhhNywKLTB4MDYsIDB4OTAsIDB4OWMsIDB4YWEsIDB4MWIsIDB4MDgsIDB4MWQsIDB4OGIsIDB4NDMsIDB4OWEsIDB4MzMsIDB4NjcsIDB4NDQsIDB4NmQsIDB4MjEsIDB4YTMsIDB4MWIsIDB4ODgsIDB4OWEsIDB4OTcsCi0weDVlLCAweDU5LCAweGM0LCAweDE1LCAweDBiLCAweGQ5LCAweDJjLCAweGJkLCAweDUxLCAweDA3LCAweDYxLCAweDgyLCAweGFkLCAweGMxLCAweGI4LCAweGQ3LCAweGJmLCAweDliLCAweGNmLCAweDdkLAotMHgyNCwgMHhjMiwgMHg2MywgMHhmMywgMHg5NywgMHgxNywgMHhlYiwgMHhmZSwgMHg2MiwgMHgyNSwgMHhiYSwgMHg1YiwgMHg0ZCwgMHg4YSwgMHhjMiwgMHg3YSwgMHhiZCwgMHg0MywgMHg4YSwgMHg4ZiwKLTB4YjgsIDB4ZjIsIDB4ZjEsIDB4YzUsIDB4NmEsIDB4MzAsIDB4ZDMsIDB4NTAsIDB4OGMsIDB4YzgsIDB4OWEsIDB4ZGYsIDB4ZWYsIDB4ZWQsIDB4MzUsIDB4ZTcsIDB4N2EsIDB4NjIsIDB4ZWEsIDB4NzYsCi0weDdjLCAweGJiLCAweDA4LCAweDI2LCAweGM3LCAweDAyLCAweDAxLCAweDExLCAweDAyLCAweDgxLCAweDgwLCAweDA0LCAweGE1LCAweGQ0LCAweGE3LCAweGMwLCAweDJhLCAweGUzLCAweDZiLCAweDBjLAotMHg4YiwgMHg3MywgMHgwYywgMHg5NiwgMHhhZSwgMHg0MCwgMHgxYiwgMHhlZSwgMHgwNCwgMHhmMSwgMHgxOCwgMHg0YywgMHg1YiwgMHg0MywgMHgyOSwgMHhhZCwgMHgzYSwgMHgzYiwgMHg5MywgMHhhMywKLTB4NjAsIDB4MTcsIDB4OWIsIDB4YTgsIDB4YmIsIDB4NjgsIDB4ZjQsIDB4MWUsIDB4MzMsIDB4M2YsIDB4NTAsIDB4MzIsIDB4ZjcsIDB4MTMsIDB4ZjgsIDB4YTksIDB4ZTYsIDB4N2QsIDB4NzksIDB4NDQsCi0weDAwLCAweGRlLCAweDcyLCAweGVkLCAweGYyLCAweDczLCAweGZhLCAweDdiLCAweGFlLCAweDJhLCAweDcxLCAweGMwLCAweDQwLCAweGM4LCAweDM3LCAweDZmLCAweDM4LCAweGIyLCAweDY5LCAweDFmLAotMHhhOCwgMHg4MywgMHg3YiwgMHg0MiwgMHgwMCwgMHg3MywgMHg0NiwgMHhlNiwgMHg0YywgMHg5MSwgMHg3ZiwgMHgxMywgMHgwNiwgMHg2OSwgMHgwNiwgMHhkOCwgMHgzZiwgMHgyMiwgMHgxNSwgMHg3NSwKLTB4ZjYsIDB4ZGUsIDB4Y2QsIDB4YjAsIDB4YmMsIDB4NjYsIDB4NjEsIDB4OTEsIDB4MDgsIDB4OWIsIDB4MmIsIDB4YjIsIDB4MDAsIDB4YTksIDB4NjcsIDB4MDUsIDB4MzksIDB4NDAsIDB4YjksIDB4MzcsCi0weDg1LCAweDg4LCAweDRmLCAweDc2LCAweDc5LCAweDYzLCAweGMwLCAweDg4LCAweDNjLCAweDg2LCAweGE4LCAweDEyLCAweDk0LCAweDVmLCAweGU0LCAweDM2LCAweDNkLCAweGVhLCAweGI5LCAweDAyLAotMHg0MSwgMHgwMCwgMHhiNiwgMHgyZSwgMHhiYiwgMHhjZCwgMHgyZiwgMHgzYSwgMHg5OSwgMHhlMCwgMHhhMSwgMHhhNSwgMHg0NCwgMHg3NywgMHhlYSwgMHgwYiwgMHhiZSwgMHgxNiwgMHg5NSwgMHgwZSwKLTB4NjQsIDB4YTcsIDB4NjgsIDB4ZDcsIDB4NGIsIDB4MTUsIDB4MTUsIDB4MjMsIDB4ZTIsIDB4MWUsIDB4NGUsIDB4MDAsIDB4MmMsIDB4MjIsIDB4OTcsIDB4YWUsIDB4YjAsIDB4NzQsIDB4YTYsIDB4OTksCi0weGQwLCAweDVkLCAweGI3LCAweDFiLCAweDEwLCAweDM0LCAweDEzLCAweGQyLCAweDVmLCAweDZlLCAweDU2LCAweGFkLCAweDg1LCAweDRhLCAweGRiLCAweGYwLCAweDc4LCAweGJkLCAweGY0LCAweDhjLAotMHhiNywgMHg5YSwgMHgzZSwgMHg5OSwgMHhlZiwgMHhiOSwgMHgwMiwgMHg0MSwgMHgwMCwgMHhkZSwgMHgwZCwgMHhhNywgMHg0OCwgMHg3NSwgMHg5MCwgMHhhZCwgMHgxMSwgMHhhMSwgMHhhYywgMHhlZSwKLTB4Y2IsIDB4NDEsIDB4ODEsIDB4YzYsIDB4YzgsIDB4N2YsIDB4ZTcsIDB4MjUsIDB4OTQsIDB4YTEsIDB4MmEsIDB4MjEsIDB4YTgsIDB4NTcsIDB4ZmUsIDB4ODQsIDB4ZjIsIDB4NWUsIDB4YjQsIDB4OTYsCi0weDM1LCAweGFmLCAweGVmLCAweDJlLCAweDdhLCAweGY4LCAweGRhLCAweDNmLCAweGFjLCAweDhhLCAweDNjLCAweDFjLCAweDljLCAweGJkLCAweDQ0LCAweGQ2LCAweDkwLCAweGI1LCAweGNlLCAweDFiLAotMHgxMiwgMHhmOSwgMHgzYiwgMHg4YywgMHg2OSwgMHhmNiwgMHhhOSwgMHgwMiwgMHg5MywgMHg0OCwgMHgzNSwgMHgwYSwgMHg3ZiwgMHgwMiwgMHg0MCwgMHg2YiwgMHgyYSwgMHg4YywgMHg5NiwgMHhkMCwKLTB4N2MsIDB4ZDIsIDB4ZmMsIDB4OWIsIDB4NTIsIDB4MjgsIDB4NDYsIDB4ODksIDB4YWMsIDB4OGQsIDB4ZWYsIDB4MmEsIDB4ODAsIDB4ZWYsIDB4ZWEsIDB4MDEsIDB4NmYsIDB4OTUsIDB4OTMsIDB4ZWUsCi0weDUxLCAweDU3LCAweGQ1LCAweDk3LCAweDRiLCAweDY1LCAweDQxLCAweDg2LCAweDY2LCAweGMyLCAweDI2LCAweDgwLCAweDFlLCAweDNlLCAweDU1LCAweDNlLCAweDg4LCAweDYzLCAweGUyLCAweDY2LAotMHgwMywgMHg0NywgMHgzMSwgMHhkOCwgMHhhMiwgMHg0ZSwgMHg2OCwgMHg0NSwgMHgyNCwgMHgwYSwgMHhjYSwgMHgxNywgMHg2MSwgMHhkNSwgMHg2OSwgMHhjYSwgMHg3OCwgMHhhYiwgMHgyMSwgMHgwMiwKLTB4NDEsIDB4MDAsIDB4OGYsIDB4YWUsIDB4N2IsIDB4NGQsIDB4MDAsIDB4YzcsIDB4MDYsIDB4OTIsIDB4ZjAsIDB4MjQsIDB4OWEsIDB4ODMsIDB4ODQsIDB4YmQsIDB4NjIsIDB4ODEsIDB4YmMsIDB4MmMsCi0weDI3LCAweDYwLCAweDJjLCAweDBjLCAweDMzLCAweGU1LCAweDY2LCAweDFkLCAweDI4LCAweGQ5LCAweDEwLCAweDFhLCAweDdmLCAweDRmLCAweGVhLCAweDRmLCAweDc4LCAweDZkLCAweGIwLCAweDE0LAotMHhiZiwgMHhjOSwgMHhmZiwgMHgxNywgMHhkNiwgMHg0NywgMHg0ZCwgMHg0YSwgMHhhOCwgMHhmNCwgMHgzOSwgMHg2NywgMHgzZSwgMHhiMSwgMHhlYywgMHg4ZiwgMHhmMSwgMHg3MSwgMHhiZCwgMHhiOCwKLTB4YTcsIDB4NTAsIDB4M2QsIDB4YzcsIDB4ZjcsIDB4YmIsIDB4MDIsIDB4NDAsIDB4MGQsIDB4ODUsIDB4MzIsIDB4NzMsIDB4OWYsIDB4MGEsIDB4MzMsIDB4MmYsIDB4NGIsIDB4YTIsIDB4YmQsIDB4ZDEsCi0weGIxLCAweDQyLCAweGYwLCAweDcyLCAweGE4LCAweDdhLCAweGM4LCAweDE1LCAweDM3LCAweDFiLCAweGRlLCAweDc2LCAweDcwLCAweGNlLCAweGZkLCAweDY5LCAweDIwLCAweDAwLCAweDRkLCAweGM5LAotMHg0ZiwgMHgzNSwgMHg2ZiwgMHhkMSwgMHgzNSwgMHhhMSwgMHgwNCwgMHg5NSwgMHgzMCwgMHhlOCwgMHgzYiwgMHhkNSwgMHgwMywgMHg1YSwgMHg1MCwgMHgyMSwgMHg2ZCwgMHhhMCwgMHg4NCwgMHgzOSwKLTB4ZTksIDB4MmUsIDB4MWUsIDB4ZmMsIDB4ZTQsIDB4ODIsIDB4NDMsIDB4MjAsIDB4NDYsIDB4N2QsIDB4MGEsIDB4YjYKLX07Ci0KLWNvbnN0IHVpbnQ4X3QgUFVCTElDX0tFWVtdID0gewotMHgzMCwgMHg4MSwgMHg5ZCwgMHgzMCwgMHgwZCwgMHgwNiwgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNSwgMHgwMCwgMHgwMywgMHg4MSwKLTB4OGIsIDB4MDAsIDB4MzAsIDB4ODEsIDB4ODcsIDB4MDIsIDB4ODEsIDB4ODEsIDB4MDAsIDB4OWUsIDB4MDYsIDB4M2UsIDB4NDcsIDB4ODUsIDB4YjIsIDB4MzQsIDB4MzcsIDB4YWEsIDB4ODUsIDB4NDcsCi0weGFjLCAweDAzLCAweDI0LCAweDgzLCAweGI1LCAweDljLCAweGE4LCAweDA1LCAweDNhLCAweDI0LCAweDFlLCAweGViLCAweDg5LCAweDAxLCAweGJiLCAweGU5LCAweDliLCAweGIyLCAweGMzLCAweDIyLAotMHhhYywgMHg2OCwgMHhlMywgMHhmMCwgMHg2YywgMHgwMiwgMHhjZSwgMHg2OCwgMHhhNiwgMHhjNCwgMHhkMCwgMHhhNywgMHgwNiwgMHg5MCwgMHg5YywgMHhhYSwgMHgxYiwgMHgwOCwgMHgxZCwgMHg4YiwKLTB4NDMsIDB4OWEsIDB4MzMsIDB4NjcsIDB4NDQsIDB4NmQsIDB4MjEsIDB4YTMsIDB4MWIsIDB4ODgsIDB4OWEsIDB4OTcsIDB4NWUsIDB4NTksIDB4YzQsIDB4MTUsIDB4MGIsIDB4ZDksIDB4MmMsIDB4YmQsCi0weDUxLCAweDA3LCAweDYxLCAweDgyLCAweGFkLCAweGMxLCAweGI4LCAweGQ3LCAweGJmLCAweDliLCAweGNmLCAweDdkLCAweDI0LCAweGMyLCAweDYzLCAweGYzLCAweDk3LCAweDE3LCAweGViLCAweGZlLAotMHg2MiwgMHgyNSwgMHhiYSwgMHg1YiwgMHg0ZCwgMHg4YSwgMHhjMiwgMHg3YSwgMHhiZCwgMHg0MywgMHg4YSwgMHg4ZiwgMHhiOCwgMHhmMiwgMHhmMSwgMHhjNSwgMHg2YSwgMHgzMCwgMHhkMywgMHg1MCwKLTB4OGMsIDB4YzgsIDB4OWEsIDB4ZGYsIDB4ZWYsIDB4ZWQsIDB4MzUsIDB4ZTcsIDB4N2EsIDB4NjIsIDB4ZWEsIDB4NzYsIDB4N2MsIDB4YmIsIDB4MDgsIDB4MjYsIDB4YzcsIDB4MDIsIDB4MDEsIDB4MTEKLX07Ci0KLWNvbnN0IHVpbnQ4X3QgQ0VSVFtdID0gewotMHgzMCwgMHg4MSwgMHhmZiwgMHgzMCwgMHgyMiwgMHgxOCwgMHgwZiwgMHgzMiwgMHgzMCwgMHgzMSwgMHgzMywgMHgzMSwgMHgzMiwgMHgzMiwgMHgzNiwgMHgzMiwgMHgzMywgMHgzMiwgMHgzMiwgMHgzNSwgMHgzNCwgMHg1YSwgMHgxOCwgMHgwZiwgMHgzMiwgMHgzMCwgMHgzMSwgMHgzMywgMHgzMSwgMHgzMiwgMHgzMiwgMHgzNiwgMHgzMiwgMHgzMywgMHgzMiwgMHgzMiwgMHgzNSwgMHgzNCwgMHg1YSwgMHgzMCwgMHgxMiwgMHgzMCwgMHgxMCwgMHgwNiwgMHgwMywgMHg1NSwgMHgwNCwgMHgyOSwgMHgxMywgMHgwOSwgMHg1NCwgMHg0NSwgMHg1MywgMHg1NCwgMHgyMCwgMHg0ZSwgMHg0MSwgMHg0ZCwgMHg0NSwgMHgzMCwgMHg4MSwgMHg5ZCwgMHgzMCwgMHgwZCwgMHgwNiwgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNSwgMHgwMCwgMHgwMywgMHg4MSwgMHg4YiwgMHgwMCwgMHgzMCwgMHg4MSwgMHg4NywgMHgwMiwgMHg4MSwgMHg4MSwgMHgwMCwgMHg5ZSwgMHgwNiwgMHgzZSwgMHg0NywgMHg4NSwgMHhiMiwgMHgzNCwgMHgzNywgMHhhYSwgMHg4NSwgMHg0NywgMHhhYywgMHgwMywgMHgyNCwgMHg4MywgMHhiNSwgMHg5YywgMHhhOCwgMHgwNSwgMHgzYSwgMHgyNCwgMHgxZSwgMHhlYiwgMHg4OSwgMHgwMSwgMHhiYiwgMHhlOSwgMHg5YiwgMHhiMiwgMHhjMywgMHgyMiwgMHhhYywgMHg2OCwgMHhlMywgMHhmMCwgMHg2YywgMHgwMiwgMHhjZSwgMHg2OCwgMHhhNiwgMHhjNCwgMHhkMCwgMHhhNywgMHgwNiwgMHg5MCwgMHg5YywgMHhhYSwgMHgxYiwgMHgwOCwgMHgxZCwgMHg4YiwgMHg0MywgMHg5YSwgMHgzMywgMHg2NywgMHg0NCwgMHg2ZCwgMHgyMSwgMHhhMywgMHgxYiwgMHg4OCwgMHg5YSwgMHg5NywgMHg1ZSwgMHg1OSwgMHhjNCwgMHgxNSwgMHgwYiwgMHhkOSwgMHgyYywgMHhiZCwgMHg1MSwgMHgwNywgMHg2MSwgMHg4MiwgMHhhZCwgMHhjMSwgMHhiOCwgMHhkNywgMHhiZiwgMHg5YiwgMHhjZiwgMHg3ZCwgMHgyNCwgMHhjMiwgMHg2MywgMHhmMywgMHg5NywgMHgxNywgMHhlYiwgMHhmZSwgMHg2MiwgMHgyNSwgMHhiYSwgMHg1YiwgMHg0ZCwgMHg4YSwgMHhjMiwgMHg3YSwgMHhiZCwgMHg0MywgMHg4YSwgMHg4ZiwgMHhiOCwgMHhmMiwgMHhmMSwgMHhjNSwgMHg2YSwgMHgzMCwgMHhkMywgMHg1MCwgMHg4YywgMHhjOCwgMHg5YSwgMHhkZiwgMHhlZiwgMHhlZCwgMHgzNSwgMHhlNywgMHg3YSwgMHg2MiwgMHhlYSwgMHg3NiwgMHg3YywgMHhiYiwgMHgwOCwgMHgyNiwgMHhjNywgMHgwMiwgMHgwMSwgMHgxMSwgMHgzMCwgMHgyNSwgMHgzMCwgMHgyMywgMHgwNiwgMHgwNiwgMHgyYiwgMHgwNiwgMHgwMSwgMHgwNSwgMHgyMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHhmZiwgMHgwNCwgMHgxNiwgMHgzMCwgMHgxNCwgMHgwNCwgMHgwYywgMHgyZiwgMHg2OCwgMHg2NSwgMHg2YywgMHg2YywgMHg2ZiwgMHgyZiwgMHg2YiwgMHg2OSwgMHg3NCwgMHg3NCwgMHg3OSwgMHgwMiwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMSwgMHgwYQotfTsKLQotY29uc3Qgc3RkOjpzdHJpbmcgQ0VSVF9JTkZPID0gIkNlcnRpZmljYXRlIG5hbWU6XG4iCi0gICIgIC9cbiIKLSAgIlZhbGlkaXR5OlxuIgotICAiICBOb3RCZWZvcmU6IDIwMTMxMjI2VDIzMjI1NC4wMDAwMDBcbiIKLSAgIiAgTm90QWZ0ZXI6IDIwMTMxMjI2VDIzMjI1NC4wMDAwMDBcbiIKLSAgIlN1YmplY3QgRGVzY3JpcHRpb246XG4iCi0gICIgIDIuNS40LjQxOiBURVNUIE5BTUVcbiIKLSAgIlB1YmxpYyBrZXkgYml0czpcbiIKLSAgIk1JR2RNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0R0xBRENCaHdLQmdRQ2VCajVIaGJJME42cUZSNndESklPMW5LZ0ZcbiIKLSAgIk9pUWU2NGtCdSttYnNzTWlyR2pqOEd3Q3ptaW14TkNuQnBDY3Foc0lIWXREbWpOblJHMGhveHVJbXBkZVdjUVZcbiIKLSAgIkM5a3N2VkVIWVlLdHdialh2NXZQZlNUQ1kvT1hGK3YrWWlXNlcwMkt3bnE5UTRxUHVQTHh4V293MDFDTXlKcmZcbiIKLSAgIjcrMDE1M3BpNm5aOHV3Z214d0lCXG4iOwotCi1CT09TVF9BVVRPX1RFU1RfQ0FTRSAoRW5jb2RlKQotewotICBuZG46OkNlcnRpZmljYXRlIGM7Ci0KLSAgLy8gdmFsaWRpdHkKLSAgYy5zZXROb3RCZWZvcmUoMTM4ODEwMDE3NDAwMCk7IC8vIDEyLzI2LzIwMTMgQCAxMToyMnBtCi0gIGMuc2V0Tm90QWZ0ZXIoMTM4ODEwMDE3NDAwMCk7IC8vIDEyLzI2LzIwMTMgQCAxMToyMnBtCi0KLSAgLy8gc3ViamVjdAotICBjLmFkZFN1YmplY3REZXNjcmlwdGlvbihDZXJ0aWZpY2F0ZVN1YmplY3REZXNjcmlwdGlvbigiMi41LjQuNDEiLCAiVEVTVCBOQU1FIikpOwotCi0gIC8vIHB1YmxpY0tleUluZm8KLSAgbmRuOjpQdWJsaWNLZXkga2V5KFBVQkxJQ19LRVksIHNpemVvZihQVUJMSUNfS0VZKSk7Ci0gIGMuc2V0UHVibGljS2V5SW5mbyhrZXkpOwotCi0gIC8vIGV4dGVuc2lvbnMKLSAgQk9PU1RfUkVRVUlSRV9OT19USFJPVyh7Ci0gICAgc3RkOjpzdHJpbmcgZXh0ZW5zdGlvblZhbHVlOwotICAgIFN0cmluZ1Npbmsgc2luayhleHRlbnN0aW9uVmFsdWUpOwotICAgIERFUlNlcXVlbmNlRW5jb2RlciBzZXEoc2luayk7Ci0gICAgewotICAgICAgc3RkOjpzdHJpbmcgbmFtZSgiL2hlbGxvL2tpdHR5Iik7Ci0gICAgICBERVJFbmNvZGVPY3RldFN0cmluZyhzZXEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5hbWUuY19zdHIoKSksIG5hbWUuc2l6ZSgpKTsKLSAgICAgIC8vIHRydXN0Q2xhc3MKLSAgICAgIERFUkVuY29kZVVuc2lnbmVkPHVpbnQzMl90PihzZXEsIDApOwotICAgICAgLy8gdHJ1c3RMZXZlbAotICAgICAgREVSRW5jb2RlVW5zaWduZWQ8dWludDMyX3Q+KHNlcSwgMTApOwotICAgIH0KLSAgICBzZXEuTWVzc2FnZUVuZCgpOwotICAKLSAgICBjLmFkZEV4dGVuc2lvbihDZXJ0aWZpY2F0ZUV4dGVuc2lvbigiMS4zLjYuMS41LjMyLjEiLCB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGV4dGVuc3Rpb25WYWx1ZS5jX3N0cigpKSwgZXh0ZW5zdGlvblZhbHVlLnNpemUoKSkpOwotICB9KTsKLSAgLy8gUlNBOjpQdWJsaWNLZXkgcDsKLSAgLy8gU3RyaW5nU291cmNlIHNvdXJjZShULCBzaXplb2YoVCksIHRydWUpOwotICAvLyBwLkxvYWQoc291cmNlKTsKLQotICBCT09TVF9SRVFVSVJFX05PX1RIUk9XKGMuZW5jb2RlKCkpOwotICAKLSAgLy8gb2ZzdHJlYW0gb2YoImNlcnQub3V0Iik7Ci0gIC8vIG9mLndyaXRlKChjb25zdCBjaGFyKiljLmdldENvbnRlbnQoKS52YWx1ZSgpLCBjLmdldENvbnRlbnQoKS52YWx1ZV9zaXplKCkpOwotICAKLSAgLy8gY29uc3QgQmxvY2sgJndpcmUgPSBpLndpcmVFbmNvZGUoKTsKLSAgQk9PU1RfUkVRVUlSRV9FUVVBTF9DT0xMRUNUSU9OUyhDRVJULCBDRVJUK3NpemVvZihDRVJUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRDb250ZW50KCkudmFsdWVfYmVnaW4oKSwgYy5nZXRDb250ZW50KCkudmFsdWVfZW5kKCkpOwotCi0gIHN0ZDo6b3N0cmluZ3N0cmVhbSBvczsKLSAgb3MgPDwgYyA8PCBzdGQ6OmVuZGw7Ci0gIHN0ZDo6c3RyaW5nIGluZm8ob3Muc3RyKCkpOwotICBCT09TVF9SRVFVSVJFX0VRVUFMX0NPTExFQ1RJT05TKENFUlRfSU5GTy5iZWdpbigpLCBDRVJUX0lORk8uZW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5iZWdpbigpLCBpbmZvLmVuZCgpKTsKLX0KLQotY29uc3QgdW5zaWduZWQgY2hhciBSRUFMX0NFUlRbXSA9IHsKLTB4MzAsIDB4ODIsIDB4MDEsIDB4NjMsIDB4MzAsIDB4MjIsIDB4MTgsIDB4MGYsIDB4MzIsIDB4MzAsIDB4MzEsIDB4MzMsIDB4MzEsIDB4MzEsIDB4MzAsIDB4MzEsIDB4MzEsIDB4MzcsIDB4MzEsIDB4MzEsIDB4MzIsIDB4MzIsIDB4NWEsIDB4MTgsIDB4MGYsIDB4MzIsIDB4MzAsIDB4MzEsIDB4MzQsIDB4MzEsIDB4MzEsIDB4MzAsIDB4MzEsIDB4MzEsIDB4MzcsIDB4MzEsIDB4MzEsIDB4MzIsIDB4MzIsIDB4NWEsIDB4MzAsIDB4MTksIDB4MzAsIDB4MTcsIDB4MDYsIDB4MDMsIDB4NTUsIDB4MDQsIDB4MjksIDB4MTMsIDB4MTAsIDB4NGUsIDB4NDQsIDB4NGUsIDB4MjAsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4NjIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4NTIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4MzAsIDB4ODIsIDB4MDEsIDB4MjAsIDB4MzAsIDB4MGQsIDB4MDYsIDB4MDksIDB4MmEsIDB4ODYsIDB4NDgsIDB4ODYsIDB4ZjcsIDB4MGQsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDUsIDB4MDAsIDB4MDMsIDB4ODIsIDB4MDEsIDB4MGQsIDB4MDAsIDB4MzAsIDB4ODIsIDB4MDEsIDB4MDgsIDB4MDIsIDB4ODIsIDB4MDEsIDB4MDEsIDB4MDAsIDB4ZDMsIDB4YWMsIDB4N2UsIDB4N2EsIDB4NWMsIDB4MzMsIDB4NTgsIDB4MjEsIDB4ZGEsIDB4ZTAsIDB4OGQsIDB4ZGIsIDB4Y2EsIDB4YjYsIDB4MDIsIDB4MzAsIDB4MDIsIDB4MTUsIDB4YzUsIDB4MGEsIDB4NTEsIDB4NTQsIDB4YmIsIDB4OGUsIDB4NWUsIDB4OWQsIDB4MjEsIDB4ZjgsIDB4MTQsIDB4YmUsIDB4ZTQsIDB4NjMsIDB4NjAsIDB4MzEsIDB4NTMsIDB4ZTIsIDB4ZWYsIDB4ZWUsIDB4MzQsIDB4YTMsIDB4OGMsIDB4ZDIsIDB4MjQsIDB4NmYsIDB4YTQsIDB4ODksIDB4NGYsIDB4MDIsIDB4MjAsIDB4N2QsIDB4NjYsIDB4YjYsIDB4M2YsIDB4MTEsIDB4NDAsIDB4MGMsIDB4YzEsIDB4NWYsIDB4ZDgsIDB4NDUsIDB4MjMsIDB4OTUsIDB4NDAsIDB4YzgsIDB4ZTAsIDB4YmMsIDB4OWQsIDB4MmYsIDB4MDMsIDB4ZjEsIDB4ODMsIDB4OWYsIDB4MDcsIDB4MGIsIDB4NzYsIDB4YzksIDB4MTAsIDB4ZDksIDB4M2UsIDB4MGIsIDB4NzUsIDB4MTMsIDB4OTMsIDB4ZTksIDB4YzksIDB4ODUsIDB4MDEsIDB4ODgsIDB4MzYsIDB4MmUsIDB4YWIsIDB4ZmMsIDB4ZTYsIDB4MjQsIDB4MzIsIDB4ZmMsIDB4YzYsIDB4M2MsIDB4NDAsIDB4OTcsIDB4MWEsIDB4Y2MsIDB4Y2QsIDB4NTMsIDB4YWEsIDB4MGYsIDB4ZmIsIDB4YTMsIDB4ZmUsIDB4ZjksIDB4MjQsIDB4NzAsIDB4MTMsIDB4M2YsIDB4NGYsIDB4NWIsIDB4N2QsIDB4NDMsIDB4YWEsIDB4NzUsIDB4MGEsIDB4OTQsIDB4NzIsIDB4YWIsIDB4ZTEsIDB4OGMsIDB4NDUsIDB4YjUsIDB4NzgsIDB4MTAsIDB4MDEsIDB4ZWYsIDB4MWYsIDB4YjMsIDB4MDUsIDB4NmYsIDB4YTYsIDB4YzMsIDB4YWMsIDB4N2YsIDB4NmQsIDB4ZjAsIDB4MzEsIDB4YzQsIDB4ODMsIDB4YjMsIDB4NGYsIDB4NTAsIDB4MjYsIDB4OTIsIDB4NDAsIDB4MWEsIDB4ZGQsIDB4ZWMsIDB4ZmIsIDB4Y2IsIDB4ZWYsIDB4NjMsIDB4ZmUsIDB4NDEsIDB4ZDgsIDB4OGQsIDB4MWYsIDB4ZGMsIDB4ZWMsIDB4ZmMsIDB4NDgsIDB4OTUsIDB4Y2MsIDB4MDksIDB4MWUsIDB4MzAsIDB4NmUsIDB4MjIsIDB4OWUsIDB4MjQsIDB4OTcsIDB4MmUsIDB4ZTYsIDB4MGMsIDB4ZGYsIDB4M2QsIDB4MjAsIDB4MzIsIDB4YWEsIDB4OWMsIDB4YzksIDB4NDUsIDB4MTQsIDB4YWYsIDB4YWEsIDB4ZjUsIDB4MTcsIDB4ZDIsIDB4MDEsIDB4OTgsIDB4MzMsIDB4YmUsIDB4MmEsIDB4OWYsIDB4N2IsIDB4OWQsIDB4OTgsIDB4N2MsIDB4NTQsIDB4MjIsIDB4ZmUsIDB4NzIsIDB4NzIsIDB4MDQsIDB4YzMsIDB4MmMsIDB4YzAsIDB4MTQsIDB4MGIsIDB4YTksIDB4NDAsIDB4N2UsIDB4NDYsIDB4YTEsIDB4NzUsIDB4MTYsIDB4MWEsIDB4MjcsIDB4OWUsIDB4ZjIsIDB4ODIsIDB4OTYsIDB4YzAsIDB4N2QsIDB4YWYsIDB4MTgsIDB4NzUsIDB4ZmIsIDB4YmIsIDB4YWIsIDB4MTYsIDB4NjYsIDB4YzAsIDB4YTksIDB4ZDcsIDB4OTMsIDB4NGMsIDB4NDgsIDB4NmQsIDB4Y2UsIDB4MGIsIDB4ODgsIDB4ZDQsIDB4MjEsIDB4OTMsIDB4ODQsIDB4ODksIDB4NTUsIDB4MDUsIDB4ZDUsIDB4MDIsIDB4MDEsIDB4MTEKLX07Ci0KLWNvbnN0IHN0ZDo6c3RyaW5nIFJFQUxfQ0VSVF9JTkZPID0gIkNlcnRpZmljYXRlIG5hbWU6XG4iCi0iICAvdG1wXG4iCi0iVmFsaWRpdHk6XG4iCi0iICBOb3RCZWZvcmU6IDIwMTMxMTAxVDE3MTEyMi4wMDAwMDBcbiIKLSIgIE5vdEFmdGVyOiAyMDE0MTEwMVQxNzExMjIuMDAwMDAwXG4iCi0iU3ViamVjdCBEZXNjcmlwdGlvbjpcbiIKLSIgIDIuNS40LjQxOiBORE4gVGVzdGJlZCBSb290XG4iCi0iUHVibGljIGtleSBiaXRzOlxuIgotIk1JSUJJREFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUTBBTUlJQkNBS0NBUUVBMDZ4K2Vsd3pXQ0hhNEkzYnlyWUNcbiIKLSJNQUlWeFFwUlZMdU9YcDBoK0JTKzVHTmdNVlBpNys0MG80elNKRytraVU4Q0lIMW10ajhSUUF6Qlg5aEZJNVZBXG4iCi0ieU9DOG5TOEQ4WU9mQnd0MnlSRFpQZ3QxRTVQcHlZVUJpRFl1cS96bUpETDh4anhBbHhyTXpWT3FEL3VqL3Zra1xuIgotImNCTS9UMXQ5UTZwMUNwUnlxK0dNUmJWNEVBSHZIN01GYjZiRHJIOXQ4REhFZzdOUFVDYVNRQnJkN1B2TDcyUCtcbiIKLSJRZGlOSDl6cy9FaVZ6QWtlTUc0aW5pU1hMdVlNM3owZ01xcWN5VVVVcjZyMUY5SUJtRE8rS3A5N25aaDhWQ0wrXG4iCi0iY25JRXd5ekFGQXVwUUg1R29YVVdHaWVlOG9LV3dIMnZHSFg3dTZzV1pzQ3AxNU5NU0czT0M0alVJWk9FaVZVRlxuIgotIjFRSUJcbiI7Ci0KLUJPT1NUX0FVVE9fVEVTVF9DQVNFIChEZWNvZGUpCi17Ci0gIG5kbjo6RGF0YSBkKCIvdG1wIik7Ci0gIGQuc2V0Q29udGVudChSRUFMX0NFUlQsIHNpemVvZihSRUFMX0NFUlQpKTsKLQotICBuZG46OkNlcnRpZmljYXRlIGMoZCk7Ci0KLSAgc3RkOjpvc3RyaW5nc3RyZWFtIG9zOwotICBvcyA8PCBjIDw8IHN0ZDo6ZW5kbDsKLSAgc3RkOjpzdHJpbmcgaW5mbyhvcy5zdHIoKSk7Ci0gIEJPT1NUX1JFUVVJUkVfRVFVQUxfQ09MTEVDVElPTlMoUkVBTF9DRVJUX0lORk8uYmVnaW4oKSwgUkVBTF9DRVJUX0lORk8uZW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5iZWdpbigpLCBpbmZvLmVuZCgpKTsKLX0KLQotQk9PU1RfQVVUT19URVNUX1NVSVRFX0VORCgpCmRpZmYgLS1naXQgYS90ZXN0c19ib29zdC90ZXN0LXNlYy10cG0tZmlsZS5jcHAgYi90ZXN0c19ib29zdC90ZXN0LXNlYy10cG0tZmlsZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNzVhMzguLjAwMDAwMDAKLS0tIGEvdGVzdHNfYm9vc3QvdGVzdC1zZWMtdHBtLWZpbGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogWWluZ2RpIFl1IDx5aW5nZGkwQGNzLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZiBfX2NsYW5nX18KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3RhdXRvbG9naWNhbC1jb21wYXJlIgotLy8gI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLS8vICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Jlb3JkZXIiCi0vLyAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCi0vLyAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24iCi0vLyAjZWxpZiBfX0dOVUNfXwotLy8gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Jlb3JkZXIiCi0vLyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXZhcmlhYmxlIgotLy8gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKLSNlbmRpZgotCi0jaW5jbHVkZSA8Ym9vc3QvdGVzdC91bml0X3Rlc3QuaHBwPgotCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvc2VjdXJpdHkva2V5LWNoYWluLmhwcD4KLSNpbmNsdWRlIDxjcnlwdG9wcC9yc2EuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLXVzaW5nIG5hbWVzcGFjZSBuZG47Ci0KLQotQk9PU1RfQVVUT19URVNUX1NVSVRFKFRlc3RTZWNUcG1GaWxlKQotCi1CT09TVF9BVVRPX1RFU1RfQ0FTRSAoU2lnblZlcmlmeSkKLXsKLSAgU2VjVHBtRmlsZSB0cG07Ci0KLSAgTmFtZSBrZXlOYW1lKCIvdG1wL2tzay0xMjM0NTYiKTsKLSAgdHBtLmdlbmVyYXRlS2V5UGFpckluVHBtKGtleU5hbWUsIEtFWV9UWVBFX1JTQSwgMjA0OCk7Ci0gIAotCi0KLSAgRGF0YSBkYXRhKCIvdG1wL3Rlc3QvMSIpOwotICBjb25zdCB1aW50OF90IGNvbnRlbnRbXSA9IHsweDAxLCAweDAyLCAweDAzLCAweDA0fTsKLQotICBCbG9jayBzaWdCbG9jayA9IHRwbS5zaWduSW5UcG0oY29udGVudCwgc2l6ZW9mKGNvbnRlbnQpLCBrZXlOYW1lLCBESUdFU1RfQUxHT1JJVEhNX1NIQTI1Nik7Ci0gIHB0cl9saWI6OnNoYXJlZF9wdHI8UHVibGljS2V5PiBwdWJrZXlQdHIgPSB0cG0uZ2V0UHVibGljS2V5RnJvbVRwbShrZXlOYW1lKTsKLQotICB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIENyeXB0b1BQOwotICAgIAotICAgIFJTQTo6UHVibGljS2V5IHB1YmxpY0tleTsKLSAgICBCeXRlUXVldWUgcXVldWU7Ci0gICAgcXVldWUuUHV0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYnl0ZSo+KHB1YmtleVB0ci0+Z2V0KCkuYnVmKCkpLCBwdWJrZXlQdHItPmdldCgpLnNpemUoKSk7Ci0gICAgcHVibGljS2V5LkxvYWQocXVldWUpOwotCi0gICAgUlNBU1M8UEtDUzF2MTUsIFNIQTI1Nj46OlZlcmlmaWVyIHZlcmlmaWVyIChwdWJsaWNLZXkpOwotICAgIGJvb2wgcmVzdWx0ID0gdmVyaWZpZXIuVmVyaWZ5TWVzc2FnZShjb250ZW50LCBzaXplb2YoY29udGVudCksCi0JCQkJICBzaWdCbG9jay52YWx1ZSgpLCBzaWdCbG9jay52YWx1ZV9zaXplKCkpOwotICAKLSAgICBCT09TVF9SRVFVSVJFX0VRVUFMKHJlc3VsdCwgdHJ1ZSk7Ci0gIH0KLQotICAvL1dlIHNob3VsZCByZW1vdmUgdGhlIHRlbXBvcmFyeSB0ZXN0IGtleSwgdGhpcyBzaG91bGQgYmUgZml4ZWQgaW4gYSBsYXRlciBjb21taXQgd2hpY2ggd2lsbCBhZGQgZGVsZXRlIG9wZXJhdGlvbiBpbiBTZWNUcG0uCi19Ci0KLUJPT1NUX0FVVE9fVEVTVF9TVUlURV9FTkQoKQpkaWZmIC0tZ2l0IGEvdG9vbHMvTWFrZWZpbGUuYW0gYi90b29scy9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM0NGU3ZC4uMDAwMDAwMAotLS0gYS90b29scy9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLUxEQUREID0gLi4vbGlibmRuLWNwcC1kZXYubGEgQEJPT1NUX1NZU1RFTV9MSUJACi0KLWJpbl9QUk9HUkFNUyA9IHRsdmR1bXAgbmRuY2F0Y2h1bmtzMyBuZG5wdXRjaHVua3MzCi0KLXRsdmR1bXBfU09VUkNFUyAgICAgID0gdGx2ZHVtcC5jcHAKLQotbmRuY2F0Y2h1bmtzM19TT1VSQ0VTID0gbmRuY2F0Y2h1bmtzMy5jcHAKLQotbmRucHV0Y2h1bmtzM19TT1VSQ0VTID0gbmRucHV0Y2h1bmtzMy5jcHAKLQpkaWZmIC0tZ2l0IGEvdG9vbHMvd3NjcmlwdCBiL3Rvb2xzL3dzY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU3NjkxNgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL3dzY3JpcHQKQEAgLTAsMCArMSwxMSBAQAorIyAtKi0gTW9kZTogcHl0aG9uOyBweS1pbmRlbnQtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGNvZGluZzogdXRmLTg7IC0qLQorCit0b3AgPSAnLi4nCisKK2RlZiBidWlsZChibGQpOgorICAgIGZvciBhcHAgaW4gYmxkLnBhdGguYW50X2dsb2IoJyouY3BwJyk6CisgICAgICAgIGJsZChmZWF0dXJlcz1bJ2N4eCcsICdjeHhwcm9ncmFtJ10sCisgICAgICAgICAgICB0YXJnZXQgPSAnJXMnICUgKHN0cihhcHAuY2hhbmdlX2V4dCgnJywnLmNwcCcpKSksCisgICAgICAgICAgICBzb3VyY2UgPSBhcHAsCisgICAgICAgICAgICB1c2UgPSAnbmRuLWNwcC1kZXYnLAorICAgICAgICAgICAgKSAgICAgICAgCmRpZmYgLS1naXQgYS93YWYgYi93YWYKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzhhNDRmMwotLS0gL2Rldi9udWxsCisrKyBiL3dhZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS93c2NyaXB0IGIvd3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzFhNzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvd3NjcmlwdApAQCAtMCwwICsxLDIwNSBAQAorIyAtKi0gTW9kZTogcHl0aG9uOyBweS1pbmRlbnQtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGNvZGluZzogdXRmLTg7IC0qLQorVkVSU0lPTj0nMC4zfmRldjAnCitOQU1FPSJuZG4tY3BwLWRldiIKKworZnJvbSB3YWZsaWIgaW1wb3J0IEJ1aWxkLCBMb2dzLCBVdGlscywgVGFzaywgVGFza0dlbiwgQ29uZmlndXJlCisKK2RlZiBvcHRpb25zKG9wdCk6CisgICAgb3B0LmxvYWQoJ2NvbXBpbGVyX2MgY29tcGlsZXJfY3h4IGdudV9kaXJzIGNfb3N4JykKKyAgICBvcHQubG9hZCgnYm9vc3QgZG94eWdlbiBvcGVuc3NsIGNyeXB0b3BwJywgdG9vbGRpcj1bJy53YWYtdG9vbHMnXSkKKworICAgIG9wdCA9IG9wdC5hZGRfb3B0aW9uX2dyb3VwKCdORE4tQ1BQIE9wdGlvbnMnKQorCisgICAgb3B0LmFkZF9vcHRpb24oJy0tZGVidWcnLGFjdGlvbj0nc3RvcmVfdHJ1ZScsZGVmYXVsdD1GYWxzZSxkZXN0PSdkZWJ1ZycsaGVscD0nJydkZWJ1Z2dpbmcgbW9kZScnJykKKyAgICAKKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLXRlc3RzJywgYWN0aW9uPSdzdG9yZV90cnVlJyxkZWZhdWx0PUZhbHNlLGRlc3Q9J3dpdGhfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgIGhlbHA9JycnYnVpbGQgdW5pdCB0ZXN0cycnJykKKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxvZzRjeHgnLCBhY3Rpb249J3N0b3JlX3RydWUnLGRlZmF1bHQ9RmFsc2UsZGVzdD0nbG9nNGN4eCcsCisgICAgICAgICAgICAgICAgICAgaGVscD0nJydDb21waWxlIHdpdGggbG9nNGN4eCBsb2dnaW5nIHN1cHBvcnQnJycpCisKKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWMrKzExJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgZGVzdD0ndXNlX2N4eDExJywKKyAgICAgICAgICAgICAgICAgICBoZWxwPScnJ1VzZSBDKysxMSBmZWF0dXJlcywgZXZlbiBpZiBhdmFpbGFibGUgaW4gdGhlIGNvbXBpbGVyJycnKQorICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtc3lzdGVtLWJvb3N0JywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwgZGVzdD0ndXNlX3N5c3RlbV9ib29zdCcsCisgICAgICAgICAgICAgICAgICAgaGVscD0nJydVc2Ugc3lzdGVtJ3MgYm9vc3QgbGlicmFyaWVzJycnKQorCisKK2RlZiBjb25maWd1cmUoY29uZik6CisgICAgY29uZi5sb2FkKCJjb21waWxlcl9jIGNvbXBpbGVyX2N4eCBib29zdCBnbnVfZGlycyBjX29zeCBvcGVuc3NsIGNyeXB0b3BwIikKKyAgICB0cnk6CisgICAgICAgIGNvbmYubG9hZCgiZG94eWdlbiIpCisgICAgZXhjZXB0OgorICAgICAgICBwYXNzCisKKyAgICBpZiBjb25mLm9wdGlvbnMud2l0aF90ZXN0czoKKyAgICAgICAgY29uZi5lbnZbJ1dJVEhfVEVTVFMnXSA9IFRydWUKKworICAgIGNvbmYuY2hlY2tfb3BlbnNzbCgpCisKKyAgICBpZiBjb25mLm9wdGlvbnMuZGVidWc6CisgICAgICAgIGNvbmYuZGVmaW5lICgnX0RFQlVHJywgMSkKKyAgICAgICAgZmxhZ3MgPSBbJy1PMCcsCisgICAgICAgICAgICAgICAgICctV2FsbCcsCisgICAgICAgICAgICAgICAgICMgJy1XZXJyb3InLAorICAgICAgICAgICAgICAgICAnLVduby11bnVzZWQtdmFyaWFibGUnLAorICAgICAgICAgICAgICAgICAnLWczJywKKyAgICAgICAgICAgICAgICAgJy1Xbm8tdW51c2VkLXByaXZhdGUtZmllbGQnLCAjIG9ubHkgY2xhbmcgc3VwcG9ydHMKKyAgICAgICAgICAgICAgICAgJy1mY29sb3ItZGlhZ25vc3RpY3MnLCAgICAgICAjIG9ubHkgY2xhbmcgc3VwcG9ydHMKKyAgICAgICAgICAgICAgICAgJy1RdW51c2VkLWFyZ3VtZW50cycsICAgICAgICAjIG9ubHkgY2xhbmcgc3VwcG9ydHMKKyAgICAgICAgICAgICAgICAgJy1Xbm8tdGF1dG9sb2dpY2FsLWNvbXBhcmUnLCAjIHN1cHByZXNzIHdhcm5pbmdzIGZyb20gQ3J5cHRvUFAKKyAgICAgICAgICAgICAgICAgJy1Xbm8tdW51c2VkLWZ1bmN0aW9uJywgICAgICAjIGFub3RoZXIgYW5ub3lpbmcgd2FybmluZyBmcm9tIENyeXB0b1BQCisKKyAgICAgICAgICAgICAgICAgJy1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMnLAorICAgICAgICAgICAgICAgICBdCisKKyAgICAgICAgY29uZi5hZGRfc3VwcG9ydGVkX2N4eGZsYWdzIChjeHhmbGFncyA9IGZsYWdzKQorICAgIGVsc2U6CisgICAgICAgIGZsYWdzID0gWyctTzMnLCAnLWcnLCAnLVduby10YXV0b2xvZ2ljYWwtY29tcGFyZScsICctV25vLXVudXNlZC1mdW5jdGlvbicsICctV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zJ10KKyAgICAgICAgY29uZi5hZGRfc3VwcG9ydGVkX2N4eGZsYWdzIChjeHhmbGFncyA9IGZsYWdzKQorCisgICAgaWYgVXRpbHMudW52ZXJzaW9uZWRfc3lzX3BsYXRmb3JtICgpID09ICJkYXJ3aW4iOgorICAgICAgICBjb25mLmNoZWNrX2N4eChmcmFtZXdvcmtfbmFtZT0nQ29yZUZvdW5kYXRpb24nLCB1c2VsaWJfc3RvcmU9J09TWF9DT1JFRk9VTkRBVElPTicsIG1hbmRhdG9yeT1UcnVlKQorICAgICAgICBjb25mLmNoZWNrX2N4eChmcmFtZXdvcmtfbmFtZT0nQ29yZVNlcnZpY2VzJywgdXNlbGliX3N0b3JlPSdPU1hfQ09SRVNFUlZJQ0VTJywgbWFuZGF0b3J5PVRydWUpCisgICAgICAgIGNvbmYuY2hlY2tfY3h4KGZyYW1ld29ya19uYW1lPSdTZWN1cml0eScsICAgdXNlbGliX3N0b3JlPSdPU1hfU0VDVVJJVFknLCAgIGRlZmluZV9uYW1lPSdIQVZFX1NFQ1VSSVRZJywKKyAgICAgICAgICAgICAgICAgICAgICAgdXNlPSJPU1hfQ09SRUZPVU5EQVRJT04iLCBtYW5kYXRvcnk9VHJ1ZSkKKyAgICAgICAgY29uZi5kZWZpbmUoJ0hBVkVfT1NYX1NFQ1VSSVRZJywgMSkKKworICAgIGNvbmYuZGVmaW5lICgiUEFDS0FHRV9CVUdSRVBPUlQiLCAibmRuLWxpYkBsaXN0cy5jcy51Y2xhLmVkdSIpCisgICAgY29uZi5kZWZpbmUgKCJQQUNLQUdFX05BTUUiLCBOQU1FKQorICAgIGNvbmYuZGVmaW5lICgiUEFDS0FHRV9WRVJTSU9OIiwgVkVSU0lPTikKKyAgICBjb25mLmRlZmluZSAoIlBBQ0tBR0VfVVJMIiwgImh0dHBzOi8vZ2l0aHViLmNvbS9uYW1lZC1kYXRhL25kbi1jcHAiKQorCisgICAgY29uZi5jaGVja19jZmcocGFja2FnZT0nc3FsaXRlMycsIGFyZ3M9WyctLWNmbGFncycsICctLWxpYnMnXSwgdXNlbGliX3N0b3JlPSdTUUxJVEUzJywgbWFuZGF0b3J5PVRydWUpCisKKyAgICBpZiBjb25mLm9wdGlvbnMubG9nNGN4eDoKKyAgICAgICAgY29uZi5jaGVja19jZmcocGFja2FnZT0nbGlibG9nNGN4eCcsIGFyZ3M9WyctLWNmbGFncycsICctLWxpYnMnXSwgdXNlbGliX3N0b3JlPSdMT0c0Q1hYJywgbWFuZGF0b3J5PVRydWUpCisgICAgICAgIGNvbmYuZGVmaW5lICgiSEFWRV9MT0c0Q1hYIiwgMSkKKworICAgIGNvbmYuY2hlY2tfY3J5cHRvcHAocGF0aD1jb25mLm9wdGlvbnMuY3J5cHRvcHBfZGlyLCBtYW5kYXRvcnk9VHJ1ZSkKKworICAgIGlmIGNvbmYub3B0aW9ucy51c2VfY3h4MTE6CisgICAgICAgIGNvbmYuYWRkX3N1cHBvcnRlZF9jeHhmbGFncyhjeHhmbGFncyA9IFsnLXN0ZD1jKysxMScsICctc3RkPWMrKzB4J10pCisKKyAgICAgICAgY29uZi5jaGVjayhtc2c9J0NoZWNraW5nIGZvciB0eXBlIHN0ZDo6c2hhcmVkX3B0cicsCisgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lPSJzdGQ6OnNoYXJlZF9wdHI8aW50PiIsIGhlYWRlcl9uYW1lPSJtZW1vcnkiLCBkZWZpbmVfbmFtZT0nSEFWRV9TVERfU0hBUkVEX1BUUicpCisgICAgICAgIGNvbmYuY2hlY2sobXNnPSdDaGVja2luZyBmb3IgdHlwZSBzdGQ6OmZ1bmN0aW9uJywKKyAgICAgICAgICAgICAgICAgICB0eXBlX25hbWU9InN0ZDo6ZnVuY3Rpb248dm9pZCgpPiIsIGhlYWRlcl9uYW1lPSJmdW5jdGlvbmFsIiwgZGVmaW5lX25hbWU9J0hBVkVfU1REX0ZVTkNUSU9OJykKKyAgICAgICAgY29uZi5kZWZpbmUoJ0hBVkVfQ1hYMTEnLCAxKQorICAgIGVsc2U6CisgICAgICAgIGlmIGNvbmYub3B0aW9ucy51c2Vfc3lzdGVtX2Jvb3N0OgorICAgICAgICAgICAgVVNFRF9CT09TVF9MSUJTID0gJ3N5c3RlbSBmaWxlc3lzdGVtIGRhdGVfdGltZSBpb3N0cmVhbXMnCisgICAgICAgICAgICBpZiBjb25mLmVudlsnV0lUSF9URVNUUyddOgorICAgICAgICAgICAgICAgIFVTRURfQk9PU1RfTElCUyArPSAiIHVuaXRfdGVzdF9mcmFtZXdvcmsiCisKKyAgICAgICAgICAgIGNvbmYuY2hlY2tfYm9vc3QobGliPVVTRURfQk9PU1RfTElCUykKKworICAgICAgICAgICAgYm9vc3RfdmVyc2lvbiA9IGNvbmYuZW52LkJPT1NUX1ZFUlNJT04uc3BsaXQoJ18nKQorICAgICAgICAgICAgaWYgaW50KGJvb3N0X3ZlcnNpb25bMF0pID4gMSBvciAoaW50KGJvb3N0X3ZlcnNpb25bMF0pID09IDEgYW5kIGludChib29zdF92ZXJzaW9uWzFdKSA+PSA0Nik6CisgICAgICAgICAgICAgICAgY29uZi5lbnZbJ1VTRV9TWVNURU1fQk9PU1QnXSA9IFRydWUKKyAgICAgICAgICAgICAgICBjb25mLmRlZmluZSgnVVNFX1NZU1RFTV9CT09TVCcsIDEpCisKKyAgICBjb25mLndyaXRlX2NvbmZpZ19oZWFkZXIoJ2luY2x1ZGUvbmRuLWNwcC1kZXYvbmRuLWNwcC1jb25maWcuaCcsIGRlZmluZV9wcmVmaXg9J05ETl9DUFBfJykKKworZGVmIGJ1aWxkIChibGQpOgorICAgIGxpYm5kbl9jcHAgPSBibGQgKAorICAgICAgICBmZWF0dXJlcz1bJ2N4eCcsICdjeHhzaGxpYicsICdjeHhzdGxpYiddLAorICAgICAgICB2bnVtID0gIjAuMy4wIiwKKyAgICAgICAgdGFyZ2V0PSJuZG4tY3BwLWRldiIsCisgICAgICAgIG5hbWUgPSAibmRuLWNwcC1kZXYiLAorICAgICAgICBzb3VyY2UgPSBibGQucGF0aC5hbnRfZ2xvYignc3JjLyoqLyouY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjbCA9IFsnc3JjLyoqLyotb3N4LmNwcCcsICdzcmMvKiovKi1zcWxpdGUzLmNwcCddKSwKKyAgICAgICAgdXNlID0gJ0JPT1NUIE9QRU5TU0wgTE9HNENYWCBDUllQVE9QUCBTUUxJVEUzJywKKyAgICAgICAgaW5jbHVkZXMgPSAiaW5jbHVkZSIsCisgICAgICAgIGV4cG9ydF9pbmNsdWRlcyA9ICJpbmNsdWRlIiwKKyAgICAgICAgKQorCisgICAgaWYgVXRpbHMudW52ZXJzaW9uZWRfc3lzX3BsYXRmb3JtICgpID09ICJkYXJ3aW4iOgorICAgICAgICBsaWJuZG5fY3BwLnNvdXJjZSArPSBibGQucGF0aC5hbnRfZ2xvYignc3JjLyoqLyotb3N4LmNwcCcpCisgICAgICAgIGxpYm5kbl9jcHAubWFjX2FwcCA9IFRydWUKKyAgICAgICAgbGlibmRuX2NwcC51c2UgKz0gIiBPU1hfQ09SRUZPVU5EQVRJT04gT1NYX1NFQ1VSSVRZIgorCisgICAgIyBJbiBjYXNlIHdlIHdhbnQgdG8gbWFrZSBpdCBvcHRpb25hbCBsYXRlcgorICAgIGxpYm5kbl9jcHAuc291cmNlICs9IGJsZC5wYXRoLmFudF9nbG9iKCdzcmMvKiovKi1zcWxpdGUzLmNwcCcpCisKKworICAgIHBrZ2NvbmZpZ19saWJzID0gW10KKyAgICBwa2djb25maWdfbGRmbGFncyA9IFtdCisgICAgcGtnY29uZmlnX2luY2x1ZGVzID0gW10KKyAgICBmb3IgbGliIGluIFV0aWxzLnRvX2xpc3QobGlibmRuX2NwcC51c2UpOgorICAgICAgICBpZiBibGQuZW52WydMSUJfJXMnICUgbGliXToKKyAgICAgICAgICAgIHBrZ2NvbmZpZ19saWJzICs9IFV0aWxzLnRvX2xpc3QoYmxkLmVudlsnTElCXyVzJyAlIGxpYl0pCisgICAgICAgIGlmIGJsZC5lbnZbJ0xJQlBBVEhfJXMnICUgbGliXToKKyAgICAgICAgICAgIHBrZ2NvbmZpZ19sZGZsYWdzICs9IFV0aWxzLnRvX2xpc3QoYmxkLmVudlsnTElCUEFUSF8lcycgJSBsaWJdKQorICAgICAgICBpZiBibGQuZW52WydJTkNMVURFU18lcycgJSBsaWJdOgorICAgICAgICAgICAgcGtnY29uZmlnX2luY2x1ZGVzICs9IFV0aWxzLnRvX2xpc3QoYmxkLmVudlsnSU5DTFVERVNfJXMnICUgbGliXSkKKworICAgIGRlZiB1bmlxKGFsaXN0KToKKyAgICAgICAgc2V0ID0ge30KKyAgICAgICAgcmV0dXJuIFtzZXQuc2V0ZGVmYXVsdChlLGUpIGZvciBlIGluIGFsaXN0IGlmIGUgbm90IGluIHNldF0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGJsZCAoZmVhdHVyZXMgPSAic3Vic3QiLAorICAgICAgICAgc291cmNlID0gImxpYm5kbi1jcHAtZGV2LnBjLmluIiwKKyAgICAgICAgIHRhcmdldCA9ICJsaWJuZG4tY3BwLWRldi5wYyIsCisgICAgICAgICBpbnN0YWxsX3BhdGggPSAiJHtMSUJESVJ9L3BrZ2NvbmZpZyIsCisgICAgICAgICBWRVJTSU9OID0gVkVSU0lPTiwKKworICAgICAgICAgIyBUaGlzIHByb2JhYmx5IG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIGJ1dCB0byBzaW1wbGlmeSBsaWZlIG9mIGFwcHMKKyAgICAgICAgICMgdGhhdCB1c2UgdGhlIGxpYnJhcnkKKyAgICAgICAgIEVYVFJBX0xJQlMgPSAiICIuam9pbihbKCctbCVzJyAlIGkpIGZvciBpIGluIHVuaXEocGtnY29uZmlnX2xpYnMpXSksCisgICAgICAgICBFWFRSQV9MREZMQUdTID0gIiAiLmpvaW4oWygnLUwlcycgJSBpKSBmb3IgaSBpbiB1bmlxKHBrZ2NvbmZpZ19sZGZsYWdzKV0pLAorICAgICAgICAgRVhUUkFfSU5DTFVERVMgPSAiICIuam9pbihbKCctSSVzJyAlIGkpIGZvciBpIGluIHVuaXEocGtnY29uZmlnX2luY2x1ZGVzKV0pLAorICAgICAgICApCisgICAgICAgICAgICAKKyAgICAjIFVuaXQgdGVzdHMKKyAgICBpZiBibGQuZW52WydXSVRIX1RFU1RTJ106CisgICAgICAgIGJsZC5yZWN1cnNlKCd0ZXN0cycpCisKKyAgICBibGQucmVjdXJzZSgidG9vbHMgZXhhbXBsZXMiKQorICAgICAgCisgICAgaGVhZGVycyA9IGJsZC5wYXRoLmFudF9nbG9iKFsnc3JjLyoqLyouaHBwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvKiovKi5oJ10pCisgICAgYmxkLmluc3RhbGxfZmlsZXMoIiVzL25kbi1jcHAtZGV2IiAlIGJsZC5lbnZbJ0lOQ0xVREVESVInXSwgaGVhZGVycywgcmVsYXRpdmVfdHJpY2s9VHJ1ZSwgY3dkPWJsZC5wYXRoLmZpbmRfbm9kZSgnc3JjJykpCisKKyAgICBibGQuaW5zdGFsbF9maWxlcygiJXMvbmRuLWNwcC1kZXYiICUgYmxkLmVudlsnSU5DTFVERURJUiddLCBibGQucGF0aC5maW5kX3Jlc291cmNlKCdpbmNsdWRlL25kbi1jcHAtZGV2L25kbi1jcHAtY29uZmlnLmgnKSkKKworICAgIGhlYWRlcnMgPSBibGQucGF0aC5hbnRfZ2xvYihbJ2luY2x1ZGUvKiovKi5ocHAnLCAnaW5jbHVkZS8qKi8qLmgnXSkKKyAgICBibGQuaW5zdGFsbF9maWxlcygiJXMiICUgYmxkLmVudlsnSU5DTFVERURJUiddLCBoZWFkZXJzLCByZWxhdGl2ZV90cmljaz1UcnVlLCBjd2Q9YmxkLnBhdGguZmluZF9ub2RlKCdpbmNsdWRlJykpCisKK0BDb25maWd1cmUuY29uZgorZGVmIGFkZF9zdXBwb3J0ZWRfY3h4ZmxhZ3Moc2VsZiwgY3h4ZmxhZ3MpOgorICAgICIiIgorICAgIENoZWNrIHdoaWNoIGN4eGZsYWdzIGFyZSBzdXBwb3J0ZWQgYnkgY29tcGlsZXIgYW5kIGFkZCB0aGVtIHRvIGVudi5DWFhGTEFHUyB2YXJpYWJsZQorICAgICIiIgorICAgIHNlbGYuc3RhcnRfbXNnKCdDaGVja2luZyBhbGxvd2VkIGZsYWdzIGZvciBjKysgY29tcGlsZXInKQorCisgICAgc3VwcG9ydGVkRmxhZ3MgPSBbXQorICAgIGZvciBmbGFnIGluIGN4eGZsYWdzOgorICAgICAgICBpZiBzZWxmLmNoZWNrX2N4eCAoY3h4ZmxhZ3M9W2ZsYWddLCBtYW5kYXRvcnk9RmFsc2UpOgorICAgICAgICAgICAgc3VwcG9ydGVkRmxhZ3MgKz0gW2ZsYWddCisKKyAgICBzZWxmLmVuZF9tc2cgKCcgJy5qb2luIChzdXBwb3J0ZWRGbGFncykpCisgICAgc2VsZi5lbnYuQ1hYRkxBR1MgKz0gc3VwcG9ydGVkRmxhZ3MKKworIyBkb3h5Z2VuIGRvY3MKK2Zyb20gd2FmbGliLkJ1aWxkIGltcG9ydCBCdWlsZENvbnRleHQKK2NsYXNzIGRveHkgKEJ1aWxkQ29udGV4dCk6CisgICAgY21kID0gImRveHlnZW4iCisgICAgZnVuID0gImRveHlnZW4iCisKK2RlZiBkb3h5Z2VuIChibGQpOgorICAgIGlmIG5vdCBibGQuZW52LkRPWFlHRU46CisgICAgICAgIGJsZC5mYXRhbCAoIkVSUk9SOiBjYW5ub3QgYnVpbGQgZG9jdW1lbnRhdGlvbiAoYGRveHlnZW4nIGlzIG5vdCBmb3VuZCBpbiAkUEFUSCkiKQorICAgIGJsZCAoZmVhdHVyZXM9ImRveHlnZW4iLAorICAgICAgICAgZG94eWZpbGU9J0RveHlmaWxlJykKKworIyBkb3h5Z2VuIGRvY3MKK2Zyb20gd2FmbGliLkJ1aWxkIGltcG9ydCBCdWlsZENvbnRleHQKK2NsYXNzIHNwaGlueCAoQnVpbGRDb250ZXh0KToKKyAgICBjbWQgPSAic3BoaW54IgorICAgIGZ1biA9ICJzcGhpbngiCisKK2RlZiBzcGhpbnggKGJsZCk6CisgICAgYmxkLmxvYWQoJ3NwaGlueF9idWlsZCcsIHRvb2xkaXI9Wyd3YWYtdG9vbHMnXSkKKworICAgIGJsZCAoZmVhdHVyZXM9InNwaGlueCIsCisgICAgICAgICBvdXRkaXIgPSAiZG9jL2h0bWwiLAorICAgICAgICAgc291cmNlID0gImRvYy9zb3VyY2UvY29uZi5weSIpCg==